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]
Other format: [Raw text]

c/6121: Internal compiler error



>Number:         6121
>Category:       c
>Synopsis:       Internal compiler error
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Apr 01 06:46:02 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Bruce Dubbs
>Release:        gcc version 3.0.4
>Organization:
>Environment:
Linux
>Description:
Building kdemultimedia-3.0rc3; file name resample.c
>How-To-Repeat:
 source='resample.c' object='resample.o' libtool=no \
 > depfile='.deps/resample.Po' tmpdepfile='.deps/resample.TPo' \
 > depmode=gcc3 /bin/sh ../../admin/depcomp \
 > gcc -v -save-temps -DHAVE_CONFIG_H -I. -I. -I../.. -I/usr/X11R6/include `/opt/kde3/bin/artsc-config
--cflags`  -DQT_THREAD_SUPPORT  -D_REENTRANT -DDEFAULT_PATH=\"//opt/kde3/share/apps/kmidi/config\" -DAU_OSS  -DIA_XAW -DQT_THREAD_SUPPORT  -D_REENTRANT  -fasm -DNDEBUG -O3 -march=i686 -c `test -f resample.c || echo './'`resample.c
 Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.0.4/specs
 Configured with: ../gcc-3.0.4/configure --prefix=/usr --enable-shared --enable-threads=posix --disable-nls --enable-languages=c,c++,f77,java : (reconfigured) ../gcc-3.0.4/configure --prefix=/usr --enable-shared --enable-threads=posix --disable-nls --enable-languages=c,c++,f77,java
 Thread model: posix
 gcc version 3.0.4
  /usr/lib/gcc-lib/i686-pc-linux-gnu/3.0.4/cpp0 -lang-c -v -I. -I. -I../.. -I/usr/X11R6/include -I/opt/kde3/include/artsc -M -MF resample.d -MF .deps/resample.TPo -MP -MT resample.o -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=4 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ -D__tune_i686__ -D__tune_pentiumpro__ -DHAVE_CONFIG_H -DQT_THREAD_SUPPORT -D_REENTRANT -DDEFAULT_PATH="//opt/kde3/share/apps/kmidi/config" -DAU_OSS
