public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* Re: Strange gcc warning
       [not found] <399540FF.F1853AAF@runestig.com>
@ 2000-08-13  1:33 ` Peter 'Luna' Runestig
  0 siblings, 0 replies; only message in thread
From: Peter 'Luna' Runestig @ 2000-08-13  1:33 UTC (permalink / raw)
  To: freebsd-questions; +Cc: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 175651 bytes --]

Peter 'Luna' Runestig wrote:
> 
> This code (from OpenBSD ftp client):
> 
> void
> restart(argc, argv)
>         int argc;
>         char *argv[];
> {
>         quad_t nrestart_point;
>         char *ep;
> 
>         if (argc != 2)
>                 fputs("restart: offset not specified.\n", ttyout);
>         else {
>                 nrestart_point = strtoq(argv[1], &ep, 10);
>                 if (nrestart_point == QUAD_MAX || *ep != '\0')
>                         fputs("restart: invalid offset.\n", ttyout);
>                 else {
>                         fprintf(ttyout, "Restarting at %qd. Execute get,
> put or"
>                                 "append  to initiate transfer\n",
> /* line 2169 */                 nrestart_point);
>                         restart_point = nrestart_point;
>                 }
>         }
> }
> 
> gives this warning, compiling on FreeBSD 4.0-20000101-CURRENT alpha:
> 
> gcc -c -g -O2 -Wall -Wno-unused -I/house/luna/bsd_a/include -I./libedit
> -DHAVE_CONFIG_H -I.  -o cmds.o cmds.c
> cmds.c: In function `restart':
> cmds.c:2169: warning: long long int format, quad_t arg (arg 3)
> 
> Why? The format is "%qd" and the variable nrestart_point is a quad_t.
> Shouldn't be any problems, right? It compiles clean on OpenBSD and Linux
> (both i386 though).

I have it figured out now. quad_t on alpha is a long, not a long long as
on i386, but gcc still treats the "%qd" as a long long format. A small
gcc bug perhaps?
-- 
Peter "Luna" Runestig (fd. Altberg), Sweden
PGP Key ID: 0xD07BBE13
Fingerprint: 7B5C 1F48 2997 C061 DE4B  42EA CB99 A35C D07B BE13

Gubben Movitz ler och nickar, / men från Charons mörka sund
dödens blund / i dina blickar / bådar snart din sista stund.
Carl Michael Bellman, Fredmans epistel nr 34
>From ralphbecket@hotmail.com Sun Aug 13 03:01:00 2000
From: "Ralph Becket" <ralphbecket@hotmail.com>
To: gcc-bugs@gcc.gnu.org
Subject: Internal compiler error in spill_failure, at reload1.c:1826
Date: Sun, 13 Aug 2000 03:01:00 -0000
Message-id: <F106lmRBaYFkuutSgcO000000ae@hotmail.com>
X-SW-Source: 2000-08/msg00273.html
Content-type: multipart/mixed; boundary="----------=_1583533113-4114-572"

This is a multi-part message in MIME format...

------------=_1583533113-4114-572
Content-length: 1047

Compiler: gcc version 2.96
Hardware: i686 Athlon
OS:       Red Hat Linux 6.9.5. (Pinstripe) kernel version 2.2.16-17

gcc options:
-I../browser -I../library -I../runtime -I../boehm_gc
-I../boehm_gc/include -Wall -Wwrite_strings -Wpointer_arith
-Wtraditional -Wshadow -Wstrict-prototypes -Wmissing_prototypes
-Wno-unused -Wno-uninitialised -O2 -fomit-frame-pointer
-DUSE_ASM_LABELS -DUSE_GCC_NONLOCAL_GOTOS
-DUSE_GCC_GLOBAL_REGISTERS -fno-builtin -fno-omit-frame-pointer
-fno-defer-pop -fno-function-cse -fno-gcse -DCONSERVATIVE_GC
-D__EXTENSIONS__ -g -DNO_SIGNALS -c mercury_trace_alias.c
-o mercury_trace_alias.o -I/usr/local/include

Included is mercury_trace_alias.o, the preprocessed version of
the offending file.

You can download the entire mercury distribution from
http://www.cs.mu.oz.au/research/mercury/download/files/beta-releases/mercury-compiler-rotd-2000-06-27.tar.gz

Cheers,

Ralph


________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com

------------=_1583533113-4114-572
Content-Type: text/x-c; charset=us-ascii; name="mercury_trace_alias.o"
Content-Disposition: inline; filename="mercury_trace_alias.o"
Content-Transfer-Encoding: base64
Content-Length: 171415

