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++/2087: ICE during bootstrap of 3.0



>Number:         2087
>Category:       c++
>Synopsis:       ICE during bootstrap of 3.0
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Sat Feb 24 20:16:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     carlo@alinoe.com
>Release:        3.0 (20010224)
>Organization:
>Environment:
i686-*-linux, gcc-2.96 20000731 installed as default compiler.
>Description:
stage1/xgcc -Bstage1/ -B/usr/local/gcc-3.0/i686-pc-linux-gnu/bin/ -c  -DIN_GCC    -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long  -DHAVE_CONFIG_H -DGENERATOR_FILE    -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 /usr/src/gcc/gcc-cvs-3.0/gcc/rtl.c -o rtl.o
/usr/src/gcc/gcc-cvs-3.0/gcc/rtl.c: In function `read_rtx':
/usr/src/gcc/gcc-cvs-3.0/gcc/rtl.c:1277: 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[2]: *** [rtl.o] Error 1
make[2]: Leaving directory `/usr/src/gcc/gcc-objdir-3.0/gcc'
make[1]: *** [stage2_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>stage1/cc1 -fpreprocessed rtl.i -quiet -dumpbase rtl.c -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -Wno-long-long -pedantic -version -o rtl.s
GNU CPP version 3.0 20010224 (prerelease) (cpplib) (i386 Linux/ELF)
GNU C version 3.0 20010224 (prerelease) (i686-pc-linux-gnu)
        compiled by GNU C version 2.96 20000731 (Red Hat Linux 7.0).
/usr/src/gcc/gcc-cvs-3.0/gcc/rtl.c: In function `read_rtx':
/usr/src/gcc/gcc-cvs-3.0/gcc/rtl.c:1277: 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.

rtl.i attached.

Note that a cc1 compiled with gcc-3.0 20010224 (prerelease) DOES work:

/usr/src/gcc/gcc-objdir-3.0/gcc>/usr/local/gcc/lib/gcc-lib/i686-pc-linux-gnu/3.0/cc1 -fpreprocessed rtl.i -quiet -dumpbase rtl.c -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -Wno-long-long -pedantic -version -o rtl.s
GNU CPP version 3.0 20010224 (prerelease) (cpplib) (i386 Linux/ELF)
GNU C version 3.0 20010224 (prerelease) (i686-pc-linux-gnu)
        compiled by GNU C version 3.0 20010224 (prerelease).


GDB session:
-----------

GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
Breakpoint 1 at 0x804963c
Breakpoint 2 at 0x80b8726: file /usr/src/gcc/gcc-cvs-3.0/gcc/diagnostic.c, line 1766.
Breakpoint 3 at 0x804940c
(gdb) r -fpreprocessed rtl.i -quiet -dumpbase rtl.c -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -Wno-long-long -pedantic -version -o rtl.s
Starting program: /usr/src/gcc/gcc-objdir-3.0/gcc/stage1/cc1 -fpreprocessed rtl.i -quiet -dumpbase rtl.c -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -Wno-long-long -pedantic -version -o rtl.s
Breakpoint 1 at 0x40050ec5: file exit.c, line 40.
Breakpoint 3 at 0x4004fb3f: file ../sysdeps/generic/abort.c, line 55.
During symbol reading...register number 136361399 too large (max 32) in symbol buf...
GNU CPP version 3.0 20010224 (prerelease) (cpplib) (i386 Linux/ELF)
GNU C version 3.0 20010224 (prerelease) (i686-pc-linux-gnu)
        compiled by GNU C version 2.96 20000731 (Red Hat Linux 7.0).
 
Program received signal SIGSEGV, Segmentation fault.
0x8204fd8 in make_edge (edge_cache=0x0, src=0x845da18, dst=0x0, flags=0)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/flow.c:1322
1322      e->pred_next = dst->pred;
(gdb) bt
#0  0x8204fd8 in make_edge (edge_cache=0x0, src=0x845da18, dst=0x0, flags=0)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/flow.c:1322
#1  0x82050f7 in make_label_edge (edge_cache=0x0, src=0x845da18, label=0x405ad200,
    flags=0) at /usr/src/gcc/gcc-cvs-3.0/gcc/flow.c:1354
#2  0x8204bcb in make_edges (label_value_list=0x0)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/flow.c:1185
#3  0x82039da in find_basic_blocks (f=0x405a3740, nregs=262, file=0x0)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/flow.c:522
#4  0x8335457 in optimize_sibling_and_tail_recursive_calls ()
    at /usr/src/gcc/gcc-cvs-3.0/gcc/sibcall.c:468
#5  0x80b2484 in rest_of_compilation (decl=0x40398a28)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/toplev.c:2925
#6  0x806c351 in c_expand_body (fndecl=0x40398a28, nested_p=0)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/c-decl.c:6743
#7  0x806c05a in finish_function (nested=0) at /usr/src/gcc/gcc-cvs-3.0/gcc/c-decl.c:6664
#8  0x804a664 in yyparse_1 () at /usr/src/gcc/gcc-cvs-3.0/gcc/c-parse.y:323
#9  0x8052075 in yyparse () at /usr/src/gcc/gcc-cvs-3.0/gcc/c-lex.c:158
#10 0x80b112e in compile_file (name=0x8447c69 "rtl.i")
    at /usr/src/gcc/gcc-cvs-3.0/gcc/toplev.c:2377
#11 0x80b5ed9 in main (argc=19, argv=0xbffff5cc)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/toplev.c:4900
#12 0x4003da2c in __libc_start_main (main=0x80b56a4 <main>, argc=19, ubp_av=0xbffff5cc,
    init=0x80491bc <_init>, fini=0x834b7bc <_fini>, rtld_fini=0x4000d3c8 <_dl_fini>,
    stack_end=0xbffff5c4) at ../sysdeps/generic/libc-start.c:111
(gdb) p e
$1 = 0x84399d0
(gdb) p dst
$2 = 0x0
(gdb) up
#1  0x82050f7 in make_label_edge (edge_cache=0x0, src=0x845da18, label=0x405ad200,
    flags=0) at /usr/src/gcc/gcc-cvs-3.0/gcc/flow.c:1354
1354      make_edge (edge_cache, src, BLOCK_FOR_INSN (label), flags);
(gdb) p label
$3 = 0x405ad200
(gdb) p *label
$4 = {code = CODE_LABEL, mode = VOIDmode, jump = 0, call = 0, unchanging = 0,
  volatil = 0, in_struct = 0, used = 0, integrated = 0, frame_related = 0, fld = {{
      rtwint = 476, rtint = 476, rtuint = 476,
      rtstr = 0x1dc <Address 0x1dc out of bounds>, rtx = 0x1dc, rtvec = 0x1dc,
      rttype = 476, rt_addr_diff_vec_flags = {min_align = 220, base_after_vec = 1,
        min_after_vec = 0, max_after_vec = 0, min_after_base = 0, max_after_base = 0,
        offset_unsigned = 0, 0, scale = 0}, rt_cselib = 0x1dc, rtbit = 0x1dc,
      rttree = 0x1dc, bb = 0x1dc}}}
(gdb) up
#2  0x8204bcb in make_edges (label_value_list=0x0)
    at /usr/src/gcc/gcc-cvs-3.0/gcc/flow.c:1185
1185                  make_label_edge (edge_cache, bb, JUMP_LABEL (insn), 0);
>Fix:
none
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="rtl.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="rtl.i"

IyAyMyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuYyIKIyAxICJjb25maWcuaCIg
MQoKIyAxICJhdXRvLWhvc3QuaCIgMQojIDMgImNvbmZpZy5oIiAyCgojIDEgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9nY2MvZ2Fuc2lkZWNsLmgiIDEKIyAyOCAiL3Vzci9zcmMvZ2NjL2djYy1j
dnMtMy4wL2djYy9nYW5zaWRlY2wuaCIKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvaW5j
bHVkZS9hbnNpZGVjbC5oIiAxCiMgMjkgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvZ2Fu
c2lkZWNsLmgiIDIKIyA1ICJjb25maWcuaCIgMgoKCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMt
My4wL2djYy9jb25maWcvaTM4Ni94bS1pMzg2LmgiIDEKIyA0MyAiL3Vzci9zcmMvZ2NjL2djYy1j
dnMtMy4wL2djYy9jb25maWcvaTM4Ni94bS1pMzg2LmgiCiMgMSAidG0uaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvZ2Fuc2lkZWNsLmgiIDEKIyA1ICJ0bS5oIiAyCgoK
IyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCIgMQoj
IDUzICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCIKc3Ry
dWN0IHByb2Nlc3Nvcl9jb3N0cyB7CiAgaW50IGFkZDsKICBpbnQgbGVhOwogIGludCBzaGlmdF92
YXI7CiAgaW50IHNoaWZ0X2NvbnN0OwogIGludCBtdWx0X2luaXQ7CiAgaW50IG11bHRfYml0Owog
IGludCBkaXZpZGU7CiAgaW50IGxhcmdlX2luc247CiAgaW50IG1vdmVfcmF0aW87CgogIGludCBt
b3Z6YmxfbG9hZDsKICBpbnQgaW50X2xvYWRbM107CgoKICBpbnQgaW50X3N0b3JlWzNdOwoKICBp
bnQgZnBfbW92ZTsKICBpbnQgZnBfbG9hZFszXTsKCiAgaW50IGZwX3N0b3JlWzNdOwoKfTsKCmV4
dGVybiBzdHJ1Y3QgcHJvY2Vzc29yX2Nvc3RzICppeDg2X2Nvc3Q7CgoKCmV4dGVybiBpbnQgdGFy
Z2V0X2ZsYWdzOwojIDE3NSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9jb25maWcvaTM4
Ni9pMzg2LmgiCmV4dGVybiBjb25zdCBpbnQgeDg2X3VzZV9sZWF2ZSwgeDg2X3B1c2hfbWVtb3J5
LCB4ODZfemVyb19leHRlbmRfd2l0aF9hbmQ7CmV4dGVybiBjb25zdCBpbnQgeDg2X3VzZV9iaXRf
dGVzdCwgeDg2X2Ntb3ZlLCB4ODZfZGVlcF9icmFuY2g7CmV4dGVybiBjb25zdCBpbnQgeDg2X3Vu
cm9sbF9zdHJsZW4sIHg4Nl91c2VfcV9yZWcsIHg4Nl91c2VfYW55X3JlZzsKZXh0ZXJuIGNvbnN0
IGludCB4ODZfZG91YmxlX3dpdGhfYWRkLCB4ODZfcGFydGlhbF9yZWdfc3RhbGwsIHg4Nl9tb3Z4
OwpleHRlcm4gY29uc3QgaW50IHg4Nl91c2VfbG9vcCwgeDg2X3VzZV9maW9wLCB4ODZfdXNlX21v
djA7CmV4dGVybiBjb25zdCBpbnQgeDg2X3VzZV9jbHRkLCB4ODZfcmVhZF9tb2RpZnlfd3JpdGU7
CmV4dGVybiBjb25zdCBpbnQgeDg2X3JlYWRfbW9kaWZ5LCB4ODZfc3BsaXRfbG9uZ19tb3ZlczsK
ZXh0ZXJuIGNvbnN0IGludCB4ODZfcHJvbW90ZV9RSW1vZGUsIHg4Nl9zaW5nbGVfc3RyaW5nb3A7
CmV4dGVybiBjb25zdCBpbnQgeDg2X2hpbW9kZV9tYXRoLCB4ODZfcWltb2RlX21hdGgsIHg4Nl9w
cm9tb3RlX3FpX3JlZ3M7CmV4dGVybiBjb25zdCBpbnQgeDg2X3Byb21vdGVfaGlfcmVncywgeDg2
X2ludGVnZXJfREZtb2RlX21vdmVzOwpleHRlcm4gY29uc3QgaW50IHg4Nl9hZGRfZXNwXzQsIHg4
Nl9hZGRfZXNwXzgsIHg4Nl9zdWJfZXNwXzQsIHg4Nl9zdWJfZXNwXzg7CmV4dGVybiBjb25zdCBp
bnQgeDg2X3BhcnRpYWxfcmVnX2RlcGVuZGVuY3ksIHg4Nl9tZW1vcnlfbWlzbWF0Y2hfc3RhbGw7
CiMgMzE0ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCIK
ZW51bSBwcm9jZXNzb3JfdHlwZQp7CiAgUFJPQ0VTU09SX0kzODYsCiAgUFJPQ0VTU09SX0k0ODYs
CiAgUFJPQ0VTU09SX1BFTlRJVU0sCiAgUFJPQ0VTU09SX1BFTlRJVU1QUk8sCiAgUFJPQ0VTU09S
X0s2LAogIFBST0NFU1NPUl9BVEhMT04sCiAgUFJPQ0VTU09SX21heAp9OwoKZXh0ZXJuIGVudW0g
cHJvY2Vzc29yX3R5cGUgaXg4Nl9jcHU7CgpleHRlcm4gaW50IGl4ODZfYXJjaDsKIyA5MzkgIi91
c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIgplbnVtIHJlZ19j
bGFzcwp7CiAgTk9fUkVHUywKICBBUkVHLCBEUkVHLCBDUkVHLCBCUkVHLCBTSVJFRywgRElSRUcs
CiAgQURfUkVHUywKICBRX1JFR1MsCiAgTk9OX1FfUkVHUywKICBJTkRFWF9SRUdTLAogIEdFTkVS
QUxfUkVHUywKICBGUF9UT1BfUkVHLCBGUF9TRUNPTkRfUkVHLAogIEZMT0FUX1JFR1MsCiAgU1NF
X1JFR1MsCiAgTU1YX1JFR1MsCiAgRkxPQVRfSU5UX1JFR1MsCiAgQUxMX1JFR1MsIExJTV9SRUdf
Q0xBU1NFUwp9OwojIDEzMTUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2kz
ODYvaTM4Ni5oIgp0eXBlZGVmIHN0cnVjdCBpeDg2X2FyZ3MgewogIGludCB3b3JkczsKICBpbnQg
bnJlZ3M7CiAgaW50IHJlZ25vOwogIGludCBzc2Vfd29yZHM7CiAgaW50IHNzZV9ucmVnczsKICBp
bnQgc3NlX3JlZ25vOwp9IENVTVVMQVRJVkVfQVJHUzsKIyAxNzYxICIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCIKZW51bSBpeDg2X2J1aWx0aW5zCnsKICBJ
WDg2X0JVSUxUSU5fQUREUFMsCiAgSVg4Nl9CVUlMVElOX0FERFNTLAogIElYODZfQlVJTFRJTl9E
SVZQUywKICBJWDg2X0JVSUxUSU5fRElWU1MsCiAgSVg4Nl9CVUlMVElOX01VTFBTLAogIElYODZf
QlVJTFRJTl9NVUxTUywKICBJWDg2X0JVSUxUSU5fU1VCUFMsCiAgSVg4Nl9CVUlMVElOX1NVQlNT
LAoKICBJWDg2X0JVSUxUSU5fQ01QRVFQUywKICBJWDg2X0JVSUxUSU5fQ01QTFRQUywKICBJWDg2
X0JVSUxUSU5fQ01QTEVQUywKICBJWDg2X0JVSUxUSU5fQ01QR1RQUywKICBJWDg2X0JVSUxUSU5f
Q01QR0VQUywKICBJWDg2X0JVSUxUSU5fQ01QTkVRUFMsCiAgSVg4Nl9CVUlMVElOX0NNUE5MVFBT
LAogIElYODZfQlVJTFRJTl9DTVBOTEVQUywKICBJWDg2X0JVSUxUSU5fQ01QTkdUUFMsCiAgSVg4
Nl9CVUlMVElOX0NNUE5HRVBTLAogIElYODZfQlVJTFRJTl9DTVBPUkRQUywKICBJWDg2X0JVSUxU
SU5fQ01QVU5PUkRQUywKICBJWDg2X0JVSUxUSU5fQ01QTkVQUywKICBJWDg2X0JVSUxUSU5fQ01Q
RVFTUywKICBJWDg2X0JVSUxUSU5fQ01QTFRTUywKICBJWDg2X0JVSUxUSU5fQ01QTEVTUywKICBJ
WDg2X0JVSUxUSU5fQ01QR1RTUywKICBJWDg2X0JVSUxUSU5fQ01QR0VTUywKICBJWDg2X0JVSUxU
SU5fQ01QTkVRU1MsCiAgSVg4Nl9CVUlMVElOX0NNUE5MVFNTLAogIElYODZfQlVJTFRJTl9DTVBO
TEVTUywKICBJWDg2X0JVSUxUSU5fQ01QTkdUU1MsCiAgSVg4Nl9CVUlMVElOX0NNUE5HRVNTLAog
IElYODZfQlVJTFRJTl9DTVBPUkRTUywKICBJWDg2X0JVSUxUSU5fQ01QVU5PUkRTUywKICBJWDg2
X0JVSUxUSU5fQ01QTkVTUywKCiAgSVg4Nl9CVUlMVElOX0NPTUlFUVNTLAogIElYODZfQlVJTFRJ
Tl9DT01JTFRTUywKICBJWDg2X0JVSUxUSU5fQ09NSUxFU1MsCiAgSVg4Nl9CVUlMVElOX0NPTUlH
VFNTLAogIElYODZfQlVJTFRJTl9DT01JR0VTUywKICBJWDg2X0JVSUxUSU5fQ09NSU5FUVNTLAog
IElYODZfQlVJTFRJTl9VQ09NSUVRU1MsCiAgSVg4Nl9CVUlMVElOX1VDT01JTFRTUywKICBJWDg2
X0JVSUxUSU5fVUNPTUlMRVNTLAogIElYODZfQlVJTFRJTl9VQ09NSUdUU1MsCiAgSVg4Nl9CVUlM
VElOX1VDT01JR0VTUywKICBJWDg2X0JVSUxUSU5fVUNPTUlORVFTUywKCiAgSVg4Nl9CVUlMVElO
X0NWVFBJMlBTLAogIElYODZfQlVJTFRJTl9DVlRQUzJQSSwKICBJWDg2X0JVSUxUSU5fQ1ZUU0ky
U1MsCiAgSVg4Nl9CVUlMVElOX0NWVFNTMlNJLAogIElYODZfQlVJTFRJTl9DVlRUUFMyUEksCiAg
SVg4Nl9CVUlMVElOX0NWVFRTUzJTSSwKICBJWDg2X0JVSUxUSU5fTV9GUk9NX0lOVCwKICBJWDg2
X0JVSUxUSU5fTV9UT19JTlQsCgogIElYODZfQlVJTFRJTl9NQVhQUywKICBJWDg2X0JVSUxUSU5f
TUFYU1MsCiAgSVg4Nl9CVUlMVElOX01JTlBTLAogIElYODZfQlVJTFRJTl9NSU5TUywKCiAgSVg4
Nl9CVUlMVElOX0xPQURBUFMsCiAgSVg4Nl9CVUlMVElOX0xPQURVUFMsCiAgSVg4Nl9CVUlMVElO
X1NUT1JFQVBTLAogIElYODZfQlVJTFRJTl9TVE9SRVVQUywKICBJWDg2X0JVSUxUSU5fTE9BRFNT
LAogIElYODZfQlVJTFRJTl9TVE9SRVNTLAogIElYODZfQlVJTFRJTl9NT1ZTUywKCiAgSVg4Nl9C
VUlMVElOX01PVkhMUFMsCiAgSVg4Nl9CVUlMVElOX01PVkxIUFMsCiAgSVg4Nl9CVUlMVElOX0xP
QURIUFMsCiAgSVg4Nl9CVUlMVElOX0xPQURMUFMsCiAgSVg4Nl9CVUlMVElOX1NUT1JFSFBTLAog
IElYODZfQlVJTFRJTl9TVE9SRUxQUywKCiAgSVg4Nl9CVUlMVElOX01BU0tNT1ZRLAogIElYODZf
QlVJTFRJTl9NT1ZNU0tQUywKICBJWDg2X0JVSUxUSU5fUE1PVk1TS0IsCgogIElYODZfQlVJTFRJ
Tl9NT1ZOVFBTLAogIElYODZfQlVJTFRJTl9NT1ZOVFEsCgogIElYODZfQlVJTFRJTl9QQUNLU1NX
QiwKICBJWDg2X0JVSUxUSU5fUEFDS1NTRFcsCiAgSVg4Nl9CVUlMVElOX1BBQ0tVU1dCLAoKICBJ
WDg2X0JVSUxUSU5fUEFEREIsCiAgSVg4Nl9CVUlMVElOX1BBRERXLAogIElYODZfQlVJTFRJTl9Q
QURERCwKICBJWDg2X0JVSUxUSU5fUEFERFNCLAogIElYODZfQlVJTFRJTl9QQUREU1csCiAgSVg4
Nl9CVUlMVElOX1BBRERVU0IsCiAgSVg4Nl9CVUlMVElOX1BBRERVU1csCiAgSVg4Nl9CVUlMVElO
X1BTVUJCLAogIElYODZfQlVJTFRJTl9QU1VCVywKICBJWDg2X0JVSUxUSU5fUFNVQkQsCiAgSVg4
Nl9CVUlMVElOX1BTVUJTQiwKICBJWDg2X0JVSUxUSU5fUFNVQlNXLAogIElYODZfQlVJTFRJTl9Q
U1VCVVNCLAogIElYODZfQlVJTFRJTl9QU1VCVVNXLAoKICBJWDg2X0JVSUxUSU5fUEFORCwKICBJ
WDg2X0JVSUxUSU5fUEFORE4sCiAgSVg4Nl9CVUlMVElOX1BPUiwKICBJWDg2X0JVSUxUSU5fUFhP
UiwKCiAgSVg4Nl9CVUlMVElOX1BBVkdCLAogIElYODZfQlVJTFRJTl9QQVZHVywKCiAgSVg4Nl9C
VUlMVElOX1BDTVBFUUIsCiAgSVg4Nl9CVUlMVElOX1BDTVBFUVcsCiAgSVg4Nl9CVUlMVElOX1BD
TVBFUUQsCiAgSVg4Nl9CVUlMVElOX1BDTVBHVEIsCiAgSVg4Nl9CVUlMVElOX1BDTVBHVFcsCiAg
SVg4Nl9CVUlMVElOX1BDTVBHVEQsCgogIElYODZfQlVJTFRJTl9QRVhUUlcsCiAgSVg4Nl9CVUlM
VElOX1BJTlNSVywKCiAgSVg4Nl9CVUlMVElOX1BNQUREV0QsCgogIElYODZfQlVJTFRJTl9QTUFY
U1csCiAgSVg4Nl9CVUlMVElOX1BNQVhVQiwKICBJWDg2X0JVSUxUSU5fUE1JTlNXLAogIElYODZf
QlVJTFRJTl9QTUlOVUIsCgogIElYODZfQlVJTFRJTl9QTVVMSFVXLAogIElYODZfQlVJTFRJTl9Q
TVVMSFcsCiAgSVg4Nl9CVUlMVElOX1BNVUxMVywKCiAgSVg4Nl9CVUlMVElOX1BTQURCVywKICBJ
WDg2X0JVSUxUSU5fUFNIVUZXLAoKICBJWDg2X0JVSUxUSU5fUFNMTFcsCiAgSVg4Nl9CVUlMVElO
X1BTTExELAogIElYODZfQlVJTFRJTl9QU0xMUSwKICBJWDg2X0JVSUxUSU5fUFNSQVcsCiAgSVg4
Nl9CVUlMVElOX1BTUkFELAogIElYODZfQlVJTFRJTl9QU1JMVywKICBJWDg2X0JVSUxUSU5fUFNS
TEQsCiAgSVg4Nl9CVUlMVElOX1BTUkxRLAogIElYODZfQlVJTFRJTl9QU0xMV0ksCiAgSVg4Nl9C
VUlMVElOX1BTTExESSwKICBJWDg2X0JVSUxUSU5fUFNMTFFJLAogIElYODZfQlVJTFRJTl9QU1JB
V0ksCiAgSVg4Nl9CVUlMVElOX1BTUkFESSwKICBJWDg2X0JVSUxUSU5fUFNSTFdJLAogIElYODZf
QlVJTFRJTl9QU1JMREksCiAgSVg4Nl9CVUlMVElOX1BTUkxRSSwKCiAgSVg4Nl9CVUlMVElOX1BV
TlBDS0hCVywKICBJWDg2X0JVSUxUSU5fUFVOUENLSFdELAogIElYODZfQlVJTFRJTl9QVU5QQ0tI
RFEsCiAgSVg4Nl9CVUlMVElOX1BVTlBDS0xCVywKICBJWDg2X0JVSUxUSU5fUFVOUENLTFdELAog
IElYODZfQlVJTFRJTl9QVU5QQ0tMRFEsCgogIElYODZfQlVJTFRJTl9TSFVGUFMsCgogIElYODZf
QlVJTFRJTl9SQ1BQUywKICBJWDg2X0JVSUxUSU5fUkNQU1MsCiAgSVg4Nl9CVUlMVElOX1JTUVJU
UFMsCiAgSVg4Nl9CVUlMVElOX1JTUVJUU1MsCiAgSVg4Nl9CVUlMVElOX1NRUlRQUywKICBJWDg2
X0JVSUxUSU5fU1FSVFNTLAoKICBJWDg2X0JVSUxUSU5fVU5QQ0tIUFMsCiAgSVg4Nl9CVUlMVElO
X1VOUENLTFBTLAoKICBJWDg2X0JVSUxUSU5fQU5EUFMsCiAgSVg4Nl9CVUlMVElOX0FORE5QUywK
ICBJWDg2X0JVSUxUSU5fT1JQUywKICBJWDg2X0JVSUxUSU5fWE9SUFMsCgogIElYODZfQlVJTFRJ
Tl9FTU1TLAogIElYODZfQlVJTFRJTl9MRE1YQ1NSLAogIElYODZfQlVJTFRJTl9TVE1YQ1NSLAog
IElYODZfQlVJTFRJTl9TRkVOQ0UsCiAgSVg4Nl9CVUlMVElOX1BSRUZFVENILAoKCiAgSVg4Nl9C
VUlMVElOX1NFVFBTMSwKICBJWDg2X0JVSUxUSU5fU0VUUFMsCiAgSVg4Nl9CVUlMVElOX0NMUlBT
LAogIElYODZfQlVJTFRJTl9TRVRSUFMsCiAgSVg4Nl9CVUlMVElOX0xPQURQUzEsCiAgSVg4Nl9C
VUlMVElOX0xPQURSUFMsCiAgSVg4Nl9CVUlMVElOX1NUT1JFUFMxLAogIElYODZfQlVJTFRJTl9T
VE9SRVJQUywKCiAgSVg4Nl9CVUlMVElOX01NWF9aRVJPLAoKICBJWDg2X0JVSUxUSU5fTUFYCn07
CiMgMjYyMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9jb25maWcvaTM4Ni9pMzg2Lmgi
CmV4dGVybiBpbnQgY29uc3QgZGJ4X3JlZ2lzdGVyX21hcFszN107CmV4dGVybiBpbnQgY29uc3Qg
c3ZyNF9kYnhfcmVnaXN0ZXJfbWFwWzM3XTsKIyAyODk3ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0z
LjAvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCIKZXh0ZXJuIGNvbnN0IGNoYXIgKml4ODZfY3B1X3N0
cmluZzsKZXh0ZXJuIGNvbnN0IGNoYXIgKml4ODZfYXJjaF9zdHJpbmc7CmV4dGVybiBjb25zdCBj
aGFyICppeDg2X3JlZ19hbGxvY19vcmRlcjsKZXh0ZXJuIGNvbnN0IGNoYXIgKml4ODZfcmVncGFy
bV9zdHJpbmc7CmV4dGVybiBjb25zdCBjaGFyICppeDg2X2FsaWduX2xvb3BzX3N0cmluZzsKZXh0
ZXJuIGNvbnN0IGNoYXIgKml4ODZfYWxpZ25fanVtcHNfc3RyaW5nOwpleHRlcm4gY29uc3QgY2hh
ciAqaXg4Nl9hbGlnbl9mdW5jc19zdHJpbmc7CmV4dGVybiBjb25zdCBjaGFyICppeDg2X3ByZWZl
cnJlZF9zdGFja19ib3VuZGFyeV9zdHJpbmc7CmV4dGVybiBjb25zdCBjaGFyICppeDg2X2JyYW5j
aF9jb3N0X3N0cmluZzsKZXh0ZXJuIGludCBpeDg2X3JlZ3Bhcm07CmV4dGVybiBpbnQgaXg4Nl9h
bGlnbl9sb29wczsKZXh0ZXJuIGludCBpeDg2X2FsaWduX2p1bXBzOwpleHRlcm4gaW50IGl4ODZf
YWxpZ25fZnVuY3M7CmV4dGVybiBpbnQgaXg4Nl9wcmVmZXJyZWRfc3RhY2tfYm91bmRhcnk7CmV4
dGVybiBpbnQgaXg4Nl9icmFuY2hfY29zdDsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBoaV9y
ZWdfbmFtZVtdOwpleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IHFpX3JlZ19uYW1lW107CmV4dGVy
biBjb25zdCBjaGFyICogY29uc3QgcWlfaGlnaF9yZWdfbmFtZVtdOwpleHRlcm4gZW51bSByZWdf
Y2xhc3MgY29uc3QgcmVnY2xhc3NfbWFwW107CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqaXg4Nl9j
b21wYXJlX29wMDsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICppeDg2X2NvbXBhcmVfb3AxOwojIDgg
InRtLmgiIDIKCgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2kzODYv
YXR0LmgiIDEKIyAyMiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9jb25maWcvaTM4Ni9h
dHQuaCIKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9pMzg2L3VuaXgu
aCIgMQojIDIzICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9pMzg2L2F0dC5o
IiAyCiMgMTEgInRtLmgiIDIKCgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29u
ZmlnL2xpbnV4LmgiIDEKIyA0NSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9jb25maWcv
bGludXguaCIKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9zdnI0Lmgi
IDEKIyA0NiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9jb25maWcvc3ZyNC5oIgojIDEg
Ii91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2VsZm9zLmgiIDEKIyA3OSAiL3Vz
ci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9jb25maWcvZWxmb3MuaCIKIyAxICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9kYnhlbGYuaCIgMQojIDgwICIvdXNyL3NyYy9nY2Mv
Z2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9lbGZvcy5oIiAyCiMgNDcgIi91c3Ivc3JjL2djYy9nY2Mt
Y3ZzLTMuMC9nY2MvY29uZmlnL3N2cjQuaCIgMgojIDQ2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0z
LjAvZ2NjL2NvbmZpZy9saW51eC5oIiAyCiMgMTQgInRtLmgiIDIKCgojIDEgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2kzODYvaTM4NmFmZS5oIiAxCiMgMTcgInRtLmgiIDIK
CgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2kzODYvbGludXguaCIg
MQojIDE0NyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9jb25maWcvaTM4Ni9saW51eC5o
IgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvY29uZmlnL2kzODYvcGVyZm9ybS5o
IiAxCiMgMTQ4ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4
LmgiIDIKIyAyMCAidG0uaCIgMgoKCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9k
ZWZhdWx0cy5oIiAxCiMgMjMgInRtLmgiIDIKIyA0NCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4w
L2djYy9jb25maWcvaTM4Ni94bS1pMzg2LmgiIDIKIyA4ICJjb25maWcuaCIgMgoKCiMgMSAiL3Vz
ci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9kZWZhdWx0cy5oIiAxCiMgMTEgImNvbmZpZy5oIiAy
CgoKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2h3aW50LmgiIDEKIyAxNCAiY29u
ZmlnLmgiIDIKIyAyNCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuYyIgMgojIDEg
Ii91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mvc3lzdGVtLmgiIDEKIyAzMyAiL3Vzci9zcmMv
Z2NjL2djYy1jdnMtMy4wL2djYy9zeXN0ZW0uaCIKIyAxICJpbmNsdWRlL3N0ZGFyZy5oIiAxIDMK
IyA0MyAiaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251
Y192YV9saXN0OwojIDExMCAiaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fZ251Y192YV9s
aXN0IHZhX2xpc3Q7CiMgMzQgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mvc3lzdGVtLmgi
IDIKIyA0NiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9zeXN0ZW0uaCIKIyAxICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI4MiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVz
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwojIDI4MyAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDIgMwojIDMxMCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMwojIDMxMSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDIgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgoKIyAxICJpbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKIyAxOTkgImluY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgc2l6ZV90OwojIDM0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgojIDEg
ImluY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDM5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0
cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgojIDEgImluY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIHVuc2lnbmVkIGNo
YXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVmIHVu
c2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7CgpfX2V4
dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwpfX2V4
dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OSAiL3Vzci9pbmNs
dWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVm
IHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQx
Nl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25l
ZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKX19leHRl
bnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNp
b25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5cGVkZWYg
X19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90Owp0eXBlZGVm
IF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5cGVkZWYgX191X2xv
bmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVmIF9fdV9pbnQgX19u
bGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19xdWFkX3QgX19sb2Zm
X3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVfdDsKdHlwZWRlZiBf
X3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYg
X191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9
IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBjaGFyICpfX2NhZGRy
X3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNl
Y29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50
IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYgaW50IF9f
Y2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIGludCBfX2ZkX21hc2s7CiMgMTA5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5
cGVkZWYgc3RydWN0CiAgewoKCgogICAgX19mZF9tYXNrIGZkc19iaXRzWzEwMjQgLyAoOCAqIHNp
emVvZiAoX19mZF9tYXNrKSldOwoKCgoKCiAgfSBfX2ZkX3NldDsKCgp0eXBlZGVmIGludCBfX2tl
eV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0eXBlZGVm
IGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0
eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNibGtj
bnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xv
bmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7CgoKdHlw
ZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsK
Cgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0
eXBlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRlL2JpdHMv
c2NoZWQuaCIgMwpzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBzY2hlZF9wcmlvcml0
eTsKICB9OwojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKc3Ry
dWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsKICBpbnQgX19zcGlu
bG9jazsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJl
YWRfZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2RldGFjaHN0YXRlOwogIGlu
dCBfX3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBp
bnQgX19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwog
IGludCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3Rh
Y2tzaXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9w
dGhyZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9
IHB0aHJlYWRfY29uZF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRo
cmVhZF9jb25kYXR0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoK
CgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX21fcmVzZXJ2ZWQ7CiAgaW50IF9fbV9jb3VudDsK
ICBfcHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAgaW50IF9fbV9raW5kOwogIHN0cnVjdCBfcHRo
cmVhZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhyZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgc3Ry
dWN0CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKdHlwZWRl
ZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2tf
dAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fcndfbG9jazsKICBpbnQgX19yd19yZWFk
ZXJzOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVyOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndf
cmVhZF93YWl0aW5nOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGluZzsKICBpbnQg
X19yd19raW5kOwogIGludCBfX3J3X3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2tfdDsKCgoKdHlw
ZWRlZiBzdHJ1Y3QKewogIGludCBfX2xvY2traW5kOwogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVh
ZF9yd2xvY2thdHRyX3Q7CgoKCgp0eXBlZGVmIHZvbGF0aWxlIGludCBwdGhyZWFkX3NwaW5sb2Nr
X3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2JhX2xv
Y2s7CiAgaW50IF9fYmFfcmVxdWlyZWQ7CiAgaW50IF9fYmFfcHJlc2VudDsKICBfcHRocmVhZF9k
ZXNjciBfX2JhX3dhaXRpbmc7Cn0gcHRocmVhZF9iYXJyaWVyX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9iYXJyaWVyYXR0cl90OwoKCgoKCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwojIDE2NiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMiAzCiMgNDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgoKCnR5cGVkZWYg
c3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNTcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzCiMgOSAiL3Vzci9pbmNsdWRlL19HX2Nv
bmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMTAgIi91c3Iv
aW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgojIDEgImluY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDI4NyAiaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7CiMgMzEy
ICJpbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKIyAxNSAi
L3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKIyAyNCAiL3Vzci9pbmNsdWRlL19HX2NvbmZp
Zy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ1ICIvdXNyL2luY2x1ZGUv
d2NoYXIuaCIgMwojIDEgImluY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ2ICIvdXNyL2luY2x1ZGUv
d2NoYXIuaCIgMiAzCiMgNjIgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCnR5cGVkZWYgc3RydWN0
CnsKICBpbnQgX19jb3VudDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIg
X193Y2hiWzRdOwogIH0gX192YWx1ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRl
L19HX2NvbmZpZy5oIiAyIDMKCnR5cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9f
bWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2
NF90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91
c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMK
IyAyNiAiL3Vzci9pbmNsdWRlL2djb252LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRl
L3djaGFyLmgiIDEgMwojIDQ1ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgImluY2x1ZGUv
c3RkZGVmLmgiIDEgMwojIDQ2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCiMgMjkgIi91c3Iv
aW5jbHVkZS9nY29udi5oIiAyIDMKCiMgMSAiaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzEgIi91
c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCgoKCgplbnVtCnsKICBfX0dDT05WX09LID0gMCwKICBf
X0dDT05WX05PQ09OViwKICBfX0dDT05WX05PREIsCiAgX19HQ09OVl9OT01FTSwKCiAgX19HQ09O
Vl9FTVBUWV9JTlBVVCwKICBfX0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZfSUxMRUdBTF9J
TlBVVCwKICBfX0dDT05WX0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxMRUdBTF9ERVND
UklQVE9SLAogIF9fR0NPTlZfSU5URVJOQUxfRVJST1IKfTsKCgoKZW51bQp7CiAgX19HQ09OVl9J
U19MQVNUID0gMHgwMDAxLAogIF9fR0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpz
dHJ1Y3QgX19nY29udl9zdGVwOwpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7CnN0cnVjdCBfX2dj
b252X2xvYWRlZF9vYmplY3Q7CnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGE7CgoKCnR5cGVkZWYg
aW50ICgqX19nY29udl9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosIHN0cnVjdCBfX2djb252
X3N0ZXBfZGF0YSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICoqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7CgoKdHlwZWRlZiBp
bnQgKCpfX2djb252X2luaXRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2
b2lkICgqX19nY29udl9lbmRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgoKdHlwZWRl
ZiBpbnQgKCpfX2djb252X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLCB2
b2lkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5z
aWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19jb250ZXh0
X2ZjdCkgKHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICos
IHVuc2lnbmVkIGNoYXIgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2Zj
dCkgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKioqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90
cmFuc19pbml0X2ZjdCkgKHZvaWQgKiosIGNvbnN0IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAoKl9f
Z2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZvaWQgKik7CgpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRh
CnsKCiAgX19nY29udl90cmFuc19mY3QgX190cmFuc19mY3Q7CiAgX19nY29udl90cmFuc19jb250
ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3Ry
YW5zX2VuZF9mY3Q7CiAgdm9pZCAqX19kYXRhOwogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEg
Kl9fbmV4dDsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcAp7CiAgc3RydWN0IF9fZ2NvbnZfbG9h
ZGVkX29iamVjdCAqX19zaGxpYl9oYW5kbGU7CiAgX19jb25zdCBjaGFyICpfX21vZG5hbWU7Cgog
IGludCBfX2NvdW50ZXI7CgogIF9fY29uc3QgY2hhciAqX19mcm9tX25hbWU7CiAgX19jb25zdCBj
aGFyICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3Qg
X19pbml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9u
ZWVkZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90
bzsKICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9f
ZGF0YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpf
X291dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsK
CgoKICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoK
ICBfX21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1
Y3QgX19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2dj
b252X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0
ZXBzOwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YVswXTsK
fSAqX19nY29udl90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBlZGVm
IHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAgc3Ry
dWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0
YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2X3Qg
X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMy
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQg
aW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBl
ZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9f
U0lfXykpKTsKIyAzMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDUxICIvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMwojIDEgImluY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDUyICIvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMiAzCiMgMTU3ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lP
X2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwojIDE2NyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMK
dHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVj
dCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBf
cG9zOwojIDE5MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKfTsKCgplbnVtIF9fY29kZWN2dF9y
ZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2NvZGVjdnRf
ZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9OwojIDI2MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdzOwoKCgoKICBjaGFyKiBfSU9fcmVhZF9w
dHI7CiAgY2hhciogX0lPX3JlYWRfZW5kOwogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CiAgY2hhciog
X0lPX3dyaXRlX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX3B0cjsKICBjaGFyKiBfSU9fd3JpdGVf
ZW5kOwogIGNoYXIqIF9JT19idWZfYmFzZTsKICBjaGFyKiBfSU9fYnVmX2VuZDsKCiAgY2hhciAq
X0lPX3NhdmVfYmFzZTsKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVf
ZW5kOwoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAq
X2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZfdCBfb2xkX29m
ZnNldDsKCgoKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBfdnRh
YmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9fbG9ja190ICpfbG9jazsK
IyAzMDYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiAgX19vZmY2NF90IF9vZmZzZXQ7CgoKCgoK
ICB2b2lkICpfX3BhZDE7CiAgdm9pZCAqX19wYWQyOwoKICBpbnQgX21vZGU7CgogIGNoYXIgX3Vu
dXNlZDJbMTUgKiBzaXplb2YgKGludCkgLSAyICogc2l6ZW9mICh2b2lkICopXTsKCn07CgoKdHlw
ZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lPX0ZJTEU7CgoKc3RydWN0IF9JT19GSUxFX3BsdXM7Cgpl
eHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRpbl87CmV4dGVybiBzdHJ1Y3Qg
X0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1
cyBfSU9fMl8xX3N0ZGVycl87CiMgMzQ1ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVm
IF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZv
aWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAo
dm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwoKCnR5cGVkZWYgaW50
IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsKCgoKCnR5cGVkZWYgX19pb19yZWFkX2Zu
IGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb193cml0ZV9mbiBjb29raWVfd3Jp
dGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3NlZWtfZm4gY29va2llX3NlZWtfZnVuY3Rpb25f
dDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5jdGlvbl90OwoKCnR5cGVk
ZWYgc3RydWN0CnsKICBfX2lvX3JlYWRfZm4gKnJlYWQ7CiAgX19pb193cml0ZV9mbiAqd3JpdGU7
CiAgX19pb19zZWVrX2ZuICpzZWVrOwogIF9faW9fY2xvc2VfZm4gKmNsb3NlOwp9IF9JT19jb29r
aWVfaW9fZnVuY3Rpb25zX3Q7CnR5cGVkZWYgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBjb29r
aWVfaW9fZnVuY3Rpb25zX3Q7CgpzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlOwoKCmV4dGVybiB2b2lk
IF9JT19jb29raWVfaW5pdCAoc3RydWN0IF9JT19jb29raWVfZmlsZSAqX19jZmlsZSwgaW50IF9f
cmVhZF93cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2Nvb2tpZSwg
X0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2Zucyk7CgoKCgoKCgpleHRlcm4gaW50IF9fdW5k
ZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgOwpl
eHRlcm4gaW50IF9fb3ZlcmZsb3cgKF9JT19GSUxFICosIGludCkgOwpleHRlcm4gd2ludF90IF9f
d3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklM
RSAqKSA7CmV4dGVybiB3aW50X3QgX193b3ZlcmZsb3cgKF9JT19GSUxFICosIHdpbnRfdCkgOwoj
IDQyNyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJ
TEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnAp
IDsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9f
ZmVycm9yIChfSU9fRklMRSAqX19mcCkgOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChf
SU9fRklMRSAqX19mcCkgOwoKCgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgKF9JT19GSUxF
ICopIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiBp
bnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwojIDQ1MyAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBj
b25zdCBjaGFyICogX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3Zh
X2xpc3QsIGludCAqX19yZXN0cmljdCkgOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJ
TEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2dudWNfdmFfbGlzdCkgOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9f
RklMRSAqLCBpbnQsIF9fc3NpemVfdCkgOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJ
TEUgKiwgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9J
T19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpIDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vl
a3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVl
X2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSA7CiMgNTggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAy
IDMKCgoKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190OwoKCgoKdHlwZWRlZiBfR19mcG9zNjRfdCBm
cG9zNjRfdDsKIyAxMTAgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDExMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoK
CgpleHRlcm4gRklMRSAqc3RkaW47CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVybiBGSUxFICpz
dGRlcnI7CgoKCgoKCmV4dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUp
IDsKCmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIg
Kl9fbmV3KSA7CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZSAodm9pZCkgOwojIDEzOSAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkgOwoKCmV4dGVy
biBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChj
aGFyICpfX3MpIDsKIyAxNTkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0
ZW1wbmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQogICAgICAg
ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgZmNsb3Nl
IChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKSA7
CgoKCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0
ZXJuIGludCBmY2xvc2VhbGwgKHZvaWQpIDsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW4gKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSA7CgpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgIEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKIyAyMDMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAz
CmV4dGVybiBGSUxFICpmb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVz
KSA7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zp
bGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSkgOwoKCgoKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19t
b2RlcykgOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tpZSAodm9pZCAqX19yZXN0cmljdCBf
X21hZ2ljX2Nvb2tpZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICBfSU9fY29va2llX2lv
X2Z1bmN0aW9uc190IF9faW9fZnVuY3MpIDsKCgpleHRlcm4gRklMRSAqZm1lbW9wZW4gKHZvaWQg
Kl9fcywgc2l6ZV90IF9fbGVuLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgoKCmV4dGVybiBG
SUxFICpvcGVuX21lbXN0cmVhbSAoY2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fc2l6ZWxvYykgOwoKCgoK
CmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19y
ZXN0cmljdCBfX2J1ZikgOwoKCgpleHRlcm4gaW50IHNldHZidWYgKEZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgaW50
IF9fbW9kZXMsIHNpemVfdCBfX24pIDsKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19zaXplKSA7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklM
RSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
b3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3Qg
X19zLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgLi4uKSA7CgoKZXh0ZXJuIGludCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19n
bnVjX3ZhX2xpc3QgX19hcmcpIDsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgOwoK
ZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qg
X19hcmcpIDsKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNp
emVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRf
XyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgX192c25wcmludGYgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkp
KTsKZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19t
YXhsZW4sCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
b3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgoKCgoKZXh0ZXJuIGludCB2YXNwcmlu
dGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
LAogICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJu
IGludCBfX2FzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICAgICAgICAg
IF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwpleHRlcm4g
aW50IGFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgICAgICAgICBfX2F0
dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50
IHZkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAogICAg
ICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IGRw
cmludGYgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkp
OwoKCgoKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoK
ZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
IDsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsK
CgoKZXh0ZXJuIGludCB2ZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0
IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZf
XywgMiwgMCkpKTsKCgpleHRlcm4gaW50IHZzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgIF9fYXR0cmlidXRl
X18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDEsIDApKSk7CgoKZXh0ZXJuIGludCB2c3NjYW5m
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAg
ICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoK
CgoKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjIChG
SUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgZ2V0Y2hhciAodm9pZCkgOwoKCgoKCgoKZXh0
ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGNo
YXJfdW5sb2NrZWQgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVh
bSkgOwpleHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJu
IGludCBwdXRjaGFyIChpbnQgX19jKSA7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2Vk
IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2Vk
IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQg
KGludCBfX2MpIDsKCgoKCgpleHRlcm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0
ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGNoYXIg
KmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkKICAgICAgICAgICAgOwoKCgpleHRlcm4gY2hhciAqZmdldHNfdW5sb2NrZWQgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBjaGFyICpnZXRzIChjaGFy
ICpfX3MpIDsKIyA0MTAgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBfX3NzaXplX3Qg
X19nZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkg
OwpleHRlcm4gX19zc2l6ZV90IGdldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50
IF9fZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pIDsKCgpleHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0
cmljdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgICAgICAgICA7CgoKCmV4dGVybiBp
bnQgZnB1dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKZXh0ZXJu
IGludCBwdXRzIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19y
ZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVfdCBmd3JpdGUg
KF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7CgoKCmV4dGVy
biBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBf
X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsK
CgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50
IF9fd2hlbmNlKSA7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSA7Cgpl
eHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNDczICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMwp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCgp0eXBlZGVmIF9fb2ZmNjRf
dCBvZmY2NF90OwoKCgoKCgoKZXh0ZXJuIGludCBmc2Vla28gKEZJTEUgKl9fc3RyZWFtLCBfX29m
Zl90IF9fb2ZmLCBpbnQgX193aGVuY2UpIDsKCmV4dGVybiBfX29mZl90IGZ0ZWxsbyAoRklMRSAq
X19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgICAgICAgIDsKCmV4dGVybiBpbnQg
ZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgOwojIDUyMyAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmc2Vla282NCAoRklMRSAqX19zdHJl
YW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CmV4dGVybiBfX29mZjY0X3QgZnRl
bGxvNjQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmdldHBvczY0IChGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICAgICAgICAg
OwpleHRlcm4gaW50IGZzZXRwb3M2NCAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvczY0X3Qg
Kl9fcG9zKSA7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0
ZXJuIGludCBmZW9mIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUg
Kl9fc3RyZWFtKSA7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkgOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVy
biBpbnQgZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHZvaWQg
cGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0
ZXJuIF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCmV4dGVybiBpbnQgX3N5
c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IF9zeXNfZXJybGlzdFtdOwoKCgoK
CmV4dGVybiBpbnQgZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmaWxl
bm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAo
X19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwoKCmV4dGVy
biBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlk
IChjaGFyICpfX3MpIDsKCgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19zKSA7CgoK
CgpzdHJ1Y3Qgb2JzdGFjazsKCgpleHRlcm4gaW50IG9ic3RhY2tfcHJpbnRmIChzdHJ1Y3Qgb2Jz
dGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CmV4dGVybiBpbnQgb2JzdGFj
a192cHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZ3MpIDsKCgoKCgoK
CmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBm
dHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUg
KEZJTEUgKl9fc3RyZWFtKSA7CiMgNjMwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvYml0cy9zdGRp
by5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewogIHJldHVybiB2ZnByaW50ZiAoc3Rk
b3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyICh2b2lk
KQp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQK
Z2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAoKF9fZnApLT5fSU9fcmVhZF9w
dHIgPj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChfX2ZwKSA6ICoodW5zaWduZWQg
Y2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQK
Z2V0Y2hhcl91bmxvY2tlZCAodm9pZCkKewogIHJldHVybiAoKHN0ZGluKS0+X0lPX3JlYWRfcHRy
ID49IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGluKSA6ICoodW5zaWduZWQg
Y2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBp
bnQKcHV0Y2hhciAoaW50IF9fYykKewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQpOwp9
CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpf
X3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3Ry
ZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNo
YXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIr
KyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNfdW5sb2NrZWQgKGlu
dCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRl
X3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFt
LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+
X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y2hh
cl91bmxvY2tlZCAoaW50IF9fYykKewogIHJldHVybiAoKChzdGRvdXQpLT5fSU9fd3JpdGVfcHRy
ID49IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwgKHVuc2ln
bmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5fSU9fd3JpdGVf
cHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9fc3NpemVfdApnZXRsaW5l
IChjaGFyICoqX19saW5lcHRyLCBzaXplX3QgKl9fbiwgRklMRSAqX19zdHJlYW0pCnsKICByZXR1
cm4gX19nZXRkZWxpbSAoX19saW5lcHRyLCBfX24sICdcbicsIF9fc3RyZWFtKTsKfQoKCgoKCmV4
dGVybiBfX2lubGluZSBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pCnsKICByZXR1
cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoKCmV4dGVybiBfX2lubGlu
ZSBpbnQKZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0
cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgNjMxICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMiAzCiMgNDcgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mvc3lzdGVtLmgiIDIKIyA4
MSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9zeXN0ZW0uaCIKIyAxICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvaW5jbHVkZS9zYWZlLWN0eXBlLmgiIDEKIyA0NCAiL3Vzci9zcmMvZ2Nj
L2djYy1jdnMtMy4wL2luY2x1ZGUvc2FmZS1jdHlwZS5oIgplbnVtIHsKCiAgX3NjaF9pc2JsYW5r
ID0gMHgwMDAxLAogIF9zY2hfaXNjbnRybCA9IDB4MDAwMiwKICBfc2NoX2lzZGlnaXQgPSAweDAw
MDQsCiAgX3NjaF9pc2xvd2VyID0gMHgwMDA4LAogIF9zY2hfaXNwcmludCA9IDB4MDAxMCwKICBf
c2NoX2lzcHVuY3QgPSAweDAwMjAsCiAgX3NjaF9pc3NwYWNlID0gMHgwMDQwLAogIF9zY2hfaXN1
cHBlciA9IDB4MDA4MCwKICBfc2NoX2lzeGRpZ2l0ID0gMHgwMTAwLAoKCiAgX3NjaF9pc2lkc3Qg
PSAweDAyMDAsCiAgX3NjaF9pc3ZzcCA9IDB4MDQwMCwKICBfc2NoX2lzbnZzcCA9IDB4MDgwMCwK
CgogIF9zY2hfaXNhbHBoYSA9IF9zY2hfaXN1cHBlcnxfc2NoX2lzbG93ZXIsCiAgX3NjaF9pc2Fs
bnVtID0gX3NjaF9pc2FscGhhfF9zY2hfaXNkaWdpdCwKICBfc2NoX2lzaWRudW0gPSBfc2NoX2lz
aWRzdHxfc2NoX2lzZGlnaXQsCiAgX3NjaF9pc2dyYXBoID0gX3NjaF9pc2FsbnVtfF9zY2hfaXNw
dW5jdCwKICBfc2NoX2lzY3Bwc3AgPSBfc2NoX2lzdnNwfF9zY2hfaXNudnNwCn07CgoKZXh0ZXJu
IGNvbnN0IHVuc2lnbmVkIHNob3J0IF9zY2hfaXN0YWJsZVsyNTZdOwojIDk0ICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvaW5jbHVkZS9zYWZlLWN0eXBlLmgiCmV4dGVybiBjb25zdCB1bnNpZ25l
ZCBjaGFyIF9zY2hfdG91cHBlclsyNTZdOwpleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBfc2No
X3RvbG93ZXJbMjU2XTsKIyA4MiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9zeXN0ZW0u
aCIgMgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMK
IyAyNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy90eXBlcy5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgp0
eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRl
ZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRf
dCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBm
c2lkX3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9f
dDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYgX19kZXZfdCBk
ZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9k
ZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1
aWRfdDsKIyA5NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19waWRfdCBw
aWRfdDsKCgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CgoKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6
ZV90OwoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2Fk
ZHJfdDsKCgoKdHlwZWRlZiBfX2tleV90IGtleV90OwojIDEyNiAiL3Vzci9pbmNsdWRlL3N5cy90
eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgNTcgIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA1OCAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBfX2Nsb2NrX3QgY2xvY2tfdDsKCgoKCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNjkgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDIgMwoKCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKCgoKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA4MCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoK
dHlwZWRlZiBfX2Nsb2NraWRfdCBjbG9ja2lkX3Q7CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3R5cGVzLmgiIDEgMwojIDkxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVm
IF9fdGltZXJfdCB0aW1lcl90OwojIDEyNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK
CgoKdHlwZWRlZiBfX3VzZWNvbmRzX3QgdXNlY29uZHNfdDsKCgoKdHlwZWRlZiBfX3N1c2Vjb25k
c190IHN1c2Vjb25kc190OwoKCgoKCiMgMSAiaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQxICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50
IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IHVpbnQ7CiMgMTg0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBp
bnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIGlu
dCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGlu
dCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIGlu
dCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKCnR5cGVkZWYg
dW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkp
Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9f
ICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkpOwojIDIwNiAiL3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyAyMiAi
L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEg
MwojIDIzICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDM3ICIvdXNyL2luY2x1ZGUvZW5k
aWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3Iv
aW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgMjA3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
MwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMjUgIi91c3IvaW5jbHVk
ZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYg
Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
dHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvc3lzL3Nl
bGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIyAyMyAi
L3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlwZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7
CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0
IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMg
MzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDEgMwojIDEwNSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXNwZWMK
ICB7CiAgICBsb25nIGludCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMgMzkg
Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgoKCgoKc3RydWN0IHRpbWV2YWw7Cgp0
eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKCnR5cGVkZWYgX19mZF9zZXQgZmRfc2V0OwojIDc0
ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCmV4dGVybiBpbnQgc2VsZWN0IChpbnQgX19u
ZmRzLCBfX2ZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICBf
X2ZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgX19mZF9z
ZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGlt
ZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpIDsKCgoKCgoKCmV4dGVybiBpbnQgcHNlbGVjdCAo
aW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAg
ICAgICAgIF9fZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAgICAgICAg
ICAgX19mZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCwKICAgICAgICAgICAg
ICAgICAgICBjb25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2lnbWFzaykgOwojIDIxMCAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lz
bWFjcm9zLmgiIDEgMwojIDIxMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKCnR5
cGVkZWYgX19ibGtzaXplX3QgYmxrc2l6ZV90OwoKCgoKCgp0eXBlZGVmIF9fYmxrY250X3QgYmxr
Y250X3Q7CgoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7CgoKCnR5cGVkZWYgX19m
c2ZpbGNudF90IGZzZmlsY250X3Q7CiMgMjUxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMK
dHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzYmxrY250NjRfdCBm
c2Jsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90OwojIDg5ICIv
dXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3N5c3RlbS5oIiAyCgojIDEgIi91c3IvaW5jbHVk
ZS9lcnJuby5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMKCgoK
CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRl
L2JpdHMvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMKCgoK
IyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5jbHVkZS9saW51
eC9lcnJuby5oIiAyIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCiMgMzYg
Ii91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMKZXh0ZXJuIGludCBlcnJubzsKCgpleHRlcm4g
aW50ICpfX2Vycm5vX2xvY2F0aW9uICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CiMgMzcgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMKIyA1NSAiL3Vzci9pbmNsdWRlL2Vycm5v
LmgiIDMKZXh0ZXJuIGNoYXIgKnByb2dyYW1faW52b2NhdGlvbl9uYW1lLCAqcHJvZ3JhbV9pbnZv
Y2F0aW9uX3Nob3J0X25hbWU7CiMgNjkgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzCnR5cGVkZWYg
aW50IGVycm9yX3Q7CiMgOTEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mvc3lzdGVtLmgi
IDIKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCgoKCiMgMSAiaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMzQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCmV4dGVybiB2b2lkICptZW1jcHkg
KHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZv
aWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gdm9pZCAqbWVtbW92
ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3QgX19uKQogICAgICAg
ICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0
LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19jLCBzaXplX3QgX19uKQogICAgICAgICAgICA7CgoKCgpleHRlcm4gdm9pZCAqbWVtc2V0
ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1lbWNtcCAo
X19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAg
ICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtY2hy
IChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgICAgICAgICBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiB2b2lkICpyYXdtZW1jaHIgKF9f
Y29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl
eHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBf
X24pCiAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4g
Y2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fc3JjKQogICAgICAgICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAq
X19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hhciAqc3RyY2F0IChjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAg
ICAgICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3Qs
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBfX24pIDsKCgpleHRlcm4gaW50IHN0cmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2Nv
bnN0IGNoYXIgKl9fczIpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9f
czIsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgpleHRlcm4gaW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6
ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS94bG9jYWxl
LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX19sb2NhbGVfc3RydWN0CnsKCiAgc3RydWN0IGxvY2FsZV9k
YXRhICpfX2xvY2FsZXNbMTNdOwoKCiAgY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBl
X2I7CiAgY29uc3QgaW50ICpfX2N0eXBlX3RvbG93ZXI7CiAgY29uc3QgaW50ICpfX2N0eXBlX3Rv
dXBwZXI7Cn0gKl9fbG9jYWxlX3Q7CiMgMTA5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoK
CmV4dGVybiBpbnQgX19zdHJjb2xsX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFy
ICpfX3MyLCBfX2xvY2FsZV90IF9fbCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBfX3N0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0
IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xv
Y2FsZV90IF9fbCkgOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3Mp
IF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVw
IChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgICAgICAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpl
eHRlcm4gY2hhciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpf
X3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIg
KnN0cmNocm51bCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywg
X19jb25zdCBjaGFyICpfX3JlamVjdCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25z
dCBjaGFyICpfX2FjY2VwdCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIg
Kl9fYWNjZXB0KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRl
cm4gY2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAq
X19uZWVkbGUpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0
ZXJuIGNoYXIgKl9fc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0
IGNoYXIgKl9fbmVlZGxlKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CmV4dGVybiBjaGFyICpzdHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29u
c3QgY2hhciAqX19uZWVkbGUpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgoKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2RlbGltKQogICAgICAgICAgICA7CgoKCmV4dGVybiBjaGFyICpf
X3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19y
IChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0s
CiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoK
CgoKCgpleHRlcm4gdm9pZCAqbWVtbWVtIChfX2NvbnN0IHZvaWQgKl9faGF5c3RhY2ssIHNpemVf
dCBfX2hheXN0YWNrbGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fbmVl
ZGxlLCBzaXplX3QgX19uZWVkbGVsZW4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCgoKZXh0ZXJuIHZvaWQgKl9fbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rl
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3Ny
Yywgc2l6ZV90IF9fbikgOwpleHRlcm4gdm9pZCAqbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBf
X2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19z
cmMsIHNpemVfdCBfX24pIDsKCgoKCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIg
Kl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0cm5s
ZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxlbikKICAgICAgICAgICAg
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChp
bnQgX19lcnJudW0pIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RyZXJyb3JfciAoaW50IF9fZXJybnVt
LCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CmV4dGVybiBjaGFyICpzdHJlcnJvcl9y
IChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIDsKCgoKCmV4dGVy
biB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgOwoKCgpleHRlcm4gdm9pZCBi
Y29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKSA7CgoK
ZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQg
YmNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24p
CiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAq
aW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBpbnQgX19mZnMgKGludCBfX2kp
IF9fYXR0cmlidXRlX18gKChjb25zdCkpOwpleHRlcm4gaW50IGZmcyAoaW50IF9faSkgX19hdHRy
aWJ1dGVfXyAoKGNvbnN0KSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcgaW50IF9fbCkgX19h
dHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBpbnQgZmZzbGwgKGxv
bmcgbG9uZyBpbnQgX19sbCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
CgoKZXh0ZXJuIGludCBfX3N0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CmV4dGVy
biBpbnQgc3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIp
CiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0
cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90
IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVy
biBpbnQgX19zdHJjYXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJuY2FzZWNtcF9sIChfX2NvbnN0
IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgICAgICAgICBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0
cmljdCBfX3N0cmluZ3AsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2RlbGltKSA7CgoKCgpleHRlcm4gaW50IHN0cnZlcnNjbXAgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSA7CgoKZXh0ZXJu
IGNoYXIgKl9fc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fc3JjKQogICAgICAgICAgICA7CmV4dGVybiBjaGFyICpzdHBjcHkgKGNoYXIg
Kl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAg
ICAgICAgIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny
Yywgc2l6ZV90IF9fbikgOwpleHRlcm4gY2hhciAqc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBf
X2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z
cmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hhciAqc3RyZnJ5IChjaGFyICpfX3N0cmluZykg
OwoKCmV4dGVybiB2b2lkICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgoKCgoK
ZXh0ZXJuIGNoYXIgKmJhc2VuYW1lIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsKIyAzNjIg
Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZy5o
IiAxIDMKIyAzNjMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9zdHJpbmcyLmgiIDEgMwojIDUyICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDUzICIvdXNyL2luY2x1ZGUvYml0
cy9zdHJpbmcyLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDU0
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwojIDIxNyAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSB2b2lkICpfX21lbXBjcHlfc21hbGwgKHZv
aWQgKiwgY2hhciwgY2hhciwgY2hhciwgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX191aW50MTZfdCwgX191aW50MTZfdCwgX191aW50MzJfdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX191aW50MzJfdCwgc2l6ZV90KTsKZXh0ZXJu
IF9faW5saW5lIHZvaWQgKgpfX21lbXBjcHlfc21hbGwgKHZvaWQgKl9fZGVzdDEsCiAgICAgICAg
ICAgICAgICAgY2hhciBfX3NyYzBfMSwgY2hhciBfX3NyYzJfMSwgY2hhciBfX3NyYzRfMSwgY2hh
ciBfX3NyYzZfMSwKICAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8yLCBfX3VpbnQx
Nl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgIF9fdWludDMyX3QgX19zcmMwXzQsIF9fdWlu
dDMyX3QgX19zcmM0XzQsCiAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5p
b24gewogICAgX191aW50MzJfdCBfX3VpOwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVuc2ln
bmVkIGNoYXIgX191YzsKICAgIHVuc2lnbmVkIGNoYXIgX19jOwogIH0gKl9fdSA9IF9fZGVzdDE7
CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikKICAgIHsKICAgIGNhc2UgMToKICAg
ICAgX191LT5fX2MgPSBfX3NyYzBfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQg
KikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0g
X19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwog
ICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAg
ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX2Mg
PSBfX3NyYzJfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7
CiAgICAgIGJyZWFrOwogICAgY2FzZSA0OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAg
ICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIGJyZWFrOwog
ICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X19jID0gX19zcmM0XzE7CiAg
ICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsK
ICAgIGNhc2UgNjoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7
CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBicmVh
azsKICAgIGNhc2UgNzoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0
XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBf
X3UtPl9fYyA9IF9fc3JjNl8xOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBf
X3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3Jj
MF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAg
X191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOwogICAgICBicmVhazsKICAgIH0KICByZXR1cm4gKHZvaWQgKikgX191Owp9CiMg
MzcxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIHZvaWQgKl9fcmF3bWVt
Y2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2MpOwojIDM5NSAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cmNweV9zbWFsbCAoY2hhciAq
LCBfX3VpbnQxNl90LCBfX3VpbnQxNl90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fdWludDMyX3QsIF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVybiBfX2lubGluZSBj
aGFyICoKX19zdHJjcHlfc21hbGwgKGNoYXIgKl9fZGVzdCwKICAgICAgICAgICAgICAgIF9fdWlu
dDE2X3QgX19zcmMwXzIsIF9fdWludDE2X3QgX19zcmM0XzIsCiAgICAgICAgICAgICAgICBfX3Vp
bnQzMl90IF9fc3JjMF80LCBfX3VpbnQzMl90IF9fc3JjNF80LAogICAgICAgICAgICAgICAgc2l6
ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgX191aW50MzJfdCBfX3VpOwogICAgX191aW50
MTZfdCBfX3VzaTsKICAgIHVuc2lnbmVkIGNoYXIgX191YzsKICB9ICpfX3UgPSAodm9pZCAqKSBf
X2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikKICAgIHsKICAgIGNhc2Ug
MToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDI6CiAgICAg
IF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgYnJlYWs7CiAgICBjYXNlIDM6CiAgICAgIF9f
dS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgMik7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA0
OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgYnJlYWs7CiAgICBjYXNlIDU6CiAg
ICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBj
YXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAg
ICBicmVhazsKICAgIGNhc2UgNzoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0g
X19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwog
ICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgODoKICAgICAgX191
LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDQpOwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAgYnJlYWs7CiAgICB9CiAg
cmV0dXJuIF9fZGVzdDsKfQojIDU1NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cGNweV9zbWFsbCAoY2hhciAqLCBfX3VpbnQxNl90LCBf
X3VpbnQxNl90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdWludDMy
X3QsIF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHBjcHlf
c21hbGwgKGNoYXIgKl9fZGVzdCwKICAgICAgICAgICAgICAgIF9fdWludDE2X3QgX19zcmMwXzIs
IF9fdWludDE2X3QgX19zcmM0XzIsCiAgICAgICAgICAgICAgICBfX3VpbnQzMl90IF9fc3JjMF80
LCBfX3VpbnQzMl90IF9fc3JjNF80LAogICAgICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7
CiAgdW5pb24gewogICAgdW5zaWduZWQgaW50IF9fdWk7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQg
X191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgICBjaGFyIF9fYzsKICB9ICpfX3UgPSAo
dm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikKICAgIHsK
ICAgIGNhc2UgMToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNl
IDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNpb25f
XyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3Ut
Pl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNDoK
ICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDMpOwogICAgICBicmVhazsKICAgIGNhc2UgNToKICAgICAgX191LT5fX3Vp
ID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNjoKICAgICAg
X191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgNzoKICAg
ICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwog
ICAgICBicmVhazsKICAgIGNhc2UgODoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAg
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWkg
PSBfX3NyYzRfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMyk7
CiAgICAgIGJyZWFrOwogICAgfQogIHJldHVybiAoY2hhciAqKSAmX191LT5fX2M7Cn0KIyA4NzIg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9f
c3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19p
bmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWpl
Y3QpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1
bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsrX19yZXN1bHQ7
CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9j
MiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90
Cl9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9f
cmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tf
X3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQogICAgICAgICAm
JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9f
cmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMyAoX19jb25zdCBj
aGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lIHNp
emVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hh
ciBfX3JlamVjdDIsCiAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBz
aXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19z
W19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3Jl
amVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICArK19fcmVzdWx0OwogIHJl
dHVybiBfX3Jlc3VsdDsKfQojIDkyNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4
dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFy
IF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAoX19jb25zdCBj
aGFyICpfX3MsIGNoYXIgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAw
OwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsrX19yZXN1bHQ7CiAg
cmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MyIChf
X2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0
cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0
MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1
bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MikKICAgICsrX19y
ZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ry
c3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0Myk7CmV4
dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFy
IF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAgcmVnaXN0ZXIg
c2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQx
IHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCiAgICAgICAgIHx8IF9fc1tfX3Jlc3VsdF0g
PT0gX19hY2NlcHQzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5ODIg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19z
dHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGlu
ZSBjaGFyICoKX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEs
IGNoYXIgX19hY2NlcHQyKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2Fj
Y2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAn
XDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4dGVybiBfX2lu
bGluZSBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0
MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyLCBj
aGFyIF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MzIChfX2Nv
bnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyLAogICAgICAgICAg
ICAgIGNoYXIgX19hY2NlcHQzKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBf
X2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIKICAgICAgICAgJiYgKl9fcyAhPSBfX2FjY2Vw
dDMpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hh
ciAqKSAoc2l6ZV90KSBfX3M7Cn0KIyAxMDI0ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgi
IDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdApzdHJubGVuIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5n
LCBzaXplX3QgX19tYXhsZW4pCnsKICBfX2NvbnN0IGNoYXIgKl9fZW5kID0gKF9fY29uc3QgY2hh
ciAqKSBtZW1jaHIgKF9fc3RyaW5nLCAnXDAnLCBfX21heGxlbik7CiAgcmV0dXJuIF9fZW5kID8g
KHNpemVfdCkgKF9fZW5kIC0gX19zdHJpbmcpIDogX19tYXhsZW47Cn0KIyAxMDQzICIvdXNyL2lu
Y2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RydG9rX3Jf
MWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApOwpleHRlcm4gX19pbmxp
bmUgY2hhciAqCl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9f
bmV4dHApCnsKICBjaGFyICpfX3Jlc3VsdDsKICBpZiAoX19zID09ICgodm9pZCAqKTApKQogICAg
X19zID0gKl9fbmV4dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXApCiAgICArK19fczsKICBpZiAo
Kl9fcyA9PSAnXDAnKQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBlbHNlCiAgICB7CiAg
ICAgIF9fcmVzdWx0ID0gX19zOwogICAgICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0g
X19zZXApCiAgICAgICAgKytfX3M7CiAgICAgIGlmICgqX19zID09ICdcMCcpCiAgICAgICAgKl9f
bmV4dHAgPSBfX3M7CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAqX19zID0gJ1wwJzsK
ICAgICAgICAgICpfX25leHRwID0gX19zICsgMTsKICAgICAgICB9CiAgICB9CiAgcmV0dXJuIF9f
cmVzdWx0Owp9CiMgMTA5MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBf
X2lubGluZSBjaGFyICpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7CmV4
dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWpl
Y3QpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09
ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0
dmFsID09IF9fcmVqZWN0KQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICBpZiAoKCpf
X3MgPSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAo
X19yZWplY3QpID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9fcmVq
ZWN0KSA6IHN0cmNociAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikwKSkKICAg
ICAgKigqX19zKSsrID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwog
IHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzJjIChj
aGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxp
bmUgY2hhciAqCl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBf
X3JlamVjdDIpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0
dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAo
Kl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QyKQogICAgKigq
X19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBf
X3JldHZhbDsKICAgICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYgKl9fY3AgIT0gX19yZWplY3Qx
ICYmICpfX2NwICE9IF9fcmVqZWN0MikKICAgICAgICArK19fY3A7CiAgICAgIGlmICgqX19jcCAh
PSAnXDAnKQogICAgICAgIHsKICAgICAgICAgICpfX3MgPSBfX2NwOwogICAgICAgICAgKigqX19z
KSsrID0gJ1wwJzsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICAqX19zID0gKCh2b2lkICop
MCk7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19z
dHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBf
X2lubGluZSBjaGFyICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBj
aGFyIF9fcmVqZWN0MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZh
bCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3Mg
PSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwg
PT0gX19yZWplY3QyCiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDMpCiAgICAqKCpfX3Mp
KysgPSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0
dmFsOwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYg
Kl9fY3AgIT0gX19yZWplY3QyCiAgICAgICAgICAgICAmJiAqX19jcCAhPSBfX3JlamVjdDMpCiAg
ICAgICAgKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAg
ICAqX19zID0gX19jcDsKICAgICAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICAgICAgfQogICAg
ICBlbHNlCiAgICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwogICAgfQogIHJldHVybiBfX3JldHZh
bDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29u
c3QgY2hhciAqX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwX2cgKGNo
YXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpfX3Jl
dHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICgo
dm9pZCAqKTApOwogIGlmICgoKl9fcyA9IF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX2EwLCBfX2Ex
LCBfX2EyOyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoX19yZWplY3QpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKF9fcmVq
ZWN0KSA9PSAxKSA/ICgoX19hMCA9ICgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzBdLCBf
X2EwID09ICdcMCcpID8gKCh2b2lkICopMCkgOiAoKF9fYTEgPSAoKF9fY29uc3QgY2hhciAqKSAo
X19yZWplY3QpKVsxXSwgX19hMSA9PSAnXDAnKSA/IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoX19hMCkgJiYgKF9fYTApID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNo
ciAoX19yZXR2YWwsIF9fYTApIDogc3RyY2hyIChfX3JldHZhbCwgX19hMCkpKSA6ICgoX19hMiA9
ICgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzJdLCBfX2EyID09ICdcMCcpID8gX19zdHJw
YnJrX2MyIChfX3JldHZhbCwgX19hMCwgX19hMSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKF9fcmVq
ZWN0KSlbM10gPT0gJ1wwJyA/IF9fc3RycGJya19jMyAoX19yZXR2YWwsIF9fYTAsIF9fYTEsIF9f
YTIpIDogc3RycGJyayAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSkgOiBzdHJwYnJrIChfX3JldHZh
bCwgX19yZWplY3QpKTsgfSkpICE9ICgodm9pZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsK
ICByZXR1cm4gX19yZXR2YWw7Cn0KIyAxMTg2ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCgojIDEgImluY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwojIDUyNiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChf
X21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90
IF9fc2l6ZSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTE4
NyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKCgoKCmV4dGVybiBjaGFyICpfX3N0
cmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18p
KTsKIyAxMjEwICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIGNoYXIgKl9f
c3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikKICAgICAgICAgICAg
IF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMzY2ICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDIgMwojIDk4ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3N5c3RlbS5oIiAyCiMg
MSAiL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCIgMSAzCiMgOTkgIi91c3Ivc3JjL2djYy9nY2MtY3Zz
LTMuMC9nY2Mvc3lzdGVtLmgiIDIKIyAxMTAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mv
c3lzdGVtLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAxICJpbmNsdWRlL3N0ZGRlZi5oIiAx
IDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyA0MiAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2FpdGZsYWdzLmgiIDEgMwojIDQzICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0
dXMuaCIgMSAzCiMgNjMgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0
dXMuaCIgMiAzCgp1bmlvbiB3YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAgc3RydWN0CiAg
ICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd190ZXJtc2lnOjc7CiAgICAgICAgdW5zaWdu
ZWQgaW50IF9fd19jb3JlZHVtcDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfcmV0Y29kZTo4
OwogICAgICAgIHVuc2lnbmVkIGludDoxNjsKCgoKCgoKCiAgICAgIH0gX193YWl0X3Rlcm1pbmF0
ZWQ7CiAgICBzdHJ1Y3QKICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3B2YWw6
ODsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3BzaWc6ODsKICAgICAgICB1bnNpZ25lZCBp
bnQ6MTY7CgoKCgoKCiAgICAgIH0gX193YWl0X3N0b3BwZWQ7CiAgfTsKIyA0NCAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAyIDMKIyA2OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYg
dW5pb24KICB7CiAgICB1bmlvbiB3YWl0ICpfX3VwdHI7CiAgICBpbnQgKl9faXB0cjsKICB9IF9f
V0FJVF9TVEFUVVMgX19hdHRyaWJ1dGVfXyAoKF9fdHJhbnNwYXJlbnRfdW5pb25fXykpOwojIDk0
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVv
dDsKICAgIGludCByZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25n
IGludCBxdW90OwogICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90OwoKCgoKCl9fZXh0ZW5zaW9u
X18gdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGxv
bmcgaW50IHJlbTsKICB9IGxsZGl2X3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSA7CgoKCmV4dGVybiBk
b3VibGUgYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKZXh0ZXJuIGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFyICpfX25w
dHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBs
b25nIGxvbmcgaW50IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyKSA7CgoKCmV4dGVybiBmbG9hdCBzdHJ0b2YgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyKSA7CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyKSA7CgoKCmV4dGVybiBsb25nIGludCBzdHJ0b2wgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBp
bnQgc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19i
YXNlKQogICAgICAgICAgICA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
c3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7Cgpf
X2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgICAg
ICAgICA7CgoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5z
aW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICAgICAgICAg
OwojIDIxMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3hsb2Nh
bGUuaCIgMSAzCiMgMjEyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgpleHRlcm4gbG9u
ZyBpbnQgX19zdHJ0b2xfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19i
YXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgOwoKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgX19zdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9j
YWxlX3QgX19sb2MpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQgX19zdHJ0b3VsbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgICAgICAgIDsKCmV4dGVybiBkb3VibGUgX19z
dHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykK
ICAgICAgICAgICAgOwoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3Ry
dG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCgoKCgoKZXh0ZXJuIGRvdWJs
ZSBfX3N0cnRvZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
IGludCBfX2dyb3VwKQogICAgICAgICAgICA7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5h
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAg
ICAgICAgIDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKSA7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xf
aW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCgpf
X2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgpf
X2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50
ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YmFzZSwgaW50IF9fZ3JvdXApCiAgICAgICAgICAgIDsKIyAyOTQgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsKICByZXR1cm4gX19z
dHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lubGluZSBs
b25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0
b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KZXh0ZXJuIF9faW5s
aW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7
CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAw
KTsKfQoKCmV4dGVybiBfX2lubGluZSBmbG9hdApzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3Ry
dG9mX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUKc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIpCnsKICByZXR1cm4gX19zdHJ0b2xkX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCAwKTsKfQoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25n
IGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0
cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNp
b25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VxIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwK
ICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5s
aW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICBy
ZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9
Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3Ry
dG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9p
bnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGlu
ZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9kIChf
X25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSk7Cn0KZXh0ZXJuIF9faW5saW5lIGludAphdG9p
IChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiAoaW50KSBzdHJ0b2wgKF9fbnB0ciwg
KGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmF0
b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hh
ciAqKikgKCh2b2lkICopMCksIDEwKTsKfQoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5l
IGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0
cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KIyAzODUgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbDY0YSAobG9uZyBpbnQgX19uKSA7CgoK
ZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMzkyICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgpleHRlcm4gaW50MzJfdCByYW5kb20gKHZv
aWQpIDsKCgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCgoK
ZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0
ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pIDsKCgoKZXh0
ZXJuIGNoYXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSA7CgoKCgoKCgpzdHJ1Y3QgcmFu
ZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGlu
dDMyX3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGlu
dCByYW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9t
X3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBzcmFuZG9t
X3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIDsKCmV4
dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJp
Y3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4s
CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBf
X2J1ZikgOwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVi
dWYsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0
IF9fYnVmKSA7CgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBzcmFu
ZCAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQg
aW50ICpfX3NlZWQpIDsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRl
cm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0
ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVu
c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDgg
KHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdKSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSA7CmV4
dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2Vl
ZDE2dlszXSkgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJh
bVs3XSkgOwoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQg
eFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBhWzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50
IGM7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgb2xkX3hbM107CiAgICBpbnQgaW5pdDsKICB9OwoK
CgpleHRlcm4gaW50IGRyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBf
X2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3Vs
dCkgOwpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s
CiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0
KSA7CgoKZXh0ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJp
Y3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBf
X3Jlc3VsdCkgOwpleHRlcm4gaW50IG5yYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1
YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3Ry
aWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3Qg
X19yZXN1bHQpIDsKCgpleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jl
c3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBp
bnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEg
Kl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19y
ZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgc3JhbmQ0OF9yIChsb25nIGludCBfX3Nl
ZWR2YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKQogICAgICAgICAgICA7CgpleHRl
cm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwoKZXh0ZXJuIGlu
dCBsY29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLAogICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsKIyA1MzUgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVf
dCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVl
ICh2b2lkICpfX3B0cikgOwoKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19wdHIpIDsKCgoK
IyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwojIDIyICIvdXNyL2luY2x1ZGUvYWxsb2Nh
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVk
ZS9hbGxvY2EuaCIgMiAzCgoKIyAxICJpbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyNiAiL3Vzci9p
bmNsdWRlL2FsbG9jYS5oIiAyIDMKCgoKCgoKCmV4dGVybiB2b2lkICphbGxvY2EgKHNpemVfdCBf
X3NpemUpIDsKIyA1NDYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgpleHRlcm4gdm9p
ZCAqdmFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoK
CgoKZXh0ZXJuIGludCBwb3NpeF9tZW1hbGlnbiAodm9pZCAqKm1lbXB0ciwgc2l6ZV90IGFsaWdu
bWVudCwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2Nf
XykpOwoKCgpleHRlcm4gdm9pZCBhYm9ydCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1
cm5fXykpOwoKCgpleHRlcm4gaW50IGF0ZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSA7CgoK
CgpleHRlcm4gaW50IF9fb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9p
ZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICAgICAgICAgOwpleHRlcm4gaW50IG9uX2V4aXQg
KHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcp
CiAgICAgICAgICAgIDsKCgoKCgpleHRlcm4gdm9pZCBleGl0IChpbnQgX19zdGF0dXMpIF9fYXR0
cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiB2b2lkIF9FeGl0IChpbnQgX19z
dGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiBjaGFyICpn
ZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9n
ZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYgKGNo
YXIgKl9fc3RyaW5nKSA7CgoKCgoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19u
YW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCiAgICAgICAgICAgIDsK
CgpleHRlcm4gdm9pZCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgoKZXh0
ZXJuIGludCBjbGVhcmVudiAodm9pZCkgOwojIDYyNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCgoKZXh0ZXJuIGlu
dCBta3N0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7CiMgNjQwICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCmV4dGVy
biBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgOwoKCgoKCgpleHRlcm4gY2hh
ciAqY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKIyA2NjIg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19y
ZXN0cmljdCBfX3Jlc29sdmVkKSA7CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkg
KF9fY29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZvaWQgKik7CgoKdHlwZWRlZiBfX2NvbXBhcl9mbl90
IGNvbXBhcmlzb25fZm5fdDsKCgoKCgpleHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2b2lk
ICpfX2tleSwgX19jb25zdCB2b2lkICpfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4
dGVybiB2b2lkIHFzb3J0ICh2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19z
aXplLAogICAgICAgICAgICAgICAgICAgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVy
biBpbnQgYWJzIChpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBs
b25nIGludCBsYWJzIChsb25nIGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9uZyBpbnQg
X194KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgpleHRl
cm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAgICAgICAgICBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsZGl2X3QgbGRpdiAobG9uZyBpbnQgX19u
dW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxsZGl2X3QgbGxkaXYgKGxvbmcgbG9uZyBp
bnQgX19udW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25n
IGludCBfX2Rlbm9tKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoj
IDcxOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICplY3Z0IChkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAg
ICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4dGVybiBjaGFyICpmY3Z0
IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwK
ICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4dGVybiBj
aGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoK
CmV4dGVybiBjaGFyICpxZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAog
ICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJp
Y3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50
IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBp
bnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9uZyBkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoKCmV4dGVybiBpbnQgZWN2
dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNw
dCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGlu
dCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBf
X2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAq
X19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgOwoKZXh0
ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAg
ICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBf
X3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90
IF9fbGVuKSA7CmV4dGVybiBpbnQgcWZjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9f
bmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg
Kl9fcmVzdHJpY3QgX19zaWduLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3Qg
X19idWYsIHNpemVfdCBfX2xlbikgOwoKCgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNo
YXIgKl9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jl
c3RyaWN0IF9fcHdjLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFy
X3QgX193Y2hhcikgOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgc2l6ZV90IF9fbikgOwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19y
ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCiAgICAgICAgICAgIDsKCgoKCgoKCmV4dGVybiBp
bnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMgNzk3ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3RyaWN0IF9f
b3B0aW9ucCwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29uc3QgKl9fcmVzdHJpY3Qg
X190b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3ZhbHVl
cCkgOwoKCgoKCgpleHRlcm4gdm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIDsKCgoK
CgoKCmV4dGVybiBpbnQgZ3JhbnRwdCAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIGludCB1bmxvY2tw
dCAoaW50IF9fZmQpIDsKCgoKCmV4dGVybiBjaGFyICpwdHNuYW1lIChpbnQgX19mZCkgOwoKCgoK
CgpleHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19i
dWZsZW4pIDsKCgpleHRlcm4gaW50IGdldHB0ICh2b2lkKSA7CgoKCgoKCmV4dGVybiBpbnQgZ2V0
bG9hZGF2ZyAoZG91YmxlIF9fbG9hZGF2Z1tdLCBpbnQgX19uZWxlbSkgOwojIDExMSAiL3Vzci9z
cmMvZ2NjL2djYy1jdnMtMy4wL2djYy9zeXN0ZW0uaCIgMgojIDExOSAiL3Vzci9zcmMvZ2NjL2dj
Yy1jdnMtMy4wL2djYy9zeXN0ZW0uaCIKIyAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDEgMwoj
IDI2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMTc1ICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeF9vcHQuaCIgMSAzCiMg
MTc2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L2Vudmlyb25tZW50cy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRz
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAyNCAiL3Vzci9p
bmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDIgMwojIDE4MCAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAyIDMKIyAxOTAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3R5cGVzLmgiIDEgMwojIDE5MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyAx
OTkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgImluY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDIwMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyAyNDAgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMwp0eXBlZGVmIF9faW50cHRyX3QgaW50cHRyX3Q7CgoKCgoKCnR5cGVkZWYgX19zb2Nr
bGVuX3Qgc29ja2xlbl90OwojIDI2MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBp
bnQgYWNjZXNzIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgOwoKCgoKZXh0ZXJu
IGludCBldWlkYWNjZXNzIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgOwojIDI5
MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX29mZl90IGxzZWVrIChpbnQgX19m
ZCwgX19vZmZfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlKSA7CiMgMzAyICIvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDMKZXh0ZXJuIF9fb2ZmNjRfdCBsc2VlazY0IChpbnQgX19mZCwgX19vZmY2NF90
IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIDsKCgoKZXh0ZXJuIGludCBjbG9zZSAoaW50IF9fZmQp
IDsKCgoKZXh0ZXJuIHNzaXplX3QgcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3Qg
X19uYnl0ZXMpIDsKCgpleHRlcm4gc3NpemVfdCB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9p
ZCAqX19idWYsIHNpemVfdCBfX24pIDsKCgoKZXh0ZXJuIHNzaXplX3QgcHJlYWQgKGludCBfX2Zk
LCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLCBfX29mZl90IF9fb2Zmc2V0KQogICAgICAg
ICAgICA7CmV4dGVybiBzc2l6ZV90IHB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19i
dWYsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgX19vZmZfdCBfX29mZnNldCkg
OwojIDM0MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBzc2l6ZV90IHByZWFkNjQg
KGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLAogICAgICAgICAgICAgICAg
ICAgICAgICBfX29mZjY0X3QgX19vZmZzZXQpIDsKCgpleHRlcm4gc3NpemVfdCBwd3JpdGU2NCAo
aW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICBfX29mZjY0X3QgX19vZmZzZXQpIDsKCgoKCgoKCmV4dGVybiBpbnQgcGlwZSAo
aW50IF9fcGlwZWRlc1syXSkgOwojIDM2MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVy
biB1bnNpZ25lZCBpbnQgYWxhcm0gKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIDsKIyAzNzEgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gdW5zaWduZWQgaW50IHNsZWVwICh1bnNpZ25l
ZCBpbnQgX19zZWNvbmRzKSA7CgoKCgoKCmV4dGVybiBfX3VzZWNvbmRzX3QgdWFsYXJtIChfX3Vz
ZWNvbmRzX3QgX192YWx1ZSwgX191c2Vjb25kc190IF9faW50ZXJ2YWwpCiAgICAgICAgICAgIDsK
CgoKZXh0ZXJuIHZvaWQgdXNsZWVwIChfX3VzZWNvbmRzX3QgX191c2Vjb25kcykgOwoKCgoKCmV4
dGVybiBpbnQgcGF1c2UgKHZvaWQpIDsKCgoKZXh0ZXJuIGludCBjaG93biAoX19jb25zdCBjaGFy
ICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAgICAgICAgICA7
CgoKCmV4dGVybiBpbnQgZmNob3duIChpbnQgX19mZCwgX191aWRfdCBfX293bmVyLCBfX2dpZF90
IF9fZ3JvdXApIDsKCgoKCmV4dGVybiBpbnQgbGNob3duIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwg
X191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgICAgICAgIDsKCgoKCmV4dGVy
biBpbnQgY2hkaXIgKF9fY29uc3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBpbnQgZmNoZGly
IChpbnQgX19mZCkgOwojIDQyMyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBjaGFy
ICpnZXRjd2QgKGNoYXIgKl9fYnVmLCBzaXplX3QgX19zaXplKSA7CgoKCgoKZXh0ZXJuIGNoYXIg
KmdldF9jdXJyZW50X2Rpcl9uYW1lICh2b2lkKSA7CgoKCgoKCmV4dGVybiBjaGFyICpnZXR3ZCAo
Y2hhciAqX19idWYpIDsKCgoKCmV4dGVybiBpbnQgZHVwIChpbnQgX19mZCkgOwoKCmV4dGVybiBp
bnQgZHVwMiAoaW50IF9fZmQsIGludCBfX2ZkMikgOwoKCmV4dGVybiBjaGFyICoqX19lbnZpcm9u
OwoKZXh0ZXJuIGNoYXIgKiplbnZpcm9uOwoKCgoKCmV4dGVybiBpbnQgZXhlY3ZlIChfX2NvbnN0
IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwKICAgICAgICAgICAgICAgICAg
IGNoYXIgKl9fY29uc3QgX19lbnZwW10pIDsKCgoKCmV4dGVybiBpbnQgZmV4ZWN2ZSAoaW50IF9f
ZmQsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sIGNoYXIgKl9fY29uc3QgX19lbnZwW10pCiAgICAg
ICAgICAgIDsKCgoKCmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFy
ICpfX2NvbnN0IF9fYXJndltdKSA7CgoKCmV4dGVybiBpbnQgZXhlY2xlIChfX2NvbnN0IGNoYXIg
Kl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY2wg
KF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKZXh0
ZXJuIGludCBleGVjdnAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJn
dltdKSA7CgoKCgpleHRlcm4gaW50IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29u
c3QgY2hhciAqX19hcmcsIC4uLikgOwoKCgoKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIDsK
CgoKCmV4dGVybiB2b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25v
cmV0dXJuX18pKTsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwoj
IDI1ICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAgICBfUENfTElO
S19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19O
QU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19D
SE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgog
ICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAg
IF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTCgogIH07CgoKZW51bQogIHsK
ICAgIF9TQ19BUkdfTUFYLAoKICAgIF9TQ19DSElMRF9NQVgsCgogICAgX1NDX0NMS19UQ0ssCgog
ICAgX1NDX05HUk9VUFNfTUFYLAoKICAgIF9TQ19PUEVOX01BWCwKCiAgICBfU0NfU1RSRUFNX01B
WCwKCiAgICBfU0NfVFpOQU1FX01BWCwKCiAgICBfU0NfSk9CX0NPTlRST0wsCgogICAgX1NDX1NB
VkVEX0lEUywKCiAgICBfU0NfUkVBTFRJTUVfU0lHTkFMUywKCiAgICBfU0NfUFJJT1JJVFlfU0NI
RURVTElORywKCiAgICBfU0NfVElNRVJTLAoKICAgIF9TQ19BU1lOQ0hST05PVVNfSU8sCgogICAg
X1NDX1BSSU9SSVRJWkVEX0lPLAoKICAgIF9TQ19TWU5DSFJPTklaRURfSU8sCgogICAgX1NDX0ZT
WU5DLAoKICAgIF9TQ19NQVBQRURfRklMRVMsCgogICAgX1NDX01FTUxPQ0ssCgogICAgX1NDX01F
TUxPQ0tfUkFOR0UsCgogICAgX1NDX01FTU9SWV9QUk9URUNUSU9OLAoKICAgIF9TQ19NRVNTQUdF
X1BBU1NJTkcsCgogICAgX1NDX1NFTUFQSE9SRVMsCgogICAgX1NDX1NIQVJFRF9NRU1PUllfT0JK
RUNUUywKCiAgICBfU0NfQUlPX0xJU1RJT19NQVgsCgogICAgX1NDX0FJT19NQVgsCgogICAgX1ND
X0FJT19QUklPX0RFTFRBX01BWCwKCiAgICBfU0NfREVMQVlUSU1FUl9NQVgsCgogICAgX1NDX01R
X09QRU5fTUFYLAoKICAgIF9TQ19NUV9QUklPX01BWCwKCiAgICBfU0NfVkVSU0lPTiwKCiAgICBf
U0NfUEFHRVNJWkUsCgoKICAgIF9TQ19SVFNJR19NQVgsCgogICAgX1NDX1NFTV9OU0VNU19NQVgs
CgogICAgX1NDX1NFTV9WQUxVRV9NQVgsCgogICAgX1NDX1NJR1FVRVVFX01BWCwKCiAgICBfU0Nf
VElNRVJfTUFYLAoKCgoKICAgIF9TQ19CQ19CQVNFX01BWCwKCiAgICBfU0NfQkNfRElNX01BWCwK
CiAgICBfU0NfQkNfU0NBTEVfTUFYLAoKICAgIF9TQ19CQ19TVFJJTkdfTUFYLAoKICAgIF9TQ19D
T0xMX1dFSUdIVFNfTUFYLAoKICAgIF9TQ19FUVVJVl9DTEFTU19NQVgsCgogICAgX1NDX0VYUFJf
TkVTVF9NQVgsCgogICAgX1NDX0xJTkVfTUFYLAoKICAgIF9TQ19SRV9EVVBfTUFYLAoKICAgIF9T
Q19DSEFSQ0xBU1NfTkFNRV9NQVgsCgoKICAgIF9TQ18yX1ZFUlNJT04sCgogICAgX1NDXzJfQ19C
SU5ELAoKICAgIF9TQ18yX0NfREVWLAoKICAgIF9TQ18yX0ZPUlRfREVWLAoKICAgIF9TQ18yX0ZP
UlRfUlVOLAoKICAgIF9TQ18yX1NXX0RFViwKCiAgICBfU0NfMl9MT0NBTEVERUYsCgoKICAgIF9T
Q19QSUksCgogICAgX1NDX1BJSV9YVEksCgogICAgX1NDX1BJSV9TT0NLRVQsCgogICAgX1NDX1BJ
SV9JTlRFUk5FVCwKCiAgICBfU0NfUElJX09TSSwKCiAgICBfU0NfUE9MTCwKCiAgICBfU0NfU0VM
RUNULAoKICAgIF9TQ19VSU9fTUFYSU9WLAoKICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNLAoK
ICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAgX1NDX1BJSV9PU0lfQ09UUywKCiAgICBf
U0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJX00sCgogICAgX1NDX1RfSU9WX01BWCwK
CgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAg
X1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAgX1NDX0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1ND
X0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19UVFlfTkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9E
RVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAgX1NDX1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0Nf
VEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19U
SFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwKCiAg
ICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RIUkVBRF9QUklPX0lO
SEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QsCgogICAgX1NDX1RIUkVBRF9QUk9D
RVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNTT1JTX0NPTkYsCgogICAgX1NDX05QUk9DRVNT
T1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMsCgogICAgX1NDX0FWUEhZU19QQUdFUywKCiAg
ICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFTU19NQVgsCgoKICAgIF9TQ19YT1BFTl9WRVJT
SU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fVU5JWCwKCiAg
ICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hPUEVOX0VOSF9JMThOLAoKICAgIF9TQ19YT1BF
Tl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwKCiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAg
X1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5fWFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAg
ICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1NDX0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwK
CiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1NDX0lOVF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgog
ICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19XT1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwK
CiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NTSVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoK
ICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1NDX1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwK
CiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9TQ19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFY
LAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAgIF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xB
TkdNQVgsCgogICAgX1NDX05MX01TR01BWCwKCiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxf
U0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwK
CiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwKCiAg
ICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19YT1BFTl9MRUdBQ1ksCgogICAgX1ND
X1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTLAoKCiAgICBf
U0NfQURWSVNPUllfSU5GTywKCiAgICBfU0NfQkFSUklFUlMsCgogICAgX1NDX0JBU0UsCgogICAg
X1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVF9SLAoKICAgIF9TQ19D
TE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQVVRJTUUsCgogICAgX1NDX1RIUkVBRF9DUFVUSU1F
LAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAgX1NDX0RFVklDRV9TUEVDSUZJQywKCiAgICBfU0Nf
REVWSUNFX1NQRUNJRklDX1IsCgogICAgX1NDX0ZEX01HTVQsCgogICAgX1NDX0ZJRk8sCgogICAg
X1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRUUklCVVRFUywKCiAgICBfU0NfRklMRV9MT0NLSU5H
LAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAgICBfU0NfTU9OT1RPTklDX0NMT0NLLAoKICAgIF9T
Q19NVUxUSVBMRV9QUk9DRVNTLAoKICAgIF9TQ19TSU5HTEVfUFJPQ0VTUywKCiAgICBfU0NfTkVU
V09SS0lORywKCiAgICBfU0NfUkVBREVSX1dSSVRFUl9MT0NLUywKCiAgICBfU0NfU1BJTl9MT0NL
UywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9TQ19SRUdFWF9WRVJTSU9OLAoKICAgIF9TQ19TSEVM
TCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBfU0NfU1BBV04sCgogICAgX1NDX1NQT1JBRElDX1NF
UlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfU1lTVEVNX0RB
VEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFUQUJBU0VfUiwKCiAgICBfU0NfVElNRU9VVFMsCgog
ICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19VU0VSX0dST1VQUywKCiAgICBf
U0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfUEJTLAoKICAgIF9TQ19QQlNfQUNDT1VOVElORywK
CiAgICBfU0NfUEJTX0xPQ0FURSwKCiAgICBfU0NfUEJTX01FU1NBR0UsCgogICAgX1NDX1BCU19U
UkFDSywKCiAgICBfU0NfU1lNTE9PUAoKICB9OwoKCgoKCmVudW0KICB7CiAgICBfQ1NfUEFUSAoK
CgoKICAgICwKICAgIF9DU19MRlNfQ0ZMQUdTID0gMTAwMCwKCiAgICBfQ1NfTEZTX0xERkxBR1Ms
CgogICAgX0NTX0xGU19MSUJTLAoKICAgIF9DU19MRlNfTElOVEZMQUdTLAoKICAgIF9DU19MRlM2
NF9DRkxBR1MsCgogICAgX0NTX0xGUzY0X0xERkxBR1MsCgogICAgX0NTX0xGUzY0X0xJQlMsCgog
ICAgX0NTX0xGUzY0X0xJTlRGTEFHUwoKCgoKICAgICwKICAgIF9DU19YQlM1X0lMUDMyX09GRjMy
X0NGTEFHUyA9IDExMDAsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTERGTEFHUywKCiAgICBf
Q1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJTlRG
TEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19YQlM1X0lM
UDMyX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19MSUJTLAoKICAg
IF9DU19YQlM1X0lMUDMyX09GRkJJR19MSU5URkxBR1MsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2
NF9DRkxBR1MsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MREZMQUdTLAoKICAgIF9DU19YQlM1
X0xQNjRfT0ZGNjRfTElCUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xJTlRGTEFHUywKCiAg
ICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJ
R19MREZMQUdTLAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19MSUJTLAoKICAgIF9DU19YQlM1
X0xQQklHX09GRkJJR19MSU5URkxBR1MKCgogIH07CiMgNTAxICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDIgMwoKCmV4dGVybiBsb25nIGludCBwYXRoY29uZiAoX19jb25zdCBjaGFyICpfX3BhdGgs
IGludCBfX25hbWUpIDsKCgpleHRlcm4gbG9uZyBpbnQgZnBhdGhjb25mIChpbnQgX19mZCwgaW50
IF9fbmFtZSkgOwoKCmV4dGVybiBsb25nIGludCBzeXNjb25mIChpbnQgX19uYW1lKSA7CgoKCmV4
dGVybiBzaXplX3QgY29uZnN0ciAoaW50IF9fbmFtZSwgY2hhciAqX19idWYsIHNpemVfdCBfX2xl
bikgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fcGlkX3Qg
Z2V0cHBpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAodm9pZCkgOwojIDUz
NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAoX19w
aWRfdCBfX3BpZCkgOwoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdpZCAoX19waWRfdCBfX3BpZCkgOwoK
CgoKCgpleHRlcm4gaW50IHNldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKSA7
CiMgNTYyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBzZXRwZ3JwICh2b2lk
KSA7CiMgNTgwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3Qgc2V0c2lk
ICh2b2lkKSA7CgoKCmV4dGVybiBfX3BpZF90IGdldHNpZCAoX19waWRfdCBfX3BpZCkgOwoKCgpl
eHRlcm4gX191aWRfdCBnZXR1aWQgKHZvaWQpIDsKCgpleHRlcm4gX191aWRfdCBnZXRldWlkICh2
b2lkKSA7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSA7CgoKZXh0ZXJuIF9fZ2lkX3Qg
Z2V0ZWdpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRncm91cHMgKGludCBfX3NpemUsIF9f
Z2lkX3QgX19saXN0W10pIDsKCgoKZXh0ZXJuIGludCBncm91cF9tZW1iZXIgKF9fZ2lkX3QgX19n
aWQpIDsKCgoKCgoKZXh0ZXJuIGludCBzZXR1aWQgKF9fdWlkX3QgX191aWQpIDsKCgoKCmV4dGVy
biBpbnQgc2V0cmV1aWQgKF9fdWlkX3QgX19ydWlkLCBfX3VpZF90IF9fZXVpZCkgOwoKCgoKZXh0
ZXJuIGludCBzZXRldWlkIChfX3VpZF90IF9fdWlkKSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0Z2lk
IChfX2dpZF90IF9fZ2lkKSA7CgoKCgpleHRlcm4gaW50IHNldHJlZ2lkIChfX2dpZF90IF9fcmdp
ZCwgX19naWRfdCBfX2VnaWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0ZWdpZCAoX19naWRfdCBfX2dp
ZCkgOwoKCgoKCgpleHRlcm4gX19waWRfdCBmb3JrICh2b2lkKSA7CgoKCgoKCmV4dGVybiBfX3Bp
ZF90IHZmb3JrICh2b2lkKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUgKGludCBfX2ZkKSA7
CgoKCmV4dGVybiBpbnQgdHR5bmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBf
X2J1ZmxlbikgOwoKCgpleHRlcm4gaW50IGlzYXR0eSAoaW50IF9fZmQpIDsKCgoKCmV4dGVybiBp
bnQgdHR5c2xvdCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBsaW5rIChfX2NvbnN0IGNoYXIgKl9f
ZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSA7CgoKCmV4dGVybiBpbnQgc3ltbGluayAoX19jb25z
dCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgOwoKCgoKZXh0ZXJuIGludCByZWFk
bGluayAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwgY2hhciAqX19yZXN0cmljdCBf
X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQg
dW5saW5rIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCmV4dGVybiBpbnQgcm1kaXIgKF9fY29u
c3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAoaW50IF9fZmQp
IDsKCgpleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9fZmQsIF9fcGlkX3QgX19wZ3JwX2lkKSA7
CgoKCmV4dGVybiBjaGFyICpnZXRsb2dpbiAodm9pZCkgOwojIDcxNiAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAzCmV4dGVybiBpbnQgc2V0bG9naW4gKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CiMg
NzI1ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0z
LjAvaW5jbHVkZS9nZXRvcHQuaCIgMQojIDM2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvaW5j
bHVkZS9nZXRvcHQuaCIKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKIyA1MCAiL3Vzci9zcmMvZ2NjL2dj
Yy1jdnMtMy4wL2luY2x1ZGUvZ2V0b3B0LmgiCmV4dGVybiBpbnQgb3B0aW5kOwoKCgoKZXh0ZXJu
IGludCBvcHRlcnI7CgoKCmV4dGVybiBpbnQgb3B0b3B0OwojIDgyICIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvaW5jbHVkZS9nZXRvcHQuaCIKc3RydWN0IG9wdGlvbgp7CgogIGNvbnN0IGNoYXIg
Km5hbWU7CgoKCgoKICBpbnQgaGFzX2FyZzsKICBpbnQgKmZsYWc7CiAgaW50IHZhbDsKfTsKIyAx
MTIgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9pbmNsdWRlL2dldG9wdC5oIgpleHRlcm4gaW50
IGdldG9wdCAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpzaG9ydG9w
dHMpOwoKCgoKCmV4dGVybiBpbnQgZ2V0b3B0X2xvbmcgKGludCBhcmdjLCBjaGFyICpjb25zdCAq
YXJndiwgY29uc3QgY2hhciAqc2hvcnRvcHRzLAogICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdHJ1Y3Qgb3B0aW9uICpsb25nb3B0cywgaW50ICpsb25naW5kKTsKZXh0ZXJuIGludCBnZXRv
cHRfbG9uZ19vbmx5IChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRvcHRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0cnVjdCBvcHRpb24gKmxvbmdvcHRzLCBpbnQgKmxvbmdpbmQpOwoK
CmV4dGVybiBpbnQgX2dldG9wdF9pbnRlcm5hbCAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0b3B0cywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpsb25nb3B0cywg
aW50ICpsb25naW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsb25nX29ubHkp
OwojIDcyNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyA3MzQgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMwpleHRlcm4gaW50IGdldGhvc3RuYW1lIChjaGFyICpfX25hbWUsIHNvY2tsZW5f
dCBfX2xlbikgOwoKCgpleHRlcm4gaW50IHNldGhvc3RuYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFt
ZSwgc2l6ZV90IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgc2V0aG9zdGlkIChsb25nIGludCBfX2lk
KSA7CgoKCgoKZXh0ZXJuIGludCBnZXRkb21haW5uYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBf
X2xlbikgOwpleHRlcm4gaW50IHNldGRvbWFpbm5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLCBz
aXplX3QgX19sZW4pIDsKCgoKZXh0ZXJuIGludCBmc3luYyAoaW50IF9fZmQpIDsKCgoKCgpleHRl
cm4gaW50IHZoYW5ndXAgKHZvaWQpIDsKCgpleHRlcm4gaW50IHJldm9rZSAoX19jb25zdCBjaGFy
ICpfX2ZpbGUpIDsKCgoKCgoKCmV4dGVybiBpbnQgcHJvZmlsICh1bnNpZ25lZCBzaG9ydCBpbnQg
Kl9fc2FtcGxlX2J1ZmZlciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX29mZnNldCwgdW5zaWduZWQgaW50IF9fc2NhbGUpIDsKCgoKCgpleHRlcm4gaW50IGFjY3Qg
KF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCmV4dGVybiBpbnQgY2hyb290IChfX2NvbnN0IGNo
YXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gY2hhciAqZ2V0dXNlcnNoZWxsICh2b2lkKSA7CmV4dGVy
biB2b2lkIGVuZHVzZXJzaGVsbCAodm9pZCkgOwpleHRlcm4gdm9pZCBzZXR1c2Vyc2hlbGwgKHZv
aWQpIDsKCgoKCmV4dGVybiBjaGFyICpnZXRwYXNzIChfX2NvbnN0IGNoYXIgKl9fcHJvbXB0KSA7
CgoKCgpleHRlcm4gaW50IGRhZW1vbiAoaW50IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgOwoK
CgoKCgoKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3RpZCAodm9pZCkgOwoKCmV4dGVybiBpbnQgc3lu
YyAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSAodm9pZCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCB0cnVuY2F0ZSAoX19jb25zdCBjaGFyICpf
X2ZpbGUsIF9fb2ZmX3QgX19sZW5ndGgpIDsKIyA4MjkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIg
MwpleHRlcm4gaW50IHRydW5jYXRlNjQgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZjY0X3Qg
X19sZW5ndGgpIDsKCgoKCmV4dGVybiBpbnQgZnRydW5jYXRlIChpbnQgX19mZCwgX19vZmZfdCBf
X2xlbmd0aCkgOwojIDg0NCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZnRy
dW5jYXRlNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19sZW5ndGgpIDsKCgoKCgpleHRlcm4gaW50
IGdldGR0YWJsZXNpemUgKHZvaWQpIDsKIyA4NTkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gaW50IGJyayAodm9pZCAqX19hZGRyKSA7CgoKCgoKZXh0ZXJuIHZvaWQgKnNicmsgKGlu
dHB0cl90IF9fZGVsdGEpIDsKIyA4ODAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g
bG9uZyBpbnQgc3lzY2FsbCAobG9uZyBpbnQgX19zeXNubywgLi4uKSA7CiMgOTAwICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBsb2NrZiAoaW50IF9fZmQsIGludCBfX2NtZCwg
X19vZmZfdCBfX2xlbikgOwojIDkxMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBp
bnQgbG9ja2Y2NCAoaW50IF9fZmQsIGludCBfX2NtZCwgX19vZmY2NF90IF9fbGVuKSA7CiMgOTMx
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBmZGF0YXN5bmMgKGludCBfX2Zp
bGRlcykgOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmNyeXB0IChfX2NvbnN0IGNoYXIgKl9fa2V5LCBf
X2NvbnN0IGNoYXIgKl9fc2FsdCkgOwoKCgpleHRlcm4gdm9pZCBlbmNyeXB0IChjaGFyICpfX2Js
b2NrLCBpbnQgX19lZGZsYWcpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgc3dhYiAoX19jb25zdCB2b2lk
ICpfX3Jlc3RyaWN0IF9fZnJvbSwgdm9pZCAqX19yZXN0cmljdCBfX3RvLAogICAgICAgICAgICAg
ICAgICBzc2l6ZV90IF9fbikgOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9f
cykgOwojIDk3NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgcHRocmVhZF9h
dGZvcmsgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAoKl9fcGFyZW50KSAodm9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKCpfX2NoaWxkKSAodm9pZCkpIDsKIyAxMjAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9n
Y2Mvc3lzdGVtLmgiIDIKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDEgMwojIDIy
ICIvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDMKIyAxICJpbmNsdWRlL2xpbWl0cy5oIiAxIDMK
IyAxMSAiaW5jbHVkZS9saW1pdHMuaCIgMwojIDEgImluY2x1ZGUvc3lzbGltaXRzLmgiIDEgMwoK
CgoKCgojIDEgImluY2x1ZGUvbGltaXRzLmgiIDEgMwojIDEzMCAiaW5jbHVkZS9saW1pdHMuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9saW1p
dHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNs
dWRlL2xpbWl0cy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgi
IDEgMwojIDEyNiAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy9sb2Nh
bF9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCIgMSAzCiMgMzcgIi91
c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAyIDMKIyAxMjcgIi91c3IvaW5jbHVkZS9iaXRz
L3Bvc2l4MV9saW0uaCIgMiAzCiMgMzEgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgyX2xpbS5oIiAxIDMKIyAzNSAiL3Vzci9pbmNsdWRl
L2xpbWl0cy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMSAz
CiMgMzUgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy94b3Blbl9saW0u
aCIgMiAzCiMgMzkgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgMTMxICJpbmNsdWRlL2xp
bWl0cy5oIiAyIDMKIyA4ICJpbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKIyAxMiAiaW5jbHVkZS9s
aW1pdHMuaCIgMiAzCiMgMjMgIi91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy9wYXJh
bS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMSAzCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxIDMKIyA1ICIvdXNyL2luY2x1ZGUvbGludXgvcGFyYW0u
aCIgMiAzCiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMiAzCiMgNDIgIi91c3IvaW5j
bHVkZS9zeXMvcGFyYW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMg
NDMgIi91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMiAzCiMgMTI0ICIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvZ2NjL3N5c3RlbS5oIiAyCgoKCiMgMSAiaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMg
MTI4ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3N5c3RlbS5oIiAyCiMgMTc1ICIvdXNy
L3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3N5c3RlbS5oIgojIDEgIi91c3IvaW5jbHVkZS9zeXMv
dGltZS5oIiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMK
CiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS90aW1lLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDIgMwojIDM4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzCiMgMzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3RpbWUuaCIgMSAzCiMgNDMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwojIDEx
NyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CiAgaW50
IHRtX21pbjsKICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9uOwogIGlu
dCB0bV95ZWFyOwogIGludCB0bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9pc2RzdDsK
CgogIGxvbmcgaW50IHRtX2dtdG9mZjsKICBfX2NvbnN0IGNoYXIgKnRtX3pvbmU7CgoKCgp9OwoK
CgoKc3RydWN0IGl0aW1lcnNwZWMKICB7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7
CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7CiAgfTsKCgpzdHJ1Y3Qgc2lnZXZlbnQ7CiMg
MTYyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBjbG9ja190IGNsb2NrICh2b2lkKSA7
CgoKZXh0ZXJuIHRpbWVfdCB0aW1lICh0aW1lX3QgKl9fdGltZXIpIDsKCgpleHRlcm4gZG91Ymxl
IGRpZmZ0aW1lICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApCiAgICAgICAgICAgICBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIHRpbWVfdCBta3RpbWUgKHN0cnVj
dCB0bSAqX190cCkgOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RyZnRpbWUgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKCmV4dGVybiBjaGFyICpzdHJwdGlt
ZSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIHN0cnVjdCB0bSAqX190cCkKICAgICAgICAg
ICAgOwoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGlt
ZXIpIDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190
aW1lcikgOwoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IgKF9fY29uc3QgdGltZV90ICpf
X3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0g
Kl9fcmVzdHJpY3QgX190cCkgOwoKCgpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWVfciAoX19j
b25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7CgoKCgpleHRlcm4gY2hhciAqYXNj
dGltZSAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4gY2hhciAqY3RpbWUgKF9f
Y29uc3QgdGltZV90ICpfX3RpbWVyKSA7CgoKCgoKCmV4dGVybiBjaGFyICphc2N0aW1lX3IgKF9f
Y29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgpleHRlcm4gY2hhciAqY3RpbWVfciAoX19jb25z
dCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
Kl9fcmVzdHJpY3QgX19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpfX3R6bmFtZVsyXTsKZXh0ZXJu
IGludCBfX2RheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsKCgoKCmV4dGVybiBj
aGFyICp0em5hbWVbMl07CgoKCmV4dGVybiB2b2lkIHR6c2V0ICh2b2lkKSA7CgoKCmV4dGVybiBp
bnQgZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCB0aW1lem9uZTsKCgoKCgpleHRlcm4gaW50IHN0
aW1lIChfX2NvbnN0IHRpbWVfdCAqX193aGVuKSA7CiMgMjcwICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAzCmV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4gdGlt
ZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3RwKSA7CgoKZXh0ZXJuIGludCBkeXNpemUgKGlu
dCBfX3llYXIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gaW50IG5h
bm9zbGVlcCAoX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxdWVzdGVkX3RpbWUsCiAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKSA7CgoKCmV4dGVy
biBpbnQgY2xvY2tfZ2V0cmVzIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVzcGVj
ICpfX3JlcykgOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZSAoY2xvY2tpZF90IF9fY2xvY2tf
aWQsIHN0cnVjdCB0aW1lc3BlYyAqX190cCkgOwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZSAo
Y2xvY2tpZF90IF9fY2xvY2tfaWQsIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RwKQogICAg
ICAgICAgICA7CgoKCmV4dGVybiBpbnQgY2xvY2tfbmFub3NsZWVwIChjbG9ja2lkX3QgX19jbG9j
a19pZCwgaW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0
cnVjdCB0aW1lc3BlYyAqX19yZXEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
dGltZXNwZWMgKl9fcmVtKSA7CgoKZXh0ZXJuIGludCBjbG9ja19nZXRjcHVjbG9ja2lkIChwaWRf
dCBfX3BpZCwgY2xvY2tpZF90ICpfX2Nsb2NrX2lkKSA7CgoKCgpleHRlcm4gaW50IHRpbWVyX2Ny
ZWF0ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc2lnZXZlbnQgKl9fcmVzdHJpY3QgX19ldnAsCiAgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lcl90ICpfX3Jlc3RyaWN0IF9fdGltZXJpZCkgOwoKCmV4dGVybiBpbnQgdGltZXJfZGVsZXRl
ICh0aW1lcl90IF9fdGltZXJpZCkgOwoKCmV4dGVybiBpbnQgdGltZXJfc2V0dGltZSAodGltZXJf
dCBfX3RpbWVyaWQsIGludCBfX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgc3RydWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJpY3QgX192YWx1ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX292YWx1ZSkgOwoKCmV4
dGVybiBpbnQgdGltZXJfZ2V0dGltZSAodGltZXJfdCBfX3RpbWVyaWQsIHN0cnVjdCBpdGltZXJz
cGVjICpfX3ZhbHVlKQogICAgICAgICAgICA7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXRvdmVycnVu
ICh0aW1lcl90IF9fdGltZXJpZCkgOwojIDM0MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpleHRl
cm4gaW50IGdldGRhdGVfZXJyOwoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdldGRhdGUgKF9fY29u
c3QgY2hhciAqX19zdHJpbmcpIDsKIyAzNTYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJu
IGludCBnZXRkYXRlX3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3N0cmluZywKICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3Jlc2J1ZnApIDsKIyAyNSAi
L3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA2NCAiL3Vzci9pbmNsdWRlL2Jp
dHMvdGltZS5oIiAyIDMKCgoKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7
CiAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyAyOSAiL3Vzci9pbmNsdWRlL3N5cy90
aW1lLmgiIDIgMwojIDUxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXpv
bmUKICB7CiAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICBpbnQgdHpfZHN0dGltZTsKICB9OwoK
CnR5cGVkZWYgc3RydWN0IHRpbWV6b25lICpfX3RpbWV6b25lX3B0cl90OwojIDY4ICIvdXNyL2lu
Y2x1ZGUvc3lzL3RpbWUuaCIgMwpleHRlcm4gaW50IGdldHRpbWVvZmRheSAoc3RydWN0IHRpbWV2
YWwgKl9fcmVzdHJpY3QgX190diwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fdGltZXpvbmVf
cHRyX3QgX19yZXN0cmljdCBfX3R6KSA7CgoKCmV4dGVybiBpbnQgc2V0dGltZW9mZGF5IChfX2Nv
bnN0IHN0cnVjdCB0aW1ldmFsICpfX3R2LAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBzdHJ1Y3QgdGltZXpvbmUgKl9fdHopIDsKCgoKCgpleHRlcm4gaW50IGFkanRpbWUgKF9fY29u
c3Qgc3RydWN0IHRpbWV2YWwgKl9fZGVsdGEsCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRp
bWV2YWwgKl9fb2xkZGVsdGEpIDsKCgoKZW51bSBfX2l0aW1lcl93aGljaAogIHsKCiAgICBJVElN
RVJfUkVBTCA9IDAsCgoKICAgIElUSU1FUl9WSVJUVUFMID0gMSwKCgoKICAgIElUSU1FUl9QUk9G
ID0gMgoKICB9OwoKCgpzdHJ1Y3QgaXRpbWVydmFsCiAgewoKICAgIHN0cnVjdCB0aW1ldmFsIGl0
X2ludGVydmFsOwoKICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwogIH07CgoKdHlwZWRlZiBl
bnVtIF9faXRpbWVyX3doaWNoIF9faXRpbWVyX3doaWNoX3Q7CgoKCgoKCmV4dGVybiBpbnQgZ2V0
aXRpbWVyIChfX2l0aW1lcl93aGljaF90IF9fd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgaXRpbWVydmFsICpfX3ZhbHVlKSA7CgoKCgpleHRlcm4gaW50IHNldGl0aW1lciAoX19p
dGltZXJfd2hpY2hfdCBfX3doaWNoLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1
Y3QgaXRpbWVydmFsICpfX3Jlc3RyaWN0IF9fbmV3LAogICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGl0aW1lcnZhbCAqX19yZXN0cmljdCBfX29sZCkgOwoKCgpleHRlcm4gaW50IHV0aW1lcyAo
X19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3Qgc3RydWN0IHRpbWV2YWwgX190dnBbMl0pCiAg
ICAgICAgICAgIDsKIyAxNzYgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mvc3lzdGVtLmgi
IDIKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAxNzcgIi91c3Ivc3JjL2djYy9nY2Mt
Y3ZzLTMuMC9nY2Mvc3lzdGVtLmgiIDIKIyAxODggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9n
Y2Mvc3lzdGVtLmgiCiMgMSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDEgMwojIDI2ICIvdXNyL2lu
Y2x1ZGUvZmNudGwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAi
L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDIgMwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Zj
bnRsLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIg
MiAzCiMgMTEyICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC5oIiAzCnN0cnVjdCBmbG9jawogIHsK
ICAgIHNob3J0IGludCBsX3R5cGU7CiAgICBzaG9ydCBpbnQgbF93aGVuY2U7CgogICAgX19vZmZf
dCBsX3N0YXJ0OwogICAgX19vZmZfdCBsX2xlbjsKCgoKCiAgICBfX3BpZF90IGxfcGlkOwogIH07
CgoKc3RydWN0IGZsb2NrNjQKICB7CiAgICBzaG9ydCBpbnQgbF90eXBlOwogICAgc2hvcnQgaW50
IGxfd2hlbmNlOwogICAgX19vZmY2NF90IGxfc3RhcnQ7CiAgICBfX29mZjY0X3QgbF9sZW47CiAg
ICBfX3BpZF90IGxfcGlkOwogIH07CiMgMzQgIi91c3IvaW5jbHVkZS9mY250bC5oIiAyIDMKCgoK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMv
c3RhdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2lu
Y2x1ZGUvc3lzL3N0YXQuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEg
MwojIDI5ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMSAzCiMgMzMgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyA5OCAiL3Vz
ci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGF0LmgiIDEg
MwojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy9zdGF0LmgiIDMKc3RydWN0IHN0YXQKICB7CiAgICBf
X2Rldl90IHN0X2RldjsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3BhZDE7CgogICAgX19pbm9f
dCBzdF9pbm87CgoKCiAgICBfX21vZGVfdCBzdF9tb2RlOwogICAgX19ubGlua190IHN0X25saW5r
OwogICAgX191aWRfdCBzdF91aWQ7CiAgICBfX2dpZF90IHN0X2dpZDsKICAgIF9fZGV2X3Qgc3Rf
cmRldjsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3BhZDI7CgogICAgX19vZmZfdCBzdF9zaXpl
OwoKCgogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6ZTsKCgogICAgX19ibGtjbnRfdCBzdF9ibG9j
a3M7CgoKCiAgICBfX3RpbWVfdCBzdF9hdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51
c2VkMTsKICAgIF9fdGltZV90IHN0X210aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVz
ZWQyOwogICAgX190aW1lX3Qgc3RfY3RpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNl
ZDM7CgogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ0OwogICAgdW5zaWduZWQgbG9uZyBp
bnQgX191bnVzZWQ1OwoKCgogIH07CgoKc3RydWN0IHN0YXQ2NAogIHsKICAgIF9fZGV2X3Qgc3Rf
ZGV2OwogICAgdW5zaWduZWQgaW50IF9fcGFkMTsKCiAgICBfX2lub190IF9fc3RfaW5vOwogICAg
X19tb2RlX3Qgc3RfbW9kZTsKICAgIF9fbmxpbmtfdCBzdF9ubGluazsKICAgIF9fdWlkX3Qgc3Rf
dWlkOwogICAgX19naWRfdCBzdF9naWQ7CiAgICBfX2Rldl90IHN0X3JkZXY7CiAgICB1bnNpZ25l
ZCBpbnQgX19wYWQyOwogICAgX19vZmY2NF90IHN0X3NpemU7CiAgICBfX2Jsa3NpemVfdCBzdF9i
bGtzaXplOwoKICAgIF9fYmxrY250NjRfdCBzdF9ibG9ja3M7CiAgICBfX3RpbWVfdCBzdF9hdGlt
ZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMTsKICAgIF9fdGltZV90IHN0X210aW1l
OwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQyOwogICAgX190aW1lX3Qgc3RfY3RpbWU7
CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDM7CiAgICBfX2lubzY0X3Qgc3RfaW5vOwog
IH07CiMgOTkgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyAxOTkgIi91c3IvaW5jbHVk
ZS9zeXMvc3RhdC5oIiAzCmV4dGVybiBpbnQgc3RhdCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZmlsZSwKICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBfX2J1Zikg
OwoKCgpleHRlcm4gaW50IGZzdGF0IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fYnVmKSA7CiMg
MjE4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IHN0YXQ2NCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0
NjQgKl9fcmVzdHJpY3QgX19idWYpIDsKZXh0ZXJuIGludCBmc3RhdDY0IChpbnQgX19mZCwgc3Ry
dWN0IHN0YXQ2NCAqX19idWYpIDsKCgoKCgoKZXh0ZXJuIGludCBsc3RhdCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fcmVz
dHJpY3QgX19idWYpIDsKIyAyNDAgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzCmV4dGVybiBp
bnQgbHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgoKCmV4dGVybiBp
bnQgY2htb2QgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUpIDsKCgoKZXh0
ZXJuIGludCBmY2htb2QgKGludCBfX2ZkLCBfX21vZGVfdCBfX21vZGUpIDsKCgoKCgpleHRlcm4g
X19tb2RlX3QgdW1hc2sgKF9fbW9kZV90IF9fbWFzaykgOwoKCgoKZXh0ZXJuIF9fbW9kZV90IGdl
dHVtYXNrICh2b2lkKSA7CgoKCmV4dGVybiBpbnQgbWtkaXIgKF9fY29uc3QgY2hhciAqX19wYXRo
LCBfX21vZGVfdCBfX21vZGUpIDsKCgoKCgpleHRlcm4gaW50IG1rbm9kIChfX2NvbnN0IGNoYXIg
Kl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLCBfX2Rldl90IF9fZGV2KQogICAgICAgICAgICA7CgoK
CgpleHRlcm4gaW50IG1rZmlmbyAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9k
ZSkgOwojIDMwNSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBfX2Z4c3Rh
dCAoaW50IF9fdmVyLCBpbnQgX19maWxkZXMsIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSA7CmV4
dGVybiBpbnQgX194c3RhdCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYpIDsKZXh0ZXJuIGludCBf
X2x4c3RhdCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSA7CiMgMzI5ICIvdXNyL2luY2x1ZGUv
c3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IF9fZnhzdGF0NjQgKGludCBfX3ZlciwgaW50IF9fZmls
ZGVzLCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRfYnVmKQogICAgICAgICAgICA7CmV4dGVybiBpbnQg
X194c3RhdDY0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpIDsKZXh0ZXJuIGludCBfX2x4
c3RhdDY0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRfYnVmKSA7CgpleHRlcm4gaW50IF9feG1r
bm9kIChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUsCiAg
ICAgICAgICAgICAgICAgICAgIF9fZGV2X3QgKl9fZGV2KSA7CgoKCgpleHRlcm4gX19pbmxpbmVf
XyBpbnQgc3RhdCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJuIF9feHN0YXQgKDMsIF9fcGF0
aCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBsc3RhdCAoX19jb25zdCBj
aGFyICpfX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9f
c3RhdGJ1ZikKewogIHJldHVybiBfX2x4c3RhdCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoK
ZXh0ZXJuIF9faW5saW5lX18gaW50IGZzdGF0IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fc3Rh
dGJ1ZikKewogIHJldHVybiBfX2Z4c3RhdCAoMywgX19mZCwgX19zdGF0YnVmKTsKfQoKCmV4dGVy
biBfX2lubGluZV9fIGludCBta25vZCAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9f
bW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Rldl90IF9fZGV2KQp7CiAgcmV0
dXJuIF9feG1rbm9kICgxLCBfX3BhdGgsIF9fbW9kZSwgJl9fZGV2KTsKfQoKCgoKCmV4dGVybiBf
X2lubGluZV9fIGludCBzdGF0NjQgKF9fY29uc3QgY2hhciAqX19wYXRoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX194
c3RhdDY0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQg
bHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX19seHN0YXQ2NCAoMywg
X19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IGZzdGF0NjQgKGlu
dCBfX2ZkLCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX19meHN0YXQ2NCAo
MywgX19mZCwgX19zdGF0YnVmKTsKfQojIDM4ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzCiMg
NjAgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzCmV4dGVybiBpbnQgX19mY250bCAoaW50IF9fZmQs
IGludCBfX2NtZCwgLi4uKSA7CmV4dGVybiBpbnQgZmNudGwgKGludCBfX2ZkLCBpbnQgX19jbWQs
IC4uLikgOwoKCgoKZXh0ZXJuIGludCBfX29wZW4gKF9fY29uc3QgY2hhciAqX19maWxlLCBpbnQg
X19vZmxhZywgLi4uKSA7CgpleHRlcm4gaW50IG9wZW4gKF9fY29uc3QgY2hhciAqX19maWxlLCBp
bnQgX19vZmxhZywgLi4uKSA7CiMgNzggIi91c3IvaW5jbHVkZS9mY250bC5oIiAzCmV4dGVybiBp
bnQgb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikgOwoKCgoK
CgpleHRlcm4gaW50IGNyZWF0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19tb2Rl
KSA7CiMgOTUgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzCmV4dGVybiBpbnQgY3JlYXQ2NCAoX19j
b25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkgOwojIDEzMiAiL3Vzci9pbmNsdWRl
L2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBwb3NpeF9mYWR2aXNlIChpbnQgX19mZCwgX19vZmZfdCBf
X29mZnNldCwgc2l6ZV90IF9fbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Fk
dmlzZSkgOwojIDE0NCAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBwb3NpeF9m
YWR2aXNlNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIHNpemVfdCBfX2xlbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FkdmlzZSkgOwoKCgoKCmV4dGVybiBpbnQg
cG9zaXhfZmFsbG9jYXRlIChpbnQgX19mZCwgX19vZmZfdCBfX29mZnNldCwgc2l6ZV90IF9fbGVu
KSA7CiMgMTYyICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4gaW50IHBvc2l4X2ZhbGxv
Y2F0ZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBzaXplX3QgX19sZW4pCiAgICAg
ICAgICAgIDsKIyAxODkgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mvc3lzdGVtLmgiIDIK
IyAyMjYgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mvc3lzdGVtLmgiCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy93YWl0LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy93
YWl0LmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDMxICIv
dXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMiAzCiMgMTAyICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQu
aCIgMwp0eXBlZGVmIGVudW0KewogIFBfQUxMLAogIFBfUElELAogIFBfUEdJRAp9IGlkdHlwZV90
OwoKCgoKCmV4dGVybiBfX3BpZF90IF9fd2FpdCAoX19XQUlUX1NUQVRVUyBfX3N0YXRfbG9jKSA7
CmV4dGVybiBfX3BpZF90IHdhaXQgKF9fV0FJVF9TVEFUVVMgX19zdGF0X2xvYykgOwojIDEzNCAi
L3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMKZXh0ZXJuIF9fcGlkX3Qgd2FpdHBpZCAoX19waWRf
dCBfX3BpZCwgaW50ICpfX3N0YXRfbG9jLCBpbnQgX19vcHRpb25zKSA7CgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvc2lnaW5mby5oIiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnaW5m
by5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzCiMgMjUgIi91c3Iv
aW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMiAzCgoKCgoKCnR5cGVkZWYgdW5pb24gc2lndmFsCiAg
ewogICAgaW50IHNpdmFsX2ludDsKICAgIHZvaWQgKnNpdmFsX3B0cjsKICB9IHNpZ3ZhbF90Owoj
IDQ0ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qgc2lnaW5m
bwogIHsKICAgIGludCBzaV9zaWdubzsKICAgIGludCBzaV9lcnJubzsKCiAgICBpbnQgc2lfY29k
ZTsKCiAgICB1bmlvbgogICAgICB7CiAgICAgICAgaW50IF9wYWRbKCgxMjggLyBzaXplb2YgKGlu
dCkpIC0gMyldOwoKCiAgICAgICAgc3RydWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIF9fcGlk
X3Qgc2lfcGlkOwogICAgICAgICAgICBfX3VpZF90IHNpX3VpZDsKICAgICAgICAgIH0gX2tpbGw7
CgoKICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgdW5zaWduZWQgaW50IF90
aW1lcjE7CiAgICAgICAgICAgIHVuc2lnbmVkIGludCBfdGltZXIyOwogICAgICAgICAgfSBfdGlt
ZXI7CgoKICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgX19waWRfdCBzaV9w
aWQ7CiAgICAgICAgICAgIF9fdWlkX3Qgc2lfdWlkOwogICAgICAgICAgICBzaWd2YWxfdCBzaV9z
aWd2YWw7CiAgICAgICAgICB9IF9ydDsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAg
ICAgICAgICBfX3BpZF90IHNpX3BpZDsKICAgICAgICAgICAgX191aWRfdCBzaV91aWQ7CiAgICAg
ICAgICAgIGludCBzaV9zdGF0dXM7CiAgICAgICAgICAgIF9fY2xvY2tfdCBzaV91dGltZTsKICAg
ICAgICAgICAgX19jbG9ja190IHNpX3N0aW1lOwogICAgICAgICAgfSBfc2lnY2hsZDsKCgogICAg
ICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICB2b2lkICpzaV9hZGRyOwogICAgICAg
ICAgfSBfc2lnZmF1bHQ7CgoKICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAg
bG9uZyBpbnQgc2lfYmFuZDsKICAgICAgICAgICAgaW50IHNpX2ZkOwogICAgICAgICAgfSBfc2ln
cG9sbDsKICAgICAgfSBfc2lmaWVsZHM7CiAgfSBzaWdpbmZvX3Q7CiMgMTIxICIvdXNyL2luY2x1
ZGUvYml0cy9zaWdpbmZvLmgiIDMKZW51bQp7CiAgU0lfU0lHSU8gPSAtNSwKCiAgU0lfQVNZTkNJ
TywKCiAgU0lfTUVTR1EsCgogIFNJX1RJTUVSLAoKICBTSV9RVUVVRSwKCiAgU0lfVVNFUiwKCiAg
U0lfS0VSTkVMID0gMHg4MAoKfTsKCgoKZW51bQp7CiAgSUxMX0lMTE9QQyA9IDEsCgogIElMTF9J
TExPUE4sCgogIElMTF9JTExBRFIsCgogIElMTF9JTExUUlAsCgogIElMTF9QUlZPUEMsCgogIElM
TF9QUlZSRUcsCgogIElMTF9DT1BST0MsCgogIElMTF9CQURTVEsKCn07CgoKZW51bQp7CiAgRlBF
X0lOVERJViA9IDEsCgogIEZQRV9JTlRPVkYsCgogIEZQRV9GTFRESVYsCgogIEZQRV9GTFRPVkYs
CgogIEZQRV9GTFRVTkQsCgogIEZQRV9GTFRSRVMsCgogIEZQRV9GTFRJTlYsCgogIEZQRV9GTFRT
VUIKCn07CgoKZW51bQp7CiAgU0VHVl9NQVBFUlIgPSAxLAoKICBTRUdWX0FDQ0VSUgoKfTsKCgpl
bnVtCnsKICBCVVNfQURSQUxOID0gMSwKCiAgQlVTX0FEUkVSUiwKCiAgQlVTX09CSkVSUgoKfTsK
CgplbnVtCnsKICBUUkFQX0JSS1BUID0gMSwKCiAgVFJBUF9UUkFDRQoKfTsKCgplbnVtCnsKICBD
TERfRVhJVEVEID0gMSwKCiAgQ0xEX0tJTExFRCwKCiAgQ0xEX0RVTVBFRCwKCiAgQ0xEX1RSQVBQ
RUQsCgogIENMRF9TVE9QUEVELAoKICBDTERfQ09OVElOVUVECgp9OwoKCmVudW0KewogIFBPTExf
SU4gPSAxLAoKICBQT0xMX09VVCwKCiAgUE9MTF9NU0csCgogIFBPTExfRVJSLAoKICBQT0xMX1BS
SSwKCiAgUE9MTF9IVVAKCn07CiMgMTM5ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMiAzCiMg
MTQ3ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwpleHRlcm4gaW50IHdhaXRpZCAoaWR0eXBl
X3QgX19pZHR5cGUsIF9faWRfdCBfX2lkLCBzaWdpbmZvX3QgKl9faW5mb3AsCiAgICAgICAgICAg
ICAgICAgICBpbnQgX19vcHRpb25zKSA7CgoKCgoKc3RydWN0IHJ1c2FnZTsKCgoKCgoKZXh0ZXJu
IF9fcGlkX3Qgd2FpdDMgKF9fV0FJVF9TVEFUVVMgX19zdGF0X2xvYywgaW50IF9fb3B0aW9ucywK
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydXNhZ2UgKiBfX3VzYWdlKSA7CgoKCgoKc3Ry
dWN0IHJ1c2FnZTsKCgpleHRlcm4gX19waWRfdCB3YWl0NCAoX19waWRfdCBfX3BpZCwgX19XQUlU
X1NUQVRVUyBfX3N0YXRfbG9jLCBpbnQgX19vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IHJ1c2FnZSAqX191c2FnZSkgOwojIDIyNyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4w
L2djYy9zeXN0ZW0uaCIgMgojIDI5NyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9zeXN0
ZW0uaCIKIyAxICIvdXNyL2luY2x1ZGUvbWFsbG9jLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUv
bWFsbG9jLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjQgIi91c3Iv
aW5jbHVkZS9tYWxsb2MuaCIgMiAzCiMgNDQgIi91c3IvaW5jbHVkZS9tYWxsb2MuaCIgMwojIDEg
ImluY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0NyAiaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVm
IGludCBwdHJkaWZmX3Q7CiMgNDUgIi91c3IvaW5jbHVkZS9tYWxsb2MuaCIgMiAzCiMgMTExICIv
dXNyL2luY2x1ZGUvbWFsbG9jLmgiIDMKZXh0ZXJuIGludCBfX21hbGxvY19pbml0aWFsaXplZDsK
CgoKCgoKCmV4dGVybiB2b2lkICogbWFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9f
ICgoX19tYWxsb2NfXykpOwoKCmV4dGVybiB2b2lkICogY2FsbG9jIChzaXplX3QgX19ubWVtYiwg
c2l6ZV90IF9fc2l6ZSkKICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4
dGVybiB2b2lkICogcmVhbGxvYyAodm9pZCAqIF9fcHRyLCBzaXplX3QgX19zaXplKQoKICAgICAg
IF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKZXh0ZXJuIHZvaWQgZnJlZSAodm9pZCAq
IF9fcHRyKSA7CgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKiBfX3B0cikgOwoKCmV4dGVybiB2
b2lkICogbWVtYWxpZ24gKHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkgOwoKCmV4
dGVybiB2b2lkICogdmFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxs
b2NfXykpOwoKCgpleHRlcm4gdm9pZCAqIHB2YWxsb2MgKHNpemVfdCBfX3NpemUpCiAgICAgICBf
X2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCAqICgqX19tb3JlY29y
ZSkgKHB0cmRpZmZfdCBfX3NpemUpOwoKCmV4dGVybiB2b2lkICogX19kZWZhdWx0X21vcmVjb3Jl
IChwdHJkaWZmX3QgX19zaXplKQogICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsK
CgpzdHJ1Y3QgbWFsbGluZm8gewogIGludCBhcmVuYTsKICBpbnQgb3JkYmxrczsKICBpbnQgc21i
bGtzOwogIGludCBoYmxrczsKICBpbnQgaGJsa2hkOwogIGludCB1c21ibGtzOwogIGludCBmc21i
bGtzOwogIGludCB1b3JkYmxrczsKICBpbnQgZm9yZGJsa3M7CiAgaW50IGtlZXBjb3N0Owp9OwoK
CmV4dGVybiBzdHJ1Y3QgbWFsbGluZm8gbWFsbGluZm8gKHZvaWQpIDsKIyAxOTUgIi91c3IvaW5j
bHVkZS9tYWxsb2MuaCIgMwpleHRlcm4gaW50IG1hbGxvcHQgKGludCBfX3BhcmFtLCBpbnQgX192
YWwpIDsKCgoKZXh0ZXJuIGludCBtYWxsb2NfdHJpbSAoc2l6ZV90IF9fcGFkKSA7CgoKCmV4dGVy
biBzaXplX3QgbWFsbG9jX3VzYWJsZV9zaXplICh2b2lkICogX19wdHIpIDsKCgpleHRlcm4gdm9p
ZCBtYWxsb2Nfc3RhdHMgKHZvaWQpIDsKCgpleHRlcm4gdm9pZCAqIG1hbGxvY19nZXRfc3RhdGUg
KHZvaWQpIDsKCgoKZXh0ZXJuIGludCBtYWxsb2Nfc2V0X3N0YXRlICh2b2lkICogX19wdHIpIDsK
CgoKCgpleHRlcm4gdm9pZCAoKl9fbWFsbG9jX2luaXRpYWxpemVfaG9vaykgKHZvaWQpOwoKZXh0
ZXJuIHZvaWQgKCpfX2ZyZWVfaG9vaykgKHZvaWQgKiBfX3B0ciwgX19jb25zdCB2b2lkICopOwoK
ZXh0ZXJuIHZvaWQgKiAoKl9fbWFsbG9jX2hvb2spIChzaXplX3QgX19zaXplLCBfX2NvbnN0IHZv
aWQgKik7CgpleHRlcm4gdm9pZCAqICgqX19yZWFsbG9jX2hvb2spICh2b2lkICogX19wdHIsIHNp
emVfdCBfX3NpemUsIF9fY29uc3Qgdm9pZCAqKTsKCgpleHRlcm4gdm9pZCAqICgqX19tZW1hbGln
bl9ob29rKSAoc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fYWxpZ25tZW50LCBfX2NvbnN0IHZvaWQg
Kik7CgoKZXh0ZXJuIHZvaWQgKCpfX2FmdGVyX21vcmVjb3JlX2hvb2spICh2b2lkKTsKCgpleHRl
cm4gdm9pZCBfX21hbGxvY19jaGVja19pbml0ICh2b2lkKSA7CiMgMjk4ICIvdXNyL3NyYy9nY2Mv
Z2NjLWN2cy0zLjAvZ2NjL3N5c3RlbS5oIiAyCiMgMzczICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0z
LjAvZ2NjL3N5c3RlbS5oIgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAxIDMKIyAzNzQg
Ii91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mvc3lzdGVtLmgiIDIKIyA0ODIgIi91c3Ivc3Jj
L2djYy9nY2MtY3ZzLTMuMC9nY2Mvc3lzdGVtLmgiCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMt
My4wL2luY2x1ZGUvbGliaWJlcnR5LmgiIDEKIyAxNyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4w
L2luY2x1ZGUvbGliaWJlcnR5LmgiCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2luY2x1
ZGUvYW5zaWRlY2wuaCIgMQojIDE4ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvaW5jbHVkZS9s
aWJpYmVydHkuaCIgMgoKCgojIDEgImluY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIyICIvdXNyL3Ny
Yy9nY2MvZ2NjLWN2cy0zLjAvaW5jbHVkZS9saWJpYmVydHkuaCIgMgoKIyAxICJpbmNsdWRlL3N0
ZGFyZy5oIiAxIDMKIyAyNCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2luY2x1ZGUvbGliaWJl
cnR5LmgiIDIKCgoKCgpleHRlcm4gY2hhciAqKmJ1aWxkYXJndiAoY2hhciAqKSBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCBmcmVlYXJndiAoY2hhciAqKik7CgoK
CgpleHRlcm4gY2hhciAqKmR1cGFyZ3YgKGNoYXIgKiopIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSk7CiMgNTIgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9pbmNsdWRlL2xpYmliZXJ0eS5o
IgpleHRlcm4gY2hhciAqYmFzZW5hbWUgKGNvbnN0IGNoYXIgKik7CiMgNjIgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9pbmNsdWRlL2xpYmliZXJ0eS5oIgpleHRlcm4gY2hhciAqY29uY2F0IChj
b25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKZXh0ZXJu
IGludCBmZG1hdGNoIChpbnQgZmQxLCBpbnQgZmQyKTsKCgoKCmV4dGVybiBjaGFyICogZ2V0cHdk
ICh2b2lkKTsKCgoKZXh0ZXJuIGxvbmcgZ2V0X3J1bl90aW1lICh2b2lkKTsKCgoKZXh0ZXJuIGNo
YXIgKmNob29zZV90ZW1wX2Jhc2UgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7
CgoKCmV4dGVybiBjaGFyICptYWtlX3RlbXBfZmlsZSAoY29uc3QgY2hhciAqKSBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gY29uc3QgY2hhciAqc3BhY2VzIChpbnQgY291
bnQpOwoKCgoKZXh0ZXJuIGludCBlcnJub19tYXggKHZvaWQpOwoKCgoKZXh0ZXJuIGNvbnN0IGNo
YXIgKnN0cmVycm5vIChpbnQpOwoKCgpleHRlcm4gaW50IHN0cnRvZXJybm8gKGNvbnN0IGNoYXIg
Kik7CgoKCmV4dGVybiBjaGFyICp4c3RyZXJyb3IgKGludCk7CgoKCgpleHRlcm4gaW50IHNpZ25v
X21heCAodm9pZCk7CiMgMTIyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvaW5jbHVkZS9saWJp
YmVydHkuaCIKZXh0ZXJuIGNvbnN0IGNoYXIgKnN0cnNpZ25vIChpbnQpOwoKCgpleHRlcm4gaW50
IHN0cnRvc2lnbm8gKGNvbnN0IGNoYXIgKik7CgoKCmV4dGVybiBpbnQgeGF0ZXhpdCAodm9pZCAo
KmZuKSAodm9pZCkpOwoKCgpleHRlcm4gdm9pZCB4ZXhpdCAoaW50IHN0YXR1cykgX19hdHRyaWJ1
dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgpleHRlcm4gdm9pZCB4bWFsbG9jX3NldF9wcm9ncmFt
X25hbWUgKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIHZvaWQgeG1hbGxvY19mYWlsZWQgKHNpemVf
dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCmV4dGVybiB2b2lkICogeG1h
bGxvYyAoc2l6ZV90KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKCmV4dGVybiB2
b2lkICogeHJlYWxsb2MgKHZvaWQgKiwgc2l6ZV90KTsKCgoKCmV4dGVybiB2b2lkICogeGNhbGxv
YyAoc2l6ZV90LCBzaXplX3QpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4dGVy
biBjaGFyICp4c3RyZHVwIChjb25zdCBjaGFyICopIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f
KSk7CgoKCmV4dGVybiB2b2lkICogeG1lbWR1cCAoY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVf
dCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gY2hhciBfaGV4X3Zh
bHVlWzI1Nl07CmV4dGVybiB2b2lkIGhleF9pbml0ICh2b2lkKTsKIyAxODkgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9pbmNsdWRlL2xpYmliZXJ0eS5oIgpleHRlcm4gaW50IHBleGVjdXRlIChj
b25zdCBjaGFyICosIGNoYXIgKiBjb25zdCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg
Y2hhciAqKiwgY2hhciAqKiwgaW50KTsKCgoKCmV4dGVybiBpbnQgcHdhaXQgKGludCwgaW50ICos
IGludCk7CgoKCgpleHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIC4u
LikgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgpl
eHRlcm4gaW50IHZhc3ByaW50ZiAoY2hhciAqKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KQogIF9f
YXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwojIDQ4MyAiL3Vz
ci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9zeXN0ZW0uaCIgMgojIDUyNiAiL3Vzci9zcmMvZ2Nj
L2djYy1jdnMtMy4wL2djYy9zeXN0ZW0uaCIKZXh0ZXJuIHZvaWQgKl9fYnVpbHRpbl9hbGxvY2Eg
KHVuc2lnbmVkIGludCk7CiMgMjUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmMi
IDIKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5oIiAxCiMgMjUgIi91c3Iv
c3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmgiCnN0cnVjdCBmdW5jdGlvbjsKCiMgMSAiL3Vz
ci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9tYWNobW9kZS5oIiAxCiMgMjkgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuaCIKZW51bSBtYWNoaW5lX21vZGUgewojIDEgIi91
c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuZGVmIiAxCiMgNjcgIi91c3Ivc3Jj
L2djYy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuZGVmIgpWT0lEbW9kZSwKCkJJbW9kZSwKUUlt
b2RlLApISW1vZGUsClNJbW9kZSwKREltb2RlLApUSW1vZGUsCk9JbW9kZSwKCgoKClBRSW1vZGUs
ClBISW1vZGUsClBTSW1vZGUsClBESW1vZGUsCgpRRm1vZGUsCkhGbW9kZSwKVFFGbW9kZSwKU0Zt
b2RlLApERm1vZGUsClhGbW9kZSwKVEZtb2RlLAoKClFDbW9kZSwKSENtb2RlLApTQ21vZGUsCkRD
bW9kZSwKWENtb2RlLApUQ21vZGUsCgpDUUltb2RlLApDSEltb2RlLApDU0ltb2RlLApDREltb2Rl
LApDVEltb2RlLApDT0ltb2RlLAoKCgoKVjJRSW1vZGUsClYySEltb2RlLApWMlNJbW9kZSwKVjJE
SW1vZGUsCgpWNFFJbW9kZSwKVjRISW1vZGUsClY0U0ltb2RlLApWNERJbW9kZSwKClY4UUltb2Rl
LApWOEhJbW9kZSwKVjhTSW1vZGUsClY4REltb2RlLAoKVjE2UUltb2RlLAoKVjJTRm1vZGUsClYy
REZtb2RlLAoKVjRTRm1vZGUsClY0REZtb2RlLAoKVjhTRm1vZGUsClY4REZtb2RlLAoKCgpCTEtt
b2RlLAojIDE0OCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9tYWNobW9kZS5kZWYiCkND
bW9kZSwKCgpDQ0dDbW9kZSwgQ0NHT0Ntb2RlLCBDQ05PbW9kZSwgQ0NabW9kZSwgQ0NGUG1vZGUs
IENDRlBVbW9kZSwKIyAzMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9tYWNobW9kZS5o
IiAyCk1BWF9NQUNISU5FX01PREUgfTsKIyA0MSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2dj
Yy9tYWNobW9kZS5oIgpleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IG1vZGVfbmFtZVtdOwoKCmVu
dW0gbW9kZV9jbGFzcyB7IE1PREVfUkFORE9NLCBNT0RFX0lOVCwgTU9ERV9GTE9BVCwgTU9ERV9Q
QVJUSUFMX0lOVCwgTU9ERV9DQywKICAgICAgICAgICAgICAgICAgTU9ERV9DT01QTEVYX0lOVCwg
TU9ERV9DT01QTEVYX0ZMT0FULAogICAgICAgICAgICAgICAgICBNT0RFX1ZFQ1RPUl9JTlQsIE1P
REVfVkVDVE9SX0ZMT0FULAogICAgICAgICAgICAgICAgICBNQVhfTU9ERV9DTEFTU307CgoKCgpl
eHRlcm4gY29uc3QgZW51bSBtb2RlX2NsYXNzIG1vZGVfY2xhc3NbXTsKIyA4MCAiL3Vzci9zcmMv
Z2NjL2djYy1jdnMtMy4wL2djYy9tYWNobW9kZS5oIgpleHRlcm4gY29uc3QgdW5zaWduZWQgaW50
IG1vZGVfc2l6ZVtdOwoKCgoKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGludCBtb2RlX3VuaXRfc2l6
ZVtdOwojIDk2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL21hY2htb2RlLmgiCmV4dGVy
biBjb25zdCB1bnNpZ25lZCBpbnQgbW9kZV9iaXRzaXplW107CiMgMTA2ICIvdXNyL3NyYy9nY2Mv
Z2NjLWN2cy0zLjAvZ2NjL21hY2htb2RlLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBpbnQgbW9k
ZV9tYXNrX2FycmF5W107CiMgMTE3ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL21hY2ht
b2RlLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIG1vZGVfd2lkZXJfbW9kZVtdOwoKCgoK
CgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgbW9kZV9mb3Jfc2l6ZSAodW5zaWduZWQgaW50LCBl
bnVtIG1vZGVfY2xhc3MsIGludCk7CgoKCgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgc21hbGxl
c3RfbW9kZV9mb3Jfc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25l
ZCBpbnQsIGVudW0gbW9kZV9jbGFzcyk7CgoKCgoKZXh0ZXJuIGVudW0gbWFjaGluZV9tb2RlIGlu
dF9tb2RlX2Zvcl9tb2RlIChlbnVtIG1hY2hpbmVfbW9kZSk7CgoKCmV4dGVybiBlbnVtIG1hY2hp
bmVfbW9kZSBnZXRfYmVzdF9tb2RlIChpbnQsIGludCwgdW5zaWduZWQgaW50LCBlbnVtIG1hY2hp
bmVfbW9kZSwgaW50KTsKCgoKCmV4dGVybiB1bnNpZ25lZCBnZXRfbW9kZV9hbGlnbm1lbnQgKGVu
dW0gbWFjaGluZV9tb2RlKTsKCgoKCgpleHRlcm4gY29uc3QgZW51bSBtYWNoaW5lX21vZGUgY2xh
c3NfbmFycm93ZXN0X21vZGVbXTsKCgoKCgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgYnl0ZV9t
b2RlOwpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgd29yZF9tb2RlOwpleHRlcm4gZW51bSBtYWNo
aW5lX21vZGUgcHRyX21vZGU7CiMgMjggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRs
LmgiIDIKCgoKCgoKCnVuaW9uIHRyZWVfbm9kZTsKCgoKCgplbnVtIHJ0eF9jb2RlIHsKCgojIDEg
Ii91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIgMQojIDcwICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiClVOS05PV04gLAoKCgpOSUwgLAoKCgoKCgpFWFBS
X0xJU1QgLAoKCgpJTlNOX0xJU1QgLAojIDEyNCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2dj
Yy9ydGwuZGVmIgpNQVRDSF9PUEVSQU5EICwKCgoKCgoKTUFUQ0hfU0NSQVRDSCAsCgoKCgpNQVRD
SF9EVVAgLAoKCgoKCgoKTUFUQ0hfT1BFUkFUT1IgLAojIDE1MyAiL3Vzci9zcmMvZ2NjL2djYy1j
dnMtMy4wL2djYy9ydGwuZGVmIgpNQVRDSF9QQVJBTExFTCAsCgoKCgpNQVRDSF9PUF9EVVAgLAoK
CgoKTUFUQ0hfUEFSX0RVUCAsCgoKCgpNQVRDSF9JTlNOICwKIyAxODcgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKREVGSU5FX0lOU04gLAoKCgoKCgoKREVGSU5FX1BFRVBI
T0xFICwKIyAyMDUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKREVGSU5F
X1NQTElUICwKIyAyMzIgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKREVG
SU5FX0lOU05fQU5EX1NQTElUICwKCgoKREVGSU5FX1BFRVBIT0xFMiAsCgoKCkRFRklORV9DT01C
SU5FICwKIyAyNTIgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKREVGSU5F
X0VYUEFORCAsCiMgMjY4ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCkRF
RklORV9ERUxBWSAsCiMgMzA5ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYi
CkRFRklORV9GVU5DVElPTl9VTklUICwKCgpERUZJTkVfQVNNX0FUVFJJQlVURVMgLAojIDMyNSAi
L3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgpERUZJTkVfQ09ORF9FWEVDICwK
CgoKCgpTRVFVRU5DRSAsCgoKQUREUkVTUyAsCiMgMzQ1ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0z
LjAvZ2NjL3J0bC5kZWYiCkRFRklORV9BVFRSICwKCgpBVFRSICwKCgoKCgoKClNFVF9BVFRSICwK
IyAzNzEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKU0VUX0FUVFJfQUxU
RVJOQVRJVkUgLAoKCgoKRVFfQVRUUiAsCiMgMzg2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAv
Z2NjL3J0bC5kZWYiCkFUVFJfRkxBRyAsCiMgMzk5ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAv
Z2NjL3J0bC5kZWYiCklOU04gLAoKCgpKVU1QX0lOU04gLAoKCgoKCgpDQUxMX0lOU04gLAoKCkJB
UlJJRVIgLAojIDQyMiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgpDT0RF
X0xBQkVMICwKCgoKCgoKTk9URSAsCiMgNDQyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2Nj
L3J0bC5kZWYiCkNPTkRfRVhFQyAsCgoKUEFSQUxMRUwgLAoKCgoKCgoKQVNNX0lOUFVUICwKIyA0
NjcgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKQVNNX09QRVJBTkRTICwK
IyA0NzggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKVU5TUEVDICwKCgpV
TlNQRUNfVk9MQVRJTEUgLAoKCgpBRERSX1ZFQyAsCiMgNTEwICIvdXNyL3NyYy9nY2MvZ2NjLWN2
cy0zLjAvZ2NjL3J0bC5kZWYiCkFERFJfRElGRl9WRUMgLAojIDUyMiAiL3Vzci9zcmMvZ2NjL2dj
Yy1jdnMtMy4wL2djYy9ydGwuZGVmIgpTRVQgLAoKCgoKVVNFICwKCgoKCkNMT0JCRVIgLAoKCgoK
CkNBTEwgLAoKCgpSRVRVUk4gLAoKCgoKClRSQVBfSUYgLAoKCgoKCgpDT05TVF9JTlQgLAojIDU2
NSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgpDT05TVF9ET1VCTEUgLAoK
CkNPTlNUX1NUUklORyAsCgoKCgoKQ09OU1QgLAoKCgpQQyAsCgoKVkFMVUUgLAojIDU5MCAiL3Vz
ci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgpSRUcgLAoKCgoKCgpTQ1JBVENIICwK
IyA2MDcgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKU1VCUkVHICwKIyA2
MjAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKU1RSSUNUX0xPV19QQVJU
ICwKCgoKCgpDT05DQVQgLAoKCgoKCk1FTSAsCgoKCgoKTEFCRUxfUkVGICwKCgoKCgpTWU1CT0xf
UkVGICwKCgoKCgoKQ0MwICwKIyA2NjAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRs
LmRlZiIKQUREUkVTU09GICwKIyA2NzggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRs
LmRlZiIKUVVFVUVEICwKIyA2OTAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRl
ZiIKSUZfVEhFTl9FTFNFICwKIyA2OTkgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRs
LmRlZiIKQ09ORCAsCgoKQ09NUEFSRSAsCgoKUExVUyAsCgoKTUlOVVMgLAoKCk5FRyAsCgpNVUxU
ICwKCgpESVYgLAoKTU9EICwKCgpVRElWICwKVU1PRCAsCgoKQU5EICwKCklPUiAsCgpYT1IgLAoK
Tk9UICwKCgoKCkFTSElGVCAsClJPVEFURSAsCkFTSElGVFJUICwKTFNISUZUUlQgLApST1RBVEVS
VCAsCgoKCgoKU01JTiAsClNNQVggLApVTUlOICwKVU1BWCAsCiMgNzU4ICIvdXNyL3NyYy9nY2Mv
Z2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiClBSRV9ERUMgLApQUkVfSU5DICwKUE9TVF9ERUMgLApQ
T1NUX0lOQyAsCiMgNzc1ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiClBS
RV9NT0RJRlkgLApQT1NUX01PRElGWSAsCgoKCk5FICwKRVEgLApHRSAsCkdUICwKTEUgLApMVCAs
CkdFVSAsCkdUVSAsCkxFVSAsCkxUVSAsCgoKVU5PUkRFUkVEICwKT1JERVJFRCAsCgoKVU5FUSAs
ClVOR0UgLApVTkdUICwKVU5MRSAsClVOTFQgLAoKCkxUR1QgLAoKCgoKU0lHTl9FWFRFTkQgLAoK
ClpFUk9fRVhURU5EICwKCgpUUlVOQ0FURSAsCgoKRkxPQVRfRVhURU5EICwKRkxPQVRfVFJVTkNB
VEUgLAoKCkZMT0FUICwKCgoKCgoKCkZJWCAsCgoKVU5TSUdORURfRkxPQVQgLAoKCgoKVU5TSUdO
RURfRklYICwKCgpBQlMgLAoKClNRUlQgLAoKCgoKRkZTICwKIyA4NTkgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKU0lHTl9FWFRSQUNUICwKCgpaRVJPX0VYVFJBQ1QgLAoK
CgoKSElHSCAsCgoKCkxPX1NVTSAsCiMgODg0ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2Nj
L3J0bC5kZWYiClJBTkdFX0lORk8gLAojIDg5OSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2dj
Yy9ydGwuZGVmIgpSQU5HRV9SRUcgLAoKCgoKClJBTkdFX1ZBUiAsCgoKClJBTkdFX0xJVkUgLAoK
CgoKQ09OU1RBTlRfUF9SVFggLAojIDkzNSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9y
dGwuZGVmIgpDQUxMX1BMQUNFSE9MREVSICwKCgoKCgoKVkVDX01FUkdFICwKCgoKCgpWRUNfU0VM
RUNUICwKCgoKClZFQ19DT05DQVQgLAoKCgpWRUNfQ09OU1QgLAoKCgoKClZFQ19EVVBMSUNBVEUg
LAoKClNTX1BMVVMgLAoKClVTX1BMVVMgLAoKClNTX01JTlVTICwKCgpVU19NSU5VUyAsCgoKU1Nf
VFJVTkNBVEUgLAoKClVTX1RSVU5DQVRFICwKIyA5OTUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMu
MC9nY2MvcnRsLmRlZiIKUEhJICwKIyA0NSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9y
dGwuaCIgMgoKCiAgTEFTVF9BTkRfVU5VU0VEX1JUWF9DT0RFfTsKCgoKCgoKZXh0ZXJuIGNvbnN0
IGludCBydHhfbGVuZ3RoW107CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBydHhfbmFtZVtd
OwoKCmV4dGVybiBjb25zdCBjaGFyICogY29uc3QgcnR4X2Zvcm1hdFtdOwoKCmV4dGVybiBjb25z
dCBjaGFyIHJ0eF9jbGFzc1tdOwoKCgoKdHlwZWRlZiBzdHJ1Y3QKewoKICB1bnNpZ25lZCBtaW5f
YWxpZ246IDg7CgogIHVuc2lnbmVkIGJhc2VfYWZ0ZXJfdmVjOiAxOwogIHVuc2lnbmVkIG1pbl9h
ZnRlcl92ZWM6IDE7CiAgdW5zaWduZWQgbWF4X2FmdGVyX3ZlYzogMTsKICB1bnNpZ25lZCBtaW5f
YWZ0ZXJfYmFzZTogMTsKICB1bnNpZ25lZCBtYXhfYWZ0ZXJfYmFzZTogMTsKCiAgdW5zaWduZWQg
b2Zmc2V0X3Vuc2lnbmVkOiAxOwogIHVuc2lnbmVkIDogMjsKICB1bnNpZ25lZCBzY2FsZSA6IDg7
Cn0gYWRkcl9kaWZmX3ZlY19mbGFnczsKCgoKdHlwZWRlZiB1bmlvbiBydHVuaW9uX2RlZgp7CiAg
aW50IHJ0d2ludDsKICBpbnQgcnRpbnQ7CiAgdW5zaWduZWQgaW50IHJ0dWludDsKICBjb25zdCBj
aGFyICpydHN0cjsKICBzdHJ1Y3QgcnR4X2RlZiAqcnR4OwogIHN0cnVjdCBydHZlY19kZWYgKnJ0
dmVjOwogIGVudW0gbWFjaGluZV9tb2RlIHJ0dHlwZTsKICBhZGRyX2RpZmZfdmVjX2ZsYWdzIHJ0
X2FkZHJfZGlmZl92ZWNfZmxhZ3M7CiAgc3RydWN0IGNzZWxpYl92YWxfc3RydWN0ICpydF9jc2Vs
aWI7CiAgc3RydWN0IGJpdG1hcF9oZWFkX2RlZiAqcnRiaXQ7CiAgdW5pb24gdHJlZV9ub2RlICpy
dHRyZWU7CiAgc3RydWN0IGJhc2ljX2Jsb2NrX2RlZiAqYmI7Cn0gcnR1bmlvbjsKCgoKdHlwZWRl
ZiBzdHJ1Y3QgcnR4X2RlZgp7CgogIGVudW0gcnR4X2NvZGUgY29kZTogMTY7CgoKICBlbnVtIG1h
Y2hpbmVfbW9kZSBtb2RlIDogODsKCgoKCiAgdW5zaWduZWQgaW50IGp1bXAgOiAxOwoKCiAgdW5z
aWduZWQgaW50IGNhbGwgOiAxOwojIDEyOSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9y
dGwuaCIKICB1bnNpZ25lZCBpbnQgdW5jaGFuZ2luZyA6IDE7CgoKCgoKCgogIHVuc2lnbmVkIGlu
dCB2b2xhdGlsIDogMTsKIyAxNTUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmgi
CiAgdW5zaWduZWQgaW50IGluX3N0cnVjdCA6IDE7CgoKCgoKCiAgdW5zaWduZWQgaW50IHVzZWQg
OiAxOwoKCgogIHVuc2lnbmVkIGludGVncmF0ZWQgOiAxOwojIDE3NSAiL3Vzci9zcmMvZ2NjL2dj
Yy1jdnMtMy4wL2djYy9ydGwuaCIKICB1bnNpZ25lZCBmcmFtZV9yZWxhdGVkIDogMTsKCgoKCiAg
cnR1bmlvbiBmbGRbMV07Cn0gKnJ0eDsKIyAyMDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9n
Y2MvcnRsLmgiCnR5cGVkZWYgc3RydWN0IHJ0dmVjX2RlZnsKICBpbnQgbnVtX2VsZW07CiAgc3Ry
dWN0IHJ0eF9kZWYgKmVsZW1bMV07Cn0gKnJ0dmVjOwojIDQyMiAiL3Vzci9zcmMvZ2NjL2djYy1j
dnMtMy4wL2djYy9ydGwuaCIKZW51bSByZWdfbm90ZQp7CgoKCiAgUkVHX0RFQUQgPSAxLAoKCiAg
UkVHX0lOQywKIyA0NDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmgiCiAgUkVH
X0VRVUlWLAoKCgoKICBSRUdfRVFVQUwsCgoKCgoKICBSRUdfV0FTXzAsCgoKCgoKICBSRUdfUkVU
VkFMLAoKCgoKICBSRUdfTElCQ0FMTCwKCgoKCgoKICBSRUdfTk9OTkVHLAoKCgogIFJFR19OT19D
T05GTElDVCwKCgogIFJFR19VTlVTRUQsCiMgNDg2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAv
Z2NjL3J0bC5oIgogIFJFR19DQ19TRVRURVIsIFJFR19DQ19VU0VSLAoKCgoKICBSRUdfTEFCRUws
CgoKCgoKICBSRUdfREVQX0FOVEksIFJFR19ERVBfT1VUUFVULAoKCgoKCiAgUkVHX0JSX1BST0Is
CgoKCgogIFJFR19FWEVDX0NPVU5ULAoKCgogIFJFR19OT0FMSUFTLAoKCgogIFJFR19TQVZFX0FS
RUEsCgoKCiAgUkVHX0JSX1BSRUQsCgoKCgogIFJFR19GUkFNRV9SRUxBVEVEX0VYUFIsCgoKCgog
IFJFR19FSF9DT05URVhULAoKCgoKCiAgUkVHX0VIX1JFR0lPTiwKCgoKCiAgUkVHX0VIX1JFVEhS
T1csCgoKICBSRUdfU0FWRV9OT1RFLAoKCgoKCiAgUkVHX01BWUJFX0RFQUQsCgoKICBSRUdfTk9S
RVRVUk4sCgoKCiAgUkVHX05PTl9MT0NBTF9HT1RPCn07CiMgNTY5ICIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvZ2NjL3J0bC5oIgpleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IHJlZ19ub3RlX25h
bWVbXTsKIyA2MjUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmgiCmVudW0gaW5z
bl9ub3RlCnsKCiAgTk9URV9JTlNOX0JJQVMgPSAtMTAwLAoKCgogIE5PVEVfSU5TTl9ERUxFVEVE
LAoKCgogIE5PVEVfSU5TTl9CTE9DS19CRUcsCiAgTk9URV9JTlNOX0JMT0NLX0VORCwKCgogIE5P
VEVfSU5TTl9MT09QX0JFRywKICBOT1RFX0lOU05fTE9PUF9FTkQsCgoKICBOT1RFX0lOU05fTE9P
UF9DT05ULAoKICBOT1RFX0lOU05fTE9PUF9WVE9QLAoKCgoKCgogIE5PVEVfSU5TTl9GVU5DVElP
Tl9FTkQsCgoKCiAgTk9URV9JTlNOX1NFVEpNUCwKCgogIE5PVEVfSU5TTl9QUk9MT0dVRV9FTkQs
CgoKICBOT1RFX0lOU05fRVBJTE9HVUVfQkVHLAoKCiAgTk9URV9JTlNOX0RFTEVURURfTEFCRUws
CgoKCgogIE5PVEVfSU5TTl9GVU5DVElPTl9CRUcsCgoKCiAgTk9URV9JTlNOX0VIX1JFR0lPTl9C
RUcsCiAgTk9URV9JTlNOX0VIX1JFR0lPTl9FTkQsCgoKCgogIE5PVEVfSU5TTl9SRVBFQVRFRF9M
SU5FX05VTUJFUiwKCgoKICBOT1RFX0lOU05fUkFOR0VfQkVHLAogIE5PVEVfSU5TTl9SQU5HRV9F
TkQsCgoKICBOT1RFX0lOU05fTElWRSwKCgogIE5PVEVfSU5TTl9CQVNJQ19CTE9DSywKCgoKICBO
T1RFX0lOU05fRVhQRUNURURfVkFMVUUsCgogIE5PVEVfSU5TTl9NQVgKfTsKCgoKZXh0ZXJuIGNv
bnN0IGNoYXIgKiBjb25zdCBub3RlX2luc25fbmFtZVtOT1RFX0lOU05fTUFYIC0gTk9URV9JTlNO
X0JJQVNdOwojIDExMjUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmgiCmV4dGVy
biBpbnQgcnR4X2VxdWFsX2Z1bmN0aW9uX3ZhbHVlX21hdHRlcnM7CgoKZXh0ZXJuIGludCBnZW5l
cmF0aW5nX2NvbmNhdF9wOwojIDExNDAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRs
LmgiCmV4dGVybiBpbnQgZXhhY3RfbG9nMl93aWRlICh1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50
IGZsb29yX2xvZzJfd2lkZSAodW5zaWduZWQgaW50KTsKCgpleHRlcm4gaW50IGNlaWxfbG9nMiAo
dW5zaWduZWQgaW50KTsKCgoKCgoKCmV4dGVybiB2b2lkIHNldF9zdGFja19jaGVja19saWJmdW5j
IChydHgpOwpleHRlcm4gaW50IHRydW5jX2ludF9mb3JfbW9kZSAoaW50LCBlbnVtIG1hY2hpbmVf
bW9kZSk7CgpleHRlcm4gcnR4IHBsdXNfY29uc3RhbnRfd2lkZSAocnR4LCBpbnQpOwpleHRlcm4g
cnR4IHBsdXNfY29uc3RhbnRfZm9yX291dHB1dF93aWRlIChydHgsIGludCk7CmV4dGVybiB2b2lk
IG9wdGltaXplX3NhdmVfYXJlYV9hbGxvY2EgKHJ0eCk7CgoKZXh0ZXJuIHJ0eCBnZW5fcnR4IChl
bnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSwgLi4uKTsKCmV4dGVybiBydHZlYyBnZW5f
cnR2ZWMgKGludCwgLi4uKTsKCgpleHRlcm4gY2hhciAqcGVybWFsbG9jIChpbnQpOwpleHRlcm4g
cnR4IHJ0eF9hbGxvYyAoZW51bSBydHhfY29kZSk7CmV4dGVybiBydHZlYyBydHZlY19hbGxvYyAo
aW50KTsKZXh0ZXJuIHJ0eCBjb3B5X2luc25fMSAocnR4KTsKZXh0ZXJuIHJ0eCBjb3B5X2luc24g
KHJ0eCk7CgoKZXh0ZXJuIHJ0eCBjb3B5X3J0eCAocnR4KTsKCgpleHRlcm4gcnR4IGNvcHlfcnR4
X2lmX3NoYXJlZCAocnR4KTsKCgpleHRlcm4gcnR4IGNvcHlfbW9zdF9ydHggKHJ0eCwgcnR4KTsK
ZXh0ZXJuIHJ0eCBzaGFsbG93X2NvcHlfcnR4IChydHgpOwpleHRlcm4gaW50IHJ0eF9lcXVhbF9w
IChydHgsIHJ0eCk7CgoKZXh0ZXJuIHJ0dmVjIGdlbl9ydHZlY192IChpbnQsIHJ0eCAqKTsKZXh0
ZXJuIHJ0eCBnZW5fcmVnX3J0eCAoZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gcnR4IGdlbl9s
YWJlbF9ydHggKHZvaWQpOwpleHRlcm4gcnR4IGdlbl9sb3dwYXJ0X2NvbW1vbiAoZW51bSBtYWNo
aW5lX21vZGUsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2xvd3BhcnQgKGVudW0gbWFjaGluZV9tb2Rl
LCBydHgpOwoKCmV4dGVybiBydHggZ2VuX2xvd3BhcnRfaWZfcG9zc2libGUgKGVudW0gbWFjaGlu
ZV9tb2RlLCBydHgpOwoKCmV4dGVybiBydHggZ2VuX2hpZ2hwYXJ0IChlbnVtIG1hY2hpbmVfbW9k
ZSwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fcmVhbHBhcnQgKGVudW0gbWFjaGluZV9tb2RlLCBydHgp
OwpleHRlcm4gcnR4IGdlbl9pbWFncGFydCAoZW51bSBtYWNoaW5lX21vZGUsIHJ0eCk7CmV4dGVy
biBydHggb3BlcmFuZF9zdWJ3b3JkIChydHgsIHVuc2lnbmVkIGludCwgaW50LCBlbnVtIG1hY2hp
bmVfbW9kZSk7CgoKCmV4dGVybiBydHggb3BlcmFuZF9zdWJ3b3JkX2ZvcmNlIChydHgsIHVuc2ln
bmVkIGludCwgZW51bSBtYWNoaW5lX21vZGUpOwoKZXh0ZXJuIGludCBzdWJyZWdfbG93cGFydF9w
IChydHgpOwpleHRlcm4gcnR4IG1ha2Vfc2FmZV9mcm9tIChydHgsIHJ0eCk7CmV4dGVybiBydHgg
Y29udmVydF9tZW1vcnlfYWRkcmVzcyAoZW51bSBtYWNoaW5lX21vZGUsIHJ0eCk7CmV4dGVybiBy
dHggbWVtb3J5X2FkZHJlc3MgKGVudW0gbWFjaGluZV9tb2RlLCBydHgpOwpleHRlcm4gcnR4IGdl
dF9pbnNucyAodm9pZCk7CmV4dGVybiBjb25zdCBjaGFyICpnZXRfaW5zbl9uYW1lIChpbnQpOwpl
eHRlcm4gcnR4IGdldF9sYXN0X2luc24gKHZvaWQpOwpleHRlcm4gcnR4IGdldF9sYXN0X2luc25f
YW55d2hlcmUgKHZvaWQpOwpleHRlcm4gdm9pZCBzdGFydF9zZXF1ZW5jZSAodm9pZCk7CmV4dGVy
biB2b2lkIHB1c2hfdG9fc2VxdWVuY2UgKHJ0eCk7CmV4dGVybiB2b2lkIGVuZF9zZXF1ZW5jZSAo
dm9pZCk7CmV4dGVybiB2b2lkIHB1c2hfdG9fZnVsbF9zZXF1ZW5jZSAocnR4LCBydHgpOwpleHRl
cm4gdm9pZCBlbmRfZnVsbF9zZXF1ZW5jZSAocnR4KiwgcnR4Kik7CmV4dGVybiBydHggZ2VuX3Nl
cXVlbmNlICh2b2lkKTsKCgpleHRlcm4gcnR4IGltbWVkX2RvdWJsZV9jb25zdCAoaW50LCBpbnQs
IGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIHJ0eCBmb3JjZV9jb25zdF9tZW0gKGVudW0gbWFj
aGluZV9tb2RlLCBydHgpOwoKCmV4dGVybiBydHggZm9yY2VfcmVnIChlbnVtIG1hY2hpbmVfbW9k
ZSwgcnR4KTsKCgpleHRlcm4gcnR4IGdldF9wb29sX2NvbnN0YW50IChydHgpOwpleHRlcm4gZW51
bSBtYWNoaW5lX21vZGUgZ2V0X3Bvb2xfbW9kZSAocnR4KTsKZXh0ZXJuIHJ0eCBnZXRfcG9vbF9j
b25zdGFudF9mb3JfZnVuY3Rpb24gKHN0cnVjdCBmdW5jdGlvbiAqLCBydHgpOwpleHRlcm4gZW51
bSBtYWNoaW5lX21vZGUgZ2V0X3Bvb2xfbW9kZV9mb3JfZnVuY3Rpb24gKHN0cnVjdCBmdW5jdGlv
biAqLCBydHgpOwpleHRlcm4gaW50IGdldF9wb29sX29mZnNldCAocnR4KTsKZXh0ZXJuIHJ0eCBz
aW1wbGlmeV9zdWJ0cmFjdGlvbiAocnR4KTsKCgpleHRlcm4gcnR4IGFzc2lnbl9zdGFja19sb2Nh
bCAoZW51bSBtYWNoaW5lX21vZGUsIGludCwgaW50KTsKCmV4dGVybiBydHggYXNzaWduX3N0YWNr
X3RlbXAgKGVudW0gbWFjaGluZV9tb2RlLCBpbnQsIGludCk7CgpleHRlcm4gcnR4IGFzc2lnbl90
ZW1wICh1bmlvbiB0cmVlX25vZGUgKiwgaW50LCBpbnQsIGludCk7CgoKZXh0ZXJuIHJ0eCBwcm90
ZWN0X2Zyb21fcXVldWUgKHJ0eCwgaW50KTsKZXh0ZXJuIHZvaWQgZW1pdF9xdWV1ZSAodm9pZCk7
CmV4dGVybiBydHggZW1pdF9tb3ZlX2luc24gKHJ0eCwgcnR4KTsKCgpleHRlcm4gcnR4IGVtaXRf
aW5zbl9iZWZvcmUgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBlbWl0X2p1bXBfaW5zbl9iZWZvcmUg
KHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBlbWl0X2NhbGxfaW5zbl9iZWZvcmUgKHJ0eCwgcnR4KTsK
ZXh0ZXJuIHJ0eCBlbWl0X2JhcnJpZXJfYmVmb3JlIChydHgpOwpleHRlcm4gcnR4IGVtaXRfbGFi
ZWxfYmVmb3JlIChydHgsIHJ0eCk7CmV4dGVybiBydHggZW1pdF9ub3RlX2JlZm9yZSAoaW50LCBy
dHgpOwpleHRlcm4gcnR4IGVtaXRfaW5zbl9hZnRlciAocnR4LCBydHgpOwpleHRlcm4gcnR4IGVt
aXRfanVtcF9pbnNuX2FmdGVyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZW1pdF9iYXJyaWVyX2Fm
dGVyIChydHgpOwpleHRlcm4gcnR4IGVtaXRfbGFiZWxfYWZ0ZXIgKHJ0eCwgcnR4KTsKZXh0ZXJu
IHJ0eCBlbWl0X25vdGVfYWZ0ZXIgKGludCwgcnR4KTsKZXh0ZXJuIHJ0eCBlbWl0X2xpbmVfbm90
ZV9hZnRlciAoY29uc3QgY2hhciAqLCBpbnQsIHJ0eCk7CmV4dGVybiBydHggZW1pdF9pbnNuIChy
dHgpOwpleHRlcm4gcnR4IGVtaXRfaW5zbnMgKHJ0eCk7CmV4dGVybiBydHggZW1pdF9pbnNuc19i
ZWZvcmUgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBlbWl0X2luc25zX2FmdGVyIChydHgsIHJ0eCk7
CmV4dGVybiBydHggZW1pdF9qdW1wX2luc24gKHJ0eCk7CmV4dGVybiBydHggZW1pdF9jYWxsX2lu
c24gKHJ0eCk7CmV4dGVybiBydHggZW1pdF9sYWJlbCAocnR4KTsKZXh0ZXJuIHJ0eCBlbWl0X2Jh
cnJpZXIgKHZvaWQpOwpleHRlcm4gcnR4IGVtaXRfbGluZV9ub3RlIChjb25zdCBjaGFyICosIGlu
dCk7CmV4dGVybiBydHggZW1pdF9ub3RlIChjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBydHgg
ZW1pdF9saW5lX25vdGVfZm9yY2UgKGNvbnN0IGNoYXIgKiwgaW50KTsKZXh0ZXJuIHJ0eCBtYWtl
X2luc25fcmF3IChydHgpOwpleHRlcm4gcnR4IHByZXZpb3VzX2luc24gKHJ0eCk7CmV4dGVybiBy
dHggbmV4dF9pbnNuIChydHgpOwpleHRlcm4gcnR4IHByZXZfbm9ubm90ZV9pbnNuIChydHgpOwpl
eHRlcm4gcnR4IG5leHRfbm9ubm90ZV9pbnNuIChydHgpOwpleHRlcm4gcnR4IHByZXZfcmVhbF9p
bnNuIChydHgpOwpleHRlcm4gcnR4IG5leHRfcmVhbF9pbnNuIChydHgpOwpleHRlcm4gcnR4IHBy
ZXZfYWN0aXZlX2luc24gKHJ0eCk7CmV4dGVybiBydHggbmV4dF9hY3RpdmVfaW5zbiAocnR4KTsK
ZXh0ZXJuIGludCBhY3RpdmVfaW5zbl9wIChydHgpOwpleHRlcm4gcnR4IHByZXZfbGFiZWwgKHJ0
eCk7CmV4dGVybiBydHggbmV4dF9sYWJlbCAocnR4KTsKZXh0ZXJuIHJ0eCBuZXh0X2NjMF91c2Vy
IChydHgpOwpleHRlcm4gcnR4IHByZXZfY2MwX3NldHRlciAocnR4KTsKCgpleHRlcm4gcnR4IG5l
eHRfbm9uZGVsZXRlZF9pbnNuIChydHgpOwpleHRlcm4gZW51bSBydHhfY29kZSByZXZlcnNlX2Nv
bmRpdGlvbiAoZW51bSBydHhfY29kZSk7CmV4dGVybiBlbnVtIHJ0eF9jb2RlIHJldmVyc2VfY29u
ZGl0aW9uX21heWJlX3Vub3JkZXJlZCAoZW51bSBydHhfY29kZSk7CmV4dGVybiBlbnVtIHJ0eF9j
b2RlIHN3YXBfY29uZGl0aW9uIChlbnVtIHJ0eF9jb2RlKTsKZXh0ZXJuIGVudW0gcnR4X2NvZGUg
dW5zaWduZWRfY29uZGl0aW9uIChlbnVtIHJ0eF9jb2RlKTsKZXh0ZXJuIGVudW0gcnR4X2NvZGUg
c2lnbmVkX2NvbmRpdGlvbiAoZW51bSBydHhfY29kZSk7CmV4dGVybiB2b2lkIG1hcmtfanVtcF9s
YWJlbCAocnR4LCBydHgsIGludCwgaW50KTsKCgpleHRlcm4gcnR4IGZpbmRfZXF1aXZfcmVnIChy
dHgsIHJ0eCwgZW51bSByZWdfY2xhc3MsIGludCwgc2hvcnQgKiwgaW50LCBlbnVtIG1hY2hpbmVf
bW9kZSk7CgoKZXh0ZXJuIHJ0eCBzcXVlZXplX25vdGVzIChydHgsIHJ0eCk7CmV4dGVybiBydHgg
ZGVsZXRlX2luc24gKHJ0eCk7CmV4dGVybiB2b2lkIGRlbGV0ZV9qdW1wIChydHgpOwpleHRlcm4g
dm9pZCBkZWxldGVfYmFycmllciAocnR4KTsKZXh0ZXJuIHJ0eCBnZXRfbGFiZWxfYmVmb3JlIChy
dHgpOwpleHRlcm4gcnR4IGdldF9sYWJlbF9hZnRlciAocnR4KTsKZXh0ZXJuIHJ0eCBmb2xsb3df
anVtcHMgKHJ0eCk7CgoKZXh0ZXJuIHJ0eCBhZGpfb2Zmc2V0dGFibGVfb3BlcmFuZCAocnR4LCBp
bnQpOwoKCmV4dGVybiBydHggdHJ5X3NwbGl0IChydHgsIHJ0eCwgaW50KTsKCgpleHRlcm4gcnR4
IHNwbGl0X2luc25zIChydHgsIHJ0eCk7CgoKZXh0ZXJuIHJ0eCBzaW1wbGlmeV91bmFyeV9vcGVy
YXRpb24gKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlLCBydHgsIGVudW0gbWFjaGlu
ZV9tb2RlKTsKZXh0ZXJuIHJ0eCBzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uIChlbnVtIHJ0eF9j
b2RlLCBlbnVtIG1hY2hpbmVfbW9kZSwgcnR4LCBydHgpOwpleHRlcm4gcnR4IHNpbXBsaWZ5X3Rl
cm5hcnlfb3BlcmF0aW9uIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSwgZW51bSBt
YWNoaW5lX21vZGUsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IHNpbXBsaWZ5X3JlbGF0aW9u
YWxfb3BlcmF0aW9uIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSwgcnR4LCBydHgp
OwpleHRlcm4gcnR4IHNpbXBsaWZ5X2dlbl9iaW5hcnkgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFj
aGluZV9tb2RlLCBydHgsIHJ0eCk7CgpleHRlcm4gcnR4IHNpbXBsaWZ5X3J0eCAocnR4KTsKCgpl
eHRlcm4gcnR4IGdlbl9tb3ZlX2luc24gKHJ0eCwgcnR4KTsKCmV4dGVybiBydHggZ2VuX2p1bXAg
KHJ0eCk7CmV4dGVybiBydHggZ2VuX2JlcSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYmdlIChydHgp
OwpleHRlcm4gcnR4IGdlbl9ibGUgKHJ0eCk7CgoKZXh0ZXJuIHJ0eCBnZW5fbWVtX2FkZHJlc3Nv
ZiAocnR4LCB1bmlvbiB0cmVlX25vZGUgKik7CgoKZXh0ZXJuIHJ0eCBlbGltaW5hdGVfY29uc3Rh
bnRfdGVybSAocnR4LCBydHggKik7CgoKZXh0ZXJuIHJ0eCBleHBhbmRfY29tcGxleF9hYnMgKGVu
dW0gbWFjaGluZV9tb2RlLCBydHgsIHJ0eCwgaW50KTsKCgoKZXh0ZXJuIGVudW0gbWFjaGluZV9t
b2RlIGNob29zZV9oYXJkX3JlZ19tb2RlICh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7CgoK
CmV4dGVybiB2b2lkIHNldF91bmlxdWVfcmVnX25vdGUgKHJ0eCwgZW51bSByZWdfbm90ZSwgcnR4
KTsKIyAxMzU2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5oIgpleHRlcm4gaW50
IHJ0eF9hZGRyX2Nhbl90cmFwX3AgKHJ0eCk7CmV4dGVybiBpbnQgcnR4X3Vuc3RhYmxlX3AgKHJ0
eCk7CmV4dGVybiBpbnQgcnR4X3Zhcmllc19wIChydHgsIGludCk7CmV4dGVybiBpbnQgcnR4X2Fk
ZHJfdmFyaWVzX3AgKHJ0eCwgaW50KTsKZXh0ZXJuIGludCBnZXRfaW50ZWdlcl90ZXJtIChydHgp
OwpleHRlcm4gcnR4IGdldF9yZWxhdGVkX3ZhbHVlIChydHgpOwpleHRlcm4gaW50IHJlZ19tZW50
aW9uZWRfcCAocnR4LCBydHgpOwpleHRlcm4gaW50IGNvdW50X29jY3VycmVuY2VzIChydHgsIHJ0
eCwgaW50KTsKZXh0ZXJuIGludCByZWdfcmVmZXJlbmNlZF9wIChydHgsIHJ0eCk7CmV4dGVybiBp
bnQgcmVnX3VzZWRfYmV0d2Vlbl9wIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIGludCByZWdfcmVm
ZXJlbmNlZF9iZXR3ZWVuX3AgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gaW50IHJlZ19zZXRfYmV0
d2Vlbl9wIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIGludCByZWdzX3NldF9iZXR3ZWVuX3AgKHJ0
eCwgcnR4LCBydHgpOwpleHRlcm4gaW50IG1vZGlmaWVkX2JldHdlZW5fcCAocnR4LCBydHgsIHJ0
eCk7CmV4dGVybiBpbnQgbm9fbGFiZWxzX2JldHdlZW5fcCAocnR4LCBydHgpOwpleHRlcm4gaW50
IG5vX2p1bXBzX2JldHdlZW5fcCAocnR4LCBydHgpOwpleHRlcm4gaW50IG1vZGlmaWVkX2luX3Ag
KHJ0eCwgcnR4KTsKZXh0ZXJuIGludCBpbnNuX2RlcGVuZGVudF9wIChydHgsIHJ0eCk7CmV4dGVy
biBpbnQgcmVnX3NldF9wIChydHgsIHJ0eCk7CmV4dGVybiBydHggc2luZ2xlX3NldF8yIChydHgs
IHJ0eCk7CmV4dGVybiBpbnQgbXVsdGlwbGVfc2V0cyAocnR4KTsKZXh0ZXJuIHJ0eCBmaW5kX2xh
c3RfdmFsdWUgKHJ0eCwgcnR4ICosIHJ0eCwgaW50KTsKZXh0ZXJuIGludCByZWZlcnNfdG9fcmVn
bm9fcCAodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHJ0eCwgcnR4ICopOwoKZXh0ZXJuIGlu
dCByZWdfb3ZlcmxhcF9tZW50aW9uZWRfcCAocnR4LCBydHgpOwpleHRlcm4gcnR4IHNldF9vZiAo
cnR4LCBydHgpOwpleHRlcm4gdm9pZCBub3RlX3N0b3JlcyAocnR4LCB2b2lkICgqKSAocnR4LCBy
dHgsIHZvaWQgKiksIHZvaWQgKik7CgoKZXh0ZXJuIHJ0eCByZWdfc2V0X2xhc3QgKHJ0eCwgcnR4
KTsKZXh0ZXJuIGludCBkZWFkX29yX3NldF9wIChydHgsIHJ0eCk7CmV4dGVybiBpbnQgZGVhZF9v
cl9zZXRfcmVnbm9fcCAocnR4LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gcnR4IGZpbmRfcmVnX25v
dGUgKHJ0eCwgZW51bSByZWdfbm90ZSwgcnR4KTsKZXh0ZXJuIHJ0eCBmaW5kX3JlZ25vX25vdGUg
KHJ0eCwgZW51bSByZWdfbm90ZSwgdW5zaWduZWQgaW50KTsKCmV4dGVybiBpbnQgZmluZF9yZWdf
ZnVzYWdlIChydHgsIGVudW0gcnR4X2NvZGUsIHJ0eCk7CmV4dGVybiBpbnQgZmluZF9yZWdub19m
dXNhZ2UgKHJ0eCwgZW51bSBydHhfY29kZSwgdW5zaWduZWQgaW50KTsKCmV4dGVybiB2b2lkIHJl
bW92ZV9ub3RlIChydHgsIHJ0eCk7CmV4dGVybiBpbnQgc2lkZV9lZmZlY3RzX3AgKHJ0eCk7CmV4
dGVybiBpbnQgdm9sYXRpbGVfcmVmc19wIChydHgpOwpleHRlcm4gaW50IHZvbGF0aWxlX2luc25f
cCAocnR4KTsKZXh0ZXJuIGludCBtYXlfdHJhcF9wIChydHgpOwpleHRlcm4gaW50IGluZXF1YWxp
dHlfY29tcGFyaXNvbnNfcCAocnR4KTsKZXh0ZXJuIHJ0eCByZXBsYWNlX3J0eCAocnR4LCBydHgs
IHJ0eCk7CmV4dGVybiBydHggcmVwbGFjZV9yZWdzIChydHgsIHJ0eCAqLCB1bnNpZ25lZCBpbnQs
IGludCk7CgpleHRlcm4gaW50IGNvbXB1dGVkX2p1bXBfcCAocnR4KTsKdHlwZWRlZiBpbnQgKCpy
dHhfZnVuY3Rpb24pIChydHggKiwgdm9pZCAqKTsKZXh0ZXJuIGludCBmb3JfZWFjaF9ydHggKHJ0
eCAqLCBydHhfZnVuY3Rpb24sIHZvaWQgKik7CmV4dGVybiBydHggcmVnbm9fdXNlX2luICh1bnNp
Z25lZCBpbnQsIHJ0eCk7CmV4dGVybiBpbnQgYXV0b19pbmNfcCAocnR4KTsKZXh0ZXJuIHZvaWQg
cmVtb3ZlX25vZGVfZnJvbV9leHByX2xpc3QgKHJ0eCwgcnR4ICopOwpleHRlcm4gaW50IGluc25z
X3NhZmVfdG9fbW92ZV9wIChydHgsIHJ0eCwgcnR4ICopOwpleHRlcm4gaW50IGxvY19tZW50aW9u
ZWRfaW5fcCAocnR4ICosIHJ0eCk7CgoKCmV4dGVybiBydHggZmluZF91c2VfYXNfYWRkcmVzcyAo
cnR4LCBydHgsIGludCk7CnZvaWQgaW5pdF9FWFBSX0lOU05fTElTVF9jYWNoZSAodm9pZCk7CnZv
aWQgZnJlZV9FWFBSX0xJU1RfbGlzdCAocnR4ICopOwp2b2lkIGZyZWVfSU5TTl9MSVNUX2xpc3Qg
KHJ0eCAqKTsKdm9pZCBmcmVlX0VYUFJfTElTVF9ub2RlIChydHgpOwp2b2lkIGZyZWVfSU5TTl9M
SVNUX25vZGUgKHJ0eCk7CnJ0eCBhbGxvY19JTlNOX0xJU1QgKHJ0eCwgcnR4KTsKcnR4IGFsbG9j
X0VYUFJfTElTVCAoaW50LCBydHgsIHJ0eCk7CnZvaWQgY2xlYXJfbG9nX2xpbmtzIChydHgpOwoK
CgoKCgoKZXh0ZXJuIGludCBtYXhfcGFyYWxsZWw7CgoKZXh0ZXJuIHZvaWQgZnJlZV9yZWdfaW5m
byAodm9pZCk7CgoKZXh0ZXJuIGludCBhc21fbm9wZXJhbmRzIChydHgpOwpleHRlcm4gY29uc3Qg
Y2hhciAqZGVjb2RlX2FzbV9vcGVyYW5kcyAocnR4LCBydHggKiwgcnR4ICoqLCBjb25zdCBjaGFy
ICoqLCBlbnVtIG1hY2hpbmVfbW9kZSAqKTsKCgoKZXh0ZXJuIGVudW0gcmVnX2NsYXNzIHJlZ19w
cmVmZXJyZWRfY2xhc3MgKGludCk7CmV4dGVybiBlbnVtIHJlZ19jbGFzcyByZWdfYWx0ZXJuYXRl
X2NsYXNzIChpbnQpOwoKZXh0ZXJuIHJ0eCBnZXRfZmlyc3Rfbm9ucGFybV9pbnNuICh2b2lkKTsK
CmV4dGVybiB2b2lkIHNwbGl0X2FsbF9pbnNucyAoaW50KTsKCgpleHRlcm4gcnR4IGNvbnN0X2lu
dF9ydHhbNjQgKiAyICsgMV07CgoKCgoKZXh0ZXJuIHJ0eCBjb25zdF90cnVlX3J0eDsKCmV4dGVy
biBydHggY29uc3RfdGlueV9ydHhbM11bKGludCkgTUFYX01BQ0hJTkVfTU9ERV07CiMgMTQ4MCAi
L3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuaCIKZW51bSBnbG9iYWxfcnRsX2luZGV4
CnsKICBHUl9QQywKICBHUl9DQzAsCiAgR1JfU1RBQ0tfUE9JTlRFUiwKICBHUl9GUkFNRV9QT0lO
VEVSLAojIDE0OTUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmgiCiAgR1JfSEFS
RF9GUkFNRV9QT0lOVEVSLAoKCgoKCiAgR1JfQVJHX1BPSU5URVIsCgoKICBHUl9WSVJUVUFMX0lO
Q09NSU5HX0FSR1MsCiAgR1JfVklSVFVBTF9TVEFDS19BUkdTLAogIEdSX1ZJUlRVQUxfU1RBQ0tf
RFlOQU1JQywKICBHUl9WSVJUVUFMX09VVEdPSU5HX0FSR1MsCiAgR1JfVklSVFVBTF9DRkEsCgog
IEdSX01BWAp9OwoKCmV4dGVybiBydHggZ2xvYmFsX3J0bFtHUl9NQVhdOwojIDE1MjggIi91c3Iv
c3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmgiCmV4dGVybiBydHggcGljX29mZnNldF90YWJs
ZV9ydHg7CmV4dGVybiBydHggc3RydWN0X3ZhbHVlX3J0eDsKZXh0ZXJuIHJ0eCBzdHJ1Y3RfdmFs
dWVfaW5jb21pbmdfcnR4OwpleHRlcm4gcnR4IHN0YXRpY19jaGFpbl9ydHg7CmV4dGVybiBydHgg
c3RhdGljX2NoYWluX2luY29taW5nX3J0eDsKZXh0ZXJuIHJ0eCByZXR1cm5fYWRkcmVzc19wb2lu
dGVyX3J0eDsKCgoKCiMgMSAiZ2VucnRsLmgiIDEKCgpleHRlcm4gcnR4IGdlbl9ydHhfZm10X2Vl
IChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggYXJnMCwgcnR4IGFy
ZzEpOwoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF91ZSAoZW51bSBydHhfY29kZSwgZW51bSBtYWNo
aW5lX21vZGUgbW9kZSwgcnR4IGFyZzAsIHJ0eCBhcmcxKTsKCmV4dGVybiBydHggZ2VuX3J0eF9m
bXRfaXNzIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQgYXJnMCwg
Y29uc3QgY2hhciAqYXJnMSwgY29uc3QgY2hhciAqYXJnMik7CgoKZXh0ZXJuIHJ0eCBnZW5fcnR4
X2ZtdF9pcyAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgaW50IGFyZzAs
IGNvbnN0IGNoYXIgKmFyZzEpOwoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9pIChlbnVtIHJ0eF9j
b2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQgYXJnMCk7CgpleHRlcm4gcnR4IGdlbl9y
dHhfZm10X2lzRSAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgaW50IGFy
ZzAsIGNvbnN0IGNoYXIgKmFyZzEsIHJ0dmVjIGFyZzIpOwoKCmV4dGVybiBydHggZ2VuX3J0eF9m
bXRfaUUgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIGludCBhcmcwLCBy
dHZlYyBhcmcxKTsKCmV4dGVybiBydHggZ2VuX3J0eF9mbXRfRXNzIChlbnVtIHJ0eF9jb2RlLCBl
bnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHZlYyBhcmcwLCBjb25zdCBjaGFyICphcmcxLCBjb25z
dCBjaGFyICphcmcyKTsKCgpleHRlcm4gcnR4IGdlbl9ydHhfZm10X3NFc3MgKGVudW0gcnR4X2Nv
ZGUsIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIGNvbnN0IGNoYXIgKmFyZzAsIHJ0dmVjIGFyZzEs
IGNvbnN0IGNoYXIgKmFyZzIsIGNvbnN0IGNoYXIgKmFyZzMpOwoKCmV4dGVybiBydHggZ2VuX3J0
eF9mbXRfZUUgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIHJ0eCBhcmcw
LCBydHZlYyBhcmcxKTsKCmV4dGVybiBydHggZ2VuX3J0eF9mbXRfRSAoZW51bSBydHhfY29kZSwg
ZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR2ZWMgYXJnMCk7CgpleHRlcm4gcnR4IGdlbl9ydHhf
Zm10X2UgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIHJ0eCBhcmcwKTsK
CmV4dGVybiBydHggZ2VuX3J0eF9mbXRfc3NlIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVf
bW9kZSBtb2RlLCBjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBydHggYXJnMik7
CgoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9zIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVf
bW9kZSBtb2RlLCBjb25zdCBjaGFyICphcmcwKTsKCmV4dGVybiBydHggZ2VuX3J0eF9mbXRfc3Mg
KGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIGNvbnN0IGNoYXIgKmFyZzAs
IGNvbnN0IGNoYXIgKmFyZzEpOwoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9zRSAoZW51bSBydHhf
Y29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgY29uc3QgY2hhciAqYXJnMCwgcnR2ZWMgYXJn
MSk7CgpleHRlcm4gcnR4IGdlbl9ydHhfZm10X2l1dWVpZWUgKGVudW0gcnR4X2NvZGUsIGVudW0g
bWFjaGluZV9tb2RlIG1vZGUsIGludCBhcmcwLCBydHggYXJnMSwgcnR4IGFyZzIsIHJ0eCBhcmcz
LCBpbnQgYXJnNCwgcnR4IGFyZzUsIHJ0eCBhcmc2KTsKCgoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2Zt
dF9pdXVlaWVlMCAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgaW50IGFy
ZzAsIHJ0eCBhcmcxLCBydHggYXJnMiwgcnR4IGFyZzMsIGludCBhcmc0LCBydHggYXJnNSwgcnR4
IGFyZzYpOwoKCgpleHRlcm4gcnR4IGdlbl9ydHhfZm10X2l1dWVpZWVlIChlbnVtIHJ0eF9jb2Rl
LCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQgYXJnMCwgcnR4IGFyZzEsIHJ0eCBhcmcyLCBy
dHggYXJnMywgaW50IGFyZzQsIHJ0eCBhcmc1LCBydHggYXJnNiwgcnR4IGFyZzcpOwoKCgpleHRl
cm4gcnR4IGdlbl9ydHhfZm10X2l1dSAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUg
bW9kZSwgaW50IGFyZzAsIHJ0eCBhcmcxLCBydHggYXJnMik7CgpleHRlcm4gcnR4IGdlbl9ydHhf
Zm10X2l1dTAwaXNzIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQg
YXJnMCwgcnR4IGFyZzEsIHJ0eCBhcmcyLCBpbnQgYXJnMywgY29uc3QgY2hhciAqYXJnNCwgY29u
c3QgY2hhciAqYXJnNSk7CgoKCmV4dGVybiBydHggZ2VuX3J0eF9mbXRfc3NpRUVzaSAoZW51bSBy
dHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgY29uc3QgY2hhciAqYXJnMCwgY29uc3Qg
Y2hhciAqYXJnMSwgaW50IGFyZzIsIHJ0dmVjIGFyZzMsIHJ0dmVjIGFyZzQsIGNvbnN0IGNoYXIg
KmFyZzUsIGludCBhcmc2KTsKCgoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9FaSAoZW51bSBydHhf
Y29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR2ZWMgYXJnMCwgaW50IGFyZzEpOwoKZXh0
ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9lRWVlMCAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21v
ZGUgbW9kZSwgcnR4IGFyZzAsIHJ0dmVjIGFyZzEsIHJ0eCBhcmcyLCBydHggYXJnMyk7CgoKZXh0
ZXJuIHJ0eCBnZW5fcnR4X2ZtdF8gKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1v
ZGUpOwpleHRlcm4gcnR4IGdlbl9ydHhfZm10X3cgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGlu
ZV9tb2RlIG1vZGUsIGludCBhcmcwKTsKCmV4dGVybiBydHggZ2VuX3J0eF9mbXRfZTB3d3d3dyAo
ZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGFyZzAsIGludCBhcmcx
LCBpbnQgYXJnMiwgaW50IGFyZzMsIGludCBhcmc0LCBpbnQgYXJnNSk7CgoKCgoKZXh0ZXJuIHJ0
eCBnZW5fcnR4X2ZtdF8wIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlKTsK
ZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9pMCAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21v
ZGUgbW9kZSwgaW50IGFyZzApOwoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9laSAoZW51bSBydHhf
Y29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGFyZzAsIGludCBhcmcxKTsKCmV4dGVy
biBydHggZ2VuX3J0eF9mbXRfZTAgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1v
ZGUsIHJ0eCBhcmcwKTsKCmV4dGVybiBydHggZ2VuX3J0eF9mbXRfdTAwIChlbnVtIHJ0eF9jb2Rl
LCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggYXJnMCk7CgpleHRlcm4gcnR4IGdlbl9ydHhf
Zm10X2VpdCAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGFyZzAs
IGludCBhcmcxLCB1bmlvbiB0cmVlX25vZGUgKmFyZzIpOwoKCmV4dGVybiBydHggZ2VuX3J0eF9m
bXRfZWVlZWUgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIHJ0eCBhcmcw
LCBydHggYXJnMSwgcnR4IGFyZzIsIHJ0eCBhcmczLCBydHggYXJnNCk7CgoKZXh0ZXJuIHJ0eCBn
ZW5fcnR4X2ZtdF9lZWUgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIHJ0
eCBhcmcwLCBydHggYXJnMSwgcnR4IGFyZzIpOwoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9FZSAo
ZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR2ZWMgYXJnMCwgcnR4IGFy
ZzEpOwoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF91dUVpaWlpaWliYmlpIChlbnVtIHJ0eF9jb2Rl
LCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggYXJnMCwgcnR4IGFyZzEsIHJ0dmVjIGFyZzIs
IGludCBhcmczLCBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LCBpbnQgYXJnNywgaW50IGFy
ZzgsIHN0cnVjdCBiaXRtYXBfaGVhZF9kZWYgKmFyZzksIHN0cnVjdCBiaXRtYXBfaGVhZF9kZWYg
KmFyZzEwLCBpbnQgYXJnMTEsIGludCBhcmcxMik7CgoKCgoKCmV4dGVybiBydHggZ2VuX3J0eF9m
bXRfaWlpaWlpaWl0dCAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgaW50
IGFyZzAsIGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsIGludCBhcmc0LCBpbnQgYXJnNSwg
aW50IGFyZzYsIGludCBhcmc3LCB1bmlvbiB0cmVlX25vZGUgKmFyZzgsIHVuaW9uIHRyZWVfbm9k
ZSAqYXJnOSk7CgoKCgoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9ldGkgKGVudW0gcnR4X2NvZGUs
IGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIHJ0eCBhcmcwLCB1bmlvbiB0cmVlX25vZGUgKmFyZzEs
IGludCBhcmcyKTsKCgpleHRlcm4gcnR4IGdlbl9ydHhfZm10X2JpIChlbnVtIHJ0eF9jb2RlLCBl
bnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBzdHJ1Y3QgYml0bWFwX2hlYWRfZGVmICphcmcwLCBpbnQg
YXJnMSk7CgoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF91dXV1IChlbnVtIHJ0eF9jb2RlLCBlbnVt
IG1hY2hpbmVfbW9kZSBtb2RlLCBydHggYXJnMCwgcnR4IGFyZzEsIHJ0eCBhcmcyLCBydHggYXJn
Myk7CiMgMTUzOSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuaCIgMgoKCgoKCgoK
ZXh0ZXJuIHJ0eCBnZW5fcnR4X0NPTlNUX0RPVUJMRSAoZW51bSBtYWNoaW5lX21vZGUsIHJ0eCwg
aW50LCBpbnQpOwoKZXh0ZXJuIHJ0eCBnZW5fcnR4X0NPTlNUX0lOVCAoZW51bSBtYWNoaW5lX21v
ZGUsIGludCk7CmV4dGVybiBydHggZ2VuX3Jhd19SRUcgKGVudW0gbWFjaGluZV9tb2RlLCBpbnQp
OwpleHRlcm4gcnR4IGdlbl9ydHhfUkVHIChlbnVtIG1hY2hpbmVfbW9kZSwgaW50KTsKZXh0ZXJu
IHJ0eCBnZW5fcnR4X01FTSAoZW51bSBtYWNoaW5lX21vZGUsIHJ0eCk7CiMgMTYwOSAiL3Vzci9z
cmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuaCIKZXh0ZXJuIHJ0eCBmaW5kX25leHRfcmVmIChy
dHgsIHJ0eCk7CmV4dGVybiBydHggKmZpbmRfc2luZ2xlX3VzZSAocnR4LCBydHgsIHJ0eCAqKTsK
CmV4dGVybiBydHggb3V0cHV0X2NvbnN0YW50X2RlZiAodW5pb24gdHJlZV9ub2RlICosIGludCk7
CmV4dGVybiBydHggaW1tZWRfcmVhbF9jb25zdCAodW5pb24gdHJlZV9ub2RlICopOwpleHRlcm4g
dW5pb24gdHJlZV9ub2RlICptYWtlX3RyZWUgKHVuaW9uIHRyZWVfbm9kZSAqLCBydHgpOwojIDE2
MjQgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmgiCmV4dGVybiBpbnQgZmxvdzJf
Y29tcGxldGVkOwoKCgoKZXh0ZXJuIGludCByZWxvYWRfY29tcGxldGVkOwoKCgoKZXh0ZXJuIGlu
dCByZWxvYWRfaW5fcHJvZ3Jlc3M7CgoKCgoKCgpleHRlcm4gaW50IGNzZV9ub3RfZXhwZWN0ZWQ7
CgoKCmV4dGVybiBpbnQgbm9fbmV3X3BzZXVkb3M7CgoKCgoKZXh0ZXJuIGludCBydHhfdG9fdHJl
ZV9jb2RlIChlbnVtIHJ0eF9jb2RlKTsKCgpzdHJ1Y3Qgb2JzdGFjazsKZXh0ZXJuIHZvaWQgZ2Nj
X29ic3RhY2tfaW5pdCAoc3RydWN0IG9ic3RhY2sgKik7CgoKc3RydWN0IGNzZV9iYXNpY19ibG9j
a19kYXRhOwojIDE2NzAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmgiCmV4dGVy
biBpbnQgcnR4X2Nvc3QgKHJ0eCwgZW51bSBydHhfY29kZSk7CmV4dGVybiBpbnQgYWRkcmVzc19j
b3N0IChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIHZvaWQgZGVsZXRlX3RyaXZpYWxs
eV9kZWFkX2luc25zIChydHgsIGludCk7CgpleHRlcm4gaW50IGNzZV9tYWluIChydHgsIGludCwg
aW50LCBGSUxFICopOwoKZXh0ZXJuIHZvaWQgY3NlX2VuZF9vZl9iYXNpY19ibG9jayAocnR4LCBz
dHJ1Y3QgY3NlX2Jhc2ljX2Jsb2NrX2RhdGEgKiwgaW50LCBpbnQsIGludCk7CgoKCgpleHRlcm4g
aW50IGNvbXBhcmlzb25fZG9taW5hdGVzX3AgKGVudW0gcnR4X2NvZGUsIGVudW0gcnR4X2NvZGUp
OwpleHRlcm4gaW50IGNvbmRqdW1wX3AgKHJ0eCk7CmV4dGVybiBpbnQgYW55X2NvbmRqdW1wX3Ag
KHJ0eCk7CmV4dGVybiBpbnQgYW55X3VuY29uZGp1bXBfcCAocnR4KTsKZXh0ZXJuIGludCBzYWZl
X3RvX3JlbW92ZV9qdW1wX3AgKHJ0eCk7CmV4dGVybiBydHggcGNfc2V0IChydHgpOwpleHRlcm4g
cnR4IGNvbmRqdW1wX2xhYmVsIChydHgpOwpleHRlcm4gaW50IHNpbXBsZWp1bXBfcCAocnR4KTsK
ZXh0ZXJuIGludCByZXR1cm5qdW1wX3AgKHJ0eCk7CmV4dGVybiBpbnQgb25seWp1bXBfcCAocnR4
KTsKZXh0ZXJuIGludCBzZXRzX2NjMF9wIChydHgpOwpleHRlcm4gaW50IGludmVydF9qdW1wXzEg
KHJ0eCwgcnR4KTsKZXh0ZXJuIGludCBpbnZlcnRfanVtcCAocnR4LCBydHgsIGludCk7CmV4dGVy
biBpbnQgcnR4X3JlbnVtYmVyZWRfZXF1YWxfcCAocnR4LCBydHgpOwpleHRlcm4gaW50IHRydWVf
cmVnbnVtIChydHgpOwpleHRlcm4gaW50IHJlZGlyZWN0X2p1bXBfMSAocnR4LCBydHgpOwpleHRl
cm4gaW50IHJlZGlyZWN0X2p1bXAgKHJ0eCwgcnR4LCBpbnQpOwpleHRlcm4gdm9pZCBqdW1wX29w
dGltaXplIChydHgsIGludCwgaW50LCBpbnQpOwpleHRlcm4gdm9pZCBqdW1wX29wdGltaXplX21p
bmltYWwgKHJ0eCk7CmV4dGVybiB2b2lkIHJlYnVpbGRfanVtcF9sYWJlbHMgKHJ0eCk7CmV4dGVy
biB2b2lkIHRocmVhZF9qdW1wcyAocnR4LCBpbnQsIGludCk7CmV4dGVybiBpbnQgcnR4X2VxdWFs
X2Zvcl90aHJlYWRfcCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBpbnQgY2FuX3JldmVyc2VfY29t
cGFyaXNvbl9wIChydHgsIHJ0eCk7CmV4dGVybiBlbnVtIHJ0eF9jb2RlIHJldmVyc2VkX2NvbXBh
cmlzb25fY29kZSAocnR4LCBydHgpOwpleHRlcm4gZW51bSBydHhfY29kZSByZXZlcnNlZF9jb21w
YXJpc29uX2NvZGVfcGFydHMgKGVudW0gcnR4X2NvZGUsIHJ0eCwgcnR4LCBydHgpOwoKZXh0ZXJu
IHZvaWQgZGVsZXRlX2Zvcl9wZWVwaG9sZSAocnR4LCBydHgpOwpleHRlcm4gaW50IGNvbmRqdW1w
X2luX3BhcmFsbGVsX3AgKHJ0eCk7CmV4dGVybiB2b2lkIG5ldmVyX3JlYWNoZWRfd2FybmluZyAo
cnR4KTsKIyAxNzE4ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5oIgpleHRlcm4g
aW50IG1heF9yZWdfbnVtICh2b2lkKTsKZXh0ZXJuIGludCBtYXhfbGFiZWxfbnVtICh2b2lkKTsK
ZXh0ZXJuIGludCBnZXRfZmlyc3RfbGFiZWxfbnVtICh2b2lkKTsKZXh0ZXJuIHZvaWQgZGVsZXRl
X2luc25zX3NpbmNlIChydHgpOwpleHRlcm4gdm9pZCBtYXJrX3JlZ19wb2ludGVyIChydHgsIGlu
dCk7CmV4dGVybiB2b2lkIG1hcmtfdXNlcl9yZWcgKHJ0eCk7CmV4dGVybiB2b2lkIHJlc2V0X3Vz
ZWRfZmxhZ3MgKHJ0eCk7CmV4dGVybiB2b2lkIHJlb3JkZXJfaW5zbnMgKHJ0eCwgcnR4LCBydHgp
OwpleHRlcm4gaW50IGdldF9tYXhfdWlkICh2b2lkKTsKZXh0ZXJuIGludCBpbl9zZXF1ZW5jZV9w
ICh2b2lkKTsKZXh0ZXJuIHZvaWQgZm9yY2VfbmV4dF9saW5lX25vdGUgKHZvaWQpOwpleHRlcm4g
dm9pZCBjbGVhcl9lbWl0X2NhY2hlcyAodm9pZCk7CmV4dGVybiB2b2lkIGluaXRfZW1pdCAodm9p
ZCk7CmV4dGVybiB2b2lkIGluaXRfZW1pdF9vbmNlIChpbnQpOwpleHRlcm4gdm9pZCBwdXNoX3Rv
cG1vc3Rfc2VxdWVuY2UgKHZvaWQpOwpleHRlcm4gdm9pZCBwb3BfdG9wbW9zdF9zZXF1ZW5jZSAo
dm9pZCk7CmV4dGVybiBpbnQgc3VicmVnX3JlYWxwYXJ0X3AgKHJ0eCk7CmV4dGVybiB2b2lkIHJl
dmVyc2VfY29tcGFyaXNvbiAocnR4KTsKZXh0ZXJuIHZvaWQgc2V0X25ld19maXJzdF9hbmRfbGFz
dF9pbnNuIChydHgsIHJ0eCk7CmV4dGVybiB2b2lkIHNldF9uZXdfZmlyc3RfYW5kX2xhc3RfbGFi
ZWxfbnVtIChpbnQsIGludCk7CmV4dGVybiB2b2lkIHNldF9uZXdfbGFzdF9sYWJlbF9udW0gKGlu
dCk7CmV4dGVybiB2b2lkIHVuc2hhcmVfYWxsX3J0bF9hZ2FpbiAocnR4KTsKZXh0ZXJuIHZvaWQg
c2V0X2xhc3RfaW5zbiAocnR4KTsKZXh0ZXJuIHZvaWQgbGlua19jYzBfaW5zbnMgKHJ0eCk7CmV4
dGVybiB2b2lkIGFkZF9pbnNuIChydHgpOwpleHRlcm4gdm9pZCBhZGRfaW5zbl9iZWZvcmUgKHJ0
eCwgcnR4KTsKZXh0ZXJuIHZvaWQgYWRkX2luc25fYWZ0ZXIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHZv
aWQgcmVtb3ZlX2luc24gKHJ0eCk7CmV4dGVybiB2b2lkIHJlb3JkZXJfaW5zbnNfd2l0aF9saW5l
X25vdGVzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHZvaWQgZW1pdF9pbnNuX2FmdGVyX3dpdGhf
bGluZV9ub3RlcyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBlbnVtIHJ0eF9jb2RlIGNsYXNzaWZ5
X2luc24gKHJ0eCk7CmV4dGVybiBydHggZW1pdCAocnR4KTsKCgoKaW50IGZvcmNlX2xpbmVfbnVt
YmVycyAodm9pZCk7CnZvaWQgcmVzdG9yZV9saW5lX251bWJlcl9zdGF0dXMgKGludCBvbGRfdmFs
dWUpOwpleHRlcm4gdm9pZCByZW51bWJlcl9pbnNucyAoRklMRSAqKTsKZXh0ZXJuIHZvaWQgcmVt
b3ZlX3VubmVjZXNzYXJ5X25vdGVzICh2b2lkKTsKCgpleHRlcm4gdm9pZCBhZGRfY2xvYmJlcnMg
KHJ0eCwgaW50KTsKCgpleHRlcm4gaW50IGNvbWJpbmVfaW5zdHJ1Y3Rpb25zIChydHgsIHVuc2ln
bmVkIGludCk7CmV4dGVybiB1bnNpZ25lZCBpbnQgZXh0ZW5kZWRfY291bnQgKHJ0eCwgZW51bSBt
YWNoaW5lX21vZGUsIGludCk7CmV4dGVybiBydHggcmVtb3ZlX2RlYXRoICh1bnNpZ25lZCBpbnQs
IHJ0eCk7CgpleHRlcm4gdm9pZCBkdW1wX2NvbWJpbmVfc3RhdHMgKEZJTEUgKik7CmV4dGVybiB2
b2lkIGR1bXBfY29tYmluZV90b3RhbF9zdGF0cyAoRklMRSAqKTsKCgoKCmV4dGVybiB2b2lkIHNj
aGVkdWxlX2luc25zIChGSUxFICopOwpleHRlcm4gdm9pZCBzY2hlZHVsZV9lYmJzIChGSUxFICop
OwoKZXh0ZXJuIHZvaWQgZml4X3NjaGVkX3BhcmFtIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
Kik7CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKnByaW50X3J0eF9oZWFkOwpleHRlcm4gdm9pZCBkZWJ1
Z19ydHggKHJ0eCk7CmV4dGVybiB2b2lkIGRlYnVnX3J0eF9saXN0IChydHgsIGludCk7CmV4dGVy
biB2b2lkIGRlYnVnX3J0eF9yYW5nZSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGRlYnVnX3J0eF9m
aW5kIChydHgsIGludCk7CgpleHRlcm4gdm9pZCBwcmludF9ydGwgKEZJTEUgKiwgcnR4KTsKZXh0
ZXJuIHZvaWQgcHJpbnRfc2ltcGxlX3J0bCAoRklMRSAqLCBydHgpOwpleHRlcm4gaW50IHByaW50
X3J0bF9zaW5nbGUgKEZJTEUgKiwgcnR4KTsKZXh0ZXJuIHZvaWQgcHJpbnRfaW5saW5lX3J0eCAo
RklMRSAqLCBydHgsIGludCk7CgoKCmV4dGVybiB2b2lkIGluaXRfbG9vcCAodm9pZCk7CmV4dGVy
biBydHggbGliY2FsbF9vdGhlcl9yZWcgKHJ0eCwgcnR4KTsKCmV4dGVybiB2b2lkIGxvb3Bfb3B0
aW1pemUgKHJ0eCwgRklMRSAqLCBpbnQpOwoKZXh0ZXJuIHZvaWQgcmVjb3JkX2V4Y2Vzc19yZWdz
IChydHgsIHJ0eCwgcnR4ICopOwoKCmV4dGVybiB2b2lkIHJlcG9zaXRpb25fcHJvbG9ndWVfYW5k
X2VwaWxvZ3VlX25vdGVzIChydHgpOwpleHRlcm4gdm9pZCB0aHJlYWRfcHJvbG9ndWVfYW5kX2Vw
aWxvZ3VlX2luc25zIChydHgpOwpleHRlcm4gaW50IHByb2xvZ3VlX2VwaWxvZ3VlX2NvbnRhaW5z
IChydHgpOwpleHRlcm4gaW50IHNpYmNhbGxfZXBpbG9ndWVfY29udGFpbnMgKHJ0eCk7CmV4dGVy
biBpbnQgZ2V0X2ZyYW1lX3NpemUgKHZvaWQpOwpleHRlcm4gdm9pZCBwcmVzZXJ2ZV9ydGxfZXhw
cl9yZXN1bHQgKHJ0eCk7CmV4dGVybiB2b2lkIG1hcmtfdGVtcF9hZGRyX3Rha2VuIChydHgpOwpl
eHRlcm4gdm9pZCB1cGRhdGVfdGVtcF9zbG90X2FkZHJlc3MgKHJ0eCwgcnR4KTsKZXh0ZXJuIHZv
aWQgcHVyZ2VfYWRkcmVzc29mIChydHgpOwpleHRlcm4gdm9pZCBwdXJnZV9oYXJkX3N1YnJlZ19z
ZXRzIChydHgpOwoKCmV4dGVybiBpbnQgb3BlcmFuZHNfbWF0Y2hfcCAocnR4LCBydHgpOwpleHRl
cm4gaW50IHNhZmVfZnJvbV9lYXJseWNsb2JiZXIgKHJ0eCwgcnR4KTsKCgpleHRlcm4gdm9pZCBz
ZXRfZmlsZV9hbmRfbGluZV9mb3Jfc3RtdCAoY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gdm9p
ZCBleHBhbmRfbnVsbF9yZXR1cm4gKHZvaWQpOwpleHRlcm4gdm9pZCBlbWl0X2p1bXAgKHJ0eCk7
CmV4dGVybiBpbnQgcHJlc2VydmVfc3ViZXhwcmVzc2lvbnNfcCAodm9pZCk7CgoKZXh0ZXJuIHZv
aWQgaW5pdF9leHByX29uY2UgKHZvaWQpOwpleHRlcm4gdm9pZCBtb3ZlX2J5X3BpZWNlcyAocnR4
LCBydHgsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsKCgoKCmV4dGVybiB2b2lkIHJlY29t
cHV0ZV9yZWdfdXNhZ2UgKHJ0eCwgaW50KTsKCmV4dGVybiB2b2lkIHByaW50X3J0bF93aXRoX2Ji
IChGSUxFICosIHJ0eCk7CmV4dGVybiB2b2lkIGR1bXBfZmxvd19pbmZvIChGSUxFICopOwoKCgpl
eHRlcm4gdm9pZCBpbml0X2V4cG1lZCAodm9pZCk7CmV4dGVybiB2b2lkIGV4cGFuZF9pbmMgKHJ0
eCwgcnR4KTsKZXh0ZXJuIHZvaWQgZXhwYW5kX2RlYyAocnR4LCBydHgpOwpleHRlcm4gcnR4IGV4
cGFuZF9tdWx0X2hpZ2hwYXJ0IChlbnVtIG1hY2hpbmVfbW9kZSwgcnR4LCB1bnNpZ25lZCBpbnQs
IHJ0eCwgaW50LCBpbnQpOwoKCgoKCmV4dGVybiBpbnQgZ2NzZV9tYWluIChydHgsIEZJTEUgKik7
CgoKCmV4dGVybiB2b2lkIG1hcmtfZWxpbWluYXRpb24gKGludCwgaW50KTsKCmV4dGVybiBpbnQg
Z2xvYmFsX2FsbG9jIChGSUxFICopOwpleHRlcm4gdm9pZCBkdW1wX2dsb2JhbF9yZWdzIChGSUxF
ICopOwoKCgoKZXh0ZXJuIHZvaWQgYnVpbGRfaW5zbl9jaGFpbiAocnR4KTsKCgpleHRlcm4gaW50
IHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wIChlbnVtIHJlZ19jbGFzcywgZW51bSByZWdfY2xhc3Mp
OwpleHRlcm4gaW50IHJlZ19jbGFzc19zdWJzZXRfcCAoZW51bSByZWdfY2xhc3MsIGVudW0gcmVn
X2NsYXNzKTsKZXh0ZXJuIHZvaWQgZ2xvYmFsaXplX3JlZyAoaW50KTsKZXh0ZXJuIHZvaWQgaW5p
dF9yZWdzICh2b2lkKTsKZXh0ZXJuIHZvaWQgaW5pdF9yZWdfc2V0cyAodm9pZCk7CmV4dGVybiB2
b2lkIHJlZ3NldF9yZWxlYXNlX21lbW9yeSAodm9pZCk7CmV4dGVybiB2b2lkIHJlZ2NsYXNzX2lu
aXQgKHZvaWQpOwpleHRlcm4gdm9pZCByZWdjbGFzcyAocnR4LCBpbnQsIEZJTEUgKik7CmV4dGVy
biB2b2lkIHJlZ19zY2FuIChydHgsIHVuc2lnbmVkIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgcmVn
X3NjYW5fdXBkYXRlIChydHgsIHJ0eCwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgZml4X3Jl
Z2lzdGVyIChjb25zdCBjaGFyICosIGludCwgaW50KTsKCmV4dGVybiB2b2lkIGRlbGV0ZV9udWxs
X3BvaW50ZXJfY2hlY2tzIChydHgpOwoKCgpleHRlcm4gdm9pZCByZWdtb3ZlX29wdGltaXplIChy
dHgsIGludCwgRklMRSAqKTsKCmV4dGVybiB2b2lkIGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHMg
KHZvaWQpOwoKCgpleHRlcm4gdm9pZCBkYnJfc2NoZWR1bGUgKHJ0eCwgRklMRSAqKTsKCgoKZXh0
ZXJuIHZvaWQgaW5pdF9vcHRhYnMgKHZvaWQpOwoKCgpleHRlcm4gdm9pZCBkdW1wX2xvY2FsX2Fs
bG9jIChGSUxFICopOwoKZXh0ZXJuIGludCBsb2NhbF9hbGxvYyAodm9pZCk7CmV4dGVybiBpbnQg
ZnVuY3Rpb25faW52YXJpYW50X3AgKHJ0eCk7CgoKZXh0ZXJuIHZvaWQgcmVsb2FkX2NzZV9yZWdz
IChydHgpOwpleHRlcm4gdm9pZCBpbml0X3JlbG9hZCAodm9pZCk7CmV4dGVybiB2b2lkIG1hcmtf
aG9tZV9saXZlIChpbnQpOwpleHRlcm4gaW50IHJlbG9hZCAocnR4LCBpbnQpOwoKCmV4dGVybiB2
b2lkIGluaXRfY2FsbGVyX3NhdmUgKHZvaWQpOwoKCmV4dGVybiB2b2lkIGluaXRfYnJhbmNoX3By
b2IgKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIGJyYW5jaF9wcm9iICh2b2lkKTsKZXh0ZXJu
IHZvaWQgZW5kX2JyYW5jaF9wcm9iICh2b2lkKTsKZXh0ZXJuIHZvaWQgb3V0cHV0X2Z1bmNfc3Rh
cnRfcHJvZmlsZXIgKHZvaWQpOwoKCgpleHRlcm4gdm9pZCByZWdfdG9fc3RhY2sgKHJ0eCwgRklM
RSAqKTsKCgoKZXh0ZXJuIGludCBhZGRfZG91YmxlICh1bnNpZ25lZCBpbnQsIGludCwgdW5zaWdu
ZWQgaW50LCBpbnQsIHVuc2lnbmVkIGludCAqLCBpbnQgKik7CgoKCmV4dGVybiBpbnQgbmVnX2Rv
dWJsZSAodW5zaWduZWQgaW50LCBpbnQsIHVuc2lnbmVkIGludCAqLCBpbnQgKik7CgoKZXh0ZXJu
IGludCBtdWxfZG91YmxlICh1bnNpZ25lZCBpbnQsIGludCwgdW5zaWduZWQgaW50LCBpbnQsIHVu
c2lnbmVkIGludCAqLCBpbnQgKik7CgoKCgpleHRlcm4gdm9pZCBsc2hpZnRfZG91YmxlICh1bnNp
Z25lZCBpbnQsIGludCwgaW50LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCAqLCBpbnQgKiwg
aW50KTsKCgoKZXh0ZXJuIHZvaWQgcnNoaWZ0X2RvdWJsZSAodW5zaWduZWQgaW50LCBpbnQsIGlu
dCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQgKiwgaW50ICosIGludCk7CgoKCmV4dGVybiB2
b2lkIGxyb3RhdGVfZG91YmxlICh1bnNpZ25lZCBpbnQsIGludCwgaW50LCB1bnNpZ25lZCBpbnQs
IHVuc2lnbmVkIGludCAqLCBpbnQgKik7CgoKCmV4dGVybiB2b2lkIHJyb3RhdGVfZG91YmxlICh1
bnNpZ25lZCBpbnQsIGludCwgaW50LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCAqLCBpbnQg
Kik7CgoKCgoKZW51bSBsaWJjYWxsX3R5cGUKewogIExDVF9OT1JNQUwgPSAwLAogIExDVF9DT05T
VCA9IDEsCiAgTENUX1BVUkUgPSAyLAogIExDVF9DT05TVF9NQUtFX0JMT0NLID0gMywKICBMQ1Rf
UFVSRV9NQUtFX0JMT0NLID0gNAp9OwoKZXh0ZXJuIHZvaWQgZW1pdF9saWJyYXJ5X2NhbGwgKHJ0
eCwgZW51bSBsaWJjYWxsX3R5cGUsIGVudW0gbWFjaGluZV9tb2RlLCBpbnQsIC4uLik7CgoKZXh0
ZXJuIHJ0eCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZSAocnR4LCBydHgsIGVudW0gbGliY2FsbF90
eXBlLCBlbnVtIG1hY2hpbmVfbW9kZSwgaW50LCAuLi4pOwoKCgoKZXh0ZXJuIGludCBzZXRfZG9t
aW5hdGVzX3VzZSAoaW50LCBpbnQsIGludCwgcnR4LCBydHgpOwoKCmV4dGVybiB2b2lkIGJzc19z
ZWN0aW9uICh2b2lkKTsKZXh0ZXJuIGludCBpbl9kYXRhX3NlY3Rpb24gKHZvaWQpOwpleHRlcm4g
aW50IHN1cHBvcnRzX29uZV9vbmx5ICh2b2lkKTsKZXh0ZXJuIHZvaWQgaW5pdF92YXJhc21fb25j
ZSAodm9pZCk7CgoKZXh0ZXJuIHZvaWQgaW5pdF9ydGwgKHZvaWQpOwpleHRlcm4gdm9pZCB0cmF2
ZXJzZV9tZF9jb25zdGFudHMgKGludCAoKikgKHZvaWQgKiosIHZvaWQgKiksIHZvaWQgKik7Cgpz
dHJ1Y3QgbWRfY29uc3RhbnQgeyBjaGFyICpuYW1lLCAqdmFsdWU7IH07CgoKZXh0ZXJuIGludCBy
ZWFkX3NraXBfc3BhY2VzIChGSUxFICopOwpleHRlcm4gcnR4IHJlYWRfcnR4IChGSUxFICopOwoK
CmV4dGVybiBjb25zdCBjaGFyICpyZWFkX3J0eF9maWxlbmFtZTsKZXh0ZXJuIGludCByZWFkX3J0
eF9saW5lbm87CgoKCgoKCgpleHRlcm4gdm9pZCBmYW5jeV9hYm9ydCAoY29uc3QgY2hhciAqLCBp
bnQsIGNvbnN0IGNoYXIgKikKICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoK
ZXh0ZXJuIHJ0eCBjYW5vbl9ydHggKHJ0eCk7CmV4dGVybiBpbnQgdHJ1ZV9kZXBlbmRlbmNlIChy
dHgsIGVudW0gbWFjaGluZV9tb2RlLCBydHgsIGludCAoKikocnR4LCBpbnQpKTsKCmV4dGVybiBp
bnQgcmVhZF9kZXBlbmRlbmNlIChydHgsIHJ0eCk7CmV4dGVybiBpbnQgYW50aV9kZXBlbmRlbmNl
IChydHgsIHJ0eCk7CmV4dGVybiBpbnQgb3V0cHV0X2RlcGVuZGVuY2UgKHJ0eCwgcnR4KTsKZXh0
ZXJuIHZvaWQgbWFya19jb25zdGFudF9mdW5jdGlvbiAodm9pZCk7CmV4dGVybiB2b2lkIGluaXRf
YWxpYXNfb25jZSAodm9pZCk7CmV4dGVybiB2b2lkIGluaXRfYWxpYXNfYW5hbHlzaXMgKHZvaWQp
OwpleHRlcm4gdm9pZCBlbmRfYWxpYXNfYW5hbHlzaXMgKHZvaWQpOwpleHRlcm4gcnR4IGFkZHJf
c2lkZV9lZmZlY3RfZXZhbCAocnR4LCBpbnQsIGludCk7CgoKdHlwZWRlZiBlbnVtIHsKICBzaWJj
YWxsX3VzZV9ub3JtYWwgPSAxLAogIHNpYmNhbGxfdXNlX3RhaWxfcmVjdXJzaW9uLAogIHNpYmNh
bGxfdXNlX3NpYmNhbGwKfSBzaWJjYWxsX3VzZV90OwoKZXh0ZXJuIHZvaWQgb3B0aW1pemVfc2li
bGluZ19hbmRfdGFpbF9yZWN1cnNpdmVfY2FsbHMgKHZvaWQpOwpleHRlcm4gdm9pZCByZXBsYWNl
X2NhbGxfcGxhY2Vob2xkZXIgKHJ0eCwgc2liY2FsbF91c2VfdCk7CgoKZXh0ZXJuIGludCBzdGFj
a19yZWdzX21lbnRpb25lZCAocnR4IGluc24pOwoKCgpleHRlcm4gcnR4IHN0YWNrX2xpbWl0X3J0
eDsKCgpleHRlcm4gdm9pZCByZWdyZW5hbWVfb3B0aW1pemUgKHZvaWQpOwoKCmV4dGVybiB2b2lk
IGlmX2NvbnZlcnQgKGludCk7CiMgMjYgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRs
LmMiIDIKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3JlYWwuaCIgMQojIDEwMyAi
L3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9yZWFsLmgiCnR5cGVkZWYgc3RydWN0IHsKICBp
bnQgclsoMTkgKyBzaXplb2YgKGludCkpLyhzaXplb2YgKGludCkpXTsKfSByZWFsdmFsdWV0eXBl
OwojIDEyNyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9yZWFsLmgiCmV4dGVybiB1bnNp
Z25lZCBpbnQgc2lnbmlmaWNhbmRfc2l6ZSAoZW51bSBtYWNoaW5lX21vZGUpOwojIDE0MCAiL3Vz
ci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9yZWFsLmgiCmV4dGVybiB2b2lkIGVhcml0aCAocmVh
bHZhbHVldHlwZSAqLCBpbnQsIHJlYWx2YWx1ZXR5cGUgKiwgcmVhbHZhbHVldHlwZSAqKTsKCmV4
dGVybiByZWFsdmFsdWV0eXBlIGV0cnVuY2kgKHJlYWx2YWx1ZXR5cGUpOwpleHRlcm4gcmVhbHZh
bHVldHlwZSBldHJ1bmN1aSAocmVhbHZhbHVldHlwZSk7CmV4dGVybiByZWFsdmFsdWV0eXBlIGVy
ZWFsX2F0b2YgKGNvbnN0IGNoYXIgKiwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gcmVhbHZh
bHVldHlwZSBlcmVhbF9uZWdhdGUgKHJlYWx2YWx1ZXR5cGUpOwpleHRlcm4gaW50IGVmaXhpIChy
ZWFsdmFsdWV0eXBlKTsKZXh0ZXJuIHVuc2lnbmVkIGludCBlZml4dWkgKHJlYWx2YWx1ZXR5cGUp
OwpleHRlcm4gdm9pZCBlcmVhbF9mcm9tX2ludCAocmVhbHZhbHVldHlwZSAqLCBpbnQsIGludCwg
ZW51bSBtYWNoaW5lX21vZGUpOwoKCmV4dGVybiB2b2lkIGVyZWFsX2Zyb21fdWludCAocmVhbHZh
bHVldHlwZSAqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgZW51bSBtYWNoaW5lX21vZGUp
OwoKCgpleHRlcm4gdm9pZCBlcmVhbF90b19pbnQgKGludCAqLCBpbnQgKiwgcmVhbHZhbHVldHlw
ZSk7CgpleHRlcm4gcmVhbHZhbHVldHlwZSBlcmVhbF9sZGV4cCAocmVhbHZhbHVldHlwZSwgaW50
KTsKCmV4dGVybiB2b2lkIGV0YXJ0ZG91YmxlIChyZWFsdmFsdWV0eXBlLCBsb25nICopOwpleHRl
cm4gdm9pZCBldGFybGRvdWJsZSAocmVhbHZhbHVldHlwZSwgbG9uZyAqKTsKZXh0ZXJuIHZvaWQg
ZXRhcmRvdWJsZSAocmVhbHZhbHVldHlwZSwgbG9uZyAqKTsKZXh0ZXJuIGxvbmcgZXRhcnNpbmds
ZSAocmVhbHZhbHVldHlwZSk7CmV4dGVybiB2b2lkIGVyZWFsX3RvX2RlY2ltYWwgKHJlYWx2YWx1
ZXR5cGUsIGNoYXIgKik7CmV4dGVybiBpbnQgZXJlYWxfY21wIChyZWFsdmFsdWV0eXBlLCByZWFs
dmFsdWV0eXBlKTsKZXh0ZXJuIGludCBlcmVhbF9pc25lZyAocmVhbHZhbHVldHlwZSk7CmV4dGVy
biByZWFsdmFsdWV0eXBlIGVyZWFsX3VudG9fZmxvYXQgKGxvbmcpOwpleHRlcm4gcmVhbHZhbHVl
dHlwZSBlcmVhbF91bnRvX2RvdWJsZSAobG9uZyAqKTsKZXh0ZXJuIHJlYWx2YWx1ZXR5cGUgZXJl
YWxfZnJvbV9mbG9hdCAoaW50KTsKZXh0ZXJuIHJlYWx2YWx1ZXR5cGUgZXJlYWxfZnJvbV9kb3Vi
bGUgKGludCAqKTsKIyAxNzkgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcmVhbC5oIgpl
eHRlcm4gcmVhbHZhbHVldHlwZSByZWFsX3ZhbHVlX3RydW5jYXRlIChlbnVtIG1hY2hpbmVfbW9k
ZSwgcmVhbHZhbHVldHlwZSk7CiMgNDA5ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3Jl
YWwuaCIKZXh0ZXJuIHJlYWx2YWx1ZXR5cGUgcmVhbF92YWx1ZV90cnVuY2F0ZSAoZW51bSBtYWNo
aW5lX21vZGUsIHJlYWx2YWx1ZXR5cGUpOwojIDQzMyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4w
L2djYy9yZWFsLmgiCmV4dGVybiBpbnQgdGFyZ2V0X2lzbmFuIChyZWFsdmFsdWV0eXBlKTsKZXh0
ZXJuIGludCB0YXJnZXRfaXNpbmYgKHJlYWx2YWx1ZXR5cGUpOwpleHRlcm4gaW50IHRhcmdldF9u
ZWdhdGl2ZSAocmVhbHZhbHVldHlwZSk7CiMgNDQ0ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAv
Z2NjL3JlYWwuaCIKZXh0ZXJuIHJlYWx2YWx1ZXR5cGUgZGNvbnN0MDsKZXh0ZXJuIHJlYWx2YWx1
ZXR5cGUgZGNvbnN0MTsKZXh0ZXJuIHJlYWx2YWx1ZXR5cGUgZGNvbnN0MjsKZXh0ZXJuIHJlYWx2
YWx1ZXR5cGUgZGNvbnN0bTE7CgoKCgp1bmlvbiByZWFsX2V4dHJhY3QKewogIHJlYWx2YWx1ZXR5
cGUgZDsKICBpbnQgaVtzaXplb2YgKHJlYWx2YWx1ZXR5cGUpIC8gc2l6ZW9mIChpbnQpXTsKfTsK
CgoKCnVuaW9uIHRyZWVfbm9kZTsKcmVhbHZhbHVldHlwZSByZWFsX3ZhbHVlX2Zyb21faW50X2Nz
dCAodW5pb24gdHJlZV9ub2RlICosIHVuaW9uIHRyZWVfbm9kZSAqKTsKIyA0NzMgIi91c3Ivc3Jj
L2djYy9nY2MtY3ZzLTMuMC9nY2MvcmVhbC5oIgpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmltbWVk
X3JlYWxfY29uc3RfMSAocmVhbHZhbHVldHlwZSwgZW51bSBtYWNoaW5lX21vZGUpOwojIDQ4NSAi
L3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9yZWFsLmgiCmV4dGVybiBpbnQgZXhhY3RfcmVh
bF9pbnZlcnNlIChlbnVtIG1hY2hpbmVfbW9kZSwgcmVhbHZhbHVldHlwZSAqKTsKZXh0ZXJuIGlu
dCB0YXJnZXRfaXNuYW4gKHJlYWx2YWx1ZXR5cGUpOwpleHRlcm4gaW50IHRhcmdldF9pc2luZiAo
cmVhbHZhbHVldHlwZSk7CmV4dGVybiBpbnQgdGFyZ2V0X25lZ2F0aXZlIChyZWFsdmFsdWV0eXBl
KTsKZXh0ZXJuIHZvaWQgZGVidWdfcmVhbCAocmVhbHZhbHVldHlwZSk7CgoKZXh0ZXJuIHZvaWQg
YXNzZW1ibGVfcmVhbCAocmVhbHZhbHVldHlwZSwgZW51bSBtYWNoaW5lX21vZGUpOwoKZXh0ZXJu
IHZvaWQgZGVidWdfcmVhbCAocmVhbHZhbHVldHlwZSk7CgoKZXh0ZXJuIHZvaWQgYXNzZW1ibGVf
cmVhbCAocmVhbHZhbHVldHlwZSwgZW51bSBtYWNoaW5lX21vZGUpOwojIDI3ICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5jIiAyCiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4w
L2djYy9iaXRtYXAuaCIgMQojIDQyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2JpdG1h
cC5oIgp0eXBlZGVmIHN0cnVjdCBiaXRtYXBfZWxlbWVudF9kZWYKewogIHN0cnVjdCBiaXRtYXBf
ZWxlbWVudF9kZWYgKm5leHQ7CiAgc3RydWN0IGJpdG1hcF9lbGVtZW50X2RlZiAqcHJldjsKICB1
bnNpZ25lZCBpbnQgaW5keDsKICB1bnNpZ25lZCBpbnQgYml0c1syXTsKfSBiaXRtYXBfZWxlbWVu
dDsKCgp0eXBlZGVmIHN0cnVjdCBiaXRtYXBfaGVhZF9kZWYgewogIGJpdG1hcF9lbGVtZW50ICpm
aXJzdDsKICBiaXRtYXBfZWxlbWVudCAqY3VycmVudDsKICB1bnNpZ25lZCBpbnQgaW5keDsKfSBi
aXRtYXBfaGVhZCwgKmJpdG1hcDsKCgplbnVtIGJpdG1hcF9iaXRzIHsKICBCSVRNQVBfQU5ELAog
IEJJVE1BUF9BTkRfQ09NUEwsCiAgQklUTUFQX0lPUiwKICBCSVRNQVBfWE9SCn07CgoKZXh0ZXJu
IGJpdG1hcF9lbGVtZW50ICpiaXRtYXBfZnJlZTsKZXh0ZXJuIGJpdG1hcF9lbGVtZW50IGJpdG1h
cF96ZXJvOwoKCmV4dGVybiB2b2lkIGJpdG1hcF9jbGVhciAoYml0bWFwKTsKCgpleHRlcm4gdm9p
ZCBiaXRtYXBfY29weSAoYml0bWFwLCBiaXRtYXApOwoKCmV4dGVybiBpbnQgYml0bWFwX2VxdWFs
X3AgKGJpdG1hcCwgYml0bWFwKTsKCgpleHRlcm4gaW50IGJpdG1hcF9vcGVyYXRpb24gKGJpdG1h
cCwgYml0bWFwLCBiaXRtYXAsIGVudW0gYml0bWFwX2JpdHMpOwoKCgpleHRlcm4gdm9pZCBiaXRt
YXBfaW9yX2FuZF9jb21wbCAoYml0bWFwLCBiaXRtYXAsIGJpdG1hcCk7CgoKZXh0ZXJuIHZvaWQg
Yml0bWFwX2NsZWFyX2JpdCAoYml0bWFwLCBpbnQpOwoKCmV4dGVybiB2b2lkIGJpdG1hcF9zZXRf
Yml0IChiaXRtYXAsIGludCk7CgoKZXh0ZXJuIGludCBiaXRtYXBfYml0X3AgKGJpdG1hcCwgaW50
KTsKCgpleHRlcm4gdm9pZCBkZWJ1Z19iaXRtYXAgKGJpdG1hcCk7CmV4dGVybiB2b2lkIGRlYnVn
X2JpdG1hcF9maWxlIChGSUxFICosIGJpdG1hcCk7CgoKZXh0ZXJuIHZvaWQgYml0bWFwX3ByaW50
IChGSUxFICosIGJpdG1hcCwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCmV4dGVybiBi
aXRtYXAgYml0bWFwX2luaXRpYWxpemUgKGJpdG1hcCk7CgoKZXh0ZXJuIHZvaWQgYml0bWFwX3Jl
bGVhc2VfbWVtb3J5ICh2b2lkKTsKCmV4dGVybiB2b2lkIGRlYnVnX2JpdG1hcCAoYml0bWFwKTsK
IyAyOCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuYyIgMgojIDEgIi91c3Ivc3Jj
L2djYy9nY2MtY3ZzLTMuMC9nY2MvZ2djLmgiIDEKIyAyMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMt
My4wL2djYy9nZ2MuaCIKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL2dhbnNpZGVj
bC5oIiAxCiMgMjIgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvZ2djLmgiIDIKIyAxICIv
dXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3ZhcnJheS5oIiAxCiMgMzYgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9nY2MvdmFycmF5LmgiCnN0cnVjdCBjb25zdF9lcXVpdl9kYXRhIHsKIyA1
MCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy92YXJyYXkuaCIKICBzdHJ1Y3QgcnR4X2Rl
ZiAqcnR4OwoKCgogIHVuc2lnbmVkIGFnZTsKfTsKCgp0eXBlZGVmIHVuaW9uIHZhcnJheV9kYXRh
X3RhZyB7CiAgY2hhciBjWzFdOwogIHVuc2lnbmVkIGNoYXIgdWNbMV07CiAgc2hvcnQgc1sxXTsK
ICB1bnNpZ25lZCBzaG9ydCB1c1sxXTsKICBpbnQgaVsxXTsKICB1bnNpZ25lZCBpbnQgdVsxXTsK
ICBsb25nIGxbMV07CiAgdW5zaWduZWQgbG9uZyB1bFsxXTsKICBpbnQgaGludFsxXTsKICB1bnNp
Z25lZCBpbnQgdWhpbnRbMV07CiAgdm9pZCAqIGdlbmVyaWNbMV07CiAgY2hhciAqY3B0clsxXTsK
ICBzdHJ1Y3QgcnR4X2RlZiAqcnR4WzFdOwogIHN0cnVjdCBydHZlY19kZWYgKnJ0dmVjWzFdOwog
IHVuaW9uIHRyZWVfbm9kZSAqdHJlZVsxXTsKICBzdHJ1Y3QgYml0bWFwX2hlYWRfZGVmICpiaXRt
YXBbMV07CiAgc3RydWN0IHNjaGVkX2luZm9fdGFnICpzY2hlZFsxXTsKICBzdHJ1Y3QgcmVnX2lu
Zm9fZGVmICpyZWdbMV07CiAgc3RydWN0IGNvbnN0X2VxdWl2X2RhdGEgY29uc3RfZXF1aXZbMV07
CiAgc3RydWN0IGJhc2ljX2Jsb2NrX2RlZiAqYmJbMV07CiAgc3RydWN0IGVsdF9saXN0ICp0ZVsx
XTsKfSB2YXJyYXlfZGF0YTsKCgp0eXBlZGVmIHN0cnVjdCB2YXJyYXlfaGVhZF90YWcgewogIHNp
emVfdCBudW1fZWxlbWVudHM7CiAgc2l6ZV90IGVsZW1lbnRzX3VzZWQ7CgogIHNpemVfdCBlbGVt
ZW50X3NpemU7CiAgY29uc3QgY2hhciAqbmFtZTsKICB2YXJyYXlfZGF0YSBkYXRhOwp9ICp2YXJy
YXlfdHlwZTsKCgoKZXh0ZXJuIHZhcnJheV90eXBlIHZhcnJheV9pbml0IChzaXplX3QsIHNpemVf
dCwgY29uc3QgY2hhciAqKTsKIyAxNjUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvdmFy
cmF5LmgiCmV4dGVybiB2YXJyYXlfdHlwZSB2YXJyYXlfZ3JvdyAodmFycmF5X3R5cGUsIHNpemVf
dCk7CiMgMTc2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3ZhcnJheS5oIgpleHRlcm4g
dm9pZCB2YXJyYXlfY2hlY2tfZmFpbGVkICh2YXJyYXlfdHlwZSwgc2l6ZV90LCBjb25zdCBjaGFy
ICosIGludCwgY29uc3QgY2hhciAqKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CiMg
MjMgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvZ2djLmgiIDIKIyAzMSAiL3Vzci9zcmMv
Z2NjL2djYy1jdnMtMy4wL2djYy9nZ2MuaCIKc3RydWN0IGVoX3N0YXR1czsKc3RydWN0IGVtaXRf
c3RhdHVzOwpzdHJ1Y3QgZXhwcl9zdGF0dXM7CnN0cnVjdCBoYXNoX3RhYmxlOwpzdHJ1Y3QgbGFi
ZWxfbm9kZTsKc3RydWN0IHJ0eF9kZWY7CnN0cnVjdCBydHZlY19kZWY7CnN0cnVjdCBzdG10X3N0
YXR1czsKdW5pb24gdHJlZV9ub2RlOwpzdHJ1Y3QgdmFyYXNtX3N0YXR1czsKCgpleHRlcm4gY29u
c3QgY2hhciBlbXB0eV9zdHJpbmdbXTsKZXh0ZXJuIGNvbnN0IGNoYXIgZGlnaXRfdmVjdG9yW107
CgoKCmV4dGVybiB2YXJyYXlfdHlwZSBnZ2NfcGVuZGluZ190cmVlczsKCgp2b2lkIGdnY19hZGRf
cm9vdCAodm9pZCAqYmFzZSwgaW50IG5lbHQsIGludCBzaXplLCB2b2lkICgqKSh2b2lkICopKTsK
dm9pZCBnZ2NfYWRkX3J0eF9yb290IChzdHJ1Y3QgcnR4X2RlZiAqKiwgaW50IG5lbHQpOwp2b2lk
IGdnY19hZGRfdHJlZV9yb290ICh1bmlvbiB0cmVlX25vZGUgKiosIGludCBuZWx0KTsKdm9pZCBn
Z2NfYWRkX3J0eF92YXJyYXlfcm9vdCAoc3RydWN0IHZhcnJheV9oZWFkX3RhZyAqKiwgaW50IG5l
bHQpOwp2b2lkIGdnY19hZGRfdHJlZV92YXJyYXlfcm9vdCAoc3RydWN0IHZhcnJheV9oZWFkX3Rh
ZyAqKiwgaW50IG5lbHQpOwp2b2lkIGdnY19hZGRfdHJlZV9oYXNoX3RhYmxlX3Jvb3QgKHN0cnVj
dCBoYXNoX3RhYmxlICoqLCBpbnQgbmVsdCk7CnZvaWQgZ2djX2RlbF9yb290ICh2b2lkICpiYXNl
KTsKCgoKZXh0ZXJuIHZvaWQgZ2djX21hcmtfcnR4X3ZhcnJheSAoc3RydWN0IHZhcnJheV9oZWFk
X3RhZyAqKTsKZXh0ZXJuIHZvaWQgZ2djX21hcmtfdHJlZV92YXJyYXkgKHN0cnVjdCB2YXJyYXlf
aGVhZF90YWcgKik7CmV4dGVybiB2b2lkIGdnY19tYXJrX3RyZWVfaGFzaF90YWJsZSAoc3RydWN0
IGhhc2hfdGFibGUgKik7CmV4dGVybiB2b2lkIGdnY19tYXJrX3Jvb3RzICh2b2lkKTsKCmV4dGVy
biB2b2lkIGdnY19tYXJrX3J0eF9jaGlsZHJlbiAoc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiB2
b2lkIGdnY19tYXJrX3J0dmVjX2NoaWxkcmVuIChzdHJ1Y3QgcnR2ZWNfZGVmICopOwojIDEwNSAi
L3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9nZ2MuaCIKZXh0ZXJuIHZvaWQgaW5pdF9nZ2Mg
KHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X3N0cmluZ3Bvb2wgKHZvaWQpOwoKCgpleHRlcm4gdm9p
ZCBnZ2NfcHVzaF9jb250ZXh0ICh2b2lkKTsKCgoKZXh0ZXJuIHZvaWQgZ2djX3BvcF9jb250ZXh0
ICh2b2lkKTsKCgoKCnZvaWQgKmdnY19hbGxvYyAoc2l6ZV90KTsKCnZvaWQgKmdnY19hbGxvY19j
bGVhcmVkIChzaXplX3QpOwojIDEzNiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9nZ2Mu
aCIKY29uc3QgY2hhciAqZ2djX2FsbG9jX3N0cmluZyAoY29uc3QgY2hhciAqY29udGVudHMsIGlu
dCBsZW5ndGgpOwoKCgoKCgp2b2lkIGdnY19jb2xsZWN0ICh2b2lkKTsKCgoKCgoKaW50IGdnY19z
ZXRfbWFyayAoY29uc3Qgdm9pZCAqKTsKCgoKCgp2b2lkIGxhbmdfbWFya190cmVlICh1bmlvbiB0
cmVlX25vZGUgKik7CgoKCgoKZXh0ZXJuIHZvaWQgKCpsYW5nX21hcmtfZmFsc2VfbGFiZWxfc3Rh
Y2spIChzdHJ1Y3QgbGFiZWxfbm9kZSAqKTsKCgoKdm9pZCBtYXJrX2VoX3N0YXR1cyAoc3RydWN0
IGVoX3N0YXR1cyAqKTsKdm9pZCBtYXJrX2VtaXRfc3RhdHVzIChzdHJ1Y3QgZW1pdF9zdGF0dXMg
Kik7CnZvaWQgbWFya19leHByX3N0YXR1cyAoc3RydWN0IGV4cHJfc3RhdHVzICopOwp2b2lkIG1h
cmtfc3RtdF9zdGF0dXMgKHN0cnVjdCBzdG10X3N0YXR1cyAqKTsKdm9pZCBtYXJrX3ZhcmFzbV9z
dGF0dXMgKHN0cnVjdCB2YXJhc21fc3RhdHVzICopOwp2b2lkIG1hcmtfb3B0YWIgKHZvaWQgKik7
CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgZ2djX3N0YXRpc3RpY3MKewoKICB1bnNpZ25lZCBudW1fdHJl
ZXNbMjU2XTsKCgogIHNpemVfdCBzaXplX3RyZWVzWzI1Nl07CgogIHVuc2lnbmVkIG51bV9ydHhz
WzI1Nl07CgoKICBzaXplX3Qgc2l6ZV9ydHhzWzI1Nl07CgogIHNpemVfdCB0b3RhbF9zaXplX3Ry
ZWVzOwoKICBzaXplX3QgdG90YWxfc2l6ZV9ydHhzOwoKICB1bnNpZ25lZCB0b3RhbF9udW1fdHJl
ZXM7CgogIHVuc2lnbmVkIHRvdGFsX251bV9ydHhzOwp9IGdnY19zdGF0aXN0aWNzOwoKCnNpemVf
dCBnZ2NfZ2V0X3NpemUgKGNvbnN0IHZvaWQgKik7CgoKCnZvaWQgZ2djX3ByaW50X2NvbW1vbl9z
dGF0aXN0aWNzIChGSUxFICosIGdnY19zdGF0aXN0aWNzICopOwoKCmV4dGVybiB2b2lkIGdnY19w
cmludF9zdGF0aXN0aWNzICh2b2lkKTsKdm9pZCBzdHJpbmdwb29sX3N0YXRpc3RpY3MgKHZvaWQp
OwojIDI5ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5jIiAyCiMgMSAiL3Vzci9z
cmMvZ2NjL2djYy1jdnMtMy4wL2luY2x1ZGUvb2JzdGFjay5oIiAxCiMgMTQ2ICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvaW5jbHVkZS9vYnN0YWNrLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmlu
Zy5oIiAxIDMKIyAxNDcgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9pbmNsdWRlL29ic3RhY2su
aCIgMgojIDE2MCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2luY2x1ZGUvb2JzdGFjay5oIgpz
dHJ1Y3QgX29ic3RhY2tfY2h1bmsKewogIGNoYXIgKmxpbWl0OwogIHN0cnVjdCBfb2JzdGFja19j
aHVuayAqcHJldjsKICBjaGFyIGNvbnRlbnRzWzRdOwp9OwoKc3RydWN0IG9ic3RhY2sKewogIGxv
bmcgY2h1bmtfc2l6ZTsKICBzdHJ1Y3QgX29ic3RhY2tfY2h1bmsgKmNodW5rOwogIGNoYXIgKm9i
amVjdF9iYXNlOwogIGNoYXIgKm5leHRfZnJlZTsKICBjaGFyICpjaHVua19saW1pdDsKICBpbnQg
dGVtcDsKICBpbnQgYWxpZ25tZW50X21hc2s7CgoKCgogIHN0cnVjdCBfb2JzdGFja19jaHVuayAq
KCpjaHVua2Z1bikgKHZvaWQgKiwgbG9uZyk7CiAgdm9pZCAoKmZyZWVmdW4pICh2b2lkICosIHN0
cnVjdCBfb2JzdGFja19jaHVuayAqKTsKICB2b2lkICpleHRyYV9hcmc7CgoKCgoKICB1bnNpZ25l
ZCB1c2VfZXh0cmFfYXJnOjE7CiAgdW5zaWduZWQgbWF5YmVfZW1wdHlfb2JqZWN0OjE7CgoKCiAg
dW5zaWduZWQgYWxsb2NfZmFpbGVkOjE7CgoKfTsKCgoKCmV4dGVybiB2b2lkIF9vYnN0YWNrX25l
d2NodW5rIChzdHJ1Y3Qgb2JzdGFjayAqLCBpbnQpOwpleHRlcm4gdm9pZCBfb2JzdGFja19mcmVl
IChzdHJ1Y3Qgb2JzdGFjayAqLCB2b2lkICopOwpleHRlcm4gaW50IF9vYnN0YWNrX2JlZ2luIChz
dHJ1Y3Qgb2JzdGFjayAqLCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKigqKSAobG9uZyksIHZvaWQgKCopICh2b2lkICopKTsKZXh0ZXJuIGludCBfb2JzdGFja19i
ZWdpbl8xIChzdHJ1Y3Qgb2JzdGFjayAqLCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkICooKikgKHZvaWQgKiwgbG9uZyksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAoKikgKHZvaWQgKiwgdm9pZCAqKSwgdm9pZCAqKTsKZXh0ZXJuIGludCBfb2Jz
dGFja19tZW1vcnlfdXNlZCAoc3RydWN0IG9ic3RhY2sgKik7CiMgMjIyICIvdXNyL3NyYy9nY2Mv
Z2NjLWN2cy0zLjAvaW5jbHVkZS9vYnN0YWNrLmgiCnZvaWQgb2JzdGFja19pbml0IChzdHJ1Y3Qg
b2JzdGFjayAqb2JzdGFjayk7Cgp2b2lkICogb2JzdGFja19hbGxvYyAoc3RydWN0IG9ic3RhY2sg
Km9ic3RhY2ssIGludCBzaXplKTsKCnZvaWQgKiBvYnN0YWNrX2NvcHkgKHN0cnVjdCBvYnN0YWNr
ICpvYnN0YWNrLCB2b2lkICphZGRyZXNzLCBpbnQgc2l6ZSk7CnZvaWQgKiBvYnN0YWNrX2NvcHkw
IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgdm9pZCAqYWRkcmVzcywgaW50IHNpemUpOwoKdm9p
ZCBvYnN0YWNrX2ZyZWUgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCB2b2lkICpibG9jayk7Cgp2
b2lkIG9ic3RhY2tfYmxhbmsgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBpbnQgc2l6ZSk7Cgp2
b2lkIG9ic3RhY2tfZ3JvdyAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHZvaWQgKmRhdGEsIGlu
dCBzaXplKTsKdm9pZCBvYnN0YWNrX2dyb3cwIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgdm9p
ZCAqZGF0YSwgaW50IHNpemUpOwoKdm9pZCBvYnN0YWNrXzFncm93IChzdHJ1Y3Qgb2JzdGFjayAq
b2JzdGFjaywgaW50IGRhdGFfY2hhcik7CnZvaWQgb2JzdGFja19wdHJfZ3JvdyAoc3RydWN0IG9i
c3RhY2sgKm9ic3RhY2ssIHZvaWQgKmRhdGEpOwp2b2lkIG9ic3RhY2tfaW50X2dyb3cgKHN0cnVj
dCBvYnN0YWNrICpvYnN0YWNrLCBpbnQgZGF0YSk7Cgp2b2lkICogb2JzdGFja19maW5pc2ggKHN0
cnVjdCBvYnN0YWNrICpvYnN0YWNrKTsKCmludCBvYnN0YWNrX29iamVjdF9zaXplIChzdHJ1Y3Qg
b2JzdGFjayAqb2JzdGFjayk7CgppbnQgb2JzdGFja19yb29tIChzdHJ1Y3Qgb2JzdGFjayAqb2Jz
dGFjayk7CnZvaWQgb2JzdGFja19tYWtlX3Jvb20gKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBp
bnQgc2l6ZSk7CnZvaWQgb2JzdGFja18xZ3Jvd19mYXN0IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFj
aywgaW50IGRhdGFfY2hhcik7CnZvaWQgb2JzdGFja19wdHJfZ3Jvd19mYXN0IChzdHJ1Y3Qgb2Jz
dGFjayAqb2JzdGFjaywgdm9pZCAqZGF0YSk7CnZvaWQgb2JzdGFja19pbnRfZ3Jvd19mYXN0IChz
dHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgaW50IGRhdGEpOwp2b2lkIG9ic3RhY2tfYmxhbmtfZmFz
dCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIGludCBzaXplKTsKCnZvaWQgKiBvYnN0YWNrX2Jh
c2UgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKTsKdm9pZCAqIG9ic3RhY2tfbmV4dF9mcmVlIChz
dHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7CmludCBvYnN0YWNrX2FsaWdubWVudF9tYXNrIChzdHJ1
Y3Qgb2JzdGFjayAqb2JzdGFjayk7CmludCBvYnN0YWNrX2NodW5rX3NpemUgKHN0cnVjdCBvYnN0
YWNrICpvYnN0YWNrKTsKaW50IG9ic3RhY2tfbWVtb3J5X3VzZWQgKHN0cnVjdCBvYnN0YWNrICpv
YnN0YWNrKTsKIyAyNjYgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9pbmNsdWRlL29ic3RhY2su
aCIKZXh0ZXJuIHZvaWQgKCpvYnN0YWNrX2FsbG9jX2ZhaWxlZF9oYW5kbGVyKSAodm9pZCk7CgoK
CgoKZXh0ZXJuIGludCBvYnN0YWNrX2V4aXRfZmFpbHVyZTsKIyAzMCAiL3Vzci9zcmMvZ2NjL2dj
Yy1jdnMtMy4wL2djYy9ydGwuYyIgMgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mv
dG9wbGV2LmgiIDEKIyAyNSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy90b3BsZXYuaCIK
dW5pb24gdHJlZV9ub2RlOwpzdHJ1Y3QgcnR4X2RlZjsKCgoKCgoKCmV4dGVybiBpbnQgcmVhZF9p
bnRlZ3JhbF9wYXJhbWV0ZXIgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBpbnQp
OwoKZXh0ZXJuIGludCBjb3VudF9lcnJvciAoaW50KTsKZXh0ZXJuIHZvaWQgc3RyaXBfb2ZmX2Vu
ZGluZyAoY2hhciAqLCBpbnQpOwpleHRlcm4gY2hhciAqZmlsZV9uYW1lX25vbmRpcmVjdG9yeSAo
Y29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgcHJpbnRfdGltZSAoY29uc3QgY2hhciAqLCBsb25n
KTsKZXh0ZXJuIHZvaWQgZGVidWdfc3RhcnRfc291cmNlX2ZpbGUgKGNvbnN0IGNoYXIgKik7CmV4
dGVybiB2b2lkIGRlYnVnX2VuZF9zb3VyY2VfZmlsZSAodW5zaWduZWQpOwpleHRlcm4gdm9pZCBk
ZWJ1Z19kZWZpbmUgKHVuc2lnbmVkLCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBkZWJ1Z191
bmRlZiAodW5zaWduZWQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgZGVidWdfaWdub3JlX2Js
b2NrICh1bmlvbiB0cmVlX25vZGUgKik7CmV4dGVybiBjb25zdCBjaGFyICp0cmltX2ZpbGVuYW1l
IChjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBpbnRlcm5hbF9lcnJvciAoY29uc3QgY2hhciAq
LCAuLi4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDEsIDIpKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Jl
dHVybl9fKSk7CmV4dGVybiB2b2lkIGZhdGFsX2lvX2Vycm9yIChjb25zdCBjaGFyICosIC4uLikK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0
ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMSwgMikpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18p
KTsKZXh0ZXJuIHZvaWQgX2ZhdGFsX2luc25fbm90X2ZvdW5kIChzdHJ1Y3QgcnR4X2RlZiAqLCBj
b25zdCBjaGFyICosIGludCwgY29uc3QgY2hhciAqKQoKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwpl
eHRlcm4gdm9pZCBfZmF0YWxfaW5zbiAoY29uc3QgY2hhciAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBj
b25zdCBjaGFyICosIGludCwgY29uc3QgY2hhciAqKQoKCgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
CgoKCgpleHRlcm4gdm9pZCB3YXJuaW5nIChjb25zdCBjaGFyICosIC4uLikKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMSwgMikpKTsKZXh0ZXJuIHZvaWQgZXJyb3IgKGNvbnN0IGNoYXIg
KiwgLi4uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAxLCAyKSkpOwpleHRlcm4gdm9p
ZCBmYXRhbF9lcnJvciAoY29uc3QgY2hhciAqLCAuLi4pCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDEsIDIpKSk7CmV4dGVybiB2b2lkIHBlZHdhcm4gKGNvbnN0IGNoYXIgKiwgLi4uKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRl
X18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAxLCAyKSkpOwpleHRlcm4gdm9pZCBwZWR3YXJu
X3dpdGhfZmlsZV9hbmRfbGluZSAoY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgLi4u
KQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJp
YnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKZXh0ZXJuIHZvaWQgd2Fy
bmluZ193aXRoX2ZpbGVfYW5kX2xpbmUgKGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICos
IC4uLikKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CmV4dGVybiB2b2lk
IGVycm9yX3dpdGhfZmlsZV9hbmRfbGluZSAoY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIg
KiwgLi4uKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKZXh0ZXJuIHZv
aWQgc29ycnkgKGNvbnN0IGNoYXIgKiwgLi4uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9f
LCAxLCAyKSkpOwpleHRlcm4gdm9pZCBkZWZhdWx0X3ByaW50X2Vycm9yX2Z1bmN0aW9uIChjb25z
dCBjaGFyICopOwpleHRlcm4gdm9pZCByZXBvcnRfZXJyb3JfZnVuY3Rpb24gKGNvbnN0IGNoYXIg
Kik7CgpleHRlcm4gdm9pZCByZXN0X29mX2RlY2xfY29tcGlsYXRpb24gKHVuaW9uIHRyZWVfbm9k
ZSAqLCBjb25zdCBjaGFyICosIGludCwgaW50KTsKCmV4dGVybiB2b2lkIHJlc3Rfb2ZfdHlwZV9j
b21waWxhdGlvbiAodW5pb24gdHJlZV9ub2RlICosIGludCk7CmV4dGVybiB2b2lkIHJlc3Rfb2Zf
Y29tcGlsYXRpb24gKHVuaW9uIHRyZWVfbm9kZSAqKTsKCgpleHRlcm4gdm9pZCBwZWR3YXJuX3dp
dGhfZGVjbCAodW5pb24gdHJlZV9ub2RlICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiB2
b2lkIHdhcm5pbmdfd2l0aF9kZWNsICh1bmlvbiB0cmVlX25vZGUgKiwgY29uc3QgY2hhciAqLCAu
Li4pOwoKZXh0ZXJuIHZvaWQgZXJyb3Jfd2l0aF9kZWNsICh1bmlvbiB0cmVlX25vZGUgKiwgY29u
c3QgY2hhciAqLCAuLi4pOwoKCmV4dGVybiB2b2lkIGFubm91bmNlX2Z1bmN0aW9uICh1bmlvbiB0
cmVlX25vZGUgKik7CgpleHRlcm4gdm9pZCBlcnJvcl9mb3JfYXNtIChzdHJ1Y3QgcnR4X2RlZiAq
LCBjb25zdCBjaGFyICosIC4uLikKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMp
KSk7CmV4dGVybiB2b2lkIHdhcm5pbmdfZm9yX2FzbSAoc3RydWN0IHJ0eF9kZWYgKiwgY29uc3Qg
Y2hhciAqLCAuLi4pCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCgoK
CmV4dGVybiBpbnQgZG9fZmxvYXRfaGFuZGxlciAodm9pZCAoKikgKHZvaWQgKiksIHZvaWQgKik7
CgoKZXh0ZXJuIHZvaWQgb3V0cHV0X3F1b3RlZF9zdHJpbmcgKEZJTEUgKiwgY29uc3QgY2hhciAq
KTsKZXh0ZXJuIHZvaWQgb3V0cHV0X2ZpbGVfZGlyZWN0aXZlIChGSUxFICosIGNvbnN0IGNoYXIg
Kik7CgpleHRlcm4gdm9pZCBkb19hYm9ydCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1
cm5fXykpOwpleHRlcm4gdm9pZCBib3RjaCAoY29uc3QgY2hhciAqKQogIF9fYXR0cmlidXRlX18g
KChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gdm9pZCBmbm90aWNlIChGSUxFICosIGNvbnN0IGNo
YXIgKiwgLi4uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCmV4dGVy
biBpbnQgd3JhcHVwX2dsb2JhbF9kZWNsYXJhdGlvbnMgKHVuaW9uIHRyZWVfbm9kZSAqKiwgaW50
KTsKZXh0ZXJuIHZvaWQgY2hlY2tfZ2xvYmFsX2RlY2xhcmF0aW9ucyAodW5pb24gdHJlZV9ub2Rl
ICoqLCBpbnQpOwpleHRlcm4gdm9pZCBub3RlX2RlZmVycmFsX29mX2RlZmluZWRfaW5saW5lX2Z1
bmN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5pb24gdHJl
ZV9ub2RlICopOwpleHRlcm4gdm9pZCBub3RlX291dGxpbmluZ19vZl9pbmxpbmVfZnVuY3Rpb24K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmlvbiB0cmVlX25vZGUg
Kik7CmV4dGVybiBpbnQgZXJyb3Jjb3VudDsKZXh0ZXJuIGludCB3YXJuaW5nY291bnQ7CmV4dGVy
biBpbnQgc29ycnljb3VudDsKCmV4dGVybiBjb25zdCBjaGFyICpwcm9nbmFtZTsKCgpzdHJ1Y3Qg
bGFuZ19ob29rcwp7CgogIHZvaWQgKCppbml0KSAodm9pZCk7CgoKICB2b2lkICgqZmluaXNoKSAo
dm9pZCk7CgoKICB2b2lkICgqaW5pdF9vcHRpb25zKSAodm9pZCk7CgoKCgoKCiAgaW50ICgqZGVj
b2RlX29wdGlvbikgKGludCwgY2hhciAqKik7CgoKICB2b2lkICgqcG9zdF9vcHRpb25zKSAodm9p
ZCk7Cn07CgoKZXh0ZXJuIHN0cnVjdCBsYW5nX2hvb2tzIGxhbmdfaG9va3M7CiMgMzEgIi91c3Iv
c3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmMiIDIKIyAxICIvdXNyL3NyYy9nY2MvZ2NjLWN2
cy0zLjAvaW5jbHVkZS9oYXNodGFiLmgiIDEKIyAzOSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4w
L2luY2x1ZGUvaGFzaHRhYi5oIgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9pbmNsdWRl
L2Fuc2lkZWNsLmgiIDEKIyA0MCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2luY2x1ZGUvaGFz
aHRhYi5oIiAyCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgaGFzaHZhbF90OwoKCgoKdHlwZWRlZiBo
YXNodmFsX3QgKCpodGFiX2hhc2gpIChjb25zdCB2b2lkICopOwoKCgoKCgp0eXBlZGVmIGludCAo
Kmh0YWJfZXEpIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7CgoKCnR5cGVkZWYgdm9pZCAo
Kmh0YWJfZGVsKSAodm9pZCAqKTsKCgoKCgp0eXBlZGVmIGludCAoKmh0YWJfdHJhdikgKHZvaWQg
KiosIHZvaWQgKik7CgoKCgoKCnN0cnVjdCBodGFiCnsKCiAgaHRhYl9oYXNoIGhhc2hfZjsKCgog
IGh0YWJfZXEgZXFfZjsKCgogIGh0YWJfZGVsIGRlbF9mOwoKCiAgdm9pZCAqICplbnRyaWVzOwoK
CiAgc2l6ZV90IHNpemU7CgoKICBzaXplX3Qgbl9lbGVtZW50czsKCgogIHNpemVfdCBuX2RlbGV0
ZWQ7CgoKCiAgdW5zaWduZWQgaW50IHNlYXJjaGVzOwoKCgogIHVuc2lnbmVkIGludCBjb2xsaXNp
b25zOwoKCgogIGludCByZXR1cm5fYWxsb2NhdGlvbl9mYWlsdXJlOwp9OwoKdHlwZWRlZiBzdHJ1
Y3QgaHRhYiAqaHRhYl90OwoKCmVudW0gaW5zZXJ0X29wdGlvbiB7Tk9fSU5TRVJULCBJTlNFUlR9
OwoKCgpleHRlcm4gaHRhYl90IGh0YWJfY3JlYXRlIChzaXplX3QsIGh0YWJfaGFzaCwgaHRhYl9l
cSwgaHRhYl9kZWwpOwoKCgoKCmV4dGVybiBodGFiX3QgaHRhYl90cnlfY3JlYXRlIChzaXplX3Qs
IGh0YWJfaGFzaCwgaHRhYl9lcSwgaHRhYl9kZWwpOwoKZXh0ZXJuIHZvaWQgaHRhYl9kZWxldGUg
KGh0YWJfdCk7CmV4dGVybiB2b2lkIGh0YWJfZW1wdHkgKGh0YWJfdCk7CgpleHRlcm4gdm9pZCAq
IGh0YWJfZmluZCAoaHRhYl90LCBjb25zdCB2b2lkICopOwpleHRlcm4gdm9pZCAqICpodGFiX2Zp
bmRfc2xvdCAoaHRhYl90LCBjb25zdCB2b2lkICosIGVudW0gaW5zZXJ0X29wdGlvbik7CgpleHRl
cm4gdm9pZCAqIGh0YWJfZmluZF93aXRoX2hhc2ggKGh0YWJfdCwgY29uc3Qgdm9pZCAqLCBoYXNo
dmFsX3QpOwoKZXh0ZXJuIHZvaWQgKiAqaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoIChodGFiX3Qs
IGNvbnN0IHZvaWQgKiwgaGFzaHZhbF90LCBlbnVtIGluc2VydF9vcHRpb24pOwoKCmV4dGVybiB2
b2lkIGh0YWJfY2xlYXJfc2xvdCAoaHRhYl90LCB2b2lkICoqKTsKZXh0ZXJuIHZvaWQgaHRhYl9y
ZW1vdmVfZWx0IChodGFiX3QsIHZvaWQgKik7CgpleHRlcm4gdm9pZCBodGFiX3RyYXZlcnNlICho
dGFiX3QsIGh0YWJfdHJhdiwgdm9pZCAqKTsKCmV4dGVybiBzaXplX3QgaHRhYl9zaXplIChodGFi
X3QpOwpleHRlcm4gc2l6ZV90IGh0YWJfZWxlbWVudHMgKGh0YWJfdCk7CmV4dGVybiBkb3VibGUg
aHRhYl9jb2xsaXNpb25zIChodGFiX3QpOwoKCmV4dGVybiBodGFiX2hhc2ggaHRhYl9oYXNoX3Bv
aW50ZXI7CgoKZXh0ZXJuIGh0YWJfZXEgaHRhYl9lcV9wb2ludGVyOwojIDMyICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5jIiAyCiMgMTA2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0z
LjAvZ2NjL3J0bC5jIgpjb25zdCBpbnQgcnR4X2xlbmd0aFsoKGludClMQVNUX0FORF9VTlVTRURf
UlRYX0NPREUpICsgMV0gPSB7CiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwu
ZGVmIiAxCiMgNzAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKc2l6ZW9m
ICIqIiAtIDEgLAoKCgpzaXplb2YgIioiIC0gMSAsCgoKCgoKCnNpemVvZiAiZWUiIC0gMSAsCgoK
CnNpemVvZiAidWUiIC0gMSAsCiMgMTI0ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0
bC5kZWYiCnNpemVvZiAiaXNzIiAtIDEgLAoKCgoKCgpzaXplb2YgImlzIiAtIDEgLAoKCgoKc2l6
ZW9mICJpIiAtIDEgLAoKCgoKCgoKc2l6ZW9mICJpc0UiIC0gMSAsCiMgMTUzICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVvZiAiaXNFIiAtIDEgLAoKCgoKc2l6ZW9m
ICJpRSIgLSAxICwKCgoKCnNpemVvZiAiaUUiIC0gMSAsCgoKCgpzaXplb2YgImlzIiAtIDEgLAoj
IDE4NyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgpzaXplb2YgInNFc3NW
IiAtIDEgLAoKCgoKCgoKc2l6ZW9mICJFc3NWIiAtIDEgLAojIDIwNSAiL3Vzci9zcmMvZ2NjL2dj
Yy1jdnMtMy4wL2djYy9ydGwuZGVmIgpzaXplb2YgIkVzRVMiIC0gMSAsCiMgMjMyICIvdXNyL3Ny
Yy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVvZiAic0Vzc3NFU1YiIC0gMSAsCgoK
CnNpemVvZiAiRXNFUyIgLSAxICwKCgoKc2l6ZW9mICJFc3MiIC0gMSAsCiMgMjUyICIvdXNyL3Ny
Yy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVvZiAic0VzcyIgLSAxICwKIyAyNjgg
Ii91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKc2l6ZW9mICJlRSIgLSAxICwK
IyAzMDkgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKc2l6ZW9mICJzaWll
aWlWIiAtIDEgLAoKCnNpemVvZiAiViIgLSAxICwKIyAzMjUgIi91c3Ivc3JjL2djYy9nY2MtY3Zz
LTMuMC9nY2MvcnRsLmRlZiIKc2l6ZW9mICJFc3MiIC0gMSAsCgoKCgoKc2l6ZW9mICJFIiAtIDEg
LAoKCnNpemVvZiAiZSIgLSAxICwKIyAzNDUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mv
cnRsLmRlZiIKc2l6ZW9mICJzc2UiIC0gMSAsCgoKc2l6ZW9mICJzIiAtIDEgLAoKCgoKCgoKc2l6
ZW9mICJzcyIgLSAxICwKIyAzNzEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRl
ZiIKc2l6ZW9mICJzRSIgLSAxICwKCgoKCnNpemVvZiAic3MiIC0gMSAsCiMgMzg2ICIvdXNyL3Ny
Yy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVvZiAicyIgLSAxICwKIyAzOTkgIi91
c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKc2l6ZW9mICJpdXVlaWVlIiAtIDEg
LAoKCgpzaXplb2YgIml1dWVpZWUwIiAtIDEgLAoKCgoKCgpzaXplb2YgIml1dWVpZWVlIiAtIDEg
LAoKCnNpemVvZiAiaXV1IiAtIDEgLAojIDQyMiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2dj
Yy9ydGwuZGVmIgpzaXplb2YgIml1dTAwaXNzIiAtIDEgLAoKCgoKCgpzaXplb2YgIml1dTBuaSIg
LSAxICwKIyA0NDIgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKc2l6ZW9m
ICJlZSIgLSAxICwKCgpzaXplb2YgIkUiIC0gMSAsCgoKCgoKCgpzaXplb2YgInMiIC0gMSAsCiMg
NDY3ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVvZiAic3NpRUVz
aSIgLSAxICwKIyA0NzggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKc2l6
ZW9mICJFaSIgLSAxICwKCgpzaXplb2YgIkVpIiAtIDEgLAoKCgpzaXplb2YgIkUiIC0gMSAsCiMg
NTEwICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVvZiAiZUVlZTAi
IC0gMSAsCiMgNTIyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVv
ZiAiZWUiIC0gMSAsCgoKCgpzaXplb2YgImUiIC0gMSAsCgoKCgpzaXplb2YgImUiIC0gMSAsCgoK
CgoKc2l6ZW9mICJlZSIgLSAxICwKCgoKc2l6ZW9mICIiIC0gMSAsCgoKCgoKc2l6ZW9mICJlZSIg
LSAxICwKCgoKCgoKc2l6ZW9mICJ3IiAtIDEgLAojIDU2NSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMt
My4wL2djYy9ydGwuZGVmIgpzaXplb2YgImUwd3d3d3ciIC0gMSAsCgoKc2l6ZW9mICJzIiAtIDEg
LAoKCgoKCnNpemVvZiAiZSIgLSAxICwKCgoKc2l6ZW9mICIiIC0gMSAsCgoKc2l6ZW9mICIwIiAt
IDEgLAojIDU5MCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgpzaXplb2Yg
ImkwIiAtIDEgLAoKCgoKCgpzaXplb2YgIjAiIC0gMSAsCiMgNjA3ICIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVvZiAiZWkiIC0gMSAsCiMgNjIwICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVvZiAiZSIgLSAxICwKCgoKCgpzaXplb2Yg
ImVlIiAtIDEgLAoKCgoKCnNpemVvZiAiZTAiIC0gMSAsCgoKCgoKc2l6ZW9mICJ1MDAiIC0gMSAs
CgoKCgoKc2l6ZW9mICJzIiAtIDEgLAoKCgoKCgpzaXplb2YgIiIgLSAxICwKIyA2NjAgIi91c3Iv
c3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKc2l6ZW9mICJlaXQiIC0gMSAsCiMgNjc4
ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVvZiAiZWVlZWUiIC0g
MSAsCiMgNjkwICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVvZiAi
ZWVlIiAtIDEgLAojIDY5OSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgpz
aXplb2YgIkVlIiAtIDEgLAoKCnNpemVvZiAiZWUiIC0gMSAsCgoKc2l6ZW9mICJlZSIgLSAxICwK
CgpzaXplb2YgImVlIiAtIDEgLAoKCnNpemVvZiAiZSIgLSAxICwKCnNpemVvZiAiZWUiIC0gMSAs
CgoKc2l6ZW9mICJlZSIgLSAxICwKCnNpemVvZiAiZWUiIC0gMSAsCgoKc2l6ZW9mICJlZSIgLSAx
ICwKc2l6ZW9mICJlZSIgLSAxICwKCgpzaXplb2YgImVlIiAtIDEgLAoKc2l6ZW9mICJlZSIgLSAx
ICwKCnNpemVvZiAiZWUiIC0gMSAsCgpzaXplb2YgImUiIC0gMSAsCgoKCgpzaXplb2YgImVlIiAt
IDEgLApzaXplb2YgImVlIiAtIDEgLApzaXplb2YgImVlIiAtIDEgLApzaXplb2YgImVlIiAtIDEg
LApzaXplb2YgImVlIiAtIDEgLAoKCgoKCnNpemVvZiAiZWUiIC0gMSAsCnNpemVvZiAiZWUiIC0g
MSAsCnNpemVvZiAiZWUiIC0gMSAsCnNpemVvZiAiZWUiIC0gMSAsCiMgNzU4ICIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCnNpemVvZiAiZSIgLSAxICwKc2l6ZW9mICJlIiAt
IDEgLApzaXplb2YgImUiIC0gMSAsCnNpemVvZiAiZSIgLSAxICwKIyA3NzUgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKc2l6ZW9mICJlZSIgLSAxICwKc2l6ZW9mICJlZSIg
LSAxICwKCgoKc2l6ZW9mICJlZSIgLSAxICwKc2l6ZW9mICJlZSIgLSAxICwKc2l6ZW9mICJlZSIg
LSAxICwKc2l6ZW9mICJlZSIgLSAxICwKc2l6ZW9mICJlZSIgLSAxICwKc2l6ZW9mICJlZSIgLSAx
ICwKc2l6ZW9mICJlZSIgLSAxICwKc2l6ZW9mICJlZSIgLSAxICwKc2l6ZW9mICJlZSIgLSAxICwK
c2l6ZW9mICJlZSIgLSAxICwKCgpzaXplb2YgImVlIiAtIDEgLApzaXplb2YgImVlIiAtIDEgLAoK
CnNpemVvZiAiZWUiIC0gMSAsCnNpemVvZiAiZWUiIC0gMSAsCnNpemVvZiAiZWUiIC0gMSAsCnNp
emVvZiAiZWUiIC0gMSAsCnNpemVvZiAiZWUiIC0gMSAsCgoKc2l6ZW9mICJlZSIgLSAxICwKCgoK
CnNpemVvZiAiZSIgLSAxICwKCgpzaXplb2YgImUiIC0gMSAsCgoKc2l6ZW9mICJlIiAtIDEgLAoK
CnNpemVvZiAiZSIgLSAxICwKc2l6ZW9mICJlIiAtIDEgLAoKCnNpemVvZiAiZSIgLSAxICwKCgoK
CgoKCnNpemVvZiAiZSIgLSAxICwKCgpzaXplb2YgImUiIC0gMSAsCgoKCgpzaXplb2YgImUiIC0g
MSAsCgoKc2l6ZW9mICJlIiAtIDEgLAoKCnNpemVvZiAiZSIgLSAxICwKCgoKCnNpemVvZiAiZSIg
LSAxICwKIyA4NTkgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKc2l6ZW9m
ICJlZWUiIC0gMSAsCgoKc2l6ZW9mICJlZWUiIC0gMSAsCgoKCgpzaXplb2YgImUiIC0gMSAsCgoK
CnNpemVvZiAiZWUiIC0gMSAsCiMgODg0ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0
bC5kZWYiCnNpemVvZiAidXVFaWlpaWlpYmJpaSIgLSAxICwKIyA4OTkgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKc2l6ZW9mICJpaWlpaWlpaXR0IiAtIDEgLAoKCgoKCnNp
emVvZiAiZXRpIiAtIDEgLAoKCgpzaXplb2YgImJpIiAtIDEgLAoKCgoKc2l6ZW9mICJlIiAtIDEg
LAojIDkzNSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgpzaXplb2YgInV1
dXUiIC0gMSAsCgoKCgoKCnNpemVvZiAiZWVlIiAtIDEgLAoKCgoKCnNpemVvZiAiZWUiIC0gMSAs
CgoKCgpzaXplb2YgImVlIiAtIDEgLAoKCgpzaXplb2YgImUiIC0gMSAsCgoKCgoKc2l6ZW9mICJl
IiAtIDEgLAoKCnNpemVvZiAiZWUiIC0gMSAsCgoKc2l6ZW9mICJlZSIgLSAxICwKCgpzaXplb2Yg
ImVlIiAtIDEgLAoKCnNpemVvZiAiZWUiIC0gMSAsCgoKc2l6ZW9mICJlIiAtIDEgLAoKCnNpemVv
ZiAiZSIgLSAxICwKIyA5OTUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIK
c2l6ZW9mICJFIiAtIDEgLAojIDEwOCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwu
YyIgMgp9OwoKCgoKCgoKY29uc3QgY2hhciAqIGNvbnN0IHJ0eF9uYW1lW10gPSB7CiMgMSAiL3Vz
ci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIiAxCiMgNzAgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKIlVuS25vd24iICwKCgoKIm5pbCIgLAoKCgoKCgoiZXhw
cl9saXN0IiAsCgoKCiJpbnNuX2xpc3QiICwKIyAxMjQgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMu
MC9nY2MvcnRsLmRlZiIKIm1hdGNoX29wZXJhbmQiICwKCgoKCgoKIm1hdGNoX3NjcmF0Y2giICwK
CgoKCiJtYXRjaF9kdXAiICwKCgoKCgoKCiJtYXRjaF9vcGVyYXRvciIgLAojIDE1MyAiL3Vzci9z
cmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoibWF0Y2hfcGFyYWxsZWwiICwKCgoKCiJt
YXRjaF9vcF9kdXAiICwKCgoKCiJtYXRjaF9wYXJfZHVwIiAsCgoKCgoibWF0Y2hfaW5zbiIgLAoj
IDE4NyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoiZGVmaW5lX2luc24i
ICwKCgoKCgoKCiJkZWZpbmVfcGVlcGhvbGUiICwKIyAyMDUgIi91c3Ivc3JjL2djYy9nY2MtY3Zz
LTMuMC9nY2MvcnRsLmRlZiIKImRlZmluZV9zcGxpdCIgLAojIDIzMiAiL3Vzci9zcmMvZ2NjL2dj
Yy1jdnMtMy4wL2djYy9ydGwuZGVmIgoiZGVmaW5lX2luc25fYW5kX3NwbGl0IiAsCgoKCiJkZWZp
bmVfcGVlcGhvbGUyIiAsCgoKCiJkZWZpbmVfY29tYmluZSIgLAojIDI1MiAiL3Vzci9zcmMvZ2Nj
L2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoiZGVmaW5lX2V4cGFuZCIgLAojIDI2OCAiL3Vzci9z
cmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoiZGVmaW5lX2RlbGF5IiAsCiMgMzA5ICIv
dXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJkZWZpbmVfZnVuY3Rpb25fdW5p
dCIgLAoKCiJkZWZpbmVfYXNtX2F0dHJpYnV0ZXMiICwKIyAzMjUgIi91c3Ivc3JjL2djYy9nY2Mt
Y3ZzLTMuMC9nY2MvcnRsLmRlZiIKImRlZmluZV9jb25kX2V4ZWMiICwKCgoKCgoic2VxdWVuY2Ui
ICwKCgoiYWRkcmVzcyIgLAojIDM0NSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwu
ZGVmIgoiZGVmaW5lX2F0dHIiICwKCgoiYXR0ciIgLAoKCgoKCgoKInNldF9hdHRyIiAsCiMgMzcx
ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJzZXRfYXR0cl9hbHRlcm5h
dGl2ZSIgLAoKCgoKImVxX2F0dHIiICwKIyAzODYgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9n
Y2MvcnRsLmRlZiIKImF0dHJfZmxhZyIgLAojIDM5OSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4w
L2djYy9ydGwuZGVmIgoiaW5zbiIgLAoKCgoianVtcF9pbnNuIiAsCgoKCgoKCiJjYWxsX2luc24i
ICwKCgoiYmFycmllciIgLAojIDQyMiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwu
ZGVmIgoiY29kZV9sYWJlbCIgLAoKCgoKCgoibm90ZSIgLAojIDQ0MiAiL3Vzci9zcmMvZ2NjL2dj
Yy1jdnMtMy4wL2djYy9ydGwuZGVmIgoiY29uZF9leGVjIiAsCgoKInBhcmFsbGVsIiAsCgoKCgoK
CgoiYXNtX2lucHV0IiAsCiMgNDY3ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5k
ZWYiCiJhc21fb3BlcmFuZHMiICwKIyA0NzggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mv
cnRsLmRlZiIKInVuc3BlYyIgLAoKCiJ1bnNwZWNfdm9sYXRpbGUiICwKCgoKImFkZHJfdmVjIiAs
CiMgNTEwICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJhZGRyX2RpZmZf
dmVjIiAsCiMgNTIyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJzZXQi
ICwKCgoKCiJ1c2UiICwKCgoKCiJjbG9iYmVyIiAsCgoKCgoKImNhbGwiICwKCgoKInJldHVybiIg
LAoKCgoKCiJ0cmFwX2lmIiAsCgoKCgoKCiJjb25zdF9pbnQiICwKIyA1NjUgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKImNvbnN0X2RvdWJsZSIgLAoKCiJjb25zdF9zdHJp
bmciICwKCgoKCgoiY29uc3QiICwKCgoKInBjIiAsCgoKInZhbHVlIiAsCiMgNTkwICIvdXNyL3Ny
Yy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJyZWciICwKCgoKCgoKInNjcmF0Y2giICwK
IyA2MDcgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKInN1YnJlZyIgLAoj
IDYyMCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoic3RyaWN0X2xvd19w
YXJ0IiAsCgoKCgoKImNvbmNhdCIgLAoKCgoKCiJtZW0iICwKCgoKCgoibGFiZWxfcmVmIiAsCgoK
CgoKInN5bWJvbF9yZWYiICwKCgoKCgoKImNjMCIgLAojIDY2MCAiL3Vzci9zcmMvZ2NjL2djYy1j
dnMtMy4wL2djYy9ydGwuZGVmIgoiYWRkcmVzc29mIiAsCiMgNjc4ICIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJxdWV1ZWQiICwKIyA2OTAgIi91c3Ivc3JjL2djYy9nY2Mt
Y3ZzLTMuMC9nY2MvcnRsLmRlZiIKImlmX3RoZW5fZWxzZSIgLAojIDY5OSAiL3Vzci9zcmMvZ2Nj
L2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoiY29uZCIgLAoKCiJjb21wYXJlIiAsCgoKInBsdXMi
ICwKCgoibWludXMiICwKCgoibmVnIiAsCgoibXVsdCIgLAoKCiJkaXYiICwKCiJtb2QiICwKCgoi
dWRpdiIgLAoidW1vZCIgLAoKCiJhbmQiICwKCiJpb3IiICwKCiJ4b3IiICwKCiJub3QiICwKCgoK
CiJhc2hpZnQiICwKInJvdGF0ZSIgLAoiYXNoaWZ0cnQiICwKImxzaGlmdHJ0IiAsCiJyb3RhdGVy
dCIgLAoKCgoKCiJzbWluIiAsCiJzbWF4IiAsCiJ1bWluIiAsCiJ1bWF4IiAsCiMgNzU4ICIvdXNy
L3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJwcmVfZGVjIiAsCiJwcmVfaW5jIiAs
CiJwb3N0X2RlYyIgLAoicG9zdF9pbmMiICwKIyA3NzUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMu
MC9nY2MvcnRsLmRlZiIKInByZV9tb2RpZnkiICwKInBvc3RfbW9kaWZ5IiAsCgoKCiJuZSIgLAoi
ZXEiICwKImdlIiAsCiJndCIgLAoibGUiICwKImx0IiAsCiJnZXUiICwKImd0dSIgLAoibGV1IiAs
CiJsdHUiICwKCgoidW5vcmRlcmVkIiAsCiJvcmRlcmVkIiAsCgoKInVuZXEiICwKInVuZ2UiICwK
InVuZ3QiICwKInVubGUiICwKInVubHQiICwKCgoibHRndCIgLAoKCgoKInNpZ25fZXh0ZW5kIiAs
CgoKInplcm9fZXh0ZW5kIiAsCgoKInRydW5jYXRlIiAsCgoKImZsb2F0X2V4dGVuZCIgLAoiZmxv
YXRfdHJ1bmNhdGUiICwKCgoiZmxvYXQiICwKCgoKCgoKCiJmaXgiICwKCgoidW5zaWduZWRfZmxv
YXQiICwKCgoKCiJ1bnNpZ25lZF9maXgiICwKCgoiYWJzIiAsCgoKInNxcnQiICwKCgoKCiJmZnMi
ICwKIyA4NTkgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKInNpZ25fZXh0
cmFjdCIgLAoKCiJ6ZXJvX2V4dHJhY3QiICwKCgoKCiJoaWdoIiAsCgoKCiJsb19zdW0iICwKIyA4
ODQgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKInJhbmdlX2luZm8iICwK
IyA4OTkgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKInJhbmdlX3JlZyIg
LAoKCgoKCiJyYW5nZV92YXIiICwKCgoKInJhbmdlX2xpdmUiICwKCgoKCiJjb25zdGFudF9wX3J0
eCIgLAojIDkzNSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoiY2FsbF9w
bGFjZWhvbGRlciIgLAoKCgoKCgoidmVjX21lcmdlIiAsCgoKCgoKInZlY19zZWxlY3QiICwKCgoK
CiJ2ZWNfY29uY2F0IiAsCgoKCiJ2ZWNfY29uc3QiICwKCgoKCgoidmVjX2R1cGxpY2F0ZSIgLAoK
CiJzc19wbHVzIiAsCgoKInVzX3BsdXMiICwKCgoic3NfbWludXMiICwKCgoidXNfbWludXMiICwK
Cgoic3NfdHJ1bmNhdGUiICwKCgoidXNfdHJ1bmNhdGUiICwKIyA5OTUgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKInBoaSIgLAojIDExOCAiL3Vzci9zcmMvZ2NjL2djYy1j
dnMtMy4wL2djYy9ydGwuYyIgMgp9OwojIDEyNyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2dj
Yy9ydGwuYyIKY29uc3QgY2hhciAqIGNvbnN0IG1vZGVfbmFtZVsoaW50KSBNQVhfTUFDSElORV9N
T0RFICsgMV0gPSB7CiMgMSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9tYWNobW9kZS5k
ZWYiIDEKIyA2NyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9tYWNobW9kZS5kZWYiCiJW
T0lEIiwKCiJCSSIsCiJRSSIsCiJISSIsCiJTSSIsCiJESSIsCiJUSSIsCiJPSSIsCgoKCgoiUFFJ
IiwKIlBISSIsCiJQU0kiLAoiUERJIiwKCiJRRiIsCiJIRiIsCiJUUUYiLAoiU0YiLAoiREYiLAoi
WEYiLAoiVEYiLAoKCiJRQyIsCiJIQyIsCiJTQyIsCiJEQyIsCiJYQyIsCiJUQyIsCgoiQ1FJIiwK
IkNISSIsCiJDU0kiLAoiQ0RJIiwKIkNUSSIsCiJDT0kiLAoKCgoKIlYyUUkiLAoiVjJISSIsCiJW
MlNJIiwKIlYyREkiLAoKIlY0UUkiLAoiVjRISSIsCiJWNFNJIiwKIlY0REkiLAoKIlY4UUkiLAoi
VjhISSIsCiJWOFNJIiwKIlY4REkiLAoKIlYxNlFJIiwKCiJWMlNGIiwKIlYyREYiLAoKIlY0U0Yi
LAoiVjRERiIsCgoiVjhTRiIsCiJWOERGIiwKCgoKIkJMSyIsCiMgMTQ4ICIvdXNyL3NyYy9nY2Mv
Z2NjLWN2cy0zLjAvZ2NjL21hY2htb2RlLmRlZiIKIkNDIiwKCgoiQ0NHQyIsICJDQ0dPQyIsICJD
Q05PIiwgIkNDWiIsICJDQ0ZQIiwgIkNDRlBVIiwKIyAxMjkgIi91c3Ivc3JjL2djYy9nY2MtY3Zz
LTMuMC9nY2MvcnRsLmMiIDIKCgogICIiCn07CgoKCgoKCgpjb25zdCBlbnVtIG1vZGVfY2xhc3Mg
bW9kZV9jbGFzc1soaW50KSBNQVhfTUFDSElORV9NT0RFXSA9IHsKIyAxICIvdXNyL3NyYy9nY2Mv
Z2NjLWN2cy0zLjAvZ2NjL21hY2htb2RlLmRlZiIgMQojIDY3ICIvdXNyL3NyYy9nY2MvZ2NjLWN2
cy0zLjAvZ2NjL21hY2htb2RlLmRlZiIKTU9ERV9SQU5ET00sCgpNT0RFX0lOVCwKTU9ERV9JTlQs
Ck1PREVfSU5ULApNT0RFX0lOVCwKTU9ERV9JTlQsCk1PREVfSU5ULApNT0RFX0lOVCwKCgoKCk1P
REVfUEFSVElBTF9JTlQsCk1PREVfUEFSVElBTF9JTlQsCk1PREVfUEFSVElBTF9JTlQsCk1PREVf
UEFSVElBTF9JTlQsCgpNT0RFX0ZMT0FULApNT0RFX0ZMT0FULApNT0RFX0ZMT0FULApNT0RFX0ZM
T0FULApNT0RFX0ZMT0FULApNT0RFX0ZMT0FULApNT0RFX0ZMT0FULAoKCk1PREVfQ09NUExFWF9G
TE9BVCwKTU9ERV9DT01QTEVYX0ZMT0FULApNT0RFX0NPTVBMRVhfRkxPQVQsCk1PREVfQ09NUExF
WF9GTE9BVCwKTU9ERV9DT01QTEVYX0ZMT0FULApNT0RFX0NPTVBMRVhfRkxPQVQsCgpNT0RFX0NP
TVBMRVhfSU5ULApNT0RFX0NPTVBMRVhfSU5ULApNT0RFX0NPTVBMRVhfSU5ULApNT0RFX0NPTVBM
RVhfSU5ULApNT0RFX0NPTVBMRVhfSU5ULApNT0RFX0NPTVBMRVhfSU5ULAoKCgoKTU9ERV9WRUNU
T1JfSU5ULApNT0RFX1ZFQ1RPUl9JTlQsCk1PREVfVkVDVE9SX0lOVCwKTU9ERV9WRUNUT1JfSU5U
LAoKTU9ERV9WRUNUT1JfSU5ULApNT0RFX1ZFQ1RPUl9JTlQsCk1PREVfVkVDVE9SX0lOVCwKTU9E
RV9WRUNUT1JfSU5ULAoKTU9ERV9WRUNUT1JfSU5ULApNT0RFX1ZFQ1RPUl9JTlQsCk1PREVfVkVD
VE9SX0lOVCwKTU9ERV9WRUNUT1JfSU5ULAoKTU9ERV9WRUNUT1JfSU5ULAoKTU9ERV9WRUNUT1Jf
RkxPQVQsCk1PREVfVkVDVE9SX0ZMT0FULAoKTU9ERV9WRUNUT1JfRkxPQVQsCk1PREVfVkVDVE9S
X0ZMT0FULAoKTU9ERV9WRUNUT1JfRkxPQVQsCk1PREVfVkVDVE9SX0ZMT0FULAoKCgpNT0RFX1JB
TkRPTSwKIyAxNDggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuZGVmIgpN
T0RFX0NDLAoKCk1PREVfQ0MsIE1PREVfQ0MsIE1PREVfQ0MsIE1PREVfQ0MsIE1PREVfQ0MsIE1P
REVfQ0MsCiMgMTQyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5jIiAyCn07CiMg
MTUxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5jIgpjb25zdCB1bnNpZ25lZCBp
bnQgbW9kZV9iaXRzaXplWyhpbnQpIE1BWF9NQUNISU5FX01PREVdID0gewojIDEgIi91c3Ivc3Jj
L2djYy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuZGVmIiAxCiMgNjcgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuZGVmIgowLAoKMSwKOCwKOCoyLAo4KjQsCjgqOCwKOCox
NiwKOCozMiwKCgoKCjgsCjgqMiwKOCo0LAo4KjgsCgo4LAo4KjIsCjgqMywKOCo0LAo4KjgsCjgq
MTIsCjgqMTYsCgoKOCoyLAo4KjQsCjgqOCwKOCoxNiwKOCoyNCwKOCozMiwKCjgqMiwKOCo0LAo4
KjgsCjgqMTYsCjgqMzIsCjgqNjQsCgoKCgo4KjIsCjgqNCwKOCo4LAo4KjE2LAoKOCo0LAo4Kjgs
CjgqMTYsCjgqMzIsCgo4KjgsCjgqMTYsCjgqMzIsCjgqNjQsCgo4KjE2LAoKOCo4LAo4KjE2LAoK
OCoxNiwKOCozMiwKCjgqMzIsCjgqNjQsCgoKCjAsCiMgMTQ4ICIvdXNyL3NyYy9nY2MvZ2NjLWN2
cy0zLjAvZ2NjL21hY2htb2RlLmRlZiIKOCo0LAoKCjgqNCwgOCo0LCA4KjQsIDgqNCwgOCo0LCA4
KjQsCiMgMTUzICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5jIiAyCn07CiMgMTYy
ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5jIgpjb25zdCB1bnNpZ25lZCBpbnQg
bW9kZV9zaXplWyhpbnQpIE1BWF9NQUNISU5FX01PREVdID0gewojIDEgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuZGVmIiAxCiMgNjcgIi91c3Ivc3JjL2djYy9nY2MtY3Zz
LTMuMC9nY2MvbWFjaG1vZGUuZGVmIgowLAoKMSwKMSwKMiwKNCwKOCwKMTYsCjMyLAoKCgoKMSwK
MiwKNCwKOCwKCjEsCjIsCjMsCjQsCjgsCjEyLAoxNiwKCgoyLAo0LAo4LAoxNiwKMjQsCjMyLAoK
MiwKNCwKOCwKMTYsCjMyLAo2NCwKCgoKCjIsCjQsCjgsCjE2LAoKNCwKOCwKMTYsCjMyLAoKOCwK
MTYsCjMyLAo2NCwKCjE2LAoKOCwKMTYsCgoxNiwKMzIsCgozMiwKNjQsCgoKCjAsCiMgMTQ4ICIv
dXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL21hY2htb2RlLmRlZiIKNCwKCgo0LCA0LCA0LCA0
LCA0LCA0LAojIDE2NCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuYyIgMgp9Owoj
IDE3MyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuYyIKY29uc3QgdW5zaWduZWQg
aW50IG1vZGVfdW5pdF9zaXplWyhpbnQpIE1BWF9NQUNISU5FX01PREVdID0gewojIDEgIi91c3Iv
c3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuZGVmIiAxCiMgNjcgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuZGVmIgowLAoKMSwKMSwKMiwKNCwKOCwKMTYsCjMy
LAoKCgoKMSwKMiwKNCwKOCwKCjEsCjIsCjMsCjQsCjgsCjEyLAoxNiwKCgoxLAoyLAo0LAo4LAox
MiwKMTYsCgoxLAoyLAo0LAo4LAoxNiwKMzIsCgoKCgoxLAoyLAo0LAo4LAoKMSwKMiwKNCwKOCwK
CjEsCjIsCjQsCjgsCgoxLAoKNCwKOCwKCjQsCjgsCgo0LAo4LAoKCgowLAojIDE0OCAiL3Vzci9z
cmMvZ2NjL2djYy1jdnMtMy4wL2djYy9tYWNobW9kZS5kZWYiCjQsCgoKNCwgNCwgNCwgNCwgNCwg
NCwKIyAxNzUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmMiIDIKfTsKIyAxODYg
Ii91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmMiCmNvbnN0IHVuc2lnbmVkIGNoYXIg
bW9kZV93aWRlcl9tb2RlWyhpbnQpIE1BWF9NQUNISU5FX01PREVdID0gewojIDEgIi91c3Ivc3Jj
L2djYy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuZGVmIiAxCiMgNjcgIi91c3Ivc3JjL2djYy9n
Y2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuZGVmIgoodW5zaWduZWQgY2hhcikgVk9JRG1vZGUsCgoo
dW5zaWduZWQgY2hhcikgUUltb2RlLAoodW5zaWduZWQgY2hhcikgSEltb2RlLAoodW5zaWduZWQg
Y2hhcikgU0ltb2RlLAoodW5zaWduZWQgY2hhcikgREltb2RlLAoodW5zaWduZWQgY2hhcikgVElt
b2RlLAoodW5zaWduZWQgY2hhcikgT0ltb2RlLAoodW5zaWduZWQgY2hhcikgVk9JRG1vZGUsCgoK
CgoodW5zaWduZWQgY2hhcikgUEhJbW9kZSwKKHVuc2lnbmVkIGNoYXIpIFBTSW1vZGUsCih1bnNp
Z25lZCBjaGFyKSBQREltb2RlLAoodW5zaWduZWQgY2hhcikgVk9JRG1vZGUsCgoodW5zaWduZWQg
Y2hhcikgSEZtb2RlLAoodW5zaWduZWQgY2hhcikgVFFGbW9kZSwKKHVuc2lnbmVkIGNoYXIpIFNG
bW9kZSwKKHVuc2lnbmVkIGNoYXIpIERGbW9kZSwKKHVuc2lnbmVkIGNoYXIpIFhGbW9kZSwKKHVu
c2lnbmVkIGNoYXIpIFRGbW9kZSwKKHVuc2lnbmVkIGNoYXIpIFZPSURtb2RlLAoKCih1bnNpZ25l
ZCBjaGFyKSBIQ21vZGUsCih1bnNpZ25lZCBjaGFyKSBTQ21vZGUsCih1bnNpZ25lZCBjaGFyKSBE
Q21vZGUsCih1bnNpZ25lZCBjaGFyKSBYQ21vZGUsCih1bnNpZ25lZCBjaGFyKSBUQ21vZGUsCih1
bnNpZ25lZCBjaGFyKSBWT0lEbW9kZSwKCih1bnNpZ25lZCBjaGFyKSBDSEltb2RlLAoodW5zaWdu
ZWQgY2hhcikgQ1NJbW9kZSwKKHVuc2lnbmVkIGNoYXIpIENESW1vZGUsCih1bnNpZ25lZCBjaGFy
KSBDVEltb2RlLAoodW5zaWduZWQgY2hhcikgQ09JbW9kZSwKKHVuc2lnbmVkIGNoYXIpIFZPSURt
b2RlLAoKCgoKKHVuc2lnbmVkIGNoYXIpIFZPSURtb2RlLAoodW5zaWduZWQgY2hhcikgVk9JRG1v
ZGUsCih1bnNpZ25lZCBjaGFyKSBWT0lEbW9kZSwKKHVuc2lnbmVkIGNoYXIpIFZPSURtb2RlLAoK
KHVuc2lnbmVkIGNoYXIpIFZPSURtb2RlLAoodW5zaWduZWQgY2hhcikgVk9JRG1vZGUsCih1bnNp
Z25lZCBjaGFyKSBWT0lEbW9kZSwKKHVuc2lnbmVkIGNoYXIpIFZPSURtb2RlLAoKKHVuc2lnbmVk
IGNoYXIpIFZPSURtb2RlLAoodW5zaWduZWQgY2hhcikgVk9JRG1vZGUsCih1bnNpZ25lZCBjaGFy
KSBWT0lEbW9kZSwKKHVuc2lnbmVkIGNoYXIpIFZPSURtb2RlLAoKKHVuc2lnbmVkIGNoYXIpIFZP
SURtb2RlLAoKKHVuc2lnbmVkIGNoYXIpIFZPSURtb2RlLAoodW5zaWduZWQgY2hhcikgVk9JRG1v
ZGUsCgoodW5zaWduZWQgY2hhcikgVk9JRG1vZGUsCih1bnNpZ25lZCBjaGFyKSBWT0lEbW9kZSwK
Cih1bnNpZ25lZCBjaGFyKSBWT0lEbW9kZSwKKHVuc2lnbmVkIGNoYXIpIFZPSURtb2RlLAoKCgoo
dW5zaWduZWQgY2hhcikgVk9JRG1vZGUsCiMgMTQ4ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAv
Z2NjL21hY2htb2RlLmRlZiIKKHVuc2lnbmVkIGNoYXIpIFZPSURtb2RlLAoKCih1bnNpZ25lZCBj
aGFyKSBWT0lEbW9kZSwgKHVuc2lnbmVkIGNoYXIpIFZPSURtb2RlLCAodW5zaWduZWQgY2hhcikg
Vk9JRG1vZGUsICh1bnNpZ25lZCBjaGFyKSBWT0lEbW9kZSwgKHVuc2lnbmVkIGNoYXIpIFZPSURt
b2RlLCAodW5zaWduZWQgY2hhcikgVk9JRG1vZGUsCiMgMTg4ICIvdXNyL3NyYy9nY2MvZ2NjLWN2
cy0zLjAvZ2NjL3J0bC5jIiAyCn07CiMgMTk3ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2Nj
L3J0bC5jIgpjb25zdCB1bnNpZ25lZCBpbnQgbW9kZV9tYXNrX2FycmF5WyhpbnQpIE1BWF9NQUNI
SU5FX01PREVdID0gewojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUu
ZGVmIiAxCiMgNjcgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvbWFjaG1vZGUuZGVmIgoo
KDApID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoMCkp
IC0gMSwKCigoMSkgPj0gMzIpID8gfih1bnNpZ25lZCBpbnQpMCA6ICgodW5zaWduZWQgaW50KSAx
IDw8ICgxKSkgLSAxLAooKDgpID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVk
IGludCkgMSA8PCAoOCkpIC0gMSwKKCg4KjIpID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAo
KHVuc2lnbmVkIGludCkgMSA8PCAoOCoyKSkgLSAxLAooKDgqNCkgPj0gMzIpID8gfih1bnNpZ25l
ZCBpbnQpMCA6ICgodW5zaWduZWQgaW50KSAxIDw8ICg4KjQpKSAtIDEsCigoOCo4KSA+PSAzMikg
PyB+KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqOCkpIC0gMSwKKCg4
KjE2KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgq
MTYpKSAtIDEsCigoOCozMikgPj0gMzIpID8gfih1bnNpZ25lZCBpbnQpMCA6ICgodW5zaWduZWQg
aW50KSAxIDw8ICg4KjMyKSkgLSAxLAoKCgoKKCg4KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkw
IDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgpKSAtIDEsCigoOCoyKSA+PSAzMikgPyB+KHVuc2ln
bmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqMikpIC0gMSwKKCg4KjQpID49IDMy
KSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCo0KSkgLSAxLAoo
KDgqOCkgPj0gMzIpID8gfih1bnNpZ25lZCBpbnQpMCA6ICgodW5zaWduZWQgaW50KSAxIDw8ICg4
KjgpKSAtIDEsCgooKDgpID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGlu
dCkgMSA8PCAoOCkpIC0gMSwKKCg4KjIpID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVu
c2lnbmVkIGludCkgMSA8PCAoOCoyKSkgLSAxLAooKDgqMykgPj0gMzIpID8gfih1bnNpZ25lZCBp
bnQpMCA6ICgodW5zaWduZWQgaW50KSAxIDw8ICg4KjMpKSAtIDEsCigoOCo0KSA+PSAzMikgPyB+
KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqNCkpIC0gMSwKKCg4Kjgp
ID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCo4KSkg
LSAxLAooKDgqMTIpID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkg
MSA8PCAoOCoxMikpIC0gMSwKKCg4KjE2KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDogKCh1
bnNpZ25lZCBpbnQpIDEgPDwgKDgqMTYpKSAtIDEsCgoKKCg4KjIpID49IDMyKSA/IH4odW5zaWdu
ZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCoyKSkgLSAxLAooKDgqNCkgPj0gMzIp
ID8gfih1bnNpZ25lZCBpbnQpMCA6ICgodW5zaWduZWQgaW50KSAxIDw8ICg4KjQpKSAtIDEsCigo
OCo4KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgq
OCkpIC0gMSwKKCg4KjE2KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBp
bnQpIDEgPDwgKDgqMTYpKSAtIDEsCigoOCoyNCkgPj0gMzIpID8gfih1bnNpZ25lZCBpbnQpMCA6
ICgodW5zaWduZWQgaW50KSAxIDw8ICg4KjI0KSkgLSAxLAooKDgqMzIpID49IDMyKSA/IH4odW5z
aWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCozMikpIC0gMSwKCigoOCoyKSA+
PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqMikpIC0g
MSwKKCg4KjQpID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8
PCAoOCo0KSkgLSAxLAooKDgqOCkgPj0gMzIpID8gfih1bnNpZ25lZCBpbnQpMCA6ICgodW5zaWdu
ZWQgaW50KSAxIDw8ICg4KjgpKSAtIDEsCigoOCoxNikgPj0gMzIpID8gfih1bnNpZ25lZCBpbnQp
MCA6ICgodW5zaWduZWQgaW50KSAxIDw8ICg4KjE2KSkgLSAxLAooKDgqMzIpID49IDMyKSA/IH4o
dW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCozMikpIC0gMSwKKCg4KjY0
KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqNjQp
KSAtIDEsCgoKCgooKDgqMikgPj0gMzIpID8gfih1bnNpZ25lZCBpbnQpMCA6ICgodW5zaWduZWQg
aW50KSAxIDw8ICg4KjIpKSAtIDEsCigoOCo0KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDog
KCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqNCkpIC0gMSwKKCg4KjgpID49IDMyKSA/IH4odW5zaWdu
ZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCo4KSkgLSAxLAooKDgqMTYpID49IDMy
KSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCoxNikpIC0gMSwK
CigoOCo0KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwg
KDgqNCkpIC0gMSwKKCg4KjgpID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVk
IGludCkgMSA8PCAoOCo4KSkgLSAxLAooKDgqMTYpID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAg
OiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCoxNikpIC0gMSwKKCg4KjMyKSA+PSAzMikgPyB+KHVu
c2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqMzIpKSAtIDEsCgooKDgqOCkg
Pj0gMzIpID8gfih1bnNpZ25lZCBpbnQpMCA6ICgodW5zaWduZWQgaW50KSAxIDw8ICg4KjgpKSAt
IDEsCigoOCoxNikgPj0gMzIpID8gfih1bnNpZ25lZCBpbnQpMCA6ICgodW5zaWduZWQgaW50KSAx
IDw8ICg4KjE2KSkgLSAxLAooKDgqMzIpID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVu
c2lnbmVkIGludCkgMSA8PCAoOCozMikpIC0gMSwKKCg4KjY0KSA+PSAzMikgPyB+KHVuc2lnbmVk
IGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqNjQpKSAtIDEsCgooKDgqMTYpID49IDMy
KSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCoxNikpIC0gMSwK
CigoOCo4KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwg
KDgqOCkpIC0gMSwKKCg4KjE2KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25l
ZCBpbnQpIDEgPDwgKDgqMTYpKSAtIDEsCgooKDgqMTYpID49IDMyKSA/IH4odW5zaWduZWQgaW50
KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCoxNikpIC0gMSwKKCg4KjMyKSA+PSAzMikgPyB+
KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqMzIpKSAtIDEsCgooKDgq
MzIpID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCoz
MikpIC0gMSwKKCg4KjY0KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBp
bnQpIDEgPDwgKDgqNjQpKSAtIDEsCgoKCigoMCkgPj0gMzIpID8gfih1bnNpZ25lZCBpbnQpMCA6
ICgodW5zaWduZWQgaW50KSAxIDw8ICgwKSkgLSAxLAojIDE0OCAiL3Vzci9zcmMvZ2NjL2djYy1j
dnMtMy4wL2djYy9tYWNobW9kZS5kZWYiCigoOCo0KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkw
IDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqNCkpIC0gMSwKCgooKDgqNCkgPj0gMzIpID8gfih1
bnNpZ25lZCBpbnQpMCA6ICgodW5zaWduZWQgaW50KSAxIDw8ICg4KjQpKSAtIDEsICgoOCo0KSA+
PSAzMikgPyB+KHVuc2lnbmVkIGludCkwIDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqNCkpIC0g
MSwgKCg4KjQpID49IDMyKSA/IH4odW5zaWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8
PCAoOCo0KSkgLSAxLCAoKDgqNCkgPj0gMzIpID8gfih1bnNpZ25lZCBpbnQpMCA6ICgodW5zaWdu
ZWQgaW50KSAxIDw8ICg4KjQpKSAtIDEsICgoOCo0KSA+PSAzMikgPyB+KHVuc2lnbmVkIGludCkw
IDogKCh1bnNpZ25lZCBpbnQpIDEgPDwgKDgqNCkpIC0gMSwgKCg4KjQpID49IDMyKSA/IH4odW5z
aWduZWQgaW50KTAgOiAoKHVuc2lnbmVkIGludCkgMSA8PCAoOCo0KSkgLSAxLAojIDE5OSAiL3Vz
ci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuYyIgMgp9OwojIDIxMCAiL3Vzci9zcmMvZ2Nj
L2djYy1jdnMtMy4wL2djYy9ydGwuYyIKY29uc3QgZW51bSBtYWNoaW5lX21vZGUgY2xhc3NfbmFy
cm93ZXN0X21vZGVbKGludCkgTUFYX01PREVfQ0xBU1NdID0gewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZPSURtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFJ
bW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRRm1vZGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFFJbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ21vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1FJbW9kZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQ21vZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVjJRSW1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjJT
Rm1vZGUKfTsKCgoKCgoKY29uc3QgY2hhciAqIGNvbnN0IHJ0eF9mb3JtYXRbXSA9IHsKIyAyNTMg
Ii91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmMiCiMgMSAiL3Vzci9zcmMvZ2NjL2dj
Yy1jdnMtMy4wL2djYy9ydGwuZGVmIiAxCiMgNzAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9n
Y2MvcnRsLmRlZiIKIioiICwKCgoKIioiICwKCgoKCgoKImVlIiAsCgoKCiJ1ZSIgLAojIDEyNCAi
L3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoiaXNzIiAsCgoKCgoKCiJpcyIg
LAoKCgoKImkiICwKCgoKCgoKCiJpc0UiICwKIyAxNTMgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMu
MC9nY2MvcnRsLmRlZiIKImlzRSIgLAoKCgoKImlFIiAsCgoKCgoiaUUiICwKCgoKCiJpcyIgLAoj
IDE4NyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoic0Vzc1YiICwKCgoK
CgoKCiJFc3NWIiAsCiMgMjA1ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYi
CiJFc0VTIiAsCiMgMjMyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJz
RXNzc0VTViIgLAoKCgoiRXNFUyIgLAoKCgoiRXNzIiAsCiMgMjUyICIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJzRXNzIiAsCiMgMjY4ICIvdXNyL3NyYy9nY2MvZ2NjLWN2
cy0zLjAvZ2NjL3J0bC5kZWYiCiJlRSIgLAojIDMwOSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4w
L2djYy9ydGwuZGVmIgoic2lpZWlpViIgLAoKCiJWIiAsCiMgMzI1ICIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJFc3MiICwKCgoKCgoiRSIgLAoKCiJlIiAsCiMgMzQ1ICIv
dXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJzc2UiICwKCgoicyIgLAoKCgoK
CgoKInNzIiAsCiMgMzcxICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJz
RSIgLAoKCgoKInNzIiAsCiMgMzg2ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5k
ZWYiCiJzIiAsCiMgMzk5ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJp
dXVlaWVlIiAsCgoKCiJpdXVlaWVlMCIgLAoKCgoKCgoiaXV1ZWllZWUiICwKCgoiaXV1IiAsCiMg
NDIyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJpdXUwMGlzcyIgLAoK
CgoKCgoiaXV1MG5pIiAsCiMgNDQyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5k
ZWYiCiJlZSIgLAoKCiJFIiAsCgoKCgoKCgoicyIgLAojIDQ2NyAiL3Vzci9zcmMvZ2NjL2djYy1j
dnMtMy4wL2djYy9ydGwuZGVmIgoic3NpRUVzaSIgLAojIDQ3OCAiL3Vzci9zcmMvZ2NjL2djYy1j
dnMtMy4wL2djYy9ydGwuZGVmIgoiRWkiICwKCgoiRWkiICwKCgoKIkUiICwKIyA1MTAgIi91c3Iv
c3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKImVFZWUwIiAsCiMgNTIyICIvdXNyL3Ny
Yy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJlZSIgLAoKCgoKImUiICwKCgoKCiJlIiAs
CgoKCgoKImVlIiAsCgoKCiIiICwKCgoKCgoiZWUiICwKCgoKCgoKInciICwKIyA1NjUgIi91c3Iv
c3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKImUwd3d3d3ciICwKCgoicyIgLAoKCgoK
CiJlIiAsCgoKCiIiICwKCgoiMCIgLAojIDU5MCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2dj
Yy9ydGwuZGVmIgoiaTAiICwKCgoKCgoKIjAiICwKIyA2MDcgIi91c3Ivc3JjL2djYy9nY2MtY3Zz
LTMuMC9nY2MvcnRsLmRlZiIKImVpIiAsCiMgNjIwICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAv
Z2NjL3J0bC5kZWYiCiJlIiAsCgoKCgoKImVlIiAsCgoKCgoKImUwIiAsCgoKCgoKInUwMCIgLAoK
CgoKCiJzIiAsCgoKCgoKCiIiICwKIyA2NjAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2Mv
cnRsLmRlZiIKImVpdCIgLAojIDY3OCAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwu
ZGVmIgoiZWVlZWUiICwKIyA2OTAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRl
ZiIKImVlZSIgLAojIDY5OSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoi
RWUiICwKCgoiZWUiICwKCgoiZWUiICwKCgoiZWUiICwKCgoiZSIgLAoKImVlIiAsCgoKImVlIiAs
CgoiZWUiICwKCgoiZWUiICwKImVlIiAsCgoKImVlIiAsCgoiZWUiICwKCiJlZSIgLAoKImUiICwK
CgoKCiJlZSIgLAoiZWUiICwKImVlIiAsCiJlZSIgLAoiZWUiICwKCgoKCgoiZWUiICwKImVlIiAs
CiJlZSIgLAoiZWUiICwKIyA3NTggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRl
ZiIKImUiICwKImUiICwKImUiICwKImUiICwKIyA3NzUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMu
MC9nY2MvcnRsLmRlZiIKImVlIiAsCiJlZSIgLAoKCgoiZWUiICwKImVlIiAsCiJlZSIgLAoiZWUi
ICwKImVlIiAsCiJlZSIgLAoiZWUiICwKImVlIiAsCiJlZSIgLAoiZWUiICwKCgoiZWUiICwKImVl
IiAsCgoKImVlIiAsCiJlZSIgLAoiZWUiICwKImVlIiAsCiJlZSIgLAoKCiJlZSIgLAoKCgoKImUi
ICwKCgoiZSIgLAoKCiJlIiAsCgoKImUiICwKImUiICwKCgoiZSIgLAoKCgoKCgoKImUiICwKCgoi
ZSIgLAoKCgoKImUiICwKCgoiZSIgLAoKCiJlIiAsCgoKCgoiZSIgLAojIDg1OSAiL3Vzci9zcmMv
Z2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoiZWVlIiAsCgoKImVlZSIgLAoKCgoKImUiICwK
CgoKImVlIiAsCiMgODg0ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJ1
dUVpaWlpaWliYmlpIiAsCiMgODk5ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5k
ZWYiCiJpaWlpaWlpaXR0IiAsCgoKCgoKImV0aSIgLAoKCgoiYmkiICwKCgoKCiJlIiAsCiMgOTM1
ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCiJ1dXV1IiAsCgoKCgoKCiJl
ZWUiICwKCgoKCgoiZWUiICwKCgoKCiJlZSIgLAoKCgoiZSIgLAoKCgoKCiJlIiAsCgoKImVlIiAs
CgoKImVlIiAsCgoKImVlIiAsCgoKImVlIiAsCgoKImUiICwKCgoiZSIgLAojIDk5NSAiL3Vzci9z
cmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoiRSIgLAojIDI1NCAiL3Vzci9zcmMvZ2Nj
L2djYy1jdnMtMy4wL2djYy9ydGwuYyIgMgoKfTsKCgoKCmNvbnN0IGNoYXIgcnR4X2NsYXNzW10g
PSB7CgojIDEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIgMQojIDcwICIv
dXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCid4JywKCgoKJ3gnLAoKCgoKCgon
eCcsCgoKCid4JywKIyAxMjQgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIK
J20nLAoKCgoKCgonbScsCgoKCgonbScsCgoKCgoKCgonbScsCiMgMTUzICIvdXNyL3NyYy9nY2Mv
Z2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCidtJywKCgoKCidtJywKCgoKCidtJywKCgoKCidtJywK
IyAxODcgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKJ3gnLAoKCgoKCgoK
J3gnLAojIDIwNSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoneCcsCiMg
MjMyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCid4JywKCgoKJ3gnLAoK
CgoneCcsCiMgMjUyICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCid4JywK
IyAyNjggIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKJ3gnLAojIDMwOSAi
L3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoneCcsCgoKJ3gnLAojIDMyNSAi
L3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoneCcsCgoKCgoKJ3gnLAoKCidt
JywKIyAzNDUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKJ3gnLAoKCid4
JywKCgoKCgoKCid4JywKIyAzNzEgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRl
ZiIKJ3gnLAoKCgoKJ3gnLAojIDM4NiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwu
ZGVmIgoneCcsCiMgMzk5ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCidp
JywKCgoKJ2knLAoKCgoKCgonaScsCgoKJ3gnLAojIDQyMiAiL3Vzci9zcmMvZ2NjL2djYy1jdnMt
My4wL2djYy9ydGwuZGVmIgoneCcsCgoKCgoKCid4JywKIyA0NDIgIi91c3Ivc3JjL2djYy9nY2Mt
Y3ZzLTMuMC9nY2MvcnRsLmRlZiIKJ3gnLAoKCid4JywKCgoKCgoKCid4JywKIyA0NjcgIi91c3Iv
c3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKJ3gnLAojIDQ3OCAiL3Vzci9zcmMvZ2Nj
L2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgoneCcsCgoKJ3gnLAoKCgoneCcsCiMgNTEwICIvdXNy
L3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCid4JywKIyA1MjIgIi91c3Ivc3JjL2dj
Yy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKJ3gnLAoKCgoKJ3gnLAoKCgoKJ3gnLAoKCgoKCid4
JywKCgoKJ3gnLAoKCgoKCid4JywKCgoKCgoKJ28nLAojIDU2NSAiL3Vzci9zcmMvZ2NjL2djYy1j
dnMtMy4wL2djYy9ydGwuZGVmIgonbycsCgoKJ28nLAoKCgoKCidvJywKCgoKJ28nLAoKCidvJywK
IyA1OTAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKJ28nLAoKCgoKCgon
bycsCiMgNjA3ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCid4JywKIyA2
MjAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKJ3gnLAoKCgoKCidvJywK
CgoKCgonbycsCgoKCgoKJ28nLAoKCgoKCidvJywKCgoKCgoKJ28nLAojIDY2MCAiL3Vzci9zcmMv
Z2NjL2djYy1jdnMtMy4wL2djYy9ydGwuZGVmIgonbycsCiMgNjc4ICIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvZ2NjL3J0bC5kZWYiCid4JywKIyA2OTAgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMu
MC9nY2MvcnRsLmRlZiIKJzMnLAojIDY5OSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9y
dGwuZGVmIgoneCcsCgoKJzInLAoKCidjJywKCgonMicsCgoKJzEnLAoKJ2MnLAoKCicyJywKCicy
JywKCgonMicsCicyJywKCgonYycsCgonYycsCgonYycsCgonMScsCgoKCgonMicsCicyJywKJzIn
LAonMicsCicyJywKCgoKCgonYycsCidjJywKJ2MnLAonYycsCiMgNzU4ICIvdXNyL3NyYy9nY2Mv
Z2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCidhJywKJ2EnLAonYScsCidhJywKIyA3NzUgIi91c3Iv
c3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKJ2EnLAonYScsCgoKCic8JywKJzwnLAon
PCcsCic8JywKJzwnLAonPCcsCic8JywKJzwnLAonPCcsCic8JywKCgonPCcsCic8JywKCgonPCcs
Cic8JywKJzwnLAonPCcsCic8JywKCgonPCcsCgoKCgonMScsCgoKJzEnLAoKCicxJywKCgonMScs
CicxJywKCgonMScsCgoKCgoKCgonMScsCgoKJzEnLAoKCgoKJzEnLAoKCicxJywKCgonMScsCgoK
CgonMScsCiMgODU5ICIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCidiJywK
CgonYicsCgoKCgonbycsCgoKCidvJywKIyA4ODQgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9n
Y2MvcnRsLmRlZiIKJ3gnLAojIDg5OSAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwu
ZGVmIgoneCcsCgoKCgoKJ3gnLAoKCgoneCcsCgoKCgoneCcsCiMgOTM1ICIvdXNyL3NyYy9nY2Mv
Z2NjLWN2cy0zLjAvZ2NjL3J0bC5kZWYiCid4JywKCgoKCgoKJ3gnLAoKCgoKCid4JywKCgoKCid4
JywKCgoKJ3gnLAoKCgoKCid4JywKCgonYycsCgoKJ2MnLAoKCicyJywKCgonMicsCgoKJzEnLAoK
CicxJywKIyA5OTUgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmRlZiIKJ3gnLAoj
IDI2MyAiL3Vzci9zcmMvZ2NjL2djYy1jdnMtMy4wL2djYy9ydGwuYyIgMgoKfTsKCgoKY29uc3Qg
Y2hhciAqIGNvbnN0IG5vdGVfaW5zbl9uYW1lW05PVEVfSU5TTl9NQVggLSBOT1RFX0lOU05fQklB
U10gPQp7CiAgIiIsICJOT1RFX0lOU05fREVMRVRFRCIsCiAgIk5PVEVfSU5TTl9CTE9DS19CRUci
LCAiTk9URV9JTlNOX0JMT0NLX0VORCIsCiAgIk5PVEVfSU5TTl9MT09QX0JFRyIsICJOT1RFX0lO
U05fTE9PUF9FTkQiLAogICJOT1RFX0lOU05fTE9PUF9DT05UIiwgIk5PVEVfSU5TTl9MT09QX1ZU
T1AiLAogICJOT1RFX0lOU05fRlVOQ1RJT05fRU5EIiwgIk5PVEVfSU5TTl9TRVRKTVAiLAogICJO
T1RFX0lOU05fUFJPTE9HVUVfRU5EIiwgIk5PVEVfSU5TTl9FUElMT0dVRV9CRUciLAogICJOT1RF
X0lOU05fREVMRVRFRF9MQUJFTCIsICJOT1RFX0lOU05fRlVOQ1RJT05fQkVHIiwKICAiTk9URV9J
TlNOX0VIX1JFR0lPTl9CRUciLCAiTk9URV9JTlNOX0VIX1JFR0lPTl9FTkQiLAogICJOT1RFX0lO
U05fUkVQRUFURURfTElORV9OVU1CRVIiLCAiTk9URV9JTlNOX1JBTkdFX0JFRyIsCiAgIk5PVEVf
SU5TTl9SQU5HRV9FTkQiLCAiTk9URV9JTlNOX0xJVkUiLAogICJOT1RFX0lOU05fQkFTSUNfQkxP
Q0siLCAiTk9URV9JTlNOX0VYUEVDVEVEX1ZBTFVFIgp9OwoKY29uc3QgY2hhciAqIGNvbnN0IHJl
Z19ub3RlX25hbWVbXSA9CnsKICAiIiwgIlJFR19ERUFEIiwgIlJFR19JTkMiLCAiUkVHX0VRVUlW
IiwgIlJFR19FUVVBTCIsCiAgIlJFR19XQVNfMCIsICJSRUdfUkVUVkFMIiwgIlJFR19MSUJDQUxM
IiwgIlJFR19OT05ORUciLAogICJSRUdfTk9fQ09ORkxJQ1QiLCAiUkVHX1VOVVNFRCIsICJSRUdf
Q0NfU0VUVEVSIiwgIlJFR19DQ19VU0VSIiwKICAiUkVHX0xBQkVMIiwgIlJFR19ERVBfQU5USSIs
ICJSRUdfREVQX09VVFBVVCIsICJSRUdfQlJfUFJPQiIsCiAgIlJFR19FWEVDX0NPVU5UIiwgIlJF
R19OT0FMSUFTIiwgIlJFR19TQVZFX0FSRUEiLCAiUkVHX0JSX1BSRUQiLAogICJSRUdfRlJBTUVf
UkVMQVRFRF9FWFBSIiwgIlJFR19FSF9DT05URVhUIiwgIlJFR19FSF9SRUdJT04iLAogICJSRUdf
RUhfUkVUSFJPVyIsICJSRUdfU0FWRV9OT1RFIiwgIlJFR19NQVlCRV9ERUFEIiwgIlJFR19OT1JF
VFVSTiIsCiAgIlJFR19OT05fTE9DQUxfR09UTyIKfTsKCnN0YXRpYyBodGFiX3QgbWRfY29uc3Rh
bnRzOwoKc3RhdGljIHZvaWQgZmF0YWxfd2l0aF9maWxlX2FuZF9saW5lIChGSUxFICosIGNvbnN0
IGNoYXIgKiwgLi4uKQogIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAy
LCAzKSkpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKc3RhdGljIHZvaWQgZmF0YWxf
ZXhwZWN0ZWRfY2hhciAoRklMRSAqLCBpbnQsIGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1
cm5fXykpOwpzdGF0aWMgdm9pZCByZWFkX25hbWUgKGNoYXIgKiwgRklMRSAqKTsKc3RhdGljIHVu
c2lnbmVkIGRlZl9oYXNoIChjb25zdCB2b2lkICopOwpzdGF0aWMgaW50IGRlZl9uYW1lX2VxX3Ag
KGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKc3RhdGljIHZvaWQgcmVhZF9jb25zdGFudHMg
KEZJTEUgKmluZmlsZSwgY2hhciAqdG1wX2NoYXIpOwoKCgoKCnJ0dmVjCnJ0dmVjX2FsbG9jIChu
KQogICAgIGludCBuOwp7CiAgcnR2ZWMgcnQ7CgogIHJ0ID0gKChzdHJ1Y3QgcnR2ZWNfZGVmICop
IGdnY19hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgcnR2ZWNfZGVmKSArICgobikgLSAxKSAqIHNpemVv
ZiAocnR4KSkpOwoKICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKG4gKiBz
aXplb2YgKHJ0eCkpICYmIChuICogc2l6ZW9mIChydHgpKSA8PSAxNiA/ICgobiAqIHNpemVvZiAo
cnR4KSkgPT0gMSA/ICh7IHZvaWQgKl9fcyA9ICgmcnQtPmVsZW1bMF0pOyAqKChfX3VpbnQ4X3Qg
KikgX19zKSA9IChfX3VpbnQ4X3QpIDA7IF9fczsgfSkgOiAoeyB2b2lkICpfX3MgPSAoJnJ0LT5l
bGVtWzBdKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsgdW5zaWduZWQgc2hvcnQgaW50IF9f
dXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9fczsgX191aW50OF90IF9fYyA9IChf
X3VpbnQ4X3QpICgwKTsgc3dpdGNoICgodW5zaWduZWQgaW50KSAobiAqIHNpemVvZiAocnR4KSkp
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
X19zID0gKCZydC0+ZWxlbVswXSk7IF9fYnVpbHRpbl9tZW1zZXQgKF9fcywgJ1wwJywgbiAqIHNp
emVvZiAocnR4KSk7IF9fczsgfSkgOiBtZW1zZXQgKCZydC0+ZWxlbVswXSwgMCwgbiAqIHNpemVv
ZiAocnR4KSkpKSk7CgogICgocnQpLT5udW1fZWxlbSA9IChuKSk7CiAgcmV0dXJuIHJ0Owp9CgoK
CgpydHgKcnR4X2FsbG9jIChjb2RlKQogIGVudW0gcnR4X2NvZGUgY29kZTsKewogIHJ0eCBydDsK
ICBpbnQgbiA9IChydHhfbGVuZ3RoWyhpbnQpIChjb2RlKV0pOwoKICBydCA9ICgoc3RydWN0IHJ0
eF9kZWYgKikgZ2djX2FsbG9jIChzaXplb2YgKHN0cnVjdCBydHhfZGVmKSArICgobikgLSAxKSAq
IHNpemVvZiAocnR1bmlvbikpKTsKCgoKCgogIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29u
c3RhbnRfcCAoc2l6ZW9mIChzdHJ1Y3QgcnR4X2RlZikgLSBzaXplb2YgKHJ0dW5pb24pKSAmJiAo
c2l6ZW9mIChzdHJ1Y3QgcnR4X2RlZikgLSBzaXplb2YgKHJ0dW5pb24pKSA8PSAxNiA/ICgoc2l6
ZW9mIChzdHJ1Y3QgcnR4X2RlZikgLSBzaXplb2YgKHJ0dW5pb24pKSA9PSAxID8gKHsgdm9pZCAq
X19zID0gKHJ0KTsgKigoX191aW50OF90ICopIF9fcykgPSAoX191aW50OF90KSAwOyBfX3M7IH0p
IDogKHsgdm9pZCAqX19zID0gKHJ0KTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9fczsgX191
aW50OF90IF9fYyA9IChfX3VpbnQ4X3QpICgwKTsgc3dpdGNoICgodW5zaWduZWQgaW50KSAoc2l6
ZW9mIChzdHJ1Y3QgcnR4X2RlZikgLSBzaXplb2YgKHJ0dW5pb24pKSkgeyBjYXNlIDE1OiBfX3Ut
Pl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBf
X3UgKyA0KTsgY2FzZSAxMTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19l
eHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNzogX191LT5fX3VpID0gX19jICog
MHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2Ug
MzogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgX191ID0g
X19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7IF9fdS0+X191YyA9ICh1bnNpZ25lZCBj
aGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMDogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7IGNhc2UgNjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMjogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBz
aG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgYnJlYWs7IGNhc2UgMTM6IF9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNl
IDk6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDQpOyBjYXNlIDU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDE6IF9fdS0+X191YyA9
ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE2OiBfX3UtPl9fdWkgPSBfX2MgKiAw
eDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAx
MjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgNCk7IGNhc2UgODogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNDogX191LT5fX3VpID0g
X19jICogMHgwMTAxMDEwMTsgY2FzZSAwOiBicmVhazsgfSBfX3M7IH0pKSA6IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoMCkgJiYgKDApID09ICdcMCcgPyAoeyB2b2lkICpfX3MgPSAocnQpOyBfX2J1
aWx0aW5fbWVtc2V0IChfX3MsICdcMCcsIHNpemVvZiAoc3RydWN0IHJ0eF9kZWYpIC0gc2l6ZW9m
IChydHVuaW9uKSk7IF9fczsgfSkgOiBtZW1zZXQgKHJ0LCAwLCBzaXplb2YgKHN0cnVjdCBydHhf
ZGVmKSAtIHNpemVvZiAocnR1bmlvbikpKSkpOwogICgocnQpLT5jb2RlID0gKGNvZGUpKTsKICBy
ZXR1cm4gcnQ7Cn0KCgoKCgoKcnR4CmNvcHlfcnR4IChvcmlnKQogICAgIHJlZ2lzdGVyIHJ0eCBv
cmlnOwp7CiAgcmVnaXN0ZXIgcnR4IGNvcHk7CiAgcmVnaXN0ZXIgaW50IGksIGo7CiAgcmVnaXN0
ZXIgZW51bSBydHhfY29kZSBjb2RlOwogIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKmZvcm1hdF9wdHI7
CgogIGNvZGUgPSAoKG9yaWcpLT5jb2RlKTsKCiAgc3dpdGNoIChjb2RlKQogICAgewogICAgY2Fz
ZSBSRUc6CiAgICBjYXNlIFFVRVVFRDoKICAgIGNhc2UgQ09OU1RfSU5UOgogICAgY2FzZSBDT05T
VF9ET1VCTEU6CiAgICBjYXNlIFNZTUJPTF9SRUY6CiAgICBjYXNlIENPREVfTEFCRUw6CiAgICBj
YXNlIFBDOgogICAgY2FzZSBDQzA6CiAgICBjYXNlIFNDUkFUQ0g6CgogICAgY2FzZSBBRERSRVNT
T0Y6CiAgICAgIHJldHVybiBvcmlnOwoKICAgIGNhc2UgQ09OU1Q6CgoKICAgICAgaWYgKCgoKCgo
b3JpZyktPmZsZFswXSkucnR4KSktPmNvZGUpID09IFBMVVMKICAgICAgICAgICYmICgoKCgoKCgo
b3JpZyktPmZsZFswXSkucnR4KSktPmZsZFswXSkucnR4KSktPmNvZGUpID09IFNZTUJPTF9SRUYK
ICAgICAgICAgICYmICgoKCgoKCgob3JpZyktPmZsZFswXSkucnR4KSktPmZsZFsxXSkucnR4KSkt
PmNvZGUpID09IENPTlNUX0lOVCkKICAgICAgICByZXR1cm4gb3JpZzsKICAgICAgYnJlYWs7CgoK
CgoKCiAgICBkZWZhdWx0OgogICAgICBicmVhazsKICAgIH0KCiAgY29weSA9IHJ0eF9hbGxvYyAo
Y29kZSk7CgoKCgoKICBtZW1jcHkgKGNvcHksIG9yaWcsIHNpemVvZiAoc3RydWN0IHJ0eF9kZWYp
IC0gc2l6ZW9mIChydHVuaW9uKSk7CgoKCiAgY29weS0+dXNlZCA9IDA7CgoKICBpZiAoKHJ0eF9j
bGFzc1soaW50KSAoY29kZSldKSA9PSAnaScpCiAgICBjb3B5LT5mcmFtZV9yZWxhdGVkID0gMDsK
ICBjb3B5LT5qdW1wID0gb3JpZy0+anVtcDsKICBjb3B5LT5jYWxsID0gb3JpZy0+Y2FsbDsKCiAg
Zm9ybWF0X3B0ciA9IChydHhfZm9ybWF0WyhpbnQpICgoKGNvcHkpLT5jb2RlKSldKTsKCiAgZm9y
IChpID0gMDsgaSA8IChydHhfbGVuZ3RoWyhpbnQpICgoKGNvcHkpLT5jb2RlKSldKTsgaSsrKQog
ICAgewogICAgICBjb3B5LT5mbGRbaV0gPSBvcmlnLT5mbGRbaV07CiAgICAgIHN3aXRjaCAoKmZv
cm1hdF9wdHIrKykKICAgICAgICB7CiAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICBpZiAoKCgo
b3JpZyktPmZsZFtpXSkucnR4KSAhPSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgKCgoY29weSkt
PmZsZFtpXSkucnR4KSA9IGNvcHlfcnR4ICgoKChvcmlnKS0+ZmxkW2ldKS5ydHgpKTsKICAgICAg
ICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdFJzoKICAgICAgICBjYXNlICdWJzoKICAgICAgICAg
IGlmICgoKChvcmlnKS0+ZmxkW2ldKS5ydHZlYykgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAoKChjb3B5KS0+ZmxkW2ldKS5ydHZlYykgPSBydHZlY19hbGxvYyAo
KCgoKChvcmlnKS0+ZmxkW2ldKS5ydHZlYykpLT5udW1fZWxlbSkpOwogICAgICAgICAgICAgIGZv
ciAoaiA9IDA7IGogPCAoKCgoKGNvcHkpLT5mbGRbaV0pLnJ0dmVjKSktPm51bV9lbGVtKTsgaisr
KQogICAgICAgICAgICAgICAgKCgoKChjb3B5KS0+ZmxkW2ldKS5ydHZlYykpLT5lbGVtW2pdKSA9
IGNvcHlfcnR4ICgoKCgoKG9yaWcpLT5mbGRbaV0pLnJ0dmVjKSktPmVsZW1bal0pKTsKICAgICAg
ICAgICAgfQogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ3QnOgogICAgICAgIGNhc2Ug
J3cnOgogICAgICAgIGNhc2UgJ2knOgogICAgICAgIGNhc2UgJ3MnOgogICAgICAgIGNhc2UgJ1Mn
OgogICAgICAgIGNhc2UgJ3UnOgogICAgICAgIGNhc2UgJzAnOgoKICAgICAgICAgIGJyZWFrOwoK
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgZmFuY3lfYWJvcnQgKCIvdXNyL3NyYy9nY2MvZ2Nj
LWN2cy0zLjAvZ2NjL3J0bC5jIiwgNDQ0LCBfX0ZVTkNUSU9OX18pOwogICAgICAgIH0KICAgIH0K
ICByZXR1cm4gY29weTsKfQoKCgoKcnR4CmNvcHlfbW9zdF9ydHggKG9yaWcsIG1heV9zaGFyZSkK
ICAgICByZWdpc3RlciBydHggb3JpZzsKICAgICByZWdpc3RlciBydHggbWF5X3NoYXJlOwp7CiAg
cmVnaXN0ZXIgcnR4IGNvcHk7CiAgcmVnaXN0ZXIgaW50IGksIGo7CiAgcmVnaXN0ZXIgZW51bSBy
dHhfY29kZSBjb2RlOwogIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKmZvcm1hdF9wdHI7CgogIGlmIChv
cmlnID09IG1heV9zaGFyZSkKICAgIHJldHVybiBvcmlnOwoKICBjb2RlID0gKChvcmlnKS0+Y29k
ZSk7CgogIHN3aXRjaCAoY29kZSkKICAgIHsKICAgIGNhc2UgUkVHOgogICAgY2FzZSBRVUVVRUQ6
CiAgICBjYXNlIENPTlNUX0lOVDoKICAgIGNhc2UgQ09OU1RfRE9VQkxFOgogICAgY2FzZSBTWU1C
T0xfUkVGOgogICAgY2FzZSBDT0RFX0xBQkVMOgogICAgY2FzZSBQQzoKICAgIGNhc2UgQ0MwOgog
ICAgICByZXR1cm4gb3JpZzsKICAgIGRlZmF1bHQ6CiAgICAgIGJyZWFrOwogICAgfQoKICBjb3B5
ID0gcnR4X2FsbG9jIChjb2RlKTsKICAoKGNvcHkpLT5tb2RlID0gKCgob3JpZyktPm1vZGUpKSk7
CiAgY29weS0+aW5fc3RydWN0ID0gb3JpZy0+aW5fc3RydWN0OwogIGNvcHktPnZvbGF0aWwgPSBv
cmlnLT52b2xhdGlsOwogIGNvcHktPnVuY2hhbmdpbmcgPSBvcmlnLT51bmNoYW5naW5nOwogIGNv
cHktPmludGVncmF0ZWQgPSBvcmlnLT5pbnRlZ3JhdGVkOwogIGNvcHktPmZyYW1lX3JlbGF0ZWQg
PSBvcmlnLT5mcmFtZV9yZWxhdGVkOwoKICBmb3JtYXRfcHRyID0gKHJ0eF9mb3JtYXRbKGludCkg
KCgoY29weSktPmNvZGUpKV0pOwoKICBmb3IgKGkgPSAwOyBpIDwgKHJ0eF9sZW5ndGhbKGludCkg
KCgoY29weSktPmNvZGUpKV0pOyBpKyspCiAgICB7CiAgICAgIHN3aXRjaCAoKmZvcm1hdF9wdHIr
KykKICAgICAgICB7CiAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAoKChjb3B5KS0+ZmxkW2ld
KS5ydHgpID0gKCgob3JpZyktPmZsZFtpXSkucnR4KTsKICAgICAgICAgIGlmICgoKChvcmlnKS0+
ZmxkW2ldKS5ydHgpICE9ICgodm9pZCAqKTApICYmICgoKG9yaWcpLT5mbGRbaV0pLnJ0eCkgIT0g
bWF5X3NoYXJlKQogICAgICAgICAgICAoKChjb3B5KS0+ZmxkW2ldKS5ydHgpID0gY29weV9tb3N0
X3J0eCAoKCgob3JpZyktPmZsZFtpXSkucnR4KSwgbWF5X3NoYXJlKTsKICAgICAgICAgIGJyZWFr
OwoKICAgICAgICBjYXNlICd1JzoKICAgICAgICAgICgoKGNvcHkpLT5mbGRbaV0pLnJ0eCkgPSAo
KChvcmlnKS0+ZmxkW2ldKS5ydHgpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ0Un
OgogICAgICAgIGNhc2UgJ1YnOgogICAgICAgICAgKCgoY29weSktPmZsZFtpXSkucnR2ZWMpID0g
KCgob3JpZyktPmZsZFtpXSkucnR2ZWMpOwogICAgICAgICAgaWYgKCgoKG9yaWcpLT5mbGRbaV0p
LnJ0dmVjKSAhPSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICgoKGNv
cHkpLT5mbGRbaV0pLnJ0dmVjKSA9IHJ0dmVjX2FsbG9jICgoKCgoKG9yaWcpLT5mbGRbaV0pLnJ0
dmVjKSktPm51bV9lbGVtKSk7CiAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8ICgoKCgoY29w
eSktPmZsZFtpXSkucnR2ZWMpKS0+bnVtX2VsZW0pOyBqKyspCiAgICAgICAgICAgICAgICAoKCgo
KGNvcHkpLT5mbGRbaV0pLnJ0dmVjKSktPmVsZW1bal0pCiAgICAgICAgICAgICAgICAgID0gY29w
eV9tb3N0X3J0eCAoKCgoKChvcmlnKS0+ZmxkW2ldKS5ydHZlYykpLT5lbGVtW2pdKSwgbWF5X3No
YXJlKTsKICAgICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ3cnOgog
ICAgICAgICAgKCgoY29weSktPmZsZFtpXSkucnR3aW50KSA9ICgoKG9yaWcpLT5mbGRbaV0pLnJ0
d2ludCk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnbic6CiAgICAgICAgY2FzZSAn
aSc6CiAgICAgICAgICAoKChjb3B5KS0+ZmxkW2ldKS5ydGludCkgPSAoKChvcmlnKS0+ZmxkW2ld
KS5ydGludCk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAndCc6CiAgICAgICAgICAo
KChjb3B5KS0+ZmxkW2ldKS5ydHRyZWUpID0gKCgob3JpZyktPmZsZFtpXSkucnR0cmVlKTsKICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdzJzoKICAgICAgICBjYXNlICdTJzoKICAgICAg
ICAgICgoKGNvcHkpLT5mbGRbaV0pLnJ0c3RyKSA9ICgoKG9yaWcpLT5mbGRbaV0pLnJ0c3RyKTsK
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICcwJzoKCiAgICAgICAgICAoKChjb3B5KS0+
ZmxkW2ldKS5ydHdpbnQpID0gKCgob3JpZyktPmZsZFtpXSkucnR3aW50KTsKICAgICAgICAgIGJy
ZWFrOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgZmFuY3lfYWJvcnQgKCIvdXNyL3NyYy9n
Y2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5jIiwgNTQzLCBfX0ZVTkNUSU9OX18pOwogICAgICAgIH0K
ICAgIH0KICByZXR1cm4gY29weTsKfQoKCnJ0eApzaGFsbG93X2NvcHlfcnR4IChvcmlnKQogICAg
IHJ0eCBvcmlnOwp7CiAgcmVnaXN0ZXIgaW50IGk7CiAgcmVnaXN0ZXIgZW51bSBydHhfY29kZSBj
b2RlID0gKChvcmlnKS0+Y29kZSk7CiAgcmVnaXN0ZXIgcnR4IGNvcHkgPSBydHhfYWxsb2MgKGNv
ZGUpOwoKICAoKGNvcHkpLT5tb2RlID0gKCgob3JpZyktPm1vZGUpKSk7CiAgY29weS0+aW5fc3Ry
dWN0ID0gb3JpZy0+aW5fc3RydWN0OwogIGNvcHktPnZvbGF0aWwgPSBvcmlnLT52b2xhdGlsOwog
IGNvcHktPnVuY2hhbmdpbmcgPSBvcmlnLT51bmNoYW5naW5nOwogIGNvcHktPmludGVncmF0ZWQg
PSBvcmlnLT5pbnRlZ3JhdGVkOwogIGNvcHktPmZyYW1lX3JlbGF0ZWQgPSBvcmlnLT5mcmFtZV9y
ZWxhdGVkOwoKICBmb3IgKGkgPSAwOyBpIDwgKHJ0eF9sZW5ndGhbKGludCkgKGNvZGUpXSk7IGkr
KykKICAgIGNvcHktPmZsZFtpXSA9IG9yaWctPmZsZFtpXTsKCiAgcmV0dXJuIGNvcHk7Cn0KCgpp
bnQgcnR4X2VxdWFsX2Z1bmN0aW9uX3ZhbHVlX21hdHRlcnM7CgoKaW50IGdlbmVyYXRpbmdfY29u
Y2F0X3A7CgoKCgppbnQKcnR4X2VxdWFsX3AgKHgsIHkpCiAgICAgcnR4IHgsIHk7CnsKICByZWdp
c3RlciBpbnQgaTsKICByZWdpc3RlciBpbnQgajsKICByZWdpc3RlciBlbnVtIHJ0eF9jb2RlIGNv
ZGU7CiAgcmVnaXN0ZXIgY29uc3QgY2hhciAqZm10OwoKICBpZiAoeCA9PSB5KQogICAgcmV0dXJu
IDE7CiAgaWYgKHggPT0gMCB8fCB5ID09IDApCiAgICByZXR1cm4gMDsKCiAgY29kZSA9ICgoeCkt
PmNvZGUpOwoKICBpZiAoY29kZSAhPSAoKHkpLT5jb2RlKSkKICAgIHJldHVybiAwOwoKCgoKICBp
ZiAoKCh4KS0+bW9kZSkgIT0gKCh5KS0+bW9kZSkpCiAgICByZXR1cm4gMDsKCgogIHN3aXRjaCAo
Y29kZSkKICAgIHsKICAgIGNhc2UgUkVHOgoKCgoKICAgICAgcmV0dXJuICgoKCh4KS0+ZmxkWzBd
KS5ydHVpbnQpID09ICgoKHkpLT5mbGRbMF0pLnJ0dWludCkKICAgICAgICAgICAgICAmJiAoISBy
dHhfZXF1YWxfZnVuY3Rpb25fdmFsdWVfbWF0dGVycwogICAgICAgICAgICAgICAgICB8fCAoKHgp
LT5pbnRlZ3JhdGVkKSA9PSAoKHkpLT5pbnRlZ3JhdGVkKSkpOwoKICAgIGNhc2UgTEFCRUxfUkVG
OgogICAgICByZXR1cm4gKCgoeCktPmZsZFswXSkucnR4KSA9PSAoKCh5KS0+ZmxkWzBdKS5ydHgp
OwoKICAgIGNhc2UgU1lNQk9MX1JFRjoKICAgICAgcmV0dXJuICgoKHgpLT5mbGRbMF0pLnJ0c3Ry
KSA9PSAoKCh5KS0+ZmxkWzBdKS5ydHN0cik7CgogICAgY2FzZSBTQ1JBVENIOgogICAgY2FzZSBD
T05TVF9ET1VCTEU6CiAgICBjYXNlIENPTlNUX0lOVDoKICAgICAgcmV0dXJuIDA7CgogICAgZGVm
YXVsdDoKICAgICAgYnJlYWs7CiAgICB9CgoKCgogIGZtdCA9IChydHhfZm9ybWF0WyhpbnQpIChj
b2RlKV0pOwogIGZvciAoaSA9IChydHhfbGVuZ3RoWyhpbnQpIChjb2RlKV0pIC0gMTsgaSA+PSAw
OyBpLS0pCiAgICB7CiAgICAgIHN3aXRjaCAoZm10W2ldKQogICAgICAgIHsKICAgICAgICBjYXNl
ICd3JzoKICAgICAgICAgIGlmICgoKCh4KS0+ZmxkW2ldKS5ydHdpbnQpICE9ICgoKHkpLT5mbGRb
aV0pLnJ0d2ludCkpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgYnJlYWs7CgogICAg
ICAgIGNhc2UgJ24nOgogICAgICAgIGNhc2UgJ2knOgogICAgICAgICAgaWYgKCgoKHgpLT5mbGRb
aV0pLnJ0aW50KSAhPSAoKCh5KS0+ZmxkW2ldKS5ydGludCkpCiAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ1YnOgogICAgICAgIGNhc2UgJ0UnOgoK
ICAgICAgICAgIGlmICgoKCgoKHgpLT5mbGRbaV0pLnJ0dmVjKSktPm51bV9lbGVtKSAhPSAoKCgo
KHkpLT5mbGRbaV0pLnJ0dmVjKSktPm51bV9lbGVtKSkKICAgICAgICAgICAgcmV0dXJuIDA7CgoK
ICAgICAgICAgIGZvciAoaiA9IDA7IGogPCAoKCgoKHgpLT5mbGRbaV0pLnJ0dmVjKSktPm51bV9l
bGVtKTsgaisrKQogICAgICAgICAgICBpZiAocnR4X2VxdWFsX3AgKCgoKCgoeCktPmZsZFtpXSku
cnR2ZWMpKS0+ZWxlbVtqXSksICgoKCgoeSktPmZsZFtpXSkucnR2ZWMpKS0+ZWxlbVtqXSkpID09
IDApCiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2Fz
ZSAnZSc6CiAgICAgICAgICBpZiAocnR4X2VxdWFsX3AgKCgoKHgpLT5mbGRbaV0pLnJ0eCksICgo
KHkpLT5mbGRbaV0pLnJ0eCkpID09IDApCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
YnJlYWs7CgogICAgICAgIGNhc2UgJ1MnOgogICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgaWYg
KF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9j
b25zdGFudF9wICgoKCh4KS0+ZmxkW2ldKS5ydHN0cikpICYmIF9fYnVpbHRpbl9jb25zdGFudF9w
ICgoKCh5KS0+ZmxkW2ldKS5ydHN0cikpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKCgoeCktPmZs
ZFtpXSkucnRzdHIpKSwgX19zMl9sZW4gPSBzdHJsZW4gKCgoKHkpLT5mbGRbaV0pLnJ0c3RyKSks
ICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoKHgpLT5mbGRbaV0pLnJ0c3RyKSkgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoeCktPmZsZFtpXSkucnRzdHIpKSA9PSAxKSB8fCBf
X3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKCh5KS0+ZmxkW2ld
KS5ydHN0cikpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKHkpLT5mbGRbaV0pLnJ0
c3RyKSkgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICop
ICgoKCh4KS0+ZmxkW2ldKS5ydHN0cikpLCAoX19jb25zdCBjaGFyICopICgoKCh5KS0+ZmxkW2ld
KS5ydHN0cikpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsg
MSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoKHgpLT5mbGRbaV0pLnJ0c3RyKSkgJiYgKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKCgoKHgpLT5mbGRbaV0pLnJ0c3RyKSkgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoKCgoeCktPmZsZFtpXSkucnRzdHIpKSA9PSAxKSAmJiAoX19zMV9s
ZW4gPSBzdHJsZW4gKCgoKHgpLT5mbGRbaV0pLnJ0c3RyKSksIF9fczFfbGVuIDwgNCkgPyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKCgoKHkpLT5mbGRbaV0pLnJ0c3RyKSkgJiYgKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCgoKHkpLT5mbGRbaV0pLnJ0c3RyKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCgoeSktPmZsZFtpXSkucnRzdHIpKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7
IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgoKCh4KS0+ZmxkW2ldKS5ydHN0cikpKVswXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoKCgoeSktPmZsZFtpXSkucnRzdHIpKSlbMF0p
OyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCgoeCktPmZsZFtpXSkucnRz
dHIpKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgo
KCh5KS0+ZmxkW2ldKS5ydHN0cikpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKCh4KS0+ZmxkW2ldKS5ydHN0cikpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoKHkpLT5mbGRbaV0pLnJ0c3RyKSkpWzJdKTsgaWYg
KF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKCh4KS0+ZmxkW2ldKS5ydHN0cikpKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoKHkpLT5m
bGRbaV0pLnJ0c3RyKSkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAo
eyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCgoKHkpLT5mbGRbaV0pLnJ0c3RyKSk7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgo
KCh4KS0+ZmxkW2ldKS5ydHN0cikpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKCgoeCktPmZsZFtpXSkucnRzdHIpKSlbMV0gLSBfX3MyWzFdKTsg
aWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoKHgpLT5mbGRbaV0pLnJ0c3Ry
KSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCgo
eCktPmZsZFtpXSkucnRzdHIpKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDog
KF9fYnVpbHRpbl9jb25zdGFudF9wICgoKCh5KS0+ZmxkW2ldKS5ydHN0cikpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgoKCh5KS0+ZmxkW2ldKS5ydHN0cikpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKCgoKHkpLT5mbGRbaV0pLnJ0c3RyKSkgPT0gMSkgJiYgKF9fczJfbGVuID0g
c3RybGVuICgoKCh5KS0+ZmxkW2ldKS5ydHN0cikpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRp
bl9jb25zdGFudF9wICgoKCh4KS0+ZmxkW2ldKS5ydHN0cikpICYmICgoc2l6ZV90KShjb25zdCB2
b2lkICopKCgoKCh4KS0+ZmxkW2ldKS5ydHN0cikpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgoKHgpLT5mbGRbaV0pLnJ0c3RyKSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoKCgoeCktPmZsZFtpXSkucnRzdHIpKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopKCgoKHkpLT5mbGRbaV0pLnJ0c3RyKSkpWzBdKTsgaWYg
KF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoKHgpLT5mbGRbaV0pLnJ0c3RyKSkp
WzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCgoeSkt
PmZsZFtpXSkucnRzdHIpKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoKCgoeCktPmZsZFtpXSkucnRzdHIpKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgoKCh5KS0+ZmxkW2ldKS5ydHN0cikpKVsyXSk7IGlmIChfX3My
X2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCgoeCktPmZsZFtpXSkucnRzdHIpKSlbM10gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKCh5KS0+ZmxkW2ld
KS5ydHN0cikpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19j
b25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgoKCh4KS0+ZmxkW2ldKS5ydHN0cikpOyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoKCgoeSktPmZsZFtpXSkucnRzdHIpKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoKCgoeSktPmZsZFtpXSkucnRzdHIpKSlbMV0pOyBpZiAoX19z
Ml9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoKHkpLT5mbGRbaV0pLnJ0
c3RyKSkpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9
IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
KCgoeSktPmZsZFtpXSkucnRzdHIpKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAg
KCgoKHgpLT5mbGRbaV0pLnJ0c3RyKSwgKCgoeSktPmZsZFtpXSkucnRzdHIpKSkpKTsgfSkpCiAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ3UnOgoK
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICcwJzoKICAgICAgICBjYXNlICd0JzoKICAg
ICAgICAgIGJyZWFrOwoKCgoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgZmFuY3lfYWJvcnQg
KCIvdXNyL3NyYy9nY2MvZ2NjLWN2cy0zLjAvZ2NjL3J0bC5jIiwgNjg2LCBfX0ZVTkNUSU9OX18p
OwogICAgICAgIH0KICAgIH0KICByZXR1cm4gMTsKfQoKCgoKaW50IHJlYWRfcnR4X2xpbmVubyA9
IDE7CgoKY29uc3QgY2hhciAqcmVhZF9ydHhfZmlsZW5hbWUgPSAiPHVua25vd24+IjsKCnN0YXRp
YyB2b2lkCmZhdGFsX3dpdGhfZmlsZV9hbmRfbGluZSAoRklMRSAqaW5maWxlLCBjb25zdCBjaGFy
ICptc2csIC4uLikKewoKCgoKICB2YV9saXN0IGFwOwogIGNoYXIgY29udGV4dFs2NF07CiAgc2l6
ZV90IGk7CiAgaW50IGM7CgogIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFwKSxtc2cpOwoKCgoK
CgogIGZwcmludGYgKHN0ZGVyciwgIiVzOiVkOiAiLCByZWFkX3J0eF9maWxlbmFtZSwgcmVhZF9y
dHhfbGluZW5vKTsKICB2ZnByaW50ZiAoc3RkZXJyLCBtc2csIGFwKTsKICBwdXRjX3VubG9ja2Vk
ICgnXG4nLCBzdGRlcnIpOwoKCiAgZm9yIChpID0gMDsgaSA8IHNpemVvZihjb250ZXh0KS0xOyAr
K2kpCiAgICB7CiAgICAgIGMgPSBfSU9fZ2V0YyAoaW5maWxlKTsKICAgICAgaWYgKGMgPT0gKC0x
KSkKICAgICAgICBicmVhazsKICAgICAgaWYgKGMgPT0gJ1xyJyB8fCBjID09ICdcbicpCiAgICAg
ICAgYnJlYWs7CiAgICAgIGNvbnRleHRbaV0gPSBjOwogICAgfQogIGNvbnRleHRbaV0gPSAnXDAn
OwoKICBmcHJpbnRmIChzdGRlcnIsICIlczolZDogZm9sbG93aW5nIGNvbnRleHQgaXMgYCVzJ1xu
IiwKICAgICAgICAgICByZWFkX3J0eF9maWxlbmFtZSwgcmVhZF9ydHhfbGluZW5vLCBjb250ZXh0
KTsKCiAgX19idWlsdGluX3ZhX2VuZCAoYXApOwogIGV4aXQgKDEpOwp9CgoKCgpzdGF0aWMgdm9p
ZApmYXRhbF9leHBlY3RlZF9jaGFyIChpbmZpbGUsIGV4cGVjdGVkX2MsIGFjdHVhbF9jKQogICAg
IEZJTEUgKmluZmlsZTsKICAgICBpbnQgZXhwZWN0ZWRfYywgYWN0dWFsX2M7CnsKICBmYXRhbF93
aXRoX2ZpbGVfYW5kX2xpbmUgKGluZmlsZSwgImV4cGVjdGVkIGNoYXJhY3RlciBgJWMnLCBmb3Vu
ZCBgJWMnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2MsIGFjdHVhbF9j
KTsKfQoKCgoKCgppbnQKcmVhZF9za2lwX3NwYWNlcyAoaW5maWxlKQogICAgIEZJTEUgKmluZmls
ZTsKewogIHJlZ2lzdGVyIGludCBjOwogIHdoaWxlICgxKQogICAgewogICAgICBjID0gX0lPX2dl
dGMgKGluZmlsZSk7CiAgICAgIHN3aXRjaCAoYykKICAgICAgICB7CiAgICAgICAgY2FzZSAnXG4n
OgogICAgICAgICAgcmVhZF9ydHhfbGluZW5vKys7CiAgICAgICAgICBicmVhazsKCiAgICAgICAg
Y2FzZSAnICc6IGNhc2UgJ1x0JzogY2FzZSAnXGYnOiBjYXNlICdccic6CiAgICAgICAgICBicmVh
azsKCiAgICAgICAgY2FzZSAnOyc6CiAgICAgICAgICBkbwogICAgICAgICAgICBjID0gX0lPX2dl
dGMgKGluZmlsZSk7CiAgICAgICAgICB3aGlsZSAoYyAhPSAnXG4nICYmIGMgIT0gKC0xKSk7CiAg
ICAgICAgICByZWFkX3J0eF9saW5lbm8rKzsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNl
ICcvJzoKICAgICAgICAgIHsKICAgICAgICAgICAgcmVnaXN0ZXIgaW50IHByZXZjOwogICAgICAg
ICAgICBjID0gX0lPX2dldGMgKGluZmlsZSk7CiAgICAgICAgICAgIGlmIChjICE9ICcqJykKICAg
ICAgICAgICAgICBmYXRhbF9leHBlY3RlZF9jaGFyIChpbmZpbGUsICcqJywgYyk7CgogICAgICAg
ICAgICBwcmV2YyA9IDA7CiAgICAgICAgICAgIHdoaWxlICgoYyA9IF9JT19nZXRjIChpbmZpbGUp
KSAmJiBjICE9ICgtMSkpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGMgPT0g
J1xuJykKICAgICAgICAgICAgICAgICAgIHJlYWRfcnR4X2xpbmVubysrOwogICAgICAgICAgICAg
ICAgZWxzZSBpZiAocHJldmMgPT0gJyonICYmIGMgPT0gJy8nKQogICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgIHByZXZjID0gYzsKICAgICAgICAgICAgICB9CiAgICAgICAg
ICB9CiAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJldHVybiBj
OwogICAgICAgIH0KICAgIH0KfQoKCgoKc3RhdGljIHZvaWQKcmVhZF9uYW1lIChzdHIsIGluZmls
ZSkKICAgICBjaGFyICpzdHI7CiAgICAgRklMRSAqaW5maWxlOwp7CiAgcmVnaXN0ZXIgY2hhciAq
cDsKICByZWdpc3RlciBpbnQgYzsKCiAgYyA9IHJlYWRfc2tpcF9zcGFjZXMoaW5maWxlKTsKCiAg
cCA9IHN0cjsKICB3aGlsZSAoMSkKICAgIHsKICAgICAgaWYgKGMgPT0gJyAnIHx8IGMgPT0gJ1xu
JyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXGYnKQogICAgICAgIGJyZWFrOwogICAgICBpZiAoYyA9
PSAnOicgfHwgYyA9PSAnKScgfHwgYyA9PSAnXScgfHwgYyA9PSAnIicgfHwgYyA9PSAnLycKICAg
ICAgICAgIHx8IGMgPT0gJygnIHx8IGMgPT0gJ1snKQogICAgICAgIHsKICAgICAgICAgIHVuZ2V0
YyAoYywgaW5maWxlKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgKnArKyA9IGM7
CiAgICAgIGMgPSBfSU9fZ2V0YyAoaW5maWxlKTsKICAgIH0KICBpZiAocCA9PSBzdHIpCiAgICBm
YXRhbF93aXRoX2ZpbGVfYW5kX2xpbmUgKGluZmlsZSwgIm1pc3NpbmcgbmFtZSBvciBudW1iZXIi
KTsKICBpZiAoYyA9PSAnXG4nKQogICAgcmVhZF9ydHhfbGluZW5vKys7CgogICpwID0gMDsKCiAg
aWYgKG1kX2NvbnN0YW50cykKICAgIHsKCiAgICAgIHN0cnVjdCBtZF9jb25zdGFudCAqZGVmOwoK
ICAgICAgcCA9IHN0cjsKICAgICAgZG8KICAgICAgICB7CiAgICAgICAgICBzdHJ1Y3QgbWRfY29u
c3RhbnQgdG1wX2RlZjsKCiAgICAgICAgICB0bXBfZGVmLm5hbWUgPSBwOwogICAgICAgICAgZGVm
ID0gaHRhYl9maW5kIChtZF9jb25zdGFudHMsICZ0bXBfZGVmKTsKICAgICAgICAgIGlmIChkZWYp
CiAgICAgICAgICAgIHAgPSBkZWYtPnZhbHVlOwogICAgICAgIH0gd2hpbGUgKGRlZik7CiAgICAg
IGlmIChwICE9IHN0cikKICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50
X3AgKHApID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKChwKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKShwKSA9PSAxKSAmJiBzdHJsZW4gKHApICsgMSA8PSA4ID8gX19zdHJjcHlfc21h
bGwgKHN0ciwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAocCkpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAocCkpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocCkpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocCkpWzRdKSwgX19leHRlbnNpb25f
XyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlbMCAr
IDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChw
KSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAocCkpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKHApKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocCkpWzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocCkpWzQgKyAyXSkgPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHApKVs0ICsgMV0pIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlbNF0pLCBz
dHJsZW4gKHApICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKHN0ciwgcCwgc3RybGVuIChwKSArIDEp
KSA6IHN0cmNweSAoc3RyLCBwKSkpOwogICAgfQp9CiMgOTAwICIvdXNyL3NyYy9nY2MvZ2NjLWN2
cy0zLjAvZ2NjL3J0bC5jIgpzdGF0aWMgdW5zaWduZWQKZGVmX2hhc2ggKGRlZikKICAgICBjb25z
dCB2b2lkICpkZWY7CnsKICB1bnNpZ25lZCByZXN1bHQsIGk7CiAgY29uc3QgY2hhciAqc3RyaW5n
ID0gKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYpLT5uYW1lOwoKICBmb3IgKHJlc3Vs
dCA9IGkgPSAwOypzdHJpbmcrKyAhPSAnXDAnOyBpKyspCiAgICByZXN1bHQgKz0gKCh1bnNpZ25l
ZCBjaGFyKSAqc3RyaW5nIDw8IChpICUgOCkpOwogIHJldHVybiByZXN1bHQ7Cn0KCgpzdGF0aWMg
aW50CmRlZl9uYW1lX2VxX3AgKGRlZjEsIGRlZjIpCiAgICAgY29uc3Qgdm9pZCAqZGVmMSwgKmRl
ZjI7CnsKICByZXR1cm4gISBfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9s
ZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilk
ZWYxKS0+bmFtZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCgoY29uc3Qgc3RydWN0IG1kX2Nv
bnN0YW50ICopZGVmMiktPm5hbWUpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKChjb25zdCBzdHJ1
Y3QgbWRfY29uc3RhbnQgKilkZWYxKS0+bmFtZSksIF9fczJfbGVuID0gc3RybGVuICgoKGNvbnN0
IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjIpLT5uYW1lKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYxKS0+bmFtZSkgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYxKS0+
bmFtZSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYyKS0+bmFtZSkgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYyKS0+bmFt
ZSkgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICgo
KGNvbnN0IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjEpLT5uYW1lKSwgKF9fY29uc3QgY2hhciAq
KSAoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYyKS0+bmFtZSksIChfX3MxX2xlbiA8
IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYxKS0+bmFtZSkgJiYgKChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoKCgoY29uc3Qgc3RydWN0IG1kX2NvbnN0YW50ICopZGVmMSktPm5h
bWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgoY29uc3Qgc3RydWN0IG1kX2NvbnN0
YW50ICopZGVmMSktPm5hbWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKChjb25zdCBz
dHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYxKS0+bmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWls
dGluX2NvbnN0YW50X3AgKCgoY29uc3Qgc3RydWN0IG1kX2NvbnN0YW50ICopZGVmMiktPm5hbWUp
ICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKGNvbnN0IHN0cnVjdCBtZF9jb25zdGFudCAq
KWRlZjIpLT5uYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKGNvbnN0IHN0cnVj
dCBtZF9jb25zdGFudCAqKWRlZjIpLT5uYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJl
Z2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgoKGNvbnN0IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjEpLT5uYW1lKSlbMF0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCgoY29uc3Qgc3Ry
dWN0IG1kX2NvbnN0YW50ICopZGVmMiktPm5hbWUpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgoKGNvbnN0IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjEpLT5uYW1l
KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKGNv
bnN0IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjIpLT5uYW1lKSlbMV0pOyBpZiAoX19zMV9sZW4g
PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYx
KS0+bmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYyKS0+bmFtZSkpWzJdKTsgaWYgKF9f
czFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKGNvbnN0IHN0cnVjdCBtZF9jb25zdGFudCAq
KWRlZjEpLT5uYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKGNvbnN0IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjIpLT5uYW1lKSlbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChj
b25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYyKS0+bmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKGNv
bnN0IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjEpLT5uYW1lKSlbMF0gLSBfX3MyWzBdKTsgaWYg
KF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoY29uc3Qgc3RydWN0IG1kX2NvbnN0
YW50ICopZGVmMSktPm5hbWUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYxKS0+bmFtZSkp
WzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChjb25z
dCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYxKS0+bmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBf
X3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKChjb25zdCBzdHJ1Y3QgbWRf
Y29uc3RhbnQgKilkZWYyKS0+bmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoY29u
c3Qgc3RydWN0IG1kX2NvbnN0YW50ICopZGVmMiktPm5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKCgoY29uc3Qgc3RydWN0IG1kX2NvbnN0YW50ICopZGVmMiktPm5hbWUpID09IDEp
ICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYy
KS0+bmFtZSksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoY29uc3Qg
c3RydWN0IG1kX2NvbnN0YW50ICopZGVmMSktPm5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgoKGNvbnN0IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjEpLT5uYW1lKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoKGNvbnN0IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjEpLT5u
YW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKGNvbnN0IHN0cnVj
dCBtZF9jb25zdGFudCAqKWRlZjEpLT5uYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopKCgoY29uc3Qgc3RydWN0IG1kX2NvbnN0YW50ICopZGVmMikt
Pm5hbWUpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKGNvbnN0
IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjEpLT5uYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKGNvbnN0IHN0cnVjdCBtZF9jb25zdGFudCAq
KWRlZjIpLT5uYW1lKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
KChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYxKS0+bmFtZSkpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChjb25zdCBzdHJ1Y3QgbWRfY29u
c3RhbnQgKilkZWYyKS0+bmFtZSkpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9
PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgoKGNvbnN0IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjEpLT5uYW1lKSlbM10gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKGNvbnN0IHN0cnVjdCBt
ZF9jb25zdGFudCAqKWRlZjIpLT5uYW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4
dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQg
KilkZWYxKS0+bmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKGNvbnN0IHN0cnVjdCBtZF9j
b25zdGFudCAqKWRlZjIpLT5uYW1lKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChjb25zdCBzdHJ1Y3QgbWRfY29uc3RhbnQgKilkZWYyKS0+bmFt
ZSkpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgo
KGNvbnN0IHN0cnVjdCBtZF9jb25zdGFudCAqKWRlZjIpLT5uYW1lKSlbMl0pOyBpZiAoX19zMl9s
ZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKGNvbnN0IHN0cnVjdCBtZF9jb25z
dGFudCAqKWRlZjIpLT5uYW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKCgo
Y29uc3Qgc3RydWN0IG1kX2NvbnN0YW50ICopZGVmMSktPm5hbWUsICgoY29uc3Qgc3RydWN0IG1k
X2NvbnN0YW50ICopZGVmMiktPm5hbWUpKSkpOyB9KTsKCn0KCgoKCnN0YXRpYyB2b2lkCnJlYWRf
Y29uc3RhbnRzIChpbmZpbGUsIHRtcF9jaGFyKQogICAgIEZJTEUgKmluZmlsZTsKICAgICBjaGFy
ICp0bXBfY2hhcjsKewogIGludCBjOwogIGh0YWJfdCBkZWZzOwoKICBjID0gcmVhZF9za2lwX3Nw
YWNlcyAoaW5maWxlKTsKICBpZiAoYyAhPSAnWycpCiAgICBmYXRhbF9leHBlY3RlZF9jaGFyIChp
bmZpbGUsICdbJywgYyk7CiAgZGVmcyA9IG1kX2NvbnN0YW50czsKICBpZiAoISBkZWZzKQogICAg
ZGVmcyA9IGh0YWJfY3JlYXRlICgzMiwgZGVmX2hhc2gsIGRlZl9uYW1lX2VxX3AsIChodGFiX2Rl
bCkgMCk7CgogIG1kX2NvbnN0YW50cyA9IDA7CiAgd2hpbGUgKCAoYyA9IHJlYWRfc2tpcF9zcGFj
ZXMgKGluZmlsZSkpICE9ICddJykKICAgIHsKICAgICAgc3RydWN0IG1kX2NvbnN0YW50ICpkZWY7
CiAgICAgIHZvaWQgKiplbnRyeV9wdHI7CgogICAgICBpZiAoYyAhPSAnKCcpCiAgICAgICAgZmF0
YWxfZXhwZWN0ZWRfY2hhciAoaW5maWxlLCAnKCcsIGMpOwogICAgICBkZWYgPSB4bWFsbG9jIChz
aXplb2YgKHN0cnVjdCBtZF9jb25zdGFudCkpOwogICAgICBkZWYtPm5hbWUgPSB0bXBfY2hhcjsK
ICAgICAgcmVhZF9uYW1lICh0bXBfY2hhciwgaW5maWxlKTsKICAgICAgZW50cnlfcHRyID0gaHRh
Yl9maW5kX3Nsb3QgKGRlZnMsIGRlZiwgMSk7CiAgICAgIGlmICghICplbnRyeV9wdHIpCiAgICAg
ICAgZGVmLT5uYW1lID0geHN0cmR1cCAodG1wX2NoYXIpOwogICAgICBjID0gcmVhZF9za2lwX3Nw
YWNlcyAoaW5maWxlKTsKICAgICAgdW5nZXRjIChjLCBpbmZpbGUpOwogICAgICByZWFkX25hbWUg
KHRtcF9jaGFyLCBpbmZpbGUpOwogICAgICBpZiAoISAqZW50cnlfcHRyKQogICAgICAgIHsKICAg
ICAgICAgIGRlZi0+dmFsdWUgPSB4c3RyZHVwICh0bXBfY2hhcik7CiAgICAgICAgICAqZW50cnlf
cHRyID0gZGVmOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgIGRlZiA9
ICplbnRyeV9wdHI7CiAgICAgICAgICBpZiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9s
ZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKGRlZi0+dmFsdWUpICYmIF9fYnVp
bHRpbl9jb25zdGFudF9wICh0bXBfY2hhcikgJiYgKF9fczFfbGVuID0gc3RybGVuIChkZWYtPnZh
bHVlKSwgX19zMl9sZW4gPSBzdHJsZW4gKHRtcF9jaGFyKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoZGVmLT52YWx1ZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoZGVmLT52YWx1
ZSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
dG1wX2NoYXIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHRtcF9jaGFyKSA9PSAxKSB8
fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKGRlZi0+dmFsdWUp
LCAoX19jb25zdCBjaGFyICopICh0bXBfY2hhciksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19z
MV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoZGVmLT52YWx1
ZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGRlZi0+dmFsdWUpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKGRlZi0+dmFsdWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAo
ZGVmLT52YWx1ZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRtcF9j
aGFyKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgodG1wX2NoYXIpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKHRtcF9jaGFyKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lz
dGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChkZWYtPnZhbHVlKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopKHRtcF9jaGFyKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoZGVmLT52YWx1ZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAodG1wX2NoYXIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChkZWYtPnZhbHVlKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICh0bXBfY2hhcikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChkZWYtPnZhbHVlKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICh0bXBfY2hhcikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19l
eHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFyKTsgcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRl
Zi0+dmFsdWUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoZGVmLT52YWx1ZSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChkZWYtPnZhbHVlKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChkZWYtPnZhbHVlKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVz
dWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICh0bXBfY2hhcikgJiYgKChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKHRtcF9jaGFyKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0
bXBfY2hhcikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuICh0bXBfY2hhciksIF9fczJfbGVu
IDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKGRlZi0+dmFsdWUpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKChkZWYtPnZhbHVlKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShk
ZWYtPnZhbHVlKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWYtPnZh
bHVlKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKHRt
cF9jaGFyKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVmLT52
YWx1ZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
dG1wX2NoYXIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWYt
PnZhbHVlKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICh0bXBfY2hhcikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWYt
PnZhbHVlKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICh0bXBfY2hhcikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKGRlZi0+dmFsdWUpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3Mx
WzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG1wX2No
YXIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0
bXBfY2hhcikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICh0bXBfY2hhcikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBf
X3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAodG1wX2NoYXIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoZGVm
LT52YWx1ZSwgdG1wX2NoYXIpKSkpOyB9KSkKICAgICAgICAgICAgZmF0YWxfd2l0aF9maWxlX2Fu
ZF9saW5lIChpbmZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJl
ZGVmaW5pdGlvbiBvZiAlcywgd2FzICVzLCBub3cgJXMiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZi0+bmFtZSwgZGVmLT52YWx1ZSwgdG1wX2NoYXIpOwogICAgICAg
IH0KICAgICAgYyA9IHJlYWRfc2tpcF9zcGFjZXMgKGluZmlsZSk7CiAgICAgIGlmIChjICE9ICcp
JykKICAgICAgICBmYXRhbF9leHBlY3RlZF9jaGFyIChpbmZpbGUsICcpJywgYyk7CiAgICB9CiAg
bWRfY29uc3RhbnRzID0gZGVmczsKICBjID0gcmVhZF9za2lwX3NwYWNlcyAoaW5maWxlKTsKICBp
ZiAoYyAhPSAnKScpCiAgICBmYXRhbF9leHBlY3RlZF9jaGFyIChpbmZpbGUsICcpJywgYyk7Cn0K
CgoKCnZvaWQKdHJhdmVyc2VfbWRfY29uc3RhbnRzIChjYWxsYmFjaywgaW5mbykKICAgICBodGFi
X3RyYXYgY2FsbGJhY2s7CiAgICAgdm9pZCAqaW5mbzsKewogIGlmIChtZF9jb25zdGFudHMpCiAg
ICBodGFiX3RyYXZlcnNlIChtZF9jb25zdGFudHMsIGNhbGxiYWNrLCBpbmZvKTsKfQoKCgoKCgpy
dHgKcmVhZF9ydHggKGluZmlsZSkKICAgICBGSUxFICppbmZpbGU7CnsKICByZWdpc3RlciBpbnQg
aSwgaiwgbGlzdF9jb3VudGVyOwogIGVudW0gcnR4X2NvZGUgdG1wX2NvZGU7CiAgcmVnaXN0ZXIg
Y29uc3QgY2hhciAqZm9ybWF0X3B0cjsKCgoKICBjaGFyIHRtcF9jaGFyWzI1Nl07CiAgcnR4IHJl
dHVybl9ydHg7CiAgcmVnaXN0ZXIgaW50IGM7CiAgaW50IHRtcF9pbnQ7CiAgaW50IHRtcF93aWRl
OwoKCiAgc3RhdGljIHN0cnVjdCBvYnN0YWNrIHJ0bF9vYnN0YWNrOwogIHN0YXRpYyBpbnQgaW5p
dGlhbGl6ZWQ7CgoKICBzdHJ1Y3QgcnR4X2xpc3QKICAgIHsKICAgICAgc3RydWN0IHJ0eF9saXN0
ICpuZXh0OwogICAgICBydHggdmFsdWU7CiAgICB9OwoKICBpZiAoIWluaXRpYWxpemVkKSB7CiAg
ICBfb2JzdGFja19iZWdpbiAoJnJ0bF9vYnN0YWNrLDAsIDAsCiAgICAgICAgICAgICAgICAgICAg
KHZvaWQgKigqKSAobG9uZykpIHhtYWxsb2MsCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKCop
ICh2b2lkICopKSBmcmVlKTsKICAgIGluaXRpYWxpemVkID0gMTsKICB9CgphZ2FpbjoKICBjID0g
cmVhZF9za2lwX3NwYWNlcyAoaW5maWxlKTsKICBpZiAoYyAhPSAnKCcpCiAgICBmYXRhbF9leHBl
Y3RlZF9jaGFyIChpbmZpbGUsICcoJywgYyk7CgogIHJlYWRfbmFtZSAodG1wX2NoYXIsIGluZmls
ZSk7CgogIHRtcF9jb2RlID0gVU5LTk9XTjsKCiAgaWYgKCEgX19leHRlbnNpb25fXyAoeyBzaXpl
X3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRtcF9jaGFyKSAm
JiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoImRlZmluZV9jb25zdGFudHMiKSAmJiAoX19zMV9sZW4g
PSBzdHJsZW4gKHRtcF9jaGFyKSwgX19zMl9sZW4gPSBzdHJsZW4gKCJkZWZpbmVfY29uc3RhbnRz
IiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHRtcF9jaGFyKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSh0bXBfY2hhcikgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoImRlZmluZV9jb25zdGFudHMiKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgiZGVmaW5lX2NvbnN0YW50cyIpID09IDEpIHx8IF9fczJfbGVuID49IDQp
KSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAodG1wX2NoYXIpLCAoX19jb25zdCBjaGFyICop
ICgiZGVmaW5lX2NvbnN0YW50cyIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDog
X19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKHRtcF9jaGFyKSAmJiAoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgodG1wX2NoYXIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKHRtcF9jaGFyKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHRtcF9jaGFyKSwgX19z
MV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImRlZmluZV9jb25zdGFudHMiKSAm
JiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImRlZmluZV9jb25zdGFudHMiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgiZGVmaW5lX2NvbnN0YW50cyIpID09IDEpID8gKF9fZXh0ZW5z
aW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFyKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopKCJkZWZpbmVfY29uc3RhbnRzIikpWzBdKTsgaWYgKF9f
czFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFyKSlbMV0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZGVmaW5lX2NvbnN0YW50cyIpKVsx
XSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0bXBfY2hhcikpWzJdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRlZmluZV9jb25z
dGFudHMiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFy
KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZGVm
aW5lX2NvbnN0YW50cyIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18g
KHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiZGVmaW5lX2NvbnN0YW50cyIpOyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG1w
X2NoYXIpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAodG1wX2NoYXIpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAodG1wX2NoYXIpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKHRtcF9jaGFyKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkp
IDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiZGVmaW5lX2NvbnN0YW50cyIpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgiZGVmaW5lX2NvbnN0YW50cyIpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKCJkZWZpbmVfY29uc3RhbnRzIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVu
ICgiZGVmaW5lX2NvbnN0YW50cyIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFu
dF9wICh0bXBfY2hhcikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHRtcF9jaGFyKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0bXBfY2hhcikgPT0gMSkgPyAoX19leHRlbnNpb25f
XyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAodG1wX2NoYXIpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikoImRlZmluZV9jb25zdGFudHMiKSlbMF0pOyBpZiAoX19zMl9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG1wX2NoYXIpKVsxXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJkZWZpbmVfY29uc3RhbnRzIikpWzFdKTsg
aWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFyKSlbMl0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZGVmaW5lX2NvbnN0YW50
cyIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG1wX2NoYXIpKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJkZWZpbmVf
Y29uc3RhbnRzIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKHRtcF9jaGFyKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJkZWZpbmVf
Y29uc3RhbnRzIikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJkZWZpbmVfY29uc3RhbnRzIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiZGVmaW5lX2NvbnN0YW50cyIpKVsyXSk7IGlmIChfX3My
X2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJkZWZpbmVfY29uc3RhbnRzIikp
WzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wICh0bXBfY2hhciwgImRlZmluZV9jb25z
dGFudHMiKSkpKTsgfSkpCiAgICB7CiAgICAgIHJlYWRfY29uc3RhbnRzIChpbmZpbGUsIHRtcF9j
aGFyKTsKICAgICAgZ290byBhZ2FpbjsKICAgIH0KICBmb3IgKGkgPSAwOyBpIDwgKChpbnQpTEFT
VF9BTkRfVU5VU0VEX1JUWF9DT0RFKTsgaSsrKQogICAgaWYgKCEgX19leHRlbnNpb25fXyAoeyBz
aXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRtcF9jaGFy
KSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoKHJ0eF9uYW1lWyhpbnQpIChpKV0pKSAmJiAoX19z
MV9sZW4gPSBzdHJsZW4gKHRtcF9jaGFyKSwgX19zMl9sZW4gPSBzdHJsZW4gKChydHhfbmFtZVso
aW50KSAoaSldKSksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHRtcF9jaGFyKSArIDEpIC0g
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0bXBfY2hhcikgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkg
JiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHJ0eF9uYW1lWyhpbnQpIChpKV0pKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgocnR4X25hbWVbKGludCkgKGkpXSkpID09IDEpIHx8
IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAodG1wX2NoYXIpLCAo
X19jb25zdCBjaGFyICopICgocnR4X25hbWVbKGludCkgKGkpXSkpLCAoX19zMV9sZW4gPCBfX3My
X2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3Ag
KHRtcF9jaGFyKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgodG1wX2NoYXIpICsgMSkgLSAo
c2l6ZV90KShjb25zdCB2b2lkICopKHRtcF9jaGFyKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJs
ZW4gKHRtcF9jaGFyKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKHJ0
eF9uYW1lWyhpbnQpIChpKV0pKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHJ0eF9uYW1l
WyhpbnQpIChpKV0pKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgocnR4X25hbWVbKGlu
dCkgKGkpXSkpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFy
KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKChydHhf
bmFtZVsoaW50KSAoaSldKSkpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHRtcF9jaGFyKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgocnR4X25hbWVbKGludCkgKGkpXSkpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICh0bXBfY2hhcikpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoKHJ0eF9uYW1lWyhpbnQpIChpKV0pKSlbMl0pOyBpZiAoX19z
MV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFyKSlbM10gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgocnR4X25hbWVbKGludCkgKGkpXSkpKVsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgocnR4X25hbWVbKGludCkgKGkpXSkpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG1wX2NoYXIpKVswXSAtIF9f
czJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG1wX2NoYXIpKVsx
XSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG1wX2No
YXIpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRt
cF9jaGFyKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wICgocnR4X25hbWVbKGludCkgKGkpXSkpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgocnR4X25hbWVbKGludCkgKGkpXSkpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KChydHhfbmFtZVsoaW50KSAoaSldKSkgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuICgocnR4
X25hbWVbKGludCkgKGkpXSkpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
ICh0bXBfY2hhcikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHRtcF9jaGFyKSArIDEpIC0g
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0bXBfY2hhcikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAo
eyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAodG1wX2NoYXIpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikoKHJ0eF9uYW1lWyhpbnQpIChpKV0pKSlbMF0pOyBpZiAoX19zMl9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG1wX2NoYXIpKVsxXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChydHhfbmFtZVsoaW50KSAoaSldKSkpWzFd
KTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFyKSlbMl0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgocnR4X25hbWVbKGlu
dCkgKGkpXSkpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodG1wX2No
YXIpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChy
dHhfbmFtZVsoaW50KSAoaSldKSkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFyKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KChydHhfbmFtZVsoaW50KSAoaSldKSkpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKChydHhfbmFtZVsoaW50KSAoaSldKSkpWzFdKTsgaWYgKF9fczJf
bGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgocnR4X25hbWVbKGludCkgKGkp
XSkpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
X19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChy
dHhfbmFtZVsoaW50KSAoaSldKSkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wICh0
bXBfY2hhciwgKHJ0eF9uYW1lWyhpbnQpIChpKV0pKSkpKTsgfSkpCiAgICAgIHsKICAgICAgICB0
bXBfY29kZSA9IChlbnVtIHJ0eF9jb2RlKSBpOwogICAgICAgIGJyZWFrOwogICAgICB9CgogIGlm
ICh0bXBfY29kZSA9PSBVTktOT1dOKQogICAgZmF0YWxfd2l0aF9maWxlX2FuZF9saW5lIChpbmZp
bGUsICJ1bmtub3duIHJ0eCBjb2RlIGAlcyciLCB0bXBfY2hhcik7CgoKICBpZiAodG1wX2NvZGUg
PT0gTklMKQogICAgewoKICAgICAgd2hpbGUgKChjID0gX0lPX2dldGMgKGluZmlsZSkpICYmIGMg
IT0gJyknKQogICAgICAgIDsKCiAgICAgIHJldHVybiAwOwogICAgfQoKCiAgcmV0dXJuX3J0eCA9
IHJ0eF9hbGxvYyAodG1wX2NvZGUpOwogIGZvcm1hdF9wdHIgPSAocnR4X2Zvcm1hdFsoaW50KSAo
KChyZXR1cm5fcnR4KS0+Y29kZSkpXSk7CgoKCgogIGkgPSByZWFkX3NraXBfc3BhY2VzIChpbmZp
bGUpOwogIGlmIChpID09ICc6JykKICAgIHsKICAgICAgcmVhZF9uYW1lICh0bXBfY2hhciwgaW5m
aWxlKTsKICAgICAgZm9yIChqID0gMDsgaiA8IChpbnQpIE1BWF9NQUNISU5FX01PREU7IGorKykK
ICAgICAgICBpZiAoISBfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKG1vZGVfbmFtZVsoaW50KSAoaildKSkgJiYgX19idWls
dGluX2NvbnN0YW50X3AgKHRtcF9jaGFyKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKChtb2RlX25h
bWVbKGludCkgKGopXSkpLCBfX3MyX2xlbiA9IHN0cmxlbiAodG1wX2NoYXIpLCAoISgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgobW9kZV9uYW1lWyhpbnQpIChqKV0pKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgobW9kZV9uYW1lWyhpbnQpIChqKV0pKSA9PSAxKSB8fCBfX3MxX2xlbiA+
PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCh0bXBfY2hhcikgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikodG1wX2NoYXIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1l
bWNtcCAoKF9fY29uc3QgY2hhciAqKSAoKG1vZGVfbmFtZVsoaW50KSAoaildKSksIChfX2NvbnN0
IGNoYXIgKikgKHRtcF9jaGFyKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9f
czJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgobW9kZV9uYW1lWyhpbnQpIChq
KV0pKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKG1vZGVfbmFtZVsoaW50KSAoaildKSkg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG1vZGVfbmFtZVsoaW50KSAoaildKSkgPT0g
MSkgJiYgKF9fczFfbGVuID0gc3RybGVuICgobW9kZV9uYW1lWyhpbnQpIChqKV0pKSwgX19zMV9s
ZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAodG1wX2NoYXIpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKCh0bXBfY2hhcikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodG1w
X2NoYXIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChtb2RlX25hbWVb
KGludCkgKGopXSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikodG1wX2NoYXIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgobW9kZV9uYW1lWyhpbnQpIChqKV0pKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICh0bXBfY2hhcikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKChtb2RlX25hbWVbKGludCkgKGopXSkpKVsyXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFyKSlbMl0pOyBpZiAoX19z
MV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChtb2RlX25hbWVbKGludCkgKGopXSkpKVszXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFyKSlb
M10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAodG1wX2NoYXIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKG1vZGVfbmFtZVsoaW50KSAoaildKSkpWzBdIC0g
X19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgobW9kZV9uYW1l
WyhpbnQpIChqKV0pKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKChtb2RlX25hbWVbKGludCkgKGopXSkpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19z
MV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChtb2RlX25hbWVbKGludCkgKGopXSkpKVszXSAt
IF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKHRt
cF9jaGFyKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgodG1wX2NoYXIpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKHRtcF9jaGFyKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4g
KHRtcF9jaGFyKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKG1vZGVf
bmFtZVsoaW50KSAoaildKSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChtb2RlX25hbWVb
KGludCkgKGopXSkpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKChtb2RlX25hbWVbKGlu
dCkgKGopXSkpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChtb2RlX25h
bWVbKGludCkgKGopXSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikodG1wX2NoYXIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgobW9kZV9uYW1lWyhpbnQpIChqKV0pKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICh0bXBfY2hhcikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKChtb2RlX25hbWVbKGludCkgKGopXSkpKVsyXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFyKSlbMl0pOyBpZiAo
X19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChtb2RlX25hbWVbKGludCkgKGopXSkpKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRtcF9jaGFy
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5z
aWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoKG1vZGVfbmFtZVsoaW50KSAoaildKSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9f
czFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0bXBf
Y2hhcikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHRtcF9jaGFyKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHRtcF9jaGFyKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICh0bXBfY2hhcikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wICgo
bW9kZV9uYW1lWyhpbnQpIChqKV0pLCB0bXBfY2hhcikpKSk7IH0pKQogICAgICAgICAgYnJlYWs7
CgogICAgICBpZiAoaiA9PSBNQVhfTUFDSElORV9NT0RFKQogICAgICAgIGZhdGFsX3dpdGhfZmls
ZV9hbmRfbGluZSAoaW5maWxlLCAidW5rbm93biBtb2RlIGAlcyciLCB0bXBfY2hhcik7CgogICAg
ICAoKHJldHVybl9ydHgpLT5tb2RlID0gKChlbnVtIG1hY2hpbmVfbW9kZSkgaikpOwogICAgfQog
IGVsc2UKICAgIHVuZ2V0YyAoaSwgaW5maWxlKTsKCiAgZm9yIChpID0gMDsgaSA8IChydHhfbGVu
Z3RoWyhpbnQpICgoKHJldHVybl9ydHgpLT5jb2RlKSldKTsgaSsrKQogICAgc3dpdGNoICgqZm9y
bWF0X3B0cisrKQogICAgICB7CgoKICAgICAgY2FzZSAnMCc6CiAgICAgICAgYnJlYWs7CgogICAg
ICBjYXNlICdlJzoKICAgICAgY2FzZSAndSc6CiAgICAgICAgKCgocmV0dXJuX3J0eCktPmZsZFtp
XSkucnR4KSA9IHJlYWRfcnR4IChpbmZpbGUpOwogICAgICAgIGJyZWFrOwoKICAgICAgY2FzZSAn
Vic6CgoKICAgICAgICBjID0gcmVhZF9za2lwX3NwYWNlcyAoaW5maWxlKTsKICAgICAgICB1bmdl
dGMgKGMsIGluZmlsZSk7CiAgICAgICAgaWYgKGMgPT0gJyknKQogICAgICAgICAgewogICAgICAg
ICAgICAoKChyZXR1cm5fcnR4KS0+ZmxkW2ldKS5ydHZlYykgPSAwOwogICAgICAgICAgICBicmVh
azsKICAgICAgICAgIH0KCgogICAgICBjYXNlICdFJzoKICAgICAgICB7CiAgICAgICAgICByZWdp
c3RlciBzdHJ1Y3QgcnR4X2xpc3QgKm5leHRfcnR4LCAqcnR4X2xpc3RfbGluazsKICAgICAgICAg
IHN0cnVjdCBydHhfbGlzdCAqbGlzdF9ydHggPSAoKHZvaWQgKikwKTsKCiAgICAgICAgICBjID0g
cmVhZF9za2lwX3NwYWNlcyAoaW5maWxlKTsKICAgICAgICAgIGlmIChjICE9ICdbJykKICAgICAg
ICAgICAgZmF0YWxfZXhwZWN0ZWRfY2hhciAoaW5maWxlLCAnWycsIGMpOwoKCiAgICAgICAgICBu
ZXh0X3J0eCA9ICgodm9pZCAqKTApOwogICAgICAgICAgbGlzdF9jb3VudGVyID0gMDsKICAgICAg
ICAgIHdoaWxlICgoYyA9IHJlYWRfc2tpcF9zcGFjZXMgKGluZmlsZSkpICYmIGMgIT0gJ10nKQog
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgdW5nZXRjIChjLCBpbmZpbGUpOwogICAgICAgICAg
ICAgIGxpc3RfY291bnRlcisrOwogICAgICAgICAgICAgIHJ0eF9saXN0X2xpbmsgPSAoc3RydWN0
IHJ0eF9saXN0ICopCiAgICAgICAgICAgICAgICBfX2J1aWx0aW5fYWxsb2NhIChzaXplb2YgKHN0
cnVjdCBydHhfbGlzdCkpOwogICAgICAgICAgICAgIHJ0eF9saXN0X2xpbmstPnZhbHVlID0gcmVh
ZF9ydHggKGluZmlsZSk7CiAgICAgICAgICAgICAgaWYgKG5leHRfcnR4ID09IDApCiAgICAgICAg
ICAgICAgICBsaXN0X3J0eCA9IHJ0eF9saXN0X2xpbms7CiAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgbmV4dF9ydHgtPm5leHQgPSBydHhfbGlzdF9saW5rOwogICAgICAgICAgICAg
IG5leHRfcnR4ID0gcnR4X2xpc3RfbGluazsKICAgICAgICAgICAgICBydHhfbGlzdF9saW5rLT5u
ZXh0ID0gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICgoKHJldHVybl9ydHgpLT5mbGRbaV0p
LnJ0dmVjKSA9IChsaXN0X2NvdW50ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID8gcnR2ZWNfYWxsb2MgKGxpc3RfY291bnRlcikgOiAocnR2ZWMpIDApOwogICAgICAgICAgaWYg
KGxpc3RfY291bnRlciA+IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBuZXh0X3J0eCA9
IGxpc3RfcnR4OwogICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBsaXN0X2NvdW50ZXI7IGor
KywKICAgICAgICAgICAgICAgICAgIG5leHRfcnR4ID0gbmV4dF9ydHgtPm5leHQpCiAgICAgICAg
ICAgICAgICAoKCgoKHJldHVybl9ydHgpLT5mbGRbaV0pLnJ0dmVjKSktPmVsZW1bal0pID0gbmV4
dF9ydHgtPnZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBicmVhazsKCiAg
ICAgIGNhc2UgJ1MnOgoKCiAgICAgICAgYyA9IHJlYWRfc2tpcF9zcGFjZXMgKGluZmlsZSk7CiAg
ICAgICAgdW5nZXRjIChjLCBpbmZpbGUpOwogICAgICAgIGlmIChjID09ICcpJykKICAgICAgICAg
IHsKICAgICAgICAgICAgKCgocmV0dXJuX3J0eCktPmZsZFtpXSkucnRzdHIpID0gMDsKICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICB9CgogICAgICBjYXNlICdzJzoKICAgICAgICB7CiAgICAg
ICAgICBpbnQgc2F3X3BhcmVuID0gMDsKICAgICAgICAgIHJlZ2lzdGVyIGNoYXIgKnN0cmluZ2J1
ZjsKICAgICAgICAgIGludCBzYXdfYW55dGhpbmcgPSAwOwoKICAgICAgICAgIGMgPSByZWFkX3Nr
aXBfc3BhY2VzIChpbmZpbGUpOwogICAgICAgICAgaWYgKGMgPT0gJygnKQogICAgICAgICAgICB7
CiAgICAgICAgICAgICAgc2F3X3BhcmVuID0gMTsKICAgICAgICAgICAgICBjID0gcmVhZF9za2lw
X3NwYWNlcyAoaW5maWxlKTsKICAgICAgICAgICAgfQogICAgICAgICAgaWYgKGMgIT0gJyInKQog
ICAgICAgICAgICBmYXRhbF9leHBlY3RlZF9jaGFyIChpbmZpbGUsICciJywgYyk7CgogICAgICAg
ICAgd2hpbGUgKDEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBjID0gX0lPX2dldGMgKGlu
ZmlsZSk7CiAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykKICAgICAgICAgICAgICAgIHJlYWRf
cnR4X2xpbmVubysrOwogICAgICAgICAgICAgIGlmIChjID09ICdcXCcpCiAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgIGMgPSBfSU9fZ2V0YyAoaW5maWxlKTsKCgogICAgICAgICAg
ICAgICAgICBpZiAoYyA9PSAnOycpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICAgX19leHRlbnNpb25fXyAoeyBzdHJ1Y3Qgb2JzdGFjayAqX19vID0gKCZydGxfb2Jz
dGFjayk7IGludCBfX2xlbiA9ICg0KTsgaWYgKF9fby0+bmV4dF9mcmVlICsgX19sZW4gPiBfX28t
PmNodW5rX2xpbWl0KSBfb2JzdGFja19uZXdjaHVuayAoX19vLCBfX2xlbik7IG1lbWNweSAoKF9f
by0+bmV4dF9mcmVlKSwgKCgiXFxuXFx0IikpLCAoX19sZW4pKTsgX19vLT5uZXh0X2ZyZWUgKz0g
X19sZW47ICh2b2lkKSAwOyB9KTsKICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykKICAgICAg
ICAgICAgICAgICAgICByZWFkX3J0eF9saW5lbm8rKzsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICBlbHNlIGlmIChjID09ICciJykKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICAgICAgICBfX2V4dGVuc2lvbl9fICh7IHN0cnVjdCBvYnN0YWNrICpfX28gPSAoJnJ0bF9vYnN0
YWNrKTsgaWYgKF9fby0+bmV4dF9mcmVlICsgMSA+IF9fby0+Y2h1bmtfbGltaXQpIF9vYnN0YWNr
X25ld2NodW5rIChfX28sIDEpOyAqKF9fby0+bmV4dF9mcmVlKSsrID0gKGMpOyAodm9pZCkgMDsg
fSk7CiAgICAgICAgICAgICAgc2F3X2FueXRoaW5nID0gMTsKICAgICAgICAgICAgfQoKCgoKCiAg
ICAgICAgICBpZiAoIXNhd19hbnl0aGluZwogICAgICAgICAgICAgICYmIGkgPT0gMAogICAgICAg
ICAgICAgICYmICgoKHJldHVybl9ydHgpLT5jb2RlKSA9PSBERUZJTkVfSU5TTgogICAgICAgICAg
ICAgICAgICB8fCAoKHJldHVybl9ydHgpLT5jb2RlKSA9PSBERUZJTkVfSU5TTl9BTkRfU1BMSVQp
KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgY2hhciBsaW5lX25hbWVbMjBdOwogICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKmZuID0gKHJlYWRfcnR4X2ZpbGVuYW1lID8gcmVhZF9ydHhfZmls
ZW5hbWUgOiAicnR4Iik7CiAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2xhc2g7CiAgICAgICAg
ICAgICAgZm9yIChzbGFzaCA9IGZuOyAqc2xhc2g7IHNsYXNoICsrKQogICAgICAgICAgICAgICAg
aWYgKCpzbGFzaCA9PSAnLycgfHwgKnNsYXNoID09ICdcXCcgfHwgKnNsYXNoID09ICc6JykKICAg
ICAgICAgICAgICAgICAgZm4gPSBzbGFzaCArIDE7CiAgICAgICAgICAgICAgX19leHRlbnNpb25f
XyAoeyBzdHJ1Y3Qgb2JzdGFjayAqX19vID0gKCZydGxfb2JzdGFjayk7IGlmIChfX28tPm5leHRf
ZnJlZSArIDEgPiBfX28tPmNodW5rX2xpbWl0KSBfb2JzdGFja19uZXdjaHVuayAoX19vLCAxKTsg
KihfX28tPm5leHRfZnJlZSkrKyA9ICgnKicpOyAodm9pZCkgMDsgfSk7CiAgICAgICAgICAgICAg
X19leHRlbnNpb25fXyAoeyBzdHJ1Y3Qgb2JzdGFjayAqX19vID0gKCZydGxfb2JzdGFjayk7IGlu
dCBfX2xlbiA9IChzdHJsZW4gKGZuKSk7IGlmIChfX28tPm5leHRfZnJlZSArIF9fbGVuID4gX19v
LT5jaHVua19saW1pdCkgX29ic3RhY2tfbmV3Y2h1bmsgKF9fbywgX19sZW4pOyBtZW1jcHkgKChf
X28tPm5leHRfZnJlZSksICgoZm4pKSwgKF9fbGVuKSk7IF9fby0+bmV4dF9mcmVlICs9IF9fbGVu
OyAodm9pZCkgMDsgfSk7CiAgICAgICAgICAgICAgc3ByaW50ZiAobGluZV9uYW1lLCAiOiVkIiwg
cmVhZF9ydHhfbGluZW5vKTsKICAgICAgICAgICAgICBfX2V4dGVuc2lvbl9fICh7IHN0cnVjdCBv
YnN0YWNrICpfX28gPSAoJnJ0bF9vYnN0YWNrKTsgaW50IF9fbGVuID0gKHN0cmxlbiAobGluZV9u
YW1lKSk7IGlmIChfX28tPm5leHRfZnJlZSArIF9fbGVuID4gX19vLT5jaHVua19saW1pdCkgX29i
c3RhY2tfbmV3Y2h1bmsgKF9fbywgX19sZW4pOyBtZW1jcHkgKChfX28tPm5leHRfZnJlZSksICgo
bGluZV9uYW1lKSksIChfX2xlbikpOyBfX28tPm5leHRfZnJlZSArPSBfX2xlbjsgKHZvaWQpIDA7
IH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgX19leHRlbnNpb25fXyAoeyBzdHJ1Y3Qgb2Jz
dGFjayAqX19vID0gKCZydGxfb2JzdGFjayk7IGlmIChfX28tPm5leHRfZnJlZSArIDEgPiBfX28t
PmNodW5rX2xpbWl0KSBfb2JzdGFja19uZXdjaHVuayAoX19vLCAxKTsgKihfX28tPm5leHRfZnJl
ZSkrKyA9ICgwKTsgKHZvaWQpIDA7IH0pOwogICAgICAgICAgc3RyaW5nYnVmID0gKGNoYXIgKikg
X19leHRlbnNpb25fXyAoeyBzdHJ1Y3Qgb2JzdGFjayAqX19vMSA9ICgmcnRsX29ic3RhY2spOyB2
b2lkICp2YWx1ZTsgdmFsdWUgPSAodm9pZCAqKSBfX28xLT5vYmplY3RfYmFzZTsgaWYgKF9fbzEt
Pm5leHRfZnJlZSA9PSB2YWx1ZSkgX19vMS0+bWF5YmVfZW1wdHlfb2JqZWN0ID0gMTsgX19vMS0+
bmV4dF9mcmVlID0gKCgoKChfX28xLT5uZXh0X2ZyZWUpIC0gKGNoYXIgKikgMCkrX19vMS0+YWxp
Z25tZW50X21hc2spICYgfiAoX19vMS0+YWxpZ25tZW50X21hc2spKSArIChjaGFyICopIDApOyBp
ZiAoX19vMS0+bmV4dF9mcmVlIC0gKGNoYXIgKilfX28xLT5jaHVuayA+IF9fbzEtPmNodW5rX2xp
bWl0IC0gKGNoYXIgKilfX28xLT5jaHVuaykgX19vMS0+bmV4dF9mcmVlID0gX19vMS0+Y2h1bmtf
bGltaXQ7IF9fbzEtPm9iamVjdF9iYXNlID0gX19vMS0+bmV4dF9mcmVlOyB2YWx1ZTsgfSk7Cgog
ICAgICAgICAgaWYgKHNhd19wYXJlbikKICAgICAgICAgICAgewogICAgICAgICAgICAgIGMgPSBy
ZWFkX3NraXBfc3BhY2VzIChpbmZpbGUpOwogICAgICAgICAgICAgIGlmIChjICE9ICcpJykKICAg
ICAgICAgICAgICAgIGZhdGFsX2V4cGVjdGVkX2NoYXIgKGluZmlsZSwgJyknLCBjKTsKICAgICAg
ICAgICAgfQogICAgICAgICAgKCgocmV0dXJuX3J0eCktPmZsZFtpXSkucnRzdHIpID0gc3RyaW5n
YnVmOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICAgIGNhc2UgJ3cnOgogICAgICAgIHJl
YWRfbmFtZSAodG1wX2NoYXIsIGluZmlsZSk7CgogICAgICAgIHRtcF93aWRlID0gYXRvaSAodG1w
X2NoYXIpOwojIDEyNTQgIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmMiCiAgICAg
ICAgKCgocmV0dXJuX3J0eCktPmZsZFtpXSkucnR3aW50KSA9IHRtcF93aWRlOwogICAgICAgIGJy
ZWFrOwoKICAgICAgY2FzZSAnaSc6CiAgICAgIGNhc2UgJ24nOgogICAgICAgIHJlYWRfbmFtZSAo
dG1wX2NoYXIsIGluZmlsZSk7CiAgICAgICAgdG1wX2ludCA9IGF0b2kgKHRtcF9jaGFyKTsKICAg
ICAgICAoKChyZXR1cm5fcnR4KS0+ZmxkW2ldKS5ydGludCkgPSB0bXBfaW50OwogICAgICAgIGJy
ZWFrOwoKICAgICAgZGVmYXVsdDoKICAgICAgICBmcHJpbnRmIChzdGRlcnIsCiAgICAgICAgICAg
ICAgICAgInN3aXRjaCBmb3JtYXQgd3JvbmcgaW4gcnRsLnJlYWRfcnR4KCkuIGZvcm1hdCB3YXM6
ICVjLlxuIiwKICAgICAgICAgICAgICAgICBmb3JtYXRfcHRyWy0xXSk7CiAgICAgICAgZnByaW50
ZiAoc3RkZXJyLCAiXHRmaWxlIHBvc2l0aW9uOiAlbGRcbiIsIGZ0ZWxsIChpbmZpbGUpKTsKICAg
ICAgICBmYW5jeV9hYm9ydCAoIi91c3Ivc3JjL2djYy9nY2MtY3ZzLTMuMC9nY2MvcnRsLmMiLCAx
MjY5LCBfX0ZVTkNUSU9OX18pOwogICAgICB9CgogIGMgPSByZWFkX3NraXBfc3BhY2VzIChpbmZp
bGUpOwogIGlmIChjICE9ICcpJykKICAgIGZhdGFsX2V4cGVjdGVkX2NoYXIgKGluZmlsZSwgJykn
LCBjKTsKCiAgcmV0dXJuIHJldHVybl9ydHg7Cn0K


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