-DIA_XAW -DQT_THREAD_SUPPORT -D_REENTRANT -DNDEBUG resample.c resample.i
  GNU CPP version 3.0.4 (cpplib) (i386 Linux/ELF)
  ignoring nonexistent directory "/usr/i686-pc-linux-gnu/include"
  ignoring duplicate directory "."
  #include "..." search starts here:
  #include <...> search starts here:
   .
   ../..
   /usr/X11R6/include
   /opt/kde3/include/artsc
   /usr/local/include
   /usr/lib/gcc-lib/i686-pc-linux-gnu/3.0.4/include
   /usr/include
   End of search list.
 
   /usr/lib/gcc-lib/i686-pc-linux-gnu/3.0.4/cc1 -fpreprocessed resample.i -quiet -dumpbase resample.c -march=i686 -O3 -version -fasm -o resample.s
 
   GNU CPP version 3.0.4 (cpplib) (i386 Linux/ELF)
   GNU C version 3.0.4 (i686-pc-linux-gnu)
   compiled by GNU C version 3.0.4.
   resample.c: In function `pre_resample':
   resample.c:1298: Internal compiler error in print_rtl_and_abort, at flow.c:6458
   Please submit a full bug report,
   with preprocessed source if appropriate.
    See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>Fix:
remove -march=i686
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="resample.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="resample.i"

IyAyNCAicmVzYW1wbGUuYyIKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIyAyNyAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAy
ODMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVm
cy5oIiAxIDMKIyAyODQgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAzMTIgIi91c3Iv
aW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMK
IyAzMTMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAyOCAiL3Vzci9pbmNsdWRlL21h
dGguaCIgMiAzCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAxIDMKIyAy
NSAiL3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0
dXJlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMiAzCiMgMzQg
Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21h
dGhkZWYuaCIgMSAzCiMgNDEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDYzICIvdXNyL2lu
Y2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwoj
IDU0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIGFjb3Mg
KGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3MgKGRvdWJsZSBfX3gpIDsKCmV4dGVy
biBkb3VibGUgYXNpbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXNpbiAoZG91Ymxl
IF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUg
X19hdGFuIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGF0YW4yIChkb3VibGUgX195LCBk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9f
eCkgOwoKCmV4dGVybiBkb3VibGUgY29zIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19j
b3MgKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgc2luIChkb3VibGUgX194KSA7IGV4dGVy
biBkb3VibGUgX19zaW4gKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgdGFuIChkb3VibGUg
X194KSA7IGV4dGVybiBkb3VibGUgX190YW4gKGRvdWJsZSBfX3gpIDsKIyA3OCAiL3Vzci9pbmNs
dWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBjb3NoIChkb3VibGUgX194KSA7
IGV4dGVybiBkb3VibGUgX19jb3NoIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHNpbmgg
KGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3NpbmggKGRvdWJsZSBfX3gpIDsKCmV4dGVy
biBkb3VibGUgdGFuaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fdGFuaCAoZG91Ymxl
IF9feCkgOwoKCgpleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUgX194KSA7IGV4dGVybiBkb3Vi
bGUgX19hY29zaCAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBhc2luaCAoZG91YmxlIF9f
eCkgOyBleHRlcm4gZG91YmxlIF9fYXNpbmggKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUg
YXRhbmggKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2F0YW5oIChkb3VibGUgX194KSA7
CgoKCgoKZXh0ZXJuIGRvdWJsZSBleHAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2V4
cCAoZG91YmxlIF9feCkgOwojIDEwNiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMK
ZXh0ZXJuIGRvdWJsZSBmcmV4cCAoZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSA7IGV4dGVy
biBkb3VibGUgX19mcmV4cCAoZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSA7CgoKZXh0ZXJu
IGRvdWJsZSBsZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIDsgZXh0ZXJuIGRvdWJs
ZSBfX2xkZXhwIChkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgOwoKCmV4dGVybiBkb3VibGUg
bG9nIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19sb2cgKGRvdWJsZSBfX3gpIDsKCgpl
eHRlcm4gZG91YmxlIGxvZzEwIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19sb2cxMCAo
ZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpf
X2lwdHIpIDsgZXh0ZXJuIGRvdWJsZSBfX21vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRy
KSA7CgoKCmV4dGVybiBkb3VibGUgZXhwbTEgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBf
X2V4cG0xIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2cxcCAoZG91YmxlIF9feCkg
OyBleHRlcm4gZG91YmxlIF9fbG9nMXAgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIGxv
Z2IgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZ2IgKGRvdWJsZSBfX3gpIDsKIyAx
NDMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgcG93IChk
b3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19wb3cgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX3kpIDsKCgpleHRlcm4gZG91YmxlIHNxcnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJu
IGRvdWJsZSBfX3NxcnQgKGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91
YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9faHlwb3QgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX3kpIDsKCgoKCmV4dGVybiBkb3VibGUgY2JydCAoZG91YmxlIF9feCkgOyBleHRl
cm4gZG91YmxlIF9fY2JydCAoZG91YmxlIF9feCkgOwoKCgoKCgpleHRlcm4gZG91YmxlIGNlaWwg
KGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2NlaWwgKGRvdWJsZSBfX3gpIDsKCgpleHRl
cm4gZG91YmxlIGZhYnMgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg
ZXh0ZXJuIGRvdWJsZSBfX2ZhYnMgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gZG91YmxlIGZsb29yIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUg
X19mbG9vciAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgZm1vZCAoZG91YmxlIF9feCwg
ZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9fZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGlzaW5mIChkb3VibGUg
X192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgZmluaXRl
IChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBk
b3VibGUgZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9fZHJl
bSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgpleHRlcm4gZG91YmxlIHNpZ25pZmljYW5k
IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19zaWduaWZpY2FuZCAoZG91YmxlIF9feCkg
OwoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fY29weXNpZ24gKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyAyMDkgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBpbnQgX19pc25hbiAoZG91Ymxl
IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25h
biAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g
ZG91YmxlIGowIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2owIChkb3VibGUpIDsKZXh0ZXJu
IGRvdWJsZSBqMSAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19qMSAoZG91YmxlKSA7CmV4dGVy
biBkb3VibGUgam4gKGludCwgZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19qbiAoaW50LCBkb3Vi
bGUpIDsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX195MCAoZG91
YmxlKSA7CmV4dGVybiBkb3VibGUgeTEgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9feTEgKGRv
dWJsZSkgOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9f
eW4gKGludCwgZG91YmxlKSA7CgoKCgoKZXh0ZXJuIGRvdWJsZSBlcmYgKGRvdWJsZSkgOyBleHRl
cm4gZG91YmxlIF9fZXJmIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSBlcmZjIChkb3VibGUpIDsg
ZXh0ZXJuIGRvdWJsZSBfX2VyZmMgKGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIGxnYW1tYSAoZG91
YmxlKSA7IGV4dGVybiBkb3VibGUgX19sZ2FtbWEgKGRvdWJsZSkgOwojIDIzOCAiL3Vzci9pbmNs
dWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBnYW1tYSAoZG91YmxlKSA7IGV4
dGVybiBkb3VibGUgX19nYW1tYSAoZG91YmxlKSA7CgoKCgoKCmV4dGVybiBkb3VibGUgbGdhbW1h
X3IgKGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7IGV4dGVybiBkb3VibGUgX19sZ2FtbWFfciAo
ZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSByaW50IChkb3Vi
bGUgX194KSA7IGV4dGVybiBkb3VibGUgX19yaW50IChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRv
dWJsZSBuZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25leHRhZnRlciAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBkb3VibGUgcmVt
YWluZGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19yZW1haW5k
ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYiAoZG91
YmxlIF9feCwgZG91YmxlIF9fbikgOyBleHRlcm4gZG91YmxlIF9fc2NhbGIgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX24pIDsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJuIChkb3VibGUgX194LCBpbnQg
X19uKSA7IGV4dGVybiBkb3VibGUgX19zY2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24pIDsKCgoK
ZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlIF9feCkgOyBleHRlcm4gaW50IF9faWxvZ2IgKGRvdWJs
ZSBfX3gpIDsKIyA2NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgODIgIi91c3IvaW5jbHVk
ZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBhY29zZiAoZmxv
YXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Fjb3NmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9h
dCBhc2luZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2FzaW5mIChmbG9hdCBfX3gpIDsK
CmV4dGVybiBmbG9hdCBhdGFuZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2F0YW5mIChm
bG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCBhdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSA7
IGV4dGVybiBmbG9hdCBfX2F0YW4yZiAoZmxvYXQgX195LCBmbG9hdCBfX3gpIDsKCgpleHRlcm4g
ZmxvYXQgY29zZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Nvc2YgKGZsb2F0IF9feCkg
OwoKZXh0ZXJuIGZsb2F0IHNpbmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19zaW5mIChm
bG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCB0YW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0
IF9fdGFuZiAoZmxvYXQgX194KSA7CiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAzCmV4dGVybiBmbG9hdCBjb3NoZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Nvc2hm
IChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCBzaW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBm
bG9hdCBfX3NpbmhmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCB0YW5oZiAoZmxvYXQgX194
KSA7IGV4dGVybiBmbG9hdCBfX3RhbmhmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IGFj
b3NoZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Fjb3NoZiAoZmxvYXQgX194KSA7Cgpl
eHRlcm4gZmxvYXQgYXNpbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmIChm
bG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxv
YXQgX19hdGFuaGYgKGZsb2F0IF9feCkgOwoKCgoKCmV4dGVybiBmbG9hdCBleHBmIChmbG9hdCBf
X3gpIDsgZXh0ZXJuIGZsb2F0IF9fZXhwZiAoZmxvYXQgX194KSA7CiMgMTA2ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxvYXQgZnJleHBmIChmbG9hdCBfX3gsIGlu
dCAqX19leHBvbmVudCkgOyBleHRlcm4gZmxvYXQgX19mcmV4cGYgKGZsb2F0IF9feCwgaW50ICpf
X2V4cG9uZW50KSA7CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBpbnQgX19leHBv
bmVudCkgOyBleHRlcm4gZmxvYXQgX19sZGV4cGYgKGZsb2F0IF9feCwgaW50IF9fZXhwb25lbnQp
IDsKCgpleHRlcm4gZmxvYXQgbG9nZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2xvZ2Yg
KGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBsb2cxMGYgKGZsb2F0IF9feCkgOyBleHRlcm4g
ZmxvYXQgX19sb2cxMGYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQg
X194LCBmbG9hdCAqX19pcHRyKSA7IGV4dGVybiBmbG9hdCBfX21vZGZmIChmbG9hdCBfX3gsIGZs
b2F0ICpfX2lwdHIpIDsKCgoKZXh0ZXJuIGZsb2F0IGV4cG0xZiAoZmxvYXQgX194KSA7IGV4dGVy
biBmbG9hdCBfX2V4cG0xZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGxvZzFwZiAoZmxv
YXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2xvZzFwZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZs
b2F0IGxvZ2JmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nYmYgKGZsb2F0IF9feCkg
OwojIDE0MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IHBv
d2YgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX3Bvd2YgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSA7CgoKZXh0ZXJuIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJu
IGZsb2F0IF9fc3FydGYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4gZmxvYXQgaHlwb3RmIChmbG9h
dCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19oeXBvdGYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSA7CgoKCgpleHRlcm4gZmxvYXQgY2JydGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxv
YXQgX19jYnJ0ZiAoZmxvYXQgX194KSA7CgoKCgoKCmV4dGVybiBmbG9hdCBjZWlsZiAoZmxvYXQg
X194KSA7IGV4dGVybiBmbG9hdCBfX2NlaWxmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQg
ZmFic2YgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxv
YXQgX19mYWJzZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0
ZXJuIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Zsb29yZiAoZmxv
YXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGZtb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOyBl
eHRlcm4gZmxvYXQgX19mbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgoKCmV4dGVybiBp
bnQgX19pc2luZmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgpleHRlcm4gaW50IF9fZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWYgKGZsb2F0IF9fdmFsdWUp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZHJlbWYgKGZsb2F0
IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2RyZW1mIChmbG9hdCBfX3gsIGZsb2F0
IF9feSkgOwoKCgpleHRlcm4gZmxvYXQgc2lnbmlmaWNhbmRmIChmbG9hdCBfX3gpIDsgZXh0ZXJu
IGZsb2F0IF9fc2lnbmlmaWNhbmRmIChmbG9hdCBfX3gpIDsKCgoKCmV4dGVybiBmbG9hdCBjb3B5
c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKIyAyMDkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAzCmV4dGVybiBpbnQgX19pc25hbmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgajBmIChmbG9hdCkgOyBleHRlcm4g
ZmxvYXQgX19qMGYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBqMWYgKGZsb2F0KSA7IGV4dGVybiBm
bG9hdCBfX2oxZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IGpuZiAoaW50LCBmbG9hdCkgOyBleHRl
cm4gZmxvYXQgX19qbmYgKGludCwgZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IHkwZiAoZmxvYXQpIDsg
ZXh0ZXJuIGZsb2F0IF9feTBmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgeTFmIChmbG9hdCkgOyBl
eHRlcm4gZmxvYXQgX195MWYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCB5bmYgKGludCwgZmxvYXQp
IDsgZXh0ZXJuIGZsb2F0IF9feW5mIChpbnQsIGZsb2F0KSA7CgoKCgoKZXh0ZXJuIGZsb2F0IGVy
ZmYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2VyZmYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBl
cmZjZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKGZsb2F0KSA7CmV4dGVybiBmbG9h
dCBsZ2FtbWFmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmIChmbG9hdCkgOwojIDIz
OCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGdhbW1hZiAo
ZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fZ2FtbWFmIChmbG9hdCkgOwoKCgoKCgpleHRlcm4gZmxv
YXQgbGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKSA7IGV4dGVybiBmbG9hdCBfX2xn
YW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2FtcCkgOwoKCgoKCgpleHRlcm4gZmxvYXQgcmlu
dGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19yaW50ZiAoZmxvYXQgX194KSA7CgoKZXh0
ZXJuIGZsb2F0IG5leHRhZnRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25leHRhZnRlcmYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGZsb2F0IHJl
bWFpbmRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX3JlbWFpbmRl
cmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKCmV4dGVybiBmbG9hdCBzY2FsYmYgKGZsb2F0
IF9feCwgZmxvYXQgX19uKSA7IGV4dGVybiBmbG9hdCBfX3NjYWxiZiAoZmxvYXQgX194LCBmbG9h
dCBfX24pIDsKCgoKCmV4dGVybiBmbG9hdCBzY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIDsg
ZXh0ZXJuIGZsb2F0IF9fc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSA7CgoKCmV4dGVybiBp
bnQgaWxvZ2JmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGludCBfX2lsb2diZiAoZmxvYXQgX194KSA7
CiMgODMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDk5ICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNyL2lu
Y2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgYWNvc2wgKGxvbmcg
ZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zbCAobG9uZyBkb3VibGUgX194
KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19hc2lubCAobG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFubCAo
bG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRhbjJsIChsb25nIGRvdWJs
ZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuMmwgKGxv
bmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNv
c2wgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NsIChsb25nIGRv
dWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lubCAobG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9u
ZyBkb3VibGUgdGFubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Rh
bmwgKGxvbmcgZG91YmxlIF9feCkgOwojIDc4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMu
aCIgMwpleHRlcm4gbG9uZyBkb3VibGUgY29zaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19jb3NobCAobG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgc2luaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5obCAo
bG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgdGFuaGwgKGxvbmcgZG91Ymxl
IF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX190YW5obCAobG9uZyBkb3VibGUgX194KSA7CgoK
CmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19hY29zaGwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91Ymxl
IGFzaW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5obCAo
bG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRhbmhsIChsb25nIGRvdWJs
ZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbmhsIChsb25nIGRvdWJsZSBfX3gpIDsK
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2V4cGwgKGxvbmcgZG91YmxlIF9feCkgOwojIDEwNiAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIGZyZXhwbCAobG9uZyBkb3Vi
bGUgX194LCBpbnQgKl9fZXhwb25lbnQpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZnJleHBsIChs
b25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBs
ZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7CgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGxvZ2wgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUg
X19sb2dsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMTBsIChs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nMTBsIChsb25nIGRvdWJs
ZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbW9kZmwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgKl9faXB0cikgOyBleHRlcm4gbG9uZyBkb3VibGUgX19tb2RmbCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBt
MWwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19leHBtMWwgKGxvbmcg
ZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9f
eCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBsb2dibCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2xvZ2JsIChsb25nIGRvdWJsZSBfX3gpIDsKIyAxNDMgIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBwb3dsIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19wb3dsIChsb25nIGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBzcXJ0bCAobG9u
ZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NxcnRsIChsb25nIGRvdWJsZSBf
X3gpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9faHlwb3RsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNicnRsIChsb25n
IGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2JydGwgKGxvbmcgZG91YmxlIF9f
eCkgOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19jZWlsbCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbG9vcmwgKGxvbmcg
ZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbG9vcmwgKGxvbmcgZG91YmxlIF9f
eCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1vZGwgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgX195KSA7CgoKCgpleHRlcm4gaW50IF9faXNpbmZsIChsb25nIGRvdWJsZSBf
X3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0
ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
CmV4dGVybiBpbnQgaXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGRyZW1sIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19k
cmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIHNpZ25pZmljYW5kbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX3NpZ25pZmljYW5kbCAobG9uZyBkb3VibGUgX194KSA7CgoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgY29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3B5c2lnbmwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CiMgMjA5ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gaW50IF9faXNu
YW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
CmV4dGVybiBpbnQgaXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGowbCAobG9uZyBkb3VibGUpIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fajBsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUg
ajFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19qMWwgKGxvbmcgZG91Ymxl
KSA7CmV4dGVybiBsb25nIGRvdWJsZSBqbmwgKGludCwgbG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fam5sIChpbnQsIGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSB5
MGwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kwbCAobG9uZyBkb3VibGUp
IDsKZXh0ZXJuIGxvbmcgZG91YmxlIHkxbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9feTFsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgeW5sIChpbnQsIGxv
bmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3lubCAoaW50LCBsb25nIGRvdWJsZSkg
OwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBlcmZsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19lcmZsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgZXJmY2wg
KGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmNsIChsb25nIGRvdWJsZSkg
OwpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fbGdhbW1hbCAobG9uZyBkb3VibGUpIDsKIyAyMzggIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBnYW1tYWwgKGxvbmcgZG91YmxlKSA7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2dhbW1hbCAobG9uZyBkb3VibGUpIDsKCgoKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGxnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkgOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19sZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdh
bXApIDsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmludGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBs
b25nIGRvdWJsZSBuZXh0YWZ0ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZXh0YWZ0
ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSByZW1haW5kZXJsIChsb25nIGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19yZW1haW5kZXJs
IChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgc2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbikgOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19zY2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKSA7CgoK
CgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSA7
IGV4dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikg
OwoKCgpleHRlcm4gaW50IGlsb2dibCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBpbnQgX19p
bG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOwojIDEwMCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAz
CiMgMTEzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBpbnQgc2lnbmdhbTsKIyAyNDAg
Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDMKdHlwZWRlZiBlbnVtCnsKICBfSUVFRV8gPSAtMSwKICBf
U1ZJRF8sCiAgX1hPUEVOXywKICBfUE9TSVhfLAogIF9JU09DXwp9IF9MSUJfVkVSU0lPTl9UWVBF
OwoKCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsKIyAyNjUgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDMKc3RydWN0IGV4Y2VwdGlvbgoKICB7CiAgICBpbnQgdHlwZTsKICAg
IGNoYXIgKm5hbWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAgZG91Ymxl
IHJldHZhbDsKICB9OwoKCgoKZXh0ZXJuIGludCBtYXRoZXJyIChzdHJ1Y3QgZXhjZXB0aW9uICpf
X2V4Yyk7CiMgMzUwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGlubGluZS5oIiAxIDMKIyAyOTEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUu
aCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3VibGUpIDsgZXh0ZXJuIF9faW5s
aW5lIGRvdWJsZSBfX3NnbiAoZG91YmxlIF9feCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6
IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgX19zZ25m
IChmbG9hdCkgOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgX19zZ25mIChmbG9hdCBfX3gpIHsgcmV0
dXJuIF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEuMCk7IH0gZXh0ZXJu
IF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2dubCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIF9faW5s
aW5lIGxvbmcgZG91YmxlIF9fc2dubCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX3ggPT0g
MC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9CiMgNDI1ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuMiAoZG91
YmxlIF9feSwgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1
IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxv
YXQgYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4g
X19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91Ymxl
IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgx
KSIpOyByZXR1cm4gX192YWx1ZTsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19hdGFu
MmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVl
KSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CgoK
ZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVt
XG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsg
fSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVt
XG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsg
fSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJ
MWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIp
OyByZXR1cm4gX192YWx1ZTsgfQojIDQ0MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5o
IiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgc3FydCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBk
b3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVz
dWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxv
YXQgc3FydGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192
b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJu
IF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3Vi
bGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxl
X18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1
bHQ7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgi
ZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9
CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBmYWJzIChkb3VibGUgX194KSB7IHJldHVybiBfX2J1
aWx0aW5fZmFicyAoX194KTsgfQpleHRlcm4gX19pbmxpbmUgZmxvYXQgZmFic2YgKGZsb2F0IF9f
eCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNmIChfX3gpOyB9CmV4dGVybiBfX2lubGluZSBsb25n
IGRvdWJsZSBmYWJzbCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2wg
KF9feCk7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91Ymxl
IF9feCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNsIChfX3gpOyB9CiMgNDY2ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuIChkb3Vi
bGUgX194KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgi
ZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gp
IHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZw
YXRhbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9f
cmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7
IHJldHVybiBfX3Jlc3VsdDsgfQoKZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwg
KGxvbmcgZG91YmxlKSA7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbjFsIChsb25n
IGRvdWJsZSBfX3gpIHsgX19leHRlbnNpb25fXyB1bmlvbiB7IGxvbmcgZG91YmxlIF9feGxkOyB1
bnNpZ25lZCBpbnQgX194aVszXTsgfSBfX24gPSB7IF9feGxkOiBfX3ggfTsgX19uLl9feGlbMl0g
PSAoX19uLl9feGlbMl0gJiAweDgwMDApIHwgMHgzZmZmOyBfX24uX194aVsxXSA9IDB4ODAwMDAw
MDA7IF9fbi5fX3hpWzBdID0gMDsgcmV0dXJuIF9fbi5fX3hsZDsgfQojIDQ5MiAiL3Vzci9pbmNs
dWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgZmxvb3IgKGRv
dWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNp
Z25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3Rt
cDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAg
PSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIg
OiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChf
X3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJt
IiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZmxvb3Jm
IChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19j
d3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0
bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAl
MCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQi
IChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6
ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3Vi
bGUgZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25l
ZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0i
IChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgi
ZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfQojIDUwMyAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgY2Vp
bCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxl
IHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBf
X2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19j
d3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3
ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6
IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBj
ZWlsZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRp
bGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50
IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBf
X2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxk
Y3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAi
IDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcg
ZG91YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNp
Z25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAi
PW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNtIF9f
dm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxl
ICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfQojIDUyMSAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUK
bGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIg
KF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0KIyA1Mzkg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91Ymxl
IGxvZzFwIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IGlmIChf
X2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEzNTYyMzczMDk1MDQ4ODBMKSBfX3Zh
bHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsbjJc
blx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpIDog
InN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2cxcGYg
KGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAo
X194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxv
Z2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4
Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIp
OyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nMXBsIChs
b25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFi
c2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUg
PSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQi
ICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3Qo
MSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1NTMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxp
bmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGFzaW5oIChkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAobG9nMXBsIChfX3kg
KiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkgKyBfX3kpICogX19zZ24x
bCAoX194KSk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGFzaW5oZiAoZmxvYXQgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAobG9nMXBsIChf
X3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkgKyBfX3kpICogX19z
Z24xbCAoX194KSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGFzaW5obCAobG9uZyBk
b3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJl
dHVybiAobG9nMXBsIChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEu
MCkgKyBfX3kpICogX19zZ24xbCAoX194KSk7IH0KCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUg
YWNvc2ggKGRvdWJsZSBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEu
MCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYWNvc2hm
IChmbG9hdCBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBf
X3NxcnRsIChfX3ggKyAxLjApKTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYWNvc2hs
IChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEu
MCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgYXRh
bmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194
KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAgKyBfX3kpKSAqIF9f
c2duMWwgKF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAtMC41ICog
bG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gpOyB9IGV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdp
c3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFw
bCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfQoKCgoKZXh0
ZXJuIF9faW5saW5lIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1
cm4gX19zcXJ0bCAoX194ICogX194ICsgX195ICogX195KTsgfSBleHRlcm4gX19pbmxpbmUgZmxv
YXQgaHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gX19zcXJ0bCAoX194ICog
X194ICsgX195ICogX195KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgaHlwb3RsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgeyByZXR1cm4gX19zcXJ0bCAoX194ICog
X194ICsgX195ICogX195KTsgfQoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2diIChkb3VibGUg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5r
KSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4g
X19pbmxpbmUgZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gp
KTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGxvZ2JsIChs
b25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAi
PXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVl
OyB9CiMgNjUyICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5s
aW5lIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRvdWJs
ZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
IjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10
IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6
ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZHJlbWYgKGZs
b2F0IF9feCwgZmxvYXQgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBp
bnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3Rz
dwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChf
X2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1
ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQg
X19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3Rzdwkl
JWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Ns
b2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsg
fQojIDY2NSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGlu
ZSBpbnQKX19maW5pdGUgKGRvdWJsZSBfX3gpCnsKICByZXR1cm4gKF9fZXh0ZW5zaW9uX18KICAg
ICAgICAgICgoKCgodW5pb24geyBkb3VibGUgX19kOyBpbnQgX19pWzJdOyB9KSB7X19kOiBfX3h9
KS5fX2lbMV0KICAgICAgICAgICAgIHwgMHg4MDBmZmZmZnUpICsgMSkgPj4gMzEpKTsKfQojIDM1
MSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgMjUgInJlc2FtcGxlLmMiIDIKIyAxICIvdXNy
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUvc3RkaW8uaCIgMSAz
CiMgMzcgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9z
dGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDM4ICIvdXNyL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoK
CgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUv
c3RkZGVmLmgiIDEgMwojIDE5OSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyA0
NCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGlv
LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyNiAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMK
IyAyNyAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMwICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191
X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVk
IGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OSAiL3Vzci9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQg
X19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25f
XyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFk
X3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9p
bnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19p
bm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190
Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5
cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9u
ZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2lu
dCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNp
ZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNf
dDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3di
bGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tp
ZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKCgoKdHlwZWRlZiBpbnQgX19rZXlfdDsK
Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgoKdHlwZWRlZiBsb25n
IGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRl
ZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7
CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9f
ZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYg
X191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoKdHlw
ZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX190
X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQg
aW50IF9fc29ja2xlbl90OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMu
aCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVk
LmgiIDMKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsK
ICB9OwojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKc3RydWN0
IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsKICBpbnQgX19zcGlubG9j
azsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJlYWRf
ZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7CiAgaW50IF9fZGV0
YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19z
Y2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3Qg
X19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsK
ICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0
CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVzY3Ig
X19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQg
X19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRo
cmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsKICBp
bnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQgX19tX2tpbmQ7
CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRfbXV0ZXhfdDsK
CgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4YXR0
cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKIyAxNDAgIi91c3IvaW5jbHVkZS9i
aXRzL3B0aHJlYWR0eXBlcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90
OwojIDE0NCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCiMgNDYgIi91c3IvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA1NCAi
L3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgi
IDMKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKIyA2NCAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg
X0lPX0ZJTEUgX19GSUxFOwojIDc0ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMC40L2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMK
IyAzMiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvX0dfY29uZmln
LmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3R5cGVzLmgiIDEgMwojIDEwICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoK
CgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUv
c3RkZGVmLmgiIDEgMwojIDI4NyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKIyAzMTIg
Ii91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRkZWYu
aCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19j
b25maWcuaCIgMiAzCiMgMjQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3djaGFyLmgiIDEgMwojIDUxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCiMgNjcgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAzCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1
bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1
ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCnR5
cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0g
X0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0
ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2dj
b252LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5j
bHVkZS9nY29udi5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIv
dXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hh
ci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3Iv
aW5jbHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCgoKCmVudW0KewogIF9f
R0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05W
X05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAg
X19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19H
Q09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgpl
bnVtCnsKICBfX0dDT05WX0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JT
ID0gMHgwMDAyCn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBf
ZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNf
ZGF0YTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAg
Kiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6ZV90ICosIGludCwg
aW50KTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3QgX19nY29udl9z
dGVwICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9z
dGVwICopOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2Nv
bnZfc3RlcCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9fZ2Nv
bnZfc3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2dj
b252X3RyYW5zX2NvbnRleHRfZmN0KSAodm9pZCAqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJh
bnNfcXVlcnlfZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqKiosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQg
KCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRl
ZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252
X3RyYW5zX2RhdGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252
X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19l
bmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZf
dHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3Qg
X19nY29udl9sb2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9f
bW9kbmFtZTsKCiAgaW50IF9fY291bnRlcjsKCiAgY2hhciAqX19mcm9tX25hbWU7CiAgY2hhciAq
X190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252X2luaXRfZmN0IF9faW5p
dF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQgX19taW5fbmVlZGVk
X2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBfX21pbl9uZWVkZWRfdG87CiAg
aW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVsOwoKICB2b2lkICpfX2RhdGE7
Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQgY2hhciAqX19vdXRi
dWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAgaW50IF9fZmxhZ3M7CgoKCiAg
aW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2ludGVybmFsX3VzZTsKCiAgX19t
YnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoKCiAgc3RydWN0IF9f
Z2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX19nY29udl9p
bmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsK
ICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGEgW107Cn0gKl9f
Z2NvbnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKdHlwZWRlZiB1bmlv
bgp7CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsKICAgIHN0cnVjdCBf
X2djb252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGE7CiAg
fSBfX2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBf
R191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18p
KSk7CiMgMzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MyAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2lu
Y2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMC40L2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBf
X2dudWNfdmFfbGlzdDsKIyA1NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDE2MCAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19qdW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsK
IyAxNzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190OwoK
CgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAgc3Ry
dWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTMgIi91c3IvaW5jbHVkZS9s
aWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRfb2ssCiAg
X19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9ub2NvbnYK
fTsKIyAyNjEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50
IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsK
ICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9J
T193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7
CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lP
X2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJrZXIg
Kl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAg
aW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQg
X2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRi
dWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMgMzA1ICIvdXNyL2luY2x1ZGUvbGliaW8u
aCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAgdm9pZCAqX19wYWQxOwogIHZvaWQgKl9f
cGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0g
MiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19G
SUxFOwoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVz
IF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRv
dXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDM0NCAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2
b2lkICpfX2Nvb2tpZSwgY2hhciAqX19idWYsIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBl
ZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFy
ICpfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoK
CgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3Qg
Kl9fcG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nv
b2tpZSk7CiMgMzk2ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9fdW5kZXJm
bG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRl
cm4gaW50IF9fb3ZlcmZsb3cgKF9JT19GSUxFICosIGludCkgOwpleHRlcm4gd2ludF90IF9fd3Vu
ZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAq
KSA7CmV4dGVybiB3aW50X3QgX193b3ZlcmZsb3cgKF9JT19GSUxFICosIHdpbnRfdCkgOwojIDQy
NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUg
Kl9fZnApIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIDsK
ZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVy
cm9yIChfSU9fRklMRSAqX19mcCkgOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9f
RklMRSAqX19mcCkgOwoKCgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgKF9JT19GSUxFICop
IDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQg
X0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwojIDQ1NiAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDMKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25z
dCBjaGFyICogX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xp
c3QsIGludCAqX19yZXN0cmljdCkgOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUg
Kl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2dudWNfdmFfbGlzdCkgOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklM
RSAqLCBpbnQsIF9fc3NpemVfdCkgOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUg
Kiwgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19G
SUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpIDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3Bv
cyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2Jh
Y2t1cF9hcmVhIChfSU9fRklMRSAqKSA7CiMgNzUgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA4OSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfR19m
cG9zX3QgZnBvc190OwojIDEzOCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0u
aCIgMSAzCiMgMTM5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2lu
Y2x1ZGUvc3RkaW8uaCIgMiAzCgoKCmV4dGVybiBGSUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0
ZG91dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsKCgoKCgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29u
c3QgY2hhciAqX19maWxlbmFtZSkgOwoKZXh0ZXJuIGludCByZW5hbWUgKF9fY29uc3QgY2hhciAq
X19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2
b2lkKSA7CiMgMTcwICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3MpIDsKCgoKCmV4
dGVybiBjaGFyICp0bXBuYW1fciAoY2hhciAqX19zKSA7CiMgMTg3ICIvdXNyL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAq
dGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkKICAgICAg
ICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9z
ZSAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkg
OwoKCgpleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKIyAyMTAg
Ii91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRpby5o
IiAzCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5h
bWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMp
IDsKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxl
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21v
ZGVzLAogICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoj
IDI0MCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0
ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19t
b2RlcykgOwojIDI2MyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9p
bmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAo
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAg
ICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgOwoKCgoKZXh0ZXJuIHZvaWQg
c2V0YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9f
YnVmLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUpIDsKCgpleHRlcm4gdm9p
ZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHJpbnRmIChG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHByaW50ZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc3ByaW50ZiAo
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgpleHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICpf
X3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKZXh0ZXJuIGludCB2cHJpbnRm
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJn
KQogICAgICAgICAgICA7CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9f
cywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCB2c25w
cmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9s
aXN0IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDMsIDApKSk7CiMgMzM0ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMC40L2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIC4uLikgOwojIDM2MCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19z
dHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQg
Z2V0Y2hhciAodm9pZCkgOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpf
X3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpIDsKCgoKCmV4dGVy
biBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZw
dXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGMgKGludCBfX2Ms
IEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKSA7CgoKCgoK
CgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoK
CgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpl
eHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIDsKCgoKCgpleHRlcm4gaW50IGdl
dHcgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpf
X3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywg
aW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICAgICAgICAgOwojIDQyNiAi
L3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgi
IDMKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgOwojIDQ1MCAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBm
cHV0cyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkKICAgICAgICAgICAgOwojIDQ2MCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBwdXRzIChfX2NvbnN0IGNo
YXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0p
IDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90
IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29uc3Qgdm9pZCAqX19yZXN0
cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7CgoKCmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2Nr
ZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsK
ZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBf
X3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnNlZWsg
KEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CgpleHRlcm4g
bG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJ
TEUgKl9fc3RyZWFtKSA7CiMgNTA0ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMC40L2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICAgICAgICAgOwoK
ZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9z
KSA7CiMgNTQwICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1
ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIDsKCmV4
dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxF
ICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pIDsKZXh0ZXJuIGludCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRl
cm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiB2b2lk
IHBlcnJvciAoX19jb25zdCBjaGFyICpfX3MpIDsKCgoKCmV4dGVybiBpbnQgc3lzX25lcnI7CmV4
dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lzX2Vycmxpc3RbXTsKIyA1NzEgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVy
biBpbnQgZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5s
b2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAoX19jb25z
dCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwoKCmV4dGVybiBpbnQg
cGNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFy
ICpfX3MpIDsKIyA2MTggIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQv
aW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0p
IDsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJu
IHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNjM5ICIvdXNyL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwojIDMzICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5o
IiAzCmV4dGVybiBfX2lubGluZSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewogIHJldHVybiB2ZnByaW50ZiAoc3Rkb3V0
LCBfX2ZtdCwgX19hcmcpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyICh2b2lkKQp7
CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0
Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAoKF9fZnApLT5fSU9fcmVhZF9wdHIg
Pj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChfX2ZwKSA6ICoodW5zaWduZWQgY2hh
ciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0
Y2hhcl91bmxvY2tlZCAodm9pZCkKewogIHJldHVybiAoKHN0ZGluKS0+X0lPX3JlYWRfcHRyID49
IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGluKSA6ICoodW5zaWduZWQgY2hh
ciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQK
cHV0Y2hhciAoaW50IF9fYykKewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQpOwp9CgoK
CgpleHRlcm4gX19pbmxpbmUgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0
cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFt
KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIp
IChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9
IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNfdW5sb2NrZWQgKGludCBf
X2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0
ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAo
dW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lP
X3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y2hhcl91
bmxvY2tlZCAoaW50IF9fYykKewogIHJldHVybiAoKChzdGRvdXQpLT5fSU9fd3JpdGVfcHRyID49
IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwgKHVuc2lnbmVk
IGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5fSU9fd3JpdGVfcHRy
KysgPSAoX19jKSkpOwp9CiMgMTExICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzCmV4dGVy
biBfX2lubGluZSBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4g
KCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBp
bnQKZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVh
bSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgNjQwICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgMjYgInJlc2FtcGxlLmMi
IDIKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMiAzCiMgOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHN0cnVj
dAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoKCgp0eXBlZGVmIHN0
cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07CiAgfSBsZGl2X3Q7
CiMgMTMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dl
dF9tYl9jdXJfbWF4ICh2b2lkKSA7CgoKCmV4dGVybiBkb3VibGUgYXRvZiAoX19jb25zdCBjaGFy
ICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBhdG9pIChf
X2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4g
bG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGF0b2xsIChfX2Nv
bnN0IGNoYXIgKl9fbnB0cikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7CiMg
MTYzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCmV4dGVybiB1bnNpZ25lZCBs
b25nIGludCBzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpCiAgICAgICAgICAgIDsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25n
IGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Up
IDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAg
ICAgICAgICAgIDsKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0
b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19l
eHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgICAg
ICAgICA7CiMgMjUwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRvdWJsZSBfX3N0
cnRvZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf
X2dyb3VwKQogICAgICAgICAgICA7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgICAgICAg
IDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBfX2dyb3VwKSA7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJu
YWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCgpfX2V4dGVu
c2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgpfX2V4dGVu
c2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwg
KF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwg
aW50IF9fZ3JvdXApCiAgICAgICAgICAgIDsKCgoKCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUK
c3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRvZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0
ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0cnRvbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50
IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg
X19iYXNlLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChf
X25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CiMgMzI1ICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b3Eg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChf
X25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5s
aW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jh
c2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i
YXNlLCAwKTsKfQoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50
CnN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9p
bnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4
dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdWxsIChfX2NvbnN0IGNo
YXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAg
ICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwg
X19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCmF0b2YgKF9f
Y29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvZCAoX19ucHRyLCAoY2hhciAqKikg
KCh2b2lkICopMCkpOwp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAoX19jb25zdCBjaGFyICpf
X25wdHIpCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQg
KikwKSwgMTApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludAphdG9sIChfX2NvbnN0IGNoYXIg
Kl9fbnB0cikKewogIHJldHVybiBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTAp
LCAxMCk7Cn0KCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CmF0
b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2xsIChfX25wdHIsIChj
aGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CiMgMzg0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgOwoKCmV4dGVybiBsb25nIGludCBh
NjRsIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKIyAx
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIg
MSAzCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgX191X2No
YXIgdV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9p
bnQ7CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlw
ZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgoKCnR5
cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3QgaW5vX3Q7CiMgNjEgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0eXBl
ZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5cGVk
ZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoKdHlw
ZWRlZiBfX29mZl90IG9mZl90OwojIDk5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlw
ZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYg
X19zc2l6ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRl
ZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMK
IyA2NyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVz
LmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fdGltZV90
IHRpbWVfdDsKIyA3OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3R5cGVzLmgiIDEgMwojIDgwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVm
IF9fY2xvY2tpZF90IGNsb2NraWRfdDsKIyA5MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDkyICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAyIDMKCgp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwojIDEzMyAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAyIDMKIyAxNDYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91
c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCiMgMTQ3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5
cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CiMgMTkwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDMKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkp
Owp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkp
Owp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkp
Owp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkp
OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19RSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKdHlwZWRlZiBp
bnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkpOwojIDIx
MiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5o
IiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDM3ICIvdXNy
L2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAz
CiMgMzggIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgMjEzICIvdXNyL2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMjUg
Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0Lmgi
IDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwojIDMyICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5o
IiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlwZWRlZiBpbnQgX19z
aWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50
IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsKICB9IF9f
c2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgp0eXBlZGVm
IF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMK
IyAxMDYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKc3RydWN0IHRpbWVzcGVjCiAgewogICAgX190
aW1lX3QgdHZfc2VjOwogICAgbG9uZyBpbnQgdHZfbnNlYzsKICB9OwojIDQ1ICIvdXNyL2luY2x1
ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMK
IyA2MyAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
dHlwZXMuaCIgMSAzCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMiAzCgoKCnN0cnVj
dCB0aW1ldmFsCiAgewogICAgX190aW1lX3QgdHZfc2VjOwogICAgX19zdXNlY29uZHNfdCB0dl91
c2VjOwogIH07CiMgNDcgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCnR5cGVkZWYg
X19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fZmRfbWFz
azsKCgoKCgoKCnR5cGVkZWYgc3RydWN0CiAgewoKCgoKCgogICAgX19mZF9tYXNrIF9fZmRzX2Jp
dHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKV07CgoKICB9IGZkX3NldDsKCgoKCgoK
dHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKIyAxMDIgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDMKZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBf
X3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZk
cywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCkgOwoj
IDIxNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9z
eXMvc3lzbWFjcm9zLmgiIDEgMwojIDIxOSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK
IyAyMzAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fYmxrY250X3QgYmxr
Y250X3Q7CgoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7CgoKCnR5cGVkZWYgX19m
c2ZpbGNudF90IGZzZmlsY250X3Q7CiMgMzkxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoK
CgoKCgpleHRlcm4gbG9uZyBpbnQgcmFuZG9tICh2b2lkKSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmRv
bSAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVu
c2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX3N0YXRlbGVuKSA7CgoKCmV4dGVybiBjaGFyICpzZXRzdGF0ZSAoY2hhciAq
X19zdGF0ZWJ1ZikgOwoKCgoKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAq
ZnB0cjsKICAgIGludDMyX3QgKnJwdHI7CiAgICBpbnQzMl90ICpzdGF0ZTsKICAgIGludCByYW5k
X3R5cGU7CiAgICBpbnQgcmFuZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7CiAgICBpbnQzMl90ICpl
bmRfcHRyOwogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9f
cmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKl9fcmVzdHJpY3Qg
X19yZXN1bHQpIDsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBz
dHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSA7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1bnNp
Z25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIDsKCmV4dGVybiBpbnQgc2V0c3Rh
dGVfciAoY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKCmV4dGVybiBpbnQg
cmFuZCAodm9pZCkgOwoKZXh0ZXJuIHZvaWQgc3JhbmQgKHVuc2lnbmVkIGludCBfX3NlZWQpIDsK
CgoKZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGludCAqX19zZWVkKSA7CgoKCgoKCgpleHRl
cm4gZG91YmxlIGRyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25l
ZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lk
KSA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz
XSkgOwoKCmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBsb25nIGludCBq
cmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiB2b2lkIHNy
YW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkgOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpz
ZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10pIDsKZXh0ZXJuIHZvaWQgbGNv
bmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10pIDsKCgoKCgpzdHJ1Y3QgZHJhbmQ0
OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNo
b3J0IGludCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2ln
bmVkIHNob3J0IGludCBfX2luaXQ7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9
OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0
IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVz
dWx0KSA7CmV4dGVybiBpbnQgZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz
XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1
bHQpIDsKCgpleHRlcm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0
IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194
c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVz
dHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmlj
dCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbXJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRh
ICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9f
cmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0
IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0
YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpf
X3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9f
c2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCiAgICAgICAgICAgIDsKCmV4
dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CgpleHRlcm4g
aW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwojIDUyNyAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3Qg
X19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21h
bGxvY19fKSk7CgoKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3Qg
X19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAo
dm9pZCAqX19wdHIpIDsKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSA7CgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL2FsbG9jYS5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUv
YWxsb2NhLmgiIDIgMwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAy
IDMKCgoKCgoKCmV4dGVybiB2b2lkICphbGxvY2EgKHNpemVfdCBfX3NpemUpIDsKIyA1NDcgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3Qg
X19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDU2MSAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkp
IDsKCgoKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywg
dm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICAgICAgICAgOwoKCgoKCmV4dGVybiB2b2lk
IGV4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwojIDU4
NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSA7CgoKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSA7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYgKGNoYXIgKl9fc3RyaW5nKSA7
CgoKCgoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0IGNo
YXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCiAgICAgICAgICAgIDsKCgpleHRlcm4gaW50IHVu
c2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52
ICh2b2lkKSA7CiMgNjIzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1r
dGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFy
ICpfX3RlbXBsYXRlKSA7CiMgNjUwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNo
YXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChf
X2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgOwojIDY3MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIDsKCgoK
CgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qg
dm9pZCAqKTsKIyA2ODkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqYnNl
YXJjaCAoX19jb25zdCB2b2lkICpfX2tleSwgX19jb25zdCB2b2lkICpfX2Jhc2UsCiAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5f
dCBfX2NvbXBhcik7CgoKCmV4dGVybiB2b2lkIHFzb3J0ICh2b2lkICpfX2Jhc2UsIHNpemVfdCBf
X25tZW1iLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgX19jb21wYXJfZm5fdCBf
X2NvbXBhcik7CgoKCmV4dGVybiBpbnQgYWJzIChpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CmV4dGVybiBsb25nIGludCBsYWJzIChsb25nIGludCBfX3gpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKIyA3MTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
ZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAgICAgICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsZGl2X3QgbGRpdiAobG9uZyBpbnQgX19udW1l
ciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKIyA3MjggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqZWN2dCAo
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAg
ICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRlcm4gY2hh
ciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpl
eHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19i
dWYpIDsKCgoKCmV4dGVybiBjaGFyICpxZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9f
bmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg
Kl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3VibGUgX192
YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBf
X2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9u
ZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoKZXh0ZXJu
IGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hh
ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgOwpl
eHRlcm4gaW50IGZjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jl
c3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWdu
LCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVu
KSA7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdp
dCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jl
c3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVm
LCBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVl
LCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVj
cHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19y
ZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKCmV4dGVybiBpbnQgbWJsZW4gKF9f
Y29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19wd2MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9f
cywgd2NoYXJfdCBfX3djaGFyKSA7CgoKCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgKHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19wd2NzLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSA7CgpleHRlcm4gc2l6ZV90IHdjc3RvbWJzIChj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hh
cl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICAgICAgICAgOwoKCgoKCgoK
ZXh0ZXJuIGludCBycG1hdGNoIChfX2NvbnN0IGNoYXIgKl9fcmVzcG9uc2UpIDsKIyA4NTggIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xv
YWRhdmdbXSwgaW50IF9fbmVsZW0pIDsKIyAyNyAicmVzYW1wbGUuYyIgMgoKIyAxICJjb25maWcu
aCIgMQojIDMwICJjb25maWcuaCIKIyAxICIuLi8uLi9jb25maWcuaCIgMQojIDMxICJjb25maWcu
aCIgMgojIDk5ICJjb25maWcuaCIKdHlwZWRlZiBkb3VibGUgRkxPQVRfVDsKIyAyMzUgImNvbmZp
Zy5oIgogICAgICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50MzI7CiAgICAgICAgdHlwZWRl
ZiBsb25nIGludDMyOwoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNjsKdHlwZWRl
ZiBzaG9ydCBpbnQxNjsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4Owp0eXBlZGVmIGNoYXIg
aW50ODsKIyAzMjAgImNvbmZpZy5oIgogICB0eXBlZGVmIGludDE2IHNhbXBsZV90OwogICB0eXBl
ZGVmIGludDMyIGZpbmFsX3ZvbHVtZV90OwojIDI5ICJyZXNhbXBsZS5jIiAyCiMgMSAiY29tbW9u
LmgiIDEKIyAyNCAiY29tbW9uLmgiCmV4dGVybiBjaGFyICpwcm9ncmFtX25hbWUsIGN1cnJlbnRf
ZmlsZW5hbWVbXTsKZXh0ZXJuIGludCBjdXJyZW50X2ZpbGVkZXNjcmlwdG9yOwoKIyAxICIvdXNy
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUvc3RkaW8uaCIgMSAz
CiMgMjggImNvbW1vbi5oIiAyCgpleHRlcm4gRklMRSAqbXNnZnA7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgY2hhciAqcGF0aDsKICB2b2lkICpuZXh0OwogIGludCBsZXZlbDsKfSBQYXRoTGlzdDsKCgoK
CgoKZXh0ZXJuIEZJTEUgKm9wZW5fZmlsZShjb25zdCBjaGFyICpuYW1lLCBpbnQgZGVjb21wcmVz
cywgaW50IG5vaXNlX21vZGUsIGludCBsZXZlbCk7CmV4dGVybiB2b2lkIGFkZF90b19wYXRobGlz
dChjaGFyICpzLCBpbnQgbGV2ZWwpOwpleHRlcm4gdm9pZCBjbGVhcl9wYXRobGlzdChpbnQgbGV2
ZWwpOwpleHRlcm4gdm9pZCBjbG9zZV9maWxlKEZJTEUgKmZwKTsKZXh0ZXJuIHZvaWQgc2tpcChG
SUxFICpmcCwgc2l6ZV90IGxlbik7CmV4dGVybiB2b2lkICpzYWZlX21hbGxvYyhzaXplX3QgY291
bnQpOwojIDMwICJyZXNhbXBsZS5jIiAyCiMgMSAiaW5zdHJ1bS5oIiAxCiMgMjggImluc3RydW0u
aCIKdHlwZWRlZiBzdHJ1Y3QgewogIHVpbnQzMgogICAgbG9vcF9zdGFydCwgbG9vcF9lbmQsIGRh
dGFfbGVuZ3RoLAogICAgc2FtcGxlX3JhdGUsIGxvd19mcmVxLCBoaWdoX2ZyZXEsIHJvb3RfZnJl
cTsKCiAgdWludDgKICAgIHJvb3RfdHVuZSwgZmluZV90dW5lOwoKICB1aW50MzIKICAgIGVudmVs
b3BlX3JhdGVbN10sIGVudmVsb3BlX29mZnNldFs3XSwKICAgIG1vZHVsYXRpb25fcmF0ZVs3XSwg
bW9kdWxhdGlvbl9vZmZzZXRbN107CiAgRkxPQVRfVAogICAgdm9sdW1lLCByZXNvbmFuY2UsCiAg
ICBtb2RFbnZUb0ZpbHRlckZjLCBtb2RFbnZUb1BpdGNoLCBtb2RMZm9Ub0ZpbHRlckZjOwogIHNh
bXBsZV90ICpkYXRhOwogIGludDMyCiAgICB0cmVtb2xvX3N3ZWVwX2luY3JlbWVudCwgdHJlbW9s
b19waGFzZV9pbmNyZW1lbnQsCiAgICBsZm9fc3dlZXBfaW5jcmVtZW50LCBsZm9fcGhhc2VfaW5j
cmVtZW50LAogICAgdmlicmF0b19zd2VlcF9pbmNyZW1lbnQ7CiAgdWludDMyCiAgICB2aWJyYXRv
X2NvbnRyb2xfcmF0aW8sCiAgICBjdXRvZmZfZnJlcTsKICB1aW50OAogICAgcmV2ZXJiZXJhdGlv
biwgY2hvcnVzZGVwdGgsCiAgICB0cmVtb2xvX2RlcHRoLCB2aWJyYXRvX2RlcHRoLAogICAgbW9k
ZXM7CiAgdWludDgKICAgIHBhbm5pbmcsIG5vdGVfdG9fdXNlLCBleGNsdXNpdmVDbGFzczsKICBp
bnQxNgogICAgc2NhbGVfdHVuaW5nLCBrZXlUb01vZEVudkhvbGQsIGtleVRvTW9kRW52RGVjYXks
CiAgICBrZXlUb1ZvbEVudkhvbGQsIGtleVRvVm9sRW52RGVjYXk7CiAgdWludDgKICAgIGF0dGVu
dWF0aW9uLCBmcmVxX2NlbnRlcjsKICBpbnQzMgogICAgZnJlcV9zY2FsZSwgdmlicmF0b19kZWxh
eTsKfSBTYW1wbGU7CiMgNzggImluc3RydW0uaCIKdHlwZWRlZiBzdHJ1Y3QgewogIGludCB0eXBl
OwogIGludCBzYW1wbGVzOwogIFNhbXBsZSAqc2FtcGxlOwogIGludCBsZWZ0X3NhbXBsZXM7CiAg
U2FtcGxlICpsZWZ0X3NhbXBsZTsKICBpbnQgcmlnaHRfc2FtcGxlczsKICBTYW1wbGUgKnJpZ2h0
X3NhbXBsZTsKICB1bnNpZ25lZCBjaGFyICpjb250ZW50czsKfSBJbnN0cnVtZW50OwoKdHlwZWRl
ZiBzdHJ1Y3QgX0luc3RydW1lbnRMYXllciB7CiAgdWludDggbG8sIGhpOwogIGludCBzaXplOwog
IEluc3RydW1lbnQgKmluc3RydW1lbnQ7CiAgc3RydWN0IF9JbnN0cnVtZW50TGF5ZXIgKm5leHQ7
Cn0gSW5zdHJ1bWVudExheWVyOwoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICBjb25zdCBjaGFyICpu
YW1lOwogIEluc3RydW1lbnRMYXllciAqbGF5ZXI7CiAgaW50IGZvbnRfdHlwZSwgc2ZfaXgsIGxh
c3RfdXNlZCwgdHVuaW5nOwoKICBpbnQgbm90ZSwgYW1wLCBwYW4sIHN0cmlwX2xvb3AsIHN0cmlw
X2VudmVsb3BlLCBzdHJpcF90YWlsOwoKCgoKfSBUb25lQmFua0VsZW1lbnQ7CiMgMTIxICJpbnN0
cnVtLmgiCnR5cGVkZWYgc3RydWN0IHsKICBjb25zdCBjaGFyICpuYW1lOwoKICBUb25lQmFua0Vs
ZW1lbnQgdG9uZVsxMjhdOwoKCgp9IFRvbmVCYW5rOwoKZXh0ZXJuIGNoYXIgKnNmX2ZpbGU7Cgpl
eHRlcm4gVG9uZUJhbmsgKnRvbmViYW5rW10sICpkcnVtc2V0W107CgoKCgpleHRlcm4gSW5zdHJ1
bWVudExheWVyICpkZWZhdWx0X2luc3RydW1lbnQ7CmV4dGVybiBpbnQgZGVmYXVsdF9wcm9ncmFt
OwpleHRlcm4gaW50IGFudGlhbGlhc2luZ19hbGxvd2VkOwpleHRlcm4gaW50IGZhc3RfZGVjYXk7
CmV4dGVybiBpbnQgZnJlZV9pbnN0cnVtZW50c19hZnRlcndhcmRzOwpleHRlcm4gaW50IGN1dG9m
Zl9hbGxvd2VkOwoKCgpleHRlcm4gaW50IGxvYWRfbWlzc2luZ19pbnN0cnVtZW50cyh2b2lkKTsK
ZXh0ZXJuIHZvaWQgZnJlZV9pbnN0cnVtZW50cyh2b2lkKTsKZXh0ZXJuIHZvaWQgZW5kX3NvdW5k
Zm9udCh2b2lkKTsKZXh0ZXJuIGludCBzZXRfZGVmYXVsdF9pbnN0cnVtZW50KGNoYXIgKm5hbWUp
OwoKZXh0ZXJuIGludDMyIGNvbnZlcnRfdHJlbW9sb19zd2VlcCh1aW50OCBzd2VlcCk7CmV4dGVy
biBpbnQzMiBjb252ZXJ0X3ZpYnJhdG9fc3dlZXAodWludDggc3dlZXAsIGludDMyIHZpYl9jb250
cm9sX3JhdGlvKTsKZXh0ZXJuIGludDMyIGNvbnZlcnRfdHJlbW9sb19yYXRlKHVpbnQ4IHJhdGUp
OwpleHRlcm4gaW50MzIgY29udmVydF92aWJyYXRvX3JhdGUodWludDggcmF0ZSk7CgpleHRlcm4g
dm9pZCBpbml0X3NvdW5kZm9udChjaGFyICpmbmFtZSwgaW50IG9sZGJhbmssIGludCBuZXdiYW5r
LCBpbnQgbGV2ZWwpOwoKCgoKZXh0ZXJuIEluc3RydW1lbnRMYXllciAqbG9hZF9zYmtfcGF0Y2go
Y29uc3QgY2hhciAqbmFtZSwgaW50IGdtX251bSwgaW50IGJhbmssIGludCBwZXJjdXNzaW9uLAog
aW50IHBhbm5pbmcsIGludCBhbXAsIGludCBub3RlX3RvX3VzZSwgaW50IHNmX2l4KTsKZXh0ZXJu
IGludCBjdXJyZW50X3R1bmVfbnVtYmVyOwpleHRlcm4gaW50IG1heF9wYXRjaF9tZW1vcnk7CmV4
dGVybiBpbnQgY3VycmVudF9wYXRjaF9tZW1vcnk7CiMgMzEgInJlc2FtcGxlLmMiIDIKIyAxICJw
bGF5bWlkaS5oIiAxCiMgMjggInBsYXltaWRpLmgiCnR5cGVkZWYgc3RydWN0IHsKICB1aW50MzIg
dGltZTsKICB1aW50OCBjaGFubmVsLCB0eXBlLCBhLCBiLCBwb2x5cGhvbnk7Cn0gTWlkaUV2ZW50
OwojIDkxICJwbGF5bWlkaS5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50CiAgICBiYW5rLCBraXQs
IHNmeCwgcHJvZ3JhbSwgdm9sdW1lLCBzdXN0YWluLCBwYW5uaW5nLCBwaXRjaGJlbmQsIGV4cHJl
c3Npb24sCiAgICB2YXJpYXRpb25iYW5rLCBtb25vLAoKICAgIHBvcnRhbWVudG8sCgogICAgcmV2
ZXJiZXJhdGlvbiwgY2hvcnVzZGVwdGgsIGhhcm1vbmljY29udGVudCwgcmVsZWFzZXRpbWUsIGF0
dGFja3RpbWUsIGJyaWdodG5lc3MsCiAgICBwaXRjaHNlbnM7CgogIHVpbnQzMiBtb2R1bGF0aW9u
X3doZWVsOwoKCgogIEZMT0FUX1QKICAgIHBpdGNoZmFjdG9yOwoKCiAgdWludDggcG9ydGFtZW50
b190aW1lX21zYiwgcG9ydGFtZW50b190aW1lX2xzYjsKICB1aW50OCB0dW5pbmdfbXNiLCB0dW5p
bmdfbHNiOwogIGludCBwb3J0YV9jb250cm9sX3JhdGlvLCBwb3J0YV9kcGI7CiAgaW50MzIgbGFz
dF9ub3RlX2ZpbmU7CgoKICBpbnQzMiB2aWJyYXRvX3JhdGlvLCB2aWJyYXRvX2RlbGF5OwogIGlu
dCB2aWJyYXRvX2RlcHRoOwoKCiAgY2hhcgogICAgdHJhbnNwb3NlOwogIGNvbnN0IGNoYXIgKm5h
bWU7Cn0gQ2hhbm5lbDsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVpbnQ4CiAgICBzdGF0dXMs
IGNoYW5uZWwsIG5vdGUsIHZlbG9jaXR5LCBjbG9uZV90eXBlOwogIFNhbXBsZSAqc2FtcGxlOwog
IFNhbXBsZSAqbGVmdF9zYW1wbGU7CiAgU2FtcGxlICpyaWdodF9zYW1wbGU7CiAgaW50MzIgY2xv
bmVfdm9pY2U7CiAgdWludDMyCiAgICBvcmlnX2ZyZXF1ZW5jeSwgZnJlcXVlbmN5LAogICAgc2Ft
cGxlX29mZnNldCwgbG9vcF9zdGFydCwgbG9vcF9lbmQ7CiAgaW50MzIKICAgIGVudmVsb3BlX3Zv
bHVtZSwgbW9kdWxhdGlvbl92b2x1bWU7CiAgdWludDMyCiAgICBlbnZlbG9wZV90YXJnZXQsIG1v
ZHVsYXRpb25fdGFyZ2V0OwogIHVpbnQzMgogICAgdHJlbW9sb19zd2VlcCwgdHJlbW9sb19zd2Vl
cF9wb3NpdGlvbiwgdHJlbW9sb19waGFzZSwKICAgIGxmb19zd2VlcCwgbGZvX3N3ZWVwX3Bvc2l0
aW9uLCBsZm9fcGhhc2UsCiAgICB2aWJyYXRvX3N3ZWVwLCB2aWJyYXRvX3N3ZWVwX3Bvc2l0aW9u
LCB2aWJyYXRvX2RlcHRoLAogICAgc3RhcnR0aW1lLCBlY2hvX2RlbGF5X2NvdW50OwogIGludDMy
CiAgICBlY2hvX2RlbGF5LAogICAgc2FtcGxlX2luY3JlbWVudCwKICAgIGVudmVsb3BlX2luY3Jl
bWVudCwKICAgIG1vZHVsYXRpb25faW5jcmVtZW50LAogICAgdHJlbW9sb19waGFzZV9pbmNyZW1l
bnQsCiAgICBsZm9fcGhhc2VfaW5jcmVtZW50OwoKICBmaW5hbF92b2x1bWVfdCBsZWZ0X21peCwg
cmlnaHRfbWl4OwoKICBGTE9BVF9UCiAgICB2b2x1bWUsIGxlZnRfYW1wLCByaWdodF9hbXAsIHRy
ZW1vbG9fdm9sdW1lLCBsZm9fdm9sdW1lLAogICAgbW9kRW52VG9GaWx0ZXJGYywgbW9kTGZvVG9G
aWx0ZXJGYywKICAgIGN1cnJlbnRfeDAsIGN1cnJlbnRfeDEsIGN1cnJlbnRfeTAsIGN1cnJlbnRf
eTE7CiAgaW50MzIKICAgIHZpYnJhdG9fc2FtcGxlX2luY3JlbWVudFszMl07CiAgdWludDMyCiAg
ICBlbnZlbG9wZV9yYXRlWzddLCBlbnZlbG9wZV9vZmZzZXRbN107CiAgdWludDMyCiAgICB2aWJy
YXRvX3BoYXNlLCB2aWJyYXRvX2NvbnRyb2xfcmF0aW8sIHZpYnJhdG9fY29udHJvbF9jb3VudGVy
LAoKICAgIHZpYnJhdG9fZGVsYXksIG9yaWdfdmlicmF0b19jb250cm9sX3JhdGlvLCBtb2R1bGF0
aW9uX3doZWVsLAoKICAgIGVudmVsb3BlX3N0YWdlLCBtb2R1bGF0aW9uX3N0YWdlLCBjb250cm9s
X2NvdW50ZXIsCiAgICBtb2R1bGF0aW9uX2RlbGF5LCBtb2R1bGF0aW9uX2NvdW50ZXIsIGJ3X2lu
ZGV4LCBwYW5uaW5nLCBwYW5uZWQ7CgoKCiAgaW50IHBvcnRhX2NvbnRyb2xfcmF0aW8sIHBvcnRh
X2NvbnRyb2xfY291bnRlciwgcG9ydGFfZHBiOwogIGludDMyIHBvcnRhX3BiOwoKCn0gVm9pY2U7
CiMgMjE4ICJwbGF5bWlkaS5oIgpleHRlcm4gQ2hhbm5lbCBjaGFubmVsWzY0XTsKZXh0ZXJuIHNp
Z25lZCBjaGFyIGRydW12b2x1bWVbNjRdWzEyOF07CmV4dGVybiBzaWduZWQgY2hhciBkcnVtcGFu
cG90WzY0XVsxMjhdOwpleHRlcm4gc2lnbmVkIGNoYXIgZHJ1bXJldmVyYmVyYXRpb25bNjRdWzEy
OF07CmV4dGVybiBzaWduZWQgY2hhciBkcnVtY2hvcnVzZGVwdGhbNjRdWzEyOF07CgoKCmV4dGVy
biBWb2ljZSB2b2ljZVsxMjhdOwoKZXh0ZXJuIGludDMyIGNvbnRyb2xfcmF0aW8sIGFtcF93aXRo
X3BvbHksIGFtcGxpZmljYXRpb247CmV4dGVybiBpbnQzMiBkcnVtY2hhbm5lbHM7CmV4dGVybiBp
bnQgYWRqdXN0X3Bhbm5pbmdfaW1tZWRpYXRlbHk7CmV4dGVybiBpbnQgdm9pY2VzOwoKCmV4dGVy
biBpbnQgbm90ZV9rZXlfb2Zmc2V0OwpleHRlcm4gRkxPQVRfVCBtaWRpX3RpbWVfcmF0aW87CmV4
dGVybiBpbnQgb3B0X21vZHVsYXRpb25fd2hlZWw7CmV4dGVybiBpbnQgb3B0X3BvcnRhbWVudG87
CmV4dGVybiBpbnQgb3B0X25ycG5fdmlicmF0bzsKZXh0ZXJuIGludCBvcHRfcmV2ZXJiX2NvbnRy
b2w7CmV4dGVybiBpbnQgb3B0X2Nob3J1c19jb250cm9sOwpleHRlcm4gaW50IG9wdF9jaGFubmVs
X3ByZXNzdXJlOwpleHRlcm4gaW50IG9wdF9vdmVybGFwX3ZvaWNlX2FsbG93OwpleHRlcm4gdm9p
ZCByZWNvbXB1dGVfZnJlcShpbnQgdik7CmV4dGVybiBpbnQgZG9udF9jc3BsaW5lOwoKZXh0ZXJu
IGludCBvcHRfZHJ5OwpleHRlcm4gaW50IG9wdF9leHByZXNzaW9uX2N1cnZlOwpleHRlcm4gaW50
IG9wdF92b2x1bWVfY3VydmU7CmV4dGVybiBpbnQgb3B0X3N0ZXJlb19zdXJyb3VuZDsKZXh0ZXJu
IGludCBkb250X2ZpbHRlcl9tZWxvZGljOwpleHRlcm4gaW50IGRvbnRfZmlsdGVyX2RydW1zOwpl
eHRlcm4gaW50IGNvbW1hbmRfY3V0b2ZmX2FsbG93ZWQ7CmV4dGVybiBpbnQgZG9udF9jaG9ydXM7
CmV4dGVybiBpbnQgZG9udF9yZXZlcmI7CmV4dGVybiBpbnQgY3VycmVudF9pbnRlcnBvbGF0aW9u
OwpleHRlcm4gaW50IGRvbnRfa2VlcF9sb29waW5nOwoKZXh0ZXJuIGludCBHTV9TeXN0ZW1fT247
CmV4dGVybiBpbnQgWEdfU3lzdGVtX09uOwpleHRlcm4gaW50IEdTX1N5c3RlbV9PbjsKCmV4dGVy
biBpbnQgWEdfU3lzdGVtX3JldmVyYl90eXBlOwpleHRlcm4gaW50IFhHX1N5c3RlbV9jaG9ydXNf
dHlwZTsKZXh0ZXJuIGludCBYR19TeXN0ZW1fdmFyaWF0aW9uX3R5cGU7CgoKCgpleHRlcm4gaW50
IHBsYXlfbWlkaShNaWRpRXZlbnQgKmVsLCB1aW50MzIgZXZlbnRzLCB1aW50MzIgc2FtcGxlcyk7
CmV4dGVybiBpbnQgcGxheV9taWRpX2ZpbGUoY29uc3QgY2hhciAqZm4pOwoKZXh0ZXJuIHZvaWQg
ZHVtYl9wYXNzX3BsYXlpbmdfbGlzdChpbnQgbnVtYmVyX29mX2ZpbGVzLCBjb25zdCBjaGFyICps
aXN0X29mX2ZpbGVzW10pOwoKCgpleHRlcm4gaW50IHJlYWRfY29uZmlnX2ZpbGUoY29uc3QgY2hh
ciAqbmFtZSwgaW50IHByZXNjYW5uaW5nKTsKZXh0ZXJuIGNoYXIgKmN1cnJlbnRfY29uZmlnX2Zp
bGU7CmV4dGVybiBpbnQgcmV2ZXJiX29wdGlvbnM7CmV4dGVybiBpbnQgZ2xvYmFsX3JldmVyYjsK
ZXh0ZXJuIGludCBnbG9iYWxfY2hvcnVzOwpleHRlcm4gaW50IGdsb2JhbF9lY2hvOwpleHRlcm4g
aW50IGdsb2JhbF9kZXR1bmU7CmV4dGVybiBpbnQgY2ZnX3NlbGVjdDsKZXh0ZXJuIHZvaWQgY2xl
YXJfY29uZmlnKHZvaWQpOwpleHRlcm4gdm9pZCBlZmZlY3RfYWN0aXZhdGUoIGludCBpU3dpdGNo
ICk7CmV4dGVybiBpbnQgaGF2ZV9jb21tYW5kbGluZV9taWRpczsKIyAzMiAicmVzYW1wbGUuYyIg
MgojIDEgIm91dHB1dC5oIiAxCiMgMzQgIm91dHB1dC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgdWlu
dDMyIHJhdGUsIGVuY29kaW5nOwogIGludCBmZDsKICBpbnQzMiBleHRyYV9wYXJhbVs1XTsKICBj
b25zdCBjaGFyICppZF9uYW1lOwogIGNoYXIgaWRfY2hhcmFjdGVyOwogIGNvbnN0IGNoYXIgKm5h
bWU7CgogIGludCAoKm9wZW5fb3V0cHV0KSh2b2lkKTsKICB2b2lkICgqY2xvc2Vfb3V0cHV0KSh2
b2lkKTsKICB2b2lkICgqb3V0cHV0X2RhdGEpKGludDMyICpidWYsIHVpbnQzMiBjb3VudCk7CiAg
aW50ICgqZHJpdmVyX291dHB1dF9kYXRhKSh1bnNpZ25lZCBjaGFyICpidWYsIHVpbnQzMiBjb3Vu
dCk7CiAgdm9pZCAoKmZsdXNoX291dHB1dCkodm9pZCk7CiAgdm9pZCAoKnB1cmdlX291dHB1dCko
dm9pZCk7CiAgaW50ICgqb3V0cHV0X2NvdW50KSh1aW50MzIgY3QpOwp9IFBsYXlNb2RlOwoKZXh0
ZXJuIFBsYXlNb2RlICpwbGF5X21vZGVfbGlzdFtdLCAqcGxheV9tb2RlOwpleHRlcm4gY2hhciAq
Y2ZnX25hbWVzW107CmV4dGVybiBpbnQgZ290X2FfY29uZmlndXJhdGlvbjsKCmV4dGVybiBpbnQg
b3V0cHV0X2J1ZmZlcl9mdWxsOwpleHRlcm4gaW50IG91dHB1dF9kZXZpY2Vfb3BlbjsKCgpleHRl
cm4gaW50IGJfb3V0X2NvdW50KHZvaWQpOwpleHRlcm4gdm9pZCBiX291dChjaGFyIGlkLCBpbnQg
ZmQsIGludCAqYnVmLCBpbnQgb2NvdW50KTsKCgoKZXh0ZXJuIGludCBvdXRwdXRfY2xpcHM7CgoK
ZXh0ZXJuIHZvaWQgczMydG9zOChpbnQzMiAqbHAsIHVpbnQzMiBjKTsKZXh0ZXJuIHZvaWQgczMy
dG91OChpbnQzMiAqbHAsIHVpbnQzMiBjKTsKCgpleHRlcm4gdm9pZCBzMzJ0b3MxNihpbnQzMiAq
bHAsIHVpbnQzMiBjKTsKZXh0ZXJuIHZvaWQgczMydG91MTYoaW50MzIgKmxwLCB1aW50MzIgYyk7
CgoKZXh0ZXJuIHZvaWQgczMydG9zMTZ4KGludDMyICpscCwgdWludDMyIGMpOwpleHRlcm4gdm9p
ZCBzMzJ0b3UxNngoaW50MzIgKmxwLCB1aW50MzIgYyk7CgoKZXh0ZXJuIHZvaWQgczMydG91bGF3
KGludDMyICpscCwgdWludDMyIGMpOwojIDMzICJyZXNhbXBsZS5jIiAyCiMgMSAiY29udHJvbHMu
aCIgMQojIDEyNyAiY29udHJvbHMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogIGNvbnN0IGNoYXIgKmlk
X25hbWU7CiAgY2hhciBpZF9jaGFyYWN0ZXI7CiAgaW50IHZlcmJvc2l0eSwgdHJhY2VfcGxheWlu
Zywgb3BlbmVkOwoKICBpbnQgKCpvcGVuKShpbnQgdXNpbmdfc3RkaW4sIGludCB1c2luZ19zdGRv
dXQpOwogIHZvaWQgKCpwYXNzX3BsYXlpbmdfbGlzdCkoaW50IG51bWJlcl9vZl9maWxlcywgY29u
c3QgY2hhciAqbGlzdF9vZl9maWxlc1tdKTsKICB2b2lkICgqY2xvc2UpKHZvaWQpOwogIGludCAo
KnJlYWQpKGludDMyICp2YWxwKTsKICBpbnQgKCpjbXNnKShpbnQgdHlwZSwgaW50IHZlcmJvc2l0
eV9sZXZlbCwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoKICB2b2lkICgqcmVmcmVzaCkodm9pZCk7
CiAgdm9pZCAoKnJlc2V0KSh2b2lkKTsKICB2b2lkICgqZmlsZV9uYW1lKShjaGFyICpuYW1lKTsK
ICB2b2lkICgqdG90YWxfdGltZSkodWludDMyIHR0KTsKICB2b2lkICgqY3VycmVudF90aW1lKSh1
aW50MzIgY3QpOwoKICB2b2lkICgqbm90ZSkoaW50IHYpOwogIHZvaWQgKCptYXN0ZXJfdm9sdW1l
KShpbnQgbXYpOwogIHZvaWQgKCpwcm9ncmFtKShpbnQgY2hhbm5lbCwgaW50IHZhbCwgY29uc3Qg
Y2hhciAqbmFtZSk7CiAgdm9pZCAoKnZvbHVtZSkoaW50IGNoYW5uZWwsIGludCB2YWwpOwogIHZv
aWQgKCpleHByZXNzaW9uKShpbnQgY2hhbm5lbCwgaW50IHZhbCk7CiAgdm9pZCAoKnBhbm5pbmcp
KGludCBjaGFubmVsLCBpbnQgdmFsKTsKICB2b2lkICgqc3VzdGFpbikoaW50IGNoYW5uZWwsIGlu
dCB2YWwpOwogIHZvaWQgKCpwaXRjaF9iZW5kKShpbnQgY2hhbm5lbCwgaW50IHZhbCk7Cgp9IENv
bnRyb2xNb2RlOwoKZXh0ZXJuIGludCBsYXN0X3JjX2NvbW1hbmQ7CmV4dGVybiBpbnQgbGFzdF9y
Y19hcmc7CmV4dGVybiBDb250cm9sTW9kZSAqY3RsX2xpc3RbXSwgKmN0bDsKZXh0ZXJuIGludCBj
aGVja19mb3JfcmModm9pZCk7CiMgMzQgInJlc2FtcGxlLmMiIDIKIyAxICJ0YWJsZXMuaCIgMQoj
IDI3ICJ0YWJsZXMuaCIKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIyAyOCAidGFibGVz
LmgiIDIKCgoKCgoKCmV4dGVybiB1aW50MzIgZnJlcV90YWJsZVtdOwoKZXh0ZXJuIEZMT0FUX1Qg
KnZvbF90YWJsZTsKZXh0ZXJuIEZMT0FUX1QgZGVmX3ZvbF90YWJsZVtdOwpleHRlcm4gRkxPQVRf
VCBnc192b2xfdGFibGVbXTsKZXh0ZXJuIEZMT0FUX1QgKnhnX3ZvbF90YWJsZTsKCgoKZXh0ZXJu
IEZMT0FUX1QgZXhwcl90YWJsZVtdOwpleHRlcm4gRkxPQVRfVCBiZW5kX2ZpbmVbXTsKZXh0ZXJu
IEZMT0FUX1QgYmVuZF9jb2Fyc2VbXTsKCmV4dGVybiBGTE9BVF9UIG1pZGlfdGltZV90YWJsZVtd
LCBtaWRpX3RpbWVfdGFibGUyW107CgpleHRlcm4gRkxPQVRfVCBidXR0ZXJ3b3J0aFsxMDFdWzVd
OwpleHRlcm4gdWludDggKl9sMnU7CmV4dGVybiB1aW50OCBfbDJ1X1tdOwojIDYxICJ0YWJsZXMu
aCIKZXh0ZXJuIHZvaWQgaW5pdF90YWJsZXModm9pZCk7CgpleHRlcm4gc3RydWN0IHNob3J0X3Zv
aWNlX3R5cGUgewogICAgICAgIGNvbnN0IGNoYXIgKnZuYW1lOwoKICAgICAgICBjaGFyIGZsYWdz
Owp9IGdtX3ZvaWNlW107CiMgMzUgInJlc2FtcGxlLmMiIDIKIyAxICJyZXNhbXBsZS5oIiAxCiMg
MjMgInJlc2FtcGxlLmgiCmV4dGVybiBzYW1wbGVfdCAqcmVzYW1wbGVfdm9pY2UoaW50IHYsIHVp
bnQzMiAqY291bnRwdHIpOwpleHRlcm4gc2FtcGxlX3QgKnJlc2FtcGxlX3ZvaWNlX2xhZ3Jhbmdl
KGludCB2LCB1aW50MzIgKmNvdW50cHRyKTsKZXh0ZXJuIHNhbXBsZV90ICpyZXNhbXBsZV92b2lj
ZV9maWx0ZXIoaW50IHYsIHVpbnQzMiAqY291bnRwdHIpOwpleHRlcm4gdm9pZCBwcmVfcmVzYW1w
bGUoU2FtcGxlICpzcCk7CmV4dGVybiB2b2lkIGRvX2xvd3Bhc3MoU2FtcGxlICpzYW1wbGUsIHVp
bnQzMiBzcmF0ZSwgc2FtcGxlX3QgKmJ1ZiwgdWludDMyIGNvdW50LCB1aW50MzIgZnJlcSwgRkxP
QVRfVCByZXNvbmFuY2UpOwpleHRlcm4gaW50IHJlY29tcHV0ZV9tb2R1bGF0aW9uKGludCB2KTsK
ZXh0ZXJuIHNhbXBsZV90IHJlc2FtcGxlX2J1ZmZlclsoMTw8MTApKzEwMF07CmV4dGVybiB1aW50
MzIgcmVzYW1wbGVfYnVmZmVyX29mZnNldDsKZXh0ZXJuIGludCB1cGRhdGVfbW9kdWxhdGlvbihp
bnQgdik7CmV4dGVybiBpbnQgdXBkYXRlX21vZHVsYXRpb25fc2lnbmFsKGludCB2KTsKZXh0ZXJu
IGludDMyIGNhbGNfbW9kX2ZyZXEoaW50IHYsIGludDMyIGluY3IpOwojIDM2ICJyZXNhbXBsZS5j
IiAyCiMgNTQgInJlc2FtcGxlLmMiCnNhbXBsZV90IHJlc2FtcGxlX2J1ZmZlclsoMTw8MTApKzEw
MF07CnVpbnQzMiByZXNhbXBsZV9idWZmZXJfb2Zmc2V0ID0gMDsKCnN0YXRpYyBzYW1wbGVfdCAq
dmliX3Jlc2FtcGxlX3ZvaWNlKGludCwgdWludDMyICosIGludCk7CnN0YXRpYyBzYW1wbGVfdCAq
bm9ybWFsX3Jlc2FtcGxlX3ZvaWNlKGludCwgdWludDMyICosIGludCk7CgoKaW50IHJlY29tcHV0
ZV9tb2R1bGF0aW9uKGludCB2KQp7CiAgaW50IHN0YWdlOwoKICBzdGFnZSA9IHZvaWNlW3ZdLm1v
ZHVsYXRpb25fc3RhZ2U7CgogIGlmIChzdGFnZT41KQogICAgewoKICAgICAgdm9pY2Vbdl0ubW9k
dWxhdGlvbl9pbmNyZW1lbnQgPSAwOwogICAgICByZXR1cm4gMTsKICAgIH0KCiAgaWYgKCh2b2lj
ZVt2XS5zYW1wbGUtPm1vZGVzICYgKDE8PDYpKSAmJiAodm9pY2Vbdl0uc2FtcGxlLT5tb2RlcyAm
ICgxPDw1KSkpCiAgICB7CiAgICAgIGlmICh2b2ljZVt2XS5zdGF0dXMgJiAoKDE8PDEpIHwgKDE8
PDIpKSkKICAgICAgICB7CiAgICAgICAgICBpZiAoc3RhZ2U+MikKICAgICAgICAgICAgewoKICAg
ICAgICAgICAgICB2b2ljZVt2XS5tb2R1bGF0aW9uX2luY3JlbWVudD0wOwogICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogIHZvaWNlW3ZdLm1vZHVs
YXRpb25fc3RhZ2U9c3RhZ2UrMTsKCgogIGlmICh2b2ljZVt2XS5tb2R1bGF0aW9uX3ZvbHVtZT09
KGludCl2b2ljZVt2XS5zYW1wbGUtPm1vZHVsYXRpb25fb2Zmc2V0W3N0YWdlXSB8fAogICAgICAo
c3RhZ2UgPiAyICYmIHZvaWNlW3ZdLm1vZHVsYXRpb25fdm9sdW1lIDwgKGludCl2b2ljZVt2XS5z
YW1wbGUtPm1vZHVsYXRpb25fb2Zmc2V0W3N0YWdlXSkpCgoKCiAgICByZXR1cm4gcmVjb21wdXRl
X21vZHVsYXRpb24odik7CiAgdm9pY2Vbdl0ubW9kdWxhdGlvbl90YXJnZXQ9dm9pY2Vbdl0uc2Ft
cGxlLT5tb2R1bGF0aW9uX29mZnNldFtzdGFnZV07CiAgdm9pY2Vbdl0ubW9kdWxhdGlvbl9pbmNy
ZW1lbnQgPSB2b2ljZVt2XS5zYW1wbGUtPm1vZHVsYXRpb25fcmF0ZVtzdGFnZV07CiAgaWYgKChp
bnQpdm9pY2Vbdl0ubW9kdWxhdGlvbl90YXJnZXQ8dm9pY2Vbdl0ubW9kdWxhdGlvbl92b2x1bWUp
CiAgICB2b2ljZVt2XS5tb2R1bGF0aW9uX2luY3JlbWVudCA9IC12b2ljZVt2XS5tb2R1bGF0aW9u
X2luY3JlbWVudDsKICByZXR1cm4gMDsKfQoKaW50IHVwZGF0ZV9tb2R1bGF0aW9uKGludCB2KQp7
CgogIGlmKHZvaWNlW3ZdLm1vZHVsYXRpb25fZGVsYXkgPiAwKQogIHsKCgogICAgICB2b2ljZVt2
XS5tb2R1bGF0aW9uX2RlbGF5IC09IDE7CiAgICAgIGlmKHZvaWNlW3ZdLm1vZHVsYXRpb25fZGVs
YXkgPiAwKQogICAgICAgICAgcmV0dXJuIDA7CiAgfQoKCiAgdm9pY2Vbdl0ubW9kdWxhdGlvbl92
b2x1bWUgKz0gdm9pY2Vbdl0ubW9kdWxhdGlvbl9pbmNyZW1lbnQ7CiAgaWYgKHZvaWNlW3ZdLm1v
ZHVsYXRpb25fdm9sdW1lIDwgMCkgdm9pY2Vbdl0ubW9kdWxhdGlvbl92b2x1bWUgPSAwOwoKICBp
ZiAoKCh2b2ljZVt2XS5tb2R1bGF0aW9uX2luY3JlbWVudCA8IDApICYmCiAgICAgICAodm9pY2Vb
dl0ubW9kdWxhdGlvbl92b2x1bWUgPD0gKGludCl2b2ljZVt2XS5tb2R1bGF0aW9uX3RhcmdldCkp
IHx8CiAgICAgICgodm9pY2Vbdl0ubW9kdWxhdGlvbl9pbmNyZW1lbnQgPiAwKSAmJgogICAgICAg
ICAgICh2b2ljZVt2XS5tb2R1bGF0aW9uX3ZvbHVtZSA+PSAoaW50KXZvaWNlW3ZdLm1vZHVsYXRp
b25fdGFyZ2V0KSkpCiAgICB7CiAgICAgIHZvaWNlW3ZdLm1vZHVsYXRpb25fdm9sdW1lID0gdm9p
Y2Vbdl0ubW9kdWxhdGlvbl90YXJnZXQ7CiAgICAgIGlmIChyZWNvbXB1dGVfbW9kdWxhdGlvbih2
KSkKICAgICAgICByZXR1cm4gMTsKICAgIH0KICByZXR1cm4gMDsKfQoKCmludCB1cGRhdGVfbW9k
dWxhdGlvbl9zaWduYWwoaW50IHYpCnsKICBpZiAodm9pY2Vbdl0ubW9kdWxhdGlvbl9pbmNyZW1l
bnQgJiYgdXBkYXRlX21vZHVsYXRpb24odikpCiAgICByZXR1cm4gMTsKICByZXR1cm4gMDsKfQoK
CgoKaW50MzIgY2FsY19tb2RfZnJlcShpbnQgdiwgaW50MzIgaW5jcikKewogIEZMT0FUX1QgbW9k
X2Ftb3VudDsKICBpbnQzMiBmcmVxOwoKICBpZiAodm9pY2Vbdl0udmlicmF0b19jb250cm9sX3Jh
dGlvKSByZXR1cm4gaW5jcjsKICBpZiAoKG1vZF9hbW91bnQ9dm9pY2Vbdl0uc2FtcGxlLT5tb2RF
bnZUb1BpdGNoKTwwLjAyKSByZXR1cm4gaW5jcjsKICBpZiAoaW5jciA8IDApIHJldHVybiBpbmNy
OwogIGZyZXEgPSB2b2ljZVt2XS5mcmVxdWVuY3k7CiAgZnJlcSA9IChpbnQzMikoIChkb3VibGUp
ZnJlcSooMS4wICsgKG1vZF9hbW91bnQgLSAxLjApICogKHZvaWNlW3ZdLm1vZHVsYXRpb25fdm9s
dW1lPj4yMikgLyAyNTUuMCkgKTsKCiAgcmV0dXJuIChpbnQzMikgKCgoKGRvdWJsZSkodm9pY2Vb
dl0uc2FtcGxlLT5zYW1wbGVfcmF0ZSkgKiAoZG91YmxlKShmcmVxKSkgLyAoKGRvdWJsZSkodm9p
Y2Vbdl0uc2FtcGxlLT5yb290X2ZyZXEpICogKGRvdWJsZSkocGxheV9tb2RlLT5yYXRlKSkpICog
KGRvdWJsZSkoMTw8KDEzKSkpOwoKCgoKfQoKCgpzdGF0aWMgc2FtcGxlX3QgKnJzX3BsYWluKGlu
dCB2LCB1aW50MzIgKmNvdW50cHRyKQp7CgogIFZvaWNlCiAgICAqdnA9JnZvaWNlW3ZdOwogIGlu
dDMyIG9mc2QsIHYwLCB2MSwgdjIsIHYzLCB0ZW1wLCBvdmVyc2hvb3Q7CiAgaW50IG9mZnNldDsK
ICB1aW50MzIgY2NfY291bnQ9dnAtPm1vZHVsYXRpb25fY291bnRlcjsKICBzYW1wbGVfdAogICAg
KmRlc3Q9cmVzYW1wbGVfYnVmZmVyK3Jlc2FtcGxlX2J1ZmZlcl9vZmZzZXQsCiAgICAqc3JjPXZw
LT5zYW1wbGUtPmRhdGE7CiAgaW50MzIKICAgIGluY3I9dnAtPnNhbXBsZV9pbmNyZW1lbnQ7CiAg
dWludDMyCiAgICBvZnM9dnAtPnNhbXBsZV9vZmZzZXQ7CgogIHVpbnQzMgogICAgbHM9MCwKICAg
IGxlPXZwLT5zYW1wbGUtPmRhdGFfbGVuZ3RoOwoKICB1aW50MzIKICAgIHNlPXZwLT5zYW1wbGUt
PmRhdGFfbGVuZ3RoOwogIHVpbnQzMgogICAgY291bnQ9KmNvdW50cHRyOwoKICBpZiAoIWluY3Ip
IHJldHVybiByZXNhbXBsZV9idWZmZXIrcmVzYW1wbGVfYnVmZmVyX29mZnNldDsKCiAgb3ZlcnNo
b290ID0gc3JjWyhzZT4+MTMpLTFdIC8gNTA7CiAgaWYgKG92ZXJzaG9vdCA8IDApIG92ZXJzaG9v
dCA9IC1vdmVyc2hvb3Q7CgogICAgd2hpbGUgKGNvdW50LS0pCiAgICB7CgogICAgICAgIG9mZnNl
dCA9IG9mcyA+PiAxMzsKCiAgICAgICAgaWYgKG9mcyA+PSBzZSkgewogICAgICAgICAgICAgICAg
aW50MzIgZGVsdGEgPSAoaW50MzIpKChvZnMgLSBzZSk+PjEzKSA7CiAgICAgICAgICAgICAgICB2
MSA9IChpbnQzMilzcmNbKGludCkoc2U+PjEzKS0xXTsKICAgICAgICAgICAgICAgIHYxIC09IChk
ZWx0YSsxKSAqIHYxIC8gb3ZlcnNob290OwogICAgICAgIH1lbHNlIHYxID0gKGludDMyKXNyY1tv
ZmZzZXRdOwogICAgICAgIGlmIChvZnMgKyAoMUw8PDEzKSA+PSBzZSkgewogICAgICAgICAgICAg
ICAgdjIgPSB2MTsKICAgICAgICB9ZWxzZSB2MiA9IChpbnQzMilzcmNbb2Zmc2V0KzFdOwogICAg
ICAgIGlmKGRvbnRfY3NwbGluZSB8fAogICAgICAgICAgICgob2ZzLSgxTDw8MTMpKTxscyl8fCgo
b2ZzKygyTDw8MTMpKT5sZSkpewogICAgICAgICAgICAgICAgKmRlc3QrKyA9IChzYW1wbGVfdCko
djEgKyAoKGludDMyKSgodjItdjEpICogKGludDMyKShvZnMgJiAofiAoMHhGRkZGRkZGRiA8PCAx
MykpKSkgPj4gMTMpKTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIG9mc2Q9b2ZzOwog
ICAgICAgICAgICAgICAgdjAgPSAoaW50MzIpc3JjW29mZnNldC0xXTsKICAgICAgICAgICAgICAg
IHYzID0gKGludDMyKXNyY1tvZmZzZXQrMl07CiAgICAgICAgICAgICAgICBvZnMgJj0gKH4gKDB4
RkZGRkZGRkYgPDwgMTMpKTsKICAgICAgICAgICAgICAgIHRlbXA9djI7CiAgICAgICAgICAgICAg
ICB2MiA9ICg2KnYyICsKICAgICAgICAgICAgICAgICAgICAgICgoKCggKCAoNSp2MyAtIDExKnYy
ICsgNyp2MSAtIHYwKSoKICAgICAgICAgICAgICAgICAgICAgICAoaW50MzIpb2ZzKSA+PjEzKSoo
aW50MzIpb2ZzKT4+KDEzICsyKSktMSkpKihpbnQzMilvZnM7CiAgICAgICAgICAgICAgICBvZnMg
PSAoMUwgPDwgMTMpIC0gb2ZzOwogICAgICAgICAgICAgICAgdjEgPSAoNip2MSArCiAgICAgICAg
ICAgICAgICAgICAgICAoKCgoKCg1KnYwIC0gMTEqdjEgKyA3KnRlbXAgLSB2MykqCiAgICAgICAg
ICAgICAgICAgICAgICAgKGludDMyKW9mcyk+PjEzKSooaW50MzIpb2ZzKT4+KDEzICsyKSktMSkp
KihpbnQzMilvZnM7CiAgICAgICAgICAgICAgICB2MSA9ICh2MSArIHYyKS8oNkw8PDEzKTsKICAg
ICAgICAgICAgICAgICpkZXN0KysgPSAoc2FtcGxlX3QpKCh2MSA+IDMyNzY3KT8gMzI3Njc6ICgo
djEgPCAtMzI3NjgpPyAtMzI3Njg6IHYxKSk7CiAgICAgICAgICAgICAgICBvZnM9b2ZzZDsKICAg
ICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIWNjX2NvdW50LS0pIHsKICAgICAgICAgICAgICAg
ICAgICBjY19jb3VudCA9IGNvbnRyb2xfcmF0aW8gLSAxOwogICAgICAgICAgICAgICAgICAgIGlm
ICghdXBkYXRlX21vZHVsYXRpb25fc2lnbmFsKHYpKQogICAgICAgICAgICAgICAgICAgICAgICBp
bmNyID0gY2FsY19tb2RfZnJlcSh2LCBpbmNyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgb2Zz
ICs9IGluY3I7CiAgICAgIGlmIChvZnMgPj0gc2UgKyAob3ZlcnNob290IDw8IDEzKSkKICAgICAg
ICB7CiAgICAgICAgICBpZiAoISh2cC0+c3RhdHVzJigxPDwwKSkpCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICB2cC0+c3RhdHVzPSgxPDwwKTsKICAgICAgICAgICAgICBjdGwtPm5vdGUodik7
CiAgICAgICAgICAgIH0KICAgICAgICAgICpjb3VudHB0ci09Y291bnQrMTsKICAgICAgICAgIGJy
ZWFrOwogICAgICAgIH0KICAgIH0KCiAgdnAtPnNhbXBsZV9vZmZzZXQ9b2ZzOwogIHZwLT5tb2R1
bGF0aW9uX2NvdW50ZXI9Y2NfY291bnQ7CiAgcmV0dXJuIHJlc2FtcGxlX2J1ZmZlcityZXNhbXBs
ZV9idWZmZXJfb2Zmc2V0Owp9CgpzdGF0aWMgc2FtcGxlX3QgKnJzX2xvb3AoaW50IHYsIFZvaWNl
ICp2cCwgdWludDMyICpjb3VudHB0cikKewoKICBpbnQzMiBvZnNkLCB2MCwgdjEsIHYyLCB2Mywg
dGVtcCwgb3ZlcnNob290OwogIGludCBvZmZzZXQ7CiAgdWludDMyIGNjX2NvdW50PXZwLT5tb2R1
bGF0aW9uX2NvdW50ZXI7CiAgaW50MzIKICAgIGluY3I9dnAtPnNhbXBsZV9pbmNyZW1lbnQ7CiAg
dWludDMyCiAgICBvZnM9dnAtPnNhbXBsZV9vZmZzZXQ7CiAgdWludDMyCiAgICBsZT12cC0+bG9v
cF9lbmQsCgogICAgbHM9dnAtPmxvb3Bfc3RhcnQsCgogICAgbGw9bGUgLSB2cC0+bG9vcF9zdGFy
dDsKICBzYW1wbGVfdAogICAgKmRlc3Q9cmVzYW1wbGVfYnVmZmVyK3Jlc2FtcGxlX2J1ZmZlcl9v
ZmZzZXQsCiAgICAqc3JjPXZwLT5zYW1wbGUtPmRhdGE7CiAgdWludDMyCiAgICBzZT12cC0+c2Ft
cGxlLT5kYXRhX2xlbmd0aCwKICAgIGNvdW50ID0gKmNvdW50cHRyOwogIGludAogICAgZmxhZ19l
eGl0X2xvb3A7CgoKICBmbGFnX2V4aXRfbG9vcCA9CiAgICAgICAgKHZwLT5zdGF0dXMgJiAoKDE8
PDApIHwgKDE8PDQpKSkgfHwKICAgICAgICAoKHZwLT5zdGF0dXMgJiAoMTw8MykpICYmICh2cC0+
c2FtcGxlLT5tb2RlcyAmICgxPDw3KSkgKSB8fAogICAgICAgICgodnAtPnN0YXR1cyAmICgxPDwz
KSkgJiYgZG9udF9rZWVwX2xvb3BpbmcgKSA7CgogIG92ZXJzaG9vdCA9IHNyY1soc2U+PjEzKS0x
XSAvIDUwOwogIGlmIChvdmVyc2hvb3QgPCAwKSBvdmVyc2hvb3QgPSAtb3ZlcnNob290OwoKICB3
aGlsZSAoY291bnQtLSkKICAgIHsKCiAgICAgICAgb2Zmc2V0ID0gb2ZzID4+IDEzOwoKICAgICAg
ICBpZiAob2ZzID49IHNlKSB7CiAgICAgICAgICAgICAgICBpbnQzMiBkZWx0YSA9IChpbnQzMiko
KG9mcyAtIHNlKT4+MTMpIDsKICAgICAgICAgICAgICAgIHYxID0gKGludDMyKXNyY1soaW50KShz
ZT4+MTMpLTFdOwogICAgICAgICAgICAgICAgdjEgLT0gKGRlbHRhKzEpICogdjEgLyBvdmVyc2hv
b3Q7CiAgICAgICAgfWVsc2UgdjEgPSAoaW50MzIpc3JjW29mZnNldF07CiAgICAgICAgaWYgKG9m
cyArICgxTDw8MTMpID49IHNlKSB7CiAgICAgICAgICAgICAgICB2MiA9IHYxOwogICAgICAgIH1l
bHNlIHYyID0gKGludDMyKXNyY1tvZmZzZXQrMV07CiAgICAgICAgaWYoZG9udF9jc3BsaW5lIHx8
CiAgICAgICAgICAgKChvZnMtKDFMPDwxMykpPGxzKXx8KChvZnMrKDJMPDwxMykpPmxlKSl7CiAg
ICAgICAgICAgICAgICAqZGVzdCsrID0gKHNhbXBsZV90KSh2MSArICgoaW50MzIpKCh2Mi12MSkg
KiAoaW50MzIpKG9mcyAmICh+ICgweEZGRkZGRkZGIDw8IDEzKSkpKSA+PiAxMykpOwogICAgICAg
IH1lbHNlewogICAgICAgICAgICAgICAgb2ZzZD1vZnM7CiAgICAgICAgICAgICAgICB2MCA9IChp
bnQzMilzcmNbb2Zmc2V0LTFdOwogICAgICAgICAgICAgICAgdjMgPSAoaW50MzIpc3JjW29mZnNl
dCsyXTsKICAgICAgICAgICAgICAgIG9mcyAmPSAofiAoMHhGRkZGRkZGRiA8PCAxMykpOwogICAg
ICAgICAgICAgICAgdGVtcD12MjsKICAgICAgICAgICAgICAgIHYyID0gKDYqdjIgKwogICAgICAg
ICAgICAgICAgICAgICAgKCgoKCAoICg1KnYzIC0gMTEqdjIgKyA3KnYxIC0gdjApKgogICAgICAg
ICAgICAgICAgICAgICAgIChpbnQzMilvZnMpID4+MTMpKihpbnQzMilvZnMpPj4oMTMgKzIpKS0x
KSkqKGludDMyKW9mczsKICAgICAgICAgICAgICAgIG9mcyA9ICgxTCA8PCAxMykgLSBvZnM7CiAg
ICAgICAgICAgICAgICB2MSA9ICg2KnYxICsKICAgICAgICAgICAgICAgICAgICAgICgoKCgoKDUq
djAgLSAxMSp2MSArIDcqdGVtcCAtIHYzKSoKICAgICAgICAgICAgICAgICAgICAgICAoaW50MzIp
b2ZzKT4+MTMpKihpbnQzMilvZnMpPj4oMTMgKzIpKS0xKSkqKGludDMyKW9mczsKICAgICAgICAg
ICAgICAgIHYxID0gKHYxICsgdjIpLyg2TDw8MTMpOwogICAgICAgICAgICAgICAgKmRlc3QrKyA9
IChzYW1wbGVfdCkoKHYxID4gMzI3NjcpPyAzMjc2NzogKCh2MSA8IC0zMjc2OCk/IC0zMjc2ODog
djEpKTsKICAgICAgICAgICAgICAgIG9mcz1vZnNkOwogICAgICAgIH0KICAgICAgICAgICAgICAg
IGlmICghY2NfY291bnQtLSkgewogICAgICAgICAgICAgICAgICAgIGNjX2NvdW50ID0gY29udHJv
bF9yYXRpbyAtIDE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF1cGRhdGVfbW9kdWxhdGlvbl9z
aWduYWwodikpCiAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSBjYWxjX21vZF9mcmVxKHYs
IGluY3IpOwogICAgICAgICAgICAgICAgfQogICAgICBvZnMgKz0gaW5jcjsKICAgICAgaWYgKG9m
cz49bGUpCiAgICAgICAgewogICAgICAgICAgaWYgKGZsYWdfZXhpdF9sb29wKQogICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICB2cC0+ZWNob19kZWxheSAtPSBsbCA+PiAxMzsKICAgICAgICAg
ICAgICAgIGlmICh2cC0+ZWNob19kZWxheSA+PSAwKSBvZnMgLT0gbGw7CiAgICAgICAgICAgIH0K
ICAgICAgICAgIGVsc2Ugb2ZzIC09IGxsOwogICAgICAgIH0KICAgICAgaWYgKG9mcyA+PSBzZSAr
IChvdmVyc2hvb3QgPDwgMTMpKQogICAgICAgIHsKICAgICAgICAgIGlmICghKHZwLT5zdGF0dXMm
KDE8PDApKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIHZwLT5zdGF0dXM9KDE8PDApOwog
ICAgICAgICAgICAgIGN0bC0+bm90ZSh2KTsKICAgICAgICAgICAgfQogICAgICAgICAgKmNvdW50
cHRyLT1jb3VudCsxOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICB2cC0+c2Ft
cGxlX29mZnNldD1vZnM7CiAgdnAtPm1vZHVsYXRpb25fY291bnRlcj1jY19jb3VudDsKICByZXR1
cm4gcmVzYW1wbGVfYnVmZmVyK3Jlc2FtcGxlX2J1ZmZlcl9vZmZzZXQ7Cn0KCnN0YXRpYyBzYW1w
bGVfdCAqcnNfYmlkaXIoaW50IHYsIFZvaWNlICp2cCwgdWludDMyIGNvdW50KQp7CiAgaW50MzIg
b2ZzZCwgdjAsIHYxLCB2MiwgdjMsIHRlbXAsIG92ZXJzaG9vdDsKICBpbnQgb2Zmc2V0OwogIGlu
dDMyCiAgICBpbmNyPXZwLT5zYW1wbGVfaW5jcmVtZW50OwogIHVpbnQzMgogICAgbGU9dnAtPmxv
b3BfZW5kLAogICAgbHM9dnAtPmxvb3Bfc3RhcnQ7CiAgdWludDMyCiAgICBvZnM9dnAtPnNhbXBs
ZV9vZmZzZXQsCiAgICBzZT12cC0+c2FtcGxlLT5kYXRhX2xlbmd0aDsKICBzYW1wbGVfdAogICAg
KmRlc3Q9cmVzYW1wbGVfYnVmZmVyK3Jlc2FtcGxlX2J1ZmZlcl9vZmZzZXQsCiAgICAqc3JjPXZw
LT5zYW1wbGUtPmRhdGE7CgoKCgoKCgogIHVpbnQzMgogICAgaSwgajsKCgogIG92ZXJzaG9vdCA9
IHNyY1soc2U+PjEzKS0xXSAvIDUwOwogIGlmIChvdmVyc2hvb3QgPCAwKSBvdmVyc2hvb3QgPSAt
b3ZlcnNob290OwoKICBpZiAob2ZzIDw9IGxzKQogICAgewoKCgogICAgICBpZiAoaW5jciA8IDAp
IGkgPSBscyAtIG9mczsKICAgICAgICBlbHNlCiAgICAgIGkgPSAobHMgLSBvZnMpIC8gaW5jciAr
IDE7CiAgICAgIGlmIChpID4gY291bnQpCiAgICAgICAgewogICAgICAgICAgaSA9IGNvdW50Owog
ICAgICAgICAgY291bnQgPSAwOwogICAgICAgIH0KICAgICAgZWxzZSBjb3VudCAtPSBpOwogICAg
ICBmb3IoaiA9IDA7IGogPCBpOyBqKyspCiAgICAgICAgewoKICAgICAgICBvZmZzZXQgPSBvZnMg
Pj4gMTM7CgogICAgICAgIGlmIChvZnMgPj0gc2UpIHsKICAgICAgICAgICAgICAgIGludDMyIGRl
bHRhID0gKGludDMyKSgob2ZzIC0gc2UpPj4xMykgOwogICAgICAgICAgICAgICAgdjEgPSAoaW50
MzIpc3JjWyhpbnQpKHNlPj4xMyktMV07CiAgICAgICAgICAgICAgICB2MSAtPSAoZGVsdGErMSkg
KiB2MSAvIG92ZXJzaG9vdDsKICAgICAgICB9ZWxzZSB2MSA9IChpbnQzMilzcmNbb2Zmc2V0XTsK
ICAgICAgICBpZiAob2ZzICsgKDFMPDwxMykgPj0gc2UpIHsKICAgICAgICAgICAgICAgIHYyID0g
djE7CiAgICAgICAgfWVsc2UgdjIgPSAoaW50MzIpc3JjW29mZnNldCsxXTsKICAgICAgICBpZihk
b250X2NzcGxpbmUgfHwKICAgICAgICAgICAoKG9mcy0oMUw8PDEzKSk8bHMpfHwoKG9mcysoMkw8
PDEzKSk+bGUpKXsKICAgICAgICAgICAgICAgICpkZXN0KysgPSAoc2FtcGxlX3QpKHYxICsgKChp
bnQzMikoKHYyLXYxKSAqIChpbnQzMikob2ZzICYgKH4gKDB4RkZGRkZGRkYgPDwgMTMpKSkpID4+
IDEzKSk7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBvZnNkPW9mczsKICAgICAgICAg
ICAgICAgIHYwID0gKGludDMyKXNyY1tvZmZzZXQtMV07CiAgICAgICAgICAgICAgICB2MyA9IChp
bnQzMilzcmNbb2Zmc2V0KzJdOwogICAgICAgICAgICAgICAgb2ZzICY9ICh+ICgweEZGRkZGRkZG
IDw8IDEzKSk7CiAgICAgICAgICAgICAgICB0ZW1wPXYyOwogICAgICAgICAgICAgICAgdjIgPSAo
Nip2MiArCiAgICAgICAgICAgICAgICAgICAgICAoKCgoICggKDUqdjMgLSAxMSp2MiArIDcqdjEg
LSB2MCkqCiAgICAgICAgICAgICAgICAgICAgICAgKGludDMyKW9mcykgPj4xMykqKGludDMyKW9m
cyk+PigxMyArMikpLTEpKSooaW50MzIpb2ZzOwogICAgICAgICAgICAgICAgb2ZzID0gKDFMIDw8
IDEzKSAtIG9mczsKICAgICAgICAgICAgICAgIHYxID0gKDYqdjEgKwogICAgICAgICAgICAgICAg
ICAgICAgKCgoKCgoNSp2MCAtIDExKnYxICsgNyp0ZW1wIC0gdjMpKgogICAgICAgICAgICAgICAg
ICAgICAgIChpbnQzMilvZnMpPj4xMykqKGludDMyKW9mcyk+PigxMyArMikpLTEpKSooaW50MzIp
b2ZzOwogICAgICAgICAgICAgICAgdjEgPSAodjEgKyB2MikvKDZMPDwxMyk7CiAgICAgICAgICAg
ICAgICAqZGVzdCsrID0gKHNhbXBsZV90KSgodjEgPiAzMjc2Nyk/IDMyNzY3OiAoKHYxIDwgLTMy
NzY4KT8gLTMyNzY4OiB2MSkpOwogICAgICAgICAgICAgICAgb2ZzPW9mc2Q7CiAgICAgICAgfQog
ICAgICAgICAgb2ZzICs9IGluY3I7CiAgICAgICAgfQogICAgfQoKCgogIHdoaWxlKGNvdW50KQog
ICAgewoKCiAgICAgIGkgPSAoKGluY3IgPiAwID8gbGUgOiBscykgLSBvZnMpIC8gaW5jciArIDE7
CgoKCgogICAgICBpZiAoaSA+IGNvdW50KQogICAgICAgIHsKICAgICAgICAgIGkgPSBjb3VudDsK
ICAgICAgICAgIGNvdW50ID0gMDsKICAgICAgICB9CiAgICAgIGVsc2UgY291bnQgLT0gaTsKICAg
ICAgZm9yKGogPSAwOyBqIDwgaSAmJiBvZnMgPCBzZTsgaisrKQogICAgICAgIHsKCiAgICAgICAg
b2Zmc2V0ID0gb2ZzID4+IDEzOwoKICAgICAgICBpZiAob2ZzID49IHNlKSB7CiAgICAgICAgICAg
ICAgICBpbnQzMiBkZWx0YSA9IChpbnQzMikoKG9mcyAtIHNlKT4+MTMpIDsKICAgICAgICAgICAg
ICAgIHYxID0gKGludDMyKXNyY1soaW50KShzZT4+MTMpLTFdOwogICAgICAgICAgICAgICAgdjEg
LT0gKGRlbHRhKzEpICogdjEgLyBvdmVyc2hvb3Q7CiAgICAgICAgfWVsc2UgdjEgPSAoaW50MzIp
c3JjW29mZnNldF07CiAgICAgICAgaWYgKG9mcyArICgxTDw8MTMpID49IHNlKSB7CiAgICAgICAg
ICAgICAgICB2MiA9IHYxOwogICAgICAgIH1lbHNlIHYyID0gKGludDMyKXNyY1tvZmZzZXQrMV07
CiAgICAgICAgaWYoZG9udF9jc3BsaW5lIHx8CiAgICAgICAgICAgKChvZnMtKDFMPDwxMykpPGxz
KXx8KChvZnMrKDJMPDwxMykpPmxlKSl7CiAgICAgICAgICAgICAgICAqZGVzdCsrID0gKHNhbXBs
ZV90KSh2MSArICgoaW50MzIpKCh2Mi12MSkgKiAoaW50MzIpKG9mcyAmICh+ICgweEZGRkZGRkZG
IDw8IDEzKSkpKSA+PiAxMykpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgb2ZzZD1v
ZnM7CiAgICAgICAgICAgICAgICB2MCA9IChpbnQzMilzcmNbb2Zmc2V0LTFdOwogICAgICAgICAg
ICAgICAgdjMgPSAoaW50MzIpc3JjW29mZnNldCsyXTsKICAgICAgICAgICAgICAgIG9mcyAmPSAo
fiAoMHhGRkZGRkZGRiA8PCAxMykpOwogICAgICAgICAgICAgICAgdGVtcD12MjsKICAgICAgICAg
ICAgICAgIHYyID0gKDYqdjIgKwogICAgICAgICAgICAgICAgICAgICAgKCgoKCAoICg1KnYzIC0g
MTEqdjIgKyA3KnYxIC0gdjApKgogICAgICAgICAgICAgICAgICAgICAgIChpbnQzMilvZnMpID4+
MTMpKihpbnQzMilvZnMpPj4oMTMgKzIpKS0xKSkqKGludDMyKW9mczsKICAgICAgICAgICAgICAg
IG9mcyA9ICgxTCA8PCAxMykgLSBvZnM7CiAgICAgICAgICAgICAgICB2MSA9ICg2KnYxICsKICAg
ICAgICAgICAgICAgICAgICAgICgoKCgoKDUqdjAgLSAxMSp2MSArIDcqdGVtcCAtIHYzKSoKICAg
ICAgICAgICAgICAgICAgICAgICAoaW50MzIpb2ZzKT4+MTMpKihpbnQzMilvZnMpPj4oMTMgKzIp
KS0xKSkqKGludDMyKW9mczsKICAgICAgICAgICAgICAgIHYxID0gKHYxICsgdjIpLyg2TDw8MTMp
OwogICAgICAgICAgICAgICAgKmRlc3QrKyA9IChzYW1wbGVfdCkoKHYxID4gMzI3NjcpPyAzMjc2
NzogKCh2MSA8IC0zMjc2OCk/IC0zMjc2ODogdjEpKTsKICAgICAgICAgICAgICAgIG9mcz1vZnNk
OwogICAgICAgIH0KICAgICAgICAgIG9mcyArPSBpbmNyOwogICAgICAgIH0KIyA0OTEgInJlc2Ft
cGxlLmMiCiAgICAgICAgICBpbmNyICo9IC0xOwoKICAgIH0KCiAgdnAtPnNhbXBsZV9pbmNyZW1l
bnQ9aW5jcjsKICB2cC0+c2FtcGxlX29mZnNldD1vZnM7CiAgcmV0dXJuIHJlc2FtcGxlX2J1ZmZl
cityZXNhbXBsZV9idWZmZXJfb2Zmc2V0Owp9CgoKCgpzdGF0aWMgdWludDMyIHZpYl9waGFzZV90
b19pbmNfcHRyKHVpbnQzMiBwaGFzZSkKewogIGlmIChwaGFzZSA8IDMyLzIpCiAgICByZXR1cm4g
MzIvMi0xLXBoYXNlOwogIGVsc2UgaWYgKHBoYXNlID49IDMqMzIvMikKICAgIHJldHVybiA1KjMy
LzItMS1waGFzZTsKICBlbHNlCiAgICByZXR1cm4gcGhhc2UtMzIvMjsKfQoKc3RhdGljIGludDMy
IHVwZGF0ZV92aWJyYXRvKFZvaWNlICp2cCwgaW50IHNpZ24pCnsKICB1aW50MzIgZGVwdGgsIGZy
ZXE9dnAtPmZyZXF1ZW5jeTsKCiAgRkxPQVRfVCBtb2RfYW1vdW50PXZwLT5zYW1wbGUtPm1vZEVu
dlRvUGl0Y2g7CgogIHVpbnQzMiBwaGFzZTsKICBpbnQgcGI7CiAgZG91YmxlIGE7CgogIGlmKHZw
LT52aWJyYXRvX2RlbGF5ID4gMCkKICB7CiAgICAgIHZwLT52aWJyYXRvX2RlbGF5IC09IHZwLT52
aWJyYXRvX2NvbnRyb2xfcmF0aW87CiAgICAgIGlmKHZwLT52aWJyYXRvX2RlbGF5ID4gMCkKICAg
ICAgICAgIHJldHVybiB2cC0+c2FtcGxlX2luY3JlbWVudDsKICB9CgogIGlmICh2cC0+dmlicmF0
b19waGFzZSsrID49IDIqMzIgLTEpCiAgICB2cC0+dmlicmF0b19waGFzZT0wOwogIHBoYXNlPXZp
Yl9waGFzZV90b19pbmNfcHRyKHZwLT52aWJyYXRvX3BoYXNlKTsKCiAgaWYgKHZwLT52aWJyYXRv
X3NhbXBsZV9pbmNyZW1lbnRbcGhhc2VdKQogICAgewogICAgICBpZiAoc2lnbikKICAgICAgICBy
ZXR1cm4gLXZwLT52aWJyYXRvX3NhbXBsZV9pbmNyZW1lbnRbcGhhc2VdOwogICAgICBlbHNlCiAg
ICAgICAgcmV0dXJuIHZwLT52aWJyYXRvX3NhbXBsZV9pbmNyZW1lbnRbcGhhc2VdOwogICAgfQoK
CgogIGRlcHRoID0gdnAtPnZpYnJhdG9fZGVwdGg7CiAgaWYoZGVwdGggPCB2cC0+bW9kdWxhdGlv
bl93aGVlbCkKICAgICAgZGVwdGggPSB2cC0+bW9kdWxhdGlvbl93aGVlbDsKICBkZXB0aCA8PD0g
NzsKCiAgaWYgKHZwLT52aWJyYXRvX3N3ZWVwICYmICF2cC0+bW9kdWxhdGlvbl93aGVlbCkKICAg
IHsKCiAgICAgIHZwLT52aWJyYXRvX3N3ZWVwX3Bvc2l0aW9uICs9IHZwLT52aWJyYXRvX3N3ZWVw
OwogICAgICBpZiAodnAtPnZpYnJhdG9fc3dlZXBfcG9zaXRpb24gPj0gKDE8PDE2KSkKICAgICAg
ICB2cC0+dmlicmF0b19zd2VlcD0wOwogICAgICBlbHNlCiAgICAgICAgewoKICAgICAgICAgIGRl
cHRoICo9IHZwLT52aWJyYXRvX3N3ZWVwX3Bvc2l0aW9uOwogICAgICAgICAgZGVwdGggPj49IDE2
OwogICAgICAgIH0KICAgIH0KCgoKICBpZiAodXBkYXRlX21vZHVsYXRpb25fc2lnbmFsKDApKSBt
b2RfYW1vdW50ID0gMDsKICBlbHNlCgogIGlmIChtb2RfYW1vdW50PjAuMDIpCiAgIGZyZXEgPSAo
aW50MzIpKCAoZG91YmxlKWZyZXEqKDEuMCArIChtb2RfYW1vdW50IC0gMS4wKSAqICh2cC0+bW9k
dWxhdGlvbl92b2x1bWU+PjIyKSAvIDI1NS4wKSApOwoKCiAgcGI9KGludCkoKChzaW4oKDIqMy4x
NDE1OTI2NTM1ODk3OTMyMzg0Ni8xMDI0LjApICogKHZwLT52aWJyYXRvX3BoYXNlICogKDEwMjQv
KDIqMzIpKSkpKQoKICAgICAgICAgICAgKiAoZG91YmxlKShkZXB0aCkgKiAxLjBMKSk7CgogIGEg
PSAoKCgoZG91YmxlKSh2cC0+c2FtcGxlLT5zYW1wbGVfcmF0ZSkgKiAoZG91YmxlKShmcmVxKSkg
LyAoKGRvdWJsZSkodnAtPnNhbXBsZS0+cm9vdF9mcmVxKSAqIChkb3VibGUpKHBsYXlfbW9kZS0+
cmF0ZSkpKSAqIChkb3VibGUpKDE8PCgxMykpKTsKCgoKCiAgaWYocGI8MCkKICB7CiAgICAgIHBi
ID0gLXBiOwogICAgICBhIC89IGJlbmRfZmluZVsocGI+PjUpICYgMHhGRl0gKiBiZW5kX2NvYXJz
ZVtwYj4+MTNdOwogIH0KICBlbHNlCiAgICAgIGEgKj0gYmVuZF9maW5lWyhwYj4+NSkgJiAweEZG
XSAqIGJlbmRfY29hcnNlW3BiPj4xM107CiAgYSArPSAwLjU7CgoKICBpZiAoIXZwLT52aWJyYXRv
X3N3ZWVwIHx8IHZwLT5tb2R1bGF0aW9uX3doZWVsKQogICAgdnAtPnZpYnJhdG9fc2FtcGxlX2lu
Y3JlbWVudFtwaGFzZV09KGludDMyKSBhOwoKICBpZiAoc2lnbikKICAgIGEgPSAtYTsKCiAgcmV0
dXJuIChpbnQzMikgYTsKfQoKc3RhdGljIHNhbXBsZV90ICpyc192aWJfcGxhaW4oaW50IHYsIHVp
bnQzMiAqY291bnRwdHIpCnsKCgoKICBWb2ljZSAqdnA9JnZvaWNlW3ZdOwogIGludDMyIG9mc2Qs
IHYwLCB2MSwgdjIsIHYzLCB0ZW1wLCBvdmVyc2hvb3Q7CiAgaW50IG9mZnNldDsKICBzYW1wbGVf
dAogICAgKmRlc3Q9cmVzYW1wbGVfYnVmZmVyK3Jlc2FtcGxlX2J1ZmZlcl9vZmZzZXQsCiAgICAq
c3JjPXZwLT5zYW1wbGUtPmRhdGE7CiAgaW50MzIKICAgIGluY3I9dnAtPnNhbXBsZV9pbmNyZW1l
bnQ7CgoKICB1aW50MzIKICAgIGxzPTAsCiAgICBsZT12cC0+c2FtcGxlLT5kYXRhX2xlbmd0aDsK
CiAgdWludDMyCiAgICBvZnM9dnAtPnNhbXBsZV9vZmZzZXQsCiAgICBzZT12cC0+c2FtcGxlLT5k
YXRhX2xlbmd0aCwKICAgIGNvdW50PSpjb3VudHB0cjsKICB1aW50MzIKICAgIGNjPXZwLT52aWJy
YXRvX2NvbnRyb2xfY291bnRlcjsKCgoKICBpZiAoaW5jcjwwKSBpbmNyID0gLWluY3I7CgogIG92
ZXJzaG9vdCA9IHNyY1soc2U+PjEzKS0xXSAvIDUwOwogIGlmIChvdmVyc2hvb3QgPCAwKSBvdmVy
c2hvb3QgPSAtb3ZlcnNob290OwogIHdoaWxlIChjb3VudC0tKQogICAgewogICAgICBpZiAoIWNj
LS0pCiAgICAgICAgewogICAgICAgICAgY2M9dnAtPnZpYnJhdG9fY29udHJvbF9yYXRpbzsKICAg
ICAgICAgIGluY3I9dXBkYXRlX3ZpYnJhdG8odnAsIDApOwogICAgICAgIH0KCiAgICAgICAgb2Zm
c2V0ID0gb2ZzID4+IDEzOwoKICAgICAgICBpZiAob2ZzID49IHNlKSB7CiAgICAgICAgICAgICAg
ICBpbnQzMiBkZWx0YSA9IChpbnQzMikoKG9mcyAtIHNlKT4+MTMpIDsKICAgICAgICAgICAgICAg
IHYxID0gKGludDMyKXNyY1soaW50KShzZT4+MTMpLTFdOwogICAgICAgICAgICAgICAgdjEgLT0g
KGRlbHRhKzEpICogdjEgLyBvdmVyc2hvb3Q7CiAgICAgICAgfWVsc2UgdjEgPSAoaW50MzIpc3Jj
W29mZnNldF07CiAgICAgICAgaWYgKG9mcyArICgxTDw8MTMpID49IHNlKSB7CiAgICAgICAgICAg
ICAgICB2MiA9IHYxOwogICAgICAgIH1lbHNlIHYyID0gKGludDMyKXNyY1tvZmZzZXQrMV07CiAg
ICAgICAgaWYoZG9udF9jc3BsaW5lIHx8CiAgICAgICAgICAgKChvZnMtKDFMPDwxMykpPGxzKXx8
KChvZnMrKDJMPDwxMykpPmxlKSl7CiAgICAgICAgICAgICAgICAqZGVzdCsrID0gKHNhbXBsZV90
KSh2MSArICgoaW50MzIpKCh2Mi12MSkgKiAoaW50MzIpKG9mcyAmICh+ICgweEZGRkZGRkZGIDw8
IDEzKSkpKSA+PiAxMykpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgb2ZzZD1vZnM7
CiAgICAgICAgICAgICAgICB2MCA9IChpbnQzMilzcmNbb2Zmc2V0LTFdOwogICAgICAgICAgICAg
ICAgdjMgPSAoaW50MzIpc3JjW29mZnNldCsyXTsKICAgICAgICAgICAgICAgIG9mcyAmPSAofiAo
MHhGRkZGRkZGRiA8PCAxMykpOwogICAgICAgICAgICAgICAgdGVtcD12MjsKICAgICAgICAgICAg
ICAgIHYyID0gKDYqdjIgKwogICAgICAgICAgICAgICAgICAgICAgKCgoKCAoICg1KnYzIC0gMTEq
djIgKyA3KnYxIC0gdjApKgogICAgICAgICAgICAgICAgICAgICAgIChpbnQzMilvZnMpID4+MTMp
KihpbnQzMilvZnMpPj4oMTMgKzIpKS0xKSkqKGludDMyKW9mczsKICAgICAgICAgICAgICAgIG9m
cyA9ICgxTCA8PCAxMykgLSBvZnM7CiAgICAgICAgICAgICAgICB2MSA9ICg2KnYxICsKICAgICAg
ICAgICAgICAgICAgICAgICgoKCgoKDUqdjAgLSAxMSp2MSArIDcqdGVtcCAtIHYzKSoKICAgICAg
ICAgICAgICAgICAgICAgICAoaW50MzIpb2ZzKT4+MTMpKihpbnQzMilvZnMpPj4oMTMgKzIpKS0x
KSkqKGludDMyKW9mczsKICAgICAgICAgICAgICAgIHYxID0gKHYxICsgdjIpLyg2TDw8MTMpOwog
ICAgICAgICAgICAgICAgKmRlc3QrKyA9IChzYW1wbGVfdCkoKHYxID4gMzI3NjcpPyAzMjc2Nzog
KCh2MSA8IC0zMjc2OCk/IC0zMjc2ODogdjEpKTsKICAgICAgICAgICAgICAgIG9mcz1vZnNkOwog
ICAgICAgIH0KICAgICAgb2ZzICs9IGluY3I7CiAgICAgIGlmIChvZnMgPj0gc2UgKyAob3ZlcnNo
b290IDw8IDEzKSkKICAgICAgICB7CiAgICAgICAgICBpZiAoISh2cC0+c3RhdHVzJigxPDwwKSkp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB2cC0+c3RhdHVzPSgxPDwwKTsKICAgICAgICAg
ICAgICBjdGwtPm5vdGUodik7CiAgICAgICAgICAgIH0KICAgICAgICAgICpjb3VudHB0ci09Y291
bnQrMTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgdnAtPnZpYnJhdG9fY29u
dHJvbF9jb3VudGVyPWNjOwogIHZwLT5zYW1wbGVfaW5jcmVtZW50PWluY3I7CiAgdnAtPnNhbXBs
ZV9vZmZzZXQ9b2ZzOwogIHJldHVybiByZXNhbXBsZV9idWZmZXIrcmVzYW1wbGVfYnVmZmVyX29m
ZnNldDsKfQoKc3RhdGljIHNhbXBsZV90ICpyc192aWJfbG9vcChpbnQgdiwgVm9pY2UgKnZwLCB1
aW50MzIgKmNvdW50cHRyKQp7CgogIGludDMyIG9mc2QsIHYwLCB2MSwgdjIsIHYzLCB0ZW1wLCBv
dmVyc2hvb3Q7CiAgaW50IG9mZnNldDsKICBpbnQzMgogICAgaW5jcj12cC0+c2FtcGxlX2luY3Jl
bWVudDsKCiAgdWludDMyCgogICAgbHM9dnAtPmxvb3Bfc3RhcnQsCgogICAgbGU9dnAtPmxvb3Bf
ZW5kLAogICAgbGw9bGUgLSB2cC0+bG9vcF9zdGFydDsKICBzYW1wbGVfdAogICAgKmRlc3Q9cmVz
YW1wbGVfYnVmZmVyK3Jlc2FtcGxlX2J1ZmZlcl9vZmZzZXQsCiAgICAqc3JjPXZwLT5zYW1wbGUt
PmRhdGE7CiAgdWludDMyCiAgICBvZnM9dnAtPnNhbXBsZV9vZmZzZXQsCiAgICBzZT12cC0+c2Ft
cGxlLT5kYXRhX2xlbmd0aCwKICAgIGNvdW50ID0gKmNvdW50cHRyOwogIHVpbnQzMgogICAgY2M9
dnAtPnZpYnJhdG9fY29udHJvbF9jb3VudGVyOwogIGludAogICAgZmxhZ19leGl0X2xvb3A7CgoK
ICBmbGFnX2V4aXRfbG9vcCA9CiAgICAgICAgKHZwLT5zdGF0dXMgJiAoKDE8PDApIHwgKDE8PDQp
KSkgfHwKICAgICAgICAoKHZwLT5zdGF0dXMgJiAoMTw8MykpICYmICh2cC0+c2FtcGxlLT5tb2Rl
cyAmICgxPDw3KSkgKSB8fAogICAgICAgICgodnAtPnN0YXR1cyAmICgxPDwzKSkgJiYgZG9udF9r
ZWVwX2xvb3BpbmcgKSA7CgogIG92ZXJzaG9vdCA9IHNyY1soc2U+PjEzKS0xXSAvIDUwOwogIGlm
IChvdmVyc2hvb3QgPCAwKSBvdmVyc2hvb3QgPSAtb3ZlcnNob290OwogIHdoaWxlIChjb3VudC0t
KQogICAgewogICAgICBpZiAoIWNjLS0pCiAgICAgICAgewogICAgICAgICAgY2M9dnAtPnZpYnJh
dG9fY29udHJvbF9yYXRpbzsKICAgICAgICAgIGluY3I9dXBkYXRlX3ZpYnJhdG8odnAsIDApOwog
ICAgICAgIH0KCiAgICAgICAgb2Zmc2V0ID0gb2ZzID4+IDEzOwoKICAgICAgICBpZiAob2ZzID49
IHNlKSB7CiAgICAgICAgICAgICAgICBpbnQzMiBkZWx0YSA9IChpbnQzMikoKG9mcyAtIHNlKT4+
MTMpIDsKICAgICAgICAgICAgICAgIHYxID0gKGludDMyKXNyY1soaW50KShzZT4+MTMpLTFdOwog
ICAgICAgICAgICAgICAgdjEgLT0gKGRlbHRhKzEpICogdjEgLyBvdmVyc2hvb3Q7CiAgICAgICAg
fWVsc2UgdjEgPSAoaW50MzIpc3JjW29mZnNldF07CiAgICAgICAgaWYgKG9mcyArICgxTDw8MTMp
ID49IHNlKSB7CiAgICAgICAgICAgICAgICB2MiA9IHYxOwogICAgICAgIH1lbHNlIHYyID0gKGlu
dDMyKXNyY1tvZmZzZXQrMV07CiAgICAgICAgaWYoZG9udF9jc3BsaW5lIHx8CiAgICAgICAgICAg
KChvZnMtKDFMPDwxMykpPGxzKXx8KChvZnMrKDJMPDwxMykpPmxlKSl7CiAgICAgICAgICAgICAg
ICAqZGVzdCsrID0gKHNhbXBsZV90KSh2MSArICgoaW50MzIpKCh2Mi12MSkgKiAoaW50MzIpKG9m
cyAmICh+ICgweEZGRkZGRkZGIDw8IDEzKSkpKSA+PiAxMykpOwogICAgICAgIH1lbHNlewogICAg
ICAgICAgICAgICAgb2ZzZD1vZnM7CiAgICAgICAgICAgICAgICB2MCA9IChpbnQzMilzcmNbb2Zm
c2V0LTFdOwogICAgICAgICAgICAgICAgdjMgPSAoaW50MzIpc3JjW29mZnNldCsyXTsKICAgICAg
ICAgICAgICAgIG9mcyAmPSAofiAoMHhGRkZGRkZGRiA8PCAxMykpOwogICAgICAgICAgICAgICAg
dGVtcD12MjsKICAgICAgICAgICAgICAgIHYyID0gKDYqdjIgKwogICAgICAgICAgICAgICAgICAg
ICAgKCgoKCAoICg1KnYzIC0gMTEqdjIgKyA3KnYxIC0gdjApKgogICAgICAgICAgICAgICAgICAg
ICAgIChpbnQzMilvZnMpID4+MTMpKihpbnQzMilvZnMpPj4oMTMgKzIpKS0xKSkqKGludDMyKW9m
czsKICAgICAgICAgICAgICAgIG9mcyA9ICgxTCA8PCAxMykgLSBvZnM7CiAgICAgICAgICAgICAg
ICB2MSA9ICg2KnYxICsKICAgICAgICAgICAgICAgICAgICAgICgoKCgoKDUqdjAgLSAxMSp2MSAr
IDcqdGVtcCAtIHYzKSoKICAgICAgICAgICAgICAgICAgICAgICAoaW50MzIpb2ZzKT4+MTMpKihp
bnQzMilvZnMpPj4oMTMgKzIpKS0xKSkqKGludDMyKW9mczsKICAgICAgICAgICAgICAgIHYxID0g
KHYxICsgdjIpLyg2TDw8MTMpOwogICAgICAgICAgICAgICAgKmRlc3QrKyA9IChzYW1wbGVfdCko
KHYxID4gMzI3NjcpPyAzMjc2NzogKCh2MSA8IC0zMjc2OCk/IC0zMjc2ODogdjEpKTsKICAgICAg
ICAgICAgICAgIG9mcz1vZnNkOwogICAgICAgIH0KICAgICAgb2ZzICs9IGluY3I7CiAgICAgIGlm
IChvZnM+PWxlKQogICAgICAgIHsKICAgICAgICAgIGlmIChmbGFnX2V4aXRfbG9vcCkKICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgdnAtPmVjaG9fZGVsYXkgLT0gbGwgPj4gMTM7CiAgICAg
ICAgICAgICAgICBpZiAodnAtPmVjaG9fZGVsYXkgPj0gMCkgb2ZzIC09IGxsOwogICAgICAgICAg
ICB9CiAgICAgICAgICBlbHNlIG9mcyAtPSBsbDsKICAgICAgICB9CiAgICAgIGlmIChvZnMgPj0g
c2UgKyAob3ZlcnNob290IDw8IDEzKSkKICAgICAgICB7CiAgICAgICAgICBpZiAoISh2cC0+c3Rh
dHVzJigxPDwwKSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB2cC0+c3RhdHVzPSgxPDww
KTsKICAgICAgICAgICAgICBjdGwtPm5vdGUodik7CiAgICAgICAgICAgIH0KICAgICAgICAgICpj
b3VudHB0ci09Y291bnQrMTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgdnAt
PnZpYnJhdG9fY29udHJvbF9jb3VudGVyPWNjOwogIHZwLT5zYW1wbGVfaW5jcmVtZW50PWluY3I7
CiAgdnAtPnNhbXBsZV9vZmZzZXQ9b2ZzOwogIHJldHVybiByZXNhbXBsZV9idWZmZXIrcmVzYW1w
bGVfYnVmZmVyX29mZnNldDsKfQoKc3RhdGljIHNhbXBsZV90ICpyc192aWJfYmlkaXIoaW50IHYs
IFZvaWNlICp2cCwgdWludDMyIGNvdW50KQp7CiAgaW50MzIgb2ZzZCwgdjAsIHYxLCB2MiwgdjMs
IHRlbXAsIG92ZXJzaG9vdDsKICBpbnQgb2Zmc2V0OwogIGludDMyCiAgICBpbmNyPXZwLT5zYW1w
bGVfaW5jcmVtZW50OwoKICB1aW50MzIKICAgIGxlPXZwLT5sb29wX2VuZCwKICAgIGxzPXZwLT5s
b29wX3N0YXJ0OwogIHVpbnQzMgogICAgb2ZzPXZwLT5zYW1wbGVfb2Zmc2V0LAogICAgc2U9dnAt
PnNhbXBsZS0+ZGF0YV9sZW5ndGg7CiAgc2FtcGxlX3QKICAgICpkZXN0PXJlc2FtcGxlX2J1ZmZl
cityZXNhbXBsZV9idWZmZXJfb2Zmc2V0LAogICAgKnNyYz12cC0+c2FtcGxlLT5kYXRhOwogIHVp
bnQzMgogICAgY2M9dnAtPnZpYnJhdG9fY29udHJvbF9jb3VudGVyOwoKCgoKCgoKICB1aW50MzIK
ICAgIGksIGo7CiAgaW50CiAgICB2aWJmbGFnID0gMDsKCgogIG92ZXJzaG9vdCA9IHNyY1soc2U+
PjEzKS0xXSAvIDUwOwogIGlmIChvdmVyc2hvb3QgPCAwKSBvdmVyc2hvb3QgPSAtb3ZlcnNob290
OwoKICB3aGlsZSAoY291bnQgJiYgKG9mcyA8PSBscykpCiAgICB7CiAgICAgIGkgPSAobHMgLSBv
ZnMpIC8gaW5jciArIDE7CiAgICAgIGlmIChpID4gY291bnQpIGkgPSBjb3VudDsKICAgICAgaWYg
KGkgPiBjYykKICAgICAgICB7CiAgICAgICAgICBpID0gY2M7CiAgICAgICAgICB2aWJmbGFnID0g
MTsKICAgICAgICB9CiAgICAgIGVsc2UgY2MgLT0gaTsKICAgICAgY291bnQgLT0gaTsKICAgICAg
Zm9yKGogPSAwOyBqIDwgaTsgaisrKQogICAgICAgIHsKCiAgICAgICAgb2Zmc2V0ID0gb2ZzID4+
IDEzOwoKICAgICAgICBpZiAob2ZzID49IHNlKSB7CiAgICAgICAgICAgICAgICBpbnQzMiBkZWx0
YSA9IChpbnQzMikoKG9mcyAtIHNlKT4+MTMpIDsKICAgICAgICAgICAgICAgIHYxID0gKGludDMy
KXNyY1soaW50KShzZT4+MTMpLTFdOwogICAgICAgICAgICAgICAgdjEgLT0gKGRlbHRhKzEpICog
djEgLyBvdmVyc2hvb3Q7CiAgICAgICAgfWVsc2UgdjEgPSAoaW50MzIpc3JjW29mZnNldF07CiAg
ICAgICAgaWYgKG9mcyArICgxTDw8MTMpID49IHNlKSB7CiAgICAgICAgICAgICAgICB2MiA9IHYx
OwogICAgICAgIH1lbHNlIHYyID0gKGludDMyKXNyY1tvZmZzZXQrMV07CiAgICAgICAgaWYoZG9u
dF9jc3BsaW5lIHx8CiAgICAgICAgICAgKChvZnMtKDFMPDwxMykpPGxzKXx8KChvZnMrKDJMPDwx
MykpPmxlKSl7CiAgICAgICAgICAgICAgICAqZGVzdCsrID0gKHNhbXBsZV90KSh2MSArICgoaW50
MzIpKCh2Mi12MSkgKiAoaW50MzIpKG9mcyAmICh+ICgweEZGRkZGRkZGIDw8IDEzKSkpKSA+PiAx
MykpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgb2ZzZD1vZnM7CiAgICAgICAgICAg
ICAgICB2MCA9IChpbnQzMilzcmNbb2Zmc2V0LTFdOwogICAgICAgICAgICAgICAgdjMgPSAoaW50
MzIpc3JjW29mZnNldCsyXTsKICAgICAgICAgICAgICAgIG9mcyAmPSAofiAoMHhGRkZGRkZGRiA8
PCAxMykpOwogICAgICAgICAgICAgICAgdGVtcD12MjsKICAgICAgICAgICAgICAgIHYyID0gKDYq
djIgKwogICAgICAgICAgICAgICAgICAgICAgKCgoKCAoICg1KnYzIC0gMTEqdjIgKyA3KnYxIC0g
djApKgogICAgICAgICAgICAgICAgICAgICAgIChpbnQzMilvZnMpID4+MTMpKihpbnQzMilvZnMp
Pj4oMTMgKzIpKS0xKSkqKGludDMyKW9mczsKICAgICAgICAgICAgICAgIG9mcyA9ICgxTCA8PCAx
MykgLSBvZnM7CiAgICAgICAgICAgICAgICB2MSA9ICg2KnYxICsKICAgICAgICAgICAgICAgICAg
ICAgICgoKCgoKDUqdjAgLSAxMSp2MSArIDcqdGVtcCAtIHYzKSoKICAgICAgICAgICAgICAgICAg
ICAgICAoaW50MzIpb2ZzKT4+MTMpKihpbnQzMilvZnMpPj4oMTMgKzIpKS0xKSkqKGludDMyKW9m
czsKICAgICAgICAgICAgICAgIHYxID0gKHYxICsgdjIpLyg2TDw8MTMpOwogICAgICAgICAgICAg
ICAgKmRlc3QrKyA9IChzYW1wbGVfdCkoKHYxID4gMzI3NjcpPyAzMjc2NzogKCh2MSA8IC0zMjc2
OCk/IC0zMjc2ODogdjEpKTsKICAgICAgICAgICAgICAgIG9mcz1vZnNkOwogICAgICAgIH0KICAg
ICAgICAgIG9mcyArPSBpbmNyOwogICAgICAgIH0KICAgICAgaWYgKHZpYmZsYWcpCiAgICAgICAg
ewogICAgICAgICAgY2MgPSB2cC0+dmlicmF0b19jb250cm9sX3JhdGlvOwogICAgICAgICAgaW5j
ciA9IHVwZGF0ZV92aWJyYXRvKHZwLCAwKTsKICAgICAgICAgIHZpYmZsYWcgPSAwOwogICAgICAg
IH0KICAgIH0KCgoKICB3aGlsZSAoY291bnQpCiAgICB7CgoKICAgICAgaSA9ICgoaW5jciA+IDAg
PyBsZSA6IGxzKSAtIG9mcykgLyBpbmNyICsgMTsKCgoKCiAgICAgIGlmKGkgPiBjb3VudCkgaSA9
IGNvdW50OwogICAgICBpZihpID4gY2MpCiAgICAgICAgewogICAgICAgICAgaSA9IGNjOwogICAg
ICAgICAgdmliZmxhZyA9IDE7CiAgICAgICAgfQogICAgICBlbHNlIGNjIC09IGk7CiAgICAgIGNv
dW50IC09IGk7CiAgICAgIHdoaWxlIChpLS0gJiYgb2ZzIDwgc2UpCiAgICAgICAgewoKICAgICAg
ICBvZmZzZXQgPSBvZnMgPj4gMTM7CgogICAgICAgIGlmIChvZnMgPj0gc2UpIHsKICAgICAgICAg
ICAgICAgIGludDMyIGRlbHRhID0gKGludDMyKSgob2ZzIC0gc2UpPj4xMykgOwogICAgICAgICAg
ICAgICAgdjEgPSAoaW50MzIpc3JjWyhpbnQpKHNlPj4xMyktMV07CiAgICAgICAgICAgICAgICB2
MSAtPSAoZGVsdGErMSkgKiB2MSAvIG92ZXJzaG9vdDsKICAgICAgICB9ZWxzZSB2MSA9IChpbnQz
MilzcmNbb2Zmc2V0XTsKICAgICAgICBpZiAob2ZzICsgKDFMPDwxMykgPj0gc2UpIHsKICAgICAg
ICAgICAgICAgIHYyID0gdjE7CiAgICAgICAgfWVsc2UgdjIgPSAoaW50MzIpc3JjW29mZnNldCsx
XTsKICAgICAgICBpZihkb250X2NzcGxpbmUgfHwKICAgICAgICAgICAoKG9mcy0oMUw8PDEzKSk8
bHMpfHwoKG9mcysoMkw8PDEzKSk+bGUpKXsKICAgICAgICAgICAgICAgICpkZXN0KysgPSAoc2Ft
cGxlX3QpKHYxICsgKChpbnQzMikoKHYyLXYxKSAqIChpbnQzMikob2ZzICYgKH4gKDB4RkZGRkZG
RkYgPDwgMTMpKSkpID4+IDEzKSk7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBvZnNk
PW9mczsKICAgICAgICAgICAgICAgIHYwID0gKGludDMyKXNyY1tvZmZzZXQtMV07CiAgICAgICAg
ICAgICAgICB2MyA9IChpbnQzMilzcmNbb2Zmc2V0KzJdOwogICAgICAgICAgICAgICAgb2ZzICY9
ICh+ICgweEZGRkZGRkZGIDw8IDEzKSk7CiAgICAgICAgICAgICAgICB0ZW1wPXYyOwogICAgICAg
ICAgICAgICAgdjIgPSAoNip2MiArCiAgICAgICAgICAgICAgICAgICAgICAoKCgoICggKDUqdjMg
LSAxMSp2MiArIDcqdjEgLSB2MCkqCiAgICAgICAgICAgICAgICAgICAgICAgKGludDMyKW9mcykg
Pj4xMykqKGludDMyKW9mcyk+PigxMyArMikpLTEpKSooaW50MzIpb2ZzOwogICAgICAgICAgICAg
ICAgb2ZzID0gKDFMIDw8IDEzKSAtIG9mczsKICAgICAgICAgICAgICAgIHYxID0gKDYqdjEgKwog
ICAgICAgICAgICAgICAgICAgICAgKCgoKCgoNSp2MCAtIDExKnYxICsgNyp0ZW1wIC0gdjMpKgog
ICAgICAgICAgICAgICAgICAgICAgIChpbnQzMilvZnMpPj4xMykqKGludDMyKW9mcyk+PigxMyAr
MikpLTEpKSooaW50MzIpb2ZzOwogICAgICAgICAgICAgICAgdjEgPSAodjEgKyB2MikvKDZMPDwx
Myk7CiAgICAgICAgICAgICAgICAqZGVzdCsrID0gKHNhbXBsZV90KSgodjEgPiAzMjc2Nyk/IDMy
NzY3OiAoKHYxIDwgLTMyNzY4KT8gLTMyNzY4OiB2MSkpOwogICAgICAgICAgICAgICAgb2ZzPW9m
c2Q7CiAgICAgICAgfQogICAgICAgICAgb2ZzICs9IGluY3I7CiAgICAgICAgfQogICAgICBpZiAo
dmliZmxhZykKICAgICAgICB7CiAgICAgICAgICBjYyA9IHZwLT52aWJyYXRvX2NvbnRyb2xfcmF0
aW87CiAgICAgICAgICBpbmNyID0gdXBkYXRlX3ZpYnJhdG8odnAsIChpbmNyIDwgMCkpOwogICAg
ICAgICAgdmliZmxhZyA9IDA7CiAgICAgICAgfQogICAgICBpZiAob2ZzID49IGxlKQogICAgICAg
IHsKCgoKCiAgICAgICAgICBpbmNyICo9IC0xOwogICAgICAgIH0KICAgICAgZWxzZSBpZiAob2Zz
IDw9IGxzKQogICAgICAgIHsKCgoKICAgICAgICAgIGluY3IgKj0gLTE7CiAgICAgICAgfQogICAg
fQoKCiAgdnAtPnZpYnJhdG9fY29udHJvbF9jb3VudGVyPWNjOwogIHZwLT5zYW1wbGVfaW5jcmVt
ZW50PWluY3I7CiAgdnAtPnNhbXBsZV9vZmZzZXQ9b2ZzOwogIHJldHVybiByZXNhbXBsZV9idWZm
ZXIrcmVzYW1wbGVfYnVmZmVyX29mZnNldDsKfQoKc3RhdGljIGludCByc191cGRhdGVfcG9ydGEo
aW50IHYpCnsKICAgIFZvaWNlICp2cD0mdm9pY2Vbdl07CiAgICBpbnQzMiBkOwoKICAgIGQgPSB2
cC0+cG9ydGFfZHBiOwogICAgaWYodnAtPnBvcnRhX3BiIDwgMCkKICAgIHsKICAgICAgICBpZihk
ID4gLXZwLT5wb3J0YV9wYikKICAgICAgICAgICAgZCA9IC12cC0+cG9ydGFfcGI7CiAgICB9CiAg
ICBlbHNlCiAgICB7CiAgICAgICAgaWYoZCA+IHZwLT5wb3J0YV9wYikKICAgICAgICAgICAgZCA9
IC12cC0+cG9ydGFfcGI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBkID0gLWQ7CiAgICB9Cgog
ICAgdnAtPnBvcnRhX3BiICs9IGQ7CiAgICBpZih2cC0+cG9ydGFfcGIgPT0gMCkKICAgIHsKICAg
ICAgICB2cC0+cG9ydGFfY29udHJvbF9yYXRpbyA9IDA7CiAgICAgICAgdnAtPnBvcnRhX3BiID0g
MDsKICAgIH0KICAgIHJlY29tcHV0ZV9mcmVxKHYpOwogICAgcmV0dXJuIHZwLT5wb3J0YV9jb250
cm9sX3JhdGlvOwp9CgpzdGF0aWMgc2FtcGxlX3QgKnBvcnRhX3Jlc2FtcGxlX3ZvaWNlKGludCB2
LCB1aW50MzIgKmNvdW50cHRyLCBpbnQgbW9kZSkKewogICAgVm9pY2UgKnZwPSZ2b2ljZVt2XTsK
ICAgIHVpbnQzMiBuID0gKmNvdW50cHRyOwogICAgdWludDMyIGk7CiAgICBzYW1wbGVfdCAqKCog
cmVzYW1wbGVyKShpbnQsIHVpbnQzMiAqLCBpbnQpOwogICAgaW50IGNjID0gdnAtPnBvcnRhX2Nv
bnRyb2xfY291bnRlcjsKICAgIGludCBsb29wOwoKICAgIGlmKHZwLT52aWJyYXRvX2NvbnRyb2xf
cmF0aW8pCiAgICAgICAgcmVzYW1wbGVyID0gdmliX3Jlc2FtcGxlX3ZvaWNlOwogICAgZWxzZQog
ICAgICAgIHJlc2FtcGxlciA9IG5vcm1hbF9yZXNhbXBsZV92b2ljZTsKICAgIGlmKG1vZGUgIT0g
MSkKICAgICAgICBsb29wID0gMTsKICAgIGVsc2UKICAgICAgICBsb29wID0gMDsKCgogICAgcmVz
YW1wbGVfYnVmZmVyX29mZnNldCA9IDA7CiAgICB3aGlsZShyZXNhbXBsZV9idWZmZXJfb2Zmc2V0
IDwgbikKICAgIHsKICAgICAgICBpZihjYyA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgaWYo
KGNjID0gcnNfdXBkYXRlX3BvcnRhKHYpKSA9PSAwKQogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICBpID0gbiAtIHJlc2FtcGxlX2J1ZmZlcl9vZmZzZXQ7CiAgICAgICAgICAgICAgICByZXNh
bXBsZXIodiwgJmksIG1vZGUpOwogICAgICAgICAgICAgICAgcmVzYW1wbGVfYnVmZmVyX29mZnNl
dCArPSBpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9Cgog
ICAgICAgIGkgPSBuIC0gcmVzYW1wbGVfYnVmZmVyX29mZnNldDsKICAgICAgICBpZihpID4gKHVp
bnQzMiljYykKICAgICAgICAgICAgaSA9ICh1aW50MzIpY2M7CiAgICAgICAgcmVzYW1wbGVyKHYs
ICZpLCBtb2RlKTsKICAgICAgICByZXNhbXBsZV9idWZmZXJfb2Zmc2V0ICs9IGk7CgoKICAgICAg
ICBpZih2cC0+c3RhdHVzID09ICgxPDwwKSkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2Mg
LT0gKGludClpOwogICAgfQogICAgKmNvdW50cHRyID0gcmVzYW1wbGVfYnVmZmVyX29mZnNldDsK
ICAgIHJlc2FtcGxlX2J1ZmZlcl9vZmZzZXQgPSAwOwogICAgdnAtPnBvcnRhX2NvbnRyb2xfY291
bnRlciA9IGNjOwogICAgcmV0dXJuIHJlc2FtcGxlX2J1ZmZlcjsKfQoKc3RhdGljIHNhbXBsZV90
ICp2aWJfcmVzYW1wbGVfdm9pY2UoaW50IHYsIHVpbnQzMiAqY291bnRwdHIsIGludCBtb2RlKQp7
CiAgICBWb2ljZSAqdnAgPSAmdm9pY2Vbdl07CgoKICAgIGlmKG1vZGUgPT0gMCkKICAgICAgICBy
ZXR1cm4gcnNfdmliX2xvb3AodiwgdnAsIGNvdW50cHRyKTsKICAgIGlmKG1vZGUgPT0gMSkKICAg
ICAgICByZXR1cm4gcnNfdmliX3BsYWluKHYsIGNvdW50cHRyKTsKICAgIHJldHVybiByc192aWJf
YmlkaXIodiwgdnAsICpjb3VudHB0cik7Cn0KCnN0YXRpYyBzYW1wbGVfdCAqbm9ybWFsX3Jlc2Ft
cGxlX3ZvaWNlKGludCB2LCB1aW50MzIgKmNvdW50cHRyLCBpbnQgbW9kZSkKewogICAgVm9pY2Ug
KnZwID0gJnZvaWNlW3ZdOwogICAgaWYobW9kZSA9PSAwKQogICAgICAgIHJldHVybiByc19sb29w
KHYsIHZwLCBjb3VudHB0cik7CiAgICBpZihtb2RlID09IDEpCiAgICAgICAgcmV0dXJuIHJzX3Bs
YWluKHYsIGNvdW50cHRyKTsKICAgIHJldHVybiByc19iaWRpcih2LCB2cCwgKmNvdW50cHRyKTsK
fQoKc2FtcGxlX3QgKnJlc2FtcGxlX3ZvaWNlKGludCB2LCB1aW50MzIgKmNvdW50cHRyKQp7CiAg
ICBWb2ljZSAqdnA9JnZvaWNlW3ZdOwogICAgaW50IG1vZGU7CgogICAgaWYoISh2cC0+c2FtcGxl
LT5zYW1wbGVfcmF0ZSkpCiAgICB7CiAgICAgICAgdWludDMyIG9mczsKCgoKICAgICAgICBvZnM9
dnAtPnNhbXBsZV9vZmZzZXQgPj4gMTM7CgogICAgICAgIGlmKCpjb3VudHB0ciA+PSAodnAtPnNh
bXBsZS0+ZGF0YV9sZW5ndGg+PjEzKSAtIG9mcykKICAgICAgICB7CgogICAgICAgICAgaWYgKCEo
dnAtPnN0YXR1cyYoMTw8MCkpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdnAtPnN0YXR1
cz0oMTw8MCk7CiAgICAgICAgICAgICAgY3RsLT5ub3RlKHYpOwogICAgICAgICAgICB9CgoKICAg
ICAgICAgICAgKmNvdW50cHRyID0gKHZwLT5zYW1wbGUtPmRhdGFfbGVuZ3RoPj4xMykgLSBvZnM7
CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgICAgdnAtPnNhbXBsZV9vZmZzZXQgKz0g
KmNvdW50cHRyIDw8IDEzOwogICAgICAgIHJldHVybiB2cC0+c2FtcGxlLT5kYXRhK29mczsKICAg
IH0KCiAgICBpZiAoY3VycmVudF9pbnRlcnBvbGF0aW9uID09IDIpCiAgICAgICAgIHJldHVybiBy
ZXNhbXBsZV92b2ljZV9sYWdyYW5nZSh2LCBjb3VudHB0cik7CiAgICBlbHNlIGlmIChjdXJyZW50
X2ludGVycG9sYXRpb24gPT0gMykKICAgICAgICAgcmV0dXJuIHJlc2FtcGxlX3ZvaWNlX2ZpbHRl
cih2LCBjb3VudHB0cik7CgogICAgbW9kZSA9IHZwLT5zYW1wbGUtPm1vZGVzOwogICAgaWYoKG1v
ZGUgJiAoMTw8MikpICYmCiAgICAgICAoKG1vZGUgJiAoMTw8NikpIHx8CiAgICAgICAgKHZwLT5z
dGF0dXMgJiAoKDE8PDEpIHwgKDE8PDIpKSkpKQogICAgewogICAgICAgIGlmKG1vZGUgJiAoMTw8
MykpCiAgICAgICAgewoKICAgICAgICAgICAgbW9kZSA9IDI7CiAgICAgICAgfQogICAgICAgIGVs
c2UKICAgICAgICAgICAgbW9kZSA9IDA7CiAgICB9CiAgICBlbHNlCiAgICAgICAgbW9kZSA9IDE7
CgogICAgaWYodnAtPnBvcnRhX2NvbnRyb2xfcmF0aW8pCiAgICAgICAgcmV0dXJuIHBvcnRhX3Jl
c2FtcGxlX3ZvaWNlKHYsIGNvdW50cHRyLCBtb2RlKTsKCiAgICBpZih2cC0+dmlicmF0b19jb250
cm9sX3JhdGlvKQogICAgICAgIHJldHVybiB2aWJfcmVzYW1wbGVfdm9pY2UodiwgY291bnRwdHIs
IG1vZGUpOwoKICAgIHJldHVybiBub3JtYWxfcmVzYW1wbGVfdm9pY2UodiwgY291bnRwdHIsIG1v
ZGUpOwp9CgoKdm9pZCBkb19sb3dwYXNzKFNhbXBsZSAqc2FtcGxlLCB1aW50MzIgc3JhdGUsIHNh
bXBsZV90ICpidWYsIHVpbnQzMiBjb3VudCwgdWludDMyIGZyZXEsIEZMT0FUX1QgcmVzb25hbmNl
KQp7CiAgICBkb3VibGUgYTA9MCwgYTE9MCwgYTI9MCwgYjA9MCwgYjE9MDsKICAgIGRvdWJsZSB4
MD0wLCB4MT0wLCB5MD0wLCB5MT0wOwogICAgc2FtcGxlX3Qgc2FtcDsKICAgIGRvdWJsZSBvdXRz
YW1wLCBpbnNhbXAsIG1vZF9hbW91bnQ9MDsKICAgIHVpbnQzMiBmaW5kZXgsIGNjOwogICAgdWlu
dDMyIGN1cnJlbnRfZnJlcTsKCiAgICBpZiAoZnJlcSA8IDIwKSByZXR1cm47CgogICAgaWYgKGZy
ZXEgPiBzcmF0ZSAqIDIpIHsKICAgICAgICBjdGwtPmNtc2coMiwgMCwKICAgICAgICAgICAgICAg
ICAgIkxvd3Bhc3M6IGNlbnRlciBtdXN0IGJlIDwgZGF0YSByYXRlKjIiKTsKICAgICAgICByZXR1
cm47CiAgICB9CgogICAgY3VycmVudF9mcmVxID0gZnJlcTsKCiAgICBpZiAoc2FtcGxlLT5tb2RF
bnZUb0ZpbHRlckZjKQogICAgICAgIG1vZF9hbW91bnQgPSBzYW1wbGUtPm1vZEVudlRvRmlsdGVy
RmM7CgogICAgaWYgKG1vZF9hbW91bnQgPCAwLjAyICYmIGZyZXEgPj0gMTM1MDApIHJldHVybjsK
CiAgICB2b2ljZVswXS5zYW1wbGUgPSBzYW1wbGU7CgoKICAgIHZvaWNlWzBdLm1vZHVsYXRpb25f
c3RhZ2U9MDsKICAgIHZvaWNlWzBdLm1vZHVsYXRpb25fdm9sdW1lPTA7CiAgICB2b2ljZVswXS5t
b2R1bGF0aW9uX2RlbGF5PXNhbXBsZS0+bW9kdWxhdGlvbl9yYXRlWzZdOwogICAgY2MgPSB2b2lj
ZVswXS5tb2R1bGF0aW9uX2NvdW50ZXI9MDsKICAgIHJlY29tcHV0ZV9tb2R1bGF0aW9uKDApOwoK
CiAgICB3aGlsZSAoY291bnQtLSkgewoKICAgICAgICBpZiAoIWNjKSB7CiAgICAgICAgICAgIGlm
IChtb2RfYW1vdW50PjAuMDIpIHsKICAgICAgICAgICAgICAgIGlmICh1cGRhdGVfbW9kdWxhdGlv
bl9zaWduYWwoMCkpIG1vZF9hbW91bnQgPSAwOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgY3VycmVudF9mcmVxID0gKHVpbnQzMikoIChkb3VibGUpZnJlcSooMS4wICsgKG1v
ZF9hbW91bnQgLSAxLjApICoKICAgICAgICAgICAgICAgICAgICAgICAgICh2b2ljZVswXS5tb2R1
bGF0aW9uX3ZvbHVtZT4+MjIpIC8gMjU1LjApICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg
Y2MgPSBjb250cm9sX3JhdGlvOwogICAgICAgICAgICBmaW5kZXggPSAxICsgKGN1cnJlbnRfZnJl
cSs1MCkgLyAxMDA7CiAgICAgICAgICAgIGlmIChmaW5kZXggPiAxMDApIGZpbmRleCA9IDEwMDsK
ICAgICAgICAgICAgYTAgPSBidXR0ZXJ3b3J0aFtmaW5kZXhdWzBdOwogICAgICAgICAgICBhMSA9
IGJ1dHRlcndvcnRoW2ZpbmRleF1bMV07CiAgICAgICAgICAgIGEyID0gYnV0dGVyd29ydGhbZmlu
ZGV4XVsyXTsKICAgICAgICAgICAgYjAgPSBidXR0ZXJ3b3J0aFtmaW5kZXhdWzNdOwogICAgICAg
ICAgICBiMSA9IGJ1dHRlcndvcnRoW2ZpbmRleF1bNF07CiAgICAgICAgfQoKICAgICAgICBpZiAo
bW9kX2Ftb3VudD4wLjAyKSBjYy0tOwoKICAgICAgICBzYW1wID0gKmJ1ZjsKCiAgICAgICAgaW5z
YW1wID0gKGRvdWJsZSlzYW1wOwogICAgICAgIG91dHNhbXAgPSBhMCAqIGluc2FtcCArIGExICog
eDAgKyBhMiAqIHgxIC0gYjAgKiB5MCAtIGIxICogeTE7CiAgICAgICAgeDEgPSB4MDsKICAgICAg
ICB4MCA9IGluc2FtcDsKICAgICAgICB5MSA9IHkwOwogICAgICAgIHkwID0gb3V0c2FtcDsKICAg
ICAgICBpZiAob3V0c2FtcCA+IDMyNzY3KSB7CiAgICAgICAgICAgICAgICBvdXRzYW1wID0gMzI3
Njc7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG91dHNhbXAgPCAtMzI3NjgpIHsKICAgICAg
ICAgICAgICAgIG91dHNhbXAgPSAtMzI3Njg7CiAgICAgICAgfQogICAgICAgICpidWYrKyA9IChz
YW1wbGVfdClvdXRzYW1wOwogICAgfQp9CgoKdm9pZCBwcmVfcmVzYW1wbGUoU2FtcGxlICogc3Ap
CnsKICBkb3VibGUgYSwgeGRpZmY7CiAgdWludDMyIGksIGluY3IsIG9mcywgbmV3bGVuLCBjb3Vu
dCwgb3ZlcnNob290OwogIGludDE2ICpuZXdkYXRhLCAqZGVzdCwgKnNyYyA9IChpbnQxNiAqKXNw
LT5kYXRhLCAqdnB0ciwgKmVuZHB0cjsKICBpbnQzMiB2MSwgdjIsIHYzLCB2NDsKICBzdGF0aWMg
Y29uc3QgY2hhciBub3RlX25hbWVbMTJdWzNdID0KICB7CiAgICAiQyIsICJDIyIsICJEIiwgIkQj
IiwgIkUiLCAiRiIsICJGIyIsICJHIiwgIkcjIiwgIkEiLCAiQSMiLCAiQiIKICB9OwoKICBjdGwt
PmNtc2coMCwgMywgIiAqIHByZS1yZXNhbXBsaW5nIGZvciBub3RlICVkICglcyVkKSIsCiAgICAg
ICAgICAgIHNwLT5ub3RlX3RvX3VzZSwKICAgICAgICAgICAgbm90ZV9uYW1lW3NwLT5ub3RlX3Rv
X3VzZSAlIDEyXSwgKHNwLT5ub3RlX3RvX3VzZSAmIDB4N0YpIC8gMTIpOwoKICBpZiAoc3AtPnNh
bXBsZV9yYXRlID09IHBsYXlfbW9kZS0+cmF0ZSAmJiBzcC0+cm9vdF9mcmVxID09IGZyZXFfdGFi
bGVbKGludCkoc3AtPm5vdGVfdG9fdXNlKV0pIHsKICAgICAgICBhID0gMTsKICB9CiAgZWxzZSBh
ID0gKChkb3VibGUpIChzcC0+c2FtcGxlX3JhdGUpICogZnJlcV90YWJsZVsoaW50KSAoc3AtPm5v
dGVfdG9fdXNlKV0pIC8KICAgICgoZG91YmxlKSAoc3AtPnJvb3RfZnJlcSkgKiBwbGF5X21vZGUt
PnJhdGUpOwoKCiAgaWYoc3AtPmRhdGFfbGVuZ3RoIC8gYSA+PSAweDdmZmZmZmZmTCkKICB7Cgog
ICAgICBjdGwtPmNtc2coMCwgMywgIiAqKiogQ2FuJ3QgcHJlLXJlc2FtcGxpbmcgZm9yIG5vdGUg
JWQiLAogICAgICAgICAgICAgICAgc3AtPm5vdGVfdG9fdXNlKTsKICAgICAgcmV0dXJuOwogIH0K
CiAgZW5kcHRyID0gc3JjICsgKHNwLT5kYXRhX2xlbmd0aCA+PiAxMykgLSAxOwogIGlmICgqZW5k
cHRyIDwgMCkgb3ZlcnNob290ID0gKHVpbnQzMikoLSgqZW5kcHRyIC8gNTApKTsKICBlbHNlIG92
ZXJzaG9vdCA9ICh1aW50MzIpKCplbmRwdHIgLyA1MCk7CiAgaWYgKG92ZXJzaG9vdCA8IDIpIG92
ZXJzaG9vdCA9IDA7CgogIG5ld2xlbiA9IChpbnQzMikoc3AtPmRhdGFfbGVuZ3RoIC8gYSk7CiAg
Y291bnQgPSAobmV3bGVuID4+IDEzKSAtIDE7CiAgb2ZzID0gaW5jciA9IChzcC0+ZGF0YV9sZW5n
dGggLSAoMSA8PCAxMykpIC8gY291bnQ7CgogIGlmKChkb3VibGUpbmV3bGVuICsgaW5jciA+PSAw
eDdmZmZmZmZmTCkKICB7CgogICAgICBjdGwtPmNtc2coMCwgMywgIiAqKiogQ2FuJ3QgcHJlLXJl
c2FtcGxpbmcgZm9yIG5vdGUgJWQiLAogICAgICAgICAgICAgICAgc3AtPm5vdGVfdG9fdXNlKTsK
ICAgICAgcmV0dXJuOwogIH0KCiAgZGVzdCA9IG5ld2RhdGEgPSAoaW50MTYgKilzYWZlX21hbGxv
YygobmV3bGVuID4+ICgxMyAtIDEpKSArIDIgKyAyKm92ZXJzaG9vdCk7CgogIGlmICgtLWNvdW50
KQogICAgKmRlc3QrKyA9IHNyY1swXTsKCgoKICBjb3VudC0tOwogIGZvcihpID0gMDsgaSA8IGNv
dW50ICsgb3ZlcnNob290OyBpKyspCiAgICB7CiAgICAgIHZwdHIgPSBzcmMgKyAob2ZzID4+IDEz
KTsKICAgICAgaWYgKGkgPCBjb3VudCAtIDIgfHwgIW92ZXJzaG9vdCkKICAgICAgICB7CiAgICAg
ICAgICB2MSA9ICoodnB0ciAtIDEpOwogICAgICAgICAgdjIgPSAqdnB0cjsKICAgICAgICAgIHYz
ID0gKih2cHRyICsgMSk7CiAgICAgICAgICB2NCA9ICoodnB0ciArIDIpOwogICAgICAgIH0KICAg
ICAgZWxzZQogICAgICAgIHsKICAgICAgICAgIGlmIChpIDwgY291bnQgKyAxKSB2MSA9ICoodnB0
ciAtIDEpOwogICAgICAgICAgZWxzZSB2MSA9ICplbmRwdHIgLSAoY291bnQtaSsyKSAqICplbmRw
dHIgLyBvdmVyc2hvb3Q7CiAgICAgICAgICBpZiAoaSA8IGNvdW50KSB2MiA9ICp2cHRyOwogICAg
ICAgICAgZWxzZSB2MiA9ICplbmRwdHIgLSAoY291bnQtaSsxKSAqICplbmRwdHIgLyBvdmVyc2hv
b3Q7CiAgICAgICAgICBpZiAoaSA8IGNvdW50IC0gMSkgdjMgPSAqKHZwdHIgKyAxKTsKICAgICAg
ICAgIGVsc2UgdjMgPSAqZW5kcHRyIC0gKGNvdW50LWkpICogKmVuZHB0ciAvIG92ZXJzaG9vdDsK
ICAgICAgICAgIHY0ID0gKmVuZHB0ciAtIChjb3VudC1pLTEpICogKmVuZHB0ciAvIG92ZXJzaG9v
dDsKICAgICAgICB9CiAgICAgIHhkaWZmID0gKCgoaW50MzIpKG9mcyAmICh+ICgweEZGRkZGRkZG
IDw8IDEzKSkpKSAqICgxLjBMIC8gKGRvdWJsZSkoMTw8KDEzKSkpKTsKICAgICAgKmRlc3QrKyA9
IHYyICsgKHhkaWZmIC8gNi4wKSAqICgtMiAqIHYxIC0gMyAqIHYyICsgNiAqIHYzIC0gdjQgKwog
ICAgICB4ZGlmZiAqICgzICogKHYxIC0gMiAqIHYyICsgdjMpICsgeGRpZmYgKiAoLXYxICsgMyAq
ICh2MiAtIHYzKSArIHY0KSkpOwogICAgICBvZnMgKz0gaW5jcjsKICAgIH0KCiBpZiAoIW92ZXJz
aG9vdCkKICB7CiAgaWYgKChpbnQzMikob2ZzICYgKH4gKDB4RkZGRkZGRkYgPDwgMTMpKSkpCiAg
ICB7CiAgICAgIHYxID0gc3JjW29mcyA+PiAxM107CiAgICAgIHYyID0gc3JjWyhvZnMgPj4gMTMp
ICsgMV07CiAgICAgICpkZXN0KysgPSAoaW50MTYpKHYxICsgKChpbnQzMikoKHYyIC0gdjEpICog
KG9mcyAmICh+ICgweEZGRkZGRkZGIDw8IDEzKSkpKSA+PiAxMykpOwogICAgfQogIGVsc2UKICAg
ICpkZXN0KysgPSBzcmNbb2ZzID4+IDEzXTsKICAqZGVzdCsrID0gKihkZXN0IC0gMSkgLyAyOwog
ICpkZXN0KysgPSAqKGRlc3QgLSAxKSAvIDI7CiAgfQoKICBzcC0+ZGF0YV9sZW5ndGggPSBuZXds
ZW4gKyAob3ZlcnNob290IDw8IDEzKTsKICBzcC0+bG9vcF9zdGFydCA9IChpbnQzMikoc3AtPmxv
b3Bfc3RhcnQgLyBhKTsKICBzcC0+bG9vcF9lbmQgPSAoaW50MzIpKHNwLT5sb29wX2VuZCAvIGEp
OwogIGZyZWUoc3AtPmRhdGEpOwogIHNwLT5kYXRhID0gKHNhbXBsZV90ICopIG5ld2RhdGE7CiAg
c3AtPnNhbXBsZV9yYXRlID0gMDsKfQo=


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