public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* Re: c++ library bug report
       [not found] <200008122003.QAA02188@disaster.jaj.com>
@ 2000-08-12 13:43 ` brent verner
  0 siblings, 0 replies; 2+ messages in thread
From: brent verner @ 2000-08-12 13:43 UTC (permalink / raw)
  To: Phil Edwards; +Cc: fwx, gcc-bugs

On 12 Aug 2000 at 16:03 (-0400), Phil Edwards wrote:
| 
| brent verner <brent@rcfile.org>:
| > On 11 Aug 2000 at 14:40 (-0700), Forest Wilkinson wrote:
| > | Where should I report a bug in the C++ library that is distributed with
| > | gcc?
| >
| > If the bug report is against libstdc++-v3, send email to 
| > libstdc++@sources.redhat.com. If you have any problems with sending the
| > email (becuase/if you're not subscribed),
| 
| Last I heard, the list didn't require a subscription before sending to it.
| Has that changed?  (If it has, I need to update one of the -v3 web pages.)

no. I just sent a test message to the list from a non-subscribed email
address. I didn't mean to imply that the list required subscription -- 
rather that I wasn't sure if it did or not. 

sorry for any confusion,
  Brent


-- 
Damon Brent Verner                        o      _     _         _
Cracker Jack? Surprise Certified  _o     /\_   _ \\o  (_)\__/o  (_)
brent@rcfile.org                _< \_   _>(_) (_)/<_    \_| \   _|/' \/
brent@linux1.org               (_)>(_) (_)        (_)   (_)    (_)'  _\o_
>From drepper@redhat.com Sat Aug 12 19:21:00 2000
From: Ulrich Drepper <drepper@redhat.com>
To: gcc-bugs@gcc.gnu.org
Subject: ICE in current mainline (x86)
Date: Sat, 12 Aug 2000 19:21:00 -0000
Message-id: <m3sns93nqs.fsf@otr.mynet.cygnus.com>
X-SW-Source: 2000-08/msg00269.html
Content-length: 581

The current mainline gcc fails to compile glibc.  It aborts with in ICE:

locale$ gcc -c -fpic -O findlocale.i 
findlocale.c: In function `_nl_find_locale':
findlocale.c:195: Internal compiler error in gen_lowpart, at emit-rtl.c:1084


This bug is there for quite some time.  I've put the offending file up
at

	http://www.cygnus.com/~drepper/findlocale.i.bz2

-- 
---------------.                          ,-.   1325 Chesapeake Terrace
Ulrich Drepper  \    ,-------------------'   \  Sunnyvale, CA 94089 USA
Red Hat          `--' drepper at redhat.com   `------------------------
>From vincent@pipo.com Sat Aug 12 19:46:00 2000
From: vincent@pipo.com
To: gcc-gnats@gcc.gnu.org
Subject: c/468: internal compiler error while compiling c file
Date: Sat, 12 Aug 2000 19:46:00 -0000
Message-id: <20000813023939.28907.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-08/msg00270.html
Content-length: 49094

>Number:         468
>Category:       c
>Synopsis:       internal compiler error while compiling c file
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Aug 12 19:46:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     vincent@pipo.com
>Release:        GNU C version 2.96 20000807
>Organization:
>Environment:
Debian 2.2
>Description:
When compiling the file 'memintercept.c' from memprof-0.4.0,
gcc stops because of an internal error.

(The relevant files are included in the joined mem.tgz archive)

complete transcript:

# gcc -v --save-temps -DHAVE_CONFIG_H -I. -I. -I. -I/usr/include -DNEED_GNOMESUPPORT_H -I/usr/lib/gnome-libs/include -I/usr/lib/glib/include -I/usr/X11R6/include -I/usr/include/gnome-xml -DDATADIR=\"/usr/share/memprof\" -DLIBDIR=\"/usr/lib\" -DGNOMELOCALEDIR=\"/usr/share/locale\" -g -O2 -Wall -c memintercept.c  -fPIC -DPIC -o .libs/memintercept.lo
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux/2.96/specs
gcc version 2.96 20000807 (experimental)
 /usr/local/lib/gcc-lib/i686-pc-linux/2.96/cpp0 -lang-c -v -I. -I. -I. -I/usr/include -I/usr/lib/gnome-libs/include -I/usr/lib/glib/include -I/usr/X11R6/include -I/usr/include/gnome-xml -D__GNUC__=2 -D__GNUC_MINOR__=96 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__OPTIMIZE__ -g -Wall -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__tune_pentiumpro__ -D__PIC__ -D__pic__ -DHAVE_CONFIG_H -DNEED_GNOMESUPPORT_H -DDATADIR="/usr/share/memprof" -DLIBDIR="/usr/lib" -DGNOMELOCALEDIR="/usr/share/locale" -DPIC memintercept.c memintercept.i
GNU CPP version 2.96 20000807 (experimental) (cpplib)
 (i386 Linux/ELF)
ignoring duplicate directory "."
ignoring duplicate directory "."
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 .
 /usr/include
 /usr/lib/gnome-libs/include
 /usr/lib/glib/include
 /usr/X11R6/include
 /usr/include/gnome-xml
 /usr/local/include
 /usr/local/lib/gcc-lib/i686-pc-linux/2.96/include
 /usr/local/i686-pc-linux/include
End of search list.
 /usr/local/lib/gcc-lib/i686-pc-linux/2.96/cc1 memintercept.i -quiet -dumpbase memintercept.c -g -O2 -Wall -version -fPIC -o memintercept.s
GNU C version 2.96 20000807 (experimental) (i686-pc-linux) compiled by GNU C version 2.95.2 20000220 (Debian GNU/Linux).
memintercept.c: In function `__libc_malloc':
memintercept.c:299: Internal compiler error in gen_lowpart, at emit-rtl.c:1084
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
>How-To-Repeat:
try to recompile the file given in the archive.
>Fix:
no idea ;)
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-gtar; name="mem.tgz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="mem.tgz"

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
fz5/Pn8+fz5/Pn8+f/73fv5/oQLZGQDQAgA=
>From sundar@nagarajan.net Sat Aug 12 19:51:00 2000
From: Sundar Nagarajan <sundar@nagarajan.net>
To: gcc-bugs@gcc.gnu.org
Subject: Internal compiler error
Date: Sat, 12 Aug 2000 19:51:00 -0000
Message-id: <200008130257.WAA11708@bilbo.nagarajan.net>
X-SW-Source: 2000-08/msg00271.html
Content-length: 1059

I recently downloaded gcc 2.95.2.
I am compiling on a Pentium III 667 MHz 133 MHz FSB, 256 MB 133 MHz SDRAM running Linux 2.2.16 (with IDE patch of 20000717).

I was able to successfully compile gcc 2.95.2 with my OLD gcc, but afetr installing gcc 2.95.2 (in /usr/local/bin) when I tried compiling gcc 2.95.2 again with the NEW gcc 2.95.2 I get this error:

---------------end part of make output-----------------
gcc -c  -DIN_GCC     -g -O2  -DHAVE_CONFIG_H    -I. -I. -I./config -I./../include hash.c
In file included from /usr/include/stdio.h:631,
                 from system.h:32,
                 from hash.c:23:
/usr/include/bits/stdio.h: In function `getc_unlocked':
/usr/include/bits/stdio.h:51: Internal compiler error in `emit_move_insn_1', at expr.c:2636
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/faq.html#bugreport > for instructions.
make[1]: *** [hash.o] Error 1
make[1]: Leaving directory `/opt/tmp/gcc-2.95.2/gcc'
make: *** [all-gcc] Error 2
-----------------------end of make output-----------------------



^ permalink raw reply	[flat|nested] 2+ messages in thread

* c++ library bug report
@ 2000-08-11 14:38 Forest Wilkinson
  0 siblings, 0 replies; 2+ messages in thread
From: Forest Wilkinson @ 2000-08-11 14:38 UTC (permalink / raw)
  To: gcc-bugs

Hello.

Where should I report a bug in the C++ library that is distributed with
gcc?
>From carlo@alinoe.com Fri Aug 11 15:44:00 2000
From: Carlo Wood <carlo@alinoe.com>
To: gcc-bugs@gcc.gnu.org
Cc: carlo@alinoe.com, bug-gnu-utils@gnu.org, hjl@lucon.org, nickc@redhat.com
Subject: Optimization bug
Date: Fri, 11 Aug 2000 15:44:00 -0000
Message-id: <20000812004418.A4935@a2000.nl>
X-SW-Source: 2000-08/msg00259.html
Content-length: 1644

Hi,

at least gcc version 2.95.1 and 2.96-20000402 have an optimization bug
as described below.  I did not test other versions, but I seems likely
that all versions of gcc have this bug.

The problem is gcc is confused near `return' with its local variables
on the stack: returning from a function exits the scope of the local
variables, so that when a recursive call to the same function is
performed, this call is replaced by a jmp to the start of the function
and the same stack space is used for the local variables.

This is incorrect however when a pointer to a local variable is
passed in the recursive call.  This particular bug breaks a part of
binutils (I found it in objdump) in supposedly rare circumstances
(and they refuse to write a work around when it is a compiler bug ;).

I wrote a little test case to demonstrate the problem:

-----------------------------------------------------
int foo(int* p)
{
  int i = 1;
  *p += 2;
  if (*p == 3)
    return i;
  return foo(&i);
}

int main(void)
{
  int i = 0;
  return foo(&i);
}
-----------------------------------------------------

>gcc -v
Reading specs from /usr/lib/gcc-lib/i686-redhat-linux/2.95.1/specs
gcc version 2.95.1 19990816/Linux (release)

>gcc-cvs -v
Reading specs from /usr/local/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/specs
gcc version 2.96 20000402 (experimental)

>gcc -O0 20000812.c
>a.out; echo $?
1
>gcc -O1 20000812.c
>a.out; echo $?
3

>gcc-cvs -O0 20000812.c
>a.out; echo $?
1
>gcc-cvs -O1 20000812.c
>a.out; echo $?
1
>gcc-cvs -O2 20000812.c
>a.out; echo $?
3


Regards,

-- 
Carlo Wood <carlo@alinoe.com>                        -=- Jesus Loves you -=-
>From TBriscoe@clear.net.nz Fri Aug 11 15:46:00 2000
From: TBriscoe@clear.net.nz
To: gcc-gnats@gcc.gnu.org
Subject: c++/465: Internal compiler error in `find_function_data', at function.c:542
Date: Fri, 11 Aug 2000 15:46:00 -0000
Message-id: <20000811224040.3098.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-08/msg00260.html
Content-length: 109288

>Number:         465
>Category:       c++
>Synopsis:       Internal compiler error in `find_function_data', at function.c:542
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Fri Aug 11 15:46:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Tracy B
>Release:        gcc version 2.95.3 19991030 (prerelease)
>Organization:
>Environment:
Linux version 2.2.15-4mdk (chmou@kenobi.mandrakesoft.com) (gcc version 2.95.3 19991030 (prerelease)) #1 Wed May 10 15:31:30 CEST 2000         
cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 6
model name      : Celeron (Mendocino)
stepping        : 5
cpu MHz         : 467.736173
cache size      : 128 KB
fdiv_bug        : no
hlt_bug         : no
sep_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr
bogomips        : 933.89                              
>Description:
g++ -Wall encode.ii -o encode
encode.cc:10: warning: initialization to `const unsigned int' from `double'
encode.cc: In method `unsigned int TRIEnode::setPhrase(unsigned int)':
encode.cc:24: Internal compiler error in `find_function_data', at function.c:542
>How-To-Repeat:
g++ -Wall encode.ii -o encode
>Fix:
swap the lines
  TRIEnodePt ptrs[StartDictSize];
  unsigned int phrase;
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="encode.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="encode.ii"

