public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: optimization/8412: Code generation problem with -march=k6
@ 2002-10-31  4:07 paolo
  0 siblings, 0 replies; 3+ messages in thread
From: paolo @ 2002-10-31  4:07 UTC (permalink / raw)
  To: alexander.puchmayr, gcc-bugs, gcc-prs, nobody

Synopsis: Code generation problem with -march=k6

State-Changed-From-To: open->closed
State-Changed-By: paolo
State-Changed-When: Thu Oct 31 04:07:05 2002
State-Changed-Why:
    Cannot be reproduced with current 3.2.1 pre and 3.3 exp.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8412


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

* Re: optimization/8412: Code generation problem with -march=k6
@ 2003-01-28  7:06 Jim Bray
  0 siblings, 0 replies; 3+ messages in thread
From: Jim Bray @ 2003-01-28  7:06 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR optimization/8412; it has been noted by GNATS.

From: Jim Bray <jb@as220.org>
To: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org,  gcc-prs@gcc.gnu.org, alexander.puchmayr@jku.at
Cc:  
Subject: Re: optimization/8412: Code generation problem with -march=k6
Date: 28 Jan 2003 01:59:40 -0500

   I think I'm seeing this same bug, with 
 gcc version 3.2.1 20021207 (Gentoo Linux 3.2.1-20021207)
  I've noticed considerable instability with multimedia things including
 xine, and have been studying an easily reproducible problem with
 xmms. I'd assumed it was 3dnow related, but testing has zeroed me in
 on a combination of -funroll-all-loops and -O[23].
 
   Here are my crude notes to date. Not yet a good bug-report,
 
 The test is compiling and running xmms and doing a particular
 operation with it. My system is a k6-2.
 
 -finline-functions is used in all tests.
 
 CFLAGS='-march=k6-2 -g -O1' works.
 CFLAGS='-march=k6-2 -g -O1 -ffast-math' works.
 CFLAGS='-march=k6-2 -g -O1 -ffast-math -funroll-all-loops' works.
 CFLAGS='-march=k6-2 -g -O2 -ffast-math -funroll-all-loops' FAILS.
 CFLAGS='-march=k6-2 -g -O2 -ffast-math' works.
 CFLAGS='-march=k6-2 -O2 -ffast-math' works.
 
   The xmms configuration normally uses -funroll-all-loops, and
 I was seeing consistent failure with any variant of -m{cpu,arch}=
 {k6,k6-2} -O[23], which is not reflected above. The problem went
 away when the k6-specific flags were removed. I did not start
 getting any k6-specific build successes until I started dropping
 below -O2 and -funroll-all-loops.
 
   I did some studying of this with gdb, which seemed to be zeroing me
 into an area of code which became an unrolled loop.
 
  Bug I 'sent email to interested parties' from:
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8412
 
 
 -- 
 Jim Bray <jb@as220.org>
 


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

* optimization/8412: Code generation problem with -march=k6
@ 2002-10-31  2:56 alexander.puchmayr
  0 siblings, 0 replies; 3+ messages in thread
From: alexander.puchmayr @ 2002-10-31  2:56 UTC (permalink / raw)
  To: gcc-gnats


>Number:         8412
>Category:       optimization
>Synopsis:       Code generation problem with -march=k6
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Oct 31 02:56:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     alexander.puchmayr@jku.at
>Release:        gcc version 3.2
>Organization:
>Environment:
i586
>Description:
The attached file (from xine-lib-0.9.13-r1), src/libfaad/syntax.i produces an ICE when compiling with -march=k6 and -funroll-loops. The file compiles fine with
-march=i586, athlon, athlon-xp, i686, pentium4, this it seems to be a k6 related problem.

Error-Message:

syntax.c: In function `section_data':
syntax.c:804: unrecognizable insn:
(insn 863 880 865 (set (reg:SI 280)
        (zero_extend:SI (reg/v:QI 74))) -1 (nil)
    (nil))
syntax.c:804: Internal compiler error in extract_insn, at recog.c:2148
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>How-To-Repeat:
invoke gcc3-2 with:

gcc -march=k6 -O3 -funroll-loops -c syntax.i
>Fix:
Use i586 instead of k6
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-csrc; name="syntax.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="syntax.i"

IyAxICJzeW50YXguYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEg
InN5bnRheC5jIgojIDMwICJzeW50YXguYyIKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEg
MwojIDI1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVy
ZXMuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAz
CiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUv
c3R1YnMuaCIgMSAzCiMgMzEzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjYgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4
Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIwMSAiL3Vzci9saWIv
Z2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVm
IHVuc2lnbmVkIGludCBzaXplX3Q7CiMgMjk0ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgtZ251LzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsK
IyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgojIDk0ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGludCByZW07CiAg
fSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90OwogICAgbG9u
ZyBpbnQgcmVtOwogIH0gbGRpdl90OwojIDEzMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4
dGVybiBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAodm9pZCkgOwoKCgpleHRlcm4gZG91
YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCmV4dGVybiBpbnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRy
KSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9u
ZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIpIDsKIyAxNjMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gbG9uZyBp
bnQgc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgc3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQg
X19iYXNlKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0
cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19i
YXNlKQogICAgIDsKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0
b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19l
eHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIDsK
IyAyNTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gZG91YmxlIF9fc3RydG9kX2lu
dGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXAp
CiAgICAgOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgIDsKZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3Vw
KSA7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9f
c3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25l
ZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgOwoK
CgoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3Ry
dG9kX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9u
ZyBpbnQKc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9s
X2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBfX2lubGlu
ZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewog
IHJldHVybiBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7
Cn0KIyAzMjUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpfX2V4dGVuc2lvbl9fIGV4dGVybiBf
X2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewog
IHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7
Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApz
dHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2lu
dGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18g
ZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBf
X2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBf
X2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcg
bG9uZyBpbnQKc3RydG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4g
X19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCmV4
dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1
cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSk7Cn0KZXh0ZXJuIF9faW5s
aW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiAoaW50KSBzdHJ0
b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KZXh0ZXJuIF9faW5saW5l
IGxvbmcgaW50CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbCAo
X19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQoKCl9fZXh0ZW5zaW9uX18gZXh0
ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7
CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0K
IyAzODQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbDY0YSAobG9uZyBp
bnQgX19uKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MSAzCiMgMjggIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKIyAx
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGRlZi5o
IiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25n
OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRf
dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91
c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsK
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50
IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRl
ZiBzaWduZWQgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsK
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9f
ZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0
eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsK
dHlwZWRlZiBfX3VfaW50IF9fdWlkX3Q7CnR5cGVkZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVm
IF9fdV9sb25nIF9faW5vX3Q7CnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3Vf
aW50IF9fbmxpbmtfdDsKdHlwZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90
IF9fbG9mZl90Owp0eXBlZGVmIGludCBfX3BpZF90Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5
cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0
eXBlZGVmIF9fdV9pbnQgX19pZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxb
Ml07CiAgfSBfX2ZzaWRfdDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAq
X19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBs
b25nIGludCBfX3N3YmxrX3Q7Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVm
IGludCBfX2Nsb2NraWRfdDsKCgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKCgoKCnR5cGVkZWYg
aW50IF9fa2V5X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoK
CnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxr
Y250X3Q7CnR5cGVkZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcg
X19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRl
ZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRf
dDsKCgp0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19v
ZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBl
ZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
cHRocmVhZHR5cGVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1
ZGUvYml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2No
ZWRfcHJpb3JpdHk7CiAgfTsKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgi
IDIgMwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAg
aW50IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1
Y3QgKl9wdGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9hdHRyX3MK
ewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3Nj
aGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2Nv
cGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAq
X19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCgp0
eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9w
dGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9IHB0aHJlYWRfY29uZF90OwoKCgp0eXBlZGVmIHN0
cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKCnR5cGVkZWYgdW5z
aWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX21f
cmVzZXJ2ZWQ7CiAgaW50IF9fbV9jb3VudDsKICBfcHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAg
aW50IF9fbV9raW5kOwogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhy
ZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRo
cmVhZF9tdXRleGF0dHJfdDsKCgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CiMgMTQwICIv
dXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
aW50IHB0aHJlYWRfdDsKIyAxNDQgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwojIDMx
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hh
cjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBl
ZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191
X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoKCgp0eXBlZGVmIF9f
bG9mZl90IGxvZmZfdDsKCgoKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm9fdDsKIyA2MSAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYg
X19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBf
X25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgoKCnR5cGVk
ZWYgX19vZmY2NF90IG9mZl90OwojIDk5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlw
ZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYg
X19zc2l6ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRl
ZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMK
IyA3MCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsKIyA4
MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsK
IyA5NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90Owoj
IDEzMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKIyAxNDYgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4y
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0NyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAy
IDMKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE5MCAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKF9fRElfXykpKTsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0
dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9p
bnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2ln
bmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5
cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9f
RElfXykpKTsKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX3dvcmRfXykpKTsKIyAyMTIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgMzcgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL2VuZGlhbi5oIiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL2Vu
ZGlhbi5oIiAyIDMKIyAyMTMgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIyAxICIv
dXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxl
Y3QuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIyAzMiAiL3Vzci9p
bmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQu
aCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCnR5cGVkZWYgaW50IF9f
c2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBsb25nIGlu
dCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKV07CiAgfSBf
X3NpZ3NldF90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgoKdHlwZWRl
ZiBfX3NpZ3NldF90IHNpZ3NldF90OwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAz
CiMgMTA2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIF9f
dGltZV90IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7CiAgfTsKIyA0NSAiL3Vzci9pbmNs
dWRlL3N5cy9zZWxlY3QuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAz
CiMgNjcgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXZhbAogIHsKICAg
IF9fdGltZV90IHR2X3NlYzsKICAgIF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsKICB9OwojIDQ3ICIv
dXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgp0eXBlZGVmIF9fc3VzZWNvbmRzX3Qgc3Vz
ZWNvbmRzX3Q7CgoKCgoKdHlwZWRlZiBsb25nIGludCBfX2ZkX21hc2s7CgoKCgoKCgp0eXBlZGVm
IHN0cnVjdAogIHsKCgoKCgoKICAgIF9fZmRfbWFzayBfX2Zkc19iaXRzWzEwMjQgLyAoOCAqIHNp
emVvZiAoX19mZF9tYXNrKSldOwoKCiAgfSBmZF9zZXQ7CgoKCgoKCnR5cGVkZWYgX19mZF9tYXNr
IGZkX21hc2s7CiMgOTUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKCgoKCgoKCmV4dGVy
biBpbnQgc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAog
ICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAg
ICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpIDsKIyAxMTggIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKCiMgMjE2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjE5ICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDI0MyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzCnR5cGVkZWYgX19ibGtjbnQ2NF90IGJsa2NudF90OwoKCgp0eXBlZGVmIF9fZnNibGtjbnQ2
NF90IGZzYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnRfdDsKIyAy
NjIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoKIyAzOTEgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMiAzCgoKCgoKCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQpIDsKCgpleHRlcm4g
dm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmlu
aXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pIDsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0
YXRlIChjaGFyICpfX3N0YXRlYnVmKSA7CgoKCgoKCgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAg
ICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGludDMyX3QgKnN0YXRlOwog
ICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGludCByYW5kX3NlcDsKICAg
IGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5k
b21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAq
X19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGlu
dCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIDsKCmV4dGVybiBpbnQgaW5pdHN0
YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwK
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKZXh0ZXJu
IGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgoK
ZXh0ZXJuIGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50
IF9fc2VlZCkgOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIDsK
CgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gZG91YmxlIGVyYW5k
NDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGxy
YW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIDsKZXh0ZXJu
IGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0
ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVybiB1bnNpZ25lZCBz
aG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgOwpleHRl
cm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgOwoKCgoKCnN0
cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAg
dW5zaWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19j
OwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQgX19hOwogIH07CgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEg
Kl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVz
dHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0
cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQg
Kl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVkIHNo
b3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhf
ZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBk
cmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBs
b25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGpyYW5kNDhfciAodW5z
aWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
bG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAo
bG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICA7
CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAog
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwoKZXh0
ZXJuIGludCBsY29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLAogICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsKIyA1MjcgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXpl
KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgKmNhbGxvYyAoc2l6
ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9j
X18pKTsKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3Np
emUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2b2lk
ICpfX3B0cikgOwoKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19wdHIpIDsKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDMK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgoKCgoKCmV4dGVybiB2
b2lkICphbGxvY2EgKHNpemVfdCBfX3NpemUpIDsKCgoKCgoKIyA1NDcgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0
dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDU2MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7
CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIDsKCgoKCmV4dGVy
biBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqX19hcmcp
LCB2b2lkICpfX2FyZykKICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVz
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CiMgNTg3ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoK
ZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoK
CgpleHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIDsKCgoKCgpleHRlcm4gaW50IHNl
dGVudiAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9f
cmVwbGFjZSkKICAgICA7CgoKZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25h
bWUpIDsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgOwojIDYyMyAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsK
IyA2MzQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIg
Kl9fdGVtcGxhdGUpIF9fYXNtX18gKCIiICJta3N0ZW1wNjQiKTsKIyA2NTAgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwoK
CgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5kKSA7CiMgNjcyICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVz
dHJpY3QgX19yZXNvbHZlZCkgOwoKCgoKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChf
X2NvbnN0IHZvaWQgKiwgX19jb25zdCB2b2lkICopOwojIDY4OSAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAzCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2NvbnN0
IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBzaXpl
X3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNvcnQg
KHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAg
ICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGludCBf
X3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxv
bmcgaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDcxMCAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBkaXZfdCBkaXYgKGludCBfX251bWVyLCBpbnQgX19kZW5v
bSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsZGl2X3QgbGRpdiAo
bG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CiMgNzI4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIg
KmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2Rl
Y3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwoKCgoKZXh0
ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikg
OwoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNo
YXIgKl9fYnVmKSA7CgoKCgpleHRlcm4gY2hhciAqcWVjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNw
dCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91
YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwpleHRlcm4gY2hhciAqcWdj
dnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIDsKCgoK
CmV4dGVybiBpbnQgZWN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3Np
Z24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19s
ZW4pIDsKZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGlu
dCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX2xlbikgOwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGlu
dCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmlj
dCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQgcWZjdnRfciAobG9uZyBkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAgICAgICAgICAgICAgICAgIGNo
YXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgOwoKCgoKCgpleHRlcm4gaW50IG1i
bGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWJ0b3dj
ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgd2N0b21iIChj
aGFyICpfX3MsIHdjaGFyX3QgX193Y2hhcikgOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoKZXh0ZXJuIHNpemVfdCB3Y3N0
b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCiAgICAgOwoKCgoKCgoK
ZXh0ZXJuIGludCBycG1hdGNoIChfX2NvbnN0IGNoYXIgKl9fcmVzcG9uc2UpIDsKIyA4NTggIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xv
YWRhdmdbXSwgaW50IF9fbmVsZW0pIDsKCgoKCgoKIyAzMSAic3ludGF4LmMiIDIKIyAxICIvdXNy
L2luY2x1ZGUvbWVtb3J5LmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvbWVtb3J5LmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi
IDMKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgpleHRl
cm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0
ZXJuIHZvaWQgKm1lbW1vdmUgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywgc2l6
ZV90IF9fbikKICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQgKl9fcmVzdHJp
Y3QgX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgIDsKCgoKCmV4dGVybiB2b2lkICptZW1z
ZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWVtY21w
IChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtY2hyIChfX2Nv
bnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CiMgNzcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAq
c3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3JjKQogICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny
Yywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3Qg
X19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgOwoKZXh0ZXJuIGNo
YXIgKnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKSA7CgoKZXh0ZXJu
IGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAg
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY21wIChfX2NvbnN0
IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X24pIDsKIyAxMjAgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyZHVw
IChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxNTUg
Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyY2hyIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hh
ciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwojIDE2NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qg
c3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29u
c3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBf
X2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
ZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNo
YXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDE4NyAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkKICAgICA7CgoKCmV4dGVy
biBjaGFyICpfX3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoKZXh0ZXJuIGNoYXIg
KnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZl
X3B0cikgOwojIDIxOCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qgc3Ry
bGVuIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgMjI5
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19l
cnJudW0pIDsKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAq
X19idWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAq
X19zLCBzaXplX3QgX19uKSA7CgoKCmV4dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9f
c3JjLCB2b2lkICpfX2Rlc3QsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gdm9pZCBiemVybyAodm9p
ZCAqX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9f
czEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQg
X19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChf
X2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMg
MjcyICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEs
IF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKIyAyOTQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3Ry
c2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCiAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKSA7CiMgMzU3ICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiMgMzU4ICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5o
IiAxIDMKIyAzNzcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gdm9pZCAq
X19yYXdtZW1jaHIgKGNvbnN0IHZvaWQgKl9fcywgaW50IF9fYyk7CiMgNDA1ICIvdXNyL2luY2x1
ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RyY3B5X3NtYWxs
IChjaGFyICosIF9fdWludDE2X3QsIF9fdWludDE2X3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX191aW50MzJfdCwgX191aW50MzJfdCwgc2l6ZV90KTsKZXh0ZXJuIF9f
aW5saW5lIGNoYXIgKgpfX3N0cmNweV9zbWFsbCAoY2hhciAqX19kZXN0LAogICAgICAgICAgICAg
ICAgX191aW50MTZfdCBfX3NyYzBfMiwgX191aW50MTZfdCBfX3NyYzRfMiwKICAgICAgICAgICAg
ICAgIF9fdWludDMyX3QgX19zcmMwXzQsIF9fdWludDMyX3QgX19zcmM0XzQsCiAgICAgICAgICAg
ICAgICBzaXplX3QgX19zcmNsZW4pCnsKICB1bmlvbiB7CiAgICBfX3VpbnQzMl90IF9fdWk7CiAg
ICBfX3VpbnQxNl90IF9fdXNpOwogICAgdW5zaWduZWQgY2hhciBfX3VjOwogIH0gKl9fdSA9ICh2
b2lkICopIF9fZGVzdDsKICBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIF9fc3JjbGVuKQogICAgewog
ICAgY2FzZSAxOgogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2Ug
MjoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBicmVhazsKICAgIGNhc2UgMzoK
ICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICh2
b2lkICopKChjaGFyICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBi
cmVhazsKICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFr
OwogICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19l
eHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VjID0g
J1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80
OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOwog
ICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSA3OgogICAg
ICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAq
KSgoY2hhciAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBf
X3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDIpOwogICAgICBfX3Ut
Pl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgODoKICAgICAgX191LT5fX3VpID0g
X19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191
ICsgNCk7CiAgICAgIF9fdS0+X191aSA9IF9fc3JjNF80OwogICAgICBicmVhazsKICAgIH0KICBy
ZXR1cm4gX19kZXN0Owp9CiMgODkzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0
ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQg
X19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX3JlamVjdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7
CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVq
ZWN0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGlu
ZSBzaXplX3QgX19zdHJjc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3JlamVjdDIpOwpleHRl
cm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBf
X3JlamVjdDEsIGludCBfX3JlamVjdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAw
OwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3Jl
amVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDIpCiAgICArK19fcmVz
dWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNz
cG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fcmVqZWN0MiwgaW50IF9fcmVqZWN0Myk7CmV4dGVy
biBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f
cmVqZWN0MSwgaW50IF9fcmVqZWN0MiwKICAgICAgICAgICAgICBpbnQgX19yZWplY3QzKQp7CiAg
cmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAn
XDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QxCiAgICAgICAgICYmIF9fc1tfX3Jlc3Vs
dF0gIT0gX19yZWplY3QyICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QzKQogICAgKytfX3Jl
c3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5NTAgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmlu
ZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAo
X19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jl
c3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0KQogICAgKytfX3Jl
c3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJz
cG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVf
dApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2Fj
Y2VwdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19f
cmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICAr
K19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBf
X3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpl
eHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50
IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0MykKewogIHJlZ2lzdGVyIHNp
emVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8
fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MgogICAgICAgICB8fCBfX3NbX19yZXN1bHRdID09
IF9fYWNjZXB0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTAwNyAi
L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0
cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBj
aGFyICoKX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50
IF9fYWNjZXB0MikKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQx
ICYmICpfX3MgIT0gX19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/
ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4gX19pbmxpbmUg
Y2hhciAqX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2Fj
Y2VwdDMpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIsCiAgICAgICAgICAgICAgaW50IF9f
YWNjZXB0MykKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYm
ICpfX3MgIT0gX19hY2NlcHQyCiAgICAgICAgICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytf
X3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVf
dCkgX19zOwp9CiMgMTA1OSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBf
X2lubGluZSBjaGFyICpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIg
KipfX25leHRwKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFyICpf
X3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYg
KF9fcyA9PSAoKHZvaWQgKikwKSkKICAgIF9fcyA9ICpfX25leHRwOwogIHdoaWxlICgqX19zID09
IF9fc2VwKQogICAgKytfX3M7CiAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcyAh
PSAnXDAnKQogICAgewogICAgICBfX3Jlc3VsdCA9IF9fcysrOwogICAgICB3aGlsZSAoKl9fcyAh
PSAnXDAnKQogICAgICAgIGlmICgqX19zKysgPT0gX19zZXApCiAgICAgICAgICB7CiAgICAgICAg
ICAgIF9fc1stMV0gPSAnXDAnOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAg
Kl9fbmV4dHAgPSBfX3M7CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTA5MSAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0cnNlcF9nIChjaGFyICoq
X19zdHJpbmdwLCBfX2NvbnN0IGNoYXIgKl9fZGVsaW0pOwojIDExMDkgIi91c3IvaW5jbHVkZS9i
aXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMWMgKGNoYXIg
KipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzFj
IChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwg
PSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSAmJiAoKl9fcyA9IChfX2V4dGVu
c2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZWplY3QpICYmIChfX3JlamVjdCkgPT0g
J1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19yZWplY3QpIDogc3RyY2hy
IChfX3JldHZhbCwgX19yZWplY3QpKSkpICE9ICgodm9pZCAqKTApKQogICAgKigqX19zKSsrID0g
J1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNl
cF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKTsKZXh0ZXJu
IF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEs
IGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlm
IChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19j
cCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoMSkKICAgICAgICB7CiAgICAgICAgICBpZiAoKl9f
Y3AgPT0gJ1wwJykKICAgICAgICAgICAgewogICAgICAgICAgICAgIF9fY3AgPSAoKHZvaWQgKikw
KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICBpZiAoKl9fY3AgPT0g
X19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MikKICAgICAgICAgICAgewogICAgICAgICAg
ICAgICpfX2NwKysgPSAnXDAnOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAg
ICAgICAgICArK19fY3A7CiAgICAgICAgfQogICAgICAqX19zID0gX19jcDsKICAgIH0KICByZXR1
cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8zYyAoY2hhciAq
Kl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpf
X3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLCBj
aGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAo
X19yZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3Ag
PSBfX3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiAgICAgICAgewogICAgICAgICAgaWYgKCpfX2Nw
ID09ICdcMCcpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfX2NwID0gKCh2b2lkICopMCk7
CiAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgaWYgKCpfX2NwID09IF9f
cmVqZWN0MSB8fCAqX19jcCA9PSBfX3JlamVjdDIgfHwgKl9fY3AgPT0gX19yZWplY3QzKQogICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgKl9fY3ArKyA9ICdcMCc7CiAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICsrX19jcDsKICAgICAgICB9CiAgICAgICpfX3Mg
PSBfX2NwOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQojIDExOTAgIi91c3IvaW5jbHVkZS9i
aXRzL3N0cmluZzIuaCIgMwpleHRlcm4gY2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAqX19z
dHJpbmcpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTIwOSAiL3Vzci9pbmNsdWRl
L2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hhciAq
X19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsK
IyAzNjEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCgojIDMxICIvdXNyL2luY2x1ZGUv
bWVtb3J5LmgiIDIgMwojIDMyICJzeW50YXguYyIgMgojIDEgImNvbW1vbi5oIiAxCiMgMTE2ICJj
b21tb24uaCIKIyAxICIvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMSAzCiMgMjggIi91c3IvaW5j
bHVkZS9pbnR0eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAxIDMKIyAyNyAi
L3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIg
MSAzCiMgMjggIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvd29yZHNpemUuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMiAzCiMgNDkg
Ii91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdWludDE2X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB1aW50MzJfdDsKCgoKCgpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IGludCB1aW50NjRfdDsKCgoKCgoKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfbGVhc3Q4X3Q7CnR5
cGVkZWYgc2hvcnQgaW50IGludF9sZWFzdDE2X3Q7CnR5cGVkZWYgaW50IGludF9sZWFzdDMyX3Q7
CgoKCl9fZXh0ZW5zaW9uX18KdHlwZWRlZiBsb25nIGxvbmcgaW50IGludF9sZWFzdDY0X3Q7CgoK
CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50X2xlYXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNo
b3J0IGludCB1aW50X2xlYXN0MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMy
X3Q7CgoKCl9fZXh0ZW5zaW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRf
bGVhc3Q2NF90OwoKCgoKCgp0eXBlZGVmIHNpZ25lZCBjaGFyIGludF9mYXN0OF90OwoKCgoKCnR5
cGVkZWYgaW50IGludF9mYXN0MTZfdDsKdHlwZWRlZiBpbnQgaW50X2Zhc3QzMl90OwpfX2V4dGVu
c2lvbl9fCnR5cGVkZWYgbG9uZyBsb25nIGludCBpbnRfZmFzdDY0X3Q7CgoKCnR5cGVkZWYgdW5z
aWduZWQgY2hhciB1aW50X2Zhc3Q4X3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9m
YXN0MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MzJfdDsKX19leHRlbnNpb25f
Xwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWludF9mYXN0NjRfdDsKIyAxMjYgIi91
c3IvaW5jbHVkZS9zdGRpbnQuaCIgMwp0eXBlZGVmIGludCBpbnRwdHJfdDsKCgp0eXBlZGVmIHVu
c2lnbmVkIGludCB1aW50cHRyX3Q7CiMgMTM4ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMKX19l
eHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgaW50bWF4X3Q7Cl9fZXh0ZW5zaW9uX18K
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRtYXhfdDsKIyAyOSAiL3Vzci9pbmNs
dWRlL2ludHR5cGVzLmgiIDIgMwoKCgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fZ3djaGFyX3Q7CiMg
Mjc0ICIvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMwoKIyAyODggIi91c3IvaW5jbHVkZS9pbnR0
eXBlcy5oIiAzCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBsb25nIGludCBxdW90OwogICAg
bG9uZyBsb25nIGludCByZW07CiAgfSBpbWF4ZGl2X3Q7CgoKCgoKZXh0ZXJuIGludG1heF90IGlt
YXhhYnMgKGludG1heF90IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy
biBpbWF4ZGl2X3QgaW1heGRpdiAoaW50bWF4X3QgX19udW1lciwgaW50bWF4X3QgX19kZW5vbSkK
ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnRtYXhfdCBzdHJ0
b2ltYXggKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7CgoKZXh0
ZXJuIHVpbnRtYXhfdCBzdHJ0b3VtYXggKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqIF9fcmVzdHJpY3QgX19lbmRwdHIs
IGludCBfX2Jhc2UpIDsKCgpleHRlcm4gaW50bWF4X3Qgd2NzdG9pbWF4IChfX2NvbnN0IF9fZ3dj
aGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2d3
Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CgoKZXh0ZXJu
IHVpbnRtYXhfdCB3Y3N0b3VtYXggKF9fY29uc3QgX19nd2NoYXJfdCAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2d3Y2hhcl90ICoqIF9fcmVzdHJpY3Qg
X19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgOwojIDM5NiAiL3Vzci9pbmNsdWRlL2ludHR5cGVz
LmgiIDMKZXh0ZXJuIF9faW5saW5lIGludG1heF90CnN0cnRvaW1heCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IG5wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IGVuZHB0ciwKICAgICAgICAgICBpbnQg
YmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKG5wdHIsIGVuZHB0ciwgYmFzZSwg
MCk7Cn0KIyA0MTQgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzCmV4dGVybiBfX2lubGluZSB1
aW50bWF4X3QKc3RydG91bWF4IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgbnB0ciwgY2hhciAq
Kl9fcmVzdHJpY3QgZW5kcHRyLAogICAgICAgICAgIGludCBiYXNlKQp7CiAgcmV0dXJuIF9fc3Ry
dG91bGxfaW50ZXJuYWwgKG5wdHIsIGVuZHB0ciwgYmFzZSwgMCk7Cn0KCgoKX19leHRlbnNpb25f
XwpleHRlcm4gbG9uZyBsb25nIGludCBfX3djc3RvbGxfaW50ZXJuYWwgKF9fY29uc3QgX19nd2No
YXJfdCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19nd2No
YXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgpleHRlcm4gX19pbmxpbmUg
aW50bWF4X3QKd2NzdG9pbWF4IChfX2NvbnN0IF9fZ3djaGFyX3QgKl9fcmVzdHJpY3QgbnB0ciwg
X19nd2NoYXJfdCAqKl9fcmVzdHJpY3QgZW5kcHRyLAogICAgICAgICAgIGludCBiYXNlKQp7CiAg
cmV0dXJuIF9fd2NzdG9sbF9pbnRlcm5hbCAobnB0ciwgZW5kcHRyLCBiYXNlLCAwKTsKfQoKCgoK
X19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3djc3RvdWxsX2lu
dGVybmFsIChfX2NvbnN0IF9fZ3djaGFyX3QgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19nd2NoYXJfdCAqKgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19ncm91cCkgOwoKCmV4dGVybiBfX2lubGluZSB1aW50bWF4X3QKd2NzdG91
bWF4IChfX2NvbnN0IF9fZ3djaGFyX3QgKl9fcmVzdHJpY3QgbnB0ciwgX19nd2NoYXJfdCAqKl9f
cmVzdHJpY3QgZW5kcHRyLAogICAgICAgICAgIGludCBiYXNlKQp7CiAgcmV0dXJuIF9fd2NzdG91
bGxfaW50ZXJuYWwgKG5wdHIsIGVuZHB0ciwgYmFzZSwgMCk7Cn0KCgoKCgojIDExNyAiY29tbW9u
LmgiIDIKCgoKCgoKICB0eXBlZGVmIGZsb2F0IHJlYWxfdDsKIyAxNDEgImNvbW1vbi5oIgojIDEg
Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1
ZGUvbWF0aC5oIiAyIDMKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoZGVmLmgiIDEg
MwojIDQxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA2MyAiL3Vzci9pbmNsdWRlL21hdGgu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9p
bmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3VibGUgX194
KSA7IGV4dGVybiBkb3VibGUgX19hY29zIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGFz
aW4gKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2FzaW4gKGRvdWJsZSBfX3gpIDsKCmV4
dGVybiBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRhbiAoZG91
YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkg
OyBleHRlcm4gZG91YmxlIF9fYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIDsKCgpleHRl
cm4gZG91YmxlIGNvcyAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fY29zIChkb3VibGUg
X194KSA7CgpleHRlcm4gZG91YmxlIHNpbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9f
c2luIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlIF9feCkgOyBleHRl
cm4gZG91YmxlIF9fdGFuIChkb3VibGUgX194KSA7CiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21h
dGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgY29zaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91
YmxlIF9fY29zaCAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBzaW5oIChkb3VibGUgX194
KSA7IGV4dGVybiBkb3VibGUgX19zaW5oIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHRh
bmggKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3RhbmggKGRvdWJsZSBfX3gpIDsKCgoK
ZXh0ZXJuIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYWNvc2gg
KGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJsZSBfX3gpIDsgZXh0ZXJu
IGRvdWJsZSBfX2FzaW5oIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGF0YW5oIChkb3Vi
bGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoZG91YmxlIF9feCkgOwoKCgoKCmV4dGVy
biBkb3VibGUgZXhwIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHAgKGRvdWJsZSBf
X3gpIDsKIyAxMDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3Vi
bGUgZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4gZG91YmxlIF9f
ZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOwoKCmV4dGVybiBkb3VibGUgbGRl
eHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7IGV4dGVybiBkb3VibGUgX19sZGV4cCAo
ZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIDsKCgpleHRlcm4gZG91YmxlIGxvZyAoZG91Ymxl
IF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJs
ZSBsb2cxMCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJsZSBfX3gp
IDsKCgpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKSA7IGV4
dGVybiBkb3VibGUgX19tb2RmIChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgOwoKCgpleHRl
cm4gZG91YmxlIGV4cG0xIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHBtMSAoZG91
YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRv
dWJsZSBfX2xvZzFwIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2diIChkb3VibGUg
X194KSA7IGV4dGVybiBkb3VibGUgX19sb2diIChkb3VibGUgX194KSA7CiMgMTQzICIvdXNyL2lu
Y2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlIF9feCwg
ZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9fcG93IChkb3VibGUgX194LCBkb3VibGUgX195
KSA7CgoKZXh0ZXJuIGRvdWJsZSBzcXJ0IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19z
cXJ0IChkb3VibGUgX194KSA7CgoKCmV4dGVybiBkb3VibGUgaHlwb3QgKGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX2h5cG90IChkb3VibGUgX194LCBkb3VibGUgX195
KSA7CgoKCgpleHRlcm4gZG91YmxlIGNicnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBf
X2NicnQgKGRvdWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBjZWlsIChkb3VibGUgX194
KSA7IGV4dGVybiBkb3VibGUgX19jZWlsIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBm
YWJzIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3Vi
bGUgX19mYWJzIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0
ZXJuIGRvdWJsZSBmbG9vciAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fZmxvb3IgKGRv
dWJsZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IDsgZXh0ZXJuIGRvdWJsZSBfX2Ztb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsKCgoKCmV4
dGVybiBpbnQgX19pc2luZiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlIF9fdmFsdWUpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZSAoZG91YmxlIF9f
dmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGRyZW0g
KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX2RyZW0gKGRvdWJsZSBf
X3gsIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGRvdWJsZSBzaWduaWZpY2FuZCAoZG91YmxlIF9f
eCkgOyBleHRlcm4gZG91YmxlIF9fc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpIDsKCgoKCmV4dGVy
biBkb3VibGUgY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2NvcHlzaWduIChkb3VibGUgX194LCBkb3Vi
bGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMjA5ICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gaW50IF9faXNuYW4gKGRvdWJsZSBfX3ZhbHVlKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW4gKGRvdWJsZSBf
X3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBqMCAo
ZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19qMCAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgajEg
KGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fajEgKGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIGpu
IChpbnQsIGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fam4gKGludCwgZG91YmxlKSA7CmV4dGVy
biBkb3VibGUgeTAgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9feTAgKGRvdWJsZSkgOwpleHRl
cm4gZG91YmxlIHkxIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX3kxIChkb3VibGUpIDsKZXh0
ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX3luIChpbnQsIGRv
dWJsZSkgOwoKCgoKCmV4dGVybiBkb3VibGUgZXJmIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBf
X2VyZiAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKSA7IGV4dGVybiBkb3Vi
bGUgX19lcmZjIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSBsZ2FtbWEgKGRvdWJsZSkgOyBleHRl
cm4gZG91YmxlIF9fbGdhbW1hIChkb3VibGUpIDsKIyAyMzggIi91c3IvaW5jbHVkZS9iaXRzL21h
dGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJsZSkgOyBleHRlcm4gZG91Ymxl
IF9fZ2FtbWEgKGRvdWJsZSkgOwoKCgoKCgpleHRlcm4gZG91YmxlIGxnYW1tYV9yIChkb3VibGUs
IGludCAqX19zaWduZ2FtcCkgOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hX3IgKGRvdWJsZSwgaW50
ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4dGVybiBkb3VibGUgcmludCAoZG91YmxlIF9feCkgOyBl
eHRlcm4gZG91YmxlIF9fcmludCAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgbmV4dGFm
dGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gZG91YmxlIHJlbWFpbmRlciAoZG91
YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9fcmVtYWluZGVyIChkb3VibGUg
X194LCBkb3VibGUgX195KSA7CgoKCmV4dGVybiBkb3VibGUgc2NhbGIgKGRvdWJsZSBfX3gsIGRv
dWJsZSBfX24pIDsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19u
KSA7CgoKCgpleHRlcm4gZG91YmxlIHNjYWxibiAoZG91YmxlIF9feCwgaW50IF9fbikgOyBleHRl
cm4gZG91YmxlIF9fc2NhbGJuIChkb3VibGUgX194LCBpbnQgX19uKSA7CgoKCmV4dGVybiBpbnQg
aWxvZ2IgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGludCBfX2lsb2diIChkb3VibGUgX194KSA7CiMg
NjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDgyICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxvYXQgYWNvc2YgKGZsb2F0IF9feCkgOyBl
eHRlcm4gZmxvYXQgX19hY29zZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgYXNpbmYgKGZs
b2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hc2luZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxv
YXQgYXRhbmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hdGFuZiAoZmxvYXQgX194KSA7
CgpleHRlcm4gZmxvYXQgYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgOyBleHRlcm4gZmxv
YXQgX19hdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGNvc2Yg
KGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19jb3NmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBm
bG9hdCBzaW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fc2luZiAoZmxvYXQgX194KSA7
CgpleHRlcm4gZmxvYXQgdGFuZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3RhbmYgKGZs
b2F0IF9feCkgOwojIDc4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4g
ZmxvYXQgY29zaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19jb3NoZiAoZmxvYXQgX194
KSA7CgpleHRlcm4gZmxvYXQgc2luaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19zaW5o
ZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgdGFuaGYgKGZsb2F0IF9feCkgOyBleHRlcm4g
ZmxvYXQgX190YW5oZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCBhY29zaGYgKGZsb2F0
IF9feCkgOyBleHRlcm4gZmxvYXQgX19hY29zaGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0
IGFzaW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2FzaW5oZiAoZmxvYXQgX194KSA7
CgpleHRlcm4gZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXRhbmhm
IChmbG9hdCBfX3gpIDsKCgoKCgpleHRlcm4gZmxvYXQgZXhwZiAoZmxvYXQgX194KSA7IGV4dGVy
biBmbG9hdCBfX2V4cGYgKGZsb2F0IF9feCkgOwojIDEwNiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0
aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoZmxvYXQgX194LCBpbnQgKl9fZXhwb25l
bnQpIDsgZXh0ZXJuIGZsb2F0IF9fZnJleHBmIChmbG9hdCBfX3gsIGludCAqX19leHBvbmVudCkg
OwoKCmV4dGVybiBmbG9hdCBsZGV4cGYgKGZsb2F0IF9feCwgaW50IF9fZXhwb25lbnQpIDsgZXh0
ZXJuIGZsb2F0IF9fbGRleHBmIChmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KSA7CgoKZXh0ZXJu
IGZsb2F0IGxvZ2YgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19sb2dmIChmbG9hdCBfX3gp
IDsKCgpleHRlcm4gZmxvYXQgbG9nMTBmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9n
MTBmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgbW9kZmYgKGZsb2F0IF9feCwgZmxvYXQg
Kl9faXB0cikgOyBleHRlcm4gZmxvYXQgX19tb2RmZiAoZmxvYXQgX194LCBmbG9hdCAqX19pcHRy
KSA7CgoKCmV4dGVybiBmbG9hdCBleHBtMWYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19l
eHBtMWYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgOyBl
eHRlcm4gZmxvYXQgX19sb2cxcGYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBsb2diZiAo
ZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2xvZ2JmIChmbG9hdCBfX3gpIDsKIyAxNDMgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBwb3dmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19wb3dmIChmbG9hdCBfX3gsIGZsb2F0IF9f
eSkgOwoKCmV4dGVybiBmbG9hdCBzcXJ0ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3Nx
cnRmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoZmxvYXQgX194LCBmbG9h
dCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9faHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoK
CgoKZXh0ZXJuIGZsb2F0IGNicnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY2JydGYg
KGZsb2F0IF9feCkgOwoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgOyBleHRl
cm4gZmxvYXQgX19jZWlsZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGZhYnNmIChmbG9h
dCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fZmFic2Yg
KGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBm
bG9vcmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19mbG9vcmYgKGZsb2F0IF9feCkgOwoK
CmV4dGVybiBmbG9hdCBmbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0
IF9fZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKCgpleHRlcm4gaW50IF9faXNpbmZm
IChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGlu
dCBfX2Zpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKCmV4dGVybiBpbnQgaXNpbmZmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGVmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGRyZW1mIChmbG9hdCBfX3gsIGZsb2F0
IF9feSkgOyBleHRlcm4gZmxvYXQgX19kcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgoK
ZXh0ZXJuIGZsb2F0IHNpZ25pZmljYW5kZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3Np
Z25pZmljYW5kZiAoZmxvYXQgX194KSA7CgoKCgpleHRlcm4gZmxvYXQgY29weXNpZ25mIChmbG9h
dCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxv
YXQgX19jb3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CiMgMjA5ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4g
aW50IF9faXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCmV4dGVybiBpbnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGowZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fajBm
IChmbG9hdCkgOwpleHRlcm4gZmxvYXQgajFmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19qMWYg
KGZsb2F0KSA7CmV4dGVybiBmbG9hdCBqbmYgKGludCwgZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9f
am5mIChpbnQsIGZsb2F0KSA7CmV4dGVybiBmbG9hdCB5MGYgKGZsb2F0KSA7IGV4dGVybiBmbG9h
dCBfX3kwZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IHkxZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0
IF9feTFmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgeW5mIChpbnQsIGZsb2F0KSA7IGV4dGVybiBm
bG9hdCBfX3luZiAoaW50LCBmbG9hdCkgOwoKCgoKCmV4dGVybiBmbG9hdCBlcmZmIChmbG9hdCkg
OyBleHRlcm4gZmxvYXQgX19lcmZmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgZXJmY2YgKGZsb2F0
KSA7IGV4dGVybiBmbG9hdCBfX2VyZmNmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgbGdhbW1hZiAo
ZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fbGdhbW1hZiAoZmxvYXQpIDsKIyAyMzggIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBnYW1tYWYgKGZsb2F0KSA7IGV4
dGVybiBmbG9hdCBfX2dhbW1hZiAoZmxvYXQpIDsKCgoKCgoKZXh0ZXJuIGZsb2F0IGxnYW1tYWZf
ciAoZmxvYXQsIGludCAqX19zaWduZ2FtcCkgOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmX3IgKGZs
b2F0LCBpbnQgKl9fc2lnbmdhbXApIDsKCgoKCgoKZXh0ZXJuIGZsb2F0IHJpbnRmIChmbG9hdCBf
X3gpIDsgZXh0ZXJuIGZsb2F0IF9fcmludGYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBu
ZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gZmxvYXQgX19uZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBmbG9hdCByZW1haW5kZXJmIChm
bG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19yZW1haW5kZXJmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgOwoKCgpleHRlcm4gZmxvYXQgc2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0
IF9fbikgOyBleHRlcm4gZmxvYXQgX19zY2FsYmYgKGZsb2F0IF9feCwgZmxvYXQgX19uKSA7CgoK
CgpleHRlcm4gZmxvYXQgc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSA7IGV4dGVybiBmbG9h
dCBfX3NjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikgOwoKCgpleHRlcm4gaW50IGlsb2diZiAo
ZmxvYXQgX194KSA7IGV4dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0IF9feCkgOwojIDgzICIvdXNy
L2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA5OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMv
bWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBfX3gp
IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2wgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJu
IGxvbmcgZG91YmxlIGFzaW5sIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW5sIChs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbmwgKGxvbmcgZG91Ymxl
IF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25n
IGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbjJsIChsb25nIGRvdWJsZSBf
X3ksIGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBjb3NsIChsb25nIGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zbCAobG9uZyBkb3VibGUgX194KSA7
CgpleHRlcm4gbG9uZyBkb3VibGUgc2lubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3NpbmwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRh
bmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX190YW5sIChsb25nIGRv
dWJsZSBfX3gpIDsKIyA3OCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJu
IGxvbmcgZG91YmxlIGNvc2hsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fY29zaGwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpbmhsIChs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2luaGwgKGxvbmcgZG91Ymxl
IF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmhsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9u
ZyBkb3VibGUgYWNvc2hsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
YWNvc2hsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2luaGwgKGxv
bmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19hc2luaGwgKGxvbmcgZG91Ymxl
IF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2F0YW5obCAobG9uZyBkb3VibGUgX194KSA7CgoKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGV4cGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUg
X19leHBsIChsb25nIGRvdWJsZSBfX3gpIDsKIyAxMDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhj
YWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBmcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50
ICpfX2V4cG9uZW50KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZyZXhwbCAobG9uZyBkb3VibGUg
X194LCBpbnQgKl9fZXhwb25lbnQpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsIChsb25n
IGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xkZXhw
bCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgOwoKCmV4dGVybiBsb25nIGRvdWJs
ZSBsb2dsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAobG9u
ZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUg
X194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzEwbCAobG9uZyBkb3VibGUgX194KSA7CgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIG1vZGZsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpf
X2lwdHIpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbW9kZmwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgKl9faXB0cikgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbTFsIChsb25nIGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbTFsIChsb25nIGRvdWJsZSBfX3gp
IDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBk
b3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2di
bCAobG9uZyBkb3VibGUgX194KSA7CiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMu
aCIgMwpleHRlcm4gbG9uZyBkb3VibGUgcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcG93bCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgc3FydGwgKGxvbmcgZG91YmxlIF9f
eCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zcXJ0bCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4
dGVybiBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2h5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3kpIDsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAobG9uZyBkb3VibGUgX194
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NicnRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBm
YWJzbCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZmxvb3JsIChsb25nIGRvdWJsZSBfX3gp
IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRl
cm4gbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2Ztb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
IF9feSkgOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVsIChsb25nIGRv
dWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50
IGlzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCmV4dGVybiBpbnQgZmluaXRlbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUg
X194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBzaWdu
aWZpY2FuZGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaWduaWZp
Y2FuZGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvcHlzaWdu
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDIwOSAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGludCBfX2lzbmFubCAobG9uZyBk
b3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50
IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCmV4dGVybiBsb25nIGRvdWJsZSBqMGwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2owbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGoxbCAobG9uZyBk
b3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajFsIChsb25nIGRvdWJsZSkgOwpleHRlcm4g
bG9uZyBkb3VibGUgam5sIChpbnQsIGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBf
X2pubCAoaW50LCBsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgeTBsIChsb25nIGRv
dWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX195MGwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBs
b25nIGRvdWJsZSB5MWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kxbCAo
bG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHlubCAoaW50LCBsb25nIGRvdWJsZSkg
OyBleHRlcm4gbG9uZyBkb3VibGUgX195bmwgKGludCwgbG9uZyBkb3VibGUpIDsKCgoKCgpleHRl
cm4gbG9uZyBkb3VibGUgZXJmbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
ZXJmbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmNsIChsb25nIGRvdWJs
ZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19lcmZjbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxv
bmcgZG91YmxlIGxnYW1tYWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xn
YW1tYWwgKGxvbmcgZG91YmxlKSA7CiMgMjM4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMu
aCIgMwpleHRlcm4gbG9uZyBkb3VibGUgZ2FtbWFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19nYW1tYWwgKGxvbmcgZG91YmxlKSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJs
ZSBsZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7CgoKCgoK
CmV4dGVybiBsb25nIGRvdWJsZSByaW50bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3JpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUg
bmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmV4dGFmdGVybCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmVtYWluZGVybCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
c2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbikgOwoKCgoKZXh0ZXJuIGxv
bmcgZG91YmxlIHNjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikgOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19zY2FsYm5sIChsb25nIGRvdWJsZSBfX3gsIGludCBfX24pIDsKCgoKZXh0ZXJu
IGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gaW50IF9faWxvZ2JsIChsb25n
IGRvdWJsZSBfX3gpIDsKIyAxMDAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDExMyAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gaW50IHNpZ25nYW07CiMgMjQwICIvdXNyL2luY2x1
ZGUvbWF0aC5oIiAzCnR5cGVkZWYgZW51bQp7CiAgX0lFRUVfID0gLTEsCiAgX1NWSURfLAogIF9Y
T1BFTl8sCiAgX1BPU0lYXywKICBfSVNPQ18KfSBfTElCX1ZFUlNJT05fVFlQRTsKCgoKCmV4dGVy
biBfTElCX1ZFUlNJT05fVFlQRSBfTElCX1ZFUlNJT047CiMgMjY1ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAzCnN0cnVjdCBleGNlcHRpb24KCiAgewogICAgaW50IHR5cGU7CiAgICBjaGFyICpuYW1l
OwogICAgZG91YmxlIGFyZzE7CiAgICBkb3VibGUgYXJnMjsKICAgIGRvdWJsZSByZXR2YWw7CiAg
fTsKCgoKCmV4dGVybiBpbnQgbWF0aGVyciAoc3RydWN0IGV4Y2VwdGlvbiAqX19leGMpOwojIDM1
MCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxp
bmUuaCIgMSAzCiMgMjkxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJu
IF9faW5saW5lIGRvdWJsZSBfX3NnbiAoZG91YmxlKSA7IGV4dGVybiBfX2lubGluZSBkb3VibGUg
X19zZ24gKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4w
ID8gMS4wIDogLTEuMCk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fc2duZiAoZmxvYXQpIDsg
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fc2duZiAoZmxvYXQgX194KSB7IHJldHVybiBfX3ggPT0g
MC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IGV4dGVybiBfX2lubGluZSBs
b25nIGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6
IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfQoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBf
X3BvdzIgKGRvdWJsZSkgOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fcG93MiAoZG91YmxlIF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X2V4cG9uZW50OyBfX2V4dGVuc2lvbl9fIGxvbmcgbG9uZyBpbnQgX19wID0gKGxvbmcgbG9uZyBp
bnQpIF9feDsgaWYgKF9feCA9PSAobG9uZyBkb3VibGUpIF9fcCkgeyBfX2FzbSBfX3ZvbGF0aWxl
X18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKDEuMCksICJ1IiAoX194KSk7IHJl
dHVybiBfX3ZhbHVlOyB9IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZAklJXN0KDApXG5cdCIgImZy
bmRpbnQJCQkjIGludCh4KVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4
KVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCkpIC0gMVxuXHQiIDogIj10IiAoX192YWx1ZSks
ICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1
IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQg
X19wb3cyZiAoZmxvYXQpIDsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fcG93MmYgKGZsb2F0IF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X2V4cG9uZW50OyBfX2V4dGVuc2lvbl9fIGxvbmcgbG9uZyBpbnQgX19wID0gKGxvbmcgbG9uZyBp
bnQpIF9feDsgaWYgKF9feCA9PSAobG9uZyBkb3VibGUpIF9fcCkgeyBfX2FzbSBfX3ZvbGF0aWxl
X18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKDEuMCksICJ1IiAoX194KSk7IHJl
dHVybiBfX3ZhbHVlOyB9IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZAklJXN0KDApXG5cdCIgImZy
bmRpbnQJCQkjIGludCh4KVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4
KVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCkpIC0gMVxuXHQiIDogIj10IiAoX192YWx1ZSks
ICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1
IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgX19wb3cybCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91Ymxl
IF9fcG93MmwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl
OyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBfX2V4dGVuc2lvbl9fIGxvbmcgbG9u
ZyBpbnQgX19wID0gKGxvbmcgbG9uZyBpbnQpIF9feDsgaWYgKF9feCA9PSAobG9uZyBkb3VibGUp
IF9fcCkgeyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKDEuMCksICJ1IiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9fYXNtIF9fdm9sYXRpbGVf
XyAoImZsZAklJXN0KDApXG5cdCIgImZybmRpbnQJCQkjIGludCh4KVxuXHQiICJmeGNoXG5cdCIg
ImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4KVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCkpIC0g
MVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsg
X192YWx1ZSArPSAxLjA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3Zh
bHVlKSA6ICIwIiAoX192YWx1ZSksICJ1IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsg
fQojIDM4NSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGlu
ZSBsb25nIGRvdWJsZSBfX2V4cG0xbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fdGVtcDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXngg
LSAxID0gMl4oeCAqIGxvZzIoZSkpIC0gMVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIo
ZSlcblx0IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxu
XHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAi
ZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgImZzY2FsZQkJCSMgMl4o
eCAqIGxvZzIoZSkpIC0gMl4oaW50KHggKiBsb2cyKGUpKSlcblx0IiA6ICI9dCIgKF9fdmFsdWUp
LCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZz
Y2FsZQkJCSMgMl5pbnQoeCAqIGxvZzIoZSkpXG5cdCIgOiAiPXQiIChfX3RlbXApIDogIjAiICgx
LjApLCAidSIgKF9fZXhwb25lbnQpKTsgX190ZW1wIC09IDEuMDsgcmV0dXJuIF9fdGVtcCArIF9f
dmFsdWUgPzogX194OyB9CiMgNDA1ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMK
ZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBleHAgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19hc20gX192
b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXnggPSAyXih4ICogbG9nMihlKSlcblx0IiAiZm11bAkl
JXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkj
IGludCh4ICogbG9nMihlKSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3Qo
eCAqIGxvZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxu
XHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192
YWx1ZSArPSAxLjA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVl
KSA6ICIwIiAoX192YWx1ZSksICJ1IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfSBl
eHRlcm4gX19pbmxpbmUgZmxvYXQgZXhwZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkpXG5cdCIgImZtdWwJJSVz
dCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJIyBp
bnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHgg
KiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0
IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fdmFs
dWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkg
OiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0
ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGV4cGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCA9IDJeKHggKiBsb2cyKGUpKVxuXHQi
ICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJu
ZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJ
IyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUp
KSkgLSAxXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9f
eCkpOyBfX3ZhbHVlICs9IDEuMDsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIg
KF9fdmFsdWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3Zh
bHVlOyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX2V4cGwgKGxvbmcgZG91YmxlIF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X2V4cG9uZW50OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCA9IDJeKHggKiBs
b2cyKGUpKVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3Qo
MSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZz
dWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0
KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVu
dCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9IDEuMDsgX19hc20gX192b2xhdGlsZV9fICgiZnNj
YWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7
IHJldHVybiBfX3ZhbHVlOyB9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSB0YW4gKGRvdWJsZSBf
X3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsgX19hc20gX192b2xhdGlsZV9f
ICgiZnB0YW4iIDogIj10IiAoX192YWx1ZTIpLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7
IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCB0YW5mIChmbG9hdCBfX3gp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsgX19hc20gX192b2xhdGlsZV9fICgi
ZnB0YW4iIDogIj10IiAoX192YWx1ZTIpLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJl
dHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSB0YW5sIChsb25nIGRv
dWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX192YWx1ZTIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsgX19hc20gX192b2xh
dGlsZV9fICgiZnB0YW4iIDogIj10IiAoX192YWx1ZTIpLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAo
X194KSk7IHJldHVybiBfX3ZhbHVlOyB9CiMgNDI1ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5s
aW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91Ymxl
IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgx
KSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYXRhbjJmIChmbG9h
dCBfX3ksIGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAo
X195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgYXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10
IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192
YWx1ZTsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91Ymxl
IF9feSwgbG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwg
InUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CgoKZXh0ZXJuIF9faW5saW5l
IGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3Rzdwkl
JWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCks
ICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxp
bmUgZmxvYXQgZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3Rzdwkl
JWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCks
ICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxp
bmUgbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZw
cmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192
YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1
ZTsgfQojIDQ0MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lu
bGluZSBkb3VibGUgc3FydCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194
KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgc3FydGYgKGZsb2F0
IF9feCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNx
cnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAi
PXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJuIF9f
aW5saW5lIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAo
X19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgoKZXh0ZXJuIF9faW5s
aW5lIGRvdWJsZSBmYWJzIChkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyAoX194
KTsgfQpleHRlcm4gX19pbmxpbmUgZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgeyByZXR1cm4gX19i
dWlsdGluX2ZhYnNmIChfX3gpOyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmYWJzbCAo
bG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2wgKF9feCk7IH0KZXh0ZXJu
IF9faW5saW5lIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4g
X19idWlsdGluX2ZhYnNsIChfX3gpOyB9CgoKCgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIHNp
biAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoImZzaW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVz
dWx0OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBzaW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIg
ZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW4iIDogIj10IiAoX19yZXN1
bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25n
IGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19y
ZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAi
IChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGNvcyAo
ZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVf
XyAoImZjb3MiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0
OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBjb3NmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxv
YXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZjb3MiIDogIj10IiAoX19yZXN1bHQp
IDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBjb3NsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1
bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZjb3MiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChf
X3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGxvZyAoZG91
YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZsZGxuMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0
KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgbG9nZiAoZmxv
YXQgX194KSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm
bGRsbjI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgx
KSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGxvZ2wg
KGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20g
X192b2xhdGlsZV9fICgiZmxkbG4yOyBmeGNoOyBmeWwyeCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAi
MCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9CmV4dGVybiBfX2lubGluZSBk
b3VibGUgbG9nMTAgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmbGRsZzI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0KSA6
ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5l
IGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmbGRsZzI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0KSA6
ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsZzI7IGZ4Y2g7IGZ5bDJ4IiA6
ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7
IH0KCmV4dGVybiBfX2lubGluZSBkb3VibGUgYXNpbiAoZG91YmxlIF9feCkgeyByZXR1cm4gX19h
dGFuMmwgKF9feCwgX19zcXJ0bCAoMS4wIC0gX194ICogX194KSk7IH0gZXh0ZXJuIF9faW5saW5l
IGZsb2F0IGFzaW5mIChmbG9hdCBfX3gpIHsgcmV0dXJuIF9fYXRhbjJsIChfX3gsIF9fc3FydGwg
KDEuMCAtIF9feCAqIF9feCkpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhc2lubCAo
bG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX2F0YW4ybCAoX194LCBfX3NxcnRsICgxLjAgLSBf
X3ggKiBfX3gpKTsgfQpleHRlcm4gX19pbmxpbmUgZG91YmxlIGFjb3MgKGRvdWJsZSBfX3gpIHsg
cmV0dXJuIF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpLCBfX3gpOyB9IGV4dGVy
biBfX2lubGluZSBmbG9hdCBhY29zZiAoZmxvYXQgX194KSB7IHJldHVybiBfX2F0YW4ybCAoX19z
cXJ0bCAoMS4wIC0gX194ICogX194KSwgX194KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3Vi
bGUgYWNvc2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19hdGFuMmwgKF9fc3FydGwgKDEu
MCAtIF9feCAqIF9feCksIF9feCk7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGF0YW4gKGRv
dWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7
IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYXRhbmYgKGZsb2F0IF9f
eCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsg
ZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4g
X19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGF0YW5sIChsb25nIGRvdWJs
ZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVf
XyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSki
KTsgcmV0dXJuIF9fcmVzdWx0OyB9CgpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ24x
bCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxv
bmcgZG91YmxlIF9feCkgeyBfX2V4dGVuc2lvbl9fIHVuaW9uIHsgbG9uZyBkb3VibGUgX194bGQ7
IHVuc2lnbmVkIGludCBfX3hpWzNdOyB9IF9fbiA9IHsgX194bGQ6IF9feCB9OyBfX24uX194aVsy
XSA9IChfX24uX194aVsyXSAmIDB4ODAwMCkgfCAweDNmZmY7IF9fbi5fX3hpWzFdID0gMHg4MDAw
MDAwMDsgX19uLl9feGlbMF0gPSAwOyByZXR1cm4gX19uLl9feGxkOyB9CiMgNDc5ICIvdXNyL2lu
Y2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBzaW5oIChk
b3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2Zh
YnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0xICsgMS4wKSArIF9fZXht
MSkgKiBfX3NnbjFsIChfX3gpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBzaW5oZiAoZmxvYXQg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChf
X3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0xICsgMS4wKSArIF9fZXhtMSkgKiBf
X3NnbjFsIChfX3gpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBzaW5obCAobG9uZyBk
b3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2Zh
YnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0xICsgMS4wKSArIF9fZXht
MSkgKiBfX3NnbjFsIChfX3gpOyB9CgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgY29zaCAoZG91
YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4ID0gX19leHBsIChfX3gpOyByZXR1
cm4gMC41ICogKF9fZXggKyAxLjAgLyBfX2V4KTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgY29z
aGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4ID0gX19leHBsIChfX3gp
OyByZXR1cm4gMC41ICogKF9fZXggKyAxLjAgLyBfX2V4KTsgfSBleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUgY29zaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X2V4ID0gX19leHBsIChfX3gpOyByZXR1cm4gMC41ICogKF9fZXggKyAxLjAgLyBfX2V4KTsgfQoK
CgpleHRlcm4gX19pbmxpbmUgZG91YmxlIHRhbmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKC1fX2ZhYnNsIChfX3ggKyBfX3gpKTsgcmV0dXJu
IF9fZXhtMSAvIChfX2V4bTEgKyAyLjApICogX19zZ24xbCAoLV9feCk7IH0gZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IHRhbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0x
ID0gX19leHBtMWwgKC1fX2ZhYnNsIChfX3ggKyBfX3gpKTsgcmV0dXJuIF9fZXhtMSAvIChfX2V4
bTEgKyAyLjApICogX19zZ24xbCAoLV9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91Ymxl
IHRhbmhsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0g
X19leHBtMWwgKC1fX2ZhYnNsIChfX3ggKyBfX3gpKTsgcmV0dXJuIF9fZXhtMSAvIChfX2V4bTEg
KyAyLjApICogX19zZ24xbCAoLV9feCk7IH0KCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgZmxv
b3IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGls
ZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQg
X19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9f
Y3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRj
dyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAi
PXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIg
OiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQg
Zmxvb3JmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xh
dGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBp
bnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7
IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJm
bGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIg
OiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAl
MCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUgZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIg
OiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfQojIDUw
MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3Vi
bGUgY2VpbCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3Zv
bGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0
IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cp
KTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAo
ImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50
IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3
ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBm
bG9hdCBjZWlsZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9f
dm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hv
cnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19j
dykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxl
ICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRp
bnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxk
Y3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGls
ZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAl
MCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9f
YXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3Zv
bGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9f
dm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfQoj
IDUyMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBk
b3VibGUKbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpCnsKICByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkg
OiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0K
CgoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBleHBtMSAoZG91YmxlIF9feCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3RlbXA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJ
CSMgZV54IC0gMSA9IDJeKHggKiBsb2cyKGUpKSAtIDFcblx0IiAiZm11bAklJXN0KDEpCQkjIHgg
KiBsb2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9n
MihlKSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkp
XG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiICJmc2NhbGUJ
CQkjIDJeKHggKiBsb2cyKGUpKSAtIDJeKGludCh4ICogbG9nMihlKSkpXG5cdCIgOiAiPXQiIChf
X3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxl
X18gKCJmc2NhbGUJCQkjIDJeaW50KHggKiBsb2cyKGUpKVxuXHQiIDogIj10IiAoX190ZW1wKSA6
ICIwIiAoMS4wKSwgInUiIChfX2V4cG9uZW50KSk7IF9fdGVtcCAtPSAxLjA7IHJldHVybiBfX3Rl
bXAgKyBfX3ZhbHVlID86IF9feDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZXhwbTFmIChmbG9h
dCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190ZW1wOyBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9nMihlKSkgLSAxXG5cdCIgImZt
dWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50
CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZy
YWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAt
IDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAyXihpbnQoeCAqIGxvZzIoZSkp
KVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsg
X19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAyXmludCh4ICogbG9nMihlKSlcblx0IiA6
ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBvbmVudCkpOyBfX3RlbXAgLT0g
MS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1ZSA/OiBfX3g7IH0gZXh0ZXJuIF9faW5saW5lIGxv
bmcgZG91YmxlIGV4cG0xbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdGVtcDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXnggLSAxID0g
Ml4oeCAqIGxvZzIoZSkpIC0gMVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0
IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJm
eGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJ
CQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgImZzY2FsZQkJCSMgMl4oeCAqIGxv
ZzIoZSkpIC0gMl4oaW50KHggKiBsb2cyKGUpKSlcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUi
IChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZQkJ
CSMgMl5pbnQoeCAqIGxvZzIoZSkpXG5cdCIgOiAiPXQiIChfX3RlbXApIDogIjAiICgxLjApLCAi
dSIgKF9fZXhwb25lbnQpKTsgX190ZW1wIC09IDEuMDsgcmV0dXJuIF9fdGVtcCArIF9fdmFsdWUg
PzogX194OyB9CgoKCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4w
IC0gMC41ICogMS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBf
X3gpOyBlbHNlIF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5
bDJ4cDEiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9f
dmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAq
IDEuNDE0MjEzNTYyMzczMDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxz
ZSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6
ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9
IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAw
LjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7
IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhw
MSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1
ZTsgfQojIDU1MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lu
bGluZSBkb3VibGUgYXNpbmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195
ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChf
X3kgKiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRlcm4g
X19pbmxpbmUgZmxvYXQgYXNpbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRs
IChfX3kgKiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRl
cm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAq
IF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFs
IChfX3gpKTsgfQoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkg
eyByZXR1cm4gbG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCAr
IDEuMCkpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgeyByZXR1
cm4gbG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkp
OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlIF9feCkg
eyByZXR1cm4gbG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCAr
IDEuMCkpOyB9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxv
ZzFwbCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195
KSAvICgxLjAgKyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcg
ZG91YmxlIGF0YW5obCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
eSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAo
MS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gpOyB9CgoKCgpleHRlcm4gX19pbmxpbmUgZG91Ymxl
IGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBf
X3ggKyBfX3kgKiBfX3kpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBoeXBvdGYgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9
IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9
CgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6
ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2di
ZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10
IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsg
fSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIg
KF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA2NTIgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGRyZW0gKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsgcmVnaXN0ZXIgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVy
IGludCBfX2Nsb2JiZXJlZDsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW0xXG5cdCIgImZz
dHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSwgIj0mYSIg
KF9fY2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImNjIik7IHJldHVybiBfX3Zh
bHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBkcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IHsgcmVnaXN0ZXIgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGludCBfX2Nsb2JiZXJlZDsgX19h
c20gX192b2xhdGlsZV9fICgiMToJZnByZW0xXG5cdCIgImZzdHN3CSUlYXhcblx0IiAic2FoZlxu
XHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAo
X194KSwgInUiIChfX3kpIDogImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGlu
ZSBsb25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsg
cmVnaXN0ZXIgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGludCBfX2Nsb2JiZXJlZDsgX19hc20g
X192b2xhdGlsZV9fICgiMToJZnByZW0xXG5cdCIgImZzdHN3CSUlYXhcblx0IiAic2FoZlxuXHQi
ICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAoX194
KSwgInUiIChfX3kpIDogImNjIik7IHJldHVybiBfX3ZhbHVlOyB9CiMgNjY1ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGludApfX2Zpbml0ZSAoZG91
YmxlIF9feCkKewogIHJldHVybiAoX19leHRlbnNpb25fXwogICAgICAgICAgKCgoKCh1bmlvbiB7
IGRvdWJsZSBfX2Q7IGludCBfX2lbMl07IH0pIHtfX2Q6IF9feH0pLl9faVsxXQogICAgICAgICAg
ICAgfCAweDgwMGZmZmZmdSkgKyAxKSA+PiAzMSkpOwp9CgoKCmV4dGVybiBfX2lubGluZSBkb3Vi
bGUgX19jb3NobTEgKGRvdWJsZSkgOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fY29zaG0xIChk
b3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2Zh
YnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0xICsgMS4wKSkgKiBfX2V4
bTE7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fY29zaG0xZiAoZmxvYXQpIDsgZXh0ZXJuIF9f
aW5saW5lIGZsb2F0IF9fY29zaG0xZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4bTEg
LyAoX19leG0xICsgMS4wKSkgKiBfX2V4bTE7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91Ymxl
IF9fY29zaG0xbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9f
Y29zaG0xbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9
IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0x
ICsgMS4wKSkgKiBfX2V4bTE7IH0KCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBfX2Fjb3NoMXAg
KGRvdWJsZSkgOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fYWNvc2gxcCAoZG91YmxlIF9feCkg
eyByZXR1cm4gbG9nMXBsIChfX3ggKyBfX3NxcnRsIChfX3gpICogX19zcXJ0bCAoX194ICsgMi4w
KSk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fYWNvc2gxcGYgKGZsb2F0KSA7IGV4dGVybiBf
X2lubGluZSBmbG9hdCBfX2Fjb3NoMXBmIChmbG9hdCBfX3gpIHsgcmV0dXJuIGxvZzFwbCAoX194
ICsgX19zcXJ0bCAoX194KSAqIF9fc3FydGwgKF9feCArIDIuMCkpOyB9IGV4dGVybiBfX2lubGlu
ZSBsb25nIGRvdWJsZSBfX2Fjb3NoMXBsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgX19hY29zaDFwbCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBsb2cxcGwg
KF9feCArIF9fc3FydGwgKF9feCkgKiBfX3NxcnRsIChfX3ggKyAyLjApKTsgfQojIDM1MSAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMiAzCiMgNDExICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCgojIDE0
MiAiY29tbW9uLmgiIDIKIyAxNzYgImNvbW1vbi5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICByZWFs
X3QgcmU7CiAgICByZWFsX3QgaW07Cn0gY29tcGxleF90OwoKCgp1aW50MzJfdCBpbnRfbG9nMih1
aW50MzJfdCB2YWwpOwojIDMzICJzeW50YXguYyIgMgojIDEgInN5bnRheC5oIiAxCiMgMjkgInN5
bnRheC5oIgojIDEgImJpdHMuaCIgMQojIDI5ICJiaXRzLmgiCiMgMSAiYW5hbHlzaXMuaCIgMQoj
IDMwICJiaXRzLmgiIDIKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9iaXRmaWxlCnsKCiAgICAgICAg
dWludDMyX3QgYnVmYTsKICAgICAgICB1aW50MzJfdCBidWZiOwogICAgICAgIHVpbnQzMl90IHBv
czsKICAgICAgICB1aW50MzJfdCAqdGFpbDsKICAgICAgICB1aW50MzJfdCAqc3RhcnQ7Cn0gYml0
ZmlsZTsKIyA1OCAiYml0cy5oIgp2b2lkIGZhYWRfaW5pdGJpdHMoYml0ZmlsZSAqbGQsIHZvaWQg
KmJ1ZmZlcik7CnVpbnQ4X3QgZmFhZF9ieXRlX2FsaWduKGJpdGZpbGUgKmxkKTsKdWludDMyX3Qg
ZmFhZF9nZXRfcHJvY2Vzc2VkX2JpdHMoYml0ZmlsZSAqbGQpOwoKCnN0YXRpYyB1aW50MzJfdCBm
YWFkX3Nob3diaXRzKGJpdGZpbGUgKmxkLCB1aW50OF90IGJpdHMpCnsKICAgIGludDMyX3QgbmJp
dCA9IChiaXRzICsgbGQtPnBvcykgLSAzMjsKICAgIGlmIChuYml0ID4gMCkKICAgIHsKICAgICAg
ICByZXR1cm4gKChsZC0+YnVmYSAmICgweGZmZmZmZmZmID4+IGxkLT5wb3MpKSA8PCBuYml0KSB8
CiAgICAgICAgICAgIChsZC0+YnVmYiA+PiAoMzIgLSBuYml0KSk7CiAgICB9IGVsc2UgewogICAg
ICAgIHJldHVybiAobGQtPmJ1ZmEgJiAoMHhmZmZmZmZmZiA+PiBsZC0+cG9zKSkgPj4gKDMyIC0g
bGQtPnBvcyAtIGJpdHMpOwogICAgfQp9CgpzdGF0aWMgdm9pZCBmYWFkX2ZsdXNoYml0cyhiaXRm
aWxlICpsZCwgdWludDhfdCBiaXRzKQp7CiAgICAgICAgbGQtPnBvcyArPSBiaXRzOwoKICAgICAg
ICBpZiAobGQtPnBvcyA+PSAzMikKICAgICAgICB7CiAgICAgICAgICAgICAgICB1aW50MzJfdCB0
bXA7CgogICAgICAgICAgICAgICAgbGQtPmJ1ZmEgPSBsZC0+YnVmYjsKICAgICAgICAgICAgICAg
IHRtcCA9ICoodWludDMyX3QqKWxkLT50YWlsOwoKICAgICAgICAgICAgICAgICgodG1wKSA9ICgg
KCh0bXApJjB4ZmYpPDwyNCkgfCAoKCh0bXApJjB4ZmYwMCk8PDgpIHwgKCgodG1wKT4+OCkmMHhm
ZjAwKSB8ICgoKHRtcCk+PjI0KSYweGZmKSk7CgogICAgICAgICAgICAgICAgbGQtPmJ1ZmIgPSB0
bXA7CiAgICAgICAgICAgICAgICBsZC0+dGFpbCsrOwogICAgICAgICAgICAgICAgbGQtPnBvcyAt
PSAzMjsKICAgICAgICB9Cn0KCgpzdGF0aWMgdWludDMyX3QgZmFhZF9nZXRiaXRzKGJpdGZpbGUg
KmxkLCB1aW50OF90IG4gKQp7CiAgICAgICAgdWludDMyX3QgcmV0ID0gZmFhZF9zaG93Yml0cyhs
ZCwgbik7CiAgICAgICAgZmFhZF9mbHVzaGJpdHMobGQsIG4pOwoKCgoKCgogICAgICAgIHJldHVy
biByZXQ7Cn0KCnN0YXRpYyB1aW50OF90IGZhYWRfZ2V0MWJpdChiaXRmaWxlICpsZCApCnsKICAg
IHJldHVybiAodWludDhfdClmYWFkX2dldGJpdHMobGQsIDEgKTsKfQojIDMwICJzeW50YXguaCIg
MgojIDg3ICJzeW50YXguaCIKdHlwZWRlZiBzdHJ1Y3QKewogICAgdWludDhfdCBlbGVtZW50X2lu
c3RhbmNlX3RhZzsKICAgIHVpbnQ4X3Qgb2JqZWN0X3R5cGU7CiAgICB1aW50OF90IHNmX2luZGV4
OwogICAgdWludDhfdCBudW1fZnJvbnRfY2hhbm5lbF9lbGVtZW50czsKICAgIHVpbnQ4X3QgbnVt
X3NpZGVfY2hhbm5lbF9lbGVtZW50czsKICAgIHVpbnQ4X3QgbnVtX2JhY2tfY2hhbm5lbF9lbGVt
ZW50czsKICAgIHVpbnQ4X3QgbnVtX2xmZV9jaGFubmVsX2VsZW1lbnRzOwogICAgdWludDhfdCBu
dW1fYXNzb2NfZGF0YV9lbGVtZW50czsKICAgIHVpbnQ4X3QgbnVtX3ZhbGlkX2NjX2VsZW1lbnRz
OwogICAgdWludDhfdCBtb25vX21peGRvd25fcHJlc2VudDsKICAgIHVpbnQ4X3QgbW9ub19taXhk
b3duX2VsZW1lbnRfbnVtYmVyOwogICAgdWludDhfdCBzdGVyZW9fbWl4ZG93bl9wcmVzZW50Owog
ICAgdWludDhfdCBzdGVyZW9fbWl4ZG93bl9lbGVtZW50X251bWJlcjsKICAgIHVpbnQ4X3QgbWF0
cml4X21peGRvd25faWR4X3ByZXNlbnQ7CiAgICB1aW50OF90IHBzZXVkb19zdXJyb3VuZF9lbmFi
bGU7CiAgICB1aW50OF90IG1hdHJpeF9taXhkb3duX2lkeDsKICAgIHVpbnQ4X3QgZnJvbnRfZWxl
bWVudF9pc19jcGVbMTZdOwogICAgdWludDhfdCBmcm9udF9lbGVtZW50X3RhZ19zZWxlY3RbMTZd
OwogICAgdWludDhfdCBzaWRlX2VsZW1lbnRfaXNfY3BlWzE2XTsKICAgIHVpbnQ4X3Qgc2lkZV9l
bGVtZW50X3RhZ19zZWxlY3RbMTZdOwogICAgdWludDhfdCBiYWNrX2VsZW1lbnRfaXNfY3BlWzE2
XTsKICAgIHVpbnQ4X3QgYmFja19lbGVtZW50X3RhZ19zZWxlY3RbMTZdOwogICAgdWludDhfdCBs
ZmVfZWxlbWVudF90YWdfc2VsZWN0WzE2XTsKICAgIHVpbnQ4X3QgYXNzb2NfZGF0YV9lbGVtZW50
X3RhZ19zZWxlY3RbMTZdOwogICAgdWludDhfdCBjY19lbGVtZW50X2lzX2luZF9zd1sxNl07CiAg
ICB1aW50OF90IHZhbGlkX2NjX2VsZW1lbnRfdGFnX3NlbGVjdFsxNl07CgogICAgdWludDhfdCBj
aGFubmVsczsKCiAgICB1aW50OF90IGNvbW1lbnRfZmllbGRfYnl0ZXM7CiAgICB1aW50OF90IGNv
bW1lbnRfZmllbGRfZGF0YVsyNTddOwp9IHByb2dyYW1fY29uZmlnOwoKdHlwZWRlZiBzdHJ1Y3QK
ewogICAgdWludDE2X3Qgc3luY3dvcmQ7CiAgICB1aW50OF90IGlkOwogICAgdWludDhfdCBsYXll
cjsKICAgIHVpbnQ4X3QgcHJvdGVjdGlvbl9hYnNlbnQ7CiAgICB1aW50OF90IHByb2ZpbGU7CiAg
ICB1aW50OF90IHNmX2luZGV4OwogICAgdWludDhfdCBwcml2YXRlX2JpdDsKICAgIHVpbnQ4X3Qg
Y2hhbm5lbF9jb25maWd1cmF0aW9uOwogICAgdWludDhfdCBvcmlnaW5hbDsKICAgIHVpbnQ4X3Qg
aG9tZTsKICAgIHVpbnQ4X3QgZW1waGFzaXM7CiAgICB1aW50OF90IGNvcHlyaWdodF9pZGVudGlm
aWNhdGlvbl9iaXQ7CiAgICB1aW50OF90IGNvcHlyaWdodF9pZGVudGlmaWNhdGlvbl9zdGFydDsK
ICAgIHVpbnQxNl90IGFhY19mcmFtZV9sZW5ndGg7CiAgICB1aW50MTZfdCBhZHRzX2J1ZmZlcl9m
dWxsbmVzczsKICAgIHVpbnQ4X3Qgbm9fcmF3X2RhdGFfYmxvY2tzX2luX2ZyYW1lOwogICAgdWlu
dDE2X3QgY3JjX2NoZWNrOwp9IGFkdHNfaGVhZGVyOwoKdHlwZWRlZiBzdHJ1Y3QKewogICAgdWlu
dDhfdCBjb3B5cmlnaHRfaWRfcHJlc2VudDsKICAgIGludDhfdCBjb3B5cmlnaHRfaWRbMTBdOwog
ICAgdWludDhfdCBvcmlnaW5hbF9jb3B5OwogICAgdWludDhfdCBob21lOwogICAgdWludDhfdCBi
aXRzdHJlYW1fdHlwZTsKICAgIHVpbnQzMl90IGJpdHJhdGU7CiAgICB1aW50OF90IG51bV9wcm9n
cmFtX2NvbmZpZ19lbGVtZW50czsKICAgIHVpbnQzMl90IGFkaWZfYnVmZmVyX2Z1bGxuZXNzOwoK
ICAgIHByb2dyYW1fY29uZmlnIHBjZTsKfSBhZGlmX2hlYWRlcjsKCnR5cGVkZWYgc3RydWN0CnsK
ICAgIHVpbnQ4X3QgbGFzdF9iYW5kOwogICAgdWludDhfdCBkYXRhX3ByZXNlbnQ7CiAgICB1aW50
MTZfdCBsYWc7CiAgICB1aW50OF90IGxhZ191cGRhdGU7CiAgICB1aW50OF90IGNvZWY7CiAgICB1
aW50OF90IGxvbmdfdXNlZFs1MV07CiAgICB1aW50OF90IHNob3J0X3VzZWRbOF07CiAgICB1aW50
OF90IHNob3J0X2xhZ19wcmVzZW50WzhdOwogICAgdWludDhfdCBzaG9ydF9sYWdbOF07Cn0gbHRw
X2luZm87Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICB1aW50OF90IGxpbWl0OwogICAgdWludDhfdCBw
cmVkaWN0b3JfcmVzZXQ7CiAgICB1aW50OF90IHByZWRpY3Rvcl9yZXNldF9ncm91cF9udW1iZXI7
CiAgICB1aW50OF90IHByZWRpY3Rpb25fdXNlZFs0MV07Cn0gcHJlZF9pbmZvOwoKdHlwZWRlZiBz
dHJ1Y3QKewogICAgdWludDhfdCBudW1iZXJfcHVsc2U7CiAgICB1aW50OF90IHB1bHNlX3N0YXJ0
X3NmYjsKICAgIHVpbnQ4X3QgcHVsc2Vfb2Zmc2V0WzRdOwogICAgdWludDhfdCBwdWxzZV9hbXBb
NF07Cn0gcHVsc2VfaW5mbzsKCnR5cGVkZWYgc3RydWN0CnsKICAgIHVpbnQ4X3Qgbl9maWx0Wzhd
OwogICAgdWludDhfdCBjb2VmX3Jlc1s4XTsKICAgIHVpbnQ4X3QgbGVuZ3RoWzhdWzRdOwogICAg
dWludDhfdCBvcmRlcls4XVs0XTsKICAgIHVpbnQ4X3QgZGlyZWN0aW9uWzhdWzRdOwogICAgdWlu
dDhfdCBjb2VmX2NvbXByZXNzWzhdWzRdOwogICAgdWludDhfdCBjb2VmWzhdWzRdWzMyXTsKfSB0
bnNfaW5mbzsKCnR5cGVkZWYgc3RydWN0CnsKICAgIHVpbnQ4X3QgcHJlc2VudDsKCiAgICB1aW50
OF90IG51bV9iYW5kczsKICAgIHVpbnQ4X3QgcGNlX2luc3RhbmNlX3RhZzsKICAgIHVpbnQ4X3Qg
ZXhjbHVkZWRfY2huc19wcmVzZW50OwogICAgdWludDhfdCBiYW5kX3RvcFsxN107CiAgICB1aW50
OF90IHByb2dfcmVmX2xldmVsOwogICAgdWludDhfdCBkeW5fcm5nX3NnblsxN107CiAgICB1aW50
OF90IGR5bl9ybmdfY3RsWzE3XTsKICAgIHVpbnQ4X3QgZXhjbHVkZV9tYXNrWzY0XTsKICAgIHVp
bnQ4X3QgYWRkaXRpb25hbF9leGNsdWRlZF9jaG5zWzY0XTsKCiAgICByZWFsX3QgY3RybDE7CiAg
ICByZWFsX3QgY3RybDI7Cn0gZHJjX2luZm87Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICB1aW50OF90
IG1heF9zZmI7CgogICAgdWludDhfdCBudW1fc3diOwogICAgdWludDhfdCBudW1fd2luZG93X2dy
b3VwczsKICAgIHVpbnQ4X3QgbnVtX3dpbmRvd3M7CiAgICB1aW50OF90IHdpbmRvd19zZXF1ZW5j
ZTsKICAgIHVpbnQ4X3Qgd2luZG93X2dyb3VwX2xlbmd0aFs4XTsKICAgIHVpbnQ4X3Qgd2luZG93
X3NoYXBlOwogICAgdWludDhfdCBzY2FsZV9mYWN0b3JfZ3JvdXBpbmc7CiAgICB1aW50MTZfdCBz
ZWN0X3NmYl9vZmZzZXRbOF1bMTUqOF07CiAgICB1aW50MTZfdCBzd2Jfb2Zmc2V0WzUyXTsKCiAg
ICB1aW50OF90IHNlY3RfY2JbOF1bMTUqOF07CiAgICB1aW50MTZfdCBzZWN0X3N0YXJ0WzhdWzE1
KjhdOwogICAgdWludDE2X3Qgc2VjdF9lbmRbOF1bMTUqOF07CiAgICB1aW50OF90IHNmYl9jYls4
XVs4KjE1XTsKICAgIHVpbnQ4X3QgbnVtX3NlY1s4XTsKCiAgICB1aW50OF90IGdsb2JhbF9nYWlu
OwogICAgdWludDE2X3Qgc2NhbGVfZmFjdG9yc1s4XVs1MV07CgogICAgdWludDhfdCBtc19tYXNr
X3ByZXNlbnQ7CiAgICB1aW50OF90IG1zX3VzZWRbOF1bNTFdOwoKICAgIHVpbnQ4X3QgcHVsc2Vf
ZGF0YV9wcmVzZW50OwogICAgdWludDhfdCB0bnNfZGF0YV9wcmVzZW50OwogICAgdWludDhfdCBn
YWluX2NvbnRyb2xfZGF0YV9wcmVzZW50OwogICAgdWludDhfdCBwcmVkaWN0b3JfZGF0YV9wcmVz
ZW50OwoKICAgIHB1bHNlX2luZm8gcHVsOwogICAgdG5zX2luZm8gdG5zOwogICAgcHJlZF9pbmZv
IHByZWQ7CiAgICBsdHBfaW5mbyBsdHA7CiAgICBsdHBfaW5mbyBsdHAyOwoKCgogICAgdWludDE2
X3QgbGVuZ3RoX29mX3Jlb3JkZXJlZF9zcGVjdHJhbF9kYXRhOwogICAgdWludDhfdCBsZW5ndGhf
b2ZfbG9uZ2VzdF9jb2Rld29yZDsKCn0gaWNfc3RyZWFtOwoKdHlwZWRlZiBzdHJ1Y3QKewogICAg
dWludDhfdCBlbGVfaWQ7CgogICAgdWludDhfdCBjaGFubmVsOwogICAgdWludDhfdCBwYWlyZWRf
Y2hhbm5lbDsKCiAgICB1aW50OF90IGVsZW1lbnRfaW5zdGFuY2VfdGFnOwogICAgdWludDhfdCBj
b21tb25fd2luZG93OwoKICAgIGljX3N0cmVhbSBpY3MxOwogICAgaWNfc3RyZWFtIGljczI7Cn0g
ZWxlbWVudDsKCgp1aW50OF90IEdBU3BlY2lmaWNDb25maWcoYml0ZmlsZSAqbGQsIHVpbnQ4X3Qg
KmNoYW5uZWxDb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBv
YmplY3RfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmFhY1NlY3Rpb25E
YXRhUmVzaWxpZW5jZUZsYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICphYWNT
Y2FsZWZhY3RvckRhdGFSZXNpbGllbmNlRmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKmFhY1NwZWN0cmFsRGF0YVJlc2lsaWVuY2VGbGFnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCAqZnJhbWVMZW5ndGhGbGFnKTsKdWludDhfdCByYXdfZGF0YV9ibG9jayhi
aXRmaWxlICpsZCwgaW50MTZfdCAqKipzcGVjX2RhdGEsIHJlYWxfdCAqKipzcGVjX2NvZWYsCiAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCAqKipzeW50YXhfZWxlbWVudHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqY2hhbm5lbHMsIHVpbnQ4X3QgKmVsZSwgdWludDhfdCAq
Y2hfZWxlLAogICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGZyYW1lX2xlbiwgdWludDhf
dCBzZl9pbmRleCwgdWludDhfdCBvYmplY3RfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICBk
cmNfaW5mbyAqZHJjKTsKdWludDhfdCBzaW5nbGVfbGZlX2NoYW5uZWxfZWxlbWVudChlbGVtZW50
ICpzY2UsIGJpdGZpbGUgKmxkLCBpbnQxNl90ICpzcGVjX2RhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCBzZl9pbmRleCwgdWludDhfdCBvYmplY3RfdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBmcmFtZV9sZW4KCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHVpbnQ4X3QgYWFjU2VjdGlvbkRhdGFS
ZXNpbGllbmNlRmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
IGFhY1NjYWxlZmFjdG9yRGF0YVJlc2lsaWVuY2VGbGFnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgYWFjU3BlY3RyYWxEYXRhUmVzaWxpZW5jZUZsYWcKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKdWludDhfdCBjaGFubmVsX3BhaXJfZWxl
bWVudChlbGVtZW50ICpjcGUsIGJpdGZpbGUgKmxkLCBpbnQxNl90ICpzcGVjX2RhdGExLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKnNwZWNfZGF0YTIsIHVpbnQ4X3Qgc2Zf
aW5kZXgsIHVpbnQ4X3Qgb2JqZWN0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDE2X3QgZnJhbWVfbGVuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICx1aW50OF90
IGFhY1NlY3Rpb25EYXRhUmVzaWxpZW5jZUZsYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCBhYWNTY2FsZWZhY3RvckRhdGFSZXNpbGllbmNlRmxhZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90IGFhY1NwZWN0cmFsRGF0YVJlc2lsaWVuY2VGbGFnCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CnVpbnQxNl90IGRhdGFfc3RyZWFtX2VsZW1l
bnQoYml0ZmlsZSAqbGQpOwp1aW50OF90IHByb2dyYW1fY29uZmlnX2VsZW1lbnQocHJvZ3JhbV9j
b25maWcgKnBjZSwgYml0ZmlsZSAqbGQpOwp1aW50OF90IGZpbGxfZWxlbWVudChiaXRmaWxlICps
ZCwgZHJjX2luZm8gKmRyYwoKCgogICAgICAgICAgICAgICAgICAgICApOwp1aW50OF90IGFkdHNf
ZnJhbWUoYWR0c19oZWFkZXIgKmFkdHMsIGJpdGZpbGUgKmxkKTsKdm9pZCBnZXRfYWRpZl9oZWFk
ZXIoYWRpZl9oZWFkZXIgKmFkaWYsIGJpdGZpbGUgKmxkKTsKCgoKc3RhdGljIHVpbnQ4X3QgaW5k
aXZpZHVhbF9jaGFubmVsX3N0cmVhbShlbGVtZW50ICplbGUsIGJpdGZpbGUgKmxkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNfc3RyZWFtICppY3MsIHVpbnQ4X3Qgc2Nh
bF9mbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqc3Bl
Y19kYXRhLCB1aW50OF90IHNmX2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCBvYmplY3RfdHlwZSwgdWludDE2X3QgZnJhbWVfbGVuCgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLHVpbnQ4X3QgYWFjU2VjdGlvbkRhdGFSZXNpbGll
bmNlRmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgYWFj
U2NhbGVmYWN0b3JEYXRhUmVzaWxpZW5jZUZsYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90IGFhY1NwZWN0cmFsRGF0YVJlc2lsaWVuY2VGbGFnCgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKc3RhdGljIHVpbnQ4X3QgaWNzX2luZm8o
aWNfc3RyZWFtICppY3MsIGJpdGZpbGUgKmxkLCB1aW50OF90IGNvbW1vbl93aW5kb3csCiAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnNfaW5kZXgsIHVpbnQ4X3Qgb2JqZWN0X3R5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGZyYW1lX2xlbik7CnN0YXRpYyB2b2lk
IHNlY3Rpb25fZGF0YShpY19zdHJlYW0gKmljcywgYml0ZmlsZSAqbGQKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAsdWludDhfdCBhYWNTZWN0aW9uRGF0YVJlc2lsaWVuY2VGbGFnCgogICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKc3RhdGljIHVpbnQ4X3Qgc2NhbGVfZmFjdG9yX2RhdGEoaWNf
c3RyZWFtICppY3MsIGJpdGZpbGUgKmxkCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAsdWludDhfdCBhYWNTY2FsZWZhY3RvckRhdGFSZXNpbGllbmNlRmxhZwoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKc3RhdGljIHZvaWQgZ2Fpbl9jb250cm9sX2RhdGEoYml0
ZmlsZSAqbGQsIGljX3N0cmVhbSAqaWNzKTsKc3RhdGljIHVpbnQ4X3Qgc3BlY3RyYWxfZGF0YShp
Y19zdHJlYW0gKmljcywgYml0ZmlsZSAqbGQsIGludDE2X3QgKnNwZWN0cmFsX2RhdGEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgZnJhbWVfbGVuKTsKc3RhdGljIHVpbnQx
Nl90IGV4dGVuc2lvbl9wYXlsb2FkKGJpdGZpbGUgKmxkLCBkcmNfaW5mbyAqZHJjLCB1aW50MTZf
dCBjb3VudCk7Cgp1aW50OF90IHJlb3JkZXJlZF9zcGVjdHJhbF9kYXRhKGljX3N0cmVhbSAqaWNz
LCBiaXRmaWxlICpsZCwgaW50MTZfdCAqc3BlY3RyYWxfZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MTZfdCBmcmFtZV9sZW4sIHVpbnQ4X3QgYWFjU2VjdGlvbkRhdGFS
ZXNpbGllbmNlRmxhZyk7CgpzdGF0aWMgdm9pZCBwdWxzZV9kYXRhKHB1bHNlX2luZm8gKnB1bCwg
Yml0ZmlsZSAqbGQpOwpzdGF0aWMgdm9pZCB0bnNfZGF0YShpY19zdHJlYW0gKmljcywgdG5zX2lu
Zm8gKnRucywgYml0ZmlsZSAqbGQpOwpzdGF0aWMgdm9pZCBsdHBfZGF0YShpY19zdHJlYW0gKmlj
cywgbHRwX2luZm8gKmx0cCwgYml0ZmlsZSAqbGQsCiAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3Qgb2JqZWN0X3R5cGUpOwpzdGF0aWMgdWludDhfdCBhZHRzX2ZpeGVkX2hlYWRlcihhZHRzX2hl
YWRlciAqYWR0cywgYml0ZmlsZSAqbGQpOwpzdGF0aWMgdm9pZCBhZHRzX3ZhcmlhYmxlX2hlYWRl
cihhZHRzX2hlYWRlciAqYWR0cywgYml0ZmlsZSAqbGQpOwpzdGF0aWMgdm9pZCBhZHRzX2Vycm9y
X2NoZWNrKGFkdHNfaGVhZGVyICphZHRzLCBiaXRmaWxlICpsZCk7CnN0YXRpYyB1aW50OF90IGR5
bmFtaWNfcmFuZ2VfaW5mbyhiaXRmaWxlICpsZCwgZHJjX2luZm8gKmRyYyk7CnN0YXRpYyB1aW50
OF90IGV4Y2x1ZGVkX2NoYW5uZWxzKGJpdGZpbGUgKmxkLCBkcmNfaW5mbyAqZHJjKTsKIyAzNCAi
c3ludGF4LmMiIDIKIyAxICJzcGVjcmVjLmgiIDEKIyAzNyAic3BlY3JlYy5oIgp1aW50OF90IHdp
bmRvd19ncm91cGluZ19pbmZvKGljX3N0cmVhbSAqaWNzLCB1aW50OF90IGZzX2luZGV4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qgb2JqZWN0X3R5cGUsIHVpbnQxNl90IGZy
YW1lX2xlbik7CnZvaWQgcXVhbnRfdG9fc3BlYyhpY19zdHJlYW0gKmljcywgcmVhbF90ICpzcGVj
X2RhdGEsIHVpbnQxNl90IGZyYW1lX2xlbik7CnZvaWQgYnVpbGRfdGFibGVzKHJlYWxfdCAqaXFf
dGFibGUsIHJlYWxfdCAqcG93Ml90YWJsZSk7CnZvaWQgaW52ZXJzZV9xdWFudGl6YXRpb24ocmVh
bF90ICp4X2ludnF1YW50LCBpbnQxNl90ICp4X3F1YW50LCByZWFsX3QgKmlxX3RhYmxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGZyYW1lX2xlbik7CnZvaWQgYXBwbHlfc2Nh
bGVmYWN0b3JzKGljX3N0cmVhbSAqaWNzLCByZWFsX3QgKnhfaW52cXVhbnQsIHJlYWxfdCAqcG93
Ml90YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgZnJhbWVfbGVuKTsKIyAz
NSAic3ludGF4LmMiIDIKIyAxICJodWZmbWFuLmgiIDEKIyAzNCAiaHVmZm1hbi5oIgojIDEgImNv
ZGVib29rL2hjYi5oIiAxCiMgNzQgImNvZGVib29rL2hjYi5oIgp0eXBlZGVmIHN0cnVjdAp7CiAg
ICB1aW50OF90IG9mZnNldDsKICAgIHVpbnQ4X3QgZXh0cmFfYml0czsKfSBoY2I7CgoKdHlwZWRl
ZiBzdHJ1Y3QKewogICAgdWludDhfdCBiaXRzOwogICAgaW50OF90IHg7CiAgICBpbnQ4X3QgeTsK
fSBoY2JfMl9wYWlyOwoKdHlwZWRlZiBzdHJ1Y3QKewogICAgdWludDhfdCBiaXRzOwogICAgaW50
OF90IHg7CiAgICBpbnQ4X3QgeTsKICAgIGludDhfdCB2OwogICAgaW50OF90IHc7Cn0gaGNiXzJf
cXVhZDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgICB1aW50OF90IGlzX2xlYWY7CiAgICBpbnQ4X3Qg
ZGF0YVs0XTsKfSBoY2JfYmluX3F1YWQ7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICB1aW50OF90IGlz
X2xlYWY7CiAgICBpbnQ4X3QgZGF0YVsyXTsKfSBoY2JfYmluX3BhaXI7CgpleHRlcm4gaGNiIGhj
YjFfMVtdOwpleHRlcm4gaGNiIGhjYjJfMVtdOwpleHRlcm4gaGNiIGhjYjRfMVtdOwpleHRlcm4g
aGNiIGhjYjZfMVtdOwpleHRlcm4gaGNiIGhjYjhfMVtdOwpleHRlcm4gaGNiIGhjYjEwXzFbXTsK
ZXh0ZXJuIGhjYiBoY2IxMV8xW107CgpleHRlcm4gaGNiXzJfcXVhZCBoY2IxXzJbXTsKZXh0ZXJu
IGhjYl8yX3F1YWQgaGNiMl8yW107CmV4dGVybiBoY2JfMl9xdWFkIGhjYjRfMltdOwpleHRlcm4g
aGNiXzJfcGFpciBoY2I2XzJbXTsKZXh0ZXJuIGhjYl8yX3BhaXIgaGNiOF8yW107CmV4dGVybiBo
Y2JfMl9wYWlyIGhjYjEwXzJbXTsKZXh0ZXJuIGhjYl8yX3BhaXIgaGNiMTFfMltdOwoKZXh0ZXJu
IGhjYl9iaW5fcXVhZCBoY2IzW107CmV4dGVybiBoY2JfYmluX3BhaXIgaGNiNVtdOwpleHRlcm4g
aGNiX2Jpbl9wYWlyIGhjYjdbXTsKZXh0ZXJuIGhjYl9iaW5fcGFpciBoY2I5W107CgpleHRlcm4g
dWludDhfdCBoY2Jfc2ZbXVsyXTsKIyAzNSAiaHVmZm1hbi5oIiAyCgoKc3RhdGljIGludDhfdCBo
dWZmbWFuX3NjYWxlX2ZhY3RvcihiaXRmaWxlICpsZCkKewogICAgdWludDE2X3Qgb2Zmc2V0ID0g
MDsKCiAgICB3aGlsZSAoaGNiX3NmW29mZnNldF1bMV0pCiAgICB7CiAgICAgICAgdWludDhfdCBi
ID0gZmFhZF9nZXQxYml0KGxkCiAgICAgICAgICAgICk7CiAgICAgICAgb2Zmc2V0ICs9IGhjYl9z
ZltvZmZzZXRdW2JdOwoKICAgICAgICBpZiAob2Zmc2V0ID4gMjQwKQogICAgICAgIHsKCiAgICAg
ICAgICAgIHJldHVybiAtMTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGhjYl9zZltvZmZz
ZXRdWzBdOwp9CgoKc3RhdGljIGhjYiAqaGNiX3RhYmxlW10gPSB7CiAgICAwLCBoY2IxXzEsIGhj
YjJfMSwgMCwgaGNiNF8xLCAwLCBoY2I2XzEsIDAsIGhjYjhfMSwgMCwgaGNiMTBfMSwgaGNiMTFf
MQp9OwoKc3RhdGljIGhjYl8yX3F1YWQgKmhjYl8yX3F1YWRfdGFibGVbXSA9IHsKICAgIDAsIGhj
YjFfMiwgaGNiMl8yLCAwLCBoY2I0XzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAKfTsKCnN0YXRpYyBo
Y2JfMl9wYWlyICpoY2JfMl9wYWlyX3RhYmxlW10gPSB7CiAgICAwLCAwLCAwLCAwLCAwLCAwLCBo
Y2I2XzIsIDAsIGhjYjhfMiwgMCwgaGNiMTBfMiwgaGNiMTFfMgp9OwoKc3RhdGljIGhjYl9iaW5f
cGFpciAqaGNiX2Jpbl90YWJsZVtdID0gewogICAgMCwgMCwgMCwgMCwgMCwgaGNiNSwgMCwgaGNi
NywgMCwgaGNiOSwgMCwgMAp9OwoKc3RhdGljIHVpbnQ4X3QgaGNiTltdID0geyAwLCA1LCA1LCAw
LCA1LCAwLCA1LCAwLCA1LCAwLCA2LCA1IH07CgpzdGF0aWMgaW50IGhjYl8yX3F1YWRfdGFibGVf
c2l6ZVtdID0geyAwLCAxMTQsIDg2LCAwLCAxODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKc3Rh
dGljIGludCBoY2JfMl9wYWlyX3RhYmxlX3NpemVbXSA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMTI2
LCAwLCA4MywgMCwgMjEwLCAzNzMgfTsKc3RhdGljIGludCBoY2JfYmluX3RhYmxlX3NpemVbXSA9
IHsgMCwgMCwgMCwgMTYxLCAwLCAxNjEsIDAsIDEyNywgMCwgMzM3LCAwLCAwIH07CgpzdGF0aWMg
dWludDhfdCBodWZmbWFuX3NwZWN0cmFsX2RhdGEodWludDhfdCBjYiwgYml0ZmlsZSAqbGQsIGlu
dDE2X3QgKnNwKQp7CiAgICB1aW50MzJfdCBjdzsKICAgIHVpbnQxNl90IG9mZnNldCA9IDA7CiAg
ICB1aW50OF90IGV4dHJhX2JpdHM7CgogICAgc3dpdGNoIChjYikKICAgIHsKICAgIGNhc2UgMToK
ICAgIGNhc2UgMjoKICAgIGNhc2UgNDoKCiAgICAgICAgY3cgPSBmYWFkX3Nob3diaXRzKGxkLCBo
Y2JOW2NiXSk7CiAgICAgICAgb2Zmc2V0ID0gaGNiX3RhYmxlW2NiXVtjd10ub2Zmc2V0OwogICAg
ICAgIGV4dHJhX2JpdHMgPSBoY2JfdGFibGVbY2JdW2N3XS5leHRyYV9iaXRzOwoKICAgICAgICBp
ZiAoZXh0cmFfYml0cykKICAgICAgICB7CgogICAgICAgICAgICBmYWFkX2ZsdXNoYml0cyhsZCwg
aGNiTltjYl0pOwogICAgICAgICAgICBvZmZzZXQgKz0gKHVpbnQxNl90KWZhYWRfc2hvd2JpdHMo
bGQsIGV4dHJhX2JpdHMpOwogICAgICAgICAgICBmYWFkX2ZsdXNoYml0cyhsZCwgaGNiXzJfcXVh
ZF90YWJsZVtjYl1bb2Zmc2V0XS5iaXRzIC0gaGNiTltjYl0pOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIGZhYWRfZmx1c2hiaXRzKGxkLCBoY2JfMl9xdWFkX3RhYmxlW2NiXVtvZmZzZXRd
LmJpdHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKG9mZnNldCA+IGhjYl8yX3F1YWRfdGFibGVf
c2l6ZVtjYl0pCiAgICAgICAgewoKCiAgICAgICAgICAgIHJldHVybiAxMDsKICAgICAgICB9Cgog
ICAgICAgIHNwWzBdID0gaGNiXzJfcXVhZF90YWJsZVtjYl1bb2Zmc2V0XS54OwogICAgICAgIHNw
WzFdID0gaGNiXzJfcXVhZF90YWJsZVtjYl1bb2Zmc2V0XS55OwogICAgICAgIHNwWzJdID0gaGNi
XzJfcXVhZF90YWJsZVtjYl1bb2Zmc2V0XS52OwogICAgICAgIHNwWzNdID0gaGNiXzJfcXVhZF90
YWJsZVtjYl1bb2Zmc2V0XS53OwoKICAgICAgICByZXR1cm4gMDsKCiAgICBjYXNlIDY6CiAgICBj
YXNlIDg6CiAgICBjYXNlIDEwOgogICAgY2FzZSAxMToKCgogICAgY2FzZSAxNjogY2FzZSAxNzog
Y2FzZSAxODogY2FzZSAxOTogY2FzZSAyMDogY2FzZSAyMTogY2FzZSAyMjogY2FzZSAyMzoKICAg
IGNhc2UgMjQ6IGNhc2UgMjU6IGNhc2UgMjY6IGNhc2UgMjc6IGNhc2UgMjg6IGNhc2UgMjk6IGNh
c2UgMzA6IGNhc2UgMzE6CgoKICAgICAgICBpZiAoY2IgPj0gMTYpCiAgICAgICAgICAgIGNiID0g
MTE7CgogICAgICAgIGN3ID0gZmFhZF9zaG93Yml0cyhsZCwgaGNiTltjYl0pOwogICAgICAgIG9m
ZnNldCA9IGhjYl90YWJsZVtjYl1bY3ddLm9mZnNldDsKICAgICAgICBleHRyYV9iaXRzID0gaGNi
X3RhYmxlW2NiXVtjd10uZXh0cmFfYml0czsKCiAgICAgICAgaWYgKGV4dHJhX2JpdHMpCiAgICAg
ICAgewoKICAgICAgICAgICAgZmFhZF9mbHVzaGJpdHMobGQsIGhjYk5bY2JdKTsKICAgICAgICAg
ICAgb2Zmc2V0ICs9ICh1aW50MTZfdClmYWFkX3Nob3diaXRzKGxkLCBleHRyYV9iaXRzKTsKICAg
ICAgICAgICAgZmFhZF9mbHVzaGJpdHMobGQsIGhjYl8yX3BhaXJfdGFibGVbY2JdW29mZnNldF0u
Yml0cyAtIGhjYk5bY2JdKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWFkX2ZsdXNo
Yml0cyhsZCwgaGNiXzJfcGFpcl90YWJsZVtjYl1bb2Zmc2V0XS5iaXRzKTsKICAgICAgICB9Cgog
ICAgICAgIGlmIChvZmZzZXQgPiBoY2JfMl9wYWlyX3RhYmxlX3NpemVbY2JdKQogICAgICAgIHsK
CgogICAgICAgICAgICByZXR1cm4gMTA7CiAgICAgICAgfQoKICAgICAgICBzcFswXSA9IGhjYl8y
X3BhaXJfdGFibGVbY2JdW29mZnNldF0ueDsKICAgICAgICBzcFsxXSA9IGhjYl8yX3BhaXJfdGFi
bGVbY2JdW29mZnNldF0ueTsKCiAgICAgICAgcmV0dXJuIDA7CgogICAgY2FzZSAzOgoKICAgICAg
ICB3aGlsZSAoIWhjYjNbb2Zmc2V0XS5pc19sZWFmKQogICAgICAgIHsKICAgICAgICAgICAgdWlu
dDhfdCBiID0gZmFhZF9nZXQxYml0KGxkCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICBv
ZmZzZXQgKz0gaGNiM1tvZmZzZXRdLmRhdGFbYl07CiAgICAgICAgfQoKICAgICAgICBpZiAob2Zm
c2V0ID4gaGNiX2Jpbl90YWJsZV9zaXplW2NiXSkKICAgICAgICB7CgoKICAgICAgICAgICAgcmV0
dXJuIDEwOwogICAgICAgIH0KCiAgICAgICAgc3BbMF0gPSBoY2IzW29mZnNldF0uZGF0YVswXTsK
ICAgICAgICBzcFsxXSA9IGhjYjNbb2Zmc2V0XS5kYXRhWzFdOwogICAgICAgIHNwWzJdID0gaGNi
M1tvZmZzZXRdLmRhdGFbMl07CiAgICAgICAgc3BbM10gPSBoY2IzW29mZnNldF0uZGF0YVszXTsK
CiAgICAgICAgcmV0dXJuIDA7CgogICAgY2FzZSA1OgogICAgY2FzZSA3OgogICAgY2FzZSA5OgoK
ICAgICAgICB3aGlsZSAoIWhjYl9iaW5fdGFibGVbY2JdW29mZnNldF0uaXNfbGVhZikKICAgICAg
ICB7CiAgICAgICAgICAgIHVpbnQ4X3QgYiA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICAgICAg
ICAgKTsKICAgICAgICAgICAgb2Zmc2V0ICs9IGhjYl9iaW5fdGFibGVbY2JdW29mZnNldF0uZGF0
YVtiXTsKICAgICAgICB9CgogICAgICAgIGlmIChvZmZzZXQgPiBoY2JfYmluX3RhYmxlX3NpemVb
Y2JdKQogICAgICAgIHsKCgogICAgICAgICAgICByZXR1cm4gMTA7CiAgICAgICAgfQoKICAgICAg
ICBzcFswXSA9IGhjYl9iaW5fdGFibGVbY2JdW29mZnNldF0uZGF0YVswXTsKICAgICAgICBzcFsx
XSA9IGhjYl9iaW5fdGFibGVbY2JdW29mZnNldF0uZGF0YVsxXTsKCiAgICAgICAgcmV0dXJuIDA7
CgogICAgZGVmYXVsdDoKCiAgICAgICAgcmV0dXJuIDExOwogICAgfQoKICAgIHJldHVybiAwOwp9
CgpzdGF0aWMgdm9pZCBodWZmbWFuX3NpZ25fYml0cyhiaXRmaWxlICpsZCwgaW50MTZfdCAqc3As
IHVpbnQ4X3QgbGVuKQp7CiAgICB1aW50OF90IGk7CgogICAgZm9yKGkgPSAwOyBpIDwgbGVuOyBp
KyspCiAgICB7CiAgICAgICAgaWYoc3BbaV0pCiAgICAgICAgewogICAgICAgICAgICBpZihmYWFk
X2dldDFiaXQobGQKICAgICAgICAgICAgICAgICkgJiAxKQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICBzcFtpXSA9IC1zcFtpXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoK
c3RhdGljIGludDMyX3QgaHVmZm1hbl9nZXRlc2NhcGUoYml0ZmlsZSAqbGQsIGludDE2X3Qgc3Ap
CnsKICAgIHVpbnQ4X3QgbmVnLCBpOwogICAgaW50MzJfdCBqLCBvZmY7CgogICAgaWYgKHNwIDwg
MCkgewogICAgICAgIGlmKHNwICE9IC0xNikKICAgICAgICAgICAgcmV0dXJuIHNwOwogICAgICAg
IG5lZyA9IDE7CiAgICB9IGVsc2UgewogICAgICAgIGlmKHNwICE9IDE2KQogICAgICAgICAgICBy
ZXR1cm4gc3A7CiAgICAgICAgbmVnID0gMDsKICAgIH0KCiAgICBmb3IgKGkgPSA0OyA7IGkrKykK
ICAgIHsKICAgICAgICBpZiAoZmFhZF9nZXQxYml0KGxkCiAgICAgICAgICAgICkgPT0gMCkKICAg
ICAgICB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KIyAyNjMgImh1ZmZtYW4u
aCIKICAgICAgICBvZmYgPSBmYWFkX2dldGJpdHMobGQsIGkKICAgICAgICAgICAgKTsKCgoKCiAg
ICBqID0gb2ZmICsgKDE8PGkpOwogICAgaWYgKG5lZykKICAgICAgICBqID0gLWo7CgogICAgcmV0
dXJuIGo7Cn0KIyAzNiAic3ludGF4LmMiIDIKCiMgMSAiZGF0YS5oIiAxCiMgMjkgImRhdGEuaCIK
ZXh0ZXJuIHVpbnQ4X3QgbnVtX3N3Yl8xMDI0X3dpbmRvd1tdOwoKZXh0ZXJuIHVpbnQ4X3QgbnVt
X3N3Yl81MTJfd2luZG93W107CgpleHRlcm4gdWludDhfdCBudW1fc3diXzEyOF93aW5kb3dbXTsK
ZXh0ZXJuIHVpbnQxNl90ICpzd2Jfb2Zmc2V0XzEwMjRfd2luZG93W107CgpleHRlcm4gdWludDE2
X3QgKnN3Yl9vZmZzZXRfNTEyX3dpbmRvd1tdOwoKZXh0ZXJuIHVpbnQxNl90ICpzd2Jfb2Zmc2V0
XzEyOF93aW5kb3dbXTsKZXh0ZXJuIHVpbnQ4X3QgcHJlZF9zZmJfbWF4W107CmV4dGVybiB1aW50
MzJfdCBzYW1wbGVfcmF0ZXNbXTsKIyAzOCAic3ludGF4LmMiIDIKIyAxICJwdWxzZS5oIiAxCiMg
MjkgInB1bHNlLmgiCnZvaWQgcHVsc2VfZGVjb2RlKGljX3N0cmVhbSAqaWNzLCBpbnQxNl90ICpz
cGVjX2NvZWYpOwojIDM5ICJzeW50YXguYyIgMgoKCgoKCgoKdWludDhfdCBHQVNwZWNpZmljQ29u
ZmlnKGJpdGZpbGUgKmxkLCB1aW50OF90ICpjaGFubmVsQ29uZmlndXJhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3Qgb2JqZWN0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICphYWNTZWN0aW9uRGF0YVJlc2lsaWVuY2VGbGFnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqYWFjU2NhbGVmYWN0b3JEYXRhUmVzaWxpZW5jZUZsYWcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICphYWNTcGVjdHJhbERhdGFSZXNpbGllbmNl
RmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmZyYW1lTGVuZ3RoRmxhZykK
ewogICAgdWludDhfdCBkZXBlbmRzT25Db3JlQ29kZXIsIGV4dGVuc2lvbkZsYWc7CiAgICB1aW50
MTZfdCBjb3JlQ29kZXJEZWxheTsKICAgIHByb2dyYW1fY29uZmlnIHBjZTsKCgogICAgKmZyYW1l
TGVuZ3RoRmxhZyA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICk7CgogICAgZGVwZW5kc09uQ29y
ZUNvZGVyID0gZmFhZF9nZXQxYml0KGxkCiAgICAgICAgKTsKICAgIGlmIChkZXBlbmRzT25Db3Jl
Q29kZXIgPT0gMSkKICAgIHsKICAgICAgICBjb3JlQ29kZXJEZWxheSA9ICh1aW50MTZfdClmYWFk
X2dldGJpdHMobGQsIDE0CiAgICAgICAgICAgICk7CiAgICB9CgogICAgZXh0ZW5zaW9uRmxhZyA9
IGZhYWRfZ2V0MWJpdChsZCApOwogICAgaWYgKCpjaGFubmVsQ29uZmlndXJhdGlvbiA9PSAwKQog
ICAgewogICAgICAgIHByb2dyYW1fY29uZmlnX2VsZW1lbnQoJnBjZSwgbGQpOwogICAgICAgICpj
aGFubmVsQ29uZmlndXJhdGlvbiA9IHBjZS5jaGFubmVsczsKCiAgICAgICAgaWYgKHBjZS5udW1f
dmFsaWRfY2NfZWxlbWVudHMpCiAgICAgICAgICAgIHJldHVybiAtMzsKICAgIH0KCiAgICBpZiAo
ZXh0ZW5zaW9uRmxhZyA9PSAxKQogICAgewoKICAgICAgICBpZiAob2JqZWN0X3R5cGUgPj0gMTcp
CiAgICAgICAgewogICAgICAgICAgICAqYWFjU2VjdGlvbkRhdGFSZXNpbGllbmNlRmxhZyA9IGZh
YWRfZ2V0MWJpdChsZAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgKmFhY1NjYWxlZmFj
dG9yRGF0YVJlc2lsaWVuY2VGbGFnID0gZmFhZF9nZXQxYml0KGxkCiAgICAgICAgICAgICAgICAp
OwogICAgICAgICAgICAqYWFjU3BlY3RyYWxEYXRhUmVzaWxpZW5jZUZsYWcgPSBmYWFkX2dldDFi
aXQobGQKICAgICAgICAgICAgICAgICk7CgoKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7
Cn0KIyAxMDUgInN5bnRheC5jIgp1aW50OF90IHByb2dyYW1fY29uZmlnX2VsZW1lbnQocHJvZ3Jh
bV9jb25maWcgKnBjZSwgYml0ZmlsZSAqbGQpCnsKICAgIHVpbnQ4X3QgaTsKCiAgICBwY2UtPmNo
YW5uZWxzID0gMDsKCiAgICBwY2UtPmVsZW1lbnRfaW5zdGFuY2VfdGFnID0gKHVpbnQ4X3QpZmFh
ZF9nZXRiaXRzKGxkLCA0CiAgICAgICAgKTsKCiAgICBwY2UtPm9iamVjdF90eXBlID0gKHVpbnQ4
X3QpZmFhZF9nZXRiaXRzKGxkLCAyCiAgICAgICAgKTsKICAgIHBjZS0+c2ZfaW5kZXggPSAodWlu
dDhfdClmYWFkX2dldGJpdHMobGQsIDQKICAgICAgICApOwogICAgcGNlLT5udW1fZnJvbnRfY2hh
bm5lbF9lbGVtZW50cyA9ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgNAogICAgICAgICk7CiAg
ICBwY2UtPm51bV9zaWRlX2NoYW5uZWxfZWxlbWVudHMgPSAodWludDhfdClmYWFkX2dldGJpdHMo
bGQsIDQKICAgICAgICApOwogICAgcGNlLT5udW1fYmFja19jaGFubmVsX2VsZW1lbnRzID0gKHVp
bnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCA0CiAgICAgICAgKTsKICAgIHBjZS0+bnVtX2xmZV9jaGFu
bmVsX2VsZW1lbnRzID0gKHVpbnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCAyCiAgICAgICAgKTsKICAg
IHBjZS0+bnVtX2Fzc29jX2RhdGFfZWxlbWVudHMgPSAodWludDhfdClmYWFkX2dldGJpdHMobGQs
IDMKICAgICAgICApOwogICAgcGNlLT5udW1fdmFsaWRfY2NfZWxlbWVudHMgPSAodWludDhfdClm
YWFkX2dldGJpdHMobGQsIDQKICAgICAgICApOwoKICAgIHBjZS0+bW9ub19taXhkb3duX3ByZXNl
bnQgPSBmYWFkX2dldDFiaXQobGQKICAgICAgICApOwogICAgaWYgKHBjZS0+bW9ub19taXhkb3du
X3ByZXNlbnQgPT0gMSkKICAgIHsKICAgICAgICBwY2UtPm1vbm9fbWl4ZG93bl9lbGVtZW50X251
bWJlciA9ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgNAogICAgICAgICAgICApOwogICAgfQoK
ICAgIHBjZS0+c3RlcmVvX21peGRvd25fcHJlc2VudCA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAg
ICk7CiAgICBpZiAocGNlLT5zdGVyZW9fbWl4ZG93bl9wcmVzZW50ID09IDEpCiAgICB7CiAgICAg
ICAgcGNlLT5zdGVyZW9fbWl4ZG93bl9lbGVtZW50X251bWJlciA9ICh1aW50OF90KWZhYWRfZ2V0
Yml0cyhsZCwgNAogICAgICAgICAgICApOwogICAgfQoKICAgIHBjZS0+bWF0cml4X21peGRvd25f
aWR4X3ByZXNlbnQgPSBmYWFkX2dldDFiaXQobGQKICAgICAgICApOwogICAgaWYgKHBjZS0+bWF0
cml4X21peGRvd25faWR4X3ByZXNlbnQgPT0gMSkKICAgIHsKICAgICAgICBwY2UtPm1hdHJpeF9t
aXhkb3duX2lkeCA9ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgMgogICAgICAgICAgICApOwog
ICAgICAgIHBjZS0+cHNldWRvX3N1cnJvdW5kX2VuYWJsZSA9IGZhYWRfZ2V0MWJpdChsZAogICAg
ICAgICAgICApOwogICAgfQoKICAgIGZvciAoaSA9IDA7IGkgPCBwY2UtPm51bV9mcm9udF9jaGFu
bmVsX2VsZW1lbnRzOyBpKyspCiAgICB7CiAgICAgICAgaWYgKChwY2UtPmZyb250X2VsZW1lbnRf
aXNfY3BlW2ldID0gZmFhZF9nZXQxYml0KGxkCiAgICAgICAgICAgICkpICYgMSkKICAgICAgICB7
CiAgICAgICAgICAgIHBjZS0+Y2hhbm5lbHMgKz0gMjsKICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICBwY2UtPmNoYW5uZWxzKys7CiAgICAgICAgfQogICAgICAgIHBjZS0+ZnJvbnRfZWxlbWVu
dF90YWdfc2VsZWN0W2ldID0gKHVpbnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCA0CiAgICAgICAgICAg
ICk7CiAgICB9CgogICAgZm9yIChpID0gMDsgaSA8IHBjZS0+bnVtX3NpZGVfY2hhbm5lbF9lbGVt
ZW50czsgaSsrKQogICAgewogICAgICAgIGlmICgocGNlLT5zaWRlX2VsZW1lbnRfaXNfY3BlW2ld
ID0gZmFhZF9nZXQxYml0KGxkCiAgICAgICAgICAgICkpICYgMSkKICAgICAgICB7CiAgICAgICAg
ICAgIHBjZS0+Y2hhbm5lbHMgKz0gMjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwY2Ut
PmNoYW5uZWxzKys7CiAgICAgICAgfQogICAgICAgIHBjZS0+c2lkZV9lbGVtZW50X3RhZ19zZWxl
Y3RbaV0gPSAodWludDhfdClmYWFkX2dldGJpdHMobGQsIDQKICAgICAgICAgICAgKTsKICAgIH0K
CiAgICBmb3IgKGkgPSAwOyBpIDwgcGNlLT5udW1fYmFja19jaGFubmVsX2VsZW1lbnRzOyBpKysp
CiAgICB7CiAgICAgICAgaWYgKChwY2UtPmJhY2tfZWxlbWVudF9pc19jcGVbaV0gPSBmYWFkX2dl
dDFiaXQobGQKICAgICAgICAgICAgKSkgJiAxKQogICAgICAgIHsKICAgICAgICAgICAgcGNlLT5j
aGFubmVscyArPSAyOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHBjZS0+Y2hhbm5lbHMr
KzsKICAgICAgICB9CiAgICAgICAgcGNlLT5iYWNrX2VsZW1lbnRfdGFnX3NlbGVjdFtpXSA9ICh1
aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgNAogICAgICAgICAgICApOwogICAgfQoKICAgIGZvciAo
aSA9IDA7IGkgPCBwY2UtPm51bV9sZmVfY2hhbm5lbF9lbGVtZW50czsgaSsrKQogICAgewogICAg
ICAgIHBjZS0+Y2hhbm5lbHMrKzsKICAgICAgICBwY2UtPmxmZV9lbGVtZW50X3RhZ19zZWxlY3Rb
aV0gPSAodWludDhfdClmYWFkX2dldGJpdHMobGQsIDQKICAgICAgICAgICAgKTsKICAgIH0KCiAg
ICBmb3IgKGkgPSAwOyBpIDwgcGNlLT5udW1fYXNzb2NfZGF0YV9lbGVtZW50czsgaSsrKQogICAg
ICAgIHBjZS0+YXNzb2NfZGF0YV9lbGVtZW50X3RhZ19zZWxlY3RbaV0gPSAodWludDhfdClmYWFk
X2dldGJpdHMobGQsIDQKICAgICAgICApOwoKICAgIGZvciAoaSA9IDA7IGkgPCBwY2UtPm51bV92
YWxpZF9jY19lbGVtZW50czsgaSsrKQogICAgewoKICAgICAgICBwY2UtPmNoYW5uZWxzICs9IDI7
CgogICAgICAgIHBjZS0+Y2NfZWxlbWVudF9pc19pbmRfc3dbaV0gPSBmYWFkX2dldDFiaXQobGQK
ICAgICAgICAgICAgKTsKICAgICAgICBwY2UtPnZhbGlkX2NjX2VsZW1lbnRfdGFnX3NlbGVjdFtp
XSA9ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgNAogICAgICAgICAgICApOwogICAgfQoKICAg
IGZhYWRfYnl0ZV9hbGlnbihsZCk7CgogICAgcGNlLT5jb21tZW50X2ZpZWxkX2J5dGVzID0gKHVp
bnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCA4CiAgICAgICAgKTsKCiAgICBmb3IgKGkgPSAwOyBpIDwg
cGNlLT5jb21tZW50X2ZpZWxkX2J5dGVzOyBpKyspCiAgICB7CiAgICAgICAgcGNlLT5jb21tZW50
X2ZpZWxkX2RhdGFbaV0gPSAodWludDhfdClmYWFkX2dldGJpdHMobGQsIDgKICAgICAgICAgICAg
KTsKICAgIH0KICAgIHBjZS0+Y29tbWVudF9maWVsZF9kYXRhW2ldID0gMDsKCiAgICByZXR1cm4g
MDsKfQoKCgp1aW50OF90IHNpbmdsZV9sZmVfY2hhbm5lbF9lbGVtZW50KGVsZW1lbnQgKnNjZSwg
Yml0ZmlsZSAqbGQsIGludDE2X3QgKnNwZWNfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90IHNmX2luZGV4LCB1aW50OF90IG9iamVjdF90eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGZyYW1lX2xlbgoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAsdWludDhfdCBhYWNTZWN0aW9uRGF0YVJlc2lsaWVu
Y2VGbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgYWFjU2Nh
bGVmYWN0b3JEYXRhUmVzaWxpZW5jZUZsYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDhfdCBhYWNTcGVjdHJhbERhdGFSZXNpbGllbmNlRmxhZwoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApCnsKICAgIGljX3N0cmVhbSAqaWNzID0gJihzY2UtPmlj
czEpOwoKCgoKICAgIHNjZS0+ZWxlbWVudF9pbnN0YW5jZV90YWcgPSAodWludDhfdClmYWFkX2dl
dGJpdHMobGQsIDQKICAgICAgICApOwoKICAgIHJldHVybiBpbmRpdmlkdWFsX2NoYW5uZWxfc3Ry
ZWFtKHNjZSwgbGQsIGljcywgMCwgc3BlY19kYXRhLCBzZl9pbmRleCwKICAgICAgICBvYmplY3Rf
dHlwZSwgZnJhbWVfbGVuCgogICAgICAgICxhYWNTZWN0aW9uRGF0YVJlc2lsaWVuY2VGbGFnLAog
ICAgICAgIGFhY1NjYWxlZmFjdG9yRGF0YVJlc2lsaWVuY2VGbGFnLAogICAgICAgIGFhY1NwZWN0
cmFsRGF0YVJlc2lsaWVuY2VGbGFnCgogICAgICAgICk7Cn0KCgp1aW50OF90IGNoYW5uZWxfcGFp
cl9lbGVtZW50KGVsZW1lbnQgKmNwZSwgYml0ZmlsZSAqbGQsIGludDE2X3QgKnNwZWNfZGF0YTEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqc3BlY19kYXRhMiwgdWludDhf
dCBzZl9pbmRleCwgdWludDhfdCBvYmplY3RfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MTZfdCBmcmFtZV9sZW4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHVp
bnQ4X3QgYWFjU2VjdGlvbkRhdGFSZXNpbGllbmNlRmxhZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90IGFhY1NjYWxlZmFjdG9yRGF0YVJlc2lsaWVuY2VGbGFnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgYWFjU3BlY3RyYWxEYXRhUmVzaWxpZW5jZUZs
YWcKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQp7CiAgICB1aW50OF90IHJlc3VsdDsK
ICAgIGljX3N0cmVhbSAqaWNzMSA9ICYoY3BlLT5pY3MxKTsKICAgIGljX3N0cmVhbSAqaWNzMiA9
ICYoY3BlLT5pY3MyKTsKCgoKCiAgICBjcGUtPmVsZW1lbnRfaW5zdGFuY2VfdGFnID0gKHVpbnQ4
X3QpZmFhZF9nZXRiaXRzKGxkLCA0CiAgICAgICAgKTsKCiAgICBpZiAoKGNwZS0+Y29tbW9uX3dp
bmRvdyA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICkpICYgMSkKICAgIHsKCiAgICAgICAgaWYg
KChyZXN1bHQgPSBpY3NfaW5mbyhpY3MxLCBsZCwgY3BlLT5jb21tb25fd2luZG93LCBzZl9pbmRl
eCwKICAgICAgICAgICAgb2JqZWN0X3R5cGUsIGZyYW1lX2xlbikpID4gMCkKICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKCiAgICAgICAgaWNzMS0+bXNfbWFza19wcmVzZW50ID0gKHVpbnQ4X3Qp
ZmFhZF9nZXRiaXRzKGxkLCAyCiAgICAgICAgICAgICk7CiAgICAgICAgaWYgKGljczEtPm1zX21h
c2tfcHJlc2VudCA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgdWludDhfdCBnLCBzZmI7CiAg
ICAgICAgICAgIGZvciAoZyA9IDA7IGcgPCBpY3MxLT5udW1fd2luZG93X2dyb3VwczsgZysrKQog
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgKHNmYiA9IDA7IHNmYiA8IGljczEtPm1h
eF9zZmI7IHNmYisrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljczEt
Pm1zX3VzZWRbZ11bc2ZiXSA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICAgICAgICAgICAgICAg
ICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBt
ZW1jcHkoaWNzMiwgaWNzMSwgc2l6ZW9mKGljX3N0cmVhbSkpOwogICAgfSBlbHNlIHsKICAgICAg
ICBpY3MxLT5tc19tYXNrX3ByZXNlbnQgPSAwOwogICAgfQoKICAgIGlmICgocmVzdWx0ID0gaW5k
aXZpZHVhbF9jaGFubmVsX3N0cmVhbShjcGUsIGxkLCBpY3MxLCAwLCBzcGVjX2RhdGExLAogICAg
ICAgIHNmX2luZGV4LCBvYmplY3RfdHlwZSwgZnJhbWVfbGVuCgogICAgICAgICxhYWNTZWN0aW9u
RGF0YVJlc2lsaWVuY2VGbGFnLAogICAgICAgIGFhY1NjYWxlZmFjdG9yRGF0YVJlc2lsaWVuY2VG
bGFnLAogICAgICAgIGFhY1NwZWN0cmFsRGF0YVJlc2lsaWVuY2VGbGFnCgogICAgICAgICkpID4g
MCkKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgaWYgKChyZXN1bHQgPSBpbmRpdmlkdWFsX2No
YW5uZWxfc3RyZWFtKGNwZSwgbGQsIGljczIsIDAsIHNwZWNfZGF0YTIsCiAgICAgICAgc2ZfaW5k
ZXgsIG9iamVjdF90eXBlLCBmcmFtZV9sZW4KCiAgICAgICAgLGFhY1NlY3Rpb25EYXRhUmVzaWxp
ZW5jZUZsYWcsCiAgICAgICAgYWFjU2NhbGVmYWN0b3JEYXRhUmVzaWxpZW5jZUZsYWcsCiAgICAg
ICAgYWFjU3BlY3RyYWxEYXRhUmVzaWxpZW5jZUZsYWcKCiAgICAgICAgKSkgPiAwKQogICAgICAg
IHJldHVybiByZXN1bHQ7CgogICAgcmV0dXJuIDA7Cn0KCgpzdGF0aWMgdWludDhfdCBpY3NfaW5m
byhpY19zdHJlYW0gKmljcywgYml0ZmlsZSAqbGQsIHVpbnQ4X3QgY29tbW9uX3dpbmRvdywKICAg
ICAgICAgICAgICAgICAgICB1aW50OF90IHNmX2luZGV4LCB1aW50OF90IG9iamVjdF90eXBlLCB1
aW50MTZfdCBmcmFtZV9sZW4pCnsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZh
YWRfZ2V0MWJpdChsZAogICAgICAgICk7CiAgICBpY3MtPndpbmRvd19zZXF1ZW5jZSA9ICh1aW50
OF90KWZhYWRfZ2V0Yml0cyhsZCwgMgogICAgICAgICk7CiAgICBpY3MtPndpbmRvd19zaGFwZSA9
IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICk7CgogICAgaWYgKGljcy0+d2luZG93X3NlcXVlbmNl
ID09IDB4MikKICAgIHsKICAgICAgICBpY3MtPm1heF9zZmIgPSAodWludDhfdClmYWFkX2dldGJp
dHMobGQsIDQKICAgICAgICAgICAgKTsKICAgICAgICBpY3MtPnNjYWxlX2ZhY3Rvcl9ncm91cGlu
ZyA9ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgNwogICAgICAgICAgICApOwogICAgfSBlbHNl
IHsKICAgICAgICBpY3MtPm1heF9zZmIgPSAodWludDhfdClmYWFkX2dldGJpdHMobGQsIDYKICAg
ICAgICAgICAgKTsKCiAgICAgICAgaWYgKChpY3MtPnByZWRpY3Rvcl9kYXRhX3ByZXNlbnQgPSBm
YWFkX2dldDFiaXQobGQKICAgICAgICAgICAgKSkgJiAxKQogICAgICAgIHsKICAgICAgICAgICAg
aWYgKG9iamVjdF90eXBlID09IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHVpbnQ4
X3Qgc2ZiOwoKICAgICAgICAgICAgICAgIGljcy0+cHJlZC5saW1pdCA9ICgoKGljcy0+bWF4X3Nm
YikgPCAocHJlZF9zZmJfbWF4W3NmX2luZGV4XSkpID8gKGljcy0+bWF4X3NmYikgOiAocHJlZF9z
ZmJfbWF4W3NmX2luZGV4XSkpOwoKICAgICAgICAgICAgICAgIGlmICgoaWNzLT5wcmVkLnByZWRp
Y3Rvcl9yZXNldCA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICAgICAgICAgICAgICkpICYgMSkK
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY3MtPnByZWQucHJlZGljdG9y
X3Jlc2V0X2dyb3VwX251bWJlciA9ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgNQogICAgICAg
ICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZv
ciAoc2ZiID0gMDsgc2ZiIDwgaWNzLT5wcmVkLmxpbWl0OyBzZmIrKykKICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICBpY3MtPnByZWQucHJlZGljdGlvbl91c2VkW3NmYl0gPSBm
YWFkX2dldDFiaXQobGQKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAo
KGljcy0+bHRwLmRhdGFfcHJlc2VudCA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICAgICAgICAg
ICAgICkpICYgMSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBsdHBfZGF0
YShpY3MsICYoaWNzLT5sdHApLCBsZCwgb2JqZWN0X3R5cGUpOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgaWYgKGNvbW1vbl93aW5kb3cpCiAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgaWYgKChpY3MtPmx0cDIuZGF0YV9wcmVzZW50ID0gZmFhZF9nZXQxYml0
KGxkCiAgICAgICAgICAgICAgICAgICAgICAgICkpICYgMSkKICAgICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGx0cF9kYXRhKGljcywgJihpY3MtPmx0cDIpLCBsZCwg
b2JqZWN0X3R5cGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgfQoKICAgICAgICB9CiAgICB9CgoKICAgIHJldHVybiB3aW5kb3dfZ3JvdXBpbmdf
aW5mbyhpY3MsIHNmX2luZGV4LCBvYmplY3RfdHlwZSwgZnJhbWVfbGVuKTsKfQoKCnN0YXRpYyB2
b2lkIHB1bHNlX2RhdGEocHVsc2VfaW5mbyAqcHVsLCBiaXRmaWxlICpsZCkKewogICAgdWludDhf
dCBpOwoKICAgIHB1bC0+bnVtYmVyX3B1bHNlID0gKHVpbnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCAy
CiAgICAgICAgKTsKICAgIHB1bC0+cHVsc2Vfc3RhcnRfc2ZiID0gKHVpbnQ4X3QpZmFhZF9nZXRi
aXRzKGxkLCA2CiAgICAgICAgKTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgcHVsLT5udW1iZXJfcHVs
c2UrMTsgaSsrKSB7CiAgICAgICAgcHVsLT5wdWxzZV9vZmZzZXRbaV0gPSAodWludDhfdClmYWFk
X2dldGJpdHMobGQsIDUKICAgICAgICAgICAgKTsKICAgICAgICBwdWwtPnB1bHNlX2FtcFtpXSA9
ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgNAogICAgICAgICAgICApOwogICAgfQp9CgoKdWlu
dDE2X3QgZGF0YV9zdHJlYW1fZWxlbWVudChiaXRmaWxlICpsZCkKewogICAgdWludDhfdCBieXRl
X2FsaWduZWQ7CiAgICB1aW50MTZfdCBpLCBjb3VudDsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZhYWRfZ2V0Yml0cyhsZCwgNAogICAgICAgICk7CiAgICBieXRlX2FsaWduZWQg
PSBmYWFkX2dldDFiaXQobGQKICAgICAgICApOwogICAgY291bnQgPSBmYWFkX2dldGJpdHMobGQs
IDgKICAgICAgICApOwogICAgaWYgKGNvdW50ID09IDI1NSkKICAgIHsKICAgICAgICBjb3VudCAr
PSBmYWFkX2dldGJpdHMobGQsIDgKICAgICAgICAgICAgKTsKICAgIH0KICAgIGlmIChieXRlX2Fs
aWduZWQpCiAgICAgICAgZmFhZF9ieXRlX2FsaWduKGxkKTsKCiAgICBmb3IgKGkgPSAwOyBpIDwg
Y291bnQ7IGkrKykKICAgIHsKICAgICAgICBmYWFkX2dldGJpdHMobGQsIDgKICAgICAgICAgICAg
KTsKICAgIH0KCiAgICByZXR1cm4gY291bnQ7Cn0KCgp1aW50OF90IGZpbGxfZWxlbWVudChiaXRm
aWxlICpsZCwgZHJjX2luZm8gKmRyYwoKCgogICAgICAgICAgICAgICAgICAgICApCnsKICAgIHVp
bnQxNl90IGNvdW50OwoKCgoKCiAgICBjb3VudCA9ICh1aW50MTZfdClmYWFkX2dldGJpdHMobGQs
IDQKICAgICAgICApOwogICAgaWYgKGNvdW50ID09IDE1KQogICAgewogICAgICAgIGNvdW50ICs9
ICh1aW50MTZfdClmYWFkX2dldGJpdHMobGQsIDgKICAgICAgICAgICAgKSAtIDE7CiAgICB9CiMg
NDk5ICJzeW50YXguYyIKICAgICAgICB3aGlsZSAoY291bnQgPiAwKQogICAgICAgIHsKICAgICAg
ICAgICAgY291bnQgLT0gZXh0ZW5zaW9uX3BheWxvYWQobGQsIGRyYywgY291bnQpOwogICAgICAg
IH0KCgoKCiAgICByZXR1cm4gMDsKfQoKCnN0YXRpYyB2b2lkIGdhaW5fY29udHJvbF9kYXRhKGJp
dGZpbGUgKmxkLCBpY19zdHJlYW0gKmljcykKewogICAgdWludDhfdCBiZCwgd2QsIGFkOwogICAg
dWludDhfdCBhZGp1c3RfbnVtWzRdWzhdOwogICAgdWludDhfdCBhbGV2Y29kZVs0XVs4XVs4XTsK
ICAgIHVpbnQ4X3QgYWxvY2NvZGVbNF1bOF1bOF07CgogICAgdWludDhfdCBtYXhfYmFuZCA9ICh1
aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgMgogICAgICAgICk7CgogICAgaWYgKGljcy0+d2luZG93
X3NlcXVlbmNlID09IDB4MCkKICAgIHsKICAgICAgICBmb3IgKGJkID0gMTsgYmQgPD0gbWF4X2Jh
bmQ7IGJkKyspCiAgICAgICAgewogICAgICAgICAgICBmb3IgKHdkPTA7IHdkPDE7IHdkKyspCiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFkanVzdF9udW1bYmRdW3dkXSA9ICh1aW50OF90
KWZhYWRfZ2V0Yml0cyhsZCwgMwogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAg
ICAgZm9yIChhZCA9IDA7IGFkIDwgYWRqdXN0X251bVtiZF1bd2RdOyBhZCsrKQogICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgIGFsZXZjb2RlW2JkXVt3ZF1bYWRdID0gKHVpbnQ4
X3QpZmFhZF9nZXRiaXRzKGxkLCA0CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAg
ICAgICAgICAgICAgYWxvY2NvZGVbYmRdW3dkXVthZF0gPSAodWludDhfdClmYWFkX2dldGJpdHMo
bGQsIDUKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfQogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoaWNzLT53aW5kb3dfc2VxdWVuY2UgPT0g
MHgxKSB7CiAgICAgICAgZm9yIChiZCA9IDE7IGJkIDw9IG1heF9iYW5kOyBiZCsrKQogICAgICAg
IHsKICAgICAgICAgICAgZm9yICh3ZCA9IDA7IHdkIDwgMjsgd2QrKykKICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgYWRqdXN0X251bVtiZF1bd2RdID0gKHVpbnQ4X3QpZmFhZF9nZXRiaXRz
KGxkLCAzCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBmb3IgKGFkID0g
MDsgYWQgPCBhZGp1c3RfbnVtW2JkXVt3ZF07IGFkKyspCiAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgYWxldmNvZGVbYmRdW3dkXVthZF0gPSAodWludDhfdClmYWFkX2dldGJp
dHMobGQsIDQKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBp
ZiAod2QgPT0gMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGFsb2Njb2RlW2JkXVt3ZF1bYWRdID0gKHVpbnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCA0CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGFsb2Njb2RlW2JkXVt3ZF1bYWRdID0gKHVpbnQ4X3QpZmFh
ZF9nZXRiaXRzKGxkLCAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAg
IH0gZWxzZSBpZiAoaWNzLT53aW5kb3dfc2VxdWVuY2UgPT0gMHgyKSB7CiAgICAgICAgZm9yIChi
ZCA9IDE7IGJkIDw9IG1heF9iYW5kOyBiZCsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKHdk
PTA7IHdkPDg7IHdkKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFkanVzdF9udW1b
YmRdW3dkXSA9ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgMwogICAgICAgICAgICAgICAgICAg
ICk7CgogICAgICAgICAgICAgICAgZm9yIChhZCA9IDA7IGFkIDwgYWRqdXN0X251bVtiZF1bd2Rd
OyBhZCsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFsZXZjb2RlW2Jk
XVt3ZF1bYWRdID0gKHVpbnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCA0CiAgICAgICAgICAgICAgICAg
ICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgYWxvY2NvZGVbYmRdW3dkXVthZF0gPSAodWlu
dDhfdClmYWFkX2dldGJpdHMobGQsIDIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoaWNzLT53
aW5kb3dfc2VxdWVuY2UgPT0gMHgzKSB7CiAgICAgICAgZm9yIChiZCA9IDE7IGJkIDw9IG1heF9i
YW5kOyBiZCsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yICh3ZCA9IDA7IHdkIDwgMjsgd2Qr
KykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYWRqdXN0X251bVtiZF1bd2RdID0gKHVp
bnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCAzCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAg
ICAgICAgICBmb3IgKGFkID0gMDsgYWQgPCBhZGp1c3RfbnVtW2JkXVt3ZF07IGFkKyspCiAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYWxldmNvZGVbYmRdW3dkXVthZF0gPSAo
dWludDhfdClmYWFkX2dldGJpdHMobGQsIDQKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAg
ICAgICAgICAgICAgICAgICAgaWYgKHdkID09IDApCiAgICAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICAgICBhbG9jY29kZVtiZF1bd2RdW2FkXSA9ICh1aW50OF90KWZhYWRf
Z2V0Yml0cyhsZCwgNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBhbG9jY29kZVtiZF1bd2Rd
W2FkXSA9ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgNQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgIH0KICAgICAgICB9CiAgICB9Cn0KCgpzdGF0aWMgdWludDhfdCBpbmRpdmlkdWFsX2NoYW5u
ZWxfc3RyZWFtKGVsZW1lbnQgKmVsZSwgYml0ZmlsZSAqbGQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpY19zdHJlYW0gKmljcywgdWludDhfdCBzY2FsX2ZsYWcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpzcGVjX2RhdGEsIHVpbnQ4
X3Qgc2ZfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90
IG9iamVjdF90eXBlLCB1aW50MTZfdCBmcmFtZV9sZW4KCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAsdWludDhfdCBhYWNTZWN0aW9uRGF0YVJlc2lsaWVuY2VGbGFnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBhYWNTY2FsZWZhY3RvckRh
dGFSZXNpbGllbmNlRmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgYWFjU3BlY3RyYWxEYXRhUmVzaWxpZW5jZUZsYWcKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApCnsKICAgIHVpbnQ4X3QgcmVzdWx0OwoKICAgIGljcy0+Z2xvYmFs
X2dhaW4gPSAodWludDhfdClmYWFkX2dldGJpdHMobGQsIDgKICAgICAgICApOwoKICAgIGlmICgh
ZWxlLT5jb21tb25fd2luZG93ICYmICFzY2FsX2ZsYWcpCiAgICB7CiAgICAgICAgaWYgKChyZXN1
bHQgPSBpY3NfaW5mbyhpY3MsIGxkLCBlbGUtPmNvbW1vbl93aW5kb3csIHNmX2luZGV4LAogICAg
ICAgICAgICBvYmplY3RfdHlwZSwgZnJhbWVfbGVuKSkgPiAwKQogICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgfQogICAgc2VjdGlvbl9kYXRhKGljcywgbGQKCiAgICAgICAgLGFhY1NlY3Rp
b25EYXRhUmVzaWxpZW5jZUZsYWcKCiAgICAgICAgKTsKICAgIGlmICgocmVzdWx0ID0gc2NhbGVf
ZmFjdG9yX2RhdGEoaWNzLCBsZAoKICAgICAgICAsYWFjU2NhbGVmYWN0b3JEYXRhUmVzaWxpZW5j
ZUZsYWcKCiAgICAgICAgKSkgPiAwKQogICAgICAgIHJldHVybiByZXN1bHQ7CgogICAgaWYgKCFz
Y2FsX2ZsYWcpCiAgICB7CgoKCgoKCiAgICAgICAgaWYgKChpY3MtPnB1bHNlX2RhdGFfcHJlc2Vu
dCA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICAgICApKSAmIDEpCiAgICAgICAgewogICAgICAg
ICAgICBwdWxzZV9kYXRhKCYoaWNzLT5wdWwpLCBsZCk7CiAgICAgICAgfQoKCiAgICAgICAgaWYg
KChpY3MtPnRuc19kYXRhX3ByZXNlbnQgPSBmYWFkX2dldDFiaXQobGQKICAgICAgICAgICAgKSkg
JiAxKQogICAgICAgIHsKCgogICAgICAgICAgICBpZiAoKG9iamVjdF90eXBlICE9IDE3KSAmJiAo
b2JqZWN0X3R5cGUgIT0gMTkpCgoKCiAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAg
dG5zX2RhdGEoaWNzLCAmKGljcy0+dG5zKSwgbGQpOwogICAgICAgIH0KCgogICAgICAgIGlmICgo
aWNzLT5nYWluX2NvbnRyb2xfZGF0YV9wcmVzZW50ID0gZmFhZF9nZXQxYml0KGxkCiAgICAgICAg
ICAgICkpICYgMSkKICAgICAgICB7CgoKCiAgICAgICAgICAgIGdhaW5fY29udHJvbF9kYXRhKGxk
LCBpY3MpOwoKICAgICAgICB9CiAgICB9CgoKICAgIGlmICghYWFjU3BlY3RyYWxEYXRhUmVzaWxp
ZW5jZUZsYWcpCiAgICB7CgoKICAgICAgICBpZiAoIChvYmplY3RfdHlwZSA9PSAxNykgfHwgKG9i
amVjdF90eXBlID09IDE5KQoKCgogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBp
ZiAoaWNzLT50bnNfZGF0YV9wcmVzZW50KQogICAgICAgICAgICAgICAgdG5zX2RhdGEoaWNzLCAm
KGljcy0+dG5zKSwgbGQpOwogICAgICAgIH0KCgoKICAgICAgICBpZiAoKHJlc3VsdCA9IHNwZWN0
cmFsX2RhdGEoaWNzLCBsZCwgc3BlY19kYXRhLCBmcmFtZV9sZW4pKSA+IDApCiAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CgogICAgfSBlbHNlIHsKICAgICAgICBpY3MtPmxlbmd0aF9vZl9yZW9y
ZGVyZWRfc3BlY3RyYWxfZGF0YSA9ICh1aW50MTZfdClmYWFkX2dldGJpdHMobGQsIDE0CiAgICAg
ICAgICAgICk7CgogICAgICAgIGljcy0+bGVuZ3RoX29mX2xvbmdlc3RfY29kZXdvcmQgPSAodWlu
dDhfdClmYWFkX2dldGJpdHMobGQsIDYKICAgICAgICAgICAgKTsKICAgICAgICBpZiAoaWNzLT5s
ZW5ndGhfb2ZfbG9uZ2VzdF9jb2Rld29yZCA+PSA0OSkKICAgICAgICAgICAgaWNzLT5sZW5ndGhf
b2ZfbG9uZ2VzdF9jb2Rld29yZCA9IDQ5OwoKCgoKICAgICAgICBpZiAoaWNzLT50bnNfZGF0YV9w
cmVzZW50KQogICAgICAgICAgICB0bnNfZGF0YShpY3MsICYoaWNzLT50bnMpLCBsZCk7CgoKICAg
ICAgICBpZiAoKHJlc3VsdCA9IHJlb3JkZXJlZF9zcGVjdHJhbF9kYXRhKGljcywgbGQsIHNwZWNf
ZGF0YSwgZnJhbWVfbGVuLAogICAgICAgICAgICBhYWNTZWN0aW9uRGF0YVJlc2lsaWVuY2VGbGFn
KSkgPiAwKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICB9CiAg
ICB9CgoKCiAgICBpZiAoaWNzLT5wdWxzZV9kYXRhX3ByZXNlbnQpCiAgICB7CiAgICAgICAgaWYg
KGljcy0+d2luZG93X3NlcXVlbmNlICE9IDB4MikKICAgICAgICAgICAgcHVsc2VfZGVjb2RlKGlj
cywgc3BlY19kYXRhKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiAyOwogICAgfQoK
ICAgIHJldHVybiAwOwp9CgoKc3RhdGljIHZvaWQgc2VjdGlvbl9kYXRhKGljX3N0cmVhbSAqaWNz
LCBiaXRmaWxlICpsZAoKICAgICAgICAgICAgICAgICAgICAgICAgICx1aW50OF90IGFhY1NlY3Rp
b25EYXRhUmVzaWxpZW5jZUZsYWcKCiAgICAgICAgICAgICAgICAgICAgICAgICApCnsKICAgIHVp
bnQ4X3QgZzsKICAgIHVpbnQ4X3Qgc2VjdF9lc2NfdmFsLCBzZWN0X2JpdHM7CgogICAgaWYgKGlj
cy0+d2luZG93X3NlcXVlbmNlID09IDB4MikKICAgICAgICBzZWN0X2JpdHMgPSAzOwogICAgZWxz
ZQogICAgICAgIHNlY3RfYml0cyA9IDU7CiAgICBzZWN0X2VzY192YWwgPSAoMTw8c2VjdF9iaXRz
KSAtIDE7CgogICAgZm9yIChnID0gMDsgZyA8IGljcy0+bnVtX3dpbmRvd19ncm91cHM7IGcrKykK
ICAgIHsKICAgICAgICB1aW50MTZfdCBrID0gMDsKICAgICAgICB1aW50OF90IGkgPSAwOwoKICAg
ICAgICB3aGlsZSAoayA8IGljcy0+bWF4X3NmYikKICAgICAgICB7CiAgICAgICAgICAgIHVpbnQ4
X3Qgc2ZiOwogICAgICAgICAgICB1aW50OF90IHNlY3RfbGVuX2luY3I7CiAgICAgICAgICAgIHVp
bnQxNl90IHNlY3RfbGVuID0gMDsKICAgICAgICAgICAgdWludDhfdCBzZWN0X2NiX2JpdHMgPSA0
OwoKCiAgICAgICAgICAgIGlmIChhYWNTZWN0aW9uRGF0YVJlc2lsaWVuY2VGbGFnKQogICAgICAg
ICAgICAgICAgc2VjdF9jYl9iaXRzID0gNTsKCgogICAgICAgICAgICBpY3MtPnNlY3RfY2JbZ11b
aV0gPSAodWludDhfdClmYWFkX2dldGJpdHMobGQsIHNlY3RfY2JfYml0cwogICAgICAgICAgICAg
ICAgKTsKCgogICAgICAgICAgICBpZiAoIWFhY1NlY3Rpb25EYXRhUmVzaWxpZW5jZUZsYWcgfHwK
ICAgICAgICAgICAgICAgIChpY3MtPnNlY3RfY2JbZ11baV0gPCAxMSkgfHwKICAgICAgICAgICAg
ICAgIChpY3MtPnNlY3RfY2JbZ11baV0gPiAxMSAmJiBpY3MtPnNlY3RfY2JbZ11baV0gPCAxNikp
CiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICB3aGlsZSAoKHNlY3RfbGVuX2luY3IgPSAo
dWludDhfdClmYWFkX2dldGJpdHMobGQsIHNlY3RfYml0cwogICAgICAgICAgICAgICAgICAgICkp
ID09IHNlY3RfZXNjX3ZhbCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBz
ZWN0X2xlbiArPSBzZWN0X2VzY192YWw7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgc2VjdF9sZW5faW5jciA9IDE7CiAgICAgICAgICAgIH0K
CgogICAgICAgICAgICBzZWN0X2xlbiArPSBzZWN0X2xlbl9pbmNyOwoKICAgICAgICAgICAgaWNz
LT5zZWN0X3N0YXJ0W2ddW2ldID0gazsKICAgICAgICAgICAgaWNzLT5zZWN0X2VuZFtnXVtpXSA9
IGsgKyBzZWN0X2xlbjsKCiAgICAgICAgICAgIGZvciAoc2ZiID0gazsgc2ZiIDwgayArIHNlY3Rf
bGVuOyBzZmIrKykKICAgICAgICAgICAgICAgIGljcy0+c2ZiX2NiW2ddW3NmYl0gPSBpY3MtPnNl
Y3RfY2JbZ11baV07CgogICAgICAgICAgICBrICs9IHNlY3RfbGVuOwogICAgICAgICAgICBpKys7
CiAgICAgICAgfQogICAgICAgIGljcy0+bnVtX3NlY1tnXSA9IGk7CiAgICB9Cn0KIyA4MTcgInN5
bnRheC5jIgpzdGF0aWMgdWludDhfdCBkZWNvZGVfc2NhbGVfZmFjdG9ycyhpY19zdHJlYW0gKmlj
cywgYml0ZmlsZSAqbGQpCnsKICAgIHVpbnQ4X3QgZywgc2ZiOwogICAgaW50OF90IHQ7CiAgICBp
bnQ4X3Qgbm9pc2VfcGNtX2ZsYWcgPSAxOwoKICAgIGludDE2X3Qgc2NhbGVfZmFjdG9yID0gaWNz
LT5nbG9iYWxfZ2FpbjsKICAgIGludDE2X3QgaXNfcG9zaXRpb24gPSAwOwogICAgaW50MTZfdCBu
b2lzZV9lbmVyZ3kgPSBpY3MtPmdsb2JhbF9nYWluIC0gOTA7CgogICAgZm9yIChnID0gMDsgZyA8
IGljcy0+bnVtX3dpbmRvd19ncm91cHM7IGcrKykKICAgIHsKICAgICAgICBmb3IgKHNmYiA9IDA7
IHNmYiA8IGljcy0+bWF4X3NmYjsgc2ZiKyspCiAgICAgICAgewogICAgICAgICAgICBzd2l0Y2gg
KGljcy0+c2ZiX2NiW2ddW3NmYl0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgY2FzZSAwOgog
ICAgICAgICAgICAgICAgaWNzLT5zY2FsZV9mYWN0b3JzW2ddW3NmYl0gPSAwOwogICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgIGNhc2UgMTQ6CgoK
ICAgICAgICAgICAgICAgIHQgPSBodWZmbWFuX3NjYWxlX2ZhY3RvcihsZCk7CiAgICAgICAgICAg
ICAgICBpZiAodCA8IDApCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDk7CiAgICAgICAgICAg
ICAgICBpc19wb3NpdGlvbiArPSAodCAtIDYwKTsKICAgICAgICAgICAgICAgIGljcy0+c2NhbGVf
ZmFjdG9yc1tnXVtzZmJdID0gaXNfcG9zaXRpb247CgogICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgIGNhc2UgMTM6CgoKICAgICAgICAgICAgICAgIGlmIChub2lzZV9wY21fZmxhZykK
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBub2lzZV9wY21fZmxhZyA9IDA7
CiAgICAgICAgICAgICAgICAgICAgdCA9IGZhYWRfZ2V0Yml0cyhsZCwgOQogICAgICAgICAgICAg
ICAgICAgICAgICApIC0gMjU2OwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICB0ID0gaHVmZm1hbl9zY2FsZV9mYWN0b3IobGQpOwogICAgICAgICAgICAgICAgICAg
IGlmICh0IDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDk7CiAgICAgICAgICAg
ICAgICAgICAgdCAtPSA2MDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5vaXNl
X2VuZXJneSArPSB0OwogICAgICAgICAgICAgICAgaWNzLT5zY2FsZV9mYWN0b3JzW2ddW3NmYl0g
PSBub2lzZV9lbmVyZ3k7CgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2Ug
MTI6CiAgICAgICAgICAgICAgICByZXR1cm4gMzsKICAgICAgICAgICAgZGVmYXVsdDoKCgogICAg
ICAgICAgICAgICAgdCA9IGh1ZmZtYW5fc2NhbGVfZmFjdG9yKGxkKTsKICAgICAgICAgICAgICAg
IGlmICh0IDwgMCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gOTsKICAgICAgICAgICAgICAg
IHNjYWxlX2ZhY3RvciArPSAodCAtIDYwKTsKICAgICAgICAgICAgICAgIGlmIChzY2FsZV9mYWN0
b3IgPCAwKQogICAgICAgICAgICAgICAgICAgIHJldHVybiA0OwogICAgICAgICAgICAgICAgaWNz
LT5zY2FsZV9mYWN0b3JzW2ddW3NmYl0gPSBzY2FsZV9mYWN0b3I7CgogICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCgpz
dGF0aWMgdWludDhfdCBzY2FsZV9mYWN0b3JfZGF0YShpY19zdHJlYW0gKmljcywgYml0ZmlsZSAq
bGQKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICx1aW50OF90IGFhY1NjYWxlZmFj
dG9yRGF0YVJlc2lsaWVuY2VGbGFnCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
CnsKCiAgICBpZiAoIWFhY1NjYWxlZmFjdG9yRGF0YVJlc2lsaWVuY2VGbGFnKQogICAgewoKICAg
ICAgICByZXR1cm4gZGVjb2RlX3NjYWxlX2ZhY3RvcnMoaWNzLCBsZCk7CgogICAgfSBlbHNlIHsK
IyA5NzUgInN5bnRheC5jIgogICAgfQoKfQoKCnN0YXRpYyB2b2lkIHRuc19kYXRhKGljX3N0cmVh
bSAqaWNzLCB0bnNfaW5mbyAqdG5zLCBiaXRmaWxlICpsZCkKewogICAgdWludDhfdCB3LCBmaWx0
LCBpLCBzdGFydF9jb2VmX2JpdHMsIGNvZWZfYml0czsKICAgIHVpbnQ4X3Qgbl9maWx0X2JpdHMg
PSAyOwogICAgdWludDhfdCBsZW5ndGhfYml0cyA9IDY7CiAgICB1aW50OF90IG9yZGVyX2JpdHMg
PSA1OwoKICAgIGlmIChpY3MtPndpbmRvd19zZXF1ZW5jZSA9PSAweDIpCiAgICB7CiAgICAgICAg
bl9maWx0X2JpdHMgPSAxOwogICAgICAgIGxlbmd0aF9iaXRzID0gNDsKICAgICAgICBvcmRlcl9i
aXRzID0gMzsKICAgIH0KCiAgICBmb3IgKHcgPSAwOyB3IDwgaWNzLT5udW1fd2luZG93czsgdysr
KQogICAgewogICAgICAgIHRucy0+bl9maWx0W3ddID0gKHVpbnQ4X3QpZmFhZF9nZXRiaXRzKGxk
LCBuX2ZpbHRfYml0cwogICAgICAgICAgICApOwoKICAgICAgICBpZiAodG5zLT5uX2ZpbHRbd10p
CiAgICAgICAgewogICAgICAgICAgICBpZiAoKHRucy0+Y29lZl9yZXNbd10gPSBmYWFkX2dldDFi
aXQobGQKICAgICAgICAgICAgICAgICkpICYgMSkKICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgc3RhcnRfY29lZl9iaXRzID0gNDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgIHN0YXJ0X2NvZWZfYml0cyA9IDM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAg
IGZvciAoZmlsdCA9IDA7IGZpbHQgPCB0bnMtPm5fZmlsdFt3XTsgZmlsdCsrKQogICAgICAgIHsK
ICAgICAgICAgICAgdG5zLT5sZW5ndGhbd11bZmlsdF0gPSAodWludDhfdClmYWFkX2dldGJpdHMo
bGQsIGxlbmd0aF9iaXRzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB0bnMtPm9yZGVy
W3ddW2ZpbHRdID0gKHVpbnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCBvcmRlcl9iaXRzCiAgICAgICAg
ICAgICAgICApOwogICAgICAgICAgICBpZiAodG5zLT5vcmRlclt3XVtmaWx0XSkKICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgdG5zLT5kaXJlY3Rpb25bd11bZmlsdF0gPSBmYWFkX2dldDFi
aXQobGQKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgdG5zLT5jb2VmX2Nv
bXByZXNzW3ddW2ZpbHRdID0gZmFhZF9nZXQxYml0KGxkCiAgICAgICAgICAgICAgICAgICAgKTsK
CiAgICAgICAgICAgICAgICBjb2VmX2JpdHMgPSBzdGFydF9jb2VmX2JpdHMgLSB0bnMtPmNvZWZf
Y29tcHJlc3Nbd11bZmlsdF07CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG5zLT5v
cmRlclt3XVtmaWx0XTsgaSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
IHRucy0+Y29lZlt3XVtmaWx0XVtpXSA9ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgY29lZl9i
aXRzCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgIH0KICAgICAgICB9CiAgICB9Cn0KCgoKCgoKCnN0YXRpYyB2b2lkIGx0cF9kYXRhKGljX3N0
cmVhbSAqaWNzLCBsdHBfaW5mbyAqbHRwLCBiaXRmaWxlICpsZCwKICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCBvYmplY3RfdHlwZSkKewogICAgdWludDhfdCBzZmIsIHc7CgoKICAgIGlmIChv
YmplY3RfdHlwZSA9PSAyMykKICAgIHsKICAgICAgICBsdHAtPmxhZ191cGRhdGUgPSAodWludDhf
dClmYWFkX2dldGJpdHMobGQsIDEKICAgICAgICAgICAgKTsKCiAgICAgICAgaWYgKGx0cC0+bGFn
X3VwZGF0ZSkKICAgICAgICB7CiAgICAgICAgICAgIGx0cC0+bGFnID0gKHVpbnQxNl90KWZhYWRf
Z2V0Yml0cyhsZCwgMTAKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfSBlbHNlIHsK
CiAgICAgICAgbHRwLT5sYWcgPSAodWludDE2X3QpZmFhZF9nZXRiaXRzKGxkLCAxMQogICAgICAg
ICAgICApOwoKICAgIH0KCiAgICBsdHAtPmNvZWYgPSAodWludDhfdClmYWFkX2dldGJpdHMobGQs
IDMKICAgICAgICApOwoKICAgIGlmIChpY3MtPndpbmRvd19zZXF1ZW5jZSA9PSAweDIpCiAgICB7
CiAgICAgICAgZm9yICh3ID0gMDsgdyA8IGljcy0+bnVtX3dpbmRvd3M7IHcrKykKICAgICAgICB7
CiAgICAgICAgICAgIGlmICgobHRwLT5zaG9ydF91c2VkW3ddID0gZmFhZF9nZXQxYml0KGxkCiAg
ICAgICAgICAgICAgICApKSAmIDEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGx0cC0+
c2hvcnRfbGFnX3ByZXNlbnRbd10gPSBmYWFkX2dldDFiaXQobGQKICAgICAgICAgICAgICAgICAg
ICApOwogICAgICAgICAgICAgICAgaWYgKGx0cC0+c2hvcnRfbGFnX3ByZXNlbnRbd10pCiAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbHRwLT5zaG9ydF9sYWdbd10gPSAodWlu
dDhfdClmYWFkX2dldGJpdHMobGQsIDQKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAg
bHRwLT5sYXN0X2JhbmQgPSAoaWNzLT5tYXhfc2ZiIDwgNDAgPyBpY3MtPm1heF9zZmIgOiA0MCk7
CgogICAgICAgIGZvciAoc2ZiID0gMDsgc2ZiIDwgbHRwLT5sYXN0X2JhbmQ7IHNmYisrKQogICAg
ICAgIHsKICAgICAgICAgICAgbHRwLT5sb25nX3VzZWRbc2ZiXSA9IGZhYWRfZ2V0MWJpdChsZAog
ICAgICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0KCgoKCnN0YXRpYyB1aW50OF90IHVu
c2lnbmVkX2NiW10gPSB7IDAsIDAsIDAsIDEsIDEsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDAsIDAs
IDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEsIDEsIDEsIDEsIDEs
IDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEKfTsKCgpzdGF0aWMgdWludDhfdCBzcGVjdHJh
bF9kYXRhKGljX3N0cmVhbSAqaWNzLCBiaXRmaWxlICpsZCwgaW50MTZfdCAqc3BlY3RyYWxfZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBmcmFtZV9sZW4pCnsKICAg
IGludDhfdCBpOwogICAgdWludDhfdCBnLCBpbmM7CiAgICBpbnQxNl90ICpzcDsKICAgIHVpbnQx
Nl90IGssIHAgPSAwOwogICAgdWludDhfdCBncm91cHMgPSAwOwogICAgdWludDhfdCBzZWN0X2Ni
OwogICAgdWludDhfdCByZXN1bHQ7CiAgICB1aW50MTZfdCBuc2hvcnQgPSBmcmFtZV9sZW4vODsK
CiAgICBzcCA9IHNwZWN0cmFsX2RhdGE7CiAgICBmb3IgKGkgPSBmcmFtZV9sZW4vMTYtMTsgaSA+
PSAwOyAtLWkpCiAgICB7CiAgICAgICAgKnNwKysgPSAwOyAqc3ArKyA9IDA7ICpzcCsrID0gMDsg
KnNwKysgPSAwOwogICAgICAgICpzcCsrID0gMDsgKnNwKysgPSAwOyAqc3ArKyA9IDA7ICpzcCsr
ID0gMDsKICAgICAgICAqc3ArKyA9IDA7ICpzcCsrID0gMDsgKnNwKysgPSAwOyAqc3ArKyA9IDA7
CiAgICAgICAgKnNwKysgPSAwOyAqc3ArKyA9IDA7ICpzcCsrID0gMDsgKnNwKysgPSAwOwogICAg
fQoKICAgIGZvcihnID0gMDsgZyA8IGljcy0+bnVtX3dpbmRvd19ncm91cHM7IGcrKykKICAgIHsK
ICAgICAgICBwID0gZ3JvdXBzKm5zaG9ydDsKCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGljcy0+
bnVtX3NlY1tnXTsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgc2VjdF9jYiA9IGljcy0+c2Vj
dF9jYltnXVtpXTsKCiAgICAgICAgICAgIGlmICgoc2VjdF9jYiA9PSAwKSB8fAogICAgICAgICAg
ICAgICAgKHNlY3RfY2IgPT0gMTMpIHx8CiAgICAgICAgICAgICAgICAoc2VjdF9jYiA9PSAxNSkg
fHwKICAgICAgICAgICAgICAgIChzZWN0X2NiID09IDE0KSkKICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgcCArPSAoaWNzLT5zZWN0X3NmYl9vZmZzZXRbZ11baWNzLT5zZWN0X2VuZFtnXVtp
XV0gLQogICAgICAgICAgICAgICAgICAgIGljcy0+c2VjdF9zZmJfb2Zmc2V0W2ddW2ljcy0+c2Vj
dF9zdGFydFtnXVtpXV0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZm9y
IChrID0gaWNzLT5zZWN0X3NmYl9vZmZzZXRbZ11baWNzLT5zZWN0X3N0YXJ0W2ddW2ldXTsKICAg
ICAgICAgICAgICAgICAgICAgayA8IGljcy0+c2VjdF9zZmJfb2Zmc2V0W2ddW2ljcy0+c2VjdF9l
bmRbZ11baV1dOyApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgc3AgPSBz
cGVjdHJhbF9kYXRhICsgcDsKCiAgICAgICAgICAgICAgICAgICAgaW5jID0gKHNlY3RfY2IgPCA1
KSA/IDQgOiAyOwoKICAgICAgICAgICAgICAgICAgICBpZiAoKHJlc3VsdCA9IGh1ZmZtYW5fc3Bl
Y3RyYWxfZGF0YShzZWN0X2NiLCBsZCwgc3ApKSA+IDApCiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKHVuc2lnbmVkX2NiW3NlY3Rf
Y2JdKQogICAgICAgICAgICAgICAgICAgICAgICBodWZmbWFuX3NpZ25fYml0cyhsZCwgc3AsIGlu
Yyk7CiAgICAgICAgICAgICAgICAgICAgayArPSBpbmM7CiAgICAgICAgICAgICAgICAgICAgcCAr
PSBpbmM7CiAgICAgICAgICAgICAgICAgICAgaWYgKChzZWN0X2NiID09IDExKSB8fCAoc2VjdF9j
YiA+PSAxNikpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBz
cFswXSA9IGh1ZmZtYW5fZ2V0ZXNjYXBlKGxkLCBzcFswXSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHNwWzFdID0gaHVmZm1hbl9nZXRlc2NhcGUobGQsIHNwWzFdKTsKICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAg
Z3JvdXBzICs9IGljcy0+d2luZG93X2dyb3VwX2xlbmd0aFtnXTsKICAgIH0KCiAgICByZXR1cm4g
MDsKfQoKCnN0YXRpYyB1aW50MTZfdCBleHRlbnNpb25fcGF5bG9hZChiaXRmaWxlICpsZCwgZHJj
X2luZm8gKmRyYywgdWludDE2X3QgY291bnQpCnsKICAgIHVpbnQxNl90IGksIG47CiAgICB1aW50
OF90IGV4dGVuc2lvbl90eXBlID0gZmFhZF9nZXRiaXRzKGxkLCA0CiAgICAgICAgKTsKCiAgICBz
d2l0Y2ggKGV4dGVuc2lvbl90eXBlKQogICAgewogICAgY2FzZSAxMToKICAgICAgICBkcmMtPnBy
ZXNlbnQgPSAxOwogICAgICAgIG4gPSBkeW5hbWljX3JhbmdlX2luZm8obGQsIGRyYyk7CiAgICAg
ICAgcmV0dXJuIG47CiAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWFk
X2dldGJpdHMobGQsIDQKICAgICAgICAgICAgKTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291
bnQtMTsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFh
ZF9nZXRiaXRzKGxkLCA4CiAgICAgICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1
cm4gY291bnQ7CiAgICBkZWZhdWx0OgogICAgICAgIGZhYWRfZ2V0Yml0cyhsZCwgNAogICAgICAg
ICAgICApOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudC0xOyBpKyspCiAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFhZF9nZXRiaXRzKGxkLCA4CiAgICAg
ICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb3VudDsKICAgIH0KfQoKCnN0
YXRpYyB1aW50OF90IGR5bmFtaWNfcmFuZ2VfaW5mbyhiaXRmaWxlICpsZCwgZHJjX2luZm8gKmRy
YykKewogICAgdWludDhfdCBpLCBuID0gMTsKICAgIHVpbnQ4X3QgYmFuZF9pbmNyOwoKICAgIGRy
Yy0+bnVtX2JhbmRzID0gMTsKCiAgICBpZiAoZmFhZF9nZXQxYml0KGxkCiAgICAgICAgKSAmIDEp
CiAgICB7CiAgICAgICAgZHJjLT5wY2VfaW5zdGFuY2VfdGFnID0gKHVpbnQ4X3QpZmFhZF9nZXRi
aXRzKGxkLCA0CiAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWFkX2dldGJpdHMobGQsIDQKICAgICAgICAgICAgKTsKICAgICAgICBuKys7
CiAgICB9CgogICAgZHJjLT5leGNsdWRlZF9jaG5zX3ByZXNlbnQgPSBmYWFkX2dldDFiaXQobGQK
ICAgICAgICApOwogICAgaWYgKGRyYy0+ZXhjbHVkZWRfY2huc19wcmVzZW50ID09IDEpCiAgICB7
CiAgICAgICAgbiArPSBleGNsdWRlZF9jaGFubmVscyhsZCwgZHJjKTsKICAgIH0KCiAgICBpZiAo
ZmFhZF9nZXQxYml0KGxkCiAgICAgICAgKSAmIDEpCiAgICB7CiAgICAgICAgYmFuZF9pbmNyID0g
ZmFhZF9nZXRiaXRzKGxkLCA0CiAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZhYWRfZ2V0Yml0cyhsZCwgNAogICAgICAgICAgICApOwog
ICAgICAgIG4rKzsKICAgICAgICBkcmMtPm51bV9iYW5kcyArPSBiYW5kX2luY3I7CgogICAgICAg
IGZvciAoaSA9IDA7IGkgPCBkcmMtPm51bV9iYW5kczsgaSsrKTsKICAgICAgICB7CiAgICAgICAg
ICAgIGRyYy0+YmFuZF90b3BbaV0gPSAodWludDhfdClmYWFkX2dldGJpdHMobGQsIDgKICAgICAg
ICAgICAgICAgICk7CiAgICAgICAgICAgIG4rKzsKICAgICAgICB9CiAgICB9CgogICAgaWYgKGZh
YWRfZ2V0MWJpdChsZAogICAgICAgICkgJiAxKQogICAgewogICAgICAgIGRyYy0+cHJvZ19yZWZf
bGV2ZWwgPSAodWludDhfdClmYWFkX2dldGJpdHMobGQsIDcKICAgICAgICAgICAgKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWFkX2dldDFiaXQo
bGQKICAgICAgICAgICAgKTsKICAgICAgICBuKys7CiAgICB9CgogICAgZm9yIChpID0gMDsgaSA8
IGRyYy0+bnVtX2JhbmRzOyBpKyspCiAgICB7CiAgICAgICAgZHJjLT5keW5fcm5nX3NnbltpXSA9
IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICAgICApOwogICAgICAgIGRyYy0+ZHluX3JuZ19jdGxb
aV0gPSAodWludDhfdClmYWFkX2dldGJpdHMobGQsIDcKICAgICAgICAgICAgKTsKICAgICAgICBu
Kys7CiAgICB9CgogICAgcmV0dXJuIG47Cn0KCgpzdGF0aWMgdWludDhfdCBleGNsdWRlZF9jaGFu
bmVscyhiaXRmaWxlICpsZCwgZHJjX2luZm8gKmRyYykKewogICAgdWludDhfdCBpLCBuID0gMDsK
ICAgIHVpbnQ4X3QgbnVtX2V4Y2xfY2hhbiA9IDc7CgogICAgZm9yIChpID0gMDsgaSA8IDc7IGkr
KykKICAgIHsKICAgICAgICBkcmMtPmV4Y2x1ZGVfbWFza1tpXSA9IGZhYWRfZ2V0MWJpdChsZAog
ICAgICAgICAgICApOwogICAgfQogICAgbisrOwoKICAgIHdoaWxlICgoZHJjLT5hZGRpdGlvbmFs
X2V4Y2x1ZGVkX2NobnNbbi0xXSA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICkpID09IDEpCiAg
ICB7CiAgICAgICAgZm9yIChpID0gbnVtX2V4Y2xfY2hhbjsgaSA8IG51bV9leGNsX2NoYW4rNzsg
aSsrKQogICAgICAgIHsKICAgICAgICAgICAgZHJjLT5leGNsdWRlX21hc2tbaV0gPSBmYWFkX2dl
dDFiaXQobGQKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIG4rKzsKICAgICAg
ICBudW1fZXhjbF9jaGFuICs9IDc7CiAgICB9CgogICAgcmV0dXJuIG47Cn0KCgoKCnZvaWQgZ2V0
X2FkaWZfaGVhZGVyKGFkaWZfaGVhZGVyICphZGlmLCBiaXRmaWxlICpsZCkKewogICAgdWludDhf
dCBpOwoKICAgICAgICAgICAgICAgICAgICAgICBmYWFkX2dldGJpdHMobGQsIDgKICAgICAgICAp
OwogICAgICAgICAgICAgICAgICAgICAgIGZhYWRfZ2V0Yml0cyhsZCwgOAogICAgICAgICk7CiAg
ICAgICAgICAgICAgICAgICAgICAgZmFhZF9nZXRiaXRzKGxkLCA4CiAgICAgICAgKTsKICAgICAg
ICAgICAgICAgICAgICAgICBmYWFkX2dldGJpdHMobGQsIDgKICAgICAgICApOwogICAgYWRpZi0+
Y29weXJpZ2h0X2lkX3ByZXNlbnQgPSBmYWFkX2dldDFiaXQobGQKICAgICAgICApOwogICAgaWYo
YWRpZi0+Y29weXJpZ2h0X2lkX3ByZXNlbnQpCiAgICB7CiAgICAgICAgZm9yIChpID0gMDsgaSA8
IDcyLzg7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGFkaWYtPmNvcHlyaWdodF9pZFtpXSA9
IChpbnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCA4CiAgICAgICAgICAgICAgICApOwogICAgICAgIH0K
ICAgICAgICBhZGlmLT5jb3B5cmlnaHRfaWRbaV0gPSAwOwogICAgfQogICAgYWRpZi0+b3JpZ2lu
YWxfY29weSA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICk7CiAgICBhZGlmLT5ob21lID0gZmFh
ZF9nZXQxYml0KGxkCiAgICAgICAgKTsKICAgIGFkaWYtPmJpdHN0cmVhbV90eXBlID0gZmFhZF9n
ZXQxYml0KGxkCiAgICAgICAgKTsKICAgIGFkaWYtPmJpdHJhdGUgPSBmYWFkX2dldGJpdHMobGQs
IDIzCiAgICAgICAgKTsKICAgIGFkaWYtPm51bV9wcm9ncmFtX2NvbmZpZ19lbGVtZW50cyA9ICh1
aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgNAogICAgICAgICk7CgogICAgZm9yIChpID0gMDsgaSA8
IGFkaWYtPm51bV9wcm9ncmFtX2NvbmZpZ19lbGVtZW50cyArIDE7IGkrKykKICAgIHsKICAgICAg
ICBpZihhZGlmLT5iaXRzdHJlYW1fdHlwZSA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgYWRp
Zi0+YWRpZl9idWZmZXJfZnVsbG5lc3MgPSBmYWFkX2dldGJpdHMobGQsIDIwCiAgICAgICAgICAg
ICAgICApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGFkaWYtPmFkaWZfYnVmZmVyX2Z1
bGxuZXNzID0gMDsKICAgICAgICB9CgogICAgICAgIHByb2dyYW1fY29uZmlnX2VsZW1lbnQoJmFk
aWYtPnBjZSwgbGQpOwogICAgfQp9CgoKdWludDhfdCBhZHRzX2ZyYW1lKGFkdHNfaGVhZGVyICph
ZHRzLCBiaXRmaWxlICpsZCkKewoKICAgIGlmIChhZHRzX2ZpeGVkX2hlYWRlcihhZHRzLCBsZCkp
CiAgICAgICAgcmV0dXJuIDU7CiAgICBhZHRzX3ZhcmlhYmxlX2hlYWRlcihhZHRzLCBsZCk7CiAg
ICBhZHRzX2Vycm9yX2NoZWNrKGFkdHMsIGxkKTsKCiAgICByZXR1cm4gMDsKfQoKCnN0YXRpYyB1
aW50OF90IGFkdHNfZml4ZWRfaGVhZGVyKGFkdHNfaGVhZGVyICphZHRzLCBiaXRmaWxlICpsZCkK
ewogICAgdWludDE2X3QgaTsKICAgIHVpbnQ4X3Qgc3luY19lcnIgPSAxOwoKCiAgICBmb3IgKGkg
PSAwOyBpIDwgNzY4OyBpKyspCiAgICB7CiAgICAgICAgYWR0cy0+c3luY3dvcmQgPSAodWludDE2
X3QpZmFhZF9zaG93Yml0cyhsZCwgMTIpOwogICAgICAgIGlmIChhZHRzLT5zeW5jd29yZCAhPSAw
eEZGRikKICAgICAgICB7CiAgICAgICAgICAgIGZhYWRfZ2V0Yml0cyhsZCwgOAogICAgICAgICAg
ICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzeW5jX2VyciA9IDA7CiAgICAg
ICAgICAgIGZhYWRfZ2V0Yml0cyhsZCwgMTIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAg
IGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIGlmIChzeW5jX2VycikKICAgICAgICByZXR1cm4g
NTsKCiAgICBhZHRzLT5pZCA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICk7CiAgICBhZHRzLT5s
YXllciA9ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgMgogICAgICAgICk7CiAgICBhZHRzLT5w
cm90ZWN0aW9uX2Fic2VudCA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICk7CiAgICBhZHRzLT5w
cm9maWxlID0gKHVpbnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCAyCiAgICAgICAgKTsKICAgIGFkdHMt
PnNmX2luZGV4ID0gKHVpbnQ4X3QpZmFhZF9nZXRiaXRzKGxkLCA0CiAgICAgICAgKTsKICAgIGFk
dHMtPnByaXZhdGVfYml0ID0gZmFhZF9nZXQxYml0KGxkCiAgICAgICAgKTsKICAgIGFkdHMtPmNo
YW5uZWxfY29uZmlndXJhdGlvbiA9ICh1aW50OF90KWZhYWRfZ2V0Yml0cyhsZCwgMwogICAgICAg
ICk7CiAgICBhZHRzLT5vcmlnaW5hbCA9IGZhYWRfZ2V0MWJpdChsZAogICAgICAgICk7CiAgICBh
ZHRzLT5ob21lID0gZmFhZF9nZXQxYml0KGxkCiAgICAgICAgKTsKICAgIGlmIChhZHRzLT5pZCA9
PSAwKQogICAgewogICAgICAgIGFkdHMtPmVtcGhhc2lzID0gKHVpbnQ4X3QpZmFhZF9nZXRiaXRz
KGxkLCAyCiAgICAgICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCgpzdGF0aWMgdm9p
ZCBhZHRzX3ZhcmlhYmxlX2hlYWRlcihhZHRzX2hlYWRlciAqYWR0cywgYml0ZmlsZSAqbGQpCnsK
ICAgIGFkdHMtPmNvcHlyaWdodF9pZGVudGlmaWNhdGlvbl9iaXQgPSBmYWFkX2dldDFiaXQobGQK
ICAgICAgICApOwogICAgYWR0cy0+Y29weXJpZ2h0X2lkZW50aWZpY2F0aW9uX3N0YXJ0ID0gZmFh
ZF9nZXQxYml0KGxkCiAgICAgICAgKTsKICAgIGFkdHMtPmFhY19mcmFtZV9sZW5ndGggPSAodWlu
dDE2X3QpZmFhZF9nZXRiaXRzKGxkLCAxMwogICAgICAgICk7CiAgICBhZHRzLT5hZHRzX2J1ZmZl
cl9mdWxsbmVzcyA9ICh1aW50MTZfdClmYWFkX2dldGJpdHMobGQsIDExCiAgICAgICAgKTsKICAg
IGFkdHMtPm5vX3Jhd19kYXRhX2Jsb2Nrc19pbl9mcmFtZSA9ICh1aW50OF90KWZhYWRfZ2V0Yml0
cyhsZCwgMgogICAgICAgICk7Cn0KCgpzdGF0aWMgdm9pZCBhZHRzX2Vycm9yX2NoZWNrKGFkdHNf
aGVhZGVyICphZHRzLCBiaXRmaWxlICpsZCkKewogICAgaWYgKGFkdHMtPnByb3RlY3Rpb25fYWJz
ZW50ID09IDApCiAgICB7CiAgICAgICAgYWR0cy0+Y3JjX2NoZWNrID0gKHVpbnQxNl90KWZhYWRf
Z2V0Yml0cyhsZCwgMTYKICAgICAgICAgICAgKTsKICAgIH0KfQo=


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

end of thread, other threads:[~2003-01-28  7:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-31  4:07 optimization/8412: Code generation problem with -march=k6 paolo
  -- strict thread matches above, loose matches on Subject: below --
2003-01-28  7:06 Jim Bray
2002-10-31  2:56 alexander.puchmayr

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