This is the mail archive of the gcc-prs@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]

optimization/5569: Internal compiler eror in print_rtl_and_abort



>Number:         5569
>Category:       optimization
>Synopsis:       Internal compiler eror in print_rtl_and_abort
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Feb 01 04:36:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     snowwolf@one2one-networks.com
>Release:        gcc version 3.0.4 20020127 (Debian prerelease)
>Organization:
>Environment:
Debian unstable:
g++-3.0 -v
Reading specs from /usr/lib/gcc-lib/i386-linux/3.0.4/specs
Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,proto,objc --prefix=/usr --infodir=/share/info --mandir=/share/man --enable-shared --with-gnu-as --with-gnu-ld --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --disable-checking --enable-threads=posix --enable-java-gc=boehm --with-cpp-install-dir=bin --enable-objc-gc i386-linux
Thread model: posix
>Description:
Compiling a file from kdemultimedia results in a internal error, 
when using -O3. It compiles fine with -O2. 
Log:
../../kmidi/resample.cpp: In function `void pre_resample(Sample*)':
../../kmidi/resample.cpp:1274: warning: assignment to `short int' from `double'
../../kmidi/resample.cpp:1274: warning: argument to `short int' from `double'
../../kmidi/resample.cpp:1298: Internal compiler error in print_rtl_and_abort,
   at flow.c:6458
Please submit a full bug report,
with preprocessed source if appropriate.
>How-To-Repeat:
 g++-3.0 -DHAVE_CONFIG_H -I. -I../../kmidi -I.. `/opt/kde3/bin/artsc-config --cflags` -I/opt/kde3/include -I/opt/qt3/include -I/usr/X11R6/include  -DDEFAULT_PATH=\"/opt/kde3/share/apps/kmidi/config\" -DKMIDI -DAU_OSS    -O3 -march=i686 -pipe -g -foptimize-sibling-calls -fomit-frame-pointer -finline-functions -fno-exceptions -fno-check-new -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -ffast-math -c ../../kmidi/resample.cpp
>Fix:
Compiling with -O2 instead of -O3.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-csrc; name="resample.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="resample.ii"