IyAxICJlbmNvZGUuY2MiCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4
LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2lvc3RyZWFtLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGludGVyZmFjZQoKCgojIDEgIi91c3IvbGliL2dj
Yy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKyst
My9zdHJlYW1idWYuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGlu
dGVyZmFjZQoKCiAgIAoKCgpleHRlcm4gIkMiIHsKIyAxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL19HX2Nv
bmZpZy5oIiAxIDMKIAoKCgoKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgogCgoKCiAKCgoKCgoKCiAKIyAxMzggIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCgoKIAoK
CgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDE5NiAiL3Vzci9p
bmNsdWRlL2ZlYXR1cmVzLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKIAoKCgoKCgoKCiAKCgoKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCgoKCgoKIAoKCgoKIyA3MSAi
L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzCgoKIAoKCgoKCgoKIAoKCgojIDEwMyAiL3Vzci9p
bmNsdWRlL3N5cy9jZGVmcy5oIiAzCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgojIDI1MCAiL3Vzci9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDIgMwoKCiAKCgoKCgoKCgogCgoKCgoKIAoKIAoKCgoKCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiMgMjc4ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCgoKCgojIDI2ICIvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
bWFuZHJha2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAx
OSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0
ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1t
YW5kcmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1h
bmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1t
YW5kcmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xp
Yi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjkgIi91
c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiAKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9f
dV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNp
b25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNp
b25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDggIi91c3IvaW5jbHVkZS9i
aXRzL3R5cGVzLmgiIDMKCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5z
aWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGlu
dCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBfX3F1
YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CQkgCnR5cGVkZWYg
X191X2ludCBfX3VpZF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsJCSAKdHlwZWRlZiBf
X3VfbG9uZyBfX2lub190OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CQkgCnR5cGVkZWYg
X191X2ludCBfX25saW5rX3Q7IAkJIAp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CQkgCnR5cGVk
ZWYgX19xdWFkX3QgX19sb2ZmX3Q7CQkgCnR5cGVkZWYgaW50IF9fcGlkX3Q7CQkJIAp0eXBlZGVm
IGludCBfX3NzaXplX3Q7CQkJIAp0eXBlZGVmIGxvbmcgaW50IF9fcmxpbV90OwkJIAp0eXBlZGVm
IF9fcXVhZF90IF9fcmxpbTY0X3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX2lkX3Q7CQkJIAoKdHlw
ZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsJCQkJIAoKIAp0
eXBlZGVmIGludCBfX2RhZGRyX3Q7CQkJIAp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlwZWRl
ZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7CQkgCgwKdHlw
ZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19m
ZF9tYXNrOwoKIAoKCiAKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICAgCgoKCgoKICAgIF9f
ZmRfbWFzayBfX2Zkc19iaXRzWzEwMjQgIC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpIF07CgoK
ICB9IF9fZmRfc2V0OwoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgogCnR5cGVkZWYgdW5zaWduZWQg
c2hvcnQgaW50IF9faXBjX3BpZF90OwoKCiAKCiAKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90
Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBfX2Zz
YmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCiAKdHlwZWRlZiBf
X3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsK
CiAKdHlwZWRlZiBfX3VfbG9uZyBfX2lubzY0X3Q7CgogCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2
NF90OwoKIAp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIGludCBfX3RfdXNjYWxhcl90OwoKIAp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCiAKCgoK
CgojIDkgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgoKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoK
CgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2dj
Yy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2Nj
LWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoK
IAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0
eXBlZGVmIHVuc2lnbmVkIGludCAgd2ludF90OwoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2dj
Yy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDE0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIg
MwoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50
MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDMwICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgogCgojIDEgIi91c3IvbGliL2djYy1s
aWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKdHlwZWRlZiB2b2lkICpfX2dudWNfdmFfbGlzdDsKCgoKIAoKIyAxMjIgIi91
c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRhcmcu
aCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjA5ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFu
ZHJha2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkYXJnLmgiIDMKCgoKCiMgNDggIi91c3IvaW5j
bHVkZS9saWJpby5oIiAyIDMKCgoKCgoKCiMgNjcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCiMgOTggIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgpzdHJ1Y3Qg
X0lPX2p1bXBfdDsgIHN0cnVjdCBfSU9fRklMRTsKCiAKCgoKCgoKCnR5cGVkZWYgdm9pZCBfSU9f
bG9ja190OwoKCgogCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9u
ZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CiAgIAoKICAgCiAgaW50IF9wb3M7CiMgMTg2
ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKfTsKCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9m
bGFnczsJCSAKCgogICAKICAgCiAgY2hhciogX0lPX3JlYWRfcHRyOwkgCiAgY2hhciogX0lPX3Jl
YWRfZW5kOwkgCiAgY2hhciogX0lPX3JlYWRfYmFzZTsJIAogIGNoYXIqIF9JT193cml0ZV9iYXNl
OwkgCiAgY2hhciogX0lPX3dyaXRlX3B0cjsJIAogIGNoYXIqIF9JT193cml0ZV9lbmQ7CSAKICBj
aGFyKiBfSU9fYnVmX2Jhc2U7CSAKICBjaGFyKiBfSU9fYnVmX2VuZDsJIAogICAKICBjaGFyICpf
SU9fc2F2ZV9iYXNlOyAgCiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOyAgIAogIGNoYXIgKl9JT19z
YXZlX2VuZDsgIAoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9f
RklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZfdCAg
IF9vbGRfb2Zmc2V0OyAgCgoKICAgCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2ln
bmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgogICAKCiAgX0lP
X2xvY2tfdCAqX2xvY2s7CgoKCgoKCgoKICBfX29mZjY0X3QgICBfb2Zmc2V0OwogICAKICBpbnQg
X3VudXNlZDJbMTZdOwoKfTsKCgoKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKZXh0ZXJuIHN0cnVj
dCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3Bs
dXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9z
dGRlcnJfOwoKCgoKCgoKCgoKCiAKCiAKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAg
KHZvaWQgKiAgX19jb29raWUsIGNoYXIgKl9fYnVmLAoJCQkJICAgICAgIHNpemVfdCBfX25ieXRl
cykgIDsKCiAKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICAodm9pZCAqICBf
X2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwKCQkJCSAgICAgIHNpemVfdCBfX24pICA7Cgog
CgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICAodm9pZCAqICBfX2Nvb2tpZSwgX19vZmZf
dCAgIF9fcG9zLCBpbnQgX193KSAgOwoKIAp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICAodm9p
ZCAqICBfX2Nvb2tpZSkgIDsKCgojIDMxMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKCgoKCmV4
dGVybiAiQyIgewoKCmV4dGVybiBpbnQgX191bmRlcmZsb3cgIChfSU9fRklMRSAqKSAgdGhyb3cg
KCkgIDsKZXh0ZXJuIGludCBfX3VmbG93ICAoX0lPX0ZJTEUgKikgIHRocm93ICgpICA7CmV4dGVy
biBpbnQgX19vdmVyZmxvdyAgKF9JT19GSUxFICosIGludCkgIHRocm93ICgpICA7CgoKCgoKCgoK
CgoKCgoKCgpleHRlcm4gaW50IF9JT19nZXRjICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAg
OwpleHRlcm4gaW50IF9JT19wdXRjICAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAo
KSAgOwpleHRlcm4gaW50IF9JT19mZW9mICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwpl
eHRlcm4gaW50IF9JT19mZXJyb3IgIChfSU9fRklMRSAqX19mcCkgIHRocm93ICgpICA7CgpleHRl
cm4gaW50IF9JT19wZWVrY19sb2NrZWQgIChfSU9fRklMRSAqX19mcCkgIHRocm93ICgpICA7Cgog
CgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgdGhyb3cgKCkgIDsK
ZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIHRocm93ICgpICA7CmV4
dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAgKF9JT19GSUxFICopICB0aHJvdyAoKSAgOwoKCgoK
CgoKCgoKCgpleHRlcm4gaW50IF9JT192ZnNjYW5mICAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBj
b25zdCBjaGFyICogX19yZXN0cmljdCwKCQkJICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqX19y
ZXN0cmljdCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmICAoX0lPX0ZJTEUg
Kl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCgkJCSAgICAgIF9fZ251Y192YV9s
aXN0ICkgIHRocm93ICgpICA7CmV4dGVybiBfX3NzaXplX3QgICBfSU9fcGFkbiAgKF9JT19GSUxF
ICosIGludCwgX19zc2l6ZV90ICApICB0aHJvdyAoKSAgOwpleHRlcm4gc2l6ZV90ICAgX0lPX3Nn
ZXRuICAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkgIHRocm93ICgpICA7CgpleHRlcm4g
X19vZmY2NF90ICAgX0lPX3NlZWtvZmYgIChfSU9fRklMRSAqLCBfX29mZjY0X3QgICwgaW50LCBp
bnQpICB0aHJvdyAoKSAgOwpleHRlcm4gX19vZmY2NF90ICAgX0lPX3NlZWtwb3MgIChfSU9fRklM
RSAqLCBfX29mZjY0X3QgICwgaW50KSAgdGhyb3cgKCkgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVl
X2JhY2t1cF9hcmVhICAoX0lPX0ZJTEUgKikgIHRocm93ICgpICA7CgoKfQoKCgojIDM2ICIvdXNy
L2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvc3RyZWFtYnVmLmgiIDIgMwoKfQogCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4
Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCnZvaWQgdmFfZW5kIChfX2dudWNfdmFf
bGlzdCk7CQkgCgoKIAoKCgogCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CiAKCgoKCgoKCgoKCgoKCiMgMTc1ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkYXJnLmgiIDMKCgogCgoKCgogCgogCgogCgp0eXBlZGVmIF9f
Z251Y192YV9saXN0IHZhX2xpc3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDAgIi91c3Iv
bGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdHJlYW1idWYuaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4g
IkMrKyIgewpjbGFzcyBpc3RyZWFtOyAgCmNsYXNzIG9zdHJlYW07IGNsYXNzIHN0cmVhbWJ1ZjsK
CiAKCgoKCnR5cGVkZWYgX19vZmY2NF90ICAgc3RyZWFtb2ZmOwp0eXBlZGVmIF9fb2ZmNjRfdCAg
IHN0cmVhbXBvczsKCgoKCnR5cGVkZWYgX19zc2l6ZV90ICAgc3RyZWFtc2l6ZTsKCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBfX2ZtdGZsYWdzOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX19pb3N0YXRl
OwoKc3RydWN0IF9pb3NfZmllbGRzCnsgIAogICAgc3RyZWFtYnVmICpfc3RyYnVmOwogICAgb3N0
cmVhbSogX3RpZTsKICAgIGludCBfd2lkdGg7CiAgICBfX2ZtdGZsYWdzIF9mbGFnczsKICAgIHdj
aGFyX3QgICBfZmlsbDsKICAgIF9faW9zdGF0ZSBfc3RhdGU7CiAgICBfX2lvc3RhdGUgX2V4Y2Vw
dGlvbnM7CiAgICBpbnQgX3ByZWNpc2lvbjsKCiAgICB2b2lkICpfYXJyYXlzOyAgCn07CgoKCgoK
CgoKCgoKCgoKCiMgMTI0ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45
NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgiIDMKCgpjbGFzcyBpb3Mg
OiBwdWJsaWMgX2lvc19maWVsZHMgewogIGlvcyYgb3BlcmF0b3I9KGlvcyYpOyAgIAogIGlvcyAo
Y29uc3QgaW9zJik7ICAKICBwdWJsaWM6CiAgICB0eXBlZGVmIF9fZm10ZmxhZ3MgZm10ZmxhZ3M7
CiAgICB0eXBlZGVmIGludCBpb3N0YXRlOwogICAgdHlwZWRlZiBpbnQgb3Blbm1vZGU7CiAgICB0
eXBlZGVmIF9fc3NpemVfdCAgIHN0cmVhbXNpemU7CiAgICBlbnVtIGlvX3N0YXRlIHsKCWdvb2Ri
aXQgPSAwICwKCWVvZmJpdCA9IDEgLAoJZmFpbGJpdCA9IDIgLAoJYmFkYml0ID0gNCAgfTsKICAg
IGVudW0gb3Blbl9tb2RlIHsKCWluID0gMSAsCglvdXQgPSAyICwKCWF0ZSA9IDQgLAoJYXBwID0g
OCAsCgl0cnVuYyA9IDE2ICwKCW5vY3JlYXRlID0gMzIgLAoJbm9yZXBsYWNlID0gNjQgLAoJYmlu
ID0gMTI4ICwgIAoJYmluYXJ5ID0gMTI4ICB9OwogICAgZW51bSBzZWVrX2RpciB7IGJlZywgY3Vy
LCBlbmR9OwogICAgdHlwZWRlZiBlbnVtIHNlZWtfZGlyIHNlZWtkaXI7CiAgICAgCiAgICBlbnVt
IHsgc2tpcHdzPSAwMSAsCgkgICBsZWZ0PSAwMiAsIHJpZ2h0PSAwNCAsIGludGVybmFsPSAwMTAg
LAoJICAgZGVjPSAwMjAgLCBvY3Q9IDA0MCAsIGhleD0gMDEwMCAsCgkgICBzaG93YmFzZT0gMDIw
MCAsIHNob3dwb2ludD0gMDQwMCAsCgkgICB1cHBlcmNhc2U9IDAxMDAwICwgc2hvd3Bvcz0gMDIw
MDAgLAoJICAgc2NpZW50aWZpYz0gMDQwMDAgLCBmaXhlZD0gMDEwMDAwICwKCSAgIHVuaXRidWY9
IDAyMDAwMCAsIHN0ZGlvPSAwNDAwMDAgCgoKCgkgICB9OwogICAgZW51bSB7ICAKCWJhc2VmaWVs
ZD1kZWMrb2N0K2hleCwKCWZsb2F0ZmllbGQgPSBzY2llbnRpZmljK2ZpeGVkLAoJYWRqdXN0Zmll
bGQgPSBsZWZ0K3JpZ2h0K2ludGVybmFsCiAgICB9OwoKIyAxNzcgIi91c3IvbGliL2djYy1saWIv
aTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJl
YW1idWYuaCIgMwoKCiAgICBvc3RyZWFtKiB0aWUoKSBjb25zdCB7IHJldHVybiBfdGllOyB9CiAg
ICBvc3RyZWFtKiB0aWUob3N0cmVhbSogdmFsKSB7IG9zdHJlYW0qIHNhdmU9X3RpZTsgX3RpZT12
YWw7IHJldHVybiBzYXZlOyB9CgogICAgIAogICAgd2NoYXJfdCAgIGZpbGwoKSBjb25zdCB7IHJl
dHVybiBfZmlsbDsgfQogICAgd2NoYXJfdCAgIGZpbGwod2NoYXJfdCAgIG5ld2YpCgl7d2NoYXJf
dCAgIG9sZGYgPSBfZmlsbDsgX2ZpbGwgPSBuZXdmOyByZXR1cm4gb2xkZjt9CiAgICBmbXRmbGFn
cyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIF9mbGFnczsgfQogICAgZm10ZmxhZ3MgZmxhZ3MoZm10
ZmxhZ3MgbmV3X3ZhbCkgewoJZm10ZmxhZ3Mgb2xkX3ZhbCA9IF9mbGFnczsgX2ZsYWdzID0gbmV3
X3ZhbDsgcmV0dXJuIG9sZF92YWw7IH0KICAgIGludCBwcmVjaXNpb24oKSBjb25zdCB7IHJldHVy
biBfcHJlY2lzaW9uOyB9CiAgICBpbnQgcHJlY2lzaW9uKGludCBuZXdwKSB7Cgl1bnNpZ25lZCBz
aG9ydCBvbGRwID0gX3ByZWNpc2lvbjsgX3ByZWNpc2lvbiA9ICh1bnNpZ25lZCBzaG9ydCluZXdw
OwoJcmV0dXJuIG9sZHA7IH0KICAgIGZtdGZsYWdzIHNldGYoZm10ZmxhZ3MgdmFsKSB7CglmbXRm
bGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJX2ZsYWdzIHw9IHZhbDsgcmV0dXJuIG9sZGJpdHM7IH0K
ICAgIGZtdGZsYWdzIHNldGYoZm10ZmxhZ3MgdmFsLCBmbXRmbGFncyBtYXNrKSB7CglmbXRmbGFn
cyBvbGRiaXRzID0gX2ZsYWdzOwoJX2ZsYWdzID0gKF9mbGFncyAmIH5tYXNrKSB8ICh2YWwgJiBt
YXNrKTsgcmV0dXJuIG9sZGJpdHM7IH0KICAgIGZtdGZsYWdzIHVuc2V0ZihmbXRmbGFncyBtYXNr
KSB7CglmbXRmbGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJX2ZsYWdzICY9IH5tYXNrOyByZXR1cm4g
b2xkYml0czsgfQogICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gX3dpZHRoOyB9CiAgICBp
bnQgd2lkdGgoaW50IHZhbCkgeyBpbnQgc2F2ZSA9IF93aWR0aDsgX3dpZHRoID0gdmFsOyByZXR1
cm4gc2F2ZTsgfQoKCgoKICAgIHZvaWQgX3Rocm93X2ZhaWx1cmUoKSBjb25zdCB7IH0KCiAgICB2
b2lkIGNsZWFyKGlvc3RhdGUgc3RhdGUgPSAwKSB7Cglfc3RhdGUgPSBfc3RyYnVmID8gc3RhdGUg
OiBzdGF0ZXxiYWRiaXQ7CglpZiAoX3N0YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19mYWlsdXJl
KCk7IH0KICAgIHZvaWQgc2V0KGlvc3RhdGUgZmxhZykgeyBfc3RhdGUgfD0gZmxhZzsKCWlmIChf
c3RhdGUgJiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgdm9pZCBzZXRzdGF0
ZShpb3N0YXRlIGZsYWcpIHsgX3N0YXRlIHw9IGZsYWc7ICAKCWlmIChfc3RhdGUgJiBfZXhjZXB0
aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgaW50IGdvb2QoKSBjb25zdCB7IHJldHVybiBf
c3RhdGUgPT0gMDsgfQogICAgaW50IGVvZigpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAmIGlvczo6
ZW9mYml0OyB9CiAgICBpbnQgZmFpbCgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAmIChpb3M6OmJh
ZGJpdHxpb3M6OmZhaWxiaXQpOyB9CiAgICBpbnQgYmFkKCkgY29uc3QgeyByZXR1cm4gX3N0YXRl
ICYgaW9zOjpiYWRiaXQ7IH0KICAgIGlvc3RhdGUgcmRzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIF9z
dGF0ZTsgfQogICAgb3BlcmF0b3Igdm9pZCooKSBjb25zdCB7IHJldHVybiBmYWlsKCkgPyAodm9p
ZCopMCA6ICh2b2lkKikoLTEpOyB9CiAgICBpbnQgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4g
ZmFpbCgpOyB9CiAgICBpb3N0YXRlIGV4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBfZXhjZXB0
aW9uczsgfQogICAgdm9pZCBleGNlcHRpb25zKGlvc3RhdGUgZW5hYmxlKSB7CglfZXhjZXB0aW9u
cyA9IGVuYWJsZTsKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsg
fQoKICAgIHN0cmVhbWJ1ZiogcmRidWYoKSBjb25zdCB7IHJldHVybiBfc3RyYnVmOyB9CiAgICBz
dHJlYW1idWYqIHJkYnVmKHN0cmVhbWJ1ZiAqX3MpIHsKICAgICAgc3RyZWFtYnVmICpfb2xkID0g
X3N0cmJ1ZjsgX3N0cmJ1ZiA9IF9zOyBjbGVhciAoKTsgcmV0dXJuIF9vbGQ7IH0KCiAgICBzdGF0
aWMgaW50IHN5bmNfd2l0aF9zdGRpbyhpbnQgb24pOwogICAgc3RhdGljIHZvaWQgc3luY193aXRo
X3N0ZGlvKCkgeyBzeW5jX3dpdGhfc3RkaW8oMSk7IH0KICAgIHN0YXRpYyBmbXRmbGFncyBiaXRh
bGxvYygpOwogICAgc3RhdGljIGludCB4YWxsb2MoKTsKICAgIHZvaWQqJiBwd29yZChpbnQpOwog
ICAgdm9pZCogcHdvcmQoaW50KSBjb25zdDsKICAgIGxvbmcmIGl3b3JkKGludCk7CiAgICBsb25n
IGl3b3JkKGludCkgY29uc3Q7CgoKCgoKCgoKCiAgICAgCiAgICBjbGFzcyBJbml0IHsKICAgIHB1
YmxpYzoKICAgICAgSW5pdCAoKSB7IH0KICAgIH07CgogIHByb3RlY3RlZDoKICAgIGlubGluZSBp
b3Moc3RyZWFtYnVmKiBzYiA9IDAsIG9zdHJlYW0qIHRpZV90byA9IDApOwogICAgaW5saW5lIHZp
cnR1YWwgfmlvcygpOwogICAgaW5saW5lIHZvaWQgaW5pdChzdHJlYW1idWYqIHNiLCBvc3RyZWFt
KiB0aWUgPSAwKTsKfTsKCgoKCnR5cGVkZWYgaW9zOjpzZWVrX2RpciBfc2Vla19kaXI7CgoKIAog
CiAKIAogCgogCiAKY2xhc3Mgc3RyZWFtbWFya2VyIDogcHJpdmF0ZSBfSU9fbWFya2VyIHsKICAg
IGZyaWVuZCBjbGFzcyBzdHJlYW1idWY7CiAgICB2b2lkIHNldF9vZmZzZXQoaW50IG9mZnNldCkg
eyBfcG9zID0gb2Zmc2V0OyB9CiAgcHVibGljOgogICAgc3RyZWFtbWFya2VyKHN0cmVhbWJ1ZiAq
c2IpOwogICAgfnN0cmVhbW1hcmtlcigpOwogICAgaW50IHNhdmluZygpIHsgcmV0dXJuICAxOyB9
CiAgICBpbnQgZGVsdGEoc3RyZWFtbWFya2VyJik7CiAgICBpbnQgZGVsdGEoKTsKfTsKCnN0cnVj
dCBzdHJlYW1idWYgOiBwdWJsaWMgX0lPX0ZJTEUgeyAgCiAgICBmcmllbmQgY2xhc3MgaW9zOwog
ICAgZnJpZW5kIGNsYXNzIGlzdHJlYW07CiAgICBmcmllbmQgY2xhc3Mgb3N0cmVhbTsKICAgIGZy
aWVuZCBjbGFzcyBzdHJlYW1tYXJrZXI7CiAgICBjb25zdCB2b2lkIComX3Z0YWJsZSgpIHsgcmV0
dXJuICooY29uc3Qgdm9pZCoqKSgoX0lPX0ZJTEUqKXRoaXMgKyAxKTsgfQogIHByb3RlY3RlZDoK
ICAgIHN0YXRpYyBzdHJlYW1idWYqIF9saXN0X2FsbDsgIAogICAgX0lPX0ZJTEUqJiB4Y2hhaW4o
KSB7IHJldHVybiBfY2hhaW47IH0KICAgIHZvaWQgX3VuX2xpbmsoKTsKICAgIHZvaWQgX2xpbmtf
aW4oKTsKICAgIGNoYXIqIGdwdHIoKSBjb25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgx
MDAgID8gX0lPX3NhdmVfYmFzZSA6IF9JT19yZWFkX3B0cjsgfQogICAgY2hhciogcHB0cigpIGNv
bnN0IHsgcmV0dXJuIF9JT193cml0ZV9wdHI7IH0KICAgIGNoYXIqIGVncHRyKCkgY29uc3QKICAg
ICAgeyByZXR1cm4gX2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2VuZCA6IF9JT19yZWFkX2Vu
ZDsgfQogICAgY2hhciogZXBwdHIoKSBjb25zdCB7IHJldHVybiBfSU9fd3JpdGVfZW5kOyB9CiAg
ICBjaGFyKiBwYmFzZSgpIGNvbnN0IHsgcmV0dXJuIF9JT193cml0ZV9iYXNlOyB9CiAgICBjaGFy
KiBlYmFjaygpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2
ZV9iYXNlIDogX0lPX3JlYWRfYmFzZTt9CiAgICBjaGFyKiBiYXNlKCkgY29uc3QgeyByZXR1cm4g
X0lPX2J1Zl9iYXNlOyB9CiAgICBjaGFyKiBlYnVmKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9l
bmQ7IH0KICAgIGludCBibGVuKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9lbmQgLSBfSU9fYnVm
X2Jhc2U7IH0KICAgIHZvaWQgeHB1dF9jaGFyKGNoYXIgYykgeyAqX0lPX3dyaXRlX3B0cisrID0g
YzsgfQogICAgaW50IHhmbGFncygpIHsgcmV0dXJuIF9mbGFncyA7IH0KICAgIGludCB4ZmxhZ3Mo
aW50IGYpIHtpbnQgZmwgPSBfZmxhZ3MgOyBfZmxhZ3MgID0gZjsgcmV0dXJuIGZsO30KICAgIHZv
aWQgeHNldGZsYWdzKGludCBmKSB7IF9mbGFncyAgfD0gZjsgfQogICAgdm9pZCB4c2V0ZmxhZ3Mo
aW50IGYsIGludCBtYXNrKQogICAgICB7IF9mbGFncyAgPSAoX2ZsYWdzICAmIH5tYXNrKSB8IChm
ICYgbWFzayk7IH0KICAgIHZvaWQgZ2J1bXAoaW50IG4pCiAgICAgIHsgX2ZsYWdzICAmIDB4MTAw
ICA/IChfSU9fc2F2ZV9iYXNlKz1uKTooX0lPX3JlYWRfcHRyKz1uKTt9CiAgICB2b2lkIHBidW1w
KGludCBuKSB7IF9JT193cml0ZV9wdHIgKz0gbjsgfQogICAgdm9pZCBzZXRiKGNoYXIqIGIsIGNo
YXIqIGViLCBpbnQgYT0wKTsKICAgIHZvaWQgc2V0cChjaGFyKiBwLCBjaGFyKiBlcCkKICAgICAg
eyBfSU9fd3JpdGVfYmFzZT1fSU9fd3JpdGVfcHRyPXA7IF9JT193cml0ZV9lbmQ9ZXA7IH0KICAg
IHZvaWQgc2V0ZyhjaGFyKiBlYiwgY2hhciogZywgY2hhciAqZWcpIHsKICAgICAgaWYgKF9mbGFn
cyAgJiAweDEwMCApIF9JT19mcmVlX2JhY2t1cF9hcmVhKHRoaXMpOyAKICAgICAgX0lPX3JlYWRf
YmFzZSA9IGViOyBfSU9fcmVhZF9wdHIgPSBnOyBfSU9fcmVhZF9lbmQgPSBlZzsgfQogICAgY2hh
ciAqc2hvcnRidWYoKSB7IHJldHVybiBfc2hvcnRidWY7IH0KCiAgICBpbnQgaW5fYmFja3VwKCkg
eyByZXR1cm4gX2ZsYWdzICYgMHgxMDAgOyB9CiAgICAgCiAgICBjaGFyICpHYmFzZSgpIHsgcmV0
dXJuIGluX2JhY2t1cCgpID8gX0lPX3NhdmVfYmFzZSA6IF9JT19yZWFkX2Jhc2U7IH0KICAgICAK
ICAgIGNoYXIgKmVHcHRyKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9lbmQgOiBf
SU9fcmVhZF9lbmQ7IH0KICAgICAKICAgIGNoYXIgKkJiYXNlKCkgeyByZXR1cm4gaW5fYmFja3Vw
KCkgPyBfSU9fcmVhZF9iYXNlIDogX0lPX3NhdmVfYmFzZTsgfQogICAgY2hhciAqQnB0cigpIHsg
cmV0dXJuIF9JT19iYWNrdXBfYmFzZTsgfQogICAgIAogICAgY2hhciAqZUJwdHIoKSB7IHJldHVy
biBpbl9iYWNrdXAoKSA/IF9JT19yZWFkX2VuZCA6IF9JT19zYXZlX2VuZDsgfQogICAgY2hhciAq
TmJhc2UoKSB7IHJldHVybiBfSU9fc2F2ZV9iYXNlOyB9CiAgICBjaGFyICplTnB0cigpIHsgcmV0
dXJuIF9JT19zYXZlX2VuZDsgfQogICAgaW50IGhhdmVfYmFja3VwKCkgeyByZXR1cm4gX0lPX3Nh
dmVfYmFzZSAhPSBfX251bGwgOyB9CiAgICBpbnQgaGF2ZV9tYXJrZXJzKCkgeyByZXR1cm4gX21h
cmtlcnMgIT0gX19udWxsIDsgfQogICAgdm9pZCBmcmVlX2JhY2t1cF9hcmVhKCk7CiAgICB2b2lk
IHVuc2F2ZV9tYXJrZXJzKCk7ICAKICAgIGludCBwdXRfbW9kZSgpIHsgcmV0dXJuIF9mbGFncyAm
IDB4ODAwIDsgfQogICAgaW50IHN3aXRjaF90b19nZXRfbW9kZSgpOwogICAgCiAgICBzdHJlYW1i
dWYoaW50IGZsYWdzPTApOwogIHB1YmxpYzoKICAgIHN0YXRpYyBpbnQgZmx1c2hfYWxsKCk7CiAg
ICBzdGF0aWMgdm9pZCBmbHVzaF9hbGxfbGluZWJ1ZmZlcmVkKCk7ICAKICAgIHZpcnR1YWwgfnN0
cmVhbWJ1ZigpOwogICAgdmlydHVhbCBpbnQgb3ZlcmZsb3coaW50IGMgPSAoLTEpICk7ICAKICAg
IHZpcnR1YWwgaW50IHVuZGVyZmxvdygpOyAgCiAgICB2aXJ0dWFsIGludCB1ZmxvdygpOyAgCiAg
ICB2aXJ0dWFsIGludCBwYmFja2ZhaWwoaW50IGMpOwogCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUg
eHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIHN0cmVhbXNp
emUgeHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBz
ZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsK
ICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUgPSBp
b3M6OmlufGlvczo6b3V0KTsKCiAgICBzdHJlYW1wb3MgcHVic2Vla29mZihzdHJlYW1vZmYgbywg
X3NlZWtfZGlyIGQsIGludCBtb2RlPWlvczo6aW58aW9zOjpvdXQpCiAgICAgIHsgcmV0dXJuIF9J
T19zZWVrb2ZmICh0aGlzLCBvLCBkLCBtb2RlKTsgfQogICAgc3RyZWFtcG9zIHB1YnNlZWtwb3Mo
c3RyZWFtcG9zIHBvcywgaW50IG1vZGUgPSBpb3M6OmlufGlvczo6b3V0KQogICAgICB7IHJldHVy
biBfSU9fc2Vla3BvcyAodGhpcywgcG9zLCBtb2RlKTsgfQogICAgc3RyZWFtcG9zIHNzZWVrb2Zm
KHN0cmVhbW9mZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHN0
cmVhbXBvcyBzc2Vla3BvcyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpv
dXQpOwogICAgdmlydHVhbCBzdHJlYW1idWYqIHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVuKTsKICAg
IHZpcnR1YWwgaW50IHN5bmMoKTsKICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUoKTsKCiAgICBp
bnQgc2Vla21hcmsoc3RyZWFtbWFya2VyJiBtYXJrLCBpbnQgZGVsdGEgPSAwKTsKICAgIGludCBz
cHV0YmFja2MoY2hhciBjKTsKICAgIGludCBzdW5nZXRjKCk7CiAgICBpbnQgdW5idWZmZXJlZCgp
IHsgcmV0dXJuIF9mbGFncyAmIDIgID8gMSA6IDA7IH0KICAgIGludCBsaW5lYnVmZmVyZWQoKSB7
IHJldHVybiBfZmxhZ3MgJiAweDIwMCAgPyAxIDogMDsgfQogICAgdm9pZCB1bmJ1ZmZlcmVkKGlu
dCBpKQoJeyBpZiAoaSkgX2ZsYWdzIHw9IDIgOyBlbHNlIF9mbGFncyAmPSB+MiA7IH0KICAgIHZv
aWQgbGluZWJ1ZmZlcmVkKGludCBpKQoJeyBpZiAoaSkgX2ZsYWdzIHw9IDB4MjAwIDsgZWxzZSBf
ZmxhZ3MgJj0gfjB4MjAwIDsgfQogICAgaW50IGFsbG9jYXRlKCkgeyAgCglpZiAoYmFzZSgpIHx8
IHVuYnVmZmVyZWQoKSkgcmV0dXJuIDA7CgllbHNlIHJldHVybiBkb2FsbG9jYXRlKCk7IH0KICAg
ICAKICAgIHZvaWQgYWxsb2NidWYoKSB7IGlmIChiYXNlKCkgPT0gX19udWxsICkgZG9hbGxvY2J1
ZigpOyB9CiAgICB2b2lkIGRvYWxsb2NidWYoKTsKICAgIGludCBpbl9hdmFpbCgpIHsgcmV0dXJu
IF9JT19yZWFkX2VuZCAtIF9JT19yZWFkX3B0cjsgfQogICAgaW50IG91dF93YWl0aW5nKCkgeyBy
ZXR1cm4gX0lPX3dyaXRlX3B0ciAtIF9JT193cml0ZV9iYXNlOyB9CiAgICBzdHJlYW1zaXplIHNw
dXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyByZXR1cm4geHNwdXRuKHMsIG4pOyB9
CiAgICBzdHJlYW1zaXplIHBhZG4oY2hhciBwYWQsIHN0cmVhbXNpemUgbikgeyByZXR1cm4gX0lP
X3BhZG4odGhpcywgcGFkLCBuKTsgfQogICAgc3RyZWFtc2l6ZSBzZ2V0bihjaGFyKiBzLCBzdHJl
YW1zaXplIG4pIHsgcmV0dXJuIF9JT19zZ2V0bih0aGlzLCBzLCBuKTsgfQogICAgaW50IGlnbm9y
ZShpbnQpOwogICAgaW50IGdldF9jb2x1bW4oKTsKICAgIGludCBzZXRfY29sdW1uKGludCk7CiAg
ICBsb25nIHNnZXRsaW5lKGNoYXIqIGJ1Ziwgc2l6ZV90ICAgbiwgY2hhciBkZWxpbSwgaW50IHB1
dGJhY2tfZGVsaW0pOwogICAgaW50IHNwdXRjKGludCBjKSB7IHJldHVybiBfSU9fcHV0YyhjLCB0
aGlzKTsgfQogICAgaW50IHNidW1wYygpIHsgcmV0dXJuIF9JT19nZXRjKHRoaXMpOyB9CiAgICBp
bnQgc2dldGMoKSB7IHJldHVybiAoKCAgdGhpcyAgKS0+X0lPX3JlYWRfcHRyID49ICggIHRoaXMg
ICktPl9JT19yZWFkX2VuZCAmJiBfX3VuZGVyZmxvdyAoICB0aGlzICApID09ICgtMSkgID8gKC0x
KSAgOiAqKHVuc2lnbmVkIGNoYXIgKikgKCAgdGhpcyAgKS0+X0lPX3JlYWRfcHRyKSAgOyB9CiAg
ICBpbnQgc25leHRjKCkgewoJaWYgKF9JT19yZWFkX3B0ciA+PSBfSU9fcmVhZF9lbmQgJiYgX191
bmRlcmZsb3codGhpcykgPT0gKC0xKSApCgkgIHJldHVybiAoLTEpIDsKCWVsc2UgcmV0dXJuIF9J
T19yZWFkX3B0cisrLCBzZ2V0YygpOyB9CiAgICB2b2lkIHN0b3NzYygpIHsgaWYgKF9JT19yZWFk
X3B0ciA8IF9JT19yZWFkX2VuZCkgX0lPX3JlYWRfcHRyKys7IH0KICAgIGludCB2c2NhbihjaGFy
IGNvbnN0ICpmbXQwLCBfX2dudWNfdmFfbGlzdCAgYXAsIGlvcyogc3RyZWFtID0gX19udWxsICk7
CiAgICBpbnQgc2NhbihjaGFyIGNvbnN0ICpmbXQwIC4uLik7CiAgICBpbnQgdmZvcm0oY2hhciBj
b25zdCAqZm10MCwgX19nbnVjX3ZhX2xpc3QgIGFwKTsKICAgIGludCBmb3JtKGNoYXIgY29uc3Qg
KmZtdDAgLi4uKTsKCgoKCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3JlYWQoY2hhciogYnVm
LCBzdHJlYW1zaXplIHNpemUpOwogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c193cml0ZShjb25z
dCBjaGFyKiwgc3RyZWFtc2l6ZSk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzeXNfc2VlayhzdHJl
YW1vZmYsIF9zZWVrX2Rpcik7CiAgICB2aXJ0dWFsIGludCBzeXNfY2xvc2UoKTsKICAgIHZpcnR1
YWwgaW50IHN5c19zdGF0KHZvaWQqKTsgIAoKICAgIHZpcnR1YWwgaW50IHNob3dtYW55YygpOwog
ICAgdmlydHVhbCB2b2lkIGltYnVlKHZvaWQgKik7Cgp9OwoKIAogCgpjbGFzcyBmaWxlYnVmIDog
cHVibGljIHN0cmVhbWJ1ZiB7CiAgcHJvdGVjdGVkOgogICAgdm9pZCBpbml0KCk7CiAgcHVibGlj
OgogICAgc3RhdGljIGNvbnN0IGludCBvcGVucHJvdDsgIAogICAgZmlsZWJ1ZigpOwogICAgZmls
ZWJ1ZihpbnQgZmQpOwogICAgZmlsZWJ1ZihpbnQgZmQsIGNoYXIqIHAsIGludCBsZW4pOwoKCgog
ICAgfmZpbGVidWYoKTsKICAgIGZpbGVidWYqIGF0dGFjaChpbnQgZmQpOwogICAgZmlsZWJ1Ziog
b3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbW9kZSk7CiAgICBmaWxlYnVm
KiBvcGVuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpb3M6Om9wZW5tb2RlIG1vZGUsIGludCBwcm90
ID0gMDY2NCk7CiAgICB2aXJ0dWFsIGludCB1bmRlcmZsb3coKTsKICAgIHZpcnR1YWwgaW50IG92
ZXJmbG93KGludCBjID0gKC0xKSApOwogICAgaW50IGlzX29wZW4oKSBjb25zdCB7IHJldHVybiBf
ZmlsZW5vID49IDA7IH0KICAgIGludCBmZCgpIGNvbnN0IHsgcmV0dXJuIGlzX29wZW4oKSA/IF9m
aWxlbm8gOiAoLTEpIDsgfQogICAgZmlsZWJ1ZiogY2xvc2UoKTsKICAgIHZpcnR1YWwgaW50IGRv
YWxsb2NhdGUoKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vl
a19kaXIsIGludCBtb2RlPWlvczo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1idWYq
IHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVuKTsKICAgIHN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNo
YXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICBzdHJlYW1zaXplIHhzZ2V0bihjaGFyKiBzLCBzdHJl
YW1zaXplIG4pOwogICAgdmlydHVhbCBpbnQgc3luYygpOwogIHByb3RlY3RlZDogIAogCiAgICBp
bnQgaXNfcmVhZGluZygpIHsgcmV0dXJuIGViYWNrKCkgIT0gZWdwdHIoKTsgfQogICAgY2hhciog
Y3VyX3B0cigpIHsgcmV0dXJuIGlzX3JlYWRpbmcoKSA/ICBncHRyKCkgOiBwcHRyKCk7IH0KICAg
ICAKICAgIGNoYXIqIGZpbGVfcHRyKCkgeyByZXR1cm4gZUdwdHIoKTsgfQogICAgIAogICAgdmly
dHVhbCBzdHJlYW1zaXplIHN5c19yZWFkKGNoYXIqIGJ1Ziwgc3RyZWFtc2l6ZSBzaXplKTsKICAg
IHZpcnR1YWwgc3RyZWFtcG9zIHN5c19zZWVrKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHZp
cnR1YWwgc3RyZWFtc2l6ZSBzeXNfd3JpdGUoY29uc3QgY2hhciosIHN0cmVhbXNpemUpOwogICAg
dmlydHVhbCBpbnQgc3lzX3N0YXQodm9pZCopOyAgCiAgICB2aXJ0dWFsIGludCBzeXNfY2xvc2Uo
KTsKCgoKCn07CgppbmxpbmUgdm9pZCBpb3M6OmluaXQoc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSog
dGllX3RvKSB7CgkJX3N0YXRlID0gc2IgPyBpb3M6Omdvb2RiaXQgOiBpb3M6OmJhZGJpdDsgX2V4
Y2VwdGlvbnM9MDsKCQlfc3RyYnVmPXNiOyBfdGllID0gdGllX3RvOyBfd2lkdGg9MDsgX2ZpbGw9
JyAnOwoKCQlfZmxhZ3M9aW9zOjpza2lwd3N8aW9zOjpkZWM7CgoKCgkJX3ByZWNpc2lvbj02OyBf
YXJyYXlzID0gMDsgfQoKaW5saW5lIGlvczo6aW9zKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRp
ZV90bykgeyBpbml0KHNiLCB0aWVfdG8pOyB9CgppbmxpbmUgaW9zOjp+aW9zKCkgewoKCgogICAg
IAogICAgIAogICAgb3BlcmF0b3IgZGVsZXRlW10gKF9hcnJheXMpOwp9Cn0gIAoKIyAzMSAiL3Vz
ci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNs
dWRlL2crKy0zL2lvc3RyZWFtLmgiIDIgMwoKCmV4dGVybiAiQysrIiB7CmNsYXNzIGlzdHJlYW07
IGNsYXNzIG9zdHJlYW07CnR5cGVkZWYgaW9zJiAoKl9fbWFuaXApKGlvcyYpOwp0eXBlZGVmIGlz
dHJlYW0mICgqX19pbWFuaXApKGlzdHJlYW0mKTsKdHlwZWRlZiBvc3RyZWFtJiAoKl9fb21hbmlw
KShvc3RyZWFtJik7CgpleHRlcm4gaXN0cmVhbSYgd3MoaXN0cmVhbSYgaW5zKTsKZXh0ZXJuIG9z
dHJlYW0mIGZsdXNoKG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgZW5kbChvc3RyZWFt
JiBvdXRzKTsKZXh0ZXJuIG9zdHJlYW0mIGVuZHMob3N0cmVhbSYgb3V0cyk7CgpjbGFzcyBvc3Ry
ZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAgICAKICAgIHZvaWQgZG9fb3NmeCgpOwogIHB1
YmxpYzoKICAgIG9zdHJlYW0oKSB7IH0KICAgIG9zdHJlYW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVh
bSogdGllZD0gX19udWxsICk7CiAgICBpbnQgb3BmeCgpIHsKCWlmICghZ29vZCgpKSByZXR1cm4g
MDsKCWVsc2UgeyBpZiAoX3RpZSkgX3RpZS0+Zmx1c2goKTsgIDsgcmV0dXJuIDE7fSB9CiAgICB2
b2lkIG9zZngoKSB7ICA7CgkJICBpZiAoZmxhZ3MoKSAmIChpb3M6OnVuaXRidWZ8aW9zOjpzdGRp
bykpCgkJICAgICAgZG9fb3NmeCgpOyB9CiAgICBvc3RyZWFtJiBmbHVzaCgpOwogICAgb3N0cmVh
bSYgcHV0KGNoYXIgYykgeyBfc3RyYnVmLT5zcHV0YyhjKTsgcmV0dXJuICp0aGlzOyB9CgoKCgoK
ICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IGNoYXIgKnMsIHN0cmVhbXNpemUgbik7CiAgICBvc3Ry
ZWFtJiB3cml0ZShjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBzdHJlYW1zaXplIG4pCiAgICAgIHsg
cmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9CiAgICBvc3RyZWFtJiB3cml0ZShjb25z
dCBzaWduZWQgY2hhciAqcywgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgoY29u
c3QgY2hhciopcywgbik7fQogICAgb3N0cmVhbSYgd3JpdGUoY29uc3Qgdm9pZCAqcywgc3RyZWFt
c2l6ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgoY29uc3QgY2hhciopcywgbik7fQogICAgb3N0
cmVhbSYgc2Vla3Aoc3RyZWFtcG9zKTsKICAgIG9zdHJlYW0mIHNlZWtwKHN0cmVhbW9mZiwgX3Nl
ZWtfZGlyKTsKICAgIHN0cmVhbXBvcyB0ZWxscCgpOwogICAgb3N0cmVhbSYgZm9ybShjb25zdCBj
aGFyICpmb3JtYXQgLi4uKTsKICAgIG9zdHJlYW0mIHZmb3JtKGNvbnN0IGNoYXIgKmZvcm1hdCwg
X19nbnVjX3ZhX2xpc3QgIGFyZ3MpOwoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY2hhciBjKTsK
ICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiAoKnRoaXMp
IDw8IChjaGFyKWM7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc2lnbmVkIGNoYXIgYykgeyBy
ZXR1cm4gKCp0aGlzKSA8PCAoY2hhciljOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0
IGNoYXIgKnMpOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCB1bnNpZ25lZCBjaGFyICpz
KQoJeyByZXR1cm4gKCp0aGlzKSA8PCAoY29uc3QgY2hhciopczsgfQogICAgb3N0cmVhbSYgb3Bl
cmF0b3I8PChjb25zdCBzaWduZWQgY2hhciAqcykKCXsgcmV0dXJuICgqdGhpcykgPDwgKGNvbnN0
IGNoYXIqKXM7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgdm9pZCAqcCk7CiAgICBv
c3RyZWFtJiBvcGVyYXRvcjw8KGludCBuKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWdu
ZWQgaW50IG4pOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChsb25nIG4pOwogICAgb3N0cmVhbSYg
b3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIG4pOwoKICAgIF9fZXh0ZW5zaW9uX18gb3N0cmVhbSYg
b3BlcmF0b3I8PChsb25nIGxvbmcgbik7CiAgICBfX2V4dGVuc2lvbl9fIG9zdHJlYW0mIG9wZXJh
dG9yPDwodW5zaWduZWQgbG9uZyBsb25nIG4pOwoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc2hv
cnQgbikge3JldHVybiBvcGVyYXRvcjw8KChpbnQpbik7fQogICAgb3N0cmVhbSYgb3BlcmF0b3I8
PCh1bnNpZ25lZCBzaG9ydCBuKSB7cmV0dXJuIG9wZXJhdG9yPDwoKHVuc2lnbmVkIGludCluKTt9
CgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChib29sIGIpIHsgcmV0dXJuIG9wZXJhdG9yPDwoKGlu
dCliKTsgfQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoZG91YmxlIG4pOwogICAgb3N0cmVhbSYg
b3BlcmF0b3I8PChmbG9hdCBuKSB7IHJldHVybiBvcGVyYXRvcjw8KChkb3VibGUpbik7IH0KCiAg
ICBvc3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgZG91YmxlIG4pOwoKCgogICAgb3N0cmVhbSYgb3Bl
cmF0b3I8PChfX29tYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0aGlzKTsgfQogICAgb3N0
cmVhbSYgb3BlcmF0b3I8PChfX21hbmlwIGZ1bmMpIHsoKmZ1bmMpKCp0aGlzKTsgcmV0dXJuICp0
aGlzO30KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc3RyZWFtYnVmKik7CgoKCn07CgpjbGFzcyBp
c3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAgICAKcHJvdGVjdGVkOgogICAgc2l6ZV90
ICAgX2djb3VudDsKCiAgICBpbnQgX3NraXBfd3MoKTsKICBwdWJsaWM6CiAgICBpc3RyZWFtKCk6
IF9nY291bnQgKDApIHsgfQogICAgaXN0cmVhbShzdHJlYW1idWYqIHNiLCBvc3RyZWFtKnRpZWQ9
IF9fbnVsbCApOwogICAgaXN0cmVhbSYgZ2V0KGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxp
bSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0KHVuc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwg
Y2hhciBkZWxpbSA9ICdcbicpCgl7IHJldHVybiBnZXQoKGNoYXIqKXB0ciwgbGVuLCBkZWxpbSk7
IH0KICAgIGlzdHJlYW0mIGdldChjaGFyJiBjKTsKICAgIGlzdHJlYW0mIGdldCh1bnNpZ25lZCBj
aGFyJiBjKSB7IHJldHVybiBnZXQoKGNoYXImKWMpOyB9CiAgICBpc3RyZWFtJiBnZXRsaW5lKGNo
YXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0bGlu
ZSh1bnNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1
cm4gZ2V0bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgZ2V0KHNp
Z25lZCBjaGFyJiBjKSAgeyByZXR1cm4gZ2V0KChjaGFyJiljKTsgfQogICAgaXN0cmVhbSYgZ2V0
KHNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4g
Z2V0KChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9CiAgICBpc3RyZWFtJiBnZXRsaW5lKHNpZ25l
ZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0bGlu
ZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgcmVhZChjaGFyICpwdHIs
IHN0cmVhbXNpemUgbik7CiAgICBpc3RyZWFtJiByZWFkKHVuc2lnbmVkIGNoYXIgKnB0ciwgc3Ry
ZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiByZWFkKChjaGFyKilwdHIsIG4pOyB9CiAgICBpc3Ry
ZWFtJiByZWFkKHNpZ25lZCBjaGFyICpwdHIsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4g
cmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0cmVhbSYgcmVhZCh2b2lkICpwdHIsIHN0cmVh
bXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0cmVh
bSYgZ2V0KHN0cmVhbWJ1ZiYgc2IsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGlzdHJlYW0mIGdl
dHMoY2hhciAqKnMsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGludCBpcGZ4KGludCBuZWVkID0g
MCkgewoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7IHJldHVybiAwOyB9CgllbHNl
IHsKCSAgIDsKCSAgaWYgKF90aWUgJiYgKG5lZWQgPT0gMCB8fCByZGJ1ZigpLT5pbl9hdmFpbCgp
IDwgbmVlZCkpIF90aWUtPmZsdXNoKCk7CgkgIGlmICghbmVlZCAmJiAoZmxhZ3MoKSAmIGlvczo6
c2tpcHdzKSkgcmV0dXJuIF9za2lwX3dzKCk7CgkgIGVsc2UgcmV0dXJuIDE7Cgl9CiAgICB9CiAg
ICBpbnQgaXBmeDAoKSB7ICAKCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZhaWxiaXQpOyByZXR1
cm4gMDsgfQoJZWxzZSB7CgkgICA7CgkgIGlmIChfdGllKSBfdGllLT5mbHVzaCgpOwoJICBpZiAo
ZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSByZXR1cm4gX3NraXBfd3MoKTsKCSAgZWxzZSByZXR1cm4g
MTsKCX0KICAgIH0KICAgIGludCBpcGZ4MSgpIHsgIAoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6
ZmFpbGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsKCSAgaWYgKF90aWUgJiYgcmRidWYo
KS0+aW5fYXZhaWwoKSA9PSAwKSBfdGllLT5mbHVzaCgpOwoJICByZXR1cm4gMTsKCX0KICAgIH0K
ICAgIHZvaWQgaXNmeCgpIHsgIDsgfQogICAgaW50IGdldCgpIHsgaWYgKCFpcGZ4MSgpKSByZXR1
cm4gKC0xKSA7CgkJZWxzZSB7IGludCBjaCA9IF9zdHJidWYtPnNidW1wYygpOwoJCSAgICAgICBp
ZiAoY2ggPT0gKC0xKSApIHNldChpb3M6OmVvZmJpdCk7CgkJICAgICAgIGlzZngoKTsKCQkgICAg
ICAgcmV0dXJuIGNoOwoJCSAgICAgfSB9CiAgICBpbnQgcGVlaygpOwogICAgc2l6ZV90ICAgZ2Nv
dW50KCkgeyByZXR1cm4gX2djb3VudDsgfQogICAgaXN0cmVhbSYgaWdub3JlKGludCBuPTEsIGlu
dCBkZWxpbSA9ICgtMSkgKTsKICAgIGludCBzeW5jICgpOwogICAgaXN0cmVhbSYgc2Vla2coc3Ry
ZWFtcG9zKTsKICAgIGlzdHJlYW0mIHNlZWtnKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHN0
cmVhbXBvcyB0ZWxsZygpOwogICAgaXN0cmVhbSYgcHV0YmFjayhjaGFyIGNoKSB7CglpZiAoZ29v
ZCgpICYmIF9zdHJidWYtPnNwdXRiYWNrYyhjaCkgPT0gKC0xKSApIGNsZWFyKGlvczo6YmFkYml0
KTsKCXJldHVybiAqdGhpczt9CiAgICBpc3RyZWFtJiB1bmdldCgpIHsKCWlmIChnb29kKCkgJiYg
X3N0cmJ1Zi0+c3VuZ2V0YygpID09ICgtMSkgKSBjbGVhcihpb3M6OmJhZGJpdCk7CglyZXR1cm4g
KnRoaXM7fQogICAgaXN0cmVhbSYgc2Nhbihjb25zdCBjaGFyICpmb3JtYXQgLi4uKTsKICAgIGlz
dHJlYW0mIHZzY2FuKGNvbnN0IGNoYXIgKmZvcm1hdCwgX19nbnVjX3ZhX2xpc3QgIGFyZ3MpOwoK
CgoKCgogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFyKik7CiAgICBpc3RyZWFtJiBvcGVyYXRv
cj4+KHVuc2lnbmVkIGNoYXIqIHApIHsgcmV0dXJuIG9wZXJhdG9yPj4oKGNoYXIqKXApOyB9CiAg
ICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNpZ25lZCBjaGFyKnApIHsgcmV0dXJuIG9wZXJhdG9yPj4o
KGNoYXIqKXApOyB9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGNoYXImIGMpOwogICAgaXN0cmVh
bSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBjaGFyJiBjKSB7cmV0dXJuIG9wZXJhdG9yPj4oKGNoYXIm
KWMpO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc2lnbmVkIGNoYXImIGMpIHtyZXR1cm4gb3Bl
cmF0b3I+PigoY2hhciYpYyk7fQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihpbnQmKTsKICAgIGlz
dHJlYW0mIG9wZXJhdG9yPj4obG9uZyYpOwoKICAgIF9fZXh0ZW5zaW9uX18gaXN0cmVhbSYgb3Bl
cmF0b3I+Pihsb25nIGxvbmcmKTsKICAgIF9fZXh0ZW5zaW9uX18gaXN0cmVhbSYgb3BlcmF0b3I+
Pih1bnNpZ25lZCBsb25nIGxvbmcmKTsKCiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNob3J0Jik7
CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGludCYpOwogICAgaXN0cmVhbSYgb3Bl
cmF0b3I+Pih1bnNpZ25lZCBsb25nJik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVk
IHNob3J0Jik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihib29sJik7CgogICAgaXN0cmVhbSYg
b3BlcmF0b3I+PihmbG9hdCYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihkb3VibGUmKTsKICAg
IGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyBkb3VibGUmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9y
Pj4oIF9fbWFuaXAgZnVuYykgeygqZnVuYykoKnRoaXMpOyByZXR1cm4gKnRoaXM7fQogICAgaXN0
cmVhbSYgb3BlcmF0b3I+PihfX2ltYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0aGlzKTsg
fQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzdHJlYW1idWYqKTsKfTsKCmNsYXNzIGlvc3RyZWFt
IDogcHVibGljIGlzdHJlYW0sIHB1YmxpYyBvc3RyZWFtCnsKICBwdWJsaWM6CiAgICBpb3N0cmVh
bSgpIHsgfQogICAgaW9zdHJlYW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSp0aWVkPSBfX251bGwg
KTsKfTsKCmNsYXNzIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24gOiBwdWJsaWMgaXN0cmVhbSB7CnB1
YmxpYzoKICBfSU9faXN0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0oaXN0cmVhbSYpOwogIF9J
T19pc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShfSU9faXN0cmVhbV93aXRoYXNzaWduJiBy
aHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRpY19jYXN0PGlzdHJlYW0mPiAocmhzKSk7
IH0KfTsKCmNsYXNzIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24gOiBwdWJsaWMgb3N0cmVhbSB7CnB1
YmxpYzoKICBfSU9fb3N0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0ob3N0cmVhbSYpOwogIF9J
T19vc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShfSU9fb3N0cmVhbV93aXRoYXNzaWduJiBy
aHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRpY19jYXN0PG9zdHJlYW0mPiAocmhzKSk7
IH0KfTsKCmV4dGVybiBfSU9faXN0cmVhbV93aXRoYXNzaWduIGNpbjsKIApleHRlcm4gX0lPX29z
dHJlYW1fd2l0aGFzc2lnbiBjb3V0LCBjZXJyOwoKZXh0ZXJuIF9JT19vc3RyZWFtX3dpdGhhc3Np
Z24gY2xvZwoKCgo7CgpleHRlcm4gaXN0cmVhbSYgbG9jayhpc3RyZWFtJiBpbnMpOwpleHRlcm4g
aXN0cmVhbSYgdW5sb2NrKGlzdHJlYW0mIGlucyk7CmV4dGVybiBvc3RyZWFtJiBsb2NrKG9zdHJl
YW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgdW5sb2NrKG9zdHJlYW0mIG91dHMpOwoKc3RydWN0
IElvc3RyZWFtX2luaXQgeyB9IDsgICAKCmlubGluZSBpb3MmIGRlYyhpb3MmIGkpCnsgaS5zZXRm
KGlvczo6ZGVjLCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9CmlubGlu
ZSBpb3MmIGhleChpb3MmIGkpCnsgaS5zZXRmKGlvczo6aGV4LCBpb3M6OmRlY3xpb3M6OmhleHxp
b3M6Om9jdCk7IHJldHVybiBpOyB9CmlubGluZSBpb3MmIG9jdChpb3MmIGkpCnsgaS5zZXRmKGlv
czo6b2N0LCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9Cn0gIAoKCiMg
MSAiZW5jb2RlLmNjIiAyCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxp
bnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2ZzdHJlYW0uaCIgMSAzCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGludGVyZmFjZQoKCgpleHRlcm4gIkMrKyIg
ewpjbGFzcyBmc3RyZWFtYmFzZSA6IHZpcnR1YWwgcHVibGljIGlvcyB7CgogICAgbXV0YWJsZSBm
aWxlYnVmIF9fbXlfZmI7ICAKCiAgICB2b2lkIF9fZmJfaW5pdCAoKTsKICBwdWJsaWM6CiAgICBm
c3RyZWFtYmFzZSgpOwogICAgZnN0cmVhbWJhc2UoaW50IGZkKTsKICAgIGZzdHJlYW1iYXNlKGlu
dCBmZCwgY2hhciAqcCwgaW50IGwpOyAgCiAgICBmc3RyZWFtYmFzZShjb25zdCBjaGFyICpuYW1l
LCBpbnQgbW9kZSwgaW50IHByb3Q9MDY2NCk7CiAgICB2b2lkIGNsb3NlKCk7CgogICAgZmlsZWJ1
ZiogcmRidWYoKSBjb25zdCB7IHJldHVybiAmX19teV9mYjsgfQoKCgogICAgdm9pZCBvcGVuKGNv
bnN0IGNoYXIgKm5hbWUsIGludCBtb2RlLCBpbnQgcHJvdD0wNjY0KTsKICAgIGludCBpc19vcGVu
KCkgY29uc3QgeyByZXR1cm4gcmRidWYoKS0+aXNfb3BlbigpOyB9CiAgICB2b2lkIHNldGJ1Zihj
aGFyICpwdHIsIGludCBsZW4pIHsgcmRidWYoKS0+c2V0YnVmKHB0ciwgbGVuKTsgfQogICAgdm9p
ZCBhdHRhY2goaW50IGZkKTsKCgoKCn07CgpjbGFzcyBpZnN0cmVhbSA6IHB1YmxpYyBmc3RyZWFt
YmFzZSwgcHVibGljIGlzdHJlYW0gewogIHB1YmxpYzoKICAgIGlmc3RyZWFtKCkgOiBmc3RyZWFt
YmFzZSgpIHsgfQogICAgaWZzdHJlYW0oaW50IGZkKSA6IGZzdHJlYW1iYXNlKGZkKSB7IH0KICAg
IGlmc3RyZWFtKGludCBmZCwgY2hhciAqcCwgaW50IGwpIDogZnN0cmVhbWJhc2UoZmQsIHAsIGwp
IHsgfSAgCiAgICBpZnN0cmVhbShjb25zdCBjaGFyICpuYW1lLCBpbnQgbW9kZT1pb3M6OmluLCBp
bnQgcHJvdD0wNjY0KQoJOiBmc3RyZWFtYmFzZShuYW1lLCBtb2RlLCBwcm90KSB7IH0KICAgIHZv
aWQgb3Blbihjb25zdCBjaGFyICpuYW1lLCBpbnQgbW9kZT1pb3M6OmluLCBpbnQgcHJvdD0wNjY0
KQoJeyBmc3RyZWFtYmFzZTo6b3BlbihuYW1lLCBtb2RlLCBwcm90KTsgfQp9OwoKY2xhc3Mgb2Zz
dHJlYW0gOiBwdWJsaWMgZnN0cmVhbWJhc2UsIHB1YmxpYyBvc3RyZWFtIHsKICBwdWJsaWM6CiAg
ICBvZnN0cmVhbSgpIDogZnN0cmVhbWJhc2UoKSB7IH0KICAgIG9mc3RyZWFtKGludCBmZCkgOiBm
c3RyZWFtYmFzZShmZCkgeyB9CiAgICBvZnN0cmVhbShpbnQgZmQsIGNoYXIgKnAsIGludCBsKSA6
IGZzdHJlYW1iYXNlKGZkLCBwLCBsKSB7IH0gIAogICAgb2ZzdHJlYW0oY29uc3QgY2hhciAqbmFt
ZSwgaW50IG1vZGU9aW9zOjpvdXQsIGludCBwcm90PTA2NjQpCgk6IGZzdHJlYW1iYXNlKG5hbWUs
IG1vZGUsIHByb3QpIHsgfQogICAgdm9pZCBvcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBtb2Rl
PWlvczo6b3V0LCBpbnQgcHJvdD0wNjY0KQoJeyBmc3RyZWFtYmFzZTo6b3BlbihuYW1lLCBtb2Rl
LCBwcm90KTsgfQp9OwoKY2xhc3MgZnN0cmVhbSA6IHB1YmxpYyBmc3RyZWFtYmFzZSwgcHVibGlj
IGlvc3RyZWFtIHsKICBwdWJsaWM6CiAgICBmc3RyZWFtKCkgOiBmc3RyZWFtYmFzZSgpIHsgfQog
ICAgZnN0cmVhbShpbnQgZmQpIDogZnN0cmVhbWJhc2UoZmQpIHsgfQogICAgZnN0cmVhbShjb25z
dCBjaGFyICpuYW1lLCBpbnQgbW9kZSwgaW50IHByb3Q9MDY2NCkKCTogZnN0cmVhbWJhc2UobmFt
ZSwgbW9kZSwgcHJvdCkgeyB9CiAgICBmc3RyZWFtKGludCBmZCwgY2hhciAqcCwgaW50IGwpIDog
ZnN0cmVhbWJhc2UoZmQsIHAsIGwpIHsgfSAgCiAgICB2b2lkIG9wZW4oY29uc3QgY2hhciAqbmFt
ZSwgaW50IG1vZGUsIGludCBwcm90PTA2NjQpCgl7IGZzdHJlYW1iYXNlOjpvcGVuKG5hbWUsIG1v
ZGUsIHByb3QpOyB9Cn07Cn0gIAoKIyAzICJlbmNvZGUuY2MiIDIKCiMgMSAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgoKCgojIDEgIi91
c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vz
ci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNy
L2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8y
Ljk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9saWIv
Z2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
CgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNs
dWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5k
cmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCmV4dGVybiAiQyIgeyAK
CgoKCiAKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsJCQkgCiAgICBpbnQgcmVtOwkJ
CSAKICB9IGRpdl90OwoKIAoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90OwkJ
IAogICAgbG9uZyBpbnQgcmVtOwkJIAogIH0gbGRpdl90OwoKCgojIDY1ICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDMKCgoKIAoKCgogCgoKCgoKIAoKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9t
Yl9jdXJfbWF4ICAodm9pZCkgIHRocm93ICgpICA7CgoKIApleHRlcm4gZG91YmxlIGF0b2YgIChf
X2NvbnN0IGNoYXIgKl9fbnB0cikgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBhdG9pICAoX19j
b25zdCBjaGFyICpfX25wdHIpICB0aHJvdyAoKSAgOwogCmV4dGVybiBsb25nIGludCBhdG9sICAo
X19jb25zdCBjaGFyICpfX25wdHIpICB0aHJvdyAoKSAgOwoKCiAKX19leHRlbnNpb25fXyBleHRl
cm4gbG9uZyBsb25nIGludCBhdG9sbCAgKF9fY29uc3QgY2hhciAqX19ucHRyKSAgdGhyb3cgKCkg
IDsKCgogCmV4dGVybiBkb3VibGUgc3RydG9kICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpICB0aHJvdyAoKSAgOwoKCgoK
CgoKCgoKIApleHRlcm4gbG9uZyBpbnQgc3RydG9sICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkg
IHRocm93ICgpICA7CiAKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAoJCQkJICAgICAgIGludCBfX2Jhc2UpICB0aHJvdyAoKSAgOwoKCiAKX19leHRlbnNp
b25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAoJCQkJICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkg
IHRocm93ICgpICA7CiAKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGlu
dCBzdHJ0b3VxICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJICAgIGludCBfX2Jhc2UpICB0aHJvdyAoKSAg
OwoKCgogCgogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCAgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSkgIHRocm93ICgpICA7CiAKX19leHRlbnNpb25fXwpleHRlcm4g
dW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCgkJCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkgICAg
IGludCBfX2Jhc2UpICB0aHJvdyAoKSAgOwoKCgojIDE5MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCgoKCiAKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsICAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAoJCQkJICAgICAgaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwpleHRlcm4gZmxvYXQgX19zdHJ0
b2ZfaW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwpleHRl
cm4gbG9uZyBkb3VibGUgIF9fc3RydG9sZF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJ
CV9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCQljaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJ
CQkJaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9sX2lu
dGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQljaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKCQkJCQlpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgIHRocm93ICgp
ICA7CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfaW50ZXJuYWwgIChfX2Nv
bnN0IGNoYXIgKgoJCQkJCQkgIF9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCQkgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLAoJCQkJCQkgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgdGhyb3cg
KCkgIDsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2lu
dGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91
cCkgIHRocm93ICgpICA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgX19zdHJ0b3VsbF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJCQlfX3Jlc3Ry
aWN0IF9fbnB0ciwKCQkJCQkJCWNoYXIgKioKCQkJCQkJCV9fcmVzdHJpY3QgX19lbmRwdHIsCgkJ
CQkJCQlpbnQgX19iYXNlLAoJCQkJCQkJaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKCgoKIyAz
MjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKIAoKCmV4dGVybiBjaGFyICpsNjRhICAo
bG9uZyBpbnQgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGE2NGwgIChfX2Nv
bnN0IGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCgoKCnR5
cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVm
IF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90
IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZz
aWRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IGxvZmZfdDsKCgoKdHlwZWRlZiBfX2lub190IGlub190
OwoKCgoKCgoKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBn
aWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3Qg
bmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qg
b2ZmX3Q7CgoKCgoKCgoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lk
X3QgaWRfdDsKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCnR5cGVkZWYgX19kYWRk
cl90IGRhZGRyX3Q7CnR5cGVkZWYgX19jYWRkcl90IGNhZGRyX3Q7CgoKCnR5cGVkZWYgX19rZXlf
dCBrZXlfdDsKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoj
IDYyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgoKCgoKIAp0eXBlZGVmIF9fdGltZV90IHRp
bWVfdDsKCgoKCgojIDg5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgojIDI3OSAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMwoKCgojIDEyMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK
CgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1h
bmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoK
CiMgNjEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoj
IDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJh
a2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAi
L3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1
LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2k1
ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIyAxMjYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiAK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBp
bnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwoKCiAKCiMgMTYwICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDMKCgogCgoKCgoKCgp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRy
aWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyApKSkgOwp0eXBlZGVmIGludCBpbnQxNl90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0hJX18gKSkpIDsKdHlwZWRlZiBpbnQgaW50MzJf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19TSV9fICkpKSA7CnR5cGVkZWYgaW50IGlu
dDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fRElfXyApKSkgOwoKCnR5cGVkZWYg
dW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1FJX18g
KSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoICBfX0hJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0RJX18gKSkpIDsKCnR5cGVk
ZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsK
CgogCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIg
MSAzCiAKCgoKCgoKIyAzNSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKCgogCgoKCgoKCgoK
CgoKCgojIDE5MiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoK
IAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMKCgoKCgoKCgoKCgoK
IyA1NiAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMKCiMgNzIgIi91c3IvaW5jbHVkZS9i
aXRzL3NlbGVjdC5oIiAzCgojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgog
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKIAoKCnR5cGVkZWYgc3RydWN0CiAgewog
ICAgdW5zaWduZWQgbG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQg
bG9uZyBpbnQpKSkgXTsKICB9IF9fc2lnc2V0X3Q7CgoKCgogCgoKCgoKIyAxMjUgIi91c3IvaW5j
bHVkZS9iaXRzL3NpZ3NldC5oIiAzCgojIDM0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAy
IDMKCgogCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA2MiAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDczICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgoK
CgoKIAoKc3RydWN0IHRpbWVzcGVjCiAgewogICAgbG9uZyBpbnQgdHZfc2VjOwkJIAogICAgbG9u
ZyBpbnQgdHZfbnNlYzsJCSAKICB9OwoKCgoKCiMgMjc5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CgoKCiMgMzggIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCmV4dGVybiAiQyIgeyAK
CiAKCgoKc3RydWN0IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKIAp0eXBl
ZGVmIF9fZmRfc2V0IGZkX3NldDsKCiAKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgpleHRlcm4gaW50
IF9fc2VsZWN0ICAoaW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywKCQkJICBfX2ZkX3Nl
dCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhjZXB0ZmRzLAoJCQkgIHN0cnVjdCB0aW1ldmFs
ICpfX3RpbWVvdXQpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNlbGVjdCAgKGludCBfX25mZHMs
IF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJCV9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAq
X19leGNlcHRmZHMsCgkJCXN0cnVjdCB0aW1ldmFsICpfX3RpbWVvdXQpICB0aHJvdyAoKSAgOwoK
IyA5MSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwoKCn0gCgoKIyAxOTUgIi91c3IvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9z
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgojIDQ3ICIvdXNyL2luY2x1
ZGUvc3lzL3N5c21hY3Jvcy5oIiAzCgoKCiMgMTk4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMwoKCgoKIAoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwkgIAp0eXBlZGVmIF9fZnNi
bGtjbnRfdCBmc2Jsa2NudF90OyAgCnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250X3Q7ICAK
CgoKCgoKCgoKCgoKfSAKCgojIDMzOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgogCgoK
CiAKZXh0ZXJuIGludDMyX3QgcmFuZG9tICAodm9pZCkgIHRocm93ICgpICA7CgogCmV4dGVybiB2
b2lkIHNyYW5kb20gICh1bnNpZ25lZCBpbnQgX19zZWVkKSAgdGhyb3cgKCkgIDsKCiAKCgoKZXh0
ZXJuIHZvaWQgKiAgaW5pdHN0YXRlICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqICBfX3N0
YXRlYnVmLAoJCQkgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pICB0aHJvdyAoKSAgOwoKIAoKZXh0
ZXJuIHZvaWQgKiAgc2V0c3RhdGUgICh2b2lkICogIF9fc3RhdGVidWYpICB0aHJvdyAoKSAgOwoK
CgogCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAgIGludDMyX3QgKmZwdHI7CQkgCiAgICBp
bnQzMl90ICpycHRyOwkJIAogICAgaW50MzJfdCAqc3RhdGU7CQkgCiAgICBpbnQgcmFuZF90eXBl
OwkJIAogICAgaW50IHJhbmRfZGVnOwkJIAogICAgaW50IHJhbmRfc2VwOwkJIAogICAgaW50MzJf
dCAqZW5kX3B0cjsJCSAKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAgKHN0cnVjdCByYW5kb21f
ZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKCQkJICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0
KSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICAodW5zaWduZWQgaW50IF9fc2Vl
ZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgIHRocm93ICgpICA7CgpleHRlcm4gaW50IGlu
aXRzdGF0ZV9yICAodW5zaWduZWQgaW50IF9fc2VlZCwKCQkJICAgICB2b2lkICogIF9fcmVzdHJp
Y3QgX19zdGF0ZWJ1ZiwKCQkJICAgICBzaXplX3QgX19zdGF0ZWxlbiwKCQkJICAgICBzdHJ1Y3Qg
cmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBz
ZXRzdGF0ZV9yICAodm9pZCAqICBfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCgkJCSAgICBzdHJ1Y3Qg
cmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpICB0aHJvdyAoKSAgOwoKCgoKIApleHRlcm4g
aW50IHJhbmQgICh2b2lkKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gdm9pZCBzcmFuZCAgKHVuc2ln
bmVkIGludCBfX3NlZWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCByYW5kX3IgICh1bnNp
Z25lZCBpbnQgKl9fc2VlZCkgIHRocm93ICgpICA7CgoKCgogCgogCmV4dGVybiBkb3VibGUgZHJh
bmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggICh1bnNpZ25l
ZCBzaG9ydCBpbnQgX194c3ViaVszXSkgIHRocm93ICgpICA7CgogCmV4dGVybiBsb25nIGludCBs
cmFuZDQ4ICAodm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICAodW5z
aWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gbG9uZyBp
bnQgbXJhbmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAg
KHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZv
aWQgc3JhbmQ0OCAgKGxvbmcgaW50IF9fc2VlZHZhbCkgIHRocm93ICgpICA7CmV4dGVybiB1bnNp
Z25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10p
ICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9f
cGFyYW1bN10pICB0aHJvdyAoKSAgOwoKIApzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5z
aWduZWQgc2hvcnQgaW50IHhbM107CSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBhWzNdOwkgCiAg
ICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJIAogICAgdW5zaWduZWQgc2hvcnQgaW50IG9sZF94WzNd
OyAgCiAgICBpbnQgaW5pdDsJCQkgCiAgfTsKCgogCmV4dGVybiBpbnQgZHJhbmQ0OF9yICAoc3Ry
dWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgZG91YmxlICpfX3Jl
c3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgICh1bnNp
Z25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y
ZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBscmFuZDQ4X3IgIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf
X3Jlc3RyaWN0IF9fYnVmZmVyLAoJCQkgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkg
IHRocm93ICgpICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9f
eHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIs
CgkJCSAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkgIDsKCiAKZXh0
ZXJuIGludCBtcmFuZDQ4X3IgIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVm
ZmVyLAoJCQkgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgIHRocm93ICgpICA7CmV4
dGVybiBpbnQganJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAg
IHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxvbmcgaW50
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzcmFuZDQ4
X3IgIChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAg
dGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX19z
ZWVkMTZ2WzNdLAoJCQkgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgdGhyb3cgKCkg
IDsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10s
CgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgdGhyb3cgKCkgIDsKCgoKCgoK
CiAKZXh0ZXJuIHZvaWQgKiAgbWFsbG9jICAoc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CiAK
ZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpICB0
aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gdm9pZCAqICByZWFsbG9jICAodm9pZCAqICBfX3B0ciwg
c2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHZvaWQgZnJlZSAgKHZvaWQgKiAg
X19wdHIpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHZvaWQgY2ZyZWUgICh2b2lkICogIF9fcHRy
KSAgdGhyb3cgKCkgIDsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIv
Z2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
CiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51
eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4
LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2Mt
bGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgog
CgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5k
cmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNy
L2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyNSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5o
IiAyIDMKCgpleHRlcm4gIkMiIHsgCgogCgoKIApleHRlcm4gdm9pZCAqICBhbGxvY2EgIChzaXpl
X3QgX19zaXplKSAgdGhyb3cgKCkgIDsKCgoKCgp9IAoKCiMgNDkyICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDIgMwoKCgoKIApleHRlcm4gdm9pZCAqICB2YWxsb2MgIChzaXplX3QgX19zaXplKSAg
dGhyb3cgKCkgIDsKCgoKIApleHRlcm4gdm9pZCBhYm9ydCAgKHZvaWQpICB0aHJvdyAoKSAgIF9f
YXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogCmV4dGVybiBpbnQgYXRleGl0ICAodm9p
ZCAoKl9fZnVuYykgKHZvaWQpKSAgdGhyb3cgKCkgIDsKCgogCgpleHRlcm4gaW50IF9fb25fZXhp
dCAgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKiAgX19hcmcpLAoJCQkgICB2
b2lkICogIF9fYXJnKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBvbl9leGl0ICAodm9pZCAoKl9f
ZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqICBfX2FyZyksCgkJCSB2b2lkICogIF9fYXJnKSAg
dGhyb3cgKCkgIDsKCgogCgoKZXh0ZXJuIHZvaWQgZXhpdCAgKGludCBfX3N0YXR1cykgIHRocm93
ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgoKCiAKZXh0ZXJuIGNo
YXIgKmdldGVudiAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVy
biBjaGFyICpfX3NlY3VyZV9nZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgIHRocm93ICgp
ICA7CgoKIAogCgpleHRlcm4gaW50IHB1dGVudiAgKGNoYXIgKl9fc3RyaW5nKSAgdGhyb3cgKCkg
IDsKCgoKIAoKZXh0ZXJuIGludCBzZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25z
dCBjaGFyICpfX3ZhbHVlLAoJCQlpbnQgX19yZXBsYWNlKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu
IHZvaWQgdW5zZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgIHRocm93ICgpICA7CgoKCiAK
CgpleHRlcm4gaW50IGNsZWFyZW52ICAodm9pZCkgIHRocm93ICgpICA7CgoKCgogCgoKCmV4dGVy
biBjaGFyICpta3RlbXAgIChjaGFyICpfX3RlbXBsYXRlKSAgdGhyb3cgKCkgIDsKCiAKCgoKCmV4
dGVybiBpbnQgbWtzdGVtcCAgKGNoYXIgKl9fdGVtcGxhdGUpICB0aHJvdyAoKSAgOwoKCgogCmV4
dGVybiBpbnQgc3lzdGVtICAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQpICB0aHJvdyAoKSAgOwoK
CgoKCgoKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0aCAgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25hbWUsCgkJCSAgICBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpICB0aHJv
dyAoKSAgOwoKCgogCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAgKF9fY29uc3Qgdm9p
ZCAqICwgX19jb25zdCB2b2lkICogKSAgOwoKCgoKCgogCgpleHRlcm4gdm9pZCAqICBic2VhcmNo
ICAoX19jb25zdCB2b2lkICogIF9fa2V5LCBfX2NvbnN0IHZvaWQgKiAgX19iYXNlLAoJCQkgICAg
ICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgICAgICBfX2NvbXBhcl9mbl90
IF9fY29tcGFyKSAgOwoKIAoKZXh0ZXJuIHZvaWQgcXNvcnQgICh2b2lkICogIF9fYmFzZSwgc2l6
ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikg
IDsKCgogCmV4dGVybiBpbnQgYWJzICAoaW50IF9feCkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQgbGFicyAgKGxvbmcgaW50IF9feCkgIHRo
cm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgogCgogCmV4dGVybiBk
aXZfdCBkaXYgIChpbnQgX19udW1lciwgaW50IF9fZGVub20pICB0aHJvdyAoKSAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBsZGl2ICAobG9uZyBpbnQgX19udW1l
ciwgbG9uZyBpbnQgX19kZW5vbSkgIHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKCgoKCgoKIAoKCiAKCgpleHRlcm4gY2hhciAqZWN2dCAgKGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCQlpbnQgKl9fcmVz
dHJpY3QgX19zaWduKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4gY2hhciAqZmN2dCAgKGRvdWJs
ZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCQlpbnQg
Kl9fcmVzdHJpY3QgX19zaWduKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4gY2hhciAqZ2N2dCAg
KGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgdGhyb3cgKCkgIDsK
CiAKZXh0ZXJuIGNoYXIgKnFlY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdp
dCwKCQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSAg
dGhyb3cgKCkgIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGlu
dCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGNoYXIgKnFnY3Z0ICAobG9uZyBkb3VibGUgIF9f
dmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpICB0aHJvdyAoKSAgOwoKCgogCgpleHRl
cm4gaW50IGVjdnRfciAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LAoJCQlpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0
IF9fYnVmLAoJCQlzaXplX3QgX19sZW4pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGZjdnRfciAg
KGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJ
CQlpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQlzaXpl
X3QgX19sZW4pICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBxZWN2dF9yICAobG9uZyBkb3VibGUg
IF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg
Kl9fcmVzdHJpY3QgX19zaWduLAoJCQkgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9f
bGVuKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBxZmN2dF9yICAobG9uZyBkb3VibGUgIF9fdmFs
dWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVz
dHJpY3QgX19zaWduLAoJCQkgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSAg
dGhyb3cgKCkgIDsKCgoKCiAKCmV4dGVybiBpbnQgbWJsZW4gIChfX2NvbnN0IGNoYXIgKl9fcywg
c2l6ZV90IF9fbikgIHRocm93ICgpICA7CiAKCmV4dGVybiBpbnQgbWJ0b3djICAod2NoYXJfdCAq
X19yZXN0cmljdCBfX3B3YywKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90
IF9fbikgIHRocm93ICgpICA7CiAKCmV4dGVybiBpbnQgd2N0b21iICAoY2hhciAqX19zLCB3Y2hh
cl90IF9fd2NoYXIpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAgKHdj
aGFyX3QgKl9fcmVzdHJpY3QgIF9fcHdjcywKCQkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gc2l6ZV90IHdjc3RvbWJz
ICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fcHdjcywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgoKCiAKCgoKZXh0ZXJuIGludCBy
cG1hdGNoICAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSAgdGhyb3cgKCkgIDsKCgoKIyA3MzIg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgojIDc1NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCgoKIyA3NjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKCn0gCgoKIyA0ICJlbmNv
ZGUuY2MiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgogCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1
ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoK
IyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvaTU4
Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2
LW1hbmRyYWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRy
YWtlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2dj
Yy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAK
CiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzMyAiL3Vzci9p
bmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKIApleHRlcm4gdm9pZCAqICBtZW1jcHkgICh2b2lkICog
IF9fcmVzdHJpY3QgX19kZXN0LAoJCQkgICAgX19jb25zdCB2b2lkICogIF9fcmVzdHJpY3QgX19z
cmMsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwogCgpleHRlcm4gdm9pZCAqICBtZW1tb3ZlICAo
dm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBzaXplX3QgX19u
KSAgdGhyb3cgKCkgIDsKCiAKCgoKZXh0ZXJuIHZvaWQgKiAgbWVtY2NweSAgKHZvaWQgKiAgX19k
ZXN0LCBfX2NvbnN0IHZvaWQgKiAgX19zcmMsCgkJCSAgICAgaW50IF9fYywgc2l6ZV90IF9fbikg
IHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtc2V0ICAodm9pZCAqICBfX3MsIGlu
dCBfX2MsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IG1lbWNtcCAgKF9f
Y29uc3Qgdm9pZCAqICBfX3MxLCBfX2NvbnN0IHZvaWQgKiAgX19zMiwKCQkJc2l6ZV90IF9fbikg
IHRocm93ICgpICA7CgogCmV4dGVybiB2b2lkICogIG1lbWNociAgKF9fY29uc3Qgdm9pZCAqICBf
X3MsIGludCBfX2MsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKCgoKCgoKCiAKZXh0ZXJuIGNo
YXIgKnN0cmNweSAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3NyYykgIHRocm93ICgpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgIChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
c3JjLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0cmNhdCAgKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny
YykgIHRocm93ICgpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgIChjaGFyICpfX3Jlc3RyaWN0
IF9fZGVzdCwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19u
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzdHJjbXAgIChfX2NvbnN0IGNoYXIgKl9fczEs
IF9fY29uc3QgY2hhciAqX19zMikgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBzdHJuY21wICAo
X19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IHN0cmNvbGwgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u
c3QgY2hhciAqX19zMikgIHRocm93ICgpICA7CiAKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtICAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z
cmMsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIyAxMDcgIi91c3IvaW5jbHVkZS9zdHJpbmcu
aCIgMwoKCgogCmV4dGVybiBjaGFyICpfX3N0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhy
b3cgKCkgIDsKZXh0ZXJuIGNoYXIgKnN0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cg
KCkgIDsKCgogCgoKCgoKCiMgMTQzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgogCmV4dGVy
biBjaGFyICpzdHJjaHIgIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7
CiAKZXh0ZXJuIGNoYXIgKnN0cnJjaHIgIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRo
cm93ICgpICA7CgoKCgoKCgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIg
Kl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkgIHRocm93ICgpICA7CiAKCmV4dGVybiBzaXpl
X3Qgc3Ryc3BuICAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpICB0
aHJvdyAoKSAgOwogCmV4dGVybiBjaGFyICpzdHJwYnJrICAoX19jb25zdCBjaGFyICpfX3MsIF9f
Y29uc3QgY2hhciAqX19hY2NlcHQpICB0aHJvdyAoKSAgOwogCmV4dGVybiBjaGFyICpzdHJzdHIg
IChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpICB0aHJv
dyAoKSAgOwoKCgoKCgoKCgogCmV4dGVybiBjaGFyICpzdHJ0b2sgIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkgIHRocm93ICgpICA7
CgogCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJCQkg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKCQkJICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19zYXZlX3B0cikgIHRocm93ICgpICA7CgpleHRlcm4gY2hhciAqc3RydG9rX3Ig
IChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2RlbGltLAoJCQkgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgIHRocm93ICgpICA7
CgoKIyAyMDMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgogCmV4dGVybiBzaXplX3Qgc3Ry
bGVuICAoX19jb25zdCBjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCgoKCgoKCiAKZXh0ZXJuIGNo
YXIgKnN0cmVycm9yICAoaW50IF9fZXJybnVtKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBjaGFy
ICpfX3N0cmVycm9yX3IgIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZs
ZW4pICB0aHJvdyAoKSAgOwpleHRlcm4gY2hhciAqc3RyZXJyb3JfciAgKGludCBfX2Vycm51bSwg
Y2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIHZv
aWQgX19iemVybyAgKHZvaWQgKiAgX19zLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgogCmV4
dGVybiB2b2lkIGJjb3B5ICAoX19jb25zdCB2b2lkICogIF9fc3JjLCB2b2lkICogIF9fZGVzdCwg
c2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lkIGJ6ZXJvICAodm9pZCAqICBf
X3MsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IGJjbXAgIChfX2NvbnN0
IHZvaWQgKiAgX19zMSwgX19jb25zdCB2b2lkICogIF9fczIsIHNpemVfdCBfX24pICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gY2hhciAqaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykg
IHRocm93ICgpICA7CgogCmV4dGVybiBjaGFyICpyaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywg
aW50IF9fYykgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IF9fZmZzICAoaW50IF9faSkgIHRo
cm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CmV4dGVybiBpbnQgZmZzICAoaW50IF9f
aSkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgogCgoKCgoKCgoKCiAKZXh0
ZXJuIGludCBfX3N0cmNhc2VjbXAgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq
X19zMikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgc3RyY2FzZWNtcCAgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzdHJu
Y2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAoJCQkgICAg
IHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKCiMgMjc3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi
IDMKCgoKIAoKZXh0ZXJuIGNoYXIgKnN0cnNlcCAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5n
cCwKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkgIHRocm93ICgpICA7CgoK
IyAzMTkgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgoKIyAzNDcgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMwoKCgp9IAoKCiMgNSAiZW5jb2RlLmNjIiAyCgojIDEgIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgog
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9odWdl
X3ZhbC5oIiAzCgojIDMzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgogCgoKCiAKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9tYXRoZGVmLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg
NDcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMwoKIyA0MCAiL3Vzci9pbmNsdWRlL21h
dGguaCIgMiAzCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
bWF0aGNhbGxzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYWNvcyAgICAgICAgICAo
ZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19hY29zICAgICAgICAg
IChkb3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFzaW4gICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNpbiAg
ICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBh
dGFuICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X2F0YW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAg
ICAgICAgYXRhbjIgICAgICAgICAgKGRvdWJsZSAgX195LCBkb3VibGUgIF9feCkgICAgOyBleHRl
cm4gICBkb3VibGUgICAgICAgICBfX2F0YW4yICAgICAgICAgIChkb3VibGUgIF9feSwgZG91Ymxl
ICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgY29zICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NvcyAgICAgICAgICAo
ZG91YmxlICBfX3gpICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzaW4gICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2luICAgICAg
ICAgIChkb3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRhbiAg
ICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX190YW4g
ICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgoKCgoKCiAKCiAKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIGNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJs
ZSAgICAgICAgIF9fY29zaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwogCmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICBzaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX3NpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApl
eHRlcm4gICBkb3VibGUgICAgICAgICAgdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsg
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgX190YW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAg
ICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYWNvc2ggICAgICAgICAgKGRvdWJsZSAg
X194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYWNvc2ggICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXNpbmggICAgICAgICAg
KGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNpbmggICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbmgg
ICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXRh
bmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgogCgogCmV4dGVybiAgIGRvdWJsZSAg
ICAgICAgICBleHAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9fZXhwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKCgoKCgoKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgZnJleHAgICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQgKl9f
ZXhwb25lbnQpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19mcmV4cCAgICAgICAgICAo
ZG91YmxlICBfX3gsIGludCAqX19leHBvbmVudCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAg
ICAgICAgICBsZGV4cCAgICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX2V4cG9uZW50KSAgICA7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbGRleHAgICAgICAgICAgKGRvdWJsZSAgX194LCBp
bnQgX19leHBvbmVudCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBsb2cgICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9nICAg
ICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBs
b2cxMCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg
X19sb2cxMCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUg
ICAgICAgICAgbW9kZiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgKl9faXB0cikgICAg
OyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX21vZGYgICAgICAgICAgKGRvdWJsZSAgX194LCBk
b3VibGUgICpfX2lwdHIpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGV4cG0x
ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2V4
cG0xICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAg
ICAgICBsb2cxcCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgX19sb2cxcCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBk
b3VibGUgICAgICAgICAgbG9nYiAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX19sb2diICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKCgoK
CgoKCgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgcG93ICAgICAgICAgIChkb3VibGUg
IF9feCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19wb3cgICAg
ICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgogCmV4dGVybiAgIGRvdWJs
ZSAgICAgICAgICBzcXJ0ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3Vi
bGUgICAgICAgICBfX3NxcnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgogCmV4dGVy
biAgIGRvdWJsZSAgICAgICAgICBoeXBvdCAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAg
X195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9faHlwb3QgICAgICAgICAgKGRvdWJs
ZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IGNicnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAg
IF9fY2JydCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCgogCgogCmV4dGVybiAgIGRv
dWJsZSAgICAgICAgICBjZWlsICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2NlaWwgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0
ZXJuICAgZG91YmxlICAgICAgICAgIGZhYnMgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgX19h
dHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X2ZhYnMgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2Nv
bnN0X18pICApICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmbG9vciAgICAgICAgICAo
ZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19mbG9vciAgICAgICAg
ICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZm1vZCAg
ICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9fZm1vZCAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICAgIDsK
CgogCgpleHRlcm4gIGludCAgICAgX19pc2luZiAgICAgIChkb3VibGUgIF9fdmFsdWUpICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICAgX19maW5pdGUgICAg
ICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCgpl
eHRlcm4gIGludCAgICAgaXNpbmYgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgIGZpbml0ZSAgICAgIChkb3VibGUg
IF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIAoKCgoKCmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICBpbmZuYW4gICAgICAgICAgKGludCBfX2Vycm9yKSAgICAgX19hdHRy
aWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2lu
Zm5hbiAgICAgICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29u
c3RfXykgICkgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGRyZW0gICAgICAgICAgKGRv
dWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Ry
ZW0gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKIApleHRlcm4g
ICBkb3VibGUgICAgICAgICAgc2lnbmlmaWNhbmQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2lnbmlmaWNhbmQgICAgICAgICAgKGRvdWJsZSAg
X194KSAgICAgIDsKCgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgY29weXNpZ24gICAgICAg
ICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19j
b25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19jb3B5c2lnbiAgICAgICAgICAo
ZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0
X18pICApICA7CgoKCgoKCgoKIApleHRlcm4gIGludCAgICAgX19pc25hbiAgICAgIChkb3VibGUg
IF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCiAKZXh0ZXJuICBpbnQg
ICAgIGlzbmFuICAgICAgKGRvdWJsZSAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBqMCAgICAgICAgICAoZG91YmxlICkg
ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2owICAgICAgICAgIChkb3VibGUgKSAgICAg
IDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGoxICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4
dGVybiAgIGRvdWJsZSAgICAgICAgIF9fajEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRl
cm4gICBkb3VibGUgICAgICAgICAgam4gICAgICAgICAgKGludCwgZG91YmxlICkgICAgOyBleHRl
cm4gICBkb3VibGUgICAgICAgICBfX2puICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgICAgOwpl
eHRlcm4gICBkb3VibGUgICAgICAgICAgeTAgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX195MCAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICB5MSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3Vi
bGUgICAgICAgICBfX3kxICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIHluICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX195biAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICAgIDsKCgoKCiAKZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgIGVyZiAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2VyZiAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRv
dWJsZSAgICAgICAgICBlcmZjICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJs
ZSAgICAgICAgIF9fZXJmYyAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJs
ZSAgICAgICAgICBsZ2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19sZ2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3Vi
bGUgICAgICAgICAgdGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJs
ZSAgICAgICAgIF9fdGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKCgoKIApleHRlcm4g
ICBkb3VibGUgICAgICAgICAgZ2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX19nYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgICA7CgoKCiAKCgpl
eHRlcm4gICBkb3VibGUgICAgICAgICAgbGdhbW1hX3IgICAgICAgICAgICAgIChkb3VibGUgLCBp
bnQgKl9fc2lnbmdhbXApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sZ2FtbWFfciAg
ICAgICAgICAgICAgKGRvdWJsZSAsIGludCAqX19zaWduZ2FtcCkgICAgICA7CgoKCgogCgpleHRl
cm4gICBkb3VibGUgICAgICAgICAgcmludCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19yaW50ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7
CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBuZXh0YWZ0ZXIgICAgICAgICAgKGRvdWJsZSAg
X194LCBkb3VibGUgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsg
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19uZXh0YWZ0ZXIgICAgICAgICAgKGRvdWJsZSAgX194
LCBkb3VibGUgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoK
CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgcmVtYWluZGVyICAgICAgICAgIChkb3VibGUg
IF9feCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yZW1haW5k
ZXIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKIApleHRlcm4g
ICBkb3VibGUgICAgICAgICAgc2NhbGIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9f
bikgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NjYWxiICAgICAgICAgIChkb3VibGUg
IF9feCwgZG91YmxlICBfX24pICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHNj
YWxibiAgICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX24pICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19zY2FsYm4gICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQgX19uKSAgICAgIDsK
CiAKZXh0ZXJuICAgaW50ICAgICAgICBpbG9nYiAgICAgICAgKGRvdWJsZSAgX194KSAgIDsgZXh0
ZXJuICAgaW50ICAgICAgICBfX2lsb2diICAgICAgICAoZG91YmxlICBfX3gpICAgIDsKCgojIDMz
NiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKCiMgNjMgIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDIgMwoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0
aGNhbGxzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBhY29zZiAgICAgICAgIChmbG9h
dCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYWNvc2YgICAgICAgICAoZmxv
YXQgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGFzaW5mICAgICAgICAg
KGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hc2luZiAgICAgICAg
IChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgYXRhbmYgICAg
ICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2F0YW5mICAg
ICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBhdGFu
MmYgICAgICAgICAoZmxvYXQgICBfX3ksIGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX19hdGFuMmYgICAgICAgICAoZmxvYXQgICBfX3ksIGZsb2F0ICAgX194KSAgICAg
IDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgY29zZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY29zZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2luZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2luZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgdGFuZiAgICAgICAgIChmbG9hdCAg
IF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fdGFuZiAgICAgICAgIChmbG9hdCAg
IF9feCkgICAgICA7CgoKCgoKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNvc2hmICAg
ICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19jb3NoZiAg
ICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2lu
aGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3Np
bmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAg
ICB0YW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAg
IF9fdGFuaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQg
ICAgICAgICAgYWNvc2hmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX19hY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIGFzaW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4g
ICBmbG9hdCAgICAgICAgIF9fYXNpbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApl
eHRlcm4gICBmbG9hdCAgICAgICAgICBhdGFuaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsg
ZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2F0YW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg
ICA7CgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBleHBmICAgICAgICAgKGZsb2F0ICAg
X194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19leHBmICAgICAgICAgKGZsb2F0ICAg
X194KSAgICAgIDsKCgoKCgoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZyZXhwZiAgICAg
ICAgIChmbG9hdCAgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICA7IGV4dGVybiAgIGZsb2F0ICAg
ICAgICAgX19mcmV4cGYgICAgICAgICAoZmxvYXQgICBfX3gsIGludCAqX19leHBvbmVudCkgICAg
ICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxkZXhwZiAgICAgICAgIChmbG9hdCAgIF9f
eCwgaW50IF9fZXhwb25lbnQpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xkZXhwZiAg
ICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fZXhwb25lbnQpICAgICAgOwoKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICBsb2dmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZs
b2F0ICAgICAgICAgX19sb2dmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgbG9nMTBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19sb2cxMGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBtb2RmZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxv
YXQgICAqX19pcHRyKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19tb2RmZiAgICAgICAg
IChmbG9hdCAgIF9feCwgZmxvYXQgICAqX19pcHRyKSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0
ICAgICAgICAgIGV4cG0xZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fZXhwbTFmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgbG9nMXBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19sb2cxcGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBsb2diZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbG9nYmYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
ICAgOwoKCgoKCgoKCgoKCiAKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgcG93ZiAgICAgICAg
IChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBf
X3Bvd2YgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgc3FydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX3NxcnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgog
CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGh5cG90ZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxv
YXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2h5cG90ZiAgICAgICAgIChm
bG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGNicnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAg
ICAgX19jYnJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKCiAKCiAKZXh0ZXJuICAg
ZmxvYXQgICAgICAgICAgY2VpbGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX2NlaWxmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0
ZXJuICAgZmxvYXQgICAgICAgICAgZmFic2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICBfX2F0
dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19m
YWJzZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25z
dF9fKSAgKSAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmbG9vcmYgICAgICAgICAoZmxv
YXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2Zsb29yZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZtb2RmICAgICAg
ICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAg
IF9fZm1vZGYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCgpl
eHRlcm4gIGludCAgICBfX2lzaW5mZiAgICAgKGZsb2F0ICAgX192YWx1ZSkgICBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgaW50ICAgIF9fZmluaXRlZiAgICAgKGZsb2F0
ICAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIAoKZXh0ZXJuICBp
bnQgICAgaXNpbmZmICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgZmluaXRlZiAgICAgKGZsb2F0ICAgX192YWx1ZSkg
ICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCgoKCgoKZXh0ZXJuICAgZmxvYXQgICAg
ICAgICAgaW5mbmFuZiAgICAgICAgIChpbnQgX19lcnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAg
ICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2luZm5hbmYgICAgICAg
ICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsK
CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZHJlbWYgICAgICAgICAoZmxvYXQgICBfX3gsIGZs
b2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19kcmVtZiAgICAgICAgIChm
bG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAg
ICAgc2lnbmlmaWNhbmRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX19zaWduaWZpY2FuZGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCgog
CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNvcHlzaWduZiAgICAgICAgIChmbG9hdCAgIF9feCwg
ZmxvYXQgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19jb3B5c2lnbmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0
ICAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCgoKCgoK
IApleHRlcm4gIGludCAgICBfX2lzbmFuZiAgICAgKGZsb2F0ICAgX192YWx1ZSkgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gIGludCAgICBpc25hbmYgICAgIChmbG9h
dCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICBqMGYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fajBmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAg
ICAgICBqMWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9f
ajFmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICBqbmYg
ICAgICAgICAoaW50LCBmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19qbmYg
ICAgICAgICAoaW50LCBmbG9hdCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgeTBm
ICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3kwZiAgICAg
ICAgIChmbG9hdCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgeTFmICAgICAgICAg
KGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3kxZiAgICAgICAgIChmbG9h
dCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgeW5mICAgICAgICAgKGludCwgZmxv
YXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9feW5mICAgICAgICAgKGludCwgZmxv
YXQgICkgICAgICA7CgoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGVyZmYgICAgICAgICAo
ZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXJmZiAgICAgICAgIChmbG9h
dCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZXJmY2YgICAgICAgICAoZmxvYXQg
ICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXJmY2YgICAgICAgICAoZmxvYXQgICkg
ICAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxnYW1tYWYgICAgICAgICAoZmxvYXQgICkg
ICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAg
ICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgdGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAg
ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX190Z2FtbWFmICAgICAgICAgKGZsb2F0ICApICAg
ICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGdhbW1hZiAgICAgICAgIChmbG9hdCAg
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19nYW1tYWYgICAgICAgICAoZmxvYXQgICkg
ICAgICA7CgoKCiAKCgpleHRlcm4gICBmbG9hdCAgICAgICAgICBsZ2FtbWFmX3IgICAgICAgICAg
ICAoZmxvYXQgICwgaW50ICpfX3NpZ25nYW1wKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAg
X19sZ2FtbWFmX3IgICAgICAgICAgICAoZmxvYXQgICwgaW50ICpfX3NpZ25nYW1wKSAgICAgIDsK
CgoKCiAKCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHJpbnRmICAgICAgICAgKGZsb2F0ICAgX194
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19yaW50ZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIG5leHRhZnRlcmYgICAgICAgICAo
ZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0
X18pICApOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbmV4dGFmdGVyZiAgICAgICAgIChmbG9h
dCAgIF9feCwgZmxvYXQgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykg
ICkgIDsKCgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgcmVtYWluZGVyZiAgICAgICAgIChm
bG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3Jl
bWFpbmRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIHNjYWxiZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQg
ICBfX24pICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NjYWxiZiAgICAgICAgIChmbG9h
dCAgIF9feCwgZmxvYXQgICBfX24pICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAg
c2NhbGJuZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fbikgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fc2NhbGJuZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fbikgICAgICA7
CgogCmV4dGVybiAgIGludCAgICAgICBpbG9nYmYgICAgICAgKGZsb2F0ICAgX194KSAgIDsgZXh0
ZXJuICAgaW50ICAgICAgIF9faWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkgICAgOwoKCiMgMzM2
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwoKIyA4MiAiL3Vzci9pbmNsdWRlL21h
dGguaCIgMiAzCgoKCgoKIAoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNh
bGxzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhY29zbCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fYWNv
c2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgIGFzaW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19hc2lubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f
eCkgICAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgYXRhbmwgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2F0
YW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgICBhdGFuMmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3ksIGxvbmcgZG91
YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19hdGFuMmwgICAg
ICAgICAobG9uZyBkb3VibGUgICBfX3ksIGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCiAKZXh0
ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY29zbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f
eCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fY29zbCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgc2lu
bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAg
ICAgICAgIF9fc2lubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CiAKZXh0ZXJu
ICAgbG9uZyBkb3VibGUgICAgICAgICAgdGFubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkg
ICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fdGFubCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feCkgICAgICA7CgoKCgoKCgogCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIGNvc2hsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcg
ZG91YmxlICAgICAgICAgX19jb3NobCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7
CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgc2luaGwgICAgICAgICAobG9uZyBkb3Vi
bGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3NpbmhsICAgICAg
ICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAg
ICAgICB0YW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25n
IGRvdWJsZSAgICAgICAgIF9fdGFuaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAg
OwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgYWNvc2hsICAgICAgICAgKGxvbmcg
ZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19hY29zaGwg
ICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgIGFzaW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgIF9fYXNpbmhsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
KSAgICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhdGFuaGwgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2F0
YW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgoKIAoKIApleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICBleHBsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7
IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19leHBsICAgICAgICAgKGxvbmcgZG91Ymxl
ICAgX194KSAgICAgIDsKCgoKCgoKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGZy
ZXhwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICA7IGV4
dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19mcmV4cGwgICAgICAgICAobG9uZyBkb3VibGUg
ICBfX3gsIGludCAqX19leHBvbmVudCkgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgIGxkZXhwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50IF9fZXhwb25lbnQp
ICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xkZXhwbCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCwgaW50IF9fZXhwb25lbnQpICAgICAgOwoKIApleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgICBsb2dsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19sb2dsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
KSAgICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgbG9nMTBsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19s
b2cxMGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBsb25n
IGRvdWJsZSAgICAgICAgICBtb2RmbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBk
b3VibGUgICAqX19pcHRyKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19tb2Rm
bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICAqX19pcHRyKSAgICAg
IDsKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGV4cG0xbCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZXhwbTFs
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICAgbG9nMXBsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19sb2cxcGwgICAgICAgICAobG9uZyBkb3VibGUgICBf
X3gpICAgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsb2dibCAgICAgICAg
IChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9f
bG9nYmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKCgoKCgoKCgoKCiAKCiAK
ZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgcG93bCAgICAgICAgIChsb25nIGRvdWJsZSAg
IF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICBfX3Bvd2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAg
ICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgc3FydGwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3NxcnRs
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCgogCmV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgIGh5cG90bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3Vi
bGUgICBfX3kpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2h5cG90bCAgICAg
ICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICAgOwoKCgogCmV4
dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGNicnRsICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19jYnJ0bCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCkgICAgICA7CgoKCiAKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg
ICAgICAgY2VpbGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICBfX2NlaWxsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAg
IDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZmFic2wgICAgICAgICAobG9uZyBk
b3VibGUgICBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19mYWJzbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f
eCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKIApleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICBmbG9vcmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAg
IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Zsb29ybCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGZtb2Rs
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgOyBleHRl
cm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZm1vZGwgICAgICAgICAobG9uZyBkb3VibGUgICBf
X3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgIDsKCgogCgpleHRlcm4gIGludCAgICBfX2lzaW5m
bCAgICAgKGxvbmcgZG91YmxlICAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgogCmV4dGVybiAgaW50ICAgIF9fZmluaXRlbCAgICAgKGxvbmcgZG91YmxlICAgX192YWx1
ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIAoKZXh0ZXJuICBpbnQgICAgaXNp
bmZsICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgZmluaXRlbCAgICAgKGxvbmcgZG91YmxlICAgX192YWx1
ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCgoKCgoKZXh0ZXJuICAgbG9uZyBk
b3VibGUgICAgICAgICAgaW5mbmFubCAgICAgICAgIChpbnQgX19lcnJvcikgICAgIF9fYXR0cmli
dXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBf
X2luZm5hbmwgICAgICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9f
Y29uc3RfXykgICkgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZHJlbWwgICAg
ICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19kcmVtbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwg
bG9uZyBkb3VibGUgICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICAgc2lnbmlmaWNhbmRsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19zaWduaWZpY2FuZGwgICAgICAgICAobG9uZyBkb3VibGUg
ICBfX3gpICAgICAgOwoKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGNvcHlzaWdu
bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICBfX2F0
dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgX19jb3B5c2lnbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAg
X195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCgoKCgoKIApl
eHRlcm4gIGludCAgICBfX2lzbmFubCAgICAgKGxvbmcgZG91YmxlICAgX192YWx1ZSkgICBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gIGludCAgICBpc25hbmwgICAgIChs
b25nIGRvdWJsZSAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBqMGwgICAgICAgICAobG9uZyBkb3VibGUgICkg
ICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fajBsICAgICAgICAgKGxvbmcgZG91
YmxlICApICAgICAgOwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBqMWwgICAgICAgICAo
bG9uZyBkb3VibGUgICkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fajFsICAg
ICAgICAgKGxvbmcgZG91YmxlICApICAgICAgOwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAg
ICBqbmwgICAgICAgICAoaW50LCBsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgX19qbmwgICAgICAgICAoaW50LCBsb25nIGRvdWJsZSAgKSAgICAgIDsKZXh0
ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgeTBsICAgICAgICAgKGxvbmcgZG91YmxlICApICAg
IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3kwbCAgICAgICAgIChsb25nIGRvdWJs
ZSAgKSAgICAgIDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgeTFsICAgICAgICAgKGxv
bmcgZG91YmxlICApICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3kxbCAgICAg
ICAgIChsb25nIGRvdWJsZSAgKSAgICAgIDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg
eW5sICAgICAgICAgKGludCwgbG9uZyBkb3VibGUgICkgICAgOyBleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgIF9feW5sICAgICAgICAgKGludCwgbG9uZyBkb3VibGUgICkgICAgICA7CgoKCgog
CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGVyZmwgICAgICAgICAobG9uZyBkb3VibGUg
ICkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZXJmbCAgICAgICAgIChsb25n
IGRvdWJsZSAgKSAgICAgIDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZXJmY2wgICAg
ICAgICAobG9uZyBkb3VibGUgICkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9f
ZXJmY2wgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICA7CmV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgIGxnYW1tYWwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgOyBleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgIF9fbGdhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICAg
IDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgdGdhbW1hbCAgICAgICAgIChsb25nIGRv
dWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX190Z2FtbWFsICAgICAg
ICAgKGxvbmcgZG91YmxlICApICAgICAgOwoKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIGdhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgX19nYW1tYWwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICA7CgoKCiAK
CgpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsZ2FtbWFsX3IgICAgICAgICAgICAobG9u
ZyBkb3VibGUgICwgaW50ICpfX3NpZ25nYW1wKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgX19sZ2FtbWFsX3IgICAgICAgICAgICAobG9uZyBkb3VibGUgICwgaW50ICpfX3NpZ25n
YW1wKSAgICAgIDsKCgoKCiAKCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHJpbnRsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgX19yaW50bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgogCmV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgIG5leHRhZnRlcmwgICAgICAgICAobG9uZyBkb3VibGUgICBf
X3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18p
ICApOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fbmV4dGFmdGVybCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICgg
ICAgKF9fY29uc3RfXykgICkgIDsKCgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg
cmVtYWluZGVybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kp
ICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3JlbWFpbmRlcmwgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgIDsKCgogCmV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgIHNjYWxibCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwg
bG9uZyBkb3VibGUgICBfX24pICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3Nj
YWxibCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX24pICAgICAg
OwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgc2NhbGJubCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCwgaW50IF9fbikgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAg
IF9fc2NhbGJubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50IF9fbikgICAgICA7Cgog
CmV4dGVybiAgIGludCAgICAgICBpbG9nYmwgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgIDsg
ZXh0ZXJuICAgaW50ICAgICAgIF9faWxvZ2JsICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAg
OwoKCiMgMzM2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwoKIyA5OSAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMiAzCgoKCgoKCgoKCgoKCgogCmV4dGVybiBpbnQgc2lnbmdhbTsKCgoK
IAojIDIzMiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCgogCnR5cGVkZWYgZW51bQp7CiAgX0lF
RUVfID0gLTEsCSAKICBfU1ZJRF8sCSAKICBfWE9QRU5fLAkgCiAgX1BPU0lYXywKICBfSVNPQ18J
IAp9IF9MSUJfVkVSU0lPTl9UWVBFOwoKIAoKCmV4dGVybiBfTElCX1ZFUlNJT05fVFlQRSBfTElC
X1ZFUlNJT047CgoKCgogCgoKCgoKc3RydWN0IF9fZXhjZXB0aW9uCgoKCiAgewogICAgaW50IHR5
cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3VibGUgYXJnMjsKICAg
IGRvdWJsZSByZXR2YWw7CiAgfTsKCgpleHRlcm4gaW50IG1hdGhlcnIgIChzdHJ1Y3QgX19leGNl
cHRpb24gKl9fZXhjKSAgdGhyb3cgKCkgIDsKCgoKCgoKIAoKCgoKCgoKIAoKIyAxICIvdXNyL2xp
Yi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4zL2luY2x1ZGUvZmxvYXQuaCIgMSAz
CiAKCgoKIAoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoK
CiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoK
CiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKCiAgICAKCgogICAgCgoKICAgIAoK
Cgp1bmlvbiBfX2NvbnZlcnRfbG9uZ19kb3VibGUgewogIHVuc2lnbmVkIF9fY29udmVydF9sb25n
X2RvdWJsZV9pWzRdOwogIGxvbmcgZG91YmxlIF9fY29udmVydF9sb25nX2RvdWJsZV9kOwp9OwoK
CiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCgoKIyAyODkgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDIgMwoKCiMgMjk5ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCiAKCgojIDMzNiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCgogCgoK
CgoKCiAKCgoKCgojIDQwNyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCn0gCgoKCiMgNiAiZW5j
b2RlLmNjIiAyCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCiMgMzIgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwoKCgoKCiAKCgoKCiMgNTYg
Ii91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwoKCmV4dGVybiAiQyIgeyAKCiAKZXh0ZXJuIHZvaWQg
X19hc3NlcnRfZmFpbCAgKF9fY29uc3QgY2hhciAqX19hc3NlcnRpb24sCgkJCQlfX2NvbnN0IGNo
YXIgKl9fZmlsZSwKCQkJCXVuc2lnbmVkIGludCBfX2xpbmUsCgkJCQlfX2NvbnN0IGNoYXIgKl9f
ZnVuY3Rpb24pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykp
OwoKIApleHRlcm4gdm9pZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAgKGludCBfX2Vycm51bSwKCQkJ
CSAgICAgICBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgX19s
aW5lLAoJCQkJICAgICAgIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikgIHRocm93ICgpICAKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7Cgp9IAoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojIDcgImVuY29kZS5jYyIgMgoKCmNvbnN0IHVuc2lnbmVkIGludCBT
dGFydERpY3RCaXRTaXplID0gNzsKY29uc3QgdW5zaWduZWQgaW50IFN0YXJ0RGljdFNpemUgPSBw
b3coMixTdGFydERpY3RCaXRTaXplKTsKCmNsYXNzIFRSSUVub2RlOwoKdHlwZWRlZiBUUklFbm9k
ZSAqIFRSSUVub2RlUHQ7CgpjbGFzcyBUUklFbm9kZXsKcHJvdGVjdGVkOgogIFRSSUVub2RlUHQg
cHRyc1tTdGFydERpY3RTaXplXTsKICB1bnNpZ25lZCBpbnQgcGhyYXNlOwpwdWJsaWM6CiAgVFJJ
RW5vZGUoKTsKICB+VFJJRW5vZGUoKTsKICB1bnNpZ25lZCBpbnQgZ2V0UGhyYXNlKCkgeyByZXR1
cm4gcGhyYXNlO30KICB1bnNpZ25lZCBpbnQgc2V0UGhyYXNlKHVuc2lnbmVkIGludCBwKSB7cmV0
dXJuIHBocmFzZSA9IHA7fQogIFRSSUVub2RlICpHZXROb2RlKHVuc2lnbmVkIGludCBuKSB7KCh2
b2lkKSAoKCBuPFN0YXJ0RGljdFNpemUgKSA/IDAgOgkoX19hc3NlcnRfZmFpbCAoIm48U3RhcnRE
aWN0U2l6ZSIgLAkiZW5jb2RlLmNjIiwgMjUsIF9fUFJFVFRZX0ZVTkNUSU9OX18gKSwgMCkpKSA7
IHJldHVybiBwdHJzW25dO30KICBUUklFbm9kZSAqU2V0Tm9kZShUUklFbm9kZSAqbmV3bm9kZSx1
bnNpZ25lZCBpbnQgbil7CiAgICAoKHZvaWQpICgoIG48U3RhcnREaWN0U2l6ZSApID8gMCA6CShf
X2Fzc2VydF9mYWlsICgibjxTdGFydERpY3RTaXplIiAsCSJlbmNvZGUuY2MiLCAyNywgX19QUkVU
VFlfRlVOQ1RJT05fXyApLCAwKSkpIDsKICAgIGlmIChwdHJzW25dICE9IF9fbnVsbCApIGZyZWUo
cHRyc1tuXSk7CiAgICByZXR1cm4gcHRyc1tuXSA9IG5ld25vZGU7CiAgfQp9OwoKdm9pZCBlbmNv
ZGUoaXN0cmVhbSAmaW4sb3N0cmVhbSAmb3V0LGludCBtYXhEaWN0U2l6ZSl7fQoKaW50IG1haW4o
aW50IGFyZ2MsY2hhciAqYXJndltdKQp7CiAgCiAgY2hhciAqaW5wdXRGaWxlTmFtZSA9IF9fbnVs
bCAsCiAgICAqb3V0cHV0RmlsZU5hbWUgPSBfX251bGwgOwogIGludCBtYXhEaWN0U2l6ZSA9IDE2
OwogIGludCBpID0gMTsKICAKICB3aGlsZShpIDwgYXJnYyl7CiAgICBpZihzdHJjbXAoYXJndltp
XSwiLW8iKSA9PSAwKXsKICAgICAgaWYoKytpID09IGFyZ2MpewoJY291dCA8PCAiUGxlYXNlIHN1
cHBseSBhIGZpbGVuYW1lIGFmdGVyIGEgLW8iIDw8IGVuZGw7CglleGl0KDEpOwogICAgICB9CiAg
ICAgIG91dHB1dEZpbGVOYW1lID0gYXJndltpXTsKICAgIH0gZWxzZSBpZihzdHJjbXAoYXJndltp
XSwiLWkiKSA9PSAwKXsKICAgICAgaWYoKytpID09IGFyZ2MpewoJY291dCA8PCAiUGxlYXNlIHN1
cHBseSBhIGZpbGVuYW1lIGFmdGVyIGEgLWkiIDw8IGVuZGw7CglleGl0KDEpOwogICAgICB9CiAg
ICAgIGlucHV0RmlsZU5hbWUgPSBhcmd2W2ldOwogICAgfSBlbHNlIGlmKHN0cmNtcChhcmd2W2ld
LCItZCIpID09IDApewogICAgICBpZigrK2kgPT0gYXJnYyl7Cgljb3V0IDw8ICJQbGVhc2Ugc3Vw
cGx5IGEgZGljdGlvbmFyeSBzaXplIGFmdGVyIGEgLWQiIDw8IGVuZGw7CglleGl0KDEpOwogICAg
ICB9ICAgICAKICAgICAgbWF4RGljdFNpemUgPSBhdG9pKGFyZ3ZbaV0pOwogICAgfSBlbHNlIGlm
KHN0cmNtcChhcmd2W2ldLCItPyIpID09IDAgfHwgc3RyY21wKGFyZ3ZbaV0sIi0tPyIpID09IDAg
fHwgCiAgICAgICAgICAgICAgc3RyY21wKGFyZ3ZbaV0sIi1oZWxwIikgPT0gMCB8fCBzdHJjbXAo
YXJndltpXSwiLWhlbHAiKSA9PSAwKXsKICAgICAgY291dCA8PCAiZGVjb2RlIFtvcHRpb25zXSIg
PDwgZW5kbAoJICAgPDwgIiAtbyA8b3V0cHV0LWZpbGU+IiA8PCBlbmRsCgkgICA8PCAiIC1pIDxp
bnB1dC1maWxlPiIgPDwgZW5kbAoJICAgPDwgIiAtZCA8bWF4aW11bSBkaWN0aW9uYXJ5IHNpemUg
KGJpdHMpPiIgPDwgJ1x0JyA8PCAiZGVmYXVsdCA9IDE2IiA8PCBlbmRsCgkgICA8PCAiIC0/ICIg
PDwgJ1x0JyA8PCAiaGVscCIgPDwgZW5kbAoJICAgPDwgZW5kbAoJICAgPDwgIklmIG5vIGlucHV0
IG9yIG91dHB1dCBmaWxlIGlzIHN1cHBsaWVkIHN0ZGluIGFuZCBzdGRvdXQgYXJlIGFzc3VtZWQi
IDw8IGVuZGw7CiAgICAgIGV4aXQoMCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgY2VyciA8PCAi
VW5rbm93biBhcmd1bWVudDogIiA8PCBhcmd2W2ldIDw8IGVuZGw7CiAgICAgIGV4aXQoMSk7CiAg
ICB9CiAgICBpKys7CiAgfQogIAogIG9zdHJlYW0gKm91dCA9ICZjb3V0OwogIGlzdHJlYW0gKmlu
ID0gJmNpbjsKICBmc3RyZWFtICpmaW4gPSBfX251bGwgLAogICAgKmZvdXQgPSBfX251bGwgOwog
IAogIGlmKGlucHV0RmlsZU5hbWUgIT0gX19udWxsICkgewogICAgZmluID0gbmV3IGZzdHJlYW0o
KTsKICAgIGZpbiAtPiBvcGVuKGlucHV0RmlsZU5hbWUsaW9zOjppbiB8IGlvczo6bm9jcmVhdGUg
fCBpb3M6OmJpbmFyeSk7CiAgICBpZighZmluIC0+IGdvb2QoKSl7CiAgICAgIGNlcnIgPDwgIkVy
cm9yIG9wZW5pbmcgaW5wdXQgZmlsZTogIiA8PCBpbnB1dEZpbGVOYW1lIDw8IGVuZGw7CiAgICAg
IGZyZWUoZmluKTsKICAgICAgZXhpdCgxKTsKICAgIH0KICAgIGluID0gZmluOwogIH0KICAKICBp
ZihvdXRwdXRGaWxlTmFtZSAhPSBfX251bGwgKSB7CiAgICBmb3V0ID0gbmV3IGZzdHJlYW0oKTsK
ICAgIGZvdXQgLT4gb3BlbihvdXRwdXRGaWxlTmFtZSxpb3M6Om91dCB8IGlvczo6YmluYXJ5KTsK
ICAgIGlmKCFmb3V0IC0+IGdvb2QoKSl7CiAgICAgIGNlcnIgPDwgIkVycm9yIG9wZW5pbmcgb3V0
cHV0IGZpbGU6ICIgPDwgb3V0cHV0RmlsZU5hbWUgPDwgZW5kbDsKICAgICAgaWYoZmluICE9IF9f
bnVsbCApIGZyZWUoZmluKTsKICAgICAgZnJlZShmb3V0KTsKICAgICAgZXhpdCgxKTsKICAgIH0K
ICAgIGluID0gZmluOwogIH0KICAKICBlbmNvZGUoKmluLCpvdXQsbWF4RGljdFNpemUpOwogIAog
IGlmKGZpbiAhPSBfX251bGwgKSBmcmVlKGZpbik7CiAgaWYoZm91dCAhPSBfX251bGwgKXsKICAg
IGZvdXQgLT4gY2xvc2UoKTsKICAgIGZyZWUoZm91dCk7CiAgfQogIAogIHJldHVybiAwOwp9Cgo=
>From brent@rcfile.org Fri Aug 11 23:42:00 2000
From: brent verner <brent@rcfile.org>
To: Forest Wilkinson <fwx@home.com>
Cc: gcc-bugs@gcc.gnu.org
Subject: Re: c++ library bug report
Date: Fri, 11 Aug 2000 23:42:00 -0000
Message-id: <20000812024233.A14055@rcfile.org>
References: <7ls8psshtn6hdu048r16f2pb7lq6c2m5ec@4ax.com>
X-SW-Source: 2000-08/msg00261.html
Content-length: 920

