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


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

optimization/3226: Illegal code generated - fixed by -mno-push-args



>Number:         3226
>Category:       optimization
>Synopsis:       Illegal code generated - fixed by -mno-push-args
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Mon Jun 18 08:26:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Christoph Breitkopf
>Release:        3.0
>Organization:
>Environment:
Linux i386, glibc 2.1.3, kernel 2.4.5-pre1
>Description:
gcc generates illegal code for the hint benchmark (my
version, at least).  The compiled executable generates
a segmentation fault.  Adding -mno-push-args generates
correct code.  Sorry, I've not been able to come
up with a smaller test case.  The problem seems to be
that gcc jumbles the stack offset.

Command line:
gcc -v -save-temps -Wall -march=i686 -O3 -fomit-frame-pointer -ffast-math -DRESTRICT=__restrict__ -malign-double -fstrict-aliasing -fargument-noalias-global -Dunix -DDOUBLE -DIINT -o hint hint.c

Output during compilation:
Reading specs from /usr/local/bin/../lib/gcc-lib/i386-pc-linux-gnu/3.0/specs
Configured with: ../configure --prefix=/tmp/gcc-20010618-root/usr/local --enable-shared --enable-threads --disable-checking i386-pc-linux-gnu
Thread model: posix
gcc version 3.0
 /usr/local/bin/../lib/gcc-lib/i386-pc-linux-gnu/3.0/cpp0 -lang-c -v -iprefix /usr/local/bin/../lib/gcc-lib/i386-pc-linux-gnu/3.0/ -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__FAST_MATH__ -D__STDC_HOSTED__=1 -Wall -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ -D__tune_i686__ -D__tune_pentiumpro__ -DRESTRICT=__restrict__ -Dunix -DDOUBLE -DIINT hint.c hint.i
GNU CPP version 3.0 (cpplib) (i386 Linux/ELF)
ignoring nonexistent directory "/usr/local/i386-pc-linux-gnu/include"
ignoring nonexistent directory "/tmp/gcc-20010618-root/usr/local/lib/gcc-lib/i386-pc-linux-gnu/3.0/include"
ignoring nonexistent directory "/tmp/gcc-20010618-root/usr/local/lib/gcc-lib/i386-pc-linux-gnu/3.0/../../../../i386-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/lib/gcc-lib/i386-pc-linux-gnu/3.0/include
 /usr/local/include
 /usr/include
End of search list.
 /usr/local/bin/../lib/gcc-lib/i386-pc-linux-gnu/3.0/cc1 -fpreprocessed hint.i -quiet -dumpbase hint.c -march=i686 -malign-double -O3 -Wall -version -fomit-frame-pointer -ffast-math -fstrict-aliasing -fargument-noalias-global -o hint.s
GNU CPP version 3.0 (cpplib) (i386 Linux/ELF)
GNU C version 3.0 (i386-pc-linux-gnu)
	compiled by GNU C version 3.0.
hint.c: In function `main':
hint.c:334: warning: control reaches end of non-void function
hint.c:86: warning: `tscout' might be used uninitialized in this function
hint.c: In function `Run':
hint.c:382: warning: passing arg 1 of `malloc_aligned' from incompatible pointer type
hint.c:383: warning: passing arg 1 of `malloc_aligned' from incompatible pointer type
hint.c:384: warning: passing arg 1 of `malloc_aligned' from incompatible pointer type
In file included from hint.c:456:
hkernel.c: In function `Hint':
hkernel.c:33: warning: unused variable `tmerr'
 as --traditional-format -V -Qy -o hint.o hint.s
GNU assembler version 2.9.5 (i386-redhat-linux) using BFD version 2.9.5.0.22
 /usr/local/bin/../lib/gcc-lib/i386-pc-linux-gnu/3.0/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o hint /usr/lib/crt1.o /usr/lib/crti.o /usr/local/bin/../lib/gcc-lib/i386-pc-linux-gnu/3.0/crtbegin.o -L/usr/local/bin/../lib/gcc-lib/i386-pc-linux-gnu/3.0 -L/usr/local/bin/../lib/gcc-lib -L/usr/local/bin/../lib/gcc-lib/i386-pc-linux-gnu/3.0/../../.. hint.o -lgcc -lc -lgcc /usr/local/bin/../lib/gcc-lib/i386-pc-linux-gnu/3.0/crtend.o /usr/lib/crtn.o

Preprocessed source included as file attachment.
>How-To-Repeat:

>Fix:

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