IyAxICJtZXJjdXJ5X3RyYWNlX2FsaWFzLmMiCiMgMTUgIm1lcmN1cnlfdHJh
Y2VfYWxpYXMuYyIKIyAyOCAiLi4vcnVudGltZS9tZXJjdXJ5X2ltcC5oIiAx
CiMgMzU5ICIuLi9ydW50aW1lL21lcmN1cnlfY29uZi5oIiAxCiMgMjggIi4u
L3J1bnRpbWUvbWVyY3VyeV9pbXAuaCIgMgojIDQwICIuLi9ydW50aW1lL21l
cmN1cnlfaW1wLmgiCiMgMTIgIi4uL3J1bnRpbWUvbWVyY3VyeV9yZWdzLmgi
IDEKIyAzNiAiLi4vcnVudGltZS9tZXJjdXJ5X3R5cGVzLmgiIDEKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgTVJfdWludHB0cl90Owp0eXBlZGVmIGludCBNUl9p
bnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBNUl91aW50
X2xlYXN0NjRfdDsKdHlwZWRlZiBsb25nIGxvbmcgTVJfaW50X2xlYXN0NjRf
dDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBNUl91aW50X2xlYXN0MzJfdDsK
dHlwZWRlZiBpbnQgTVJfaW50X2xlYXN0MzJfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBNUl91aW50X2xlYXN0MTZfdDsKdHlwZWRlZiBzaG9ydCBNUl9p
bnRfbGVhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgTVJfdWludF9s
ZWFzdDhfdDsKdHlwZWRlZiBzaWduZWQgY2hhciBNUl9pbnRfbGVhc3Q4X3Q7
CgoKCgoKCnR5cGVkZWYgTVJfdWludHB0cl90IFdvcmQ7CnR5cGVkZWYgTVJf
aW50cHRyX3QgSW50ZWdlcjsKdHlwZWRlZiBNUl91aW50cHRyX3QgVW5zaWdu
ZWQ7CnR5cGVkZWYgTVJfaW50cHRyX3QgQm9vbDsKCgoKCgp0eXBlZGVmIHZv
aWQgQ29kZTsKCgoKCgoKCgoKICAgICAgICB0eXBlZGVmIGRvdWJsZSBGbG9h
dDY0OwojIDg4ICIuLi9ydW50aW1lL21lcmN1cnlfdHlwZXMuaCIKdHlwZWRl
ZiBjaGFyIENoYXI7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBVbnNpZ25lZENo
YXI7Cgp0eXBlZGVmIENoYXIgKlN0cmluZzsKdHlwZWRlZiBjb25zdCBDaGFy
ICpDb25zdFN0cmluZzsKCgp0eXBlZGVmIHZvaWQgKCpNUl9OZXN0ZWRDb250
KSAodm9pZCk7CnR5cGVkZWYgdm9pZCAoKk1SX0NvbnQpICh2b2lkICopOwoK
IyAxMiAiLi4vcnVudGltZS9tZXJjdXJ5X3JlZ3MuaCIgMgojIDk4ICIuLi9y
dW50aW1lL21lcmN1cnlfcmVncy5oIgojIDYxICIuLi9ydW50aW1lL21hY2hk
ZXBzL2kzODZfcmVncy5oIiAxCnJlZ2lzdGVyIFdvcmQgbXIwIF9fYXNtX18o
ImVzaSIpOwpyZWdpc3RlciBXb3JkIG1yMSBfX2FzbV9fKCJlZGkiKTsKCgoK
CgoKCiAgcmVnaXN0ZXIgV29yZCBtcjIgX19hc21fXygiZWJ4Iik7CgojIDk4
ICIuLi9ydW50aW1lL21lcmN1cnlfcmVncy5oIiAyCiMgMjAyICIuLi9ydW50
aW1lL21lcmN1cnlfcmVncy5oIgojIDI1NSAiLi4vcnVudGltZS9tZXJjdXJ5
X3JlZ3MuaCIKZXh0ZXJuIFdvcmQgZ2V0X3JlZyhpbnQpOwpleHRlcm4gV29y
ZCBzZXRfcmVnKGludCwgV29yZCk7CiMgMjY2ICIuLi9ydW50aW1lL21lcmN1
cnlfcmVncy5oIgojIDQwICIuLi9ydW50aW1lL21lcmN1cnlfaW1wLmgiIDIK
CgoKCgoKIyAxNiAiLi4vcnVudGltZS9tZXJjdXJ5X3N0ZC5oIiAxCiMgMjYg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMgMjc2ICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzA0ICIvdXNyL2luY2x1ZGUvZmVhdHVy
ZXMuaCIgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwojIDM0
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxOTkgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5o
IiAxIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDI4NyAiL3Vz
ci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUv
c3RkZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDM0ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKIyA5NCAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7
CiAgICBpbnQgcmVtOwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAg
ewogICAgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgaW50IHJlbTsKICB9IGxk
aXZfdDsKIyAxMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
c2l6ZV90IF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggKHZvaWQpOwoKCgpleHRl
cm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKTsKCmV4dGVy
biBpbnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpOwoKZXh0ZXJuIGxv
bmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKTsKCgoKX19leHRl
bnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBj
aGFyICpfX25wdHIpOwoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKTsKCiMgMTYyICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf
X2Jhc2UpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwgaW50IF9fYmFzZSkKOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25n
IGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSk7CgpfX2V4dGVuc2lvbl9f
CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19iYXNlKQo7CgoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IGxvbmcgbG9uZyBpbnQgc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpOwoKX19leHRl
bnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3Vs
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQo7CiMgMjQ5ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5h
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIGludCBfX2dyb3VwKQo7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9p
bnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCjsKZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKTsKCmV4dGVy
biBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19n
cm91cCk7CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxf
aW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19n
cm91cCk7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50
IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQg
X19ncm91cCk7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19jb25zdCBjaGFy
ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91
cCkKOwojIDI5MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBf
X2lubGluZSBkb3VibGUKc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJl
dHVybiBfX3N0cnRvZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7
Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0cnRvbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRv
bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpl
eHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4g
X19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOwp9CgojIDMyNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCl9fZXh0
ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9x
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0
dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i
YXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNp
Z25lZCBsb25nIGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAog
ICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50
ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoKX19l
eHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0
b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewog
IHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUg
dW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFy
ICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRv
dWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9
CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIg
Kl9fbnB0cikKewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiop
ICgodm9pZCAqKTApKTsKfQpleHRlcm4gX19pbmxpbmUgaW50CmF0b2kgKF9f
Y29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIChpbnQpIHN0cnRvbCAo
X19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQpleHRlcm4g
X19pbmxpbmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIp
CnsKICByZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQg
KikwKSwgMTApOwp9CgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUg
bG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCnsK
ICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICop
MCksIDEwKTsKfQojIDM4NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4
dGVybiBjaGFyICpsNjRhIChsb25nIGludCBfX24pOwoKCmV4dGVybiBsb25n
IGludCBhNjRsIChfX2NvbnN0IGNoYXIgKl9fcyk7CgoKCiMgMjggIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCgoKCiMgMzAgIi91c3IvaW5jbHVk
ZS9iaXRzL3R5cGVzLmgiIDEgMwoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBf
X3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBfX3VfbG9uZzsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9fZXh0ZW5zaW9uX18gdHlw
ZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4
X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYg
c2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQg
c2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2lu
dDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4
dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2
NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90
OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5cGVkZWYgX191X2lu
dCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBf
X3VfbG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5
cGVkZWYgX191X2ludCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19v
ZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2xvZmZfdDsKdHlwZWRlZiBpbnQg
X19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBlZGVmIF9fdV9s
b25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsK
dHlwZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewog
ICAgaW50IF9fdmFsWzJdOwogIH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQg
X19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlwZWRlZiBs
b25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191c2Vj
b25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVk
ZWYgbG9uZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Ns
b2NrX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZkX21hc2s7
CgoKIyAxMDIgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKdHlwZWRl
ZiBzdHJ1Y3QKICB7CgoKCgoKCiAgICBfX2ZkX21hc2sgX19mZHNfYml0c1sx
MDI0IC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpXTsKCgogIH0gX19mZF9z
ZXQ7CgoKdHlwZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2lnbmVk
IHNob3J0IGludCBfX2lwY19waWRfdDsKCgoKdHlwZWRlZiBsb25nIGludCBf
X2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsK
dHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3Vf
bG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxr
Y250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlw
ZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191
X2xvbmcgX19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90
OwoKCnR5cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBpbnQg
X19pbnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5f
dDsKCgoKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgp0
eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9z
aG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25n
IHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191
X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoK
dHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBp
bm9fdDsKIyA1OCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVk
ZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsK
CgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25s
aW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoK
Cgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CiMgOTYgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBl
ZGVmIF9faWRfdCBpZF90OwoKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVf
dDsKCgoKCnR5cGVkZWYgX19kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19j
YWRkcl90IGNhZGRyX3Q7CgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKIyAx
MjUgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDcxICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAxIDMKdHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7Cgoj
IDEyNSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKIyAxMzkgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoKCgp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1
c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CiMgMTgyICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBpbnQgaW50OF90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIGlu
dCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkp
Owp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19TSV9fKSkpOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKCnR5cGVkZWYgdW5zaWduZWQg
aW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9f
KSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQg
aW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lf
XykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKdHlwZWRlZiBpbnQgcmVn
aXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkp
OwoKCgoKCgoKCgoKCiMgMzggIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAz
CiMgMjA1ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgojIDMy
ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMKCgoKIyAyMyAiL3Vz
ci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwp0eXBlZGVmIGludCBfX3Np
Z19hdG9taWNfdDsKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWdu
ZWQgbG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWdu
ZWQgbG9uZyBpbnQpKSldOwogIH0gX19zaWdzZXRfdDsKCiMgMzUgIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgoKIyA4MyAiL3Vzci9pbmNs
dWRlL3RpbWUuaCIgMSAzCnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIGxvbmcg
aW50IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7CiAgfTsKCiMgMzkg
Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgoKCgoKc3RydWN0
IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKCnR5cGVk
ZWYgX19mZF9zZXQgZmRfc2V0OwoKCiMgNzQgIi91c3IvaW5jbHVkZS9zeXMv
c2VsZWN0LmgiIDMKZXh0ZXJuIGludCBfX3NlbGVjdCAoaW50IF9fbmZkcywg
X19mZF9zZXQgKl9fcmVhZGZkcywKICAgICAgICAgICAgICAgICAgICAgX19m
ZF9zZXQgKl9fd3JpdGVmZHMsIF9fZmRfc2V0ICpfX2V4Y2VwdGZkcywKICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCk7
CmV4dGVybiBpbnQgc2VsZWN0IChpbnQgX19uZmRzLCBfX2ZkX3NldCAqX19y
ZWFkZmRzLAogICAgICAgICAgICAgICAgICAgX19mZF9zZXQgKl9fd3JpdGVm
ZHMsIF9fZmRfc2V0ICpfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAg
IHN0cnVjdCB0aW1ldmFsICpfX3RpbWVvdXQpOwoKIyA5MiAiL3Vzci9pbmNs
dWRlL3N5cy9zZWxlY3QuaCIgMwojIDIwOCAiL3Vzci9pbmNsdWRlL3N5cy90
eXBlcy5oIiAyIDMKCgoKIyAyMjIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMwp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYg
X19mc2Jsa2NudF90IGZzYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2ZpbGNu
dF90IGZzZmlsY250X3Q7CiMgMjU0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMKIyAzOTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoK
CmV4dGVybiBpbnQzMl90IHJhbmRvbSAodm9pZCk7CgoKZXh0ZXJuIHZvaWQg
c3JhbmRvbSAodW5zaWduZWQgaW50IF9fc2VlZCk7CgoKCgoKZXh0ZXJuIGNo
YXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19z
dGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3Rh
dGVsZW4pOwoKCgpleHRlcm4gY2hhciAqc2V0c3RhdGUgKGNoYXIgKl9fc3Rh
dGVidWYpOwoKCgoKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50
MzJfdCAqZnB0cjsKICAgIGludDMyX3QgKnJwdHI7CiAgICBpbnQzMl90ICpz
dGF0ZTsKICAgIGludCByYW5kX3R5cGU7CiAgICBpbnQgcmFuZF9kZWc7CiAg
ICBpbnQgcmFuZF9zZXA7CiAgICBpbnQzMl90ICplbmRfcHRyOwogIH07Cgpl
eHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVz
dHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKl9f
cmVzdHJpY3QgX19yZXN1bHQpOwoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVu
c2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYp
OwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50IF9fc2Vl
ZCwgY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVm
KTsKCmV4dGVybiBpbnQgc2V0c3RhdGVfciAoY2hhciAqX19yZXN0cmljdCBf
X3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5k
b21fZGF0YSAqX19yZXN0cmljdCBfX2J1Zik7CgoKCgoKZXh0ZXJuIGludCBy
YW5kICh2b2lkKTsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQg
X19zZWVkKTsKCgoKZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGludCAq
X19zZWVkKTsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCk7
CmV4dGVybiBkb3VibGUgZXJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9f
eHN1YmlbM10pOwoKCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKTsK
ZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBf
X3hzdWJpWzNdKTsKCgpleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCk7
CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQg
X194c3ViaVszXSk7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQg
X19zZWVkdmFsKTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCAqc2VlZDQ4
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKTsKZXh0ZXJuIHZv
aWQgbGNvbmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10pOwoK
CnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBp
bnQgeFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBhWzNdOwogICAgdW5z
aWduZWQgc2hvcnQgaW50IGM7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgb2xk
X3hbM107CiAgICBpbnQgaW5pdDsKICB9OwoKCgpleHRlcm4gaW50IGRyYW5k
NDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZl
ciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBf
X3Jlc3VsdCk7CmV4dGVybiBpbnQgZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9y
dCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpOwoK
CmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf
X3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9u
ZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpOwpleHRlcm4gaW50IG5yYW5k
NDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0
IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9f
cmVzdHJpY3QgX19yZXN1bHQpOwoKCmV4dGVybiBpbnQgbXJhbmQ0OF9yIChz
dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAg
ICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1
bHQpOwpleHRlcm4gaW50IGpyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50
IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJh
bmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpOwoKCmV4
dGVybiBpbnQgc3JhbmQ0OF9yIChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKQo7CgpleHRlcm4gaW50IHNlZWQ0
OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcik7
CgpleHRlcm4gaW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9f
cGFyYW1bN10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICpfX2J1ZmZlcik7CiMgNTI1ICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19h
dHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxs
b2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxv
YyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18g
KChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0
cik7CgoKCmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0cik7CgoKCgoj
IDI2ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwoKCgoKCgoKZXh0ZXJu
IHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSk7CgoKCgoKIyA1NDUgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFs
bG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2Nf
XykpOwojIDU1OSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2
b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9p
ZCkpOwoKCgoKZXh0ZXJuIGludCBfX29uX2V4aXQgKHZvaWQgKCpfX2Z1bmMp
IChpbnQgX19zdGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCjsK
ZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3Rh
dHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQo7CgoKCgoKZXh0ZXJu
IHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3JldHVybl9fKSk7CgojIDU4NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKTsK
CgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFy
ICpfX25hbWUpOwoKCgoKCmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0
cmluZyk7CgoKCgoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAq
X19uYW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2Up
CjsKCgpleHRlcm4gdm9pZCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25h
bWUpOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lkKTsKIyA2MjMg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWt0ZW1w
IChjaGFyICpfX3RlbXBsYXRlKTsKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1w
IChjaGFyICpfX3RlbXBsYXRlKTsKIyA2MzkgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMwpleHRlcm4gY2hhciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0
ZSk7CgoKCgpleHRlcm4gaW50IHN5c3RlbSAoX19jb25zdCBjaGFyICpfX2Nv
bW1hbmQpOwoKCiMgNjYxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0
ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJp
Y3QgX19yZXNvbHZlZCk7CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJf
Zm5fdCkgKF9fY29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZvaWQgKik7CgoKCgoK
CgoKZXh0ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXks
IF9fY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3Qg
X19jb21wYXIpOwoKCgpleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19iYXNl
LCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAg
ICAgICAgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gaW50
IGFicyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpl
eHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CiMgNjk5ICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBfX2Rl
bm9tKQogX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRp
dl90IGxkaXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20p
CiBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNzE3ICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0
LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbik7
CgoKCgpleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBf
X25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAg
ICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKTsKCgoKCmV4dGVybiBj
aGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFy
ICpfX2J1Zik7CgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24p
OwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGlu
dCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJp
Y3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbik7CmV4dGVybiBj
aGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0
LCBjaGFyICpfX2J1Zik7CgoKCgoKZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJs
ZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2Rl
Y3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
biwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAg
IHNpemVfdCBfX2xlbik7CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192
YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwK
ICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNo
YXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19sZW4pOwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24s
CiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwg
c2l6ZV90IF9fbGVuKTsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJs
ZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAg
aW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3Np
Z24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1
Ziwgc2l6ZV90IF9fbGVuKTsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19j
b25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pOwoKCmV4dGVybiBpbnQgbWJ0
b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAgICAg
ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9f
bik7CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywgd2NoYXJfdCBf
X3djaGFyKTsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAq
X19yZXN0cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pOwoKZXh0
ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0
cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCjsKCgoKCgoKCmV4dGVybiBpbnQg
cnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKTsKIyA4MzkgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IGdldGxvYWRhdmcg
KGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pOwoKCgoKCiMgMTYg
Ii4uL3J1bnRpbWUvbWVyY3VyeV9zdGQuaCIgMgoKIyA1OCAiL3Vzci9pbmNs
dWRlL2Fzc2VydC5oIiAxIDMKCgoKZXh0ZXJuIHZvaWQgX19hc3NlcnRfZmFp
bCAoX19jb25zdCBjaGFyICpfX2Fzc2VydGlvbiwgX19jb25zdCBjaGFyICpf
X2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBfX2xpbmUsIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikKIF9fYXR0cmli
dXRlX18gKChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gdm9pZCBfX2Fzc2Vy
dF9wZXJyb3JfZmFpbCAoaW50IF9fZXJybnVtLCBfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pCiBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7CgojIDE3ICIuLi9ydW50aW1lL21lcmN1cnlf
c3RkLmgiIDIKCiMgMjkgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMKIyA0
NyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZW51bQp7CiAgX0lTdXBwZXIg
PSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDogKCgxIDw8ICgwKSkg
Pj4gOCkpLAogIF9JU2xvd2VyID0gKCgxKSA8IDggPyAoKDEgPDwgKDEpKSA8
PCA4KSA6ICgoMSA8PCAoMSkpID4+IDgpKSwKICBfSVNhbHBoYSA9ICgoMikg
PCA4ID8gKCgxIDw8ICgyKSkgPDwgOCkgOiAoKDEgPDwgKDIpKSA+PiA4KSks
CiAgX0lTZGlnaXQgPSAoKDMpIDwgOCA/ICgoMSA8PCAoMykpIDw8IDgpIDog
KCgxIDw8ICgzKSkgPj4gOCkpLAogIF9JU3hkaWdpdCA9ICgoNCkgPCA4ID8g
KCgxIDw8ICg0KSkgPDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4KSksCiAgX0lT
c3BhY2UgPSAoKDUpIDwgOCA/ICgoMSA8PCAoNSkpIDw8IDgpIDogKCgxIDw8
ICg1KSkgPj4gOCkpLAogIF9JU3ByaW50ID0gKCg2KSA8IDggPyAoKDEgPDwg
KDYpKSA8PCA4KSA6ICgoMSA8PCAoNikpID4+IDgpKSwKICBfSVNncmFwaCA9
ICgoNykgPCA4ID8gKCgxIDw8ICg3KSkgPDwgOCkgOiAoKDEgPDwgKDcpKSA+
PiA4KSksCiAgX0lTYmxhbmsgPSAoKDgpIDwgOCA/ICgoMSA8PCAoOCkpIDw8
IDgpIDogKCgxIDw8ICg4KSkgPj4gOCkpLAogIF9JU2NudHJsID0gKCg5KSA8
IDggPyAoKDEgPDwgKDkpKSA8PCA4KSA6ICgoMSA8PCAoOSkpID4+IDgpKSwK
ICBfSVNwdW5jdCA9ICgoMTApIDwgOCA/ICgoMSA8PCAoMTApKSA8PCA4KSA6
ICgoMSA8PCAoMTApKSA+PiA4KSksCiAgX0lTYWxudW0gPSAoKDExKSA8IDgg
PyAoKDEgPDwgKDExKSkgPDwgOCkgOiAoKDEgPDwgKDExKSkgPj4gOCkpCn07
CiMgNzUgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBfX2NvbnN0
IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwpleHRlcm4gX19jb25z
dCBfX2ludDMyX3QgKl9fY3R5cGVfdG9sb3dlcjsKZXh0ZXJuIF9fY29uc3Qg
X19pbnQzMl90ICpfX2N0eXBlX3RvdXBwZXI7CgojIDkxICIvdXNyL2luY2x1
ZGUvY3R5cGUuaCIgMwpleHRlcm4gaW50IGlzYWxudW0gKGludCk7CmV4dGVy
biBpbnQgaXNhbHBoYSAoaW50KTsKZXh0ZXJuIGludCBpc2NudHJsIChpbnQp
OwpleHRlcm4gaW50IGlzZGlnaXQgKGludCk7CmV4dGVybiBpbnQgaXNsb3dl
ciAoaW50KTsKZXh0ZXJuIGludCBpc2dyYXBoIChpbnQpOwpleHRlcm4gaW50
IGlzcHJpbnQgKGludCk7CmV4dGVybiBpbnQgaXNwdW5jdCAoaW50KTsKZXh0
ZXJuIGludCBpc3NwYWNlIChpbnQpOwpleHRlcm4gaW50IGlzdXBwZXIgKGlu
dCk7CmV4dGVybiBpbnQgaXN4ZGlnaXQgKGludCk7CgoKCgoKCgpleHRlcm4g
aW50IHRvbG93ZXIgKGludCBfX2MpOwoKCmV4dGVybiBpbnQgdG91cHBlciAo
aW50IF9fYyk7CgoKCgoKCmV4dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYyk7
CgoKCmV4dGVybiBpbnQgdG9hc2NpaSAoaW50IF9fYyk7CgoKCmV4dGVybiBp
bnQgX3RvdXBwZXIgKGludCk7CmV4dGVybiBpbnQgX3RvbG93ZXIgKGludCk7
CiMgMTY4ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwpleHRlcm4gX19pbmxp
bmUgaW50CnRvbG93ZXIgKGludCBfX2MpCnsKICByZXR1cm4gX19jID49IC0x
MjggJiYgX19jIDwgMjU2ID8gX19jdHlwZV90b2xvd2VyW19fY10gOiBfX2M7
Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91cHBlciAoaW50IF9fYykKewog
IHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyBfX2N0eXBlX3Rv
dXBwZXJbX19jXSA6IF9fYzsKfQojIDI3NyAiL3Vzci9pbmNsdWRlL2N0eXBl
LmgiIDMKIyAxOCAiLi4vcnVudGltZS9tZXJjdXJ5X3N0ZC5oIiAyCiMgNDYg
Ii4uL3J1bnRpbWUvbWVyY3VyeV9pbXAuaCIgMgoKIyAxNCAiLi4vcnVudGlt
ZS9tZXJjdXJ5X2RlYnVnLmgiIDEKIyAyOSAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDEgMwoKCgoKCgoKCgoKIyA0MyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUvc3RkYXJnLmgiIDEgMwp0eXBl
ZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDM5ICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNDggIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CgojIDU4
ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDMxICIvdXNyL2luY2x1ZGUv
bGliaW8uaCIgMSAzCiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MSAzCiMgMzEyICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4
LzIuOTYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCnR5cGVkZWYgdW5zaWduZWQg
aW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAy
IDMKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgNDYgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA2MiAiL3Vzci9pbmNsdWRlL3dj
aGFyLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVu
aW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07
CiAgfSBfX3ZhbHVlOwp9IF9fbWJzdGF0ZV90OwojIDI1ICIvdXNyL2luY2x1
ZGUvX0dfY29uZmlnLmgiIDIgMwoKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2Zm
X3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7
CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19wb3M7CiAgX19tYnN0
YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NSAiL3Vzci9pbmNs
dWRlL19HX2NvbmZpZy5oIiAzCiMgMjkgIi91c3IvaW5jbHVkZS9nY29udi5o
IiAxIDMKIyA0NiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDI5ICIv
dXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKCgplbnVtCnsKICBfX0dD
T05WX09LID0gMCwKICBfX0dDT05WX05PQ09OViwKICBfX0dDT05WX05PREIs
CiAgX19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwKICBf
X0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwK
ICBfX0dDT05WX0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxMRUdB
TF9ERVNDUklQVE9SLAogIF9fR0NPTlZfSU5URVJOQUxfRVJST1IKfTsKCgoK
ZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAxLAogIF9fR0NPTlZf
SUdOT1JFX0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29udl9z
dGVwOwpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7CnN0cnVjdCBfX2djb252
X2xvYWRlZF9vYmplY3Q7CnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGE7CgoK
CnR5cGVkZWYgaW50ICgqX19nY29udl9mY3QpIChzdHJ1Y3QgX19nY29udl9z
dGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7
CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2luaXRfZmN0KSAoc3RydWN0IF9f
Z2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9lbmRfZmN0
KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpf
X2djb252X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfX2djb252
X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVk
ZWYgaW50ICgqX19nY29udl90cmFuc19jb250ZXh0X2ZjdCkgKHN0cnVjdCBf
X2djb252X3RyYW5zX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNo
YXIgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2Zj
dCkgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKioqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoK
CnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQg
KiosIGNvbnN0IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJh
bnNfZW5kX2ZjdCkgKHZvaWQgKik7CgpzdHJ1Y3QgX19nY29udl90cmFuc19k
YXRhCnsKCiAgX19nY29udl90cmFuc19mY3QgX190cmFuc19mY3Q7CiAgX19n
Y29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0Owog
IF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9p
ZCAqX19kYXRhOwogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fbmV4
dDsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcAp7CiAgc3RydWN0IF9fZ2Nv
bnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9oYW5kbGU7CiAgX19jb25zdCBj
aGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7CgogIF9fY29uc3Qg
Y2hhciAqX19mcm9tX25hbWU7CiAgX19jb25zdCBjaGFyICpfX3RvX25hbWU7
CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19p
bml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGlu
dCBfX21pbl9uZWVkZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207
CiAgaW50IF9fbWluX25lZWRlZF90bzsKICBpbnQgX19tYXhfbmVlZGVkX3Rv
OwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0YTsKfTsKCgoK
c3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpf
X291dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBp
bnQgX19mbGFnczsKCgoKICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoK
CiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBfX21ic3RhdGVfdCAqX19zdGF0
ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3QgX19nY29u
dl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBf
X2djb252X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19n
Y29udl9zdGVwICpfX3N0ZXBzOwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9f
Z2NvbnZfc3RlcF9kYXRhIF9fZGF0YVswXTsKfSAqX19nY29udl90OwoKIyA0
NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKdHlwZWRlZiB1bmlv
bgp7CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsK
ICAgIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2dj
b252X3N0ZXBfZGF0YSBfX2RhdGE7CiAgfSBfX2NvbWJpbmVkOwp9IF9HX2lj
b252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVm
IHVuc2lnbmVkIGludCBfR191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWlu
dDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7Cgoj
IDMxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgNTEgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAzCiMgMTU2ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIg
MwpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwoKCgoKCgoK
Cgp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX21h
cmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBf
SU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTg5ICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3VsdAp7
CiAgX19jb2RlY3Z0X29rLAogIF9fY29kZWN2dF9wYXJ0aWFsLAogIF9fY29k
ZWN2dF9lcnJvciwKICBfX2NvZGVjdnRfbm9jb252Cn07CgoKCnN0cnVjdCBf
SU9fY29kZWN2dAp7CiAgdm9pZCAoKl9fY29kZWN2dF9kZXN0cikgKHN0cnVj
dCBfSU9fY29kZWN2dCAqKTsKICBlbnVtIF9fY29kZWN2dF9yZXN1bHQgKCpf
X2NvZGVjdnRfZG9fb3V0KSAoc3RydWN0IF9JT19jb2RlY3Z0ICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbWJz
dGF0ZV90ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHdjaGFyX3QgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB3Y2hhcl90ICoqLCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgY2hhciAqKik7CiAg
ZW51bSBfX2NvZGVjdnRfcmVzdWx0ICgqX19jb2RlY3Z0X2RvX3Vuc2hpZnQp
IChzdHJ1Y3QgX0lPX2NvZGVjdnQgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbWJzdGF0ZV90ICosIGNo
YXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKiwgY2hhciAqKik7CiAgZW51bSBfX2NvZGVjdnRf
cmVzdWx0ICgqX19jb2RlY3Z0X2RvX2luKSAoc3RydWN0IF9JT19jb2RlY3Z0
ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19tYnN0YXRlX3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICoqLCB3Y2hhcl90ICosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqLCB3Y2hhcl90ICoq
KTsKICBpbnQgKCpfX2NvZGVjdnRfZG9fZW5jb2RpbmcpIChzdHJ1Y3QgX0lP
X2NvZGVjdnQgKik7CiAgaW50ICgqX19jb2RlY3Z0X2RvX2Fsd2F5c19ub2Nv
bnYpIChzdHJ1Y3QgX0lPX2NvZGVjdnQgKik7CiAgaW50ICgqX19jb2RlY3Z0
X2RvX2xlbmd0aCkgKHN0cnVjdCBfSU9fY29kZWN2dCAqLCBfX21ic3RhdGVf
dCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKICBpbnQgKCpfX2NvZGVjdnRf
ZG9fbWF4X2xlbmd0aCkgKHN0cnVjdCBfSU9fY29kZWN2dCAqKTsKCiAgX0df
aWNvbnZfdCBfX2NkX2luOwogIF9HX2ljb252X3QgX19jZF9vdXQ7Cn07CgoK
c3RydWN0IF9JT193aWRlX2RhdGEKewogIHdjaGFyX3QgKl9JT19yZWFkX3B0
cjsKICB3Y2hhcl90ICpfSU9fcmVhZF9lbmQ7CiAgd2NoYXJfdCAqX0lPX3Jl
YWRfYmFzZTsKICB3Y2hhcl90ICpfSU9fd3JpdGVfYmFzZTsKICB3Y2hhcl90
ICpfSU9fd3JpdGVfcHRyOwogIHdjaGFyX3QgKl9JT193cml0ZV9lbmQ7CiAg
d2NoYXJfdCAqX0lPX2J1Zl9iYXNlOwogIHdjaGFyX3QgKl9JT19idWZfZW5k
OwoKICB3Y2hhcl90ICpfSU9fc2F2ZV9iYXNlOwogIHdjaGFyX3QgKl9JT19i
YWNrdXBfYmFzZTsKCiAgd2NoYXJfdCAqX0lPX3NhdmVfZW5kOwoKICBfX21i
c3RhdGVfdCBfSU9fc3RhdGU7CiAgX19tYnN0YXRlX3QgX0lPX2xhc3Rfc3Rh
dGU7CiAgc3RydWN0IF9JT19jb2RlY3Z0IF9jb2RlY3Z0OwoKICB3Y2hhcl90
IF9zaG9ydGJ1ZlsxXTsKCiAgc3RydWN0IF9JT19qdW1wX3QgKl93aWRlX3Z0
YWJsZTsKfTsKCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoK
CiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsK
ICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNl
OwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2Vu
ZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7
CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9i
YXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJr
ZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAg
aW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9v
ZmZzZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2ln
bmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07
CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMgMjk5ICIvdXNyL2luY2x1ZGUv
bGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKICBzdHJ1Y3QgX0lP
X2NvZGVjdnQgKl9jb2RlY3Z0OwogIHN0cnVjdCBfSU9fd2lkZV9kYXRhICpf
d2lkZV9kYXRhOwogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAq
IHNpemVvZiAoaW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0
eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lP
X0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9f
Ml8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18y
XzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18y
XzFfc3RkZXJyXzsKIyAzMzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5
cGVkZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUs
IGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRl
ZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29raWUsIF9f
Y29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19z
ZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50
IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9pZCAqX19j
b29raWUpOwoKCiMgMzg1ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRl
cm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKTsKZXh0ZXJuIGludCBf
X3VmbG93IChfSU9fRklMRSAqKTsKZXh0ZXJuIGludCBfX292ZXJmbG93IChf
SU9fRklMRSAqLCBpbnQpOwpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAo
X0lPX0ZJTEUgKik7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxF
ICopOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3
aW50X3QpOwoKIyA0MTUgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVy
biBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKTsKZXh0ZXJuIGludCBf
SU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApOwpleHRlcm4gd2lu
dF90IF9JT19nZXR3YyAoX0lPX0ZJTEUgKl9fZnApOwpleHRlcm4gd2ludF90
IF9JT19wdXR3YyAod2NoYXJfdCBfX3djLCBfSU9fRklMRSAqX19mcCk7CmV4
dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxFICpfX2ZwKTsKZXh0ZXJuIGlu
dCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCk7CgpleHRlcm4gaW50IF9J
T19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKTsKCmV4dGVybiBpbnQg
X0lPX2Z3aWRlIChfSU9fRklMRSAqX19mcCwgaW50IF9fbW9kZSk7CiMgNDQ2
ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gdm9pZCBfSU9fZmxv
Y2tmaWxlIChfSU9fRklMRSAqKTsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tm
aWxlIChfSU9fRklMRSAqKTsKZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxl
IChfSU9fRklMRSAqKTsKCiMgNDYxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIg
MwpleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJp
Y3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAg
ICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KTsKZXh0
ZXJuIGludCBfSU9fdmZ3c2NhbmYgKF9JT19GSUxFICogX19yZXN0cmljdCwg
Y29uc3Qgd2NoYXJfdCAqIF9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KTsKZXh0
ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBj
b25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgX19nbnVjX3ZhX2xpc3QpOwpleHRlcm4gaW50IF9JT192ZndwcmludGYg
KF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCB3Y2hhcl90ICpfX3Jlc3Ry
aWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0
KTsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwgaW50
LCBfX3NzaXplX3QpOwpleHRlcm4gX19zc2l6ZV90IF9JT193cGFkbiAoX0lP
X0ZJTEUgKiwgd2ludF90LCBfX3NzaXplX3QpOwpleHRlcm4gc2l6ZV90IF9J
T19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpOwoKZXh0ZXJu
IF9fb2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90
LCBpbnQsIGludCk7CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9J
T19GSUxFICosIF9fb2ZmNjRfdCwgaW50KTsKCmV4dGVybiB2b2lkIF9JT19m
cmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKTsKZXh0ZXJuIHZvaWQgX0lP
X2ZyZWVfd2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKTsKCiMgNTggIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKdHlwZWRlZiBfR19mcG9zX3QgZnBv
c190OwojIDExMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKZXh0ZXJu
IEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRlcm4gRklM
RSAqc3RkZXJyOwoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoX19jb25zdCBj
aGFyICpfX2ZpbGVuYW1lKTsKCmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0
IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KTsKCgoKCmV4dGVy
biBGSUxFICp0bXBmaWxlICh2b2lkKTsKIyAxNDIgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcyk7CgoK
CgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcyk7CiMgMTU5ICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdGVtcG5hbSAo
X19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkKIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZj
bG9zZSAoRklMRSAqX19zdHJlYW0pOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJ
TEUgKl9fc3RyZWFtKTsKCgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQg
KEZJTEUgKl9fc3RyZWFtKTsKIyAxODIgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpOwoKZXh0ZXJuIEZJTEUgKmZyZW9w
ZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKTsKIyAyMTIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4
dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9f
bW9kZXMpOwojIDIzMiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu
IHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFy
ICpfX3Jlc3RyaWN0IF9fYnVmKTsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9f
YnVmLAogICAgICAgICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3Qg
X19uKTsKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplKTsKCgpleHRlcm4gdm9p
ZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSk7CgoKCgpleHRlcm4gaW50
IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCAuLi4pOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAo
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKCmV4dGVy
biBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgIF9fZ251Y192YV9saXN0IF9fYXJnKTsKCmV4dGVybiBpbnQgdnByaW50
ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNf
dmFfbGlzdCBfX2FyZykKOwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAq
X19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19h
cmcpOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoK
ZXh0ZXJuIGludCBfX3ZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3Ms
IHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlz
dCBfX2FyZykKIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50
Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19y
ZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19n
bnVjX3ZhX2xpc3QgX19hcmcpCiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRf
XyAoX19wcmludGZfXywgMywgMCkpKTsKIyAzMDYgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBzY2FuZiAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0
ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
CiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLik7CgojIDMzMiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDMKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pOwpleHRlcm4g
aW50IGdldGMgKEZJTEUgKl9fc3RyZWFtKTsKCgpleHRlcm4gaW50IGdldGNo
YXIgKHZvaWQpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChG
SUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAo
dm9pZCk7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpf
X3N0cmVhbSk7CgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYyk7CgoK
CgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSk7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGlu
dCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGludCBwdXRjaGFyX3Vu
bG9ja2VkIChpbnQgX19jKTsKCgoKCgpleHRlcm4gaW50IGdldHcgKEZJTEUg
Kl9fc3RyZWFtKTsKCgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUg
Kl9fc3RyZWFtKTsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19y
ZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0pCjsKCiMgMzk4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4g
Y2hhciAqZ2V0cyAoY2hhciAqX19zKTsKCgojIDQyMiAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKOwoK
CgoKCgoKCmV4dGVybiBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpOwoK
CgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0p
OwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jlc3RyaWN0IF9f
cHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCmV4dGVybiBz
aXplX3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIs
IHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcyk7CgoKCmV4dGVybiBzaXplX3Qg
ZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVf
dCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwpleHRlcm4gc2l6
ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0
IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSk7CgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9u
ZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSk7CgpleHRlcm4gbG9uZyBpbnQg
ZnRlbGwgKEZJTEUgKl9fc3RyZWFtKTsKCmV4dGVybiB2b2lkIHJld2luZCAo
RklMRSAqX19zdHJlYW0pOwoKCgoKCgoKIyA0OTIgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSwgZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQo7CgpleHRl
cm4gaW50IGZzZXRwb3MgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3Nf
dCAqX19wb3MpOwojIDUyOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0
ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9fc3RyZWFtKTsKCmV4dGVybiBp
bnQgZmVvZiAoRklMRSAqX19zdHJlYW0pOwoKZXh0ZXJuIGludCBmZXJyb3Ig
KEZJTEUgKl9fc3RyZWFtKTsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5s
b2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGludCBmZW9mX3VubG9j
a2VkIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZmVycm9yX3VubG9j
a2VkIChGSUxFICpfX3N0cmVhbSk7CgoKCgpleHRlcm4gdm9pZCBwZXJyb3Ig
KF9fY29uc3QgY2hhciAqX19zKTsKCgoKCmV4dGVybiBpbnQgc3lzX25lcnI7
CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lzX2Vycmxpc3RbXTsK
IyA1NTkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZmls
ZW5vIChGSUxFICpfX3N0cmVhbSk7CgoKCgpleHRlcm4gaW50IGZpbGVub191
bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwoKCgoKCgpleHRlcm4gRklMRSAq
cG9wZW4gKF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIg
Kl9fbW9kZXMpOwoKCmV4dGVybiBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVh
bSk7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcyk7CiMg
NjA2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBmbG9j
a2ZpbGUgKEZJTEUgKl9fc3RyZWFtKTsKCgoKZXh0ZXJuIGludCBmdHJ5bG9j
a2ZpbGUgKEZJTEUgKl9fc3RyZWFtKTsKCgpleHRlcm4gdm9pZCBmdW5sb2Nr
ZmlsZSAoRklMRSAqX19zdHJlYW0pOwojIDYyOCAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAz
CmV4dGVybiBfX2lubGluZSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewogIHJl
dHVybiB2ZnByaW50ZiAoc3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKZXh0
ZXJuIF9faW5saW5lIGludApnZXRjaGFyICh2b2lkKQp7CiAgcmV0dXJuIF9J
T19nZXRjIChzdGRpbik7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0
Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAoKF9fZnApLT5f
SU9fcmVhZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93
IChfX2ZwKSA6ICoodW5zaWduZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFk
X3B0cisrKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y2hhcl91bmxv
Y2tlZCAodm9pZCkKewogIHJldHVybiAoKHN0ZGluKS0+X0lPX3JlYWRfcHRy
ID49IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGluKSA6
ICoodW5zaWduZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7
Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y2hhciAoaW50IF9fYykK
ewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQpOwp9CgoKCgpleHRl
cm4gX19pbmxpbmUgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0
ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJm
bG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNp
Z25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChf
X2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNfdW5sb2Nr
ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9f
c3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3Jp
dGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hh
cikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lP
X3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmV4dGVybiBfX2lubGluZSBp
bnQKcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykKewogIHJldHVybiAoKChz
dGRvdXQpLT5fSU9fd3JpdGVfcHRyID49IChzdGRvdXQpLT5fSU9fd3JpdGVf
ZW5kKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwgKHVuc2lnbmVkIGNoYXIpIChf
X2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5fSU9fd3JpdGVf
cHRyKysgPSAoX19jKSkpOwp9CiMgMTEwICIvdXNyL2luY2x1ZGUvYml0cy9z
dGRpby5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKZmVvZl91bmxvY2tlZCAo
RklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxh
Z3MgJiAweDEwKSAhPSAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZmVy
cm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChf
X3N0cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgNjI4ICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKIyAxNCAiLi4vcnVudGltZS9tZXJj
dXJ5X2RlYnVnLmgiIDIKIyAxODAgIi4uL3J1bnRpbWUvbWVyY3VyeV9kZWJ1
Zy5oIgpleHRlcm4gdm9pZCBwcmludGRldHN0YWNrKGNvbnN0IFdvcmQgKnMp
OwpleHRlcm4gdm9pZCBNUl9wcmludGRldHN0YWNrcHRyKGNvbnN0IFdvcmQg
KnMpOwpleHRlcm4gdm9pZCBNUl9wcmludF9kZXRzdGFja3B0cihGSUxFICpm
cCwgY29uc3QgV29yZCAqcyk7CmV4dGVybiB2b2lkIHByaW50bm9uZHN0YWNr
KGNvbnN0IFdvcmQgKnMpOwpleHRlcm4gdm9pZCBNUl9wcmludG5vbmRzdGFj
a3B0cihjb25zdCBXb3JkICpzKTsKZXh0ZXJuIHZvaWQgTVJfcHJpbnRfbm9u
ZHN0YWNrcHRyKEZJTEUgKmZwLCBjb25zdCBXb3JkICpzKTsKZXh0ZXJuIHZv
aWQgTVJfcHJpbnRfaGVhcHB0cihGSUxFICpmcCwgY29uc3QgV29yZCAqcyk7
CmV4dGVybiB2b2lkIE1SX3ByaW50X2xhYmVsKEZJTEUgKmZwLCBDb2RlICp3
KTsKZXh0ZXJuIHZvaWQgcHJpbnRsYWJlbCggQ29kZSAqdyk7CgoKCiMgNDcg
Ii4uL3J1bnRpbWUvbWVyY3VyeV9pbXAuaCIgMgoKCgojIDI2ICIuLi9ydW50
aW1lL21lcmN1cnlfbGlicmFyeV90eXBlcy5oIiAxCnR5cGVkZWYgc3RydWN0
IG1lcmN1cnlfZmlsZSB7CiAgICAgICAgRklMRSAqZmlsZTsKICAgICAgICBp
bnQgbGluZV9udW1iZXI7Cn0gTWVyY3VyeUZpbGU7CgoKCgoKCnR5cGVkZWYg
c3RydWN0IHsKICAgICAgICBJbnRlZ2VyIHNpemU7CiAgICAgICAgV29yZCBl
bGVtZW50c1swXTsKfSBNUl9BcnJheVR5cGU7CgojIDUwICIuLi9ydW50aW1l
L21lcmN1cnlfaW1wLmgiIDIKCiMgMTMgIi4uL3J1bnRpbWUvbWVyY3VyeV9z
dHJpbmcuaCIgMQojIDI4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwoK
CgoKCgoKCgpleHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0
IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpf
X3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKTsKCgpleHRlcm4gdm9pZCAq
bWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLCBz
aXplX3QgX19uKQo7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQg
Kl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywgaW50IF9fYywgc2l6ZV90
IF9fbikKOwoKCgoKZXh0ZXJuIHZvaWQgKm1lbXNldCAodm9pZCAqX19zLCBp
bnQgX19jLCBzaXplX3QgX19uKTsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19j
b25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBf
X24pCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9p
ZCAqbWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90
IF9fbikKIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKIyA3NiAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJjcHkgKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zcmMpCjsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jl
c3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbik7CgoKZXh0ZXJu
IGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKOwoKZXh0ZXJuIGNoYXIgKnN0
cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19uKTsKCgpleHRlcm4gaW50IHN0cmNtcCAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9f
Y29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm0g
KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9f
bik7CgojIDExOSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBj
aGFyICpzdHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9f
ICgoX19tYWxsb2NfXykpOwojIDE1NCAiL3Vzci9pbmNsdWRlL3N0cmluZy5o
IiAzCmV4dGVybiBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBj
aGFyICpzdHJyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgojIDE2NiAiL3Vzci9pbmNsdWRl
L3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoX19jb25zdCBj
aGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAoX19j
b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJwYnJr
IChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkK
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0
cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIg
Kl9fbmVlZGxlKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgojIDE4
OCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJ0
b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19kZWxpbSkKOwoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAo
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIp
OwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9f
cywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cik7
CiMgMjE5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIHNpemVf
dCBzdHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCiMgMjMwICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMK
ZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pOwoKCgpleHRl
cm4gY2hhciAqX19zdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9f
YnVmLCBzaXplX3QgX19idWZsZW4pOwpleHRlcm4gY2hhciAqc3RyZXJyb3Jf
ciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu
KTsKCgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90
IF9fbik7CgoKCmV4dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9f
c3JjLCB2b2lkICpfX2Rlc3QsIHNpemVfdCBfX24pOwoKCmV4dGVybiB2b2lk
IGJ6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pOwoKCmV4dGVybiBpbnQg
YmNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIs
IHNpemVfdCBfX24pCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl
eHRlcm4gY2hhciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19j
KSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAq
cmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBpbnQgX19mZnMgKGludCBf
X2kpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwpleHRlcm4gaW50IGZmcyAo
aW50IF9faSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgoKCiMgMjc1ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGludCBfX3N0cmNhc2Vj
bXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQog
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CmV4dGVybiBpbnQgc3RyY2Fz
ZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIp
CiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0
cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq
X19zMiwgc2l6ZV90IF9fbikKIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwojIDI5OSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFy
ICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVs
aW0pOwojIDM2MiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgoKCiMgMzcx
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDEgMwpleHRlcm4gdm9p
ZCAqX19yYXdtZW1jaHIgKGNvbnN0IHZvaWQgKl9fcywgaW50IF9fYyk7CiMg
Mzk1ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9f
aW5saW5lIGNoYXIgKl9fc3RyY3B5X3NtYWxsIChjaGFyICosIF9fdWludDE2
X3QsIF9fdWludDE2X3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX191aW50MzJfdCwgX191aW50MzJfdCwgc2l6ZV90KTsKZXh0
ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cmNweV9zbWFsbCAoY2hhciAqX19k
ZXN0LAogICAgICAgICAgICAgICAgX191aW50MTZfdCBfX3NyYzBfMiwgX191
aW50MTZfdCBfX3NyYzRfMiwKICAgICAgICAgICAgICAgIF9fdWludDMyX3Qg
X19zcmMwXzQsIF9fdWludDMyX3QgX19zcmM0XzQsCiAgICAgICAgICAgICAg
ICBzaXplX3QgX19zcmNsZW4pCnsKICB1bmlvbiB7CiAgICBfX3VpbnQzMl90
IF9fdWk7CiAgICBfX3VpbnQxNl90IF9fdXNpOwogICAgdW5zaWduZWQgY2hh
ciBfX3VjOwogIH0gKl9fdSA9ICh2b2lkICopIF9fZGVzdDsKICBzd2l0Y2gg
KCh1bnNpZ25lZCBpbnQpIF9fc3JjbGVuKQogICAgewogICAgY2FzZSAxOgog
ICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2Ug
MjoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBicmVhazsK
ICAgIGNhc2UgMzoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAg
ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAg
ICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDQ6
CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBicmVhazsKICAg
IGNhc2UgNToKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBf
X3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNjoKICAg
ICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0g
X19zcmM0XzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSA3OgogICAgICBfX3Ut
Pl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAo
KHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRf
MjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
Mik7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAg
Y2FzZSA4OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9f
dS0+X191aSA9IF9fc3JjNF80OwogICAgICBicmVhazsKICAgIH0KICByZXR1
cm4gX19kZXN0Owp9CiMgODcyICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcy
LmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzEgKF9f
Y29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0KTsKZXh0ZXJuIF9faW5s
aW5lIHNpemVfdApfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBj
aGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0g
MDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jl
c3VsdF0gIT0gX19yZWplY3QpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBf
X3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5f
YzIgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3Qy
KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzIgKF9fY29u
c3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIp
CnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChf
X3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3Jl
amVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDIp
CiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJu
IF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgX19yZWplY3QyLCBjaGFyIF9fcmVqZWN0Myk7
CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MzIChfX2NvbnN0
IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLAog
ICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgc2l6
ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAn
XDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QxCiAgICAgICAgICYm
IF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyICYmIF9fc1tfX3Jlc3VsdF0g
IT0gX19yZWplY3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1
bHQ7Cn0KIyA5MjcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpl
eHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MxIChfX2NvbnN0IGNo
YXIgKl9fcywgY2hhciBfX2FjY2VwdCk7CmV4dGVybiBfX2lubGluZSBzaXpl
X3QKX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNj
ZXB0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hp
bGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQpCiAgICArK19fcmVzdWx0
OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVf
dCBfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2Nl
cHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5f
YzIgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBf
X2FjY2VwdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoK
ICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19f
cmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVy
biBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNw
bl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fYWNjZXB0
MiwgY2hhciBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9f
c3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEs
IGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0MykKewogIHJlZ2lzdGVy
IHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRd
ID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0Mgog
ICAgICAgICB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAgICsr
X19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgOTgyICIvdXNyL2lu
Y2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIg
Kl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2Nl
cHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciBfX2FjY2VwdDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RycGJy
a19jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFy
IF9fYWNjZXB0MikKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3Mg
IT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyKQogICAgKytfX3M7
CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIg
KikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19z
dHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9f
YWNjZXB0MiwgY2hhciBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgY2hh
ciAqCl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19h
Y2NlcHQxLCBjaGFyIF9fYWNjZXB0MiwKICAgICAgICAgICAgICBjaGFyIF9f
YWNjZXB0MykKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0g
X19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyCiAgICAgICAgICYmICpf
X3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0g
J1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9
CiMgMTA0MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVy
biBfX2lubGluZSBjaGFyICpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNo
YXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKgpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNo
YXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYgKF9fcyA9
PSAoKHZvaWQgKikwKSkKICAgIF9fcyA9ICpfX25leHRwOwogIHdoaWxlICgq
X19zID09IF9fc2VwKQogICAgKytfX3M7CiAgaWYgKCpfX3MgPT0gJ1wwJykK
ICAgIF9fcmVzdWx0ID0gKCh2b2lkICopMCk7CiAgZWxzZQogICAgewogICAg
ICBfX3Jlc3VsdCA9IF9fczsKICAgICAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAm
JiAqX19zICE9IF9fc2VwKQogICAgICAgICsrX19zOwogICAgICBpZiAoKl9f
cyA9PSAnXDAnKQogICAgICAgICpfX25leHRwID0gX19zOwogICAgICBlbHNl
CiAgICAgICAgewogICAgICAgICAgKl9fcyA9ICdcMCc7CiAgICAgICAgICAq
X19uZXh0cCA9IF9fcyArIDE7CiAgICAgICAgfQogICAgfQogIHJldHVybiBf
X3Jlc3VsdDsKfQojIDEwOTMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMWMgKGNoYXIg
KipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAq
Cl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAg
cmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZh
bCA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICop
MCk7CiAgaWYgKCpfX3JldHZhbCA9PSBfX3JlamVjdCkKICAgICooKl9fcykr
KyA9ICdcMCc7CiAgZWxzZQogICAgaWYgKCgqX19zID0gKF9fZXh0ZW5zaW9u
X18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChfX3JlamVjdCkgJiYgKF9fcmVq
ZWN0KSA9PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKF9fcmV0dmFs
LCBfX3JlamVjdCkgOiBzdHJjaHIgKF9fcmV0dmFsLCBfX3JlamVjdCkpKSkg
IT0gKCh2b2lkICopMCkpCiAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICBl
bHNlCiAgICAgICpfX3MgPSAoKHZvaWQgKikwKTsKICByZXR1cm4gX19yZXR2
YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8yYyAoY2hh
ciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKTsKZXh0
ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywg
Y2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIg
Y2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZv
aWQgKikwKSkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCk7CiAgaWYg
KCpfX3JldHZhbCA9PSBfX3JlamVjdDEgfHwgKl9fcmV0dmFsID09IF9fcmVq
ZWN0MikKICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAgewogICAg
ICByZWdpc3RlciBjaGFyICpfX2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxl
ICgqX19jcCAhPSAnXDAnICYmICpfX2NwICE9IF9fcmVqZWN0MSAmJiAqX19j
cCAhPSBfX3JlamVjdDIpCiAgICAgICAgKytfX2NwOwogICAgICBpZiAoKl9f
Y3AgIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAgICAqX19zID0gX19jcDsK
ICAgICAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICAgICAgfQogICAgICBl
bHNlCiAgICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwogICAgfQogIHJldHVy
biBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2Vw
XzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVj
dDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBf
X3JlamVjdDMpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzNj
IChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIs
IGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwg
PSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSkKICAgIHJl
dHVybiAqX19zID0gKCh2b2lkICopMCk7CiAgaWYgKCpfX3JldHZhbCA9PSBf
X3JlamVjdDEgfHwgKl9fcmV0dmFsID09IF9fcmVqZWN0MgogICAgICB8fCAq
X19yZXR2YWwgPT0gX19yZWplY3QzKQogICAgKigqX19zKSsrID0gJ1wwJzsK
ICBlbHNlCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3Jl
dHZhbDsKICAgICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYgKl9fY3AgIT0g
X19yZWplY3QxICYmICpfX2NwICE9IF9fcmVqZWN0MgogICAgICAgICAgICAg
JiYgKl9fY3AgIT0gX19yZWplY3QzKQogICAgICAgICsrX19jcDsKICAgICAg
aWYgKCpfX2NwICE9ICdcMCcpCiAgICAgICAgewogICAgICAgICAgKl9fcyA9
IF9fY3A7CiAgICAgICAgICAqKCpfX3MpKysgPSAnXDAnOwogICAgICAgIH0K
ICAgICAgZWxzZQogICAgICAgICpfX3MgPSAoKHZvaWQgKikwKTsKICAgIH0K
ICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpf
X3N0cnNlcF9nIChjaGFyICoqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0
KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF9nIChjaGFyICoq
X19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hh
ciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQg
KikwKSkKICAgIHJldHVybiAoKHZvaWQgKikwKTsKICBpZiAoKCpfX3MgPSBf
X2V4dGVuc2lvbl9fICh7IGNoYXIgX19hMCwgX19hMSwgX19hMjsgKF9fYnVp
bHRpbl9jb25zdGFudF9wIChfX3JlamVjdCkgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKF9fcmVqZWN0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShfX3JlamVjdCkgPT0gMSkgPyAoKF9fYTAgPSAoKF9fY29uc3QgY2hh
ciAqKSAoX19yZWplY3QpKVswXSwgX19hMCA9PSAnXDAnKSA/ICgodm9pZCAq
KTApIDogKChfX2ExID0gKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlb
MV0sIF9fYTEgPT0gJ1wwJykgPyAoX19leHRlbnNpb25fXyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKF9fYTApICYmIChfX2EwKSA9PSAnXDAnID8gKGNoYXIg
KikgX19yYXdtZW1jaHIgKF9fcmV0dmFsLCBfX2EwKSA6IHN0cmNociAoX19y
ZXR2YWwsIF9fYTApKSkgOiAoKF9fYTIgPSAoKF9fY29uc3QgY2hhciAqKSAo
X19yZWplY3QpKVsyXSwgX19hMiA9PSAnXDAnKSA/IF9fc3RycGJya19jMiAo
X19yZXR2YWwsIF9fYTAsIF9fYTEpIDogKCgoX19jb25zdCBjaGFyICopIChf
X3JlamVjdCkpWzNdID09ICdcMCcgPyBfX3N0cnBicmtfYzMgKF9fcmV0dmFs
LCBfX2EwLCBfX2ExLCBfX2EyKSA6IHN0cnBicmsgKF9fcmV0dmFsLCBfX3Jl
amVjdCkpKSkpIDogc3RycGJyayAoX19yZXR2YWwsIF9fcmVqZWN0KSk7IH0p
KSAhPSAoKHZvaWQgKikwKSkKICAgICooKl9fcykrKyA9ICdcMCc7CiAgcmV0
dXJuIF9fcmV0dmFsOwp9CiMgMTE5MSAiL3Vzci9pbmNsdWRlL2JpdHMvc3Ry
aW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25zdCBjaGFy
ICpfX3N0cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAx
MjEwICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIGNo
YXIgKl9fc3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90
IF9fbikKIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMzY1ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgojIDEzICIuLi9ydW50aW1l
L21lcmN1cnlfc3RyaW5nLmgiIDIKCgojIDE0ICIuLi9ydW50aW1lL21lcmN1
cnlfaGVhcC5oIiAxCiMgNTIgIi4uL3J1bnRpbWUvbWVyY3VyeV9jb250ZXh0
LmgiIDEKIyAxOCAiLi4vcnVudGltZS9tZXJjdXJ5X3RyYWlsLmgiIDEKIyAy
MiAiLi4vcnVudGltZS9tZXJjdXJ5X21lbW9yeS5oIiAxCiMgNDMgIi4uL3J1
bnRpbWUvbWVyY3VyeV9tZW1vcnlfem9uZXMuaCIgMQpleHRlcm4gV29yZCB2
aXJ0dWFsX3JlZ19tYXBbMzJdOwoKCmV4dGVybiB1bnNpZ25lZCBsb25nIG51
bV91c2VzWygzMiArIDE2KV07CiMgODUgIi4uL3J1bnRpbWUvbWVyY3VyeV9t
ZW1vcnlfem9uZXMuaCIKdHlwZWRlZiBzdHJ1Y3QgTUVNT1JZX1pPTkUgTWVt
b3J5Wm9uZTsKCnR5cGVkZWYgY2hhciBab25lSGFuZGxlcihXb3JkICphZGRy
LCBzdHJ1Y3QgTUVNT1JZX1pPTkUgKnpvbmUsIHZvaWQgKmNvbnRleHQpOwoK
c3RydWN0IE1FTU9SWV9aT05FIHsKICAgICAgICBzdHJ1Y3QgTUVNT1JZX1pP
TkUgKm5leHQ7CgoKCgoKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAg
ICAgIGludCBpZDsKICAgICAgICBXb3JkICpib3R0b207CiAgICAgICAgV29y
ZCAqdG9wOwogICAgICAgIFdvcmQgKm1pbjsKICAgICAgICBXb3JkICptYXg7
CgoKCiAgICAgICAgV29yZCAqaGFyZG1heDsKCgoKICAgICAgICBXb3JkICpy
ZWR6b25lX2Jhc2U7CiAgICAgICAgV29yZCAqcmVkem9uZTsKICAgICAgICBa
b25lSGFuZGxlciAqaGFuZGxlcjsKIyAxMjYgIi4uL3J1bnRpbWUvbWVyY3Vy
eV9tZW1vcnlfem9uZXMuaCIKfTsKIyAxMzUgIi4uL3J1bnRpbWUvbWVyY3Vy
eV9tZW1vcnlfem9uZXMuaCIKIyAxNDcgIi4uL3J1bnRpbWUvbWVyY3VyeV9t
ZW1vcnlfem9uZXMuaCIKdm9pZCBpbml0X21lbW9yeV9hcmVuYSh2b2lkKTsK
CgoKCgoKdm9pZCBpbml0X3pvbmVzKHZvaWQpOwojIDE3MCAiLi4vcnVudGlt
ZS9tZXJjdXJ5X21lbW9yeV96b25lcy5oIgpNZW1vcnlab25lICpjcmVhdGVf
em9uZShjb25zdCBjaGFyICpuYW1lLCBpbnQgaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
cmVkc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgWm9uZUhhbmRsZXIg
KmhhbmRsZXIpOwojIDE4NyAiLi4vcnVudGltZS9tZXJjdXJ5X21lbW9yeV96
b25lcy5oIgpNZW1vcnlab25lICpjb25zdHJ1Y3Rfem9uZShjb25zdCBjaGFy
ICpuYW1lLCBpbnQgSWQsIFdvcmQgKmJhc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgcmVk
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgWm9uZUhhbmRsZXIgKmhh
bmRsZXIpOwoKCgoKCgoKdm9pZCByZXNldF9yZWR6b25lKE1lbW9yeVpvbmUg
KnpvbmUpOwoKCgoKCk1lbW9yeVpvbmUgKmdldF91c2VkX21lbW9yeV96b25l
cyh2b2lkKTsKCgoKCgp2b2lkIGRlYnVnX21lbW9yeSh2b2lkKTsKCgoKCgpl
eHRlcm4gc2l6ZV90IG5leHRfb2Zmc2V0KHZvaWQpOwoKIyAyMiAiLi4vcnVu
dGltZS9tZXJjdXJ5X21lbW9yeS5oIiAyCgoKIyAxNDcgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5o
IiAxIDMKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwojIDI0ICIuLi9ydW50aW1l
L21lcmN1cnlfbWVtb3J5LmgiIDIKCgoKCgoKIyAzOCAiLi4vYm9laG1fZ2Mv
Z2MuaCIgMQojIDY1ICIuLi9ib2VobV9nYy9nYy5oIgogICAgdHlwZWRlZiB2
b2lkICogR0NfUFRSOwojIDg0ICIuLi9ib2VobV9nYy9nYy5oIgp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgR0Nfd29yZDsKdHlwZWRlZiBsb25nIEdDX3NpZ25l
ZF93b3JkOwoKCgpleHRlcm4gR0Nfd29yZCBHQ19nY19ubzsKCgoKCgpleHRl
cm4gR0NfUFRSICgqR0Nfb29tX2ZuKSAoc2l6ZV90IGJ5dGVzX3JlcXVlc3Rl
ZCk7CiMgMTA0ICIuLi9ib2VobV9nYy9nYy5oIgpleHRlcm4gaW50IEdDX2Zp
bmRfbGVhazsKCgoKCgpleHRlcm4gaW50IEdDX3F1aWV0OwoKCgoKZXh0ZXJu
IGludCBHQ19maW5hbGl6ZV9vbl9kZW1hbmQ7CgoKCgoKCmV4dGVybiBpbnQg
R0NfamF2YV9maW5hbGl6YXRpb247CgoKCgoKCmV4dGVybiBpbnQgR0NfZG9u
dF9nYzsKCgpleHRlcm4gaW50IEdDX2RvbnRfZXhwYW5kOwoKCgpleHRlcm4g
aW50IEdDX2Z1bGxfZnJlcTsKCgoKZXh0ZXJuIEdDX3dvcmQgR0Nfbm9uX2dj
X2J5dGVzOwoKCgpleHRlcm4gR0Nfd29yZCBHQ19mcmVlX3NwYWNlX2Rpdmlz
b3I7CiMgMTU3ICIuLi9ib2VobV9nYy9nYy5oIgpleHRlcm4gR0Nfd29yZCBH
Q19tYXhfcmV0cmllczsKCgoKCgpleHRlcm4gY2hhciAqR0Nfc3RhY2tib3R0
b207CiMgMTg3ICIuLi9ib2VobV9nYy9nYy5oIgpleHRlcm4gR0NfUFRSIEdD
X21hbGxvYyAoc2l6ZV90IHNpemVfaW5fYnl0ZXMpOwpleHRlcm4gR0NfUFRS
IEdDX21hbGxvY19hdG9taWMgKHNpemVfdCBzaXplX2luX2J5dGVzKTsKZXh0
ZXJuIEdDX1BUUiBHQ19tYWxsb2NfdW5jb2xsZWN0YWJsZSAoc2l6ZV90IHNp
emVfaW5fYnl0ZXMpOwpleHRlcm4gR0NfUFRSIEdDX21hbGxvY19zdHViYm9y
biAoc2l6ZV90IHNpemVfaW5fYnl0ZXMpOwoKCgpleHRlcm4gR0NfUFRSIEdD
X21hbGxvY19hdG9taWNfdW5jb2xsZWN0YWJsZSAoc2l6ZV90IHNpemVfaW5f
Ynl0ZXMpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgR0NfZnJlZSAoR0NfUFRSIG9i
amVjdF9hZGRyKTsKIyAyMTkgIi4uL2JvZWhtX2djL2djLmgiCmV4dGVybiB2
b2lkIEdDX2NoYW5nZV9zdHViYm9ybiAoR0NfUFRSKTsKZXh0ZXJuIHZvaWQg
R0NfZW5kX3N0dWJib3JuX2NoYW5nZSAoR0NfUFRSKTsKCgoKCgpleHRlcm4g
R0NfUFRSIEdDX2Jhc2UgKEdDX1BUUiBkaXNwbGFjZWRfcG9pbnRlcik7CgoK
CgpleHRlcm4gc2l6ZV90IEdDX3NpemUgKEdDX1BUUiBvYmplY3RfYWRkcik7
CiMgMjQxICIuLi9ib2VobV9nYy9nYy5oIgpleHRlcm4gR0NfUFRSIEdDX3Jl
YWxsb2MKICAgICAgICAoR0NfUFRSIG9sZF9vYmplY3QsIHNpemVfdCBuZXdf
c2l6ZV9pbl9ieXRlcyk7CgoKCmV4dGVybiBpbnQgR0NfZXhwYW5kX2hwIChz
aXplX3QgbnVtYmVyX29mX2J5dGVzKTsKCgoKCmV4dGVybiB2b2lkIEdDX3Nl
dF9tYXhfaGVhcF9zaXplIChHQ193b3JkIG4pOwoKCgoKCgpleHRlcm4gdm9p
ZCBHQ19leGNsdWRlX3N0YXRpY19yb290cyAoR0NfUFRSIHN0YXJ0LCBHQ19Q
VFIgZmluaXNoKTsKCgpleHRlcm4gdm9pZCBHQ19jbGVhcl9yb290cyAodm9p
ZCk7CgoKZXh0ZXJuIHZvaWQgR0NfYWRkX3Jvb3RzIChjaGFyICogbG93X2Fk
ZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqIGhpZ2hfYWRkcmVzc19wbHVzXzEpOwojIDI3OSAiLi4vYm9laG1fZ2Mv
Z2MuaCIKZXh0ZXJuIHZvaWQgR0NfcmVnaXN0ZXJfZGlzcGxhY2VtZW50IChH
Q193b3JkIG4pOwoKCgpleHRlcm4gdm9pZCBHQ19kZWJ1Z19yZWdpc3Rlcl9k
aXNwbGFjZW1lbnQgKEdDX3dvcmQgbik7CgoKZXh0ZXJuIHZvaWQgR0NfZ2Nv
bGxlY3QgKHZvaWQpOwojIDI5NyAiLi4vYm9laG1fZ2MvZ2MuaCIKdHlwZWRl
ZiBpbnQgKCogR0Nfc3RvcF9mdW5jKSAodm9pZCk7CmV4dGVybiBpbnQgR0Nf
dHJ5X3RvX2NvbGxlY3QgKEdDX3N0b3BfZnVuYyBzdG9wX2Z1bmMpOwoKCgoK
ZXh0ZXJuIHNpemVfdCBHQ19nZXRfaGVhcF9zaXplICh2b2lkKTsKCgpleHRl
cm4gc2l6ZV90IEdDX2dldF9ieXRlc19zaW5jZV9nYyAodm9pZCk7CgoKCgoK
CgpleHRlcm4gdm9pZCBHQ19lbmFibGVfaW5jcmVtZW50YWwgKHZvaWQpOwoj
IDMyMyAiLi4vYm9laG1fZ2MvZ2MuaCIKZXh0ZXJuIGludCBHQ19jb2xsZWN0
X2FfbGl0dGxlICh2b2lkKTsKIyAzMzkgIi4uL2JvZWhtX2djL2djLmgiCmV4
dGVybiBHQ19QVFIgR0NfbWFsbG9jX2lnbm9yZV9vZmZfcGFnZSAoc2l6ZV90
IGxiKTsKZXh0ZXJuIEdDX1BUUiBHQ19tYWxsb2NfYXRvbWljX2lnbm9yZV9v
ZmZfcGFnZSAoc2l6ZV90IGxiKTsKCiMgMzU3ICIuLi9ib2VobV9nYy9nYy5o
IgpleHRlcm4gR0NfUFRSIEdDX2RlYnVnX21hbGxvYwogICAgICAgIChzaXpl
X3Qgc2l6ZV9pbl9ieXRlcywgY29uc3QgY2hhciAqIGRlc2NyX3N0cmluZywg
aW50IGRlc2NyX2ludCk7CmV4dGVybiBHQ19QVFIgR0NfZGVidWdfbWFsbG9j
X2F0b21pYwogICAgICAgIChzaXplX3Qgc2l6ZV9pbl9ieXRlcywgY29uc3Qg
Y2hhciAqIGRlc2NyX3N0cmluZywgaW50IGRlc2NyX2ludCk7CmV4dGVybiBH
Q19QVFIgR0NfZGVidWdfbWFsbG9jX3VuY29sbGVjdGFibGUKICAgICAgICAo
c2l6ZV90IHNpemVfaW5fYnl0ZXMsIGNvbnN0IGNoYXIgKiBkZXNjcl9zdHJp
bmcsIGludCBkZXNjcl9pbnQpOwpleHRlcm4gR0NfUFRSIEdDX2RlYnVnX21h
bGxvY19zdHViYm9ybgogICAgICAgIChzaXplX3Qgc2l6ZV9pbl9ieXRlcywg
Y29uc3QgY2hhciAqIGRlc2NyX3N0cmluZywgaW50IGRlc2NyX2ludCk7CmV4
dGVybiB2b2lkIEdDX2RlYnVnX2ZyZWUgKEdDX1BUUiBvYmplY3RfYWRkcik7
CmV4dGVybiBHQ19QVFIgR0NfZGVidWdfcmVhbGxvYwoKICAgICAgICAoR0Nf
UFRSIG9sZF9vYmplY3QsIHNpemVfdCBuZXdfc2l6ZV9pbl9ieXRlcywKIyAz
NjggIi4uL2JvZWhtX2djL2djLmgiCiAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKiBkZXNjcl9zdHJpbmcsIGludCBkZXNjcl9pbnQpOwoKZXh0ZXJu
IHZvaWQgR0NfZGVidWdfY2hhbmdlX3N0dWJib3JuIChHQ19QVFIpOwpleHRl
cm4gdm9pZCBHQ19kZWJ1Z19lbmRfc3R1YmJvcm5fY2hhbmdlIChHQ19QVFIp
OwojIDQyMiAiLi4vYm9laG1fZ2MvZ2MuaCIKdHlwZWRlZiB2b2lkICgqR0Nf
ZmluYWxpemF0aW9uX3Byb2MpCiAgICAgICAgKEdDX1BUUiBvYmosIEdDX1BU
UiBjbGllbnRfZGF0YSk7CgpleHRlcm4gdm9pZCBHQ19yZWdpc3Rlcl9maW5h
bGl6ZXIKCiAgICAgICAgKEdDX1BUUiBvYmosIEdDX2ZpbmFsaXphdGlvbl9w
cm9jIGZuLCBHQ19QVFIgY2QsCiMgNDI3ICIuLi9ib2VobV9nYy9nYy5oIgog
ICAgICAgICAgICAgICAgICBHQ19maW5hbGl6YXRpb25fcHJvYyAqb2ZuLCBH
Q19QVFIgKm9jZCk7CmV4dGVybiB2b2lkIEdDX2RlYnVnX3JlZ2lzdGVyX2Zp
bmFsaXplcgoKICAgICAgICAoR0NfUFRSIG9iaiwgR0NfZmluYWxpemF0aW9u
X3Byb2MgZm4sIEdDX1BUUiBjZCwKIyA0MzAgIi4uL2JvZWhtX2djL2djLmgi
CiAgICAgICAgICAgICAgICAgIEdDX2ZpbmFsaXphdGlvbl9wcm9jICpvZm4s
IEdDX1BUUiAqb2NkKTsKIyA0NzAgIi4uL2JvZWhtX2djL2djLmgiCmV4dGVy
biB2b2lkIEdDX3JlZ2lzdGVyX2ZpbmFsaXplcl9pZ25vcmVfc2VsZgoKICAg
ICAgICAoR0NfUFRSIG9iaiwgR0NfZmluYWxpemF0aW9uX3Byb2MgZm4sIEdD
X1BUUiBjZCwKIyA0NzIgIi4uL2JvZWhtX2djL2djLmgiCiAgICAgICAgICAg
ICAgICAgIEdDX2ZpbmFsaXphdGlvbl9wcm9jICpvZm4sIEdDX1BUUiAqb2Nk
KTsKZXh0ZXJuIHZvaWQgR0NfZGVidWdfcmVnaXN0ZXJfZmluYWxpemVyX2ln
bm9yZV9zZWxmCgogICAgICAgIChHQ19QVFIgb2JqLCBHQ19maW5hbGl6YXRp
b25fcHJvYyBmbiwgR0NfUFRSIGNkLAojIDQ3NSAiLi4vYm9laG1fZ2MvZ2Mu
aCIKICAgICAgICAgICAgICAgICAgR0NfZmluYWxpemF0aW9uX3Byb2MgKm9m
biwgR0NfUFRSICpvY2QpOwojIDQ4NCAiLi4vYm9laG1fZ2MvZ2MuaCIKZXh0
ZXJuIGludCBHQ19yZWdpc3Rlcl9kaXNhcHBlYXJpbmdfbGluayAoR0NfUFRS
ICogKTsKIyA1MDQgIi4uL2JvZWhtX2djL2djLmgiCmV4dGVybiBpbnQgR0Nf
Z2VuZXJhbF9yZWdpc3Rlcl9kaXNhcHBlYXJpbmdfbGluawogICAgICAgIChH
Q19QVFIgKiAsIEdDX1BUUiBvYmopOwojIDUyMyAiLi4vYm9laG1fZ2MvZ2Mu
aCIKZXh0ZXJuIGludCBHQ191bnJlZ2lzdGVyX2Rpc2FwcGVhcmluZ19saW5r
IChHQ19QVFIgKiApOwoKCgoKCgpleHRlcm4gR0NfUFRSIEdDX21ha2VfY2xv
c3VyZSAoR0NfZmluYWxpemF0aW9uX3Byb2MgZm4sIEdDX1BUUiBkYXRhKTsK
ZXh0ZXJuIHZvaWQgR0NfZGVidWdfaW52b2tlX2ZpbmFsaXplciAoR0NfUFRS
IG9iaiwgR0NfUFRSIGRhdGEpOwoKZXh0ZXJuIGludCBHQ19pbnZva2VfZmlu
YWxpemVycyAodm9pZCk7CiMgNTQzICIuLi9ib2VobV9nYy9nYy5oIgp0eXBl
ZGVmIHZvaWQgKCpHQ193YXJuX3Byb2MpIChjaGFyICptc2csIEdDX3dvcmQg
YXJnKTsKZXh0ZXJuIEdDX3dhcm5fcHJvYyBHQ19zZXRfd2Fybl9wcm9jIChH
Q193YXJuX3Byb2MgcCk7CiMgNTU1ICIuLi9ib2VobV9nYy9nYy5oIgojIDU2
NCAiLi4vYm9laG1fZ2MvZ2MuaCIKdHlwZWRlZiBHQ19QVFIgKCpHQ19mbl90
eXBlKSAoR0NfUFRSIGNsaWVudF9kYXRhKTsKZXh0ZXJuIEdDX1BUUiBHQ19j
YWxsX3dpdGhfYWxsb2NfbG9jawogICAgICAgICAgICAgICAgKEdDX2ZuX3R5
cGUgZm4sIEdDX1BUUiBjbGllbnRfZGF0YSk7CgoKCgoKCmV4dGVybiBHQ19Q
VFIgR0Nfc2FtZV9vYmogKEdDX1BUUiBwLCBHQ19QVFIgcSk7CgoKCgoKZXh0
ZXJuIEdDX1BUUiBHQ19wcmVfaW5jciAoR0NfUFRSICpwLCBzaXplX3QgaG93
X211Y2gpOwpleHRlcm4gR0NfUFRSIEdDX3Bvc3RfaW5jciAoR0NfUFRSICpw
LCBzaXplX3QgaG93X211Y2gpOwojIDU5MCAiLi4vYm9laG1fZ2MvZ2MuaCIK
ZXh0ZXJuIEdDX1BUUiBHQ19pc192aXNpYmxlIChHQ19QVFIgcCk7CgoKCgoK
CmV4dGVybiBHQ19QVFIgR0NfaXNfdmFsaWRfZGlzcGxhY2VtZW50IChHQ19Q
VFIgcCk7CgoKCiMgNjQ1ICIuLi9ib2VobV9nYy9nYy5oIgpleHRlcm4gdm9p
ZCAoKkdDX3NhbWVfb2JqX3ByaW50X3Byb2MpIChHQ19QVFIgcCwgR0NfUFRS
IHEpOwoKZXh0ZXJuIHZvaWQgKCpHQ19pc192YWxpZF9kaXNwbGFjZW1lbnRf
cHJpbnRfcHJvYykKICAgICAgICAoR0NfUFRSIHApOwoKZXh0ZXJuIHZvaWQg
KCpHQ19pc192aXNpYmxlX3ByaW50X3Byb2MpCiAgICAgICAgKEdDX1BUUiBw
KTsKCiMgMzAgIi4uL3J1bnRpbWUvbWVyY3VyeV9tZW1vcnkuaCIgMgojIDQ5
ICIuLi9ydW50aW1lL21lcmN1cnlfbWVtb3J5LmgiCmV4dGVybiB2b2lkIGlu
aXRfbWVtb3J5KHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2hlYXAodm9pZCk7
CgoKICBleHRlcm4gdm9pZCBNUl9pbml0X2NvbnNlcnZhdGl2ZV9HQyh2b2lk
KTsKIyA4NCAiLi4vcnVudGltZS9tZXJjdXJ5X21lbW9yeS5oIgp2b2lkICpN
Ul9tYWxsb2Moc2l6ZV90IG4pOwp2b2lkICpNUl9yZWFsbG9jKHZvaWQgKm9s
ZCwgc2l6ZV90IG4pOwojIDEyMSAiLi4vcnVudGltZS9tZXJjdXJ5X21lbW9y
eS5oIgpleHRlcm4gdm9pZCAqTVJfR0NfbWFsbG9jKHNpemVfdCBudW1fYnl0
ZXMpOwpleHRlcm4gdm9pZCAqTVJfR0NfcmVhbGxvYyh2b2lkICpwdHIsIHNp
emVfdCBudW1fYnl0ZXMpOwoKIyAxNDYgIi4uL3J1bnRpbWUvbWVyY3VyeV9t
ZW1vcnkuaCIKY2hhciAqTVJfY29weV9zdHJpbmcoY29uc3QgY2hhciAqcyk7
CiMgMTU1ICIuLi9ydW50aW1lL21lcmN1cnlfbWVtb3J5LmgiCmV4dGVybiBz
aXplX3QgdW5pdDsKZXh0ZXJuIHNpemVfdCBwYWdlX3NpemU7CiMgMTY1ICIu
Li9ydW50aW1lL21lcmN1cnlfbWVtb3J5LmgiCiMgMTggIi4uL3J1bnRpbWUv
bWVyY3VyeV90cmFpbC5oIiAyCiMgMTM0ICIuLi9ydW50aW1lL21lcmN1cnlf
dHJhaWwuaCIKdHlwZWRlZiBlbnVtIHsKCgoKCgoKCiAgICAgICAgTVJfdW5k
bywKIyAxNTEgIi4uL3J1bnRpbWUvbWVyY3VyeV90cmFpbC5oIgogICAgICAg
IE1SX2NvbW1pdCwKIyAxNjAgIi4uL3J1bnRpbWUvbWVyY3VyeV90cmFpbC5o
IgogICAgICAgIE1SX3NvbHZlLAoKCgoKCgoKICAgICAgICBNUl9leGNlcHRp
b24sCgoKCgoKCgogICAgICAgIE1SX3JldHJ5LAoKCgoKCgoKICAgICAgICBN
Ul9nYwoKfSBNUl91bnRyYWlsX3JlYXNvbjsKCnR5cGVkZWYgZW51bSB7CiAg
ICAgICAgTVJfdmFsX2VudHJ5LAogICAgICAgIE1SX2Z1bmNfZW50cnkKfSBN
Ul90cmFpbF9lbnRyeV9raW5kOwojIDIwMCAiLi4vcnVudGltZS9tZXJjdXJ5
X3RyYWlsLmgiCnR5cGVkZWYgdm9pZCBNUl91bnRyYWlsX2Z1bmNfdHlwZSh2
b2lkICpkYXR1bSwgTVJfdW50cmFpbF9yZWFzb24pOwoKdHlwZWRlZiBzdHJ1
Y3QgewoKCgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQgKk1SX2FkZHJlc3M7
CiAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQgTVJfdmFsdWU7CiAgICAg
ICAgICAgICAgICB9IE1SX3ZhbDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIE1SX3VudHJhaWxfZnVuY190eXBl
ICpNUl91bnRyYWlsX2Z1bmM7CiAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKk1SX2RhdHVtOwogICAgICAgICAgICAgICAgfSBNUl9mdW5jOwogICAg
ICAgIH0gTVJfdW5pb247Cn0gTVJfVHJhaWxFbnRyeTsKCgoKCgoKIyAzMjAg
Ii4uL3J1bnRpbWUvbWVyY3VyeV90cmFpbC5oIgpleHRlcm4gTWVtb3J5Wm9u
ZSAqTVJfdHJhaWxfem9uZTsKCgoKZXh0ZXJuIE1SX1RyYWlsRW50cnkgKk1S
X3RyYWlsX3B0cl92YXI7CiMgMzM2ICIuLi9ydW50aW1lL21lcmN1cnlfdHJh
aWwuaCIKZXh0ZXJuIFVuc2lnbmVkIE1SX3RpY2tldF9jb3VudGVyX3ZhcjsK
IyAzNDggIi4uL3J1bnRpbWUvbWVyY3VyeV90cmFpbC5oIgpleHRlcm4gVW5z
aWduZWQgTVJfdGlja2V0X2hpZ2hfd2F0ZXJfdmFyOwojIDM2NiAiLi4vcnVu
dGltZS9tZXJjdXJ5X3RyYWlsLmgiCiMgNDA0ICIuLi9ydW50aW1lL21lcmN1
cnlfdHJhaWwuaCIKdm9pZCBNUl91bnRyYWlsX3RvKE1SX1RyYWlsRW50cnkg
Km9sZF90cmFpbF9wdHIsIE1SX3VudHJhaWxfcmVhc29uIHJlYXNvbik7CgoK
dHlwZWRlZiBVbnNpZ25lZCBNUl9DaG9pY2Vwb2ludElkOwojIDQzMCAiLi4v
cnVudGltZS9tZXJjdXJ5X3RyYWlsLmgiCiMgNTIgIi4uL3J1bnRpbWUvbWVy
Y3VyeV9jb250ZXh0LmgiIDIKCgojIDEyOCAiLi4vcnVudGltZS9tZXJjdXJ5
X3RocmVhZC5oIiAxCnR5cGVkZWYgZW51bSB7IE1SX3VzZV9ub3csIE1SX3Vz
ZV9sYXRlciB9IE1SX3doZW5fdG9fdXNlOwoKCgoKCgp2b2lkIGluaXRfdGhy
ZWFkKE1SX3doZW5fdG9fdXNlKTsKCiMgNTQgIi4uL3J1bnRpbWUvbWVyY3Vy
eV9jb250ZXh0LmgiIDIKCiMgMTYgIi4uL3J1bnRpbWUvbWVyY3VyeV9nb3Rv
LmgiIDEKIyAyMCAiLi4vcnVudGltZS9tZXJjdXJ5X2xhYmVsLmgiIDEKIyAy
MCAiLi4vcnVudGltZS9tZXJjdXJ5X2RsaXN0LmgiIDEKdHlwZWRlZiBzdHJ1
Y3Qgc19saXN0IHsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICB2
b2lkICpsX2RhdGE7CiAgICAgICAgICAgICAgICBpbnQgbF9sZW5ndGg7CiAg
ICAgICAgfSBsX3VuaW9uOwogICAgICAgIHN0cnVjdCBzX2xpc3QgKmxfcHJl
djsKICAgICAgICBzdHJ1Y3Qgc19saXN0ICpsX25leHQ7Cn0gTGlzdDsKCiMg
NTkgIi4uL3J1bnRpbWUvbWVyY3VyeV9kbGlzdC5oIgpleHRlcm4gTGlzdCAq
bWFrZWxpc3QwKHZvaWQpOwpleHRlcm4gTGlzdCAqbGlzdF9tYWtlbGlzdCh2
b2lkICopOwpleHRlcm4gTGlzdCAqbGlzdF9hZGRoZWFkKExpc3QgKiwgdm9p
ZCAqKTsKZXh0ZXJuIExpc3QgKmxpc3RfYWRkdGFpbChMaXN0ICosIHZvaWQg
Kik7CmV4dGVybiBMaXN0ICphZGRsaXN0KExpc3QgKiwgTGlzdCAqKTsKZXh0
ZXJuIExpc3QgKmFkZG5kbGlzdChMaXN0ICosIExpc3QgKik7CmV4dGVybiB2
b2lkIGxpc3RfaW5zZXJ0X2JlZm9yZShMaXN0ICosIExpc3QgKiwgdm9pZCAq
KTsKZXh0ZXJuIHZvaWQgbGlzdF9pbnNlcnRfYWZ0ZXIoTGlzdCAqLCBMaXN0
ICosIHZvaWQgKik7CmV4dGVybiBpbnQgbGVuZ3RoKGNvbnN0IExpc3QgKik7
CmV4dGVybiB2b2lkIGRsaXN0X2RlbGV0ZShMaXN0ICosIExpc3QgKiwgdm9p
ZCAoKikodm9pZCAqKSk7CmV4dGVybiB2b2lkIG9sZGxpc3QoTGlzdCAqLCB2
b2lkICgqKSh2b2lkICopKTsKCiMgMjAgIi4uL3J1bnRpbWUvbWVyY3VyeV9s
YWJlbC5oIiAyCgojIDI4ICIuLi9ydW50aW1lL21lcmN1cnlfc3RhY2tfbGF5
b3V0LmgiIDEKdHlwZWRlZiBlbnVtIHsgTVJfUFJFRElDQVRFLCBNUl9GVU5D
VElPTiB9IE1SX1ByZWRGdW5jOwojIDQ1ICIuLi9ydW50aW1lL21lcmN1cnlf
c3RhY2tfbGF5b3V0LmgiCnR5cGVkZWYgTVJfaW50X2xlYXN0MTZfdCBNUl9E
ZXRlcm1pbmlzbTsKCiMgMTEwICIuLi9ydW50aW1lL21lcmN1cnlfc3RhY2tf
bGF5b3V0LmgiCnR5cGVkZWYgTVJfdWludF9sZWFzdDMyX3QgTVJfTG9uZ19M
dmFsOwoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBNUl9MT05HX0xWQUxfVFlQ
RV9SLAogICAgICAgIE1SX0xPTkdfTFZBTF9UWVBFX0YsCiAgICAgICAgTVJf
TE9OR19MVkFMX1RZUEVfU1RBQ0tWQVIsCiAgICAgICAgTVJfTE9OR19MVkFM
X1RZUEVfRlJBTUVWQVIsCiAgICAgICAgTVJfTE9OR19MVkFMX1RZUEVfU1VD
Q0lQLAogICAgICAgIE1SX0xPTkdfTFZBTF9UWVBFX01BWEZSLAogICAgICAg
IE1SX0xPTkdfTFZBTF9UWVBFX0NVUkZSLAogICAgICAgIE1SX0xPTkdfTFZB
TF9UWVBFX0hQLAogICAgICAgIE1SX0xPTkdfTFZBTF9UWVBFX1NQLAogICAg
ICAgIE1SX0xPTkdfTFZBTF9UWVBFX0lORElSRUNULAogICAgICAgIE1SX0xP
TkdfTFZBTF9UWVBFX1VOS05PV04KfSBNUl9Mb25nX0x2YWxfVHlwZTsKCgoj
IDE3NCAiLi4vcnVudGltZS9tZXJjdXJ5X3N0YWNrX2xheW91dC5oIgp0eXBl
ZGVmIE1SX3VpbnRfbGVhc3Q4X3QgTVJfU2hvcnRfTHZhbDsKCnR5cGVkZWYg
ZW51bSB7CiAgICAgICAgTVJfU0hPUlRfTFZBTF9UWVBFX1IsCiAgICAgICAg
TVJfU0hPUlRfTFZBTF9UWVBFX1NUQUNLVkFSLAogICAgICAgIE1SX1NIT1JU
X0xWQUxfVFlQRV9GUkFNRVZBUiwKICAgICAgICBNUl9TSE9SVF9MVkFMX1RZ
UEVfU1BFQ0lBTAp9IE1SX1Nob3J0X0x2YWxfVHlwZTsKCgojIDIxOCAiLi4v
cnVudGltZS9tZXJjdXJ5X3N0YWNrX2xheW91dC5oIgp0eXBlZGVmIHN0cnVj
dCBNUl9UeXBlX1BhcmFtX0xvY25zX1N0cnVjdCB7CiAgICAgICAgTVJfdWlu
dF9sZWFzdDMyX3QgTVJfdHBfcGFyYW1fY291bnQ7CiAgICAgICAgTVJfTG9u
Z19MdmFsIE1SX3RwX3BhcmFtX2xvY25zWzBdOwp9IE1SX1R5cGVfUGFyYW1f
TG9jbnM7CiMgMjM1ICIuLi9ydW50aW1lL21lcmN1cnlfc3RhY2tfbGF5b3V0
LmgiCnR5cGVkZWYgc3RydWN0IE1SX1Zhcl9OYW1lX1N0cnVjdCB7CiAgICAg
ICAgTVJfdWludF9sZWFzdDE2X3QgTVJfdmFyX251bTsKICAgICAgICBNUl91
aW50X2xlYXN0MTZfdCBNUl92YXJfbmFtZV9vZmZzZXQ7Cn0gTVJfVmFyX05h
bWU7CiMgMjYwICIuLi9ydW50aW1lL21lcmN1cnlfc3RhY2tfbGF5b3V0Lmgi
CnR5cGVkZWYgc3RydWN0IE1SX1N0YWNrX0xheW91dF9WYXJzX1N0cnVjdCB7
CiAgICAgICAgSW50ZWdlciBNUl9zbHZzX3Zhcl9jb3VudDsKICAgICAgICB2
b2lkICpNUl9zbHZzX2xvY25zX3R5cGVzOwogICAgICAgIE1SX1Zhcl9OYW1l
ICpNUl9zbHZzX25hbWVzOwogICAgICAgIE1SX1R5cGVfUGFyYW1fTG9jbnMg
Kk1SX3NsdnNfdHZhcnM7Cn0gTVJfU3RhY2tfTGF5b3V0X1ZhcnM7CgojIDM0
NiAiLi4vcnVudGltZS9tZXJjdXJ5X3N0YWNrX2xheW91dC5oIgp0eXBlZGVm
IHN0cnVjdCBNUl9TdGFja19MYXlvdXRfVXNlcl9Qcm9jX1N0cnVjdCB7CiAg
ICAgICAgTVJfUHJlZEZ1bmMgTVJfdXNlcl9wcmVkX29yX2Z1bmM7CiAgICAg
ICAgQ29uc3RTdHJpbmcgTVJfdXNlcl9kZWNsX21vZHVsZTsKICAgICAgICBD
b25zdFN0cmluZyBNUl91c2VyX2RlZl9tb2R1bGU7CiAgICAgICAgQ29uc3RT
dHJpbmcgTVJfdXNlcl9uYW1lOwogICAgICAgIE1SX2ludF9sZWFzdDE2X3Qg
TVJfdXNlcl9hcml0eTsKICAgICAgICBNUl9pbnRfbGVhc3QxNl90IE1SX3Vz
ZXJfbW9kZTsKfSBNUl9TdGFja19MYXlvdXRfVXNlcl9Qcm9jOwoKdHlwZWRl
ZiBzdHJ1Y3QgTVJfU3RhY2tfTGF5b3V0X0NvbXBpbGVyX1Byb2NfU3RydWN0
IHsKICAgICAgICBDb25zdFN0cmluZyBNUl9jb21wX3R5cGVfbmFtZTsKICAg
ICAgICBDb25zdFN0cmluZyBNUl9jb21wX3R5cGVfbW9kdWxlOwogICAgICAg
IENvbnN0U3RyaW5nIE1SX2NvbXBfZGVmX21vZHVsZTsKICAgICAgICBDb25z
dFN0cmluZyBNUl9jb21wX3ByZWRfbmFtZTsKICAgICAgICBNUl9pbnRfbGVh
c3QxNl90IE1SX2NvbXBfYXJpdHk7CiAgICAgICAgTVJfaW50X2xlYXN0MTZf
dCBNUl9jb21wX21vZGU7Cn0gTVJfU3RhY2tfTGF5b3V0X0NvbXBpbGVyX1By
b2M7Cgp0eXBlZGVmIHVuaW9uIE1SX1N0YWNrX0xheW91dF9Qcm9jX0lkX1Vu
aW9uIHsKICAgICAgICBNUl9TdGFja19MYXlvdXRfVXNlcl9Qcm9jIE1SX3By
b2NfdXNlcjsKICAgICAgICBNUl9TdGFja19MYXlvdXRfQ29tcGlsZXJfUHJv
YyBNUl9wcm9jX2NvbXA7Cn0gTVJfU3RhY2tfTGF5b3V0X1Byb2NfSWQ7Cgp0
eXBlZGVmIHN0cnVjdCBNUl9TdGFja19MYXlvdXRfRW50cnlfU3RydWN0IHsK
CiAgICAgICAgQ29kZSAqTVJfc2xlX2NvZGVfYWRkcjsKICAgICAgICBNUl9M
b25nX0x2YWwgTVJfc2xlX3N1Y2NpcF9sb2NuOwogICAgICAgIE1SX2ludF9s
ZWFzdDE2X3QgTVJfc2xlX3N0YWNrX3Nsb3RzOwogICAgICAgIE1SX0RldGVy
bWluaXNtIE1SX3NsZV9kZXRpc207CgoKICAgICAgICBNUl9TdGFja19MYXlv
dXRfUHJvY19JZCBNUl9zbGVfcHJvY19pZDsKCgogICAgICAgIHN0cnVjdCBN
Ul9TdGFja19MYXlvdXRfTGFiZWxfU3RydWN0CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKk1SX3NsZV9jYWxsX2xhYmVsOwogICAgICAgIHN0
cnVjdCBNUl9Nb2R1bGVfTGF5b3V0X1N0cnVjdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpNUl9zbGVfbW9kdWxlX2xheW91dDsKICAgICAg
ICBNUl9pbnRfbGVhc3QxNl90IE1SX3NsZV9tYXhfcl9udW07CiAgICAgICAg
TVJfaW50X2xlYXN0OF90IE1SX3NsZV9tYXliZV9mcm9tX2Z1bGw7CiAgICAg
ICAgTVJfaW50X2xlYXN0OF90IE1SX3NsZV9tYXliZV90cmFpbDsKICAgICAg
ICBNUl9pbnRfbGVhc3Q4X3QgTVJfc2xlX21heWJlX2RlY2xfZGVidWc7Cn0g
TVJfU3RhY2tfTGF5b3V0X0VudHJ5OwoKIyA1MTIgIi4uL3J1bnRpbWUvbWVy
Y3VyeV9zdGFja19sYXlvdXQuaCIKdHlwZWRlZiBzdHJ1Y3QgTVJfU3RhY2tf
TGF5b3V0X0xhYmVsX1N0cnVjdCB7CiAgICAgICAgTVJfU3RhY2tfTGF5b3V0
X0VudHJ5ICpNUl9zbGxfZW50cnk7CiAgICAgICAgTVJfaW50X2xlYXN0MTZf
dCBNUl9zbGxfcG9ydDsKICAgICAgICBNUl9pbnRfbGVhc3QxNl90IE1SX3Ns
bF9nb2FsX3BhdGg7CiAgICAgICAgTVJfU3RhY2tfTGF5b3V0X1ZhcnMgTVJf
c2xsX3Zhcl9pbmZvOwp9IE1SX1N0YWNrX0xheW91dF9MYWJlbDsKIyA1NDAg
Ii4uL3J1bnRpbWUvbWVyY3VyeV9zdGFja19sYXlvdXQuaCIKIyA1ODAgIi4u
L3J1bnRpbWUvbWVyY3VyeV9zdGFja19sYXlvdXQuaCIKdHlwZWRlZiBzdHJ1
Y3QgTVJfTW9kdWxlX0ZpbGVfTGF5b3V0X1N0cnVjdCB7CiAgICAgICAgU3Ry
aW5nIE1SX21mbF9maWxlbmFtZTsKICAgICAgICBJbnRlZ2VyIE1SX21mbF9s
YWJlbF9jb3VudDsKCiAgICAgICAgTVJfaW50X2xlYXN0MTZfdCAqTVJfbWZs
X2xhYmVsX2xpbmVubzsKICAgICAgICBNUl9TdGFja19MYXlvdXRfTGFiZWwg
KipNUl9tZmxfbGFiZWxfbGF5b3V0Owp9IE1SX01vZHVsZV9GaWxlX0xheW91
dDsKCnR5cGVkZWYgc3RydWN0IE1SX01vZHVsZV9MYXlvdXRfU3RydWN0IHsK
ICAgICAgICBTdHJpbmcgTVJfbWxfbmFtZTsKICAgICAgICBJbnRlZ2VyIE1S
X21sX3N0cmluZ190YWJsZV9zaXplOwogICAgICAgIGNoYXIgKk1SX21sX3N0
cmluZ190YWJsZTsKICAgICAgICBJbnRlZ2VyIE1SX21sX3Byb2NfY291bnQ7
CiAgICAgICAgTVJfU3RhY2tfTGF5b3V0X0VudHJ5ICoqTVJfbWxfcHJvY3M7
CiAgICAgICAgSW50ZWdlciBNUl9tbF9maWxlbmFtZV9jb3VudDsKICAgICAg
ICBNUl9Nb2R1bGVfRmlsZV9MYXlvdXQgKipNUl9tbF9tb2R1bGVfZmlsZV9s
YXlvdXQ7Cn0gTVJfTW9kdWxlX0xheW91dDsKCiMgMjEgIi4uL3J1bnRpbWUv
bWVyY3VyeV9sYWJlbC5oIiAyCiMgMzkgIi4uL3J1bnRpbWUvbWVyY3VyeV9s
YWJlbC5oIgp0eXBlZGVmIHN0cnVjdCBzX2VudHJ5IHsKICAgICAgICBjb25z
dCBDb2RlICplX2FkZHI7CiAgICAgICAgY29uc3QgTVJfU3RhY2tfTGF5b3V0
X0VudHJ5ICplX2xheW91dDsKICAgICAgICBjb25zdCBjaGFyICplX25hbWU7
Cn0gTVJfRW50cnk7CiMgNTMgIi4uL3J1bnRpbWUvbWVyY3VyeV9sYWJlbC5o
Igp0eXBlZGVmIHN0cnVjdCBzX2ludGVybmFsIHsKICAgICAgICBjb25zdCBD
b2RlICppX2FkZHI7CiAgICAgICAgY29uc3QgTVJfU3RhY2tfTGF5b3V0X0xh
YmVsICppX2xheW91dDsKICAgICAgICBjb25zdCBjaGFyICppX25hbWU7Cn0g
TVJfSW50ZXJuYWw7CgpleHRlcm4gdm9pZCBNUl9kb19pbml0X2xhYmVsX3Rh
Ymxlcyh2b2lkKTsKCiMgNzIgIi4uL3J1bnRpbWUvbWVyY3VyeV9sYWJlbC5o
IgpleHRlcm4gdm9pZCBNUl9pbnNlcnRfaW50ZXJuYWxfbGFiZWwoY29uc3Qg
Y2hhciAqbmFtZSwgQ29kZSAqYWRkciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBNUl9TdGFja19MYXlvdXRfTGFiZWwgKmxhYmVs
X2xheW91dCk7CmV4dGVybiBNUl9JbnRlcm5hbCAqTVJfbG9va3VwX2ludGVy
bmFsX2J5X2FkZHIoY29uc3QgQ29kZSAqYWRkcik7CmV4dGVybiB2b2lkIE1S
X3Byb2Nlc3NfYWxsX2ludGVybmFsX2xhYmVscyh2b2lkIGYoY29uc3Qgdm9p
ZCAqKSk7CgojIDE2ICIuLi9ydW50aW1lL21lcmN1cnlfZ290by5oIiAyCgoj
IDE4ICIuLi9ydW50aW1lL21lcmN1cnlfZHVtbXkuaCIgMQpleHRlcm4gdm9p
ZCBkdW1teV9mdW5jdGlvbl9jYWxsKHZvaWQpOwpleHRlcm4gdm9pZCAqZHVt
bXlfaWRlbnRpZnlfZnVuY3Rpb24odm9pZCAqKTsKZXh0ZXJuIHZvaWQgKnZv
bGF0aWxlIGdsb2JhbF9wb2ludGVyOwpleHRlcm4gdm9pZCAqdm9sYXRpbGUg
Z2xvYmFsX3BvaW50ZXJfMjsKCiMgMTcgIi4uL3J1bnRpbWUvbWVyY3VyeV9n
b3RvLmgiIDIKIyA0NTMgIi4uL3J1bnRpbWUvbWVyY3VyeV9nb3RvLmgiCiAg
dHlwZWRlZiB2b2lkIE1vZHVsZUZ1bmModm9pZCk7CiMgNDYzICIuLi9ydW50
aW1lL21lcmN1cnlfZ290by5oIgojIDU1ICIuLi9ydW50aW1lL21lcmN1cnlf
Y29udGV4dC5oIiAyCiMgNjggIi4uL3J1bnRpbWUvbWVyY3VyeV9jb250ZXh0
LmgiCnR5cGVkZWYgc3RydWN0IE1SX2NvbnRleHRfc3RydWN0IE1SX0NvbnRl
eHQ7CnN0cnVjdCBNUl9jb250ZXh0X3N0cnVjdCB7CiAgICAgICAgc3RydWN0
IE1SX2NvbnRleHRfc3RydWN0ICpuZXh0OwojIDgwICIuLi9ydW50aW1lL21l
cmN1cnlfY29udGV4dC5oIgogICAgICAgIENvZGUgKnJlc3VtZTsKCgoKCgoj
IDk1ICIuLi9ydW50aW1lL21lcmN1cnlfY29udGV4dC5oIgogICAgICAgIENv
ZGUgKmNvbnRleHRfc3VjY2lwOwoKCiAgICAgICAgTWVtb3J5Wm9uZSAqZGV0
c3RhY2tfem9uZTsKCiAgICAgICAgV29yZCAqY29udGV4dF9zcDsKCgogICAg
ICAgIE1lbW9yeVpvbmUgKm5vbmRldHN0YWNrX3pvbmU7CgogICAgICAgIFdv
cmQgKmNvbnRleHRfbWF4ZnI7CgogICAgICAgIFdvcmQgKmNvbnRleHRfY3Vy
ZnI7CgojIDEzMSAiLi4vcnVudGltZS9tZXJjdXJ5X2NvbnRleHQuaCIKICAg
ICAgICBXb3JkICpjb250ZXh0X2hwOwoKICAgICAgICBXb3JkICptaW5faHBf
cmVjOwoKCgoKCn07Cgp0eXBlZGVmIE1SX0NvbnRleHQgQ29udGV4dDsKCgoK
CmV4dGVybiBNUl9Db250ZXh0ICpNUl9ydW5xdWV1ZV9oZWFkOwpleHRlcm4g
TVJfQ29udGV4dCAqTVJfcnVucXVldWVfdGFpbDsKIyAxNzAgIi4uL3J1bnRp
bWUvbWVyY3VyeV9jb250ZXh0LmgiCnR5cGVkZWYgZW51bSB7CiAgICAgICAg
TVJfUEVORElOR19SRUFEID0gMHgwMSwKICAgICAgICBNUl9QRU5ESU5HX1dS
SVRFID0gMHgwMiwKICAgICAgICBNUl9QRU5ESU5HX0VYRUMgPSAweDA0Cn0g
TVJfV2FpdGluZ01vZGU7Cgp0eXBlZGVmIHN0cnVjdCBNUl9QRU5ESU5HX0NP
TlRFWFQgewogICAgICAgIHN0cnVjdCBNUl9QRU5ESU5HX0NPTlRFWFQgKm5l
eHQ7CiAgICAgICAgTVJfQ29udGV4dCAqY29udGV4dDsKICAgICAgICBpbnQg
ZmQ7CiAgICAgICAgTVJfV2FpdGluZ01vZGUgd2FpdGluZ19tb2RlOwp9IE1S
X1BlbmRpbmdDb250ZXh0OwoKZXh0ZXJuIE1SX1BlbmRpbmdDb250ZXh0ICpN
Ul9wZW5kaW5nX2NvbnRleHRzOwoKCgoKCgoKdm9pZCBpbml0X2NvbnRleHQo
TVJfQ29udGV4dCAqY29udGV4dCk7CgoKCgoKTVJfQ29udGV4dCAqY3JlYXRl
X2NvbnRleHQodm9pZCk7CgoKCgoKCnZvaWQgZGVzdHJveV9jb250ZXh0KE1S
X0NvbnRleHQgKmNvbnRleHQpOwoKCgoKdm9pZCBpbml0X3RocmVhZF9zdHVm
Zih2b2lkKTsKCgoKCnZvaWQgZmluYWxpemVfcnVucXVldWUodm9pZCk7CgoK
CgoKCnZvaWQgZmxvdW5kZXIodm9pZCk7CgoKCgoKCnZvaWQgc2NoZWR1bGUo
TVJfQ29udGV4dCAqY3R4dCk7CgpleHRlcm4gdm9pZCBkb19ydW5uZXh0KHZv
aWQpIF9fYXNtX18oIl9lbnRyeV8iICJkb19ydW5uZXh0Iik7CiMgNDExICIu
Li9ydW50aW1lL21lcmN1cnlfY29udGV4dC5oIgp0eXBlZGVmIHN0cnVjdCBz
eW5jX3Rlcm1fc3RydWN0IFN5bmNUZXJtOwpzdHJ1Y3Qgc3luY190ZXJtX3N0
cnVjdCB7CgoKCiAgICAgICAgaW50IGNvdW50OwogICAgICAgIE1SX0NvbnRl
eHQgKnBhcmVudDsKfTsKCiMgMTQgIi4uL3J1bnRpbWUvbWVyY3VyeV9oZWFw
LmgiIDIKCiMgNTYgIi4uL3J1bnRpbWUvbWVyY3VyeV9oZWFwX3Byb2ZpbGUu
aCIgMQogIHR5cGVkZWYgc3RydWN0IE1SX2R3b3JkCiAgewogICAgICAgIHVu
c2lnbmVkIGxvbmcgbG93X3dvcmQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBo
aWdoX3dvcmQ7CiAgfSBNUl9kd29yZDsKCgojIDEyICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9saW1pdHMuaCIg
MSAzCiMgOCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8y
Ljk2L2luY2x1ZGUvc3lzbGltaXRzLmgiIDEgMwojIDEzMSAiL3Vzci9saWIv
Z2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUvbGltaXRz
LmgiIDEgMwojIDMxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDEy
NyAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMKIyAzNyAi
L3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDEgMwojIDEyNyAiL3Vz
ci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAyIDMKIyAzMSAiL3Vzci9p
bmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCiMgMTMxICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9saW1pdHMuaCIg
MiAzCiMgOCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8y
Ljk2L2luY2x1ZGUvc3lzbGltaXRzLmgiIDIgMwojIDEyICIvdXNyL2xpYi9n
Y2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9saW1pdHMu
aCIgMiAzCiMgNjMgIi4uL3J1bnRpbWUvbWVyY3VyeV9oZWFwX3Byb2ZpbGUu
aCIgMgojIDEyNCAiLi4vcnVudGltZS9tZXJjdXJ5X2hlYXBfcHJvZmlsZS5o
Igp0eXBlZGVmIHN0cnVjdCBNUl9tZW1wcm9mX2NvdW50ZXIKewogICAgICAg
IE1SX2R3b3JkIGNlbGxzX2F0X3BlcmlvZF9zdGFydDsKICAgICAgICBNUl9k
d29yZCB3b3Jkc19hdF9wZXJpb2Rfc3RhcnQ7CiAgICAgICAgTVJfZHdvcmQg
Y2VsbHNfc2luY2VfcGVyaW9kX3N0YXJ0OwogICAgICAgIE1SX2R3b3JkIHdv
cmRzX3NpbmNlX3BlcmlvZF9zdGFydDsKfSBNUl9tZW1wcm9mX2NvdW50ZXI7
CgoKdHlwZWRlZiBzdHJ1Y3QgTVJfbWVtcHJvZl9yZWNvcmQKewogICAgICAg
IGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgQ29kZSAqYWRkcjsKICAgICAg
ICBNUl9tZW1wcm9mX2NvdW50ZXIgY291bnRlcjsKICAgICAgICBzdHJ1Y3Qg
TVJfbWVtcHJvZl9yZWNvcmQgKmxlZnQ7CiAgICAgICAgc3RydWN0IE1SX21l
bXByb2ZfcmVjb3JkICpyaWdodDsKfSBNUl9tZW1wcm9mX3JlY29yZDsKCgp0
eXBlZGVmIHN0cnVjdCBNUl9tZW1wcm9mX3RhYmxlCnsKICAgICAgICBNUl9t
ZW1wcm9mX3JlY29yZCAqcm9vdDsKICAgICAgICBpbnQgbnVtX2VudHJpZXM7
Cn0gTVJfbWVtcHJvZl90YWJsZTsKCgoKCgpleHRlcm4gTVJfbWVtcHJvZl9j
b3VudGVyIE1SX21lbXByb2Zfb3ZlcmFsbDsKZXh0ZXJuIE1SX21lbXByb2Zf
dGFibGUgTVJfbWVtcHJvZl9wcm9jczsKZXh0ZXJuIE1SX21lbXByb2ZfdGFi
bGUgTVJfbWVtcHJvZl90eXBlczsKIyAxNjkgIi4uL3J1bnRpbWUvbWVyY3Vy
eV9oZWFwX3Byb2ZpbGUuaCIKZXh0ZXJuIHZvaWQgTVJfcmVjb3JkX2FsbG9j
YXRpb24oaW50IHNpemUsIENvZGUgKnByb2NfYWRkciwKICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKnByb2NfbmFtZSwgY29uc3QgY2hhciAqdHlwZSk7
CgoKCgoKCmV4dGVybiB2b2lkIE1SX3Byb2Zfb3V0cHV0X21lbV90YWJsZXMo
dm9pZCk7CgoKCiMgMTUgIi4uL3J1bnRpbWUvbWVyY3VyeV9oZWFwLmgiIDIK
IyAxNSAiLi4vcnVudGltZS9tZXJjdXJ5X3N0cmluZy5oIiAyCiMgMTI0ICIu
Li9ydW50aW1lL21lcmN1cnlfc3RyaW5nLmgiCmludCBNUl9oYXNoX3N0cmlu
ZyhXb3JkKTsKCiMgNTEgIi4uL3J1bnRpbWUvbWVyY3VyeV9pbXAuaCIgMgoK
IyAxOCAiLi4vcnVudGltZS9tZXJjdXJ5X2Zsb2F0LmgiIDEKdHlwZWRlZiBk
b3VibGUgRmxvYXQ7CiMgNzkgIi4uL3J1bnRpbWUvbWVyY3VyeV9mbG9hdC5o
IgpJbnRlZ2VyIGhhc2hfZmxvYXQoRmxvYXQpOwoKIyA1MiAiLi4vcnVudGlt
ZS9tZXJjdXJ5X2ltcC5oIiAyCgojIDQzICIuLi9ydW50aW1lL21lcmN1cnlf
c3RhY2tfdHJhY2UuaCIgMQpleHRlcm4gdm9pZCBNUl9kdW1wX3N0YWNrKENv
ZGUgKnN1Y2Nlc3NfcG9pbnRlciwgV29yZCAqZGV0X3N0YWNrX3BvaW50ZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQgKmN1cnJlbnRfZnJhbWUs
IGNoYXIgaW5jbHVkZV90cmFjZV9kYXRhKTsKIyA1OSAiLi4vcnVudGltZS9t
ZXJjdXJ5X3N0YWNrX3RyYWNlLmgiCnR5cGVkZWYgdm9pZCAoKk1SX1ByaW50
X1N0YWNrX1JlY29yZCkoRklMRSAqZnAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgTVJfU3RhY2tfTGF5b3V0X0VudHJ5ICogcHJv
Y19sYXlvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGNvdW50LCBpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV29yZCAqYmFzZV9zcCwgV29yZCAqIGJhc2VfY3VyZnIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5h
bWUsIGludCBsaW5lbnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgY29udGV4dF9taXNtYXRjaCk7CgpleHRlcm4gY29uc3Qg
Y2hhciAqTVJfZHVtcF9zdGFja19mcm9tX2xheW91dChGSUxFICpmcCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNUl9TdGFja19M
YXlvdXRfTGFiZWwgKmxhYmVsX2xheW91dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXb3JkICpkZXRfc3RhY2tfcG9pbnRlciwgV29yZCAq
Y3VycmVudF9mcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyIGluY2x1ZGVfdHJhY2VfZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyIGluY2x1ZGVfY29udGV4dHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTVJfUHJpbnRfU3RhY2tfUmVjb3Jk
IHByaW50X3N0YWNrX3JlY29yZCk7CiMgODAgIi4uL3J1bnRpbWUvbWVyY3Vy
eV9zdGFja190cmFjZS5oIgpleHRlcm4gdm9pZCBNUl9kdW1wX25vbmRldF9z
dGFja19mcm9tX2xheW91dChGSUxFICpmcCwgV29yZCAqYmFzZV9tYXhmcik7
CiMgOTcgIi4uL3J1bnRpbWUvbWVyY3VyeV9zdGFja190cmFjZS5oIgpleHRl
cm4gY29uc3QgTVJfU3RhY2tfTGF5b3V0X0xhYmVsICpNUl9maW5kX250aF9h
bmNlc3RvcigKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTVJfU3Rh
Y2tfTGF5b3V0X0xhYmVsICpsYWJlbF9sYXlvdXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBhbmNlc3Rvcl9sZXZlbCwgV29yZCAqKnN0YWNrX3Ry
YWNlX3NwLAogICAgICAgICAgICAgICAgICAgICAgICBXb3JkICoqc3RhY2tf
dHJhY2VfY3VyZnIsIGNvbnN0IGNoYXIgKipwcm9ibGVtKTsKIyAxMTkgIi4u
L3J1bnRpbWUvbWVyY3VyeV9zdGFja190cmFjZS5oIgp0eXBlZGVmIGVudW0g
ewogICAgICAgIFNURVBfRVJST1JfQkVGT1JFLAogICAgICAgIFNURVBfRVJS
T1JfQUZURVIsCgogICAgICAgIFNURVBfT0sKfSBNUl9TdGFja19XYWxrX1N0
ZXBfUmVzdWx0OwoKZXh0ZXJuIE1SX1N0YWNrX1dhbGtfU3RlcF9SZXN1bHQK
TVJfc3RhY2tfd2Fsa19zdGVwKGNvbnN0IE1SX1N0YWNrX0xheW91dF9FbnRy
eSAqZW50cnlfbGF5b3V0LAogICAgICAgICAgICAgICAgY29uc3QgTVJfU3Rh
Y2tfTGF5b3V0X0xhYmVsICoqcmV0dXJuX2xhYmVsX2xheW91dCwKICAgICAg
ICAgICAgICAgIFdvcmQgKipzdGFja190cmFjZV9zcF9wdHIsIFdvcmQgKipz
dGFja190cmFjZV9jdXJmcl9wdHIsCiAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICoqcHJvYmxlbV9wdHIpOwoKCgoKCgoKZXh0ZXJuIENvZGUgKk1SX3N0
YWNrX3RyYWNlX2JvdHRvbTsKIyAxNDcgIi4uL3J1bnRpbWUvbWVyY3VyeV9z
dGFja190cmFjZS5oIgpleHRlcm4gV29yZCAqTVJfbm9uZGV0X3N0YWNrX3Ry
YWNlX2JvdHRvbTsKCgoKCgoKCmV4dGVybiBjb25zdCBjaGFyICpNUl9kZXRp
c21fbmFtZXNbXTsKIyAxNjQgIi4uL3J1bnRpbWUvbWVyY3VyeV9zdGFja190
cmFjZS5oIgpleHRlcm4gY2hhciBNUl9maW5kX2NvbnRleHQoY29uc3QgTVJf
U3RhY2tfTGF5b3V0X0xhYmVsICpsYWJlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqKmZpbGVwdHIsIGludCAqbGluZXB0cik7CiMg
MTc0ICIuLi9ydW50aW1lL21lcmN1cnlfc3RhY2tfdHJhY2UuaCIKZXh0ZXJu
IHZvaWQgTVJfcHJpbnRfY2FsbF90cmFjZV9pbmZvKEZJTEUgKmZwLAogICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBNUl9TdGFja19MYXlvdXRfRW50
cnkgKmVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICBXb3JkICpiYXNl
X3NwLCBXb3JkICpiYXNlX2N1cmZyKTsKIyAxODUgIi4uL3J1bnRpbWUvbWVy
Y3VyeV9zdGFja190cmFjZS5oIgpleHRlcm4gdm9pZCBNUl9wcmludF9wcm9j
X2lkKEZJTEUgKmZwLCBjb25zdCBNUl9TdGFja19MYXlvdXRfRW50cnkgKmVu
dHJ5KTsKIyAxOTQgIi4uL3J1bnRpbWUvbWVyY3VyeV9zdGFja190cmFjZS5o
Igp0eXBlZGVmIGVudW0gewogICAgICAgIE1SX0NPTlRFWFRfTk9XSEVSRSwK
ICAgICAgICBNUl9DT05URVhUX0JFRk9SRSwKICAgICAgICBNUl9DT05URVhU
X0FGVEVSLAogICAgICAgIE1SX0NPTlRFWFRfUFJFVkxJTkUsCiAgICAgICAg
TVJfQ09OVEVYVF9ORVhUTElORQp9IE1SX0NvbnRleHRfUG9zaXRpb247Cgpl
eHRlcm4gdm9pZCBNUl9wcmludF9wcm9jX2lkX3RyYWNlX2FuZF9jb250ZXh0
KEZJTEUgKmZwLAogICAgICAgICAgICAgICAgICAgICAgICBNUl9Db250ZXh0
X1Bvc2l0aW9uIHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
TVJfU3RhY2tfTGF5b3V0X0VudHJ5ICplbnRyeSwKICAgICAgICAgICAgICAg
ICAgICAgICAgV29yZCAqYmFzZV9zcCwgV29yZCAqYmFzZV9jdXJmciwgY29u
c3QgY2hhciAqcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8sIGNoYXIgcHJpbnRfcGFyZW50
LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXJlbnRf
ZmlsZW5hbWUsIGludCBwYXJlbnRfbGluZW5vLAogICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgaW5kZW50KTsKCgoKCgpleHRlcm4gdm9pZCBNUl9kdW1w
X3N0YWNrX3JlY29yZF9wcmludChGSUxFICpmcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTVJfU3RhY2tfTGF5b3V0X0VudHJ5ICplbnRyeV9s
YXlvdXQsIGludCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHN0YXJ0X2xldmVsLCBXb3JkICpiYXNlX3NwLCBXb3JkICpiYXNlX2N1cmZy
LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFt
ZSwgaW50IGxpbmVudW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgY29udGV4dF9taXNtYXRjaCk7CgojIDUzICIuLi9ydW50aW1lL21lcmN1
cnlfaW1wLmgiIDIKCiMgMjggIi4uL3J1bnRpbWUvbWVyY3VyeV9hY2N1cmF0
ZV9nYy5oIiAxCmV4dGVybiB2b2lkIE1SX3NjaGVkdWxlX2FnYyhDb2RlICpw
Y19hdF9zaWduYWwsIFdvcmQgKnNwX2F0X3NpZ25hbCk7CiMgNDAgIi4uL3J1
bnRpbWUvbWVyY3VyeV9hY2N1cmF0ZV9nYy5oIgpzdHJ1Y3QgTVJfUm9vdE5v
ZGUgewogICAgICAgIFdvcmQgKnJvb3Q7CiAgICAgICAgV29yZCAqdHlwZV9p
bmZvOwogICAgICAgIHN0cnVjdCBNUl9Sb290Tm9kZSogbmV4dDsKfTsKCnR5
cGVkZWYgc3RydWN0IE1SX1Jvb3ROb2RlICpNUl9Sb290TGlzdDsKCgoKCgoK
CmV4dGVybiB2b2lkIE1SX2FnY19hZGRfcm9vdChXb3JkICpyb290X2FkZHIs
IFdvcmQgKnR5cGVfaW5mbyk7CgoKIyA1NCAiLi4vcnVudGltZS9tZXJjdXJ5
X2ltcC5oIiAyCgoKCiMgMTYgIi4uL3J1bnRpbWUvbWVyY3VyeV90YWdzLmgi
IDEKIyA1NyAiLi4vcnVudGltZS9tZXJjdXJ5X2ltcC5oIiAyCgoKIyAxNiAi
Li4vcnVudGltZS9tZXJjdXJ5X2NhbGxzLmgiIDEKIyAyMyAiLi4vcnVudGlt
ZS9tZXJjdXJ5X3Byb2YuaCIgMQpleHRlcm4gQ29kZSAqIHZvbGF0aWxlIE1S
X3Byb2ZfY3VycmVudF9wcm9jOwoKCgoKCgoKIyA2MSAiLi4vcnVudGltZS9t
ZXJjdXJ5X3Byb2YuaCIKZXh0ZXJuIHZvaWQgTVJfcHJvZl9vdXRwdXRfYWRk
cl9kZWNsKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IENvZGUgKmFkZHJlc3Mp
OwojIDc1ICIuLi9ydW50aW1lL21lcmN1cnlfcHJvZi5oIgpleHRlcm4gdm9p
ZCBNUl9wcm9mX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIE1SX3Byb2ZfZmlu
aXNoKHZvaWQpOwoKIyAxNiAiLi4vcnVudGltZS9tZXJjdXJ5X2NhbGxzLmgi
IDIKIyA1OSAiLi4vcnVudGltZS9tZXJjdXJ5X2ltcC5oIiAyCgojIDI0ICIu
Li9ydW50aW1lL21lcmN1cnlfZW5naW5lLmgiIDEKIyAyOCAiL3Vzci9pbmNs
dWRlL3NldGptcC5oIiAxIDMKCgoKIyA1NyAiL3Vzci9pbmNsdWRlL2JpdHMv
c2V0am1wLmgiIDEgMwp0eXBlZGVmIGludCBfX2ptcF9idWZbNl07CiMgMzEg
Ii91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMiAzCgoKCnR5cGVkZWYgc3RydWN0
IF9fam1wX2J1Zl90YWcKICB7CgoKCiAgICBfX2ptcF9idWYgX19qbXBidWY7
CiAgICBpbnQgX19tYXNrX3dhc19zYXZlZDsKICAgIF9fc2lnc2V0X3QgX19z
YXZlZF9tYXNrOwogIH0gam1wX2J1ZlsxXTsKCgoKCgpleHRlcm4gaW50IF9f
c2lnc2V0am1wIChqbXBfYnVmIF9fZW52LCBpbnQgX19zYXZlbWFzayk7Cgoj
IDcwICIvdXNyL2luY2x1ZGUvc2V0am1wLmgiIDMKZXh0ZXJuIHZvaWQgbG9u
Z2ptcCAoam1wX2J1ZiBfX2VudiwgaW50IF9fdmFsKQogX19hdHRyaWJ1dGVf
XyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX2xvbmdqbXAg
KGptcF9idWYgX19lbnYsIGludCBfX3ZhbCkKIF9fYXR0cmlidXRlX18gKChf
X25vcmV0dXJuX18pKTsKCgoKCgoKCnR5cGVkZWYgam1wX2J1ZiBzaWdqbXBf
YnVmOwoKCgoKCgoKCgpleHRlcm4gdm9pZCBzaWdsb25nam1wIChzaWdqbXBf
YnVmIF9fZW52LCBpbnQgX192YWwpCiBfX2F0dHJpYnV0ZV9fICgoX19ub3Jl
dHVybl9fKSk7CgoKIyAyNCAiLi4vcnVudGltZS9tZXJjdXJ5X2VuZ2luZS5o
IiAyCiMgMzcgIi4uL3J1bnRpbWUvbWVyY3VyeV9lbmdpbmUuaCIKZXh0ZXJu
IGNoYXIgTVJfZGVidWdmbGFnW107CgojIDgwICIuLi9ydW50aW1lL21lcmN1
cnlfZW5naW5lLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICAgICAgICAg
IGptcF9idWYgKm1lcmN1cnlfZW52OwoKCiAgICAgICAgICAgICAgICBqbXBf
YnVmIGVudjsKCgogICAgICAgICAgICAgICAgV29yZCAqc2F2ZWRfc3VjY2lw
OwogICAgICAgICAgICAgICAgV29yZCAqc2F2ZWRfc3A7CiAgICAgICAgICAg
ICAgICBXb3JkICpzYXZlZF9jdXJmcjsKICAgICAgICAgICAgICAgIFdvcmQg
KnNhdmVkX21heGZyOwoKCgoKCiAgICAgICAgICAgICAgICBXb3JkIHJlZ3Nb
M107CgoKICAgICAgICB9IE1SX2ptcF9idWY7CiMgMTI1ICIuLi9ydW50aW1l
L21lcmN1cnlfZW5naW5lLmgiCiMgMTc3ICIuLi9ydW50aW1lL21lcmN1cnlf
ZW5naW5lLmgiCnR5cGVkZWYgc3RydWN0IE1SX21lcmN1cnlfZW5naW5lX3N0
cnVjdCB7CiAgICAgICAgV29yZCBmYWtlX3JlZ1soMTUgKyAxMDI0KV07Cgoj
IDE4OCAiLi4vcnVudGltZS9tZXJjdXJ5X2VuZ2luZS5oIgogICAgICAgIE1S
X0NvbnRleHQgKnRoaXNfY29udGV4dDsKCgoKCiAgICAgICAgTVJfQ29udGV4
dCBjb250ZXh0OwoKCgoKIyAyMjEgIi4uL3J1bnRpbWUvbWVyY3VyeV9lbmdp
bmUuaCIKICAgICAgICBqbXBfYnVmICplX2ptcF9idWY7CiAgICAgICAgV29y
ZCAqZV9leGNlcHRpb247CiMgMjM4ICIuLi9ydW50aW1lL21lcmN1cnlfZW5n
aW5lLmgiCn0gTWVyY3VyeUVuZ2luZTsKIyAyNTAgIi4uL3J1bnRpbWUvbWVy
Y3VyeV9lbmdpbmUuaCIKIyAyNzIgIi4uL3J1bnRpbWUvbWVyY3VyeV9lbmdp
bmUuaCIKICBleHRlcm4gTWVyY3VyeUVuZ2luZSBNUl9lbmdpbmVfYmFzZTsK
IyAzMTMgIi4uL3J1bnRpbWUvbWVyY3VyeV9lbmdpbmUuaCIKZXh0ZXJuIE1l
cmN1cnlFbmdpbmUgKmNyZWF0ZV9lbmdpbmUodm9pZCk7CmV4dGVybiB2b2lk
IGRlc3Ryb3lfZW5naW5lKE1lcmN1cnlFbmdpbmUgKmVuZ2luZSk7CgoKCgoK
CmV4dGVybiB2b2lkIGluaXRfZW5naW5lKE1lcmN1cnlFbmdpbmUgKmVuZ2lu
ZSk7CmV4dGVybiB2b2lkIGZpbmFsaXplX2VuZ2luZShNZXJjdXJ5RW5naW5l
ICplbmdpbmUpOwoKCgoKCmV4dGVybiBXb3JkICogTVJfY2FsbF9lbmdpbmUo
Q29kZSAqZW50cnlfcG9pbnQsIGNoYXIgY2F0Y2hfZXhjZXB0aW9ucyk7CmV4
dGVybiB2b2lkIHRlcm1pbmF0ZV9lbmdpbmUodm9pZCk7CmV4dGVybiB2b2lk
IGR1bXBfcHJldl9sb2NhdGlvbnModm9pZCk7CgoKCgoKCgpleHRlcm4gdm9p
ZCBkb19yZWRvKHZvaWQpIF9fYXNtX18oIl9lbnRyeV8iICJkb19yZWRvIik7
CmV4dGVybiB2b2lkIGRvX2ZhaWwodm9pZCkgX19hc21fXygiX2VudHJ5XyIg
ImRvX2ZhaWwiKTsKZXh0ZXJuIHZvaWQgZG9fcmVzZXRfaHBfZmFpbCh2b2lk
KSBfX2FzbV9fKCJfZW50cnlfIiAiZG9fcmVzZXRfaHBfZmFpbCIpOwpleHRl
cm4gdm9pZCBkb19yZXNldF9mcmFtZXZhcjBfZmFpbCh2b2lkKSBfX2FzbV9f
KCJfZW50cnlfIiAiZG9fcmVzZXRfZnJhbWV2YXIwX2ZhaWwiKTsKZXh0ZXJu
IHZvaWQgZG9fc3VjY2VlZCh2b2lkKSBfX2FzbV9fKCJfZW50cnlfIiAiZG9f
c3VjY2VlZCIpOwpleHRlcm4gdm9pZCBkb19ub3RfcmVhY2hlZCh2b2lkKSBf
X2FzbV9fKCJfZW50cnlfIiAiZG9fbm90X3JlYWNoZWQiKTsKZXh0ZXJuIHZv
aWQgZXhjZXB0aW9uX2hhbmRsZXJfZG9fZmFpbCh2b2lkKSBfX2FzbV9fKCJf
ZW50cnlfIiAiZXhjZXB0aW9uX2hhbmRsZXJfZG9fZmFpbCIpOwoKIyA2MCAi
Li4vcnVudGltZS9tZXJjdXJ5X2ltcC5oIiAyCgoKCgojIDE1ICIuLi9ydW50
aW1lL21lcmN1cnlfc3RhY2tzLmgiIDEKCgoKIyAyMCAiLi4vcnVudGltZS9t
ZXJjdXJ5X3RhYmxpbmcuaCIgMQojIDg1ICIuLi9ydW50aW1lL21lcmN1cnlf
dHlwZV9pbmZvLmgiIDEKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgTVJfVHlwZUN0
b3JJbmZvX1N0cnVjdCAqTVJfVHlwZUN0b3JJbmZvOwp0eXBlZGVmIHN0cnVj
dCBNUl9UeXBlSW5mb19BbG1vc3RfU3RydWN0ICpNUl9UeXBlSW5mbzsKdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgTVJfUHNldWRvVHlwZUluZm9fQWxtb3N0X1N0
cnVjdCAqTVJfUHNldWRvVHlwZUluZm87CiMgMTMwICIuLi9ydW50aW1lL21l
cmN1cnlfdHlwZV9pbmZvLmgiCiMgMTU5ICIuLi9ydW50aW1lL21lcmN1cnlf
dHlwZV9pbmZvLmgiCnN0cnVjdCBNUl9UeXBlSW5mb19BbG1vc3RfU3RydWN0
IHsgTVJfVHlwZUN0b3JJbmZvIE1SX3RpX3R5cGVfY3Rvcl9pbmZvOyBJbnRl
Z2VyIE1SX3RpX2hpZ2hlcl9vcmRlcl9hcml0eTsgTVJfVHlwZUluZm8gTVJf
dGlfaGlnaGVyX29yZGVyX2FyZ190eXBlaW5mb3NbMF07IH07CgpzdHJ1Y3Qg
TVJfUHNldWRvVHlwZUluZm9fQWxtb3N0X1N0cnVjdCB7IE1SX1R5cGVDdG9y
SW5mbyBNUl9wdGlfdHlwZV9jdG9yX2luZm87IEludGVnZXIgTVJfcHRpX2hp
Z2hlcl9vcmRlcl9hcml0eTsgTVJfUHNldWRvVHlwZUluZm8gTVJfcHRpX2hp
Z2hlcl9vcmRlcl9hcmdfcHNldWRvX3R5cGVpbmZvc1swXTsgfTsKCgoKCgoK
CnR5cGVkZWYgTVJfVHlwZUluZm8gKk1SX1R5cGVJbmZvUGFyYW1zOwojIDE3
OSAiLi4vcnVudGltZS9tZXJjdXJ5X3R5cGVfaW5mby5oIgojIDM4NiAiLi4v
cnVudGltZS9tZXJjdXJ5X3R5cGVfaW5mby5oIgp0eXBlZGVmIGVudW0gewog
ICAgTVJfVFlQRUNUT1JfUkVQX0VOVU0sIG1lcmN1cnlfX3ByaXZhdGVfYnVp
bHRpbl9fTVJfVFlQRUNUT1JfUkVQX0VOVU0gPSBNUl9UWVBFQ1RPUl9SRVBf
RU5VTSwKICAgIE1SX1RZUEVDVE9SX1JFUF9FTlVNX1VTRVJFUSwgbWVyY3Vy
eV9fcHJpdmF0ZV9idWlsdGluX19NUl9UWVBFQ1RPUl9SRVBfRU5VTV9VU0VS
RVEgPSBNUl9UWVBFQ1RPUl9SRVBfRU5VTV9VU0VSRVEsCiAgICBNUl9UWVBF
Q1RPUl9SRVBfRFUsIG1lcmN1cnlfX3ByaXZhdGVfYnVpbHRpbl9fTVJfVFlQ
RUNUT1JfUkVQX0RVID0gTVJfVFlQRUNUT1JfUkVQX0RVLAogICAgTVJfVFlQ
RUNUT1JfUkVQX0RVX1VTRVJFUSwgbWVyY3VyeV9fcHJpdmF0ZV9idWlsdGlu
X19NUl9UWVBFQ1RPUl9SRVBfRFVfVVNFUkVRID0gTVJfVFlQRUNUT1JfUkVQ
X0RVX1VTRVJFUSwKICAgIE1SX1RZUEVDVE9SX1JFUF9OT1RBRywgbWVyY3Vy
eV9fcHJpdmF0ZV9idWlsdGluX19NUl9UWVBFQ1RPUl9SRVBfTk9UQUcgPSBN
Ul9UWVBFQ1RPUl9SRVBfTk9UQUcsCiAgICBNUl9UWVBFQ1RPUl9SRVBfTk9U
QUdfVVNFUkVRLCBtZXJjdXJ5X19wcml2YXRlX2J1aWx0aW5fX01SX1RZUEVD
VE9SX1JFUF9OT1RBR19VU0VSRVEgPSBNUl9UWVBFQ1RPUl9SRVBfTk9UQUdf
VVNFUkVRLAogICAgTVJfVFlQRUNUT1JfUkVQX0VRVUlWLCBtZXJjdXJ5X19w
cml2YXRlX2J1aWx0aW5fX01SX1RZUEVDVE9SX1JFUF9FUVVJViA9IE1SX1RZ
UEVDVE9SX1JFUF9FUVVJViwKICAgIE1SX1RZUEVDVE9SX1JFUF9FUVVJVl9W
QVIsIG1lcmN1cnlfX3ByaXZhdGVfYnVpbHRpbl9fTVJfVFlQRUNUT1JfUkVQ
X0VRVUlWX1ZBUiA9IE1SX1RZUEVDVE9SX1JFUF9FUVVJVl9WQVIsCiAgICBN
Ul9UWVBFQ1RPUl9SRVBfSU5ULCBtZXJjdXJ5X19wcml2YXRlX2J1aWx0aW5f
X01SX1RZUEVDVE9SX1JFUF9JTlQgPSBNUl9UWVBFQ1RPUl9SRVBfSU5ULAog
ICAgTVJfVFlQRUNUT1JfUkVQX0NIQVIsIG1lcmN1cnlfX3ByaXZhdGVfYnVp
bHRpbl9fTVJfVFlQRUNUT1JfUkVQX0NIQVIgPSBNUl9UWVBFQ1RPUl9SRVBf
Q0hBUiwKICAgIE1SX1RZUEVDVE9SX1JFUF9GTE9BVCwgbWVyY3VyeV9fcHJp
dmF0ZV9idWlsdGluX19NUl9UWVBFQ1RPUl9SRVBfRkxPQVQgPSBNUl9UWVBF
Q1RPUl9SRVBfRkxPQVQsCiAgICBNUl9UWVBFQ1RPUl9SRVBfU1RSSU5HLCBt
ZXJjdXJ5X19wcml2YXRlX2J1aWx0aW5fX01SX1RZUEVDVE9SX1JFUF9TVFJJ
TkcgPSBNUl9UWVBFQ1RPUl9SRVBfU1RSSU5HLAogICAgTVJfVFlQRUNUT1Jf
UkVQX1BSRUQsIG1lcmN1cnlfX3ByaXZhdGVfYnVpbHRpbl9fTVJfVFlQRUNU
T1JfUkVQX1BSRUQgPSBNUl9UWVBFQ1RPUl9SRVBfUFJFRCwKICAgIE1SX1RZ
UEVDVE9SX1JFUF9VTklWLCBtZXJjdXJ5X19wcml2YXRlX2J1aWx0aW5fX01S
X1RZUEVDVE9SX1JFUF9VTklWID0gTVJfVFlQRUNUT1JfUkVQX1VOSVYsCiAg
ICBNUl9UWVBFQ1RPUl9SRVBfVk9JRCwgbWVyY3VyeV9fcHJpdmF0ZV9idWls
dGluX19NUl9UWVBFQ1RPUl9SRVBfVk9JRCA9IE1SX1RZUEVDVE9SX1JFUF9W
T0lELAogICAgTVJfVFlQRUNUT1JfUkVQX0NfUE9JTlRFUiwgbWVyY3VyeV9f
cHJpdmF0ZV9idWlsdGluX19NUl9UWVBFQ1RPUl9SRVBfQ19QT0lOVEVSID0g
TVJfVFlQRUNUT1JfUkVQX0NfUE9JTlRFUiwKICAgIE1SX1RZUEVDVE9SX1JF
UF9UWVBFSU5GTywgbWVyY3VyeV9fcHJpdmF0ZV9idWlsdGluX19NUl9UWVBF
Q1RPUl9SRVBfVFlQRUlORk8gPSBNUl9UWVBFQ1RPUl9SRVBfVFlQRUlORk8s
CiAgICBNUl9UWVBFQ1RPUl9SRVBfVFlQRUNMQVNTSU5GTywgbWVyY3VyeV9f
cHJpdmF0ZV9idWlsdGluX19NUl9UWVBFQ1RPUl9SRVBfVFlQRUNMQVNTSU5G
TyA9IE1SX1RZUEVDVE9SX1JFUF9UWVBFQ0xBU1NJTkZPLAogICAgTVJfVFlQ
RUNUT1JfUkVQX0FSUkFZLCBtZXJjdXJ5X19wcml2YXRlX2J1aWx0aW5fX01S
X1RZUEVDVE9SX1JFUF9BUlJBWSA9IE1SX1RZUEVDVE9SX1JFUF9BUlJBWSwK
ICAgIE1SX1RZUEVDVE9SX1JFUF9TVUNDSVAsIG1lcmN1cnlfX3ByaXZhdGVf
YnVpbHRpbl9fTVJfVFlQRUNUT1JfUkVQX1NVQ0NJUCA9IE1SX1RZUEVDVE9S
X1JFUF9TVUNDSVAsCiAgICBNUl9UWVBFQ1RPUl9SRVBfSFAsIG1lcmN1cnlf
X3ByaXZhdGVfYnVpbHRpbl9fTVJfVFlQRUNUT1JfUkVQX0hQID0gTVJfVFlQ
RUNUT1JfUkVQX0hQLAogICAgTVJfVFlQRUNUT1JfUkVQX0NVUkZSLCBtZXJj
dXJ5X19wcml2YXRlX2J1aWx0aW5fX01SX1RZUEVDVE9SX1JFUF9DVVJGUiA9
IE1SX1RZUEVDVE9SX1JFUF9DVVJGUiwKICAgIE1SX1RZUEVDVE9SX1JFUF9N
QVhGUiwgbWVyY3VyeV9fcHJpdmF0ZV9idWlsdGluX19NUl9UWVBFQ1RPUl9S
RVBfTUFYRlIgPSBNUl9UWVBFQ1RPUl9SRVBfTUFYRlIsCiAgICBNUl9UWVBF
Q1RPUl9SRVBfUkVET0ZSLCBtZXJjdXJ5X19wcml2YXRlX2J1aWx0aW5fX01S
X1RZUEVDVE9SX1JFUF9SRURPRlIgPSBNUl9UWVBFQ1RPUl9SRVBfUkVET0ZS
LAogICAgTVJfVFlQRUNUT1JfUkVQX1JFRE9JUCwgbWVyY3VyeV9fcHJpdmF0
ZV9idWlsdGluX19NUl9UWVBFQ1RPUl9SRVBfUkVET0lQID0gTVJfVFlQRUNU
T1JfUkVQX1JFRE9JUCwKICAgIE1SX1RZUEVDVE9SX1JFUF9UUkFJTF9QVFIs
IG1lcmN1cnlfX3ByaXZhdGVfYnVpbHRpbl9fTVJfVFlQRUNUT1JfUkVQX1RS
QUlMX1BUUiA9IE1SX1RZUEVDVE9SX1JFUF9UUkFJTF9QVFIsCiAgICBNUl9U
WVBFQ1RPUl9SRVBfVElDS0VULCBtZXJjdXJ5X19wcml2YXRlX2J1aWx0aW5f
X01SX1RZUEVDVE9SX1JFUF9USUNLRVQgPSBNUl9UWVBFQ1RPUl9SRVBfVElD
S0VULAogICAgTVJfVFlQRUNUT1JfUkVQX05PVEFHX0dST1VORCwgbWVyY3Vy
eV9fcHJpdmF0ZV9idWlsdGluX19NUl9UWVBFQ1RPUl9SRVBfTk9UQUdfR1JP
VU5EID0gTVJfVFlQRUNUT1JfUkVQX05PVEFHX0dST1VORCwKICAgIE1SX1RZ
UEVDVE9SX1JFUF9OT1RBR19HUk9VTkRfVVNFUkVRLCBtZXJjdXJ5X19wcml2
YXRlX2J1aWx0aW5fX01SX1RZUEVDVE9SX1JFUF9OT1RBR19HUk9VTkRfVVNF
UkVRID0gTVJfVFlQRUNUT1JfUkVQX05PVEFHX0dST1VORF9VU0VSRVEsCiAg
ICBNUl9UWVBFQ1RPUl9SRVBfRVFVSVZfR1JPVU5ELCBtZXJjdXJ5X19wcml2
YXRlX2J1aWx0aW5fX01SX1RZUEVDVE9SX1JFUF9FUVVJVl9HUk9VTkQgPSBN
Ul9UWVBFQ1RPUl9SRVBfRVFVSVZfR1JPVU5ELAoKCgoKICAgIE1SX1RZUEVD
VE9SX1JFUF9VTktOT1dOLCBtZXJjdXJ5X19wcml2YXRlX2J1aWx0aW5fX01S
X1RZUEVDVE9SX1JFUF9VTktOT1dOID0gTVJfVFlQRUNUT1JfUkVQX1VOS05P
V04KfSBNUl9UeXBlQ3RvclJlcDsKCgoKCgoKCiMgNDg0ICIuLi9ydW50aW1l
L21lcmN1cnlfdHlwZV9pbmZvLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgIE1S
X2ludF9sZWFzdDE2X3QgTVJfZXhpc3RfYXJnX251bTsKICAgIE1SX2ludF9s
ZWFzdDE2X3QgTVJfZXhpc3Rfb2Zmc2V0X2luX3RjaTsKfSBNUl9EdUV4aXN0
TG9jbjsKIyA1MTUgIi4uL3J1bnRpbWUvbWVyY3VyeV90eXBlX2luZm8uaCIK
dHlwZWRlZiBzdHJ1Y3QgewogICAgTVJfaW50X2xlYXN0MTZfdCBNUl9leGlz
dF90eXBlaW5mb3NfcGxhaW47CiAgICBNUl9pbnRfbGVhc3QxNl90IE1SX2V4
aXN0X3R5cGVpbmZvc19pbl90Y2k7CiAgICBNUl9pbnRfbGVhc3QxNl90IE1S
X2V4aXN0X3RjaXM7CiAgICBjb25zdCBNUl9EdUV4aXN0TG9jbiAqTVJfZXhp
c3RfdHlwZWluZm9fbG9jbnM7Cn0gTVJfRHVFeGlzdEluZm87CiMgNTcwICIu
Li9ydW50aW1lL21lcmN1cnlfdHlwZV9pbmZvLmgiCnR5cGVkZWYgZW51bSB7
CiAgICBNUl9TRUNUQUdfTk9ORSwgbWVyY3VyeV9fcHJpdmF0ZV9idWlsdGlu
X19NUl9TRUNUQUdfTk9ORSA9IE1SX1NFQ1RBR19OT05FLAogICAgTVJfU0VD
VEFHX0xPQ0FMLCBtZXJjdXJ5X19wcml2YXRlX2J1aWx0aW5fX01SX1NFQ1RB
R19MT0NBTCA9IE1SX1NFQ1RBR19MT0NBTCwKICAgIE1SX1NFQ1RBR19SRU1P
VEUsIG1lcmN1cnlfX3ByaXZhdGVfYnVpbHRpbl9fTVJfU0VDVEFHX1JFTU9U
RSA9IE1SX1NFQ1RBR19SRU1PVEUKfSBNUl9TZWN0YWdfTG9jbjsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgIENvbnN0U3RyaW5nIE1SX2R1X2Z1bmN0b3JfbmFt
ZTsKICAgIE1SX2ludF9sZWFzdDE2X3QgTVJfZHVfZnVuY3Rvcl9vcmlnX2Fy
aXR5OwogICAgTVJfaW50X2xlYXN0MTZfdCBNUl9kdV9mdW5jdG9yX2FyZ190
eXBlX2NvbnRhaW5zX3ZhcjsKICAgIE1SX1NlY3RhZ19Mb2NuIE1SX2R1X2Z1
bmN0b3Jfc2VjdGFnX2xvY247CiAgICBNUl9pbnRfbGVhc3Q4X3QgTVJfZHVf
ZnVuY3Rvcl9wcmltYXJ5OwogICAgTVJfaW50X2xlYXN0MzJfdCBNUl9kdV9m
dW5jdG9yX3NlY29uZGFyeTsKICAgIE1SX2ludF9sZWFzdDMyX3QgTVJfZHVf
ZnVuY3Rvcl9vcmRpbmFsOwogICAgY29uc3QgTVJfUHNldWRvVHlwZUluZm8g
Kk1SX2R1X2Z1bmN0b3JfYXJnX3R5cGVzOwogICAgY29uc3QgQ29uc3RTdHJp
bmcgKk1SX2R1X2Z1bmN0b3JfYXJnX25hbWVzOwogICAgY29uc3QgTVJfRHVF
eGlzdEluZm8gKk1SX2R1X2Z1bmN0b3JfZXhpc3RfaW5mbzsKfSBNUl9EdUZ1
bmN0b3JEZXNjOwojIDU5NiAiLi4vcnVudGltZS9tZXJjdXJ5X3R5cGVfaW5m
by5oIgojIDYxOSAiLi4vcnVudGltZS9tZXJjdXJ5X3R5cGVfaW5mby5oIgp0
eXBlZGVmIHN0cnVjdCB7CiAgICBDb25zdFN0cmluZyBNUl9lbnVtX2Z1bmN0
b3JfbmFtZTsKICAgIE1SX2ludF9sZWFzdDMyX3QgTVJfZW51bV9mdW5jdG9y
X29yZGluYWw7Cn0gTVJfRW51bUZ1bmN0b3JEZXNjOwoKCgp0eXBlZGVmIHN0
cnVjdCB7CiAgICBDb25zdFN0cmluZyBNUl9ub3RhZ19mdW5jdG9yX25hbWU7
CiAgICBNUl9Qc2V1ZG9UeXBlSW5mbyBNUl9ub3RhZ19mdW5jdG9yX2FyZ190
eXBlOwp9IE1SX05vdGFnRnVuY3RvckRlc2M7CiMgNjUxICIuLi9ydW50aW1l
L21lcmN1cnlfdHlwZV9pbmZvLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgIE1S
X2ludF9sZWFzdDMyX3QgTVJfc2VjdGFnX3NoYXJlcnM7CiAgICBNUl9TZWN0
YWdfTG9jbiBNUl9zZWN0YWdfbG9jbjsKICAgIGNvbnN0IE1SX0R1RnVuY3Rv
ckRlc2MgKiBjb25zdCAqIE1SX3NlY3RhZ19hbHRlcm5hdGl2ZXM7Cn0gTVJf
RHVQdGFnTGF5b3V0OwoKdHlwZWRlZiBNUl9EdVB0YWdMYXlvdXQgKk1SX0R1
VHlwZUxheW91dDsKIyA2NzQgIi4uL3J1bnRpbWUvbWVyY3VyeV90eXBlX2lu
Zm8uaCIKdHlwZWRlZiBNUl9FbnVtRnVuY3RvckRlc2MgKipNUl9FbnVtVHlw
ZUxheW91dDsKIyA2ODcgIi4uL3J1bnRpbWUvbWVyY3VyeV90eXBlX2luZm8u
aCIKdHlwZWRlZiBNUl9Ob3RhZ0Z1bmN0b3JEZXNjICpNUl9Ob3RhZ1R5cGVM
YXlvdXQ7CiMgNzAzICIuLi9ydW50aW1lL21lcmN1cnlfdHlwZV9pbmZvLmgi
CnR5cGVkZWYgTVJfUHNldWRvVHlwZUluZm8gTVJfRXF1aXZMYXlvdXQ7CgoK
CgoKCgoKCgoKCgoKICB0eXBlZGVmIENvZGUgKk1SX1Byb2NBZGRyOwojIDcz
NCAiLi4vcnVudGltZS9tZXJjdXJ5X3R5cGVfaW5mby5oIgp0eXBlZGVmIHVu
aW9uIHsKICAgIHZvaWQgKmxheW91dF9pbml0OwogICAgTVJfRHVUeXBlTGF5
b3V0IGxheW91dF9kdTsKICAgIE1SX0VudW1UeXBlTGF5b3V0IGxheW91dF9l
bnVtOwogICAgTVJfTm90YWdUeXBlTGF5b3V0IGxheW91dF9ub3RhZzsKICAg
IE1SX0VxdWl2TGF5b3V0IGxheW91dF9lcXVpdjsKfSBNUl9UeXBlTGF5b3V0
OwojIDc2MCAiLi4vcnVudGltZS9tZXJjdXJ5X3R5cGVfaW5mby5oIgp0eXBl
ZGVmIHVuaW9uIHsKICAgIHZvaWQgKmZ1bmN0b3JzX2luaXQ7CiAgICBNUl9E
dUZ1bmN0b3JEZXNjICoqZnVuY3RvcnNfZHU7CiAgICBNUl9FbnVtRnVuY3Rv
ckRlc2MgKipmdW5jdG9yc19lbnVtOwogICAgTVJfTm90YWdGdW5jdG9yRGVz
YyAqZnVuY3RvcnNfbm90YWc7Cn0gTVJfVHlwZUZ1bmN0b3JzOwojIDc4MCAi
Li4vcnVudGltZS9tZXJjdXJ5X3R5cGVfaW5mby5oIgpzdHJ1Y3QgTVJfVHlw
ZUN0b3JJbmZvX1N0cnVjdCB7CiAgICBJbnRlZ2VyIGFyaXR5OwogICAgTVJf
UHJvY0FkZHIgdW5pZnlfcHJlZDsKICAgIE1SX1Byb2NBZGRyIG5ld191bmlm
eV9wcmVkOwogICAgTVJfUHJvY0FkZHIgY29tcGFyZV9wcmVkOwogICAgTVJf
VHlwZUN0b3JSZXAgdHlwZV9jdG9yX3JlcDsKICAgIE1SX1Byb2NBZGRyIHNv
bHZlcl9wcmVkOwogICAgTVJfUHJvY0FkZHIgaW5pdF9wcmVkOwogICAgQ29u
c3RTdHJpbmcgdHlwZV9jdG9yX21vZHVsZV9uYW1lOwogICAgQ29uc3RTdHJp
bmcgdHlwZV9jdG9yX25hbWU7CiAgICBJbnRlZ2VyIHR5cGVfY3Rvcl92ZXJz
aW9uOwogICAgTVJfVHlwZUZ1bmN0b3JzIHR5cGVfZnVuY3RvcnM7CiAgICBN
Ul9UeXBlTGF5b3V0IHR5cGVfbGF5b3V0OwogICAgTVJfaW50X2xlYXN0MzJf
dCB0eXBlX2N0b3JfbnVtX2Z1bmN0b3JzOwogICAgTVJfaW50X2xlYXN0OF90
IHR5cGVfY3Rvcl9udW1fcHRhZ3M7CgoKCgoKCn07CiMgODEwICIuLi9ydW50
aW1lL21lcmN1cnlfdHlwZV9pbmZvLmgiCiMgOTM0ICIuLi9ydW50aW1lL21l
cmN1cnlfdHlwZV9pbmZvLmgiCiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBNUl9U
eXBlQ3RvckluZm9fU3RydWN0IG1lcmN1cnlfZGF0YV9fX3R5cGVfY3Rvcl9p
bmZvX3ByZWRfMDsKICBleHRlcm4gY29uc3Qgc3RydWN0IE1SX1R5cGVDdG9y
SW5mb19TdHJ1Y3QgbWVyY3VyeV9kYXRhX19fdHlwZV9jdG9yX2luZm9fZnVu
Y18wOwojIDk1NyAiLi4vcnVudGltZS9tZXJjdXJ5X3R5cGVfaW5mby5oIgpl
eHRlcm4gaW50IE1SX2NvbXBhcmVfdHlwZV9pbmZvKE1SX1R5cGVJbmZvIHQx
LCBNUl9UeXBlSW5mbyB0Mik7CiMgOTY4ICIuLi9ydW50aW1lL21lcmN1cnlf
dHlwZV9pbmZvLmgiCmV4dGVybiBNUl9UeXBlSW5mbyBNUl9jb2xsYXBzZV9l
cXVpdmFsZW5jZXMoTVJfVHlwZUluZm8gdHlwZV9pbmZvKTsKIyAxMDA4ICIu
Li9ydW50aW1lL21lcmN1cnlfdHlwZV9pbmZvLmgiCmV4dGVybiBNUl9UeXBl
SW5mbyBNUl9jcmVhdGVfdHlwZV9pbmZvKAogICAgICAgICAgICAgICAgY29u
c3QgTVJfVHlwZUluZm9QYXJhbXMgdHlwZV9pbmZvX3BhcmFtcywKICAgICAg
ICAgICAgICAgIGNvbnN0IE1SX1BzZXVkb1R5cGVJbmZvIHBzZXVkb190eXBl
X2luZm8pOwpleHRlcm4gTVJfVHlwZUluZm8gTVJfY3JlYXRlX3R5cGVfaW5m
b19tYXliZV9leGlzdHEoCiAgICAgICAgICAgICAgICBjb25zdCBNUl9UeXBl
SW5mb1BhcmFtcyB0eXBlX2luZm9fcGFyYW1zLAogICAgICAgICAgICAgICAg
Y29uc3QgTVJfUHNldWRvVHlwZUluZm8gcHNldWRvX3R5cGVfaW5mbywKICAg
ICAgICAgICAgICAgIGNvbnN0IFdvcmQgKmRhdGFfdmFsdWUsCiAgICAgICAg
ICAgICAgICBjb25zdCBNUl9EdUZ1bmN0b3JEZXNjICpmdW5jdG9yX2Rlc2Ny
aXB0b3IpOwoKc3RydWN0IE1SX01lbW9yeUNlbGxOb2RlIHsKICAgIHZvaWQg
KmRhdGE7CiAgICBzdHJ1Y3QgTVJfTWVtb3J5Q2VsbE5vZGUgKm5leHQ7Cn07
Cgp0eXBlZGVmIHN0cnVjdCBNUl9NZW1vcnlDZWxsTm9kZSAqTVJfTWVtb3J5
TGlzdDsKCmV4dGVybiBNUl9UeXBlSW5mbyBNUl9tYWtlX3R5cGVfaW5mbygK
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTVJfVHlwZUluZm9QYXJh
bXMgdHlwZV9pbmZvX3BhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgTVJfUHNldWRvVHlwZUluZm8gcHNldWRvX3R5cGVfaW5mbywKICAg
ICAgICAgICAgICAgICAgICAgICAgTVJfTWVtb3J5TGlzdCAqYWxsb2NhdGVk
KTsKZXh0ZXJuIE1SX1R5cGVJbmZvIE1SX21ha2VfdHlwZV9pbmZvX21heWJl
X2V4aXN0cSgKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTVJfVHlw
ZUluZm9QYXJhbXMgdHlwZV9pbmZvX3BhcmFtcywKICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTVJfUHNldWRvVHlwZUluZm8gcHNldWRvX3R5cGVf
aW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZCAqZGF0
YV92YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTVJfRHVG
dW5jdG9yRGVzYyAqZnVuY3Rvcl9kZXNjcmlwdG9yLAogICAgICAgICAgICAg
ICAgICAgICAgICBNUl9NZW1vcnlMaXN0ICphbGxvY2F0ZWQpOwpleHRlcm4g
dm9pZCBNUl9kZWFsbG9jYXRlKE1SX01lbW9yeUxpc3QgYWxsb2NhdGVkX21l
bW9yeV9jZWxscyk7CgoKCiMgMjAgIi4uL3J1bnRpbWUvbWVyY3VyeV90YWJs
aW5nLmgiIDIKCgojIDE5ICIuLi9ydW50aW1lL21lcmN1cnlfcmVnX3dvcmth
cm91bmRzLmgiIDEKIyAyNSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDEg
MwojIDMwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAzOSAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMwoKCgoKIyA0MyAiL3Vzci9pbmNsdWRlL2JpdHMv
dGltZS5oIiAxIDMKdHlwZWRlZiBpbnQgX19jbG9ja2lkX3Q7CgoKdHlwZWRl
ZiBpbnQgX190aW1lcl90OwoKIyA0MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MiAzCiMgNjAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKdHlwZWRlZiBfX2Ns
b2NrX3QgY2xvY2tfdDsKCiMgOTUgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMK
c3RydWN0IHRtCnsKICBpbnQgdG1fc2VjOwogIGludCB0bV9taW47CiAgaW50
IHRtX2hvdXI7CiAgaW50IHRtX21kYXk7CiAgaW50IHRtX21vbjsKICBpbnQg
dG1feWVhcjsKICBpbnQgdG1fd2RheTsKICBpbnQgdG1feWRheTsKICBpbnQg
dG1faXNkc3Q7CgoKICBsb25nIGludCB0bV9nbXRvZmY7CiAgX19jb25zdCBj
aGFyICp0bV96b25lOwoKCgoKfTsKCgoKCnR5cGVkZWYgX19jbG9ja2lkX3Qg
Y2xvY2tpZF90OwoKCnR5cGVkZWYgX190aW1lcl90IHRpbWVyX3Q7CgoKc3Ry
dWN0IGl0aW1lcnNwZWMKICB7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50
ZXJ2YWw7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7CiAgfTsKCgpz
dHJ1Y3Qgc2lnZXZlbnQ7CgojIDE0NiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MwpleHRlcm4gY2xvY2tfdCBjbG9jayAodm9pZCk7CgoKZXh0ZXJuIHRpbWVf
dCB0aW1lICh0aW1lX3QgKl9fdGltZXIpOwoKCmV4dGVybiBkb3VibGUgZGlm
ZnRpbWUgKHRpbWVfdCBfX3RpbWUxLCB0aW1lX3QgX190aW1lMCkKIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gdGltZV90IG1rdGlt
ZSAoc3RydWN0IHRtICpfX3RwKTsKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmZ0
aW1lIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKTsKCiMgMTc2ICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAzCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19j
b25zdCB0aW1lX3QgKl9fdGltZXIpOwoKCgpleHRlcm4gc3RydWN0IHRtICps
b2NhbHRpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKTsKCgoKCmV4dGVy
biBzdHJ1Y3QgdG0gKmdtdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0
cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApOwoKCgpleHRlcm4gc3RydWN0IHRt
ICpsb2NhbHRpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190
aW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0
bSAqX19yZXN0cmljdCBfX3RwKTsKCgoKCmV4dGVybiBjaGFyICphc2N0aW1l
IChfX2NvbnN0IHN0cnVjdCB0bSAqX190cCk7CgoKZXh0ZXJuIGNoYXIgKmN0
aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcik7CgoKCgoKCmV4dGVybiBj
aGFyICphc2N0aW1lX3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0
IF9fdHAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJp
Y3QgX19idWYpOwoKCmV4dGVybiBjaGFyICpjdGltZV9yIChfX2NvbnN0IHRp
bWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqX19yZXN0cmljdCBfX2J1Zik7CgoKCgpleHRlcm4gY2hhciAq
X190em5hbWVbMl07CmV4dGVybiBpbnQgX19kYXlsaWdodDsKZXh0ZXJuIGxv
bmcgaW50IF9fdGltZXpvbmU7CgoKCgpleHRlcm4gY2hhciAqdHpuYW1lWzJd
OwoKCgpleHRlcm4gdm9pZCB0enNldCAodm9pZCk7CgoKCmV4dGVybiBpbnQg
ZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCB0aW1lem9uZTsKCgoKCgpleHRl
cm4gaW50IHN0aW1lIChfX2NvbnN0IHRpbWVfdCAqX193aGVuKTsKIyAyNTMg
Ii91c3IvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIHRpbWVfdCB0aW1lZ20g
KHN0cnVjdCB0bSAqX190cCk7CgoKZXh0ZXJuIHRpbWVfdCB0aW1lbG9jYWwg
KHN0cnVjdCB0bSAqX190cCk7CgoKZXh0ZXJuIGludCBkeXNpemUgKGludCBf
X3llYXIpOwoKCgoKCmV4dGVybiBpbnQgbmFub3NsZWVwIChfX2NvbnN0IHN0
cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwKICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW1haW5pbmcpOwoKCgpl
eHRlcm4gaW50IGNsb2NrX2dldHJlcyAoY2xvY2tpZF90IF9fY2xvY2tfaWQs
IHN0cnVjdCB0aW1lc3BlYyAqX19yZXMpOwoKCmV4dGVybiBpbnQgY2xvY2tf
Z2V0dGltZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1lc3Bl
YyAqX190cCk7CgoKZXh0ZXJuIGludCBjbG9ja19zZXR0aW1lIChjbG9ja2lk
X3QgX19jbG9ja19pZCwgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fdHAp
CjsKCiMgMjkxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBpbnQg
dGltZXJfY3JlYXRlIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHNp
Z2V2ZW50ICpfX2V2cCwKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVy
X3QgKl9fdGltZXJpZCk7CgoKZXh0ZXJuIGludCB0aW1lcl9kZWxldGUgKHRp
bWVyX3QgX190aW1lcmlkKTsKCgpleHRlcm4gaW50IHRpbWVyX3NldHRpbWUg
KHRpbWVyX3QgX190aW1lcmlkLCBpbnQgX19mbGFncywKICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpfX3Zh
bHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJz
cGVjICpfX292YWx1ZSk7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1lICh0
aW1lcl90IF9fdGltZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMgKl9fdmFsdWUp
CjsKCgpleHRlcm4gaW50IHRpbWVyX2dldG92ZXJydW4gKHRpbWVyX3QgX190
aW1lcmlkKTsKIyAzNDMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAyNSAi
L3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMwoKCgoKIyA3MyAiL3Vzci9p
bmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKc3RydWN0IHRpbWV2YWwKICB7CiAg
ICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7
CiAgfTsKIyAyOSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMwoKCnR5
cGVkZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCiMgNTEgIi91
c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCnN0cnVjdCB0aW1lem9uZQogIHsK
ICAgIGludCB0el9taW51dGVzd2VzdDsKICAgIGludCB0el9kc3R0aW1lOwog
IH07CgoKdHlwZWRlZiBzdHJ1Y3QgdGltZXpvbmUgKl9fdGltZXpvbmVfcHRy
X3Q7CiMgNjggIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCmV4dGVybiBp
bnQgZ2V0dGltZW9mZGF5IChzdHJ1Y3QgdGltZXZhbCAqX190diwgX190aW1l
em9uZV9wdHJfdCBfX3R6KTsKCgoKZXh0ZXJuIGludCBzZXR0aW1lb2ZkYXkg
KF9fY29uc3Qgc3RydWN0IHRpbWV2YWwgKl9fdHYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lem9uZSAqX190eik7CgoK
CgoKZXh0ZXJuIGludCBhZGp0aW1lIChfX2NvbnN0IHN0cnVjdCB0aW1ldmFs
ICpfX2RlbHRhLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFs
ICpfX29sZGRlbHRhKTsKCgoKZW51bSBfX2l0aW1lcl93aGljaAogIHsKCiAg
ICBJVElNRVJfUkVBTCA9IDAsCgoKICAgIElUSU1FUl9WSVJUVUFMID0gMSwK
CgoKICAgIElUSU1FUl9QUk9GID0gMgoKICB9OwoKCgpzdHJ1Y3QgaXRpbWVy
dmFsCiAgewoKICAgIHN0cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwoKICAg
IHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwogIH07CgoKCgp0eXBlZGVmIGlu
dCBfX2l0aW1lcl93aGljaF90OwoKCgoKZXh0ZXJuIGludCBnZXRpdGltZXIg
KF9faXRpbWVyX3doaWNoX3QgX193aGljaCwKICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBpdGltZXJ2YWwgKl9fdmFsdWUpOwoKCgoKZXh0ZXJuIGlu
dCBzZXRpdGltZXIgKF9faXRpbWVyX3doaWNoX3QgX193aGljaCwKICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqX19u
ZXcsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVydmFsICpf
X29sZCk7CgoKCmV4dGVybiBpbnQgdXRpbWVzIChfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwgX19jb25zdCBzdHJ1Y3QgdGltZXZhbCBfX3R2cFsyXSkKOwoKCgoK
IyAxNjAgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCiMgMTkgIi4uL3J1
bnRpbWUvbWVyY3VyeV9yZWdfd29ya2Fyb3VuZHMuaCIgMgojIDMyICIuLi9y
dW50aW1lL21lcmN1cnlfcmVnX3dvcmthcm91bmRzLmgiCmV4dGVybiB2b2lk
IE1SX21lbWNweSh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVf
dCBuYnl0ZXMpOwoKCgoKCgoKICB2b2lkIE1SX2ZkX3plcm8oZmRfc2V0ICpm
ZHNldCk7CiMgMjIgIi4uL3J1bnRpbWUvbWVyY3VyeV90YWJsaW5nLmgiIDIK
IyAzNSAiLi4vcnVudGltZS9tZXJjdXJ5X3RhYmxpbmcuaCIKdHlwZWRlZiB1
bmlvbiBNUl9UYWJsZU5vZGVfVW5pb24gTVJfVGFibGVOb2RlOwp0eXBlZGVm
IHN0cnVjdCBNUl9IYXNoVGFibGVfU3RydWN0IE1SX0hhc2hUYWJsZTsKdHlw
ZWRlZiBzdHJ1Y3QgTVJfU3ViZ29hbF9TdHJ1Y3QgTVJfU3ViZ29hbDsKdHlw
ZWRlZiBzdHJ1Y3QgTVJfU3ViZ29hbExpc3ROb2RlX1N0cnVjdCBNUl9TdWJn
b2FsTGlzdE5vZGU7CnR5cGVkZWYgc3RydWN0IE1SX0Fuc3dlckxpc3ROb2Rl
X1N0cnVjdCBNUl9BbnN3ZXJMaXN0Tm9kZTsKdHlwZWRlZiBzdHJ1Y3QgTVJf
Q29uc3VtZXJMaXN0Tm9kZV9TdHJ1Y3QgTVJfQ29uc3VtZXJMaXN0Tm9kZTsK
CnR5cGVkZWYgTVJfVGFibGVOb2RlICpNUl9UcmllTm9kZTsKdHlwZWRlZiBN
Ul9TdWJnb2FsTGlzdE5vZGUgKk1SX1N1YmdvYWxMaXN0Owp0eXBlZGVmIE1S
X0Fuc3dlckxpc3ROb2RlICpNUl9BbnN3ZXJMaXN0Owp0eXBlZGVmIE1SX0Nv
bnN1bWVyTGlzdE5vZGUgKk1SX0NvbnN1bWVyTGlzdDsKIyAxMjggIi4uL3J1
bnRpbWUvbWVyY3VyeV90YWJsaW5nLmgiCnVuaW9uIE1SX1RhYmxlTm9kZV9V
bmlvbiB7CiAgICAgICAgSW50ZWdlciBNUl9pbnRlZ2VyOwogICAgICAgIE1S
X0hhc2hUYWJsZSAqTVJfaGFzaF90YWJsZTsKICAgICAgICBNUl9UYWJsZU5v
ZGUgKk1SX2ZpeF90YWJsZTsKICAgICAgICBNUl9UYWJsZU5vZGUgKk1SX3N0
YXJ0X3RhYmxlOwogICAgICAgIFVuc2lnbmVkIE1SX3NpbXBsZXRhYmxlX3N0
YXR1czsKICAgICAgICBNUl9TdWJnb2FsICpNUl9zdWJnb2FsOwogICAgICAg
IFdvcmQgKk1SX2Fuc3dlcmJsb2NrOwp9OwoKCgoKCgp0eXBlZGVmIGVudW0g
ewogICAgICAgIE1SX1NVQkdPQUxfSU5BQ1RJVkUsCiAgICAgICAgTVJfU1VC
R09BTF9BQ1RJVkUsCiAgICAgICAgTVJfU1VCR09BTF9DT01QTEVURQp9IE1S
X1N1YmdvYWxTdGF0dXM7CgpzdHJ1Y3QgTVJfQW5zd2VyTGlzdE5vZGVfU3Ry
dWN0IHsKICAgICAgICBJbnRlZ2VyIGFuc3dlcl9udW07CiAgICAgICAgTVJf
VGFibGVOb2RlIGFuc3dlcl9kYXRhOwogICAgICAgIE1SX0Fuc3dlckxpc3Qg
bmV4dF9hbnN3ZXI7Cn07CiMgMTg0ICIuLi9ydW50aW1lL21lcmN1cnlfdGFi
bGluZy5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgQ29kZSAqc3VjY19p
cDsKICAgICAgICBXb3JkICpzX3A7CiAgICAgICAgV29yZCAqY3VyX2ZyOwog
ICAgICAgIFdvcmQgKm1heF9mcjsKICAgICAgICBXb3JkICpub25fc3RhY2tf
YmxvY2tfc3RhcnQ7CiAgICAgICAgV29yZCBub25fc3RhY2tfYmxvY2tfc2l6
ZTsKICAgICAgICBXb3JkICpub25fc3RhY2tfYmxvY2s7CiAgICAgICAgV29y
ZCAqZGV0X3N0YWNrX2Jsb2NrX3N0YXJ0OwogICAgICAgIFdvcmQgZGV0X3N0
YWNrX2Jsb2NrX3NpemU7CiAgICAgICAgV29yZCAqZGV0X3N0YWNrX2Jsb2Nr
OwogICAgICAgIEludGVnZXIgZ2VuX25leHQ7CiAgICAgICAgY2hhciAqZ2Vu
ZXJhdG9yX3N0YWNrX2Jsb2NrOwogICAgICAgIEludGVnZXIgY3V0X25leHQ7
CiAgICAgICAgY2hhciAqY3V0X3N0YWNrX2Jsb2NrOwp9IE1SX1NhdmVkU3Rh
dGU7CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIE1SX1NhdmVkU3RhdGUg
c2F2ZWRfc3RhdGU7CiAgICAgICAgTVJfQW5zd2VyTGlzdCAqcmVtYWluaW5n
X2Fuc3dlcl9saXN0X3B0cjsKfSBNUl9Db25zdW1lcjsKCnN0cnVjdCBNUl9D
b25zdW1lckxpc3ROb2RlX1N0cnVjdCB7CiAgICAgICAgTVJfQ29uc3VtZXIg
Kml0ZW07CiAgICAgICAgTVJfQ29uc3VtZXJMaXN0IG5leHQ7Cn07CgoKCgoK
CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBNUl9TYXZlZFN0YXRlIGxlYWRl
cl9zdGF0ZTsKICAgICAgICBNUl9TdWJnb2FsTGlzdCBzdWJnb2FsX2xpc3Q7
CiAgICAgICAgTVJfU3ViZ29hbCAqY3VyX3N1YmdvYWw7CiAgICAgICAgTVJf
Q29uc3VtZXJMaXN0IGNvbnN1bWVyX2xpc3Q7CiAgICAgICAgTVJfQ29uc3Vt
ZXIgKmN1cl9jb25zdW1lcjsKICAgICAgICBNUl9BbnN3ZXJMaXN0IGN1cl9j
b25zdW1lcl9hbnN3ZXJfbGlzdDsKICAgICAgICBjaGFyIGNoYW5nZWQ7Cn0g
TVJfUmVzdW1lSW5mbzsKCnN0cnVjdCBNUl9TdWJnb2FsTGlzdE5vZGVfU3Ry
dWN0IHsKICAgICAgICBNUl9TdWJnb2FsICppdGVtOwogICAgICAgIE1SX1N1
YmdvYWxMaXN0IG5leHQ7Cn07CgoKc3RydWN0IE1SX1N1YmdvYWxfU3RydWN0
IHsKICAgICAgICBNUl9TdWJnb2FsU3RhdHVzIHN0YXR1czsKICAgICAgICBN
Ul9TdWJnb2FsICpsZWFkZXI7CiAgICAgICAgTVJfU3ViZ29hbExpc3QgZm9s
bG93ZXJzOwogICAgICAgIE1SX1N1YmdvYWxMaXN0ICpmb2xsb3dlcnNfdGFp
bDsKICAgICAgICBNUl9SZXN1bWVJbmZvICpyZXN1bWVfaW5mbzsKICAgICAg
ICBXb3JkIGFuc3dlcl90YWJsZTsKCiAgICAgICAgSW50ZWdlciBudW1fYW5z
OwoKICAgICAgICBJbnRlZ2VyIG51bV9jb21taXR0ZWRfYW5zOwoKCgogICAg
ICAgIE1SX0Fuc3dlckxpc3QgYW5zd2VyX2xpc3Q7CgogICAgICAgIE1SX0Fu
c3dlckxpc3QgKmFuc3dlcl9saXN0X3RhaWw7CgoKCiAgICAgICAgTVJfQ29u
c3VtZXJMaXN0IGNvbnN1bWVyX2xpc3Q7CgogICAgICAgIE1SX0NvbnN1bWVy
TGlzdCAqY29uc3VtZXJfbGlzdF90YWlsOwoKICAgICAgICBXb3JkICpnZW5l
cmF0b3JfbWF4ZnI7CgoKICAgICAgICBXb3JkICpnZW5lcmF0b3Jfc3A7CgoK
fTsKIyAyODEgIi4uL3J1bnRpbWUvbWVyY3VyeV90YWJsaW5nLmgiCmV4dGVy
biBNUl9UcmllTm9kZSBNUl9pbnRfaGFzaF9sb29rdXBfb3JfYWRkKE1SX1Ry
aWVOb2RlIHRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEludGVnZXIga2V5KTsKZXh0ZXJuIE1SX1RyaWVOb2RlIE1SX2Zsb2F0X2hh
c2hfbG9va3VwX29yX2FkZChNUl9UcmllTm9kZSB0YWJsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGbG9hdCBrZXkpOwpleHRlcm4gTVJf
VHJpZU5vZGUgTVJfc3RyaW5nX2hhc2hfbG9va3VwX29yX2FkZChNUl9Ucmll
Tm9kZSB0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
dHJpbmcga2V5KTsKCgoKCgoKZXh0ZXJuIE1SX1RyaWVOb2RlIE1SX2ludF9m
aXhfaW5kZXhfbG9va3VwX29yX2FkZChNUl9UcmllTm9kZSB0YWJsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyIHJhbmdlLCBJ
bnRlZ2VyIGtleSk7CgoKCgoKCmV4dGVybiBNUl9UcmllTm9kZSBNUl9pbnRf
c3RhcnRfaW5kZXhfbG9va3VwX29yX2FkZChNUl9UcmllTm9kZSB0YWJsZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyIHN0YXJ0
LCBJbnRlZ2VyIGtleSk7CgoKCgoKZXh0ZXJuIE1SX1RyaWVOb2RlIE1SX3R5
cGVfaW5mb19sb29rdXBfb3JfYWRkKE1SX1RyaWVOb2RlIHRhYmxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1SX1R5cGVJbmZvIHR5cGVf
aW5mbyk7CgoKCgoKZXh0ZXJuIE1SX1RyaWVOb2RlIE1SX3R5cGVfY2xhc3Nf
aW5mb19sb29rdXBfb3JfYWRkKE1SX1RyaWVOb2RlIHRhYmxlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQgKnR5cGVfY2xhc3NfaW5m
byk7CgoKCgoKCmV4dGVybiBNUl9UcmllTm9kZSBNUl90YWJsZV90eXBlKE1S
X1RyaWVOb2RlIHRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1SX1R5cGVJbmZvIHR5cGVfaW5mbywgV29yZCBkYXRhX3ZhbHVlKTsK
CgoKCgoKZXh0ZXJuIHZvaWQgTVJfdGFibGVfcmVwb3J0X3N0YXRpc3RpY3Mo
RklMRSAqZnApOwoKCgojIDQwNCAiLi4vcnVudGltZS9tZXJjdXJ5X3RhYmxp
bmcuaCIKIyAxOCAiLi4vcnVudGltZS9tZXJjdXJ5X3RhYmxpbmdfbWFjcm9z
LmgiIDEKIyA2NyAiLi4vcnVudGltZS9tZXJjdXJ5X2RlZXBfY29weS5oIiAx
CldvcmQgZGVlcF9jb3B5KGNvbnN0IFdvcmQgKmRhdGFfcHRyLCBNUl9UeXBl
SW5mbyB0eXBlX2luZm8sCiAgICAgICAgY29uc3QgV29yZCAqbG93ZXJfbGlt
aXQsIGNvbnN0IFdvcmQgKnVwcGVyX2xpbWl0KTsKIyA5NCAiLi4vcnVudGlt
ZS9tZXJjdXJ5X2RlZXBfY29weS5oIgpXb3JkIGFnY19kZWVwX2NvcHkoV29y
ZCAqZGF0YV9wdHIsIE1SX1R5cGVJbmZvIHR5cGVfaW5mbywKICAgICAgICBj
b25zdCBXb3JkICpsb3dlcl9saW1pdCwgY29uc3QgV29yZCAqdXBwZXJfbGlt
aXQpOwojIDExMyAiLi4vcnVudGltZS9tZXJjdXJ5X2RlZXBfY29weS5oIgoj
IDE4ICIuLi9ydW50aW1lL21lcmN1cnlfdGFibGluZ19tYWNyb3MuaCIgMgoj
IDQwNCAiLi4vcnVudGltZS9tZXJjdXJ5X3RhYmxpbmcuaCIgMgojIDE4ICIu
Li9ydW50aW1lL21lcmN1cnlfc3RhY2tzLmgiIDIKIyAyMzMgIi4uL3J1bnRp
bWUvbWVyY3VyeV9zdGFja3MuaCIKZW51bSBNUl9IYW5kbGVyQ29kZU1vZGVs
IHsKCgoKCgoKICAgICAgICBNUl9NT0RFTF9ERVRfSEFORExFUiwKICAgICAg
ICBNUl9NT0RFTF9TRU1JX0hBTkRMRVIsCiAgICAgICAgTVJfTU9ERUxfTk9O
X0hBTkRMRVIsCgoKCgoKCiAgICAgICAgTVJfQ19MT05HSk1QX0hBTkRMRVIK
fTsKIyAyNTkgIi4uL3J1bnRpbWUvbWVyY3VyeV9zdGFja3MuaCIKdHlwZWRl
ZiBzdHJ1Y3QgTVJfRXhjZXB0aW9uX0hhbmRsZXJfRnJhbWVfc3RydWN0IHsK
CgoKCgoKICAgICAgICBXb3JkIGNvZGVfbW9kZWw7CgoKCgoKCgogICAgICAg
IFdvcmQgaGFuZGxlcjsKCgoKCgoKCiAgICAgICAgV29yZCAqc3RhY2tfcHRy
OwoKCgoKCgoKCgoKCgoKfSBNUl9FeGNlcHRpb25fSGFuZGxlcl9GcmFtZTsK
CiMgNjQgIi4uL3J1bnRpbWUvbWVyY3VyeV9pbXAuaCIgMgoKCgoKIyAxNiAi
Li4vcnVudGltZS9tZXJjdXJ5X3dyYXBwZXIuaCIgMQoKCgojIDI5ICIuLi9y
dW50aW1lL21lcmN1cnlfdHJhY2VfYmFzZS5oIiAxCnR5cGVkZWYgZW51bSB7
CiAgICAgICAgTVJfUE9SVF9DQUxMLAogICAgICAgIE1SX1BPUlRfRVhJVCwK
ICAgICAgICBNUl9QT1JUX1JFRE8sCiAgICAgICAgTVJfUE9SVF9GQUlMLAog
ICAgICAgIE1SX1BPUlRfRVhDRVBUSU9OLAogICAgICAgIE1SX1BPUlRfQ09O
RCwKICAgICAgICBNUl9QT1JUX1RIRU4sCiAgICAgICAgTVJfUE9SVF9FTFNF
LAogICAgICAgIE1SX1BPUlRfTkVHX0VOVEVSLAogICAgICAgIE1SX1BPUlRf
TkVHX1NVQ0NFU1MsCiAgICAgICAgTVJfUE9SVF9ORUdfRkFJTFVSRSwKICAg
ICAgICBNUl9QT1JUX0RJU0osCiAgICAgICAgTVJfUE9SVF9TV0lUQ0gsCiAg
ICAgICAgTVJfUE9SVF9QUkFHTUFfRklSU1QsCiAgICAgICAgTVJfUE9SVF9Q
UkFHTUFfTEFURVIKfSBNUl9UcmFjZV9Qb3J0OwoKZXh0ZXJuIGNvbnN0IGNo
YXIgKk1SX3BvcnRfbmFtZXNbXTsKCiMgNjQgIi4uL3J1bnRpbWUvbWVyY3Vy
eV90cmFjZV9iYXNlLmgiCmV4dGVybiBDb2RlICpNUl90cmFjZShjb25zdCBN
Ul9TdGFja19MYXlvdXRfTGFiZWwgKik7CmV4dGVybiBDb2RlICpNUl90cmFj
ZV9mYWtlKGNvbnN0IE1SX1N0YWNrX0xheW91dF9MYWJlbCAqKTsKIyA4NyAi
Li4vcnVudGltZS9tZXJjdXJ5X3RyYWNlX2Jhc2UuaCIKZXh0ZXJuIHZvaWQg
TVJfdHJhY2VfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgTVJfdHJhY2Vfc3Rh
cnQoY2hhciBlbmFibGVkKTsKZXh0ZXJuIHZvaWQgTVJfdHJhY2VfZW5kKHZv
aWQpOwpleHRlcm4gdm9pZCBNUl90cmFjZV9maW5hbCh2b2lkKTsKIyAxMDAg
Ii4uL3J1bnRpbWUvbWVyY3VyeV90cmFjZV9iYXNlLmgiCmV4dGVybiBVbnNp
Z25lZCBNUl90cmFjZV9jYWxsX3NlcW5vOwpleHRlcm4gVW5zaWduZWQgTVJf
dHJhY2VfY2FsbF9kZXB0aDsKCnR5cGVkZWYgZW51bSB7CiAgICAgICAgTVJf
VFJBQ0VfSU5URVJOQUwsCiAgICAgICAgTVJfVFJBQ0VfRVhURVJOQUwKfSBN
Ul9UcmFjZV9UeXBlOwoKZXh0ZXJuIE1SX1RyYWNlX1R5cGUgTVJfdHJhY2Vf
aGFuZGxlcjsKZXh0ZXJuIGNoYXIgTVJfdHJhY2VfZW5hYmxlZDsKCmV4dGVy
biBVbnNpZ25lZCBNUl90cmFjZV9ldmVudF9udW1iZXI7CmV4dGVybiBCb29s
IE1SX3RyYWNlX2Zyb21fZnVsbDsKCgoKCgoKZXh0ZXJuIHZvaWQgTVJfdHJh
Y2VfcmVwb3J0KEZJTEUgKmZwKTsKZXh0ZXJuIHZvaWQgTVJfdHJhY2VfcmVw
b3J0X3JhdyhpbnQgZmQpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgTVJfdHJhY2lu
Z19ub3RfZW5hYmxlZCh2b2lkKTsKCgoKCgoKZXh0ZXJuIHZvaWQgTVJfdHJh
Y2Vfc2V0X2V4Y2VwdGlvbl92YWx1ZShXb3JkIGV4Y2VwdGlvbik7CmV4dGVy
biBXb3JkIE1SX3RyYWNlX2dldF9leGNlcHRpb25fdmFsdWUodm9pZCk7CiMg
MTU2ICIuLi9ydW50aW1lL21lcmN1cnlfdHJhY2VfYmFzZS5oIgojIDE5ICIu
Li9ydW50aW1lL21lcmN1cnlfd3JhcHBlci5oIiAyCgoKCgoKCgpleHRlcm4g
dm9pZCBtZXJjdXJ5X3J1bnRpbWVfaW5pdChpbnQgYXJnYywgY2hhciAqKmFy
Z3YpOwoKCgoKCmV4dGVybiB2b2lkIG1lcmN1cnlfcnVudGltZV9tYWluKHZv
aWQpOwoKCgoKCmV4dGVybiBpbnQgbWVyY3VyeV9ydW50aW1lX3Rlcm1pbmF0
ZSh2b2lkKTsKIyA0NyAiLi4vcnVudGltZS9tZXJjdXJ5X3dyYXBwZXIuaCIK
ZXh0ZXJuIGludCBNUl9sb2FkX2FkaXRpX3JsX2NvZGUodm9pZCk7CiMgNTYg
Ii4uL3J1bnRpbWUvbWVyY3VyeV93cmFwcGVyLmgiCgogIGV4dGVybiB2b2lk
IE1SX2luaXRfY29uc2VydmF0aXZlX0dDKHZvaWQpOwojIDcwICIuLi9ydW50
aW1lL21lcmN1cnlfd3JhcHBlci5oIgpleHRlcm4gQ29kZSAqcHJvZ3JhbV9l
bnRyeV9wb2ludDsKCgpleHRlcm4gdm9pZCAoKk1SX2xpYnJhcnlfaW5pdGlh
bGl6ZXIpKHZvaWQpOwpleHRlcm4gdm9pZCAoKk1SX2xpYnJhcnlfZmluYWxp
emVyKSh2b2lkKTsKCmV4dGVybiB2b2lkICgqTVJfaW9fc3RkZXJyX3N0cmVh
bSkoV29yZCAqKTsKZXh0ZXJuIHZvaWQgKCpNUl9pb19zdGRvdXRfc3RyZWFt
KShXb3JkICopOwpleHRlcm4gdm9pZCAoKk1SX2lvX3N0ZGluX3N0cmVhbSko
V29yZCAqKTsKZXh0ZXJuIHZvaWQgKCpNUl9pb19wcmludF90b19jdXJfc3Ry
ZWFtKShXb3JkLCBXb3JkKTsKZXh0ZXJuIHZvaWQgKCpNUl9pb19wcmludF90
b19zdHJlYW0pKFdvcmQsIFdvcmQsIFdvcmQpOwoKZXh0ZXJuIHZvaWQgKCph
ZGRyZXNzX29mX21lcmN1cnlfaW5pdF9pbykodm9pZCk7CmV4dGVybiB2b2lk
ICgqYWRkcmVzc19vZl9pbml0X21vZHVsZXMpKHZvaWQpOwoKCmV4dGVybiB2
b2lkICgqYWRkcmVzc19vZl9pbml0X2djKSh2b2lkKTsKCgpleHRlcm4gaW50
ICgqTVJfYWRkcmVzc19vZl9kb19sb2FkX2FkaXRpX3JsX2NvZGUpKHZvaWQp
OwojIDk4ICIuLi9ydW50aW1lL21lcmN1cnlfd3JhcHBlci5oIgpleHRlcm4g
Y2hhciAqICgqTVJfYWRkcmVzc19vZl90cmFjZV9nZXRsaW5lKShjb25zdCBj
aGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAq
LCBGSUxFICopOwojIDEwOSAiLi4vcnVudGltZS9tZXJjdXJ5X3dyYXBwZXIu
aCIKZXh0ZXJuIHZvaWQgKCpNUl9hZGRyZXNzX29mX3RyYWNlX2luaXRfZXh0
ZXJuYWwpKHZvaWQpOwpleHRlcm4gdm9pZCAoKk1SX2FkZHJlc3Nfb2ZfdHJh
Y2VfZmluYWxfZXh0ZXJuYWwpKHZvaWQpOwojIDEyMCAiLi4vcnVudGltZS9t
ZXJjdXJ5X3dyYXBwZXIuaCIKZXh0ZXJuIENvZGUgKk1SX2xpYnJhcnlfdHJh
Y2VfYnJvd3NlcjsKIyAxMzQgIi4uL3J1bnRpbWUvbWVyY3VyeV93cmFwcGVy
LmgiCmV4dGVybiBDb2RlICooKnZvbGF0aWxlIE1SX3RyYWNlX2Z1bmNfcHRy
KSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNUl9T
dGFja19MYXlvdXRfTGFiZWwgKik7CgoKCgoKCmV4dGVybiB2b2lkICgqTVJf
YWRkcmVzc19vZl90cmFjZV9pbnRlcnJ1cHRfaGFuZGxlcikodm9pZCk7CgoK
CgoKCmV4dGVybiB2b2lkICgqTVJfcmVnaXN0ZXJfbW9kdWxlX2xheW91dCko
Y29uc3QgTVJfTW9kdWxlX0xheW91dCAqKTsKCmV4dGVybiB2b2lkIGRvX2lu
aXRfbW9kdWxlcyh2b2lkKTsKCmV4dGVybiBjb25zdCBjaGFyICpwcm9nbmFt
ZTsKZXh0ZXJuIGludCBtZXJjdXJ5X2FyZ2M7CmV4dGVybiBjaGFyICoqbWVy
Y3VyeV9hcmd2OwpleHRlcm4gaW50IG1lcmN1cnlfZXhpdF9zdGF0dXM7CgoK
ZXh0ZXJuIHNpemVfdCBoZWFwX3NpemU7CmV4dGVybiBzaXplX3QgZGV0c3Rh
Y2tfc2l6ZTsKZXh0ZXJuIHNpemVfdCBub25kc3RhY2tfc2l6ZTsKZXh0ZXJu
IHNpemVfdCBzb2x1dGlvbnNfaGVhcF9zaXplOwpleHRlcm4gc2l6ZV90IHRy
YWlsX3NpemU7CmV4dGVybiBzaXplX3QgZ2xvYmFsX2hlYXBfc2l6ZTsKZXh0
ZXJuIHNpemVfdCBkZWJ1Z19oZWFwX3NpemU7CmV4dGVybiBzaXplX3QgZ2Vu
ZXJhdG9yc3RhY2tfc2l6ZTsKZXh0ZXJuIHNpemVfdCBjdXRzdGFja19zaXpl
OwoKCmV4dGVybiBzaXplX3QgaGVhcF96b25lX3NpemU7CmV4dGVybiBzaXpl
X3QgZGV0c3RhY2tfem9uZV9zaXplOwpleHRlcm4gc2l6ZV90IG5vbmRzdGFj
a196b25lX3NpemU7CmV4dGVybiBzaXplX3Qgc29sdXRpb25zX2hlYXBfem9u
ZV9zaXplOwpleHRlcm4gc2l6ZV90IHRyYWlsX3pvbmVfc2l6ZTsKZXh0ZXJu
IHNpemVfdCBnbG9iYWxfaGVhcF96b25lX3NpemU7CmV4dGVybiBzaXplX3Qg
ZGVidWdfaGVhcF96b25lX3NpemU7CmV4dGVybiBzaXplX3QgZ2VuZXJhdG9y
c3RhY2tfem9uZV9zaXplOwpleHRlcm4gc2l6ZV90IGN1dHN0YWNrX3pvbmVf
c2l6ZTsKCgpleHRlcm4gY29uc3QgY2hhciAqTVJfbWRiX2luX2ZpbGVuYW1l
OwpleHRlcm4gY29uc3QgY2hhciAqTVJfbWRiX291dF9maWxlbmFtZTsKZXh0
ZXJuIGNvbnN0IGNoYXIgKk1SX21kYl9lcnJfZmlsZW5hbWU7CgoKZXh0ZXJu
IHNpemVfdCBwY2FjaGVfc2l6ZTsKCmV4dGVybiBjaGFyIGNoZWNrX3NwYWNl
OwoKCmV4dGVybiBpbnQgdGltZV9hdF9zdGFydDsKZXh0ZXJuIGludCB0aW1l
X2F0X2xhc3Rfc3RhdDsKCgplbnVtIE1SX1RpbWVQcm9maWxlTWV0aG9kIHsK
ICAgICAgICBNUl9wcm9maWxlX3JlYWxfdGltZSwKICAgICAgICBNUl9wcm9m
aWxlX3VzZXJfdGltZSwKICAgICAgICBNUl9wcm9maWxlX3VzZXJfcGx1c19z
eXN0ZW1fdGltZQp9OwpleHRlcm4gZW51bSBNUl9UaW1lUHJvZmlsZU1ldGhv
ZAogICAgICAgICAgICAgICAgICAgICAgICBNUl90aW1lX3Byb2ZpbGVfbWV0
aG9kOwoKZXh0ZXJuIGNoYXIgTVJfcHJvZmlsaW5nOwoKIyA2OCAiLi4vcnVu
dGltZS9tZXJjdXJ5X2ltcC5oIiAyCiMgNzggIi4uL3J1bnRpbWUvbWVyY3Vy
eV9pbXAuaCIKIyAxOCAiLi4vcnVudGltZS9tZXJjdXJ5X21pc2MuaCIgMQpl
eHRlcm4gdm9pZCBNUl93YXJuaW5nKGNvbnN0IGNoYXIgKm1zZywgLi4uKTsK
ZXh0ZXJuIHZvaWQgTVJfZmF0YWxfZXJyb3IoY29uc3QgY2hhciAqbXNnLCAu
Li4pIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CgojIDc4ICIuLi9ydW50
aW1lL21lcmN1cnlfaW1wLmgiIDIKCgoKCiMgMjE1ICIuLi9ydW50aW1lL21l
cmN1cnlfZ3JhZGUuaCIgMQpleHRlcm4gY29uc3QgY2hhciBNUl9ncmFkZV92
M19hc21fZmFzdF9nY190YWdzMjsKCgoKCgoKIyA4MiAiLi4vcnVudGltZS9t
ZXJjdXJ5X2ltcC5oIiAyCgoKIyAxNSAibWVyY3VyeV90cmFjZV9hbGlhcy5j
IiAyCgoKCiMgMTggIm1lcmN1cnlfdHJhY2VfYWxpYXMuaCIgMQp0eXBlZGVm
IHN0cnVjdCB7CiAgICAgICAgY2hhciAqTVJfYWxpYXNfbmFtZTsKICAgICAg
ICBjaGFyICoqTVJfYWxpYXNfd29yZHM7CiAgICAgICAgaW50IE1SX2FsaWFz
X3dvcmRfY291bnQ7Cn0gTVJfQWxpYXM7CiMgMzMgIm1lcmN1cnlfdHJhY2Vf
YWxpYXMuaCIKZXh0ZXJuIHZvaWQgTVJfdHJhY2VfYWRkX2FsaWFzKGNoYXIg
Km5hbWUsIGNoYXIgKip3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgd29yZF9jb3VudCk7CgoKCgoKCgpleHRlcm4gY2hhciBN
Ul90cmFjZV9yZW1vdmVfYWxpYXMoY29uc3QgY2hhciAqbmFtZSk7CiMgNTEg
Im1lcmN1cnlfdHJhY2VfYWxpYXMuaCIKZXh0ZXJuIGNoYXIgTVJfdHJhY2Vf
bG9va3VwX2FsaWFzKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKip3b3Jkc19wdHIsIGludCAqd29y
ZF9jb3VudF9wdHIpOwoKCgoKCgpleHRlcm4gdm9pZCBNUl90cmFjZV9wcmlu
dF9hbGlhcyhGSUxFICpmcCwgY29uc3QgY2hhciAqbmFtZSk7CgoKCgoKZXh0
ZXJuIHZvaWQgTVJfdHJhY2VfcHJpbnRfYWxsX2FsaWFzZXMoRklMRSAqZnAp
OwoKIyAxOCAibWVyY3VyeV90cmFjZV9hbGlhcy5jIiAyCgpzdGF0aWMgTVJf
QWxpYXMgKk1SX2FsaWFzX3JlY29yZHMgPSAoKHZvaWQgKikwKTsKc3RhdGlj
IGludCBNUl9hbGlhc19yZWNvcmRfbWF4ID0gMDsKc3RhdGljIGludCBNUl9h
bGlhc19yZWNvcmRfbmV4dCA9IDA7CgoKCgpzdGF0aWMgdm9pZCBNUl90cmFj
ZV9wcmludF9hbGlhc19udW0oRklMRSAqZnAsIGludCBzbG90KTsKCnZvaWQK
TVJfdHJhY2VfYWRkX2FsaWFzKGNoYXIgKm5hbWUsIGNoYXIgKip3b3Jkcywg
aW50IHdvcmRfY291bnQpCnsKICAgICAgICBjaGFyIGZvdW5kOwogICAgICAg
IGludCBzbG90OwogICAgICAgIGludCBpOwogICAgICAgIGludCBjb3VudDsK
CgogICAgICAgIGRvIHsgaW50IGxvOyBpbnQgaGk7IGludCBkaWZmOyAoc2xv
dCkgPSAwOyBsbyA9IDA7IGhpID0gKE1SX2FsaWFzX3JlY29yZF9uZXh0KSAt
IDE7IChmb3VuZCkgPSAwOyB3aGlsZSAobG8gPD0gaGkpIHsgKHNsb3QpID0g
KGxvICsgaGkpIC8gMjsgZGlmZiA9IChfX2V4dGVuc2lvbl9fICh7IHNpemVf
dCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
TVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSAmJiBfX2J1
aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKF9fczFfbGVuID0gc3RybGVu
IChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpLCBfX3My
X2xlbiA9IHN0cmxlbiAobmFtZSksICghKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoTVJfYWxpYXNfcmVjb3Jkc1tz
bG90XS5NUl9hbGlhc19uYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAm
JiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MyX2xlbiA+
PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKE1SX2FsaWFzX3Jl
Y29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSksIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19z
Ml9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKE1SX2FsaWFz
X3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkgJiYgKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNf
bmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoTVJfYWxpYXNf
cmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSA9PSAxKSAmJiAoX19zMV9s
ZW4gPSBzdHJsZW4gKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNf
bmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3Ag
KG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSA/IChfX2V4
dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChNUl9hbGlh
c19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpKVswXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikobmFtZSkpWzBd
KTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkp
WzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAobmFtZSkpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0u
TVJfYWxpYXNfbmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdKTsgaWYgKF9fczFfbGVu
ID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChNUl9hbGlhc19y
ZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpKVszXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25z
dCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKTsgcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFt
ZSkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3Rd
Lk1SX2FsaWFzX25hbWUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4g
PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNf
cmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlbMl0gLSBfX3MyWzJdKTsg
aWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpKVszXSAt
IF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2Nv
bnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChu
YW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAx
KSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA8IDQp
ID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChNUl9hbGlhc19yZWNvcmRzW3Ns
b3RdLk1SX2FsaWFzX25hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop
KChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKE1SX2FsaWFzX3JlY29yZHNbc2xv
dF0uTVJfYWxpYXNfbmFtZSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyBy
ZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90
XS5NUl9hbGlhc19uYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopKG5hbWUpKVswXSk7IGlmIChfX3MyX2xl
biA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChNUl9hbGlh
c19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpKVsxXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsx
XSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUp
KVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5N
Ul9hbGlhc19uYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7
IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1l
KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsw
XTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkg
X19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSk7IH0gfSBfX3Jlc3Vs
dDsgfSkpKSA6IHN0cmNtcCAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9h
bGlhc19uYW1lLCBuYW1lKSkpKTsgfSkpOyBpZiAoZGlmZiA9PSAwKSB7IChm
b3VuZCkgPSAxOyBicmVhazsgfSBlbHNlIGlmIChkaWZmIDwgMCkgeyBsbyA9
IChzbG90KSArIDE7IH0gZWxzZSB7IGhpID0gKHNsb3QpIC0gMTsgfSB9IH0g
d2hpbGUoMCk7CiAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAg
ICBjb3VudCA9IE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfd29y
ZF9jb3VudDsKICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoTVJfYWxp
YXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc193b3Jkc1tpXSk7CiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgZnJlZShNUl9hbGlhc19yZWNv
cmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpOwogICAgICAgICAgICAgICAgZnJl
ZShNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX3dvcmRzKTsKICAg
ICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgIGRvIHsgaWYgKE1SX2Fs
aWFzX3JlY29yZF9uZXh0ID49IE1SX2FsaWFzX3JlY29yZF9tYXgpIHsgaWYg
KE1SX2FsaWFzX3JlY29yZF9tYXggPT0gMCkgeyBNUl9hbGlhc19yZWNvcmRf
bWF4ID0gKDMyKTsgTVJfYWxpYXNfcmVjb3JkcyA9ICgoTVJfQWxpYXMgKikg
TVJfbWFsbG9jKChNUl9hbGlhc19yZWNvcmRfbWF4KSAqIHNpemVvZihNUl9B
bGlhcykpKTsgfSBlbHNlIHsgTVJfYWxpYXNfcmVjb3JkX21heCAqPSAyOyBN
Ul9hbGlhc19yZWNvcmRzID0gKChNUl9BbGlhcyAqKSBNUl9yZWFsbG9jKChN
Ul9hbGlhc19yZWNvcmRzKSwgKE1SX2FsaWFzX3JlY29yZF9tYXgpICogc2l6
ZW9mKE1SX0FsaWFzKSkpOyB9IH0gfSB3aGlsZSgwKTsKCgoKICAgICAgICAg
ICAgICAgIGRvIHsgKHNsb3QpID0gKE1SX2FsaWFzX3JlY29yZF9uZXh0KSAt
IDE7IHdoaWxlICgoc2xvdCkgPj0gMCAmJiAoX19leHRlbnNpb25fXyAoeyBz
aXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50
X3AgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkgJiYg
X19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIChfX3MxX2xlbiA9IHN0
cmxlbiAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSwg
X19zMl9sZW4gPSBzdHJsZW4gKG5hbWUpLCAoISgoc2l6ZV90KShjb25zdCB2
b2lkICopKChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKE1SX2FsaWFzX3JlY29y
ZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkgPT0gMSkgfHwgX19zMV9sZW4gPj0g
NCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgfHwgX19zMl9s
ZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChNUl9hbGlh
c19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpLCAoX19jb25zdCBjaGFy
ICopIChuYW1lKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6
IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChNUl9h
bGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2Fs
aWFzX25hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKE1SX2Fs
aWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkgPT0gMSkgJiYgKF9f
czFfbGVuID0gc3RybGVuIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2Fs
aWFzX25hbWUpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFu
dF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgPyAo
X19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJf
YWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlbMF0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKG5hbWUp
KVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25h
bWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKG5hbWUpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Ns
b3RdLk1SX2FsaWFzX25hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSk7IGlmIChfX3Mx
X2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxp
YXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlb
M10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFz
X25hbWUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tz
bG90XS5NUl9hbGlhc19uYW1lKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFf
bGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKE1SX2Fs
aWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkpWzJdIC0gX19zMlsy
XSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlb
M10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRp
bl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkg
PT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMl9sZW4g
PCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoTVJfYWxpYXNfcmVjb3Jk
c1tzbG90XS5NUl9hbGlhc19uYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShNUl9hbGlhc19yZWNvcmRz
W3Nsb3RdLk1SX2FsaWFzX25hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18g
KHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKE1SX2FsaWFzX3JlY29yZHNb
c2xvdF0uTVJfYWxpYXNfbmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShuYW1lKSlbMF0pOyBpZiAoX19z
Ml9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJf
YWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlbMV0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19u
YW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKE1SX2FsaWFzX3JlY29yZHNbc2xv
dF0uTVJfYWxpYXNfbmFtZSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdKTsgfSB9IF9fcmVz
dWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNf
bmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdKTsgaWYgKF9fczJfbGVu
ID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChuYW1lKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09
IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0u
TVJfYWxpYXNfbmFtZSwgbmFtZSkpKSk7IH0pKSA+IDApIHsgZG8geyBNUl9t
ZW1jcHkoKHZvaWQgKikgJk1SX2FsaWFzX3JlY29yZHNbc2xvdCArIDFdLCAo
Y29uc3Qgdm9pZCAqKSAmTVJfYWxpYXNfcmVjb3Jkc1tzbG90XSwgc2l6ZW9m
KE1SX2FsaWFzX3JlY29yZHNbc2xvdCArIDFdKSk7IH0gd2hpbGUoMCk7IChz
bG90KSAtPSAxOyB9IChzbG90KSArPSAxOyAoTVJfYWxpYXNfcmVjb3JkX25l
eHQpICs9IDE7IH0gd2hpbGUoMCk7CiAgICAgICAgfQoKICAgICAgICBNUl9h
bGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUgPSBNUl9jb3B5X3N0
cmluZyhuYW1lKTsKICAgICAgICBNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1S
X2FsaWFzX3dvcmRfY291bnQgPSB3b3JkX2NvdW50OwogICAgICAgIE1SX2Fs
aWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfd29yZHMgPSAoKGNoYXIgKiAq
KSBNUl9tYWxsb2MoKHdvcmRfY291bnQpICogc2l6ZW9mKGNoYXIgKikpKTsK
CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHdvcmRfY291bnQ7IGkrKykgewog
ICAgICAgICAgICAgICAgTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlh
c193b3Jkc1tpXQogICAgICAgICAgICAgICAgICAgICAgICA9IE1SX2NvcHlf
c3RyaW5nKHdvcmRzW2ldKTsKICAgICAgICB9Cn0KCmNoYXIKTVJfdHJhY2Vf
cmVtb3ZlX2FsaWFzKGNvbnN0IGNoYXIgKm5hbWUpCnsKICAgICAgICBjaGFy
IGZvdW5kOwogICAgICAgIGludCBzbG90OwogICAgICAgIGludCBpOwogICAg
ICAgIGludCBjb3VudDsKCgogICAgICAgIGRvIHsgaW50IGxvOyBpbnQgaGk7
IGludCBkaWZmOyAoc2xvdCkgPSAwOyBsbyA9IDA7IGhpID0gKE1SX2FsaWFz
X3JlY29yZF9uZXh0KSAtIDE7IChmb3VuZCkgPSAwOyB3aGlsZSAobG8gPD0g
aGkpIHsgKHNsb3QpID0gKGxvICsgaGkpIC8gMjsgZGlmZiA9IChfX2V4dGVu
c2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlh
c19uYW1lKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKF9f
czFfbGVuID0gc3RybGVuIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2Fs
aWFzX25hbWUpLCBfX3MyX2xlbiA9IHN0cmxlbiAobmFtZSksICghKChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJf
YWxpYXNfbmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoTVJf
YWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSA9PSAxKSB8fCBf
X3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChu
YW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAx
KSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIg
KikgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSksIChf
X2NvbnN0IGNoYXIgKikgKG5hbWUpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/
IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0
YW50X3AgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkg
JiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKE1SX2FsaWFzX3JlY29yZHNb
c2xvdF0uTVJfYWxpYXNfbmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSA9
PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKE1SX2FsaWFzX3JlY29yZHNb
c2xvdF0uTVJfYWxpYXNfbmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWls
dGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1l
KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUp
KVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikobmFtZSkpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0u
TVJfYWxpYXNfbmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdKTsgaWYgKF9fczFfbGVu
ID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKE1SX2FsaWFz
X3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJd
KTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5z
aW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKTsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKE1SX2FsaWFzX3JlY29yZHNbc2xv
dF0uTVJfYWxpYXNfbmFtZSkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xl
biA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChNUl9hbGlh
c19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpKVsxXSAtIF9fczJbMV0p
OyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlb
Ml0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9
PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2Fs
aWFzX25hbWUpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkg
OiAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShuYW1lKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKG5hbWUp
LCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChNUl9h
bGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2Fs
aWFzX25hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKE1SX2Fs
aWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkgPT0gMSkgPyAoX19l
eHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxp
YXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlbMF0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKG5hbWUpKVsw
XSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUp
KVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3Rd
Lk1SX2FsaWFzX25hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSk7IGlmIChfX3MyX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNf
cmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlbM10gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29u
c3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90
XS5NUl9hbGlhc19uYW1lKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19z
MVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0pOyBp
ZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYg
X19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoTVJfYWxpYXNfcmVj
b3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lLCBuYW1lKSkpKTsgfSkpOyBpZiAo
ZGlmZiA9PSAwKSB7IChmb3VuZCkgPSAxOyBicmVhazsgfSBlbHNlIGlmIChk
aWZmIDwgMCkgeyBsbyA9IChzbG90KSArIDE7IH0gZWxzZSB7IGhpID0gKHNs
b3QpIC0gMTsgfSB9IH0gd2hpbGUoMCk7CiAgICAgICAgaWYgKCEgZm91bmQp
IHsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICBjb3VudCA9IE1SX2FsaWFzX3JlY29yZHNbc2xv
dF0uTVJfYWxpYXNfd29yZF9jb3VudDsKICAgICAgICAgICAgICAgIGZvciAo
aSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGZyZWUoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc193b3Jk
c1tpXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnJl
ZShNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpOwogICAg
ICAgICAgICAgICAgZnJlZShNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2Fs
aWFzX3dvcmRzKTsKCiAgICAgICAgICAgICAgICBmb3IgKGkgPSBzbG90OyBp
IDwgTVJfYWxpYXNfcmVjb3JkX25leHQgLSAxOyBpKyspIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgTVJfYWxpYXNfcmVjb3Jkc1tzbG90XSA9IE1SX2Fs
aWFzX3JlY29yZHNbc2xvdCsxXTsKICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICBNUl9hbGlhc19yZWNvcmRfbmV4dC0tOwoKICAgICAgICAg
ICAgICAgIHJldHVybiAxOwogICAgICAgIH0KfQoKY2hhcgpNUl90cmFjZV9s
b29rdXBfYWxpYXMoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBjaGFyICoq
KndvcmRzX3B0ciwgaW50ICp3b3JkX2NvdW50X3B0cikKewogICAgICAgIGNo
YXIgZm91bmQ7CiAgICAgICAgaW50IHNsb3Q7CgoKICAgICAgICBkbyB7IGlu
dCBsbzsgaW50IGhpOyBpbnQgZGlmZjsgKHNsb3QpID0gMDsgbG8gPSAwOyBo
aSA9IChNUl9hbGlhc19yZWNvcmRfbmV4dCkgLSAxOyAoZm91bmQpID0gMDsg
d2hpbGUgKGxvIDw9IGhpKSB7IChzbG90KSA9IChsbyArIGhpKSAvIDI7IGRp
ZmYgPSAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJf
bGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKE1SX2FsaWFzX3JlY29yZHNb
c2xvdF0uTVJfYWxpYXNfbmFtZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3Ag
KG5hbWUpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoTVJfYWxpYXNfcmVjb3Jk
c1tzbG90XS5NUl9hbGlhc19uYW1lKSwgX19zMl9sZW4gPSBzdHJsZW4gKG5h
bWUpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChNUl9hbGlhc19yZWNv
cmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFt
ZSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikobmFtZSkgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgo
X19jb25zdCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2Fs
aWFzX25hbWUpLCAoX19jb25zdCBjaGFyICopIChuYW1lKSwgKF9fczFfbGVu
IDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1S
X2FsaWFzX25hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChNUl9h
bGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJf
YWxpYXNfbmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChNUl9h
bGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpLCBfX3MxX2xlbiA8
IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikobmFtZSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5N
Ul9hbGlhc19uYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopKG5hbWUpKVswXSk7IGlmIChfX3MxX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChNUl9hbGlhc19y
ZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpKVsxXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSk7
IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpKVsy
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQg
PT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9h
bGlhc19uYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAq
X19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAobmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChNUl9hbGlh
c19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpKVswXSAtIF9fczJbMF0p
OyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlb
MV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJf
YWxpYXNfbmFtZSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIg
JiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jk
c1tzbG90XS5NUl9hbGlhc19uYW1lKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9f
cmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAm
JiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczJfbGVuID0g
c3RybGVuIChuYW1lKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29u
c3RhbnRfcCAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1l
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoTVJfYWxpYXNfcmVjb3Jk
c1tzbG90XS5NUl9hbGlhc19uYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKShNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUp
ID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkp
WzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKShuYW1lKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5N
Ul9hbGlhc19uYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0pOyBpZiAoX19zMl9sZW4g
PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNf
cmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlbMl0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0p
OyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkpWzNd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAobmFtZSkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKE1SX2FsaWFz
X3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSk7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF07IGlmIChfX3MyX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
bmFtZSkpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0pOyBpZiAoX19z
Ml9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFb
M10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChuYW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAg
KE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSwgbmFtZSkp
KSk7IH0pKTsgaWYgKGRpZmYgPT0gMCkgeyAoZm91bmQpID0gMTsgYnJlYWs7
IH0gZWxzZSBpZiAoZGlmZiA8IDApIHsgbG8gPSAoc2xvdCkgKyAxOyB9IGVs
c2UgeyBoaSA9IChzbG90KSAtIDE7IH0gfSB9IHdoaWxlKDApOwogICAgICAg
IGlmIChmb3VuZCkgewogICAgICAgICAgICAgICAgKndvcmRfY291bnRfcHRy
ID0gTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc193b3JkX2NvdW50
OwogICAgICAgICAgICAgICAgKndvcmRzX3B0ciA9IE1SX2FsaWFzX3JlY29y
ZHNbc2xvdF0uTVJfYWxpYXNfd29yZHM7CiAgICAgICAgICAgICAgICByZXR1
cm4gMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgfQp9Cgp2b2lkCk1SX3RyYWNlX3ByaW50X2FsaWFzKEZJ
TEUgKmZwLCBjb25zdCBjaGFyICpuYW1lKQp7CiAgICAgICAgY2hhciBmb3Vu
ZDsKICAgICAgICBpbnQgc2xvdDsKCgogICAgICAgIGRvIHsgaW50IGxvOyBp
bnQgaGk7IGludCBkaWZmOyAoc2xvdCkgPSAwOyBsbyA9IDA7IGhpID0gKE1S
X2FsaWFzX3JlY29yZF9uZXh0KSAtIDE7IChmb3VuZCkgPSAwOyB3aGlsZSAo
bG8gPD0gaGkpIHsgKHNsb3QpID0gKGxvICsgaGkpIC8gMjsgZGlmZiA9IChf
X2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChf
X2J1aWx0aW5fY29uc3RhbnRfcCAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5N
Ul9hbGlhc19uYW1lKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkg
JiYgKF9fczFfbGVuID0gc3RybGVuIChNUl9hbGlhc19yZWNvcmRzW3Nsb3Rd
Lk1SX2FsaWFzX25hbWUpLCBfX3MyX2xlbiA9IHN0cmxlbiAobmFtZSksICgh
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKE1SX2FsaWFzX3JlY29yZHNbc2xv
dF0uTVJfYWxpYXNfbmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSA9PSAx
KSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lk
ICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1l
KSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0
IGNoYXIgKikgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFt
ZSksIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpLCAoX19zMV9sZW4gPCBfX3My
X2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGlu
X2NvbnN0YW50X3AgKE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNf
bmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKE1SX2FsaWFzX3Jl
Y29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19u
YW1lKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKE1SX2FsaWFzX3Jl
Y29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSksIF9fczFfbGVuIDwgNCkgPyAo
X19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShjb25z
dCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShuYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFz
X25hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikobmFtZSkpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKE1SX2FsaWFzX3JlY29yZHNb
c2xvdF0uTVJfYWxpYXNfbmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdKTsgaWYgKF9f
czFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKE1S
X2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkpWzJdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFt
ZSkpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25h
bWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKG5hbWUpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9f
ZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0g
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKE1SX2FsaWFzX3JlY29y
ZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkpWzBdIC0gX19zMlswXSk7IGlmIChf
X3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChN
Ul9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpKVsxXSAtIF9f
czJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19u
YW1lKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3Rd
Lk1SX2FsaWFzX25hbWUpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7
IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6
ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKShuYW1lKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4g
KG5hbWUpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
IChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpICYmICgo
c2l6ZV90KShjb25zdCB2b2lkICopKChNUl9hbGlhc19yZWNvcmRzW3Nsb3Rd
Lk1SX2FsaWFzX25hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfbmFtZSkgPT0gMSkg
PyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
TVJfYWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlbMF0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKG5h
bWUpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFz
X25hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChNUl9hbGlhc19yZWNvcmRz
W3Nsb3RdLk1SX2FsaWFzX25hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSk7IGlmIChf
X3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJf
YWxpYXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lKSlbM10gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7
IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoTVJfYWxpYXNfcmVjb3Jk
c1tzbG90XS5NUl9hbGlhc19uYW1lKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlb
MV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSk7IGlmIChfX3MyX2xlbiA+
IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoTVJfYWxp
YXNfcmVjb3Jkc1tzbG90XS5NUl9hbGlhc19uYW1lLCBuYW1lKSkpKTsgfSkp
OyBpZiAoZGlmZiA9PSAwKSB7IChmb3VuZCkgPSAxOyBicmVhazsgfSBlbHNl
IGlmIChkaWZmIDwgMCkgeyBsbyA9IChzbG90KSArIDE7IH0gZWxzZSB7IGhp
ID0gKHNsb3QpIC0gMTsgfSB9IH0gd2hpbGUoMCk7CiAgICAgICAgaWYgKGZv
dW5kKSB7CiAgICAgICAgICAgICAgICBNUl90cmFjZV9wcmludF9hbGlhc19u
dW0oZnAsIHNsb3QpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICBmcHJpbnRmKGZwLCAiVGhlcmUgaXMgbm8gc3VjaCBhbGlhcy5cbiIpOwog
ICAgICAgIH0KfQoKdm9pZApNUl90cmFjZV9wcmludF9hbGxfYWxpYXNlcyhG
SUxFICpmcCkKewogICAgICAgIGludCBzbG90OwoKICAgICAgICBmb3IgKHNs
b3QgPSAwOyBzbG90IDwgTVJfYWxpYXNfcmVjb3JkX25leHQ7IHNsb3QrKykg
ewogICAgICAgICAgICAgICAgTVJfdHJhY2VfcHJpbnRfYWxpYXNfbnVtKGZw
LCBzbG90KTsKICAgICAgICB9Cn0KCnN0YXRpYyB2b2lkCk1SX3RyYWNlX3By
aW50X2FsaWFzX251bShGSUxFICpmcCwgaW50IHNsb3QpCnsKICAgICAgICBp
bnQgaTsKCiAgICAgICAgZnByaW50ZihmcCwgIiUtNnMgPT4gICAiLCBNUl9h
bGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFzX25hbWUpOwogICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBNUl9hbGlhc19yZWNvcmRzW3Nsb3RdLk1SX2FsaWFz
X3dvcmRfY291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgZnByaW50Zihm
cCwgIiAlcyIsIE1SX2FsaWFzX3JlY29yZHNbc2xvdF0uTVJfYWxpYXNfd29y
ZHNbaV0pOwogICAgICAgIH0KCiAgICAgICAgZnByaW50ZihmcCwgIlxuIik7
Cn0K

------------=_1583533113-4114-572--
>From volker.wysk@student.uni-tuebingen.de Sun Aug 13 05:40:00 2000
From: Volker Wysk <volker.wysk@student.uni-tuebingen.de>
To: gcc-bugs@gcc.gnu.org
Subject: bug report
Date: Sun, 13 Aug 2000 05:40:00 -0000
Message-id: <Pine.LNX.4.10.10008131438030.26283-100000@linux05.zdv.uni-tuebingen.de>
X-SW-Source: 2000-08/msg00274.html
Content-length: 300

Hi.

gcc 2.95.2 reports a parse error at line 3 for this simple input file, using
"gcc" or "gcc -c" to compile it.

--------------------------------
template <typename T>
void foo(T x) {
  T::item it;
}
--------------------------------

"gcc -v" says: "gcc version 2.95.2 19991024 (release)"



bye


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2000-08-13  1:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <399540FF.F1853AAF@runestig.com>
2000-08-13  1:33 ` Strange gcc warning Peter 'Luna' Runestig

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).