On 11 Aug 2000 at 14:40 (-0700), Forest Wilkinson wrote:
| Hello.
| 
| Where should I report a bug in the C++ library that is distributed with
| gcc?

If the bug report is against libstdc++-v3, send email to 
libstdc++@sources.redhat.com. If you have any problems with sending the
email (becuase/if you're not subscribed), I can forward the message, 
but I recommend subscribing, since it is not a _high_ traffic list,
and the support is pretty good.

If the bug report is for libstdc++ shipped with gcc-2.95.2 , I'm not 
sure where it should go, but I imagine sending it to gcc-bugs would 
get it to a concerned party.

hth.
  Brent

-- 
Damon Brent Verner                        o      _     _         _
Cracker Jack? Surprise Certified  _o     /\_   _ \\o  (_)\__/o  (_)
brent@rcfile.org                _< \_   _>(_) (_)/<_    \_| \   _|/' \/
brent@linux1.org               (_)>(_) (_)        (_)   (_)    (_)'  _\o_
>From cav@uniscope.co.jp Sat Aug 12 00:34:00 2000
From: Carlos Villegas <cav@uniscope.co.jp>
To: gcc-bugs@gcc.gnu.org
Subject: libstdc++-v3 should be in egcs-g++ snapshot file
Date: Sat, 12 Aug 2000 00:34:00 -0000
Message-id: <3994FDC2.D0C6D5A0@uniscope.co.jp>
X-SW-Source: 2000-08/msg00262.html
Content-length: 188

Hi,

I noticed that libstdc++-v3 is in the egcs-core snapshot package
rather than in the egcs-g++ package. The old libstdc++ (v2) is
in egcs-g++ as it should be.

Cheers,

Carlos Villegas
>From roart@nvg.ntnu.no Sat Aug 12 04:56:00 2000
From: roart@nvg.ntnu.no
To: gcc-gnats@gcc.gnu.org
Subject: c/466: gcc 2.95.2 will not build on vax ultrix 4.3
Date: Sat, 12 Aug 2000 04:56:00 -0000
Message-id: <20000812115516.13748.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-08/msg00263.html
Content-length: 934

>Number:         466
>Category:       c
>Synopsis:       gcc 2.95.2 will not build on vax ultrix 4.3
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Aug 12 04:56:01 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     roart@nvg.ntnu.no
>Release:        2.95.2
>Organization:
>Environment:
vax ultrix 4.3
using gcc 2.7.2.2
>Description:
building gcc with make bootstrap gives:

__gcc_bcmp
_varargs
./libgcc2.c: In function `__builtin_saveregs':
./libgcc2.c:1396: Internal compiler error in `emit_call_1', at calls.c:446
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/faq.html#bugreport > for instructions.
make[2]: *** [libgcc2.a] Error 1

HAVE_call and HAVE_call_value is not defined
>How-To-Repeat:
make bootstrap
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
>From bds02@uow.edu.au Sat Aug 12 06:06:00 2000
From: bds02@uow.edu.au
To: gcc-gnats@gcc.gnu.org
Subject: c++/467: Creating a table with a pointer to member causes ice
Date: Sat, 12 Aug 2000 06:06:00 -0000
Message-id: <20000812130346.31164.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-08/msg00264.html
Content-length: 3404

>Number:         467
>Category:       c++
>Synopsis:       Creating a table with a pointer to member causes ice
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Sat Aug 12 06:06:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     bds02@uow.edu.au
>Release:        gcc version 2.95.2 19991024
>Organization:
>Environment:
Linux 2.2.16
>Description:
I'm not sure that this is the simplest code 
fragment to cause this, but it's much simpler 
than what I started with.

I have a table (array of structs) which includes a pointer
to member as one of the fields. If I remove the pointer 
to member field, the ice goes away.

The last line of the table is supposed to be a sentinel.
It includes a dummy enumeration member - 0, and all the
other fields are not initalised. (initialising them also
seems to cause an ice - no diff...) Commenting out this 
last line seems to remove the ice.

Here's the output I get from the suggested command line:

ben [22:51:13] ~/testing/gcc_bug $ g++ -v -save-temps bug2.cc
Reading specs from /usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/specs
gcc version 2.95.2 19991024 (release)
 /usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -Di586 -Dpentium -D__i586 -D__i586__ -D__pentium -D__pentium__ bug2.cc bug2.ii
GNU CPP version 2.95.2 19991024 (release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/../../../../include/g++-3
 /usr/local/include
 /usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/../../../../i586-pc-linux-gnu/include
 /usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/include
 /usr/include
End of search list.
The following default directories have been omitted from the search path:
End of omitted list.
 /usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/cc1plus bug2.ii -quiet -dumpbase bug2.cc -version -o bug2.s
GNU C++ version 2.95.2 19991024 (release) (i586-pc-linux-gnu) compiled by GNU C version 2.95.2 19991024 (release).
bug2.cc: In method `void MacroStage::InitKeywordCallbacks()':
bug2.cc:27: Internal compiler error in `const_hash', at varasm.c:2372
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/faq.html#bugreport > for instructions.
ben [22:51:28] ~/testing/gcc_bug $ 
>How-To-Repeat:
g++ bug2.ii
>Fix:

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

IyAxICJidWcyLmNjIgoKCmNsYXNzIE1hY3JvU3RhZ2UKewpwdWJsaWM6CiAgICB2b2lkIEluaXRL
ZXl3b3JkQ2FsbGJhY2tzKCk7CnByaXZhdGU6CiAgICB0eXBlZGVmIHZvaWQgKE1hY3JvU3RhZ2U6
OiogS0Z1bmNwKSh2b2lkKTsKCiAgICBlbnVtIFR5cGUgeyAKCWVJbmNsdWRlCiAgICB9OwoKICAg
IHZvaWQgRG9JbmNsdWRlKHZvaWQpOwp9OwoKdm9pZApNYWNyb1N0YWdlOjpJbml0S2V5d29yZENh
bGxiYWNrcygpCnsKICAgIHN0cnVjdCBLZXl3b3JkUmVjb3JkIHsKCVR5cGUJbVR5cGU7CglLRnVu
Y3AJbUZ1bmM7CiAgICB9OwogICAgS2V5d29yZFJlY29yZCBrcmFbXSA9IHsKCXsgZUluY2x1ZGUs
CSZNYWNyb1N0YWdlOjpEb0luY2x1ZGUgfSwKCXsgVHlwZSgwKSB9CiAgICB9Owp9CgoKCgo=
>From kenelson@ece.ucdavis.edu Sat Aug 12 08:17:00 2000
From: Karl Nelson <kenelson@ece.ucdavis.edu>
To: gcc-bugs@gcc.gnu.org
Cc: kenelson@elm.ece.ucdavis.edu
Subject: Syntax error on use of embedded structure definition.
Date: Sat, 12 Aug 2000 08:17:00 -0000
Message-id: <200008121516.IAA07987@elm.ece.ucdavis.edu>
X-SW-Source: 2000-08/msg00265.html
Content-length: 739

Category: c++ 
Synopsis: Syntax error on use of embedded structure definition.
Class: rejects-legal
Release: gcc-2.95.2
Environment: all (linux, hpux, sun tested)
Description:

If a structure is defined within a class and a member of that
type declared following that definition a syntax error will
be reported of "semicolon missing after declaration" when that
member is defined later.

I am not sure this is legal code but the error issued is certainly
not correct.  Separating the declaration of the member from
the definition of the embedded class fixes the error.


How-To-Repeat:

struct Foo {
  struct Bar {
    Bar();
    ~Bar();
  } bar();
  Foo();
};
Foo::Bar::Bar() {}
Foo::Bar::~Bar() {}
Foo::Bar Foo::bar() {}
Foo::Foo() {}



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2000-08-12 13:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <200008122003.QAA02188@disaster.jaj.com>
2000-08-12 13:43 ` c++ library bug report brent verner
2000-08-11 14:38 Forest Wilkinson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).