IyAyMCAiaGludC5jIgojIDEgImhpbnQuaCIgMQojIDE2ICJoaW50LmgiCiMgMSAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNTAgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIyAyNTEgIi91c3IvaW5jbHVkZS9m
ZWF0dXJlcy5oIiAyIDMKIyAyNzggIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIyAyNzkgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAyIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiMgMSAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9pMzg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMTk5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMtbGludXgtZ251LzMuMC9pbmNs
dWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyAzNCAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYt
cGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9pMzg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBl
ZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDM5ICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI2ICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi
IDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvaTM4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDEg
MwojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVm
IHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7Cgpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90Owpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OSAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19p
bnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNp
Z25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKX19l
eHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRl
bnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5cGVk
ZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90Owp0eXBl
ZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5cGVkZWYgX191
X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVmIF9fdV9pbnQg
X19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19xdWFkX3QgX19s
b2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVfdDsKdHlwZWRl
ZiBsb25nIGludCBfX3JsaW1fdDsKdHlwZWRlZiBfX3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVm
IF9fdV9pbnQgX19pZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAg
fSBfX2ZzaWRfdDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRk
cl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtf
dDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBp
bnQgX19mZF9tYXNrOwojIDEwMCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVm
IHN0cnVjdAogIHsKCgoKCgoKICAgIF9fZmRfbWFzayBfX2Zkc19iaXRzWzEwMjQgLyAoOCAqIHNp
emVvZiAoX19mZF9tYXNrKSldOwoKCiAgfSBfX2ZkX3NldDsKCgp0eXBlZGVmIGludCBfX2tleV90
OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgoKCnR5cGVkZWYg
bG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlw
ZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250
NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90
IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19pbm82NF90OwoKCnR5cGVkZWYg
X19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRw
dHJfdDsKIyA0MSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKdHlwZWRlZiBzdHJ1
Y3QgX0lPX0ZJTEUgRklMRTsKIyA1NyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvX0dfY29uZmln
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAxMCAiL3Vzci9pbmNs
dWRlL19HX2NvbmZpZy5oIiAyIDMKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2
LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjg3ICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL2kzODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5
cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKIyAzMTIgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4
Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwojIDM1ICIvdXNy
L2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKdHlwZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0
ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWlu
dDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwoj
IDMxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgNDggIi91c3IvaW5jbHVkZS9saWJpby5o
IiAzCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLWxpbnV4LWdudS8zLjAvaW5j
bHVkZS9zdGRhcmcuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyAxNTQg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJ
TEU7CiMgMTY0ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIHZvaWQgX0lPX2xvY2tf
dDsKCgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0Owog
IHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTg3ICIvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMwp9OwoKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdzOwoKCgoKICBj
aGFyKiBfSU9fcmVhZF9wdHI7CiAgY2hhciogX0lPX3JlYWRfZW5kOwogIGNoYXIqIF9JT19yZWFk
X2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX3B0cjsKICBj
aGFyKiBfSU9fd3JpdGVfZW5kOwogIGNoYXIqIF9JT19idWZfYmFzZTsKICBjaGFyKiBfSU9fYnVm
X2VuZDsKCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7CiAg
Y2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0
cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7CiAg
X19vZmZfdCBfb2xkX29mZnNldDsKCgoKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBz
aWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9f
bG9ja190ICpfbG9jazsKIyAyMzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiAgX19vZmY2NF90
IF9vZmZzZXQ7CgogIGludCBfdW51c2VkMlsxNl07Cgp9OwoKCnR5cGVkZWYgc3RydWN0IF9JT19G
SUxFIF9JT19GSUxFOwoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwpleHRlcm4gc3RydWN0IF9JT19G
SUxFX3BsdXMgX0lPXzJfMV9zdGRpbl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9f
Ml8xX3N0ZG91dF87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87
CiMgMjYyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3Jl
YWRfZm4gKHZvaWQgKiBfX2Nvb2tpZSwgY2hhciAqX19idWYsIHNpemVfdCBfX25ieXRlcyk7CiMg
MjcxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRl
X2ZuICh2b2lkICogX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsIHNpemVfdCBfX24pOwoj
IDI4MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2
b2lkICogX19jb29raWUsIF9fb2ZmX3QgX19wb3MsIGludCBfX3cpOwoKCnR5cGVkZWYgaW50IF9f
aW9fY2xvc2VfZm4gKHZvaWQgKiBfX2Nvb2tpZSk7CiMgMzE4ICIvdXNyL2luY2x1ZGUvbGliaW8u
aCIgMwpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX191
ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fb3ZlcmZsb3cgKF9JT19GSUxFICosIGlu
dCkgOwojIDMzNyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fZ2V0YyAo
X0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUg
Kl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGlu
dCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9j
a2VkIChfSU9fRklMRSAqX19mcCkgOwoKCgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgKF9J
T19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4
dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwojIDM2MyAiL3Vzci9pbmNs
dWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3Ry
aWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwgX19nbnVjX3ZhX2xpc3QsIGludCAqX19yZXN0
cmljdCkgOwoKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBj
b25zdCBjaGFyICpfX3Jlc3RyaWN0LCBfX2dudWNfdmFfbGlzdCkgOwoKZXh0ZXJuIF9fc3NpemVf
dCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QpIDsKZXh0ZXJuIHNpemVfdCBf
SU9fc2dldG4gKF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90KSA7CgpleHRlcm4gX19vZmY2NF90
IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSA7CmV4dGVybiBf
X29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50KSA7CgpleHRl
cm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgOwojIDU4ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMiAzCgoKCnR5cGVkZWYgX19vZmZfdCBmcG9zX3Q7CiMgMTEwICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAx
IDMKIyAxMTEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKZXh0ZXJuIEZJTEUgKnN0ZGlu
OwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJyOwoKCgoKCgoKZXh0ZXJu
IGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwoKZXh0ZXJuIGludCByZW5h
bWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsKCgoKCmV4dGVy
biBGSUxFICp0bXBmaWxlICh2b2lkKSA7CiMgMTQzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3MpIDsKCgoKCmV4dGVybiBjaGFyICp0bXBuYW1f
ciAoY2hhciAqX19zKSA7CiMgMTYwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hh
ciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkgOwoK
CgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZmbHVz
aCAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKSA7CiMgMTgyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAq
Zm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19tb2RlcykgOwoKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9k
ZXMsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKIyAyMTIgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAzCmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9k
ZXMpIDsKIyAyMzIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lkIHNldGJ1ZiAo
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgpl
eHRlcm4gaW50IHNldHZidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYsIGludCBfX21vZGVzLCBzaXplX3QgX19uKSA7CgoKCgoKZXh0ZXJuIHZvaWQg
c2V0YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9f
YnVmLCBzaXplX3QgX19zaXplKSA7CgoKCmV4dGVybiB2b2lkIHNldGxpbmVidWYgKEZJTEUgKl9f
c3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0sIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgoKZXh0ZXJuIGlu
dCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRl
cm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCgpleHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICpfX3Jl
c3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFf
bGlzdCBfX2FyZykgOwoKCgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIDsKCgpleHRlcm4gaW50IHZzcHJp
bnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKCgoKCmV4dGVybiBpbnQgc25wcmludGYgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgLi4uKQoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgX192c25wcmludGYgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBzaXplX3QgX19tYXhsZW4sIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCgoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRf
XyAoX19wcmludGZfXywgMywgMCkpKTsKZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVz
dHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCgoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKIyAzMTAgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAz
CmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm9ybWF0LCAuLi4pIDsKIyAzMzggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQg
ZmdldGMgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0p
IDsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpIDsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0Y191
bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkICh2
b2lkKSA7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoK
CgoKZXh0ZXJuIGludCBmcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGlu
dCBwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAo
aW50IF9fYykgOwoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSA7CgoK
CgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0dyAo
aW50IF9fdywgRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAq
X19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKIyA0
MDQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3Mp
IDsKIyA0MjggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnB1dHMgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKIyA0
MzggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgcHV0cyAoX19jb25zdCBjaGFy
ICpfX3MpIDsKCgoKZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7
CgoKCmV4dGVybiBzaXplX3QgZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBf
X3NpemUsIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgpleHRlcm4g
c2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19z
aXplLCBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcykgOwoKCgoKZXh0ZXJuIHNpemVf
dCBmcmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwg
c2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVfdCBm
d3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9f
c2l6ZSwgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKCgpleHRl
cm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5j
ZSkgOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIHZv
aWQgcmV3aW5kIChGSUxFICpfX3N0cmVhbSkgOwojIDQ3NyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDMKdHlwZWRlZiBfX29mZl90IG9mZl90OwojIDQ5OSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMK
ZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zX3QgKl9f
cmVzdHJpY3QgX19wb3MpIDsKCgpleHRlcm4gaW50IGZzZXRwb3MgKEZJTEUgKl9fc3RyZWFtLCBf
X2NvbnN0IGZwb3NfdCAqX19wb3MpIDsKIyA1MzYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4
dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZW9mIChG
SUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSA7CgoK
CmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4g
aW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVycm9yX3Vu
bG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0
IGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9fY29uc3QgY2hh
ciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwojIDU2NyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMK
ZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZpbGVu
b191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChf
X2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoKZXh0ZXJu
IGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQg
KGNoYXIgKl9fcykgOwojIDYxNCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQg
ZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAo
RklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAoRklMRSAqX19zdHJl
YW0pIDsKIyA2MzUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RkaW8uaCIgMSAzCiMgMzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKZXh0ZXJu
IF9faW5saW5lIGludAp2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIF9f
Z251Y192YV9saXN0IF9fYXJnKQp7CiAgcmV0dXJuIHZmcHJpbnRmIChzdGRvdXQsIF9fZm10LCBf
X2FyZyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXIgKHZvaWQpCnsKICByZXR1cm4g
X0lPX2dldGMgKHN0ZGluKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjX3VubG9ja2Vk
IChGSUxFICpfX2ZwKQp7CiAgcmV0dXJuICgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCkt
Pl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfX2Zw
KS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyX3VubG9j
a2VkICh2b2lkKQp7CiAgcmV0dXJuICgoc3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+
X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoc3RkaW4pIDogKih1bnNpZ25lZCBjaGFyICopIChzdGRp
biktPl9JT19yZWFkX3B0cisrKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyIChp
bnQgX19jKQp7CiAgcmV0dXJuIF9JT19wdXRjIChfX2MsIHN0ZG91dCk7Cn0KCgoKCmV4dGVybiBf
X2lubGluZSBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAg
cmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3Jp
dGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDog
KHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsK
fQoKCgoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0
cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBj
aGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRy
KysgPSAoX19jKSkpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyX3VubG9ja2VkIChp
bnQgX19jKQp7CiAgcmV0dXJuICgoKHN0ZG91dCktPl9JT193cml0ZV9wdHIgPj0gKHN0ZG91dCkt
Pl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoc3Rkb3V0LCAodW5zaWduZWQgY2hhcikgKF9f
YykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCktPl9JT193cml0ZV9wdHIrKyA9IChfX2Mp
KSk7Cn0KIyAxMTAgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKZXh0ZXJuIF9faW5saW5l
IGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVh
bSktPl9mbGFncyAmIDB4MTApICE9IDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApmZXJyb3Jf
dW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdz
ICYgMHgyMCkgIT0gMCk7Cn0KIyA2MzYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyAxNyAi
aGludC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL2kzODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50
IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAg
bG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgaW50IHJlbTsKICB9IGxkaXZfdDsKIyA4MCAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAo
dm9pZCkgOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSA7Cgpl
eHRlcm4gaW50IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSA7CgpleHRlcm4gbG9uZyBpbnQg
YXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIDsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9u
ZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpIDsKCgoKZXh0ZXJuIGRvdWJs
ZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyKSA7CiMgMTA5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGxv
bmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBp
bnQgc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBs
b25nIGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCgpfX2V4dGVuc2lvbl9fCmV4
dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7CiMg
MTMyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBs
b25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7CiMgMTk2
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5h
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIGludCBfX2dyb3VwKSA7CgoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwgaW50IF9fZ3JvdXApIDsKCmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwg
KF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fZ3JvdXApIDsKCgoKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5h
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgaW50IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICogX19yZXN0cmljdCBfX25w
dHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkg
OwoKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50
ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgoKCl9fZXh0ZW5zaW9uX18K
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19jb25z
dCBjaGFyICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKiogX19yZXN0cmljdCBfX2VuZHB0ciwg
aW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKIyAyNDIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MwpleHRlcm4gX19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsKICByZXR1cm4gX19zdHJ0b2Rf
aW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGlu
dApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xfaW50
ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIHVu
c2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0
dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoj
IDI3NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5s
aW5lIGxvbmcgbG9uZyBpbnQKc3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0
dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpf
X2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRv
dXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJu
YWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBleHRl
cm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFz
ZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFz
ZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25n
IGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFyICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0
cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJu
IF9faW5saW5lIGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBz
dHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApKTsKfQpleHRlcm4gX19pbmxpbmUg
aW50CmF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIChpbnQpIHN0cnRvbCAo
X19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9u
ZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9sIChfX25w
dHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CgoKX19leHRlbnNpb25fXyBleHRlcm4g
X19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICBy
ZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQojIDMz
MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpsNjRhIChsb25nIGludCBf
X24pIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoX19jb25zdCBjaGFyICpfX3MpIDsKCgojIDEg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAx
IDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIF9fdV9jaGFy
IHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50
Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVk
ZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoKdHlwZWRl
ZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKIyA1OCAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYg
X19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBf
X25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKIyA5NiAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCnR5cGVkZWYg
X19pZF90IGlkX3Q7CgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9f
ZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9f
a2V5X3Qga2V5X3Q7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgNjggIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMK
IyA2OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7
CiMgMTIzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9pMzg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMg
MTI2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVkZWYg
dW5zaWduZWQgaW50IHVpbnQ7CiMgMTY5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlw
ZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBl
ZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBl
ZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBl
ZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKCnR5
cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19R
SV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9f
bW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2
NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKdHlwZWRlZiBpbnQgcmVn
aXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkpOwojIDE5MSAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMK
IyAyMiAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVz
LmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDM1ICIvdXNyL2luY2x1
ZGUvZW5kaWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzYg
Ii91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgMTkyICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMjUgIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAz
CiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUv
c3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMK
IyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlwZWRlZiBpbnQgX19zaWdfYXRv
bWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFs
WygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsKICB9IF9fc2lnc2V0
X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgojIDEgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDEgMwojIDgzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0aW1l
c3BlYwogIHsKICAgIGxvbmcgaW50IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7CiAgfTsK
IyAzOSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKCgoKCgpzdHJ1Y3QgdGltZXZh
bDsKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgoKdHlwZWRlZiBfX2ZkX3NldCBmZF9zZXQ7
CiMgNzQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKZXh0ZXJuIGludCBfX3NlbGVjdCAo
aW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywgX19mZF9zZXQgKl9fd3JpdGVmZHMsIF9f
ZmRfc2V0ICpfX2V4Y2VwdGZkcywgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgOwoKCmV4dGVy
biBpbnQgc2VsZWN0IChpbnQgX19uZmRzLCBfX2ZkX3NldCAqX19yZWFkZmRzLCBfX2ZkX3NldCAq
X193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhjZXB0ZmRzLCBzdHJ1Y3QgdGltZXZhbCAqX190aW1l
b3V0KSA7CiMgMTk1ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMTk4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDIgMwoKCgoKCnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsKdHlwZWRlZiBfX2ZzYmxr
Y250X3QgZnNibGtjbnRfdDsKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAzNDAg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCmV4dGVybiBpbnQzMl90IHJhbmRvbSAo
dm9pZCkgOwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIDsKCgoK
CgpleHRlcm4gdm9pZCAqIGluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqIF9f
c3RhdGVidWYsIHNpemVfdCBfX3N0YXRlbGVuKSA7CgoKCgpleHRlcm4gdm9pZCAqIHNldHN0YXRl
ICh2b2lkICogX19zdGF0ZWJ1ZikgOwoKCgoKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAg
aW50MzJfdCAqZnB0cjsKICAgIGludDMyX3QgKnJwdHI7CiAgICBpbnQzMl90ICpzdGF0ZTsKICAg
IGludCByYW5kX3R5cGU7CiAgICBpbnQgcmFuZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7CiAgICBp
bnQzMl90ICplbmRfcHRyOwogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9t
X2RhdGEgKl9fcmVzdHJpY3QgX19idWYsIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsK
CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRv
bV9kYXRhICpfX2J1ZikgOwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50IF9f
c2VlZCwgdm9pZCAqIF9fcmVzdHJpY3QgX19zdGF0ZWJ1Ziwgc2l6ZV90IF9fc3RhdGVsZW4sIHN0
cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKZXh0ZXJuIGludCBzZXRz
dGF0ZV9yICh2b2lkICogX19yZXN0cmljdCBfX3N0YXRlYnVmLCBzdHJ1Y3QgcmFuZG9tX2RhdGEg
Kl9fcmVzdHJpY3QgX19idWYpIDsKCgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSA7CgpleHRl
cm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgpleHRlcm4gaW50IHJhbmRf
ciAodW5zaWduZWQgaW50ICpfX3NlZWQpIDsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAo
dm9pZCkgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp
WzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50
IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcg
aW50IG1yYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNo
b3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19z
ZWVkdmFsKSA7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hv
cnQgaW50IF9fc2VlZDE2dlszXSkgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9y
dCBpbnQgX19wYXJhbVs3XSkgOwoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25l
ZCBzaG9ydCBpbnQgeFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBhWzNdOwogICAgdW5zaWdu
ZWQgc2hvcnQgaW50IGM7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgb2xkX3hbM107CiAgICBpbnQg
aW5pdDsKICB9OwoKCgpleHRlcm4gaW50IGRyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgpleHRl
cm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sIHN0cnVjdCBk
cmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jl
c3VsdCkgOwoKCgoKZXh0ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
cmVzdHJpY3QgX19idWZmZXIsIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgpleHRl
cm4gaW50IG5yYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sIHN0cnVjdCBk
cmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9f
cmVzdWx0KSA7CgoKCgpleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCmV4
dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwgc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwgbG9uZyBpbnQgKl9fcmVzdHJpY3Qg
X19yZXN1bHQpIDsKCgoKCmV4dGVybiBpbnQgc3JhbmQ0OF9yIChsb25nIGludCBfX3NlZWR2YWws
IHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1
bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1
ZmZlcikgOwoKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJh
bVs3XSwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsKIyA0NzQgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqIG1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgOwoKZXh0
ZXJuIHZvaWQgKiBjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKSA7CgoKCgoK
ZXh0ZXJuIHZvaWQgKiByZWFsbG9jICh2b2lkICogX19wdHIsIHNpemVfdCBfX3NpemUpIDsKCmV4
dGVybiB2b2lkIGZyZWUgKHZvaWQgKiBfX3B0cikgOwoKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9p
ZCAqIF9fcHRyKSA7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMKIyAyMiAiL3Vz
ci9pbmNsdWRlL2FsbG9jYS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwoj
IDIzICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9pMzg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjYgIi91
c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKCgoKCgpleHRlcm4gdm9pZCAqIGFsbG9jYSAoc2l6
ZV90IF9fc2l6ZSkgOwojIDQ5MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCmV4dGVy
biB2b2lkICogdmFsbG9jIChzaXplX3QgX19zaXplKSA7CgoKCgpleHRlcm4gdm9pZCBhYm9ydCAo
dm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgpleHRlcm4gaW50IGF0ZXhp
dCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSA7CgoKCgpleHRlcm4gaW50IF9fb25fZXhpdCAodm9p
ZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqIF9fYXJnKSwgdm9pZCAqIF9fYXJnKSA7
CgpleHRlcm4gaW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQg
KiBfX2FyZyksIHZvaWQgKiBfX2FyZykgOwoKCgoKCgpleHRlcm4gdm9pZCBleGl0IChpbnQgX19z
dGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKIyA1MzAgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
OwoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
OwoKCgoKCmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgOwoKCgoKCmV4dGVybiBp
bnQgc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLCBp
bnQgX19yZXBsYWNlKSA7CgoKCmV4dGVybiB2b2lkIHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9f
bmFtZSkgOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lkKSA7CiMgNTY2ICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkg
OwoKCgoKCgpleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCmV4dGVy
biBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgOwojIDU5NSAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbmFtZSwgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSA7CgoKCgoKCgp0eXBl
ZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQgKiwgX19jb25zdCB2b2lkICop
OwojIDYxMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICogYnNlYXJjaCAo
X19jb25zdCB2b2lkICogX19rZXksIF9fY29uc3Qgdm9pZCAqIF9fYmFzZSwgc2l6ZV90IF9fbm1l
bWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgoKCmV4dGVybiB2
b2lkIHFzb3J0ICh2b2lkICogX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwg
X19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCgpleHRlcm4gaW50IGFicyAoaW50IF9feCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQg
X194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNjM0ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsZGl2X3QgbGRpdiAobG9uZyBpbnQgX19u
dW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CiMgNjUxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJs
ZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9f
cmVzdHJpY3QgX19zaWduKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVl
LCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsIGNoYXIgKl9fYnVmKSA7CgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVz
dHJpY3QgX19zaWduKSA7CgpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBf
X3NpZ24pIDsKCmV4dGVybiBjaGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9f
bmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoKCmV4dGVybiBpbnQgZWN2dF9yIChkb3VibGUgX192
YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CgoKZXh0
ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9f
YnVmLCBzaXplX3QgX19sZW4pIDsKCgoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVz
dHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgpl
eHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgOwojIDY5NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCmV4dGVybiBpbnQgbWJsZW4gKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSA7CgoK
ZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2MsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNo
YXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSA7CgoKCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgKHdj
aGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBz
aXplX3QgX19uKSA7CgoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBf
X3MsIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pIDsKIyA3
MTggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IHJwbWF0Y2ggKF9fY29uc3Qg
Y2hhciAqX19yZXNwb25zZSkgOwojIDE4ICJoaW50LmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCgoK
CiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCmV4dGVy
biB2b2lkICogbWVtY3B5ICh2b2lkICogX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAq
IF9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgoKZXh0ZXJuIHZvaWQgKiBtZW1tb3Zl
ICh2b2lkICogX19kZXN0LCBfX2NvbnN0IHZvaWQgKiBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoK
CgpleHRlcm4gdm9pZCAqIG1lbWNjcHkgKHZvaWQgKiBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqIF9f
c3JjLCBpbnQgX19jLCBzaXplX3QgX19uKSA7CgoKCgoKZXh0ZXJuIHZvaWQgKiBtZW1zZXQgKHZv
aWQgKiBfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19j
b25zdCB2b2lkICogX19zMSwgX19jb25zdCB2b2lkICogX19zMiwgc2l6ZV90IF9fbikgOwoKCgpl
eHRlcm4gdm9pZCAqIG1lbWNociAoX19jb25zdCB2b2lkICogX19zLCBpbnQgX19jLCBzaXplX3Qg
X19uKSA7CiMgNzEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyY3B5
IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj
KSA7CgoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgoKZXh0ZXJuIGNoYXIg
KnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3NyYykgOwoKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz
dCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKCmV4dGVy
biBpbnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgOwoK
ZXh0ZXJuIGludCBzdHJuY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19z
Miwgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIpIDsKCmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hhciAqX19y
ZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9f
bikgOwojIDExMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpfX3N0cmR1
cCAoX19jb25zdCBjaGFyICpfX3MpIDsKZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFy
ICpfX3MpIDsKIyAxNDYgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3Ry
Y2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgOwoKZXh0ZXJuIGNoYXIgKnN0cnJjaHIg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSA7CiMgMTU4ICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDMKZXh0ZXJuIHNpemVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBj
aGFyICpfX3JlamVjdCkgOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9f
cywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkgOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29u
c3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KSA7CgpleHRlcm4gY2hhciAqc3Ry
c3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpIDsK
IyAxNzYgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RydG9rIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIDsKCgoK
CmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsK
CgoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsK
IyAyMDcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90IHN0cmxlbiAoX19j
b25zdCBjaGFyICpfX3MpIDsKIyAyMTcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4g
Y2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgOwoKCgpleHRlcm4gY2hhciAqX19zdHJlcnJv
cl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIDsKZXh0ZXJu
IGNoYXIgKnN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1
ZmxlbikgOwoKCgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqIF9fcywgc2l6ZV90IF9fbikg
OwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICogX19zcmMsIHZvaWQgKiBfX2Rl
c3QsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqIF9fcywgc2l6ZV90
IF9fbikgOwoKCmV4dGVybiBpbnQgYmNtcCAoX19jb25zdCB2b2lkICogX19zMSwgX19jb25zdCB2
b2lkICogX19zMiwgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX2MpIDsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fYykgOwoKCgpleHRlcm4gaW50IF9fZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0
ZV9fICgoY29uc3QpKTsKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChj
b25zdCkpOwojIDI2MSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBpbnQgX19zdHJj
YXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgOwpleHRlcm4g
aW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSA7
CgoKZXh0ZXJuIGludCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIsIHNpemVfdCBfX24pIDsKIyAyODIgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpl
eHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2RlbGltKSA7CiMgMzQzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiMgMzQ0ICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAxIDMK
IyA1MiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Vu
ZGlhbi5oIiAxIDMKIyA1MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3Ry
aW5nMi5oIiAyIDMKIyAzNzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4g
dm9pZCAqIF9fcmF3bWVtY2hyIChjb25zdCB2b2lkICogX19zLCBpbnQgX19jKTsKIyAzOTYgIi91
c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJj
cHlfc21hbGwgKGNoYXIgKiwgX191aW50MTZfdCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RyY3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAg
ICAgICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAg
ICAgICAgICAgICAgX191aW50MzJfdCBfX3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAg
ICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9fdWludDMyX3Qg
X191aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAq
X191ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4p
CiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwog
ICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAg
Y2FzZSAzOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBi
cmVhazsKICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFr
OwogICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19l
eHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAg
ICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAg
X191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kg
PSBfX3NyYzRfMjsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9f
c3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAg
ICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBj
YXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAg
IGJyZWFrOwogICAgfQogIHJldHVybiBfX2Rlc3Q7Cn0KIyA4NzMgIi91c3IvaW5jbHVkZS9iaXRz
L3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25z
dCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ry
Y3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdpc3RlciBz
aXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19z
W19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0
Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpf
X3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19j
b25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lz
dGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAm
JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9
IF9fcmVqZWN0MikKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4g
X19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19y
ZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVj
dDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzMg
KF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsCiAgICAg
ICAgICAgICAgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAw
OwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3Jl
amVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDIgJiYgX19zW19fcmVz
dWx0XSAhPSBfX3JlamVjdDMpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoj
IDkyOCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBzaXpl
X3QgX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0KTsKZXh0ZXJu
IF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19h
Y2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19f
cmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9
CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywg
Y2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
X19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBj
aGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0MikKewogIHJlZ2lzdGVyIHNp
emVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8
fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MikKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9f
cmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNo
YXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBzaXpl
X3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBf
X2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0g
MDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0g
PT0gX19hY2NlcHQyCiAgICAgICAgIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQzKQogICAg
KytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5ODMgIi91c3IvaW5jbHVkZS9iaXRz
L3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJwYnJrX2MyIChfX2NvbnN0
IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJr
X2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyKQp7
CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBf
X2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkg
OiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBi
cmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0Myk7CmV4
dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hh
ciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyLAogICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQz
KQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAh
PSBfX2FjY2VwdDIKICAgICAgICAgJiYgKl9fcyAhPSBfX2FjY2VwdDMpCiAgICArK19fczsKICBy
ZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7
Cn0KIyAxMDQ0ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5l
IGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4
dHApOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hh
ciBfX3NlcCwgY2hhciAqKl9fbmV4dHApCnsKICBjaGFyICpfX3Jlc3VsdDsKICBpZiAoX19zID09
ICgodm9pZCAqKTApKQogICAgX19zID0gKl9fbmV4dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXAp
CiAgICArK19fczsKICBpZiAoKl9fcyA9PSAnXDAnKQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikw
KTsKICBlbHNlCiAgICB7CiAgICAgIF9fcmVzdWx0ID0gX19zOwogICAgICB3aGlsZSAoKl9fcyAh
PSAnXDAnICYmICpfX3MgIT0gX19zZXApCiAgICAgICAgKytfX3M7CiAgICAgIGlmICgqX19zID09
ICdcMCcpCiAgICAgICAgKl9fbmV4dHAgPSBfX3M7CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAg
ICAgICAqX19zID0gJ1wwJzsKICAgICAgICAgICpfX25leHRwID0gX19zICsgMTsKICAgICAgICB9
CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTA5NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3Ry
aW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywg
Y2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIg
KipfX3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7
CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQg
KikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0KQogICAgKigqX19zKSsrID0gJ1wwJzsK
ICBlbHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50
X3AgKF9fcmVqZWN0KSAmJiAoX19yZWplY3QpID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNo
ciAoX19yZXR2YWwsIF9fcmVqZWN0KSA6IHN0cmNociAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAh
PSAoKHZvaWQgKikwKSkKICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9f
cyA9ICgodm9pZCAqKTApOwogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVj
dDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFy
IF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9
ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAo
KHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0g
X19yZWplY3QyKQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICB7CiAgICAgIHJlZ2lz
dGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYg
Kl9fY3AgIT0gX19yZWplY3QxICYmICpfX2NwICE9IF9fcmVqZWN0MikKICAgICAgICArK19fY3A7
CiAgICAgIGlmICgqX19jcCAhPSAnXDAnKQogICAgICAgIHsKICAgICAgICAgICpfX3MgPSBfX2Nw
OwogICAgICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAg
ICAqX19zID0gKCh2b2lkICopMCk7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4g
X19pbmxpbmUgY2hhciAqX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBj
aGFyIF9fcmVqZWN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9f
cmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3Ms
IGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdp
c3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTAp
KQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVq
ZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QyCiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3Jl
amVjdDMpCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIg
Y2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19j
cCAhPSBfX3JlamVjdDEgJiYgKl9fY3AgIT0gX19yZWplY3QyCiAgICAgICAgICAgICAmJiAqX19j
cCAhPSBfX3JlamVjdDMpCiAgICAgICAgKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykK
ICAgICAgICB7CiAgICAgICAgICAqX19zID0gX19jcDsKICAgICAgICAgICooKl9fcykrKyA9ICdc
MCc7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwogICAg
fQogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwX2cg
KGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hh
ciAqCl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCnsKICBy
ZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAq
KTApKQogICAgcmV0dXJuICgodm9pZCAqKTApOwogIGlmICgoKl9fcyA9IF9fZXh0ZW5zaW9uX18g
KHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoX19yZWplY3QpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKF9fcmVqZWN0KSA9PSAxKSA/ICgoX19hMCA9ICgoX19jb25zdCBjaGFyICop
IChfX3JlamVjdCkpWzBdLCBfX2EwID09ICdcMCcpID8gKCh2b2lkICopMCkgOiAoKF9fYTEgPSAo
KF9fY29uc3QgY2hhciAqKSAoX19yZWplY3QpKVsxXSwgX19hMSA9PSAnXDAnKSA/IChfX2V4dGVu
c2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19hMCkgJiYgKF9fYTApID09ICdcMCcgPyAo
Y2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9fYTApIDogc3RyY2hyIChfX3JldHZhbCwg
X19hMCkpKSA6ICgoX19hMiA9ICgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzJdLCBfX2Ey
ID09ICdcMCcpID8gX19zdHJwYnJrX2MyIChfX3JldHZhbCwgX19hMCwgX19hMSkgOiAoKChfX2Nv
bnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbM10gPT0gJ1wwJyA/IF9fc3RycGJya19jMyAoX19yZXR2
YWwsIF9fYTAsIF9fYTEsIF9fYTIpIDogc3RycGJyayAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSkg
OiBzdHJwYnJrIChfX3JldHZhbCwgX19yZWplY3QpKTsgfSkpICE9ICgodm9pZCAqKTApKQogICAg
KigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KIyAxMTg3ICIvdXNyL2luY2x1
ZGUvYml0cy9zdHJpbmcyLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDEx
ODggIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCiMgMzQ3ICIvdXNyL2luY2x1ZGUv
c3RyaW5nLmgiIDIgMwojIDE5ICJoaW50LmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAx
IDMKIyAyNyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJl
cy5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92
YWwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNs
dWRlL2JpdHMvaHVnZV92YWwuaCIgMiAzCiMgMzQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoK
CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiMgNDEgIi91c3IvaW5j
bHVkZS9tYXRoLmgiIDIgMwojIDYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRo
Y2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIGFjb3MgKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91Ymxl
IF9fYWNvcyAoZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGFzaW4gKGRvdWJsZSBfX3gpOyBl
eHRlcm4gZG91YmxlIF9fYXNpbiAoZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGF0YW4gKGRv
dWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fYXRhbiAoZG91YmxlIF9feCk7CgpleHRlcm4gZG91
YmxlIGF0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4y
IChkb3VibGUgX195LCBkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGNvcyAoZG91YmxlIF9f
eCk7IGV4dGVybiBkb3VibGUgX19jb3MgKGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGRvdWJsZSBzaW4g
KGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fc2luIChkb3VibGUgX194KTsKCmV4dGVybiBk
b3VibGUgdGFuIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX3RhbiAoZG91YmxlIF9feCk7
CiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgY29z
aCAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19jb3NoIChkb3VibGUgX194KTsKCmV4dGVy
biBkb3VibGUgc2luaCAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zaW5oIChkb3VibGUg
X194KTsKCmV4dGVybiBkb3VibGUgdGFuaCAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX190
YW5oIChkb3VibGUgX194KTsKCgoKZXh0ZXJuIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCk7IGV4
dGVybiBkb3VibGUgX19hY29zaCAoZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGFzaW5oIChk
b3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2FzaW5oIChkb3VibGUgX194KTsKCmV4dGVybiBk
b3VibGUgYXRhbmggKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fYXRhbmggKGRvdWJsZSBf
X3gpOwoKCgoKCmV4dGVybiBkb3VibGUgZXhwIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBf
X2V4cCAoZG91YmxlIF9feCk7CiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIg
MwpleHRlcm4gZG91YmxlIGZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpOyBleHRl
cm4gZG91YmxlIF9fZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCk7CgoKZXh0ZXJu
IGRvdWJsZSBsZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpOyBleHRlcm4gZG91Ymxl
IF9fbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KTsKCgpleHRlcm4gZG91YmxlIGxv
ZyAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19sb2cgKGRvdWJsZSBfX3gpOwoKCmV4dGVy
biBkb3VibGUgbG9nMTAgKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJs
ZSBfX3gpOwoKCmV4dGVybiBkb3VibGUgbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIp
OyBleHRlcm4gZG91YmxlIF9fbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpOwoKCgpl
eHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2V4cG0xIChk
b3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGxvZzFwIChkb3VibGUgX194KTsgZXh0ZXJuIGRv
dWJsZSBfX2xvZzFwIChkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGxvZ2IgKGRvdWJsZSBf
X3gpOyBleHRlcm4gZG91YmxlIF9fbG9nYiAoZG91YmxlIF9feCk7CiMgMTQzICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlIF9feCwgZG91
YmxlIF9feSk7IGV4dGVybiBkb3VibGUgX19wb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOwoK
CmV4dGVybiBkb3VibGUgc3FydCAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zcXJ0IChk
b3VibGUgX194KTsKCgoKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9f
eSk7IGV4dGVybiBkb3VibGUgX19oeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSk7CgoKCgpl
eHRlcm4gZG91YmxlIGNicnQgKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fY2JydCAoZG91
YmxlIF9feCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoZG91YmxlIF9feCk7IGV4dGVybiBk
b3VibGUgX19jZWlsIChkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGZhYnMgKGRvdWJsZSBf
X3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2ZhYnMgKGRv
dWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGZs
b29yIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194KTsKCgpl
eHRlcm4gZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOyBleHRlcm4gZG91Ymxl
IF9fZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9feSk7CgoKCgpleHRlcm4gaW50IF9faXNpbmYg
KGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGlu
dCBfX2Zpbml0ZSAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKCmV4dGVybiBpbnQgaXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGluZm5hbiAoaW50IF9fZXJy
b3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2luZm5hbiAo
aW50IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91Ymxl
IGRyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOyBleHRlcm4gZG91YmxlIF9fZHJlbSAoZG91
YmxlIF9feCwgZG91YmxlIF9feSk7CgoKCmV4dGVybiBkb3VibGUgc2lnbmlmaWNhbmQgKGRvdWJs
ZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpOwoKCgoKZXh0
ZXJuIGRvdWJsZSBjb3B5c2lnbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fY29weXNpZ24gKGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyAyMTcgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBpbnQgX19pc25hbiAoZG91YmxlIF9fdmFsdWUp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbiAoZG91Ymxl
IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGow
IChkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fajAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgajEg
KGRvdWJsZSk7IGV4dGVybiBkb3VibGUgX19qMSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqbiAo
aW50LCBkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fam4gKGludCwgZG91YmxlKTsKZXh0ZXJuIGRv
dWJsZSB5MCAoZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX3kwIChkb3VibGUpOwpleHRlcm4gZG91
YmxlIHkxIChkb3VibGUpOyBleHRlcm4gZG91YmxlIF9feTEgKGRvdWJsZSk7CmV4dGVybiBkb3Vi
bGUgeW4gKGludCwgZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX3luIChpbnQsIGRvdWJsZSk7CgoK
CgoKZXh0ZXJuIGRvdWJsZSBlcmYgKGRvdWJsZSk7IGV4dGVybiBkb3VibGUgX19lcmYgKGRvdWJs
ZSk7CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZmMgKGRv
dWJsZSk7CmV4dGVybiBkb3VibGUgbGdhbW1hIChkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fbGdh
bW1hIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHRnYW1tYSAoZG91YmxlKTsgZXh0ZXJuIGRvdWJs
ZSBfX3RnYW1tYSAoZG91YmxlKTsKCgoKCmV4dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJsZSk7IGV4
dGVybiBkb3VibGUgX19nYW1tYSAoZG91YmxlKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBsZ2FtbWFf
ciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hX3IgKGRv
dWJsZSwgaW50ICpfX3NpZ25nYW1wKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSByaW50IChkb3VibGUg
X194KTsgZXh0ZXJuIGRvdWJsZSBfX3JpbnQgKGRvdWJsZSBfX3gpOwoKCmV4dGVybiBkb3VibGUg
bmV4dGFmdGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gZG91YmxlIHJlbWFpbmRl
ciAoZG91YmxlIF9feCwgZG91YmxlIF9feSk7IGV4dGVybiBkb3VibGUgX19yZW1haW5kZXIgKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpOwoKCgpleHRlcm4gZG91YmxlIHNjYWxiIChkb3VibGUgX194
LCBkb3VibGUgX19uKTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxiIChkb3VibGUgX194LCBkb3VibGUg
X19uKTsKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24pOyBleHRl
cm4gZG91YmxlIF9fc2NhbGJuIChkb3VibGUgX194LCBpbnQgX19uKTsKCgpleHRlcm4gaW50IGls
b2diIChkb3VibGUgX194KTsgZXh0ZXJuIGludCBfX2lsb2diIChkb3VibGUgX194KTsKIyA2NCAi
L3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgODIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9i
aXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBhY29zZiAoZmxvYXQgX194KTsgZXh0ZXJu
IGZsb2F0IF9fYWNvc2YgKGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgYXNpbmYgKGZsb2F0IF9f
eCk7IGV4dGVybiBmbG9hdCBfX2FzaW5mIChmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGF0YW5m
IChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19hdGFuZiAoZmxvYXQgX194KTsKCmV4dGVybiBm
bG9hdCBhdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXRhbjJm
IChmbG9hdCBfX3ksIGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGNvc2YgKGZsb2F0IF9feCk7
IGV4dGVybiBmbG9hdCBfX2Nvc2YgKGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgc2luZiAoZmxv
YXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fc2luZiAoZmxvYXQgX194KTsKCmV4dGVybiBmbG9hdCB0
YW5mIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX190YW5mIChmbG9hdCBfX3gpOwojIDc4ICIv
dXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxvYXQgY29zaGYgKGZsb2F0
IF9feCk7IGV4dGVybiBmbG9hdCBfX2Nvc2hmIChmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IHNp
bmhmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19zaW5oZiAoZmxvYXQgX194KTsKCmV4dGVy
biBmbG9hdCB0YW5oZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fdGFuaGYgKGZsb2F0IF9f
eCk7CgoKCmV4dGVybiBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2Fj
b3NoZiAoZmxvYXQgX194KTsKCmV4dGVybiBmbG9hdCBhc2luaGYgKGZsb2F0IF9feCk7IGV4dGVy
biBmbG9hdCBfX2FzaW5oZiAoZmxvYXQgX194KTsKCmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0
IF9feCk7IGV4dGVybiBmbG9hdCBfX2F0YW5oZiAoZmxvYXQgX194KTsKCgoKCgpleHRlcm4gZmxv
YXQgZXhwZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fZXhwZiAoZmxvYXQgX194KTsKIyAx
MDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBmcmV4cGYg
KGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50KTsgZXh0ZXJuIGZsb2F0IF9fZnJleHBmIChmbG9h
dCBfX3gsIGludCAqX19leHBvbmVudCk7CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194
LCBpbnQgX19leHBvbmVudCk7IGV4dGVybiBmbG9hdCBfX2xkZXhwZiAoZmxvYXQgX194LCBpbnQg
X19leHBvbmVudCk7CgoKZXh0ZXJuIGZsb2F0IGxvZ2YgKGZsb2F0IF9feCk7IGV4dGVybiBmbG9h
dCBfX2xvZ2YgKGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KTsg
ZXh0ZXJuIGZsb2F0IF9fbG9nMTBmIChmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAo
ZmxvYXQgX194LCBmbG9hdCAqX19pcHRyKTsgZXh0ZXJuIGZsb2F0IF9fbW9kZmYgKGZsb2F0IF9f
eCwgZmxvYXQgKl9faXB0cik7CgoKCmV4dGVybiBmbG9hdCBleHBtMWYgKGZsb2F0IF9feCk7IGV4
dGVybiBmbG9hdCBfX2V4cG0xZiAoZmxvYXQgX194KTsKCgpleHRlcm4gZmxvYXQgbG9nMXBmIChm
bG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19sb2cxcGYgKGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZs
b2F0IGxvZ2JmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19sb2diZiAoZmxvYXQgX194KTsK
IyAxNDMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBwb3dm
IChmbG9hdCBfX3gsIGZsb2F0IF9feSk7IGV4dGVybiBmbG9hdCBfX3Bvd2YgKGZsb2F0IF9feCwg
ZmxvYXQgX195KTsKCgpleHRlcm4gZmxvYXQgc3FydGYgKGZsb2F0IF9feCk7IGV4dGVybiBmbG9h
dCBfX3NxcnRmIChmbG9hdCBfX3gpOwoKCgpleHRlcm4gZmxvYXQgaHlwb3RmIChmbG9hdCBfX3gs
IGZsb2F0IF9feSk7IGV4dGVybiBmbG9hdCBfX2h5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
OwoKCgoKZXh0ZXJuIGZsb2F0IGNicnRmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19jYnJ0
ZiAoZmxvYXQgX194KTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGNlaWxmIChmbG9hdCBfX3gpOyBleHRl
cm4gZmxvYXQgX19jZWlsZiAoZmxvYXQgX194KTsKCgpleHRlcm4gZmxvYXQgZmFic2YgKGZsb2F0
IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19mYWJzZiAo
ZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZs
b29yZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fZmxvb3JmIChmbG9hdCBfX3gpOwoKCmV4
dGVybiBmbG9hdCBmbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19m
bW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mZiAoZmxv
YXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19m
aW5pdGVmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpl
eHRlcm4gaW50IGlzaW5mZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCmV4dGVybiBpbnQgZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgoKCgoKZXh0ZXJuIGZsb2F0IGluZm5hbmYgKGludCBfX2Vycm9yKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2luZm5hbmYgKGludCBf
X2Vycm9yKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGRyZW1m
IChmbG9hdCBfX3gsIGZsb2F0IF9feSk7IGV4dGVybiBmbG9hdCBfX2RyZW1mIChmbG9hdCBfX3gs
IGZsb2F0IF9feSk7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKGZsb2F0IF9feCk7IGV4
dGVybiBmbG9hdCBfX3NpZ25pZmljYW5kZiAoZmxvYXQgX194KTsKCgoKCmV4dGVybiBmbG9hdCBj
b3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyAyMTcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxs
cy5oIiAzCmV4dGVybiBpbnQgX19pc25hbmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgajBmIChmbG9hdCk7IGV4dGVy
biBmbG9hdCBfX2owZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgajFmIChmbG9hdCk7IGV4dGVybiBm
bG9hdCBfX2oxZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgam5mIChpbnQsIGZsb2F0KTsgZXh0ZXJu
IGZsb2F0IF9fam5mIChpbnQsIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHkwZiAoZmxvYXQpOyBleHRl
cm4gZmxvYXQgX195MGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHkxZiAoZmxvYXQpOyBleHRlcm4g
ZmxvYXQgX195MWYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHluZiAoaW50LCBmbG9hdCk7IGV4dGVy
biBmbG9hdCBfX3luZiAoaW50LCBmbG9hdCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGVyZmYgKGZsb2F0
KTsgZXh0ZXJuIGZsb2F0IF9fZXJmZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgZXJmY2YgKGZsb2F0
KTsgZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGxnYW1tYWYgKGZs
b2F0KTsgZXh0ZXJuIGZsb2F0IF9fbGdhbW1hZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgdGdhbW1h
ZiAoZmxvYXQpOyBleHRlcm4gZmxvYXQgX190Z2FtbWFmIChmbG9hdCk7CgoKCgpleHRlcm4gZmxv
YXQgZ2FtbWFmIChmbG9hdCk7IGV4dGVybiBmbG9hdCBfX2dhbW1hZiAoZmxvYXQpOwoKCgoKCgpl
eHRlcm4gZmxvYXQgbGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKTsgZXh0ZXJuIGZs
b2F0IF9fbGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKTsKCgoKCgoKZXh0ZXJuIGZs
b2F0IHJpbnRmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19yaW50ZiAoZmxvYXQgX194KTsK
CgpleHRlcm4gZmxvYXQgbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmV4dGFmdGVyZiAoZmxvYXQgX194
LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gZmxv
YXQgcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19yZW1h
aW5kZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSk7CgoKCmV4dGVybiBmbG9hdCBzY2FsYmYgKGZs
b2F0IF9feCwgZmxvYXQgX19uKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmIChmbG9hdCBfX3gsIGZs
b2F0IF9fbik7CgoKCmV4dGVybiBmbG9hdCBzY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pOyBl
eHRlcm4gZmxvYXQgX19zY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pOwoKCmV4dGVybiBpbnQg
aWxvZ2JmIChmbG9hdCBfX3gpOyBleHRlcm4gaW50IF9faWxvZ2JmIChmbG9hdCBfX3gpOwojIDgz
ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA5OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJs
ZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zbCAobG9uZyBkb3VibGUgX194KTsKCmV4
dGVybiBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fYXNpbmwgKGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRhbmwg
KGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sIChsb25nIGRvdWJs
ZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25n
IGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9f
eSwgbG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3Vi
bGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zbCAobG9uZyBkb3VibGUgX194KTsKCmV4
dGVybiBsb25nIGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmwgKGxv
bmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmwgKGxvbmcgZG91YmxlIF9f
eCk7CiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRv
dWJsZSBjb3NobCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zaGwg
KGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2luaGwgKGxvbmcgZG91Ymxl
IF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NpbmhsIChsb25nIGRvdWJsZSBfX3gpOwoKZXh0
ZXJuIGxvbmcgZG91YmxlIHRhbmhsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX190YW5obCAobG9uZyBkb3VibGUgX194KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3No
bCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2hsIChsb25nIGRv
dWJsZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5obCAobG9uZyBkb3VibGUgX194KTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGxv
bmcgZG91YmxlIGF0YW5obCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
YXRhbmhsIChsb25nIGRvdWJsZSBfX3gpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBsIChs
b25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSBf
X3gpOwojIDEwNiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcg
ZG91YmxlIGZyZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpOyBleHRlcm4g
bG9uZyBkb3VibGUgX19mcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KTsK
CgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9u
ZW50KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBf
X2V4cG9uZW50KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194KTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAobG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9u
ZyBkb3VibGUgbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19s
b2cxMGwgKGxvbmcgZG91YmxlIF9feCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG1vZGZsIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19t
b2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKTsKCgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGV4cG0xbCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
ZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cxcGwgKGxv
bmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFwbCAobG9uZyBkb3VibGUg
X194KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2xvZ2JsIChsb25nIGRvdWJsZSBfX3gpOwojIDE0MyAiL3Vzci9pbmNs
dWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcG93bCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBzcXJ0
bCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91
YmxlIF9feCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgX195KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9faHlwb3RsIChsb25nIGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2JydGwgKGxv
bmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NicnRsIChsb25nIGRvdWJsZSBf
X3gpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2VpbGwgKGxvbmcgZG91YmxlIF9feCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2NlaWxsIChsb25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25n
IGRvdWJsZSBmYWJzbCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZmxvb3JsIChsb25nIGRv
dWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbG9vcmwgKGxvbmcgZG91YmxlIF9feCk7
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
IF9feSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Ztb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSk7CgoKCgpleHRlcm4gaW50IF9faXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVl
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWwgKGxv
bmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVy
biBpbnQgaXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgaW5mbmFubCAo
aW50IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9faW5mbmFubCAoaW50IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgpleHRlcm4gbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpZ25pZmljYW5kbCAobG9uZyBkb3Vi
bGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBf
X3gpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvcHlzaWdubCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fY29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNh
bGxzLmgiIDMKZXh0ZXJuIGludCBfX2lzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFubCAobG9uZyBkb3VibGUg
X192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJs
ZSBqMGwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajBsIChsb25nIGRvdWJs
ZSk7CmV4dGVybiBsb25nIGRvdWJsZSBqMWwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fajFsIChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSBqbmwgKGludCwgbG9u
ZyBkb3VibGUpOyBleHRlcm4gbG9uZyBkb3VibGUgX19qbmwgKGludCwgbG9uZyBkb3VibGUpOwpl
eHRlcm4gbG9uZyBkb3VibGUgeTBsIChsb25nIGRvdWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X3kwbCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgeTFsIChsb25nIGRvdWJsZSk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX3kxbCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3Vi
bGUgeW5sIChpbnQsIGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feW5sIChpbnQs
IGxvbmcgZG91YmxlKTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXJmbCAobG9uZyBkb3VibGUp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19lcmZsIChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRv
dWJsZSBlcmZjbCAobG9uZyBkb3VibGUpOyBleHRlcm4gbG9uZyBkb3VibGUgX19lcmZjbCAobG9u
ZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbCAobG9uZyBkb3VibGUpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19sZ2FtbWFsIChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJs
ZSB0Z2FtbWFsIChsb25nIGRvdWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RnYW1tYWwgKGxv
bmcgZG91YmxlKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBnYW1tYWwgKGxvbmcgZG91YmxlKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZ2FtbWFsIChsb25nIGRvdWJsZSk7CgoKCgoKCmV4dGVybiBs
b25nIGRvdWJsZSBsZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApOyBleHRl
cm4gbG9uZyBkb3VibGUgX19sZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdhbXAp
OwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmludGwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX3JpbnRsIChsb25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRv
dWJsZSBuZXh0YWZ0ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZXh0YWZ0ZXJsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSByZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JlbWFpbmRlcmwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxi
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pOyBleHRlcm4gbG9uZyBkb3VibGUg
X19zY2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKTsKCgoKZXh0ZXJuIGxv
bmcgZG91YmxlIHNjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbik7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3NjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbik7CgoKZXh0ZXJuIGlu
dCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBpbnQgX19pbG9nYmwgKGxvbmcgZG91
YmxlIF9feCk7CiMgMTAwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyAxMTMgIi91c3IvaW5j
bHVkZS9tYXRoLmgiIDMKZXh0ZXJuIGludCBzaWduZ2FtOwojIDIzNiAiL3Vzci9pbmNsdWRlL21h
dGguaCIgMwp0eXBlZGVmIGVudW0KewogIF9JRUVFXyA9IC0xLAogIF9TVklEXywKICBfWE9QRU5f
LAogIF9QT1NJWF8sCiAgX0lTT0NfCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgoKCgpleHRlcm4gX0xJ
Ql9WRVJTSU9OX1RZUEUgX0xJQl9WRVJTSU9OOwojIDI2MSAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MwpzdHJ1Y3QgZXhjZXB0aW9uCgogIHsKICAgIGludCB0eXBlOwogICAgY2hhciAqbmFtZTsKICAg
IGRvdWJsZSBhcmcxOwogICAgZG91YmxlIGFyZzI7CiAgICBkb3VibGUgcmV0dmFsOwogIH07CgoK
CgpleHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBleGNlcHRpb24gKl9fZXhjKSA7CiMgMjg5ICIv
dXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBj
LWxpbnV4LWdudS8zLjAvaW5jbHVkZS9mbG9hdC5oIiAxIDMKIyAyOTAgIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDIgMwojIDM0OCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhpbmxpbmUuaCIgMSAzCiMgMjM0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5s
aW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBfX3NnbiAoZG91YmxlKTsgZXh0ZXJuIF9f
aW5saW5lIGRvdWJsZSBfX3NnbiAoZG91YmxlIF9feCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAu
MCA6IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgX19z
Z25mIChmbG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0IF9feCkgeyBy
ZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfSBleHRl
cm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ25sIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lu
bGluZSBsb25nIGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX194ID09
IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfQoKCmV4dGVybiBfX2lubGlu
ZSBkb3VibGUgX19wb3cyIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fcG93MiAo
ZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX2V4cG9uZW50OyBfX2V4dGVuc2lvbl9fIGxvbmcgbG9uZyBpbnQgX19wID0gKGxv
bmcgbG9uZyBpbnQpIF9feDsgaWYgKF9feCA9PSAobG9uZyBkb3VibGUpIF9fcCkgeyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKDEuMCksICJ1IiAo
X194KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZAklJXN0KDAp
XG5cdCIgImZybmRpbnQJCQkjIGludCh4KVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJ
IyBmcmFjdCh4KVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCkpIC0gMVxuXHQiIDogIj10IiAo
X192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192
YWx1ZSksICJ1IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxp
bmUgZmxvYXQgX19wb3cyZiAoZmxvYXQpOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgX19wb3cyZiAo
ZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fZXhwb25lbnQ7IF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCBfX3AgPSAobG9u
ZyBsb25nIGludCkgX194OyBpZiAoX194ID09IChsb25nIGRvdWJsZSkgX19wKSB7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoMS4wKSwgInUiIChf
X3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19hc20gX192b2xhdGlsZV9fICgiZmxkCSUlc3QoMClc
blx0IiAiZnJuZGludAkJCSMgaW50KHgpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkj
IGZyYWN0KHgpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4KSkgLSAxXG5cdCIgOiAiPXQiIChf
X3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9IDEuMDsg
X19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3Zh
bHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGlu
ZSBsb25nIGRvdWJsZSBfX3BvdzJsIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25n
IGRvdWJsZSBfX3BvdzJsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRlbnNpb25fXyBs
b25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3ggPT0gKGxvbmcg
ZG91YmxlKSBfX3ApIHsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFs
dWUpIDogIjAiICgxLjApLCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmbGQJJSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClcblx0IiAiZnhj
aFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0
KHgpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAo
X194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10
IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9f
dmFsdWU7IH0KIyAyODMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4g
X19pbmxpbmUgdm9pZCBfX3NpbmNvcyAoZG91YmxlIF9feCwgZG91YmxlICpfX3NpbngsIGRvdWJs
ZSAqX19jb3N4KTsKZXh0ZXJuIF9faW5saW5lIHZvaWQKX19zaW5jb3MgKGRvdWJsZSBfX3gsIGRv
dWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
Y29zcjsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19zaW5yOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm
c2luY29zXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInRlc3RsCSQweDQwMCwgJSVlYXhcblx0IiAi
anoJMWZcblx0IiAiZmxkcGlcblx0IiAiZmFkZAklJXN0KDApXG5cdCIgImZ4Y2gJJSVzdCgxKVxu
XHQiICIyOiBmcHJlbTFcblx0IiAiZm5zdHN3CSUlYXhcblx0IiAidGVzdGwJJDB4NDAwLCAlJWVh
eFxuXHQiICJqbnoJMmJcblx0IiAiZnN0cAklJXN0KDEpXG5cdCIgImZzaW5jb3Ncblx0IiAiMToi
IDogIj10IiAoX19jb3NyKSwgIj11IiAoX19zaW5yKSA6ICIwIiAoX194KSk7ICpfX3NpbnggPSBf
X3NpbnI7ICpfX2Nvc3ggPSBfX2Nvc3I7Cn0KCmV4dGVybiBfX2lubGluZSB2b2lkIF9fc2luY29z
ZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBmbG9hdCAqX19jb3N4KTsKZXh0ZXJuIF9faW5s
aW5lIHZvaWQKX19zaW5jb3NmIChmbG9hdCBfX3gsIGZsb2F0ICpfX3NpbngsIGZsb2F0ICpfX2Nv
c3gpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX2Nvc3I7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fc2lucjsgX19hc20gX192b2xhdGlsZV9fICgiZnNpbmNvc1xuXHQiICJmbnN0c3cJJSVheFxu
XHQiICJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIgImp6CTFmXG5cdCIgImZsZHBpXG5cdCIgImZh
ZGQJJSVzdCgwKVxuXHQiICJmeGNoCSUlc3QoMSlcblx0IiAiMjogZnByZW0xXG5cdCIgImZuc3Rz
dwklJWF4XG5cdCIgInRlc3RsCSQweDQwMCwgJSVlYXhcblx0IiAiam56CTJiXG5cdCIgImZzdHAJ
JSVzdCgxKVxuXHQiICJmc2luY29zXG5cdCIgIjE6IiA6ICI9dCIgKF9fY29zciksICI9dSIgKF9f
c2lucikgOiAiMCIgKF9feCkpOyAqX19zaW54ID0gX19zaW5yOyAqX19jb3N4ID0gX19jb3NyOwp9
CgpleHRlcm4gX19pbmxpbmUgdm9pZCBfX3NpbmNvc2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgKl9fc2lueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkb3VibGUg
Kl9fY29zeCk7CmV4dGVybiBfX2lubGluZSB2b2lkCl9fc2luY29zbCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19jb3N4KQp7CiAgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19jb3NyOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3NpbnI7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZzaW5jb3Ncblx0IiAiZm5zdHN3CSUlYXhcblx0IiAidGVzdGwJJDB4NDAw
LCAlJWVheFxuXHQiICJqegkxZlxuXHQiICJmbGRwaVxuXHQiICJmYWRkCSUlc3QoMClcblx0IiAi
ZnhjaAklJXN0KDEpXG5cdCIgIjI6IGZwcmVtMVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJ0ZXN0
bAkkMHg0MDAsICUlZWF4XG5cdCIgImpuegkyYlxuXHQiICJmc3RwCSUlc3QoMSlcblx0IiAiZnNp
bmNvc1xuXHQiICIxOiIgOiAiPXQiIChfX2Nvc3IpLCAiPXUiIChfX3NpbnIpIDogIjAiIChfX3gp
KTsgKl9fc2lueCA9IF9fc2lucjsgKl9fY29zeCA9IF9fY29zcjsKfQojIDMyOCAiL3Vzci9pbmNs
dWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX2V4
cG0xbCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19leHBtMWwg
KGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3RlbXA7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54IC0gMSA9IDJeKHggKiBsb2cyKGUpKSAt
IDFcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5c
dCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUl
c3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICog
bG9nMihlKSkpIC0gMVxuXHQiICJmc2NhbGUJCQkjIDJeKHggKiBsb2cyKGUpKSAtIDJeKGludCh4
ICogbG9nMihlKSkpXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAi
MCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUJCQkjIDJeaW50KHggKiBsb2cy
KGUpKVxuXHQiIDogIj10IiAoX190ZW1wKSA6ICIwIiAoMS4wKSwgInUiIChfX2V4cG9uZW50KSk7
IF9fdGVtcCAtPSAxLjA7IHJldHVybiBfX3RlbXAgKyBfX3ZhbHVlOyB9CiMgMzQ4ICIvdXNyL2lu
Y2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBleHAgKGRv
dWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgZXhwIChkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkpXG5cdCIg
ImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5k
aW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkj
IGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkp
KSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194
KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAo
X192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFs
dWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGV4cGYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5l
IGZsb2F0IGV4cGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRs
MmUJCQkjIGVeeCA9IDJeKHggKiBsb2cyKGUpKVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxv
ZzIoZSlcblx0IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUp
KVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0
IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgOiAiPXQiIChfX3Zh
bHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9IDEuMDsgX19h
c20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3ZhbHVl
KSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBs
b25nIGRvdWJsZSBleHBsIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJs
ZSBleHBsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19hc20gX192b2xhdGlsZV9fICgiZmxk
bDJlCQkJIyBlXnggPSAyXih4ICogbG9nMihlKSlcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBs
b2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihl
KSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5c
dCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiIDogIj10IiAoX192
YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1
ZSksICJ1IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfQpleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBfX2V4cGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmbGRsMmUJCQkjIGVeeCA9IDJeKHggKiBsb2cyKGUpKVxuXHQiICJmbXVsCSUlc3QoMSkJCSMg
eCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBs
b2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihl
KSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgOiAiPXQi
IChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9IDEu
MDsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChf
X3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9CgoKZXh0ZXJuIF9f
aW5saW5lIGRvdWJsZSB0YW4gKGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgdGFuIChk
b3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWUyIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZwdGFuIiA6ICI9dCIgKF9fdmFsdWUyKSwgIj11IiAoX192YWx1ZSkgOiAiMCIg
KF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgdGFuZiAoZmxv
YXQpOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgdGFuZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwdGFuIiA6ICI9dCIg
KF9fdmFsdWUyKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsg
fSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgdGFubCAobG9uZyBkb3VibGUpOyBleHRlcm4g
X19pbmxpbmUgbG9uZyBkb3VibGUgdGFubCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwdGFuIiA6ICI9dCIg
KF9fdmFsdWUyKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsg
fQojIDM2NyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGlu
ZSBkb3VibGUgYXRhbjIgKGRvdWJsZSwgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBh
dGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIg
KF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19p
bmxpbmUgZmxvYXQgYXRhbjJmIChmbG9hdCwgZmxvYXQpOyBleHRlcm4gX19pbmxpbmUgZmxvYXQg
YXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIg
KF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19p
bmxpbmUgbG9uZyBkb3VibGUgYXRhbjJsIChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOyBleHRl
cm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91
YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxl
X18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJz
dCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19h
dGFuMmwgKGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBfX2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9f
dmFsdWU7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGZtb2QgKGRvdWJsZSwgZG91YmxlKTsg
ZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVt
XG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsg
fSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZm1vZGYgKGZsb2F0LCBmbG9hdCk7IGV4dGVybiBfX2lu
bGluZSBmbG9hdCBmbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW1cblx0IiAiZm5zdHN3
CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194
KSwgInUiIChfX3kpIDogImF4IiwgImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lu
bGluZSBsb25nIGRvdWJsZSBmbW9kbCAobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsgZXh0ZXJu
IF9faW5saW5lIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
IF9feSkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJu
IF9fdmFsdWU7IH0KIyAzODIgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRl
cm4gX19pbmxpbmUgZG91YmxlIHBvdyAoZG91YmxlLCBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUg
ZG91YmxlIHBvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBfX2V4dGVuc2lvbl9f
IGxvbmcgbG9uZyBpbnQgX19wID0gKGxvbmcgbG9uZyBpbnQpIF9feTsgaWYgKF9feCA9PSAwLjAg
JiYgX195ID4gMC4wKSByZXR1cm4gMC4wOyBpZiAoX195ID09IChkb3VibGUpIF9fcCkgeyBsb25n
IGRvdWJsZSBfX3IgPSAxLjA7IGlmIChfX3AgPT0gMCkgcmV0dXJuIDEuMDsgaWYgKF9fcCA8IDAp
IHsgX19wID0gLV9fcDsgX194ID0gMS4wIC8gX194OyB9IHdoaWxlICgxKSB7IGlmIChfX3AgJiAx
KSBfX3IgKj0gX194OyBfX3AgPj49IDE7IGlmIChfX3AgPT0gMCkgcmV0dXJuIF9fcjsgX194ICo9
IF9feDsgfSB9IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ5bDJ4IiA6ICI9dCIgKF9fdmFsdWUpIDog
IjAiIChfX3gpLCAidSIgKDEuMCkgOiAic3QoMSkiKTsgX19hc20gX192b2xhdGlsZV9fICgiZm11
bAklJXN0KDEpCQkjIHkgKiBsb2cyKHgpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJ
CQkjIGludCh5ICogbG9nMih4KSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJh
Y3QoeSAqIGxvZzIoeCkpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh5ICogbG9nMih4KSkpIC0g
MVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3kpLCAi
MSIgKF9fdmFsdWUpKTsgX192YWx1ZSArPSAxLjA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2Fs
ZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1IiAoX19leHBvbmVudCkpOyBy
ZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgcG93ZiAoZmxvYXQsIGZsb2F0
KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IHBvd2YgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25l
bnQ7IF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCBfX3AgPSAobG9uZyBsb25nIGludCkgX195
OyBpZiAoX194ID09IDAuMCAmJiBfX3kgPiAwLjApIHJldHVybiAwLjA7IGlmIChfX3kgPT0gKGRv
dWJsZSkgX19wKSB7IGxvbmcgZG91YmxlIF9fciA9IDEuMDsgaWYgKF9fcCA9PSAwKSByZXR1cm4g
MS4wOyBpZiAoX19wIDwgMCkgeyBfX3AgPSAtX19wOyBfX3ggPSAxLjAgLyBfX3g7IH0gd2hpbGUg
KDEpIHsgaWYgKF9fcCAmIDEpIF9fciAqPSBfX3g7IF9fcCA+Pj0gMTsgaWYgKF9fcCA9PSAwKSBy
ZXR1cm4gX19yOyBfX3ggKj0gX194OyB9IH0gX19hc20gX192b2xhdGlsZV9fICgiZnlsMngiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoMS4wKSA6ICJzdCgxKSIpOyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmbXVsCSUlc3QoMSkJCSMgeSAqIGxvZzIoeClcblx0IiAiZnN0CSUlc3Qo
MSlcblx0IiAiZnJuZGludAkJCSMgaW50KHkgKiBsb2cyKHgpKVxuXHQiICJmeGNoXG5cdCIgImZz
dWIJJSVzdCgxKQkJIyBmcmFjdCh5ICogbG9nMih4KSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0
KHkgKiBsb2cyKHgpKSkgLSAxXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVu
dCkgOiAiMCIgKF9feSksICIxIiAoX192YWx1ZSkpOyBfX3ZhbHVlICs9IDEuMDsgX19hc20gX192
b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3ZhbHVlKSwgInUi
IChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBwb3dsIChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUgcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsg
X19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3k7IGlm
IChfX3ggPT0gMC4wICYmIF9feSA+IDAuMCkgcmV0dXJuIDAuMDsgaWYgKF9feSA9PSAoZG91Ymxl
KSBfX3ApIHsgbG9uZyBkb3VibGUgX19yID0gMS4wOyBpZiAoX19wID09IDApIHJldHVybiAxLjA7
IGlmIChfX3AgPCAwKSB7IF9fcCA9IC1fX3A7IF9feCA9IDEuMCAvIF9feDsgfSB3aGlsZSAoMSkg
eyBpZiAoX19wICYgMSkgX19yICo9IF9feDsgX19wID4+PSAxOyBpZiAoX19wID09IDApIHJldHVy
biBfX3I7IF9feCAqPSBfX3g7IH0gfSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeWwyeCIgOiAiPXQi
IChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgxLjApIDogInN0KDEpIik7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZtdWwJJSVzdCgxKQkJIyB5ICogbG9nMih4KVxuXHQiICJmc3QJJSVzdCgxKVxu
XHQiICJmcm5kaW50CQkJIyBpbnQoeSAqIGxvZzIoeCkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1Ygkl
JXN0KDEpCQkjIGZyYWN0KHkgKiBsb2cyKHgpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeSAq
IGxvZzIoeCkpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6
ICIwIiAoX195KSwgIjEiIChfX3ZhbHVlKSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9f
ZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA0MjYgIi91c3IvaW5jbHVkZS9iaXRzL21h
dGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIHNxcnQgKGRvdWJsZSk7IGV4dGVy
biBfX2lubGluZSBkb3VibGUgc3FydCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19y
ZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIw
IiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgc3FydGYg
KGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHsgcmVnaXN0
ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9f
cmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgc3FydGwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91
YmxlIHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1
bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAo
X194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19z
cXJ0bCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zcXJ0bCAo
bG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1
cm4gX19yZXN1bHQ7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGZhYnMgKGRvdWJsZSk7IGV4
dGVybiBfX2lubGluZSBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgeyByZXR1cm4gX19idWlsdGlu
X2ZhYnMgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5lIGZsb2F0IGZhYnNmIChmbG9hdCk7IGV4dGVy
biBfX2lubGluZSBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFi
c2YgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJs
ZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmYWJzbCAobG9uZyBkb3VibGUgX194KSB7
IHJldHVybiBfX2J1aWx0aW5fZmFic2wgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91
YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9f
ZmFic2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNsIChfX3gpOyB9
CgoKCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgc2luIChkb3VibGUpOyBleHRlcm4gX19pbmxp
bmUgZG91YmxlIHNpbiAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZzaW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsg
cmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBzaW5mIChmbG9hdCk7IGV4
dGVybiBfX2lubGluZSBmbG9hdCBzaW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19y
ZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAi
IChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBz
aW5sIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBzaW5sIChsb25n
IGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZzaW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9f
cmVzdWx0OyB9CgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGNvcyAoZG91YmxlKTsgZXh0ZXJuIF9f
aW5saW5lIGRvdWJsZSBjb3MgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmY29zIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194
KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgY29zZiAoZmxvYXQp
OyBleHRlcm4gX19pbmxpbmUgZmxvYXQgY29zZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGZsb2F0
IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmY29zIiA6ICI9dCIgKF9fcmVzdWx0KSA6
ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3Vi
bGUgY29zbCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgY29zbCAo
bG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmY29zIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVy
biBfX3Jlc3VsdDsgfQoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuIChkb3VibGUpOyBleHRl
cm4gX19pbmxpbmUgZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9f
cmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19yZXN1
bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19p
bmxpbmUgZmxvYXQgYXRhbmYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IGF0YW5mIChm
bG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsg
cmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFubCAobG9u
ZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91Ymxl
IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9f
ICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIp
OyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2cgKGRvdWJsZSk7
IGV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGRvdWJs
ZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yOyBmeGNoOyBmeWwyeCIgOiAi
PXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9
IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2dmIChmbG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9h
dCBsb2dmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZsZGxuMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChf
X3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgbG9nbCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9n
bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmbGRsbjI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0KSA6
ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJuIF9faW5saW5l
IGRvdWJsZSBsb2cxMCAoZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2cxMCAoZG91
YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZsZGxnMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0
KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgbG9nMTBmIChm
bG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2cxMGYgKGZsb2F0IF9feCkgeyByZWdpc3Rl
ciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbGcyOyBmeGNoOyBmeWwy
eCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVz
dWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cxMGwgKGxvbmcgZG91YmxlKTsg
ZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsZzI7
IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX19yZXN1bHQ7IH0KCmV4dGVybiBfX2lubGluZSBkb3VibGUgYXNpbiAoZG91YmxlKTsg
ZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhc2luIChkb3VibGUgX194KSB7IHJldHVybiBfX2F0YW4y
bCAoX194LCBfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpKTsgfSBleHRlcm4gX19pbmxpbmUgZmxv
YXQgYXNpbmYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IGFzaW5mIChmbG9hdCBfX3gp
IHsgcmV0dXJuIF9fYXRhbjJsIChfX3gsIF9fc3FydGwgKDEuMCAtIF9feCAqIF9feCkpOyB9IGV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19p
bmxpbmUgbG9uZyBkb3VibGUgYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19hdGFu
MmwgKF9feCwgX19zcXJ0bCAoMS4wIC0gX194ICogX194KSk7IH0KZXh0ZXJuIF9faW5saW5lIGRv
dWJsZSBhY29zIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIGFjb3MgKGRvdWJsZSBf
X3gpIHsgcmV0dXJuIF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpLCBfX3gpOyB9
IGV4dGVybiBfX2lubGluZSBmbG9hdCBhY29zZiAoZmxvYXQpOyBleHRlcm4gX19pbmxpbmUgZmxv
YXQgYWNvc2YgKGZsb2F0IF9feCkgeyByZXR1cm4gX19hdGFuMmwgKF9fc3FydGwgKDEuMCAtIF9f
eCAqIF9feCksIF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGFjb3NsIChsb25n
IGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhY29zbCAobG9uZyBkb3VibGUg
X194KSB7IHJldHVybiBfX2F0YW4ybCAoX19zcXJ0bCAoMS4wIC0gX194ICogX194KSwgX194KTsg
fQoKZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlKTsgZXh0
ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1
cm4gX194ID49IDAuMCA/IDEuMCA6IC0xLjA7IH0KCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBz
aW5oIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIHNpbmggKGRvdWJsZSBfX3gpIHsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOyBy
ZXR1cm4gMC41ICogKF9fZXhtMSAvIChfX2V4bTEgKyAxLjApICsgX19leG0xKSAqIF9fc2duMWwg
KF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IHNpbmhmIChmbG9hdCk7IGV4dGVybiBfX2lu
bGluZSBmbG9hdCBzaW5oZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXht
MSA9IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19l
eG0xICsgMS4wKSArIF9fZXhtMSkgKiBfX3NnbjFsIChfX3gpOyB9IGV4dGVybiBfX2lubGluZSBs
b25nIGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3Vi
bGUgc2luaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEg
PSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXht
MSArIDEuMCkgKyBfX2V4bTEpICogX19zZ24xbCAoX194KTsgfQoKCgpleHRlcm4gX19pbmxpbmUg
ZG91YmxlIGNvc2ggKGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgY29zaCAoZG91Ymxl
IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4ID0gX19leHBsIChfX3gpOyByZXR1cm4g
MC41ICogKF9fZXggKyAxLjAgLyBfX2V4KTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgY29zaGYg
KGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IGNvc2hmIChmbG9hdCBfX3gpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX19leCA9IF9fZXhwbCAoX194KTsgcmV0dXJuIDAuNSAqIChfX2V4ICsg
MS4wIC8gX19leCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGNvc2hsIChsb25nIGRv
dWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBjb3NobCAobG9uZyBkb3VibGUgX194
KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXggPSBfX2V4cGwgKF9feCk7IHJldHVybiAwLjUg
KiAoX19leCArIDEuMCAvIF9fZXgpOyB9CgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgdGFuaCAo
ZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSB0YW5oIChkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsICgtX19mYWJzbCAoX194ICsgX194KSk7
IHJldHVybiBfX2V4bTEgLyAoX19leG0xICsgMi4wKSAqIF9fc2duMWwgKC1fX3gpOyB9IGV4dGVy
biBfX2lubGluZSBmbG9hdCB0YW5oZiAoZmxvYXQpOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgdGFu
aGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAo
LV9fZmFic2wgKF9feCArIF9feCkpOyByZXR1cm4gX19leG0xIC8gKF9fZXhtMSArIDIuMCkgKiBf
X3NnbjFsICgtX194KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgdGFuaGwgKGxvbmcg
ZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIHRhbmhsIChsb25nIGRvdWJsZSBf
X3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKC1fX2ZhYnNsIChf
X3ggKyBfX3gpKTsgcmV0dXJuIF9fZXhtMSAvIChfX2V4bTEgKyAyLjApICogX19zZ24xbCAoLV9f
eCk7IH0KCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgZmxvb3IgKGRvdWJsZSk7IGV4dGVybiBf
X2lubGluZSBkb3VibGUgZmxvb3IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIg
OiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgZmxvb3JmIChmbG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBm
bG9vcmYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0
aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGlu
dCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsg
X19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDQwMDsgX19hc20gX192b2xhdGlsZSAoImZs
ZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6
ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUw
IiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25n
IGRvdWJsZSBmbG9vcmwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91Ymxl
IGZsb29ybCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7
IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQg
c2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAo
X19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZy
bmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgi
ZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA0NzkgIi91c3Iv
aW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGNlaWwg
KGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgY2VpbCAoZG91YmxlIF9feCkgeyByZWdp
c3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBf
X2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2Zm
KSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1w
KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChf
X3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVy
biBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBjZWlsZiAoZmxvYXQpOyBleHRlcm4g
X19pbmxpbmUgZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVu
c2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6
ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20g
X192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xh
dGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxp
bmUgbG9uZyBkb3VibGUgY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0
aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3
ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsg
X19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9f
dm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20g
X192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9
CiMgNDk3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5l
IGRvdWJsZSBsZGV4cCAoZG91YmxlIF9feCwgaW50IF9feSk7CmV4dGVybiBfX2lubGluZSBkb3Vi
bGUKbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0KCgoK
CgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGV4cG0xIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUg
ZG91YmxlIGV4cG0xIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dGVtcDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXnggLSAxID0gMl4oeCAqIGxv
ZzIoZSkpIC0gMVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUl
c3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIg
ImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZy
YWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgImZzY2FsZQkJCSMgMl4oeCAqIGxvZzIoZSkpIC0g
Ml4oaW50KHggKiBsb2cyKGUpKSlcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9u
ZW50KSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZQkJCSMgMl5pbnQo
eCAqIGxvZzIoZSkpXG5cdCIgOiAiPXQiIChfX3RlbXApIDogIjAiICgxLjApLCAidSIgKF9fZXhw
b25lbnQpKTsgX190ZW1wIC09IDEuMDsgcmV0dXJuIF9fdGVtcCArIF9fdmFsdWU7IH0gZXh0ZXJu
IF9faW5saW5lIGZsb2F0IGV4cG0xZiAoZmxvYXQpOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgZXhw
bTFmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190ZW1wOyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9nMihlKSkgLSAx
XG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQi
ICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0
KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxv
ZzIoZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAyXihpbnQoeCAq
IGxvZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAi
IChfX3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAyXmludCh4ICogbG9nMihl
KSlcblx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBvbmVudCkpOyBf
X3RlbXAgLT0gMS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgZXhwbTFsIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBleHBtMWwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3RlbXA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54IC0gMSA9IDJeKHgg
KiBsb2cyKGUpKSAtIDFcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIgImZz
dAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0IiAiZnhjaFxu
XHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAy
XihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiICJmc2NhbGUJCQkjIDJeKHggKiBsb2cyKGUp
KSAtIDJeKGludCh4ICogbG9nMihlKSkpXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19l
eHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUJCQkjIDJe
aW50KHggKiBsb2cyKGUpKVxuXHQiIDogIj10IiAoX190ZW1wKSA6ICIwIiAoMS4wKSwgInUiIChf
X2V4cG9uZW50KSk7IF9fdGVtcCAtPSAxLjA7IHJldHVybiBfX3RlbXAgKyBfX3ZhbHVlOyB9CgoK
CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2cxcCAoZG91YmxlKTsgZXh0ZXJuIF9faW5saW5l
IGRvdWJsZSBsb2cxcCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl
OyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgw
TCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgi
ZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAo
X194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQg
bG9nMXBmIChmbG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAg
LSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9f
eCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnls
MnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192
YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSk7
IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAw
LjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7
IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhw
MSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1
ZTsgfQojIDUyOCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lu
bGluZSBkb3VibGUgYXNpbmggKGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgYXNpbmgg
KGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194KTsg
cmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kgKyAxLjApICsg
MS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYXNp
bmhmIChmbG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBhc2luaGYgKGZsb2F0IF9feCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAo
X195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9f
c2duMWwgKF9feCkpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhc2luaGwgKGxvbmcg
ZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGFzaW5obCAobG9uZyBkb3VibGUg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAo
bG9nMXBsIChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkgKyBf
X3kpICogX19zZ24xbCAoX194KSk7IH0KCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgYWNvc2gg
KGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gpIHsgcmV0
dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBfX3NxcnRsIChfX3ggKyAxLjAp
KTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYWNvc2hmIChmbG9hdCk7IGV4dGVybiBfX2lubGlu
ZSBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgeyByZXR1cm4gbG9nbCAoX194ICsgX19zcXJ0bCAo
X194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9IGV4dGVybiBfX2lubGluZSBsb25n
IGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91Ymxl
IGFjb3NobCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChf
X3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91
YmxlIGF0YW5oIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIGF0YW5oIChkb3VibGUg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAt
MC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gp
OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhdGFuaGYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5l
IGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9f
ZmFic2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsg
X195KSkgKiBfX3NnbjFsIChfX3gpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFu
aGwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGF0YW5obCAobG9u
ZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7
IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3Nn
bjFsIChfX3gpOyB9CgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGh5cG90IChkb3VibGUsIGRv
dWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgaHlwb3QgKGRvdWJsZSBfX3gsIGRvdWJsZSBf
X3kpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0gZXh0ZXJuIF9f
aW5saW5lIGZsb2F0IGh5cG90ZiAoZmxvYXQsIGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0
IGh5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9f
eCArIF9feSAqIF9feSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGh5cG90bCAobG9u
ZyBkb3VibGUsIGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGh5cG90
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsgcmV0dXJuIF9fc3FydGwgKF9f
eCAqIF9feCArIF9feSAqIF9feSk7IH0KCmV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nYiAoZG91
YmxlKTsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2diIChkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fanVuazsgX19hc20g
X192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5rKSwgIj11IiAoX192YWx1
ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQg
bG9nYmYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IGxvZ2JmIChmbG9hdCBfX3gpIHsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5r
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUi
IChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGlu
ZSBsb25nIGRvdWJsZSBsb2dibCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4
dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsg
cmV0dXJuIF9fdmFsdWU7IH0KIyA2MjUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIg
MwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGRyZW0gKGRvdWJsZSwgZG91YmxlKTsgZXh0ZXJuIF9f
aW5saW5lIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRv
dWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVf
XyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDog
Ij10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195
KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZHJlbWYg
KGZsb2F0LCBmbG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBkcmVtZiAoZmxvYXQgX194LCBm
bG9hdCBfX3kpIHsgcmVnaXN0ZXIgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGludCBfX2Nsb2Ji
ZXJlZDsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW0xXG5cdCIgImZzdHN3CSUlYXhcblx0
IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVk
KSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsg
ZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGRyZW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgeyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgaW50IF9fY2xv
YmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFcblx0IiAiZnN0c3cJJSVheFxu
XHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpLCAiPSZhIiAoX19jbG9iYmVy
ZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA2
MzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgaW50
IF9fZmluaXRlIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVy
biBfX2lubGluZSBpbnQKX19maW5pdGUgKGRvdWJsZSBfX3gpCnsKICByZXR1cm4gKF9fZXh0ZW5z
aW9uX18KICAgICAgICAgICgoKCgodW5pb24geyBkb3VibGUgX19kOyBpbnQgX19pWzJdOyB9KSB7
X19kOiBfX3h9KS5fX2lbMV0KICAgICAgICAgICAgIHwgMHg4MDBmZmZmZnUpICsgMSkgPj4gMzEp
KTsKfQoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fY29zaG0xIChkb3VibGUpOyBleHRlcm4g
X19pbmxpbmUgZG91YmxlIF9fY29zaG0xIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4
bTEgLyAoX19leG0xICsgMS4wKSkgKiBfX2V4bTE7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9f
Y29zaG0xZiAoZmxvYXQpOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgX19jb3NobTFmIChmbG9hdCBf
X3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKF9fZmFic2wgKF9f
eCkpOyByZXR1cm4gMC41ICogKF9fZXhtMSAvIChfX2V4bTEgKyAxLjApKSAqIF9fZXhtMTsgfSBl
eHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19jb3NobTFsIChsb25nIGRvdWJsZSk7IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBfX2Nvc2htMWwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdp
c3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVy
biAwLjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkpICogX19leG0xOyB9CgoKCmV4dGVybiBf
X2lubGluZSBkb3VibGUgX19hY29zaDFwIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91Ymxl
IF9fYWNvc2gxcCAoZG91YmxlIF9feCkgeyByZXR1cm4gbG9nMXBsIChfX3ggKyBfX3NxcnRsIChf
X3gpICogX19zcXJ0bCAoX194ICsgMi4wKSk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fYWNv
c2gxcGYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fYWNvc2gxcGYgKGZsb2F0IF9f
eCkgeyByZXR1cm4gbG9nMXBsIChfX3ggKyBfX3NxcnRsIChfX3gpICogX19zcXJ0bCAoX194ICsg
Mi4wKSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fYWNvc2gxcGwgKGxvbmcgZG91
YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fYWNvc2gxcGwgKGxvbmcgZG91Ymxl
IF9feCkgeyByZXR1cm4gbG9nMXBsIChfX3ggKyBfX3NxcnRsIChfX3gpICogX19zcXJ0bCAoX194
ICsgMi4wKSk7IH0KIyAzNDkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDIwICJoaW50Lmgi
IDIKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMiAzCiMgMzggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL2kzODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyAzOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
dGltZS5oIiAxIDMKIyA0MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCiMgNTcgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA1OCAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBfX2Nsb2NrX3QgY2xvY2tfdDsKIyA5
NSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CiAgaW50
IHRtX21pbjsKICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9uOwogIGlu
dCB0bV95ZWFyOwogIGludCB0bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9pc2RzdDsK
CgogIGxvbmcgaW50IHRtX2dtdG9mZjsKICBfX2NvbnN0IGNoYXIgKnRtX3pvbmU7CgoKCgp9OwoK
CgoKZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZvaWQpIDsKCgpleHRlcm4gdGltZV90IHRpbWUgKHRp
bWVfdCAqX190aW1lcikgOwoKCmV4dGVybiBkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCBfX3RpbWUx
LCB0aW1lX3QgX190aW1lMCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0
ZXJuIHRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX190cCkgOwoKCgoKCmV4dGVybiBzaXplX3Qg
c3RyZnRpbWUgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0
IF9fdHApIDsKIyAxNDkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIHN0cnVjdCB0bSAq
Z210aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgOwoKCgpleHRlcm4gc3RydWN0IHRtICps
b2NhbHRpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSA7CgoKCgpleHRlcm4gc3RydWN0IHRt
ICpfX2dtdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLCBzdHJ1Y3Qg
dG0gKl9fcmVzdHJpY3QgX190cCkgOwoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IgKF9fY29u
c3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3Rw
KSA7CgoKCgpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWVfciAoX19jb25zdCB0aW1lX3QgKl9f
cmVzdHJpY3QgX190aW1lciwgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKCgpleHRl
cm4gY2hhciAqYXNjdGltZSAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4gY2hh
ciAqY3RpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSA7CgoKCgoKCmV4dGVybiBjaGFyICph
c2N0aW1lX3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYpIDsKCgoKZXh0ZXJuIGNoYXIgKmN0aW1lX3IgKF9fY29uc3QgdGltZV90ICpf
X3Jlc3RyaWN0IF9fdGltZXIsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKCgpleHRlcm4g
Y2hhciAqX190em5hbWVbMl07CmV4dGVybiBpbnQgX19kYXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50
IF9fdGltZXpvbmU7CgoKCgpleHRlcm4gY2hhciAqdHpuYW1lWzJdOwoKCgpleHRlcm4gdm9pZCB0
enNldCAodm9pZCkgOwoKCgpleHRlcm4gaW50IGRheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgdGlt
ZXpvbmU7CgoKCgoKZXh0ZXJuIGludCBzdGltZSAoX19jb25zdCB0aW1lX3QgKl9fd2hlbikgOwoj
IDIyOCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpleHRlcm4gdGltZV90IHRpbWVnbSAoc3RydWN0
IHRtICpfX3RwKSA7CgoKZXh0ZXJuIHRpbWVfdCB0aW1lbG9jYWwgKHN0cnVjdCB0bSAqX190cCkg
OwoKCmV4dGVybiBpbnQgZHlzaXplIChpbnQgX195ZWFyKSA7CgoKCgoKZXh0ZXJuIGludCBuYW5v
c2xlZXAgKF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3JlcXVlc3RlZF90aW1lLCBzdHJ1Y3Qg
dGltZXNwZWMgKl9fcmVtYWluaW5nKSA7CiMgMjEgImhpbnQuaCIgMgojIDM3ICJoaW50LmgiCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDEgMwojIDIyICIvdXNyL2luY2x1ZGUvc3lzL3Rp
bWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNs
dWRlL3N5cy90aW1lLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAyNSAi
L3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDQ5ICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA1MCAiL3Vzci9pbmNsdWRlL2Jp
dHMvdGltZS5oIiAyIDMKCgoKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7
CiAgICBfX3RpbWVfdCB0dl91c2VjOwogIH07CiMgMjkgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5o
IiAyIDMKIyA0NiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKc3RydWN0IHRpbWV6b25lCiAg
ewogICAgaW50IHR6X21pbnV0ZXN3ZXN0OwogICAgaW50IHR6X2RzdHRpbWU7CiAgfTsKCgoKCgoK
ZXh0ZXJuIGludCBnZXR0aW1lb2ZkYXkgKHN0cnVjdCB0aW1ldmFsICpfX3R2LCBzdHJ1Y3QgdGlt
ZXpvbmUgKl9fdHopIDsKCgoKCmV4dGVybiBpbnQgc2V0dGltZW9mZGF5IChfX2NvbnN0IHN0cnVj
dCB0aW1ldmFsICpfX3R2LCBfX2NvbnN0IHN0cnVjdCB0aW1lem9uZSAqX190eikgOwoKCgoKCgpl
eHRlcm4gaW50IGFkanRpbWUgKF9fY29uc3Qgc3RydWN0IHRpbWV2YWwgKl9fZGVsdGEsIHN0cnVj
dCB0aW1ldmFsICpfX29sZGRlbHRhKSA7CgoKCgplbnVtIF9faXRpbWVyX3doaWNoCiAgewoKICAg
IElUSU1FUl9SRUFMID0gMCwKCgogICAgSVRJTUVSX1ZJUlRVQUwgPSAxLAoKCgogICAgSVRJTUVS
X1BST0YgPSAyCgogIH07CgoKCnN0cnVjdCBpdGltZXJ2YWwKICB7CgogICAgc3RydWN0IHRpbWV2
YWwgaXRfaW50ZXJ2YWw7CgogICAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7CiAgfTsKCgoKZXh0
ZXJuIGludCBnZXRpdGltZXIgKGVudW0gX19pdGltZXJfd2hpY2ggX193aGljaCwgc3RydWN0IGl0
aW1lcnZhbCAqX192YWx1ZSkgOwoKCgoKCmV4dGVybiBpbnQgc2V0aXRpbWVyIChlbnVtIF9faXRp
bWVyX3doaWNoIF9fd2hpY2gsIF9fY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqX19uZXcsIHN0cnVj
dCBpdGltZXJ2YWwgKl9fb2xkKSA7CgoKCgoKZXh0ZXJuIGludCB1dGltZXMgKF9fY29uc3QgY2hh
ciAqX19maWxlLCBzdHJ1Y3QgdGltZXZhbCBfX3R2cFsyXSkgOwojIDM4ICJoaW50LmgiIDIKIyAx
MTQgImhpbnQuaCIKIyAxICJ0eXBlZGVmcy5oIiAxCiMgMTE1ICJoaW50LmgiIDIKCgoKCnR5cGVk
ZWYgc3RydWN0IHsKICAgIGRvdWJsZSBhaGksCiAgICAgICAgICAgIGFsbywKICAgICAgICAgICAg
ZHgsCiAgICAgICAgICAgIGZsaCwKICAgICAgICAgICAgZmxsLAogICAgICAgICAgICBmcmgsCiAg
ICAgICAgICAgIGZybCwKICAgICAgICAgICAgeGwsCiAgICAgICAgICAgIHhyOwogICAgfVJFQ1Q7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBkb3VibGUgdCwKICAgICAgICAgICAgcXA7CiAgICBpbnQg
bjsKICAgIH1TcGVlZDsKCnR5cGVkZWYgaW50IEVSUk9SOwoKCgoKCmV4dGVybiBkb3VibGUgV2hl
bih2b2lkKTsKCmV4dGVybiBkb3VibGUgUnVuKGludCBsYXBzLCBkb3VibGUgKmdhbXV0LAogICAg
ICAgICAgICAgICAgICBkb3VibGUgc2N4LCBkb3VibGUgc2N5LCBkb3VibGUgZG1heCwKICAgICAg
ICAgICAgICAgICAgaW50IG1lbXJ5LCBFUlJPUiAqZWZsYWcpOwojIDE1OSAiaGludC5oIgpleHRl
cm4gZG91YmxlCgpIaW50KGRvdWJsZSAqc2N4LCBkb3VibGUgKnNjeSwgZG91YmxlICpkbWF4LCBp
bnQgKm1jbnQsIFJFQ1QgKnJlY3QsCiAgICAgZG91YmxlICplcnJzLCBpbnQgKml4ZXMsIEVSUk9S
ICplZmxhZyk7CiMgMjEgImhpbnQuYyIgMgoKCgoKCgoKICAgIGNvbnN0IGNoYXIgZmlsbm1bXSA9
ICJET1VCTEUiOwojIDQ2ICJoaW50LmMiCnN0YXRpYyBpbnQgZ2xvYmFsX21heF9tZW07CnN0YXRp
YyBkb3VibGUgYWR2YW5jZSA9IDEuMjU4OTsKCgoKc3RhdGljIHZvaWQgeGZyZWUodm9pZCAqcCk7
CgoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogICAgICAgIEZJTEUgKmN1cnY7
CiAgICAgICAgU3BlZWQgcWRhdGFbMzAwXTsKICAgICAgICBFUlJPUiBlZmxhZzsKCiAgICAgICAg
aW50IGltYXg7CiAgICAgICAgaW50IGl0bTsKICAgICAgICBpbnQgbjsKICAgICAgICBpbnQgbnNj
b3V0OwoKICAgICAgICB2b2xhdGlsZSBkb3VibGUgdG0xOwogICAgICAgIHZvbGF0aWxlIGludCBp
dG0yOwoKICAgICAgICBkb3VibGUgZG1heDsKICAgICAgICBkb3VibGUgZ2FtdXQ7CgogICAgICAg
IGRvdWJsZSBzY3g7CiAgICAgICAgZG91YmxlIHNjeTsKICAgICAgICBkb3VibGUgdG0sIHRtMjsK
CiAgICAgICAgZG91YmxlIGRlbHE7CiAgICAgICAgZG91YmxlIHF1aXBzOwogICAgICAgIGRvdWJs
ZSBxcG5ldDsKICAgICAgICBkb3VibGUgcXBlYWs7CiAgICAgICAgZG91YmxlIHFwcmF0OwogICAg
ICAgIGRvdWJsZSBxcHRtcDsKICAgICAgICBkb3VibGUgdDsKICAgICAgICBkb3VibGUgdDA7CiAg
ICAgICAgZG91YmxlIHQxOwogICAgICAgIGRvdWJsZSB0ZGVsdGE7CiAgICAgICAgZG91YmxlIHRs
YXN0OwogICAgICAgIGRvdWJsZSB0c2NvdXQ7CgogICAgICAgIGludCBkYml0czsKICAgICAgICBp
bnQgaWJpdHM7CiAgICAgICAgaW50IGksIGosIGs7CiAgICAgICAgaW50IGxhcHM7CiAgICAgICAg
aW50IG1lbXVzZTsKCiAgICAgICAgZnB1dHMoIiAgICAgICAgIF8gICAgX1xuIgogICAgICAgICAg
ICAgICIgICAgICAgICB8ICAgIHwgIF8gXyAgIF8gX19fX18gVE1cbiIKICAgICAgICAgICAgICAi
ICAgICAgICAgfC0tICB8ICB8IHxcXCAgfCB8IHwgfFxuIgogICAgICAgICAgICAgICIgICAgICAg
ICB8ICAtLXwgIHwgfCBcXCB8ICAgfFxuIgogICAgICAgICAgICAgICIgICAgICAgICB8ICAgIHwg
IHwgfCAgXFx8ICAgfFxuIgogICAgICAgICAgICAgICIgICAgICAgICBeICAgIF4gIF4gXiAgIF4g
ICBeXG5cbiIKICAgICAgICAgICAgICAiKioqIFRoZSAgSElOVCAgUEVSRk9STUFOQ0UgQU5BTFla
RVIgKioqXG4iCiAgICAgICAgICAgICAgIiAgICAgICAgVmVyc2lvbiAxLjAgIEp1bmUgMTk5NFxu
IgogICAgICAgICAgICAgICIgICBKb2huIEwuIEd1c3RhZnNvbiAmIFF1aW5uIE8uIFNuZWxsXG4i
CiAgICAgICAgICAgICAgIiAgICAgU2NhbGFibGUgQ29tcHV0aW5nIExhYm9yYXRvcnlcbiIKICAg
ICAgICAgICAgICAiICAgMjM2IFdpbGhlbG0sIElvd2EgU3RhdGUgVW5pdmVyc2l0eVxuIgogICAg
ICAgICAgICAgICIgICAgICAgIEFtZXMsIElvd2EgICAgNTAwMTEtMzAyMFxuIgogICAgICAgICAg
ICAgICIgICAgICAgICAgICAoNTE1KSAyOTQgLSA5Mjk0XG5cbiIKICAgICAgICAgICAgICAiQ29w
eXJpZ2h0IChDKSAxOTk0IgogICAgICAgICAgICAgICIgSW93YSBTdGF0ZSBVbml2ZXJzaXR5IFJl
c2VhcmNoIEZvdW5kYXRpb24sIEluYy5cbiIKICAgICAgICAgICAgICAiUGxlYXNlIHNlbmQgcmVz
dWx0cyBhbmQgcXVlc3Rpb25zIHRvOiAgIGhpbnRAc2NsLmFtZXNsYWIuZ292XG4iCiAgICAgICAg
ICAgICAgIldoZW4gc2VuZGluZyByZXN1bHRzIHBsZWFzZSBmb2xsb3cgdGhlIGZvcm0gaW4gUkVB
RE1FXG4iCiAgICAgICAgICAgICAgIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXG4iLAogICAgICAgICAgICAgIHN0ZG91dCk7CgoKCgoKICAg
ICAgICBpZiAoKGN1cnYgPSBmb3BlbihmaWxubSwgInciKSkgPT0gKCh2b2lkICopMCkpIHsKICAg
ICAgICAgICAgICAgIHByaW50ZigiQ291bGQgbm90IG9wZW4gZGF0YSBmaWxlICVzXG4iLCBmaWxu
bSk7CiAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgIH0KCgogICAgICAgIGdsb2JhbF9t
YXhfbWVtID0gMTAyNDsKICAgICAgICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAgICAg
ICAgICAgICAgICBpZiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVu
OyAoX19idWlsdGluX2NvbnN0YW50X3AgKGFyZ3ZbaV0pICYmIF9fYnVpbHRpbl9jb25zdGFudF9w
ICgiLW0iKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKGFyZ3ZbaV0pLCBfX3MyX2xlbiA9IHN0cmxl
biAoIi1tIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGFyZ3ZbaV0pICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKGFyZ3ZbaV0pID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICgh
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCItbSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCItbSIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hh
ciAqKSAoYXJndltpXSksIChfX2NvbnN0IGNoYXIgKikgKCItbSIpLCAoX19zMV9sZW4gPCBfX3My
X2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3Ag
KGFyZ3ZbaV0pICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChhcmd2W2ldKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKShhcmd2W2ldKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4g
KGFyZ3ZbaV0pLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLW0iKSAm
JiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi1tIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoIi1tIikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYXJndltp
XSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiLW0i
KSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYXJndltpXSkpWzFd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi1tIikpWzFd
KTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGFyZ3ZbaV0pKVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItbSIpKVsyXSk7IGlm
IChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYXJndltpXSkpWzNdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi1tIikpWzNdKTsgfSB9IF9fcmVz
dWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIg
PSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItbSIpOyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoYXJndltpXSkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChhcmd2W2ldKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKGFyZ3ZbaV0pKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4g
PiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKGFyZ3ZbaV0pKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1
bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCItbSIpICYmICgoc2l6ZV90KShjb25z
dCB2b2lkICopKCgiLW0iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLW0iKSA9PSAx
KSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCItbSIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRp
bl9jb25zdGFudF9wIChhcmd2W2ldKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoYXJndltp
XSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoYXJndltpXSkgPT0gMSkgPyAoX19leHRl
bnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoYXJndltpXSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiLW0iKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoYXJndltpXSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIi1tIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGFyZ3ZbaV0pKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCItbSIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQg
PT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoYXJndltpXSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIi1tIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAo
eyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKGFyZ3ZbaV0pOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3Mx
WzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi1tIikp
WzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19z
MVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItbSIp
KVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChf
X3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi1t
IikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChf
X3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi1t
IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChhcmd2W2ldLCAiLW0iKSkpKTsg
fSkgPT0gMCAmJiBpKzEgPCBhcmdjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF9t
YXhfbWVtID0gYXRvbChhcmd2WysraV0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGds
b2JhbF9tYXhfbWVtIDw9IDAgfHwgZ2xvYmFsX21heF9tZW0gPiAxMDI0ICogMTAyNCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiYmFkIHBhcmFtZXRlciBmb3IgbWVt
b3J5IHNpemU6ICVzLlxuIiwgYXJndlsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhpdCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAoYXJndltpXSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCItYSIp
ICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoYXJndltpXSksIF9fczJfbGVuID0gc3RybGVuICgiLWEi
KSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoYXJndltpXSkgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikoYXJndltpXSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgoIi1hIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIi1h
IikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChh
cmd2W2ldKSwgKF9fY29uc3QgY2hhciAqKSAoIi1hIiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8g
X19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYXJndltp
XSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGFyZ3ZbaV0pICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKGFyZ3ZbaV0pID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoYXJndltp
XSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCItYSIpICYmICgoc2l6
ZV90KShjb25zdCB2b2lkICopKCgiLWEiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgi
LWEiKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChhcmd2W2ldKSlbMF0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCItYSIpKVswXSk7
IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChhcmd2W2ldKSlbMV0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLWEiKSlbMV0pOyBpZiAo
X19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYXJndltpXSkpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi1hIikpWzJdKTsgaWYgKF9fczFf
bGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChhcmd2W2ldKSlbM10gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLWEiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi1hIik7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChhcmd2W2ldKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGFyZ3ZbaV0pKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoYXJndltpXSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYg
X19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoYXJndltpXSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkp
KSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi1hIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCItYSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCItYSIpID09IDEpICYmIChf
X3MyX2xlbiA9IHN0cmxlbiAoIi1hIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0
YW50X3AgKGFyZ3ZbaV0pICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChhcmd2W2ldKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShhcmd2W2ldKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9f
ICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChhcmd2W2ldKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopKCItYSIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChhcmd2W2ldKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgiLWEiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoYXJndltpXSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIi1hIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChh
cmd2W2ldKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiLWEiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29u
c3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoYXJndltpXSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLWEiKSlbMF07IGlm
IChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi1hIikpWzFdKTsg
aWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLWEiKSlbMl0p
OyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLWEiKSlbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKGFyZ3ZbaV0sICItYSIpKSkpOyB9KSA9PSAw
ICYmIGkrMSA8IGFyZ2MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZSA9IGF0b2Yo
YXJndlsrK2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFkdmFuY2UgPD0gMS4wIHx8
IGFkdmFuY2UgPj0gMi4wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRm
KCJiYWQgcGFyYW1ldGVyIGZvciBhZHZhbmNlOiAlcy5cbiIsIGFyZ3ZbaV0pOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Zigi
YmFkIHBhcmFtZXRlcjogJXMuXG4iLCBhcmd2W2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ZXhpdCgxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgoKICAgICAgICBmb3IgKHQwID0g
V2hlbigpOyAoKHQxID0gV2hlbigpKSA9PSB0MCk7KTsKICAgICAgICB0ZGVsdGEgPSB0MSAtIHQw
OwoKCiAgICAgICAgZGJpdHMgPSAwOwogICAgICAgIHRtID0gKGRvdWJsZSkxOwogICAgICAgIHRt
MiA9IHRtICsgdG07CiAgICAgICAgdG0xID0gdG0yICsgMTsKCgogICAgICAgIHdoaWxlICgoKGRv
dWJsZSkodG0xIC0gdG0yKSA9PSAoZG91YmxlKTEpICYmICh0bTIgPiAoZG91YmxlKTApKQoKCgog
ICAgICAgIHsKICAgICAgICAgICAgICAgIGRiaXRzKys7CiAgICAgICAgICAgICAgICB0bSArPSB0
bTsKICAgICAgICAgICAgICAgIHRtMiArPSB0bTI7CiAgICAgICAgICAgICAgICB0bTEgPSB0bTIg
KyAxOwogICAgICAgIH0KICAgICAgICBkYml0cysrOwoKCiAgICAgICAgZG1heCA9IHRtICsgKHRt
IC0gMSk7CiAgICAgICAgcHJpbnRmKCJBcHBhcmVudCBudW1iZXIgb2YgYml0cyBvZiBhY2N1cmFj
eTogJWRcbiIsIGRiaXRzKTsKICAgICAgICBmcHJpbnRmKGN1cnYsICIjIEFwcGFyZW50IG51bWJl
ciBvZiBiaXRzIG9mIGFjY3VyYWN5OiAlZFxuIiwgZGJpdHMpOwogICAgICAgIHByaW50ZigiTWF4
aW11bSBhc3NvY2lhdGl2ZSB3aG9sZSBudW1iZXI6ICUuMGZcbiIsIChkb3VibGUpIGRtYXgpOwog
ICAgICAgIGZwcmludGYoY3VydiwgIiMgTWF4aW11bSBhc3NvY2lhdGl2ZSB3aG9sZSBudW1iZXI6
ICUuMGZcbiIsCiAgICAgICAgICAgICAgICAoZG91YmxlKSBkbWF4KTsKCgogICAgICAgIGliaXRz
ID0gMDsKICAgICAgICBpdG0gPSAoaW50KTE7CiAgICAgICAgaXRtMiA9IGl0bSArIGl0bTsKCiAg
ICAgICAgd2hpbGUgKGl0bTIgPiAoaW50KTApIHsKICAgICAgICAgICAgICAgIGliaXRzKys7CiAg
ICAgICAgICAgICAgICBpdG0gKz0gaXRtOwogICAgICAgICAgICAgICAgaXRtMiArPSBpdG0yOwog
ICAgICAgIH0KICAgICAgICBpbWF4ID0gaXRtOwogICAgICAgIHByaW50ZigiTWF4aW11bSBudW1i
ZXIgb2YgYml0cyBvZiBpbmRleDogJWRcbiIsIGliaXRzKTsKICAgICAgICBmcHJpbnRmKGN1cnYs
ICIjIE1heGltdW0gbnVtYmVyIG9mIGJpdHMgb2YgaW5kZXg6ICVkXG4iLCBpYml0cyk7CiAgICAg
ICAgcHJpbnRmKCJNYXhpbXVtIHJlcHJlc2VudGFibGUgaW5kZXg6ICUuMGZcblxuIiwgKGRvdWJs
ZSkgaW1heCk7CiAgICAgICAgZnByaW50ZihjdXJ2LCAiIyBNYXhpbXVtIHJlcHJlc2VudGFibGUg
aW5kZXg6ICUuMGZcbiIsIChkb3VibGUpIGltYXgpOwoKCiAgICAgICAgaWYgKChpYml0cyArIGli
aXRzKSA8IGRiaXRzKSB7CiAgICAgICAgICAgICAgICBkbWF4ID0gKGRvdWJsZSlpbWF4ICogKGRv
dWJsZSlpbWF4IC0gMTsKICAgICAgICAgICAgICAgIGRiaXRzID0gaWJpdHMgKyBpYml0czsKICAg
ICAgICB9CiAgICAgICAgcHJpbnRmKCJJbmRleC1saW1pdGVkIGRhdGEgYWNjdXJhY3k6ICVkIGJp
dHNcbiIsIGRiaXRzKTsKICAgICAgICBmcHJpbnRmKGN1cnYsICIjIEluZGV4LWxpbWl0ZWQgZGF0
YSBhY2N1cmFjeTogJWQgYml0c1xuIiwgZGJpdHMpOwogICAgICAgIHByaW50ZigiTWF4aW11bSB1
c2FibGUgd2hvbGUgbnVtYmVyOiAlLjBmXG4iLCAoZG91YmxlKSBkbWF4KTsKICAgICAgICBmcHJp
bnRmKGN1cnYsICIjIE1heGltdW0gdXNhYmxlIHdob2xlIG51bWJlcjogJS4wZlxuIiwgKGRvdWJs
ZSkgZG1heCk7CgoKICAgICAgICBqID0gKGRiaXRzKS8yOwoKCiAgICAgICAgZm9yIChpID0gMCwg
c2N4ID0gMTsgaSA8IGo7IHNjeCArPSBzY3gsIGkrKykKICAgICAgICAgICAgICAgIDsKICAgICAg
ICBmb3IgKGkgPSAwLCBzY3kgPSAxOyBpIDwgZGJpdHMgLSBqOyBzY3kgKz0gc2N5LCBpKyspCiAg
ICAgICAgICAgICAgICA7CiAgICAgICAgcHJpbnRmKCJHcmlkOiAlLjBmIHdpZGUgYnkgJS4wZiBo
aWdoLlxuIiwgKGRvdWJsZSkgc2N4LCAoZG91YmxlKSBzY3kpOwogICAgICAgIGZwcmludGYoY3Vy
diwgIiMgR3JpZDogJS4wZiB3aWRlIGJ5ICUuMGYgaGlnaC5cbiIsCiAgICAgICAgICAgICAgICAo
ZG91YmxlKSBzY3gsIChkb3VibGUpIHNjeSk7CgogICAgICAgIHByaW50ZigiTWF4bWVtOiAlbGRc
bkFkdmFuY2U6ICVmXG4iLCAobG9uZykgZ2xvYmFsX21heF9tZW0sIGFkdmFuY2UpOwogICAgICAg
IGZwcmludGYoY3VydiwgIiMgTWF4bWVtOiAlbGRcbiMgQWR2YW5jZTogJWZcbiIsCiAgICAgICAg
ICAgICAgICAobG9uZykgZ2xvYmFsX21heF9tZW0sIGFkdmFuY2UpOwoKCiAgICAgICAgZm9yIChu
c2NvdXQgPSAyLCBsYXBzID0gMzsgbnNjb3V0IDwgc2N4OyApIHsKICAgICAgICAgICAgICAgIHQg
PSBSdW4obGFwcywgJmdhbXV0LCBzY3gsIHNjeSwgZG1heCwgbnNjb3V0LCAmZWZsYWcpOwogICAg
ICAgICAgICAgICAgaWYgKGVmbGFnICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbnNj
b3V0IC89IDI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
fSBlbHNlIGlmICgodCA+IDAuOCkgJiYgKGVmbGFnID09IDApKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHRzY291dCA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHNjb3V0ID0gdDsKICAg
ICAgICAgICAgICAgICAgICAgICAgbnNjb3V0ICo9IDI7CiAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChuc2NvdXQgPiBzY3gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc2Nv
dXQgLz0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAo
dHNjb3V0ID09IDApIHsKICAgICAgICAgICAgICAgIHByaW50ZiggIkRhdGEgdHlwZSBmb3IgJXMg
aXMgdG9vIHNtYWxsXG4iLCBhcmd2WzBdKTsKICAgICAgICAgICAgICAgIGV4aXQoMCk7CiAgICAg
ICAgfQogICAgICAgIGlmICh0c2NvdXQgPCAwLjgpIHsKICAgICAgICAgICAgICAgIGlmIChlZmxh
ZyA9PSAyKQogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIk1lbW9yeSBpcyBub3Qgc3Vm
ZmljaWVudCBmb3IgPiAlMy4xZiBzZWNvbmQgcnVucy5cbiIsIDAuOCk7CiAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiUHJlY2lzaW9uIGlzIG5vdCBz
dWZmaWNpZW50IGZvciA+ICUzLjFmIHNlY29uZCBydW5zLlxuIiwgMC44KTsKICAgICAgICB9CgoK
ICAgICAgICBmb3IgKHQgPSAwLCBpID0gMCwgbiA9IDIsIHFwZWFrID0gMCwgcXByYXQgPSAxLCB0
bGFzdCA9IDA7CiAgICAgICAgICAgICAoKGkgPCAzMDApICYmICh0IDwgMTAwKSAmJiAobiA8IHNj
eCkgJiYgKHFwcmF0ID4gMC4xKSk7CiAgICAgICAgICAgICBpKyssIG4gPSAoKGludCkobiAqIGFk
dmFuY2UpID4gbik/IChuICogYWR2YW5jZSkgOiBuICsgMSkKICAgICAgICB7CgogICAgICAgICAg
ICAgICAgZnB1dGMoJy4nLCBzdGRvdXQpOwogICAgICAgICAgICAgICAgZmZsdXNoKHN0ZG91dCk7
CgoKICAgICAgICAgICAgICAgIGxhcHMgPSAoKCgwLjggKiBuc2NvdXQgLyAodHNjb3V0ICogbikp
ID4gKDEpKT8gKDAuOCAqIG5zY291dCAvICh0c2NvdXQgKiBuKSk6ICgxKSk7CiAgICAgICAgICAg
ICAgICB0ID0gUnVuKGxhcHMsICZnYW11dCwgc2N4LCBzY3ksIGRtYXgsIG4sICZlZmxhZyk7CiAg
ICAgICAgICAgICAgICBpZiAodCA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGRl
bHRhOwogICAgICAgICAgICAgICAgaWYgKGVmbGFnICE9IDApCiAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwoKCgogICAgICAgICAgICAgICAgZGVscSA9IChkb3VibGUpZG1heCAvIGdhbXV0
IC0gMTsKICAgICAgICAgICAgICAgIHF1aXBzID0gZGVscSAvIHQgKyAxLjAgLyBnYW11dCAvIHQ7
CiAgICAgICAgICAgICAgICBxZGF0YVtpXS50ID0gdDsKICAgICAgICAgICAgICAgIHFkYXRhW2ld
LnFwID0gcXVpcHM7CiAgICAgICAgICAgICAgICBxZGF0YVtpXS5uID0gbjsKICAgICAgICAgICAg
ICAgIHFwZWFrID0gKCgocXBlYWspID4gKHF1aXBzKSk/IChxcGVhayk6IChxdWlwcykpOwogICAg
ICAgICAgICAgICAgcXByYXQgPSBxdWlwcyAvIHFwZWFrOwogICAgICAgIH0KICAgICAgICBtZW11
c2UgPSAoaW50KSAocWRhdGFbaS0xXS5uICogKHNpemVvZihSRUNUKSArIHNpemVvZihkb3VibGUp
ICsgc2l6ZW9mKGludCkpKTsKICAgICAgICBpZiAoKHFwcmF0ID4gMC4xKSAmJiAoZWZsYWcgPT0g
MikpIHsKICAgICAgICAgICAgICAgIHByaW50ZigiXG5UaGlzIHJ1biB3YXMgbWVtb3J5IGxpbWl0
ZWQgYXQgJWQgc3ViaW50ZXJ2YWxzIC0+ICVkIGJ5dGVzXG4iLAogICAgICAgICAgICAgICAgICAg
ICAgIG4sIG1lbXVzZSk7CiAgICAgICAgICAgICAgICBmcHJpbnRmKGN1cnYsICIjIFJ1biBtZW1v
cnkgbGltaXRlZCBhdCAlZCBzdWJpbnRlcnZhbHMgLT4gJWQgYnl0ZXNcbiIsCiAgICAgICAgICAg
ICAgICAgICAgICAgIG4sIG1lbXVzZSk7CiAgICAgICAgfQogICAgICAgIHByaW50ZigiXG5Eb25l
IHdpdGggZmlyc3QgcGFzcy4gTm93IGNvbXB1dGluZyBuZXQgUVVJUFNcbiIpOwogICAgICAgIGZw
cmludGYoY3VydiwiJTEyLjEwZiAlMTAuMGYgJTEyLjBmICUxMi4wZiAlMTBkXG4iLAogICAgICAg
ICAgICAgICAgcWRhdGFbaS0xXS50LCBxZGF0YVtpLTFdLnFwLCBxZGF0YVtpLTFdLnQgKiBxZGF0
YVtpLTFdLnFwLAogICAgICAgICAgICAgICAgKGRvdWJsZSkgcWRhdGFbaS0xXS5uLCBtZW11c2Up
OwoKCgogICAgICAgIGZvciAocXBuZXQgPSBxZGF0YVtpLTFdLnFwLCBqID0gaSAtIDI7IGogPj0g
MDsgai0tKSB7CgoKICAgICAgICAgICAgICAgIGZvciAoayA9IDA7CiAgICAgICAgICAgICAgICAg
ICAgICgocWRhdGFbaisxXS50IDwgcWRhdGFbal0udCkgJiYgKGsgPCAxMCkpOwogICAgICAgICAg
ICAgICAgICAgICBrKyspCiAgICAgICAgICAgICAgICB7CgoKCiAgICAgICAgICAgICAgICAgICAg
ICAgIGZwdXRjKCcjJywgc3Rkb3V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgZmZsdXNoKHN0
ZG91dCk7CgogICAgICAgICAgICAgICAgICAgICAgICBsYXBzID0gKCgoMC44ICogbnNjb3V0IC8g
KHRzY291dCAqIHFkYXRhW2pdLm4pKSA+ICgxKSk/ICgwLjggKiBuc2NvdXQgLyAodHNjb3V0ICog
cWRhdGFbal0ubikpOiAoMSkpOwogICAgICAgICAgICAgICAgICAgICAgICB0ID0gUnVuKGxhcHMs
ICZnYW11dCwgc2N4LCBzY3ksIGRtYXgsIHFkYXRhW2pdLm4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmVmbGFnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPT0gMCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGRlbHRhOwogICAgICAgICAgICAg
ICAgICAgICAgICBkZWxxID0gKGRvdWJsZSlkbWF4IC8gZ2FtdXQgLSAxOwogICAgICAgICAgICAg
ICAgICAgICAgICBxdWlwcyA9IGRlbHEgLyB0ICsgMS4wIC8gZ2FtdXQgLyB0OwogICAgICAgICAg
ICAgICAgICAgICAgICBxZGF0YVtqXS50ID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgcWRh
dGFbal0ucXAgPSBxdWlwczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChx
ZGF0YVtqKzFdLnQgPCBxZGF0YVtqXS50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
ZigiIEZvcmNpbmcgYSB0aW1lIGZvciAlZCBzdWJpbnRlcnZhbHNcbiIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBxZGF0YVtqXS5uKTsKICAgICAgICAgICAgICAgICAgICAgICAgZnBy
aW50ZihjdXJ2LCAiIyBGb3JjaW5nIGEgdGltZSBmb3IgJWQgc3ViaW50ZXJ2YWxzXG4iLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFkYXRhW2pdLm4pOwogICAgICAgICAgICAgICAg
ICAgICAgICBxZGF0YVtqXS50ID0gcWRhdGFbaisxXS50OwogICAgICAgICAgICAgICAgICAgICAg
ICBkZWxxID0gKGRvdWJsZSkgZG1heCAvIGdhbXV0IC0gMTsKICAgICAgICAgICAgICAgICAgICAg
ICAgcWRhdGFbal0ucXAgPSBkZWxxIC8gcWRhdGFbal0udCArIDEuMCAvIGdhbXV0IC8gcWRhdGFb
al0udDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG1lbXVzZSA9IChpbnQpKHFk
YXRhW2pdLm4gKiAoc2l6ZW9mKFJFQ1QpK3NpemVvZihkb3VibGUpK3NpemVvZihpbnQpKSk7CiAg
ICAgICAgICAgICAgICBmcHJpbnRmKGN1cnYsICIlMTIuMTBmICUxMC4wZiAlMTIuMGYgJTEyLjBm
ICUxMGRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHFkYXRhW2pdLnQsIHFkYXRhW2pdLnFw
LCBxZGF0YVtqXS50ICogcWRhdGFbal0ucXAsCiAgICAgICAgICAgICAgICAgICAgICAgIChkb3Vi
bGUpcWRhdGFbal0ubiwgbWVtdXNlKTsKCgoKCiAgICAgICAgICAgICAgICBxcHRtcCA9IHFkYXRh
W2pdLnFwICogcWRhdGFbal0udCAvIHFkYXRhW2orMV0udDsKICAgICAgICAgICAgICAgIHFwbmV0
ICs9IChxZGF0YVtqXS5xcCAtIHFwdG1wKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbkZp
bmlzaGVkIHdpdGggJWYgbmV0IFFVSVBzXG4iLCBxcG5ldCk7CiAgICAgICAgZnByaW50ZihjdXJ2
LCAiIyBGaW5pc2hlZCB3aXRoICVmIG5ldCBRVUlQc1xuIiwgcXBuZXQpOwogICAgICAgIGZjbG9z
ZShjdXJ2KTsKfQoKCgoKCgpzdGF0aWMgdm9pZCAqbWFsbG9jX2FsaWduZWQodm9pZCAqKm9yaWcs
IHNpemVfdCBjb3VudCwgc2l6ZV90IHNpemUpCnsKICAgICAgICB2b2lkICpwOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgYTsKCiAgICAgICAgYSA9IDE7CiAgICAgICAgd2hpbGUgKGEgPCBzaXplKQog
ICAgICAgICAgICAgICAgYSA9IGEgKyBhOwogICAgICAgIGEtLTsKICAgICAgICAqb3JpZyA9IHAg
PSBtYWxsb2MoY291bnQgKiBzaXplICsgYSk7CiAgICAgICAgaWYgKHAgPT0gKCh2b2lkICopMCkp
CiAgICAgICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgaWYgKCgodW5zaWdu
ZWQgbG9uZykgKHApKSAmIGEpCiAgICAgICAgICAgICAgICBwID0gKHZvaWQgKikgKCgoKHVuc2ln
bmVkIGxvbmcpIChwKSkgKyBhKSAmIH5hKTsKICAgICAgICByZXR1cm4gcDsKfQoKCgoKZG91Ymxl
ClJ1bihpbnQgbGFwcywKICAgIGRvdWJsZSAqZ2FtdXQsIGRvdWJsZSBzY3gsIGRvdWJsZSBzY3ks
IGRvdWJsZSBkbWF4LCBpbnQgbWVtcnksIEVSUk9SICplZmxhZykKewogICAgICAgIFJFQ1QgKnJl
Y3QgPSAoKHZvaWQgKikwKTsKICAgICAgICBpbnQgKml4ZXMgPSAoKHZvaWQgKikwKTsKICAgICAg
ICBkb3VibGUgKmVycnMgPSAoKHZvaWQgKikwKTsKCiAgICAgICAgaW50IGksIGo7CgogICAgICAg
IGRvdWJsZSBtaW50OwoKCgoKCgoKICAgICAgICBSRUNUICpyZWN0X2FsaWduZWQ7CiAgICAgICAg
aW50ICppeGVzX2FsaWduZWQ7CiAgICAgICAgZG91YmxlICplcnJzX2FsaWduZWQ7CiAgICAgICAg
cmVjdF9hbGlnbmVkID0gbWFsbG9jX2FsaWduZWQoJnJlY3QsIG1lbXJ5LCBzaXplb2YgKFJFQ1Qp
KTsKICAgICAgICBlcnJzX2FsaWduZWQgPSBtYWxsb2NfYWxpZ25lZCgmZXJycywgMiAqIG1lbXJ5
LCBzaXplb2YgKGRvdWJsZSkpOwogICAgICAgIGl4ZXNfYWxpZ25lZCA9IG1hbGxvY19hbGlnbmVk
KCZpeGVzLCAyICogbWVtcnksIHNpemVvZiAoaW50KSk7CgoKCiAgICAgICAgaWYgKChyZWN0ID09
ICgodm9pZCAqKTApKSB8fCAoZXJycyA9PSAoKHZvaWQgKikwKSkgfHwgKGl4ZXMgPT0gKCh2b2lk
ICopMCkpCiAgICAgICAgICAgIHx8IChtZW1yeSAqIHNpemVvZiAoUkVDVCkgPiBnbG9iYWxfbWF4
X21lbSAqIDEwMjQgKiAxMDI0KSkKICAgICAgICB7CiAgICAgICAgICAgICAgICB4ZnJlZShyZWN0
KTsKICAgICAgICAgICAgICAgIHhmcmVlKGVycnMpOwogICAgICAgICAgICAgICAgeGZyZWUoaXhl
cyk7CiAgICAgICAgICAgICAgICAqZWZsYWcgPSAyOwogICAgICAgICAgICAgICAgcmV0dXJuICgt
Mik7CiAgICAgICAgfQogICAgICAgIG1pbnQgPSAxLjBlMzIgKiBsYXBzOwogICAgICAgIGZvciAo
aSA9IDA7IGkgPCA1OyBpKyspIHsKICAgICAgICAgICAgICAgIGRvdWJsZSB0ID0gV2hlbigpOwoK
ICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBsYXBzOyBqKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgKmdhbXV0ID0gSGludCgKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmc2N4LCAmc2N5LCAmZG1heCwgJm1lbXJ5LAoKCgoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWN0X2FsaWduZWQsIGVycnNfYWxpZ25lZCwgaXhlc19h
bGlnbmVkLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmxhZyk7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0ID0gV2hlbigpIC0gdDsKICAgICAgICAg
ICAgICAgIGlmICh0IDwgbWludCkKICAgICAgICAgICAgICAgICAgICAgICAgbWludCA9IHQ7CiAg
ICAgICAgfQoKCiAgICAgICAgZnJlZShyZWN0KTsKICAgICAgICBmcmVlKGVycnMpOwogICAgICAg
IGZyZWUoaXhlcyk7CiAgICAgICAgcmV0dXJuIG1pbnQgLyBsYXBzOwp9CiMgNDQyICJoaW50LmMi
CmRvdWJsZSBXaGVuKHZvaWQpCnsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0cDsKICAgICAgICBn
ZXR0aW1lb2ZkYXkoJnRwLCAoKHZvaWQgKikwKSk7CiAgICAgICAgcmV0dXJuIChkb3VibGUpIHRw
LnR2X3NlYyArIChkb3VibGUpIHRwLnR2X3VzZWMgKiAxLjBlLTY7Cn0KCgoKc3RhdGljIHZvaWQg
eGZyZWUodm9pZCAqcCkKewogICAgICAgIGlmIChwICE9ICgodm9pZCAqKTApKQogICAgICAgICAg
ICAgICAgZnJlZShwKTsKfQojIDEgImhrZXJuZWwuYyIgMQojIDE5ICJoa2VybmVsLmMiCiMgMSAi
aGludC5oIiAxCiMgMjAgImhrZXJuZWwuYyIgMgoKCgpkb3VibGUKSGludChkb3VibGUgKl9fcmVz
dHJpY3RfXyBzY3gsIGRvdWJsZSAqX19yZXN0cmljdF9fIHNjeSwgZG91YmxlICpfX3Jlc3RyaWN0
X18gZG1heCwgaW50ICpfX3Jlc3RyaWN0X18gbWNudCwgUkVDVCAqX19yZXN0cmljdF9fIHJlY3Qs
CiAgICAgZG91YmxlICpfX3Jlc3RyaWN0X18gZXJycywgaW50ICpfX3Jlc3RyaWN0X18gaXhlcywg
RVJST1IgKl9fcmVzdHJpY3RfXyBlZmxhZykKewogICAgZG91YmxlIGVycmlvLAogICAgICAgICAg
ICBlcnJqbywKICAgICAgICAgICAgc2gsCiAgICAgICAgICAgIHNsLAogICAgICAgICAgICB0bSwK
ICAgICAgICAgICAgdG0yLAogICAgICAgICAgICB0bWVycjsKCiAgICBpbnQgaW5jLCBqbmMsCiAg
ICAgICAgICAgIGlvLAogICAgICAgICAgICBpcSwKICAgICAgICAgICAgaXQsCiAgICAgICAgICAg
IGl0bXAsCiAgICAgICAgICAgIGpvLAogICAgICAgICAgICBtYTsKCgoKICAgICAgcmVjdFswXS54
bCA9IChkb3VibGUpMDsKICAgICAgcmVjdFswXS54ciA9ICpzY3g7CiAgICAgIHJlY3RbMF0uZHgg
PSAqc2N4OwogICAgICByZWN0WzBdLmZsbCA9ICpzY3k7CiAgICAgIHJlY3RbMF0uZmxoID0gKnNj
eTsKICAgICAgcmVjdFswXS5mcmwgPSAoZG91YmxlKTA7CiAgICAgIHJlY3RbMF0uZnJoID0gKGRv
dWJsZSkwOwogICAgICByZWN0WzBdLmFoaSA9ICpkbWF4OwogICAgICByZWN0WzBdLmFsbyA9IChk
b3VibGUpMDsKICAgICAgaXEgPSAwOwogICAgICBlcnJzW2lxXSA9IHJlY3RbMF0uYWhpIC0gcmVj
dFswXS5hbG87CiAgICAgIGl4ZXNbaXFdID0gaXE7CiAgICAgIHNoID0gcmVjdFswXS5haGk7CiAg
ICAgIHNsID0gcmVjdFswXS5hbG87CgogICAgICBmb3IgKGl0ID0gMDsgKChpdCA8ICptY250IC0g
MSkgJiYgKGl0IDw9IGlxKSk7IGl0KyspCiAgICAgIHsKICAgICAgICAgIGlvID0gbWEgPSBpeGVz
W2l0XTsKICAgICAgICAgIGpvID0gaXQgKyAxOwoKICAgICAgICAgIHRtID0gcmVjdFttYV0uZHg7
CgogICAgICAgICAgcmVjdFtpb10uZHggPSByZWN0W2pvXS5keCA9IHRtIC8gKGRvdWJsZSkyOwoK
CiAgICAgICAgICByZWN0W2pvXS54ciA9IHJlY3RbbWFdLnhyOwoKICAgICAgICAgIHJlY3RbaW9d
LnhyID0gcmVjdFtpb10ueGwgKwogICAgICAgICAgICAgICAgICAgICAgICAgcmVjdFtpb10uZHg7
CiAgICAgICAgICByZWN0W2pvXS54bCA9IHJlY3RbaW9dLnhyOwoKICAgICAgICAgIHJlY3Rbam9d
LmZybCA9IHJlY3RbbWFdLmZybDsKICAgICAgICAgIHJlY3Rbam9dLmZyaCA9IHJlY3RbbWFdLmZy
aDsKCgoKICAgICAgICAgIHRtID0gKCpzY3ggKyByZWN0W2lvXS54cik7CiAgICAgICAgICB0bTIg
PSAoKnNjeSAqICgqc2N4IC0gcmVjdFtpb10ueHIpKTsKICAgICAgICAgIGl0bXAgPSB0bTIgLyB0
bTsKICAgICAgICAgIHJlY3RbaW9dLmZybCA9IGl0bXA7CgoKICAgICAgICAgIHJlY3RbaW9dLmZy
aCA9IHJlY3RbaW9dLmZybCArICgodG0gKiByZWN0W2lvXS5mcmwpICE9IHRtMik7CiAgICAgICAg
ICByZWN0W2pvXS5mbGwgPSByZWN0W2lvXS5mcmw7CiAgICAgICAgICByZWN0W2pvXS5mbGggPSBy
ZWN0W2lvXS5mcmg7CgoKICAgICAgICAgIHRtID0gKHJlY3RbaW9dLmZsbCAtIHJlY3RbaW9dLmZy
aCkgKiAocmVjdFtpb10uZHggLSAoZG91YmxlKTIpOwogICAgICAgICAgaWYgKHRtIDwgKGRvdWJs
ZSkwKQogICAgICAgICAgICAgIHRtID0gKGRvdWJsZSkwOwogICAgICAgICAgZXJyaW8gPSAocmVj
dFtpb10uZmxoIC0gcmVjdFtpb10uZnJoICsKICAgICAgICAgICAgICAgICAgIHJlY3RbaW9dLmZs
bCAtIHJlY3RbaW9dLmZybCkgKgogICAgICAgICAgICAgICAgICAocmVjdFtpb10uZHggLSAoZG91
YmxlKTEpIC0gdG07CgoKICAgICAgICAgIHRtID0gKHJlY3Rbam9dLmZsbCAtIHJlY3Rbam9dLmZy
aCkgKiAocmVjdFtqb10uZHggLSAoZG91YmxlKTIpOwogICAgICAgICAgaWYgKHRtIDwgKGRvdWJs
ZSkwKQogICAgICAgICAgICAgIHRtID0gKGRvdWJsZSkwOwogICAgICAgICAgZXJyam8gPSAocmVj
dFtqb10uZmxoIC0gcmVjdFtqb10uZnJoICsKICAgICAgICAgICAgICAgICAgIHJlY3Rbam9dLmZs
bCAtIHJlY3Rbam9dLmZybCkgKgogICAgICAgICAgICAgICAgICAocmVjdFtqb10uZHggLSAoZG91
YmxlKTEpIC0gdG07CgoKCiAgICAgICAgICBpbmMgPSAoZXJyaW8gPCBlcnJqbykgKyAxOwogICAg
ICAgICAgam5jID0gMyAtIGluYzsKCgogICAgICAgICAgZXJyc1tpcSArIGluY10gPSBlcnJpbzsK
ICAgICAgICAgIGl4ZXNbaXEgKyBpbmNdID0gaW87CiAgICAgICAgICBlcnJzW2lxICsgam5jXSA9
IGVycmpvOwogICAgICAgICAgaXhlc1tpcSArIGpuY10gPSBqbzsKCgogICAgICAgICAgaXEgPSBp
cSArIChlcnJzW2lxICsgMl0gIT0gMCkgKyAxOwoKCiAgICAgICAgICB0bSA9IHJlY3RbbWFdLmFs
bzsKICAgICAgICAgIHJlY3RbaW9dLmFsbyA9IHJlY3RbaW9dLmZybCAqIHJlY3RbaW9dLmR4Owog
ICAgICAgICAgcmVjdFtqb10uYWxvID0gcmVjdFtqb10uZnJsICogcmVjdFtqb10uZHg7CiAgICAg
ICAgICBzbCAtPSB0bTsKICAgICAgICAgIHNsICs9IHJlY3RbaW9dLmFsbyArIHJlY3Rbam9dLmFs
bzsKICAgICAgICAgIHRtID0gcmVjdFttYV0uYWhpOwogICAgICAgICAgcmVjdFtpb10uYWhpID0g
cmVjdFtpb10uZmxoICogcmVjdFtpb10uZHg7CiAgICAgICAgICByZWN0W2pvXS5haGkgPSByZWN0
W2pvXS5mbGggKiByZWN0W2pvXS5keDsKICAgICAgICAgIHNoIC09IHRtOwogICAgICAgICAgc2gg
Kz0gcmVjdFtpb10uYWhpICsgcmVjdFtqb10uYWhpOwogICAgICB9CiAgICAgIGlmIChpdCA+IGlx
KQogICAgICAgICAgKmVmbGFnID0gMTsKICAgICAgZWxzZQogICAgICAgICAgKmVmbGFnID0gMDsK
CiAgICAgIHJldHVybiAoc2ggLSBzbCk7Cn0KIyA0NTcgImhpbnQuYyIgMgo=


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