IyAyNCAiLi4vLi4va21pZGkvcmVzYW1wbGUuY3BwIgojIDEgIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDEgMwojIDI4MyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwojIDI4NCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIg
MwojIDMxMiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ251
L3N0dWJzLmgiIDEgMwojIDMxMyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwojIDI4ICIv
dXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL2h1Z2VfdmFsLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUv
Yml0cy9odWdlX3ZhbC5oIiAyIDMKIyAzNCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvbmFuLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiMgMjkgIi91c3Iv
aW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMwp0eXBlZGVmIGxvbmcgZG91YmxlIGZsb2F0X3Q7Cgp0
eXBlZGVmIGxvbmcgZG91YmxlIGRvdWJsZV90OwojIDQxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAy
IDMKIyA2MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21h
dGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0
ZXJuIGRvdWJsZSBhY29zIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Fj
b3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhc2luIChkb3VibGUgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2FzaW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoK
ZXh0ZXJuIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X2F0YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91Ymxl
IF9feSwgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hdGFuMiAoZG91Ymxl
IF9feSwgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSBf
X3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fY29zIChkb3VibGUgX194KSB0aHJvdyAoKTsK
CmV4dGVybiBkb3VibGUgc2luIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X3NpbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX190YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoK
CgpleHRlcm4gdm9pZCBzaW5jb3MgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUg
Kl9fY29zeCkgdGhyb3cgKCk7IGV4dGVybiB2b2lkIF9fc2luY29zIChkb3VibGUgX194LCBkb3Vi
bGUgKl9fc2lueCwgZG91YmxlICpfX2Nvc3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91Ymxl
IGNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fY29zaCAoZG91Ymxl
IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHNpbmggKGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gZG91YmxlIF9fc2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91
YmxlIHRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fdGFuaCAoZG91
YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fYWNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0
ZXJuIGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19h
c2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGF0YW5oIChkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW5oIChkb3VibGUgX194KSB0aHJvdyAo
KTsKCgoKCgpleHRlcm4gZG91YmxlIGV4cCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBk
b3VibGUgX19leHAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGV4cDEw
IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2V4cDEwIChkb3VibGUgX194
KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgcG93MTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBl
eHRlcm4gZG91YmxlIF9fcG93MTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91
YmxlIGZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGRvdWJsZSBsZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgp
OyBleHRlcm4gZG91YmxlIF9fbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJv
dyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZyAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBk
b3VibGUgX19sb2cgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nMTAg
KGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJsZSBfX3gp
IHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lw
dHIpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpf
X2lwdHIpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2V4cG0xIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRl
cm4gZG91YmxlIGxvZzFwIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xv
ZzFwIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZ2IgKGRvdWJsZSBf
X3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gZG91YmxlIGV4cDIgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fZXhwMiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cyIChk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRvdWJsZSBfX3gpIHRo
cm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg
dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19wb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRo
cm93ICgpOwoKCmV4dGVybiBkb3VibGUgc3FydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVy
biBkb3VibGUgX19zcXJ0IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBo
eXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19o
eXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91Ymxl
IGNicnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fY2JydCAoZG91Ymxl
IF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19jZWlsIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRl
cm4gZG91YmxlIGZhYnMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2ZhYnMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGZsb29yIChkb3VibGUgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194KSB0aHJvdyAoKTsK
CgpleHRlcm4gZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBl
eHRlcm4gZG91YmxlIF9fZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoK
CgpleHRlcm4gaW50IF9faXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZSAoZG91YmxlIF9fdmFsdWUp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNp
bmYgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKZXh0ZXJuIGludCBmaW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3Vi
bGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2RyZW0gKGRvdWJsZSBfX3gsIGRvdWJs
ZSBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIHNpZ25pZmljYW5kIChkb3VibGUgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NpZ25pZmljYW5kIChkb3VibGUgX194KSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBkb3VibGUgY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2Nv
cHlzaWduIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKCgpleHRlcm4gZG91YmxlIG5hbiAoX19jb25zdCBjaGFyICpfX3RhZ2Ip
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25h
biAoX19jb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgoKCmV4dGVybiBpbnQgX19pc25hbiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbiAoZG91YmxlIF9f
dmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91
YmxlIGowIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fajAgKGRvdWJsZSkgdGhy
b3cgKCk7CmV4dGVybiBkb3VibGUgajEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg
X19qMSAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fam4gKGludCwgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJu
IGRvdWJsZSB5MCAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3kwIChkb3VibGUp
IHRocm93ICgpOwpleHRlcm4gZG91YmxlIHkxIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9feTEgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgeW4gKGludCwgZG91Ymxl
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3luIChpbnQsIGRvdWJsZSkgdGhyb3cgKCk7CgoK
CgoKZXh0ZXJuIGRvdWJsZSBlcmYgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19l
cmYgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX2VyZmMgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUg
bGdhbW1hIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hIChkb3VibGUp
IHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIHRnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX3RnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUg
Z2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19nYW1tYSAoZG91YmxlKSB0
aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBsZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2ln
bmdhbXApIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hX3IgKGRvdWJsZSwgaW50ICpf
X3NpZ25nYW1wKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSByaW50IChkb3VibGUgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3JpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoK
CmV4dGVybiBkb3VibGUgbmV4dGFmdGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIg
KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCmV4dGVybiBkb3VibGUgbmV4dHRvd2FyZCAoZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUg
X19uZXh0dG93YXJkIChkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcmVtYWluZGVyIChk
b3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYiAo
ZG91YmxlIF9feCwgZG91YmxlIF9fbikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zY2FsYiAo
ZG91YmxlIF9feCwgZG91YmxlIF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIHNjYWxi
biAoZG91YmxlIF9feCwgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zY2FsYm4g
KGRvdWJsZSBfX3gsIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlsb2diIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGludCBfX2lsb2diIChkb3VibGUgX194KSB0aHJvdyAo
KTsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJsbiAoZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibG4gKGRvdWJsZSBfX3gsIGxvbmcgaW50IF9f
bikgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgbmVhcmJ5aW50IChkb3VibGUgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX25lYXJieWludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK
CmV4dGVybiBkb3VibGUgcm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fcm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIHRydW5jIChk
b3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBk
b3VibGUgX190cnVuYyAoZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgoKZXh0ZXJuIGRvdWJsZSByZW1xdW8gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ks
IGludCAqX19xdW8pIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcmVtcXVvIChkb3VibGUgX194
LCBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50
IGxyaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnQgKGRv
dWJsZSBfX3gpIHRocm93ICgpOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnQgKGRvdWJsZSBf
X3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscmludCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGludCBscm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBpbnQgX19scm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwpleHRlcm4g
bG9uZyBsb25nIGludCBsbHJvdW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg
bG9uZyBpbnQgX19sbHJvdW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJs
ZSBmZGltIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X2ZkaW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUg
Zm1heCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19m
bWF4IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZt
aW4gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1p
biAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX19mcGNs
YXNzaWZ5IChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX3NpZ25iaXQgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAo
KQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGRvdWJsZSBmbWEg
KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3opIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fZm1hIChkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSB0aHJvdyAoKTsK
IyA2NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgODIgIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBhY29zZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYWNvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRl
cm4gZmxvYXQgYXNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2FzaW5m
IChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHRo
cm93ICgpOyBleHRlcm4gZmxvYXQgX19hdGFuZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVy
biBmbG9hdCBhdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZs
b2F0IF9fYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZs
b2F0IGNvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2Nvc2YgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgc2luZiAoZmxvYXQgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGZsb2F0IF9fc2luZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCB0
YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX190YW5mIChmbG9hdCBfX3gp
IHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBzaW5jb3NmIChmbG9hdCBfX3gsIGZsb2F0ICpfX3Np
bngsIGZsb2F0ICpfX2Nvc3gpIHRocm93ICgpOyBleHRlcm4gdm9pZCBfX3NpbmNvc2YgKGZsb2F0
IF9feCwgZmxvYXQgKl9fc2lueCwgZmxvYXQgKl9fY29zeCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVy
biBmbG9hdCBjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fY29zaGYg
KGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgc2luaGYgKGZsb2F0IF9feCkgdGhy
b3cgKCk7IGV4dGVybiBmbG9hdCBfX3NpbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJu
IGZsb2F0IHRhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX190YW5oZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYWNvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0
ZXJuIGZsb2F0IGFzaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNp
bmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXRhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoK
CgoKCmV4dGVybiBmbG9hdCBleHBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19leHBmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgZXhwMTBmIChmbG9h
dCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19leHAxMGYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7CgpleHRlcm4gZmxvYXQgcG93MTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19wb3cxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBmcmV4cGYg
KGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZnJl
eHBmIChmbG9hdCBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0
IGxkZXhwZiAoZmxvYXQgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX2xkZXhwZiAoZmxvYXQgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGZsb2F0IGxvZ2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZ2YgKGZs
b2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVy
biBmbG9hdCBtb2RmZiAoZmxvYXQgX194LCBmbG9hdCAqX19pcHRyKSB0aHJvdyAoKTsgZXh0ZXJu
IGZsb2F0IF9fbW9kZmYgKGZsb2F0IF9feCwgZmxvYXQgKl9faXB0cikgdGhyb3cgKCk7CgoKCmV4
dGVybiBmbG9hdCBleHBtMWYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2V4
cG0xZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nMXBmIChmbG9hdCBf
X3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sb2cxcGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGZsb2F0IGxvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19sb2diZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBleHAyZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXhwMmYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGZsb2F0IGxvZzJmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19sb2cyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IHBvd2Yg
KGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcG93ZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBzcXJ0ZiAoZmxvYXQg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc3FydGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
CgoKCmV4dGVybiBmbG9hdCBoeXBvdGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsg
ZXh0ZXJuIGZsb2F0IF9faHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoK
CgpleHRlcm4gZmxvYXQgY2JydGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2NicnRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKGZs
b2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2NlaWxmIChmbG9hdCBfX3gpIHRocm93
ICgpOwoKCmV4dGVybiBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZhYnNmIChmbG9hdCBfX3gpIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZmxvb3JmIChm
bG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mbG9vcmYgKGZsb2F0IF9feCkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZtb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cg
KCk7IGV4dGVybiBmbG9hdCBfX2Ztb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gaW50IF9faXNpbmZmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWYgKGZsb2F0IF9fdmFs
dWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQg
aXNpbmZmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGludCBmaW5pdGVmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGRyZW1mIChmbG9hdCBfX3gsIGZs
b2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2RyZW1mIChmbG9hdCBfX3gsIGZsb2F0
IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKGZsb2F0IF9feCkg
dGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NpZ25pZmljYW5kZiAoZmxvYXQgX194KSB0aHJvdyAo
KTsKCgoKCmV4dGVybiBmbG9hdCBjb3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2NvcHlzaWdu
ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgoKCmV4dGVybiBmbG9hdCBuYW5mIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uYW5mIChfX2Nv
bnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgoKZXh0ZXJuIGludCBfX2lzbmFuZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFuZiAoZmxvYXQgX192YWx1ZSkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBqMGYg
KGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fajBmIChmbG9hdCkgdGhyb3cgKCk7CmV4
dGVybiBmbG9hdCBqMWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fajFmIChmbG9h
dCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBqbmYgKGludCwgZmxvYXQpIHRocm93ICgpOyBleHRl
cm4gZmxvYXQgX19qbmYgKGludCwgZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgeTBmIChm
bG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3kwZiAoZmxvYXQpIHRocm93ICgpOwpleHRl
cm4gZmxvYXQgeTFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3kxZiAoZmxvYXQp
IHRocm93ICgpOwpleHRlcm4gZmxvYXQgeW5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJu
IGZsb2F0IF9feW5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZmxvYXQgZXJm
ZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19lcmZmIChmbG9hdCkgdGhyb3cgKCk7
CmV4dGVybiBmbG9hdCBlcmZjZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19lcmZj
ZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgbGdhbW1hZiAoZmxvYXQpIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9h
dCB0Z2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3RnYW1tYWYgKGZsb2F0
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fZ2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCBs
Z2FtbWFmX3IgKGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19sZ2FtbWFmX3IgKGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOwoKCgoKCgpleHRl
cm4gZmxvYXQgcmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3JpbnRm
IChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBuZXh0YWZ0ZXJmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl
cm4gZmxvYXQgX19uZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0ZXJuIGZsb2F0IG5leHR0b3dhcmRmIChmbG9h
dCBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gZmxvYXQgX19uZXh0dG93YXJkZiAoZmxvYXQgX194LCBsb25nIGRvdWJsZSBf
X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGZsb2F0
IHJlbWFpbmRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9fcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4g
ZmxvYXQgc2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0IF9fbikgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX3NjYWxiZiAoZmxvYXQgX194LCBmbG9hdCBfX24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGZs
b2F0IHNjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X3NjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgaWxv
Z2JmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gaW50IF9faWxvZ2JmIChmbG9hdCBfX3gp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcgaW50
IF9fbikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcg
aW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBuZWFyYnlpbnRmIChmbG9hdCBfX3gp
IHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19uZWFyYnlpbnRmIChmbG9hdCBfX3gpIHRocm93ICgp
OwoKCgpleHRlcm4gZmxvYXQgcm91bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19yb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCB0cnVuY2Yg
KGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4g
ZmxvYXQgX190cnVuY2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgoKZXh0ZXJuIGZsb2F0IHJlbXF1b2YgKGZsb2F0IF9feCwgZmxvYXQgX195LCBp
bnQgKl9fcXVvKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcmVtcXVvZiAoZmxvYXQgX194LCBm
bG9hdCBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJp
bnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scmludGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscmludGYgKGZsb2F0IF9feCkg
dGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50ZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGludCBfX2xyb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25n
IGxvbmcgaW50IGxscm91bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25n
IGludCBfX2xscm91bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgZmRp
bWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZmRpbWYg
KGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgZm1heGYgKGZs
b2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1heGYgKGZsb2F0
IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgZm1pbmYgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1pbmYgKGZsb2F0IF9feCwg
ZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnlmIChmbG9hdCBf
X3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRl
cm4gaW50IF9fc2lnbmJpdGYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQgZm1hZiAoZmxvYXQgX194LCBmbG9h
dCBfX3ksIGZsb2F0IF9feikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2ZtYWYgKGZsb2F0IF9f
eCwgZmxvYXQgX195LCBmbG9hdCBfX3opIHRocm93ICgpOwojIDgzICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAyIDMKIyA5OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgi
IDMKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19hY29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4
dGVybiBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4g
bG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2F0YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zbCAobG9uZyBkb3VibGUgX194
KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93
ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK
CmV4dGVybiB2b2lkIHNpbmNvc2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lu
eCwgbG9uZyBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCk7IGV4dGVybiB2b2lkIF9fc2luY29zbCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19jb3N4
KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2hsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NobCAobG9uZyBkb3VibGUgX194
KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OwoKCgpleHRlcm4gbG9uZyBkb3VibGUgYWNvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
CgpleHRlcm4gbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19hc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7Cgpl
eHRlcm4gbG9uZyBkb3VibGUgYXRhbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19hdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGV4cGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2V4cGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVy
biBsb25nIGRvdWJsZSBleHAxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2V4cDEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBs
b25nIGRvdWJsZSBwb3cxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3BvdzEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGZyZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpf
X2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsIChsb25nIGRv
dWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
bGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRl
cm4gbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbG9nbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9u
ZyBkb3VibGUgbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19sb2cxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIG1vZGZsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19tb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSAqX19pcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cG0xbCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbTFsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFwbCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2JsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDJsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19leHAybCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMmwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzJsIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcG93bCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19wb3dsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19zcXJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91
YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2JydGwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2VpbGwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbG9vcmwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Zsb29ybCAobG9uZyBkb3VibGUgX194KSB0aHJv
dyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1vZGwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgX19pc2lu
ZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlbCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZmwgKGxv
bmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgpleHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIHNpZ25pZmljYW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvcHlzaWdubCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIG5hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25hbmwgKF9fY29uc3Qg
Y2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpl
eHRlcm4gaW50IF9faXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5sIChsb25nIGRvdWJsZSBf
X3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGowbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19qMGwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGoxbCAobG9u
ZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19qMWwgKGxvbmcgZG91Ymxl
KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGpubCAoaW50LCBsb25nIGRvdWJsZSkgdGhy
b3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2pubCAoaW50LCBsb25nIGRvdWJsZSkgdGhyb3cg
KCk7CmV4dGVybiBsb25nIGRvdWJsZSB5MGwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9feTBsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRv
dWJsZSB5MWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTFs
IChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSB5bmwgKGludCwgbG9u
ZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX195bmwgKGludCwgbG9uZyBk
b3VibGUpIHRocm93ICgpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBlcmZsIChsb25nIGRvdWJs
ZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmwgKGxvbmcgZG91YmxlKSB0aHJv
dyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmNsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2VyZmNsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBs
b25nIGRvdWJsZSBsZ2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2xnYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91
YmxlIHRnYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
dGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGdh
bW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19nYW1tYWwg
KGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWxf
ciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2xnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7
CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSByaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX25leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHR0
b3dhcmRsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtYWluZGVybCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19yZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhy
b3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBk
b3VibGUgc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVy
biBpbnQgX19pbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9u
ZyBkb3VibGUgc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBp
bnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5lYXJieWludGwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25lYXJieWludGwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSByb3VuZGwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JvdW5kbCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHRydW5jbCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX3RydW5jbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtcXVvbCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19yZW1xdW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9f
eSwgaW50ICpfX3F1bykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludGwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyaW50bCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50bCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kbCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmZGltbCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19mZGltbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBmbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWF4bCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWlubCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19mbWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoK
CgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0
bCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWFsIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fZm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91Ymxl
IF9feikgdGhyb3cgKCk7CiMgMTAwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyAxMTMgIi91
c3IvaW5jbHVkZS9tYXRoLmgiIDMKZXh0ZXJuIGludCBzaWduZ2FtOwojIDE1NCAiL3Vzci9pbmNs
dWRlL21hdGguaCIgMwplbnVtCiAgewogICAgRlBfTkFOLAoKICAgIEZQX0lORklOSVRFLAoKICAg
IEZQX1pFUk8sCgogICAgRlBfU1VCTk9STUFMLAoKICAgIEZQX05PUk1BTAoKICB9OwojIDI0MCAi
L3Vzci9pbmNsdWRlL21hdGguaCIgMwp0eXBlZGVmIGVudW0KewogIF9JRUVFXyA9IC0xLAogIF9T
VklEXywKICBfWE9QRU5fLAogIF9QT1NJWF8sCiAgX0lTT0NfCn0gX0xJQl9WRVJTSU9OX1RZUEU7
CgoKCgpleHRlcm4gX0xJQl9WRVJTSU9OX1RZUEUgX0xJQl9WRVJTSU9OOwojIDI2MyAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMwpzdHJ1Y3QgX19leGNlcHRpb24KCgoKICB7CiAgICBpbnQgdHlwZTsK
ICAgIGNoYXIgKm5hbWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAgZG91
YmxlIHJldHZhbDsKICB9OwoKCmV4dGVybiBpbnQgbWF0aGVyciAoc3RydWN0IF9fZXhjZXB0aW9u
ICpfX2V4YykgdGhyb3cgKCk7CiMgMzUwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAxIDMKIyAxMjcgIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBpbnQKX19zaWduYml0ZiAoZmxvYXQgX194KSB0aHJv
dyAoKQp7CiAgX19leHRlbnNpb25fXyB1bmlvbiB7IGZsb2F0IF9fZjsgaW50IF9faTsgfSBfX3Ug
PSB7IF9fZjogX194IH07CiAgcmV0dXJuIF9fdS5fX2kgPCAwOwp9Cl9faW5saW5lIGludApfX3Np
Z25iaXQgKGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICBfX2V4dGVuc2lvbl9fIHVuaW9uIHsgZG91
YmxlIF9fZDsgaW50IF9faVsyXTsgfSBfX3UgPSB7IF9fZDogX194IH07CiAgcmV0dXJuIF9fdS5f
X2lbMV0gPCAwOwp9Cl9faW5saW5lIGludApfX3NpZ25iaXRsIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpCnsKICBfX2V4dGVuc2lvbl9fIHVuaW9uIHsgbG9uZyBkb3VibGUgX19sOyBpbnQgX19p
WzNdOyB9IF9fdSA9IHsgX19sOiBfX3ggfTsKICByZXR1cm4gKF9fdS5fX2lbMl0gJiAweDgwMDAp
ICE9IDA7Cn0KIyAyOTEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGlu
ZSBkb3VibGUgX19zZ24gKGRvdWJsZSkgdGhyb3cgKCk7IF9faW5saW5lIGRvdWJsZSBfX3NnbiAo
ZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAw
LjAgPyAxLjAgOiAtMS4wKTsgfSBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0KSB0aHJvdyAo
KTsgX19pbmxpbmUgZmxvYXQgX19zZ25mIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmV0dXJuIF9f
eCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEuMCk7IH0gX19pbmxpbmUgbG9u
ZyBkb3VibGUgX19zZ25sIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IF9faW5saW5lIGxvbmcgZG91
YmxlIF9fc2dubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJldHVybiBfX3ggPT0gMC4w
ID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9CgoKCgpfX2lubGluZSBkb3VibGUg
X19wb3cyIChkb3VibGUpIHRocm93ICgpOyBfX2lubGluZSBkb3VibGUgX19wb3cyIChkb3VibGUg
X194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCBfX3AgPSAo
bG9uZyBsb25nIGludCkgX194OyBpZiAoX194ID09IChsb25nIGRvdWJsZSkgX19wKSB7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoMS4wKSwgInUi
IChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19hc20gX192b2xhdGlsZV9fICgiZmxkCSUlc3Qo
MClcblx0IiAiZnJuZGludAkJCSMgaW50KHgpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEp
CQkjIGZyYWN0KHgpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4KSkgLSAxXG5cdCIgOiAiPXQi
IChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9IDEu
MDsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChf
X3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZs
b2F0IF9fcG93MmYgKGZsb2F0KSB0aHJvdyAoKTsgX19pbmxpbmUgZmxvYXQgX19wb3cyZiAoZmxv
YXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCBfX3Ag
PSAobG9uZyBsb25nIGludCkgX194OyBpZiAoX194ID09IChsb25nIGRvdWJsZSkgX19wKSB7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoMS4wKSwg
InUiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19hc20gX192b2xhdGlsZV9fICgiZmxkCSUl
c3QoMClcblx0IiAiZnJuZGludAkJCSMgaW50KHgpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0
KDEpCQkjIGZyYWN0KHgpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4KSkgLSAxXG5cdCIgOiAi
PXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9
IDEuMDsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAi
IChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5l
IGxvbmcgZG91YmxlIF9fcG93MmwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgX19pbmxpbmUgbG9u
ZyBkb3VibGUgX19wb3cybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fZXh0
ZW5zaW9uX18gbG9uZyBsb25nIGludCBfX3AgPSAobG9uZyBsb25nIGludCkgX194OyBpZiAoX194
ID09IChsb25nIGRvdWJsZSkgX19wKSB7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAi
PXQiIChfX3ZhbHVlKSA6ICIwIiAoMS4wKSwgInUiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0g
X19hc20gX192b2xhdGlsZV9fICgiZmxkCSUlc3QoMClcblx0IiAiZnJuZGludAkJCSMgaW50KHgp
XG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHgpXG5cdCIgImYyeG0xCQkJ
IyAyXihmcmFjdCh4KSkgLSAxXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVu
dCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9IDEuMDsgX19hc20gX192b2xhdGlsZV9fICgiZnNj
YWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7
IHJldHVybiBfX3ZhbHVlOyB9CiMgMzQzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDMKX19pbmxpbmUgdm9pZApfX3NpbmNvcyAoZG91YmxlIF9feCwgZG91YmxlICpfX3NpbngsIGRv
dWJsZSAqX19jb3N4KSB0aHJvdyAoKQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19jb3NyOyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3NpbnI7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW5jb3Nc
blx0IiAiZm5zdHN3CSUlYXhcblx0IiAidGVzdGwJJDB4NDAwLCAlJWVheFxuXHQiICJqegkxZlxu
XHQiICJmbGRwaVxuXHQiICJmYWRkCSUlc3QoMClcblx0IiAiZnhjaAklJXN0KDEpXG5cdCIgIjI6
IGZwcmVtMVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIg
ImpuegkyYlxuXHQiICJmc3RwCSUlc3QoMSlcblx0IiAiZnNpbmNvc1xuXHQiICIxOiIgOiAiPXQi
IChfX2Nvc3IpLCAiPXUiIChfX3NpbnIpIDogIjAiIChfX3gpKTsgKl9fc2lueCA9IF9fc2lucjsg
Kl9fY29zeCA9IF9fY29zcjsKfQoKX19pbmxpbmUgdm9pZApfX3NpbmNvc2YgKGZsb2F0IF9feCwg
ZmxvYXQgKl9fc2lueCwgZmxvYXQgKl9fY29zeCkgdGhyb3cgKCkKewogIHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fY29zcjsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19zaW5yOyBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmc2luY29zXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInRlc3RsCSQweDQwMCwgJSVl
YXhcblx0IiAianoJMWZcblx0IiAiZmxkcGlcblx0IiAiZmFkZAklJXN0KDApXG5cdCIgImZ4Y2gJ
JSVzdCgxKVxuXHQiICIyOiBmcHJlbTFcblx0IiAiZm5zdHN3CSUlYXhcblx0IiAidGVzdGwJJDB4
NDAwLCAlJWVheFxuXHQiICJqbnoJMmJcblx0IiAiZnN0cAklJXN0KDEpXG5cdCIgImZzaW5jb3Nc
blx0IiAiMToiIDogIj10IiAoX19jb3NyKSwgIj11IiAoX19zaW5yKSA6ICIwIiAoX194KSk7ICpf
X3NpbnggPSBfX3NpbnI7ICpfX2Nvc3ggPSBfX2Nvc3I7Cn0KCl9faW5saW5lIHZvaWQKX19zaW5j
b3NsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX3NpbngsIGxvbmcgZG91YmxlICpf
X2Nvc3gpIHRocm93ICgpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX2Nvc3I7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fc2lucjsgX19hc20gX192b2xhdGlsZV9fICgiZnNpbmNvc1xuXHQiICJm
bnN0c3cJJSVheFxuXHQiICJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIgImp6CTFmXG5cdCIgImZs
ZHBpXG5cdCIgImZhZGQJJSVzdCgwKVxuXHQiICJmeGNoCSUlc3QoMSlcblx0IiAiMjogZnByZW0x
XG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInRlc3RsCSQweDQwMCwgJSVlYXhcblx0IiAiam56CTJi
XG5cdCIgImZzdHAJJSVzdCgxKVxuXHQiICJmc2luY29zXG5cdCIgIjE6IiA6ICI9dCIgKF9fY29z
ciksICI9dSIgKF9fc2lucikgOiAiMCIgKF9feCkpOyAqX19zaW54ID0gX19zaW5yOyAqX19jb3N4
ID0gX19jb3NyOwp9CiMgMzg1ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19p
bmxpbmUgbG9uZyBkb3VibGUgX19leHBtMWwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9u
ZW50OyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3RlbXA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZs
ZGwyZQkJCSMgZV54IC0gMSA9IDJeKHggKiBsb2cyKGUpKSAtIDFcblx0IiAiZm11bAklJXN0KDEp
CQkjIHggKiBsb2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4
ICogbG9nMihlKSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxv
ZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiICJm
c2NhbGUJCQkjIDJeKHggKiBsb2cyKGUpKSAtIDJeKGludCh4ICogbG9nMihlKSkpXG5cdCIgOiAi
PXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmc2NhbGUJCQkjIDJeaW50KHggKiBsb2cyKGUpKVxuXHQiIDogIj10IiAoX190
ZW1wKSA6ICIwIiAoMS4wKSwgInUiIChfX2V4cG9uZW50KSk7IF9fdGVtcCAtPSAxLjA7IHJldHVy
biBfX3RlbXAgKyBfX3ZhbHVlID8gX190ZW1wICsgX192YWx1ZSA6IF9feDsgfQojIDQwNSAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBleHAgKGRvdWJs
ZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19leHBvbmVudDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBl
XnggPSAyXih4ICogbG9nMihlKSlcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5c
dCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0IiAi
ZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYyeG0x
CQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9
dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1IiAo
X19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBleHBmIChmbG9h
dCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19leHBvbmVudDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBl
XnggPSAyXih4ICogbG9nMihlKSlcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5c
dCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0IiAi
ZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYyeG0x
CQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9
dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1IiAo
X19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBleHBs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19hc20gX192b2xhdGlsZV9fICgi
ZmxkbDJlCQkJIyBlXnggPSAyXih4ICogbG9nMihlKSlcblx0IiAiZm11bAklJXN0KDEpCQkjIHgg
KiBsb2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9n
MihlKSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkp
XG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiIDogIj10IiAo
X192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192
YWx1ZSksICJ1IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfQpfX2lubGluZSBsb25n
IGRvdWJsZSBfX2V4cGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCA9IDJeKHggKiBsb2cyKGUpKVxuXHQiICJmbXVs
CSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJ
CSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFj
dCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAx
XG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBf
X3ZhbHVlICs9IDEuMDsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFs
dWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9
CgoKX19pbmxpbmUgZG91YmxlIHRhbiAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlMiBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcHRhbiIgOiAiPXQi
IChfX3ZhbHVlMiksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7
IH0gX19pbmxpbmUgZmxvYXQgdGFuZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwdGFuIiA6ICI9dCIg
KF9fdmFsdWUyKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsg
fSBfX2lubGluZSBsb25nIGRvdWJsZSB0YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsgX19hc20gX192b2xhdGlsZV9fICgiZnB0
YW4iIDogIj10IiAoX192YWx1ZTIpLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVy
biBfX3ZhbHVlOyB9CiMgNDI1ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19p
bmxpbmUgZG91YmxlIGF0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIg
OiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVy
biBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195LCBmbG9hdCBfX3gp
IHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGls
ZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAi
c3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbjJsIChs
b25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192
YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsg
fQpfX2lubGluZSBsb25nIGRvdWJsZSBfX2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20g
X192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIg
KF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KCgpfX2lubGluZSBkb3VibGUgZm1v
ZCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVh
eFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAi
dSIgKF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgZmxvYXQg
Zm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3Rzdwkl
JWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCks
ICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBsb25n
IGRvdWJsZSBmbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiMToJ
ZnByZW1cblx0IiAiZm5zdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChf
X3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImF4IiwgImNjIik7IHJldHVybiBfX3Zh
bHVlOyB9CiMgNDQwICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUg
ZG91YmxlIHNxcnQgKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVz
dWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIg
KF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgZmxvYXQgc3FydGYgKGZsb2F0IF9f
eCkgdGhyb3cgKCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9f
ICgiZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0
OyB9IF9faW5saW5lIGxvbmcgZG91YmxlIHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZz
cXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQpf
X2lubGluZSBsb25nIGRvdWJsZSBfX3NxcnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0
IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQoKCl9f
aW5saW5lIGRvdWJsZSBmYWJzIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJldHVybiBfX2J1aWx0
aW5fZmFicyAoX194KTsgfQpfX2lubGluZSBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSB0aHJvdyAo
KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2YgKF9feCk7IH0KX19pbmxpbmUgbG9uZyBkb3VibGUg
ZmFic2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNs
IChfX3gpOyB9Cl9faW5saW5lIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNsIChfX3gpOyB9CgoKCgoKCgpfX2lubGlu
ZSBkb3VibGUgc2luIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jl
c3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNpbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIg
KF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgZmxvYXQgc2luZiAoZmxvYXQgX194
KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmc2luIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsg
fSBfX2lubGluZSBsb25nIGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW4i
IDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgpfX2lu
bGluZSBkb3VibGUgY29zIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBf
X3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmNvcyIgOiAiPXQiIChfX3Jlc3VsdCkgOiAi
MCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgZmxvYXQgY29zZiAoZmxvYXQg
X194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxl
X18gKCJmY29zIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3Vs
dDsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZj
b3MiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9Cgpf
X2lubGluZSBkb3VibGUgbG9nIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJs
ZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yOyBmeGNoOyBmeWwyeCIgOiAi
PXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9
IF9faW5saW5lIGZsb2F0IGxvZ2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBmbG9h
dCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yOyBmeGNoOyBmeWwyeCIgOiAi
PXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9
IF9faW5saW5lIGxvbmcgZG91YmxlIGxvZ2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4y
OyBmeGNoOyBmeWwyeCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsg
cmV0dXJuIF9fcmVzdWx0OyB9Cl9faW5saW5lIGRvdWJsZSBsb2cxMCAoZG91YmxlIF9feCkgdGhy
b3cgKCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZs
ZGxnMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEp
Iik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBmbG9hdCBsb2cxMGYgKGZsb2F0IF9feCkg
dGhyb3cgKCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgi
ZmxkbGcyOyBmeGNoOyBmeWwyeCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3Qo
MSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGxvZzEwbCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsZzI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0
KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0KCl9faW5saW5lIGRv
dWJsZSBhc2luIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJldHVybiBfX2F0YW4ybCAoX194LCBf
X3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpKTsgfSBfX2lubGluZSBmbG9hdCBhc2luZiAoZmxvYXQg
X194KSB0aHJvdyAoKSB7IHJldHVybiBfX2F0YW4ybCAoX194LCBfX3NxcnRsICgxLjAgLSBfX3gg
KiBfX3gpKTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194KSB0
aHJvdyAoKSB7IHJldHVybiBfX2F0YW4ybCAoX194LCBfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gp
KTsgfQpfX2lubGluZSBkb3VibGUgYWNvcyAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4g
X19hdGFuMmwgKF9fc3FydGwgKDEuMCAtIF9feCAqIF9feCksIF9feCk7IH0gX19pbmxpbmUgZmxv
YXQgYWNvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19hdGFuMmwgKF9fc3FydGwg
KDEuMCAtIF9feCAqIF9feCksIF9feCk7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgYWNvc2wgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19hdGFuMmwgKF9fc3FydGwgKDEuMCAt
IF9feCAqIF9feCksIF9feCk7IH0KCgpfX2lubGluZSBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkg
dGhyb3cgKCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsg
cmV0dXJuIF9fcmVzdWx0OyB9IF9faW5saW5lIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHRocm93
ICgpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7
IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJu
IF9fcmVzdWx0OyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGF0YW5sIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3Qo
MSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgpfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbjFsIChs
b25nIGRvdWJsZSkgdGhyb3cgKCk7IF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCkgeyBfX2V4dGVuc2lvbl9fIHVuaW9uIHsgbG9uZyBkb3VibGUg
X194bGQ7IHVuc2lnbmVkIGludCBfX3hpWzNdOyB9IF9fbiA9IHsgX194bGQ6IF9feCB9OyBfX24u
X194aVsyXSA9IChfX24uX194aVsyXSAmIDB4ODAwMCkgfCAweDNmZmY7IF9fbi5fX3hpWzFdID0g
MHg4MDAwMDAwMDsgX19uLl9feGlbMF0gPSAwOyByZXR1cm4gX19uLl9feGxkOyB9CiMgNDc5ICIv
dXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgZG91YmxlIHNpbmggKGRv
dWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBt
MWwgKF9fZmFic2wgKF9feCkpOyByZXR1cm4gMC41ICogKF9fZXhtMSAvIChfX2V4bTEgKyAxLjAp
ICsgX19leG0xKSAqIF9fc2duMWwgKF9feCk7IH0gX19pbmxpbmUgZmxvYXQgc2luaGYgKGZsb2F0
IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAo
X19mYWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkgKyBf
X2V4bTEpICogX19zZ24xbCAoX194KTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBzaW5obCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9f
ZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0xICsg
MS4wKSArIF9fZXhtMSkgKiBfX3NnbjFsIChfX3gpOyB9CgoKCl9faW5saW5lIGRvdWJsZSBjb3No
IChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXggPSBfX2V4
cGwgKF9feCk7IHJldHVybiAwLjUgKiAoX19leCArIDEuMCAvIF9fZXgpOyB9IF9faW5saW5lIGZs
b2F0IGNvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19l
eCA9IF9fZXhwbCAoX194KTsgcmV0dXJuIDAuNSAqIChfX2V4ICsgMS4wIC8gX19leCk7IH0gX19p
bmxpbmUgbG9uZyBkb3VibGUgY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdp
c3RlciBsb25nIGRvdWJsZSBfX2V4ID0gX19leHBsIChfX3gpOyByZXR1cm4gMC41ICogKF9fZXgg
KyAxLjAgLyBfX2V4KTsgfQoKCgpfX2lubGluZSBkb3VibGUgdGFuaCAoZG91YmxlIF9feCkgdGhy
b3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoLV9fZmFic2wg
KF9feCArIF9feCkpOyByZXR1cm4gX19leG0xIC8gKF9fZXhtMSArIDIuMCkgKiBfX3NnbjFsICgt
X194KTsgfSBfX2lubGluZSBmbG9hdCB0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsICgtX19mYWJzbCAoX194ICsgX194KSk7
IHJldHVybiBfX2V4bTEgLyAoX19leG0xICsgMi4wKSAqIF9fc2duMWwgKC1fX3gpOyB9IF9faW5s
aW5lIGxvbmcgZG91YmxlIHRhbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKC1fX2ZhYnNsIChfX3ggKyBfX3gpKTsg
cmV0dXJuIF9fZXhtMSAvIChfX2V4bTEgKyAyLjApICogX19zZ24xbCAoLV9feCk7IH0KCgoKCl9f
aW5saW5lIGRvdWJsZSBmbG9vciAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3Zv
bGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5z
dGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDQw
MDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19h
c20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVl
OyB9IF9faW5saW5lIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7
IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwg
MHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsg
X19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkp
OyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9f
dmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25l
ZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsg
X19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAo
X19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6
ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3Zh
bHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAo
X19jdykpOyByZXR1cm4gX192YWx1ZTsgfQojIDUwMyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlu
bGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBjZWlsIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50
IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYz
ZmYpIHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0
bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIg
KF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0
dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgdGhyb3cgKCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0
IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBf
X3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYg
MHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChf
X2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDog
IjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7
IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGNlaWxsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGls
ZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQg
X19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9f
Y3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRj
dyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAi
PXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIg
OiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfQojIDUyMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZQpsZGV4cCAoZG91YmxlIF9feCwgaW50
IF9feSkgdGhyb3cgKCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgo
bG9uZyBkb3VibGUpIF9feSkpOyByZXR1cm4gX192YWx1ZTsKfQoKCgoKCgpfX2lubGluZSBkb3Vi
bGUgZXhwbTEgKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX190ZW1wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4
ICogbG9nMihlKSkgLSAxXG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJm
c3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hc
blx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMg
Ml4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihl
KSkgLSAyXihpbnQoeCAqIGxvZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9f
ZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAy
XmludCh4ICogbG9nMihlKSlcblx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAo
X19leHBvbmVudCkpOyBfX3RlbXAgLT0gMS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1ZSA/IF9f
dGVtcCArIF9fdmFsdWUgOiBfX3g7IH0gX19pbmxpbmUgZmxvYXQgZXhwbTFmIChmbG9hdCBfX3gp
IHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190ZW1wOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9nMihlKSkgLSAxXG5cdCIg
ImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5k
aW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkj
IGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkp
KSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAyXihpbnQoeCAqIGxvZzIo
ZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gp
KTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAyXmludCh4ICogbG9nMihlKSlcblx0
IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBvbmVudCkpOyBfX3RlbXAg
LT0gMS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1ZSA/IF9fdGVtcCArIF9fdmFsdWUgOiBfX3g7
IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19l
eHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190ZW1wOyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9nMihlKSkgLSAxXG5cdCIgImZtdWwJJSVz
dCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJIyBp
bnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHgg
KiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0
IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAyXihpbnQoeCAqIGxvZzIoZSkpKVxuXHQi
IDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX19hc20g
X192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAyXmludCh4ICogbG9nMihlKSlcblx0IiA6ICI9dCIg
KF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBvbmVudCkpOyBfX3RlbXAgLT0gMS4wOyBy
ZXR1cm4gX190ZW1wICsgX192YWx1ZSA/IF9fdGVtcCArIF9fdmFsdWUgOiBfX3g7IH0KCgoKCgoK
X19pbmxpbmUgZG91YmxlIGxvZzFwIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0
MjEzNTYyMzczMDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIg
KF9fdmFsdWUpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5s
aW5lIGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEzNTYy
MzczMDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9fdmFs
dWUpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxv
bmcgZG91YmxlIGxvZzFwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0
MjEzNTYyMzczMDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIg
KF9fdmFsdWUpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CiMgNTUz
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgZG91YmxlIGFzaW5o
IChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFi
c2wgKF9feCk7IHJldHVybiAobG9nMXBsIChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195
ICsgMS4wKSArIDEuMCkgKyBfX3kpICogX19zZ24xbCAoX194KSk7IH0gX19pbmxpbmUgZmxvYXQg
YXNpbmhmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0g
X19mYWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kg
KiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBfX2lubGluZSBs
b25nIGRvdWJsZSBhc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195
IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9f
eCkpOyB9CgoKCgpfX2lubGluZSBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpIHsg
cmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBfX3NxcnRsIChfX3ggKyAx
LjApKTsgfSBfX2lubGluZSBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZXR1
cm4gbG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkp
OyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KSB7IHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194
ICsgMS4wKSk7IH0KCgpfX2lubGluZSBkb3VibGUgYXRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUg
KiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAgKyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0g
X19pbmxpbmUgZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195
ICsgX195KSAvICgxLjAgKyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0gX19pbmxpbmUgbG9uZyBk
b3VibGUgYXRhbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsg
X195KSAvICgxLjAgKyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0KCgoKCl9faW5saW5lIGRvdWJs
ZSBoeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgeyByZXR1cm4gX19zcXJ0
bCAoX194ICogX194ICsgX195ICogX195KTsgfSBfX2lubGluZSBmbG9hdCBoeXBvdGYgKGZsb2F0
IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBf
X3kgKiBfX3kpOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCAr
IF9feSAqIF9feSk7IH0KCl9faW5saW5lIGRvdWJsZSBsb2diIChkb3VibGUgX194KSB0aHJvdyAo
KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
anVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5rKSwg
Ij11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBm
bG9hdCBsb2diZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgi
Znh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkp
OyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBsb2dibCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDog
Ij10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1
ZTsgfQojIDU4MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRv
dWJsZSBsb2cyIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3Vs
dDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1
bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBm
bG9hdCBsb2cyZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmeGNoOyBmeWwyeCIgOiAiPXQiIChfX3Jlc3Vs
dCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9faW5saW5lIGxv
bmcgZG91YmxlIGxvZzJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZ4Y2g7IGZ5bDJ4
IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1
bHQ7IH0KCgpfX2lubGluZSBmbG9hdApsZGV4cGYgKGZsb2F0IF9feCwgaW50IF9feSkgdGhyb3cg
KCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgobG9uZyBkb3VibGUp
IF9feSkpOyByZXR1cm4gX192YWx1ZTsKfQoKX19pbmxpbmUgbG9uZyBkb3VibGUKbGRleHBsIChs
b25nIGRvdWJsZSBfX3gsIGludCBfX3kpIHRocm93ICgpCnsKICByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkg
OiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0K
CgpfX2lubGluZSBkb3VibGUgZm1hIChkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196
KSB0aHJvdyAoKSB7IHJldHVybiAoX194ICogX195KSArIF9fejsgfSBfX2lubGluZSBmbG9hdCBm
bWFmIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196KSB0aHJvdyAoKSB7IHJldHVybiAo
X194ICogX195KSArIF9fejsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBmbWFsIChsb25nIGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX196KSB0aHJvdyAoKSB7IHJldHVy
biAoX194ICogX195KSArIF9fejsgfQoKX19pbmxpbmUgZG91YmxlIHJpbnQgKGRvdWJsZSBfX3gp
IHRocm93ICgpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmcm5kaW50IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3Vs
dDsgfSBfX2lubGluZSBmbG9hdCByaW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVy
IGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcm5kaW50IiA6ICI9dCIgKF9f
cmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBsb25nIGRv
dWJsZSByaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcm5kaW50IiA6ICI9dCIgKF9fcmVz
dWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQojIDYwNyAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGxvbmcgaW50CmxyaW50ZiAoZmxvYXQgX194
KSB0aHJvdyAoKQp7CiAgbG9uZyBpbnQgX19scmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18g
KCJmaXN0cGwgJTAiIDogIj1tIiAoX19scmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0
dXJuIF9fbHJpbnRyZXM7Cn0KX19pbmxpbmUgbG9uZyBpbnQKbHJpbnQgKGRvdWJsZSBfX3gpIHRo
cm93ICgpCnsKICBsb25nIGludCBfX2xyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZp
c3RwbCAlMCIgOiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1cm4g
X19scmludHJlczsKfQpfX2lubGluZSBsb25nIGludApscmludGwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCkKewogIGxvbmcgaW50IF9fbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgi
ZmlzdHBsICUwIiA6ICI9bSIgKF9fbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVy
biBfX2xyaW50cmVzOwp9CiMgNjMwICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMK
X19pbmxpbmUgbG9uZyBsb25nIGludApsbHJpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpCnsKICBs
b25nIGxvbmcgaW50IF9fbGxyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbGwg
JTAiIDogIj1tIiAoX19sbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xs
cmludHJlczsKfQpfX2lubGluZSBsb25nIGxvbmcgaW50CmxscmludCAoZG91YmxlIF9feCkgdGhy
b3cgKCkKewogIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9f
ICgiZmlzdHBsbCAlMCIgOiAiPW0iIChfX2xscmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsg
cmV0dXJuIF9fbGxyaW50cmVzOwp9Cl9faW5saW5lIGxvbmcgbG9uZyBpbnQKbGxyaW50bCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKQp7CiAgbG9uZyBsb25nIGludCBfX2xscmludHJlczsgX19h
c21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGxsICUwIiA6ICI9bSIgKF9fbGxyaW50cmVzKSA6ICJ0
IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19sbHJpbnRyZXM7Cn0KCgoKCgoKCl9faW5saW5lIGRv
dWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRv
dWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVf
XyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDog
Ij10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195
KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBkcmVtZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIHRocm93ICgpIHsgcmVnaXN0ZXIgZG91YmxlIF9fdmFsdWU7IHJlZ2lz
dGVyIGludCBfX2Nsb2JiZXJlZDsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW0xXG5cdCIg
ImZzdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSwgIj0m
YSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImNjIik7IHJldHVybiBf
X3ZhbHVlOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGRyZW1sIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSkgdGhyb3cgKCkgeyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsgcmVnaXN0
ZXIgaW50IF9fY2xvYmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFcblx0IiAi
ZnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpLCAiPSZh
IiAoX19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0dXJuIF9f
dmFsdWU7IH0KIyA2NjUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGlu
ZSBpbnQKX19maW5pdGUgKGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICByZXR1cm4gKF9fZXh0ZW5z
aW9uX18KICAgICAgICAgICgoKCgodW5pb24geyBkb3VibGUgX19kOyBpbnQgX19pWzJdOyB9KSB7
X19kOiBfX3h9KS5fX2lbMV0KICAgICAgICAgICAgIHwgMHg4MDBmZmZmZnUpICsgMSkgPj4gMzEp
KTsKfQoKCgpfX2lubGluZSBkb3VibGUgX19jb3NobTEgKGRvdWJsZSkgdGhyb3cgKCk7IF9faW5s
aW5lIGRvdWJsZSBfX2Nvc2htMSAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAo
X19leG0xIC8gKF9fZXhtMSArIDEuMCkpICogX19leG0xOyB9IF9faW5saW5lIGZsb2F0IF9fY29z
aG0xZiAoZmxvYXQpIHRocm93ICgpOyBfX2lubGluZSBmbG9hdCBfX2Nvc2htMWYgKGZsb2F0IF9f
eCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19m
YWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkpICogX19l
eG0xOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIF9fY29zaG0xbCAobG9uZyBkb3VibGUpIHRocm93
ICgpOyBfX2lubGluZSBsb25nIGRvdWJsZSBfX2Nvc2htMWwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAo
X194KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkpICogX19leG0xOyB9
CgoKCl9faW5saW5lIGRvdWJsZSBfX2Fjb3NoMXAgKGRvdWJsZSkgdGhyb3cgKCk7IF9faW5saW5l
IGRvdWJsZSBfX2Fjb3NoMXAgKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmV0dXJuIGxvZzFwbCAo
X194ICsgX19zcXJ0bCAoX194KSAqIF9fc3FydGwgKF9feCArIDIuMCkpOyB9IF9faW5saW5lIGZs
b2F0IF9fYWNvc2gxcGYgKGZsb2F0KSB0aHJvdyAoKTsgX19pbmxpbmUgZmxvYXQgX19hY29zaDFw
ZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJldHVybiBsb2cxcGwgKF9feCArIF9fc3FydGwgKF9f
eCkgKiBfX3NxcnRsIChfX3ggKyAyLjApKTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBfX2Fjb3No
MXBsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IF9faW5saW5lIGxvbmcgZG91YmxlIF9fYWNvc2gx
cGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gbG9nMXBsIChfX3ggKyBfX3Nx
cnRsIChfX3gpICogX19zcXJ0bCAoX194ICsgMi4wKSk7IH0KIyAzNTEgIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDIgMwojIDQxMSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwp9CiMgMjUgIi4uLy4uL2tt
aWRpL3Jlc2FtcGxlLmNwcCIgMgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjAu
NC9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDM3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgv
My4wLjQvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEg
MwojIDM4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4wLjQvaW5jbHVkZS9zdGRpby5o
IiAyIDMKCmV4dGVybiAiQyIgewoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8z
LjAuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxOTkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1s
aW51eC8zLjAuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVf
dDsKIyA0NCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMC40L2luY2x1ZGUvc3RkaW8u
aCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI2ICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwoj
IDI3ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1saW51eC8zLjAuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9pbmNs
dWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191
X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0eXBl
ZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVz
LmgiIDMKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9faW50MzJf
dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRl
ZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90ICpfX3Fh
ZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50IF9fdWlk
X3Q7CnR5cGVkZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7CnR5
cGVkZWYgX191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsKdHlwZWRl
ZiBsb25nIGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBlZGVmIGlu
dCBfX3BpZF90Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcgX19ybGlt
X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQgX19pZF90
OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsKCgp0
eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxv
bmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVk
ZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7Cgp0
eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRfdDsKCgp0
eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKCgoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19i
bGtzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgX19xdWFk
X3QgX19ibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVm
IF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250
X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9xdWFk
X3QgX19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYgbG9u
ZyBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFy
X3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Nv
Y2tsZW5fdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwoj
IDIzICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzCnN0
cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsKIyAy
NCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKdHlwZWRlZiBpbnQgX19h
dG9taWNfbG9ja190OwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19z
dGF0dXM7CiAgX19hdG9taWNfbG9ja190IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVmIHN0cnVj
dCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVkZWYgc3Ry
dWN0IF9fcHRocmVhZF9hdHRyX3MKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVk
cG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhl
cml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0
YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9
IHB0aHJlYWRfYXR0cl90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zh
c3Rsb2NrIF9fY19sb2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9IHB0aHJlYWRf
Y29uZF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVhZF9jb25k
YXR0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QKewogIGludCBfX21fcmVzZXJ2ZWQ7CiAgaW50IF9fbV9jb3VudDsKICBfcHRocmVh
ZF9kZXNjciBfX21fb3duZXI7CiAgaW50IF9fbV9raW5kOwogIHN0cnVjdCBfcHRocmVhZF9mYXN0
bG9jayBfX21fbG9jazsKfSBwdGhyZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBp
bnQgX19tdXRleGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKdHlwZWRlZiBpbnQgcHRo
cmVhZF9vbmNlX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2tfdAp7CiAgc3Ry
dWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fcndfbG9jazsKICBpbnQgX19yd19yZWFkZXJzOwogIF9w
dGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVyOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfcmVhZF93YWl0
aW5nOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGluZzsKICBpbnQgX19yd19raW5k
OwogIGludCBfX3J3X3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2tfdDsKCgoKdHlwZWRlZiBzdHJ1
Y3QKewogIGludCBfX2xvY2traW5kOwogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2th
dHRyX3Q7CgoKCgp0eXBlZGVmIHZvbGF0aWxlIGludCBwdGhyZWFkX3NwaW5sb2NrX3Q7CgoKdHlw
ZWRlZiBzdHJ1Y3QgewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2JhX2xvY2s7CiAgaW50
IF9fYmFfcmVxdWlyZWQ7CiAgaW50IF9fYmFfcHJlc2VudDsKICBfcHRocmVhZF9kZXNjciBfX2Jh
X3dhaXRpbmc7Cn0gcHRocmVhZF9iYXJyaWVyX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIGludCBf
X3BzaGFyZWQ7Cn0gcHRocmVhZF9iYXJyaWVyYXR0cl90OwoKCgoKCnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBpbnQgcHRocmVhZF90OwojIDE0NCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAz
CiMgNDYgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgi
IDIgMwojIDU0ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4wLjQvaW5jbHVkZS9zdGRp
by5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNjQgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1saW51eC8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lP
X0ZJTEUgX19GSUxFOwojIDc0ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4wLjQvaW5j
bHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMwojIDMyICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzCiMg
OSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMSAzCiMgMTAgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgojIDEgIi91
c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjAuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAz
MTIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjAuNC9pbmNsdWRlL3N0ZGRlZi5oIiAz
CnR5cGVkZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZp
Zy5oIiAyIDMKIyAyNCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3Iv
bGliL2djYy1saWIvaTM4Ni1saW51eC8zLjAuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAi
L3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5o
IiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDY3ICIvdXNyL2luY2x1ZGUv
d2NoYXIuaCIgMwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAg
ICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0
YXRlX3Q7CiMgMjUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVj
dAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsK
dHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRl
Owp9IF9HX2Zwb3M2NF90OwojIDQ0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvZ2NvbnYuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9nY29udi5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvZ2NvbnYu
aCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRl
L3djaGFyLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4wLjQvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAy
IDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pMzg2LWxpbnV4LzMuMC40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMyICIvdXNyL2luY2x1
ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51bQp7CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9O
T0NPTlYsCiAgX19HQ09OVl9OT0RCLAogIF9fR0NPTlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlf
SU5QVVQsCiAgX19HQ09OVl9GVUxMX09VVFBVVCwKICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAg
X19HQ09OVl9JTkNPTVBMRVRFX0lOUFVULAoKICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwK
ICBfX0dDT05WX0lOVEVSTkFMX0VSUk9SCn07CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9
IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9FUlJPUlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9f
Z2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2Fk
ZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9f
Z2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2Rh
dGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19n
Y29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9f
Z2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgq
X19nY29udl90cmFuc19mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKiwgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2
b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFy
ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNo
YXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3Qp
ICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2Vu
ZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZf
dHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFu
c19jb250ZXh0X2ZjdDsKICBfX2djb252X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0Owog
IHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoK
CnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9f
c2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVy
OwoKICBjaGFyICpfX2Zyb21fbmFtZTsKICBjaGFyICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0
IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19pbml0X2ZjdDsKICBfX2djb252X2VuZF9mY3Qg
X19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVkZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVk
X2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsKICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAg
aW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3Rl
cF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291
dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoKICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7
CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBfX21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19t
YnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX3RyYW5z
Owp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252X2luZm8KewogIHNpemVfdCBfX25zdGVwczsK
ICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBzOwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9f
Z2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAqX19nY29udl90OwojIDQ1ICIvdXNyL2luY2x1
ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZv
IF9fY2Q7CiAgc3RydWN0CiAgewogICAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3Ry
dWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZf
dDsKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJ
X18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChf
X1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKIyAzMyAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDIgMwojIDUzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1saW51eC8zLjAuNC9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMC40L2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBf
X2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyA1NCAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDIgMwojIDE2MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19qdW1wX3Q7
IHN0cnVjdCBfSU9fRklMRTsKIyAxNzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYg
dm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21h
cmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAx
OTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsK
ICBfX2NvZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAog
IF9fY29kZWN2dF9ub2NvbnYKfTsKIyAyNjEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVj
dCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNo
YXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0
ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBj
aGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZl
X2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAg
c3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsK
CiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgoK
CiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9vZmZz
ZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMgMzA1ICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAgdm9pZCAq
X19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1
ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCgoKCnN0cnVjdCBf
SU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5f
OwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3Ry
dWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDM0NCAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwg
Y2hhciAqX19idWYsIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBf
X2lvX3dyaXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoKCgp0eXBlZGVmIGlu
dCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBpbnQgX193
KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7CgoKCgp0eXBl
ZGVmIF9faW9fcmVhZF9mbiBjb29raWVfcmVhZF9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fd3Jp
dGVfZm4gY29va2llX3dyaXRlX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19zZWVrX2ZuIGNvb2tp
ZV9zZWVrX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19jbG9zZV9mbiBjb29raWVfY2xvc2VfZnVu
Y3Rpb25fdDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpyZWFkOwogIF9faW9f
d3JpdGVfZm4gKndyaXRlOwogIF9faW9fc2Vla19mbiAqc2VlazsKICBfX2lvX2Nsb3NlX2ZuICpj
bG9zZTsKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9JT19jb29raWVfaW9f
ZnVuY3Rpb25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190OwoKc3RydWN0IF9JT19jb29raWVfZmls
ZTsKCgpleHRlcm4gdm9pZCBfSU9fY29va2llX2luaXQgKHN0cnVjdCBfSU9fY29va2llX2ZpbGUg
Kl9fY2ZpbGUsIGludCBfX3JlYWRfd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqX19jb29raWUsIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19mbnMpOwoKCgoKZXh0
ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7
CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19v
dmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3d1bmRl
cmZsb3cgKF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9f
RklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwg
d2ludF90KSB0aHJvdyAoKTsKIyA0MjYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBp
bnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fcHV0
YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19mZW9m
IChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAoX0lPX0ZJ
TEUgKl9fZnApIHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklM
RSAqX19mcCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJ
TEUgKikgdGhyb3cgKCk7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikg
dGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cg
KCk7CiMgNDU2ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5m
IChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAg
ICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBj
aGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qp
IHRocm93ICgpOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9f
c3NpemVfdCkgdGhyb3cgKCk7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2
b2lkICosIHNpemVfdCkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChf
SU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIF9fb2ZmNjRf
dCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIHRocm93ICgpOwoKZXh0
ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRocm93ICgpOwojIDUx
NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKfQojIDc1ICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
bGludXgvMy4wLjQvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCnR5cGVkZWYgX19nbnVjX3ZhX2xp
c3QgX19ub3RfdmFfbGlzdF9fOwojIDg5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4w
LjQvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgX0dfZnBvc190IGZwb3NfdDsKCgoKCnR5cGVk
ZWYgX0dfZnBvczY0X3QgZnBvczY0X3Q7CiMgMTM4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGlu
dXgvMy4wLjQvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9f
bGltLmgiIDEgMwojIDEzOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMC40L2luY2x1
ZGUvc3RkaW8uaCIgMiAzCgoKCmV4dGVybiBGSUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91
dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsKCgoKCgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3Qg
Y2hhciAqX19maWxlbmFtZSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBj
aGFyICpfX29sZCwgX19jb25zdCBjaGFyICpfX25ldykgdGhyb3cgKCk7CgoKCgpleHRlcm4gRklM
RSAqdG1wZmlsZSAodm9pZCkgdGhyb3cgKCk7CiMgMTY3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
bGludXgvMy4wLjQvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICp0bXBmaWxlNjQgKHZv
aWQpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcykgdGhyb3cgKCk7
CgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgdGhyb3cgKCk7CiMgMTg3ICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4wLjQvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVy
biBjaGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4g
aW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKZXh0ZXJuIGludCBmZmx1c2gg
KEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQg
KEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmNsb3NlYWxsICh2b2lk
KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX21vZGVzKSB0aHJvdyAoKTsKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CiMgMjMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
bGludXgvMy4wLjQvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbjY0IChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSB0aHJvdyAoKTsKZXh0ZXJuIEZJTEUgKmZy
ZW9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAg
ICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIHRocm93
ICgpOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tpZSAodm9pZCAqX19yZXN0cmljdCBfX21h
Z2ljX2Nvb2tpZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICBfSU9fY29va2llX2lvX2Z1
bmN0aW9uc190IF9faW9fZnVuY3MpIHRocm93ICgpOwoKCmV4dGVybiBGSUxFICpmbWVtb3BlbiAo
dm9pZCAqX19zLCBzaXplX3QgX19sZW4sIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7
CgoKCgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fYnVm
bG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX3Np
emVsb2MpIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoKCmV4dGVybiBp
bnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBf
X2J1ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgdGhyb3cg
KCk7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0s
IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9f
c2l6ZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNwcmludGYgKGNoYXIg
Kl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHZmcHJpbnRmIChGSUxF
ICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCk7CgpleHRlcm4g
aW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3Zh
X2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCk7CgoKCmV4dGVybiBp
bnQgc25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0
KSkpOwoKZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg
X19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwoKCgoKCmV4dGVybiBpbnQgdmFz
cHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZiwKICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpl
eHRlcm4gaW50IF9fYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwpl
eHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKZXh0
ZXJuIGludCB2ZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zt
dCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVy
biBpbnQgZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwg
Li4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9f
LCAyLCAzKSkpOwoKCgoKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0sCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
IC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB2ZnNjYW5mIChG
SUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKZXh0ZXJuIGlu
dCB2c2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xp
c3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2Nh
bmZfXywgMSwgMCkpKTsKCgpleHRlcm4gaW50IHZzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCgoKZXh0ZXJuIGludCBmZ2V0YyAo
RklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFt
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpIHRocm93ICgpOwoKCgoKCgoK
ZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVy
biBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZn
ZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZw
dXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHV0YyAo
aW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAo
aW50IF9fYykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQg
X19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2Nr
ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBwdXRjaGFy
X3VubG9ja2VkIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGdldHcgKEZJTEUg
Kl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9f
c3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmlj
dCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgdGhyb3cgKCk7
CgoKCmV4dGVybiBjaGFyICpmZ2V0c191bmxvY2tlZCAoY2hhciAqX19yZXN0cmljdCBfX3MsIGlu
dCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKSB0aHJvdyAo
KTsKIyA0MzUgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjAuNC9pbmNsdWRlL3N0ZGlv
LmgiIDMKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xp
bmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3Qg
X19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxp
bSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgpl
eHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZnB1dHNf
dW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4g
aW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1bmdl
dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBm
cmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7
CgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBz
aXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19y
ZXN0cmljdCBfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2
b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAo
KTsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmlj
dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2Up
IHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKIyA0OTgg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0
ZXJuIGludCBmc2Vla28gKEZJTEUgKl9fc3RyZWFtLCBfX29mZl90IF9fb2ZmLCBpbnQgX193aGVu
Y2UpIHRocm93ICgpOwoKZXh0ZXJuIF9fb2ZmX3QgZnRlbGxvIChGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwg
ZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGludCBmc2V0
cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSB0aHJvdyAoKTsKIyA1
MzIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgiIDMK
ZXh0ZXJuIGludCBmc2Vla282NCAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50
IF9fd2hlbmNlKSB0aHJvdyAoKTsKZXh0ZXJuIF9fb2ZmNjRfdCBmdGVsbG82NCAoRklMRSAqX19z
dHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZnZXRwb3M2NCAoRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSwgZnBvczY0X3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgdGhyb3cgKCk7CmV4dGVy
biBpbnQgZnNldHBvczY0IChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zNjRfdCAqX19wb3Mp
IHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIHRocm93
ICgpOwoKZXh0ZXJuIGludCBmZW9mIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4g
aW50IGZlcnJvciAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjbGVh
cmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZlb2Zf
dW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBmZXJyb3JfdW5s
b2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAo
X19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0
ZXJuIF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCmV4dGVybiBpbnQgX3N5
c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IF9zeXNfZXJybGlzdFtdOwoKCgoK
CmV4dGVybiBpbnQgZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4g
aW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKCgpleHRl
cm4gRklMRSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9f
bW9kZXMpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoK
CgoKZXh0ZXJuIGNoYXIgKmN1c2VyaWQgKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpzdHJ1Y3Qg
b2JzdGFjazsKCgpleHRlcm4gaW50IG9ic3RhY2tfcHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19y
ZXN0cmljdCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBvYnN0YWNr
X3ZwcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJncykgdGhyb3cgKCk7
CgoKCgoKCgpleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpl
eHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwojIDYzOSAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMC40L2luY2x1ZGUvc3RkaW8uaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwojIDMzICIvdXNyL2luY2x1ZGUvYml0cy9z
dGRpby5oIiAzCmlubGluZSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCkKewogIHJldHVybiB2ZnByaW50ZiAo
c3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKaW5saW5lIGludApnZXRjaGFyICh2b2lkKSB0aHJv
dyAoKQp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoKCmlubGluZSBpbnQKZ2V0Y191
bmxvY2tlZCAoRklMRSAqX19mcCkgdGhyb3cgKCkKewogIHJldHVybiAoKF9fZnApLT5fSU9fcmVh
ZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChfX2ZwKSA6ICoodW5zaWdu
ZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCmlubGluZSBpbnQKZ2V0Y2hh
cl91bmxvY2tlZCAodm9pZCkgdGhyb3cgKCkKewogIHJldHVybiAoKHN0ZGluKS0+X0lPX3JlYWRf
cHRyID49IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGluKSA6ICoodW5zaWdu
ZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoKCmlubGluZSBpbnQKcHV0
Y2hhciAoaW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQp
Owp9CgoKCgppbmxpbmUgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVh
bSkgdGhyb3cgKCkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9f
c3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVk
IGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9w
dHIrKyA9IChfX2MpKSk7Cn0KCgoKCgppbmxpbmUgaW50CnB1dGNfdW5sb2NrZWQgKGludCBfX2Ms
IEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dy
aXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3Ry
ZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFt
KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmlubGluZSBpbnQKcHV0Y2hhcl91bmxv
Y2tlZCAoaW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiAoKChzdGRvdXQpLT5fSU9fd3JpdGVf
cHRyID49IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwgKHVu
c2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5fSU9fd3Jp
dGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKaW5saW5lIF9fc3NpemVfdApnZXRsaW5lIChjaGFy
ICoqX19saW5lcHRyLCBzaXplX3QgKl9fbiwgRklMRSAqX19zdHJlYW0pIHRocm93ICgpCnsKICBy
ZXR1cm4gX19nZXRkZWxpbSAoX19saW5lcHRyLCBfX24sICdcbicsIF9fc3RyZWFtKTsKfQoKCgoK
CmlubGluZSBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpCnsKICBy
ZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoKCmlubGluZSBpbnQK
ZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkKewogIHJldHVybiAoKChf
X3N0cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgNjQwICIvdXNyL2xpYi9nY2MtbGli
L2kzODYtbGludXgvMy4wLjQvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgp9CiMgMjYgIi4uLy4uL2tt
aWRpL3Jlc2FtcGxlLmNwcCIgMgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMgMjUg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAx
IDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKCiMgMSAiL3Vzci9saWIv
Z2NjLWxpYi9pMzg2LWxpbnV4LzMuMC40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvd2FpdGZsYWdzLmgiIDEgMwojIDQzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIg
MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMSAzCiMgNjMgIi91c3IvaW5j
bHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAz
CiMgMjIgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJl
cy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAzNyAiL3Vzci9pbmNs
dWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwojIDM4
ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0cy93YWl0
c3RhdHVzLmgiIDIgMwoKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAgIHN0cnVj
dAogICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAgICAgIHVu
c2lnbmVkIGludCBfX3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3JldGNv
ZGU6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90ZXJt
aW5hdGVkOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9w
dmFsOjg7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAgdW5zaWdu
ZWQgaW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBl
ZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoKCgp0
eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07CiAg
fSBsZGl2X3Q7CgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcg
bG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gbGxkaXZfdDsKIyAxMzMg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21iX2N1
cl9tYXggKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hh
ciAqX19ucHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBp
bnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBleHRl
cm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc3RydG9m
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUg
c3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jh
c2UpIHRocm93ICgpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsK
CgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKX19leHRlbnNpb25f
XwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKCgoK
CgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgpfX2V4dGVuc2lv
bl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCk7
CiMgMjExICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUveGxvY2Fs
ZS5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0cnVjdCBf
X2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoK
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5
cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsK
IyAyMTIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGludCBfX3N0
cnRvbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCmV4dGVy
biB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4
dGVybiBkb3VibGUgX19zdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19s
b2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBfX3N0cnRvZl9sIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoK
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19s
b2MpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cg
KCk7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRv
dWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19n
cm91cCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgpleHRlcm4g
dW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgoK
X19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93
ICgpOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3Ry
dG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4g
X19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpCnsKICByZXR1cm4gX19zdHJ0b2Rf
aW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGlu
dApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgpCnsKICByZXR1cm4gX19z
dHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KZXh0ZXJuIF9f
aW5saW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNl
KSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0
ciwgX19iYXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBmbG9hdApzdHJ0b2YgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJv
dyAoKQp7CiAgcmV0dXJuIF9fc3RydG9mX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsK
fQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUKc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpCnsKICBy
ZXR1cm4gX19zdHJ0b2xkX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQoKCgpfX2V4
dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAg
ICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9f
bnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxp
bmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFz
ZSkgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5k
cHRyLCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcg
bG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgpCnsKICBy
ZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9
Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3Ry
dG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgpCnsKICByZXR1cm4gX19z
dHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCmV4dGVy
biBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsK
ICByZXR1cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSBfX251bGwpOwp9CmV4dGVybiBfX2lu
bGluZSBpbnQKYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4g
KGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSBfX251bGwsIDEwKTsKfQpleHRlcm4gX19p
bmxpbmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICBy
ZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSBfX251bGwsIDEwKTsKfQoKCl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3QgY2hhciAq
X19ucHRyKSB0aHJvdyAoKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopIF9f
bnVsbCwgMTApOwp9CiMgMzg0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIg
Kmw2NGEgKGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9f
Y29uc3QgY2hhciAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy90eXBlcy5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoK
dHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVk
ZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFk
X3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3Qg
ZnNpZF90OwoKCgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBp
bm9fdDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYgX19kZXZf
dCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3Qg
bW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRf
dCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCnR5cGVkZWYgX19vZmY2
NF90IG9mZjY0X3Q7CgoKCgp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBlZGVmIF9faWRf
dCBpZF90OwoKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCgp0eXBlZGVmIF9fZGFk
ZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgoKCnR5cGVkZWYgX19r
ZXlfdCBrZXlfdDsKIyAxMzIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS90aW1lLmgiIDEgMwojIDU2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIg
MwoKCnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3R5cGVzLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVm
IF9fdGltZV90IHRpbWVfdDsKIyA3OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDgwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMK
Cgp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKIyA5MSAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDkyICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwojIDEzMyAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VzZWNvbmRzX3QgdXNlY29uZHNf
dDsKCgoKdHlwZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCgoKCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMC40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0NyAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2ln
bmVkIGludCB1aW50OwojIDE5MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYg
aW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiBp
bnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBp
bnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiBp
bnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCgp0eXBlZGVm
IHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykp
KTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50IHJlZ2lzdGVy
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMTIgIi91c3IvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgMjEz
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9z
ZWxlY3QuaCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0Lmgi
IDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5j
bHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0Lmgi
IDEgMwojIDMyICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0Lmgi
IDMKdHlwZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAg
IHVuc2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxv
bmcgaW50KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDIgMwoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAxIDMKIyAxMDYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKc3RydWN0IHRp
bWVzcGVjCiAgewogICAgX190aW1lX3QgdHZfc2VjOwogICAgbG9uZyBpbnQgdHZfbnNlYzsKICB9
OwojIDQ1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvdGltZS5oIiAxIDMKIyA2MyAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3Rp
bWUuaCIgMiAzCgoKCnN0cnVjdCB0aW1ldmFsCiAgewogICAgX190aW1lX3QgdHZfc2VjOwogICAg
X19zdXNlY29uZHNfdCB0dl91c2VjOwogIH07CiMgNDcgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDIgMwojIDU1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCnR5cGVkZWYgbG9uZyBp
bnQgX19mZF9tYXNrOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CgoKCiAgICBfX2ZkX21hc2sg
ZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKV07CgoKCgoKICB9IGZkX3Nl
dDsKCgoKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKIyA5NSAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMwpleHRlcm4gIkMiIHsKCgoKCgoKZXh0ZXJuIGludCBzZWxlY3QgKGludCBf
X25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICBm
ZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAq
X19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFs
ICpfX3Jlc3RyaWN0IF9fdGltZW91dCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwc2VsZWN0
IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAg
ICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAg
IGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0LAogICAgICAgICAgICAgICAg
ICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNrKSB0aHJvdyAoKTsKCgp9
CiMgMjE2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRl
L3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjE5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
MwoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CgoKCgoKCnR5cGVkZWYgX19ibGtj
bnRfdCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlw
ZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNTcgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwp0eXBlZGVmIF9fYmxrY250NjRfdCBibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNibGtj
bnQ2NF90IGZzYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7
CgoKfQojIDM5MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKZXh0ZXJuIGxvbmcg
aW50IHJhbmRvbSAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc3JhbmRvbSAodW5zaWdu
ZWQgaW50IF9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSAodW5z
aWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IF9fc3RhdGVsZW4pIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqc2V0c3RhdGUg
KGNoYXIgKl9fc3RhdGVidWYpIHRocm93ICgpOwoKCgoKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAg
ewogICAgaW50MzJfdCAqZnB0cjsKICAgIGludDMyX3QgKnJwdHI7CiAgICBpbnQzMl90ICpzdGF0
ZTsKICAgIGludCByYW5kX3R5cGU7CiAgICBpbnQgcmFuZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7
CiAgICBpbnQzMl90ICplbmRfcHRyOwogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3Qg
cmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgIGludDMy
X3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwoKZXh0ZXJuIGludCBzcmFuZG9tX3Ig
KHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIHRocm93ICgp
OwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19y
ZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0
ZWxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3Ry
aWN0IF9fYnVmKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc2V0c3RhdGVfciAoY2hhciAqX19yZXN0
cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0
YSAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lk
KSB0aHJvdyAoKTsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQgX19zZWVkKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGludCAqX19zZWVkKSB0aHJvdyAo
KTsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiBk
b3VibGUgZXJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIHRocm93ICgpOwoK
CmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgaW50
IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSB0aHJvdyAoKTsKCgpleHRl
cm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGludCBqcmFu
ZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZv
aWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSB0aHJvdyAoKTsKZXh0ZXJuIHVuc2lnbmVk
IHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSB0aHJv
dyAoKTsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10p
IHRocm93ICgpOwoKCgoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9y
dCBpbnQgX194WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107CiAgICB1bnNp
Z25lZCBzaG9ydCBpbnQgX19jOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBpbnQgX19hOwogIH07CgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0
cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwpleHRlcm4gaW50IGVy
YW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpleHRl
cm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZl
ciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0
aHJvdyAoKTsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp
WzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmlj
dCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9f
cmVzdWx0KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhf
ZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgKHVu
c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
IGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNy
YW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZl
cikKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3NlZWQxNnZbM10sCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEg
Kl9fYnVmZmVyKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9y
dCBpbnQgX19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2Rh
dGEgKl9fYnVmZmVyKSB0aHJvdyAoKTsKIyA1MjcgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpl
eHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNp
emVfdCBfX3NpemUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsK
CgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2
b2lkICpfX3B0cikgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0cikg
dGhyb3cgKCk7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMKIyAyMiAiL3Vzci9p
bmNsdWRlL2FsbG9jYS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIz
ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LWxpbnV4LzMuMC40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYWxs
b2NhLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90
IF9fc2l6ZSkgdGhyb3cgKCk7CgoKCgoKfQojIDU0NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAy
IDMKCgoKCmV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBfX3NpemUpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IHBvc2l4X21lbWFsaWduICh2
b2lkICoqX19tZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCBhYm9y
dCAodm9pZCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgpleHRl
cm4gaW50IGF0ZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqX19hcmcp
LCB2b2lkICpfX2FyZykKICAgICB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBleGl0IChpbnQg
X19zdGF0dXMpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4
dGVybiB2b2lkIF9FeGl0IChpbnQgX19zdGF0dXMpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19u
YW1lKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBj
aGFyICpfX25hbWUpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0
cmluZykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19u
YW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCiAgICAgdGhyb3cgKCk7
CgoKZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoK
CgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lkKSB0aHJvdyAoKTsKIyA2MjMgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0
aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgdGhy
b3cgKCk7CiMgNjQwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBta3N0ZW1w
NjQgKGNoYXIgKl9fdGVtcGxhdGUpIHRocm93ICgpOwojIDY1MCAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAzCmV4dGVybiBjaGFyICpta2R0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgdGhyb3cgKCk7
CgoKCgoKCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lIChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSkgdGhyb3cgKCk7CiMgNjcyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJu
IGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkgdGhyb3cgKCk7CgoK
CgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9fY29uc3Qgdm9pZCAqLCBfX2NvbnN0
IHZvaWQgKik7CgoKdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNvbXBhcmlzb25fZm5fdDsKCgoKCgpl
eHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2b2lkICpfX2tleSwgX19jb25zdCB2b2lkICpf
X2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6
ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiB2b2lkIHFzb3J0ICh2b2lkICpf
X2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
X19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiBpbnQgYWJzIChpbnQgX194KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsb25nIGludCBsYWJzIChs
b25nIGludCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCl9fZXh0
ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9uZyBpbnQgX194KQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKZXh0ZXJuIGRp
dl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBsZGl2IChsb25nIGludCBfX251bWVy
LCBsb25nIGludCBfX2Rlbm9tKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxsZGl2X3QgbGxkaXYgKGxvbmcgbG9uZyBpbnQg
X19udW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGlu
dCBfX2Rlbm9tKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyA3
MjggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqZWN2dCAoZG91YmxlIF9f
dmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAg
ICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFy
ICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19k
ZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgp
OwoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNo
YXIgKl9fYnVmKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpxZWN2dCAobG9uZyBkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIg
KnFmY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAg
ICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRo
cm93ICgpOwpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJs
ZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAg
ICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CmV4dGVybiBpbnQg
ZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19k
ZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9f
cmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4pIHRocm93ICgp
OwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
CiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0
cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwg
c2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hh
ciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJu
IGludCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4
dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAgICAg
ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7
CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNp
emVfdCBfX24pIHRocm93ICgpOwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19yZXN0
cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0
cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50
IHJwbWF0Y2ggKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkgdGhyb3cgKCk7CiMgODA4ICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fb3B0aW9ucCwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29uc3QgKl9fcmVz
dHJpY3QgX190b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X3ZhbHVlcCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0a2V5IChfX2NvbnN0IGNoYXIg
Kl9fa2V5KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgcG9zaXhfb3BlbnB0IChpbnQgX19v
ZmxhZykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IGdyYW50cHQgKGludCBfX2ZkKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGludCB1bmxvY2twdCAoaW50IF9fZmQpIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGNoYXIgKnB0c25hbWUgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBw
dHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSB0aHJvdyAo
KTsKCgpleHRlcm4gaW50IGdldHB0ICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBn
ZXRsb2FkYXZnIChkb3VibGUgX19sb2FkYXZnW10sIGludCBfX25lbGVtKSB0aHJvdyAoKTsKCgoK
Cgp9CiMgMjcgIi4uLy4uL2ttaWRpL3Jlc2FtcGxlLmNwcCIgMgoKIyAxICIuLi8uLi9rbWlkaS9j
b25maWcuaCIgMQojIDI4ICIuLi8uLi9rbWlkaS9jb25maWcuaCIKIyAxICIuLi9jb25maWcuaCIg
MQojIDI5ICIuLi8uLi9rbWlkaS9jb25maWcuaCIgMgojIDk5ICIuLi8uLi9rbWlkaS9jb25maWcu
aCIKdHlwZWRlZiBkb3VibGUgRkxPQVRfVDsKIyAyMzUgIi4uLy4uL2ttaWRpL2NvbmZpZy5oIgog
ICAgICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50MzI7CiAgICAgICAgdHlwZWRlZiBsb25n
IGludDMyOwoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNjsKdHlwZWRlZiBzaG9y
dCBpbnQxNjsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4Owp0eXBlZGVmIGNoYXIgaW50ODsK
IyAzMjAgIi4uLy4uL2ttaWRpL2NvbmZpZy5oIgogICB0eXBlZGVmIGludDE2IHNhbXBsZV90Owog
ICB0eXBlZGVmIGludDMyIGZpbmFsX3ZvbHVtZV90OwojIDI5ICIuLi8uLi9rbWlkaS9yZXNhbXBs
ZS5jcHAiIDIKIyAxICIuLi8uLi9rbWlkaS9jb21tb24uaCIgMQojIDI0ICIuLi8uLi9rbWlkaS9j
b21tb24uaCIKZXh0ZXJuIGNoYXIgKnByb2dyYW1fbmFtZSwgY3VycmVudF9maWxlbmFtZVtdOwpl
eHRlcm4gaW50IGN1cnJlbnRfZmlsZWRlc2NyaXB0b3I7CgojIDEgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1saW51eC8zLjAuNC9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDI4ICIuLi8uLi9rbWlkaS9j
b21tb24uaCIgMgoKZXh0ZXJuIEZJTEUgKm1zZ2ZwOwoKdHlwZWRlZiBzdHJ1Y3QgewogIGNoYXIg
KnBhdGg7CiAgdm9pZCAqbmV4dDsKICBpbnQgbGV2ZWw7Cn0gUGF0aExpc3Q7CgoKCgoKCmV4dGVy
biBGSUxFICpvcGVuX2ZpbGUoY29uc3QgY2hhciAqbmFtZSwgaW50IGRlY29tcHJlc3MsIGludCBu
b2lzZV9tb2RlLCBpbnQgbGV2ZWwpOwpleHRlcm4gdm9pZCBhZGRfdG9fcGF0aGxpc3QoY2hhciAq
cywgaW50IGxldmVsKTsKZXh0ZXJuIHZvaWQgY2xlYXJfcGF0aGxpc3QoaW50IGxldmVsKTsKZXh0
ZXJuIHZvaWQgY2xvc2VfZmlsZShGSUxFICpmcCk7CmV4dGVybiB2b2lkIHNraXAoRklMRSAqZnAs
IHNpemVfdCBsZW4pOwpleHRlcm4gdm9pZCAqc2FmZV9tYWxsb2Moc2l6ZV90IGNvdW50KTsKIyAz
MCAiLi4vLi4va21pZGkvcmVzYW1wbGUuY3BwIiAyCiMgMSAiLi4vLi4va21pZGkvaW5zdHJ1bS5o
IiAxCiMgMjggIi4uLy4uL2ttaWRpL2luc3RydW0uaCIKdHlwZWRlZiBzdHJ1Y3QgewogIHVpbnQz
MgogICAgbG9vcF9zdGFydCwgbG9vcF9lbmQsIGRhdGFfbGVuZ3RoLAogICAgc2FtcGxlX3JhdGUs
IGxvd19mcmVxLCBoaWdoX2ZyZXEsIHJvb3RfZnJlcTsKCiAgdWludDgKICAgIHJvb3RfdHVuZSwg
ZmluZV90dW5lOwoKICB1aW50MzIKICAgIGVudmVsb3BlX3JhdGVbN10sIGVudmVsb3BlX29mZnNl
dFs3XSwKICAgIG1vZHVsYXRpb25fcmF0ZVs3XSwgbW9kdWxhdGlvbl9vZmZzZXRbN107CiAgRkxP
QVRfVAogICAgdm9sdW1lLCByZXNvbmFuY2UsCiAgICBtb2RFbnZUb0ZpbHRlckZjLCBtb2RFbnZU
b1BpdGNoLCBtb2RMZm9Ub0ZpbHRlckZjOwogIHNhbXBsZV90ICpkYXRhOwogIGludDMyCiAgICB0
cmVtb2xvX3N3ZWVwX2luY3JlbWVudCwgdHJlbW9sb19waGFzZV9pbmNyZW1lbnQsCiAgICBsZm9f
c3dlZXBfaW5jcmVtZW50LCBsZm9fcGhhc2VfaW5jcmVtZW50LAogICAgdmlicmF0b19zd2VlcF9p
bmNyZW1lbnQ7CiAgdWludDMyCiAgICB2aWJyYXRvX2NvbnRyb2xfcmF0aW8sCiAgICBjdXRvZmZf
ZnJlcTsKICB1aW50OAogICAgcmV2ZXJiZXJhdGlvbiwgY2hvcnVzZGVwdGgsCiAgICB0cmVtb2xv
X2RlcHRoLCB2aWJyYXRvX2RlcHRoLAogICAgbW9kZXM7CiAgdWludDgKICAgIHBhbm5pbmcsIG5v
dGVfdG9fdXNlLCBleGNsdXNpdmVDbGFzczsKICBpbnQxNgogICAgc2NhbGVfdHVuaW5nLCBrZXlU
b01vZEVudkhvbGQsIGtleVRvTW9kRW52RGVjYXksCiAgICBrZXlUb1ZvbEVudkhvbGQsIGtleVRv
Vm9sRW52RGVjYXk7CiAgdWludDgKICAgIGF0dGVudWF0aW9uLCBmcmVxX2NlbnRlcjsKICBpbnQz
MgogICAgZnJlcV9zY2FsZSwgdmlicmF0b19kZWxheTsKfSBTYW1wbGU7CiMgNzggIi4uLy4uL2tt
aWRpL2luc3RydW0uaCIKdHlwZWRlZiBzdHJ1Y3QgewogIGludCB0eXBlOwogIGludCBzYW1wbGVz
OwogIFNhbXBsZSAqc2FtcGxlOwogIGludCBsZWZ0X3NhbXBsZXM7CiAgU2FtcGxlICpsZWZ0X3Nh
bXBsZTsKICBpbnQgcmlnaHRfc2FtcGxlczsKICBTYW1wbGUgKnJpZ2h0X3NhbXBsZTsKICB1bnNp
Z25lZCBjaGFyICpjb250ZW50czsKfSBJbnN0cnVtZW50OwoKdHlwZWRlZiBzdHJ1Y3QgX0luc3Ry
dW1lbnRMYXllciB7CiAgdWludDggbG8sIGhpOwogIGludCBzaXplOwogIEluc3RydW1lbnQgKmlu
c3RydW1lbnQ7CiAgc3RydWN0IF9JbnN0cnVtZW50TGF5ZXIgKm5leHQ7Cn0gSW5zdHJ1bWVudExh
eWVyOwoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICBjb25zdCBjaGFyICpuYW1lOwogIEluc3RydW1l
bnRMYXllciAqbGF5ZXI7CiAgaW50IGZvbnRfdHlwZSwgc2ZfaXgsIGxhc3RfdXNlZCwgdHVuaW5n
OwoKICBpbnQgbm90ZSwgYW1wLCBwYW4sIHN0cmlwX2xvb3AsIHN0cmlwX2VudmVsb3BlLCBzdHJp
cF90YWlsOwoKCgoKfSBUb25lQmFua0VsZW1lbnQ7CiMgMTIxICIuLi8uLi9rbWlkaS9pbnN0cnVt
LmgiCnR5cGVkZWYgc3RydWN0IHsKICBjb25zdCBjaGFyICpuYW1lOwoKICBUb25lQmFua0VsZW1l
bnQgdG9uZVsxMjhdOwoKCgp9IFRvbmVCYW5rOwoKZXh0ZXJuIGNoYXIgKnNmX2ZpbGU7CgpleHRl
cm4gVG9uZUJhbmsgKnRvbmViYW5rW10sICpkcnVtc2V0W107CgoKCgpleHRlcm4gSW5zdHJ1bWVu
dExheWVyICpkZWZhdWx0X2luc3RydW1lbnQ7CmV4dGVybiBpbnQgZGVmYXVsdF9wcm9ncmFtOwpl
eHRlcm4gaW50IGFudGlhbGlhc2luZ19hbGxvd2VkOwpleHRlcm4gaW50IGZhc3RfZGVjYXk7CmV4
dGVybiBpbnQgZnJlZV9pbnN0cnVtZW50c19hZnRlcndhcmRzOwpleHRlcm4gaW50IGN1dG9mZl9h
bGxvd2VkOwoKCgpleHRlcm4gaW50IGxvYWRfbWlzc2luZ19pbnN0cnVtZW50cyh2b2lkKTsKZXh0
ZXJuIHZvaWQgZnJlZV9pbnN0cnVtZW50cyh2b2lkKTsKZXh0ZXJuIHZvaWQgZW5kX3NvdW5kZm9u
dCh2b2lkKTsKZXh0ZXJuIGludCBzZXRfZGVmYXVsdF9pbnN0cnVtZW50KGNoYXIgKm5hbWUpOwoK
ZXh0ZXJuIGludDMyIGNvbnZlcnRfdHJlbW9sb19zd2VlcCh1aW50OCBzd2VlcCk7CmV4dGVybiBp
bnQzMiBjb252ZXJ0X3ZpYnJhdG9fc3dlZXAodWludDggc3dlZXAsIGludDMyIHZpYl9jb250cm9s
X3JhdGlvKTsKZXh0ZXJuIGludDMyIGNvbnZlcnRfdHJlbW9sb19yYXRlKHVpbnQ4IHJhdGUpOwpl
eHRlcm4gaW50MzIgY29udmVydF92aWJyYXRvX3JhdGUodWludDggcmF0ZSk7CgpleHRlcm4gdm9p
ZCBpbml0X3NvdW5kZm9udChjaGFyICpmbmFtZSwgaW50IG9sZGJhbmssIGludCBuZXdiYW5rLCBp
bnQgbGV2ZWwpOwoKCgoKZXh0ZXJuIEluc3RydW1lbnRMYXllciAqbG9hZF9zYmtfcGF0Y2goY29u
c3QgY2hhciAqbmFtZSwgaW50IGdtX251bSwgaW50IGJhbmssIGludCBwZXJjdXNzaW9uLAogaW50
IHBhbm5pbmcsIGludCBhbXAsIGludCBub3RlX3RvX3VzZSwgaW50IHNmX2l4KTsKZXh0ZXJuIGlu
dCBjdXJyZW50X3R1bmVfbnVtYmVyOwpleHRlcm4gaW50IG1heF9wYXRjaF9tZW1vcnk7CmV4dGVy
biBpbnQgY3VycmVudF9wYXRjaF9tZW1vcnk7CiMgMzEgIi4uLy4uL2ttaWRpL3Jlc2FtcGxlLmNw
cCIgMgojIDEgIi4uLy4uL2ttaWRpL3BsYXltaWRpLmgiIDEKIyAyOCAiLi4vLi4va21pZGkvcGxh
eW1pZGkuaCIKdHlwZWRlZiBzdHJ1Y3QgewogIHVpbnQzMiB0aW1lOwogIHVpbnQ4IGNoYW5uZWws
IHR5cGUsIGEsIGIsIHBvbHlwaG9ueTsKfSBNaWRpRXZlbnQ7CiMgOTEgIi4uLy4uL2ttaWRpL3Bs
YXltaWRpLmgiCnR5cGVkZWYgc3RydWN0IHsKICBpbnQKICAgIGJhbmssIGtpdCwgc2Z4LCBwcm9n
cmFtLCB2b2x1bWUsIHN1c3RhaW4sIHBhbm5pbmcsIHBpdGNoYmVuZCwgZXhwcmVzc2lvbiwKICAg
IHZhcmlhdGlvbmJhbmssIG1vbm8sCgogICAgcG9ydGFtZW50bywKCiAgICByZXZlcmJlcmF0aW9u
LCBjaG9ydXNkZXB0aCwgaGFybW9uaWNjb250ZW50LCByZWxlYXNldGltZSwgYXR0YWNrdGltZSwg
YnJpZ2h0bmVzcywKICAgIHBpdGNoc2VuczsKCiAgdWludDMyIG1vZHVsYXRpb25fd2hlZWw7CgoK
CiAgRkxPQVRfVAogICAgcGl0Y2hmYWN0b3I7CgoKICB1aW50OCBwb3J0YW1lbnRvX3RpbWVfbXNi
LCBwb3J0YW1lbnRvX3RpbWVfbHNiOwogIHVpbnQ4IHR1bmluZ19tc2IsIHR1bmluZ19sc2I7CiAg
aW50IHBvcnRhX2NvbnRyb2xfcmF0aW8sIHBvcnRhX2RwYjsKICBpbnQzMiBsYXN0X25vdGVfZmlu
ZTsKCgogIGludDMyIHZpYnJhdG9fcmF0aW8sIHZpYnJhdG9fZGVsYXk7CiAgaW50IHZpYnJhdG9f
ZGVwdGg7CgoKICBjaGFyCiAgICB0cmFuc3Bvc2U7CiAgY29uc3QgY2hhciAqbmFtZTsKfSBDaGFu
bmVsOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgdWludDgKICAgIHN0YXR1cywgY2hhbm5lbCwg
bm90ZSwgdmVsb2NpdHksIGNsb25lX3R5cGU7CiAgU2FtcGxlICpzYW1wbGU7CiAgU2FtcGxlICps
ZWZ0X3NhbXBsZTsKICBTYW1wbGUgKnJpZ2h0X3NhbXBsZTsKICBpbnQzMiBjbG9uZV92b2ljZTsK
ICB1aW50MzIKICAgIG9yaWdfZnJlcXVlbmN5LCBmcmVxdWVuY3ksCiAgICBzYW1wbGVfb2Zmc2V0
LCBsb29wX3N0YXJ0LCBsb29wX2VuZDsKICBpbnQzMgogICAgZW52ZWxvcGVfdm9sdW1lLCBtb2R1
bGF0aW9uX3ZvbHVtZTsKICB1aW50MzIKICAgIGVudmVsb3BlX3RhcmdldCwgbW9kdWxhdGlvbl90
YXJnZXQ7CiAgdWludDMyCiAgICB0cmVtb2xvX3N3ZWVwLCB0cmVtb2xvX3N3ZWVwX3Bvc2l0aW9u
LCB0cmVtb2xvX3BoYXNlLAogICAgbGZvX3N3ZWVwLCBsZm9fc3dlZXBfcG9zaXRpb24sIGxmb19w
aGFzZSwKICAgIHZpYnJhdG9fc3dlZXAsIHZpYnJhdG9fc3dlZXBfcG9zaXRpb24sIHZpYnJhdG9f
ZGVwdGgsCiAgICBzdGFydHRpbWUsIGVjaG9fZGVsYXlfY291bnQ7CiAgaW50MzIKICAgIGVjaG9f
ZGVsYXksCiAgICBzYW1wbGVfaW5jcmVtZW50LAogICAgZW52ZWxvcGVfaW5jcmVtZW50LAogICAg
bW9kdWxhdGlvbl9pbmNyZW1lbnQsCiAgICB0cmVtb2xvX3BoYXNlX2luY3JlbWVudCwKICAgIGxm
b19waGFzZV9pbmNyZW1lbnQ7CgogIGZpbmFsX3ZvbHVtZV90IGxlZnRfbWl4LCByaWdodF9taXg7
CgogIEZMT0FUX1QKICAgIHZvbHVtZSwgbGVmdF9hbXAsIHJpZ2h0X2FtcCwgdHJlbW9sb192b2x1
bWUsIGxmb192b2x1bWUsCiAgICBtb2RFbnZUb0ZpbHRlckZjLCBtb2RMZm9Ub0ZpbHRlckZjLAog
ICAgY3VycmVudF94MCwgY3VycmVudF94MSwgY3VycmVudF95MCwgY3VycmVudF95MTsKICBpbnQz
MgogICAgdmlicmF0b19zYW1wbGVfaW5jcmVtZW50WzMyXTsKICB1aW50MzIKICAgIGVudmVsb3Bl
X3JhdGVbN10sIGVudmVsb3BlX29mZnNldFs3XTsKICB1aW50MzIKICAgIHZpYnJhdG9fcGhhc2Us
IHZpYnJhdG9fY29udHJvbF9yYXRpbywgdmlicmF0b19jb250cm9sX2NvdW50ZXIsCgogICAgdmli
cmF0b19kZWxheSwgb3JpZ192aWJyYXRvX2NvbnRyb2xfcmF0aW8sIG1vZHVsYXRpb25fd2hlZWws
CgogICAgZW52ZWxvcGVfc3RhZ2UsIG1vZHVsYXRpb25fc3RhZ2UsIGNvbnRyb2xfY291bnRlciwK
ICAgIG1vZHVsYXRpb25fZGVsYXksIG1vZHVsYXRpb25fY291bnRlciwgYndfaW5kZXgsIHBhbm5p
bmcsIHBhbm5lZDsKCgoKICBpbnQgcG9ydGFfY29udHJvbF9yYXRpbywgcG9ydGFfY29udHJvbF9j
b3VudGVyLCBwb3J0YV9kcGI7CiAgaW50MzIgcG9ydGFfcGI7CgoKfSBWb2ljZTsKIyAyMTggIi4u
Ly4uL2ttaWRpL3BsYXltaWRpLmgiCmV4dGVybiBDaGFubmVsIGNoYW5uZWxbNjRdOwpleHRlcm4g
c2lnbmVkIGNoYXIgZHJ1bXZvbHVtZVs2NF1bMTI4XTsKZXh0ZXJuIHNpZ25lZCBjaGFyIGRydW1w
YW5wb3RbNjRdWzEyOF07CmV4dGVybiBzaWduZWQgY2hhciBkcnVtcmV2ZXJiZXJhdGlvbls2NF1b
MTI4XTsKZXh0ZXJuIHNpZ25lZCBjaGFyIGRydW1jaG9ydXNkZXB0aFs2NF1bMTI4XTsKCgoKZXh0
ZXJuIFZvaWNlIHZvaWNlWzEyOF07CgpleHRlcm4gaW50MzIgY29udHJvbF9yYXRpbywgYW1wX3dp
dGhfcG9seSwgYW1wbGlmaWNhdGlvbjsKZXh0ZXJuIGludDMyIGRydW1jaGFubmVsczsKZXh0ZXJu
IGludCBhZGp1c3RfcGFubmluZ19pbW1lZGlhdGVseTsKZXh0ZXJuIGludCB2b2ljZXM7CgoKZXh0
ZXJuIGludCBub3RlX2tleV9vZmZzZXQ7CmV4dGVybiBGTE9BVF9UIG1pZGlfdGltZV9yYXRpbzsK
ZXh0ZXJuIGludCBvcHRfbW9kdWxhdGlvbl93aGVlbDsKZXh0ZXJuIGludCBvcHRfcG9ydGFtZW50
bzsKZXh0ZXJuIGludCBvcHRfbnJwbl92aWJyYXRvOwpleHRlcm4gaW50IG9wdF9yZXZlcmJfY29u
dHJvbDsKZXh0ZXJuIGludCBvcHRfY2hvcnVzX2NvbnRyb2w7CmV4dGVybiBpbnQgb3B0X2NoYW5u
ZWxfcHJlc3N1cmU7CmV4dGVybiBpbnQgb3B0X292ZXJsYXBfdm9pY2VfYWxsb3c7CmV4dGVybiB2
b2lkIHJlY29tcHV0ZV9mcmVxKGludCB2KTsKZXh0ZXJuIGludCBkb250X2NzcGxpbmU7CgpleHRl
cm4gaW50IG9wdF9kcnk7CmV4dGVybiBpbnQgb3B0X2V4cHJlc3Npb25fY3VydmU7CmV4dGVybiBp
bnQgb3B0X3ZvbHVtZV9jdXJ2ZTsKZXh0ZXJuIGludCBvcHRfc3RlcmVvX3N1cnJvdW5kOwpleHRl
cm4gaW50IGRvbnRfZmlsdGVyX21lbG9kaWM7CmV4dGVybiBpbnQgZG9udF9maWx0ZXJfZHJ1bXM7
CmV4dGVybiBpbnQgY29tbWFuZF9jdXRvZmZfYWxsb3dlZDsKZXh0ZXJuIGludCBkb250X2Nob3J1
czsKZXh0ZXJuIGludCBkb250X3JldmVyYjsKZXh0ZXJuIGludCBjdXJyZW50X2ludGVycG9sYXRp
b247CmV4dGVybiBpbnQgZG9udF9rZWVwX2xvb3Bpbmc7CgpleHRlcm4gaW50IEdNX1N5c3RlbV9P
bjsKZXh0ZXJuIGludCBYR19TeXN0ZW1fT247CmV4dGVybiBpbnQgR1NfU3lzdGVtX09uOwoKZXh0
ZXJuIGludCBYR19TeXN0ZW1fcmV2ZXJiX3R5cGU7CmV4dGVybiBpbnQgWEdfU3lzdGVtX2Nob3J1
c190eXBlOwpleHRlcm4gaW50IFhHX1N5c3RlbV92YXJpYXRpb25fdHlwZTsKCgoKCmV4dGVybiBp
bnQgcGxheV9taWRpKE1pZGlFdmVudCAqZWwsIHVpbnQzMiBldmVudHMsIHVpbnQzMiBzYW1wbGVz
KTsKZXh0ZXJuIGludCBwbGF5X21pZGlfZmlsZShjb25zdCBjaGFyICpmbik7CgpleHRlcm4gdm9p
ZCBkdW1iX3Bhc3NfcGxheWluZ19saXN0KGludCBudW1iZXJfb2ZfZmlsZXMsIGNvbnN0IGNoYXIg
Kmxpc3Rfb2ZfZmlsZXNbXSk7CgoKCmV4dGVybiBpbnQgcmVhZF9jb25maWdfZmlsZShjb25zdCBj
aGFyICpuYW1lLCBpbnQgcHJlc2Nhbm5pbmcpOwpleHRlcm4gY2hhciAqY3VycmVudF9jb25maWdf
ZmlsZTsKZXh0ZXJuIGludCByZXZlcmJfb3B0aW9uczsKZXh0ZXJuIGludCBnbG9iYWxfcmV2ZXJi
OwpleHRlcm4gaW50IGdsb2JhbF9jaG9ydXM7CmV4dGVybiBpbnQgZ2xvYmFsX2VjaG87CmV4dGVy
biBpbnQgZ2xvYmFsX2RldHVuZTsKZXh0ZXJuIGludCBjZmdfc2VsZWN0OwpleHRlcm4gdm9pZCBj
bGVhcl9jb25maWcodm9pZCk7CmV4dGVybiB2b2lkIGVmZmVjdF9hY3RpdmF0ZSggaW50IGlTd2l0
Y2ggKTsKZXh0ZXJuIGludCBoYXZlX2NvbW1hbmRsaW5lX21pZGlzOwojIDMyICIuLi8uLi9rbWlk
aS9yZXNhbXBsZS5jcHAiIDIKIyAxICIuLi8uLi9rbWlkaS9vdXRwdXQuaCIgMQojIDM0ICIuLi8u
Li9rbWlkaS9vdXRwdXQuaCIKdHlwZWRlZiBzdHJ1Y3QgewogIHVpbnQzMiByYXRlLCBlbmNvZGlu
ZzsKICBpbnQgZmQ7CiAgaW50MzIgZXh0cmFfcGFyYW1bNV07CiAgY29uc3QgY2hhciAqaWRfbmFt
ZTsKICBjaGFyIGlkX2NoYXJhY3RlcjsKICBjb25zdCBjaGFyICpuYW1lOwoKICBpbnQgKCpvcGVu
X291dHB1dCkodm9pZCk7CiAgdm9pZCAoKmNsb3NlX291dHB1dCkodm9pZCk7CiAgdm9pZCAoKm91
dHB1dF9kYXRhKShpbnQzMiAqYnVmLCB1aW50MzIgY291bnQpOwogIGludCAoKmRyaXZlcl9vdXRw
dXRfZGF0YSkodW5zaWduZWQgY2hhciAqYnVmLCB1aW50MzIgY291bnQpOwogIHZvaWQgKCpmbHVz
aF9vdXRwdXQpKHZvaWQpOwogIHZvaWQgKCpwdXJnZV9vdXRwdXQpKHZvaWQpOwogIGludCAoKm91
dHB1dF9jb3VudCkodWludDMyIGN0KTsKfSBQbGF5TW9kZTsKCmV4dGVybiBQbGF5TW9kZSAqcGxh
eV9tb2RlX2xpc3RbXSwgKnBsYXlfbW9kZTsKZXh0ZXJuIGNoYXIgKmNmZ19uYW1lc1tdOwpleHRl
cm4gaW50IGdvdF9hX2NvbmZpZ3VyYXRpb247CgpleHRlcm4gaW50IG91dHB1dF9idWZmZXJfZnVs
bDsKZXh0ZXJuIGludCBvdXRwdXRfZGV2aWNlX29wZW47CgoKZXh0ZXJuIGludCBiX291dF9jb3Vu
dCh2b2lkKTsKZXh0ZXJuIHZvaWQgYl9vdXQoY2hhciBpZCwgaW50IGZkLCBpbnQgKmJ1ZiwgaW50
IG9jb3VudCk7CgoKCmV4dGVybiBpbnQgb3V0cHV0X2NsaXBzOwoKCmV4dGVybiB2b2lkIHMzMnRv
czgoaW50MzIgKmxwLCB1aW50MzIgYyk7CmV4dGVybiB2b2lkIHMzMnRvdTgoaW50MzIgKmxwLCB1
aW50MzIgYyk7CgoKZXh0ZXJuIHZvaWQgczMydG9zMTYoaW50MzIgKmxwLCB1aW50MzIgYyk7CmV4
dGVybiB2b2lkIHMzMnRvdTE2KGludDMyICpscCwgdWludDMyIGMpOwoKCmV4dGVybiB2b2lkIHMz
MnRvczE2eChpbnQzMiAqbHAsIHVpbnQzMiBjKTsKZXh0ZXJuIHZvaWQgczMydG91MTZ4KGludDMy
ICpscCwgdWludDMyIGMpOwoKCmV4dGVybiB2b2lkIHMzMnRvdWxhdyhpbnQzMiAqbHAsIHVpbnQz
MiBjKTsKIyAzMyAiLi4vLi4va21pZGkvcmVzYW1wbGUuY3BwIiAyCiMgMSAiLi4vLi4va21pZGkv
Y29udHJvbHMuaCIgMQojIDEyNyAiLi4vLi4va21pZGkvY29udHJvbHMuaCIKdHlwZWRlZiBzdHJ1
Y3QgewogIGNvbnN0IGNoYXIgKmlkX25hbWU7CiAgY2hhciBpZF9jaGFyYWN0ZXI7CiAgaW50IHZl
cmJvc2l0eSwgdHJhY2VfcGxheWluZywgb3BlbmVkOwoKICBpbnQgKCpvcGVuKShpbnQgdXNpbmdf
c3RkaW4sIGludCB1c2luZ19zdGRvdXQpOwogIHZvaWQgKCpwYXNzX3BsYXlpbmdfbGlzdCkoaW50
IG51bWJlcl9vZl9maWxlcywgY29uc3QgY2hhciAqbGlzdF9vZl9maWxlc1tdKTsKICB2b2lkICgq
Y2xvc2UpKHZvaWQpOwogIGludCAoKnJlYWQpKGludDMyICp2YWxwKTsKICBpbnQgKCpjbXNnKShp
bnQgdHlwZSwgaW50IHZlcmJvc2l0eV9sZXZlbCwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoKICB2
b2lkICgqcmVmcmVzaCkodm9pZCk7CiAgdm9pZCAoKnJlc2V0KSh2b2lkKTsKICB2b2lkICgqZmls
ZV9uYW1lKShjaGFyICpuYW1lKTsKICB2b2lkICgqdG90YWxfdGltZSkodWludDMyIHR0KTsKICB2
b2lkICgqY3VycmVudF90aW1lKSh1aW50MzIgY3QpOwoKICB2b2lkICgqbm90ZSkoaW50IHYpOwog
IHZvaWQgKCptYXN0ZXJfdm9sdW1lKShpbnQgbXYpOwogIHZvaWQgKCpwcm9ncmFtKShpbnQgY2hh
bm5lbCwgaW50IHZhbCwgY29uc3QgY2hhciAqbmFtZSk7CiAgdm9pZCAoKnZvbHVtZSkoaW50IGNo
YW5uZWwsIGludCB2YWwpOwogIHZvaWQgKCpleHByZXNzaW9uKShpbnQgY2hhbm5lbCwgaW50IHZh
bCk7CiAgdm9pZCAoKnBhbm5pbmcpKGludCBjaGFubmVsLCBpbnQgdmFsKTsKICB2b2lkICgqc3Vz
dGFpbikoaW50IGNoYW5uZWwsIGludCB2YWwpOwogIHZvaWQgKCpwaXRjaF9iZW5kKShpbnQgY2hh
bm5lbCwgaW50IHZhbCk7Cgp9IENvbnRyb2xNb2RlOwoKZXh0ZXJuIGludCBsYXN0X3JjX2NvbW1h
bmQ7CmV4dGVybiBpbnQgbGFzdF9yY19hcmc7CmV4dGVybiBDb250cm9sTW9kZSAqY3RsX2xpc3Rb
XSwgKmN0bDsKZXh0ZXJuIGludCBjaGVja19mb3JfcmModm9pZCk7CiMgMzQgIi4uLy4uL2ttaWRp
L3Jlc2FtcGxlLmNwcCIgMgojIDEgIi4uLy4uL2ttaWRpL3RhYmxlcy5oIiAxCiMgMjcgIi4uLy4u
L2ttaWRpL3RhYmxlcy5oIgojIDEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDEgMwojIDI4ICIuLi8u
Li9rbWlkaS90YWJsZXMuaCIgMgoKCgoKCgoKZXh0ZXJuIHVpbnQzMiBmcmVxX3RhYmxlW107Cgpl
eHRlcm4gRkxPQVRfVCAqdm9sX3RhYmxlOwpleHRlcm4gRkxPQVRfVCBkZWZfdm9sX3RhYmxlW107
CmV4dGVybiBGTE9BVF9UIGdzX3ZvbF90YWJsZVtdOwpleHRlcm4gRkxPQVRfVCAqeGdfdm9sX3Rh
YmxlOwoKCgpleHRlcm4gRkxPQVRfVCBleHByX3RhYmxlW107CmV4dGVybiBGTE9BVF9UIGJlbmRf
ZmluZVtdOwpleHRlcm4gRkxPQVRfVCBiZW5kX2NvYXJzZVtdOwoKZXh0ZXJuIEZMT0FUX1QgbWlk
aV90aW1lX3RhYmxlW10sIG1pZGlfdGltZV90YWJsZTJbXTsKCmV4dGVybiBGTE9BVF9UIGJ1dHRl
cndvcnRoWzEwMV1bNV07CmV4dGVybiB1aW50OCAqX2wydTsKZXh0ZXJuIHVpbnQ4IF9sMnVfW107
CiMgNjEgIi4uLy4uL2ttaWRpL3RhYmxlcy5oIgpleHRlcm4gdm9pZCBpbml0X3RhYmxlcyh2b2lk
KTsKCmV4dGVybiBzdHJ1Y3Qgc2hvcnRfdm9pY2VfdHlwZSB7CiAgICAgICAgY29uc3QgY2hhciAq
dm5hbWU7CgogICAgICAgIGNoYXIgZmxhZ3M7Cn0gZ21fdm9pY2VbXTsKIyAzNSAiLi4vLi4va21p
ZGkvcmVzYW1wbGUuY3BwIiAyCiMgMSAiLi4vLi4va21pZGkvcmVzYW1wbGUuaCIgMQojIDIzICIu
Li8uLi9rbWlkaS9yZXNhbXBsZS5oIgpleHRlcm4gc2FtcGxlX3QgKnJlc2FtcGxlX3ZvaWNlKGlu
dCB2LCB1aW50MzIgKmNvdW50cHRyKTsKZXh0ZXJuIHNhbXBsZV90ICpyZXNhbXBsZV92b2ljZV9s
YWdyYW5nZShpbnQgdiwgdWludDMyICpjb3VudHB0cik7CmV4dGVybiBzYW1wbGVfdCAqcmVzYW1w
bGVfdm9pY2VfZmlsdGVyKGludCB2LCB1aW50MzIgKmNvdW50cHRyKTsKZXh0ZXJuIHZvaWQgcHJl
X3Jlc2FtcGxlKFNhbXBsZSAqc3ApOwpleHRlcm4gdm9pZCBkb19sb3dwYXNzKFNhbXBsZSAqc2Ft
cGxlLCB1aW50MzIgc3JhdGUsIHNhbXBsZV90ICpidWYsIHVpbnQzMiBjb3VudCwgdWludDMyIGZy
ZXEsIEZMT0FUX1QgcmVzb25hbmNlKTsKZXh0ZXJuIGludCByZWNvbXB1dGVfbW9kdWxhdGlvbihp
bnQgdik7CmV4dGVybiBzYW1wbGVfdCByZXNhbXBsZV9idWZmZXJbKDE8PDEwKSsxMDBdOwpleHRl
cm4gdWludDMyIHJlc2FtcGxlX2J1ZmZlcl9vZmZzZXQ7CmV4dGVybiBpbnQgdXBkYXRlX21vZHVs
YXRpb24oaW50IHYpOwpleHRlcm4gaW50IHVwZGF0ZV9tb2R1bGF0aW9uX3NpZ25hbChpbnQgdik7
CmV4dGVybiBpbnQzMiBjYWxjX21vZF9mcmVxKGludCB2LCBpbnQzMiBpbmNyKTsKIyAzNiAiLi4v
Li4va21pZGkvcmVzYW1wbGUuY3BwIiAyCiMgNTQgIi4uLy4uL2ttaWRpL3Jlc2FtcGxlLmNwcCIK
c2FtcGxlX3QgcmVzYW1wbGVfYnVmZmVyWygxPDwxMCkrMTAwXTsKdWludDMyIHJlc2FtcGxlX2J1
ZmZlcl9vZmZzZXQgPSAwOwoKc3RhdGljIHNhbXBsZV90ICp2aWJfcmVzYW1wbGVfdm9pY2UoaW50
LCB1aW50MzIgKiwgaW50KTsKc3RhdGljIHNhbXBsZV90ICpub3JtYWxfcmVzYW1wbGVfdm9pY2Uo
aW50LCB1aW50MzIgKiwgaW50KTsKCgppbnQgcmVjb21wdXRlX21vZHVsYXRpb24oaW50IHYpCnsK
ICBpbnQgc3RhZ2U7CgogIHN0YWdlID0gdm9pY2Vbdl0ubW9kdWxhdGlvbl9zdGFnZTsKCiAgaWYg
KHN0YWdlPjUpCiAgICB7CgogICAgICB2b2ljZVt2XS5tb2R1bGF0aW9uX2luY3JlbWVudCA9IDA7
CiAgICAgIHJldHVybiAxOwogICAgfQoKICBpZiAoKHZvaWNlW3ZdLnNhbXBsZS0+bW9kZXMgJiAo
MTw8NikpICYmICh2b2ljZVt2XS5zYW1wbGUtPm1vZGVzICYgKDE8PDUpKSkKICAgIHsKICAgICAg
aWYgKHZvaWNlW3ZdLnN0YXR1cyAmICgoMTw8MSkgfCAoMTw8MikpKQogICAgICAgIHsKICAgICAg
ICAgIGlmIChzdGFnZT4yKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgIHZvaWNlW3ZdLm1v
ZHVsYXRpb25faW5jcmVtZW50PTA7CiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICB9CiAgdm9pY2Vbdl0ubW9kdWxhdGlvbl9zdGFnZT1zdGFnZSsxOwoK
CiAgaWYgKHZvaWNlW3ZdLm1vZHVsYXRpb25fdm9sdW1lPT0oaW50KXZvaWNlW3ZdLnNhbXBsZS0+
bW9kdWxhdGlvbl9vZmZzZXRbc3RhZ2VdIHx8CiAgICAgIChzdGFnZSA+IDIgJiYgdm9pY2Vbdl0u
bW9kdWxhdGlvbl92b2x1bWUgPCAoaW50KXZvaWNlW3ZdLnNhbXBsZS0+bW9kdWxhdGlvbl9vZmZz
ZXRbc3RhZ2VdKSkKCgoKICAgIHJldHVybiByZWNvbXB1dGVfbW9kdWxhdGlvbih2KTsKICB2b2lj
ZVt2XS5tb2R1bGF0aW9uX3RhcmdldD12b2ljZVt2XS5zYW1wbGUtPm1vZHVsYXRpb25fb2Zmc2V0
W3N0YWdlXTsKICB2b2ljZVt2XS5tb2R1bGF0aW9uX2luY3JlbWVudCA9IHZvaWNlW3ZdLnNhbXBs
ZS0+bW9kdWxhdGlvbl9yYXRlW3N0YWdlXTsKICBpZiAoKGludCl2b2ljZVt2XS5tb2R1bGF0aW9u
X3RhcmdldDx2b2ljZVt2XS5tb2R1bGF0aW9uX3ZvbHVtZSkKICAgIHZvaWNlW3ZdLm1vZHVsYXRp
b25faW5jcmVtZW50ID0gLXZvaWNlW3ZdLm1vZHVsYXRpb25faW5jcmVtZW50OwogIHJldHVybiAw
Owp9CgppbnQgdXBkYXRlX21vZHVsYXRpb24oaW50IHYpCnsKCiAgaWYodm9pY2Vbdl0ubW9kdWxh
dGlvbl9kZWxheSA+IDApCiAgewoKCiAgICAgIHZvaWNlW3ZdLm1vZHVsYXRpb25fZGVsYXkgLT0g
MTsKICAgICAgaWYodm9pY2Vbdl0ubW9kdWxhdGlvbl9kZWxheSA+IDApCiAgICAgICAgICByZXR1
cm4gMDsKICB9CgoKICB2b2ljZVt2XS5tb2R1bGF0aW9uX3ZvbHVtZSArPSB2b2ljZVt2XS5tb2R1
bGF0aW9uX2luY3JlbWVudDsKICBpZiAodm9pY2Vbdl0ubW9kdWxhdGlvbl92b2x1bWUgPCAwKSB2
b2ljZVt2XS5tb2R1bGF0aW9uX3ZvbHVtZSA9IDA7CgogIGlmICgoKHZvaWNlW3ZdLm1vZHVsYXRp
b25faW5jcmVtZW50IDwgMCkgJiYKICAgICAgICh2b2ljZVt2XS5tb2R1bGF0aW9uX3ZvbHVtZSA8
PSAoaW50KXZvaWNlW3ZdLm1vZHVsYXRpb25fdGFyZ2V0KSkgfHwKICAgICAgKCh2b2ljZVt2XS5t
b2R1bGF0aW9uX2luY3JlbWVudCA+IDApICYmCiAgICAgICAgICAgKHZvaWNlW3ZdLm1vZHVsYXRp
b25fdm9sdW1lID49IChpbnQpdm9pY2Vbdl0ubW9kdWxhdGlvbl90YXJnZXQpKSkKICAgIHsKICAg
ICAgdm9pY2Vbdl0ubW9kdWxhdGlvbl92b2x1bWUgPSB2b2ljZVt2XS5tb2R1bGF0aW9uX3Rhcmdl
dDsKICAgICAgaWYgKHJlY29tcHV0ZV9tb2R1bGF0aW9uKHYpKQogICAgICAgIHJldHVybiAxOwog
ICAgfQogIHJldHVybiAwOwp9CgoKaW50IHVwZGF0ZV9tb2R1bGF0aW9uX3NpZ25hbChpbnQgdikK
ewogIGlmICh2b2ljZVt2XS5tb2R1bGF0aW9uX2luY3JlbWVudCAmJiB1cGRhdGVfbW9kdWxhdGlv
bih2KSkKICAgIHJldHVybiAxOwogIHJldHVybiAwOwp9CgoKCgppbnQzMiBjYWxjX21vZF9mcmVx
KGludCB2LCBpbnQzMiBpbmNyKQp7CiAgRkxPQVRfVCBtb2RfYW1vdW50OwogIGludDMyIGZyZXE7
CgogIGlmICh2b2ljZVt2XS52aWJyYXRvX2NvbnRyb2xfcmF0aW8pIHJldHVybiBpbmNyOwogIGlm
ICgobW9kX2Ftb3VudD12b2ljZVt2XS5zYW1wbGUtPm1vZEVudlRvUGl0Y2gpPDAuMDIpIHJldHVy
biBpbmNyOwogIGlmIChpbmNyIDwgMCkgcmV0dXJuIGluY3I7CiAgZnJlcSA9IHZvaWNlW3ZdLmZy
ZXF1ZW5jeTsKICBmcmVxID0gKGludDMyKSggKGRvdWJsZSlmcmVxKigxLjAgKyAobW9kX2Ftb3Vu
dCAtIDEuMCkgKiAodm9pY2Vbdl0ubW9kdWxhdGlvbl92b2x1bWU+PjIyKSAvIDI1NS4wKSApOwoK
ICByZXR1cm4gKGludDMyKSAoKCgoZG91YmxlKSh2b2ljZVt2XS5zYW1wbGUtPnNhbXBsZV9yYXRl
KSAqIChkb3VibGUpKGZyZXEpKSAvICgoZG91YmxlKSh2b2ljZVt2XS5zYW1wbGUtPnJvb3RfZnJl
cSkgKiAoZG91YmxlKShwbGF5X21vZGUtPnJhdGUpKSkgKiAoZG91YmxlKSgxPDwoMTMpKSk7CgoK
Cgp9CgoKCnN0YXRpYyBzYW1wbGVfdCAqcnNfcGxhaW4oaW50IHYsIHVpbnQzMiAqY291bnRwdHIp
CnsKCiAgVm9pY2UKICAgICp2cD0mdm9pY2Vbdl07CiAgaW50MzIgb2ZzZCwgdjAsIHYxLCB2Miwg
djMsIHRlbXAsIG92ZXJzaG9vdDsKICBpbnQgb2Zmc2V0OwogIHVpbnQzMiBjY19jb3VudD12cC0+
bW9kdWxhdGlvbl9jb3VudGVyOwogIHNhbXBsZV90CiAgICAqZGVzdD1yZXNhbXBsZV9idWZmZXIr
cmVzYW1wbGVfYnVmZmVyX29mZnNldCwKICAgICpzcmM9dnAtPnNhbXBsZS0+ZGF0YTsKICBpbnQz
MgogICAgaW5jcj12cC0+c2FtcGxlX2luY3JlbWVudDsKICB1aW50MzIKICAgIG9mcz12cC0+c2Ft
cGxlX29mZnNldDsKCiAgdWludDMyCiAgICBscz0wLAogICAgbGU9dnAtPnNhbXBsZS0+ZGF0YV9s
ZW5ndGg7CgogIHVpbnQzMgogICAgc2U9dnAtPnNhbXBsZS0+ZGF0YV9sZW5ndGg7CiAgdWludDMy
CiAgICBjb3VudD0qY291bnRwdHI7CgogIGlmICghaW5jcikgcmV0dXJuIHJlc2FtcGxlX2J1ZmZl
cityZXNhbXBsZV9idWZmZXJfb2Zmc2V0OwoKICBvdmVyc2hvb3QgPSBzcmNbKHNlPj4xMyktMV0g
LyA1MDsKICBpZiAob3ZlcnNob290IDwgMCkgb3ZlcnNob290ID0gLW92ZXJzaG9vdDsKCiAgICB3
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
cyA+PSBzZSArIChvdmVyc2hvb3QgPDwgMTMpKQogICAgICAgIHsKICAgICAgICAgIGlmICghKHZw
LT5zdGF0dXMmKDE8PDApKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIHZwLT5zdGF0dXM9
KDE8PDApOwogICAgICAgICAgICAgIGN0bC0+bm90ZSh2KTsKICAgICAgICAgICAgfQogICAgICAg
ICAgKmNvdW50cHRyLT1jb3VudCsxOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoK
ICB2cC0+c2FtcGxlX29mZnNldD1vZnM7CiAgdnAtPm1vZHVsYXRpb25fY291bnRlcj1jY19jb3Vu
dDsKICByZXR1cm4gcmVzYW1wbGVfYnVmZmVyK3Jlc2FtcGxlX2J1ZmZlcl9vZmZzZXQ7Cn0KCnN0
YXRpYyBzYW1wbGVfdCAqcnNfbG9vcChpbnQgdiwgVm9pY2UgKnZwLCB1aW50MzIgKmNvdW50cHRy
KQp7CgogIGludDMyIG9mc2QsIHYwLCB2MSwgdjIsIHYzLCB0ZW1wLCBvdmVyc2hvb3Q7CiAgaW50
IG9mZnNldDsKICB1aW50MzIgY2NfY291bnQ9dnAtPm1vZHVsYXRpb25fY291bnRlcjsKICBpbnQz
MgogICAgaW5jcj12cC0+c2FtcGxlX2luY3JlbWVudDsKICB1aW50MzIKICAgIG9mcz12cC0+c2Ft
cGxlX29mZnNldDsKICB1aW50MzIKICAgIGxlPXZwLT5sb29wX2VuZCwKCiAgICBscz12cC0+bG9v
cF9zdGFydCwKCiAgICBsbD1sZSAtIHZwLT5sb29wX3N0YXJ0OwogIHNhbXBsZV90CiAgICAqZGVz
dD1yZXNhbXBsZV9idWZmZXIrcmVzYW1wbGVfYnVmZmVyX29mZnNldCwKICAgICpzcmM9dnAtPnNh
bXBsZS0+ZGF0YTsKICB1aW50MzIKICAgIHNlPXZwLT5zYW1wbGUtPmRhdGFfbGVuZ3RoLAogICAg
Y291bnQgPSAqY291bnRwdHI7CiAgaW50CiAgICBmbGFnX2V4aXRfbG9vcDsKCgogIGZsYWdfZXhp
dF9sb29wID0KICAgICAgICAodnAtPnN0YXR1cyAmICgoMTw8MCkgfCAoMTw8NCkpKSB8fAogICAg
ICAgICgodnAtPnN0YXR1cyAmICgxPDwzKSkgJiYgKHZwLT5zYW1wbGUtPm1vZGVzICYgKDE8PDcp
KSApIHx8CiAgICAgICAgKCh2cC0+c3RhdHVzICYgKDE8PDMpKSAmJiBkb250X2tlZXBfbG9vcGlu
ZyApIDsKCiAgb3ZlcnNob290ID0gc3JjWyhzZT4+MTMpLTFdIC8gNTA7CiAgaWYgKG92ZXJzaG9v
dCA8IDApIG92ZXJzaG9vdCA9IC1vdmVyc2hvb3Q7CgogIHdoaWxlIChjb3VudC0tKQogICAgewoK
ICAgICAgICBvZmZzZXQgPSBvZnMgPj4gMTM7CgogICAgICAgIGlmIChvZnMgPj0gc2UpIHsKICAg
ICAgICAgICAgICAgIGludDMyIGRlbHRhID0gKGludDMyKSgob2ZzIC0gc2UpPj4xMykgOwogICAg
ICAgICAgICAgICAgdjEgPSAoaW50MzIpc3JjWyhpbnQpKHNlPj4xMyktMV07CiAgICAgICAgICAg
ICAgICB2MSAtPSAoZGVsdGErMSkgKiB2MSAvIG92ZXJzaG9vdDsKICAgICAgICB9ZWxzZSB2MSA9
IChpbnQzMilzcmNbb2Zmc2V0XTsKICAgICAgICBpZiAob2ZzICsgKDFMPDwxMykgPj0gc2UpIHsK
ICAgICAgICAgICAgICAgIHYyID0gdjE7CiAgICAgICAgfWVsc2UgdjIgPSAoaW50MzIpc3JjW29m
ZnNldCsxXTsKICAgICAgICBpZihkb250X2NzcGxpbmUgfHwKICAgICAgICAgICAoKG9mcy0oMUw8
PDEzKSk8bHMpfHwoKG9mcysoMkw8PDEzKSk+bGUpKXsKICAgICAgICAgICAgICAgICpkZXN0Kysg
PSAoc2FtcGxlX3QpKHYxICsgKChpbnQzMikoKHYyLXYxKSAqIChpbnQzMikob2ZzICYgKH4gKDB4
RkZGRkZGRkYgPDwgMTMpKSkpID4+IDEzKSk7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAg
ICBvZnNkPW9mczsKICAgICAgICAgICAgICAgIHYwID0gKGludDMyKXNyY1tvZmZzZXQtMV07CiAg
ICAgICAgICAgICAgICB2MyA9IChpbnQzMilzcmNbb2Zmc2V0KzJdOwogICAgICAgICAgICAgICAg
b2ZzICY9ICh+ICgweEZGRkZGRkZGIDw8IDEzKSk7CiAgICAgICAgICAgICAgICB0ZW1wPXYyOwog
ICAgICAgICAgICAgICAgdjIgPSAoNip2MiArCiAgICAgICAgICAgICAgICAgICAgICAoKCgoICgg
KDUqdjMgLSAxMSp2MiArIDcqdjEgLSB2MCkqCiAgICAgICAgICAgICAgICAgICAgICAgKGludDMy
KW9mcykgPj4xMykqKGludDMyKW9mcyk+PigxMyArMikpLTEpKSooaW50MzIpb2ZzOwogICAgICAg
ICAgICAgICAgb2ZzID0gKDFMIDw8IDEzKSAtIG9mczsKICAgICAgICAgICAgICAgIHYxID0gKDYq
djEgKwogICAgICAgICAgICAgICAgICAgICAgKCgoKCgoNSp2MCAtIDExKnYxICsgNyp0ZW1wIC0g
djMpKgogICAgICAgICAgICAgICAgICAgICAgIChpbnQzMilvZnMpPj4xMykqKGludDMyKW9mcyk+
PigxMyArMikpLTEpKSooaW50MzIpb2ZzOwogICAgICAgICAgICAgICAgdjEgPSAodjEgKyB2Mikv
KDZMPDwxMyk7CiAgICAgICAgICAgICAgICAqZGVzdCsrID0gKHNhbXBsZV90KSgodjEgPiAzMjc2
Nyk/IDMyNzY3OiAoKHYxIDwgLTMyNzY4KT8gLTMyNzY4OiB2MSkpOwogICAgICAgICAgICAgICAg
b2ZzPW9mc2Q7CiAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFjY19jb3VudC0tKSB7CiAg
ICAgICAgICAgICAgICAgICAgY2NfY291bnQgPSBjb250cm9sX3JhdGlvIC0gMTsKICAgICAgICAg
ICAgICAgICAgICBpZiAoIXVwZGF0ZV9tb2R1bGF0aW9uX3NpZ25hbCh2KSkKICAgICAgICAgICAg
ICAgICAgICAgICAgaW5jciA9IGNhbGNfbW9kX2ZyZXEodiwgaW5jcik7CiAgICAgICAgICAgICAg
ICB9CiAgICAgIG9mcyArPSBpbmNyOwogICAgICBpZiAob2ZzPj1sZSkKICAgICAgICB7CiAgICAg
ICAgICBpZiAoZmxhZ19leGl0X2xvb3ApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZw
LT5lY2hvX2RlbGF5IC09IGxsID4+IDEzOwogICAgICAgICAgICAgICAgaWYgKHZwLT5lY2hvX2Rl
bGF5ID49IDApIG9mcyAtPSBsbDsKICAgICAgICAgICAgfQogICAgICAgICAgZWxzZSBvZnMgLT0g
bGw7CiAgICAgICAgfQogICAgICBpZiAob2ZzID49IHNlICsgKG92ZXJzaG9vdCA8PCAxMykpCiAg
ICAgICAgewogICAgICAgICAgaWYgKCEodnAtPnN0YXR1cyYoMTw8MCkpKQogICAgICAgICAgICB7
CiAgICAgICAgICAgICAgdnAtPnN0YXR1cz0oMTw8MCk7CiAgICAgICAgICAgICAgY3RsLT5ub3Rl
KHYpOwogICAgICAgICAgICB9CiAgICAgICAgICAqY291bnRwdHItPWNvdW50KzE7CiAgICAgICAg
ICBicmVhazsKICAgICAgICB9CiAgICB9CgogIHZwLT5zYW1wbGVfb2Zmc2V0PW9mczsKICB2cC0+
bW9kdWxhdGlvbl9jb3VudGVyPWNjX2NvdW50OwogIHJldHVybiByZXNhbXBsZV9idWZmZXIrcmVz
YW1wbGVfYnVmZmVyX29mZnNldDsKfQoKc3RhdGljIHNhbXBsZV90ICpyc19iaWRpcihpbnQgdiwg
Vm9pY2UgKnZwLCB1aW50MzIgY291bnQpCnsKICBpbnQzMiBvZnNkLCB2MCwgdjEsIHYyLCB2Mywg
dGVtcCwgb3ZlcnNob290OwogIGludCBvZmZzZXQ7CiAgaW50MzIKICAgIGluY3I9dnAtPnNhbXBs
ZV9pbmNyZW1lbnQ7CiAgdWludDMyCiAgICBsZT12cC0+bG9vcF9lbmQsCiAgICBscz12cC0+bG9v
cF9zdGFydDsKICB1aW50MzIKICAgIG9mcz12cC0+c2FtcGxlX29mZnNldCwKICAgIHNlPXZwLT5z
YW1wbGUtPmRhdGFfbGVuZ3RoOwogIHNhbXBsZV90CiAgICAqZGVzdD1yZXNhbXBsZV9idWZmZXIr
cmVzYW1wbGVfYnVmZmVyX29mZnNldCwKICAgICpzcmM9dnAtPnNhbXBsZS0+ZGF0YTsKCgoKCgoK
CiAgdWludDMyCiAgICBpLCBqOwoKCiAgb3ZlcnNob290ID0gc3JjWyhzZT4+MTMpLTFdIC8gNTA7
CiAgaWYgKG92ZXJzaG9vdCA8IDApIG92ZXJzaG9vdCA9IC1vdmVyc2hvb3Q7CgogIGlmIChvZnMg
PD0gbHMpCiAgICB7CgoKCiAgICAgIGlmIChpbmNyIDwgMCkgaSA9IGxzIC0gb2ZzOwogICAgICAg
IGVsc2UKICAgICAgaSA9IChscyAtIG9mcykgLyBpbmNyICsgMTsKICAgICAgaWYgKGkgPiBjb3Vu
dCkKICAgICAgICB7CiAgICAgICAgICBpID0gY291bnQ7CiAgICAgICAgICBjb3VudCA9IDA7CiAg
ICAgICAgfQogICAgICBlbHNlIGNvdW50IC09IGk7CiAgICAgIGZvcihqID0gMDsgaiA8IGk7IGor
KykKICAgICAgICB7CgogICAgICAgIG9mZnNldCA9IG9mcyA+PiAxMzsKCiAgICAgICAgaWYgKG9m
cyA+PSBzZSkgewogICAgICAgICAgICAgICAgaW50MzIgZGVsdGEgPSAoaW50MzIpKChvZnMgLSBz
ZSk+PjEzKSA7CiAgICAgICAgICAgICAgICB2MSA9IChpbnQzMilzcmNbKGludCkoc2U+PjEzKS0x
XTsKICAgICAgICAgICAgICAgIHYxIC09IChkZWx0YSsxKSAqIHYxIC8gb3ZlcnNob290OwogICAg
ICAgIH1lbHNlIHYxID0gKGludDMyKXNyY1tvZmZzZXRdOwogICAgICAgIGlmIChvZnMgKyAoMUw8
PDEzKSA+PSBzZSkgewogICAgICAgICAgICAgICAgdjIgPSB2MTsKICAgICAgICB9ZWxzZSB2MiA9
IChpbnQzMilzcmNbb2Zmc2V0KzFdOwogICAgICAgIGlmKGRvbnRfY3NwbGluZSB8fAogICAgICAg
ICAgICgob2ZzLSgxTDw8MTMpKTxscyl8fCgob2ZzKygyTDw8MTMpKT5sZSkpewogICAgICAgICAg
ICAgICAgKmRlc3QrKyA9IChzYW1wbGVfdCkodjEgKyAoKGludDMyKSgodjItdjEpICogKGludDMy
KShvZnMgJiAofiAoMHhGRkZGRkZGRiA8PCAxMykpKSkgPj4gMTMpKTsKICAgICAgICB9ZWxzZXsK
ICAgICAgICAgICAgICAgIG9mc2Q9b2ZzOwogICAgICAgICAgICAgICAgdjAgPSAoaW50MzIpc3Jj
W29mZnNldC0xXTsKICAgICAgICAgICAgICAgIHYzID0gKGludDMyKXNyY1tvZmZzZXQrMl07CiAg
ICAgICAgICAgICAgICBvZnMgJj0gKH4gKDB4RkZGRkZGRkYgPDwgMTMpKTsKICAgICAgICAgICAg
ICAgIHRlbXA9djI7CiAgICAgICAgICAgICAgICB2MiA9ICg2KnYyICsKICAgICAgICAgICAgICAg
ICAgICAgICgoKCggKCAoNSp2MyAtIDExKnYyICsgNyp2MSAtIHYwKSoKICAgICAgICAgICAgICAg
ICAgICAgICAoaW50MzIpb2ZzKSA+PjEzKSooaW50MzIpb2ZzKT4+KDEzICsyKSktMSkpKihpbnQz
MilvZnM7CiAgICAgICAgICAgICAgICBvZnMgPSAoMUwgPDwgMTMpIC0gb2ZzOwogICAgICAgICAg
ICAgICAgdjEgPSAoNip2MSArCiAgICAgICAgICAgICAgICAgICAgICAoKCgoKCg1KnYwIC0gMTEq
djEgKyA3KnRlbXAgLSB2MykqCiAgICAgICAgICAgICAgICAgICAgICAgKGludDMyKW9mcyk+PjEz
KSooaW50MzIpb2ZzKT4+KDEzICsyKSktMSkpKihpbnQzMilvZnM7CiAgICAgICAgICAgICAgICB2
MSA9ICh2MSArIHYyKS8oNkw8PDEzKTsKICAgICAgICAgICAgICAgICpkZXN0KysgPSAoc2FtcGxl
X3QpKCh2MSA+IDMyNzY3KT8gMzI3Njc6ICgodjEgPCAtMzI3NjgpPyAtMzI3Njg6IHYxKSk7CiAg
ICAgICAgICAgICAgICBvZnM9b2ZzZDsKICAgICAgICB9CiAgICAgICAgICBvZnMgKz0gaW5jcjsK
ICAgICAgICB9CiAgICB9CgoKCiAgd2hpbGUoY291bnQpCiAgICB7CgoKICAgICAgaSA9ICgoaW5j
ciA+IDAgPyBsZSA6IGxzKSAtIG9mcykgLyBpbmNyICsgMTsKCgoKCiAgICAgIGlmIChpID4gY291
bnQpCiAgICAgICAgewogICAgICAgICAgaSA9IGNvdW50OwogICAgICAgICAgY291bnQgPSAwOwog
ICAgICAgIH0KICAgICAgZWxzZSBjb3VudCAtPSBpOwogICAgICBmb3IoaiA9IDA7IGogPCBpICYm
IG9mcyA8IHNlOyBqKyspCiAgICAgICAgewoKICAgICAgICBvZmZzZXQgPSBvZnMgPj4gMTM7Cgog
ICAgICAgIGlmIChvZnMgPj0gc2UpIHsKICAgICAgICAgICAgICAgIGludDMyIGRlbHRhID0gKGlu
dDMyKSgob2ZzIC0gc2UpPj4xMykgOwogICAgICAgICAgICAgICAgdjEgPSAoaW50MzIpc3JjWyhp
bnQpKHNlPj4xMyktMV07CiAgICAgICAgICAgICAgICB2MSAtPSAoZGVsdGErMSkgKiB2MSAvIG92
ZXJzaG9vdDsKICAgICAgICB9ZWxzZSB2MSA9IChpbnQzMilzcmNbb2Zmc2V0XTsKICAgICAgICBp
ZiAob2ZzICsgKDFMPDwxMykgPj0gc2UpIHsKICAgICAgICAgICAgICAgIHYyID0gdjE7CiAgICAg
ICAgfWVsc2UgdjIgPSAoaW50MzIpc3JjW29mZnNldCsxXTsKICAgICAgICBpZihkb250X2NzcGxp
bmUgfHwKICAgICAgICAgICAoKG9mcy0oMUw8PDEzKSk8bHMpfHwoKG9mcysoMkw8PDEzKSk+bGUp
KXsKICAgICAgICAgICAgICAgICpkZXN0KysgPSAoc2FtcGxlX3QpKHYxICsgKChpbnQzMikoKHYy
LXYxKSAqIChpbnQzMikob2ZzICYgKH4gKDB4RkZGRkZGRkYgPDwgMTMpKSkpID4+IDEzKSk7CiAg
ICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBvZnNkPW9mczsKICAgICAgICAgICAgICAgIHYw
ID0gKGludDMyKXNyY1tvZmZzZXQtMV07CiAgICAgICAgICAgICAgICB2MyA9IChpbnQzMilzcmNb
b2Zmc2V0KzJdOwogICAgICAgICAgICAgICAgb2ZzICY9ICh+ICgweEZGRkZGRkZGIDw8IDEzKSk7
CiAgICAgICAgICAgICAgICB0ZW1wPXYyOwogICAgICAgICAgICAgICAgdjIgPSAoNip2MiArCiAg
ICAgICAgICAgICAgICAgICAgICAoKCgoICggKDUqdjMgLSAxMSp2MiArIDcqdjEgLSB2MCkqCiAg
ICAgICAgICAgICAgICAgICAgICAgKGludDMyKW9mcykgPj4xMykqKGludDMyKW9mcyk+PigxMyAr
MikpLTEpKSooaW50MzIpb2ZzOwogICAgICAgICAgICAgICAgb2ZzID0gKDFMIDw8IDEzKSAtIG9m
czsKICAgICAgICAgICAgICAgIHYxID0gKDYqdjEgKwogICAgICAgICAgICAgICAgICAgICAgKCgo
KCgoNSp2MCAtIDExKnYxICsgNyp0ZW1wIC0gdjMpKgogICAgICAgICAgICAgICAgICAgICAgIChp
bnQzMilvZnMpPj4xMykqKGludDMyKW9mcyk+PigxMyArMikpLTEpKSooaW50MzIpb2ZzOwogICAg
ICAgICAgICAgICAgdjEgPSAodjEgKyB2MikvKDZMPDwxMyk7CiAgICAgICAgICAgICAgICAqZGVz
dCsrID0gKHNhbXBsZV90KSgodjEgPiAzMjc2Nyk/IDMyNzY3OiAoKHYxIDwgLTMyNzY4KT8gLTMy
NzY4OiB2MSkpOwogICAgICAgICAgICAgICAgb2ZzPW9mc2Q7CiAgICAgICAgfQogICAgICAgICAg
b2ZzICs9IGluY3I7CiAgICAgICAgfQojIDQ5MSAiLi4vLi4va21pZGkvcmVzYW1wbGUuY3BwIgog
ICAgICAgICAgaW5jciAqPSAtMTsKCiAgICB9CgogIHZwLT5zYW1wbGVfaW5jcmVtZW50PWluY3I7
CiAgdnAtPnNhbXBsZV9vZmZzZXQ9b2ZzOwogIHJldHVybiByZXNhbXBsZV9idWZmZXIrcmVzYW1w
bGVfYnVmZmVyX29mZnNldDsKfQoKCgoKc3RhdGljIHVpbnQzMiB2aWJfcGhhc2VfdG9faW5jX3B0
cih1aW50MzIgcGhhc2UpCnsKICBpZiAocGhhc2UgPCAzMi8yKQogICAgcmV0dXJuIDMyLzItMS1w
aGFzZTsKICBlbHNlIGlmIChwaGFzZSA+PSAzKjMyLzIpCiAgICByZXR1cm4gNSozMi8yLTEtcGhh
c2U7CiAgZWxzZQogICAgcmV0dXJuIHBoYXNlLTMyLzI7Cn0KCnN0YXRpYyBpbnQzMiB1cGRhdGVf
dmlicmF0byhWb2ljZSAqdnAsIGludCBzaWduKQp7CiAgdWludDMyIGRlcHRoLCBmcmVxPXZwLT5m
cmVxdWVuY3k7CgogIEZMT0FUX1QgbW9kX2Ftb3VudD12cC0+c2FtcGxlLT5tb2RFbnZUb1BpdGNo
OwoKICB1aW50MzIgcGhhc2U7CiAgaW50IHBiOwogIGRvdWJsZSBhOwoKICBpZih2cC0+dmlicmF0
b19kZWxheSA+IDApCiAgewogICAgICB2cC0+dmlicmF0b19kZWxheSAtPSB2cC0+dmlicmF0b19j
b250cm9sX3JhdGlvOwogICAgICBpZih2cC0+dmlicmF0b19kZWxheSA+IDApCiAgICAgICAgICBy
ZXR1cm4gdnAtPnNhbXBsZV9pbmNyZW1lbnQ7CiAgfQoKICBpZiAodnAtPnZpYnJhdG9fcGhhc2Ur
KyA+PSAyKjMyIC0xKQogICAgdnAtPnZpYnJhdG9fcGhhc2U9MDsKICBwaGFzZT12aWJfcGhhc2Vf
dG9faW5jX3B0cih2cC0+dmlicmF0b19waGFzZSk7CgogIGlmICh2cC0+dmlicmF0b19zYW1wbGVf
aW5jcmVtZW50W3BoYXNlXSkKICAgIHsKICAgICAgaWYgKHNpZ24pCiAgICAgICAgcmV0dXJuIC12
cC0+dmlicmF0b19zYW1wbGVfaW5jcmVtZW50W3BoYXNlXTsKICAgICAgZWxzZQogICAgICAgIHJl
dHVybiB2cC0+dmlicmF0b19zYW1wbGVfaW5jcmVtZW50W3BoYXNlXTsKICAgIH0KCgoKICBkZXB0
aCA9IHZwLT52aWJyYXRvX2RlcHRoOwogIGlmKGRlcHRoIDwgdnAtPm1vZHVsYXRpb25fd2hlZWwp
CiAgICAgIGRlcHRoID0gdnAtPm1vZHVsYXRpb25fd2hlZWw7CiAgZGVwdGggPDw9IDc7CgogIGlm
ICh2cC0+dmlicmF0b19zd2VlcCAmJiAhdnAtPm1vZHVsYXRpb25fd2hlZWwpCiAgICB7CgogICAg
ICB2cC0+dmlicmF0b19zd2VlcF9wb3NpdGlvbiArPSB2cC0+dmlicmF0b19zd2VlcDsKICAgICAg
aWYgKHZwLT52aWJyYXRvX3N3ZWVwX3Bvc2l0aW9uID49ICgxPDwxNikpCiAgICAgICAgdnAtPnZp
YnJhdG9fc3dlZXA9MDsKICAgICAgZWxzZQogICAgICAgIHsKCiAgICAgICAgICBkZXB0aCAqPSB2
cC0+dmlicmF0b19zd2VlcF9wb3NpdGlvbjsKICAgICAgICAgIGRlcHRoID4+PSAxNjsKICAgICAg
ICB9CiAgICB9CgoKCiAgaWYgKHVwZGF0ZV9tb2R1bGF0aW9uX3NpZ25hbCgwKSkgbW9kX2Ftb3Vu
dCA9IDA7CiAgZWxzZQoKICBpZiAobW9kX2Ftb3VudD4wLjAyKQogICBmcmVxID0gKGludDMyKSgg
KGRvdWJsZSlmcmVxKigxLjAgKyAobW9kX2Ftb3VudCAtIDEuMCkgKiAodnAtPm1vZHVsYXRpb25f
dm9sdW1lPj4yMikgLyAyNTUuMCkgKTsKCgogIHBiPShpbnQpKCgoc2luKCgyKjMuMTQxNTkyNjUz
NTg5NzkzMjM4NDYvMTAyNC4wKSAqICh2cC0+dmlicmF0b19waGFzZSAqICgxMDI0LygyKjMyKSkp
KSkKCiAgICAgICAgICAgICogKGRvdWJsZSkoZGVwdGgpICogMS4wTCkpOwoKICBhID0gKCgoKGRv
dWJsZSkodnAtPnNhbXBsZS0+c2FtcGxlX3JhdGUpICogKGRvdWJsZSkoZnJlcSkpIC8gKChkb3Vi
bGUpKHZwLT5zYW1wbGUtPnJvb3RfZnJlcSkgKiAoZG91YmxlKShwbGF5X21vZGUtPnJhdGUpKSkg
KiAoZG91YmxlKSgxPDwoMTMpKSk7CgoKCgogIGlmKHBiPDApCiAgewogICAgICBwYiA9IC1wYjsK
ICAgICAgYSAvPSBiZW5kX2ZpbmVbKHBiPj41KSAmIDB4RkZdICogYmVuZF9jb2Fyc2VbcGI+PjEz
XTsKICB9CiAgZWxzZQogICAgICBhICo9IGJlbmRfZmluZVsocGI+PjUpICYgMHhGRl0gKiBiZW5k
X2NvYXJzZVtwYj4+MTNdOwogIGEgKz0gMC41OwoKCiAgaWYgKCF2cC0+dmlicmF0b19zd2VlcCB8
fCB2cC0+bW9kdWxhdGlvbl93aGVlbCkKICAgIHZwLT52aWJyYXRvX3NhbXBsZV9pbmNyZW1lbnRb
cGhhc2VdPShpbnQzMikgYTsKCiAgaWYgKHNpZ24pCiAgICBhID0gLWE7CgogIHJldHVybiAoaW50
MzIpIGE7Cn0KCnN0YXRpYyBzYW1wbGVfdCAqcnNfdmliX3BsYWluKGludCB2LCB1aW50MzIgKmNv
dW50cHRyKQp7CgoKCiAgVm9pY2UgKnZwPSZ2b2ljZVt2XTsKICBpbnQzMiBvZnNkLCB2MCwgdjEs
IHYyLCB2MywgdGVtcCwgb3ZlcnNob290OwogIGludCBvZmZzZXQ7CiAgc2FtcGxlX3QKICAgICpk
ZXN0PXJlc2FtcGxlX2J1ZmZlcityZXNhbXBsZV9idWZmZXJfb2Zmc2V0LAogICAgKnNyYz12cC0+
c2FtcGxlLT5kYXRhOwogIGludDMyCiAgICBpbmNyPXZwLT5zYW1wbGVfaW5jcmVtZW50OwoKCiAg
dWludDMyCiAgICBscz0wLAogICAgbGU9dnAtPnNhbXBsZS0+ZGF0YV9sZW5ndGg7CgogIHVpbnQz
MgogICAgb2ZzPXZwLT5zYW1wbGVfb2Zmc2V0LAogICAgc2U9dnAtPnNhbXBsZS0+ZGF0YV9sZW5n
dGgsCiAgICBjb3VudD0qY291bnRwdHI7CiAgdWludDMyCiAgICBjYz12cC0+dmlicmF0b19jb250
cm9sX2NvdW50ZXI7CgoKCiAgaWYgKGluY3I8MCkgaW5jciA9IC1pbmNyOwoKICBvdmVyc2hvb3Qg
PSBzcmNbKHNlPj4xMyktMV0gLyA1MDsKICBpZiAob3ZlcnNob290IDwgMCkgb3ZlcnNob290ID0g
LW92ZXJzaG9vdDsKICB3aGlsZSAoY291bnQtLSkKICAgIHsKICAgICAgaWYgKCFjYy0tKQogICAg
ICAgIHsKICAgICAgICAgIGNjPXZwLT52aWJyYXRvX2NvbnRyb2xfcmF0aW87CiAgICAgICAgICBp
bmNyPXVwZGF0ZV92aWJyYXRvKHZwLCAwKTsKICAgICAgICB9CgogICAgICAgIG9mZnNldCA9IG9m
cyA+PiAxMzsKCiAgICAgICAgaWYgKG9mcyA+PSBzZSkgewogICAgICAgICAgICAgICAgaW50MzIg
ZGVsdGEgPSAoaW50MzIpKChvZnMgLSBzZSk+PjEzKSA7CiAgICAgICAgICAgICAgICB2MSA9IChp
bnQzMilzcmNbKGludCkoc2U+PjEzKS0xXTsKICAgICAgICAgICAgICAgIHYxIC09IChkZWx0YSsx
KSAqIHYxIC8gb3ZlcnNob290OwogICAgICAgIH1lbHNlIHYxID0gKGludDMyKXNyY1tvZmZzZXRd
OwogICAgICAgIGlmIChvZnMgKyAoMUw8PDEzKSA+PSBzZSkgewogICAgICAgICAgICAgICAgdjIg
PSB2MTsKICAgICAgICB9ZWxzZSB2MiA9IChpbnQzMilzcmNbb2Zmc2V0KzFdOwogICAgICAgIGlm
KGRvbnRfY3NwbGluZSB8fAogICAgICAgICAgICgob2ZzLSgxTDw8MTMpKTxscyl8fCgob2ZzKygy
TDw8MTMpKT5sZSkpewogICAgICAgICAgICAgICAgKmRlc3QrKyA9IChzYW1wbGVfdCkodjEgKyAo
KGludDMyKSgodjItdjEpICogKGludDMyKShvZnMgJiAofiAoMHhGRkZGRkZGRiA8PCAxMykpKSkg
Pj4gMTMpKTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIG9mc2Q9b2ZzOwogICAgICAg
ICAgICAgICAgdjAgPSAoaW50MzIpc3JjW29mZnNldC0xXTsKICAgICAgICAgICAgICAgIHYzID0g
KGludDMyKXNyY1tvZmZzZXQrMl07CiAgICAgICAgICAgICAgICBvZnMgJj0gKH4gKDB4RkZGRkZG
RkYgPDwgMTMpKTsKICAgICAgICAgICAgICAgIHRlbXA9djI7CiAgICAgICAgICAgICAgICB2MiA9
ICg2KnYyICsKICAgICAgICAgICAgICAgICAgICAgICgoKCggKCAoNSp2MyAtIDExKnYyICsgNyp2
MSAtIHYwKSoKICAgICAgICAgICAgICAgICAgICAgICAoaW50MzIpb2ZzKSA+PjEzKSooaW50MzIp
b2ZzKT4+KDEzICsyKSktMSkpKihpbnQzMilvZnM7CiAgICAgICAgICAgICAgICBvZnMgPSAoMUwg
PDwgMTMpIC0gb2ZzOwogICAgICAgICAgICAgICAgdjEgPSAoNip2MSArCiAgICAgICAgICAgICAg
ICAgICAgICAoKCgoKCg1KnYwIC0gMTEqdjEgKyA3KnRlbXAgLSB2MykqCiAgICAgICAgICAgICAg
ICAgICAgICAgKGludDMyKW9mcyk+PjEzKSooaW50MzIpb2ZzKT4+KDEzICsyKSktMSkpKihpbnQz
MilvZnM7CiAgICAgICAgICAgICAgICB2MSA9ICh2MSArIHYyKS8oNkw8PDEzKTsKICAgICAgICAg
ICAgICAgICpkZXN0KysgPSAoc2FtcGxlX3QpKCh2MSA+IDMyNzY3KT8gMzI3Njc6ICgodjEgPCAt
MzI3NjgpPyAtMzI3Njg6IHYxKSk7CiAgICAgICAgICAgICAgICBvZnM9b2ZzZDsKICAgICAgICB9
CiAgICAgIG9mcyArPSBpbmNyOwogICAgICBpZiAob2ZzID49IHNlICsgKG92ZXJzaG9vdCA8PCAx
MykpCiAgICAgICAgewogICAgICAgICAgaWYgKCEodnAtPnN0YXR1cyYoMTw8MCkpKQogICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgdnAtPnN0YXR1cz0oMTw8MCk7CiAgICAgICAgICAgICAgY3Rs
LT5ub3RlKHYpOwogICAgICAgICAgICB9CiAgICAgICAgICAqY291bnRwdHItPWNvdW50KzE7CiAg
ICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogIHZwLT52aWJyYXRvX2NvbnRyb2xfY291
bnRlcj1jYzsKICB2cC0+c2FtcGxlX2luY3JlbWVudD1pbmNyOwogIHZwLT5zYW1wbGVfb2Zmc2V0
PW9mczsKICByZXR1cm4gcmVzYW1wbGVfYnVmZmVyK3Jlc2FtcGxlX2J1ZmZlcl9vZmZzZXQ7Cn0K
CnN0YXRpYyBzYW1wbGVfdCAqcnNfdmliX2xvb3AoaW50IHYsIFZvaWNlICp2cCwgdWludDMyICpj
b3VudHB0cikKewoKICBpbnQzMiBvZnNkLCB2MCwgdjEsIHYyLCB2MywgdGVtcCwgb3ZlcnNob290
OwogIGludCBvZmZzZXQ7CiAgaW50MzIKICAgIGluY3I9dnAtPnNhbXBsZV9pbmNyZW1lbnQ7Cgog
IHVpbnQzMgoKICAgIGxzPXZwLT5sb29wX3N0YXJ0LAoKICAgIGxlPXZwLT5sb29wX2VuZCwKICAg
IGxsPWxlIC0gdnAtPmxvb3Bfc3RhcnQ7CiAgc2FtcGxlX3QKICAgICpkZXN0PXJlc2FtcGxlX2J1
ZmZlcityZXNhbXBsZV9idWZmZXJfb2Zmc2V0LAogICAgKnNyYz12cC0+c2FtcGxlLT5kYXRhOwog
IHVpbnQzMgogICAgb2ZzPXZwLT5zYW1wbGVfb2Zmc2V0LAogICAgc2U9dnAtPnNhbXBsZS0+ZGF0
YV9sZW5ndGgsCiAgICBjb3VudCA9ICpjb3VudHB0cjsKICB1aW50MzIKICAgIGNjPXZwLT52aWJy
YXRvX2NvbnRyb2xfY291bnRlcjsKICBpbnQKICAgIGZsYWdfZXhpdF9sb29wOwoKCiAgZmxhZ19l
eGl0X2xvb3AgPQogICAgICAgICh2cC0+c3RhdHVzICYgKCgxPDwwKSB8ICgxPDw0KSkpIHx8CiAg
ICAgICAgKCh2cC0+c3RhdHVzICYgKDE8PDMpKSAmJiAodnAtPnNhbXBsZS0+bW9kZXMgJiAoMTw8
NykpICkgfHwKICAgICAgICAoKHZwLT5zdGF0dXMgJiAoMTw8MykpICYmIGRvbnRfa2VlcF9sb29w
aW5nICkgOwoKICBvdmVyc2hvb3QgPSBzcmNbKHNlPj4xMyktMV0gLyA1MDsKICBpZiAob3ZlcnNo
b290IDwgMCkgb3ZlcnNob290ID0gLW92ZXJzaG9vdDsKICB3aGlsZSAoY291bnQtLSkKICAgIHsK
ICAgICAgaWYgKCFjYy0tKQogICAgICAgIHsKICAgICAgICAgIGNjPXZwLT52aWJyYXRvX2NvbnRy
b2xfcmF0aW87CiAgICAgICAgICBpbmNyPXVwZGF0ZV92aWJyYXRvKHZwLCAwKTsKICAgICAgICB9
CgogICAgICAgIG9mZnNldCA9IG9mcyA+PiAxMzsKCiAgICAgICAgaWYgKG9mcyA+PSBzZSkgewog
ICAgICAgICAgICAgICAgaW50MzIgZGVsdGEgPSAoaW50MzIpKChvZnMgLSBzZSk+PjEzKSA7CiAg
ICAgICAgICAgICAgICB2MSA9IChpbnQzMilzcmNbKGludCkoc2U+PjEzKS0xXTsKICAgICAgICAg
ICAgICAgIHYxIC09IChkZWx0YSsxKSAqIHYxIC8gb3ZlcnNob290OwogICAgICAgIH1lbHNlIHYx
ID0gKGludDMyKXNyY1tvZmZzZXRdOwogICAgICAgIGlmIChvZnMgKyAoMUw8PDEzKSA+PSBzZSkg
ewogICAgICAgICAgICAgICAgdjIgPSB2MTsKICAgICAgICB9ZWxzZSB2MiA9IChpbnQzMilzcmNb
b2Zmc2V0KzFdOwogICAgICAgIGlmKGRvbnRfY3NwbGluZSB8fAogICAgICAgICAgICgob2ZzLSgx
TDw8MTMpKTxscyl8fCgob2ZzKygyTDw8MTMpKT5sZSkpewogICAgICAgICAgICAgICAgKmRlc3Qr
KyA9IChzYW1wbGVfdCkodjEgKyAoKGludDMyKSgodjItdjEpICogKGludDMyKShvZnMgJiAofiAo
MHhGRkZGRkZGRiA8PCAxMykpKSkgPj4gMTMpKTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAg
ICAgIG9mc2Q9b2ZzOwogICAgICAgICAgICAgICAgdjAgPSAoaW50MzIpc3JjW29mZnNldC0xXTsK
ICAgICAgICAgICAgICAgIHYzID0gKGludDMyKXNyY1tvZmZzZXQrMl07CiAgICAgICAgICAgICAg
ICBvZnMgJj0gKH4gKDB4RkZGRkZGRkYgPDwgMTMpKTsKICAgICAgICAgICAgICAgIHRlbXA9djI7
CiAgICAgICAgICAgICAgICB2MiA9ICg2KnYyICsKICAgICAgICAgICAgICAgICAgICAgICgoKCgg
KCAoNSp2MyAtIDExKnYyICsgNyp2MSAtIHYwKSoKICAgICAgICAgICAgICAgICAgICAgICAoaW50
MzIpb2ZzKSA+PjEzKSooaW50MzIpb2ZzKT4+KDEzICsyKSktMSkpKihpbnQzMilvZnM7CiAgICAg
ICAgICAgICAgICBvZnMgPSAoMUwgPDwgMTMpIC0gb2ZzOwogICAgICAgICAgICAgICAgdjEgPSAo
Nip2MSArCiAgICAgICAgICAgICAgICAgICAgICAoKCgoKCg1KnYwIC0gMTEqdjEgKyA3KnRlbXAg
LSB2MykqCiAgICAgICAgICAgICAgICAgICAgICAgKGludDMyKW9mcyk+PjEzKSooaW50MzIpb2Zz
KT4+KDEzICsyKSktMSkpKihpbnQzMilvZnM7CiAgICAgICAgICAgICAgICB2MSA9ICh2MSArIHYy
KS8oNkw8PDEzKTsKICAgICAgICAgICAgICAgICpkZXN0KysgPSAoc2FtcGxlX3QpKCh2MSA+IDMy
NzY3KT8gMzI3Njc6ICgodjEgPCAtMzI3NjgpPyAtMzI3Njg6IHYxKSk7CiAgICAgICAgICAgICAg
ICBvZnM9b2ZzZDsKICAgICAgICB9CiAgICAgIG9mcyArPSBpbmNyOwogICAgICBpZiAob2ZzPj1s
ZSkKICAgICAgICB7CiAgICAgICAgICBpZiAoZmxhZ19leGl0X2xvb3ApCiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgIHZwLT5lY2hvX2RlbGF5IC09IGxsID4+IDEzOwogICAgICAgICAgICAg
ICAgaWYgKHZwLT5lY2hvX2RlbGF5ID49IDApIG9mcyAtPSBsbDsKICAgICAgICAgICAgfQogICAg
ICAgICAgZWxzZSBvZnMgLT0gbGw7CiAgICAgICAgfQogICAgICBpZiAob2ZzID49IHNlICsgKG92
ZXJzaG9vdCA8PCAxMykpCiAgICAgICAgewogICAgICAgICAgaWYgKCEodnAtPnN0YXR1cyYoMTw8
MCkpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdnAtPnN0YXR1cz0oMTw8MCk7CiAgICAg
ICAgICAgICAgY3RsLT5ub3RlKHYpOwogICAgICAgICAgICB9CiAgICAgICAgICAqY291bnRwdHIt
PWNvdW50KzE7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogIHZwLT52aWJyYXRv
X2NvbnRyb2xfY291bnRlcj1jYzsKICB2cC0+c2FtcGxlX2luY3JlbWVudD1pbmNyOwogIHZwLT5z
YW1wbGVfb2Zmc2V0PW9mczsKICByZXR1cm4gcmVzYW1wbGVfYnVmZmVyK3Jlc2FtcGxlX2J1ZmZl
cl9vZmZzZXQ7Cn0KCnN0YXRpYyBzYW1wbGVfdCAqcnNfdmliX2JpZGlyKGludCB2LCBWb2ljZSAq
dnAsIHVpbnQzMiBjb3VudCkKewogIGludDMyIG9mc2QsIHYwLCB2MSwgdjIsIHYzLCB0ZW1wLCBv
dmVyc2hvb3Q7CiAgaW50IG9mZnNldDsKICBpbnQzMgogICAgaW5jcj12cC0+c2FtcGxlX2luY3Jl
bWVudDsKCiAgdWludDMyCiAgICBsZT12cC0+bG9vcF9lbmQsCiAgICBscz12cC0+bG9vcF9zdGFy
dDsKICB1aW50MzIKICAgIG9mcz12cC0+c2FtcGxlX29mZnNldCwKICAgIHNlPXZwLT5zYW1wbGUt
PmRhdGFfbGVuZ3RoOwogIHNhbXBsZV90CiAgICAqZGVzdD1yZXNhbXBsZV9idWZmZXIrcmVzYW1w
bGVfYnVmZmVyX29mZnNldCwKICAgICpzcmM9dnAtPnNhbXBsZS0+ZGF0YTsKICB1aW50MzIKICAg
IGNjPXZwLT52aWJyYXRvX2NvbnRyb2xfY291bnRlcjsKCgoKCgoKCiAgdWludDMyCiAgICBpLCBq
OwogIGludAogICAgdmliZmxhZyA9IDA7CgoKICBvdmVyc2hvb3QgPSBzcmNbKHNlPj4xMyktMV0g
LyA1MDsKICBpZiAob3ZlcnNob290IDwgMCkgb3ZlcnNob290ID0gLW92ZXJzaG9vdDsKCiAgd2hp
bGUgKGNvdW50ICYmIChvZnMgPD0gbHMpKQogICAgewogICAgICBpID0gKGxzIC0gb2ZzKSAvIGlu
Y3IgKyAxOwogICAgICBpZiAoaSA+IGNvdW50KSBpID0gY291bnQ7CiAgICAgIGlmIChpID4gY2Mp
CiAgICAgICAgewogICAgICAgICAgaSA9IGNjOwogICAgICAgICAgdmliZmxhZyA9IDE7CiAgICAg
ICAgfQogICAgICBlbHNlIGNjIC09IGk7CiAgICAgIGNvdW50IC09IGk7CiAgICAgIGZvcihqID0g
MDsgaiA8IGk7IGorKykKICAgICAgICB7CgogICAgICAgIG9mZnNldCA9IG9mcyA+PiAxMzsKCiAg
ICAgICAgaWYgKG9mcyA+PSBzZSkgewogICAgICAgICAgICAgICAgaW50MzIgZGVsdGEgPSAoaW50
MzIpKChvZnMgLSBzZSk+PjEzKSA7CiAgICAgICAgICAgICAgICB2MSA9IChpbnQzMilzcmNbKGlu
dCkoc2U+PjEzKS0xXTsKICAgICAgICAgICAgICAgIHYxIC09IChkZWx0YSsxKSAqIHYxIC8gb3Zl
cnNob290OwogICAgICAgIH1lbHNlIHYxID0gKGludDMyKXNyY1tvZmZzZXRdOwogICAgICAgIGlm
IChvZnMgKyAoMUw8PDEzKSA+PSBzZSkgewogICAgICAgICAgICAgICAgdjIgPSB2MTsKICAgICAg
ICB9ZWxzZSB2MiA9IChpbnQzMilzcmNbb2Zmc2V0KzFdOwogICAgICAgIGlmKGRvbnRfY3NwbGlu
ZSB8fAogICAgICAgICAgICgob2ZzLSgxTDw8MTMpKTxscyl8fCgob2ZzKygyTDw8MTMpKT5sZSkp
ewogICAgICAgICAgICAgICAgKmRlc3QrKyA9IChzYW1wbGVfdCkodjEgKyAoKGludDMyKSgodjIt
djEpICogKGludDMyKShvZnMgJiAofiAoMHhGRkZGRkZGRiA8PCAxMykpKSkgPj4gMTMpKTsKICAg
ICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIG9mc2Q9b2ZzOwogICAgICAgICAgICAgICAgdjAg
PSAoaW50MzIpc3JjW29mZnNldC0xXTsKICAgICAgICAgICAgICAgIHYzID0gKGludDMyKXNyY1tv
ZmZzZXQrMl07CiAgICAgICAgICAgICAgICBvZnMgJj0gKH4gKDB4RkZGRkZGRkYgPDwgMTMpKTsK
ICAgICAgICAgICAgICAgIHRlbXA9djI7CiAgICAgICAgICAgICAgICB2MiA9ICg2KnYyICsKICAg
ICAgICAgICAgICAgICAgICAgICgoKCggKCAoNSp2MyAtIDExKnYyICsgNyp2MSAtIHYwKSoKICAg
ICAgICAgICAgICAgICAgICAgICAoaW50MzIpb2ZzKSA+PjEzKSooaW50MzIpb2ZzKT4+KDEzICsy
KSktMSkpKihpbnQzMilvZnM7CiAgICAgICAgICAgICAgICBvZnMgPSAoMUwgPDwgMTMpIC0gb2Zz
OwogICAgICAgICAgICAgICAgdjEgPSAoNip2MSArCiAgICAgICAgICAgICAgICAgICAgICAoKCgo
KCg1KnYwIC0gMTEqdjEgKyA3KnRlbXAgLSB2MykqCiAgICAgICAgICAgICAgICAgICAgICAgKGlu
dDMyKW9mcyk+PjEzKSooaW50MzIpb2ZzKT4+KDEzICsyKSktMSkpKihpbnQzMilvZnM7CiAgICAg
ICAgICAgICAgICB2MSA9ICh2MSArIHYyKS8oNkw8PDEzKTsKICAgICAgICAgICAgICAgICpkZXN0
KysgPSAoc2FtcGxlX3QpKCh2MSA+IDMyNzY3KT8gMzI3Njc6ICgodjEgPCAtMzI3NjgpPyAtMzI3
Njg6IHYxKSk7CiAgICAgICAgICAgICAgICBvZnM9b2ZzZDsKICAgICAgICB9CiAgICAgICAgICBv
ZnMgKz0gaW5jcjsKICAgICAgICB9CiAgICAgIGlmICh2aWJmbGFnKQogICAgICAgIHsKICAgICAg
ICAgIGNjID0gdnAtPnZpYnJhdG9fY29udHJvbF9yYXRpbzsKICAgICAgICAgIGluY3IgPSB1cGRh
dGVfdmlicmF0byh2cCwgMCk7CiAgICAgICAgICB2aWJmbGFnID0gMDsKICAgICAgICB9CiAgICB9
CgoKCiAgd2hpbGUgKGNvdW50KQogICAgewoKCiAgICAgIGkgPSAoKGluY3IgPiAwID8gbGUgOiBs
cykgLSBvZnMpIC8gaW5jciArIDE7CgoKCgogICAgICBpZihpID4gY291bnQpIGkgPSBjb3VudDsK
ICAgICAgaWYoaSA+IGNjKQogICAgICAgIHsKICAgICAgICAgIGkgPSBjYzsKICAgICAgICAgIHZp
YmZsYWcgPSAxOwogICAgICAgIH0KICAgICAgZWxzZSBjYyAtPSBpOwogICAgICBjb3VudCAtPSBp
OwogICAgICB3aGlsZSAoaS0tICYmIG9mcyA8IHNlKQogICAgICAgIHsKCiAgICAgICAgb2Zmc2V0
ID0gb2ZzID4+IDEzOwoKICAgICAgICBpZiAob2ZzID49IHNlKSB7CiAgICAgICAgICAgICAgICBp
bnQzMiBkZWx0YSA9IChpbnQzMikoKG9mcyAtIHNlKT4+MTMpIDsKICAgICAgICAgICAgICAgIHYx
ID0gKGludDMyKXNyY1soaW50KShzZT4+MTMpLTFdOwogICAgICAgICAgICAgICAgdjEgLT0gKGRl
bHRhKzEpICogdjEgLyBvdmVyc2hvb3Q7CiAgICAgICAgfWVsc2UgdjEgPSAoaW50MzIpc3JjW29m
ZnNldF07CiAgICAgICAgaWYgKG9mcyArICgxTDw8MTMpID49IHNlKSB7CiAgICAgICAgICAgICAg
ICB2MiA9IHYxOwogICAgICAgIH1lbHNlIHYyID0gKGludDMyKXNyY1tvZmZzZXQrMV07CiAgICAg
ICAgaWYoZG9udF9jc3BsaW5lIHx8CiAgICAgICAgICAgKChvZnMtKDFMPDwxMykpPGxzKXx8KChv
ZnMrKDJMPDwxMykpPmxlKSl7CiAgICAgICAgICAgICAgICAqZGVzdCsrID0gKHNhbXBsZV90KSh2
MSArICgoaW50MzIpKCh2Mi12MSkgKiAoaW50MzIpKG9mcyAmICh+ICgweEZGRkZGRkZGIDw8IDEz
KSkpKSA+PiAxMykpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgb2ZzZD1vZnM7CiAg
ICAgICAgICAgICAgICB2MCA9IChpbnQzMilzcmNbb2Zmc2V0LTFdOwogICAgICAgICAgICAgICAg
djMgPSAoaW50MzIpc3JjW29mZnNldCsyXTsKICAgICAgICAgICAgICAgIG9mcyAmPSAofiAoMHhG
RkZGRkZGRiA8PCAxMykpOwogICAgICAgICAgICAgICAgdGVtcD12MjsKICAgICAgICAgICAgICAg
IHYyID0gKDYqdjIgKwogICAgICAgICAgICAgICAgICAgICAgKCgoKCAoICg1KnYzIC0gMTEqdjIg
KyA3KnYxIC0gdjApKgogICAgICAgICAgICAgICAgICAgICAgIChpbnQzMilvZnMpID4+MTMpKihp
bnQzMilvZnMpPj4oMTMgKzIpKS0xKSkqKGludDMyKW9mczsKICAgICAgICAgICAgICAgIG9mcyA9
ICgxTCA8PCAxMykgLSBvZnM7CiAgICAgICAgICAgICAgICB2MSA9ICg2KnYxICsKICAgICAgICAg
ICAgICAgICAgICAgICgoKCgoKDUqdjAgLSAxMSp2MSArIDcqdGVtcCAtIHYzKSoKICAgICAgICAg
ICAgICAgICAgICAgICAoaW50MzIpb2ZzKT4+MTMpKihpbnQzMilvZnMpPj4oMTMgKzIpKS0xKSkq
KGludDMyKW9mczsKICAgICAgICAgICAgICAgIHYxID0gKHYxICsgdjIpLyg2TDw8MTMpOwogICAg
ICAgICAgICAgICAgKmRlc3QrKyA9IChzYW1wbGVfdCkoKHYxID4gMzI3NjcpPyAzMjc2NzogKCh2
MSA8IC0zMjc2OCk/IC0zMjc2ODogdjEpKTsKICAgICAgICAgICAgICAgIG9mcz1vZnNkOwogICAg
ICAgIH0KICAgICAgICAgIG9mcyArPSBpbmNyOwogICAgICAgIH0KICAgICAgaWYgKHZpYmZsYWcp
CiAgICAgICAgewogICAgICAgICAgY2MgPSB2cC0+dmlicmF0b19jb250cm9sX3JhdGlvOwogICAg
ICAgICAgaW5jciA9IHVwZGF0ZV92aWJyYXRvKHZwLCAoaW5jciA8IDApKTsKICAgICAgICAgIHZp
YmZsYWcgPSAwOwogICAgICAgIH0KICAgICAgaWYgKG9mcyA+PSBsZSkKICAgICAgICB7CgoKCgog
ICAgICAgICAgaW5jciAqPSAtMTsKICAgICAgICB9CiAgICAgIGVsc2UgaWYgKG9mcyA8PSBscykK
ICAgICAgICB7CgoKCiAgICAgICAgICBpbmNyICo9IC0xOwogICAgICAgIH0KICAgIH0KCgogIHZw
LT52aWJyYXRvX2NvbnRyb2xfY291bnRlcj1jYzsKICB2cC0+c2FtcGxlX2luY3JlbWVudD1pbmNy
OwogIHZwLT5zYW1wbGVfb2Zmc2V0PW9mczsKICByZXR1cm4gcmVzYW1wbGVfYnVmZmVyK3Jlc2Ft
cGxlX2J1ZmZlcl9vZmZzZXQ7Cn0KCnN0YXRpYyBpbnQgcnNfdXBkYXRlX3BvcnRhKGludCB2KQp7
CiAgICBWb2ljZSAqdnA9JnZvaWNlW3ZdOwogICAgaW50MzIgZDsKCiAgICBkID0gdnAtPnBvcnRh
X2RwYjsKICAgIGlmKHZwLT5wb3J0YV9wYiA8IDApCiAgICB7CiAgICAgICAgaWYoZCA+IC12cC0+
cG9ydGFfcGIpCiAgICAgICAgICAgIGQgPSAtdnAtPnBvcnRhX3BiOwogICAgfQogICAgZWxzZQog
ICAgewogICAgICAgIGlmKGQgPiB2cC0+cG9ydGFfcGIpCiAgICAgICAgICAgIGQgPSAtdnAtPnBv
cnRhX3BiOwogICAgICAgIGVsc2UKICAgICAgICAgICAgZCA9IC1kOwogICAgfQoKICAgIHZwLT5w
b3J0YV9wYiArPSBkOwogICAgaWYodnAtPnBvcnRhX3BiID09IDApCiAgICB7CiAgICAgICAgdnAt
PnBvcnRhX2NvbnRyb2xfcmF0aW8gPSAwOwogICAgICAgIHZwLT5wb3J0YV9wYiA9IDA7CiAgICB9
CiAgICByZWNvbXB1dGVfZnJlcSh2KTsKICAgIHJldHVybiB2cC0+cG9ydGFfY29udHJvbF9yYXRp
bzsKfQoKc3RhdGljIHNhbXBsZV90ICpwb3J0YV9yZXNhbXBsZV92b2ljZShpbnQgdiwgdWludDMy
ICpjb3VudHB0ciwgaW50IG1vZGUpCnsKICAgIFZvaWNlICp2cD0mdm9pY2Vbdl07CiAgICB1aW50
MzIgbiA9ICpjb3VudHB0cjsKICAgIHVpbnQzMiBpOwogICAgc2FtcGxlX3QgKigqIHJlc2FtcGxl
cikoaW50LCB1aW50MzIgKiwgaW50KTsKICAgIGludCBjYyA9IHZwLT5wb3J0YV9jb250cm9sX2Nv
dW50ZXI7CiAgICBpbnQgbG9vcDsKCiAgICBpZih2cC0+dmlicmF0b19jb250cm9sX3JhdGlvKQog
ICAgICAgIHJlc2FtcGxlciA9IHZpYl9yZXNhbXBsZV92b2ljZTsKICAgIGVsc2UKICAgICAgICBy
ZXNhbXBsZXIgPSBub3JtYWxfcmVzYW1wbGVfdm9pY2U7CiAgICBpZihtb2RlICE9IDEpCiAgICAg
ICAgbG9vcCA9IDE7CiAgICBlbHNlCiAgICAgICAgbG9vcCA9IDA7CgoKICAgIHJlc2FtcGxlX2J1
ZmZlcl9vZmZzZXQgPSAwOwogICAgd2hpbGUocmVzYW1wbGVfYnVmZmVyX29mZnNldCA8IG4pCiAg
ICB7CiAgICAgICAgaWYoY2MgPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIGlmKChjYyA9IHJz
X3VwZGF0ZV9wb3J0YSh2KSkgPT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaSA9
IG4gLSByZXNhbXBsZV9idWZmZXJfb2Zmc2V0OwogICAgICAgICAgICAgICAgcmVzYW1wbGVyKHYs
ICZpLCBtb2RlKTsKICAgICAgICAgICAgICAgIHJlc2FtcGxlX2J1ZmZlcl9vZmZzZXQgKz0gaTsK
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBp
ID0gbiAtIHJlc2FtcGxlX2J1ZmZlcl9vZmZzZXQ7CiAgICAgICAgaWYoaSA+ICh1aW50MzIpY2Mp
CiAgICAgICAgICAgIGkgPSAodWludDMyKWNjOwogICAgICAgIHJlc2FtcGxlcih2LCAmaSwgbW9k
ZSk7CiAgICAgICAgcmVzYW1wbGVfYnVmZmVyX29mZnNldCArPSBpOwoKCiAgICAgICAgaWYodnAt
PnN0YXR1cyA9PSAoMTw8MCkpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNjIC09IChpbnQp
aTsKICAgIH0KICAgICpjb3VudHB0ciA9IHJlc2FtcGxlX2J1ZmZlcl9vZmZzZXQ7CiAgICByZXNh
bXBsZV9idWZmZXJfb2Zmc2V0ID0gMDsKICAgIHZwLT5wb3J0YV9jb250cm9sX2NvdW50ZXIgPSBj
YzsKICAgIHJldHVybiByZXNhbXBsZV9idWZmZXI7Cn0KCnN0YXRpYyBzYW1wbGVfdCAqdmliX3Jl
c2FtcGxlX3ZvaWNlKGludCB2LCB1aW50MzIgKmNvdW50cHRyLCBpbnQgbW9kZSkKewogICAgVm9p
Y2UgKnZwID0gJnZvaWNlW3ZdOwoKCiAgICBpZihtb2RlID09IDApCiAgICAgICAgcmV0dXJuIHJz
X3ZpYl9sb29wKHYsIHZwLCBjb3VudHB0cik7CiAgICBpZihtb2RlID09IDEpCiAgICAgICAgcmV0
dXJuIHJzX3ZpYl9wbGFpbih2LCBjb3VudHB0cik7CiAgICByZXR1cm4gcnNfdmliX2JpZGlyKHYs
IHZwLCAqY291bnRwdHIpOwp9CgpzdGF0aWMgc2FtcGxlX3QgKm5vcm1hbF9yZXNhbXBsZV92b2lj
ZShpbnQgdiwgdWludDMyICpjb3VudHB0ciwgaW50IG1vZGUpCnsKICAgIFZvaWNlICp2cCA9ICZ2
b2ljZVt2XTsKICAgIGlmKG1vZGUgPT0gMCkKICAgICAgICByZXR1cm4gcnNfbG9vcCh2LCB2cCwg
Y291bnRwdHIpOwogICAgaWYobW9kZSA9PSAxKQogICAgICAgIHJldHVybiByc19wbGFpbih2LCBj
b3VudHB0cik7CiAgICByZXR1cm4gcnNfYmlkaXIodiwgdnAsICpjb3VudHB0cik7Cn0KCnNhbXBs
ZV90ICpyZXNhbXBsZV92b2ljZShpbnQgdiwgdWludDMyICpjb3VudHB0cikKewogICAgVm9pY2Ug
KnZwPSZ2b2ljZVt2XTsKICAgIGludCBtb2RlOwoKICAgIGlmKCEodnAtPnNhbXBsZS0+c2FtcGxl
X3JhdGUpKQogICAgewogICAgICAgIHVpbnQzMiBvZnM7CgoKCiAgICAgICAgb2ZzPXZwLT5zYW1w
bGVfb2Zmc2V0ID4+IDEzOwoKICAgICAgICBpZigqY291bnRwdHIgPj0gKHZwLT5zYW1wbGUtPmRh
dGFfbGVuZ3RoPj4xMykgLSBvZnMpCiAgICAgICAgewoKICAgICAgICAgIGlmICghKHZwLT5zdGF0
dXMmKDE8PDApKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIHZwLT5zdGF0dXM9KDE8PDAp
OwogICAgICAgICAgICAgIGN0bC0+bm90ZSh2KTsKICAgICAgICAgICAgfQoKCiAgICAgICAgICAg
ICpjb3VudHB0ciA9ICh2cC0+c2FtcGxlLT5kYXRhX2xlbmd0aD4+MTMpIC0gb2ZzOwogICAgICAg
IH0KICAgICAgICBlbHNlCiAgICAgICAgICAgIHZwLT5zYW1wbGVfb2Zmc2V0ICs9ICpjb3VudHB0
ciA8PCAxMzsKICAgICAgICByZXR1cm4gdnAtPnNhbXBsZS0+ZGF0YStvZnM7CiAgICB9CgogICAg
aWYgKGN1cnJlbnRfaW50ZXJwb2xhdGlvbiA9PSAyKQogICAgICAgICByZXR1cm4gcmVzYW1wbGVf
dm9pY2VfbGFncmFuZ2UodiwgY291bnRwdHIpOwogICAgZWxzZSBpZiAoY3VycmVudF9pbnRlcnBv
bGF0aW9uID09IDMpCiAgICAgICAgIHJldHVybiByZXNhbXBsZV92b2ljZV9maWx0ZXIodiwgY291
bnRwdHIpOwoKICAgIG1vZGUgPSB2cC0+c2FtcGxlLT5tb2RlczsKICAgIGlmKChtb2RlICYgKDE8
PDIpKSAmJgogICAgICAgKChtb2RlICYgKDE8PDYpKSB8fAogICAgICAgICh2cC0+c3RhdHVzICYg
KCgxPDwxKSB8ICgxPDwyKSkpKSkKICAgIHsKICAgICAgICBpZihtb2RlICYgKDE8PDMpKQogICAg
ICAgIHsKCiAgICAgICAgICAgIG1vZGUgPSAyOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAg
ICAgICAgIG1vZGUgPSAwOwogICAgfQogICAgZWxzZQogICAgICAgIG1vZGUgPSAxOwoKICAgIGlm
KHZwLT5wb3J0YV9jb250cm9sX3JhdGlvKQogICAgICAgIHJldHVybiBwb3J0YV9yZXNhbXBsZV92
b2ljZSh2LCBjb3VudHB0ciwgbW9kZSk7CgogICAgaWYodnAtPnZpYnJhdG9fY29udHJvbF9yYXRp
bykKICAgICAgICByZXR1cm4gdmliX3Jlc2FtcGxlX3ZvaWNlKHYsIGNvdW50cHRyLCBtb2RlKTsK
CiAgICByZXR1cm4gbm9ybWFsX3Jlc2FtcGxlX3ZvaWNlKHYsIGNvdW50cHRyLCBtb2RlKTsKfQoK
CnZvaWQgZG9fbG93cGFzcyhTYW1wbGUgKnNhbXBsZSwgdWludDMyIHNyYXRlLCBzYW1wbGVfdCAq
YnVmLCB1aW50MzIgY291bnQsIHVpbnQzMiBmcmVxLCBGTE9BVF9UIHJlc29uYW5jZSkKewogICAg
ZG91YmxlIGEwPTAsIGExPTAsIGEyPTAsIGIwPTAsIGIxPTA7CiAgICBkb3VibGUgeDA9MCwgeDE9
MCwgeTA9MCwgeTE9MDsKICAgIHNhbXBsZV90IHNhbXA7CiAgICBkb3VibGUgb3V0c2FtcCwgaW5z
YW1wLCBtb2RfYW1vdW50PTA7CiAgICB1aW50MzIgZmluZGV4LCBjYzsKICAgIHVpbnQzMiBjdXJy
ZW50X2ZyZXE7CgogICAgaWYgKGZyZXEgPCAyMCkgcmV0dXJuOwoKICAgIGlmIChmcmVxID4gc3Jh
dGUgKiAyKSB7CiAgICAgICAgY3RsLT5jbXNnKDIsIDAsCiAgICAgICAgICAgICAgICAgICJMb3dw
YXNzOiBjZW50ZXIgbXVzdCBiZSA8IGRhdGEgcmF0ZSoyIik7CiAgICAgICAgcmV0dXJuOwogICAg
fQoKICAgIGN1cnJlbnRfZnJlcSA9IGZyZXE7CgogICAgaWYgKHNhbXBsZS0+bW9kRW52VG9GaWx0
ZXJGYykKICAgICAgICBtb2RfYW1vdW50ID0gc2FtcGxlLT5tb2RFbnZUb0ZpbHRlckZjOwoKICAg
IGlmIChtb2RfYW1vdW50IDwgMC4wMiAmJiBmcmVxID49IDEzNTAwKSByZXR1cm47CgogICAgdm9p
Y2VbMF0uc2FtcGxlID0gc2FtcGxlOwoKCiAgICB2b2ljZVswXS5tb2R1bGF0aW9uX3N0YWdlPTA7
CiAgICB2b2ljZVswXS5tb2R1bGF0aW9uX3ZvbHVtZT0wOwogICAgdm9pY2VbMF0ubW9kdWxhdGlv
bl9kZWxheT1zYW1wbGUtPm1vZHVsYXRpb25fcmF0ZVs2XTsKICAgIGNjID0gdm9pY2VbMF0ubW9k
dWxhdGlvbl9jb3VudGVyPTA7CiAgICByZWNvbXB1dGVfbW9kdWxhdGlvbigwKTsKCgogICAgd2hp
bGUgKGNvdW50LS0pIHsKCiAgICAgICAgaWYgKCFjYykgewogICAgICAgICAgICBpZiAobW9kX2Ft
b3VudD4wLjAyKSB7CiAgICAgICAgICAgICAgICBpZiAodXBkYXRlX21vZHVsYXRpb25fc2lnbmFs
KDApKSBtb2RfYW1vdW50ID0gMDsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
IGN1cnJlbnRfZnJlcSA9ICh1aW50MzIpKCAoZG91YmxlKWZyZXEqKDEuMCArIChtb2RfYW1vdW50
IC0gMS4wKSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAodm9pY2VbMF0ubW9kdWxhdGlvbl92
b2x1bWU+PjIyKSAvIDI1NS4wKSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNjID0gY29u
dHJvbF9yYXRpbzsKICAgICAgICAgICAgZmluZGV4ID0gMSArIChjdXJyZW50X2ZyZXErNTApIC8g
MTAwOwogICAgICAgICAgICBpZiAoZmluZGV4ID4gMTAwKSBmaW5kZXggPSAxMDA7CiAgICAgICAg
ICAgIGEwID0gYnV0dGVyd29ydGhbZmluZGV4XVswXTsKICAgICAgICAgICAgYTEgPSBidXR0ZXJ3
b3J0aFtmaW5kZXhdWzFdOwogICAgICAgICAgICBhMiA9IGJ1dHRlcndvcnRoW2ZpbmRleF1bMl07
CiAgICAgICAgICAgIGIwID0gYnV0dGVyd29ydGhbZmluZGV4XVszXTsKICAgICAgICAgICAgYjEg
PSBidXR0ZXJ3b3J0aFtmaW5kZXhdWzRdOwogICAgICAgIH0KCiAgICAgICAgaWYgKG1vZF9hbW91
bnQ+MC4wMikgY2MtLTsKCiAgICAgICAgc2FtcCA9ICpidWY7CgogICAgICAgIGluc2FtcCA9IChk
b3VibGUpc2FtcDsKICAgICAgICBvdXRzYW1wID0gYTAgKiBpbnNhbXAgKyBhMSAqIHgwICsgYTIg
KiB4MSAtIGIwICogeTAgLSBiMSAqIHkxOwogICAgICAgIHgxID0geDA7CiAgICAgICAgeDAgPSBp
bnNhbXA7CiAgICAgICAgeTEgPSB5MDsKICAgICAgICB5MCA9IG91dHNhbXA7CiAgICAgICAgaWYg
KG91dHNhbXAgPiAzMjc2NykgewogICAgICAgICAgICAgICAgb3V0c2FtcCA9IDMyNzY3OwogICAg
ICAgIH0KICAgICAgICBlbHNlIGlmIChvdXRzYW1wIDwgLTMyNzY4KSB7CiAgICAgICAgICAgICAg
ICBvdXRzYW1wID0gLTMyNzY4OwogICAgICAgIH0KICAgICAgICAqYnVmKysgPSAoc2FtcGxlX3Qp
b3V0c2FtcDsKICAgIH0KfQoKCnZvaWQgcHJlX3Jlc2FtcGxlKFNhbXBsZSAqIHNwKQp7CiAgZG91
YmxlIGEsIHhkaWZmOwogIHVpbnQzMiBpLCBpbmNyLCBvZnMsIG5ld2xlbiwgY291bnQsIG92ZXJz
aG9vdDsKICBpbnQxNiAqbmV3ZGF0YSwgKmRlc3QsICpzcmMgPSAoaW50MTYgKilzcC0+ZGF0YSwg
KnZwdHIsICplbmRwdHI7CiAgaW50MzIgdjEsIHYyLCB2MywgdjQ7CiAgc3RhdGljIGNvbnN0IGNo
YXIgbm90ZV9uYW1lWzEyXVszXSA9CiAgewogICAgIkMiLCAiQyMiLCAiRCIsICJEIyIsICJFIiwg
IkYiLCAiRiMiLCAiRyIsICJHIyIsICJBIiwgIkEjIiwgIkIiCiAgfTsKCiAgY3RsLT5jbXNnKDAs
IDMsICIgKiBwcmUtcmVzYW1wbGluZyBmb3Igbm90ZSAlZCAoJXMlZCkiLAogICAgICAgICAgICBz
cC0+bm90ZV90b191c2UsCiAgICAgICAgICAgIG5vdGVfbmFtZVtzcC0+bm90ZV90b191c2UgJSAx
Ml0sIChzcC0+bm90ZV90b191c2UgJiAweDdGKSAvIDEyKTsKCiAgaWYgKHNwLT5zYW1wbGVfcmF0
ZSA9PSBwbGF5X21vZGUtPnJhdGUgJiYgc3AtPnJvb3RfZnJlcSA9PSBmcmVxX3RhYmxlWyhpbnQp
KHNwLT5ub3RlX3RvX3VzZSldKSB7CiAgICAgICAgYSA9IDE7CiAgfQogIGVsc2UgYSA9ICgoZG91
YmxlKSAoc3AtPnNhbXBsZV9yYXRlKSAqIGZyZXFfdGFibGVbKGludCkgKHNwLT5ub3RlX3RvX3Vz
ZSldKSAvCiAgICAoKGRvdWJsZSkgKHNwLT5yb290X2ZyZXEpICogcGxheV9tb2RlLT5yYXRlKTsK
CgogIGlmKHNwLT5kYXRhX2xlbmd0aCAvIGEgPj0gMHg3ZmZmZmZmZkwpCiAgewoKICAgICAgY3Rs
LT5jbXNnKDAsIDMsICIgKioqIENhbid0IHByZS1yZXNhbXBsaW5nIGZvciBub3RlICVkIiwKICAg
ICAgICAgICAgICAgIHNwLT5ub3RlX3RvX3VzZSk7CiAgICAgIHJldHVybjsKICB9CgogIGVuZHB0
ciA9IHNyYyArIChzcC0+ZGF0YV9sZW5ndGggPj4gMTMpIC0gMTsKICBpZiAoKmVuZHB0ciA8IDAp
IG92ZXJzaG9vdCA9ICh1aW50MzIpKC0oKmVuZHB0ciAvIDUwKSk7CiAgZWxzZSBvdmVyc2hvb3Qg
PSAodWludDMyKSgqZW5kcHRyIC8gNTApOwogIGlmIChvdmVyc2hvb3QgPCAyKSBvdmVyc2hvb3Qg
PSAwOwoKICBuZXdsZW4gPSAoaW50MzIpKHNwLT5kYXRhX2xlbmd0aCAvIGEpOwogIGNvdW50ID0g
KG5ld2xlbiA+PiAxMykgLSAxOwogIG9mcyA9IGluY3IgPSAoc3AtPmRhdGFfbGVuZ3RoIC0gKDEg
PDwgMTMpKSAvIGNvdW50OwoKICBpZigoZG91YmxlKW5ld2xlbiArIGluY3IgPj0gMHg3ZmZmZmZm
ZkwpCiAgewoKICAgICAgY3RsLT5jbXNnKDAsIDMsICIgKioqIENhbid0IHByZS1yZXNhbXBsaW5n
IGZvciBub3RlICVkIiwKICAgICAgICAgICAgICAgIHNwLT5ub3RlX3RvX3VzZSk7CiAgICAgIHJl
dHVybjsKICB9CgogIGRlc3QgPSBuZXdkYXRhID0gKGludDE2ICopc2FmZV9tYWxsb2MoKG5ld2xl
biA+PiAoMTMgLSAxKSkgKyAyICsgMipvdmVyc2hvb3QpOwoKICBpZiAoLS1jb3VudCkKICAgICpk
ZXN0KysgPSBzcmNbMF07CgoKCiAgY291bnQtLTsKICBmb3IoaSA9IDA7IGkgPCBjb3VudCArIG92
ZXJzaG9vdDsgaSsrKQogICAgewogICAgICB2cHRyID0gc3JjICsgKG9mcyA+PiAxMyk7CiAgICAg
IGlmIChpIDwgY291bnQgLSAyIHx8ICFvdmVyc2hvb3QpCiAgICAgICAgewogICAgICAgICAgdjEg
PSAqKHZwdHIgLSAxKTsKICAgICAgICAgIHYyID0gKnZwdHI7CiAgICAgICAgICB2MyA9ICoodnB0
ciArIDEpOwogICAgICAgICAgdjQgPSAqKHZwdHIgKyAyKTsKICAgICAgICB9CiAgICAgIGVsc2UK
ICAgICAgICB7CiAgICAgICAgICBpZiAoaSA8IGNvdW50ICsgMSkgdjEgPSAqKHZwdHIgLSAxKTsK
ICAgICAgICAgIGVsc2UgdjEgPSAqZW5kcHRyIC0gKGNvdW50LWkrMikgKiAqZW5kcHRyIC8gb3Zl
cnNob290OwogICAgICAgICAgaWYgKGkgPCBjb3VudCkgdjIgPSAqdnB0cjsKICAgICAgICAgIGVs
c2UgdjIgPSAqZW5kcHRyIC0gKGNvdW50LWkrMSkgKiAqZW5kcHRyIC8gb3ZlcnNob290OwogICAg
ICAgICAgaWYgKGkgPCBjb3VudCAtIDEpIHYzID0gKih2cHRyICsgMSk7CiAgICAgICAgICBlbHNl
IHYzID0gKmVuZHB0ciAtIChjb3VudC1pKSAqICplbmRwdHIgLyBvdmVyc2hvb3Q7CiAgICAgICAg
ICB2NCA9ICplbmRwdHIgLSAoY291bnQtaS0xKSAqICplbmRwdHIgLyBvdmVyc2hvb3Q7CiAgICAg
ICAgfQogICAgICB4ZGlmZiA9ICgoKGludDMyKShvZnMgJiAofiAoMHhGRkZGRkZGRiA8PCAxMykp
KSkgKiAoMS4wTCAvIChkb3VibGUpKDE8PCgxMykpKSk7CiAgICAgICpkZXN0KysgPSB2MiArICh4
ZGlmZiAvIDYuMCkgKiAoLTIgKiB2MSAtIDMgKiB2MiArIDYgKiB2MyAtIHY0ICsKICAgICAgeGRp
ZmYgKiAoMyAqICh2MSAtIDIgKiB2MiArIHYzKSArIHhkaWZmICogKC12MSArIDMgKiAodjIgLSB2
MykgKyB2NCkpKTsKICAgICAgb2ZzICs9IGluY3I7CiAgICB9CgogaWYgKCFvdmVyc2hvb3QpCiAg
ewogIGlmICgoaW50MzIpKG9mcyAmICh+ICgweEZGRkZGRkZGIDw8IDEzKSkpKQogICAgewogICAg
ICB2MSA9IHNyY1tvZnMgPj4gMTNdOwogICAgICB2MiA9IHNyY1sob2ZzID4+IDEzKSArIDFdOwog
ICAgICAqZGVzdCsrID0gKGludDE2KSh2MSArICgoaW50MzIpKCh2MiAtIHYxKSAqIChvZnMgJiAo
fiAoMHhGRkZGRkZGRiA8PCAxMykpKSkgPj4gMTMpKTsKICAgIH0KICBlbHNlCiAgICAqZGVzdCsr
ID0gc3JjW29mcyA+PiAxM107CiAgKmRlc3QrKyA9ICooZGVzdCAtIDEpIC8gMjsKICAqZGVzdCsr
ID0gKihkZXN0IC0gMSkgLyAyOwogIH0KCiAgc3AtPmRhdGFfbGVuZ3RoID0gbmV3bGVuICsgKG92
ZXJzaG9vdCA8PCAxMyk7CiAgc3AtPmxvb3Bfc3RhcnQgPSAoaW50MzIpKHNwLT5sb29wX3N0YXJ0
IC8gYSk7CiAgc3AtPmxvb3BfZW5kID0gKGludDMyKShzcC0+bG9vcF9lbmQgLyBhKTsKICBmcmVl
KHNwLT5kYXRhKTsKICBzcC0+ZGF0YSA9IChzYW1wbGVfdCAqKSBuZXdkYXRhOwogIHNwLT5zYW1w
bGVfcmF0ZSA9IDA7Cn0K


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