public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* optimization/4413: GCC 3.0.2 prerelease internal error when compiling linux-2.4.10
@ 2001-09-27 13:56 thomr9am
  0 siblings, 0 replies; 2+ messages in thread
From: thomr9am @ 2001-09-27 13:56 UTC (permalink / raw)
  To: gcc-gnats

>Number:         4413
>Category:       optimization
>Synopsis:       GCC 3.0.2 prerelease internal error when compiling linux-2.4.10
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Sep 27 13:56:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     thomr9am@ss1000.ms.mff.cuni.cz
>Release:        GNU C version 3.0.2 20010927 (prerelease) (i586-pc-linux-gnu)
>Organization:
>Environment:
SuSE Linux 7.2, glibc 2.2.2, anything else?
>Description:
GCC fails with internal compiler error when compiling
drivers/usb/usb-uhci.c from linux-2.4.10.

After I replaced `-O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common'
with `-O0', everything went well.

Preprocessed file is attached.

Here is the output from gcc:

gcc: Warning: -pipe ignored because -save-temps specified
Reading specs from /usr/src/rudo/gcc-CVS/prefix/lib/gcc-lib/i586-pc-linux-gnu/3.0.2/specs
Configured with: ../gcc/configure --prefix=/usr/src/rudo/gcc-CVS/prefix --enable-shared --enable-static --enable-threads --with-cpu=k6
Thread model: posix
gcc version 3.0.2 20010927 (prerelease)
 /usr/src/rudo/gcc-CVS/prefix/lib/gcc-lib/i586-pc-linux-gnu/3.0.2/cpp0 -lang-c -v -I/usr/src/rudo/linux-2.4.10/include -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=2 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -Wall -Wstrict-prototypes -Wno-trigraphs -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__k6 -D__k6__ -D__tune_k6__ -D__KERNEL__ -DMODULE -DMODVERSIONS -include /usr/src/rudo/linux-2.4.10/include/linux/modversions.h usb-uhci.c usb-uhci.i
GNU CPP version 3.0.2 20010927 (prerelease) (cpplib) (i386 Linux/ELF)
ignoring nonexistent directory "/usr/src/rudo/gcc-CVS/prefix/i586-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/src/rudo/linux-2.4.10/include
 /usr/local/include
 /usr/src/rudo/gcc-CVS/prefix/lib/gcc-lib/i586-pc-linux-gnu/3.0.2/include
 /usr/include
End of search list.
 /usr/src/rudo/gcc-CVS/prefix/lib/gcc-lib/i586-pc-linux-gnu/3.0.2/cc1 -fpreprocessed usb-uhci.i -quiet -dumpbase usb-uhci.c -mpreferred-stack-boundary=2 -march=k6 -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -version -fomit-frame-pointer -fno-strict-aliasing -fno-common -o usb-uhci.s
GNU CPP version 3.0.2 20010927 (prerelease) (cpplib) (i386 Linux/ELF)
GNU C version 3.0.2 20010927 (prerelease) (i586-pc-linux-gnu)
        compiled by GNU C version 3.0.2 20010927 (prerelease).
usb-uhci.c: In function `process_urb':
usb-uhci.c:2719: Unrecognizable insn:
(insn 653 588 470 (parallel[
            (set (reg:SI 3 ebx [77])
                (const_int 0 [0x0]))
            (clobber (reg:CC 17 flags))
        ] ) -1 (nil)
    (expr_list:REG_UNUSED (reg:CC 17 flags)
        (nil)))
usb-uhci.c:2719: Internal compiler error in insn_default_length, at insn-attrtab.c:223
>How-To-Repeat:
Try to compile it yourself. It's in the vanilla linux version
2.4.10.
>Fix:

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

IyAxICJ1c2ItdWhjaS5jIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMQoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2RzZXR2ZXIuaCIgMQojIDQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy81M2M3MDAtbWVtLnZlciIgMQojIDUgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy81M2M3
MDAudmVyIiAxCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9tb2R1bGVzLzgzOTAudmVyIiAxCiMgNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL0RBQzk2MC52ZXIiIDEKIyA4ICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvRGl2YXNfbW9kLnZl
ciIgMQojIDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdWxlcy9hYzk3LnZlciIgMQojIDEwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWM5N19jb2RlYy52ZXIiIDEKIyAxMSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2FjaS52ZXIiIDEK
IyAxMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1
bGVzL2FjcGlfa3N5bXMudmVyIiAxCiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9hZDE4NDgudmVyIiAxCiMgMTQgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9hZGIudmVyIiAxCiMg
MTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl
cy9hZl9heDI1LnZlciIgMQojIDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvYWZfaXB4LnZlciIgMQojIDE3ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWZfbmV0bGluay52ZXIiIDEK
IyAxOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1
bGVzL2FmX3NweC52ZXIiIDEKIyAxOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2R1bGVzL2FncGdhcnRfYmUudmVyIiAxCiMgMjAgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9haXJvLnZlciIgMQoj
IDIxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvYWlyb25ldDQ1MDBfY2FyZC52ZXIiIDEKIyAyMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2Fpcm9uZXQ0NTAwX2NvcmUudmVyIiAxCiMg
MjMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl
cy9hbWQ3OTMwLnZlciIgMQojIDI0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvYXJjbmV0LnZlciIgMQojIDI1ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYXJsYW4udmVyIiAxCiMgMjYg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9h
dG1fbWlzYy52ZXIiIDEKIyAyNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9tb2R1bGVzL2F0eWZiX2Jhc2UudmVyIiAxCiMgMjggIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9hdWRpby52ZXIiIDEKIyAy
OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5o
IiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVz
L2F1ZGlvX3N5bXMudmVyIiAxCiMgMzAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvbW9kdWxlcy9hdXRvX2lycS52ZXIiIDEKIyAzMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2IxLnZlciIgMQojIDMy
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
YjFkbWEudmVyIiAxCiMgMzMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvbW9kdWxlcy9iMXBjbWNpYS52ZXIiIDEKIyAzNCAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2Jhc2UudmVyIiAxCiMgMzUgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9iYmNf
aTJjLnZlciIgMQojIDM2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L21vZHVsZXMvYmxrcGcudmVyIiAxCiMgMzcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9ibV9vc2wudmVyIiAxCiMgMzggIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9ib290bGRy
LnZlciIgMQojIDM5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvYnR0di1pZi52ZXIiIDEKIyA0MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2J1c21vdXNlLnZlciIgMQojIDQxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY2FwaWZz
LnZlciIgMQojIDQyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvY2FwaXV0aWwudmVyIiAxCiMgNDMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9jYl9lbmFibGVyLnZlciIgMQojIDQ0ICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY2Ry
b20udmVyIiAxCiMgNDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbW9kdWxlcy9jaGVjay52ZXIiIDEKIyA0NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2NoaXByZWcudmVyIiAxCiMgNDcgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9jbWRsaW5l
LnZlciIgMQojIDQ4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvY29tMjAwMjAudmVyIiAxCiMgNDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9jb21tb24udmVyIiAxCiMgNTAgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9jb214LnZl
ciIgMQojIDUxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvY29uZmlnLnZlciIgMQojIDUyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY29uc29sZS52ZXIiIDEKIyA1MyAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2NvbnRleHQudmVy
IiAxCiMgNTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdWxlcy9jcGlhLnZlciIgMQojIDU1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY3B1aWQudmVyIiAxCiMgNTYgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9jcy52ZXIiIDEKIyA1NyAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2N5
YmVyMjAwMGZiLnZlciIgMQojIDU4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvY3ljeF9kcnYudmVyIiAxCiMgNTkgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9kYnJpLnZlciIgMQojIDYw
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
ZGNhY2hlLnZlciIgMQojIDYxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvZGRwLnZlciIgMQojIDYyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZGVjX2FuZF9sb2NrLnZlciIgMQojIDYz
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
ZG1hc291bmRfY29yZS52ZXIiIDEKIyA2NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2RzLnZlciIgMQojIDY1ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZWljb25fbW9kLnZlciIgMQoj
IDY2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvZXhlY19kb21haW4udmVyIiAxCiMgNjcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYXRmc19zeW1zLnZlciIgMQojIDY4ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmJjbWFwLnZl
ciIgMQojIDY5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvZmJjb24tYWZiLnZlciIgMQojIDcwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmJjb24tY2ZiMTYudmVyIiAxCiMgNzEgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNv
bi1jZmIyLnZlciIgMQojIDcyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvZmJjb24tY2ZiMjQudmVyIiAxCiMgNzMgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi1jZmIzMi52ZXIi
IDEKIyA3NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9t
b2R1bGVzL2ZiY29uLWNmYjQudmVyIiAxCiMgNzUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi1jZmI4LnZlciIgMQojIDc2ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmJjb24t
aGdhLnZlciIgMQojIDc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L21vZHVsZXMvZmJjb24taWxibS52ZXIiIDEKIyA3OCAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29uLWlwbGFuMnAyLnZlciIg
MQojIDc5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvZmJjb24taXBsYW4ycDQudmVyIiAxCiMgODAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi1pcGxhbjJwOC52ZXIiIDEKIyA4
MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5o
IiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVz
L2ZiY29uLW1hYy52ZXIiIDEKIyA4MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29uLW1mYi52ZXIiIDEKIyA4MyAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29uLXZnYS1wbGFu
ZXMudmVyIiAxCiMgODQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbW9kdWxlcy9mYmNvbi12Z2EudmVyIiAxCiMgODUgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi52ZXIiIDEKIyA4NiAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg
MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZibWVt
LnZlciIgMQojIDg3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvZmJtb24udmVyIiAxCiMgODggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mY19zeW1zLnZlciIgMQojIDg5ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmlsZXN5c3Rl
bXMudmVyIiAxCiMgOTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbW9kdWxlcy9mc20udmVyIiAxCiMgOTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mdGFwZV9zeW1zLnZlciIgMQojIDkyICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZ2FtZXBv
cnQudmVyIiAxCiMgOTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbW9kdWxlcy9nZW5oZC52ZXIiIDEKIyA5NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2hkbGMudmVyIiAxCiMgOTUgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9oZGxjZHJ2LnZl
ciIgMQojIDk2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvaGVybWVzLnZlciIgMQojIDk3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJjLWFsZ28tYml0LnZlciIgMQojIDk4ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJjLWFs
Z28tcGNmLnZlciIgMQojIDk5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvaTJjLWNvcmUudmVyIiAxCiMgMTAwICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJjLW9sZC52ZXIiIDEKIyAx
MDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl
cy9pMm9fYmxvY2sudmVyIiAxCiMgMTAyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJvX2NvbmZpZy52ZXIiIDEKIyAxMDMgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9pMm9fY29yZS52
ZXIiIDEKIyAxMDQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9pMm9fbGFuLnZlciIgMQojIDEwNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kyb19wY2kudmVyIiAxCiMgMTA2ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJvX3By
b2MudmVyIiAxCiMgMTA3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L21vZHVsZXMvaTJvX3Njc2kudmVyIiAxCiMgMTA4ICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTM4Nl9rc3ltcy52ZXIiIDEKIyAx
MDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl
cy9pYm0udmVyIiAxCiMgMTEwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvaWRlLWZlYXR1cmVzLnZlciIgMQojIDExMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2lkZS52ZXIiIDEKIyAx
MTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl
cy9pZHQ3NzEwNS52ZXIiIDEKIyAxMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pZWVlMTM5NF9zeW1zLnZlciIgMQojIDExNCAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2luaXQudmVy
IiAxCiMgMTE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvaW5wdXQudmVyIiAxCiMgMTE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaXBfY29ubnRyYWNrX2Z0cC52ZXIiIDEKIyAxMTcg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9p
cF9jb25udHJhY2tfc3RhbmRhbG9uZS52ZXIiIDEKIyAxMTggIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9pcF9md19jb21wYXQudmVyIiAxCiMg
MTE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvaXBfZ3JlLnZlciIgMQojIDEyMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2R1bGVzL2lwX25hdF9zdGFuZGFsb25lLnZlciIgMQojIDEyMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg
MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2lwX3Rh
Ymxlcy52ZXIiIDEKIyAxMjIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvbW9kdWxlcy9pcGNvbW1vbi52ZXIiIDEKIyAxMjMgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9pcGlwLnZlciIgMQojIDEyNCAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ly
cG9ydC52ZXIiIDEKIyAxMjUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvbW9kdWxlcy9pcnN5bXMudmVyIiAxCiMgMTI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaXNhcG5wLnZlciIgMQojIDEyNyAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2lz
ZG5fY29tbW9uLnZlciIgMQojIDEyOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2R1bGVzL2lzZW5zZS52ZXIiIDEKIyAxMjkgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9peGoudmVyIiAxCiMgMTMw
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
a2NhcGkudmVyIiAxCiMgMTMxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMva2V5Ym9hcmQudmVyIiAxCiMgMTMyICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMva21vZC52ZXIiIDEKIyAxMzMg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9r
c3ltcy52ZXIiIDEKIyAxMzQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvbW9kdWxlcy9sYXBiX2lmYWNlLnZlciIgMQojIDEzNSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2xsX3J3X2Jsay52ZXIiIDEK
IyAxMzYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9k
dWxlcy9sbGNfbWFjaW5pdC52ZXIiIDEKIyAxMzcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9sb2NrZF9zeW1zLnZlciIgMQojIDEzOCAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg
MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2xvb3Au
dmVyIiAxCiMgMTM5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvbWFjX2hpZC52ZXIiIDEKIyAxNDAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tYWNoNjRfYWNjZWwudmVyIiAxCiMgMTQx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
bWF0cm94ZmJfREFDMTA2NC52ZXIiIDEKIyAxNDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tYXRyb3hmYl9UaTMwMjYudmVyIiAxCiMgMTQz
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
bWF0cm94ZmJfYWNjZWwudmVyIiAxCiMgMTQ0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbWF0cm94ZmJfYmFzZS52ZXIiIDEKIyAxNDUgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tYXRy
b3hmYl9taXNjLnZlciIgMQojIDE0NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2R1bGVzL21jYS52ZXIiIDEKIyAxNDcgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tZC52ZXIiIDEKIyAxNDggIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9taWNy
b2NvZGUudmVyIiAxCiMgMTQ5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvbWlkaV9zeW1zLnZlciIgMQojIDE1MCAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL21pcm9wY20yMC1yZHMtY29y
ZS52ZXIiIDEKIyAxNTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbW9kdWxlcy9taXNjLnZlciIgMQojIDE1MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL21vZGVkYi52ZXIiIDEKIyAxNTMgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tcHRiYXNl
LnZlciIgMQojIDE1NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9tb2R1bGVzL21wdGN0bC52ZXIiIDEKIyAxNTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tcHRsYW4udmVyIiAxCiMgMTU2ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbXB0c2Nz
aWgudmVyIiAxCiMgMTU3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L21vZHVsZXMvbXB1NDAxLnZlciIgMQojIDE1OCAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL21zZG9zZnNfc3ltcy52ZXIiIDEKIyAx
NTkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl
cy9tc25kLnZlciIgMQojIDE2MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9tb2R1bGVzL21zci52ZXIiIDEKIyAxNjEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tdGRjb3JlLnZlciIgMQojIDE2MiAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL210
ZHBhcnQudmVyIiAxCiMgMTYzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvbXRyci52ZXIiIDEKIyAxNjQgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9uYW5kLnZlciIgMQojIDE2NSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg
MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL25hbmRf
ZWNjLnZlciIgMQojIDE2NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9tb2R1bGVzL25ldF9pbml0LnZlciIgMQojIDE2NyAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL25ldGZpbHRlci52ZXIiIDEKIyAx
NjggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl
cy9uZXRzeW1zLnZlciIgMQojIDE2OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2R1bGVzL25ld3BvcnQudmVyIiAxCiMgMTcwICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbmxzX2Jhc2UudmVyIiAx
CiMgMTcxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvbmxzX2NwODUwLnZlciIgMQojIDE3MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL25sc19jcDg1Mi52ZXIiIDEKIyAxNzMgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9ubHNfaXNv
ODg1OS0xLnZlciIgMQojIDE3NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9tb2R1bGVzL25sc19pc284ODU5LTIudmVyIiAxCiMgMTc1ICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbmxzX3V0ZjgudmVy
IiAxCiMgMTc2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvbm0yNTZfYXVkaW8udmVyIiAxCiMgMTc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbnVidXNfc3ltcy52ZXIiIDEKIyAxNzgg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9v
cGVuLnZlciIgMQojIDE3OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9tb2R1bGVzL29wbDMudmVyIiAxCiMgMTgwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvb3Jpbm9jby52ZXIiIDEKIyAxODEgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9wODAy
Mi52ZXIiIDEKIyAxODIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbW9kdWxlcy9wYXJwb3J0X3BjLnZlciIgMQojIDE4MyAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3BjaS52ZXIiIDEKIyAxODQgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9wY2lf
c29ja2V0LnZlciIgMQojIDE4NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9tb2R1bGVzL3Bob25lZGV2LnZlciIgMQojIDE4NiAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3BtLnZlciIgMQojIDE4NyAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3Bw
cF9hc3luYy52ZXIiIDEKIyAxODggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy9wcHBfZ2VuZXJpYy52ZXIiIDEKIyAxODkgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9wcHBveC52ZXIiIDEK
IyAxOTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9k
dWxlcy9wcmludGsudmVyIiAxCiMgMTkxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcHJvYy52ZXIiIDEKIyAxOTIgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9wcm9maWxlLnZlciIgMQoj
IDE5MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1
bGVzL3BzbmFwLnZlciIgMQojIDE5NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2R1bGVzL3B0eS52ZXIiIDEKIyAxOTUgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9wd2MtdW5jb21wcmVzcy52ZXIi
IDEKIyAxOTYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdWxlcy9yYW5kb20udmVyIiAxCiMgMTk3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcmF3LnZlciIgMQojIDE5OCAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3JheV9jcy52ZXIiIDEK
IyAxOTkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9k
dWxlcy9yZWRib290LnZlciIgMQojIDIwMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3Jlc291cmNlcy52ZXIiIDEKIyAyMDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9yb290LnZlciIg
MQojIDIwMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9t
b2R1bGVzL3J0Yy52ZXIiIDEKIyAyMDMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvbW9kdWxlcy9yd3NlbS1zcGlubG9jay52ZXIiIDEKIyAyMDQgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9yd3NlbS52
ZXIiIDEKIyAyMDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9zYl9jb21tb24udmVyIiAxCiMgMjA2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc2NzaV9zeW1zLnZlciIgMQojIDIwNyAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3Nk
bGFkcnYudmVyIiAxCiMgMjA4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvc2VsZWN0aW9uLnZlciIgMQojIDIwOSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NlcXVlbmNlcl9zeW1zLnZl
ciIgMQojIDIxMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9tb2R1bGVzL3NlcmlhbC52ZXIiIDEKIyAyMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9zZXJpby52ZXIiIDEKIyAyMTIgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9zZ2ljb25zLnZl
ciIgMQojIDIxMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9tb2R1bGVzL3NobWVtLnZlciIgMQojIDIxNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NobWlxLnZlciIgMQojIDIxNSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NpZ25hbC52ZXIi
IDEKIyAyMTYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdWxlcy9zbGhjLnZlciIgMQojIDIxNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NvbnlwaS52ZXIiIDEKIyAyMTggIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9zb3VuZF9jb3JlLnZl
ciIgMQojIDIxOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9tb2R1bGVzL3NvdW5kX3N5bXMudmVyIiAxCiMgMjIwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc3UudmVyIiAxCiMgMjIxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc3VuaS52ZXIi
IDEKIyAyMjIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdWxlcy9zdW5ycGNfc3ltcy52ZXIiIDEKIyAyMjMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9zeW1zLnZlciIgMQojIDIyNCAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3N5bmNwcHAu
dmVyIiAxCiMgMjI1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvc3lzLnZlciIgMQojIDIyNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3N5c3JxLnZlciIgMQojIDIyNyAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3RjLnZlciIgMQoj
IDIyOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1
bGVzL3RtczM4MHRyLnZlciIgMQojIDIyOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3R0eV9pby52ZXIiIDEKIyAyMzAgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy90dHlfaW9jdGwudmVy
IiAxCiMgMjMxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvdVBEOTg0MDIudmVyIiAxCiMgMjMyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvdWFydDQwMS52ZXIiIDEKIyAyMzMgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy91c2IudmVy
IiAxCiMgMjM0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvdXNic2VyaWFsLnZlciIgMQojIDIzNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3VzZW1hLnZlciIgMQojIDIzNiAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3V0aWwudmVy
IiAxCiMgMjM3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvdmZhdGZzX3N5bXMudmVyIiAxCiMgMjM4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvdmlhLXBtdS52ZXIiIDEKIyAyMzkgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy92aWRl
b2Rldi52ZXIiIDEKIyAyNDAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvbW9kdWxlcy93YW5tYWluLnZlciIgMQojIDI0MSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3hvci52ZXIiIDEKIyAyNDIgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy95ZW50
YS52ZXIiIDEKIyAyNDMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbW9kdWxlcy96ODUyMzAudmVyIiAxCiMgMjQ0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvemZ0YXBlX3N5bXMudmVyIiAxCiMgMjQ1
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
em9ycm8udmVyIiAxCiMgMjQ2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAyICJ1c2ItdWhjaS5jIiAyCiMgMjIgInVzYi11aGNpLmMi
CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIg
MQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvYXV0b2Nv
bmYuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29u
ZmlnLmgiIDIKIyAyMyAidXNiLXVoY2kuYyIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDEKIyAxMCAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCiMgNTIgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIKICB0eXBlZGVmIHN0
cnVjdCB7IH0gc3BpbmxvY2tfdDsKIyAxMTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvc3BpbmxvY2suaCIKICB0eXBlZGVmIHN0cnVjdCB7IH0gcndsb2NrX3Q7CiMg
MTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDIK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQoK
CgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wcmVmZXRj
aC5oIiAxCiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcHJl
ZmV0Y2guaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wcm9j
ZXNzb3IuaCIgMQojIDEwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9w
cm9jZXNzb3IuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS92
bTg2LmgiIDEKIyA2OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdm04
Ni5oIgpzdHJ1Y3Qgdm04Nl9yZWdzIHsKCgoKICAgICAgICBsb25nIGVieDsKICAgICAgICBsb25n
IGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAgICBsb25nIGVk
aTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBsb25nIF9fbnVs
bF9kczsKICAgICAgICBsb25nIF9fbnVsbF9lczsKICAgICAgICBsb25nIF9fbnVsbF9mczsKICAg
ICAgICBsb25nIF9fbnVsbF9nczsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAgICAgIGxvbmcg
ZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICBsb25nIGVmbGFn
czsKICAgICAgICBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CgoK
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwp9OwoKc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IHsKICAg
ICAgICB1bnNpZ25lZCBsb25nIF9fbWFwWzhdOwp9OwoKc3RydWN0IHZtODZfc3RydWN0IHsKICAg
ICAgICBzdHJ1Y3Qgdm04Nl9yZWdzIHJlZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9y
ZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7Cn07
CgoKCgoKCnN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBmb3JjZV9yZXR1cm5fZm9yX3BpYzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdm04NmRiZ19h
Y3RpdmU6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtODZkYmdfVEZwZW5kaWc6MTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHVudXNlZDoyODsKICAgICAgICB1bnNpZ25lZCBsb25nIGlzX3ZtODZw
dXM6MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZtODZkYmdfaW50eHh0YWJbMzJdOwp9OwoKc3Ry
dWN0IHZtODZwbHVzX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZfcmVncyByZWdzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0
bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJldmVj
dG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0
cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVj
dCB2bTg2cGx1czsKfTsKIyAxNDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
YXNtL3ZtODYuaCIKc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgewoKCgogICAgICAgIGxvbmcgZWJ4
OwogICAgICAgIGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4OwogICAgICAgIGxvbmcgZXNpOwog
ICAgICAgIGxvbmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAgICAgIGxvbmcgZWF4OwogICAg
ICAgIGxvbmcgX19udWxsX2RzOwogICAgICAgIGxvbmcgX19udWxsX2VzOwogICAgICAgIGxvbmcg
b3JpZ19lYXg7CiAgICAgICAgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9f
Y3NoOwogICAgICAgIGxvbmcgZWZsYWdzOwogICAgICAgIGxvbmcgZXNwOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNzLCBfX3NzaDsKCgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7Cn07CgpzdHJ1Y3Qg
a2VybmVsX3ZtODZfc3RydWN0IHsKICAgICAgICBzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyByZWdz
OwojIDE4NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdm04Ni5oIgog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5f
Yml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJl
dmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVk
X3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19pbmZvX3N0
cnVjdCB2bTg2cGx1czsKICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVnczMyOwojIDIwMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdm04Ni5oIgp9OwoKdm9pZCBoYW5k
bGVfdm04Nl9mYXVsdChzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyAqLCBsb25nKTsKaW50IGhhbmRs
ZV92bTg2X3RyYXAoc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwgbG9uZywgaW50KTsKIyAxMSAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAxCgoK
CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnY29udGV4dC5o
IiAxCiMgMTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NpZ2NvbnRl
eHQuaCIKc3RydWN0IF9mcHJlZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNhbmRb
NF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7Cn07CgpzdHJ1Y3QgX2ZweHJlZyB7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNhbmRbNF07CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZXhwb25lbnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFkZGluZ1szXTsKfTsKCnN0
cnVjdCBfeG1tcmVnIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGVsZW1lbnRbNF07Cn07CgpzdHJ1
Y3QgX2Zwc3RhdGUgewoKICAgICAgICB1bnNpZ25lZCBsb25nIGN3OwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc3c7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0YWc7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBpcG9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNzc2VsOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZGF0YW9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFzZWw7CiAgICAgICAgc3RydWN0
IF9mcHJlZyBfc3RbOF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IG1hZ2ljOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBfZnhzcl9lbnZbNl07
CiAgICAgICAgdW5zaWduZWQgbG9uZyBteGNzcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlc2Vy
dmVkOwogICAgICAgIHN0cnVjdCBfZnB4cmVnIF9meHNyX3N0WzhdOwogICAgICAgIHN0cnVjdCBf
eG1tcmVnIF94bW1bOF07CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYWRkaW5nWzU2XTsKfTsKCgoK
c3RydWN0IHNpZ2NvbnRleHQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMs
IF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzaTsKICAgICAgICB1bnNpZ25lZCBs
b25nIGVicDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBsb25n
IGVieDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVkeDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVj
eDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVheDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRyYXBu
bzsKICAgICAgICB1bnNpZ25lZCBsb25nIGVycjsKICAgICAgICB1bnNpZ25lZCBsb25nIGVpcDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBl
ZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3BfYXRfc2lnbmFsOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNzLCBfX3NzaDsKICAgICAgICBzdHJ1Y3QgX2Zwc3RhdGUgKiBmcHN0YXRlOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIGNyMjsK
fTsKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5o
IiAyCgppbnQgcmVzdG9yZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICpi
dWYpOwppbnQgc2F2ZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICogYnVm
KTsKCgoKCgpzdHJ1Y3QgaW5mbyB7CiAgICAgICAgbG9uZyBfX19vcmlnX2VpcDsKICAgICAgICBs
b25nIF9fX2VieDsKICAgICAgICBsb25nIF9fX2VjeDsKICAgICAgICBsb25nIF9fX2VkeDsKICAg
ICAgICBsb25nIF9fX2VzaTsKICAgICAgICBsb25nIF9fX2VkaTsKICAgICAgICBsb25nIF9fX2Vi
cDsKICAgICAgICBsb25nIF9fX2VheDsKICAgICAgICBsb25nIF9fX2RzOwogICAgICAgIGxvbmcg
X19fZXM7CiAgICAgICAgbG9uZyBfX19vcmlnX2VheDsKICAgICAgICBsb25nIF9fX2VpcDsKICAg
ICAgICBsb25nIF9fX2NzOwogICAgICAgIGxvbmcgX19fZWZsYWdzOwogICAgICAgIGxvbmcgX19f
ZXNwOwogICAgICAgIGxvbmcgX19fc3M7CiAgICAgICAgbG9uZyBfX192bTg2X2VzOwogICAgICAg
IGxvbmcgX19fdm04Nl9kczsKICAgICAgICBsb25nIF9fX3ZtODZfZnM7CiAgICAgICAgbG9uZyBf
X192bTg2X2dzOwp9OwojIDEyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz
bS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
YXNtL3NlZ21lbnQuaCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvYXNtL3BhZ2UuaCIgMQojIDEyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2FzbS9wYWdlLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz
bS9wYWdlLmgiIDIKIyA0NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20v
cGFnZS5oIgp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcHRlX2xvdzsgfSBwdGVfdDsK
dHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHBtZDsgfSBwbWRfdDsKdHlwZWRlZiBzdHJ1
Y3QgeyB1bnNpZ25lZCBsb25nIHBnZDsgfSBwZ2RfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsgdW5z
aWduZWQgbG9uZyBwZ3Byb3Q7IH0gcGdwcm90X3Q7CiMgMTA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2FzbS9wYWdlLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBnZXRfb3Jk
ZXIodW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgaW50IG9yZGVyOwoKICAgICAgICBzaXpl
ID0gKHNpemUtMSkgPj4gKDEyIC0xKTsKICAgICAgICBvcmRlciA9IC0xOwogICAgICAgIGRvIHsK
ICAgICAgICAgICAgICAgIHNpemUgPj49IDE7CiAgICAgICAgICAgICAgICBvcmRlcisrOwogICAg
ICAgIH0gd2hpbGUgKHNpemUpOwogICAgICAgIHJldHVybiBvcmRlcjsKfQojIDE0ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEKCgoKdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCB1bW9kZV90OwoKCgoKCgp0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4
Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191ODsKCnR5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBf
X3MxNjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3UxNjsKCnR5cGVkZWYgX19zaWduZWRfXyBp
bnQgX19zMzI7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdTMyOwoKCnR5cGVkZWYgX19zaWduZWRf
XyBsb25nIGxvbmcgX19zNjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwoKCgoK
CgoKdHlwZWRlZiBzaWduZWQgY2hhciBzODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OwoKdHlw
ZWRlZiBzaWduZWQgc2hvcnQgczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKCnR5cGVk
ZWYgc2lnbmVkIGludCBzMzI7CnR5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKCnR5cGVkZWYgc2ln
bmVkIGxvbmcgbG9uZyBzNjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKCgoKCgp0
eXBlZGVmIHUzMiBkbWFfYWRkcl90OwojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCIgMQojIDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIgMQojIDE3ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9jYWNoZS5oIiAxCgoKCgoKCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDggIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2NhY2hlLmgiIDIKIyA2ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDIKIyAxOCAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTkgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aHJlYWRzLmgiIDEKCgoK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx
CiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aHJlYWRzLmgi
IDIKIyAyMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29y
LmgiIDIKIyAzMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vz
c29yLmgiCnN0cnVjdCBjcHVpbmZvX3g4NiB7CiAgICAgICAgX191OCB4ODY7CiAgICAgICAgX191
OCB4ODZfdmVuZG9yOwogICAgICAgIF9fdTggeDg2X21vZGVsOwogICAgICAgIF9fdTggeDg2X21h
c2s7CiAgICAgICAgY2hhciB3cF93b3Jrc19vazsKICAgICAgICBjaGFyIGhsdF93b3Jrc19vazsK
ICAgICAgICBjaGFyIGhhcmRfbWF0aDsKICAgICAgICBjaGFyIHJmdTsKICAgICAgICBpbnQgY3B1
aWRfbGV2ZWw7CiAgICAgICAgX191MzIgeDg2X2NhcGFiaWxpdHlbNF07CiAgICAgICAgY2hhciB4
ODZfdmVuZG9yX2lkWzE2XTsKICAgICAgICBjaGFyIHg4Nl9tb2RlbF9pZFs2NF07CiAgICAgICAg
aW50IHg4Nl9jYWNoZV9zaXplOwoKICAgICAgICBpbnQgZmRpdl9idWc7CiAgICAgICAgaW50IGYw
MGZfYnVnOwogICAgICAgIGludCBjb21hX2J1ZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvb3Bz
X3Blcl9qaWZmeV9SYmE0OTdmMTM7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcGdkX3F1aWNrOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgKnBtZF9xdWljazsKICAgICAgICB1bnNpZ25lZCBsb25nICpw
dGVfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwZ3RhYmxlX2NhY2hlX3N6Owp9IF9fYXR0
cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgoNSkpKSkpKTsKIyA3MiAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiBzdHJ1Y3QgY3B1
aW5mb194ODYgYm9vdF9jcHVfZGF0YV9SMDY1N2QwMzc7CmV4dGVybiBzdHJ1Y3QgdHNzX3N0cnVj
dCBpbml0X3Rzc1sxXTsKIyA5NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9h
c20vcHJvY2Vzc29yLmgiCmV4dGVybiBjaGFyIGlnbm9yZV9pcnExMzsKCmV4dGVybiB2b2lkIGlk
ZW50aWZ5X2NwdShzdHJ1Y3QgY3B1aW5mb194ODYgKik7CmV4dGVybiB2b2lkIHByaW50X2NwdV9p
bmZvKHN0cnVjdCBjcHVpbmZvX3g4NiAqKTsKZXh0ZXJuIHZvaWQgZG9kZ3lfdHNjKHZvaWQpOwoj
IDEyNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
CnN0YXRpYyBpbmxpbmUgdm9pZCBjcHVpZChpbnQgb3AsIGludCAqZWF4LCBpbnQgKmVieCwgaW50
ICplY3gsIGludCAqZWR4KQp7CiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAg
ICA6ICI9YSIgKCplYXgpLAogICAgICAgICAgICAgICAgICAiPWIiICgqZWJ4KSwKICAgICAgICAg
ICAgICAgICAgIj1jIiAoKmVjeCksCiAgICAgICAgICAgICAgICAgICI9ZCIgKCplZHgpCiAgICAg
ICAgICAgICAgICA6ICIwIiAob3ApKTsKfQoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg
Y3B1aWRfZWF4KHVuc2lnbmVkIGludCBvcCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXg7Cgog
ICAgICAgIF9fYXNtX18oImNwdWlkIgogICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpCiAgICAg
ICAgICAgICAgICA6ICIwIiAob3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJjeCIsICJkeCIp
OwogICAgICAgIHJldHVybiBlYXg7Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRf
ZWJ4KHVuc2lnbmVkIGludCBvcCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVieDsKCiAg
ICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCksICI9YiIg
KGVieCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDogImN4Iiwg
ImR4IiApOwogICAgICAgIHJldHVybiBlYng7Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg
Y3B1aWRfZWN4KHVuc2lnbmVkIGludCBvcCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVj
eDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCks
ICI9YyIgKGVjeCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDog
ImJ4IiwgImR4IiApOwogICAgICAgIHJldHVybiBlY3g7Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBpbnQgY3B1aWRfZWR4KHVuc2lnbmVkIGludCBvcCkKewogICAgICAgIHVuc2lnbmVkIGludCBl
YXgsIGVkeDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIg
KGVheCksICI9ZCIgKGVkeCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkKICAgICAgICAgICAg
ICAgIDogImJ4IiwgImN4Iik7CiAgICAgICAgcmV0dXJuIGVkeDsKfQojIDE5OSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiB1bnNpZ25l
ZCBsb25nIG1tdV9jcjRfZmVhdHVyZXM7CgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2luX2NyNCAo
dW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgbW11X2NyNF9mZWF0dXJlcyB8PSBtYXNrOwog
ICAgICAgIF9fYXNtX18oIm1vdmwgJSVjcjQsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm9y
bCAlMCwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAibW92bCAlJWVheCwlJWNyNFxuIgogICAg
ICAgICAgICAgICAgOiA6ICJpcmciIChtYXNrKQogICAgICAgICAgICAgICAgOiJheCIpOwp9Cgpz
dGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfaW5fY3I0ICh1bnNpZ25lZCBsb25nIG1hc2spCnsKICAg
ICAgICBtbXVfY3I0X2ZlYXR1cmVzICY9IH5tYXNrOwogICAgICAgIF9fYXNtX18oIm1vdmwgJSVj
cjQsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgImFuZGwgJTAsJSVlYXhcblx0IgogICAgICAg
ICAgICAgICAgIm1vdmwgJSVlYXgsJSVjcjRcbiIKICAgICAgICAgICAgICAgIDogOiAiaXJnIiAo
fm1hc2spCiAgICAgICAgICAgICAgICA6ImF4Iik7Cn0KIyAyNTYgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpleHRlcm4gaW50IE1DQV9idXNfUmY0
OGEyYzRjOwoKCgpleHRlcm4gdW5zaWduZWQgaW50IG1hY2hpbmVfaWQ7CmV4dGVybiB1bnNpZ25l
ZCBpbnQgbWFjaGluZV9zdWJtb2RlbF9pZDsKZXh0ZXJuIHVuc2lnbmVkIGludCBCSU9TX3Jldmlz
aW9uOwpleHRlcm4gdW5zaWduZWQgaW50IG1jYV9wZW50aXVtX2ZsYWc7CiMgMjgyICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IGkzODdf
ZnNhdmVfc3RydWN0IHsKICAgICAgICBsb25nIGN3ZDsKICAgICAgICBsb25nIHN3ZDsKICAgICAg
ICBsb25nIHR3ZDsKICAgICAgICBsb25nIGZpcDsKICAgICAgICBsb25nIGZjczsKICAgICAgICBs
b25nIGZvbzsKICAgICAgICBsb25nIGZvczsKICAgICAgICBsb25nIHN0X3NwYWNlWzIwXTsKICAg
ICAgICBsb25nIHN0YXR1czsKfTsKCnN0cnVjdCBpMzg3X2Z4c2F2ZV9zdHJ1Y3QgewogICAgICAg
IHVuc2lnbmVkIHNob3J0IGN3ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzd2Q7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgdHdkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZvcDsKICAgICAgICBs
b25nIGZpcDsKICAgICAgICBsb25nIGZjczsKICAgICAgICBsb25nIGZvbzsKICAgICAgICBsb25n
IGZvczsKICAgICAgICBsb25nIG14Y3NyOwogICAgICAgIGxvbmcgcmVzZXJ2ZWQ7CiAgICAgICAg
bG9uZyBzdF9zcGFjZVszMl07CiAgICAgICAgbG9uZyB4bW1fc3BhY2VbMzJdOwogICAgICAgIGxv
bmcgcGFkZGluZ1s1Nl07Cn0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDE2KSkpOwoKc3RydWN0
IGkzODdfc29mdF9zdHJ1Y3QgewogICAgICAgIGxvbmcgY3dkOwogICAgICAgIGxvbmcgc3dkOwog
ICAgICAgIGxvbmcgdHdkOwogICAgICAgIGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAg
ICAgIGxvbmcgZm9vOwogICAgICAgIGxvbmcgZm9zOwogICAgICAgIGxvbmcgc3Rfc3BhY2VbMjBd
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZnRvcCwgY2hhbmdlZCwgbG9va2FoZWFkLCBub191cGRh
dGUsIHJtLCBhbGltaXQ7CiAgICAgICAgc3RydWN0IGluZm8gKmluZm87CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBlbnRyeV9laXA7Cn07Cgp1bmlvbiBpMzg3X3VuaW9uIHsKICAgICAgICBzdHJ1Y3Qg
aTM4N19mc2F2ZV9zdHJ1Y3QgZnNhdmU7CiAgICAgICAgc3RydWN0IGkzODdfZnhzYXZlX3N0cnVj
dCBmeHNhdmU7CiAgICAgICAgc3RydWN0IGkzODdfc29mdF9zdHJ1Y3Qgc29mdDsKfTsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlZzsKfSBtbV9zZWdtZW50X3Q7Cgpz
dHJ1Y3QgdHNzX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYmFja19saW5rLF9fYmxo
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwMDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczAs
X19zczBoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwMTsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzczEsX19zczFoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwMjsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBzczIsX19zczJoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19jcjM7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZmxhZ3M7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBlYXgsZWN4LGVkeCxlYng7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYnA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc2k7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBlZGk7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNo
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzcywgX19zc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGR0LCBfX2xkdGg7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgdHJhY2UsIGJpdG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGlvX2JpdG1hcFszMiArMV07
CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBfX2NhY2hlbGluZV9maWxsZXJbNV07Cn07CgpzdHJ1
Y3QgdGhyZWFkX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AwOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBnczsKCiAgICAgICAgdW5zaWduZWQg
bG9uZyBkZWJ1Z3JlZ1s4XTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBjcjIsIHRyYXBfbm8sIGVy
cm9yX2NvZGU7CgogICAgICAgIHVuaW9uIGkzODdfdW5pb24gaTM4NzsKCiAgICAgICAgc3RydWN0
IHZtODZfc3RydWN0ICogdm04Nl9pbmZvOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2NyZWVuX2Jp
dG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHY4NmZsYWdzLCB2ODZtYXNrLCB2ODZtb2RlLCBz
YXZlZF9lc3AwOwoKICAgICAgICBpbnQgaW9wZXJtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9f
Yml0bWFwWzMyICsxXTsKfTsKIyA0MjQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7
CgoKZXh0ZXJuIHZvaWQgcmVsZWFzZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKCgpl
eHRlcm4gaW50IGtlcm5lbF90aHJlYWRfUjdlOWViYjA1KGludCAoKmZuKSh2b2lkICopLCB2b2lk
ICogYXJnLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKCgpleHRlcm4gdm9pZCBjb3B5X3NlZ21lbnRz
KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IG1tX3N0cnVjdCAqIG1tKTsKZXh0ZXJuIHZv
aWQgcmVsZWFzZV9zZWdtZW50cyhzdHJ1Y3QgbW1fc3RydWN0ICogbW0pOwoKCgoKc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBsb25nIHRocmVhZF9zYXZlZF9wYyhzdHJ1Y3QgdGhyZWFkX3N0cnVjdCAq
dCkKewogICAgICAgIHJldHVybiAoKHVuc2lnbmVkIGxvbmcgKil0LT5lc3ApWzNdOwp9Cgp1bnNp
Z25lZCBsb25nIGdldF93Y2hhbl9SMmQ4Njk3Zjgoc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKIyA0
NTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpz
dHJ1Y3QgbWljcm9jb2RlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaGRydmVyOwogICAgICAgIHVu
c2lnbmVkIGludCByZXY7CiAgICAgICAgdW5zaWduZWQgaW50IGRhdGU7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHNpZzsKICAgICAgICB1bnNpZ25lZCBpbnQgY2tzdW07CiAgICAgICAgdW5zaWduZWQg
aW50IGxkcnZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcGY7CiAgICAgICAgdW5zaWduZWQgaW50
IHJlc2VydmVkWzVdOwogICAgICAgIHVuc2lnbmVkIGludCBiaXRzWzUwMF07Cn07CgoKCgoKc3Rh
dGljIGlubGluZSB2b2lkIHJlcF9ub3Aodm9pZCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKCJyZXA7bm9wIik7Cn0KIyAxNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9wcmVmZXRjaC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9hc20vY2FjaGUuaCIgMQojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L3ByZWZldGNoLmgiIDIKIyA0MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgcHJlZmV0Y2goY29u
c3Qgdm9pZCAqeCkgezt9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcHJlZmV0Y2h3KGNvbnN0IHZv
aWQgKngpIHs7fQojIDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bGlzdC5oIiAyCiMgMTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bGlzdC5oIgpzdHJ1Y3QgbGlzdF9oZWFkIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0
LCAqcHJldjsKfTsKIyAzNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19saXN0X2FkZChzdHJ1Y3QgbGlzdF9o
ZWFkICogbmV3LAogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgKiBuZXh0KQp7CiAgICAgICAgbmV4dC0+cHJldiA9IG5ldzsKICAgICAgICBu
ZXctPm5leHQgPSBuZXh0OwogICAgICAgIG5ldy0+cHJldiA9IHByZXY7CiAgICAgICAgcHJldi0+
bmV4dCA9IG5ldzsKfQojIDU1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L2xpc3QuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2FkZChzdHJ1Y3QgbGlzdF9o
ZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAgICBfX2xpc3RfYWRkKG5l
dywgaGVhZCwgaGVhZC0+bmV4dCk7Cn0KIyA2OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9hZGRfdGFp
bChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAg
ICBfX2xpc3RfYWRkKG5ldywgaGVhZC0+cHJldiwgaGVhZCk7Cn0KIyA4MCAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZv
aWQgX19saXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICogcHJldiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBuZXh0KQp7CiAgICAgICAgbmV4dC0+
cHJldiA9IHByZXY7CiAgICAgICAgcHJldi0+bmV4dCA9IG5leHQ7Cn0KCgoKCgoKc3RhdGljIF9f
aW5saW5lX18gdm9pZCBsaXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewogICAgICAg
IF9fbGlzdF9kZWwoZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKICAgICAgICBlbnRyeS0+bmV4
dCA9IGVudHJ5LT5wcmV2ID0gMDsKfQoKCgoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9k
ZWxfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewogICAgICAgIF9fbGlzdF9kZWwoZW50
cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKICAgICAgICBkbyB7IChlbnRyeSktPm5leHQgPSAoZW50
cnkpOyAoZW50cnkpLT5wcmV2ID0gKGVudHJ5KTsgfSB3aGlsZSAoMCk7Cn0KCgoKCgpzdGF0aWMg
X19pbmxpbmVfXyBpbnQgbGlzdF9lbXB0eShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAg
ICAgcmV0dXJuIGhlYWQtPm5leHQgPT0gaGVhZDsKfQoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2
b2lkIGxpc3Rfc3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQg
KmhlYWQpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpmaXJzdCA9IGxpc3QtPm5leHQ7Cgog
ICAgICAgIGlmIChmaXJzdCAhPSBsaXN0KSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkICpsYXN0ID0gbGlzdC0+cHJldjsKICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
KmF0ID0gaGVhZC0+bmV4dDsKCiAgICAgICAgICAgICAgICBmaXJzdC0+cHJldiA9IGhlYWQ7CiAg
ICAgICAgICAgICAgICBoZWFkLT5uZXh0ID0gZmlyc3Q7CgogICAgICAgICAgICAgICAgbGFzdC0+
bmV4dCA9IGF0OwogICAgICAgICAgICAgICAgYXQtPnByZXYgPSBsYXN0OwogICAgICAgIH0KfQoj
IDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZS5oIiAy
CiMgMjUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgi
CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEK
CgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5o
IiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgi
IDIKIyAyMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgi
CnR5cGVkZWYgc3RydWN0IHsgdm9sYXRpbGUgaW50IGNvdW50ZXI7IH0gYXRvbWljX3Q7CiMgNTMg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIGF0b21pY19hZGQoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiYWRkbCAlMSwlMCIKICAg
ICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQogICAgICAgICAgICAgICAgOiJpciIgKGkp
LCAibSIgKHYtPmNvdW50ZXIpKTsKfQojIDY5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfc3ViKGlu
dCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAg
ICAgICAgICAgIiIgInN1YmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRl
cikKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0KIyA4NyAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBf
X2lubGluZV9fIGludCBhdG9taWNfc3ViX2FuZF90ZXN0KGludCBpLCBhdG9taWNfdCAqdikKewog
ICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAg
ICAgICAgICAgICAgICAiIiAic3VibCAlMiwlMDsgc2V0ZSAlMSIKICAgICAgICAgICAgICAgIDoi
PW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJt
IiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0KIyAxMDUgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19p
bmxpbmVfXyB2b2lkIGF0b21pY19pbmMoYXRvbWljX3QgKnYpCnsKICAgICAgICBfX2FzbV9fIF9f
dm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJpbmNsICUwIgogICAgICAgICAgICAgICAg
OiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6Im0iICh2LT5jb3VudGVyKSk7Cn0K
IyAxMjAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19kZWMoYXRvbWljX3QgKnYpCnsKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJkZWNsICUwIgogICAgICAg
ICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6Im0iICh2LT5jb3Vu
dGVyKSk7Cn0KIyAxMzcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0
b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19hbmRfdGVzdChhdG9taWNf
dCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiZGVjbCAlMDsgc2V0ZSAlMSIKICAgICAgICAgICAg
ICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6Im0iICh2
LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYyAhPSAwOwp9CiMgMTU3ICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9f
aW5saW5lX18gaW50IGF0b21pY19pbmNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCnsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGM7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg
ICAgICAgIiIgImluY2wgJTA7IHNldGUgJTEiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291
bnRlciksICI9cW0iIChjKQogICAgICAgICAgICAgICAgOiJtIiAodi0+Y291bnRlcikgOiAibWVt
b3J5Iik7CiAgICAgICAgcmV0dXJuIGMgIT0gMDsKfQojIDE3OCAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9t
aWNfYWRkX25lZ2F0aXZlKGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNo
YXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAi
YWRkbCAlMiwlMDsgc2V0cyAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwg
Ij1xbSIgKGMpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikgOiAi
bWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0KIyAyNiAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIgMgoKCnN0cnVjdCBleGNlcHRpb25fdGFibGVf
ZW50cnk7CgoKc3RydWN0IGtlcm5lbF9zeW0KewogICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7
CiAgICAgICAgY2hhciBuYW1lWzYwXTsKfTsKCnN0cnVjdCBtb2R1bGVfc3ltYm9sCnsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHZhbHVlOwogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Cn07CgpzdHJ1
Y3QgbW9kdWxlX3JlZgp7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqZGVwOwogICAgICAgIHN0cnVj
dCBtb2R1bGUgKnJlZjsKICAgICAgICBzdHJ1Y3QgbW9kdWxlX3JlZiAqbmV4dF9yZWY7Cn07CgoK
c3RydWN0IG1vZHVsZV9wZXJzaXN0OwoKc3RydWN0IG1vZHVsZQp7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzaXplX29mX3N0cnVjdDsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpuZXh0OwogICAgICAg
IGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplOwoKICAgICAgICB1
bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIGF0b21pY190IHVzZWNvdW50OwogICAgICAg
ICAgICAgICAgbG9uZyBwYWQ7CiAgICAgICAgfSB1YzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBm
bGFnczsKCiAgICAgICAgdW5zaWduZWQgbnN5bXM7CiAgICAgICAgdW5zaWduZWQgbmRlcHM7Cgog
ICAgICAgIHN0cnVjdCBtb2R1bGVfc3ltYm9sICpzeW1zOwogICAgICAgIHN0cnVjdCBtb2R1bGVf
cmVmICpkZXBzOwogICAgICAgIHN0cnVjdCBtb2R1bGVfcmVmICpyZWZzOwogICAgICAgIGludCAo
KmluaXQpKHZvaWQpOwogICAgICAgIHZvaWQgKCpjbGVhbnVwKSh2b2lkKTsKICAgICAgICBjb25z
dCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleF90YWJsZV9zdGFydDsKICAgICAgICBj
b25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleF90YWJsZV9lbmQ7CgoKCgoKCiAg
ICAgICAgY29uc3Qgc3RydWN0IG1vZHVsZV9wZXJzaXN0ICpwZXJzaXN0X3N0YXJ0OwogICAgICAg
IGNvbnN0IHN0cnVjdCBtb2R1bGVfcGVyc2lzdCAqcGVyc2lzdF9lbmQ7CiAgICAgICAgaW50ICgq
Y2FuX3VubG9hZCkodm9pZCk7CiAgICAgICAgaW50IHJ1bnNpemU7CiAgICAgICAgY29uc3QgY2hh
ciAqa2FsbHN5bXNfc3RhcnQ7CiAgICAgICAgY29uc3QgY2hhciAqa2FsbHN5bXNfZW5kOwogICAg
ICAgIGNvbnN0IGNoYXIgKmFyY2hkYXRhX3N0YXJ0OwogICAgICAgIGNvbnN0IGNoYXIgKmFyY2hk
YXRhX2VuZDsKICAgICAgICBjb25zdCBjaGFyICprZXJuZWxfZGF0YTsKfTsKCnN0cnVjdCBtb2R1
bGVfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIGxvbmcgdXNlY291
bnQ7Cn07CiMgMTgzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v
ZHVsZS5oIgpleHRlcm4gdm9pZCBpbnRlcl9tb2R1bGVfcmVnaXN0ZXJfUjYyZGFkYTA1KGNvbnN0
IGNoYXIgKiwgc3RydWN0IG1vZHVsZSAqLCBjb25zdCB2b2lkICopOwpleHRlcm4gdm9pZCBpbnRl
cl9tb2R1bGVfdW5yZWdpc3Rlcl9SN2E5ZTg0NWUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNvbnN0
IHZvaWQgKmludGVyX21vZHVsZV9nZXRfUmY2YTBjZTI0KGNvbnN0IGNoYXIgKik7CmV4dGVybiBj
b25zdCB2b2lkICppbnRlcl9tb2R1bGVfZ2V0X3JlcXVlc3RfUmI2OWY4MjZiKGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgaW50ZXJfbW9kdWxlX3B1dF9SNmI5OWY3ZDgo
Y29uc3QgY2hhciAqKTsKCnN0cnVjdCBpbnRlcl9tb2R1bGVfZW50cnkgewogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICBjb25zdCBjaGFyICppbV9uYW1lOwogICAgICAgIHN0
cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIGNvbnN0IHZvaWQgKnVzZXJkYXRhOwp9OwoKZXh0
ZXJuIGludCB0cnlfaW5jX21vZF9jb3VudF9SZTYxMDViMjMoc3RydWN0IG1vZHVsZSAqbW9kKTsK
IyAyOTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgi
CmV4dGVybiBzdHJ1Y3QgbW9kdWxlIF9fdGhpc19tb2R1bGU7CgoKCgoKCiMgMSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC92ZXJzaW9uLmgiIDEKIyAzMDAgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDIKc3RhdGljIGNv
bnN0IGNoYXIgX19tb2R1bGVfa2VybmVsX3ZlcnNpb25bXSBfX2F0dHJpYnV0ZV9fKChzZWN0aW9u
KCIubW9kaW5mbyIpKSkgPQoia2VybmVsX3ZlcnNpb249IiAiMi40LjEwIjsKCnN0YXRpYyBjb25z
dCBjaGFyIF9fbW9kdWxlX3VzaW5nX2NoZWNrc3Vtc1tdIF9fYXR0cmlidXRlX18oKHNlY3Rpb24o
Ii5tb2RpbmZvIikpKSA9CiJ1c2luZ19jaGVja3N1bXM9MSI7CiMgMjQgInVzYi11aGNpLmMiIDIK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAxCiMg
Mjc2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BjaS5oIgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcGNpX2lkcy5oIiAxCiMg
Mjc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAyCiMg
Mjk5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BjaS5oIgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQoKCgoK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx
CiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAy
CgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5
cGVzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L3N0ZGRlZi5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9wb3NpeF90eXBlcy5oIiAyCiMgMzYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVk
IGxvbmcgZmRzX2JpdHMgWygxMDI0Lyg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSldOwp9IF9f
a2VybmVsX2ZkX3NldDsKCgp0eXBlZGVmIHZvaWQgKCpfX2tlcm5lbF9zaWdoYW5kbGVyX3QpKGlu
dCk7CgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfa2V5X3Q7CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDEKIyAxMCAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCIKdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBfX2tlcm5lbF9kZXZfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fa2VybmVsX2lu
b190Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX21vZGVfdDsKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBfX2tlcm5lbF9ubGlua190Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfb2ZmX3Q7
CnR5cGVkZWYgaW50IF9fa2VybmVsX3BpZF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2Vy
bmVsX2lwY19waWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF91aWRfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
X19rZXJuZWxfc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVmIGlu
dCBfX2tlcm5lbF9wdHJkaWZmX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF90aW1lX3Q7CnR5cGVk
ZWYgbG9uZyBfX2tlcm5lbF9zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVsX2Nsb2Nr
X3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqIF9fa2VybmVs
X2NhZGRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfdWlkMTZfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBf
X2tlcm5lbF91aWQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9naWQzMl90OwoK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgX19rZXJuZWxfb2xkX2dpZF90OwoKCnR5cGVkZWYgbG9uZyBsb25nIF9fa2VybmVs
X2xvZmZfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgICAgIGludCB2YWxbMl07CgoKCn0gX19r
ZXJuZWxfZnNpZF90OwojIDQ3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L3Bvc2l4X3R5cGVzLmgiIDIKIyA5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L3R5cGVzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2FzbS90eXBlcy5oIiAxCiMgMTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvdHlwZXMuaCIgMgoKCgp0eXBlZGVmIF9fa2VybmVsX2ZkX3NldCBmZF9zZXQ7CnR5
cGVkZWYgX19rZXJuZWxfZGV2X3QgZGV2X3Q7CnR5cGVkZWYgX19rZXJuZWxfaW5vX3QgaW5vX3Q7
CnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG1vZGVfdDsKdHlwZWRlZiBfX2tlcm5lbF9ubGlua190
IG5saW5rX3Q7CnR5cGVkZWYgX19rZXJuZWxfb2ZmX3Qgb2ZmX3Q7CnR5cGVkZWYgX19rZXJuZWxf
cGlkX3QgcGlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9f
a2VybmVsX2tleV90IGtleV90Owp0eXBlZGVmIF9fa2VybmVsX3N1c2Vjb25kc190IHN1c2Vjb25k
c190OwoKCnR5cGVkZWYgX19rZXJuZWxfdWlkMzJfdCB1aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9n
aWQzMl90IGdpZF90Owp0eXBlZGVmIF9fa2VybmVsX3VpZDE2X3QgdWlkMTZfdDsKdHlwZWRlZiBf
X2tlcm5lbF9naWQxNl90IGdpZDE2X3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfb2xkX3VpZF90IG9s
ZF91aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9vbGRfZ2lkX3Qgb2xkX2dpZF90OwojIDQ1ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgX19r
ZXJuZWxfbG9mZl90IGxvZmZfdDsKIyA1NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC90eXBlcy5oIgp0eXBlZGVmIF9fa2VybmVsX3NpemVfdCBzaXplX3Q7CgoKCgp0
eXBlZGVmIF9fa2VybmVsX3NzaXplX3Qgc3NpemVfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfcHRy
ZGlmZl90IHB0cmRpZmZfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfdGltZV90IHRpbWVfdDsKCgoK
CnR5cGVkZWYgX19rZXJuZWxfY2xvY2tfdCBjbG9ja190OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9j
YWRkcl90IGNhZGRyX3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2NoYXI7CnR5cGVkZWYg
dW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ7CnR5cGVk
ZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7CgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVuY2hhcjsK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKCgoKCnR5cGVkZWYgX191OCB1X2ludDhfdDsK
dHlwZWRlZiBfX3M4IGludDhfdDsKdHlwZWRlZiBfX3UxNiB1X2ludDE2X3Q7CnR5cGVkZWYgX19z
MTYgaW50MTZfdDsKdHlwZWRlZiBfX3UzMiB1X2ludDMyX3Q7CnR5cGVkZWYgX19zMzIgaW50MzJf
dDsKCgoKdHlwZWRlZiBfX3U4IHVpbnQ4X3Q7CnR5cGVkZWYgX191MTYgdWludDE2X3Q7CnR5cGVk
ZWYgX191MzIgdWludDMyX3Q7CgoKdHlwZWRlZiBfX3U2NCB1aW50NjRfdDsKdHlwZWRlZiBfX3U2
NCB1X2ludDY0X3Q7CnR5cGVkZWYgX19zNjQgaW50NjRfdDsKIyAxMjMgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIKc3RydWN0IHVzdGF0IHsKICAgICAg
ICBfX2tlcm5lbF9kYWRkcl90IGZfdGZyZWU7CiAgICAgICAgX19rZXJuZWxfaW5vX3QgZl90aW5v
ZGU7CiAgICAgICAgY2hhciBmX2ZuYW1lWzZdOwogICAgICAgIGNoYXIgZl9mcGFja1s2XTsKfTsK
IyAzMDAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcGNpLmgiIDIK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx
CiMgMzAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAy
CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pb3BvcnQuaCIg
MQojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lvcG9ydC5o
IgpzdHJ1Y3QgcmVzb3VyY2UgewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzdGFydCwgZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAg
ICAgc3RydWN0IHJlc291cmNlICpwYXJlbnQsICpzaWJsaW5nLCAqY2hpbGQ7Cn07CgpzdHJ1Y3Qg
cmVzb3VyY2VfbGlzdCB7CiAgICAgICAgc3RydWN0IHJlc291cmNlX2xpc3QgKm5leHQ7CiAgICAg
ICAgc3RydWN0IHJlc291cmNlICpyZXM7CiAgICAgICAgc3RydWN0IHBjaV9kZXYgKmRldjsKfTsK
IyA4MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pb3BvcnQuaCIK
ZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSBpb3BvcnRfcmVzb3VyY2VfUjg2NWViY2NkOwpleHRlcm4g
c3RydWN0IHJlc291cmNlIGlvbWVtX3Jlc291cmNlX1I5ZWZlZDVhZjsKCmV4dGVybiBpbnQgZ2V0
X3Jlc291cmNlX2xpc3Qoc3RydWN0IHJlc291cmNlICosIGNoYXIgKmJ1ZiwgaW50IHNpemUpOwoK
ZXh0ZXJuIGludCBjaGVja19yZXNvdXJjZV9SZDhkNzhhYWEoc3RydWN0IHJlc291cmNlICpyb290
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIGludCByZXF1ZXN0X3Jlc291
cmNlX1I0MTY4NWNmYihzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXJjZSAqbmV3
KTsKZXh0ZXJuIGludCByZWxlYXNlX3Jlc291cmNlX1I4MTRlODQwNyhzdHJ1Y3QgcmVzb3VyY2Ug
Km5ldyk7CmV4dGVybiBpbnQgYWxsb2NhdGVfcmVzb3VyY2VfUmE3MTU4MTJiKHN0cnVjdCByZXNv
dXJjZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpuZXcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgbWluLCB1bnNpZ25lZCBsb25nIG1heCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGFsaWduLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKCphbGlnbmYpKHZvaWQgKiwgc3RydWN0IHJlc291cmNlICosIHVuc2lnbmVkIGxvbmcp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFsaWduZl9kYXRhKTsKCgoKCgpl
eHRlcm4gc3RydWN0IHJlc291cmNlICogX19yZXF1ZXN0X3JlZ2lvbl9SMWExYTRmMDkoc3RydWN0
IHJlc291cmNlICosIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbiwgY29uc3Qg
Y2hhciAqbmFtZSk7CgoKCgoKCgpleHRlcm4gaW50IF9fY2hlY2tfcmVnaW9uX1JmMWQwY2RhYihz
dHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CmV4dGVybiB2
b2lkIF9fcmVsZWFzZV9yZWdpb25fUmQ0OTUwMWQ0KHN0cnVjdCByZXNvdXJjZSAqLCB1bnNpZ25l
ZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCgoKCgpleHRlcm4gdm9pZCBhdXRvaXJxX3NldHVwX1I1
YTVhMjI4MChpbnQgd2FpdHRpbWUpOwpleHRlcm4gaW50IGF1dG9pcnFfcmVwb3J0X1I4NDUzMGM1
MyhpbnQgd2FpdHRpbWUpOwojIDMwMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbGlzdC5oIiAxCiMgMzAzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L3BjaS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9lcnJuby5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9hc20vZXJybm8uaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvZXJybm8uaCIgMgojIDMwNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9wY2kuaCIgMgoKCmVudW0gcGNpX21tYXBfc3RhdGUgewogICAgICAgIHBjaV9tbWFw
X2lvLAogICAgICAgIHBjaV9tbWFwX21lbQp9OwojIDMzNiAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9wY2kuaCIKc3RydWN0IHBjaV9kZXYgewogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgZ2xvYmFsX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBidXNfbGlz
dDsKICAgICAgICBzdHJ1Y3QgcGNpX2J1cyAqYnVzOwogICAgICAgIHN0cnVjdCBwY2lfYnVzICpz
dWJvcmRpbmF0ZTsKCiAgICAgICAgdm9pZCAqc3lzZGF0YTsKICAgICAgICBzdHJ1Y3QgcHJvY19k
aXJfZW50cnkgKnByb2NlbnQ7CgogICAgICAgIHVuc2lnbmVkIGludCBkZXZmbjsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCB2ZW5kb3I7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGV2aWNlOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHN1YnN5c3RlbV92ZW5kb3I7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc3Vic3lzdGVtX2RldmljZTsKICAgICAgICB1bnNpZ25lZCBpbnQgY2xhc3M7CiAgICAgICAg
dTggaGRyX3R5cGU7CiAgICAgICAgdTggcm9tX2Jhc2VfcmVnOwoKICAgICAgICBzdHJ1Y3QgcGNp
X2RyaXZlciAqZHJpdmVyOwogICAgICAgIHZvaWQgKmRyaXZlcl9kYXRhOwogICAgICAgIGRtYV9h
ZGRyX3QgZG1hX21hc2s7CgoKCgoKICAgICAgICB1MzIgY3VycmVudF9zdGF0ZTsKCgoKCiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yX2NvbXBhdGlibGVbNF07CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZGV2aWNlX2NvbXBhdGlibGVbNF07CgoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgaXJx
OwogICAgICAgIHN0cnVjdCByZXNvdXJjZSByZXNvdXJjZVsxMl07CiAgICAgICAgc3RydWN0IHJl
c291cmNlIGRtYV9yZXNvdXJjZVsyXTsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgaXJxX3Jlc291
cmNlWzJdOwoKICAgICAgICBjaGFyIG5hbWVbODBdOwogICAgICAgIGNoYXIgc2xvdF9uYW1lWzhd
OwogICAgICAgIGludCBhY3RpdmU7CiAgICAgICAgaW50IHJvOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHJlZ3M7CgogICAgICAgIGludCAoKnByZXBhcmUpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwog
ICAgICAgIGludCAoKmFjdGl2YXRlKShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKICAgICAgICBpbnQg
KCpkZWFjdGl2YXRlKShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKfTsKIyA0MDcgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcGNpLmgiCnN0cnVjdCBwY2lfYnVzIHsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7CiAgICAgICAgc3RydWN0IHBjaV9idXMgKnBhcmVu
dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNoaWxkcmVuOwogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgZGV2aWNlczsKICAgICAgICBzdHJ1Y3QgcGNpX2RldiAqc2VsZjsKICAgICAgICBzdHJ1
Y3QgcmVzb3VyY2UgKnJlc291cmNlWzRdOwoKICAgICAgICBzdHJ1Y3QgcGNpX29wcyAqb3BzOwog
ICAgICAgIHZvaWQgKnN5c2RhdGE7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9j
ZGlyOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIG51bWJlcjsKICAgICAgICB1bnNpZ25lZCBjaGFy
IHByaW1hcnk7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWNvbmRhcnk7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBzdWJvcmRpbmF0ZTsKCiAgICAgICAgY2hhciBuYW1lWzQ4XTsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCB2ZW5kb3I7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGV2aWNlOwogICAgICAg
IHVuc2lnbmVkIGludCBzZXJpYWw7CiAgICAgICAgdW5zaWduZWQgY2hhciBwbnB2ZXI7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBwcm9kdWN0dmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2hlY2tz
dW07CiAgICAgICAgdW5zaWduZWQgY2hhciBwYWQxOwp9OwoKCgpleHRlcm4gc3RydWN0IGxpc3Rf
aGVhZCBwY2lfcm9vdF9idXNlc19SMDgyYzMyMTM7CmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIHBj
aV9kZXZpY2VzX1I3YTg0YjEwMjsKIyA0NTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvcGNpLmgiCnN0cnVjdCBwY2lfb3BzIHsKICAgICAgICBpbnQgKCpyZWFkX2J5
dGUpKHN0cnVjdCBwY2lfZGV2ICosIGludCB3aGVyZSwgdTggKnZhbCk7CiAgICAgICAgaW50ICgq
cmVhZF93b3JkKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUsIHUxNiAqdmFsKTsKICAgICAg
ICBpbnQgKCpyZWFkX2R3b3JkKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUsIHUzMiAqdmFs
KTsKICAgICAgICBpbnQgKCp3cml0ZV9ieXRlKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUs
IHU4IHZhbCk7CiAgICAgICAgaW50ICgqd3JpdGVfd29yZCkoc3RydWN0IHBjaV9kZXYgKiwgaW50
IHdoZXJlLCB1MTYgdmFsKTsKICAgICAgICBpbnQgKCp3cml0ZV9kd29yZCkoc3RydWN0IHBjaV9k
ZXYgKiwgaW50IHdoZXJlLCB1MzIgdmFsKTsKfTsKCnN0cnVjdCBwYnVzX3NldF9yYW5nZXNfZGF0
YQp7CiAgICAgICAgaW50IGZvdW5kX3ZnYTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlvX3N0YXJ0
LCBpb19lbmQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1fc3RhcnQsIG1lbV9lbmQ7Cn07Cgpz
dHJ1Y3QgcGNpX2RldmljZV9pZCB7CiAgICAgICAgdW5zaWduZWQgaW50IHZlbmRvciwgZGV2aWNl
OwogICAgICAgIHVuc2lnbmVkIGludCBzdWJ2ZW5kb3IsIHN1YmRldmljZTsKICAgICAgICB1bnNp
Z25lZCBpbnQgY2xhc3MsIGNsYXNzX21hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkcml2ZXJf
ZGF0YTsKfTsKCnN0cnVjdCBwY2lfZHJpdmVyIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG5v
ZGU7CiAgICAgICAgY2hhciAqbmFtZTsKICAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9p
ZCAqaWRfdGFibGU7CiAgICAgICAgaW50ICgqcHJvYmUpIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBj
b25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpOwogICAgICAgIHZvaWQgKCpyZW1vdmUpIChz
dHJ1Y3QgcGNpX2RldiAqZGV2KTsKICAgICAgICBpbnQgKCpzYXZlX3N0YXRlKSAoc3RydWN0IHBj
aV9kZXYgKmRldiwgdTMyIHN0YXRlKTsKICAgICAgICBpbnQgKCpzdXNwZW5kKShzdHJ1Y3QgcGNp
X2RldiAqZGV2LCB1MzIgc3RhdGUpOwogICAgICAgIGludCAoKnJlc3VtZSkgKHN0cnVjdCBwY2lf
ZGV2ICpkZXYpOwogICAgICAgIGludCAoKmVuYWJsZV93YWtlKSAoc3RydWN0IHBjaV9kZXYgKmRl
diwgdTMyIHN0YXRlLCBpbnQgZW5hYmxlKTsKfTsKIyA0OTQgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvcGNpLmgiCnZvaWQgcGNpYmlvc19pbml0KHZvaWQpOwp2b2lk
IHBjaWJpb3NfZml4dXBfYnVzKHN0cnVjdCBwY2lfYnVzICopOwppbnQgcGNpYmlvc19lbmFibGVf
ZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICopOwpjaGFyICpwY2liaW9zX3NldHVwIChjaGFyICpzdHIp
OwoKCnZvaWQgcGNpYmlvc19hbGlnbl9yZXNvdXJjZSh2b2lkICosIHN0cnVjdCByZXNvdXJjZSAq
LCB1bnNpZ25lZCBsb25nKTsKdm9pZCBwY2liaW9zX3VwZGF0ZV9yZXNvdXJjZShzdHJ1Y3QgcGNp
X2RldiAqLCBzdHJ1Y3QgcmVzb3VyY2UgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgcmVzb3VyY2UgKiwgaW50KTsKdm9pZCBwY2liaW9zX3VwZGF0ZV9pcnEoc3RydWN0IHBj
aV9kZXYgKiwgaW50IGlycSk7CnZvaWQgcGNpYmlvc19maXh1cF9wYnVzX3JhbmdlcyhzdHJ1Y3Qg
cGNpX2J1cyAqLCBzdHJ1Y3QgcGJ1c19zZXRfcmFuZ2VzX2RhdGEgKik7CgoKCmludCBwY2liaW9z
X3ByZXNlbnRfUjUyMGE3NWI5KHZvaWQpOwppbnQgcGNpYmlvc19yZWFkX2NvbmZpZ19ieXRlX1Jk
ODAxMTVlMSAodW5zaWduZWQgY2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBjaGFy
ICp2YWwpOwppbnQgcGNpYmlvc19yZWFkX2NvbmZpZ193b3JkX1JhYTllZmZkNyAodW5zaWduZWQg
Y2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBzaG9ydCAqdmFsKTsKaW50IHBjaWJp
b3NfcmVhZF9jb25maWdfZHdvcmRfUjM4YWU2Njg5ICh1bnNpZ25lZCBjaGFyIGJ1cywgdW5zaWdu
ZWQgY2hhciBkZXZfZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIHdoZXJlLCB1bnNpZ25lZCBpbnQgKnZhbCk7CmludCBwY2liaW9zX3dyaXRlX2NvbmZpZ19i
eXRlX1I3MTk4NTZlZSAodW5zaWduZWQgY2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB3aGVyZSwgdW5zaWdu
ZWQgY2hhciB2YWwpOwppbnQgcGNpYmlvc193cml0ZV9jb25maWdfd29yZF9SNGYxYzJlMzMgKHVu
c2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgd2hlcmUsIHVuc2lnbmVkIHNob3J0IHZhbCk7Cmlu
dCBwY2liaW9zX3dyaXRlX2NvbmZpZ19kd29yZF9SODFiNGY0NjUgKHVuc2lnbmVkIGNoYXIgYnVz
LCB1bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBpbnQgdmFsKTsKaW50IHBjaWJpb3NfZmluZF9j
bGFzc19SZWYzMzNmN2IgKHVuc2lnbmVkIGludCBjbGFzc19jb2RlLCB1bnNpZ25lZCBzaG9ydCBp
bmRleCwgdW5zaWduZWQgY2hhciAqYnVzLCB1bnNpZ25lZCBjaGFyICpkZXZfZm4pOwppbnQgcGNp
Ymlvc19maW5kX2RldmljZV9SOTdkNDljNGQgKHVuc2lnbmVkIHNob3J0IHZlbmRvciwgdW5zaWdu
ZWQgc2hvcnQgZGV2X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQg
aW5kZXgsIHVuc2lnbmVkIGNoYXIgKmJ1cywKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgKmRldl9mbik7CgoKCnZvaWQgcGNpX2luaXQodm9pZCk7CmludCBwY2lfYnVzX2V4
aXN0cyhjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBpbnQgbnIpOwpzdHJ1Y3QgcGNpX2J1
cyAqcGNpX3NjYW5fYnVzKGludCBidXMsIHN0cnVjdCBwY2lfb3BzICpvcHMsIHZvaWQgKnN5c2Rh
dGEpOwpzdHJ1Y3QgcGNpX2J1cyAqcGNpX2FsbG9jX3ByaW1hcnlfYnVzKGludCBidXMpOwpzdHJ1
Y3QgcGNpX2RldiAqcGNpX3NjYW5fc2xvdChzdHJ1Y3QgcGNpX2RldiAqdGVtcCk7CmludCBwY2lf
cHJvY19hdHRhY2hfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX3Byb2NfZGV0
YWNoX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKdm9pZCBwY2lfbmFtZV9kZXZpY2Uoc3Ry
dWN0IHBjaV9kZXYgKmRldik7CmNoYXIgKnBjaV9jbGFzc19uYW1lKHUzMiBjbGFzcyk7CnZvaWQg
cGNpX3JlYWRfYnJpZGdlX2Jhc2VzKHN0cnVjdCBwY2lfYnVzICpjaGlsZCk7CnN0cnVjdCByZXNv
dXJjZSAqcGNpX2ZpbmRfcGFyZW50X3Jlc291cmNlX1I1Y2NjZmEzNyhjb25zdCBzdHJ1Y3QgcGNp
X2RldiAqZGV2LCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcyk7CmludCBwY2lfc2V0dXBfZGV2aWNlKHN0
cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX2dldF9pbnRlcnJ1cHRfcGluKHN0cnVjdCBwY2lf
ZGV2ICpkZXYsIHN0cnVjdCBwY2lfZGV2ICoqYnJpZGdlKTsKCgoKc3RydWN0IHBjaV9kZXYgKnBj
aV9maW5kX2RldmljZV9SNGVmYmI3Y2IgKHVuc2lnbmVkIGludCB2ZW5kb3IsIHVuc2lnbmVkIGlu
dCBkZXZpY2UsIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYgKnBj
aV9maW5kX3N1YnN5c19SODVhNTk5NTIgKHVuc2lnbmVkIGludCB2ZW5kb3IsIHVuc2lnbmVkIGlu
dCBkZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBz
c192ZW5kb3IsIHVuc2lnbmVkIGludCBzc19kZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYgKnBj
aV9maW5kX2NsYXNzX1I2ODEwMjc2YiAodW5zaWduZWQgaW50IGNsYXNzLCBjb25zdCBzdHJ1Y3Qg
cGNpX2RldiAqZnJvbSk7CnN0cnVjdCBwY2lfZGV2ICpwY2lfZmluZF9zbG90X1JlMjllYjY1ZCAo
dW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuKTsKaW50IHBjaV9maW5kX2NhcGFi
aWxpdHlfUmFmMjc5ZmIyIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgY2FwKTsKCmludCBwY2lf
cmVhZF9jb25maWdfYnl0ZV9SZTQyNmMwZTgoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJl
LCB1OCAqdmFsKTsKaW50IHBjaV9yZWFkX2NvbmZpZ193b3JkX1IxMWFiYzBkNChzdHJ1Y3QgcGNp
X2RldiAqZGV2LCBpbnQgd2hlcmUsIHUxNiAqdmFsKTsKaW50IHBjaV9yZWFkX2NvbmZpZ19kd29y
ZF9SYTNiODI4MTMoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1MzIgKnZhbCk7Cmlu
dCBwY2lfd3JpdGVfY29uZmlnX2J5dGVfUmJiNDNlMTE0KHN0cnVjdCBwY2lfZGV2ICpkZXYsIGlu
dCB3aGVyZSwgdTggdmFsKTsKaW50IHBjaV93cml0ZV9jb25maWdfd29yZF9SMjBmODU4NDUoc3Ry
dWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1MTYgdmFsKTsKaW50IHBjaV93cml0ZV9jb25m
aWdfZHdvcmRfUjhjNGUxYTIxKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTMyIHZh
bCk7CgppbnQgcGNpX2VuYWJsZV9kZXZpY2VfUmQwNGZlYTA4KHN0cnVjdCBwY2lfZGV2ICpkZXYp
Owp2b2lkIHBjaV9kaXNhYmxlX2RldmljZV9SNWEzNDNhNzgoc3RydWN0IHBjaV9kZXYgKmRldik7
CnZvaWQgcGNpX3NldF9tYXN0ZXJfUjJkMDc2MGFlKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQg
cGNpX3NldF9kbWFfbWFza19SZTE1YTdkMjQoc3RydWN0IHBjaV9kZXYgKmRldiwgZG1hX2FkZHJf
dCBtYXNrKTsKaW50IHBjaV9hc3NpZ25fcmVzb3VyY2VfUmY1YmVjNzNmKHN0cnVjdCBwY2lfZGV2
ICpkZXYsIGludCBpKTsKCgppbnQgcGNpX3NhdmVfc3RhdGVfUjFlMmZhOTI5KHN0cnVjdCBwY2lf
ZGV2ICpkZXYsIHUzMiAqYnVmZmVyKTsKaW50IHBjaV9yZXN0b3JlX3N0YXRlX1I5N2FkNGUwYShz
dHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgKmJ1ZmZlcik7CmludCBwY2lfc2V0X3Bvd2VyX3N0YXRl
X1I1MTYyZWQ2YyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgc3RhdGUpOwppbnQgcGNpX2VuYWJs
ZV93YWtlX1I2NDM1M2FmMyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgc3RhdGUsIGludCBlbmFi
bGUpOwoKCgppbnQgcGNpX2NsYWltX3Jlc291cmNlKHN0cnVjdCBwY2lfZGV2ICosIGludCk7CnZv
aWQgcGNpX2Fzc2lnbl91bmFzc2lnbmVkX3Jlc291cmNlcyh2b2lkKTsKdm9pZCBwZGV2X2VuYWJs
ZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKik7CnZvaWQgcGRldl9zb3J0X3Jlc291cmNlcyhzdHJ1
Y3QgcGNpX2RldiAqLCBzdHJ1Y3QgcmVzb3VyY2VfbGlzdCAqLCB1MzIpOwp1bnNpZ25lZCBsb25n
IHBjaV9icmlkZ2VfY2hlY2tfaW8oc3RydWN0IHBjaV9kZXYgKik7CnZvaWQgcGNpX2ZpeHVwX2ly
cXModTggKCopKHN0cnVjdCBwY2lfZGV2ICosIHU4ICopLAogICAgICAgICAgICAgICAgICAgIGlu
dCAoKikoc3RydWN0IHBjaV9kZXYgKiwgdTgsIHU4KSk7CgppbnQgcGNpX3JlcXVlc3RfcmVnaW9u
c19SM2E5ZjZiMmQoc3RydWN0IHBjaV9kZXYgKiwgY2hhciAqKTsKdm9pZCBwY2lfcmVsZWFzZV9y
ZWdpb25zX1JlOWEwODY1MShzdHJ1Y3QgcGNpX2RldiAqKTsKCgppbnQgcGNpX3JlZ2lzdGVyX2Ry
aXZlcl9SZGU3YjI3NTEoc3RydWN0IHBjaV9kcml2ZXIgKik7CnZvaWQgcGNpX3VucmVnaXN0ZXJf
ZHJpdmVyX1I4MzZlYTIxMShzdHJ1Y3QgcGNpX2RyaXZlciAqKTsKdm9pZCBwY2lfaW5zZXJ0X2Rl
dmljZShzdHJ1Y3QgcGNpX2RldiAqLCBzdHJ1Y3QgcGNpX2J1cyAqKTsKdm9pZCBwY2lfcmVtb3Zl
X2RldmljZShzdHJ1Y3QgcGNpX2RldiAqKTsKc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kZXZfZHJp
dmVyX1JmY2M0NTBjNChjb25zdCBzdHJ1Y3QgcGNpX2RldiAqKTsKY29uc3Qgc3RydWN0IHBjaV9k
ZXZpY2VfaWQgKnBjaV9tYXRjaF9kZXZpY2VfUjQwMWFmYzliKGNvbnN0IHN0cnVjdCBwY2lfZGV2
aWNlX2lkICppZHMsIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYpOwoKCnN0cnVjdCBwY2lfcG9v
bCAqcGNpX3Bvb2xfY3JlYXRlX1I2OWI2Nzg0MyAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHBj
aV9kZXYgKmRldiwKICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24sIHNp
emVfdCBhbGxvY2F0aW9uLCBpbnQgZmxhZ3MpOwp2b2lkIHBjaV9wb29sX2Rlc3Ryb3lfUjFkN2I5
Y2MyIChzdHJ1Y3QgcGNpX3Bvb2wgKnBvb2wpOwoKdm9pZCAqcGNpX3Bvb2xfYWxsb2NfUjUxMzFi
ODE4IChzdHJ1Y3QgcGNpX3Bvb2wgKnBvb2wsIGludCBmbGFncywgZG1hX2FkZHJfdCAqaGFuZGxl
KTsKdm9pZCBwY2lfcG9vbF9mcmVlX1I3N2I4N2NmMyAoc3RydWN0IHBjaV9wb29sICpwb29sLCB2
b2lkICp2YWRkciwgZG1hX2FkZHJfdCBhZGRyKTsKCgoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvYXNtL3BjaS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvYXNtL3BjaS5oIiAyCiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvYXNtL3BjaS5oIgpleHRlcm4gdW5zaWduZWQgaW50IHBjaWJpb3NfYXNz
aWduX2FsbF9idXNzZXModm9pZCk7CgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBwY2lfbWVtX3N0
YXJ0X1IzZGExNzFmOTsKCgoKdm9pZCBwY2liaW9zX3NldF9tYXN0ZXIoc3RydWN0IHBjaV9kZXYg
KmRldik7CnZvaWQgcGNpYmlvc19wZW5hbGl6ZV9pc2FfaXJxX1I1MjExYzhiZihpbnQgaXJxKTsK
CgoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMu
aCIgMQojIDMwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wY2kuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2xhYi5oIiAx
CiMgMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2xhYi5oIgp0
eXBlZGVmIHN0cnVjdCBrbWVtX2NhY2hlX3Mga21lbV9jYWNoZV90OwoKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21tLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKCgoKIyAxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBldmVudF9SN2IxNmMzNDQ7CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvcHRyYWNlLmgiIDEKIyAyNCAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wdHJhY2UuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMQojIDI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RydWN0IHB0X3JlZ3MgewogICAgICAgIGxv
bmcgZWJ4OwogICAgICAgIGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4OwogICAgICAgIGxvbmcg
ZXNpOwogICAgICAgIGxvbmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAgICAgIGxvbmcgZWF4
OwogICAgICAgIGludCB4ZHM7CiAgICAgICAgaW50IHhlczsKICAgICAgICBsb25nIG9yaWdfZWF4
OwogICAgICAgIGxvbmcgZWlwOwogICAgICAgIGludCB4Y3M7CiAgICAgICAgbG9uZyBlZmxhZ3M7
CiAgICAgICAgbG9uZyBlc3A7CiAgICAgICAgaW50IHhzczsKfTsKIyA2MCAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHRyYWNlLmgiCmV4dGVybiB2b2lkIHNob3dfcmVn
cyhzdHJ1Y3QgcHRfcmVncyAqKTsKIyAyNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9wdHJhY2UuaCIgMgojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiIDEKIyAxNiAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTcgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgOSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDIKIyAxMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saW1pdHMuaCIgMQojIDEyICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTAgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgva2VybmVsLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9nY2Mt
Q1ZTL3ByZWZpeC9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMi9pbmNsdWRlL3N0
ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9zcmMvcnVkby9nY2MtQ1ZTL3ByZWZpeC9saWIvZ2NjLWxp
Yi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMi9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19i
dWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMTEwICIvdXNyL3NyYy9ydWRvL2djYy1D
VlMvcHJlZml4L2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMC4yL2luY2x1ZGUvc3Rk
YXJnLmgiIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDExICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgMSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKIyAxMiAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyAxMyAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDEgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE0ICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgNDkg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgva2VybmVsLmgiCnN0cnVj
dCBjb21wbGV0aW9uOwoKZXh0ZXJuIHN0cnVjdCBub3RpZmllcl9ibG9jayAqcGFuaWNfbm90aWZp
ZXJfbGlzdDsKICAgICAgICAgICB2b2lkIHBhbmljX1IwMTA3NWJmMChjb25zdCBjaGFyICogZm10
LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuLCBmb3JtYXQgKHByaW50Ziwg
MSwgMikpKTsKICAgICAgICAgICB2b2lkIGRvX2V4aXQobG9uZyBlcnJvcl9jb2RlKQogICAgICAg
IF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiAgICAgICAgICAgdm9pZCBjb21wbGV0ZV9hbmRf
ZXhpdF9SOTVkZWZmYjcoc3RydWN0IGNvbXBsZXRpb24gKiwgbG9uZykKICAgICAgICBfX2F0dHJp
YnV0ZV9fKChub3JldHVybikpOwpleHRlcm4gaW50IGFicyhpbnQpOwpleHRlcm4gdW5zaWduZWQg
bG9uZyBzaW1wbGVfc3RydG91bF9SMjAwMDAzMjkoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWdu
ZWQgaW50KTsKZXh0ZXJuIGxvbmcgc2ltcGxlX3N0cnRvbF9SMGI3NDJmZDcoY29uc3QgY2hhciAq
LGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBzaW1wbGVf
c3RydG91bGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIGxvbmcg
bG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpl
eHRlcm4gaW50IHNwcmludGZfUjNjMmM1YWY1KGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQs
IC4uLik7CmV4dGVybiBpbnQgdnNwcmludGZfUjk1NGNiYjI2KGNoYXIgKmJ1ZiwgY29uc3QgY2hh
ciAqLCB2YV9saXN0KTsKZXh0ZXJuIGludCBzbnByaW50Zl9SNzAxZDBlYmQoY2hhciAqIGJ1Ziwg
c2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKZXh0ZXJuIGludCB2c25wcmludGZf
UjU3YTY1MDRlKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlz
dCBhcmdzKTsKCmV4dGVybiBpbnQgc3NjYW5mX1I4NTkyMDRhZihjb25zdCBjaGFyICosIGNvbnN0
IGNoYXIgKiwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHNjYW5mLDIsMykp
KTsKZXh0ZXJuIGludCB2c3NjYW5mX1JiNTA0NDI3MShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
KiwgdmFfbGlzdCk7CgpleHRlcm4gaW50IGdldF9vcHRpb25fUmIwZTEwNzgxKGNoYXIgKipzdHIs
IGludCAqcGludCk7CmV4dGVybiBjaGFyICpnZXRfb3B0aW9uc19SMGZiZmY5YjkoY2hhciAqc3Ry
LCBpbnQgbmludHMsIGludCAqaW50cyk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgbWVtcGFy
c2VfUjIzZjJkMzZmKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0cik7CmV4dGVybiB2b2lkIGRldl9w
cm9iZV9sb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBkZXZfcHJvYmVfdW5sb2NrKHZvaWQpOwoKZXh0
ZXJuIGludCBzZXNzaW9uX29mX3BncnAoaW50IHBncnApOwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMCkpKSBpbnQgcHJpbnRrX1IxYjdkNDA3NChjb25zdCBjaGFyICogZm10LCAuLi4pCiAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwoKZXh0ZXJuIGludCBj
b25zb2xlX2xvZ2xldmVsOwoKc3RhdGljIGlubGluZSB2b2lkIGNvbnNvbGVfc2lsZW50KHZvaWQp
CnsKICAgICAgICBjb25zb2xlX2xvZ2xldmVsID0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNv
bnNvbGVfdmVyYm9zZSh2b2lkKQp7CiAgICAgICAgaWYgKGNvbnNvbGVfbG9nbGV2ZWwpCiAgICAg
ICAgICAgICAgICBjb25zb2xlX2xvZ2xldmVsID0gMTU7Cn0KCmV4dGVybiB2b2lkIGJ1c3Rfc3Bp
bmxvY2tzKGludCB5ZXMpOwpleHRlcm4gaW50IG9vcHNfaW5fcHJvZ3Jlc3M7CiMgMTU3ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpzdHJ1Y3Qgc3lz
aW5mbyB7CiAgICAgICAgbG9uZyB1cHRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb2Fkc1sz
XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFscmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZnJlZXJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNoYXJlZHJhbTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGJ1ZmZlcnJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFsc3dhcDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZyZWVzd2FwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHByb2NzOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHBhZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFsaGln
aDsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVoaWdoOwogICAgICAgIHVuc2lnbmVkIGludCBt
ZW1fdW5pdDsKICAgICAgICBjaGFyIF9mWzIwLTIqc2l6ZW9mKGxvbmcpLXNpemVvZihpbnQpXTsK
fTsKIyAxNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC93YWl0Lmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIg
MQojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3RkZGVmLmgi
IDEKIyAxNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC93YWl0Lmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NwaW5sb2Nr
LmgiIDEKIyAxNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC93YWl0
LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZp
Zy5oIiAxCiMgMTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvd2Fp
dC5oIiAyCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BhZ2Uu
aCIgMQojIDIwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nv
ci5oIiAxCiMgMjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvd2Fp
dC5oIiAyCiMgMzEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvd2Fp
dC5oIgpzdHJ1Y3QgX193YWl0X3F1ZXVlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cgog
ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqIHRhc2s7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCB0YXNrX2xpc3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3dhaXRfcXVldWUgd2FpdF9xdWV1
ZV90OwojIDc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQu
aCIKc3RydWN0IF9fd2FpdF9xdWV1ZV9oZWFkIHsKICAgICAgICBzcGlubG9ja190IGxvY2s7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCB0YXNrX2xpc3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBf
X3dhaXRfcXVldWVfaGVhZCB3YWl0X3F1ZXVlX2hlYWRfdDsKIyAxNTUgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvd2FpdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgaW5p
dF93YWl0cXVldWVfaGVhZCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSkKewoKCgoKICAgICAgICBxLT5s
b2NrID0gKHNwaW5sb2NrX3QpIHsgfTsKICAgICAgICBkbyB7ICgmcS0+dGFza19saXN0KS0+bmV4
dCA9ICgmcS0+dGFza19saXN0KTsgKCZxLT50YXNrX2xpc3QpLT5wcmV2ID0gKCZxLT50YXNrX2xp
c3QpOyB9IHdoaWxlICgwKTsKCgoKCn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3dhaXRxdWV1
ZV9lbnRyeSh3YWl0X3F1ZXVlX3QgKnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewoKCgoKICAg
ICAgICBxLT5mbGFncyA9IDA7CiAgICAgICAgcS0+dGFzayA9IHA7CgoKCn0KCnN0YXRpYyBpbmxp
bmUgaW50IHdhaXRxdWV1ZV9hY3RpdmUod2FpdF9xdWV1ZV9oZWFkX3QgKnEpCnsKCgoKCgoKICAg
ICAgICByZXR1cm4gIWxpc3RfZW1wdHkoJnEtPnRhc2tfbGlzdCk7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCBfX2FkZF93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpoZWFkLCB3YWl0X3F1ZXVl
X3QgKm5ldykKewojIDIwMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC93YWl0LmgiCiAgICAgICAgbGlzdF9hZGQoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+dGFza19s
aXN0KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fYWRkX3dhaXRfcXVldWVfdGFpbCh3YWl0
X3F1ZXVlX2hlYWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2FpdF9xdWV1ZV90ICpuZXcpCnsKIyAyMjAgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvd2FpdC5oIgogICAgICAgIGxpc3RfYWRkX3RhaWwoJm5l
dy0+dGFza19saXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIF9f
cmVtb3ZlX3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKmhlYWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9xdWV1ZV90ICpv
bGQpCnsKCgoKCgogICAgICAgIGxpc3RfZGVsKCZvbGQtPnRhc2tfbGlzdCk7Cn0KIyAxMyAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTQgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdmZzLmgiIDEKCgoKIyAxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zdGF0ZnMuaCIgMQoKCgoKCiMgMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNyAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc3RhdGZzLmgiIDIKCnR5cGVkZWYg
X19rZXJuZWxfZnNpZF90IGZzaWRfdDsKCgoKc3RydWN0IHN0YXRmcyB7CiAgICAgICAgbG9uZyBm
X3R5cGU7CiAgICAgICAgbG9uZyBmX2JzaXplOwogICAgICAgIGxvbmcgZl9ibG9ja3M7CiAgICAg
ICAgbG9uZyBmX2JmcmVlOwogICAgICAgIGxvbmcgZl9iYXZhaWw7CiAgICAgICAgbG9uZyBmX2Zp
bGVzOwogICAgICAgIGxvbmcgZl9mZnJlZTsKICAgICAgICBfX2tlcm5lbF9mc2lkX3QgZl9mc2lk
OwogICAgICAgIGxvbmcgZl9uYW1lbGVuOwogICAgICAgIGxvbmcgZl9zcGFyZVs2XTsKfTsKIyA1
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Zmcy5oIiAyCiMgMTUg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmV0LmgiIDEKIyAyMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9uZXQuaCIKIyAxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMjIgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmV0LmgiIDIKIyAxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAxCgoKCgoKIyAxICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMQojIDUg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NvY2tldC5oIiAyCiMgNyAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc29ja2lvcy5oIiAxCiMg
MjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc29ja2lvcy5oIgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMQoj
IDIyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCIg
MgojIDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc29ja2V0Lmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Vpby5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5o
IiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91aW8uaCIg
MgojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Vpby5oIgpz
dHJ1Y3QgaW92ZWMKewogICAgICAgIHZvaWQgKmlvdl9iYXNlOwogICAgICAgIF9fa2VybmVsX3Np
emVfdCBpb3ZfbGVuOwp9OwojIDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvc29ja2V0LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L3R5cGVzLmgiIDEKIyAxMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9zb2NrZXQuaCIgMgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBzYV9mYW1pbHlfdDsK
CgoKCgpzdHJ1Y3Qgc29ja2FkZHIgewogICAgICAgIHNhX2ZhbWlseV90IHNhX2ZhbWlseTsKICAg
ICAgICBjaGFyIHNhX2RhdGFbMTRdOwp9OwoKc3RydWN0IGxpbmdlciB7CiAgICAgICAgaW50IGxf
b25vZmY7CiAgICAgICAgaW50IGxfbGluZ2VyOwp9OwoKCgoKCgoKc3RydWN0IG1zZ2hkciB7CiAg
ICAgICAgdm9pZCAqIG1zZ19uYW1lOwogICAgICAgIGludCBtc2dfbmFtZWxlbjsKICAgICAgICBz
dHJ1Y3QgaW92ZWMgKiBtc2dfaW92OwogICAgICAgIF9fa2VybmVsX3NpemVfdCBtc2dfaW92bGVu
OwogICAgICAgIHZvaWQgKiBtc2dfY29udHJvbDsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgbXNn
X2NvbnRyb2xsZW47CiAgICAgICAgdW5zaWduZWQgbXNnX2ZsYWdzOwp9OwoKCgoKCgoKc3RydWN0
IGNtc2doZHIgewogICAgICAgIF9fa2VybmVsX3NpemVfdCBjbXNnX2xlbjsKICAgICAgICBpbnQg
Y21zZ19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBlOwp9OwojIDEwMiAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIKc3RhdGljIGlubGluZSBzdHJ1
Y3QgY21zZ2hkciAqIF9fY21zZ19ueHRoZHIodm9pZCAqX19jdGwsIF9fa2VybmVsX3NpemVfdCBf
X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGNtc2doZHIgKl9fY21zZykKewogICAgICAgIHN0cnVjdCBjbXNnaGRyICogX19wdHI7Cgog
ICAgICAgIF9fcHRyID0gKHN0cnVjdCBjbXNnaGRyKikoKCh1bnNpZ25lZCBjaGFyICopIF9fY21z
ZykgKyAoICgoX19jbXNnLT5jbXNnX2xlbikrc2l6ZW9mKGxvbmcpLTEpICYgfihzaXplb2YobG9u
ZyktMSkgKSk7CiAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSgoY2hhciopKF9fcHRyKzEpIC0g
KGNoYXIgKikgX19jdGwpID4gX19zaXplKQogICAgICAgICAgICAgICAgcmV0dXJuIChzdHJ1Y3Qg
Y21zZ2hkciAqKTA7CgogICAgICAgIHJldHVybiBfX3B0cjsKfQoKc3RhdGljIGlubGluZSBzdHJ1
Y3QgY21zZ2hkciAqIGNtc2dfbnh0aGRyIChzdHJ1Y3QgbXNnaGRyICpfX21zZywgc3RydWN0IGNt
c2doZHIgKl9fY21zZykKewogICAgICAgIHJldHVybiBfX2Ntc2dfbnh0aGRyKF9fbXNnLT5tc2df
Y29udHJvbCwgX19tc2ctPm1zZ19jb250cm9sbGVuLCBfX2Ntc2cpOwp9CgoKCgoKCgpzdHJ1Y3Qg
dWNyZWQgewogICAgICAgIF9fdTMyIHBpZDsKICAgICAgICBfX3UzMiB1aWQ7CiAgICAgICAgX191
MzIgZ2lkOwp9OwojIDI0NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9zb2NrZXQuaCIKZXh0ZXJuIGludCBtZW1jcHlfZnJvbWlvdmVjX1I5ZmIzZGQzMCh1bnNpZ25l
ZCBjaGFyICprZGF0YSwgc3RydWN0IGlvdmVjICppb3YsIGludCBsZW4pOwpleHRlcm4gaW50IG1l
bWNweV9mcm9taW92ZWNlbmQodW5zaWduZWQgY2hhciAqa2RhdGEsIHN0cnVjdCBpb3ZlYyAqaW92
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsIGludCBsZW4pOwpl
eHRlcm4gaW50IGNzdW1fcGFydGlhbF9jb3B5X2Zyb21pb3ZlY2VuZCh1bnNpZ25lZCBjaGFyICpr
ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlv
dmVjICppb3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBv
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBsZW4sIGludCAqY3N1bXApOwoKZXh0ZXJuIGludCB2ZXJpZnlfaW92ZWMoc3RydWN0IG1z
Z2hkciAqbSwgc3RydWN0IGlvdmVjICppb3YsIGNoYXIgKmFkZHJlc3MsIGludCBtb2RlKTsKZXh0
ZXJuIGludCBtZW1jcHlfdG9pb3ZlY19SOWNlYjE2M2Moc3RydWN0IGlvdmVjICp2LCB1bnNpZ25l
ZCBjaGFyICprZGF0YSwgaW50IGxlbik7CmV4dGVybiB2b2lkIG1lbWNweV90b2tlcm5lbGlvdmVj
X1JjMTI1ZTA4OChzdHJ1Y3QgaW92ZWMgKmlvdiwgdW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBs
ZW4pOwpleHRlcm4gaW50IG1vdmVfYWRkcl90b191c2VyKHZvaWQgKmthZGRyLCBpbnQga2xlbiwg
dm9pZCAqdWFkZHIsIGludCAqdWxlbik7CmV4dGVybiBpbnQgbW92ZV9hZGRyX3RvX2tlcm5lbCh2
b2lkICp1YWRkciwgaW50IHVsZW4sIHZvaWQgKmthZGRyKTsKZXh0ZXJuIGludCBwdXRfY21zZ19S
ZjM5YmY0ZDkoc3RydWN0IG1zZ2hkciosIGludCBsZXZlbCwgaW50IHR5cGUsIGludCBsZW4sIHZv
aWQgKmRhdGEpOwojIDIzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L25ldC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC93
YWl0LmgiIDEKIyAyNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9u
ZXQuaCIgMgoKc3RydWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDQ5ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25ldC5oIgp0eXBlZGVmIGVudW0gewogIFNTX0ZSRUUg
PSAwLAogIFNTX1VOQ09OTkVDVEVELAogIFNTX0NPTk5FQ1RJTkcsCiAgU1NfQ09OTkVDVEVELAog
IFNTX0RJU0NPTk5FQ1RJTkcKfSBzb2NrZXRfc3RhdGU7CiMgNjUgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmV0LmgiCnN0cnVjdCBzb2NrZXQKewogICAgICAgIHNv
Y2tldF9zdGF0ZSBzdGF0ZTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBz
dHJ1Y3QgcHJvdG9fb3BzICpvcHM7CiAgICAgICAgc3RydWN0IGlub2RlICppbm9kZTsKICAgICAg
ICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jX2xpc3Q7CiAgICAgICAgc3RydWN0IGZpbGUg
KmZpbGU7CiAgICAgICAgc3RydWN0IHNvY2sgKnNrOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90
IHdhaXQ7CgogICAgICAgIHNob3J0IHR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBwYXNzY3Jl
ZDsKfTsKCgoKc3RydWN0IHNjbV9jb29raWU7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3RydWN0
IHBhZ2U7CgpzdHJ1Y3QgcHJvdG9fb3BzIHsKICBpbnQgZmFtaWx5OwoKICBpbnQgKCpyZWxlYXNl
KSAoc3RydWN0IHNvY2tldCAqc29jayk7CiAgaW50ICgqYmluZCkgKHN0cnVjdCBzb2NrZXQgKnNv
Y2ssIHN0cnVjdCBzb2NrYWRkciAqdW15YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzb2NrYWRkcl9sZW4pOwogIGludCAoKmNvbm5lY3QpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBz
dHJ1Y3Qgc29ja2FkZHIgKnVzZXJ2YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz
b2NrYWRkcl9sZW4sIGludCBmbGFncyk7CiAgaW50ICgqc29ja2V0cGFpcikgKHN0cnVjdCBzb2Nr
ZXQgKnNvY2sxLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrMik7CiAgaW50ICgqYWNjZXB0KSAoc3RydWN0
IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jaywKICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBmbGFncyk7CiAgaW50ICgqZ2V0bmFtZV9SN2M2MGQ2NmUpIChzdHJ1Y3Qgc29j
a2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ICp1c29ja2FkZHJfbGVuLCBpbnQgcGVlcik7CiAgdW5zaWduZWQgaW50ICgqcG9sbCkg
KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcG9sbF90YWJs
ZV9zdHJ1Y3QgKndhaXQpOwogIGludCAoKmlvY3RsKSAoc3RydWN0IHNvY2tldCAqc29jaywgdW5z
aWduZWQgaW50IGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXJn
KTsKICBpbnQgKCpsaXN0ZW4pIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGVuKTsKICBpbnQg
KCpzaHV0ZG93bikgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBmbGFncyk7CiAgaW50ICgqc2V0
c29ja29wdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpvcHR2YWwsIGludCBvcHRsZW4pOwogIGludCAo
KmdldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgKm9wdGxlbik7CiAg
aW50ICgqc2VuZG1zZykgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIGlu
dCB0b3RhbF9sZW4sIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKnJlY3Ztc2cpIChz
dHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxfbGVuLCBpbnQg
ZmxhZ3MsIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKm1tYXApIChzdHJ1Y3QgZmls
ZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1h
KTsKICBzc2l6ZV90ICgqc2VuZHBhZ2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcGFn
ZSAqcGFnZSwgaW50IG9mZnNldCwgc2l6ZV90IHNpemUsIGludCBmbGFncyk7Cn07CgpzdHJ1Y3Qg
bmV0X3Byb3RvX2ZhbWlseQp7CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBpbnQgKCpjcmVh
dGUpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCk7CgoKICAgICAgICBzaG9ydCBh
dXRoZW50aWNhdGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0aW9uOwogICAgICAgIHNob3J0IGVu
Y3J5cHRfbmV0Owp9OwoKc3RydWN0IG5ldF9wcm90bwp7CiAgICAgICAgY29uc3QgY2hhciAqbmFt
ZTsKICAgICAgICB2b2lkICgqaW5pdF9mdW5jKShzdHJ1Y3QgbmV0X3Byb3RvICopOwp9OwoKZXh0
ZXJuIGludCBzb2NrX3dha2VfYXN5bmNfUjVkZmY2NDE3KHN0cnVjdCBzb2NrZXQgKnNrLCBpbnQg
aG93LCBpbnQgYmFuZCk7CmV4dGVybiBpbnQgc29ja19yZWdpc3Rlcl9SNzBmNDIyMDUoc3RydWN0
IG5ldF9wcm90b19mYW1pbHkgKmZhbSk7CmV4dGVybiBpbnQgc29ja191bnJlZ2lzdGVyX1IyMzk0
YTA2MihpbnQgZmFtaWx5KTsKZXh0ZXJuIHN0cnVjdCBzb2NrZXQgKnNvY2tfYWxsb2NfUjE0YTg2
ODZmKHZvaWQpOwpleHRlcm4gaW50IHNvY2tfY3JlYXRlX1JlMjdhZGE5ZChpbnQgZmFtaWx5LCBp
bnQgdHlwZSwgaW50IHByb3RvLCBzdHJ1Y3Qgc29ja2V0ICoqKTsKZXh0ZXJuIHZvaWQgc29ja19y
ZWxlYXNlX1JhOTNjMWY2NihzdHJ1Y3Qgc29ja2V0ICopOwpleHRlcm4gaW50IHNvY2tfc2VuZG1z
Z19SMTZmMGRkYWYoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgbGVuKTsK
ZXh0ZXJuIGludCBzb2NrX3JlY3Ztc2dfUjJiYmVhMWE1KHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0
IG1zZ2hkciAqbSwgaW50IGxlbiwgaW50IGZsYWdzKTsKZXh0ZXJuIGludCBzb2NrX3JlYWR2X3dy
aXRldihpbnQgdHlwZSwgc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxlICogZmlsZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpb3ZlYyAqIGlv
diwgbG9uZyBjb3VudCwgbG9uZyBzaXplKTsKCmV4dGVybiBpbnQgbmV0X3JhdGVsaW1pdF9SZjZl
YmMwM2Iodm9pZCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIG5ldF9yYW5kb21fUjFjNjZmNjRjKHZv
aWQpOwpleHRlcm4gdm9pZCBuZXRfc3JhbmRvbV9SZmY5NjNlZDgodW5zaWduZWQgbG9uZyk7CiMg
MTYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgva2Rldl90LmgiIDEKIyA2
NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBrZGV2X3Q7CiMgNzYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgva2Rldl90LmgiCmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWVf
UmMyNThjOTA2KGtkZXZfdCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGtkZXZf
dF90b19ucihrZGV2X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVkIGludCkgKChk
ZXYpID4+IDgpKTw8OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCA4KSAtIDEp
KSk7Cn0KCnN0YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7CiAgICAgICAg
aW50IG1ham9yLCBtaW5vcjsKIyA5OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9rZGV2X3QuaCIKICAgICAgICBtYWpvciA9IChkZXYgPj4gOCk7CiAgICAgICAgbWlu
b3IgPSAoZGV2ICYgMHhmZik7CgogICAgICAgIHJldHVybiAoKChtYWpvcikgPDwgOCkgfCAobWlu
b3IpKTsKfQojIDE3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lvY3Rs
LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9pb2N0
bC5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pb2N0
bC5oIiAyCiMgMTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbGlzdC5o
IiAxCiMgMTkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgi
IDEKCgoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0b21p
Yy5oIiAxCiMgNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kY2Fj
aGUuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW91
bnQuaCIgMQojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v
dW50LmgiCnN0cnVjdCB2ZnNtb3VudAp7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfaGFz
aDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udF9wYXJlbnQ7CiAgICAgICAgc3RydWN0IGRl
bnRyeSAqbW50X21vdW50cG9pbnQ7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqbW50X3Jvb3Q7CiAg
ICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICptbnRfc2I7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBtbnRfbW91bnRzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2NoaWxkOwogICAgICAg
IGF0b21pY190IG1udF9jb3VudDsKICAgICAgICBpbnQgbW50X2ZsYWdzOwogICAgICAgIGNoYXIg
Km1udF9kZXZuYW1lOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2xpc3Q7CiAgICAgICAg
dWlkX3QgbW50X293bmVyOwp9OwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgdmZzbW91bnQgKm1udGdl
dChzdHJ1Y3QgdmZzbW91bnQgKm1udCkKewogICAgICAgIGlmIChtbnQpCiAgICAgICAgICAgICAg
ICBhdG9taWNfaW5jKCZtbnQtPm1udF9jb3VudCk7CiAgICAgICAgcmV0dXJuIG1udDsKfQoKZXh0
ZXJuIHZvaWQgX19tbnRwdXRfUjk3Njk1ZGFhKHN0cnVjdCB2ZnNtb3VudCAqbW50KTsKCnN0YXRp
YyBpbmxpbmUgdm9pZCBtbnRwdXQoc3RydWN0IHZmc21vdW50ICptbnQpCnsKICAgICAgICBpZiAo
bW50KSB7CiAgICAgICAgICAgICAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmbW50LT5tbnRf
Y291bnQpKQogICAgICAgICAgICAgICAgICAgICAgICBfX21udHB1dF9SOTc2OTVkYWEobW50KTsK
ICAgICAgICB9Cn0KIyA4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2RjYWNoZS5oIiAyCiMgMjQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvZGNhY2hlLmgiCnN0cnVjdCBxc3RyIHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICog
bmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBoYXNo
Owp9OwoKc3RydWN0IGRlbnRyeV9zdGF0X3QgewogICAgICAgIGludCBucl9kZW50cnk7CiAgICAg
ICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgYWdlX2xpbWl0OwogICAgICAgIGludCB3YW50
X3BhZ2VzOwogICAgICAgIGludCBkdW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3Rh
dF90IGRlbnRyeV9zdGF0OwoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIHBh
cnRpYWxfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgYywgdW5zaWduZWQgbG9uZyBwcmV2aGFzaCkK
ewogICAgICAgIHJldHVybiAocHJldmhhc2ggKyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9
CgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBlbmRfbmFtZV9oYXNoKHVuc2lnbmVk
IGxvbmcgaGFzaCkKewogICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KSBoYXNoOwp9CgoKc3Rh
dGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHVuc2lnbmVk
IGNoYXIgKiBuYW1lLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBo
YXNoID0gMDsKICAgICAgICB3aGlsZSAobGVuLS0pCiAgICAgICAgICAgICAgICBoYXNoID0gcGFy
dGlhbF9uYW1lX2hhc2goKm5hbWUrKywgaGFzaCk7CiAgICAgICAgcmV0dXJuIGVuZF9uYW1lX2hh
c2goaGFzaCk7Cn0KCgoKc3RydWN0IGRlbnRyeSB7CiAgICAgICAgYXRvbWljX3QgZF9jb3VudDsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZF9mbGFnczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBkX2lu
b2RlOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiBkX3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIGRfaGFzaDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfbHJ1OwogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgZF9jaGlsZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfc3ViZGly
czsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfYWxpYXM7CiAgICAgICAgaW50IGRfbW91bnRl
ZDsKICAgICAgICBzdHJ1Y3QgcXN0ciBkX25hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3Rp
bWU7CiAgICAgICAgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zICpkX29wOwogICAgICAgIHN0cnVj
dCBzdXBlcl9ibG9jayAqIGRfc2I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3Zmc19mbGFnczsK
ICAgICAgICB2b2lkICogZF9mc2RhdGE7CiAgICAgICAgdW5zaWduZWQgY2hhciBkX2luYW1lWzE2
XTsKfTsKCnN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqZF9yZXZhbGlk
YXRlKShzdHJ1Y3QgZGVudHJ5ICosIGludCk7CiAgICAgICAgaW50ICgqZF9oYXNoKSAoc3RydWN0
IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAgICBpbnQgKCpkX2NvbXBhcmUpIChzdHJ1
Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICosIHN0cnVjdCBxc3RyICopOwogICAgICAgIGludCAo
KmRfZGVsZXRlX1IzNTVjZWQ5NSkoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICB2b2lkICgqZF9y
ZWxlYXNlKShzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpkX2lwdXQpKHN0cnVjdCBk
ZW50cnkgKiwgc3RydWN0IGlub2RlICopOwp9OwojIDEyNyAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKZXh0ZXJuIHNwaW5sb2NrX3QgZGNhY2hlX2xv
Y2tfUjczNDYzY2VmOwojIDE0NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2Ryb3Aoc3RydWN0IGRlbnRy
eSAqIGRlbnRyeSkKewogICAgICAgICh2b2lkKSgmZGNhY2hlX2xvY2tfUjczNDYzY2VmKTsKICAg
ICAgICBsaXN0X2RlbCgmZGVudHJ5LT5kX2hhc2gpOwogICAgICAgIGRvIHsgKCZkZW50cnktPmRf
aGFzaCktPm5leHQgPSAoJmRlbnRyeS0+ZF9oYXNoKTsgKCZkZW50cnktPmRfaGFzaCktPnByZXYg
PSAoJmRlbnRyeS0+ZF9oYXNoKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyB9IHdoaWxlKDAp
Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZG5hbWVfZXh0ZXJuYWwoc3RydWN0IGRlbnRyeSAq
ZCkKewogICAgICAgIHJldHVybiBkLT5kX25hbWUubmFtZSAhPSBkLT5kX2luYW1lOwp9CgoKCgpl
eHRlcm4gdm9pZCBkX2luc3RhbnRpYXRlX1IxYjg3NzFjYShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj
dCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9kZWxldGVfUjM1NWNlZDk1KHN0cnVjdCBkZW50cnkg
Kik7CgoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jX1IyMjk3Yzk1NChzdHJ1Y3QgZGVu
dHJ5ICosIGNvbnN0IHN0cnVjdCBxc3RyICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX3Ni
X1JjOGNmYmVkMChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiB2b2lkIHNocmlua19kY2Fj
aGVfcGFyZW50X1IyZWI4OTU4NihzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IGRfaW52YWxp
ZGF0ZV9SYjJlNzJjYzkoc3RydWN0IGRlbnRyeSAqKTsKCgpzdHJ1Y3Qgem9uZV9zdHJ1Y3Q7Cgpl
eHRlcm4gaW50IHNocmlua19kY2FjaGVfbWVtb3J5KGludCwgdW5zaWduZWQgaW50KTsKZXh0ZXJu
IHZvaWQgcHJ1bmVfZGNhY2hlX1I2Y2YyOGY3NyhpbnQpOwoKCmV4dGVybiBpbnQgc2hyaW5rX2lj
YWNoZV9tZW1vcnkoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBwcnVuZV9pY2FjaGUoaW50KTsKCgpl
eHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Nfcm9vdF9SMjljYThiOWYoc3RydWN0IGlub2Rl
ICopOwoKCmV4dGVybiB2b2lkIGRfZ2Vub2NpZGUoc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBz
dHJ1Y3QgZGVudHJ5ICpkX2ZpbmRfYWxpYXNfUjdkZWJjNzU4KHN0cnVjdCBpbm9kZSAqKTsKZXh0
ZXJuIHZvaWQgZF9wcnVuZV9hbGlhc2VzX1IzMTg1MGViMChzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0
ZXJuIGludCBoYXZlX3N1Ym1vdW50c19SZTkyMTA1Mjcoc3RydWN0IGRlbnRyeSAqKTsKCgoKCmV4
dGVybiB2b2lkIGRfcmVoYXNoX1JlZjY4Y2UwOChzdHJ1Y3QgZGVudHJ5ICopOwojIDIwNyAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9f
aW5saW5lX18gdm9pZCBkX2FkZChzdHJ1Y3QgZGVudHJ5ICogZW50cnksIHN0cnVjdCBpbm9kZSAq
IGlub2RlKQp7CiAgICAgICAgZF9pbnN0YW50aWF0ZV9SMWI4NzcxY2EoZW50cnksIGlub2RlKTsK
ICAgICAgICBkX3JlaGFzaF9SZWY2OGNlMDgoZW50cnkpOwp9CgoKZXh0ZXJuIHZvaWQgZF9tb3Zl
X1IzYzA5NDdiYyhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7CgoKZXh0ZXJuIHN0
cnVjdCBkZW50cnkgKiBkX2xvb2t1cF9SNmRmYjY3YzAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg
cXN0ciAqKTsKCgpleHRlcm4gaW50IGRfdmFsaWRhdGVfUjVmOTVhYzdlKHN0cnVjdCBkZW50cnkg
Kiwgc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBjaGFyICogX19kX3BhdGhfUjZjZjNkOTQ4KHN0
cnVjdCBkZW50cnkgKiwgc3RydWN0IHZmc21vdW50ICosIHN0cnVjdCBkZW50cnkgKiwKICAgICAg
ICBzdHJ1Y3QgdmZzbW91bnQgKiwgY2hhciAqLCBpbnQpOwojIDI0MCAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5lX18gc3Ry
dWN0IGRlbnRyeSAqIGRnZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgaWYgKGRl
bnRyeSkgewogICAgICAgICAgICAgICAgaWYgKCEoKCZkZW50cnktPmRfY291bnQpLT5jb3VudGVy
KSkKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4
MGYsMHgwYiIpOwogICAgICAgICAgICAgICAgYXRvbWljX2luYygmZGVudHJ5LT5kX2NvdW50KTsK
ICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJuIHN0cnVjdCBkZW50cnkg
KiBkZ2V0X2xvY2tlZF9SMTk2Y2Y3NWQoc3RydWN0IGRlbnRyeSAqKTsKIyAyNTkgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGlu
ZV9fIGludCBkX3VuaGFzaGVkKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVy
biBsaXN0X2VtcHR5KCZkZW50cnktPmRfaGFzaCk7Cn0KCmV4dGVybiB2b2lkIGRwdXRfUmQ2Y2Q4
Mjg0KHN0cnVjdCBkZW50cnkgKik7CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF9tb3VudHBvaW50
KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBkZW50cnktPmRfbW91bnRl
ZDsKfQoKZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqbG9va3VwX21udF9SYzE0NGFiZGQoc3RydWN0
IHZmc21vdW50ICosIHN0cnVjdCBkZW50cnkgKik7CiMgMjAgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2FzbS9zdGF0LmgiIDEKCgoKc3RydWN0IF9fb2xkX2tlcm5lbF9zdGF0
IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c3RfaW5vOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgc3Rfbmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1l
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
dF9jdGltZTsKfTsKCnN0cnVjdCBzdGF0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19wYWQxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf
aW5vOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc3Rfbmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAg
IHVuc2lnbmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf
YmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYXRpbWU7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBfX3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2N0aW1lOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191
bnVzZWQ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ1Owp9OwoKCgoKc3RydWN0IHN0
YXQ2NCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIGNo
YXIgX19wYWQwWzEwXTsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgX19zdF9pbm87CgogICAgICAg
IHVuc2lnbmVkIGludCBzdF9tb2RlOwogICAgICAgIHVuc2lnbmVkIGludCBzdF9ubGluazsKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzdF91aWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9naWQ7
CgogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3JkZXY7CiAgICAgICAgdW5zaWduZWQgY2hhciBf
X3BhZDNbMTBdOwoKICAgICAgICBsb25nIGxvbmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHN0X2Jsa3NpemU7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxvY2tzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgX19wYWQ0OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ1OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210
aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ2OwoKICAgICAgICB1bnNpZ25lZCBsb25n
IHN0X2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ3OwoKICAgICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgc3RfaW5vOwp9OwojIDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvc3RhdC5oIiAyCiMgMjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvY2FjaGUuaCIgMQojIDIyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L3N0ZGRlZi5oIiAxCiMgMjMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvc3RyaW5nLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyAxMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMgoKCgoKCmV4dGVybiBjaGFyICogX19fc3RydG9r
X1IyOTgwNWMxMzsKZXh0ZXJuIGNoYXIgKiBzdHJwYnJrX1I5YTFkZmQ2NShjb25zdCBjaGFyICos
Y29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKiBzdHJ0b2tfUmVlOWMxYmQ0KGNoYXIgKixjb25z
dCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cnNlcF9SODVkZjliNmMoY2hhciAqKixjb25zdCBj
aGFyICopOwpleHRlcm4gX19rZXJuZWxfc2l6ZV90IHN0cnNwbl9SYzdlYzZjMjcoY29uc3QgY2hh
ciAqLGNvbnN0IGNoYXIgKik7CgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2FzbS9zdHJpbmcuaCIgMQoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9hc20vc3RyaW5nLmgiIDIKIyAzMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNweShjaGFy
ICogZGVzdCxjb25zdCBjaGFyICpzcmMpCnsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18gX192b2xh
dGlsZV9fKAogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJzdG9zYlxuXHQiCiAgICAg
ICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYiIKICAgICAgICA6ICI9JlMi
IChkMCksICI9JkQiIChkMSksICI9JmEiIChkMikKICAgICAgICA6IjAiIChzcmMpLCIxIiAoZGVz
dCkgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBjaGFyICogc3Ry
bmNweShjaGFyICogZGVzdCxjb25zdCBjaGFyICpzcmMsc2l6ZV90IGNvdW50KQp7CmludCBkMCwg
ZDEsIGQyLCBkMzsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRkZWNsICUyXG5c
dCIKICAgICAgICAianMgMmZcblx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInN0b3Ni
XG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIK
ICAgICAgICAicmVwXG5cdCIKICAgICAgICAic3Rvc2JcbiIKICAgICAgICAiMjoiCiAgICAgICAg
OiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZjIiAoZDIpLCAiPSZhIiAoZDMpCiAgICAgICAg
OiIwIiAoc3JjKSwiMSIgKGRlc3QpLCIyIiAoY291bnQpIDogIm1lbW9yeSIpOwpyZXR1cm4gZGVz
dDsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNhdChjaGFyICogZGVzdCxjb25zdCBjaGFy
ICogc3JjKQp7CmludCBkMCwgZDEsIGQyLCBkMzsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAg
ICAgInJlcG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJkZWNsICUxXG4iCiAg
ICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVzdGIg
JSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiIgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0m
RCIgKGQxKSwgIj0mYSIgKGQyKSwgIj0mYyIgKGQzKQogICAgICAgIDogIjAiIChzcmMpLCAiMSIg
KGRlc3QpLCAiMiIgKDApLCAiMyIgKDB4ZmZmZmZmZmYpOiJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7
Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJuY2F0KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIg
KiBzcmMsc2l6ZV90IGNvdW50KQp7CmludCBkMCwgZDEsIGQyLCBkMzsKX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJk
ZWNsICUxXG5cdCIKICAgICAgICAibW92bCAlOCwlM1xuIgogICAgICAgICIxOlx0ZGVjbCAlM1xu
XHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAibG9kc2Jcblx0IgogICAgICAgICJzdG9z
YlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuIgog
ICAgICAgICIyOlx0eG9ybCAlMiwlMlxuXHQiCiAgICAgICAgInN0b3NiIgogICAgICAgIDogIj0m
UyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKSwgIj0mYyIgKGQzKQogICAgICAgIDogIjAi
IChzcmMpLCIxIiAoZGVzdCksIjIiICgwKSwiMyIgKDB4ZmZmZmZmZmYpLCAiZyIgKGNvdW50KQog
ICAgICAgIDogIm1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IHN0
cmNtcChjb25zdCBjaGFyICogY3MsY29uc3QgY2hhciAqIGN0KQp7CmludCBkMCwgZDE7CnJlZ2lz
dGVyIGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRsb2RzYlxu
XHQiCiAgICAgICAgInNjYXNiXG5cdCIKICAgICAgICAiam5lIDJmXG5cdCIKICAgICAgICAidGVz
dGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIKICAgICAgICAieG9ybCAlJWVh
eCwlJWVheFxuXHQiCiAgICAgICAgImptcCAzZlxuIgogICAgICAgICIyOlx0c2JibCAlJWVheCwl
JWVheFxuXHQiCiAgICAgICAgIm9yYiAkMSwlJWFsXG4iCiAgICAgICAgIjM6IgogICAgICAgIDoi
PWEiIChfX3JlcyksICI9JlMiIChkMCksICI9JkQiIChkMSkKICAgICAgICAgICAgICAgICAgICAg
OiIxIiAoY3MpLCIyIiAoY3QpKTsKcmV0dXJuIF9fcmVzOwp9CgoKc3RhdGljIGlubGluZSBpbnQg
c3RybmNtcChjb25zdCBjaGFyICogY3MsY29uc3QgY2hhciAqIGN0LHNpemVfdCBjb3VudCkKewpy
ZWdpc3RlciBpbnQgX19yZXM7CmludCBkMCwgZDEsIGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAiMTpcdGRlY2wgJTNcblx0IgogICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgImxv
ZHNiXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJqbmUgM2Zcblx0IgogICAgICAg
ICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcbiIKICAgICAgICAiMjpcdHhv
cmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJqbXAgNGZcbiIKICAgICAgICAiMzpcdHNiYmwg
JSVlYXgsJSVlYXhcblx0IgogICAgICAgICJvcmIgJDEsJSVhbFxuIgogICAgICAgICI0OiIKICAg
ICAgICAgICAgICAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwg
Ij0mYyIgKGQyKQogICAgICAgICAgICAgICAgICAgICA6IjEiIChjcyksIjIiIChjdCksIjMiIChj
b3VudCkpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJjaHIoY29u
c3QgY2hhciAqIHMsIGludCBjKQp7CmludCBkMDsKcmVnaXN0ZXIgY2hhciAqIF9fcmVzOwpfX2Fz
bV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAibW92YiAlJWFsLCUlYWhcbiIKICAgICAgICAiMTpc
dGxvZHNiXG5cdCIKICAgICAgICAiY21wYiAlJWFoLCUlYWxcblx0IgogICAgICAgICJqZSAyZlxu
XHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuXHQiCiAg
ICAgICAgIm1vdmwgJDEsJTFcbiIKICAgICAgICAiMjpcdG1vdmwgJTEsJTBcblx0IgogICAgICAg
ICJkZWNsICUwIgogICAgICAgIDoiPWEiIChfX3JlcyksICI9JlMiIChkMCkgOiAiMSIgKHMpLCIw
IiAoYykpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJyY2hyKGNv
bnN0IGNoYXIgKiBzLCBpbnQgYykKewppbnQgZDAsIGQxOwpyZWdpc3RlciBjaGFyICogX19yZXM7
Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJtb3ZiICUlYWwsJSVhaFxuIgogICAgICAg
ICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJjbXBiICUlYWgsJSVhbFxuXHQiCiAgICAgICAgImpu
ZSAyZlxuXHQiCiAgICAgICAgImxlYWwgLTEoJSVlc2kpLCUwXG4iCiAgICAgICAgIjI6XHR0ZXN0
YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWIiCiAgICAgICAgOiI9ZyIgKF9fcmVzKSwg
Ij0mUyIgKGQwKSwgIj0mYSIgKGQxKSA6IjAiICgwKSwiMSIgKHMpLCIyIiAoYykpOwpyZXR1cm4g
X19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqIHMpCnsK
aW50IGQwOwpyZWdpc3RlciBpbnQgX19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAg
ICJyZXBuZVxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIKICAgICAgICAibm90bCAlMFxuXHQiCiAg
ICAgICAgImRlY2wgJTAiCiAgICAgICAgOiI9YyIgKF9fcmVzKSwgIj0mRCIgKGQwKSA6IjEiIChz
KSwiYSIgKDApLCAiMCIgKDB4ZmZmZmZmZmYpKTsKcmV0dXJuIF9fcmVzOwp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQgKiBfX21lbWNweSh2b2lkICogdG8sIGNvbnN0IHZvaWQgKiBmcm9tLCBzaXplX3Qg
bikKewppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcCA7
IG1vdnNsXG5cdCIKICAgICAgICAidGVzdGIgJDIsJWI0XG5cdCIKICAgICAgICAiamUgMWZcblx0
IgogICAgICAgICJtb3Zzd1xuIgogICAgICAgICIxOlx0dGVzdGIgJDEsJWI0XG5cdCIKICAgICAg
ICAiamUgMmZcblx0IgogICAgICAgICJtb3ZzYlxuIgogICAgICAgICIyOiIKICAgICAgICA6ICI9
JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikKICAgICAgICA6IjAiIChuLzQpLCAicSIg
KG4pLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25nKSBmcm9tKQogICAgICAgIDogIm1lbW9yeSIp
OwpyZXR1cm4gKHRvKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fY29uc3RhbnRfbWVt
Y3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBuKQp7CiAgICAgICAgc3dp
dGNoIChuKSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAg
ICAgKih1bnNpZ25lZCBjaGFyICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilmcm9tOwog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDI6
CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKil0byA9ICooY29uc3Qg
dW5zaWduZWQgc2hvcnQgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87
CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWdu
ZWQgc2hvcnQgKil0byA9ICooY29uc3QgdW5zaWduZWQgc2hvcnQgKilmcm9tOwogICAgICAgICAg
ICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGNoYXIgKil0bykgPSAqKDIrKGNvbnN0IHVuc2ln
bmVkIGNoYXIgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAg
ICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxv
bmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAg
ICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilm
cm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIHNob3J0ICopdG8pID0g
KigyKyhjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICAgICAg
ICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsK
ICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhj
b25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICAgICAgICAgICoo
dW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAg
ICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhjb25zdCB1
bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5zaWdu
ZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDE2OgogICAg
ICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWdu
ZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMSsodW5zaWduZWQgbG9u
ZyAqKXRvKSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAg
ICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDIrKGNvbnN0IHVuc2lnbmVk
IGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigzKyh1bnNpZ25lZCBsb25n
ICopdG8pID0gKigzKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjA6CiAgICAgICAgICAg
ICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25n
ICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8p
ID0gKigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICooMisodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgbG9uZyAq
KWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDMrKHVuc2lnbmVkIGxvbmcgKil0bykg
PSAqKDMrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgKig0Kyh1bnNpZ25lZCBsb25nICopdG8pID0gKig0Kyhjb25zdCB1bnNpZ25lZCBsb25nICop
ZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICB9CgoKCgoK
Cgp7CiAgICAgICAgaW50IGQwLCBkMSwgZDI7CiAgICAgICAgc3dpdGNoIChuICUgNCkgewogICAg
ICAgICAgICAgICAgY2FzZSAwOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNsIiAi
IiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgo
bG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAg
ICAgICAgICAgICAgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNsIiAi
XG5cdG1vdnNiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikgOiAiMCIgKG4v
NCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJu
IHRvOwogICAgICAgICAgICAgICAgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7
IG1vdnNsIiAiXG5cdG1vdnN3IiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikg
OiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIp
OzsgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxl
X18oICJyZXAgOyBtb3ZzbCIgIlxuXHRtb3Zzd1xuXHRtb3ZzYiIgOiAiPSZjIiAoZDApLCAiPSZE
IiAoZDEpLCAiPSZTIiAoZDIpIDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25n
KSBmcm9tKSA6ICJtZW1vcnkiKTs7IHJldHVybiB0bzsKICAgICAgICB9Cn0KCgp9CiMgMzM1ICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKZXh0ZXJuIHZv
aWQgX19zdHJ1Y3RfY3B5X2J1ZyAodm9pZCk7CiMgMzQ1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSB2b2lkICogbWVtbW92ZSh2
b2lkICogZGVzdCxjb25zdCB2b2lkICogc3JjLCBzaXplX3QgbikKewppbnQgZDAsIGQxLCBkMjsK
aWYgKGRlc3Q8c3JjKQpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwXG5cdCIKICAg
ICAgICAibW92c2IiCiAgICAgICAgOiAiPSZjIiAoZDApLCAiPSZTIiAoZDEpLCAiPSZEIiAoZDIp
CiAgICAgICAgOiIwIiAobiksIjEiIChzcmMpLCIyIiAoZGVzdCkKICAgICAgICA6ICJtZW1vcnki
KTsKZWxzZQpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAic3RkXG5cdCIKICAgICAgICAi
cmVwXG5cdCIKICAgICAgICAibW92c2Jcblx0IgogICAgICAgICJjbGQiCiAgICAgICAgOiAiPSZj
IiAoZDApLCAiPSZTIiAoZDEpLCAiPSZEIiAoZDIpCiAgICAgICAgOiIwIiAobiksCiAgICAgICAg
ICIxIiAobi0xKyhjb25zdCBjaGFyICopc3JjKSwKICAgICAgICAgIjIiIChuLTErKGNoYXIgKilk
ZXN0KQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgKiBtZW1jaHIoY29uc3Qgdm9pZCAqIGNzLGludCBjLHNpemVfdCBjb3VudCkKewppbnQg
ZDA7CnJlZ2lzdGVyIHZvaWQgKiBfX3JlczsKaWYgKCFjb3VudCkKICAgICAgICByZXR1cm4gKCh2
b2lkICopMCk7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAg
ICAgInNjYXNiXG5cdCIKICAgICAgICAiamUgMWZcblx0IgogICAgICAgICJtb3ZsICQxLCUwXG4i
CiAgICAgICAgIjE6XHRkZWNsICUwIgogICAgICAgIDoiPUQiIChfX3JlcyksICI9JmMiIChkMCkg
OiAiYSIgKGMpLCIwIiAoY3MpLCIxIiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9CgpzdGF0aWMg
aW5saW5lIHZvaWQgKiBfX21lbXNldF9nZW5lcmljKHZvaWQgKiBzLCBjaGFyIGMsc2l6ZV90IGNv
dW50KQp7CmludCBkMCwgZDE7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBcblx0
IgogICAgICAgICJzdG9zYiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKICAgICAg
ICA6ImEiIChjKSwiMSIgKHMpLCIwIiAoY291bnQpCiAgICAgICAgOiJtZW1vcnkiKTsKcmV0dXJu
IHM7Cn0KIyA0MDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N0cmlu
Zy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX2NvbnN0YW50X2NfbWVtc2V0KHZvaWQgKiBzLCB1
bnNpZ25lZCBsb25nIGMsIHNpemVfdCBjb3VudCkKewppbnQgZDAsIGQxOwpfX2FzbV9fIF9fdm9s
YXRpbGVfXygKICAgICAgICAicmVwIDsgc3Rvc2xcblx0IgogICAgICAgICJ0ZXN0YiAkMiwlYjNc
blx0IgogICAgICAgICJqZSAxZlxuXHQiCiAgICAgICAgInN0b3N3XG4iCiAgICAgICAgIjE6XHR0
ZXN0YiAkMSwlYjNcblx0IgogICAgICAgICJqZSAyZlxuXHQiCiAgICAgICAgInN0b3NiXG4iCiAg
ICAgICAgIjI6IgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKQogICAgICAgIDoiYSIg
KGMpLCAicSIgKGNvdW50KSwgIjAiIChjb3VudC80KSwgIjEiICgobG9uZykgcykKICAgICAgICA6
Im1lbW9yeSIpOwpyZXR1cm4gKHMpOwp9CgoKCnN0YXRpYyBpbmxpbmUgc2l6ZV90IHN0cm5sZW4o
Y29uc3QgY2hhciAqIHMsIHNpemVfdCBjb3VudCkKewppbnQgZDA7CnJlZ2lzdGVyIGludCBfX3Jl
czsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIm1vdmwgJTIsJTBcblx0IgogICAgICAg
ICJqbXAgMmZcbiIKICAgICAgICAiMTpcdGNtcGIgJDAsKCUwKVxuXHQiCiAgICAgICAgImplIDNm
XG5cdCIKICAgICAgICAiaW5jbCAlMFxuIgogICAgICAgICIyOlx0ZGVjbCAlMVxuXHQiCiAgICAg
ICAgImNtcGwgJC0xLCUxXG5cdCIKICAgICAgICAiam5lIDFiXG4iCiAgICAgICAgIjM6XHRzdWJs
ICUyLCUwIgogICAgICAgIDoiPWEiIChfX3JlcyksICI9JmQiIChkMCkKICAgICAgICA6ImMiIChz
KSwiMSIgKGNvdW50KSk7CnJldHVybiBfX3JlczsKfQoKCgoKZXh0ZXJuIGNoYXIgKnN0cnN0cl9S
MWU2ZDI2YTgoY29uc3QgY2hhciAqY3MsIGNvbnN0IGNoYXIgKmN0KTsKCgoKCgpzdGF0aWMgaW5s
aW5lIHZvaWQgKiBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCh2b2lkICogcywgdW5zaWdu
ZWQgbG9uZyBwYXR0ZXJuLCBzaXplX3QgY291bnQpCnsKICAgICAgICBzd2l0Y2ggKGNvdW50KSB7
CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBz
OwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2ln
bmVkIGNoYXIgKilzID0gcGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7
CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWdu
ZWQgc2hvcnQgKilzID0gcGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7
CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWdu
ZWQgc2hvcnQgKilzID0gcGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNp
Z25lZCBjaGFyICopcykgPSBwYXR0ZXJuOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
czsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNp
Z25lZCBsb25nICopcyA9IHBhdHRlcm47CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBz
OwogICAgICAgIH0KCgoKCgoKCnsKICAgICAgICBpbnQgZDAsIGQxOwogICAgICAgIHN3aXRjaCAo
Y291bnQgJSA0KSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9f
KCAicmVwIDsgc3Rvc2wiICIiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVy
biksIjAiIChjb3VudC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAg
ICAgICAgICAgICAgICBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wi
ICJcblx0c3Rvc2IiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAi
IChjb3VudC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAg
ICAgICAgICBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0
c3Rvc3ciIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3Vu
dC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAg
ICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3N3
XG5cdHN0b3NiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAo
Y291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgIH0K
fQoKCn0KIyA1MTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N0cmlu
Zy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKiBtZW1zY2FuKHZvaWQgKiBhZGRyLCBpbnQgYywgc2l6
ZV90IHNpemUpCnsKICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gYWRk
cjsKICAgICAgICBfX2FzbV9fKCJyZXBuejsgc2Nhc2Jcblx0IgogICAgICAgICAgICAgICAgImpu
eiAxZlxuXHQiCiAgICAgICAgICAgICAgICAiZGVjICUlZWRpXG4iCiAgICAgICAgICAgICAgICAi
MToiCiAgICAgICAgICAgICAgICA6ICI9RCIgKGFkZHIpLCAiPWMiIChzaXplKQogICAgICAgICAg
ICAgICAgOiAiMCIgKGFkZHIpLCAiMSIgKHNpemUpLCAiYSIgKGMpKTsKICAgICAgICByZXR1cm4g
YWRkcjsKfQojIDI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N0
cmluZy5oIiAyCiMgNDYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
c3RyaW5nLmgiCmV4dGVybiBpbnQgc3RybmljbXBfUjRlODMwYTNlKGNvbnN0IGNoYXIgKiwgY29u
c3QgY2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwojIDc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpleHRlcm4gaW50IF9fYnVpbHRpbl9tZW1jbXAo
Y29uc3Qgdm9pZCAqLGNvbnN0IHZvaWQgKixfX2tlcm5lbF9zaXplX3QpOwojIDI0ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAyNiAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDkgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAyCiMgMzYgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxp
bmVfXyB2b2lkIHNldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0c2wgJTEsJTAiCiAg
ICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAg
ICAgICAgIDoiSXIiIChucikpOwp9CiMgNTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc2V0X2JpdChpbnQg
bnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXygKICAgICAgICAgICAg
ICAgICJidHNsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcg
KikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDcxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18g
dm9pZCBjbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0cmwgJTEsJTAiCiAgICAg
ICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAg
ICAgIDoiSXIiIChucikpOwp9CiMgOTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fY2hhbmdlX2JpdChpbnQg
bnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgICAgICAgICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2
b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyAx
MDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0
aWMgX19pbmxpbmVfXyB2b2lkIGNoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRk
cikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0
Y2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRy
KSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgMTIzICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRl
c3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGlu
dCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAg
ICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRi
aXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6Ikly
IiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAxNDMgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxp
bmVfXyBpbnQgX190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIp
CnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fKAogICAgICAgICAgICAgICAg
ImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQp
LCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAo
bnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTYyICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3Rf
YW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50
IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICIiCiAgICAgICAgICAgICAg
ICAiYnRybCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJp
dCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIi
IChucikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDE4MiAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGlu
ZV9fIGludCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRy
KQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAg
ICJidHJsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0
KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIg
KG5yKSk7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQoKCnN0YXRpYyBfX2lubGluZV9fIGludCBf
X3Rlc3RfYW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAg
ICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg
ICAgICAgImJ0Y2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChv
bGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6
IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMTMgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19p
bmxpbmVfXyBpbnQgdGVzdF9hbmRfY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBh
ZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
ICIiCiAgICAgICAgICAgICAgICAiYnRjbCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAg
ICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAg
ICAgICAgICAgICAgIDoiSXIiIChucikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIG9sZGJp
dDsKfQojIDIzMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYml0b3Bz
LmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBjb25zdGFudF90ZXN0X2JpdChpbnQgbnIsIGNvbnN0
IHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgcmV0dXJuICgoMVVMIDw8IChuciAmIDMx
KSkgJiAoKChjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgYWRkcilbbnIgPj4gNV0pKSAh
PSAwOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdmFyaWFibGVfdGVzdF9iaXQoaW50IG5yLCB2
b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0bCAlMiwlMVxuXHRzYmJsICUwLCUw
IgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCkKICAgICAgICAgICAgICAgIDoibSIgKCgq
KHZvbGF0aWxlIGxvbmcgKikgYWRkcikpLCJJciIgKG5yKSk7CiAgICAgICAgcmV0dXJuIG9sZGJp
dDsKfQojIDI2MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYml0b3Bz
LmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRy
LCB1bnNpZ25lZCBzaXplKQp7CiAgICAgICAgaW50IGQwLCBkMSwgZDI7CiAgICAgICAgaW50IHJl
czsKCiAgICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIm1vdmwgJC0xLCUlZWF4XG5c
dCIKICAgICAgICAgICAgICAgICJ4b3JsICUlZWR4LCUlZWR4XG5cdCIKICAgICAgICAgICAgICAg
ICJyZXBlOyBzY2FzbFxuXHQiCiAgICAgICAgICAgICAgICAiamUgMWZcblx0IgogICAgICAgICAg
ICAgICAgInhvcmwgLTQoJSVlZGkpLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJzdWJsICQ0
LCUlZWRpXG5cdCIKICAgICAgICAgICAgICAgICJic2ZsICUlZWF4LCUlZWR4XG4iCiAgICAgICAg
ICAgICAgICAiMTpcdHN1YmwgJSVlYngsJSVlZGlcblx0IgogICAgICAgICAgICAgICAgInNobGwg
JDMsJSVlZGlcblx0IgogICAgICAgICAgICAgICAgImFkZGwgJSVlZGksJSVlZHgiCiAgICAgICAg
ICAgICAgICA6Ij1kIiAocmVzKSwgIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKQog
ICAgICAgICAgICAgICAgOiIxIiAoKHNpemUgKyAzMSkgPj4gNSksICIyIiAoYWRkciksICJiIiAo
YWRkcikpOwogICAgICAgIHJldHVybiByZXM7Cn0KCgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGlu
dCBmaW5kX25leHRfemVyb19iaXQgKHZvaWQgKiBhZGRyLCBpbnQgc2l6ZSwgaW50IG9mZnNldCkK
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgKiBwID0gKCh1bnNpZ25lZCBsb25nICopIGFkZHIpICsg
KG9mZnNldCA+PiA1KTsKICAgICAgICBpbnQgc2V0ID0gMCwgYml0ID0gb2Zmc2V0ICYgMzEsIHJl
czsKCiAgICAgICAgaWYgKGJpdCkgewoKCgogICAgICAgICAgICAgICAgX19hc21fXygiYnNmbCAl
MSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICJqbmUgMWZcblx0IgogICAgICAgICAg
ICAgICAgICAgICAgICAibW92bCAkMzIsICUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIx
OiIKICAgICAgICAgICAgICAgICAgICAgICAgOiAiPXIiIChzZXQpCiAgICAgICAgICAgICAgICAg
ICAgICAgIDogInIiICh+KCpwID4+IGJpdCkpKTsKICAgICAgICAgICAgICAgIGlmIChzZXQgPCAo
MzIgLSBiaXQpKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0ICsgb2Zmc2V0Owog
ICAgICAgICAgICAgICAgc2V0ID0gMzIgLSBiaXQ7CiAgICAgICAgICAgICAgICBwKys7CiAgICAg
ICAgfQoKCgogICAgICAgIHJlcyA9IGZpbmRfZmlyc3RfemVyb19iaXQgKHAsIHNpemUgLSAzMiAq
IChwIC0gKHVuc2lnbmVkIGxvbmcgKikgYWRkcikpOwogICAgICAgIHJldHVybiAob2Zmc2V0ICsg
c2V0ICsgcmVzKTsKfQoKCgoKCgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBmZnoo
dW5zaWduZWQgbG9uZyB3b3JkKQp7CiAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMCIKICAgICAg
ICAgICAgICAgIDoiPXIiICh3b3JkKQogICAgICAgICAgICAgICAgOiJyIiAofndvcmQpKTsKICAg
ICAgICByZXR1cm4gd29yZDsKfQojIDM0MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBmZnMoaW50IHgpCnsKICAg
ICAgICBpbnQgcjsKCiAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAg
ICAgICAiam56IDFmXG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsICQtMSwlMFxuIgogICAgICAg
ICAgICAgICAgIjE6IiA6ICI9ciIgKHIpIDogImciICh4KSk7CiAgICAgICAgcmV0dXJuIHIrMTsK
fQojIDI3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
CnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA1NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgZmlsZXNfc3RhdF9zdHJ1Y3QgewogICAgICAg
IGludCBucl9maWxlczsKICAgICAgICBpbnQgbnJfZnJlZV9maWxlczsKICAgICAgICBpbnQgbWF4
X2ZpbGVzOwp9OwpleHRlcm4gc3RydWN0IGZpbGVzX3N0YXRfc3RydWN0IGZpbGVzX3N0YXRfUjAz
Y2FkYTI3OwoKc3RydWN0IGlub2Rlc19zdGF0X3QgewogICAgICAgIGludCBucl9pbm9kZXM7CiAg
ICAgICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgZHVtbXlbNV07Cn07CmV4dGVybiBzdHJ1
Y3QgaW5vZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKCmV4dGVybiBpbnQgbGVhc2VzX2VuYWJsZSwg
ZGlyX25vdGlmeV9lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CiMgMjAwICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMQojIDUgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMgMzkgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAyCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDYgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAyCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2VnbWVudC5oIiAxCiMgNyAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIKIyAxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAxCiMgMTEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvYml0b3BzLmgiCnN0YXRpYyBpbmxp
bmUgaW50IGdlbmVyaWNfZmZzKGludCB4KQp7CiAgICAgICAgaW50IHIgPSAxOwoKICAgICAgICBp
ZiAoIXgpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBpZiAoISh4ICYgMHhmZmZm
KSkgewogICAgICAgICAgICAgICAgeCA+Pj0gMTY7CiAgICAgICAgICAgICAgICByICs9IDE2Owog
ICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMHhmZikpIHsKICAgICAgICAgICAgICAgIHggPj49
IDg7CiAgICAgICAgICAgICAgICByICs9IDg7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAw
eGYpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSA0OwogICAgICAgICAgICAgICAgciArPSA0Owog
ICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMykpIHsKICAgICAgICAgICAgICAgIHggPj49IDI7
CiAgICAgICAgICAgICAgICByICs9IDI7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAxKSkg
ewogICAgICAgICAgICAgICAgeCA+Pj0gMTsKICAgICAgICAgICAgICAgIHIgKz0gMTsKICAgICAg
ICB9CiAgICAgICAgcmV0dXJuIHI7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg
Z2VuZXJpY19od2VpZ2h0MzIodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQg
cmVzID0gKHcgJiAweDU1NTU1NTU1KSArICgodyA+PiAxKSAmIDB4NTU1NTU1NTUpOwogICAgICAg
IHJlcyA9IChyZXMgJiAweDMzMzMzMzMzKSArICgocmVzID4+IDIpICYgMHgzMzMzMzMzMyk7CiAg
ICAgICAgcmVzID0gKHJlcyAmIDB4MEYwRjBGMEYpICsgKChyZXMgPj4gNCkgJiAweDBGMEYwRjBG
KTsKICAgICAgICByZXMgPSAocmVzICYgMHgwMEZGMDBGRikgKyAoKHJlcyA+PiA4KSAmIDB4MDBG
RjAwRkYpOwogICAgICAgIHJldHVybiAocmVzICYgMHgwMDAwRkZGRikgKyAoKHJlcyA+PiAxNikg
JiAweDAwMDBGRkZGKTsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2Vp
Z2h0MTYodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0gKHcgJiAw
eDU1NTUpICsgKCh3ID4+IDEpICYgMHg1NTU1KTsKICAgICAgICByZXMgPSAocmVzICYgMHgzMzMz
KSArICgocmVzID4+IDIpICYgMHgzMzMzKTsKICAgICAgICByZXMgPSAocmVzICYgMHgwRjBGKSAr
ICgocmVzID4+IDQpICYgMHgwRjBGKTsKICAgICAgICByZXR1cm4gKHJlcyAmIDB4MDBGRikgKyAo
KHJlcyA+PiA4KSAmIDB4MDBGRik7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVy
aWNfaHdlaWdodDgodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0g
KHcgJiAweDU1KSArICgodyA+PiAxKSAmIDB4NTUpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDMz
KSArICgocmVzID4+IDIpICYgMHgzMyk7CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDBGKSArICgo
cmVzID4+IDQpICYgMHgwRik7Cn0KCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9hc20vYml0b3BzLmgiIDEKIyA3MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9iaXRvcHMuaCIgMgojIDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvYXNtL3N5c3RlbS5oIiAyCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKZXh0ZXJuIHZvaWQg
X19zd2l0Y2hfdG8oc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
Km5leHQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA2MyAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
bG9uZyBfZ2V0X2Jhc2UoY2hhciAqIGFkZHIpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fYmFz
ZTsKICAgICAgICBfX2FzbV9fKCJtb3ZiICUzLCUlZGhcblx0IgogICAgICAgICAgICAgICAgIm1v
dmIgJTIsJSVkbFxuXHQiCiAgICAgICAgICAgICAgICAic2hsbCAkMTYsJSVlZHhcblx0IgogICAg
ICAgICAgICAgICAgIm1vdncgJTEsJSVkeCIKICAgICAgICAgICAgICAgIDoiPSZkIiAoX19iYXNl
KQogICAgICAgICAgICAgICAgOiJtIiAoKigoYWRkcikrMikpLAogICAgICAgICAgICAgICAgICJt
IiAoKigoYWRkcikrNCkpLAogICAgICAgICAgICAgICAgICJtIiAoKigoYWRkcikrNykpKTsKICAg
ICAgICByZXR1cm4gX19iYXNlOwp9CiMgMTMwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9saW1p
dCh1bnNpZ25lZCBsb25nIHNlZ21lbnQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fbGltaXQ7
CiAgICAgICAgX19hc21fXygibHNsbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChfX2xp
bWl0KToiciIgKHNlZ21lbnQpKTsKICAgICAgICByZXR1cm4gX19saW1pdCsxOwp9CgoKCgoKCgpz
dHJ1Y3QgX194Y2hnX2R1bW15IHsgdW5zaWduZWQgbG9uZyBhWzEwMF07IH07CiMgMTU3ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGlu
ZSB2b2lkIF9fc2V0XzY0Yml0ICh1bnNpZ25lZCBsb25nIGxvbmcgKiBwdHIsCiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgbG93LCB1bnNpZ25lZCBpbnQgaGlnaCkKewogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fICgKICAgICAgICAgICAgICAgICJcbjE6XHQiCiAgICAgICAgICAgICAg
ICAibW92bCAoJTApLCAlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAibW92bCA0KCUwKSwgJSVl
ZHhcblx0IgogICAgICAgICAgICAgICAgImNtcHhjaGc4YiAoJTApXG5cdCIKICAgICAgICAgICAg
ICAgICJqbnogMWIiCiAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICA6ICJEIihwdHIp
LAogICAgICAgICAgICAgICAgICAgICAgICAiYiIobG93KSwKICAgICAgICAgICAgICAgICAgICAg
ICAgImMiKGhpZ2gpCiAgICAgICAgICAgICAgICA6ICJheCIsImR4IiwibWVtb3J5Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF9jb25zdGFudCAodW5zaWduZWQgbG9uZyBsb25n
ICpwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCnsKICAgICAgICBfX3NldF82NGJpdChwdHIsKHVuc2ln
bmVkIGludCkodmFsdWUpLCAodW5zaWduZWQgaW50KSgodmFsdWUpPj4zMlVMTCkpOwp9CgoKCnN0
YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF92YXIgKHVuc2lnbmVkIGxvbmcgbG9uZyAqcHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQp7CiAg
ICAgICAgX19zZXRfNjRiaXQocHRyLCooKCh1bnNpZ25lZCBpbnQqKSYodmFsdWUpKSswKSwgKigo
KHVuc2lnbmVkIGludCopJih2YWx1ZSkpKzEpKTsKfQojIDIwMiAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u
ZyBfX3hjaGcodW5zaWduZWQgbG9uZyB4LCB2b2xhdGlsZSB2b2lkICogcHRyLCBpbnQgc2l6ZSkK
ewogICAgICAgIHN3aXRjaCAoc2l6ZSkgewogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAg
ICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ2IgJWIwLCUxIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoiPXEiICh4KQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIg
KHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Y2hndyAldzAsJTEiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiI9ciIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIiAoeCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAg
ICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGdsICUwLCUxIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDoiPXIiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIgKHgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiB4Owp9CiMgMjM2ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBsb25nIF9fY21weGNoZyh2b2xhdGlsZSB2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcg
b2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bmV3LCBpbnQgc2l6ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJldjsKICAgICAgICBzd2l0
Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygiIiAiY21weGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihv
bGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAg
ICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCIiICJjbXB4Y2hndyAldzEsJTIiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICop
KHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAgICAgY2FzZSA0Ogog
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiIgImNtcHhjaGdsICUxLCUyIgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9f
eGNoZ19kdW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAg
ICAgIH0KICAgICAgICByZXR1cm4gb2xkOwp9CiMgMzQwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKdm9pZCBkaXNhYmxlX2hsdF9SNzk0NDg3ZWUodm9p
ZCk7CnZvaWQgZW5hYmxlX2hsdF9SOWM3MDc3YmQodm9pZCk7CiMgNDAgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyA0MSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMQojIDQyICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMQojIDEwICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiCiMgMSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKIyAxMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCgoKCgoKIyAxICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTcg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE4
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMg
MTkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMg
MjAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMg
MjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgoK
c3RydWN0IHJ3X3NlbWFwaG9yZTsKCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9hc20vcndzZW0uaCIgMQojIDQxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2FzbS9yd3NlbS5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvbGlzdC5oIiAxCiMgNDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvYXNtL3J3c2VtLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA0MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9hc20vcndzZW0uaCIgMgoKc3RydWN0IHJ3c2VtX3dhaXRlcjsKCmV4dGVybiBzdHJ1Y3Qg
cndfc2VtYXBob3JlICpyd3NlbV9kb3duX3JlYWRfZmFpbGVkKHN0cnVjdCByd19zZW1hcGhvcmUg
KnNlbSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHJ3X3NlbWFw
aG9yZSAqcndzZW1fZG93bl93cml0ZV9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKSBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlICpy
d3NlbV93YWtlKHN0cnVjdCByd19zZW1hcGhvcmUgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwoKCgoKc3RydWN0IHJ3X3NlbWFwaG9yZSB7CiAgICAgICAgc2lnbmVkIGxvbmcgY291bnQ7
CgoKCgoKCiAgICAgICAgc3BpbmxvY2tfdCB3YWl0X2xvY2s7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCB3YWl0X2xpc3Q7CgoKCn07CiMgODQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvYXNtL3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3J3c2VtX1JhYzQ1ODM3
NShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBzZW0tPmNvdW50ID0gMHgwMDAw
MDAwMDsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgZG8geyAoJnNlbS0+d2FpdF9s
aXN0KS0+bmV4dCA9ICgmc2VtLT53YWl0X2xpc3QpOyAoJnNlbS0+d2FpdF9saXN0KS0+cHJldiA9
ICgmc2VtLT53YWl0X2xpc3QpOyB9IHdoaWxlICgwKTsKCgoKfQoKCgoKc3RhdGljIGlubGluZSB2
b2lkIF9fZG93bl9yZWFkX1I2ZWJkNDZhNShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBk
b3duX3JlYWRcblx0IgoiIiAiICBpbmNsICAgICAgKCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAg
ICAiICBqcyAgICAgICAgMmZcblx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAg
ICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6
XG5cdCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAg
ICAgICAiICBwdXNobCAgICAgJSVlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAg
IHJ3c2VtX2Rvd25fcmVhZF9mYWlsZWRcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAg
ICUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxuXHQiCiAgICAg
ICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXMi
CiAgICAgICAgICAgICAgICAiIyBlbmRpbmcgZG93bl9yZWFkXG5cdCIKICAgICAgICAgICAgICAg
IDogIittIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAg
ICAgICAgOiAibWVtb3J5IiwgImNjIik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Rvd25f
d3JpdGVfUjdmZDU0YzVjKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIGludCB0
bXA7CgogICAgICAgIHRtcCA9ICgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAwMSk7CiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgZG93bl93
cml0ZVxuXHQiCiIiICIgIHhhZGQgICAgICAlMCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAg
ICIgIHRlc3RsICAgICAlMCwlMFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbnogICAgICAgMmZc
blx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAu
dGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XG5cdCIKICAgICAgICAgICAg
ICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBjYWxsICAgICAg
cndzZW1fZG93bl93cml0ZV9mYWlsZWRcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAg
ICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAgICAgICAxYlxuIgogICAgICAgICAg
ICAgICAgIi5wcmV2aW91c1xuIgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRvd25fd3JpdGUi
CiAgICAgICAgICAgICAgICA6ICIrZCIodG1wKSwgIittIihzZW0tPmNvdW50KQogICAgICAgICAg
ICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNjIik7Cn0KCgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3JlYWRfUjU3ODNlOGVjKHN0cnVjdCByd19zZW1hcGhv
cmUgKnNlbSkKewogICAgICAgIF9fczMyIHRtcCA9IC0weDAwMDAwMDAxOwogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfcmVhZFxu
XHQiCiIiICIgIHhhZGQgICAgICAlJWVkeCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAgICIg
IGpzICAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAg
ICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpcblx0
IgogICAgICAgICAgICAgICAgIiAgZGVjdyAgICAgICUlZHhcblx0IgogICAgICAgICAgICAgICAg
IiAgam56ICAgICAgIDFiXG5cdCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxu
XHQiCiAgICAgICAgICAgICAgICAiICBjYWxsICAgICAgcndzZW1fd2FrZVxuXHQiCiAgICAgICAg
ICAgICAgICAiICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAg
ICAgIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG4iCiAgICAgICAgICAgICAgICAi
IyBlbmRpbmcgX191cF9yZWFkXG4iCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCks
ICIrZCIodG1wKQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAi
bWVtb3J5IiwgImNjIik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3dyaXRlX1I3MGVj
OGJjNihzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBfX3VwX3dyaXRlXG5cdCIKICAgICAg
ICAgICAgICAgICIgIG1vdmwgICAgICAlMiwlJWVkeFxuXHQiCiIiICIgIHhhZGRsICAgICAlJWVk
eCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQiCiAgICAg
ICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ss
XCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAgICAgICAgICAgICAgIiAgZGVj
dyAgICAgICUlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDFiXG5cdCIKICAg
ICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBj
YWxsICAgICAgcndzZW1fd2FrZVxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVl
Y3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAgICAgICAgICAg
ICAiLnByZXZpb3VzXG4iCiAgICAgICAgICAgICAgICAiIyBlbmRpbmcgX191cF93cml0ZVxuIgog
ICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ICJhIihz
ZW0pLCAiaSIoLSgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAwMSkpCiAgICAgICAgICAgICAgICA6
ICJtZW1vcnkiLCAiY2MiLCAiZWR4Iik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCByd3NlbV9h
dG9taWNfYWRkKGludCBkZWx0YSwgc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiIiICJhZGRsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9
bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiaXIiKGRlbHRhKSwgIm0iKHNlbS0+Y291
bnQpKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgcndzZW1fYXRvbWljX3VwZGF0ZShpbnQgZGVs
dGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIGludCB0bXAgPSBkZWx0YTsK
CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiIiICJ4YWRkICUwLCglMikiCiAgICAgICAg
ICAgICAgICA6ICIrciIodG1wKSwgIj1tIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAi
ciIoc2VtKSwgIm0iKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKCiAg
ICAgICAgcmV0dXJuIHRtcCtkZWx0YTsKfQojIDI4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyA0MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9yd3NlbS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgZG93bl9yZWFkKHN0
cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKICAgICAgICBfX2Rvd25fcmVhZF9SNmViZDQ2YTUoc2VtKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCgoKc3RhdGljIGlubGlu
ZSB2b2lkIGRvd25fd3JpdGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICBfX2Rvd25fd3JpdGVf
UjdmZDU0YzVjKHNlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgdXBfcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3Jl
ICpzZW0pCnsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAg
ICAgIF9fdXBfcmVhZF9SNTc4M2U4ZWMoc2VtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB1cF93cml0ZShzdHJ1Y3Qg
cndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKICAgICAgICBfX3VwX3dyaXRlX1I3MGVjOGJjNihzZW0pOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KIyA0MyAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDIKCnN0cnVjdCBzZW1hcGhvcmUgewog
ICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIGludCBzbGVlcGVyczsKICAgICAgICB3YWl0
X3F1ZXVlX2hlYWRfdCB3YWl0OwoKCgp9OwojIDczICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIKc3RhdGljIGlubGluZSB2b2lkIHNlbWFfaW5pdCAo
c3RydWN0IHNlbWFwaG9yZSAqc2VtLCBpbnQgdmFsKQp7CgoKCgoKCiAgICAgICAgKCgoJnNlbS0+
Y291bnQpLT5jb3VudGVyKSA9ICh2YWwpKTsKICAgICAgICBzZW0tPnNsZWVwZXJzID0gMDsKICAg
ICAgICBpbml0X3dhaXRxdWV1ZV9oZWFkKCZzZW0tPndhaXQpOwoKCgp9CgpzdGF0aWMgaW5saW5l
IHZvaWQgaW5pdF9NVVRFWCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgc2VtYV9p
bml0KHNlbSwgMSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X01VVEVYX0xPQ0tFRCAoc3Ry
dWN0IHNlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgc2VtYV9pbml0KHNlbSwgMCk7Cn0KCiBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBfX2Rvd25fZmFpbGVkKHZvaWQgKTsKIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3duX2ZhaWxlZF9pbnRlcnJ1cHRpYmxlKHZv
aWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3duX2ZhaWxlZF90cnls
b2NrKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fdXBfd2FrZXVw
KHZvaWQgKTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBfX2Rvd24oc3RydWN0
IHNlbWFwaG9yZSAqIHNlbSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93
bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVfXygo
cmVncGFybSgwKSkpIGludCBfX2Rvd25fdHJ5bG9jayhzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsK
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fdXAoc3RydWN0IHNlbWFwaG9yZSAq
IHNlbSk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duKHN0cnVjdCBzZW1hcGhvcmUgKiBz
ZW0pCnsKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAi
IyBhdG9taWMgZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAgIiIgImRlY2wgJTBc
blx0IgogICAgICAgICAgICAgICAgImpzIDJmXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAg
ICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAg
ICAgIjI6XHRjYWxsIF9fZG93bl9mYWlsZWRcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxu
IgogICAgICAgICAgICAgICAgIi5wcmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPW0iIChzZW0t
PmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJtZW1v
cnkiKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGRvd25faW50ZXJydXB0aWJsZShzdHJ1Y3Qg
c2VtYXBob3JlICogc2VtKQp7CiAgICAgICAgaW50IHJlc3VsdDsKCgoKCgogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIGludGVycnVwdGlibGUg
ZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAgIiIgImRlY2wgJTFcblx0IgogICAg
ICAgICAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUwLCUwXG4iCiAg
ICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2Nr
LFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9fZG93bl9mYWlsZWRfaW50ZXJy
dXB0aWJsZVxuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAi
LnByZXZpb3VzIgogICAgICAgICAgICAgICAgOiI9YSIgKHJlc3VsdCksICI9bSIgKHNlbS0+Y291
bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIp
OwogICAgICAgIHJldHVybiByZXN1bHQ7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIGludCBkb3duX3Ry
eWxvY2soc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewogICAgICAgIGludCByZXN1bHQ7CgoKCgoK
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGF0b21pYyBp
bnRlcnJ1cHRpYmxlIGRvd24gb3BlcmF0aW9uXG5cdCIKICAgICAgICAgICAgICAgICIiICJkZWNs
ICUxXG5cdCIKICAgICAgICAgICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgICAgICAgICAieG9y
bCAlMCwlMFxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnNlY3Rp
b24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX2Rvd25f
ZmFpbGVkX3RyeWxvY2tcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAgICAg
ICAgICAgIi5wcmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPWEiIChyZXN1bHQpLCAiPW0iIChz
ZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJt
ZW1vcnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZv
aWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgogICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIHVwIG9wZXJhdGlvblxuXHQiCiAgICAg
ICAgICAgICAgICAiIiAiaW5jbCAlMFxuXHQiCiAgICAgICAgICAgICAgICAiamxlIDJmXG4iCiAg
ICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2Nr
LFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9fdXBfd2FrZXVwXG5cdCIKICAg
ICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXMiCiAgICAg
ICAgICAgICAgICA6Ij1tIiAoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiYyIgKHNlbSkK
ICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7Cn0KIyAyMDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9hc20vdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAyCgoKCgoKIyAxICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAyCgoKc3RhdGljIF9faW5s
aW5lX18gX19jb25zdF9fIF9fdTMyIF9fX2FyY2hfX3N3YWIzMihfX3UzMiB4KQp7CgogICAgICAg
IF9fYXNtX18oImJzd2FwICUwIiA6ICI9ciIgKHgpIDogIjAiICh4KSk7CgoKCgoKCgogICAgICAg
IHJldHVybiB4Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2NvbnN0X18gX191MTYgX19fYXJjaF9f
c3dhYjE2KF9fdTE2IHgpCnsKICAgICAgICBfX2FzbV9fKCJ4Y2hnYiAlYjAsJWgwIiA6ICI9cSIg
KHgpIDogIjAiICh4KSk7IHJldHVybiB4OwoKCgp9CiMgNDUgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQojIDExICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVf
ZW5kaWFuLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9i
eXRlb3JkZXIvc3dhYi5oIiAxCiMgMTMxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBf
X3UxNiBfX2Zzd2FiMTYoX191MTYgeCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19zd2FiMTYo
eCk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MTYgX19zd2FiMTZwKF9fdTE2ICp4KQp7CiAgICAg
ICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIxNigqKHgpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2b2lk
IF9fc3dhYjE2cyhfX3UxNiAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9IF9fX2FyY2hf
X3N3YWIxNigqKChhZGRyKSkpOyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19j
b25zdF9fIF9fdTMyIF9fZnN3YWIzMihfX3UzMiB4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hf
X3N3YWIzMih4KTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3UzMiBfX3N3YWIzMnAoX191MzIgKngp
CnsKICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjMyKCooeCkpOwp9CnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgX19zd2FiMzJzKF9fdTMyICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0g
X19fYXJjaF9fc3dhYjMyKCooKGFkZHIpKSk7IH0gd2hpbGUgKDApOwp9CgoKc3RhdGljIF9faW5s
aW5lX18gX19jb25zdF9fIF9fdTY0IF9fZnN3YWI2NChfX3U2NCB4KQp7CgogICAgICAgIF9fdTMy
IGggPSB4ID4+IDMyOwogICAgICAgIF9fdTMyIGwgPSB4ICYgKCgxVUxMPDwzMiktMSk7CiAgICAg
ICAgcmV0dXJuICgoKF9fdTY0KShfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKGwpKSA/ICh7
IF9fdTMyIF9feCA9ICgobCkpOyAoKF9fdTMyKSggKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgw
MDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDBmZjAwVUwp
IDw8IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8ICgo
KF9fdTMyKShfX3gpICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpOyB9KSA6IF9fZnN3
YWIzMigobCkpKSkgPDwgMzIpIHwgKChfX3U2NCkoKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3Uz
MikoaCkpID8gKHsgX191MzIgX194ID0gKChoKSk7ICgoX191MzIpKCAoKChfX3UzMikoX194KSAm
IChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4
MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwZmYwMDAwVUwp
ID4+IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSk7
IH0pIDogX19mc3dhYjMyKChoKSkpKSk7CgoKCn0Kc3RhdGljIF9faW5saW5lX18gX191NjQgX19z
d2FiNjRwKF9fdTY0ICp4KQp7CiAgICAgICAgcmV0dXJuICh7IF9fdTY0IF9fdG1wID0gKCooeCkp
IDsgKHsgX191NjQgX194ID0gKF9fdG1wKTsgKChfX3U2NCkoIChfX3U2NCkoKChfX3U2NCkoX194
KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMDAwZmZVTEwpIDw8IDU2KSB8IChfX3U2NCkoKChfX3U2
NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMGZmMDBVTEwpIDw8IDQwKSB8IChfX3U2NCko
KChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8IChf
X3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwZmYwMDAwMDBVTEwpIDw8IDgp
IHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwZmYwMDAwMDAwMFVMTCkg
Pj4gOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwZmYwMDAwMDAwMDAw
VUxMKSA+PiAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMGZmMDAwMDAw
MDAwMDAwVUxMKSA+PiA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHhmZjAw
MDAwMDAwMDAwMDAwVUxMKSA+PiA1NikgKSk7IH0pOyB9KTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2
b2lkIF9fc3dhYjY0cyhfX3U2NCAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9ICh7IF9f
dTY0IF9fdG1wID0gKCooKGFkZHIpKSkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9fdTY0
KSggKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkg
PDwgNTYpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwZmYw
MFVMTCkgPDwgNDApIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAw
MGZmMDAwMFVMTCkgPDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAw
MDAwMDBmZjAwMDAwMFVMTCkgPDwgOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQp
MHgwMDAwMDBmZjAwMDAwMDAwVUxMKSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChf
X3U2NCkweDAwMDBmZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194
KSAmIChfX3U2NCkweDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChfX3U2
NCkoX194KSAmIChfX3U2NCkweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7IH0p
OyB9IHdoaWxlICgwKTsKfQojIDEyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDIKIyA2NiAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVy
aWMuaCIgMQojIDE1MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9i
eXRlb3JkZXIvZ2VuZXJpYy5oIgpleHRlcm4gX191MzIgbnRvaGwoX191MzIpOwpleHRlcm4gX191
MzIgaHRvbmwoX191MzIpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCBudG9ocyh1bnNp
Z25lZCBzaG9ydCBpbnQpOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50IGh0b25zKHVuc2lnbmVk
IHNob3J0IGludCk7CiMgNjcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMgojIDQ2ICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMgojIDIwMiAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCgpleHRlcm4gdm9pZCB1cGRhdGVfYXRp
bWVfUjdmZmUxZmRiIChzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIHZvaWQgYnVmZmVyX2luaXQo
dW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIGlub2RlX2luaXQodW5zaWduZWQgbG9uZyk7CmV4
dGVybiB2b2lkIG1udF9pbml0KHVuc2lnbmVkIGxvbmcpOwoKCmVudW0gYmhfc3RhdGVfYml0cyB7
CiAgICAgICAgQkhfVXB0b2RhdGUsCiAgICAgICAgQkhfRGlydHksCiAgICAgICAgQkhfTG9jaywK
ICAgICAgICBCSF9SZXEsCiAgICAgICAgQkhfTWFwcGVkLAogICAgICAgIEJIX05ldywKICAgICAg
ICBCSF9Bc3luYywKICAgICAgICBCSF9XYWl0X0lPLAoKICAgICAgICBCSF9Qcml2YXRlU3RhcnQs
CgoKfTsKIyAyMzcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu
aCIKc3RydWN0IGJ1ZmZlcl9oZWFkIHsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX25l
eHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX2Jsb2NrbnI7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgYl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJfbGlzdDsKICAgICAgICBrZGV2X3Qg
Yl9kZXY7CgogICAgICAgIGF0b21pY190IGJfY291bnQ7CiAgICAgICAga2Rldl90IGJfcmRldjsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGJfc3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX2Zs
dXNodGltZTsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX25leHRfZnJlZTsKICAgICAg
ICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfcHJldl9mcmVlOwogICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqYl90aGlzX3BhZ2U7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3JlcW5leHQ7
CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKmJfcHByZXY7CiAgICAgICAgY2hhciAqIGJf
ZGF0YTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqYl9wYWdlOwogICAgICAgIHZvaWQgKCpiX2VuZF9p
bykoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHVwdG9kYXRlKTsKICAgICAgICB2b2lkICpi
X3ByaXZhdGU7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9yc2VjdG9yOwogICAgICAgIHdhaXRf
cXVldWVfaGVhZF90IGJfd2FpdDsKCiAgICAgICAgc3RydWN0IGlub2RlICogYl9pbm9kZTsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJfaW5vZGVfYnVmZmVyczsKfTsKCnR5cGVkZWYgdm9pZCAo
YmhfZW5kX2lvX3QpKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCB1cHRvZGF0ZSk7CnZvaWQg
aW5pdF9idWZmZXJfUjlmZDZjZmQ1KHN0cnVjdCBidWZmZXJfaGVhZCAqLCBiaF9lbmRfaW9fdCAq
LCB2b2lkICopOwojIDI4MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9mcy5oIgpleHRlcm4gdm9pZCBzZXRfYmhfcGFnZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBz
dHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwoKCgoKIyAxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BpcGVfZnNfaS5oIiAxCgoKCgpzdHJ1
Y3QgcGlwZV9pbm9kZV9pbmZvIHsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwogICAg
ICAgIGNoYXIgKmJhc2U7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJlYWRlcnM7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHdyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHdhaXRpbmdfcmVhZGVyczsKICAg
ICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ193cml0ZXJzOwogICAgICAgIHVuc2lnbmVkIGludCBy
X2NvdW50ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IHdfY291bnRlcjsKfTsKIyA0MiAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9waXBlX2ZzX2kuaCIKdm9pZCBwaXBl
X3dhaXQoc3RydWN0IGlub2RlICogaW5vZGUpOwoKc3RydWN0IGlub2RlKiBwaXBlX25ldyhzdHJ1
Y3QgaW5vZGUqIGlub2RlKTsKIyAyODkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbWluaXhfZnNfaS5oIiAxCgoKCgoKCnN0cnVjdCBtaW5peF9pbm9kZV9pbmZvIHsKICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBfX3UxNiBpMV9kYXRhWzE2XTsKICAgICAgICAg
ICAgICAgIF9fdTMyIGkyX2RhdGFbMTZdOwogICAgICAgIH0gdTsKfTsKIyAyOTAgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZXh0Ml9mc19pLmgiIDEKIyAyMiAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9leHQyX2ZzX2kuaCIKc3RydWN0IGV4
dDJfaW5vZGVfaW5mbyB7CiAgICAgICAgX191MzIgaV9kYXRhWzE1XTsKICAgICAgICBfX3UzMiBp
X2ZsYWdzOwogICAgICAgIF9fdTMyIGlfZmFkZHI7CiAgICAgICAgX191OCBpX2ZyYWdfbm87CiAg
ICAgICAgX191OCBpX2ZyYWdfc2l6ZTsKICAgICAgICBfX3UxNiBpX29zeW5jOwogICAgICAgIF9f
dTMyIGlfZmlsZV9hY2w7CiAgICAgICAgX191MzIgaV9kaXJfYWNsOwogICAgICAgIF9fdTMyIGlf
ZHRpbWU7CiAgICAgICAgX191MzIgaV9ibG9ja19ncm91cDsKICAgICAgICBfX3UzMiBpX25leHRf
YWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2dvYWw7CiAgICAgICAgX191
MzIgaV9wcmVhbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2NvdW50OwogICAg
ICAgIF9fdTMyIGlfZGlyX3N0YXJ0X2xvb2t1cDsKICAgICAgICBpbnQgaV9uZXdfaW5vZGU6MTsK
fTsKIyAyOTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaHBmc19mc19p
LmgiIDEKCgoKc3RydWN0IGhwZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBt
bXVfcHJpdmF0ZTsKICAgICAgICBpbm9fdCBpX3BhcmVudF9kaXI7CiAgICAgICAgdW5zaWduZWQg
aV9kbm87CiAgICAgICAgdW5zaWduZWQgaV9kcG9zOwogICAgICAgIHVuc2lnbmVkIGlfZHN1YmRu
bzsKICAgICAgICB1bnNpZ25lZCBpX2ZpbGVfc2VjOwogICAgICAgIHVuc2lnbmVkIGlfZGlza19z
ZWM7CiAgICAgICAgdW5zaWduZWQgaV9uX3NlY3M7CiAgICAgICAgdW5zaWduZWQgaV9lYV9zaXpl
OwogICAgICAgIHVuc2lnbmVkIGlfY29udiA6IDI7CiAgICAgICAgdW5zaWduZWQgaV9lYV9tb2Rl
IDogMTsKICAgICAgICB1bnNpZ25lZCBpX2VhX3VpZCA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9l
YV9naWQgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZGlydHkgOiAxOwogICAgICAgIHN0cnVjdCBz
ZW1hcGhvcmUgaV9zZW07CiAgICAgICAgbG9mZl90ICoqaV9yZGRpcl9vZmY7Cn07CiMgMjkyICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIiAxCgoKCiMg
MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMg
NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9udGZzX2ZzX2kuaCIg
MgoKCnN0cnVjdCBudGZzX2F0dHJpYnV0ZTsKc3RydWN0IG50ZnNfc2JfaW5mbzsKCgoKCnR5cGVk
ZWYgdTggbnRmc191ODsKdHlwZWRlZiB1MTYgbnRmc191MTY7CnR5cGVkZWYgdTMyIG50ZnNfdTMy
Owp0eXBlZGVmIHU2NCBudGZzX3U2NDsKdHlwZWRlZiBzOCBudGZzX3M4Owp0eXBlZGVmIHMxNiBu
dGZzX3MxNjsKdHlwZWRlZiBzMzIgbnRmc19zMzI7CnR5cGVkZWYgczY0IG50ZnNfczY0OwoKCgoK
dHlwZWRlZiBfX2tlcm5lbF9tb2RlX3QgbnRtb2RlX3Q7CgoKCnR5cGVkZWYgdWlkX3QgbnRmc191
aWRfdDsKCgoKdHlwZWRlZiBnaWRfdCBudGZzX2dpZF90OwoKCgp0eXBlZGVmIF9fa2VybmVsX3Np
emVfdCBudGZzX3NpemVfdDsKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgbnRmc190aW1lX3Q7
CgoKCgoKdHlwZWRlZiB1MTYgbnRmc193Y2hhcl90OwoKCgoKdHlwZWRlZiBzNjQgbnRmc19vZmZz
ZXRfdDsKCgoKCnR5cGVkZWYgdTY0IG50ZnNfdGltZTY0X3Q7CiMgNjkgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbnRmc19mc19pLmgiCnR5cGVkZWYgczMyIG50ZnNf
Y2x1c3Rlcl90OwoKCgpzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbnRm
c19zYl9pbmZvICp2b2w7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX251bWJlcjsKICAgICAgICBf
X3UxNiBzZXF1ZW5jZV9udW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciAqYXR0cjsKICAgICAg
ICBpbnQgYXR0cl9jb3VudDsKICAgICAgICBzdHJ1Y3QgbnRmc19hdHRyaWJ1dGUgKmF0dHJzOwog
ICAgICAgIGludCByZWNvcmRfY291bnQ7CiAgICAgICAgaW50ICpyZWNvcmRzOwoKICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBp
bnQgcmVjb3Jkc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsdXN0ZXJzX3Blcl9y
ZWNvcmQ7CiAgICAgICAgICAgICAgICB9IGluZGV4OwogICAgICAgIH0gdTsKfTsKIyAyOTMgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbXNkb3NfZnNfaS5oIiAxCgoKCgoK
CgpzdHJ1Y3QgbXNkb3NfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJp
dmF0ZTsKICAgICAgICBpbnQgaV9zdGFydDsKICAgICAgICBpbnQgaV9sb2dzdGFydDsKICAgICAg
ICBpbnQgaV9hdHRyczsKICAgICAgICBpbnQgaV9jdGltZV9tczsKICAgICAgICBpbnQgaV9sb2Nh
dGlvbjsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlfZmF0X2lub2RlOwogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgaV9mYXRfaGFzaDsKfTsKIyAyOTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX2kuaCIgMQojIDkgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIgMgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiIDEKIyAxMCAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91bXNkb3NfZnNfaS5oIiAy
CiMgMzkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdW1zZG9zX2Zz
X2kuaCIKc3RydWN0IGRpcl9sb2NraW5nX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90
IHA7CiAgICAgICAgc2hvcnQgaW50IGxvb2tpbmc7CiAgICAgICAgc2hvcnQgaW50IGNyZWF0aW5n
OwoKCgogICAgICAgIGxvbmcgcGlkOwoKfTsKCnN0cnVjdCB1bXNkb3NfaW5vZGVfaW5mbyB7CiAg
ICAgICAgc3RydWN0IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaW5mbzsKICAgICAgICBzdHJ1Y3Qg
ZGlyX2xvY2tpbmdfaW5mbyBkaXJfaW5mbzsKICAgICAgICBpbnQgaV9wYXRjaGVkOwogICAgICAg
IGludCBpX2lzX2hsaW5rOwogICAgICAgIG9mZl90IHBvczsKfTsKIyAyOTUgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXNvX2ZzX2kuaCIgMQoKCgoKCgpzdHJ1Y3QgaXNv
X2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGludCBpX2ZpcnN0X2V4dGVudDsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGlfZmlsZV9mb3JtYXQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX25l
eHRfc2VjdGlvbl9pbm87CiAgICAgICAgb2ZmX3QgaV9zZWN0aW9uX3NpemU7Cn07CiMgMjk2ICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDEKCgoKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCiMgNSAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9uZnNfZnNfaS5oIiAyCiMg
MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyA2
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25mcy5oIiAxCiMg
MTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmZzLmgiCiMgMSAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zdW5ycGMvbXNnX3Byb3Qu
aCIgMQojIDE0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N1bnJw
Yy9tc2dfcHJvdC5oIgplbnVtIHJwY19hdXRoX2ZsYXZvciB7CiAgICAgICAgUlBDX0FVVEhfTlVM
TCA9IDAsCiAgICAgICAgUlBDX0FVVEhfVU5JWCA9IDEsCiAgICAgICAgUlBDX0FVVEhfU0hPUlQg
PSAyLAogICAgICAgIFJQQ19BVVRIX0RFUyA9IDMsCiAgICAgICAgUlBDX0FVVEhfS1JCID0gNCwK
fTsKCmVudW0gcnBjX21zZ190eXBlIHsKICAgICAgICBSUENfQ0FMTCA9IDAsCiAgICAgICAgUlBD
X1JFUExZID0gMQp9OwoKZW51bSBycGNfcmVwbHlfc3RhdCB7CiAgICAgICAgUlBDX01TR19BQ0NF
UFRFRCA9IDAsCiAgICAgICAgUlBDX01TR19ERU5JRUQgPSAxCn07CgplbnVtIHJwY19hY2NlcHRf
c3RhdCB7CiAgICAgICAgUlBDX1NVQ0NFU1MgPSAwLAogICAgICAgIFJQQ19QUk9HX1VOQVZBSUwg
PSAxLAogICAgICAgIFJQQ19QUk9HX01JU01BVENIID0gMiwKICAgICAgICBSUENfUFJPQ19VTkFW
QUlMID0gMywKICAgICAgICBSUENfR0FSQkFHRV9BUkdTID0gNCwKICAgICAgICBSUENfU1lTVEVN
X0VSUiA9IDUKfTsKCmVudW0gcnBjX3JlamVjdF9zdGF0IHsKICAgICAgICBSUENfTUlTTUFUQ0gg
PSAwLAogICAgICAgIFJQQ19BVVRIX0VSUk9SID0gMQp9OwoKZW51bSBycGNfYXV0aF9zdGF0IHsK
ICAgICAgICBSUENfQVVUSF9PSyA9IDAsCiAgICAgICAgUlBDX0FVVEhfQkFEQ1JFRCA9IDEsCiAg
ICAgICAgUlBDX0FVVEhfUkVKRUNURURDUkVEID0gMiwKICAgICAgICBSUENfQVVUSF9CQURWRVJG
ID0gMywKICAgICAgICBSUENfQVVUSF9SRUpFQ1RFRFZFUkYgPSA0LAogICAgICAgIFJQQ19BVVRI
X1RPT1dFQUsgPSA1Cn07CiMgMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbmZzLmgiIDIKIyA0MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9uZnMuaCIKIGVudW0gbmZzX3N0YXQgewogICAgICAgIE5GU19PSyA9IDAsCiAgICAgICAg
TkZTRVJSX1BFUk0gPSAxLAogICAgICAgIE5GU0VSUl9OT0VOVCA9IDIsCiAgICAgICAgTkZTRVJS
X0lPID0gNSwKICAgICAgICBORlNFUlJfTlhJTyA9IDYsCiAgICAgICAgTkZTRVJSX0VBR0FJTiA9
IDExLAogICAgICAgIE5GU0VSUl9BQ0NFUyA9IDEzLAogICAgICAgIE5GU0VSUl9FWElTVCA9IDE3
LAogICAgICAgIE5GU0VSUl9YREVWID0gMTgsCiAgICAgICAgTkZTRVJSX05PREVWID0gMTksCiAg
ICAgICAgTkZTRVJSX05PVERJUiA9IDIwLAogICAgICAgIE5GU0VSUl9JU0RJUiA9IDIxLAogICAg
ICAgIE5GU0VSUl9JTlZBTCA9IDIyLAogICAgICAgIE5GU0VSUl9GQklHID0gMjcsCiAgICAgICAg
TkZTRVJSX05PU1BDID0gMjgsCiAgICAgICAgTkZTRVJSX1JPRlMgPSAzMCwKICAgICAgICBORlNF
UlJfTUxJTksgPSAzMSwKICAgICAgICBORlNFUlJfT1BOT1RTVVBQID0gNDUsCiAgICAgICAgTkZT
RVJSX05BTUVUT09MT05HID0gNjMsCiAgICAgICAgTkZTRVJSX05PVEVNUFRZID0gNjYsCiAgICAg
ICAgTkZTRVJSX0RRVU9UID0gNjksCiAgICAgICAgTkZTRVJSX1NUQUxFID0gNzAsCiAgICAgICAg
TkZTRVJSX1JFTU9URSA9IDcxLAogICAgICAgIE5GU0VSUl9XRkxVU0ggPSA5OSwKICAgICAgICBO
RlNFUlJfQkFESEFORExFID0gMTAwMDEsCiAgICAgICAgTkZTRVJSX05PVF9TWU5DID0gMTAwMDIs
CiAgICAgICAgTkZTRVJSX0JBRF9DT09LSUUgPSAxMDAwMywKICAgICAgICBORlNFUlJfTk9UU1VQ
UCA9IDEwMDA0LAogICAgICAgIE5GU0VSUl9UT09TTUFMTCA9IDEwMDA1LAogICAgICAgIE5GU0VS
Ul9TRVJWRVJGQVVMVCA9IDEwMDA2LAogICAgICAgIE5GU0VSUl9CQURUWVBFID0gMTAwMDcsCiAg
ICAgICAgTkZTRVJSX0pVS0VCT1ggPSAxMDAwOAogfTsKCgoKZW51bSBuZnNfZnR5cGUgewogICAg
ICAgIE5GTk9OID0gMCwKICAgICAgICBORlJFRyA9IDEsCiAgICAgICAgTkZESVIgPSAyLAogICAg
ICAgIE5GQkxLID0gMywKICAgICAgICBORkNIUiA9IDQsCiAgICAgICAgTkZMTksgPSA1LAogICAg
ICAgIE5GU09DSyA9IDYsCiAgICAgICAgTkZCQUQgPSA3LAogICAgICAgIE5GRklGTyA9IDgKfTsK
CgoKCgoKc3RydWN0IG5mc19maCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2l6ZTsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGRhdGFbNjRdOwp9OwojIDEwNyAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9uZnMuaCIKZW51bSBuZnMzX3N0YWJsZV9ob3cgewogICAgICAg
IE5GU19VTlNUQUJMRSA9IDAsCiAgICAgICAgTkZTX0RBVEFfU1lOQyA9IDEsCiAgICAgICAgTkZT
X0ZJTEVfU1lOQyA9IDIKfTsKIyA3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L25mc19mc19pLmgiIDIKCgoKCnN0cnVjdCBuZnNfaW5vZGVfaW5mbyB7CgoKCiAgICAg
ICAgX191NjQgZnNpZDsKICAgICAgICBfX3U2NCBmaWxlaWQ7CgoKCgogICAgICAgIHN0cnVjdCBu
ZnNfZmggZmg7CgoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzOwojIDQ1ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiCiAgICAgICAgdW5z
aWduZWQgbG9uZyByZWFkX2NhY2hlX2ppZmZpZXM7CiAgICAgICAgX191NjQgcmVhZF9jYWNoZV9j
dGltZTsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX210aW1lOwogICAgICAgIF9fdTY0IHJlYWRf
Y2FjaGVfaXNpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW87CiAgICAgICAgdW5z
aWduZWQgbG9uZyBhdHRydGltZW9fdGltZXN0YW1wOwoKCgoKCiAgICAgICAgX191MzIgY29va2ll
dmVyZlsyXTsKCgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCByZWFkOwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgZGlydHk7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjb21taXQ7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCB3cml0ZWJhY2s7CgogICAgICAgIHVuc2lnbmVkIGludCBucmVh
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGlydHksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmNvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBucGFnZXM7CgoKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhhc2hfbmV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqaGFzaF9wcmV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbmV4
dHNjYW47CgoKICAgICAgICBzdHJ1Y3QgcnBjX2NyZWQgKm1tX2NyZWQ7Cn07CiMgOTIgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIKc3RydWN0IG5m
c19sb2NrX2luZm8gewogICAgICAgIHUzMiBzdGF0ZTsKICAgICAgICB1MzIgZmxhZ3M7CiAgICAg
ICAgc3RydWN0IG5sbV9ob3N0ICpob3N0Owp9OwojIDI5NyAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9zeXN2X2ZzX2kuaCIgMQoKCgoKCgpzdHJ1Y3Qgc3lzdl9pbm9kZV9p
bmZvIHsKICAgICAgICB1MzIgaV9kYXRhWzEwKzErMSsxXTsKCgoKCn07CiMgMjk4ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAxCgoKCiMgMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9hLm91dC5oIiAxCgoKCgoKCgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2Eub3V0LmgiIDEKCgoK
c3RydWN0IGV4ZWMKewogIHVuc2lnbmVkIGxvbmcgYV9pbmZvOwogIHVuc2lnbmVkIGFfdGV4dDsK
ICB1bnNpZ25lZCBhX2RhdGE7CiAgdW5zaWduZWQgYV9ic3M7CiAgdW5zaWduZWQgYV9zeW1zOwog
IHVuc2lnbmVkIGFfZW50cnk7CiAgdW5zaWduZWQgYV90cnNpemU7CiAgdW5zaWduZWQgYV9kcnNp
emU7Cn07CiMgOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9hLm91
dC5oIiAyCgoKCgplbnVtIG1hY2hpbmVfdHlwZSB7CgoKCiAgTV9PTERTVU4yID0gMCwKCgoKCiAg
TV82ODAxMCA9IDEsCgoKCgogIE1fNjgwMjAgPSAyLAoKCgoKICBNX1NQQVJDID0gMywKCgogIE1f
Mzg2ID0gMTAwLAogIE1fTUlQUzEgPSAxNTEsCiAgTV9NSVBTMiA9IDE1Mgp9OwojIDEzMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9hLm91dC5oIgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDEzMiAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9hLm91dC5oIiAyCiMgMTU3ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0cnVjdCBubGlz
dCB7CiAgdW5pb24gewogICAgY2hhciAqbl9uYW1lOwogICAgc3RydWN0IG5saXN0ICpuX25leHQ7
CiAgICBsb25nIG5fc3RyeDsKICB9IG5fdW47CiAgdW5zaWduZWQgY2hhciBuX3R5cGU7CiAgY2hh
ciBuX290aGVyOwogIHNob3J0IG5fZGVzYzsKICB1bnNpZ25lZCBsb25nIG5fdmFsdWU7Cn07CiMg
MjM1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0
cnVjdCByZWxvY2F0aW9uX2luZm8KewoKICBpbnQgcl9hZGRyZXNzOwoKICB1bnNpZ25lZCBpbnQg
cl9zeW1ib2xudW06MjQ7CgoKCiAgdW5zaWduZWQgaW50IHJfcGNyZWw6MTsKCgogIHVuc2lnbmVk
IGludCByX2xlbmd0aDoyOwoKCgoKCgogIHVuc2lnbmVkIGludCByX2V4dGVybjoxOwoKCgoKCgoK
ICB1bnNpZ25lZCBpbnQgcl9wYWQ6NDsKCn07CiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aW1lLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aW1lLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA2ICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMgoKCgpzdHJ1Y3QgdGltZXNwZWMgewogICAg
ICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgbG9uZyB0dl9uc2VjOwp9OwojIDMxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKc3RhdGljIF9faW5saW5l
X18gdW5zaWduZWQgbG9uZwp0aW1lc3BlY190b19qaWZmaWVzKHN0cnVjdCB0aW1lc3BlYyAqdmFs
dWUpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlYyA9IHZhbHVlLT50dl9zZWM7CiAgICAgICAg
bG9uZyBuc2VjID0gdmFsdWUtPnR2X25zZWM7CgogICAgICAgIGlmIChzZWMgPj0gKCgofjBVTCA+
PiAxKS0xKSAvIDEwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4gKCh+MFVMID4+IDEpLTEpOwog
ICAgICAgIG5zZWMgKz0gMTAwMDAwMDAwMEwgLyAxMDAgLSAxOwogICAgICAgIG5zZWMgLz0gMTAw
MDAwMDAwMEwgLyAxMDA7CiAgICAgICAgcmV0dXJuIDEwMCAqIHNlYyArIG5zZWM7Cn0KCnN0YXRp
YyBfX2lubGluZV9fIHZvaWQKamlmZmllc190b190aW1lc3BlYyh1bnNpZ25lZCBsb25nIGppZmZp
ZXNfUjBkYTAyZDY3LCBzdHJ1Y3QgdGltZXNwZWMgKnZhbHVlKQp7CiAgICAgICAgdmFsdWUtPnR2
X25zZWMgPSAoamlmZmllc19SMGRhMDJkNjcgJSAxMDApICogKDEwMDAwMDAwMDBMIC8gMTAwKTsK
ICAgICAgICB2YWx1ZS0+dHZfc2VjID0gamlmZmllc19SMGRhMDJkNjcgLyAxMDA7Cn0KIyA2NyAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgbG9uZwpta3RpbWUgKHVuc2lnbmVkIGludCB5ZWFyLCB1bnNpZ25lZCBp
bnQgbW9uLAogICAgICAgIHVuc2lnbmVkIGludCBkYXksIHVuc2lnbmVkIGludCBob3VyLAogICAg
ICAgIHVuc2lnbmVkIGludCBtaW4sIHVuc2lnbmVkIGludCBzZWMpCnsKICAgICAgICBpZiAoMCA+
PSAoaW50KSAobW9uIC09IDIpKSB7CiAgICAgICAgICAgICAgICBtb24gKz0gMTI7CiAgICAgICAg
ICAgICAgICB5ZWFyIC09IDE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCgoCiAgICAgICAg
ICAgICAgICAodW5zaWduZWQgbG9uZykgKHllYXIvNCAtIHllYXIvMTAwICsgeWVhci80MDAgKyAz
NjcqbW9uLzEyICsgZGF5KSArCiAgICAgICAgICAgICAgICAgICAgICAgIHllYXIqMzY1IC0gNzE5
NDk5CiAgICAgICAgICAgICkqMjQgKyBob3VyCiAgICAgICAgICApKjYwICsgbWluCiAgICAgICAg
KSo2MCArIHNlYzsKfQoKCgoKc3RydWN0IHRpbWV2YWwgewogICAgICAgIHRpbWVfdCB0dl9zZWM7
CiAgICAgICAgc3VzZWNvbmRzX3QgdHZfdXNlYzsKfTsKCnN0cnVjdCB0aW1lem9uZSB7CiAgICAg
ICAgaW50IHR6X21pbnV0ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9OwoKCgoKZXh0
ZXJuIHZvaWQgZG9fZ2V0dGltZW9mZGF5X1I3MjI3MGUzNShzdHJ1Y3QgdGltZXZhbCAqdHYpOwpl
eHRlcm4gdm9pZCBkb19zZXR0aW1lb2ZkYXlfUjE5ZDdiMWZmKHN0cnVjdCB0aW1ldmFsICp0dik7
CmV4dGVybiB2b2lkIGdldF9mYXN0X3RpbWVfUjYwNzQzMDIyKHN0cnVjdCB0aW1ldmFsICp0dik7
CmV4dGVybiB2b2lkICgqZG9fZ2V0X2Zhc3RfdGltZSkoc3RydWN0IHRpbWV2YWwgKik7CiMgMTIx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKc3RydWN0
IGl0aW1lcnNwZWMgewogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICAgICAg
ICBzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7Cn07CgpzdHJ1Y3QgaXRpbWVydmFsIHsKICAgICAg
ICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92
YWx1ZTsKfTsKIyA4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Fm
ZnNfZnNfaS5oIiAyCiMgMTcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvYWZmc19mc19pLmgiCnN0cnVjdCBhZmZzX2V4dF9rZXkgewogICAgICAgIHUzMiBleHQ7CiAg
ICAgICAgdTMyIGtleTsKfTsKCgoKCnN0cnVjdCBhZmZzX2lub2RlX2luZm8gewogICAgICAgIHUz
MiBpX29wZW5jbnQ7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX2xpbmtfbG9jazsKICAgICAg
ICBzdHJ1Y3Qgc2VtYXBob3JlIGlfZXh0X2xvY2s7CgogICAgICAgIHUzMiBpX2Jsa2NudDsKICAg
ICAgICB1MzIgaV9leHRjbnQ7CiAgICAgICAgdTMyICppX2xjOwogICAgICAgIHUzMiBpX2xjX3Np
emU7CiAgICAgICAgdTMyIGlfbGNfc2hpZnQ7CiAgICAgICAgdTMyIGlfbGNfbWFzazsKICAgICAg
ICBzdHJ1Y3QgYWZmc19leHRfa2V5ICppX2FjOwogICAgICAgIHUzMiBpX2V4dF9sYXN0OwogICAg
ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqaV9leHRfYmg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBt
bXVfcHJpdmF0ZTsKICAgICAgICB1MzIgaV9wcm90ZWN0OwogICAgICAgIHUzMiBpX2xhc3RhbGxv
YzsKICAgICAgICBpbnQgaV9wYV9jbnQ7CiMgNTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiCn07CiMgMjk5ICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L3Vmc19mc19pLmgiIDEKIyAxNiAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC91ZnNfZnNfaS5oIgpzdHJ1Y3QgdWZzX2lub2RlX2luZm8g
ewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTMyIGlfZGF0YVsxNV07CiAgICAg
ICAgICAgICAgICBfX3U4IGlfc3ltbGlua1s0KjE1XTsKICAgICAgICB9IGlfdTE7CiAgICAgICAg
X191NjQgaV9zaXplOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW47
CiAgICAgICAgX191MzIgaV9zaGFkb3c7CiAgICAgICAgX191MzIgaV91bnVzZWQxOwogICAgICAg
IF9fdTMyIGlfdW51c2VkMjsKICAgICAgICBfX3UzMiBpX29lZnRmbGFnOwogICAgICAgIF9fdTE2
IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9sYXN0ZnJhZzsKfTsKIyAzMDAgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZWZzX2ZzX2kuaCIgMQojIDEyICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Vmc19mc19pLmgiCnR5cGVkZWYgaW50MzJf
dCBlZnNfYmxvY2tfdDsKdHlwZWRlZiB1aW50MzJfdCBlZnNfaW5vX3Q7CgoKCgoKCnR5cGVkZWYg
dW5pb24gZXh0ZW50X3UgewogICAgICAgIHVuc2lnbmVkIGNoYXIgcmF3WzhdOwogICAgICAgIHN0
cnVjdCBleHRlbnRfcyB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbWFnaWM6ODsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9ibjoyNDsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBleF9sZW5ndGg6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9v
ZmZzZXQ6MjQ7CiAgICAgICAgfSBjb29rZWQ7Cn0gZWZzX2V4dGVudDsKCnR5cGVkZWYgc3RydWN0
IGVkZXZzIHsKICAgICAgICBzaG9ydCBvZGV2OwogICAgICAgIHVuc2lnbmVkIGludCBuZGV2Owp9
IGVmc19kZXZzOwoKCgoKCnN0cnVjdCBlZnNfZGlub2RlIHsKICAgICAgICB1X3Nob3J0IGRpX21v
ZGU7CiAgICAgICAgc2hvcnQgZGlfbmxpbms7CiAgICAgICAgdV9zaG9ydCBkaV91aWQ7CiAgICAg
ICAgdV9zaG9ydCBkaV9naWQ7CiAgICAgICAgaW50MzJfdCBkaV9zaXplOwogICAgICAgIGludDMy
X3QgZGlfYXRpbWU7CiAgICAgICAgaW50MzJfdCBkaV9tdGltZTsKICAgICAgICBpbnQzMl90IGRp
X2N0aW1lOwogICAgICAgIHVpbnQzMl90IGRpX2dlbjsKICAgICAgICBzaG9ydCBkaV9udW1leHRl
bnRzOwogICAgICAgIHVfY2hhciBkaV92ZXJzaW9uOwogICAgICAgIHVfY2hhciBkaV9zcGFyZTsK
ICAgICAgICB1bmlvbiBkaV9hZGRyIHsKICAgICAgICAgICAgICAgIGVmc19leHRlbnQgZGlfZXh0
ZW50c1sxMl07CiAgICAgICAgICAgICAgICBlZnNfZGV2cyBkaV9kZXY7CiAgICAgICAgfSBkaV91
Owp9OwoKCnN0cnVjdCBlZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG51bWV4dGVudHM7CiAg
ICAgICAgaW50IGxhc3RleHRlbnQ7CgogICAgICAgIGVmc19leHRlbnQgZXh0ZW50c1sxMl07Cn07
CiMgMzAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5o
IiAxCiMgMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29kYV9m
c19pLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBl
cy5oIiAxCiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29k
YV9mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2xpc3QuaCIgMQojIDE0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2NvZGFfZnNfaS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9jb2RhLmgiIDEKIyAxMDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvY29kYS5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1X3F1YWRfdDsKIyAxNjQg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3Qg
dmVudXNfZGlyZW50IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfZmlsZW5vOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hhciBkX25hbWVbMjU1ICsgMV07
Cn07CiMgMTk4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvZGEu
aCIKdHlwZWRlZiB1X2xvbmcgVm9sdW1lSWQ7CnR5cGVkZWYgdV9sb25nIFZub2RlSWQ7CnR5cGVk
ZWYgdV9sb25nIFVuaXF1ZV90Owp0eXBlZGVmIHVfbG9uZyBGaWxlVmVyc2lvbjsKCgoKCnR5cGVk
ZWYgc3RydWN0IFZpY2VGaWQgewogICAgVm9sdW1lSWQgVm9sdW1lOwogICAgVm5vZGVJZCBWbm9k
ZTsKICAgIFVuaXF1ZV90IFVuaXF1ZTsKfSBWaWNlRmlkOwoKCgoKc3RhdGljIF9faW5saW5lX18g
aW5vX3QgY29kYV9mMmkoc3RydWN0IFZpY2VGaWQgKmZpZCkKewogICAgICAgIGlmICggISBmaWQg
KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKGZpZC0+Vm5vZGUgPT0gMHhm
ZmZmZmZmZSB8fCBmaWQtPlZub2RlID09IDB4ZmZmZmZmZmYpCiAgICAgICAgICAgICAgICByZXR1
cm4gKChmaWQtPlZvbHVtZSA8PCAyMCkgfCAoZmlkLT5VbmlxdWUgJiAweGZmZmZmKSk7CiAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIChmaWQtPlVuaXF1ZSArIChmaWQtPlZub2Rl
PDwxMCkgKyAoZmlkLT5Wb2x1bWU8PDIwKSk7Cn0KIyAyMzMgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvY29kYS5oIgp0eXBlZGVmIHVfaW50MzJfdCB2dWlkX3Q7CnR5
cGVkZWYgdV9pbnQzMl90IHZnaWRfdDsKCgoKCnN0cnVjdCBjb2RhX2NyZWQgewogICAgdnVpZF90
IGNyX3VpZCwgY3JfZXVpZCwgY3Jfc3VpZCwgY3JfZnN1aWQ7CiAgICB2Z2lkX3QgY3JfZ3JvdXBp
ZCwgY3JfZWdpZCwgY3Jfc2dpZCwgY3JfZnNnaWQ7Cn07CgoKCgoKCgplbnVtIGNvZGFfdnR5cGUg
eyBDX1ZOT04sIENfVlJFRywgQ19WRElSLCBDX1ZCTEssIENfVkNIUiwgQ19WTE5LLCBDX1ZTT0NL
LCBDX1ZGSUZPLCBDX1ZCQUQgfTsKCnN0cnVjdCBjb2RhX3ZhdHRyIHsKICAgICAgICBsb25nIHZh
X3R5cGU7CiAgICAgICAgdV9zaG9ydCB2YV9tb2RlOwogICAgICAgIHNob3J0IHZhX25saW5rOwog
ICAgICAgIHZ1aWRfdCB2YV91aWQ7CiAgICAgICAgdmdpZF90IHZhX2dpZDsKICAgICAgICBsb25n
IHZhX2ZpbGVpZDsKICAgICAgICB1X3F1YWRfdCB2YV9zaXplOwogICAgICAgIGxvbmcgdmFfYmxv
Y2tzaXplOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9hdGltZTsKICAgICAgICBzdHJ1Y3Qg
dGltZXNwZWMgdmFfbXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHZhX2N0aW1lOwogICAg
ICAgIHVfbG9uZyB2YV9nZW47CiAgICAgICAgdV9sb25nIHZhX2ZsYWdzOwogICAgICAgIHVfcXVh
ZF90IHZhX3JkZXY7CiAgICAgICAgdV9xdWFkX3QgdmFfYnl0ZXM7CiAgICAgICAgdV9xdWFkX3Qg
dmFfZmlsZXJldjsKfTsKCgoKCnN0cnVjdCBjb2RhX3N0YXRmcyB7CiAgICBpbnQzMl90IGZfYmxv
Y2tzOwogICAgaW50MzJfdCBmX2JmcmVlOwogICAgaW50MzJfdCBmX2JhdmFpbDsKICAgIGludDMy
X3QgZl9maWxlczsKICAgIGludDMyX3QgZl9mZnJlZTsKfTsKIyAzMzcgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9pbl9oZHIgewog
ICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBsb25nIHVuaXF1ZTsKICAgIHVf
c2hvcnQgcGlkOwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9zaG9ydCBzaWQ7CiAgICBzdHJ1Y3Qg
Y29kYV9jcmVkIGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0X2hkciB7CiAgICB1bnNpZ25lZCBs
b25nIG9wY29kZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVlOwogICAgdW5zaWduZWQgbG9uZyBy
ZXN1bHQ7Cn07CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk
ciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3Jvb3RfaW4gewogICAgc3Ry
dWN0IGNvZGFfaW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2RhX29wZW5faW4gewogICAgc3RydWN0
IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3Ry
dWN0IGNvZGFfb3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHVfcXVh
ZF90IGRldjsKICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1Y3QgY29kYV9zdG9yZV9pbiB7CiAg
ICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7
Cn07CgpzdHJ1Y3QgY29kYV9zdG9yZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7
Cn07CgoKc3RydWN0IGNvZGFfcmVsZWFzZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7
CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9yZWxlYXNl
X291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9jbG9z
ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBp
bnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0
X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4gewogICAgc3RydWN0IGNvZGFfaW5f
aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNtZDsKICAgIGludCBsZW47CiAgICBp
bnQgcndmbGFnOwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVjdCBjb2RhX2lvY3RsX291dCB7CiAg
ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxlbjsKICAgIGNhZGRyX3QgZGF0YTsK
fTsKCgoKc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7
CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9nZXRhdHRyX291dCB7CiAgICBzdHJ1
Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3Ry
dWN0IGNvZGFfc2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKc3RydWN0IGNvZGFfc2V0
YXR0cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFf
YWNjZXNzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsK
ICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vzc19vdXQgewogICAgc3RydWN0IGNv
ZGFfb3V0X2hkciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29kYV9sb29rdXBfaW4gewogICAgc3Ry
dWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5hbWU7CiAgICBp
bnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291
dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CgoKCnN0cnVjdCBj
b2RhX2NyZWF0ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZG
aWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IGV4Y2w7CiAgICBpbnQgbW9k
ZTsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3JlYXRlX291dCB7CiAgICBzdHJ1Y3Qg
Y29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIg
YXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hk
ciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcmVt
b3ZlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9s
aW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgc291cmNlRmlk
OwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0IGNvZGFfbGlu
a19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCnN0cnVjdCBjb2RhX3Jl
bmFtZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIHNvdXJjZUZp
ZDsKICAgIGludCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IGRlc3RuYW1l
Owp9OwoKc3RydWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91
dDsKfTsKCgpzdHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7
CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IG5h
bWU7Cn07CgpzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBv
aDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07CgoKCnN0
cnVjdCBjb2RhX3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG
aWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcm1kaXJfb3V0IHsKICAgIHN0
cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3N5bWxpbmtfaW4gewogICAg
c3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHNyY25hbWU7
CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0IGNv
ZGFfc3ltbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0
IGNvZGFfcmVhZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZp
ZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291
dF9oZHIgb2g7CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90IGRhdGE7Cn07CgoKCnN0cnVjdCBj
b2RhX2ZzeW5jX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZp
ZDsKfTsKCnN0cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91
dDsKfTsKCgpzdHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsK
ICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3ZnZXRfb3V0IHsKICAgIHN0cnVjdCBj
b2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CiMgNjE2
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0
IGNvZGFfcHVyZ2V1c2VyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3Ry
dWN0IGNvZGFfY3JlZCBjcmVkOwp9OwoKCgpzdHJ1Y3QgY29kYV96YXBmaWxlX291dCB7CiAgICBz
dHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoKCgpzdHJ1Y3Qg
Y29kYV96YXBkaXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlk
IENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3phcHZub2RlX291dCB7CiAgICBzdHJ1Y3QgY29k
YV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfY3JlZCBjcmVkOwogICAgVmljZUZpZCBWRmlk
Owp9OwoKCgpzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk
ciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQg
ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgTmV3RmlkOwogICAgVmlj
ZUZpZCBPbGRGaWQ7Cn07CgoKc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiB7CiAgICBzdHJ1Y3Qg
Y29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1
Y3QgY29kYV9vcGVuX2J5X2ZkX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAg
aW50IGZkOwoKCiAgICBzdHJ1Y3QgZmlsZSAqZmg7Cgp9OwoKCnN0cnVjdCBjb2RhX29wZW5fYnlf
cGF0aF9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAg
ICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfb3V0IHsKICAgIHN0cnVj
dCBjb2RhX291dF9oZHIgb2g7CiAgICAgICAgaW50IHBhdGg7Cn07CgoKc3RydWN0IGNvZGFfc3Rh
dGZzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpbjsKfTsKCnN0cnVjdCBjb2RhX3N0YXRm
c19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX3N0YXRm
cyBzdGF0Owp9OwojIDcwMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9jb2RhLmgiCnVuaW9uIGlucHV0QXJncyB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAg
ICBzdHJ1Y3QgY29kYV9vcGVuX2luIGNvZGFfb3BlbjsKICAgIHN0cnVjdCBjb2RhX3N0b3JlX2lu
IGNvZGFfc3RvcmU7CiAgICBzdHJ1Y3QgY29kYV9yZWxlYXNlX2luIGNvZGFfcmVsZWFzZTsKICAg
IHN0cnVjdCBjb2RhX2Nsb3NlX2luIGNvZGFfY2xvc2U7CiAgICBzdHJ1Y3QgY29kYV9pb2N0bF9p
biBjb2RhX2lvY3RsOwogICAgc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiBjb2RhX2dldGF0dHI7CiAg
ICBzdHJ1Y3QgY29kYV9zZXRhdHRyX2luIGNvZGFfc2V0YXR0cjsKICAgIHN0cnVjdCBjb2RhX2Fj
Y2Vzc19pbiBjb2RhX2FjY2VzczsKICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9pbiBjb2RhX2xvb2t1
cDsKICAgIHN0cnVjdCBjb2RhX2NyZWF0ZV9pbiBjb2RhX2NyZWF0ZTsKICAgIHN0cnVjdCBjb2Rh
X3JlbW92ZV9pbiBjb2RhX3JlbW92ZTsKICAgIHN0cnVjdCBjb2RhX2xpbmtfaW4gY29kYV9saW5r
OwogICAgc3RydWN0IGNvZGFfcmVuYW1lX2luIGNvZGFfcmVuYW1lOwogICAgc3RydWN0IGNvZGFf
bWtkaXJfaW4gY29kYV9ta2RpcjsKICAgIHN0cnVjdCBjb2RhX3JtZGlyX2luIGNvZGFfcm1kaXI7
CiAgICBzdHJ1Y3QgY29kYV9zeW1saW5rX2luIGNvZGFfc3ltbGluazsKICAgIHN0cnVjdCBjb2Rh
X3JlYWRsaW5rX2luIGNvZGFfcmVhZGxpbms7CiAgICBzdHJ1Y3QgY29kYV9mc3luY19pbiBjb2Rh
X2ZzeW5jOwogICAgc3RydWN0IGNvZGFfdmdldF9pbiBjb2RhX3ZnZXQ7CiAgICBzdHJ1Y3QgY29k
YV9vcGVuX2J5X2ZkX2luIGNvZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlf
cGF0aF9pbiBjb2RhX29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19pbiBjb2Rh
X3N0YXRmczsKfTsKCnVuaW9uIG91dHB1dEFyZ3MgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBv
aDsKICAgIHN0cnVjdCBjb2RhX3Jvb3Rfb3V0IGNvZGFfcm9vdDsKICAgIHN0cnVjdCBjb2RhX29w
ZW5fb3V0IGNvZGFfb3BlbjsKICAgIHN0cnVjdCBjb2RhX2lvY3RsX291dCBjb2RhX2lvY3RsOwog
ICAgc3RydWN0IGNvZGFfZ2V0YXR0cl9vdXQgY29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFf
bG9va3VwX291dCBjb2RhX2xvb2t1cDsKICAgIHN0cnVjdCBjb2RhX2NyZWF0ZV9vdXQgY29kYV9j
cmVhdGU7CiAgICBzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgY29kYV9ta2RpcjsKICAgIHN0cnVjdCBj
b2RhX3JlYWRsaW5rX291dCBjb2RhX3JlYWRsaW5rOwogICAgc3RydWN0IGNvZGFfdmdldF9vdXQg
Y29kYV92Z2V0OwogICAgc3RydWN0IGNvZGFfcHVyZ2V1c2VyX291dCBjb2RhX3B1cmdldXNlcjsK
ICAgIHN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IGNvZGFfemFwZmlsZTsKICAgIHN0cnVjdCBjb2Rh
X3phcGRpcl9vdXQgY29kYV96YXBkaXI7CiAgICBzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgY29k
YV96YXB2bm9kZTsKICAgIHN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCBjb2RhX3B1cmdlZmlkOwog
ICAgc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQgY29kYV9yZXBsYWNlOwogICAgc3RydWN0IGNvZGFf
b3Blbl9ieV9mZF9vdXQgY29kYV9vcGVuX2J5X2ZkOwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9w
YXRoX291dCBjb2RhX29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19vdXQgY29k
YV9zdGF0ZnM7Cn07Cgp1bmlvbiBjb2RhX2Rvd25jYWxscyB7CgoKICAgIHN0cnVjdCBjb2RhX3B1
cmdldXNlcl9vdXQgcHVyZ2V1c2VyOwogICAgc3RydWN0IGNvZGFfemFwZmlsZV9vdXQgemFwZmls
ZTsKICAgIHN0cnVjdCBjb2RhX3phcGRpcl9vdXQgemFwZGlyOwogICAgc3RydWN0IGNvZGFfemFw
dm5vZGVfb3V0IHphcHZub2RlOwogICAgc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IHB1cmdlZmlk
OwogICAgc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQgcmVwbGFjZTsKfTsKCgoKCgoKCnN0cnVjdCBW
aWNlSW9jdGwgewogICAgICAgIGNhZGRyX3QgaW4sIG91dDsKICAgICAgICBzaG9ydCBpbl9zaXpl
OwogICAgICAgIHNob3J0IG91dF9zaXplOwp9OwoKc3RydWN0IFBpb2N0bERhdGEgewogICAgICAg
IGNvbnN0IGNoYXIgKnBhdGg7CiAgICAgICAgaW50IGZvbGxvdzsKICAgICAgICBzdHJ1Y3QgVmlj
ZUlvY3RsIHZpOwp9OwojIDc5NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9jb2RhLmgiCnN0cnVjdCBjb2RhX21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9u
OwogICAgICAgIGludCBmZDsKfTsKIyAxNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9jb2RhX2ZzX2kuaCIgMgoKCgoKc3RydWN0IGNvZGFfaW5vZGVfaW5mbyB7CiAg
ICAgICAgc3RydWN0IFZpY2VGaWQgY19maWQ7CiAgICAgICAgdV9zaG9ydCBjX2ZsYWdzOwogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgY19jaWxpc3Q7CiAgICAgICAgc3RydWN0IGZpbGUgKmNfY29u
dGFpbmVyOwogICAgICAgIHVuc2lnbmVkIGludCBjX2NvbnRjb3VudDsKICAgICAgICBzdHJ1Y3Qg
Y29kYV9jcmVkIGNfY2FjaGVkX2NyZWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNfY2FjaGVkX3Bl
cm07Cn07CgoKCgoKCgppbnQgY29kYV9jbm9kZV9tYWtlKHN0cnVjdCBpbm9kZSAqKiwgc3RydWN0
IFZpY2VGaWQgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICopOwppbnQgY29kYV9jbm9kZV9tYWtlY3Rs
KHN0cnVjdCBpbm9kZSAqKmlub2RlLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3RydWN0IGlu
b2RlICpjb2RhX2ZpZF90b19pbm9kZShWaWNlRmlkICpmaWQsIHN0cnVjdCBzdXBlcl9ibG9jayAq
c2IpOwp2b2lkIGNvZGFfcmVwbGFjZV9maWQoc3RydWN0IGlub2RlICosIFZpY2VGaWQgKiwgVmlj
ZUZpZCAqKTsKIyAzMDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcm9t
ZnNfZnNfaS5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2ln
bmVkIGxvbmcgaV9tZXRhc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZGF0YW9mZnNldDsK
fTsKIyAzMDMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2htZW1fZnMu
aCIgMQojIDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NobWVt
X2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHZhbDsKfSBzd3Bf
ZW50cnlfdDsKCnN0cnVjdCBzaG1lbV9pbm9kZV9pbmZvIHsKICAgICAgICBzcGlubG9ja190IGxv
Y2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtYXhfaW5kZXg7CiAgICAgICAgc3dwX2VudHJ5X3Qg
aV9kaXJlY3RbMTZdOwogICAgICAgIHN3cF9lbnRyeV90ICoqaV9pbmRpcmVjdDsKICAgICAgICB1
bnNpZ25lZCBsb25nIHN3YXBwZWQ7CiAgICAgICAgaW50IGxvY2tlZDsKICAgICAgICBzdHJ1Y3Qg
bGlzdF9oZWFkIGxpc3Q7Cn07CgpzdHJ1Y3Qgc2htZW1fc2JfaW5mbyB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBtYXhfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9ibG9ja3M7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBtYXhfaW5vZGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJl
ZV9pbm9kZXM7CiAgICAgICAgc3BpbmxvY2tfdCBzdGF0X2xvY2s7Cn07CiMgMzA0ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19pLmgiIDEKIyAxMyAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE0ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19pLmgiIDIKCgoKCnN0
cnVjdCBzbWJfaW5vZGVfaW5mbyB7CgoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgb3BlbjsKICAg
ICAgICBfX3UxNiBmaWxlaWQ7CiAgICAgICAgX191MTYgYXR0cjsKCiAgICAgICAgX191MTYgYWNj
ZXNzOwogICAgICAgIF9fdTE2IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbXRpbWU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBjbG9zZWQ7CiAgICAgICAgdW5zaWduZWQgb3BlbmVyczsK
fTsKIyAzMDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaGZzX2ZzX2ku
aCIgMQojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2hmc19m
c19pLmgiCnN0cnVjdCBoZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG1hZ2ljOwoKICAgICAg
ICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIHN0cnVjdCBoZnNfY2F0X2VudHJ5
ICplbnRyeTsKCgogICAgICAgIHN0cnVjdCBoZnNfZm9yayAqZm9yazsKICAgICAgICBpbnQgY29u
dmVydDsKCgogICAgICAgIGlub190IGZpbGVfdHlwZTsKICAgICAgICBjaGFyIGRpcl9zaXplOwoK
CiAgICAgICAgY29uc3Qgc3RydWN0IGhmc19oZHJfbGF5b3V0ICpkZWZhdWx0X2xheW91dDsKICAg
ICAgICBzdHJ1Y3QgaGZzX2hkcl9sYXlvdXQgKmxheW91dDsKCgogICAgICAgIGludCB0el9zZWNv
bmRzd2VzdDsKCgogICAgICAgIHZvaWQgKCpkX2Ryb3Bfb3ApKHN0cnVjdCBkZW50cnkgKiwgY29u
c3QgaW5vX3QpOwp9OwojIDMwNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9hZGZzX2ZzX2kuaCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L2FkZnNfZnNfaS5oIgpzdHJ1Y3QgYWRmc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNp
Z25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X2lkOwog
ICAgICAgIF9fdTMyIGxvYWRhZGRyOwogICAgICAgIF9fdTMyIGV4ZWNhZGRyOwogICAgICAgIHVu
c2lnbmVkIGludCBmaWxldHlwZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cjsKICAgICAgICBp
bnQgc3RhbXBlZDoxOwp9OwojIDMwNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9xbng0X2ZzX2kuaCIgMQojIDE0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L3FueDRfZnNfaS5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvcW54dHlwZXMuaCIgMQojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L3FueHR5cGVzLmgiCnR5cGVkZWYgX191MTYgcW54NF9ueHRudF90Owp0
eXBlZGVmIF9fdTggcW54NF9mdHlwZV90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIF9fdTMy
IHh0bnRfYmxrOwogICAgICAgIF9fdTMyIHh0bnRfc2l6ZTsKfSBxbng0X3h0bnRfdDsKCnR5cGVk
ZWYgX191MTYgcW54NF9tb2RlX3Q7CnR5cGVkZWYgX191MTYgcW54NF9tdWlkX3Q7CnR5cGVkZWYg
X191MTYgcW54NF9tZ2lkX3Q7CnR5cGVkZWYgX191MzIgcW54NF9vZmZfdDsKdHlwZWRlZiBfX3Ux
NiBxbng0X25saW5rX3Q7CiMgMTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvcW54NF9mc19pLmgiIDIKCgoKCnN0cnVjdCBxbng0X2lub2RlX2luZm8gewogICAgICAg
IGNoYXIgaV9yZXNlcnZlZFsxNl07CiAgICAgICAgcW54NF9vZmZfdCBpX3NpemU7CiAgICAgICAg
cW54NF94dG50X3QgaV9maXJzdF94dG50OwogICAgICAgIF9fdTMyIGlfeGJsazsKICAgICAgICBf
X3MzMiBpX2Z0aW1lOwogICAgICAgIF9fczMyIGlfbXRpbWU7CiAgICAgICAgX19zMzIgaV9hdGlt
ZTsKICAgICAgICBfX3MzMiBpX2N0aW1lOwogICAgICAgIHFueDRfbnh0bnRfdCBpX251bV94dG50
czsKICAgICAgICBxbng0X21vZGVfdCBpX21vZGU7CiAgICAgICAgcW54NF9tdWlkX3QgaV91aWQ7
CiAgICAgICAgcW54NF9tZ2lkX3QgaV9naWQ7CiAgICAgICAgcW54NF9ubGlua190IGlfbmxpbms7
CiAgICAgICAgX191OCBpX3plcm9bNF07CiAgICAgICAgcW54NF9mdHlwZV90IGlfdHlwZTsKICAg
ICAgICBfX3U4IGlfc3RhdHVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7Cn07
CiMgMzA4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2Zz
X2kuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bGlzdC5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9y
ZWlzZXJmc19mc19pLmgiIDIKCnN0cnVjdCByZWlzZXJmc19pbm9kZV9pbmZvIHsKICBfX3UzMiBp
X2tleSBbNF07CgoKCgoKCiAgaW50IGlfdmVyc2lvbjsKCiAgaW50IGlfcGFja19vbl9jbG9zZSA7
CgogIF9fdTMyIGlfZmlyc3RfZGlyZWN0X2J5dGU7CiMgMzUgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfaS5oIgogIGludCBpX3ByZWFsbG9jX2Js
b2NrOwogIGludCBpX3ByZWFsbG9jX2NvdW50OwogIHN0cnVjdCBsaXN0X2hlYWQgaV9wcmVhbGxv
Y19saXN0OwoKCgoKICBpbnQgbm9wYWNrOwp9OwojIDMwOSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIiAxCiMgMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvYmZzX2ZzX2kuaCIKc3RydWN0IGJmc19pbm9kZV9pbmZvIHsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGlfZHNrX2lubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlf
c2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9lYmxvY2s7Cn07CiMgMzEwICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiIDEKIyAyNCAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91ZGZfZnNfaS5oIgp0eXBlZGVmIHN0
cnVjdAp7CiAgICAgICAgX191MzIgbG9naWNhbEJsb2NrTnVtOwogICAgICAgIF9fdTE2IHBhcnRp
dGlvblJlZmVyZW5jZU51bTsKfSBsYl9hZGRyOwoKCnN0cnVjdCB1ZGZfaW5vZGVfaW5mbwp7CiAg
ICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0aW1lOwogICAgICAgIGxvbmcg
aV9jcnRpbWU7CiAgICAgICAgbG9uZyBpX3VjcnRpbWU7CgogICAgICAgIGxiX2FkZHIgaV9sb2Nh
dGlvbjsKICAgICAgICBfX3U2NCBpX3VuaXF1ZTsKICAgICAgICBfX3UzMiBpX2xlbkVBdHRyOwog
ICAgICAgIF9fdTMyIGlfbGVuQWxsb2M7CiAgICAgICAgX191NjQgaV9sZW5FeHRlbnRzOwogICAg
ICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2Nf
Z29hbDsKICAgICAgICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAzOwogICAgICAgIHVuc2lnbmVk
IGlfZXh0ZW5kZWRfZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfc3RyYXRfNDA5NiA6IDE7CiAg
ICAgICAgdW5zaWduZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2VydmVk
IDogMjY7Cn07CiMgMzExICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25j
cF9mc19pLmgiIDEKIyAxNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9uY3BfZnNfaS5oIgpzdHJ1Y3QgbmNwX2lub2RlX2luZm8gewogICAgICAgIF9fdTMyIGRpckVu
dE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBEb3NEaXJOdW0gX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9sTnVtYmVyIF9fYXR0cmlidXRl
X18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0cjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo
b3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9wZW5lZDsKICAgICAgICBpbnQgYWNjZXNz
OwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRsZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlvbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwp9
OwojIDMxMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAy
CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wcm9jX2ZzX2ku
aCIgMQpzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnRhc2s7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg
aW50ICgqcHJvY19nZXRfbGluaykoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiosIHN0
cnVjdCB2ZnNtb3VudCAqKik7CiAgICAgICAgICAgICAgICBpbnQgKCpwcm9jX3JlYWQpKHN0cnVj
dCB0YXNrX3N0cnVjdCAqdGFzaywgY2hhciAqcGFnZSk7CiAgICAgICAgfSBvcDsKICAgICAgICBz
dHJ1Y3QgZmlsZSAqZmlsZTsKfTsKIyAzMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvdXNiZGV2X2ZzX2kuaCIgMQpzdHJ1Y3QgdXNiX2RldmljZTsKc3RydWN0IHVzYl9i
dXM7CgpzdHJ1Y3QgdXNiZGV2X2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
ZGxpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzbGlzdDsKICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX2RldmljZSAqZGV2OwogICAgICAgICAgICAgICAgc3Ry
dWN0IHVzYl9idXMgKmJ1czsKICAgICAgICB9IHA7Cn07CiMgMzE0ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIgMQojIDE2ICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKc3RydWN0IGpmZnMyX2lu
b2RlX2luZm8gewojIDI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2pmZnMyX2ZzX2kuaCIKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIF9f
dTMyIGhpZ2hlc3RfdmVyc2lvbjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcgKmZy
YWdsaXN0OwoKCgoKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0YTsK
CgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBzdHJ1
Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlOwoKCgoKCiAgICAgICAgX191MTYgZmxhZ3M7
CiAgICAgICAgX191OCB1c2VyY29tcHI7Cn07CiMgMzE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L2NyYW1mc19mc19zYi5oIiAxCgoKCgoKCnN0cnVjdCBjcmFtZnNfc2Jf
aW5mbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFnaWM7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBibG9ja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgZmlsZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxh
Z3M7Cn07CiMgMzE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAzNDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu
aCIKc3RydWN0IGlhdHRyIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7CiAgICAgICAg
dW1vZGVfdCBpYV9tb2RlOwogICAgICAgIHVpZF90IGlhX3VpZDsKICAgICAgICBnaWRfdCBpYV9n
aWQ7CiAgICAgICAgbG9mZl90IGlhX3NpemU7CiAgICAgICAgdGltZV90IGlhX2F0aW1lOwogICAg
ICAgIHRpbWVfdCBpYV9tdGltZTsKICAgICAgICB0aW1lX3QgaWFfY3RpbWU7CiAgICAgICAgdW5z
aWduZWQgaW50IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzY2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9xdW90YS5oIiAxCiMgNDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKIyA0MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9xdW90YS5oIiAyCiMgODQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKZXh0ZXJuIGludCBucl9kcXVvdHMsIG5yX2ZyZWVfZHF1
b3RzOwpleHRlcm4gaW50IG1heF9kcXVvdHM7CmV4dGVybiBpbnQgZHF1b3Rfcm9vdF9zcXVhc2g7
CiMgMTE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgi
CnN0cnVjdCBkcWJsayB7CiAgICAgICAgX191MzIgZHFiX2JoYXJkbGltaXQ7CiAgICAgICAgX191
MzIgZHFiX2Jzb2Z0bGltaXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmJsb2NrczsKICAgICAgICBf
X3UzMiBkcWJfaWhhcmRsaW1pdDsKICAgICAgICBfX3UzMiBkcWJfaXNvZnRsaW1pdDsKICAgICAg
ICBfX3UzMiBkcWJfY3VyaW5vZGVzOwogICAgICAgIHRpbWVfdCBkcWJfYnRpbWU7CiAgICAgICAg
dGltZV90IGRxYl9pdGltZTsKfTsKIyAxNDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvcXVvdGEuaCIKc3RydWN0IGRxc3RhdHMgewogICAgICAgIF9fdTMyIGxvb2t1
cHM7CiAgICAgICAgX191MzIgZHJvcHM7CiAgICAgICAgX191MzIgcmVhZHM7CiAgICAgICAgX191
MzIgd3JpdGVzOwogICAgICAgIF9fdTMyIGNhY2hlX2hpdHM7CiAgICAgICAgX191MzIgYWxsb2Nh
dGVkX2RxdW90czsKICAgICAgICBfX3UzMiBmcmVlX2RxdW90czsKICAgICAgICBfX3UzMiBzeW5j
czsKfTsKIyAxNjcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcXVv
dGEuaCIKc3RydWN0IGRxdW90IHsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKmRxX25leHQ7CiAgICAg
ICAgc3RydWN0IGRxdW90ICoqZHFfcHByZXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkcV9m
cmVlOwogICAgICAgIHN0cnVjdCBkcXVvdCAqZHFfaGFzaF9uZXh0OwogICAgICAgIHN0cnVjdCBk
cXVvdCAqKmRxX2hhc2hfcHByZXY7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZHFfd2FpdDsK
ICAgICAgICBpbnQgZHFfY291bnQ7CgoKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmRxX3Ni
OwogICAgICAgIHVuc2lnbmVkIGludCBkcV9pZDsKICAgICAgICBrZGV2X3QgZHFfZGV2OwogICAg
ICAgIHNob3J0IGRxX3R5cGU7CiAgICAgICAgc2hvcnQgZHFfZmxhZ3M7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBkcV9yZWZlcmVuY2VkOwoKICAgICAgICBzdHJ1Y3QgZHFibGsgZHFfZHFiOwp9Owoj
IDM2NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb3VudC5oIiAxCiMg
MzY4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCgoK
CnN0cnVjdCBwYWdlOwpzdHJ1Y3QgYWRkcmVzc19zcGFjZTsKc3RydWN0IGtpb2J1ZjsKCnN0cnVj
dCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKndyaXRlcGFnZSkoc3Ry
dWN0IHBhZ2UgKik7CiAgICAgICAgaW50ICgqcmVhZHBhZ2UpKHN0cnVjdCBmaWxlICosIHN0cnVj
dCBwYWdlICopOwogICAgICAgIGludCAoKnN5bmNfcGFnZSkoc3RydWN0IHBhZ2UgKik7CiAgICAg
ICAgaW50ICgqcHJlcGFyZV93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5z
aWduZWQsIHVuc2lnbmVkKTsKICAgICAgICBpbnQgKCpjb21taXRfd3JpdGUpKHN0cnVjdCBmaWxl
ICosIHN0cnVjdCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CgogICAgICAgIGludCAoKmJt
YXBfUmJkNDQ3NmM0KShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb25nKTsKCiAgICAgICAgaW50
ICgqZGlyZWN0X0lPKShpbnQsIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2ln
bmVkIGxvbmcsIGludCk7Cn07CgpzdHJ1Y3QgYWRkcmVzc19zcGFjZSB7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBjbGVhbl9wYWdlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X3Bh
Z2VzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbG9ja2VkX3BhZ2VzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgbnJwYWdlczsKICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25z
ICphX29wczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhvc3Q7CiAgICAgICAgc3RydWN0IHZtX2Fy
ZWFfc3RydWN0ICppX21tYXA7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXBf
c2hhcmVkOwogICAgICAgIHNwaW5sb2NrX3QgaV9zaGFyZWRfbG9jazsKICAgICAgICBpbnQgZ2Zw
X21hc2s7Cn07CgpzdHJ1Y3QgY2hhcl9kZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
aGFzaDsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAg
YXRvbWljX3Qgb3BlbmVyczsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKfTsKCnN0cnVj
dCBibG9ja19kZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmRfaGFzaDsKICAgICAg
ICBhdG9taWNfdCBiZF9jb3VudDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBiZF9pbm9kZTsKICAg
ICAgICBkZXZfdCBiZF9kZXY7CiAgICAgICAgaW50IGJkX29wZW5lcnM7CiAgICAgICAgY29uc3Qg
c3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpiZF9vcDsKICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlIGJkX3NlbTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2lub2RlczsKfTsKCnN0
cnVjdCBpbm9kZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2hhc2g7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBpX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RlbnRyeTsK
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2J1ZmZlcnM7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBpX2RpcnR5X2RhdGFfYnVmZmVyczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBp
X2lubzsKICAgICAgICBhdG9taWNfdCBpX2NvdW50OwogICAgICAgIGtkZXZfdCBpX2RldjsKICAg
ICAgICB1bW9kZV90IGlfbW9kZTsKICAgICAgICBubGlua190IGlfbmxpbms7CiAgICAgICAgdWlk
X3QgaV91aWQ7CiAgICAgICAgZ2lkX3QgaV9naWQ7CiAgICAgICAga2Rldl90IGlfcmRldjsKICAg
ICAgICBsb2ZmX3QgaV9zaXplOwogICAgICAgIHRpbWVfdCBpX2F0aW1lOwogICAgICAgIHRpbWVf
dCBpX210aW1lOwogICAgICAgIHRpbWVfdCBpX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
aV9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9ibG9ja3M7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBpX3ZlcnNpb247CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX3NlbTsKICAgICAg
ICBzdHJ1Y3Qgc2VtYXBob3JlIGlfem9tYmllOwogICAgICAgIHN0cnVjdCBpbm9kZV9vcGVyYXRp
b25zICppX29wOwogICAgICAgIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmlfZm9wOwogICAgICAg
IHN0cnVjdCBzdXBlcl9ibG9jayAqaV9zYjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBpX3dh
aXQ7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqaV9mbG9jazsKICAgICAgICBzdHJ1Y3QgYWRk
cmVzc19zcGFjZSAqaV9tYXBwaW5nOwogICAgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlIGlfZGF0
YTsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKmlfZHF1b3RbMl07CgogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgaV9kZXZpY2VzOwogICAgICAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKmlfcGlwZTsK
ICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICppX2JkZXY7CiAgICAgICAgc3RydWN0IGNoYXJf
ZGV2aWNlICppX2NkZXY7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kbm90aWZ5X21hc2s7CiAg
ICAgICAgc3RydWN0IGRub3RpZnlfc3RydWN0ICppX2Rub3RpZnk7CgogICAgICAgIHVuc2lnbmVk
IGxvbmcgaV9zdGF0ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IGlfZmxhZ3M7CiAgICAgICAgdW5z
aWduZWQgY2hhciBpX3NvY2s7CgogICAgICAgIGF0b21pY190IGlfd3JpdGVjb3VudDsKICAgICAg
ICB1bnNpZ25lZCBpbnQgaV9hdHRyX2ZsYWdzOwogICAgICAgIF9fdTMyIGlfZ2VuZXJhdGlvbjsK
ICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbWluaXhfaW5vZGVfaW5mbyBt
aW5peF9pOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDJfaW5vZGVfaW5mbyBleHQyX2k7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgaHBmc19pbm9kZV9pbmZvIGhwZnNfaTsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gbnRmc19pOwogICAgICAgICAgICAgICAgc3RydWN0
IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCB1bXNkb3Nf
aW5vZGVfaW5mbyB1bXNkb3NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBpc29faW5vZGVfaW5m
byBpc29mc19pOwogICAgICAgICAgICAgICAgc3RydWN0IG5mc19pbm9kZV9pbmZvIG5mc19pOwog
ICAgICAgICAgICAgICAgc3RydWN0IHN5c3ZfaW5vZGVfaW5mbyBzeXN2X2k7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgYWZmc19pbm9kZV9pbmZvIGFmZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVj
dCB1ZnNfaW5vZGVfaW5mbyB1ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBlZnNfaW5vZGVf
aW5mbyBlZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCByb21mc19pbm9kZV9pbmZvIHJvbWZz
X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2htZW1faW5vZGVfaW5mbyBzaG1lbV9pOwogICAg
ICAgICAgICAgICAgc3RydWN0IGNvZGFfaW5vZGVfaW5mbyBjb2RhX2k7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3Qgc21iX2lub2RlX2luZm8gc21iZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBo
ZnNfaW5vZGVfaW5mbyBoZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZGZzX2lub2RlX2lu
Zm8gYWRmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfaW5mbyBxbng0X2k7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVpc2VyZnNfaW5vZGVfaW5mbyByZWlzZXJmc19pOwog
ICAgICAgICAgICAgICAgc3RydWN0IGJmc19pbm9kZV9pbmZvIGJmc19pOwogICAgICAgICAgICAg
ICAgc3RydWN0IHVkZl9pbm9kZV9pbmZvIHVkZl9pOwogICAgICAgICAgICAgICAgc3RydWN0IG5j
cF9pbm9kZV9pbmZvIG5jcGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvY19pbm9kZV9p
bmZvIHByb2NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrZXQgc29ja2V0X2k7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgdXNiZGV2X2lub2RlX2luZm8gdXNiZGV2X2k7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfaW5mbyBqZmZzMl9pOwogICAgICAgICAgICAgICAgdm9p
ZCAqZ2VuZXJpY19pcDsKICAgICAgICB9IHU7Cn07CgpzdHJ1Y3QgZm93bl9zdHJ1Y3QgewogICAg
ICAgIGludCBwaWQ7CiAgICAgICAgdWlkX3QgdWlkLCBldWlkOwogICAgICAgIGludCBzaWdudW07
Cn07CgpzdHJ1Y3QgZmlsZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmX2xpc3Q7CiAgICAg
ICAgc3RydWN0IGRlbnRyeSAqZl9kZW50cnk7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpmX3Zm
c21udDsKICAgICAgICBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmX29wOwogICAgICAgIGF0b21p
Y190IGZfY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGZfZmxhZ3M7CiAgICAgICAgbW9kZV90
IGZfbW9kZTsKICAgICAgICBsb2ZmX3QgZl9wb3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmX3Jl
YWRhLCBmX3JhbWF4LCBmX3JhZW5kLCBmX3JhbGVuLCBmX3Jhd2luOwogICAgICAgIHN0cnVjdCBm
b3duX3N0cnVjdCBmX293bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBmX3VpZCwgZl9naWQ7CiAg
ICAgICAgaW50IGZfZXJyb3I7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZl92ZXJzaW9uOwoKCiAg
ICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwoKCiAgICAgICAgc3RydWN0IGtpb2J1ZiAqZl9pb2J1
ZjsKICAgICAgICBsb25nIGZfaW9idWZfbG9jazsKfTsKZXh0ZXJuIHNwaW5sb2NrX3QgZmlsZXNf
bG9ja19SZjllZmIxNmE7CgoKCgoKCmV4dGVybiBpbnQgaW5pdF9wcml2YXRlX2ZpbGVfUjNiMTM4
NWI5KHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsKIyA1NTYgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgZmls
ZXNfc3RydWN0ICpmbF9vd25lcl90OwoKc3RydWN0IGZpbGVfbG9jayB7CiAgICAgICAgc3RydWN0
IGZpbGVfbG9jayAqZmxfbmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2xpbms7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBmbF9ibG9jazsKICAgICAgICBmbF9vd25lcl90IGZsX293
bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBmbF9waWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk
X3QgZmxfd2FpdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmxfZmlsZTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIGZsX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxfdHlwZTsKICAgICAgICBs
b2ZmX3QgZmxfc3RhcnQ7CiAgICAgICAgbG9mZl90IGZsX2VuZDsKCiAgICAgICAgdm9pZCAoKmZs
X25vdGlmeSkoc3RydWN0IGZpbGVfbG9jayAqKTsKICAgICAgICB2b2lkICgqZmxfaW5zZXJ0KShz
dHJ1Y3QgZmlsZV9sb2NrICopOwogICAgICAgIHZvaWQgKCpmbF9yZW1vdmUpKHN0cnVjdCBmaWxl
X2xvY2sgKik7CgogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICogZmxfZmFzeW5jOwoKICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX2xvY2tfaW5mbyBuZnNfZmw7
CiAgICAgICAgfSBmbF91Owp9OwojIDU4OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9mcy5oIgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBmaWxlX2xvY2tfbGlzdF9S
NmU4NTExOWQ7CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
ZmNudGwuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNt
L2ZjbnRsLmgiIDEKIyA2OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20v
ZmNudGwuaCIKc3RydWN0IGZsb2NrIHsKICAgICAgICBzaG9ydCBsX3R5cGU7CiAgICAgICAgc2hv
cnQgbF93aGVuY2U7CiAgICAgICAgb2ZmX3QgbF9zdGFydDsKICAgICAgICBvZmZfdCBsX2xlbjsK
ICAgICAgICBwaWRfdCBsX3BpZDsKfTsKCnN0cnVjdCBmbG9jazY0IHsKICAgICAgICBzaG9ydCBs
X3R5cGU7CiAgICAgICAgc2hvcnQgbF93aGVuY2U7CiAgICAgICAgbG9mZl90IGxfc3RhcnQ7CiAg
ICAgICAgbG9mZl90IGxfbGVuOwogICAgICAgIHBpZF90IGxfcGlkOwp9OwojIDUgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZmNudGwuaCIgMgojIDU5MiAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCgpleHRlcm4gaW50IGZj
bnRsX2dldGxrKHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrICopOwpleHRlcm4gaW50IGZjbnRs
X3NldGxrKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2sgKik7CgpleHRl
cm4gaW50IGZjbnRsX2dldGxrNjQodW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2s2NCAqKTsKZXh0
ZXJuIGludCBmY250bF9zZXRsazY0KHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBzdHJ1Y3Qg
ZmxvY2s2NCAqKTsKCgpleHRlcm4gdm9pZCBsb2Nrc19pbml0X2xvY2tfUjE1ZjQzYTg4KHN0cnVj
dCBmaWxlX2xvY2sgKik7CmV4dGVybiB2b2lkIGxvY2tzX2NvcHlfbG9ja19SMjUwZDc0YzQoc3Ry
dWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19y
ZW1vdmVfcG9zaXgoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCk7CmV4dGVybiB2b2lkIGxvY2tz
X3JlbW92ZV9mbG9jayhzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIHN0cnVjdCBmaWxlX2xvY2sgKnBv
c2l4X3Rlc3RfbG9ja19SOTQ1ZDY2YTkoc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAq
KTsKZXh0ZXJuIGludCBwb3NpeF9sb2NrX2ZpbGVfUjgyZmZhODNkKHN0cnVjdCBmaWxlICosIHN0
cnVjdCBmaWxlX2xvY2sgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcG9zaXhfYmxvY2tf
bG9ja19SYzdlZDhhZTcoc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpl
eHRlcm4gdm9pZCBwb3NpeF91bmJsb2NrX2xvY2tfUmY4ZTNjMDBjKHN0cnVjdCBmaWxlX2xvY2sg
Kik7CmV4dGVybiBpbnQgX19nZXRfbGVhc2VfUmYzOWYzYjc2KHN0cnVjdCBpbm9kZSAqaW5vZGUs
IHVuc2lnbmVkIGludCBmbGFncyk7CmV4dGVybiB0aW1lX3QgbGVhc2VfZ2V0X210aW1lX1I0NDI2
NGY5OShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja19tYXlfcmVhZF9SMmE1YmJmNjco
c3RydWN0IGlub2RlICosIGxvZmZfdCBzdGFydCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CmV4dGVy
biBpbnQgbG9ja19tYXlfd3JpdGVfUmYwY2RmZjc0KHN0cnVjdCBpbm9kZSAqLCBsb2ZmX3Qgc3Rh
cnQsIHVuc2lnbmVkIGxvbmcgY291bnQpOwoKc3RydWN0IGZhc3luY19zdHJ1Y3QgewogICAgICAg
IGludCBtYWdpYzsKICAgICAgICBpbnQgZmFfZmQ7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1
Y3QgKmZhX25leHQ7CiAgICAgICAgc3RydWN0IGZpbGUgKmZhX2ZpbGU7Cn07CgoKCgpleHRlcm4g
aW50IGZhc3luY19oZWxwZXJfUjc5MDU4MzI0KGludCwgc3RydWN0IGZpbGUgKiwgaW50LCBzdHJ1
Y3QgZmFzeW5jX3N0cnVjdCAqKik7CgpleHRlcm4gdm9pZCBraWxsX2Zhc3luY19SZjE3MzhlZWUo
c3RydWN0IGZhc3luY19zdHJ1Y3QgKiosIGludCwgaW50KTsKCmV4dGVybiB2b2lkIF9fa2lsbF9m
YXN5bmNfUjRhOWFiMmIzKHN0cnVjdCBmYXN5bmNfc3RydWN0ICosIGludCwgaW50KTsKCnN0cnVj
dCBuYW1laWRhdGEgewogICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeTsKICAgICAgICBzdHJ1
Y3QgdmZzbW91bnQgKm1udDsKICAgICAgICBzdHJ1Y3QgcXN0ciBsYXN0OwogICAgICAgIHVuc2ln
bmVkIGludCBmbGFnczsKICAgICAgICBpbnQgbGFzdF90eXBlOwp9OwoKCgoKc3RydWN0IHF1b3Rh
X21vdW50X29wdGlvbnMKewogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlIGRxaW9fc2VtOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgZHFvZmZfc2Vt
OwogICAgICAgIHN0cnVjdCBmaWxlICpmaWxlc1syXTsKICAgICAgICB0aW1lX3QgaW5vZGVfZXhw
aXJlWzJdOwogICAgICAgIHRpbWVfdCBibG9ja19leHBpcmVbMl07CiAgICAgICAgY2hhciByc3F1
YXNoWzJdOwp9OwoKCgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L21pbml4X2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IG1pbml4X3NiX2luZm8gewogICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbmlub2RlczsKICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25lczsKICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxvY2tzOwogICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBzX21heF9zaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19kaXJzaXplOwog
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19uYW1lbGVuOwogICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc19saW5rX21heDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9o
ZWFkICoqIHNfem1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFk
ICogc19zYmg7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9zdXBlcl9ibG9j
ayAqIHNfbXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRf
c3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNfdmVyc2lvbjsK
fTsKIyA2NTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZXh0Ml9mc19z
Yi5oIiAxCiMgMzAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZXh0
Ml9mc19zYi5oIgpzdHJ1Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf
ZnJhZ19zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxvY2s7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX2ZyYWdzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzX3Blcl9n
cm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ2Ri
X2NvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq
IHNfc2JoOwogICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsKICAgICAgICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHNfbG9hZGVkX2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRf
YmxvY2tfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0bWFwX251bWJl
cls4XTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1hcFs4XTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNfbW91bnRfb3B0OwogICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdpZF90IHNfcmVz
Z2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc19wYWQ7CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0czsKICAgICAg
ICBpbnQgc19kZXNjX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2RlX3NpemU7CiAg
ICAgICAgaW50IHNfZmlyc3RfaW5vOwp9OwojIDY1OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9ocGZzX2ZzX3NiLmgiIDEKCgoKc3RydWN0IGhwZnNfc2JfaW5mbyB7CiAg
ICAgICAgaW5vX3Qgc2Jfcm9vdDsKICAgICAgICB1bnNpZ25lZCBzYl9mc19zaXplOwogICAgICAg
IHVuc2lnbmVkIHNiX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2JfZGlyYmFuZF9zdGFydDsK
ICAgICAgICB1bnNpZ25lZCBzYl9kaXJiYW5kX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2JfZG1h
cDsKICAgICAgICB1bnNpZ25lZCBzYl9uX2ZyZWU7CiAgICAgICAgdW5zaWduZWQgc2Jfbl9mcmVl
X2Rub2RlczsKICAgICAgICB1aWRfdCBzYl91aWQ7CiAgICAgICAgZ2lkX3Qgc2JfZ2lkOwogICAg
ICAgIHVtb2RlX3Qgc2JfbW9kZTsKICAgICAgICB1bnNpZ25lZCBzYl9jb252IDogMjsKICAgICAg
ICB1bnNpZ25lZCBzYl9lYXMgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2VyciA6IDI7CiAgICAg
ICAgdW5zaWduZWQgc2JfY2hrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9sb3dlcmNhc2UgOiAx
OwogICAgICAgIHVuc2lnbmVkIHNiX3dhc19lcnJvciA6IDE7CiAgICAgICAgdW5zaWduZWQgc2Jf
Y2hrZHNrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9yZF9mbm9kZSA6IDI7CiAgICAgICAgdW5z
aWduZWQgc2JfcmRfaW5vZGUgOiAyOwoKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc2JfaWdl
dF9xOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKnNiX2NwX3RhYmxlOwoKCiAgICAgICAgdW5zaWdu
ZWQgKnNiX2JtcF9kaXI7CiAgICAgICAgdW5zaWduZWQgc2JfY19iaXRtYXA7CiAgICAgICAgd2Fp
dF9xdWV1ZV9oZWFkX3Qgc2JfY3JlYXRpb25fZGU7CgogICAgICAgIHVuc2lnbmVkIHNiX2NyZWF0
aW9uX2RlX2xvY2sgOiAxOwoKICAgICAgICBpbnQgc2JfdGltZXNoaWZ0Owp9OwojIDY2MCAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9udGZzX2ZzX3NiLmgiIDEKCgoKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIiAx
CiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9udGZzX2ZzX3Ni
LmgiIDIKCnN0cnVjdCBudGZzX3NiX2luZm97CgogICAgICAgIG50ZnNfdWlkX3QgdWlkOwogICAg
ICAgIG50ZnNfZ2lkX3QgZ2lkOwogICAgICAgIG50bW9kZV90IHVtYXNrOwogICAgICAgIHZvaWQg
Km5sc19tYXA7CiAgICAgICAgdW5zaWduZWQgaW50IG5ndDsKICAgICAgICBjaGFyIG1mdF96b25l
X211bHRpcGxpZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZnRfZGF0YV9wb3M7CiAgICAgICAg
bnRmc19jbHVzdGVyX3QgbWZ0X3pvbmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96
b25lX3N0YXJ0OwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX2VuZDsKICAgICAgICBu
dGZzX2NsdXN0ZXJfdCBkYXRhMV96b25lX3BvczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRh
Ml96b25lX3BvczsKCgogICAgICAgIG50ZnNfc2l6ZV90IHBhcnRpdGlvbl9iaWFzOwoKICAgICAg
ICBudGZzX3UzMiBhdF9zdGFuZGFyZF9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9h
dHRyaWJ1dGVfbGlzdDsKICAgICAgICBudGZzX3UzMiBhdF9maWxlX25hbWU7CiAgICAgICAgbnRm
c191MzIgYXRfdm9sdW1lX3ZlcnNpb247CiAgICAgICAgbnRmc191MzIgYXRfc2VjdXJpdHlfZGVz
Y3JpcHRvcjsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfbmFtZTsKICAgICAgICBudGZzX3Uz
MiBhdF92b2x1bWVfaW5mb3JtYXRpb247CiAgICAgICAgbnRmc191MzIgYXRfZGF0YTsKICAgICAg
ICBudGZzX3UzMiBhdF9pbmRleF9yb290OwogICAgICAgIG50ZnNfdTMyIGF0X2luZGV4X2FsbG9j
YXRpb247CiAgICAgICAgbnRmc191MzIgYXRfYml0bWFwOwogICAgICAgIG50ZnNfdTMyIGF0X3N5
bWxpbms7CgogICAgICAgIGludCBzZWN0b3Jfc2l6ZTsKICAgICAgICBpbnQgY2x1c3Rlcl9zaXpl
OwogICAgICAgIGludCBjbHVzdGVyX3NpemVfYml0czsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXJz
X3Blcl9yZWNvcmQ7CiAgICAgICAgaW50IG1mdF9yZWNvcmRfc2l6ZTsKICAgICAgICBpbnQgbWZ0
X3JlY29yZF9zaXplX2JpdHM7CiAgICAgICAgaW50IGluZGV4X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7
CiAgICAgICAgaW50IGluZGV4X3JlY29yZF9zaXplOwogICAgICAgIGludCBpbmRleF9yZWNvcmRf
c2l6ZV9iaXRzOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG5yX2NsdXN0ZXJzOwogICAgICAgIG50
ZnNfY2x1c3Rlcl90IG1mdF9sY247CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X21pcnJfbGNu
OwoKICAgICAgICB1bnNpZ25lZCBjaGFyICptZnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKnVw
Y2FzZTsKICAgICAgICB1bnNpZ25lZCBpbnQgdXBjYXNlX2xlbmd0aDsKCiAgICAgICAgc3RydWN0
IG50ZnNfaW5vZGVfaW5mbyAqbWZ0X2lubzsKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZv
ICptZnRtaXJyOwogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKmJpdG1hcDsKICAgICAg
ICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaW5vX2ZsYWdz
Owp9OwojIDY2MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tc2Rvc19m
c19zYi5oIiAxCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2ZhdF9jdmYuaCIgMQoKCgoKCnN0cnVjdCBjdmZfZm9ybWF0CnsgaW50IGN2Zl92ZXJzaW9uOwog
IGNoYXIqIGN2Zl92ZXJzaW9uX3RleHQ7CiAgdW5zaWduZWQgbG9uZyBmbGFnczsKICBpbnQgKCpk
ZXRlY3RfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBpbnQgKCptb3VudF9jdmYpIChz
dHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsY2hhcipvcHRpb25zKTsKICBpbnQgKCp1bm1vdW50X2N2Zikg
KHN0cnVjdCBzdXBlcl9ibG9jaypzYik7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkKiAoKmN2Zl9icmVh
ZCkgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixpbnQgYmxvY2spOwogIHN0cnVjdCBidWZmZXJfaGVh
ZCogKCpjdmZfZ2V0YmxrKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGludCBibG9jayk7CiAgdm9p
ZCAoKmN2Zl9icmVsc2UpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBidWZmZXJfaGVh
ZCAqYmgpOwogIHZvaWQgKCpjdmZfbWFya19idWZmZXJfZGlydHkpIChzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KmJoKTsKICB2b2lkICgqY3ZmX3NldF91cHRvZGF0ZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHZhbCk7CiAgaW50ICgqY3ZmX2lzX3VwdG9kYXRlKSAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzYixzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKICB2b2lkICgqY3Zm
X2xsX3J3X2Jsb2NrKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG9wciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5icmVxLAogICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoWzMyXSk7CiAgaW50ICgqZmF0
X2FjY2VzcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsaW50IG5yLGludCBuZXdfdmFsdWUpOwog
IGludCAoKmN2Zl9zdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBzdGF0ZnMg
KmJ1ZiwgaW50IGJ1ZnNpeik7CiAgaW50ICgqY3ZmX2JtYXApIChzdHJ1Y3QgaW5vZGUgKmlub2Rl
LGludCBibG9jayk7CiAgc3NpemVfdCAoKmN2Zl9maWxlX3JlYWQpICggc3RydWN0IGZpbGUgKiwg
Y2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBzc2l6ZV90ICgqY3ZmX2ZpbGVfd3JpdGUpICgg
c3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBpbnQgKCpj
dmZfbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKICBpbnQg
KCpjdmZfcmVhZHBhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBhZ2UgKik7CiAgaW50ICgq
Y3ZmX3dyaXRlcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICBpbnQgKCpj
dmZfZGlyX2lvY3RsKSAoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxlICogZmlscCwK
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh
cmcpOwogIHZvaWQgKCp6ZXJvX291dF9jbHVzdGVyKSAoc3RydWN0IGlub2RlKiwgaW50IGNsdXN0
ZXJucik7Cn07CgppbnQgcmVnaXN0ZXJfY3ZmX2Zvcm1hdF9SZGM5NjhkOGEoc3RydWN0IGN2Zl9m
b3JtYXQqY3ZmX2Zvcm1hdCk7CmludCB1bnJlZ2lzdGVyX2N2Zl9mb3JtYXRfUmVhN2IwNzYwKHN0
cnVjdCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwp2b2lkIGRlY19jdmZfZm9ybWF0X3VzZV9jb3Vu
dF9ieV92ZXJzaW9uKGludCB2ZXJzaW9uKTsKaW50IGRldGVjdF9jdmYoc3RydWN0IHN1cGVyX2Js
b2NrKnNiLGNoYXIqZm9yY2UpOwoKZXh0ZXJuIHN0cnVjdCBjdmZfZm9ybWF0ICpjdmZfZm9ybWF0
c1tdOwpleHRlcm4gaW50IGN2Zl9mb3JtYXRfdXNlX2NvdW50W107CiMgNCAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAyCgoKCgoKc3RydWN0
IGZhdF9tb3VudF9vcHRpb25zIHsKICAgICAgICB1aWRfdCBmc191aWQ7CiAgICAgICAgZ2lkX3Qg
ZnNfZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzX3VtYXNrOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IGNvZGVwYWdlOwogICAgICAgIGNoYXIgKmlvY2hhcnNldDsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIG5hbWVfY2hlY2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBjb252ZXJzaW9uOwogICAg
ICAgIHVuc2lnbmVkIHF1aWV0OjEsCiAgICAgICAgICAgICAgICAgc2hvd2V4ZWM6MSwKICAgICAg
ICAgICAgICAgICBzeXNfaW1tdXRhYmxlOjEsCiAgICAgICAgICAgICAgICAgZG90c09LOjEsCiAg
ICAgICAgICAgICAgICAgaXN2ZmF0OjEsCiAgICAgICAgICAgICAgICAgdXRmODoxLAogICAgICAg
ICAgICAgICAgIHVuaWNvZGVfeGxhdGU6MSwKICAgICAgICAgICAgICAgICBwb3NpeGZzOjEsCiAg
ICAgICAgICAgICAgICAgbnVtdGFpbDoxLAogICAgICAgICAgICAgICAgIGF0YXJpOjEsCiAgICAg
ICAgICAgICAgICAgZmF0MzI6MSwKICAgICAgICAgICAgICAgICBub2Nhc2U6MTsKfTsKCnN0cnVj
dCB2ZmF0X3VuaWNvZGUgewogICAgICAgIHVuc2lnbmVkIGNoYXIgdW5pMTsKICAgICAgICB1bnNp
Z25lZCBjaGFyIHVuaTI7Cn07CgpzdHJ1Y3QgbXNkb3Nfc2JfaW5mbyB7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgY2x1c3Rlcl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNsdXN0ZXJfYml0
czsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZhdHMsZmF0X2JpdHM7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZmF0X3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmF0X2xlbmd0aDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGRpcl9zdGFydDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkaXJfZW50
cmllczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBjbHVzdGVyczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJvb3RfY2x1c3RlcjsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZzaW5mb19zZWN0b3I7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qg
ZmF0X3dhaXQ7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBmYXRfbG9jazsKICAgICAgICBpbnQg
cHJldl9mcmVlOwogICAgICAgIGludCBmcmVlX2NsdXN0ZXJzOwogICAgICAgIHN0cnVjdCBmYXRf
bW91bnRfb3B0aW9ucyBvcHRpb25zOwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc19kaXNr
OwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc19pbzsKICAgICAgICBzdHJ1Y3QgY3ZmX2Zv
cm1hdCogY3ZmX2Zvcm1hdDsKICAgICAgICB2b2lkICpkaXJfb3BzOwogICAgICAgIHZvaWQgKnBy
aXZhdGVfZGF0YTsKICAgICAgICBpbnQgZGlyX3Blcl9ibG9jazsKICAgICAgICBpbnQgZGlyX3Bl
cl9ibG9ja19iaXRzOwp9OwojIDY2MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9pc29fZnNfc2IuaCIgMQoKCgoKCgpzdHJ1Y3QgaXNvZnNfc2JfaW5mbyB7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzX25pbm9kZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25lczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmlyc3RkYXRhem9uZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4X3NpemU7Cgog
ICAgICAgIHVuc2lnbmVkIGNoYXIgc19oaWdoX3NpZXJyYTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IHNfbWFwcGluZzsKICAgICAgICBpbnQgc19yb2NrX29mZnNldDsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHNfcm9jazsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfam9saWV0X2xldmVsOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgc191dGY4OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19jcnVmdDsKCgog
ICAgICAgIHVuc2lnbmVkIGNoYXIgc191bmhpZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX25v
c3VpZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfbm9kZXY7CiAgICAgICAgbW9kZV90IHNfbW9k
ZTsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBzdHJ1
Y3QgbmxzX3RhYmxlICpzX25sc19pb2NoYXJzZXQ7Cn07CiMgNjYzICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25mc19mc19zYi5oIiAxCgoKCgoKCnN0cnVjdCBuZnNfc2Vy
dmVyIHsKICAgICAgICBzdHJ1Y3QgcnBjX2NsbnQgKiBjbGllbnQ7CiAgICAgICAgc3RydWN0IG5m
c19ycGNfb3BzICogcnBjX29wczsKICAgICAgICBpbnQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQg
aW50IHJzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBycGFnZXM7CiAgICAgICAgdW5zaWduZWQg
aW50IHdzaXplOwogICAgICAgIHVuc2lnbmVkIGludCB3cGFnZXM7CiAgICAgICAgdW5zaWduZWQg
aW50IGR0c2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYnNpemU7CiAgICAgICAgdW5zaWduZWQg
aW50IGFjcmVnbWluOwogICAgICAgIHVuc2lnbmVkIGludCBhY3JlZ21heDsKICAgICAgICB1bnNp
Z25lZCBpbnQgYWNkaXJtaW47CiAgICAgICAgdW5zaWduZWQgaW50IGFjZGlybWF4OwogICAgICAg
IHVuc2lnbmVkIGludCBuYW1lbGVuOwogICAgICAgIGNoYXIgKiBob3N0bmFtZTsKICAgICAgICBz
dHJ1Y3QgbmZzX3JlcWxpc3QgKiByd19yZXF1ZXN0czsKfTsKCgoKCnN0cnVjdCBuZnNfc2JfaW5m
byB7CiAgICAgICAgc3RydWN0IG5mc19zZXJ2ZXIgc19zZXJ2ZXI7Cn07CiMgNjY0ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIgMQojIDEzICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIKc3RydWN0
IHN5c3Zfc2JfaW5mbyB7CiAgICAgICAgaW50IHNfdHlwZTsKICAgICAgICBjaGFyIHNfYnl0ZXNl
eDsKICAgICAgICBjaGFyIHNfa2x1ZGdlX3N5bWxpbmtzOwogICAgICAgIGNoYXIgc190cnVuY2F0
ZTsKCiAgICAgICAgbmxpbmtfdCBzX2xpbmtfbWF4OwogICAgICAgIHVuc2lnbmVkIGludCBzX2lu
b2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9ja18x
OwogICAgICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19wZXJfYmxvY2tfYml0czsKICAgICAgICB1
bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZF9w
ZXJfYmxvY2tfYml0czsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzI7CiAg
ICAgICAgdW5zaWduZWQgaW50IHNfdG9vYmlnX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBz
X2Jsb2NrX2Jhc2U7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19maWNfc2l6ZTsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBzX2ZsY19zaXplOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNf
YmgxOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19iaDI7CgoKICAgICAgICBjaGFyICog
c19zYmQxOwogICAgICAgIGNoYXIgKiBzX3NiZDI7CiAgICAgICAgdTE2ICpzX3NiX2ZpY19jb3Vu
dDsKICAgICAgICB1MTYgKnNfc2JfZmljX2lub2RlczsKICAgICAgICB1MTYgKnNfc2JfdG90YWxf
ZnJlZV9pbm9kZXM7CiAgICAgICAgdTE2ICpzX2JjYWNoZV9jb3VudDsKICAgICAgICB1MzIgKnNf
YmNhY2hlOwogICAgICAgIHUzMiAqc19mcmVlX2Jsb2NrczsKICAgICAgICB1MzIgKnNfc2JfdGlt
ZTsKICAgICAgICB1MzIgKnNfc2Jfc3RhdGU7CgoKICAgICAgICB1MzIgc19maXJzdGlub2Rlem9u
ZTsKICAgICAgICB1MzIgc19maXJzdGRhdGF6b25lOwogICAgICAgIHUzMiBzX25pbm9kZXM7CiAg
ICAgICAgdTMyIHNfbmRhdGF6b25lczsKICAgICAgICB1MzIgc19uem9uZXM7CiAgICAgICAgdTE2
IHNfbmFtZWxlbjsKfTsKIyA2NjUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvYWZmc19mc19zYi5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvYWZmc19mc19zYi5oIgpzdHJ1Y3QgYWZmc19ibV9pbmZvIHsKICAgICAgICB1MzIg
Ym1fa2V5OwogICAgICAgIHUzMiBibV9mcmVlOwp9OwoKc3RydWN0IGFmZnNfc2JfaW5mbyB7CiAg
ICAgICAgaW50IHNfcGFydGl0aW9uX3NpemU7CiAgICAgICAgaW50IHNfcmVzZXJ2ZWQ7CgogICAg
ICAgIHUzMiBzX2RhdGFfYmxrc2l6ZTsKICAgICAgICB1MzIgc19yb290X2Jsb2NrOwogICAgICAg
IGludCBzX2hhc2hzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mbGFnczsKICAgICAgICB1
aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfbW9kZTsK
ICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfcm9vdF9iaDsKICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlIHNfYm1sb2NrOwogICAgICAgIHN0cnVjdCBhZmZzX2JtX2luZm8gKnNfYml0bWFwOwog
ICAgICAgIHUzMiBzX2JtYXBfY291bnQ7CiAgICAgICAgdTMyIHNfYm1hcF9iaXRzOwogICAgICAg
IHUzMiBzX2xhc3RfYm1hcDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYm1hcF9iaDsK
ICAgICAgICBjaGFyICpzX3ByZWZpeDsKICAgICAgICBpbnQgc19wcmVmaXhfbGVuOwogICAgICAg
IGNoYXIgc192b2x1bWVbMzJdOwp9OwojIDY2NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC91ZnNfZnNfc2IuaCIgMQojIDE3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDEKIyAzMCAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAzMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEKIyAzMiAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGltZS5oIiAxCiMgMzMgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMQojIDM0ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIiAyCiMgMjQ4ICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX3RpbWV2YWwg
ewogICAgICAgIF9fczMyIHR2X3NlYzsKICAgICAgICBfX3MzMiB0dl91c2VjOwp9OwoKc3RydWN0
IHVmc19kaXJfZW50cnkgewogICAgICAgIF9fdTMyIGRfaW5vOwogICAgICAgIF9fdTE2IGRfcmVj
bGVuOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTE2IGRfbmFtbGVuOwogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBkX3R5cGU7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTggZF9uYW1sZW47CiAgICAgICAgICAgICAgICB9
IGRfNDQ7CiAgICAgICAgfSBkX3U7CiAgICAgICAgX191OCBkX25hbWVbMjU1ICsgMV07Cn07Cgpz
dHJ1Y3QgdWZzX2NzdW0gewogICAgICAgIF9fdTMyIGNzX25kaXI7CiAgICAgICAgX191MzIgY3Nf
bmJmcmVlOwogICAgICAgIF9fdTMyIGNzX25pZnJlZTsKICAgICAgICBfX3UzMiBjc19uZmZyZWU7
Cn07CgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrIHsKICAgICAgICBfX3UzMiBmc19saW5rOwog
ICAgICAgIF9fdTMyIGZzX3JsaW5rOwogICAgICAgIF9fdTMyIGZzX3NibGtubzsKICAgICAgICBf
X3UzMiBmc19jYmxrbm87CiAgICAgICAgX191MzIgZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZz
X2RibGtubzsKICAgICAgICBfX3UzMiBmc19jZ29mZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21h
c2s7CiAgICAgICAgX191MzIgZnNfdGltZTsKICAgICAgICBfX3UzMiBmc19zaXplOwogICAgICAg
IF9fdTMyIGZzX2RzaXplOwogICAgICAgIF9fdTMyIGZzX25jZzsKICAgICAgICBfX3UzMiBmc19i
c2l6ZTsKICAgICAgICBfX3UzMiBmc19mc2l6ZTsKICAgICAgICBfX3UzMiBmc19mcmFnOwoKICAg
ICAgICBfX3UzMiBmc19taW5mcmVlOwogICAgICAgIF9fdTMyIGZzX3JvdGRlbGF5OwogICAgICAg
IF9fdTMyIGZzX3JwczsKCiAgICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAgICAgX191MzIgZnNf
Zm1hc2s7CiAgICAgICAgX191MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzaGlmdDsK
CiAgICAgICAgX191MzIgZnNfbWF4Y29udGlnOwogICAgICAgIF9fdTMyIGZzX21heGJwZzsKCiAg
ICAgICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzYnRvZGI7CiAgICAg
ICAgX191MzIgZnNfc2JzaXplOwogICAgICAgIF9fdTMyIGZzX2NzbWFzazsKICAgICAgICBfX3Uz
MiBmc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX25pbmRpcjsKICAgICAgICBfX3UzMiBmc19p
bm9wYjsKICAgICAgICBfX3UzMiBmc19uc3BmOwoKICAgICAgICBfX3UzMiBmc19vcHRpbTsKCiAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsK
ICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgIH0gZnNfdTE7CiAgICAgICAgX191
MzIgZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3UzMiBmc190cmFja3NrZXc7CgoKCgogICAgICAg
IF9fdTMyIGZzX2lkWzJdOwoKICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAgICAgX191MzIg
ZnNfY3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nnc2l6ZTsKCiAgICAgICAgX191MzIgZnNfbnRy
YWs7CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAgICAgICAgX191MzIgZnNfc3BjOwoKICAgICAg
ICBfX3UzMiBmc19uY3lsOwoKICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAgX191MzIgZnNf
aXBnOwogICAgICAgIF9fdTMyIGZzX2ZwZzsKCiAgICAgICAgc3RydWN0IHVmc19jc3VtIGZzX2Nz
dG90YWw7CgogICAgICAgIF9fczggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2NsZWFuOwogICAg
ICAgIF9fczggZnNfcm9ubHk7CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAgICBfX3M4IGZz
X2ZzbW50WzUxMl07CgogICAgICAgIF9fdTMyIGZzX2Nncm90b3I7CiAgICAgICAgX191MzIgZnNf
Y3NwWzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhjbHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2Nw
YzsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzE2XVs4XTsKICAgICAgICB1bmlvbiB7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFy
ZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZz
X3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwog
ICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZz
X3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0Owog
ICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2
OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIg
ZnNfc3BhcmVjb25bNTBdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19jb250aWdz
dW1zaXplOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwog
ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19pbm9kZWZtdDsKICAgICAgICAgICAgICAg
ICAgICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVbMl07CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZt
YXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAg
ICAgICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxm
b3JtYXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2Zm
OwogICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAg
ICAgIF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNDI1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX2N5bGluZGVyX2dyb3VwIHsKICAg
ICAgICBfX3UzMiBjZ19saW5rOwogICAgICAgIF9fdTMyIGNnX21hZ2ljOwogICAgICAgIF9fdTMy
IGNnX3RpbWU7CiAgICAgICAgX191MzIgY2dfY2d4OwogICAgICAgIF9fdTE2IGNnX25jeWw7CiAg
ICAgICAgX191MTYgY2dfbmlibGs7CiAgICAgICAgX191MzIgY2dfbmRibGs7CiAgICAgICAgc3Ry
dWN0IHVmc19jc3VtIGNnX2NzOwogICAgICAgIF9fdTMyIGNnX3JvdG9yOwogICAgICAgIF9fdTMy
IGNnX2Zyb3RvcjsKICAgICAgICBfX3UzMiBjZ19pcm90b3I7CiAgICAgICAgX191MzIgY2dfZnJz
dW1bKDgxOTIgLyAxMDI0KV07CiAgICAgICAgX191MzIgY2dfYnRvdG9mZjsKICAgICAgICBfX3Uz
MiBjZ19ib2ZmOwogICAgICAgIF9fdTMyIGNnX2l1c2Vkb2ZmOwogICAgICAgIF9fdTMyIGNnX2Zy
ZWVvZmY7CiAgICAgICAgX191MzIgY2dfbmV4dGZyZWVvZmY7CiAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfY2x1
c3RlcnN1bW9mZjsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfY2x1c3Rlcm9mZjsK
ICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfbmNsdXN0ZXJibGtzOwogICAgICAgICAg
ICAgICAgICAgICAgICBfX3UzMiBjZ19zcGFyZWNvblsxM107CiAgICAgICAgICAgICAgICB9IGNn
XzQ0OwogICAgICAgICAgICAgICAgX191MzIgY2dfc3BhcmVjb25bMTZdOwogICAgICAgIH0gY2df
dTsKICAgICAgICBfX3U4IGNnX3NwYWNlWzFdOwoKfTsKCgoKCnN0cnVjdCB1ZnNfaW5vZGUgewog
ICAgICAgIF9fdTE2IHVpX21vZGU7CiAgICAgICAgX191MTYgdWlfbmxpbms7CiAgICAgICAgdW5p
b24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191
MTYgdWlfc3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfc2dpZDsKICAgICAg
ICAgICAgICAgIH0gb2xkaWRzOwogICAgICAgICAgICAgICAgX191MzIgdWlfaW51bWJlcjsKICAg
ICAgICAgICAgICAgIF9fdTMyIHVpX2F1dGhvcjsKICAgICAgICB9IHVpX3UxOwogICAgICAgIF9f
dTY0IHVpX3NpemU7CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX2F0aW1lOwogICAgICAg
IHN0cnVjdCB1ZnNfdGltZXZhbCB1aV9tdGltZTsKICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwg
dWlfY3RpbWU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgX191MzIgdWlfZGJbMTJdOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3UzMiB1aV9pYlszXTsKICAgICAgICAgICAgICAgIH0gdWlfYWRkcjsKICAgICAgICAgICAg
ICAgIF9fdTggdWlfc3ltbGlua1s0KigxMiArMyldOwogICAgICAgIH0gdWlfdTI7CiAgICAgICAg
X191MzIgdWlfZmxhZ3M7CiAgICAgICAgX191MzIgdWlfYmxvY2tzOwogICAgICAgIF9fdTMyIHVp
X2dlbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgICAgICAgICBfX3UzMiB1aV9zaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
dTMyIHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3UzMiB1aV9vZWZ0ZmxhZzsKICAgICAgICAgICAgICAgIH0gdWlf
c3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191
MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fczMyIHVpX3NwYXJlWzJdOwogICAgICAgICAgICAgICAgfSB1aV80
NDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMy
IHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAg
ICAgICAgICAgICAgICBfX3UxNiB1aV9tb2RlaDsKICAgICAgICAgICAgICAgICAgICAgICAgX191
MTYgdWlfc3BhcmU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3RyYW5zOwogICAg
ICAgICAgICAgICAgfSB1aV9odXJkOwogICAgICAgIH0gdWlfdTM7Cn07CiMgNTI0ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpleHRlcm4gdm9pZCB1
ZnNfZnJlZV9mcmFnbWVudHMgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwpl
eHRlcm4gdm9pZCB1ZnNfZnJlZV9ibG9ja3MgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgdW5z
aWduZWQpOwpleHRlcm4gdW5zaWduZWQgdWZzX25ld19mcmFnbWVudHMgKHN0cnVjdCBpbm9kZSAq
LCB1MzIgKiwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgaW50ICopOwoKCmV4dGVybiBz
dHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAqIHVmc19sb2FkX2N5bGluZGVyIChzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKiwgdW5zaWduZWQpOwpleHRlcm4gdm9pZCB1ZnNfcHV0X2N5bGluZGVyIChzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQpOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0
aW9ucyB1ZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBpbnQgdWZzX2NoZWNrX2Rpcl9l
bnRyeSAoY29uc3QgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkg
Kiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosIHVuc2lnbmVkIGxvbmcpOwoKCmV4dGVybiBzdHJ1Y3Qg
aW5vZGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0
IGZpbGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9vcGVyYXRpb25zOwoKZXh0ZXJuIHN0cnVjdCBhZGRy
ZXNzX3NwYWNlX29wZXJhdGlvbnMgdWZzX2FvcHM7CgoKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfaW5v
ZGUgKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gc3RydWN0IGlub2RlICogdWZzX25ld19p
bm9kZSAoY29uc3Qgc3RydWN0IGlub2RlICosIGludCwgaW50ICopOwoKCmV4dGVybiBpbnQgdWZz
X2ZyYWdfbWFwIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIHZvaWQgdWZzX3JlYWRfaW5v
ZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX3B1dF9pbm9kZSAoc3RydWN0IGlu
b2RlICopOwpleHRlcm4gdm9pZCB1ZnNfd3JpdGVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqLCBpbnQp
OwpleHRlcm4gaW50IHVmc19zeW5jX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lk
IHVmc19kZWxldGVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJf
aGVhZCAqIHVmc19nZXRmcmFnIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIGludCwgaW50ICop
OwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogdWZzX2JyZWFkIChzdHJ1Y3QgaW5vZGUgKiwg
dW5zaWduZWQsIGludCwgaW50ICopOwoKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVm
c19kaXJfb3BlcmF0aW9uczsKCgpleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgdWZzX2Zz
X3R5cGU7CmV4dGVybiB2b2lkIHVmc193YXJuaW5nIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJp
bnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfZXJyb3IgKHN0cnVjdCBzdXBlcl9ibG9jayAq
LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0
IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc19wYW5pYyAoc3RydWN0IHN1cGVyX2Js
b2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChm
b3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX3dyaXRlX3N1cGVyIChzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKik7CgoKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVmc19m
YXN0X3N5bWxpbmtfaW5vZGVfb3BlcmF0aW9uczsKCgpleHRlcm4gdm9pZCB1ZnNfdHJ1bmNhdGUg
KHN0cnVjdCBpbm9kZSAqKTsKIyAxOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC91ZnNfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCB1ZnNfYnVmZmVyX2hlYWQgewogICAg
ICAgIHVuc2lnbmVkIGZyYWdtZW50OwogICAgICAgIHVuc2lnbmVkIGNvdW50OwogICAgICAgIHN0
cnVjdCBidWZmZXJfaGVhZCAqIGJoWyg4MTkyIC8gMTAyNCldOwp9OwoKc3RydWN0IHVmc19jZ19w
cml2YXRlX2luZm8gewogICAgICAgIHN0cnVjdCB1ZnNfY3lsaW5kZXJfZ3JvdXAgdWNnOwogICAg
ICAgIF9fdTMyIGNfY2d4OwogICAgICAgIF9fdTE2IGNfbmN5bDsKICAgICAgICBfX3UxNiBjX25p
YmxrOwogICAgICAgIF9fdTMyIGNfbmRibGs7CiAgICAgICAgX191MzIgY19yb3RvcjsKICAgICAg
ICBfX3UzMiBjX2Zyb3RvcjsKICAgICAgICBfX3UzMiBjX2lyb3RvcjsKICAgICAgICBfX3UzMiBj
X2J0b3RvZmY7CiAgICAgICAgX191MzIgY19ib2ZmOwogICAgICAgIF9fdTMyIGNfaXVzZWRvZmY7
CiAgICAgICAgX191MzIgY19mcmVlb2ZmOwogICAgICAgIF9fdTMyIGNfbmV4dGZyZWVvZmY7CiAg
ICAgICAgX191MzIgY19jbHVzdGVyc3Vtb2ZmOwogICAgICAgIF9fdTMyIGNfY2x1c3Rlcm9mZjsK
ICAgICAgICBfX3UzMiBjX25jbHVzdGVyYmxrczsKfTsKCnN0cnVjdCB1ZnNfc2JfcHJpdmF0ZV9p
bmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX2J1ZmZlcl9oZWFkIHNfdWJoOwogICAgICAgIF9fdTMy
IHNfc2Jsa25vOwogICAgICAgIF9fdTMyIHNfY2Jsa25vOwogICAgICAgIF9fdTMyIHNfaWJsa25v
OwogICAgICAgIF9fdTMyIHNfZGJsa25vOwogICAgICAgIF9fdTMyIHNfY2dvZmZzZXQ7CiAgICAg
ICAgX191MzIgc19jZ21hc2s7CiAgICAgICAgX191MzIgc19zaXplOwogICAgICAgIF9fdTMyIHNf
ZHNpemU7CiAgICAgICAgX191MzIgc19uY2c7CiAgICAgICAgX191MzIgc19ic2l6ZTsKICAgICAg
ICBfX3UzMiBzX2ZzaXplOwogICAgICAgIF9fdTMyIHNfZnBiOwogICAgICAgIF9fdTMyIHNfbWlu
ZnJlZTsKICAgICAgICBfX3UzMiBzX2JtYXNrOwogICAgICAgIF9fdTMyIHNfZm1hc2s7CiAgICAg
ICAgX191MzIgc19ic2hpZnQ7CiAgICAgICAgX191MzIgc19mc2hpZnQ7CiAgICAgICAgX191MzIg
c19mcGJzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgc19zYnNp
emU7CiAgICAgICAgX191MzIgc19jc21hc2s7CiAgICAgICAgX191MzIgc19jc3NoaWZ0OwogICAg
ICAgIF9fdTMyIHNfbmluZGlyOwogICAgICAgIF9fdTMyIHNfaW5vcGI7CiAgICAgICAgX191MzIg
c19uc3BmOwogICAgICAgIF9fdTMyIHNfbnBzZWN0OwogICAgICAgIF9fdTMyIHNfaW50ZXJsZWF2
ZTsKICAgICAgICBfX3UzMiBzX3RyYWNrc2tldzsKICAgICAgICBfX3UzMiBzX2NzYWRkcjsKICAg
ICAgICBfX3UzMiBzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBzX2Nnc2l6ZTsKICAgICAgICBfX3Uz
MiBzX250cmFrOwogICAgICAgIF9fdTMyIHNfbnNlY3Q7CiAgICAgICAgX191MzIgc19zcGM7CiAg
ICAgICAgX191MzIgc19pcGc7CiAgICAgICAgX191MzIgc19mcGc7CiAgICAgICAgX191MzIgc19j
cGM7CiAgICAgICAgX19zMzIgc19jb250aWdzdW1zaXplOwogICAgICAgIF9fczY0IHNfcWJtYXNr
OwogICAgICAgIF9fczY0IHNfcWZtYXNrOwogICAgICAgIF9fczMyIHNfcG9zdGJsZm9ybWF0Owog
ICAgICAgIF9fczMyIHNfbnJwb3M7CiAgICAgICAgX19zMzIgc19wb3N0YmxvZmY7CiAgICAgICAg
X19zMzIgc19yb3RibG9mZjsKCiAgICAgICAgX191MzIgc19mcGJtYXNrOwogICAgICAgIF9fdTMy
IHNfYXBiOwogICAgICAgIF9fdTMyIHNfMmFwYjsKICAgICAgICBfX3UzMiBzXzNhcGI7CiAgICAg
ICAgX191MzIgc19hcGJtYXNrOwogICAgICAgIF9fdTMyIHNfYXBic2hpZnQ7CiAgICAgICAgX191
MzIgc18yYXBic2hpZnQ7CiAgICAgICAgX191MzIgc18zYXBic2hpZnQ7CiAgICAgICAgX191MzIg
c19uc3Bmc2hpZnQ7CiAgICAgICAgX191MzIgc19uc3BiOwogICAgICAgIF9fdTMyIHNfaW5vcGY7
CiAgICAgICAgX191MzIgc19zYmJhc2U7CiAgICAgICAgX191MzIgc19icGY7CiAgICAgICAgX191
MzIgc19icGZzaGlmdDsKICAgICAgICBfX3UzMiBzX2JwZm1hc2s7CgogICAgICAgIF9fdTMyIHNf
bWF4c3ltbGlua2xlbjsKfTsKCgoKCgpzdHJ1Y3QgdWZzX3NiX2luZm8gewogICAgICAgIHN0cnVj
dCB1ZnNfc2JfcHJpdmF0ZV9pbmZvICogc191c3BpOwogICAgICAgIHN0cnVjdCB1ZnNfY3N1bSAq
IHNfY3NwWzMxXTsKICAgICAgICB1bnNpZ25lZCBzX3N3YWI7CiAgICAgICAgdW5zaWduZWQgc19m
bGFnczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc191Y2c7CiAgICAgICAgc3RydWN0
IHVmc19jZ19wcml2YXRlX2luZm8gKiBzX3VjcGlbOF07CiAgICAgICAgdW5zaWduZWQgc19jZ25v
WzhdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfY2dfbG9hZGVkOwogICAgICAgIHVuc2lnbmVk
IHNfbW91bnRfb3B0Owp9OwoKCgoKCgoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19maXJzdCB7CiAg
ICAgICAgX191MzIgZnNfbGluazsKICAgICAgICBfX3UzMiBmc19ybGluazsKICAgICAgICBfX3Uz
MiBmc19zYmxrbm87CiAgICAgICAgX191MzIgZnNfY2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2li
bGtubzsKICAgICAgICBfX3UzMiBmc19kYmxrbm87CiAgICAgICAgX191MzIgZnNfY2dvZmZzZXQ7
CiAgICAgICAgX191MzIgZnNfY2dtYXNrOwogICAgICAgIF9fdTMyIGZzX3RpbWU7CiAgICAgICAg
X191MzIgZnNfc2l6ZTsKICAgICAgICBfX3UzMiBmc19kc2l6ZTsKICAgICAgICBfX3UzMiBmc19u
Y2c7CiAgICAgICAgX191MzIgZnNfYnNpemU7CiAgICAgICAgX191MzIgZnNfZnNpemU7CiAgICAg
ICAgX191MzIgZnNfZnJhZzsKICAgICAgICBfX3UzMiBmc19taW5mcmVlOwogICAgICAgIF9fdTMy
IGZzX3JvdGRlbGF5OwogICAgICAgIF9fdTMyIGZzX3JwczsKICAgICAgICBfX3UzMiBmc19ibWFz
azsKICAgICAgICBfX3UzMiBmc19mbWFzazsKICAgICAgICBfX3UzMiBmc19ic2hpZnQ7CiAgICAg
ICAgX191MzIgZnNfZnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX21heGNvbnRpZzsKICAgICAgICBf
X3UzMiBmc19tYXhicGc7CiAgICAgICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAgICAgIF9fdTMy
IGZzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXplOwogICAgICAgIF9fdTMyIGZzX2Nz
bWFzazsKICAgICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX25pbmRpcjsK
ICAgICAgICBfX3UzMiBmc19pbm9wYjsKICAgICAgICBfX3UzMiBmc19uc3BmOwogICAgICAgIF9f
dTMyIGZzX29wdGltOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAgIH0g
ZnNfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
X19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAgICB9IGZz
X3UxOwogICAgICAgIF9fdTMyIGZzX2ludGVybGVhdmU7CiAgICAgICAgX191MzIgZnNfdHJhY2tz
a2V3OwogICAgICAgIF9fdTMyIGZzX2lkWzJdOwogICAgICAgIF9fdTMyIGZzX2NzYWRkcjsKICAg
ICAgICBfX3UzMiBmc19jc3NpemU7CiAgICAgICAgX191MzIgZnNfY2dzaXplOwogICAgICAgIF9f
dTMyIGZzX250cmFrOwogICAgICAgIF9fdTMyIGZzX25zZWN0OwogICAgICAgIF9fdTMyIGZzX3Nw
YzsKICAgICAgICBfX3UzMiBmc19uY3lsOwogICAgICAgIF9fdTMyIGZzX2NwZzsKICAgICAgICBf
X3UzMiBmc19pcGc7CiAgICAgICAgX191MzIgZnNfZnBnOwogICAgICAgIHN0cnVjdCB1ZnNfY3N1
bSBmc19jc3RvdGFsOwogICAgICAgIF9fczggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2NsZWFu
OwogICAgICAgIF9fczggZnNfcm9ubHk7CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAgICBf
X3M4IGZzX2ZzbW50WzUxMiAtIDIxMl07Cgp9OwoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19zZWNv
bmQgewogICAgICAgIF9fczggZnNfZnNtbnRbMjEyXTsKICAgICAgICBfX3UzMiBmc19jZ3JvdG9y
OwogICAgICAgIF9fdTMyIGZzX2NzcFszMV07CiAgICAgICAgX191MzIgZnNfbWF4Y2x1c3RlcjsK
ICAgICAgICBfX3UzMiBmc19jcGM7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFs4Ml07Cn07Cgpz
dHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX3RoaXJkIHsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzQ2
XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJl
Y29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAg
ICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNv
bls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19x
Ym1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAg
ICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3MzMiBmc19jb250aWdzdW1zaXplOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19p
bm9kZWZtdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVbMl07
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAg
ICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191MjsK
ICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7CiAg
ICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwogICAg
ICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAgIF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNjY3ICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Vmc19mc19zYi5oIiAxCiMgMjUg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZWZzX2ZzX3NiLmgiCnN0
cnVjdCBlZnNfc3VwZXIgewogICAgICAgIGludDMyX3QgZnNfc2l6ZTsKICAgICAgICBpbnQzMl90
IGZzX2ZpcnN0Y2c7CiAgICAgICAgaW50MzJfdCBmc19jZ2ZzaXplOwogICAgICAgIHNob3J0IGZz
X2NnaXNpemU7CiAgICAgICAgc2hvcnQgZnNfc2VjdG9yczsKICAgICAgICBzaG9ydCBmc19oZWFk
czsKICAgICAgICBzaG9ydCBmc19uY2c7CiAgICAgICAgc2hvcnQgZnNfZGlydHk7CiAgICAgICAg
aW50MzJfdCBmc190aW1lOwogICAgICAgIGludDMyX3QgZnNfbWFnaWM7CiAgICAgICAgY2hhciBm
c19mbmFtZVs2XTsKICAgICAgICBjaGFyIGZzX2ZwYWNrWzZdOwogICAgICAgIGludDMyX3QgZnNf
Ym1zaXplOwogICAgICAgIGludDMyX3QgZnNfdGZyZWU7CiAgICAgICAgaW50MzJfdCBmc190aW5v
ZGU7CiAgICAgICAgaW50MzJfdCBmc19ibWJsb2NrOwogICAgICAgIGludDMyX3QgZnNfcmVwbHNi
OwogICAgICAgIGludDMyX3QgZnNfbGFzdGlhbGxvYzsKICAgICAgICBjaGFyIGZzX3NwYXJlWzIw
XTsKICAgICAgICBpbnQzMl90IGZzX2NoZWNrc3VtOwp9OwoKCnN0cnVjdCBlZnNfc2JfaW5mbyB7
CiAgICAgICAgaW50MzJfdCBmc19tYWdpYzsKICAgICAgICBpbnQzMl90IGZzX3N0YXJ0OwogICAg
ICAgIGludDMyX3QgZmlyc3RfYmxvY2s7CiAgICAgICAgaW50MzJfdCB0b3RhbF9ibG9ja3M7CiAg
ICAgICAgaW50MzJfdCBncm91cF9zaXplOwogICAgICAgIGludDMyX3QgZGF0YV9mcmVlOwogICAg
ICAgIGludDMyX3QgaW5vZGVfZnJlZTsKICAgICAgICBzaG9ydCBpbm9kZV9ibG9ja3M7CiAgICAg
ICAgc2hvcnQgdG90YWxfZ3JvdXBzOwp9OwojIDY2OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9yb21mc19mc19zYi5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX3NiX2luZm8g
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tYXhzaXplOwp9OwojIDY2OSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMQojIDE0ICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE1ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIiAyCiMgMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbWIuaCIgMQojIDEyICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYi5oIgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEzICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYi5oIiAyCgplbnVtIHNtYl9wcm90
b2NvbCB7CiAgICAgICAgU01CX1BST1RPQ09MX05PTkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NP
UkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NPUkVQTFVTLAogICAgICAgIFNNQl9QUk9UT0NPTF9M
QU5NQU4xLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4yLAogICAgICAgIFNNQl9QUk9UT0NP
TF9OVDEKfTsKCmVudW0gc21iX2Nhc2VfaG5kbCB7CiAgICAgICAgU01CX0NBU0VfREVGQVVMVCwK
ICAgICAgICBTTUJfQ0FTRV9MT1dFUiwKICAgICAgICBTTUJfQ0FTRV9VUFBFUgp9OwoKc3RydWN0
IHNtYl9kc2thdHRyIHsKICAgICAgICBfX3UxNiB0b3RhbDsKICAgICAgICBfX3UxNiBhbGxvY2Js
b2NrczsKICAgICAgICBfX3UxNiBibG9ja3NpemU7CiAgICAgICAgX191MTYgZnJlZTsKfTsKCnN0
cnVjdCBzbWJfY29ubl9vcHQgewoKCiAgICAgICAgdW5zaWduZWQgaW50IGZkOwoKICAgICAgICBl
bnVtIHNtYl9wcm90b2NvbCBwcm90b2NvbDsKICAgICAgICBlbnVtIHNtYl9jYXNlX2huZGwgY2Fz
ZV9oYW5kbGluZzsKCgoKICAgICAgICBfX3UzMiBtYXhfeG1pdDsKICAgICAgICBfX3UxNiBzZXJ2
ZXJfdWlkOwogICAgICAgIF9fdTE2IHRpZDsKCgogICAgICAgIF9fdTE2IHNlY21vZGU7CiAgICAg
ICAgX191MTYgbWF4bXV4OwogICAgICAgIF9fdTE2IG1heHZjczsKICAgICAgICBfX3UxNiByYXdt
b2RlOwogICAgICAgIF9fdTMyIHNlc3NrZXk7CgoKICAgICAgICBfX3UzMiBtYXhyYXc7CiAgICAg
ICAgX191MzIgY2FwYWJpbGl0aWVzOwogICAgICAgIF9fczE2IHNlcnZlcnpvbmU7Cn07CgoKCgpz
dHJ1Y3Qgc21iX25sc19jb2RlcGFnZSB7CiAgICAgICAgY2hhciBsb2NhbF9uYW1lWzIwXTsKICAg
ICAgICBjaGFyIHJlbW90ZV9uYW1lWzIwXTsKfTsKIyA3OCAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9zbWIuaCIKc3RydWN0IHNtYl9mYXR0ciB7CgogICAgICAgIF9f
dTE2IGF0dHI7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9pbm87CiAgICAgICAgdW1vZGVfdCBm
X21vZGU7CiAgICAgICAgbmxpbmtfdCBmX25saW5rOwogICAgICAgIHVpZF90IGZfdWlkOwogICAg
ICAgIGdpZF90IGZfZ2lkOwogICAgICAgIGtkZXZfdCBmX3JkZXY7CiAgICAgICAgb2ZmX3QgZl9z
aXplOwogICAgICAgIHRpbWVfdCBmX2F0aW1lOwogICAgICAgIHRpbWVfdCBmX210aW1lOwogICAg
ICAgIHRpbWVfdCBmX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9ibGtzaXplOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZl9ibG9ja3M7Cn07CgplbnVtIHNtYl9jb25uX3N0YXRlIHsKICAg
ICAgICBDT05OX1ZBTElELAogICAgICAgIENPTk5fSU5WQUxJRCwKCiAgICAgICAgQ09OTl9SRVRS
SUVELAogICAgICAgIENPTk5fUkVUUllJTkcKfTsKIyAxNiAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMgoKCgoKCgoKc3RydWN0IHNtYl9zYl9p
bmZvIHsKICAgICAgICBlbnVtIHNtYl9jb25uX3N0YXRlIHN0YXRlOwogICAgICAgIHN0cnVjdCBm
aWxlICogc29ja19maWxlOwoKICAgICAgICBzdHJ1Y3Qgc21iX21vdW50X2RhdGFfa2VybmVsICpt
bnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAqdGVtcF9idWY7CgoKCgogICAgICAgIHVuc2lnbmVk
IGludCBnZW5lcmF0aW9uOwogICAgICAgIHBpZF90IGNvbm5fcGlkOwogICAgICAgIHN0cnVjdCBz
bWJfY29ubl9vcHQgb3B0OwoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB3
YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoKICAgICAgICBfX3UzMiBwYWNrZXRfc2l6ZTsKICAgICAg
ICB1bnNpZ25lZCBjaGFyICogcGFja2V0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHJjbHM7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZXJyOwoKCiAgICAgICAgdm9pZCAqZGF0YV9yZWFkeTsKCgog
ICAgICAgIHN0cnVjdCBubHNfdGFibGUgKnJlbW90ZV9ubHM7CiAgICAgICAgc3RydWN0IG5sc190
YWJsZSAqbG9jYWxfbmxzOwoKCgoKICAgICAgICBjaGFyICpuYW1lX2J1ZjsKCiAgICAgICAgaW50
ICgqY29udmVydCkoY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50LAogICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBubHNfdGFibGUgKiwgc3RydWN0IG5sc190YWJsZSAqKTsKfTsKCgpz
dGF0aWMgaW5saW5lIHZvaWQKc21iX2xvY2tfc2VydmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2Vy
dmVyKQp7CiAgICAgICAgZG93bigmKHNlcnZlci0+c2VtKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p
ZApzbWJfdW5sb2NrX3NlcnZlcihzdHJ1Y3Qgc21iX3NiX2luZm8gKnNlcnZlcikKewogICAgICAg
IHVwKCYoc2VydmVyLT5zZW0pKTsKfQojIDY3MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9oZnNfZnNfc2IuaCIgMQojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L2hmc19mc19zYi5oIgpzdHJ1Y3QgaGZzX25hbWU7Cgp0eXBlZGVmIGlu
dCAoKmhmc19uYW1laW5fZm4pIChjaGFyICosIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqKTsKdHlw
ZWRlZiB2b2lkICgqaGZzX25hbWVvdXRfZm4pIChzdHJ1Y3QgaGZzX25hbWUgKiwgY29uc3QgY2hh
ciAqLCBpbnQpOwp0eXBlZGVmIHZvaWQgKCpoZnNfaWZpbGxfZm4pIChzdHJ1Y3QgaW5vZGUgKiwg
aW5vX3QsIGNvbnN0IGludCk7CgoKCgoKCnN0cnVjdCBoZnNfc2JfaW5mbyB7CiAgICAgICAgaW50
IG1hZ2ljOwogICAgICAgIHN0cnVjdCBoZnNfbWRiICpzX21kYjsKICAgICAgICBpbnQgc19xdWll
dDsKCiAgICAgICAgaW50IHNfbG93ZXJjYXNlOwogICAgICAgIGludCBzX2FmcGQ7CiAgICAgICAg
aW50IHNfdmVyc2lvbjsKICAgICAgICBoZnNfbmFtZWluX2ZuIHNfbmFtZWluOwoKCiAgICAgICAg
aGZzX25hbWVvdXRfZm4gc19uYW1lb3V0OwoKCiAgICAgICAgaGZzX2lmaWxsX2ZuIHNfaWZpbGw7
CgogICAgICAgIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDE7CiAgICAgICAgY29u
c3Qgc3RydWN0IGhmc19uYW1lICpzX3Jlc2VydmVkMjsKICAgICAgICBfX3UzMiBzX3R5cGU7CiAg
ICAgICAgX191MzIgc19jcmVhdG9yOwogICAgICAgIHVtb2RlX3Qgc191bWFzazsKCiAgICAgICAg
dWlkX3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgY2hhciBzX2NvbnY7Cn07
CiMgNjcxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2FkZnNfZnNfc2Iu
aCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2FkZnNf
ZnNfc2IuaCIKc3RydWN0IGFkZnNfZGlzY21hcDsKc3RydWN0IGFkZnNfZGlyX29wczsKCgoKCnN0
cnVjdCBhZGZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBhZGZzX2Rpc2NtYXAgKnNfbWFwOwog
ICAgICAgIHN0cnVjdCBhZGZzX2Rpcl9vcHMgKnNfZGlyOwoKICAgICAgICB1aWRfdCBzX3VpZDsK
ICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfb3duZXJfbWFzazsKICAgICAg
ICB1bW9kZV90IHNfb3RoZXJfbWFzazsKCiAgICAgICAgX191MzIgc19pZHNfcGVyX3pvbmU7CiAg
ICAgICAgX191MzIgc19pZGxlbjsKICAgICAgICBfX3UzMiBzX21hcF9zaXplOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc19zaXplOwogICAgICAgIHNpZ25lZCBpbnQgc19tYXAyYmxrOwogICAgICAg
IHVuc2lnbmVkIGludCBzX2xvZzJzaGFyZXNpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHNfdmVy
c2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19uYW1lbGVuOwp9OwojIDY3MiAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiIDEKIyAxNCAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiCiMgMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiIDEKIyAxMyAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiCiMgMSAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9xbnh0eXBlcy5oIiAxCiMg
MTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIiAy
CiMgNDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcW54NF9mcy5o
IgpzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSB7CiAgICAgICAgY2hhciBkaV9mbmFtZVsxNl07CiAg
ICAgICAgcW54NF9vZmZfdCBkaV9zaXplOwogICAgICAgIHFueDRfeHRudF90IGRpX2ZpcnN0X3h0
bnQ7CiAgICAgICAgX191MzIgZGlfeGJsazsKICAgICAgICBfX3MzMiBkaV9mdGltZTsKICAgICAg
ICBfX3MzMiBkaV9tdGltZTsKICAgICAgICBfX3MzMiBkaV9hdGltZTsKICAgICAgICBfX3MzMiBk
aV9jdGltZTsKICAgICAgICBxbng0X254dG50X3QgZGlfbnVtX3h0bnRzOwogICAgICAgIHFueDRf
bW9kZV90IGRpX21vZGU7CiAgICAgICAgcW54NF9tdWlkX3QgZGlfdWlkOwogICAgICAgIHFueDRf
bWdpZF90IGRpX2dpZDsKICAgICAgICBxbng0X25saW5rX3QgZGlfbmxpbms7CiAgICAgICAgX191
OCBkaV96ZXJvWzRdOwogICAgICAgIHFueDRfZnR5cGVfdCBkaV90eXBlOwogICAgICAgIF9fdTgg
ZGlfc3RhdHVzOwp9OwoKc3RydWN0IHFueDRfbGlua19pbmZvIHsKICAgICAgICBjaGFyIGRsX2Zu
YW1lWzQ4XTsKICAgICAgICBfX3UzMiBkbF9pbm9kZV9ibGs7CiAgICAgICAgX191OCBkbF9pbm9k
ZV9uZHg7CiAgICAgICAgX191OCBkbF9zcGFyZVsxMF07CiAgICAgICAgX191OCBkbF9zdGF0dXM7
Cn07CgpzdHJ1Y3QgcW54NF94YmxrIHsKICAgICAgICBfX3UzMiB4YmxrX25leHRfeGJsazsKICAg
ICAgICBfX3UzMiB4YmxrX3ByZXZfeGJsazsKICAgICAgICBfX3U4IHhibGtfbnVtX3h0bnRzOwog
ICAgICAgIF9fdTggeGJsa19zcGFyZVszXTsKICAgICAgICBfX3MzMiB4YmxrX251bV9ibG9ja3M7
CiAgICAgICAgcW54NF94dG50X3QgeGJsa194dG50c1s2MF07CiAgICAgICAgY2hhciB4YmxrX3Np
Z25hdHVyZVs4XTsKICAgICAgICBxbng0X3h0bnRfdCB4YmxrX2ZpcnN0X3h0bnQ7Cn07CgpzdHJ1
Y3QgcW54NF9zdXBlcl9ibG9jayB7CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgUm9v
dERpcjsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBJbm9kZTsKICAgICAgICBzdHJ1
Y3QgcW54NF9pbm9kZV9lbnRyeSBCb290OwogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5
IEFsdEJvb3Q7Cn07CiMgMTAwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L3FueDRfZnMuaCIKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKnFueDRfbG9va3VwKHN0cnVjdCBp
bm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBx
bng0X2NvdW50X2ZyZWVfYmxvY2tzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpleHRlcm4gdW5z
aWduZWQgbG9uZyBxbng0X2Jsb2NrX21hcChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGlibG9j
ayk7CgpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICpxbng0X2dldGJsayhzdHJ1Y3QgaW5vZGUg
KiwgaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICpxbng0X2JyZWFkKHN0cnVj
dCBpbm9kZSAqLCBpbnQsIGludCk7CgpleHRlcm4gaW50IHFueDRfY3JlYXRlKHN0cnVjdCBpbm9k
ZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBtb2RlKTsKZXh0ZXJuIHN0cnVjdCBp
bm9kZV9vcGVyYXRpb25zIHFueDRfZmlsZV9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0
IGlub2RlX29wZXJhdGlvbnMgcW54NF9kaXJfaW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVj
dCBmaWxlX29wZXJhdGlvbnMgcW54NF9maWxlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmls
ZV9vcGVyYXRpb25zIHFueDRfZGlyX29wZXJhdGlvbnM7CmV4dGVybiBpbnQgcW54NF9pc19mcmVl
KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGxvbmcgYmxvY2spOwpleHRlcm4gaW50IHFueDRfc2V0
X2JpdG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBsb25nIGJsb2NrLCBpbnQgYnVzeSk7CmV4
dGVybiBpbnQgcW54NF9jcmVhdGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGRlbnRyeSAq
ZGVudHJ5LCBpbnQgbW9kZSk7CmV4dGVybiB2b2lkIHFueDRfdHJ1bmNhdGUoc3RydWN0IGlub2Rl
ICppbm9kZSk7CmV4dGVybiB2b2lkIHFueDRfZnJlZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2Rl
KTsKZXh0ZXJuIGludCBxbng0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRy
eSAqZGVudHJ5KTsKZXh0ZXJuIGludCBxbng0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1
Y3QgZGVudHJ5ICpkZW50cnkpOwpleHRlcm4gaW50IHFueDRfc3luY19maWxlKHN0cnVjdCBmaWxl
ICpmaWxlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCk7CmV4dGVybiBpbnQgcW54NF9zeW5j
X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gaW50IHFueDRfZ2V0X2Jsb2NrKHN0
cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgaWJsb2NrLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBp
bnQgY3JlYXRlKTsKIyAxNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9xbng0X2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgcW54NF9zYl9pbmZvIHsKICAgICAgICBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKnNiX2J1ZjsKICAgICAgICBzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayAq
c2I7CiAgICAgICAgdW5zaWduZWQgaW50IFZlcnNpb247CiAgICAgICAgc3RydWN0IHFueDRfaW5v
ZGVfZW50cnkgKkJpdE1hcDsKfTsKIyA2NzMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAxCiMgMTYgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgMTcgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDE4ICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyCiMgMSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKIyAxOSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90cXVldWUuaCIgMgojIDEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMgMjAgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIKIyAzOCAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90cXVldWUuaCIKc3RydWN0IHRxX3N0
cnVjdCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3luYzsKICAgICAgICB2b2lkICgqcm91dGluZSkodm9pZCAqKTsKICAgICAgICB2b2lkICpk
YXRhOwp9OwojIDY0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Rx
dWV1ZS5oIgp0eXBlZGVmIHN0cnVjdCBsaXN0X2hlYWQgdGFza19xdWV1ZTsKCgoKCmV4dGVybiB0
YXNrX3F1ZXVlIHRxX3RpbWVyX1JmYTNlOWFjYywgdHFfaW1tZWRpYXRlX1IwZGEwZGNkMSwgdHFf
ZGlza19SNTM3M2RiYjY7CiMgOTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvdHF1ZXVlLmgiCmV4dGVybiBzcGlubG9ja190IHRxdWV1ZV9sb2NrOwoKCgoKCnN0YXRp
YyBpbmxpbmUgaW50IHF1ZXVlX3Rhc2soc3RydWN0IHRxX3N0cnVjdCAqYmhfcG9pbnRlciwgdGFz
a19xdWV1ZSAqYmhfbGlzdCkKewogICAgICAgIGludCByZXQgPSAwOwogICAgICAgIGlmICghdGVz
dF9hbmRfc2V0X2JpdCgwLCZiaF9wb2ludGVyLT5zeW5jKSkgewogICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBmbGFnczsKICAgICAgICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxl
X18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZv
aWQpKCZ0cXVldWVfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgbGlzdF9hZGRf
dGFpbCgmYmhfcG9pbnRlci0+bGlzdCwgYmhfbGlzdCk7CiAgICAgICAgICAgICAgICBkbyB7IGRv
IHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6
ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAg
IHJldCA9IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXQ7Cn0KCgoKCgpleHRlcm4gdm9p
ZCBfX3J1bl90YXNrX3F1ZXVlX1IzODg5YjExYyh0YXNrX3F1ZXVlICpsaXN0KTsKCnN0YXRpYyBp
bmxpbmUgdm9pZCBydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KQp7CiAgICAgICAgaWYg
KCghbGlzdF9lbXB0eSgmKmxpc3QpKSkKICAgICAgICAgICAgICAgIF9fcnVuX3Rhc2tfcXVldWVf
UjM4ODliMTFjKGxpc3QpOwp9CiMgOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9yZWlzZXJmc19mc19zYi5oIiAyCiMgMjYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKc3RydWN0IHJlaXNlcmZzX3N1cGVy
X2Jsb2NrCnsKICBfX3UzMiBzX2Jsb2NrX2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAg
X191MzIgc19yb290X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pv
dXJuYWxfZGV2OwojIDQzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L3JlaXNlcmZzX2ZzX3NiLmgiCiAgX191MzIgc19vcmlnX2pvdXJuYWxfc2l6ZTsKICBfX3UzMiBz
X2pvdXJuYWxfdHJhbnNfbWF4IDsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2tfY291bnQgOwogIF9f
dTMyIHNfam91cm5hbF9tYXhfYmF0Y2ggOwogIF9fdTMyIHNfam91cm5hbF9tYXhfY29tbWl0X2Fn
ZSA7CiAgX191MzIgc19qb3VybmFsX21heF90cmFuc19hZ2UgOwogIF9fdTE2IHNfYmxvY2tzaXpl
OwogIF9fdTE2IHNfb2lkX21heHNpemU7CiAgX191MTYgc19vaWRfY3Vyc2l6ZTsKICBfX3UxNiBz
X3N0YXRlOwogIGNoYXIgc19tYWdpY1sxMl07CiAgX191MzIgc19oYXNoX2Z1bmN0aW9uX2NvZGU7
CiAgX191MTYgc190cmVlX2hlaWdodDsKICBfX3UxNiBzX2JtYXBfbnI7CiAgX191MTYgc192ZXJz
aW9uOwoKCgoKICBfX3UxNiBzX3Jlc2VydmVkOwogIF9fdTMyIHNfaW5vZGVfZ2VuZXJhdGlvbjsK
ICBjaGFyIHNfdW51c2VkWzEyNF0gOwp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7CgoK
CgpzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2tfdjEKewogIF9fdTMyIHNfYmxvY2tfY291bnQ7
CiAgX191MzIgc19mcmVlX2Jsb2NrczsKICBfX3UzMiBzX3Jvb3RfYmxvY2s7CiAgX191MzIgc19q
b3VybmFsX2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9kZXY7CiAgX191MzIgc19vcmlnX2pvdXJu
YWxfc2l6ZTsKICBfX3UzMiBzX2pvdXJuYWxfdHJhbnNfbWF4IDsKICBfX3UzMiBzX2pvdXJuYWxf
YmxvY2tfY291bnQgOwogIF9fdTMyIHNfam91cm5hbF9tYXhfYmF0Y2ggOwogIF9fdTMyIHNfam91
cm5hbF9tYXhfY29tbWl0X2FnZSA7CiAgX191MzIgc19qb3VybmFsX21heF90cmFuc19hZ2UgOwog
IF9fdTE2IHNfYmxvY2tzaXplOwogIF9fdTE2IHNfb2lkX21heHNpemU7CiAgX191MTYgc19vaWRf
Y3Vyc2l6ZTsKICBfX3UxNiBzX3N0YXRlOwogIGNoYXIgc19tYWdpY1sxNl07CiAgX191MTYgc190
cmVlX2hlaWdodDsKICBfX3UxNiBzX2JtYXBfbnI7CiAgX191MzIgc19yZXNlcnZlZDsKfSBfX2F0
dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpOwojIDE0OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVpc2VyZnNfam91cm5h
bF9jbm9kZSB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA7CiAga2Rldl90IGRldiA7CiAgdW5z
aWduZWQgbG9uZyBibG9ja25yIDsKICBpbnQgc3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19qb3Vy
bmFsX2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7
CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKnByZXYgOwogIHN0cnVjdCByZWlzZXJm
c19qb3VybmFsX2Nub2RlICpocHJldiA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KmhuZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9kZSB7CiAgaW50IGlkIDsKICBj
aGFyICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3QgOwp9IDsKCnN0cnVjdCByZWlzZXJm
c19saXN0X2JpdG1hcCB7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCAqam91cm5hbF9s
aXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25vZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpz
dHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlIHsKCiAgY2hhciAqdF9jYWxsZXIgOwog
IGludCB0X2Jsb2Nrc19sb2dnZWQgOwogIGludCB0X2Jsb2Nrc19hbGxvY2F0ZWQgOwogIHVuc2ln
bmVkIGxvbmcgdF90cmFuc19pZCA7CiAgc3RydWN0IHN1cGVyX2Jsb2NrICp0X3N1cGVyIDsKCgp9
IDsKCgoKCgoKCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgewogIHVuc2lnbmVkIGxvbmcg
al9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgYXRvbWljX3Qgal9ub256ZXJvbGVu
IDsKICBhdG9taWNfdCBqX2NvbW1pdF9sZWZ0IDsKICBhdG9taWNfdCBqX2ZsdXNoaW5nIDsKICBh
dG9taWNfdCBqX2NvbW1pdF9mbHVzaGluZyA7CiAgYXRvbWljX3Qgal9vbGRlcl9jb21taXRzX2Rv
bmUgOwogIHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdGltZV90IGpfdGltZXN0YW1wIDsK
ICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgKmpfbGlzdF9iaXRtYXAgOwogIHN0cnVjdCBi
dWZmZXJfaGVhZCAqal9jb21taXRfYmggOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2Rl
ICpqX3JlYWxibG9jayA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZnJlZWRs
aXN0IDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2NvbW1pdF93YWl0IDsKICB3YWl0X3F1ZXVlX2hl
YWRfdCBqX2ZsdXNoX3dhaXQgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgOwoKc3Ry
dWN0IHJlaXNlcmZzX2pvdXJuYWwgewogIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBqX2FwX2Jsb2Nr
cyA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfbGFzdCA7CiAgc3RydWN0IHJl
aXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZmlyc3QgOwoKICBpbnQgal9zdGF0ZSA7CiAgdW5zaWdu
ZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpfbW91bnRfaWQgOwogIHVuc2ln
bmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgdW5zaWduZWQgbG9u
ZyBqX2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9i
Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNoZWRfb2Zmc2V0IDsKICB1bnNp
Z25lZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpq
X2hlYWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpfZmx1c2hfcGFn
ZXMgOwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdhaXRfcXVldWVfaGVhZF90IGpf
d2FpdCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9qb2luX3dh
aXQgOwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJuYWxfbGlzdF9pbmRleCA7CiAg
aW50IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rfd2FpdCA7CiAgaW50IGpfbmV4
dF9mdWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNoIDsKCiAgaW50IGpfY25vZGVf
dXNlZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nu
b2RlICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KmpfY25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRtYXBfbm9kZXMgOwogIGludCBq
X3VzZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfYml0bWFwX25vZGVzIDsK
ICBzdHJ1Y3QgaW5vZGUgal9kdW1teV9pbm9kZSA7CiAgc3RydWN0IHJlaXNlcmZzX2xpc3RfYml0
bWFwIGpfbGlzdF9iaXRtYXBbNV0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3Qgal9q
b3VybmFsX2xpc3RbNjRdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9oYXNo
X3RhYmxlWzgxOTJdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9saXN0X2hh
c2hfdGFibGVbODE5Ml0gOwoKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfcHJlYWxsb2NfbGlzdDsKfTsK
CgoKCnR5cGVkZWYgX191MzIgKCpoYXNoZl90KSAoY29uc3QgY2hhciAqLCBpbnQpOwoKCnN0cnVj
dCByZWlzZXJmc19zYl9pbmZvCnsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfc2JoOwoKCiAg
ICBzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKiBzX3JzOwogICAgc3RydWN0IGJ1ZmZlcl9o
ZWFkICoqIHNfYXBfYml0bWFwOwogICAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgKnNfam91cm5h
bCA7CiAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwoKCiAgICB2b2lkICgqZW5kX2lv
X2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFzaGZfdCBzX2hhc2hf
ZnVuY3Rpb247CgoKICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CgoKCgogICAgd2FpdF9x
dWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0b21pY190IHNfZ2VuZXJhdGlvbl9jb3VudGVyOwoK
CgogICAgaW50IHNfa21hbGxvY3M7CiAgICBpbnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNfZGlz
a193cml0ZXM7CiAgICBpbnQgc19maXhfbm9kZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwogICAg
aW50IHNfdW5uZWVkZWRfbGVmdF9uZWlnaGJvcjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5X2tl
eV9yZWFkYTsKICAgIGludCBzX2JtYXBzOwogICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFyY2g7
CiAgICBpbnQgc19kaXJlY3QyaW5kaXJlY3Q7CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7Cn07
CiMgMzYwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZz
X2ZzX3NiLmgiCnZvaWQgcmVpc2VyZnNfZmlsZV9idWZmZXIgKHN0cnVjdCBidWZmZXJfaGVhZCAq
IGJoLCBpbnQgbGlzdCk7CmludCByZWlzZXJmc19pc19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KnMpIDsKaW50IGpvdXJuYWxfbWFya19kaXJ0eShzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25f
aGFuZGxlICosIHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSA7
CmludCBmbHVzaF9vbGRfY29tbWl0cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsIGludCkgOwppbnQg
c2hvd19yZWlzZXJmc19sb2Nrcyh2b2lkKSA7CmludCByZWlzZXJmc19yZXNpemUoc3RydWN0IHN1
cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcpIDsKIyA2NzQgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEKIyAxMiAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9iZnNfZnNfc2IuaCIKc3RydWN0IGJmc19zYl9pbmZvIHsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNp
X2ZyZWViOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfZnJlZWk7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzaV9sZl9pb2ZmOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfc2JsazsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNpX2xmX2VibGs7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9sYXN0
aTsKICAgICAgICBjaGFyICogc2lfaW1hcDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBz
aV9zYmg7CiAgICAgICAgc3RydWN0IGJmc19zdXBlcl9ibG9jayAqIHNpX2Jmc19zYjsKfTsKIyA2
NzUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEK
IyAyNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91ZGZfZnNfc2Iu
aCIKI3ByYWdtYSBwYWNrKDEpCiMgMzQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvdWRmX2ZzX3NiLmgiCnN0cnVjdCB1ZGZfc3BhcmluZ19kYXRhCnsKICAgICAgICBf
X3UxNiBzX3BhY2tldF9sZW47CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX3NwYXJfbWFw
WzRdOwp9OwoKc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEKewogICAgICAgIF9fdTMyIHNfbnVtX2Vu
dHJpZXM7CiAgICAgICAgX191MTYgc19zdGFydF9vZmZzZXQ7Cn07CgpzdHJ1Y3QgdWRmX2JpdG1h
cAp7CiAgICAgICAgX191MzIgc19leHRMZW5ndGg7CiAgICAgICAgX191MzIgc19leHRQb3NpdGlv
bjsKICAgICAgICBfX3UxNiBzX25yX2dyb3VwczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KipzX2Jsb2NrX2JpdG1hcDsKfTsKCnN0cnVjdCB1ZGZfcGFydF9tYXAKewogICAgICAgIHVuaW9u
CiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9iaXRtYXAgKnNfYml0bWFwOwog
ICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICpzX3RhYmxlOwogICAgICAgIH0gc191c3BhY2U7
CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX2JpdG1h
cCAqc19iaXRtYXA7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNfdGFibGU7CiAgICAg
ICAgfSBzX2ZzcGFjZTsKICAgICAgICBfX3UzMiBzX3BhcnRpdGlvbl9yb290OwogICAgICAgIF9f
dTMyIHNfcGFydGl0aW9uX2xlbjsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbl90eXBlOwogICAg
ICAgIF9fdTE2IHNfcGFydGl0aW9uX251bTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAg
ICAgICAgICAgIHN0cnVjdCB1ZGZfc3BhcmluZ19kYXRhIHNfc3BhcmluZzsKICAgICAgICAgICAg
ICAgIHN0cnVjdCB1ZGZfdmlydHVhbF9kYXRhIHNfdmlydHVhbDsKICAgICAgICB9IHNfdHlwZV9z
cGVjaWZpYzsKICAgICAgICBfX3UzMiAoKnNfcGFydGl0aW9uX2Z1bmMpKHN0cnVjdCBzdXBlcl9i
bG9jayAqLCBfX3UzMiwgX191MTYsIF9fdTMyKTsKICAgICAgICBfX3UxNiBzX3ZvbHVtZXNlcW51
bTsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbl9mbGFnczsKfTsKCiNwcmFnbWEgcGFjaygpCgpz
dHJ1Y3QgdWRmX3NiX2luZm8KewogICAgICAgIHN0cnVjdCB1ZGZfcGFydF9tYXAgKnNfcGFydG1h
cHM7CiAgICAgICAgX191OCBzX3ZvbGlkZW50WzMyXTsKCgogICAgICAgIF9fdTE2IHNfcGFydGl0
aW9uczsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbjsKCgogICAgICAgIF9fdTMyIHNfc2Vzc2lv
bjsKICAgICAgICBfX3UzMiBzX2FuY2hvcls0XTsKICAgICAgICBfX3UzMiBzX2xhc3RibG9jazsK
CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2x2aWRiaDsKCgogICAgICAgIG1vZGVfdCBz
X3VtYXNrOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVpZF90IHNfdWlkOwoKCiAgICAg
ICAgdGltZV90IHNfcmVjb3JkdGltZTsKCgogICAgICAgIF9fdTE2IHNfc2VyaWFsbnVtOwoKCiAg
ICAgICAgX191MTYgc191ZGZyZXY7CgoKICAgICAgICBfX3UzMiBzX2ZsYWdzOwoKCiAgICAgICAg
c3RydWN0IG5sc190YWJsZSAqc19ubHNfbWFwOwoKCiAgICAgICAgc3RydWN0IGlub2RlICpzX3Zh
dDsKfTsKIyA2NzYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmNwX2Zz
X3NiLmgiIDEKIyAxMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9u
Y3BfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L3R5cGVzLmgiIDEKIyAxMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9uY3BfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvbmNwX21vdW50LmgiIDEKIyAxMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9uY3BfbW91bnQuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbmNwLmgiIDEKIyAxMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9uY3AuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9uY3AuaCIgMgojIDIyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbmNwX3JlcXVlc3RfaGVhZGVyIHsKICAgICAgICBf
X3UxNiB0eXBlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2Ug
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0
ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191OCBjb25uX2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAg
X191OCBmdW5jdGlvbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFb
MF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCgpzdHJ1Y3QgbmNwX3JlcGx5X2hlYWRl
ciB7CiAgICAgICAgX191MTYgdHlwZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3U4IHNlcXVlbmNlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9s
b3cgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCB0YXNrIF9fYXR0cmlidXRl
X18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9oaWdoIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTggY29tcGxldGlvbl9jb2RlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTggY29ubmVjdGlvbl9zdGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCnN0cnVj
dCBuY3Bfdm9sdW1lX2luZm8gewogICAgICAgIF9fdTMyIHRvdGFsX2Jsb2NrczsKICAgICAgICBf
X3UzMiBmcmVlX2Jsb2NrczsKICAgICAgICBfX3UzMiBwdXJnZWFibGVfYmxvY2tzOwogICAgICAg
IF9fdTMyIG5vdF95ZXRfcHVyZ2VhYmxlX2Jsb2NrczsKICAgICAgICBfX3UzMiB0b3RhbF9kaXJf
ZW50cmllczsKICAgICAgICBfX3UzMiBhdmFpbGFibGVfZGlyX2VudHJpZXM7CiAgICAgICAgX191
OCBzZWN0b3JzX3Blcl9ibG9jazsKICAgICAgICBjaGFyIHZvbHVtZV9uYW1lWygxNikgKyAxXTsK
fTsKIyAxMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmNwLmgi
CnN0cnVjdCBud19pbmZvX3N0cnVjdCB7CiAgICAgICAgX191MzIgc3BhY2VBbGxvYyBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhdHRyaWJ1dGVzIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGZsYWdzIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTMyIGRhdGFTdHJlYW1TaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTMyIHRvdGFsU3RyZWFtU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3UxNiBudW1iZXJPZlN0cmVhbXMgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAg
X191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2
IGNyZWF0aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBjcmVh
dG9ySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5VGltZSBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBtb2RpZnlEYXRlIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG1vZGlmaWVySUQgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191MTYgYXJjaGl2ZVRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191MTYgYXJjaGl2ZURhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg
ICAgX191MzIgYXJjaGl2ZXJJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3Ux
NiBpbmhlcml0ZWRSaWdodHNNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f
dTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBEb3NE
aXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9sTnVtYmVyIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBRGF0YVNpemUgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRUFLZXlDb3VudCBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3UzMiBFQUtleVNpemUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191MzIgTlNDcmVhdG9yIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTggbmFtZUxlbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGVudHJ5
TmFtZVsyNTZdIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDE1NiAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9uY3AuaCIKc3RydWN0IG53X21vZGlmeV9kb3Nf
aW5mbyB7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg
ICAgX191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f
dTMyIGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBtb2Rp
ZnlEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUg
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgbW9kaWZpZXJJRCBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlRGF0ZSBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGltZSBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTE2IGluaGVyaXRhbmNlR3JhbnRNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTE2IGluaGVyaXRhbmNlUmV2b2tlTWFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICAgICAgICBfX3UzMiBtYXhpbXVtU3BhY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07
CgpzdHJ1Y3Qgbndfc2VhcmNoX3NlcXVlbmNlIHsKICAgICAgICBfX3U4IHZvbE51bWJlciBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkaXJCYXNlIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHNlcXVlbmNlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
Owp9OwojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25jcF9t
b3VudC5oIiAyCiMgMjUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bmNwX21vdW50LmgiCnN0cnVjdCBuY3BfbW91bnRfZGF0YSB7CiAgICAgICAgaW50IHZlcnNpb247
CiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICBfX2tlcm5lbF91aWRfdCBtb3Vu
dGVkX3VpZDsKICAgICAgICBfX2tlcm5lbF9waWRfdCB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWdu
ZWQgY2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVf
b3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWduZWQg
aW50IGZsYWdzOwoKICAgICAgICBfX2tlcm5lbF91aWRfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxf
Z2lkX3QgZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBmaWxlX21vZGU7CiAgICAgICAgX19r
ZXJuZWxfbW9kZV90IGRpcl9tb2RlOwp9OwoKCgpzdHJ1Y3QgbmNwX21vdW50X2RhdGFfdjQgewog
ICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgoKICAgICAg
ICB1bnNpZ25lZCBsb25nIG1vdW50ZWRfdWlkOwoKICAgICAgICBsb25nIHdkb2dfcGlkOwoKICAg
ICAgICB1bnNpZ25lZCBpbnQgbmNwX2ZkOwogICAgICAgIHVuc2lnbmVkIGludCB0aW1lX291dDsK
CiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50OwoKCgogICAgICAgIHVuc2lnbmVkIGxv
bmcgdWlkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZ2lkOwoKICAgICAgICB1bnNpZ25lZCBsb25n
IGZpbGVfbW9kZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGRpcl9tb2RlOwp9OwoKCgpzdHJ1Y3Qg
bmNwX21vdW50X2RhdGFfa2VybmVsIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAg
ICAgIHVuc2lnbmVkIGludCBpbnRfZmxhZ3M7CgogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgbW91
bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19waWQ7CiAgICAgICAgdW5zaWdu
ZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNpZ25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVu
c2lnbmVkIGludCByZXRyeV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1vdW50ZWRfdm9s
WygxNikgKyAxXTsKICAgICAgICBfX2tlcm5lbF91aWQzMl90IHVpZDsKICAgICAgICBfX2tlcm5l
bF9naWQzMl90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmlsZV9tb2RlOwogICAgICAg
IF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKIyAxMyAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBuY3Bfc2VydmVy
IHsKCiAgICAgICAgc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCBtOwoKCgogICAgICAgIF9f
dTggbmFtZV9zcGFjZVsoNjQpICsgMl07CgogICAgICAgIHN0cnVjdCBmaWxlICpuY3BfZmlscDsK
CiAgICAgICAgdTggc2VxdWVuY2U7CiAgICAgICAgdTggdGFzazsKICAgICAgICB1MTYgY29ubmVj
dGlvbjsKCiAgICAgICAgdTggY29tcGxldGlvbjsKICAgICAgICB1OCBjb25uX3N0YXR1czsKCgoK
ICAgICAgICBpbnQgYnVmZmVyX3NpemU7CgogICAgICAgIGludCByZXBseV9zaXplOwoKICAgICAg
ICBpbnQgcGFja2V0X3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciAqcGFja2V0OwoKCiAgICAg
ICAgaW50IGxvY2s7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07CgogICAgICAgIGludCBj
dXJyZW50X3NpemU7CiAgICAgICAgaW50IGhhc19zdWJmdW5jdGlvbjsKICAgICAgICBpbnQgbmNw
X3JlcGx5X3NpemU7CgogICAgICAgIGludCByb290X3NldHVwZWQ7CgoKICAgICAgICBpbnQgc2ln
bl93YW50ZWQ7CiAgICAgICAgaW50IHNpZ25fYWN0aXZlOwogICAgICAgIGNoYXIgc2lnbl9yb290
WzhdOwogICAgICAgIGNoYXIgc2lnbl9sYXN0WzE2XTsKCgogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICBpbnQgYXV0aF90eXBlOwogICAgICAgICAgICAgICAgc2l6ZV90IG9iamVjdF9u
YW1lX2xlbjsKICAgICAgICAgICAgICAgIHZvaWQqIG9iamVjdF9uYW1lOwogICAgICAgICAgICAg
ICAgaW50IG9iamVjdF90eXBlOwogICAgICAgIH0gYXV0aDsKCiAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgIHNpemVfdCBsZW47CiAgICAgICAgICAgICAgICB2b2lkKiBkYXRhOwogICAg
ICAgIH0gcHJpdjsKCgogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc192b2w7CiAgICAgICAg
c3RydWN0IG5sc190YWJsZSAqbmxzX2lvOwoKCiAgICAgICAgaW50IGRlbnRyeV90dGw7CgoKICAg
ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cn07CiMgOTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiCnN0YXRpYyBpbmxpbmUgaW50IG5jcF9jb25u
X3ZhbGlkKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICByZXR1cm4gKChzZXJ2
ZXItPmNvbm5fc3RhdHVzICYgMHgxMSkgPT0gMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuY3Bf
aW52YWxpZGF0ZV9jb25uKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICBzZXJ2
ZXItPmNvbm5fc3RhdHVzIHw9IDB4MDE7Cn0KIyA2NzcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvdXNiZGV2X2ZzX3NiLmgiIDEKc3RydWN0IHVzYmRldl9zYl9pbmZvIHsK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
aWxpc3Q7CiAgICAgICAgdWlkX3QgZGV2dWlkOwogICAgICAgIGdpZF90IGRldmdpZDsKICAgICAg
ICB1bW9kZV90IGRldm1vZGU7CiAgICAgICAgdWlkX3QgYnVzdWlkOwogICAgICAgIGdpZF90IGJ1
c2dpZDsKICAgICAgICB1bW9kZV90IGJ1c21vZGU7CiAgICAgICAgdWlkX3QgbGlzdHVpZDsKICAg
ICAgICBnaWRfdCBsaXN0Z2lkOwogICAgICAgIHVtb2RlX3QgbGlzdG1vZGU7Cn07CiMgNjc4ICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NyYW1mc19mc19zYi5oIiAxCiMg
Njc5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgi
IDEKCgoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlw
ZXMuaCIgMQojIDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvamZm
czJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvc3BpbmxvY2suaCIgMQojIDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvY29tcGxldGlvbi5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMgMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIiAyCgpzdHJ1Y3QgY29tcGxldGlvbiB7
CiAgICAgICAgdW5zaWduZWQgaW50IGRvbmU7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2Fp
dDsKfTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2NvbXBsZXRpb24oc3RydWN0IGNv
bXBsZXRpb24gKngpCnsKICAgICAgICB4LT5kb25lID0gMDsKICAgICAgICBpbml0X3dhaXRxdWV1
ZV9oZWFkKCZ4LT53YWl0KTsKfQoKZXh0ZXJuIHZvaWQgd2FpdF9mb3JfY29tcGxldGlvbl9SZGMw
MTY0ODgoc3RydWN0IGNvbXBsZXRpb24gKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpl
eHRlcm4gdm9pZCBjb21wbGV0ZV9SOTQyNjEzYWQoc3RydWN0IGNvbXBsZXRpb24gKikgX19hdHRy
aWJ1dGVfXygocmVncGFybSgzKSkpOwojIDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAxCiMgMTAgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDIwICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBq
ZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZDsKCiAgICAgICAgX191
MzIgaGlnaGVzdF9pbm87CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHNwaW5s
b2NrX3Qgbm9kZWxpc3RfbG9jazsKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFz
azsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGdjX3RocmVhZF9zZW07CiAgICAgICAgc3RydWN0
IGNvbXBsZXRpb24gZ2NfdGhyZWFkX2V4aXQ7CgoKCgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
YWxsb2Nfc2VtOwoKCgoKICAgICAgICBfX3UzMiBmbGFzaF9zaXplOwogICAgICAgIF9fdTMyIHVz
ZWRfc2l6ZTsKICAgICAgICBfX3UzMiBkaXJ0eV9zaXplOwogICAgICAgIF9fdTMyIGZyZWVfc2l6
ZTsKICAgICAgICBfX3UzMiBlcmFzaW5nX3NpemU7CiAgICAgICAgX191MzIgYmFkX3NpemU7CiAg
ICAgICAgX191MzIgc2VjdG9yX3NpemU7CgoKCiAgICAgICAgX191MzIgbnJfZnJlZV9ibG9ja3M7
CiAgICAgICAgX191MzIgbnJfZXJhc2luZ19ibG9ja3M7CgogICAgICAgIF9fdTMyIG5yX2Jsb2Nr
czsKICAgICAgICBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqYmxvY2tzOwoKICAgICAgICBzdHJ1
Y3QgamZmczJfZXJhc2VibG9jayAqbmV4dGJsb2NrOwoKICAgICAgICBzdHJ1Y3QgamZmczJfZXJh
c2VibG9jayAqZ2NibG9jazsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjbGVhbl9saXN0Owog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGlydHlfbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIGVyYXNpbmdfbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGVyYXNlX3BlbmRpbmdf
bGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGVyYXNlX2NvbXBsZXRlX2xpc3Q7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBmcmVlX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBi
YWRfbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJhZF91c2VkX2xpc3Q7CgogICAgICAg
IHNwaW5sb2NrX3QgZXJhc2VfY29tcGxldGlvbl9sb2NrOwoKICAgICAgICB3YWl0X3F1ZXVlX2hl
YWRfdCBlcmFzZV93YWl0OwogICAgICAgIHN0cnVjdCBqZmZzMl9pbm9kZV9jYWNoZSAqaW5vY2Fj
aGVfbGlzdFsxXTsKICAgICAgICBzcGlubG9ja190IGlub2NhY2hlX2xvY2s7Cn07CiMgNjgwICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCmV4dGVybiBz
dHJ1Y3QgbGlzdF9oZWFkIHN1cGVyX2Jsb2NrczsKZXh0ZXJuIHNwaW5sb2NrX3Qgc2JfbG9jazsK
CgoKc3RydWN0IHN1cGVyX2Jsb2NrIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfbGlzdDsK
ICAgICAgICBrZGV2X3Qgc19kZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Jsb2Nrc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIHNfYmxvY2tzaXplX2JpdHM7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBzX2RpcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNfbWF4Ynl0ZXM7CiAgICAg
ICAgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKnNfdHlwZTsKICAgICAgICBzdHJ1Y3Qgc3VwZXJf
b3BlcmF0aW9ucyAqc19vcDsKICAgICAgICBzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9ucyAqZHFfb3A7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19t
YWdpYzsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpzX3Jvb3Q7CiAgICAgICAgc3RydWN0IHJ3X3Nl
bWFwaG9yZSBzX3Vtb3VudDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbG9jazsKICAgICAg
ICBpbnQgc19jb3VudDsKICAgICAgICBhdG9taWNfdCBzX2FjdGl2ZTsKCiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBzX2RpcnR5OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19sb2NrZWRfaW5v
ZGVzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19maWxlczsKCiAgICAgICAgc3RydWN0IGJs
b2NrX2RldmljZSAqc19iZGV2OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19pbnN0YW5jZXM7
CiAgICAgICAgc3RydWN0IHF1b3RhX21vdW50X29wdGlvbnMgc19kcXVvdDsKCiAgICAgICAgdW5p
b24gewogICAgICAgICAgICAgICAgc3RydWN0IG1pbml4X3NiX2luZm8gbWluaXhfc2I7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgZXh0Ml9zYl9pbmZvIGV4dDJfc2I7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgaHBmc19zYl9pbmZvIGhwZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRmc19z
Yl9pbmZvIG50ZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbXNkb3Nfc2JfaW5mbyBtc2Rv
c19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBpc29mc19zYl9pbmZvIGlzb2ZzX3NiOwogICAg
ICAgICAgICAgICAgc3RydWN0IG5mc19zYl9pbmZvIG5mc19zYjsKICAgICAgICAgICAgICAgIHN0
cnVjdCBzeXN2X3NiX2luZm8gc3lzdl9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZmZzX3Ni
X2luZm8gYWZmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZnNfc2JfaW5mbyB1ZnNfc2I7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZWZzX3NiX2luZm8gZWZzX3NiOwogICAgICAgICAgICAg
ICAgc3RydWN0IHNobWVtX3NiX2luZm8gc2htZW1fc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
cm9tZnNfc2JfaW5mbyByb21mc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBzbWJfc2JfaW5m
byBzbWJmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBoZnNfc2JfaW5mbyBoZnNfc2I7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgYWRmc19zYl9pbmZvIGFkZnNfc2I7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgcW54NF9zYl9pbmZvIHFueDRfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVp
c2VyZnNfc2JfaW5mbyByZWlzZXJmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBiZnNfc2Jf
aW5mbyBiZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX3NiX2luZm8gdWRmX3NiOwog
ICAgICAgICAgICAgICAgc3RydWN0IG5jcF9zZXJ2ZXIgbmNwZnNfc2I7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgdXNiZGV2X3NiX2luZm8gdXNiZGV2ZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgamZmczJfc2JfaW5mbyBqZmZzMl9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBjcmFtZnNf
c2JfaW5mbyBjcmFtZnNfc2I7CiAgICAgICAgICAgICAgICB2b2lkICpnZW5lcmljX3NicDsKICAg
ICAgICB9IHU7CgoKCgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc192ZnNfcmVuYW1lX3NlbTsK
IyA3NTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIKICAg
ICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3BhdGhfc2VtOwp9OwoKCgoKZXh0ZXJu
IGludCB2ZnNfY3JlYXRlX1I4NjI3MWFkOChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq
LCBpbnQpOwpleHRlcm4gaW50IHZmc19ta2Rpcl9SMjdmNmNmY2Moc3RydWN0IGlub2RlICosIHN0
cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCB2ZnNfbWtub2RfUjdjNmYyZDM5KHN0cnVj
dCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19z
eW1saW5rX1JmMTQ4MmM0MihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBjb25zdCBj
aGFyICopOwpleHRlcm4gaW50IHZmc19saW5rX1I5OWU0ZDg1OChzdHJ1Y3QgZGVudHJ5ICosIHN0
cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IHZmc19ybWRpcl9SMTRj
MDJmZjQoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3Vu
bGlua19SMTNjYzBlZjkoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBp
bnQgdmZzX3JlbmFtZV9SZTUxZGFjZDIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwg
c3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CiMgNzg2ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnR5cGVkZWYgaW50ICgqZmlsbGRpcl90KSh2
b2lkICosIGNvbnN0IGNoYXIgKiwgaW50LCBsb2ZmX3QsIGlub190LCB1bnNpZ25lZCk7CgpzdHJ1
Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKm9wZW4pIChzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBp
bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCppb2N0bCkgKHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50
ICgqY2hlY2tfbWVkaWFfY2hhbmdlKSAoa2Rldl90KTsKICAgICAgICBpbnQgKCpyZXZhbGlkYXRl
KSAoa2Rldl90KTsKfTsKCgoKCgoKc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB7CiAgICAgICAgc3Ry
dWN0IG1vZHVsZSAqb3duZXI7CiAgICAgICAgbG9mZl90ICgqbGxzZWVrKSAoc3RydWN0IGZpbGUg
KiwgbG9mZl90LCBpbnQpOwogICAgICAgIHNzaXplX3QgKCpyZWFkKSAoc3RydWN0IGZpbGUgKiwg
Y2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICAgICAgICBzc2l6ZV90ICgqd3JpdGUpIChzdHJ1
Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogICAgICAgIGludCAo
KnJlYWRkaXIpIChzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7CiAgICAgICAgdW5z
aWduZWQgaW50ICgqcG9sbCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVj
dCAqKTsKICAgICAgICBpbnQgKCppb2N0bCkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAq
LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKm1tYXApIChzdHJ1
Y3QgZmlsZSAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CiAgICAgICAgaW50ICgqb3Blbikg
KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpmbHVzaCkgKHN0
cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKnJlbGVhc2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3Ry
dWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqZnN5bmMpIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qg
ZGVudHJ5ICosIGludCBkYXRhc3luYyk7CiAgICAgICAgaW50ICgqZmFzeW5jKSAoaW50LCBzdHJ1
Y3QgZmlsZSAqLCBpbnQpOwogICAgICAgIGludCAoKmxvY2spIChzdHJ1Y3QgZmlsZSAqLCBpbnQs
IHN0cnVjdCBmaWxlX2xvY2sgKik7CiAgICAgICAgc3NpemVfdCAoKnJlYWR2KSAoc3RydWN0IGZp
bGUgKiwgY29uc3Qgc3RydWN0IGlvdmVjICosIHVuc2lnbmVkIGxvbmcsIGxvZmZfdCAqKTsKICAg
ICAgICBzc2l6ZV90ICgqd3JpdGV2KSAoc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGlvdmVj
ICosIHVuc2lnbmVkIGxvbmcsIGxvZmZfdCAqKTsKICAgICAgICBzc2l6ZV90ICgqc2VuZHBhZ2Up
IChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqLCBpbnQsIHNpemVfdCwgbG9mZl90ICosIGlu
dCk7CiAgICAgICAgdW5zaWduZWQgbG9uZyAoKmdldF91bm1hcHBlZF9hcmVhX1JiMDQxZjRmMiko
c3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZyk7Cn07CgpzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB7CiAgICAgICAg
aW50ICgqY3JlYXRlKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGludCk7CiAgICAg
ICAgc3RydWN0IGRlbnRyeSAqICgqbG9va3VwKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy
eSAqKTsKICAgICAgICBpbnQgKCpsaW5rKSAoc3RydWN0IGRlbnRyeSAqLHN0cnVjdCBpbm9kZSAq
LHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqdW5saW5rKSAoc3RydWN0IGlub2RlICos
c3RydWN0IGRlbnRyeSAqKTsKICAgICAgICBpbnQgKCpzeW1saW5rKSAoc3RydWN0IGlub2RlICos
c3RydWN0IGRlbnRyeSAqLGNvbnN0IGNoYXIgKik7CiAgICAgICAgaW50ICgqbWtkaXIpIChzdHJ1
Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosaW50KTsKICAgICAgICBpbnQgKCpybWRpcikgKHN0
cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqbWtub2QpIChzdHJ1
Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosaW50LGludCk7CiAgICAgICAgaW50ICgqcmVuYW1l
KSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqcmVhZGxp
bmspIChzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKixpbnQpOwogICAgICAgIGludCAoKmZvbGxvd19s
aW5rKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwogICAgICAgIHZvaWQg
KCp0cnVuY2F0ZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICBpbnQgKCpwZXJtaXNzaW9uX1I1
ZGNkMTgzYikgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUp
IChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5
ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBpbnQgKCpnZXRhdHRyKSAoc3RydWN0IGRlbnRy
eSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgoKCgoKc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgewog
ICAgICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3RydWN0IGlub2RlICopOwoKCgoKCgoKICAgICAg
ICB2b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSA7CiAgICAgICAg
dm9pZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIHZvaWQgKCp3cml0
ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAgIHZvaWQgKCpwdXRfaW5vZGUp
IChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAoKmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBp
bm9kZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICop
OwogICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAg
ICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9ja2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwog
ICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICBp
bnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsKICAg
ICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCAqLCBjaGFy
ICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9pbm9kZV9SNDUwNjM4NTcpIChzdHJ1Y3QgaW5vZGUg
Kik7CiAgICAgICAgdm9pZCAoKnVtb3VudF9iZWdpbikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsK
IyA4OTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIKICAg
ICAgICBzdHJ1Y3QgZGVudHJ5ICogKCpmaF90b19kZW50cnkpKHN0cnVjdCBzdXBlcl9ibG9jayAq
c2IsIF9fdTMyICpmaCwgaW50IGxlbiwgaW50IGZodHlwZSwgaW50IHBhcmVudCk7CiAgICAgICAg
aW50ICgqZGVudHJ5X3RvX2ZoKShzdHJ1Y3QgZGVudHJ5ICosIF9fdTMyICpmaCwgaW50ICpsZW5w
LCBpbnQgbmVlZF9wYXJlbnQpOwp9OwojIDkwNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gdm9pZCBfX21hcmtfaW5vZGVfZGlydHlfUjRiOWY2
YzAwKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9k
aXJ0eShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lub2RlX2RpcnR5X1I0
YjlmNmMwMChpbm9kZSwgKDEgfCAyIHwgNCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19p
bm9kZV9kaXJ0eV9zeW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5v
ZGVfZGlydHlfUjRiOWY2YzAwKGlub2RlLCAxKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtf
aW5vZGVfZGlydHlfcGFnZXMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19p
bm9kZV9kaXJ0eV9SNGI5ZjZjMDAoaW5vZGUsIDQpOwp9CgpzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9u
cyB7CiAgICAgICAgdm9pZCAoKmluaXRpYWxpemUpIChzdHJ1Y3QgaW5vZGUgKiwgc2hvcnQpOwog
ICAgICAgIHZvaWQgKCpkcm9wKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIGludCAoKmFsbG9j
X2Jsb2NrKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcsIGNoYXIpOwogICAg
ICAgIGludCAoKmFsbG9jX2lub2RlKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxv
bmcpOwogICAgICAgIHZvaWQgKCpmcmVlX2Jsb2NrKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVu
c2lnbmVkIGxvbmcpOwogICAgICAgIHZvaWQgKCpmcmVlX2lub2RlKSAoY29uc3Qgc3RydWN0IGlu
b2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKnRyYW5zZmVyKSAoc3RydWN0IGRl
bnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgpzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSB7CiAg
ICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICBpbnQgZnNfZmxhZ3M7CiAgICAgICAgc3Ry
dWN0IHN1cGVyX2Jsb2NrICooKnJlYWRfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdm9p
ZCAqLCBpbnQpOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIHN0cnVjdCBm
aWxlX3N5c3RlbV90eXBlICogbmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZzX3N1cGVy
czsKfTsKIyA5NjMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu
aCIKZXh0ZXJuIGludCByZWdpc3Rlcl9maWxlc3lzdGVtX1JjZGY0MzY5ZihzdHJ1Y3QgZmlsZV9z
eXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2ZpbGVzeXN0ZW1fUjU3MWYxYjQw
KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50ICprZXJu
X21vdW50X1I1YTQ0MmZiOShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCBt
YXlfdW1vdW50X1JkYzVkYmZmNihzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBsb25nIGRvX21v
dW50KGNoYXIgKiwgY2hhciAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CgoKCmV4
dGVybiBpbnQgdmZzX3N0YXRmc19SNDFiMTFhMmUoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVj
dCBzdGF0ZnMgKik7CiMgOTgxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L2ZzLmgiCmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5X2xvY2tlZChzdHJ1Y3QgaW5vZGUg
Kik7CmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5X2FyZWFfUjM4YWIwMjMzKGludCwgc3RydWN0
IGlub2RlICosIHN0cnVjdCBmaWxlICosIGxvZmZfdCwgc2l6ZV90KTsKIyA5OTEgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSBpbnQg
bG9ja3NfdmVyaWZ5X2xvY2tlZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgaWYgKCgo
KGlub2RlKS0+aV9zYi0+c19mbGFncyAmICg2NCkpICYmICgoaW5vZGUpLT5pX21vZGUgJiAoMDAw
MjAwMCB8IDAwMDEwKSkgPT0gMDAwMjAwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4gbG9ja3Nf
bWFuZGF0b3J5X2xvY2tlZChpbm9kZSk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxp
bmUgaW50IGxvY2tzX3ZlcmlmeV9hcmVhKGludCByZWFkX3dyaXRlLCBzdHJ1Y3QgaW5vZGUgKmlu
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmls
cCwgbG9mZl90IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGNvdW50KQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrICYmICgoKGlub2RlKS0+aV9z
Yi0+c19mbGFncyAmICg2NCkpICYmICgoaW5vZGUpLT5pX21vZGUgJiAoMDAwMjAwMCB8IDAwMDEw
KSkgPT0gMDAwMjAwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4gbG9ja3NfbWFuZGF0b3J5X2Fy
ZWFfUjM4YWIwMjMzKHJlYWRfd3JpdGUsIGlub2RlLCBmaWxwLCBvZmZzZXQsIGNvdW50KTsKICAg
ICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVyaWZ5X3RydW5jYXRl
KHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBmaWxlICpmaWxwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b2ZmX3Qgc2l6ZSkKewogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSktPmlf
c2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAx
MCkpID09IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9h
cmVhX1IzOGFiMDIzMygKICAgICAgICAgICAgICAgICAgICAgICAgMiwgaW5vZGUsIGZpbHAsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemUgPCBpbm9kZS0+aV9zaXplID8gc2l6ZSA6IGlub2Rl
LT5pX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIChzaXplIDwgaW5vZGUtPmlfc2l6ZSA/
IGlub2RlLT5pX3NpemUgLSBzaXplCiAgICAgICAgICAgICAgICAgICAgICAgICA6IHNpemUgLSBp
bm9kZS0+aV9zaXplKQogICAgICAgICAgICAgICAgKTsKICAgICAgICByZXR1cm4gMDsKfQoKc3Rh
dGljIGlubGluZSBpbnQgZ2V0X2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGlu
dCBtb2RlKQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrICYmIChpbm9kZS0+aV9mbG9jay0+
ZmxfZmxhZ3MgJiAzMikpCiAgICAgICAgICAgICAgICByZXR1cm4gX19nZXRfbGVhc2VfUmYzOWYz
Yjc2KGlub2RlLCBtb2RlKTsKICAgICAgICByZXR1cm4gMDsKfQoKCgogX19hdHRyaWJ1dGVfXygo
cmVncGFybSgwKSkpIGxvbmcgc3lzX29wZW4oY29uc3QgY2hhciAqLCBpbnQsIGludCk7CiBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfY2xvc2VfUjI2OGNjNmEyKHVuc2lnbmVk
IGludCk7CmV4dGVybiBpbnQgZG9fdHJ1bmNhdGUoc3RydWN0IGRlbnRyeSAqLCBsb2ZmX3Qgc3Rh
cnQpOwoKZXh0ZXJuIHN0cnVjdCBmaWxlICpmaWxwX29wZW5fUjMzN2EwYTE2KGNvbnN0IGNoYXIg
KiwgaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBkZW50cnlfb3Blbl9SMzMwYzMyY2Yo
c3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgdmZzbW91bnQgKiwgaW50KTsKZXh0ZXJuIGludCBmaWxw
X2Nsb3NlX1IxODY3ZDIzNChzdHJ1Y3QgZmlsZSAqLCBmbF9vd25lcl90IGlkKTsKZXh0ZXJuIGNo
YXIgKiBnZXRuYW1lX1I3YzYwZDY2ZShjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHZmc19j
YWNoZXNfaW5pdCh1bnNpZ25lZCBsb25nKTsKCgoKCmVudW0ge0JERVZfRklMRSwgQkRFVl9TV0FQ
LCBCREVWX0ZTLCBCREVWX1JBV307CmV4dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2X1I2NTU1Y2M0
MCh1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRp
b25zICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfYmxrZGV2X1JlYWMxYzRhZih1bnNpZ25lZCBp
bnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGdldF9SNzhl
YWRkNTEoZGV2X3QpOwpleHRlcm4gaW50IGJkX2FjcXVpcmUoc3RydWN0IGlub2RlICppbm9kZSk7
CmV4dGVybiB2b2lkIGJkX2ZvcmdldChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQg
YmRwdXRfUjIwMTU3ZTg1KHN0cnVjdCBibG9ja19kZXZpY2UgKik7CmV4dGVybiBzdHJ1Y3QgY2hh
cl9kZXZpY2UgKmNkZ2V0X1JkZWU3MGYzZShkZXZfdCk7CmV4dGVybiB2b2lkIGNkcHV0X1JkN2Fi
NGYxZChzdHJ1Y3QgY2hhcl9kZXZpY2UgKik7CmV4dGVybiBpbnQgYmxrZGV2X29wZW5fUjA1MzY5
ZTEzKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGludCBibGtkZXZfY2xv
c2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gc3RydWN0IGZpbGVfb3Bl
cmF0aW9ucyBkZWZfYmxrX2ZvcHNfUjU3Y2M2MzBlOwpleHRlcm4gc3RydWN0IGFkZHJlc3Nfc3Bh
Y2Vfb3BlcmF0aW9ucyBkZWZfYmxrX2FvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z
IGRlZl9maWZvX2ZvcHM7CmV4dGVybiBpbnQgaW9jdGxfYnlfYmRldl9SMmFmOTE1NjAoc3RydWN0
IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgYmxr
ZGV2X2dldF9SZWJlMjVmYWUoc3RydWN0IGJsb2NrX2RldmljZSAqLCBtb2RlX3QsIHVuc2lnbmVk
LCBpbnQpOwpleHRlcm4gaW50IGJsa2Rldl9wdXRfUjlmYjZjYjAzKHN0cnVjdCBibG9ja19kZXZp
Y2UgKiwgaW50KTsKCgpleHRlcm4gY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25z
ICpnZXRfYmxrZm9wcyh1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IHJlZ2lzdGVyX2NocmRldl9S
NjUxMDY1MTIodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBmaWxlX29wZXJhdGlv
bnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9jaHJkZXZfUmMxOTJkNDkxKHVuc2lnbmVkIGlu
dCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBjaHJkZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKiwg
c3RydWN0IGZpbGUgKik7CmV4dGVybiBjb25zdCBjaGFyICogYmRldm5hbWVfUmQwNDc4MmU2KGtk
ZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICogY2Rldm5hbWVfUjk3NTQ3NDFkKGtkZXZfdCk7CmV4
dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWVfUmMyNThjOTA2KGtkZXZfdCk7CmV4dGVybiB2b2lk
IGluaXRfc3BlY2lhbF9pbm9kZV9SNmVlNjJlZDcoc3RydWN0IGlub2RlICosIHVtb2RlX3QsIGlu
dCk7CgoKZXh0ZXJuIHZvaWQgbWFrZV9iYWRfaW5vZGVfUjY3ODY5MTljKHN0cnVjdCBpbm9kZSAq
KTsKZXh0ZXJuIGludCBpc19iYWRfaW5vZGVfUjMwZDk4ZmYxKHN0cnVjdCBpbm9kZSAqKTsKCmV4
dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfZmlmb19mb3BzOwpleHRlcm4gc3RydWN0
IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVy
YXRpb25zIHJkd3JfZmlmb19mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZWFk
X3BpcGVfZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd3JpdGVfcGlwZV9mb3Bz
OwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZHdyX3BpcGVfZm9wczsKCmV4dGVybiBp
bnQgZnNfbWF5X3JlbW91bnRfcm8oc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKZXh0ZXJuIGludCB0
cnlfdG9fZnJlZV9idWZmZXJzKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGludCk7CmV4dGVybiB2
b2lkIHJlZmlsZV9idWZmZXJfUjk0Mzc3YWM1KHN0cnVjdCBidWZmZXJfaGVhZCAqIGJ1Zik7CmV4
dGVybiB2b2lkIGVuZF9idWZmZXJfaW9fc3luYyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQg
dXB0b2RhdGUpOwoKCmV4dGVybiB2b2lkIHNldF9idWZmZXJfYXN5bmNfaW9fUmM5NDIyNjAwKHN0
cnVjdCBidWZmZXJfaGVhZCAqYmgpIDsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGdldF9iaChz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGF0b21pY19pbmMoJihiaCktPmJfY291
bnQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2JoKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgp
CnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAg
IGF0b21pY19kZWMoJmJoLT5iX2NvdW50KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtf
YnVmZmVyX3VwdG9kYXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCBpbnQgb24pCnsKICAgICAg
ICBpZiAob24pCiAgICAgICAgICAgICAgICBzZXRfYml0KEJIX1VwdG9kYXRlLCAmYmgtPmJfc3Rh
dGUpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGNsZWFyX2JpdChCSF9VcHRvZGF0ZSwg
JmJoLT5iX3N0YXRlKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19tYXJrX2J1ZmZlcl9jbGVh
bihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQp7CiAgICAgICAgcmVmaWxlX2J1ZmZlcl9SOTQzNzdh
YzUoYmgpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0IGJ1
ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJIX0RpcnR5
LCAmKGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX2NsZWFuKGJo
KTsKfQoKZXh0ZXJuIHZvaWQgX19tYXJrX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19tYXJrX2J1ZmZlcl9kaXJ0
eV9SMThkN2FlZTQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFy
bSgzKSkpOwpleHRlcm4gdm9pZCBtYXJrX2J1ZmZlcl9kaXJ0eV9SZTAyNjM2Zjcoc3RydWN0IGJ1
ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBi
dWZmZXJfaW5zZXJ0X2lub2RlX2RhdGFfcXVldWUoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVj
dCBpbm9kZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCBtYXJrX2J1ZmZlcl9hc3luYyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IG9uKQp7
CiAgICAgICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0X2JpdChCSF9Bc3luYywgJmJoLT5i
X3N0YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQoQkhfQXN5bmMs
ICZiaC0+Yl9zdGF0ZSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBidWZmZXJfSU9fZXJy
b3Ioc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBtYXJrX2J1ZmZlcl9jbGVhbihi
aCk7CgoKCiAgICAgICAgYmgtPmJfZW5kX2lvKGJoLCAwKTsKfQoKZXh0ZXJuIHZvaWQgYnVmZmVy
X2luc2VydF9pbm9kZV9xdWV1ZV9SNjJlNGYwZTgoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVj
dCBpbm9kZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5X2lub2RlKHN0
cnVjdCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBtYXJr
X2J1ZmZlcl9kaXJ0eV9SZTAyNjM2ZjcoYmgpOwogICAgICAgIGJ1ZmZlcl9pbnNlcnRfaW5vZGVf
cXVldWVfUjYyZTRmMGU4KGJoLCBpbm9kZSk7Cn0KCmV4dGVybiB2b2lkIGJhbGFuY2VfZGlydHko
dm9pZCk7CmV4dGVybiBpbnQgY2hlY2tfZGlza19jaGFuZ2VfUjExZDQwNzZkKGtkZXZfdCk7CmV4
dGVybiBpbnQgaW52YWxpZGF0ZV9pbm9kZXNfUjE2ZjdmNTI5KHN0cnVjdCBzdXBlcl9ibG9jayAq
KTsKZXh0ZXJuIGludCBpbnZhbGlkYXRlX2RldmljZV9SMjVhNGIwYjIoa2Rldl90LCBpbnQpOwpl
eHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX3BhZ2VzX1JmNTUzMzYyYihzdHJ1Y3QgaW5vZGUg
Kik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfcGFnZXMyKHN0cnVjdCBhZGRyZXNzX3Nw
YWNlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX2J1ZmZlcnMoc3RydWN0IGlub2Rl
ICopOwoKCgoKCgoKZXh0ZXJuIHZvaWQgX19pbnZhbGlkYXRlX2J1ZmZlcnNfUjUxNzI2NDllKGtk
ZXZfdCBkZXYsIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXMoa2Rldl90KTsKZXh0
ZXJuIHZvaWQgc3luY191bmxvY2tlZF9pbm9kZXModm9pZCk7CmV4dGVybiB2b2lkIHdyaXRlX2lu
b2RlX25vd19SYjRiMjhjZmEoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgc3luY19i
dWZmZXJzKGtkZXZfdCwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19kZXZfUmZjMGIwZjQ5KGtkZXZf
dCk7CmV4dGVybiBpbnQgZnN5bmNfZGV2X1I4ZWExMjhlMihrZGV2X3QpOwpleHRlcm4gaW50IGZz
eW5jX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGludCBmc3luY19ub19zdXBl
cl9SNTc1MjA2NDQoa2Rldl90KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXNfc2Ioc3RydWN0IHN1
cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IG9zeW5jX2lub2RlX2J1ZmZlcnMoc3RydWN0IGlub2Rl
ICopOwpleHRlcm4gaW50IG9zeW5jX2lub2RlX2RhdGFfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7
CmV4dGVybiBpbnQgZnN5bmNfaW5vZGVfYnVmZmVyc19SOTYxNDBmMDQoc3RydWN0IGlub2RlICop
OwpleHRlcm4gaW50IGZzeW5jX2lub2RlX2RhdGFfYnVmZmVyc19SMjA1ZmNmYmUoc3RydWN0IGlu
b2RlICopOwpleHRlcm4gaW50IGlub2RlX2hhc19idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0
ZXJuIHZvaWQgZmlsZW1hcF9mZGF0YXN5bmNfUmQzODY0Yjg2KHN0cnVjdCBhZGRyZXNzX3NwYWNl
ICopOwpleHRlcm4gdm9pZCBmaWxlbWFwX2ZkYXRhd2FpdF9SYzc2ODU1ZDMoc3RydWN0IGFkZHJl
c3Nfc3BhY2UgKik7CmV4dGVybiB2b2lkIHN5bmNfc3VwZXJzKGtkZXZfdCk7CmV4dGVybiBpbnQg
Ym1hcF9SYmQ0NDc2YzQoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgbm90aWZ5X2No
YW5nZV9SMTUzZWU4ZTYoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7CmV4dGVybiBp
bnQgcGVybWlzc2lvbl9SNWRjZDE4M2Ioc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQg
dmZzX3Blcm1pc3Npb25fUjhmOTU1MmM4KHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50
IGdldF93cml0ZV9hY2Nlc3NfUjhiY2YyNTgwKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBk
ZW55X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIHB1dF93
cml0ZV9hY2Nlc3Moc3RydWN0IGlub2RlICogaW5vZGUpCnsKICAgICAgICBhdG9taWNfZGVjKCZp
bm9kZS0+aV93cml0ZWNvdW50KTsKfQpzdGF0aWMgaW5saW5lIHZvaWQgYWxsb3dfd3JpdGVfYWNj
ZXNzKHN0cnVjdCBmaWxlICpmaWxlKQp7CiAgICAgICAgaWYgKGZpbGUpCiAgICAgICAgICAgICAg
ICBhdG9taWNfaW5jKCZmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV93cml0ZWNvdW50KTsKfQpl
eHRlcm4gaW50IGRvX3BpcGUoaW50ICopOwoKZXh0ZXJuIGludCBvcGVuX25hbWVpKGNvbnN0IGNo
YXIgKiwgaW50LCBpbnQsIHN0cnVjdCBuYW1laWRhdGEgKik7CgpleHRlcm4gaW50IGtlcm5lbF9y
ZWFkX1I3MWQ4ZTJmNShzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyICosIHVuc2ln
bmVkIGxvbmcpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBvcGVuX2V4ZWNfUjE5OTRlNTgzKGNvbnN0
IGNoYXIgKik7CgoKZXh0ZXJuIGludCBpc19zdWJkaXJfUmZlNmQ4MzlmKHN0cnVjdCBkZW50cnkg
Kiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGlub190IGZpbmRfaW5vZGVfbnVtYmVyX1JlZTUz
ZjI2NihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICopOwojIDEyMzYgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSB2b2lkICpF
UlJfUFRSKGxvbmcgZXJyb3IpCnsKICAgICAgICByZXR1cm4gKHZvaWQgKikgZXJyb3I7Cn0KCnN0
YXRpYyBpbmxpbmUgbG9uZyBQVFJfRVJSKGNvbnN0IHZvaWQgKnB0cikKewogICAgICAgIHJldHVy
biAobG9uZykgcHRyOwp9CgpzdGF0aWMgaW5saW5lIGxvbmcgSVNfRVJSKGNvbnN0IHZvaWQgKnB0
cikKewogICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZylwdHIgPiAodW5zaWduZWQgbG9uZykt
MTAwMEw7Cn0KIyAxMjY3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2ZzLmgiCmVudW0ge0xBU1RfTk9STSwgTEFTVF9ST09ULCBMQVNUX0RPVCwgTEFTVF9ET1RET1Qs
IExBU1RfQklORH07CiMgMTI3OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9mcy5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgc2l6ZV90IHdyaXR0ZW47CiAgICAg
ICAgc2l6ZV90IGNvdW50OwogICAgICAgIGNoYXIgKiBidWY7CiAgICAgICAgaW50IGVycm9yOwp9
IHJlYWRfZGVzY3JpcHRvcl90OwoKdHlwZWRlZiBpbnQgKCpyZWFkX2FjdG9yX3QpKHJlYWRfZGVz
Y3JpcHRvcl90ICosIHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcp
OwoKCmV4dGVybiBsb2ZmX3QgZGVmYXVsdF9sbHNlZWtfUjVjMmUyMGQ4KHN0cnVjdCBmaWxlICpm
aWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgb3JpZ2luKTsKCmV4dGVybiBpbnQgX191c2VyX3dhbGtf
UmRjNTk3MTcyKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEgKik7CmV4
dGVybiBpbnQgcGF0aF9pbml0X1JiNDE3MjNkNyhjb25zdCBjaGFyICosIHVuc2lnbmVkLCBzdHJ1
Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gaW50IHBhdGhfd2Fsa19SYzNiODJiOTcoY29uc3QgY2hh
ciAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gdm9pZCBwYXRoX3JlbGVhc2VfUjRlYjA0
ZWYxKHN0cnVjdCBuYW1laWRhdGEgKik7CmV4dGVybiBpbnQgZm9sbG93X2Rvd25fUjhkMzZjYzdj
KHN0cnVjdCB2ZnNtb3VudCAqKiwgc3RydWN0IGRlbnRyeSAqKik7CmV4dGVybiBpbnQgZm9sbG93
X3VwX1IzOTE2YTdlZihzdHJ1Y3QgdmZzbW91bnQgKiosIHN0cnVjdCBkZW50cnkgKiopOwpleHRl
cm4gc3RydWN0IGRlbnRyeSAqIGxvb2t1cF9vbmVfbGVuX1JkZjdlYjJkMChjb25zdCBjaGFyICos
IHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfaGFz
aF9SNzg4ZTcxNTMoc3RydWN0IHFzdHIgKiwgc3RydWN0IGRlbnRyeSAqKTsKCgoKZXh0ZXJuIHZv
aWQgaXB1dF9SYjM1MTk3MTIoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBmb3JjZV9kZWxl
dGVfUjg4YWNkMzFlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGlncmFi
X1IzMTRmZjQxZihzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9fdCBpdW5pcXVlX1JkNGQ0OGMy
YihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW5vX3QpOwoKdHlwZWRlZiBpbnQgKCpmaW5kX2lub2Rl
X3QpKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwpleHRlcm4gc3RydWN0
IGlub2RlICogaWdldDRfUjJjZWUwOGM3KHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBs
b25nLCBmaW5kX2lub2RlX3QsIHZvaWQgKik7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICpp
Z2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKQp7CiAgICAgICAg
cmV0dXJuIGlnZXQ0X1IyY2VlMDhjNyhzYiwgaW5vLCAoKHZvaWQgKikwKSwgKCh2b2lkICopMCkp
Owp9CgpleHRlcm4gdm9pZCBjbGVhcl9pbm9kZV9SNDUwNjM4NTcoc3RydWN0IGlub2RlICopOwpl
eHRlcm4gc3RydWN0IGlub2RlICogZ2V0X2VtcHR5X2lub2RlX1IzNzk2NmQ1MSh2b2lkKTsKc3Rh
dGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKiBuZXdfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpz
YikKewogICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBnZXRfZW1wdHlfaW5vZGVfUjM3OTY2
ZDUxKCk7CiAgICAgICAgaWYgKGlub2RlKSB7CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9zYiA9
IHNiOwogICAgICAgICAgICAgICAgaW5vZGUtPmlfZGV2ID0gc2ItPnNfZGV2OwogICAgICAgIH0K
ICAgICAgICByZXR1cm4gaW5vZGU7Cn0KZXh0ZXJuIHZvaWQgcmVtb3ZlX3N1aWQoc3RydWN0IGlu
b2RlICppbm9kZSk7CgpleHRlcm4gdm9pZCBpbnNlcnRfaW5vZGVfaGFzaF9SZDUyZGQxMjAoc3Ry
dWN0IGlub2RlICopOwpleHRlcm4gdm9pZCByZW1vdmVfaW5vZGVfaGFzaF9SYzUxMDFhZDcoc3Ry
dWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGZpbGUgKiBnZXRfZW1wdHlfZmlscF9SZTAxOGFi
ZTgodm9pZCk7CmV4dGVybiB2b2lkIGZpbGVfbW92ZShzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IGxp
c3RfaGVhZCAqbGlzdCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBnZXRfaGFzaF90YWJs
ZV9SYjZjODAyMWYoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBnZXRibGtfUjI3MTQyODI0KGtkZXZfdCwgaW50LCBpbnQpOwpleHRlcm4gdm9pZCBsbF9yd19i
bG9ja19SZWIzOWFiMDYoaW50LCBpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoW10pOwpleHRl
cm4gdm9pZCBzdWJtaXRfYmhfUjQ4NDE5Yzk3KGludCwgc3RydWN0IGJ1ZmZlcl9oZWFkICopOwpl
eHRlcm4gaW50IGlzX3JlYWRfb25seV9SNzQwMjc0Y2Eoa2Rldl90KTsKZXh0ZXJuIHZvaWQgX19i
cmVsc2VfUmU1MGZlZTYwKHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKc3RhdGljIGlubGluZSB2b2lk
IGJyZWxzZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJ1ZikKewogICAgICAgIGlmIChidWYpCiAgICAg
ICAgICAgICAgICBfX2JyZWxzZV9SZTUwZmVlNjAoYnVmKTsKfQpleHRlcm4gdm9pZCBfX2Jmb3Jn
ZXRfUjdjY2IwMTY3KHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKc3RhdGljIGlubGluZSB2b2lkIGJm
b3JnZXQoc3RydWN0IGJ1ZmZlcl9oZWFkICpidWYpCnsKICAgICAgICBpZiAoYnVmKQogICAgICAg
ICAgICAgICAgX19iZm9yZ2V0X1I3Y2NiMDE2NyhidWYpOwp9CmV4dGVybiB2b2lkIHNldF9ibG9j
a3NpemVfUmE4NDI3MjJhKGtkZXZfdCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAq
IGJyZWFkX1JkNzE3MDgxNChrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgd2FrZXVwX2Jk
Zmx1c2godm9pZCk7CgpleHRlcm4gaW50IGJyd19wYWdlX1I0NzdkMGU2ZChpbnQsIHN0cnVjdCBw
YWdlICosIGtkZXZfdCwgaW50IFtdLCBpbnQpOwoKdHlwZWRlZiBpbnQgKGdldF9ibG9ja190KShz
dHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFkKixpbnQpOwoKCmV4dGVybiBpbnQg
ZGlzY2FyZF9iaF9wYWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgoKZXh0
ZXJuIGludCBibG9ja19zeW1saW5rX1I4M2IzYjMyMChzdHJ1Y3QgaW5vZGUgKiwgY29uc3QgY2hh
ciAqLCBpbnQpOwpleHRlcm4gaW50IGJsb2NrX3dyaXRlX2Z1bGxfcGFnZV9SMjU5NzFiYjkoc3Ry
dWN0IHBhZ2UqLCBnZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGJsb2NrX3JlYWRfZnVsbF9wYWdl
X1IzY2M2YzZiYihzdHJ1Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tf
cHJlcGFyZV93cml0ZV9SOTZjODU5MTcoc3RydWN0IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWduZWQs
IGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgY29udF9wcmVwYXJlX3dyaXRlX1JkYWI1ZjJmYihz
dHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2NrX3QqLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKik7CmV4dGVybiBpbnQgYmxvY2tf
c3luY19wYWdlX1IxZGVkYTE0MyhzdHJ1Y3QgcGFnZSAqKTsKCmludCBnZW5lcmljX2Jsb2NrX2Jt
YXBfUmY1ZTNlOTg1KHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvbmcsIGdldF9ibG9ja190ICop
OwppbnQgZ2VuZXJpY19jb21taXRfd3JpdGVfUjI4MGJlYjJlKHN0cnVjdCBmaWxlICosIHN0cnVj
dCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CmludCBibG9ja190cnVuY2F0ZV9wYWdlX1I1
ODIwZThkYShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3QsIGdldF9ibG9ja190ICopOwpl
eHRlcm4gaW50IGdlbmVyaWNfZGlyZWN0X0lPX1I5ZDQ2Y2I3OChpbnQsIHN0cnVjdCBpbm9kZSAq
LCBzdHJ1Y3Qga2lvYnVmICosIHVuc2lnbmVkIGxvbmcsIGludCwgZ2V0X2Jsb2NrX3QgKik7CmV4
dGVybiB2b2lkIGNyZWF0ZV9lbXB0eV9idWZmZXJzKHN0cnVjdCBwYWdlICosIGtkZXZfdCwgdW5z
aWduZWQgbG9uZyk7CgpleHRlcm4gaW50IHdhaXRmb3Jfb25lX3BhZ2VfUmNiYjM2ZmIxKHN0cnVj
dCBwYWdlKik7CmV4dGVybiBpbnQgZ2VuZXJpY19maWxlX21tYXBfUjJjNmI0ZTA3KHN0cnVjdCBm
aWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBmaWxlX3JlYWRfYWN0
b3IocmVhZF9kZXNjcmlwdG9yX3QgKiBkZXNjLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQg
bG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNf
ZmlsZV9yZWFkX1I2Mjc3NDg5YyhzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90
ICopOwpleHRlcm4gc3NpemVfdCBnZW5lcmljX2ZpbGVfd3JpdGVfUjE5OWUzOGRkKHN0cnVjdCBm
aWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiB2b2lkIGRvX2dl
bmVyaWNfZmlsZV9yZWFkX1I2NjM0MDBhMShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgcmVhZF9k
ZXNjcmlwdG9yX3QgKiwgcmVhZF9hY3Rvcl90KTsKZXh0ZXJuIGxvZmZfdCBub19sbHNlZWtfUjNi
NTUxNDRhKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgb3JpZ2luKTsKZXh0
ZXJuIGxvZmZfdCBnZW5lcmljX2ZpbGVfbGxzZWVrX1JjYzY0NTFjYShzdHJ1Y3QgZmlsZSAqZmls
ZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVh
ZF9kaXJfUmE4NDE1ZGFhKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7
CmV4dGVybiBpbnQgZ2VuZXJpY19maWxlX29wZW5fUmNiNjc5MmJkKHN0cnVjdCBpbm9kZSAqIGlu
b2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg
Z2VuZXJpY19yb19mb3BzX1I2ZTAzZDgzMTsKCmV4dGVybiBpbnQgdmZzX3JlYWRsaW5rX1JmZjM3
MjVhZChzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4g
aW50IHZmc19mb2xsb3dfbGlua19SZDM5N2I5NzUoc3RydWN0IG5hbWVpZGF0YSAqLCBjb25zdCBj
aGFyICopOwpleHRlcm4gaW50IHBhZ2VfcmVhZGxpbmtfUmI5ZjY5ZmVkKHN0cnVjdCBkZW50cnkg
KiwgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IHBhZ2VfZm9sbG93X2xpbmtfUjU5NzViYmQ4KHN0
cnVjdCBkZW50cnkgKiwgc3RydWN0IG5hbWVpZGF0YSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9v
cGVyYXRpb25zIHBhZ2Vfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zX1I4MzFjZjg5MjsKCmV4dGVy
biBpbnQgdmZzX3JlYWRkaXJfUjFjMDBjMDkyKHN0cnVjdCBmaWxlICosIGZpbGxkaXJfdCwgdm9p
ZCAqKTsKZXh0ZXJuIGludCBkY2FjaGVfcmVhZGRpcl9SMDc5MGRhOWIoc3RydWN0IGZpbGUgKiwg
dm9pZCAqLCBmaWxsZGlyX3QpOwoKZXh0ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpnZXRf
ZnNfdHlwZV9SNThmNDNiNzAoY29uc3QgY2hhciAqbmFtZSk7CmV4dGVybiBzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKmdldF9zdXBlcl9SYjZmOTg2NWMoa2Rldl90KTsKZXh0ZXJuIHZvaWQgZHJvcF9zdXBl
cl9SOTVhZGE3NzQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnN0YXRpYyBpbmxpbmUgaW50IGlz
X21vdW50ZWQoa2Rldl90IGRldikKewogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBn
ZXRfc3VwZXJfUmI2Zjk4NjVjKGRldik7CiAgICAgICAgaWYgKHNiKSB7CiAgICAgICAgICAgICAg
ICBkcm9wX3N1cGVyX1I5NWFkYTc3NChzYik7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAg
ICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVy
KGtkZXZfdCwgaW50IGJbXSwgaW50KTsKdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVyX3N3
YWIzMihrZGV2X3QsIGludCBiW10sIGludCk7CmV4dGVybiBrZGV2X3QgUk9PVF9ERVZfUmIzMjQ5
NmU4OwpleHRlcm4gY2hhciByb290X2RldmljZV9uYW1lW107CgoKZXh0ZXJuIHZvaWQgc2hvd19i
dWZmZXJzKHZvaWQpOwpleHRlcm4gdm9pZCBtb3VudF9yb290KHZvaWQpOwoKCgoKCgpleHRlcm4g
c3NpemVfdCBjaGFyX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAq
KTsKZXh0ZXJuIHNzaXplX3QgYmxvY2tfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVf
dCwgbG9mZl90ICopOwpleHRlcm4gaW50IHJlYWRfYWhlYWRfUjBhYmI3YjA3W107CgpleHRlcm4g
c3NpemVfdCBjaGFyX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBs
b2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IGJsb2NrX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0
IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CgpleHRlcm4gaW50IGZpbGVfZnN5bmNfUjdmOWQw
MjU2KHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCBnZW5l
cmljX2J1ZmZlcl9mZGF0YXN5bmNfUjYxMmZjYzY3KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2ln
bmVkIGxvbmcgc3RhcnRfaWR4LCB1bnNpZ25lZCBsb25nIGVuZF9pZHgpOwpleHRlcm4gaW50IGdl
bmVyaWNfb3N5bmNfaW5vZGUoc3RydWN0IGlub2RlICosIGludCk7CgoKCgpleHRlcm4gaW50IGlu
b2RlX2NoYW5nZV9va19SYmMwYjU2NDIoc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0ciAqKTsK
ZXh0ZXJuIGludCBpbm9kZV9zZXRhdHRyX1I1M2M2ZDNkMChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IGlhdHRyICopOwojIDE0NTcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvZnMuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3QgZGVudHJ5ICpsb2NrX3BhcmVudChzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkaXIgPSBkZ2V0KGRlbnRy
eS0+ZF9wYXJlbnQpOwoKICAgICAgICBkb3duKCZkaXItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAg
ICByZXR1cm4gZGlyOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKmdldF9wYXJlbnQo
c3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgcmV0dXJuIGRnZXQoZGVudHJ5LT5kX3Bh
cmVudCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmxvY2tfZGlyKHN0cnVjdCBkZW50cnkgKmRp
cikKewogICAgICAgIHVwKCZkaXItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICBkcHV0X1JkNmNk
ODI4NChkaXIpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9kb3duKHN0cnVjdCBz
ZW1hcGhvcmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAgIGlmIChzMSAhPSBz
MikgewogICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBs
b25nKSBzMikgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAg
PSBzMjsKICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBkb3duKHMxKTsKICAgICAgICB9CiAgICAgICAgZG93
bihzMik7Cn0KIyAxNTAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2ZzLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVfZG93bihzdHJ1Y3Qgc2VtYXBob3JlICpz
MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczMpCnsKICAg
ICAgICBpZiAoczEgIT0gczIpIHsKICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykg
czEgPCAodW5zaWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1
bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHMzID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAo
dW5zaWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlICp0bXAgPSBzMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
MiA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBz
MSA8ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMzID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczIgPCAodW5zaWduZWQgbG9uZykg
czMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0
bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMyOyBzMiA9IHRt
cDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgZG93bihzMSk7CiAgICAgICAgfSBlbHNlIGlmICgodW5zaWduZWQgbG9uZykgczIgPCAo
dW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRt
cCA9IHMzOwogICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgfQogICAg
ICAgIGRvd24oczIpOwogICAgICAgIGRvd24oczMpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91
YmxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAg
ICAgIHVwKHMxKTsKICAgICAgICBpZiAoczEgIT0gczIpCiAgICAgICAgICAgICAgICB1cChzMik7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVfdXAoc3RydWN0IHNlbWFwaG9yZSAqczEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczMpCnsKICAgICAgICB1cChz
MSk7CiAgICAgICAgaWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwogICAgICAg
IHVwKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9sb2NrKHN0cnVjdCBkZW50cnkg
KmQxLCBzdHJ1Y3QgZGVudHJ5ICpkMikKewogICAgICAgIGRvdWJsZV9kb3duKCZkMS0+ZF9pbm9k
ZS0+aV9zZW0sICZkMi0+ZF9pbm9kZS0+aV9zZW0pOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91
YmxlX3VubG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRyeSAqZDIpCnsKICAgICAg
ICBkb3VibGVfdXAoJmQxLT5kX2lub2RlLT5pX3NlbSwmZDItPmRfaW5vZGUtPmlfc2VtKTsKICAg
ICAgICBkcHV0X1JkNmNkODI4NChkMSk7CiAgICAgICAgZHB1dF9SZDZjZDgyODQoZDIpOwp9CiMg
MTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5o
IiAyCiMgMzIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FwYWJp
bGl0eS5oIgp0eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2hlYWRlcl9zdHJ1Y3QgewogICAgICAg
IF9fdTMyIHZlcnNpb247CiAgICAgICAgaW50IHBpZDsKfSAqY2FwX3VzZXJfaGVhZGVyX3Q7Cgp0
eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2RhdGFfc3RydWN0IHsKICAgICAgICBfX3UzMiBlZmZl
Y3RpdmU7CiAgICAgICAgX191MzIgcGVybWl0dGVkOwogICAgICAgIF9fdTMyIGluaGVyaXRhYmxl
Owp9ICpjYXBfdXNlcl9kYXRhX3Q7CiMgNTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgp0eXBlZGVmIF9fdTMyIGtlcm5lbF9jYXBfdDsKIyAy
ODQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5o
IgpleHRlcm4ga2VybmVsX2NhcF90IGNhcF9ic2V0X1I1OWFiNDA4MDsKIyAzMTIgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgpzdGF0aWMgaW5s
aW5lIGtlcm5lbF9jYXBfdCBjYXBfY29tYmluZShrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90
IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgfCAoYik7CiAg
ICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9pbnRlcnNl
Y3Qoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9jYXBfdCBiKQp7CiAgICAga2VybmVsX2NhcF90IGRl
c3Q7CiAgICAgKGRlc3QpID0gKGEpICYgKGIpOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMg
aW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfZHJvcChrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90
IGRyb3ApCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgJiB+KGRy
b3ApOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBf
aW52ZXJ0KGtlcm5lbF9jYXBfdCBjKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRl
c3QpID0gfihjKTsKICAgICByZXR1cm4gZGVzdDsKfQojIDYgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMgMjIgIi91c3Ivc3JjL3J1ZG8vbGlu
dXgtMi40LjEwL2luY2x1ZGUvbGludXgvYmluZm10cy5oIgpzdHJ1Y3QgbGludXhfYmlucHJtewog
ICAgICAgIGNoYXIgYnVmWzEyOF07CiAgICAgICAgc3RydWN0IHBhZ2UgKnBhZ2VbMzJdOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgcDsKICAgICAgICBpbnQgc2hfYmFuZzsKICAgICAgICBzdHJ1Y3Qg
ZmlsZSAqIGZpbGU7CiAgICAgICAgaW50IGVfdWlkLCBlX2dpZDsKICAgICAgICBrZXJuZWxfY2Fw
X3QgY2FwX2luaGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkLCBjYXBfZWZmZWN0aXZlOwogICAgICAg
IGludCBhcmdjLCBlbnZjOwogICAgICAgIGNoYXIgKiBmaWxlbmFtZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGxvYWRlciwgZXhlYzsKfTsKCgoKCgpzdHJ1Y3QgbGludXhfYmluZm10IHsKICAgICAg
ICBzdHJ1Y3QgbGludXhfYmluZm10ICogbmV4dDsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICptb2R1
bGU7CiAgICAgICAgaW50ICgqbG9hZF9iaW5hcnkpKHN0cnVjdCBsaW51eF9iaW5wcm0gKiwgc3Ry
dWN0IHB0X3JlZ3MgKiByZWdzKTsKICAgICAgICBpbnQgKCpsb2FkX3NobGliKShzdHJ1Y3QgZmls
ZSAqKTsKICAgICAgICBpbnQgKCpjb3JlX2R1bXApKGxvbmcgc2lnbnIsIHN0cnVjdCBwdF9yZWdz
ICogcmVncywgc3RydWN0IGZpbGUgKiBmaWxlKTsKICAgICAgICB1bnNpZ25lZCBsb25nIG1pbl9j
b3JlZHVtcDsKfTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfYmluZm10X1IwYzcwMzJlMShzdHJ1Y3Qg
bGludXhfYmluZm10ICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfYmluZm10X1JmZjQwNmU5ZShz
dHJ1Y3QgbGludXhfYmluZm10ICopOwoKZXh0ZXJuIGludCBwcmVwYXJlX2JpbnBybV9SZTQxMTAy
ODAoc3RydWN0IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX2FyZ196ZXJvX1I2
MzRjZTVjNChzdHJ1Y3QgbGludXhfYmlucHJtICopOwpleHRlcm4gaW50IHNlYXJjaF9iaW5hcnlf
aGFuZGxlcl9SZTQ5M2QxZGIoc3RydWN0IGxpbnV4X2JpbnBybSAqLHN0cnVjdCBwdF9yZWdzICop
OwpleHRlcm4gaW50IGZsdXNoX29sZF9leGVjX1I4ZjVlMmY0ZShzdHJ1Y3QgbGludXhfYmlucHJt
ICogYnBybSk7CmV4dGVybiBpbnQgc2V0dXBfYXJnX3BhZ2VzX1I5ZmMzMTMxNShzdHJ1Y3QgbGlu
dXhfYmlucHJtICogYnBybSk7CmV4dGVybiBpbnQgY29weV9zdHJpbmdzKGludCBhcmdjLGNoYXIg
KiogYXJndixzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKTsKZXh0ZXJuIGludCBjb3B5X3N0cmlu
Z3Nfa2VybmVsX1I3YTk4ZWQ2YyhpbnQgYXJnYyxjaGFyICoqIGFyZ3Ysc3RydWN0IGxpbnV4X2Jp
bnBybSAqYnBybSk7CmV4dGVybiB2b2lkIGNvbXB1dGVfY3JlZHNfUmZiMjk1MGEwKHN0cnVjdCBs
aW51eF9iaW5wcm0gKmJpbnBybSk7CmV4dGVybiBpbnQgZG9fY29yZWR1bXAobG9uZyBzaWduciwg
c3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKZXh0ZXJuIHZvaWQgc2V0X2JpbmZtdF9SOGU4NmNjMjco
c3RydWN0IGxpbnV4X2JpbmZtdCAqbmV3KTsKIyAxMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC90aHJlYWRzLmgiIDEKIyAxMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDEyICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxMyAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aW1lcy5oIiAxCgoKCnN0cnVjdCB0bXMgewogICAgICAg
IGNsb2NrX3QgdG1zX3V0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX3N0aW1lOwogICAgICAgIGNs
b2NrX3QgdG1zX2N1dGltZTsKICAgICAgICBjbG9ja190IHRtc19jc3RpbWU7Cn07CiMgMTQgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGltZXguaCIgMQojIDU0ICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCiMgMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGFyYW0uaCIgMQojIDU1ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiIDIKIyAxNTIgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGltZXguaCIKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS90aW1leC5oIiAxCiMgOSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdGltZXguaCIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTAgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3RpbWV4LmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9tc3IuaCIgMQojIDExICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS90aW1leC5oIiAyCiMgMzIgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3RpbWV4LmgiCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBs
b25nIGN5Y2xlc190OwoKZXh0ZXJuIGN5Y2xlc190IGNhY2hlZmx1c2hfdGltZTsKCnN0YXRpYyBp
bmxpbmUgY3ljbGVzX3QgZ2V0X2N5Y2xlcyAodm9pZCkKewoKCgogICAgICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyByZXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJyZHRzYyIgOiAiPUEi
IChyZXQpKTsKICAgICAgICByZXR1cm4gcmV0OwoKfQoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgY3B1
X2toejsKIyAxNTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGlt
ZXguaCIgMgojIDE2MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90
aW1leC5oIgpzdHJ1Y3QgdGltZXggewogICAgICAgIHVuc2lnbmVkIGludCBtb2RlczsKICAgICAg
ICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZyZXE7CiAgICAgICAgbG9uZyBtYXhlcnJvcjsK
ICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAgIGludCBzdGF0dXM7CiAgICAgICAgbG9uZyBj
b25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lvbjsKICAgICAgICBsb25nIHRvbGVyYW5jZTsK
CgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgICAgICAgbG9uZyB0aWNrOwoKICAgICAg
ICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBqaXR0ZXI7CiAgICAgICAgaW50IHNoaWZ0Owog
ICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxvbmcgaml0Y250OwogICAgICAgIGxvbmcgY2Fs
Y250OwogICAgICAgIGxvbmcgZXJyY250OwogICAgICAgIGxvbmcgc3RiY250OwoKICAgICAgICBp
bnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwogICAgICAgIGludCA6MzI7IGludCA6
MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsg
aW50IDozMjsKfTsKIyAyNTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvdGltZXguaCIKZXh0ZXJuIGxvbmcgdGljazsKZXh0ZXJuIGludCB0aWNrYWRqOwoKCgoKZXh0
ZXJuIGludCB0aW1lX3N0YXRlOwpleHRlcm4gaW50IHRpbWVfc3RhdHVzOwpleHRlcm4gbG9uZyB0
aW1lX29mZnNldDsKZXh0ZXJuIGxvbmcgdGltZV9jb25zdGFudDsKZXh0ZXJuIGxvbmcgdGltZV90
b2xlcmFuY2U7CmV4dGVybiBsb25nIHRpbWVfcHJlY2lzaW9uOwpleHRlcm4gbG9uZyB0aW1lX21h
eGVycm9yOwpleHRlcm4gbG9uZyB0aW1lX2VzdGVycm9yOwoKZXh0ZXJuIGxvbmcgdGltZV9waGFz
ZTsKZXh0ZXJuIGxvbmcgdGltZV9mcmVxOwpleHRlcm4gbG9uZyB0aW1lX2FkajsKZXh0ZXJuIGxv
bmcgdGltZV9yZWZ0aW1lOwoKZXh0ZXJuIGxvbmcgdGltZV9hZGp1c3Q7CgoKZXh0ZXJuIGxvbmcg
cHBzX29mZnNldDsKZXh0ZXJuIGxvbmcgcHBzX2ppdHRlcjsKZXh0ZXJuIGxvbmcgcHBzX2ZyZXE7
CmV4dGVybiBsb25nIHBwc19zdGFiaWw7CmV4dGVybiBsb25nIHBwc192YWxpZDsKCgpleHRlcm4g
aW50IHBwc19zaGlmdDsKZXh0ZXJuIGxvbmcgcHBzX2ppdGNudDsKZXh0ZXJuIGxvbmcgcHBzX2Nh
bGNudDsKZXh0ZXJuIGxvbmcgcHBzX2VycmNudDsKZXh0ZXJuIGxvbmcgcHBzX3N0YmNudDsKIyAx
NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMg
MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9yYnRyZWUuaCIgMQoj
IDk3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEK
IyA5OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9yYnRyZWUuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3RkZGVmLmgi
IDEKIyA5OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9yYnRyZWUu
aCIgMgoKdHlwZWRlZiBzdHJ1Y3QgcmJfbm9kZV9zCnsKICAgICAgICBzdHJ1Y3QgcmJfbm9kZV9z
ICogcmJfcGFyZW50OwogICAgICAgIGludCByYl9jb2xvcjsKCgogICAgICAgIHN0cnVjdCByYl9u
b2RlX3MgKiByYl9yaWdodDsKICAgICAgICBzdHJ1Y3QgcmJfbm9kZV9zICogcmJfbGVmdDsKfQpy
Yl9ub2RlX3Q7Cgp0eXBlZGVmIHN0cnVjdCByYl9yb290X3MKewogICAgICAgIHN0cnVjdCByYl9u
b2RlX3MgKiByYl9ub2RlOwp9CnJiX3Jvb3RfdDsKCgoKCgpleHRlcm4gdm9pZCByYl9pbnNlcnRf
Y29sb3IocmJfbm9kZV90ICosIHJiX3Jvb3RfdCAqKTsKZXh0ZXJuIHZvaWQgcmJfZXJhc2UocmJf
bm9kZV90ICosIHJiX3Jvb3RfdCAqKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCByYl9saW5rX25vZGUo
cmJfbm9kZV90ICogbm9kZSwgcmJfbm9kZV90ICogcGFyZW50LCByYl9ub2RlX3QgKiogcmJfbGlu
aykKewogICAgICAgIG5vZGUtPnJiX3BhcmVudCA9IHBhcmVudDsKICAgICAgICBub2RlLT5yYl9j
b2xvciA9IDA7CiAgICAgICAgbm9kZS0+cmJfbGVmdCA9IG5vZGUtPnJiX3JpZ2h0ID0gKCh2b2lk
ICopMCk7CgogICAgICAgICpyYl9saW5rID0gbm9kZTsKfQojIDE2ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCiMgMSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDEKIyAxOCAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDEKIyAxOSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMjAgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAxCiMgMjEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL21tdS5oIiAxCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgdm9pZCAqc2VnbWVudHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHV2YWxpZDsK
fSBtbV9jb250ZXh0X3Q7CiMgMjIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvc2NoZWQuaCIgMgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L3NtcC5oIiAxCiMgOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9zbXAuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2NvbmZpZy5oIiAxCiMgMTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvc21wLmgiIDIKIyAyNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC90dHkuaCIgMQojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L3R0eS5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29u
ZmlnLmgiIDEKIyAyMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90
dHkuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu
aCIgMQojIDIxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R0eS5o
IiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tYWpvci5o
IiAxCiMgMTc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21ham9y
LmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBzY3NpX2Jsa19tYWpvcihpbnQgbSkgewogICAgICAg
IHJldHVybiAoKChtKSA9PSA4IHx8ICgobSkgPj0gNjUgJiYgKG0pIDw9IDcxKSkgfHwgKG0pID09
IDExKTsKfQojIDE5MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9t
YWpvci5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgaWRlX2Jsa19tYWpvcihpbnQgbSkKewogICAg
ICAgIHJldHVybiAoKG0pID09IDMgfHwgKG0pID09IDIyIHx8IChtKSA9PSAzMyB8fCAobSkgPT0g
MzQgfHwgKG0pID09IDU2IHx8IChtKSA9PSA1NyB8fCAobSkgPT0gODggfHwgKG0pID09IDg5IHx8
IChtKSA9PSA5MCB8fCAobSkgPT0gOTEpOwp9CiMgMjIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvdGVybWlvcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9hc20vdGVybWlvcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdGVybWJpdHMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMQojIDUgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Rlcm1iaXRzLmgiIDIKCnR5cGVkZWYg
dW5zaWduZWQgY2hhciBjY190Owp0eXBlZGVmIHVuc2lnbmVkIGludCBzcGVlZF90Owp0eXBlZGVm
IHVuc2lnbmVkIGludCB0Y2ZsYWdfdDsKCgpzdHJ1Y3QgdGVybWlvcyB7CiAgICAgICAgdGNmbGFn
X3QgY19pZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX29mbGFnOwogICAgICAgIHRjZmxhZ190IGNf
Y2ZsYWc7CiAgICAgICAgdGNmbGFnX3QgY19sZmxhZzsKICAgICAgICBjY190IGNfbGluZTsKICAg
ICAgICBjY190IGNfY2NbMTldOwp9OwojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvYXNtL3Rlcm1pb3MuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvYXNtL2lvY3Rscy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9hc20vaW9jdGwuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvYXNtL2lvY3Rscy5oIiAyCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9hc20vdGVybWlvcy5oIiAyCgpzdHJ1Y3Qgd2luc2l6ZSB7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgd3Nfcm93OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX2NvbDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCB3c194cGl4ZWw7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3NfeXBpeGVsOwp9
OwoKCnN0cnVjdCB0ZXJtaW8gewogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfaWZsYWc7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgY19vZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX2NmbGFn
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfbGZsYWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBj
X2xpbmU7CiAgICAgICAgdW5zaWduZWQgY2hhciBjX2NjWzhdOwp9OwojIDYgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGVybWlvcy5oIiAyCiMgMjMgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAxCiMgMjQgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R0eV9kcml2ZXIuaCIgMQojIDExOCAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90dHlfZHJpdmVyLmgiCiMgMSAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgMTE5ICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R0eV9kcml2ZXIuaCIgMgoK
c3RydWN0IHR0eV9kcml2ZXIgewogICAgICAgIGludCBtYWdpYzsKICAgICAgICBjb25zdCBjaGFy
ICpkcml2ZXJfbmFtZTsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIGludCBuYW1l
X2Jhc2U7CiAgICAgICAgc2hvcnQgbWFqb3I7CiAgICAgICAgc2hvcnQgbWlub3Jfc3RhcnQ7CiAg
ICAgICAgc2hvcnQgbnVtOwogICAgICAgIHNob3J0IHR5cGU7CiAgICAgICAgc2hvcnQgc3VidHlw
ZTsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyBpbml0X3Rlcm1pb3M7CiAgICAgICAgaW50IGZsYWdz
OwogICAgICAgIGludCAqcmVmY291bnQ7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpw
cm9jX2VudHJ5OwogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpvdGhlcjsKCgoKCiAgICAgICAg
c3RydWN0IHR0eV9zdHJ1Y3QgKip0YWJsZTsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqKnRlcm1p
b3M7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgKip0ZXJtaW9zX2xvY2tlZDsKICAgICAgICB2b2lk
ICpkcml2ZXJfc3RhdGU7CgoKCgoKICAgICAgICBpbnQgKCpvcGVuKShzdHJ1Y3QgdHR5X3N0cnVj
dCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKICAgICAgICB2b2lkICgqY2xvc2UpKHN0cnVj
dCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwogICAgICAgIGludCAoKndy
aXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgaW50IGZyb21fdXNlciwKICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGNvdW50KTsKICAgICAgICB2
b2lkICgqcHV0X2NoYXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNoYXIgY2gp
OwogICAgICAgIHZvaWQgKCpmbHVzaF9jaGFycykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAg
ICAgICAgaW50ICgqd3JpdGVfcm9vbSkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAg
aW50ICgqY2hhcnNfaW5fYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBp
bnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAog
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsK
ICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVj
dCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB2b2lkICgqdGhyb3R0bGUpKHN0cnVjdCB0dHlfc3Ry
dWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqdW50aHJvdHRsZSkoc3RydWN0IHR0eV9zdHJ1Y3Qg
KiB0dHkpOwogICAgICAgIHZvaWQgKCpzdG9wKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAg
ICAgICB2b2lkICgqc3RhcnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQg
KCpoYW5ndXApKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQgKCpicmVha19j
dGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBzdGF0ZSk7CiAgICAgICAgdm9pZCAoKmZs
dXNoX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKnNldF9s
ZGlzYykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKndhaXRfdW50aWxf
c2VudCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IHRpbWVvdXQpOwogICAgICAgIHZvaWQg
KCpzZW5kX3hjaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBjaGFyIGNoKTsKICAgICAgICBp
bnQgKCpyZWFkX3Byb2MpKGNoYXIgKnBhZ2UsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2ZmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRhdGEpOwog
ICAgICAgIGludCAoKndyaXRlX3Byb2MpKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpi
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCwgdm9p
ZCAqZGF0YSk7CgoKCgogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpuZXh0OwogICAgICAgIHN0
cnVjdCB0dHlfZHJpdmVyICpwcmV2Owp9OwojIDI1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMQojIDEwMCAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKIyAxMDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvdHR5X2xkaXNjLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMQojIDEwMiAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMgoKc3RydWN0IHR0eV9sZGlz
YyB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IG51
bTsKICAgICAgICBpbnQgZmxhZ3M7CgoKCiAgICAgICAgaW50ICgqb3Blbikoc3RydWN0IHR0eV9z
dHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAg
ICAgICB2b2lkICgqZmx1c2hfYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAg
ICBzc2l6ZV90ICgqY2hhcnNfaW5fYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAg
ICAgICBzc2l6ZV90ICgqcmVhZCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxl
ICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6
ZV90IG5yKTsKICAgICAgICBzc2l6ZV90ICgqd3JpdGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5
LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyICogYnVmLCBzaXplX3QgbnIpOwogICAgICAgIGludCAoKmlvY3RsKShzdHJ1Y3Qg
dHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogICAgICAgIHZvaWQg
KCpzZXRfdGVybWlvcykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHRlcm1pb3MgKiBv
bGQpOwogICAgICAgIHVuc2lnbmVkIGludCAoKnBvbGwpKHN0cnVjdCB0dHlfc3RydWN0ICosIHN0
cnVjdCBmaWxlICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBvbGxfdGFi
bGVfc3RydWN0ICopOwoKCgoKICAgICAgICB2b2lkICgqcmVjZWl2ZV9idWYpKHN0cnVjdCB0dHlf
c3RydWN0ICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqZnAsIGludCBjb3VudCk7CiAgICAgICAgaW50ICgqcmVjZWl2ZV9yb29t
KShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfd2FrZXVwKShzdHJ1
Y3QgdHR5X3N0cnVjdCAqKTsKfTsKIyAyNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC90dHkuaCIgMgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2FzbS9zeXN0ZW0uaCIgMQojIDI4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L3R0eS5oIiAyCiMgNTkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvdHR5LmgiCnN0cnVjdCBzY3JlZW5faW5mb19SYzdkOGQ0ZDYgewogICAgICAgIHVu
c2lnbmVkIGNoYXIgb3JpZ194OwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ195OwogICAgICAg
IHVuc2lnbmVkIHNob3J0IGRvbnR1c2UxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG9yaWdfdmlk
ZW9fcGFnZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9fbW9kZTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9fY29sczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bnVz
ZWQyOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG9yaWdfdmlkZW9fZWdhX2J4OwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHVudXNlZDM7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3ZpZGVvX2xp
bmVzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19pc1ZHQTsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBvcmlnX3ZpZGVvX3BvaW50czsKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGxm
Yl93aWR0aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZmJfaGVpZ2h0OwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGxmYl9kZXB0aDsKICAgICAgICB1bnNpZ25lZCBsb25nIGxmYl9iYXNlOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgbGZiX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZG9udHVz
ZTIsIGRvbnR1c2UzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGxmYl9saW5lbGVuZ3RoOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgcmVkX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciByZWRfcG9z
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW5fc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IGdyZWVuX3BvczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGJsdWVfc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBjaGFyIGJsdWVfcG9zOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcnN2ZF9zaXplOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgcnN2ZF9wb3M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVzYXBt
X3NlZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZXNhcG1fb2ZmOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHBhZ2VzOwoKfTsKCmV4dGVybiBzdHJ1Y3Qgc2NyZWVuX2luZm9fUmM3ZDhkNGQ2IHNj
cmVlbl9pbmZvX1JjN2Q4ZDRkNjsKIyAxMzkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCB0dHlfZmxpcF9idWZmZXIgewogICAgICAgIHN0cnVj
dCB0cV9zdHJ1Y3QgdHF1ZXVlOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgcHR5X3NlbTsKICAg
ICAgICBjaGFyICpjaGFyX2J1Zl9wdHI7CiAgICAgICAgdW5zaWduZWQgY2hhciAqZmxhZ19idWZf
cHRyOwogICAgICAgIGludCBjb3VudDsKICAgICAgICBpbnQgYnVmX251bTsKICAgICAgICB1bnNp
Z25lZCBjaGFyIGNoYXJfYnVmWzIqNTEyXTsKICAgICAgICBjaGFyIGZsYWdfYnVmWzIqNTEyXTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIHNsb3BbNF07Cn07CiMgMjU5ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R0eS5oIgpzdHJ1Y3QgdHR5X3N0cnVjdCB7CiAgICAg
ICAgaW50IG1hZ2ljOwogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyIGRyaXZlcjsKICAgICAgICBz
dHJ1Y3QgdHR5X2xkaXNjIGxkaXNjOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICp0ZXJtaW9zLCAq
dGVybWlvc19sb2NrZWQ7CiAgICAgICAgaW50IHBncnA7CiAgICAgICAgaW50IHNlc3Npb247CiAg
ICAgICAga2Rldl90IGRldmljZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAg
IGludCBjb3VudDsKICAgICAgICBzdHJ1Y3Qgd2luc2l6ZSB3aW5zaXplOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgc3RvcHBlZDoxLCBod19zdG9wcGVkOjEsIGZsb3dfc3RvcHBlZDoxLCBwYWNrZXQ6
MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGxvd19sYXRlbmN5OjEsIHdhcm5lZDoxOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgY3RybF9zdGF0dXM7CgogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICps
aW5rOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYXN5bmM7CiAgICAgICAgc3RydWN0
IHR0eV9mbGlwX2J1ZmZlciBmbGlwOwogICAgICAgIGludCBtYXhfZmxpcF9jbnQ7CiAgICAgICAg
aW50IGFsdF9zcGVlZDsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3cml0ZV93YWl0OwogICAg
ICAgIHdhaXRfcXVldWVfaGVhZF90IHJlYWRfd2FpdDsKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0
IHRxX2hhbmd1cDsKICAgICAgICB2b2lkICpkaXNjX2RhdGE7CiAgICAgICAgdm9pZCAqZHJpdmVy
X2RhdGE7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0dHlfZmlsZXM7CgoKCgoKCgogICAgICAg
IHVuc2lnbmVkIGludCBjb2x1bW47CiAgICAgICAgdW5zaWduZWQgY2hhciBsbmV4dDoxLCBlcmFz
aW5nOjEsIHJhdzoxLCByZWFsX3JhdzoxLCBpY2Fub246MTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IGNsb3Npbmc6MTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtaW5pbXVtX3RvX3dha2U7CiAgICAg
ICAgdW5zaWduZWQgb3ZlcnJ1bl90aW1lOwogICAgICAgIGludCBudW1fb3ZlcnJ1bjsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHByb2Nlc3NfY2hhcl9tYXBbMjU2Lyg4KnNpemVvZih1bnNpZ25lZCBs
b25nKSldOwogICAgICAgIGNoYXIgKnJlYWRfYnVmOwogICAgICAgIGludCByZWFkX2hlYWQ7CiAg
ICAgICAgaW50IHJlYWRfdGFpbDsKICAgICAgICBpbnQgcmVhZF9jbnQ7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyByZWFkX2ZsYWdzWzQwOTYvKDgqc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKV07CiAgICAg
ICAgaW50IGNhbm9uX2RhdGE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjYW5vbl9oZWFkOwogICAg
ICAgIHVuc2lnbmVkIGludCBjYW5vbl9jb2x1bW47CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBh
dG9taWNfcmVhZDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGF0b21pY193cml0ZTsKICAgICAg
ICBzcGlubG9ja190IHJlYWRfbG9jazsKCiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCBTQUtfdHE7
Cn07CiMgMzQxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R0eS5o
IgpleHRlcm4gdm9pZCB0dHlfd3JpdGVfZmx1c2goc3RydWN0IHR0eV9zdHJ1Y3QgKik7CgpleHRl
cm4gc3RydWN0IHRlcm1pb3MgdHR5X3N0ZF90ZXJtaW9zX1I4OWFjNTI1NDsKZXh0ZXJuIHN0cnVj
dCB0dHlfc3RydWN0ICogcmVkaXJlY3Q7CmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIGxkaXNjc1td
OwpleHRlcm4gaW50IGZnX2NvbnNvbGVfUjRlNmU4ZWE3LCBsYXN0X2NvbnNvbGUsIHdhbnRfY29u
c29sZTsKCmV4dGVybiBpbnQga21zZ19yZWRpcmVjdDsKCmV4dGVybiB2b2lkIGNvbl9pbml0KHZv
aWQpOwpleHRlcm4gdm9pZCBjb25zb2xlX2luaXQodm9pZCk7CgpleHRlcm4gaW50IGxwX2luaXQo
dm9pZCk7CmV4dGVybiBpbnQgcHR5X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHR0eV9pbml0KHZv
aWQpOwpleHRlcm4gaW50IG14c2VyX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbW94YV9pbml0KHZv
aWQpOwpleHRlcm4gaW50IGlwMl9pbml0KHZvaWQpOwpleHRlcm4gaW50IHBjeGVfaW5pdCh2b2lk
KTsKZXh0ZXJuIGludCBwY19pbml0KHZvaWQpOwpleHRlcm4gaW50IHZjc19pbml0KHZvaWQpOwpl
eHRlcm4gaW50IHJwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgY3lfaW5pdCh2b2lkKTsKZXh0ZXJu
IGludCBzdGxfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzdGxpX2luaXQodm9pZCk7CmV4dGVybiBp
bnQgc3BlY2lhbGl4X2luaXQodm9pZCk7CmV4dGVybiBpbnQgZXNwc2VyaWFsX2luaXQodm9pZCk7
CmV4dGVybiBpbnQgbWFjc2VyaWFsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgYTIyMzJib2FyZF9p
bml0KHZvaWQpOwoKZXh0ZXJuIGludCB0dHlfcGFyYW5vaWFfY2hlY2soc3RydWN0IHR0eV9zdHJ1
Y3QgKnR0eSwga2Rldl90IGRldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqcm91dGluZSk7CmV4dGVybiBjaGFyICp0dHlfbmFtZShzdHJ1Y3QgdHR5X3N0cnVj
dCAqdHR5LCBjaGFyICpidWYpOwpleHRlcm4gdm9pZCB0dHlfd2FpdF91bnRpbF9zZW50X1I0OTRl
ZDQwYihzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgbG9uZyB0aW1lb3V0KTsKZXh0ZXJuIGludCB0
dHlfY2hlY2tfY2hhbmdlX1JhZjYwZmUzYShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVy
biB2b2lkIHN0b3BfdHR5KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3Rh
cnRfdHR5KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJf
bGRpc2NfUmQ4MzJkNzEyKGludCBkaXNjLCBzdHJ1Y3QgdHR5X2xkaXNjICpuZXdfbGRpc2MpOwpl
eHRlcm4gaW50IHR0eV9yZWdpc3Rlcl9kcml2ZXJfUjU0ZDU2MzY3KHN0cnVjdCB0dHlfZHJpdmVy
ICpkcml2ZXIpOwpleHRlcm4gaW50IHR0eV91bnJlZ2lzdGVyX2RyaXZlcl9SYjlmMjQwYmUoc3Ry
dWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVybiB2b2lkIHR0eV9yZWdpc3Rlcl9kZXZmc19S
ZTU1ZDNlZGIgKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVkIGludCBmbGFncywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtaW5vcik7CmV4dGVybiB2
b2lkIHR0eV91bnJlZ2lzdGVyX2RldmZzX1IzZGUzYmJjNyAoc3RydWN0IHR0eV9kcml2ZXIgKmRy
aXZlciwgdW5zaWduZWQgbWlub3IpOwpleHRlcm4gaW50IHR0eV9yZWFkX3Jhd19kYXRhKHN0cnVj
dCB0dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNoYXIgKmJ1ZnAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGJ1Zmxlbik7CmV4dGVybiB2b2lkIHR0eV93cml0ZV9tZXNzYWdlKHN0
cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgKm1zZyk7CgpleHRlcm4gaW50IGlzX29ycGhhbmVk
X3BncnAoaW50IHBncnApOwpleHRlcm4gaW50IGlzX2lnbm9yZWQoaW50IHNpZyk7CmV4dGVybiBp
bnQgdHR5X3NpZ25hbChpbnQgc2lnLCBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZv
aWQgdHR5X2hhbmd1cF9SOTA1MDU1MjYoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4g
dm9pZCB0dHlfdmhhbmd1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHR0
eV91bmhhbmd1cChzdHJ1Y3QgZmlsZSAqZmlscCk7CmV4dGVybiBpbnQgdHR5X2h1bmdfdXBfcF9S
YzMxZDYyNWUoc3RydWN0IGZpbGUgKiBmaWxwKTsKZXh0ZXJuIHZvaWQgZG9fU0FLX1IzODI0Yjc4
NShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZvaWQgZGlzYXNzb2NpYXRlX2N0dHko
aW50IHByaXYpOwpleHRlcm4gdm9pZCB0dHlfZmxpcF9idWZmZXJfcHVzaF9SYWQ2MDc5Yzkoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiBpbnQgdHR5X2dldF9iYXVkX3JhdGVfUmYyNGE1
MmIzKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwoKCmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIHR0
eV9sZGlzY19OX1RUWTsKCgpleHRlcm4gaW50IG5fdHR5X2lvY3RsX1I4MTc0NjZkMyhzdHJ1Y3Qg
dHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKCgoKZXh0ZXJuIHZvaWQg
c2VyaWFsX2NvbnNvbGVfaW5pdCh2b2lkKTsKCgoKZXh0ZXJuIGludCBwY3hlX29wZW4oc3RydWN0
IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbHApOwoKCgpleHRlcm4gdm9pZCBjb25z
b2xlX3ByaW50X1JiNzE0YTk4MShjb25zdCBjaGFyICopOwoKCgpleHRlcm4gaW50IHZ0X2lvY3Rs
KHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiMgMjUgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2VtLmgiIDEKCgoKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lwYy5oIiAxCgoKCiMgMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pcGMuaCIgMgoKCgoKc3RydWN0
IGlwY19wZXJtCnsKICAgICAgICBfX2tlcm5lbF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxf
dWlkX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF91
aWRfdCBjdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxf
bW9kZV90IG1vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VxOwp9OwoKCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaXBjYnVmLmgiIDEKIyAxNCAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaXBjYnVmLmgiCnN0cnVjdCBpcGM2NF9w
ZXJtCnsKICAgICAgICBfX2tlcm5lbF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlkMzJf
dCB1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfdWlk
MzJfdCBjdWlkOwogICAgICAgIF9fa2VybmVsX2dpZDMyX3QgY2dpZDsKICAgICAgICBfX2tlcm5l
bF9tb2RlX3QgbW9kZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDE7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc2VxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1
bnNpZ25lZCBsb25nIF9fdW51c2VkMTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsK
fTsKIyAyMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pcGMuaCIg
MgojIDU3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lwYy5oIgpz
dHJ1Y3Qga2Vybl9pcGNfcGVybQp7CiAgICAgICAga2V5X3Qga2V5OwogICAgICAgIHVpZF90IHVp
ZDsKICAgICAgICBnaWRfdCBnaWQ7CiAgICAgICAgdWlkX3QgY3VpZDsKICAgICAgICBnaWRfdCBj
Z2lkOwogICAgICAgIG1vZGVfdCBtb2RlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VxOwp9Owoj
IDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2VtLmgiIDIKIyAy
MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zZW0uaCIKc3RydWN0
IHNlbWlkX2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gc2VtX3Blcm07CiAgICAgICAgX19r
ZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICBfX2tlcm5lbF90aW1lX3Qgc2VtX2N0aW1l
OwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUg
KnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKipzZW1fcGVuZGluZ19sYXN0
OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
ZW1fbnNlbXM7Cn07CgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz
bS9zZW1idWYuaCIgMQojIDE0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz
bS9zZW1idWYuaCIKc3RydWN0IHNlbWlkNjRfZHMgewogICAgICAgIHN0cnVjdCBpcGM2NF9wZXJt
IHNlbV9wZXJtOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9jdGltZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNl
bV9uc2VtczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAgICB1bnNpZ25l
ZCBsb25nIF9fdW51c2VkNDsKfTsKIyAzNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9zZW0uaCIgMgoKCnN0cnVjdCBzZW1idWYgewogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHNlbV9udW07CiAgICAgICAgc2hvcnQgc2VtX29wOwogICAgICAgIHNob3J0IHNlbV9mbGc7
Cn07CgoKdW5pb24gc2VtdW4gewogICAgICAgIGludCB2YWw7CiAgICAgICAgc3RydWN0IHNlbWlk
X2RzICpidWY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKmFycmF5OwogICAgICAgIHN0cnVjdCBz
ZW1pbmZvICpfX2J1ZjsKICAgICAgICB2b2lkICpfX3BhZDsKfTsKCnN0cnVjdCBzZW1pbmZvIHsK
ICAgICAgICBpbnQgc2VtbWFwOwogICAgICAgIGludCBzZW1tbmk7CiAgICAgICAgaW50IHNlbW1u
czsKICAgICAgICBpbnQgc2VtbW51OwogICAgICAgIGludCBzZW1tc2w7CiAgICAgICAgaW50IHNl
bW9wbTsKICAgICAgICBpbnQgc2VtdW1lOwogICAgICAgIGludCBzZW11c3o7CiAgICAgICAgaW50
IHNlbXZteDsKICAgICAgICBpbnQgc2VtYWVtOwp9OwojIDgyICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NlbS5oIgpzdHJ1Y3Qgc2VtIHsKICAgICAgICBpbnQgc2Vt
dmFsOwogICAgICAgIGludCBzZW1waWQ7Cn07CgoKc3RydWN0IHNlbV9hcnJheSB7CiAgICAgICAg
c3RydWN0IGtlcm5faXBjX3Blcm0gc2VtX3Blcm07CiAgICAgICAgdGltZV90IHNlbV9vdGltZTsK
ICAgICAgICB0aW1lX3Qgc2VtX2N0aW1lOwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwog
ICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1f
cXVldWUgKipzZW1fcGVuZGluZ19sYXN0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNlbV9uc2VtczsKfTsKCgpzdHJ1Y3Qgc2VtX3F1ZXVlIHsK
ICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICogbmV4dDsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVl
ICoqIHByZXY7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0KiBzbGVlcGVyOwogICAgICAgIHN0
cnVjdCBzZW1fdW5kbyAqIHVuZG87CiAgICAgICAgaW50IHBpZDsKICAgICAgICBpbnQgc3RhdHVz
OwogICAgICAgIHN0cnVjdCBzZW1fYXJyYXkgKiBzbWE7CiAgICAgICAgaW50IGlkOwogICAgICAg
IHN0cnVjdCBzZW1idWYgKiBzb3BzOwogICAgICAgIGludCBuc29wczsKICAgICAgICBpbnQgYWx0
ZXI7Cn07CgoKCgpzdHJ1Y3Qgc2VtX3VuZG8gewogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqIHBy
b2NfbmV4dDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBpZF9uZXh0OwogICAgICAgIGludCBz
ZW1pZDsKICAgICAgICBzaG9ydCAqIHNlbWFkajsKfTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDApKSkgbG9uZyBzeXNfc2VtZ2V0IChrZXlfdCBrZXksIGludCBuc2VtcywgaW50IHNlbWZsZyk7
CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2Vtb3AgKGludCBzZW1pZCwg
c3RydWN0IHNlbWJ1ZiAqc29wcywgdW5zaWduZWQgbnNvcHMpOwogX19hdHRyaWJ1dGVfXygocmVn
cGFybSgwKSkpIGxvbmcgc3lzX3NlbWN0bCAoaW50IHNlbWlkLCBpbnQgc2VtbnVtLCBpbnQgY21k
LCB1bmlvbiBzZW11biBhcmcpOwojIDI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L3NpZ25hbC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9hc20vc2lnbmFsLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2FzbS9zaWduYWwuaCIgMgoKCnN0cnVjdCBzaWdpbmZvOwojIDE3ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zaWduYWwuaCIKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIG9sZF9zaWdzZXRfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNpZ1soNjQgLyAzMildOwp9IHNpZ3NldF90OwojIDEyOSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgdm9pZCAoKl9fc2lnaGFuZGxl
cl90KShpbnQpOwoKCgoKCgpzdHJ1Y3Qgb2xkX3NpZ2FjdGlvbiB7CiAgICAgICAgX19zaWdoYW5k
bGVyX3Qgc2FfaGFuZGxlcjsKICAgICAgICBvbGRfc2lnc2V0X3Qgc2FfbWFzazsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogICAgICAgIHZvaWQgKCpzYV9yZXN0b3Jlcikodm9pZCk7
Cn07CgpzdHJ1Y3Qgc2lnYWN0aW9uIHsKICAgICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5kbGVy
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FfZmxhZ3M7CiAgICAgICAgdm9pZCAoKnNhX3Jlc3Rv
cmVyKSh2b2lkKTsKICAgICAgICBzaWdzZXRfdCBzYV9tYXNrOwp9OwoKc3RydWN0IGtfc2lnYWN0
aW9uIHsKICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhOwp9OwojIDE3MSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgc3RydWN0IHNpZ2Fs
dHN0YWNrIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBpbnQgc3NfZmxhZ3M7CiAgICAg
ICAgc2l6ZV90IHNzX3NpemU7Cn0gc3RhY2tfdDsKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCIgMQojIDE3OSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnbmFsLmgiIDIKCgoKc3RhdGljIF9faW5saW5lX18g
dm9pZCBzaWdhZGRzZXQoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBfX2FzbV9f
KCJidHNsICUxLCUwIiA6ICI9bSIoKnNldCkgOiAiSXIiKF9zaWcgLSAxKSA6ICJjYyIpOwp9Cgpz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIHNpZ2RlbHNldChzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykK
ewogICAgICAgIF9fYXNtX18oImJ0cmwgJTEsJTAiIDogIj1tIigqc2V0KSA6ICJJciIoX3NpZyAt
IDEpIDogImNjIik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2NvbnN0X3NpZ2lzbWVtYmVy
KHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWcgPSBf
c2lnIC0gMTsKICAgICAgICByZXR1cm4gMSAmIChzZXQtPnNpZ1tzaWcgLyAzMl0gPj4gKHNpZyAl
IDMyKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2dlbl9zaWdpc21lbWJlcihzaWdzZXRf
dCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIGludCByZXQ7CiAgICAgICAgX19hc21fXygiYnRs
ICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6ICI9ciIocmV0KSA6ICJtIigq
c2V0KSwgIklyIihfc2lnLTEpIDogImNjIik7CiAgICAgICAgcmV0dXJuIHJldDsKfQojIDIxMyAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnN0YXRpYyBf
X2lubGluZV9fIGludCBzaWdmaW5kaW53b3JkKHVuc2lnbmVkIGxvbmcgd29yZCkKewogICAgICAg
IF9fYXNtX18oImJzZmwgJTEsJTAiIDogIj1yIih3b3JkKSA6ICJybSIod29yZCkgOiAiY2MiKTsK
ICAgICAgICByZXR1cm4gd29yZDsKfQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2FzbS9zaWdpbmZvLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDIKCgoKdHlwZWRlZiB1bmlvbiBzaWd2YWwgewogICAg
ICAgIGludCBzaXZhbF9pbnQ7CiAgICAgICAgdm9pZCAqc2l2YWxfcHRyOwp9IHNpZ3ZhbF90OwoK
CgoKdHlwZWRlZiBzdHJ1Y3Qgc2lnaW5mbyB7CiAgICAgICAgaW50IHNpX3NpZ25vOwogICAgICAg
IGludCBzaV9lcnJubzsKICAgICAgICBpbnQgc2lfY29kZTsKCiAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgICAgaW50IF9wYWRbKCgxMjgvc2l6ZW9mKGludCkpIC0gMyldOwoKCiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAg
ICAgICAgICAgICAgICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgfSBfa2lsbDsK
CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF90aW1lcjE7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfdGlt
ZXIyOwogICAgICAgICAgICAgICAgfSBfdGltZXI7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ3ZhbF90IF9zaWd2YWw7
CiAgICAgICAgICAgICAgICB9IF9ydDsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgcGlkX3QgX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlk
X3QgX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9zdGF0dXM7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGNsb2NrX3QgX3V0aW1lOwogICAgICAgICAgICAgICAgICAgICAgICBjbG9j
a190IF9zdGltZTsKICAgICAgICAgICAgICAgIH0gX3NpZ2NobGQ7CgoKICAgICAgICAgICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9hZGRyOwogICAgICAgICAg
ICAgICAgfSBfc2lnZmF1bHQ7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBfYmFuZDsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9mZDsK
ICAgICAgICAgICAgICAgIH0gX3NpZ3BvbGw7CiAgICAgICAgfSBfc2lmaWVsZHM7Cn0gc2lnaW5m
b190OwojIDE5OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnaW5m
by5oIgp0eXBlZGVmIHN0cnVjdCBzaWdldmVudCB7CiAgICAgICAgc2lndmFsX3Qgc2lnZXZfdmFs
dWU7CiAgICAgICAgaW50IHNpZ2V2X3NpZ25vOwogICAgICAgIGludCBzaWdldl9ub3RpZnk7CiAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgaW50IF9wYWRbKCg2NC9zaXplb2YoaW50KSkg
LSAzKV07CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAoKl9mdW5jdGlvbikoc2lndmFsX3QpOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpfYXR0cmlidXRlOwogICAgICAgICAgICAgICAgfSBfc2lnZXZfdGhyZWFkOwogICAgICAgIH0g
X3NpZ2V2X3VuOwp9IHNpZ2V2ZW50X3Q7CgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAxCiMgMjE4ICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDIKCnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5
X3NpZ2luZm8oc2lnaW5mb190ICp0bywgc2lnaW5mb190ICpmcm9tKQp7CiAgICAgICAgaWYgKGZy
b20tPnNpX2NvZGUgPCAwKQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKHNp
emVvZihzaWdpbmZvX3QpKSA/IF9fY29uc3RhbnRfbWVtY3B5KCh0byksKGZyb20pLChzaXplb2Yo
c2lnaW5mb190KSkpIDogX19tZW1jcHkoKHRvKSwoZnJvbSksKHNpemVvZihzaWdpbmZvX3QpKSkp
OwogICAgICAgIGVsc2UKCiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMypz
aXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSA/IF9fY29uc3Rh
bnRfbWVtY3B5KCh0byksKGZyb20pLCgzKnNpemVvZihpbnQpICsgc2l6ZW9mKGZyb20tPl9zaWZp
ZWxkcy5fc2lnY2hsZCkpKSA6IF9fbWVtY3B5KCh0byksKGZyb20pLCgzKnNpemVvZihpbnQpICsg
c2l6ZW9mKGZyb20tPl9zaWZpZWxkcy5fc2lnY2hsZCkpKSk7Cn0KCmV4dGVybiBpbnQgY29weV9z
aWdpbmZvX3RvX3VzZXIoc2lnaW5mb190ICp0bywgc2lnaW5mb190ICpmcm9tKTsKIyA2ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAyCgoKCgoKCnN0
cnVjdCBzaWdxdWV1ZSB7CiAgICAgICAgc3RydWN0IHNpZ3F1ZXVlICpuZXh0OwogICAgICAgIHNp
Z2luZm9fdCBpbmZvOwp9OwoKc3RydWN0IHNpZ3BlbmRpbmcgewogICAgICAgIHN0cnVjdCBzaWdx
dWV1ZSAqaGVhZCwgKip0YWlsOwogICAgICAgIHNpZ3NldF90IHNpZ25hbDsKfTsKIyA2OCAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zaWduYWwuaCIKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAxCiMgNjkgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKIyAxMDgg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiCnN0YXRp
YyBpbmxpbmUgdm9pZCBzaWdvcnNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBj
b25zdCBzaWdzZXRfdCAqYikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEs
IGIyLCBiMzsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsr
aSkgeyBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdb
NCppKzJdOyBhMyA9IGEtPnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5z
aWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2ln
WzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyBy
LT5zaWdbNCppKzJdID0gKChhMikgfCAoYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMpIHwgKGIz
KSk7IH0gc3dpdGNoICgoNjQgLyAzMikgJSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBd
OyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCpp
KzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSsw
XSA9ICgoYTApIHwgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyByLT5zaWdb
NCppKzJdID0gKChhMikgfCAoYjIpKTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBd
OyBhMSA9IGEtPnNpZ1s0KmkrMV07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCpp
KzFdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEp
IHwgKGIxKSk7IGJyZWFrOyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdb
NCppKzBdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgYnJlYWs7IH0gfQoKCnN0YXRp
YyBpbmxpbmUgdm9pZCBzaWdhbmRzZXRzKHNpZ3NldF90ICpyLCBjb25zdCBzaWdzZXRfdCAqYSwg
Y29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBhMCwgYTEsIGEyLCBhMywgYjAsIGIx
LCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMyKS80OyAr
K2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2ln
WzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+
c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0KmkrM107IHItPnNp
Z1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsg
ci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgKGIyKSk7IHItPnNpZ1s0KmkrM10gPSAoKGEzKSAmIChi
MykpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2lnWzQqaSsw
XTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+c2lnWzQq
aSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNpZ1s0Kmkr
MF0gPSAoKGEwKSAmIChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgci0+c2ln
WzQqaSsyXSA9ICgoYTIpICYgKGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+c2lnWzQqaSsw
XTsgYTEgPSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQq
aSsxXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGEx
KSAmIChiMSkpOyBicmVhazsgY2FzZSAxOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIwID0gYi0+c2ln
WzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IGJyZWFrOyB9IH0KCgpzdGF0
aWMgaW5saW5lIHZvaWQgc2lnbmFuZHNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICph
LCBjb25zdCBzaWdzZXRfdCAqYikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwg
YjEsIGIyLCBiMzsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7
ICsraSkgeyBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5z
aWdbNCppKzJdOyBhMyA9IGEtPnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBi
LT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+
c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiB+KGIx
KSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIH4oYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMp
ICYgfihiMykpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2ln
WzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+
c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNp
Z1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkp
OyByLT5zaWdbNCppKzJdID0gKChhMikgJiB+KGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+
c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0g
Yi0+c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5zaWdbNCpp
KzFdID0gKChhMSkgJiB+KGIxKSk7IGJyZWFrOyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsg
YjAgPSBiLT5zaWdbNCppKzBdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IGJyZWFr
OyB9IH0KIyAxNDAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2ln
bmFsLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdub3RzZXQoc2lnc2V0X3QgKnNldCkgeyB1bnNp
Z25lZCBsb25nIGk7IGZvciAoaSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IHNldC0+c2ln
WzQqaSswXSA9ICh+KHNldC0+c2lnWzQqaSswXSkpOyBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQt
PnNpZ1s0KmkrMV0pKTsgc2V0LT5zaWdbNCppKzJdID0gKH4oc2V0LT5zaWdbNCppKzJdKSk7IHNl
dC0+c2lnWzQqaSszXSA9ICh+KHNldC0+c2lnWzQqaSszXSkpOyB9IHN3aXRjaCAoKDY0IC8gMzIp
ICUgNCkgeyBjYXNlIDM6IHNldC0+c2lnWzQqaSsyXSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBj
YXNlIDI6IHNldC0+c2lnWzQqaSsxXSA9ICh+KHNldC0+c2lnWzQqaSsxXSkpOyBjYXNlIDE6IHNl
dC0+c2lnWzQqaSswXSA9ICh+KHNldC0+c2lnWzQqaSswXSkpOyB9IH0KCgoKCnN0YXRpYyBpbmxp
bmUgdm9pZCBzaWdlbXB0eXNldChzaWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQg
LyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25z
dGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBf
X2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNp
Z25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKHNpZ3NldF90KSkpKSA6IF9fY29uc3RhbnRfY19tZW1z
ZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihz
aWdzZXRfdCkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkg
PyBfX21lbXNldF9nZW5lcmljKCgoKHNldCkpKSwoKCgwKSkpLCgoKHNpemVvZihzaWdzZXRfdCkp
KSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHNldCkpLCgoMCkpLCgoc2l6ZW9mKHNpZ3NldF90KSkp
KSkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9
IDA7CiAgICAgICAgY2FzZSAxOiBzZXQtPnNpZ1swXSA9IDA7CiAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdmaWxsc2V0KHNpZ3NldF90ICpz
ZXQpCnsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoLTEpID8gKF9fYnVpbHRpbl9jb25zdGFu
dF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgo
KHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihzaWdz
ZXRfdCkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVu
c2lnbmVkIGNoYXIpKC0xKSkpLCgoc2l6ZW9mKHNpZ3NldF90KSkpKSkgOiAoX19idWlsdGluX2Nv
bnN0YW50X3AoKHNpemVvZihzaWdzZXRfdCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoc2V0KSkp
LCgoKC0xKSkpLCgoKHNpemVvZihzaWdzZXRfdCkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHNl
dCkpLCgoLTEpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAtMTsKICAgICAgICBjYXNlIDE6IHNldC0+
c2lnWzBdID0gLTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9Cn0KCmV4dGVybiBj
aGFyICogcmVuZGVyX3NpZ3NldF90KHNpZ3NldF90ICpzZXQsIGNoYXIgKmJ1ZmZlcik7CgoKCnN0
YXRpYyBpbmxpbmUgdm9pZCBzaWdhZGRzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxv
bmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdIHw9IG1hc2s7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCBzaWdkZWxzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewog
ICAgICAgIHNldC0+c2lnWzBdICY9IH5tYXNrOwp9CgpzdGF0aWMgaW5saW5lIGludCBzaWd0ZXN0
c2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICByZXR1
cm4gKHNldC0+c2lnWzBdICYgbWFzaykgIT0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2lu
aXRzZXQoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0LT5z
aWdbMF0gPSBtYXNrOwogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRfY19h
bmRfY291bnRfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVk
IGNoYXIpKDApKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSA6IF9fY29uc3RhbnRf
Y19tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhciko
MCkpKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSA6IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgo
JnNldC0+c2lnWzFdKSkpLCgoKDApKSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkp
IDogX19tZW1zZXRfZ2VuZXJpYygoKCZzZXQtPnNpZ1sxXSkpLCgoMCkpLCgoc2l6ZW9mKGxvbmcp
KigoNjQgLyAzMiktMSkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
Mjogc2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTogOwogICAgICAgIH0KfQoKc3RhdGlj
IGlubGluZSB2b2lkIHNpZ2luaXRzZXRpbnYoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBt
YXNrKQp7CiAgICAgICAgc2V0LT5zaWdbMF0gPSB+bWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAv
IDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0
YW50X3AoLTEpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMy
KS0xKSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwo
KDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoLTEpKSksKChzaXplb2YobG9uZykqKCg2NCAv
IDMyKS0xKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEw
MTAxMDFVTCoodW5zaWduZWQgY2hhcikoLTEpKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0x
KSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEp
KSkgPyBfX21lbXNldF9nZW5lcmljKCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgtMSkpKSwoKChzaXpl
b2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoJnNldC0+c2ln
WzFdKSksKCgtMSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpKTsKICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAtMTsKICAgICAgICBj
YXNlIDE6IDsKICAgICAgICB9Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfc2lncGVuZGlu
ZyhzdHJ1Y3Qgc2lncGVuZGluZyAqc2lnKQp7CiAgICAgICAgc2lnZW1wdHlzZXQoJnNpZy0+c2ln
bmFsKTsKICAgICAgICBzaWctPmhlYWQgPSAoKHZvaWQgKikwKTsKICAgICAgICBzaWctPnRhaWwg
PSAmc2lnLT5oZWFkOwp9CgpleHRlcm4gbG9uZyBkb19zaWdwZW5kaW5nKHZvaWQgKiwgdW5zaWdu
ZWQgbG9uZyk7CiMgMjcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
c2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
c2VjdXJlYml0cy5oIiAxCgoKCgoKZXh0ZXJuIHVuc2lnbmVkIHNlY3VyZWJpdHNfUmFiZTc3NDg0
OwojIDI4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzX3N0cnVj
dC5oIiAxCgoKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAg
ICAgICByd2xvY2tfdCBsb2NrOwogICAgICAgIGludCB1bWFzazsKICAgICAgICBzdHJ1Y3QgZGVu
dHJ5ICogcm9vdCwgKiBwd2QsICogYWx0cm9vdDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKiBy
b290bW50LCAqIHB3ZG1udCwgKiBhbHRyb290bW50Owp9OwojIDIwICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzX3N0cnVjdC5oIgpleHRlcm4gdm9pZCBleGl0X2Zz
X1IxYzllNTk4NihzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIHNldF9mc19hbHRy
b290KHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3Jvb3Qoc3RydWN0IGZz
X3N0cnVjdCAqZnMsCiAgICAgICAgc3RydWN0IHZmc21vdW50ICptbnQsCiAgICAgICAgc3RydWN0
IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqb2xkX3Jvb3Q7CiAgICAg
ICAgc3RydWN0IHZmc21vdW50ICpvbGRfcm9vdG1udDsKICAgICAgICAodm9pZCkoJmZzLT5sb2Nr
KTsKICAgICAgICBvbGRfcm9vdCA9IGZzLT5yb290OwogICAgICAgIG9sZF9yb290bW50ID0gZnMt
PnJvb3RtbnQ7CiAgICAgICAgZnMtPnJvb3RtbnQgPSBtbnRnZXQobW50KTsKICAgICAgICBmcy0+
cm9vdCA9IGRnZXQoZGVudHJ5KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgaWYg
KG9sZF9yb290KSB7CiAgICAgICAgICAgICAgICBkcHV0X1JkNmNkODI4NChvbGRfcm9vdCk7CiAg
ICAgICAgICAgICAgICBtbnRwdXQob2xkX3Jvb3RtbnQpOwogICAgICAgIH0KfQoKCgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3B3ZChzdHJ1Y3QgZnNfc3RydWN0ICpmcywKICAgICAgICBz
dHJ1Y3QgdmZzbW91bnQgKm1udCwKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAg
ICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcHdkOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqb2xk
X3B3ZG1udDsKICAgICAgICAodm9pZCkoJmZzLT5sb2NrKTsKICAgICAgICBvbGRfcHdkID0gZnMt
PnB3ZDsKICAgICAgICBvbGRfcHdkbW50ID0gZnMtPnB3ZG1udDsKICAgICAgICBmcy0+cHdkbW50
ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMtPnB3ZCA9IGRnZXQoZGVudHJ5KTsKICAgICAgICBk
byB7IH0gd2hpbGUoMCk7CiAgICAgICAgaWYgKG9sZF9wd2QpIHsKICAgICAgICAgICAgICAgIGRw
dXRfUmQ2Y2Q4Mjg0KG9sZF9wd2QpOwogICAgICAgICAgICAgICAgbW50cHV0KG9sZF9wd2RtbnQp
OwogICAgICAgIH0KfQoKc3RydWN0IGZzX3N0cnVjdCAqY29weV9mc19zdHJ1Y3Qoc3RydWN0IGZz
X3N0cnVjdCAqb2xkKTsKdm9pZCBwdXRfZnNfc3RydWN0KHN0cnVjdCBmc19zdHJ1Y3QgKmZzKTsK
IyAyOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAy
CgpzdHJ1Y3QgZXhlY19kb21haW47CiMgNTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYXZlbnJ1bltdOwojIDc1
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVy
biBpbnQgbnJfcnVubmluZ19SY2EzYzZkNzgsIG5yX3RocmVhZHM7CmV4dGVybiBpbnQgbGFzdF9w
aWQ7CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg
MQojIDc5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIg
MQojIDgwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BhcmFtLmgi
IDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wYXJhbS5o
IiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wYXJhbS5o
IiAyCiMgODEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcmVzb3Vy
Y2UuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
dGltZS5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9y
ZXNvdXJjZS5oIiAyCiMgMjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvcmVzb3VyY2UuaCIKc3RydWN0IHJ1c2FnZSB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgcnVf
dXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgcnVfc3RpbWU7CiAgICAgICAgbG9uZyBydV9t
YXhyc3M7CiAgICAgICAgbG9uZyBydV9peHJzczsKICAgICAgICBsb25nIHJ1X2lkcnNzOwogICAg
ICAgIGxvbmcgcnVfaXNyc3M7CiAgICAgICAgbG9uZyBydV9taW5mbHQ7CiAgICAgICAgbG9uZyBy
dV9tYWpmbHQ7CiAgICAgICAgbG9uZyBydV9uc3dhcDsKICAgICAgICBsb25nIHJ1X2luYmxvY2s7
CiAgICAgICAgbG9uZyBydV9vdWJsb2NrOwogICAgICAgIGxvbmcgcnVfbXNnc25kOwogICAgICAg
IGxvbmcgcnVfbXNncmN2OwogICAgICAgIGxvbmcgcnVfbnNpZ25hbHM7CiAgICAgICAgbG9uZyBy
dV9udmNzdzsKICAgICAgICBsb25nIHJ1X25pdmNzdzsKfTsKCnN0cnVjdCBybGltaXQgewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9jdXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBybGltX21h
eDsKfTsKIyA1NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9yZXNv
dXJjZS5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Jlc291
cmNlLmgiIDEKIyA1NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9y
ZXNvdXJjZS5oIiAyCiMgODIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvdGltZXIuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L3RpbWVyLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L2xpc3QuaCIgMQojIDYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvdGltZXIuaCIgMgojIDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L3RpbWVyLmgiCnN0cnVjdCB0aW1lcl9saXN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIGxpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBleHBpcmVzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZGF0YTsKICAgICAgICB2b2lkICgqZnVuY3Rpb24pKHVuc2lnbmVkIGxvbmcpOwp9Owp0
eXBlZGVmIHN0cnVjdCB0aW1lcl9saXN0IHRpbWVyX3Q7CgpleHRlcm4gdm9pZCBhZGRfdGltZXJf
UmExOWVhY2Y4KHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpOwpleHRlcm4gaW50IGRlbF90aW1l
cl9SZmM2MmYxNmQoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CiMgNDIgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGltZXIuaCIKaW50IG1vZF90aW1lcl9SMWYx
M2QzMDkoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25lZCBsb25nIGV4cGlyZXMpOwoK
ZXh0ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBpbml0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpCnsKICAgICAgICB0aW1lci0+
bGlzdC5uZXh0ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAqKTApOwp9CgpzdGF0aWMgaW5s
aW5lIGludCB0aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKQp7
CiAgICAgICAgcmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2b2lkICopMCk7Cn0KIyA4MyAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxCiMg
ODUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoj
IDEyNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpz
dHJ1Y3Qgc2NoZWRfcGFyYW0gewogICAgICAgIGludCBzY2hlZF9wcmlvcml0eTsKfTsKCnN0cnVj
dCBjb21wbGV0aW9uOwoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
bGludXgvc3BpbmxvY2suaCIgMQojIDEzNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9zY2hlZC5oIiAyCgoKCgoKCgpleHRlcm4gcndsb2NrX3QgdGFza2xpc3RfbG9j
a19SOTk5YzgwYTI7CmV4dGVybiBzcGlubG9ja190IHJ1bnF1ZXVlX2xvY2s7CmV4dGVybiBzcGlu
bG9ja190IG1tbGlzdF9sb2NrOwoKZXh0ZXJuIHZvaWQgc2NoZWRfaW5pdCh2b2lkKTsKZXh0ZXJu
IHZvaWQgaW5pdF9pZGxlKHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X3N0YXRlKHZvaWQpOwpleHRl
cm4gdm9pZCBjcHVfaW5pdCAodm9pZCk7CmV4dGVybiB2b2lkIHRyYXBfaW5pdCh2b2lkKTsKZXh0
ZXJuIHZvaWQgdXBkYXRlX3Byb2Nlc3NfdGltZXMoaW50IHVzZXIpOwpleHRlcm4gdm9pZCB1cGRh
dGVfb25lX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1bnNpZ25lZCBsb25nIHVzZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN5c3RlbSwgaW50
IGNwdSk7CgoKZXh0ZXJuIHNpZ25lZCBsb25nIHNjaGVkdWxlX3RpbWVvdXRfUjE3ZDU5ZDAxKHNp
Z25lZCBsb25nIHRpbWVvdXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIHNjaGVkdWxlX1I0MjkyMzY0Yyh2b2lkKTsKCmV4dGVy
biBpbnQgc2NoZWR1bGVfdGFza19SMmQ2YzNkMDQoc3RydWN0IHRxX3N0cnVjdCAqdGFzayk7CmV4
dGVybiB2b2lkIGZsdXNoX3NjaGVkdWxlZF90YXNrc19SN2MzMjQyYjQodm9pZCk7CmV4dGVybiBp
bnQgc3RhcnRfY29udGV4dF90aHJlYWQodm9pZCk7CmV4dGVybiBpbnQgY3VycmVudF9pc19rZXZl
bnRkKHZvaWQpOwojIDE3MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9zY2hlZC5oIgpzdHJ1Y3QgZmlsZXNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsK
ICAgICAgICByd2xvY2tfdCBmaWxlX2xvY2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAg
aW50IG1heF9mZHNldDsKICAgICAgICBpbnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAq
KiBmZDsKICAgICAgICBmZF9zZXQgKmNsb3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVu
X2ZkczsKICAgICAgICBmZF9zZXQgY2xvc2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBv
cGVuX2Zkc19pbml0OwogICAgICAgIHN0cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIw
NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdHJ1
Y3QgbW1fc3RydWN0IHsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBtbWFwOwogICAg
ICAgIHJiX3Jvb3RfdCBtbV9yYjsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBtbWFw
X2NhY2hlOwogICAgICAgIHBnZF90ICogcGdkOwogICAgICAgIGF0b21pY190IG1tX3VzZXJzOwog
ICAgICAgIGF0b21pY190IG1tX2NvdW50OwogICAgICAgIGludCBtYXBfY291bnQ7CiAgICAgICAg
c3RydWN0IHJ3X3NlbWFwaG9yZSBtbWFwX3NlbTsKICAgICAgICBzcGlubG9ja190IHBhZ2VfdGFi
bGVfbG9jazsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbWxpc3Q7CgoKCgogICAgICAgIHVu
c2lnbmVkIGxvbmcgc3RhcnRfY29kZSwgZW5kX2NvZGUsIHN0YXJ0X2RhdGEsIGVuZF9kYXRhOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfYnJrLCBicmssIHN0YXJ0X3N0YWNrOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgYXJnX3N0YXJ0LCBhcmdfZW5kLCBlbnZfc3RhcnQsIGVudl9lbmQ7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyByc3MsIHRvdGFsX3ZtLCBsb2NrZWRfdm07CiAgICAgICAgdW5z
aWduZWQgbG9uZyBkZWZfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdm1fbWFzazsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHN3YXBfYWRkcmVzczsKCiAgICAgICAgdW5zaWduZWQgZHVt
cGFibGU6MTsKCgogICAgICAgIG1tX2NvbnRleHRfdCBjb250ZXh0Owp9OwoKZXh0ZXJuIGludCBt
bWxpc3RfbnI7CiMgMjQ3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiCnN0cnVjdCBzaWduYWxfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsK
ICAgICAgICBzdHJ1Y3Qga19zaWdhY3Rpb24gYWN0aW9uWzY0XTsKICAgICAgICBzcGlubG9ja190
IHNpZ2xvY2s7Cn07CiMgMjYzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiCnN0cnVjdCB1c2VyX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgX19jb3Vu
dDsKICAgICAgICBhdG9taWNfdCBwcm9jZXNzZXM7CiAgICAgICAgYXRvbWljX3QgZmlsZXM7CgoK
ICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKm5leHQsICoqcHByZXY7CiAgICAgICAgdWlkX3Qg
dWlkOwp9OwoKCgoKCgpleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0IHJvb3RfdXNlcjsKCgpzdHJ1
Y3QgdGFza19zdHJ1Y3QgewoKCgogICAgICAgIHZvbGF0aWxlIGxvbmcgc3RhdGU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBpbnQgc2lncGVuZGluZzsKICAgICAgICBtbV9z
ZWdtZW50X3QgYWRkcl9saW1pdDsKCgoKICAgICAgICBzdHJ1Y3QgZXhlY19kb21haW4gKmV4ZWNf
ZG9tYWluOwogICAgICAgIHZvbGF0aWxlIGxvbmcgbmVlZF9yZXNjaGVkOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgcHRyYWNlOwoKICAgICAgICBpbnQgbG9ja19kZXB0aDsKCgoKCgoKICAgICAgICBs
b25nIGNvdW50ZXI7CiAgICAgICAgbG9uZyBuaWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcG9s
aWN5OwogICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tOwogICAgICAgIGludCBoYXNfY3B1LCBw
cm9jZXNzb3I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVzX2FsbG93ZWQ7CgoKCgogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgcnVuX2xpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzbGVlcF90
aW1lOwoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHRfdGFzaywgKnByZXZfdGFzazsK
ICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICphY3RpdmVfbW07CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBsb2NhbF9wYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgYWxsb2NhdGlvbl9vcmRlciwg
bnJfbG9jYWxfcGFnZXM7CgoKICAgICAgICBzdHJ1Y3QgbGludXhfYmluZm10ICpiaW5mbXQ7CiAg
ICAgICAgaW50IGV4aXRfY29kZSwgZXhpdF9zaWduYWw7CiAgICAgICAgaW50IHBkZWF0aF9zaWdu
YWw7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgcGVyc29uYWxpdHk7CiAgICAgICAgaW50IGRpZF9l
eGVjOjE7CiAgICAgICAgcGlkX3QgcGlkOwogICAgICAgIHBpZF90IHBncnA7CiAgICAgICAgcGlk
X3QgdHR5X29sZF9wZ3JwOwogICAgICAgIHBpZF90IHNlc3Npb247CiAgICAgICAgcGlkX3QgdGdp
ZDsKCiAgICAgICAgaW50IGxlYWRlcjsKCgoKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAq
cF9vcHB0ciwgKnBfcHB0ciwgKnBfY3B0ciwgKnBfeXNwdHIsICpwX29zcHRyOwogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgdGhyZWFkX2dyb3VwOwoKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0
ICpwaWRoYXNoX25leHQ7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICoqcGlkaGFzaF9wcHJl
djsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9jaGxkZXhpdDsKICAgICAgICBzdHJ1
Y3QgY29tcGxldGlvbiAqdmZvcmtfZG9uZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X3ByaW9y
aXR5OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXRfcmVhbF92YWx1ZSwgaXRfcHJvZl92YWx1ZSwg
aXRfdmlydF92YWx1ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGl0X3JlYWxfaW5jciwgaXRfcHJv
Zl9pbmNyLCBpdF92aXJ0X2luY3I7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgcmVhbF90aW1l
cjsKICAgICAgICBzdHJ1Y3QgdG1zIHRpbWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRf
dGltZTsKICAgICAgICBsb25nIHBlcl9jcHVfdXRpbWVbMV0sIHBlcl9jcHVfc3RpbWVbMV07Cgog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbWluX2ZsdCwgbWFqX2ZsdCwgbnN3YXAsIGNtaW5fZmx0LCBj
bWFqX2ZsdCwgY25zd2FwOwogICAgICAgIGludCBzd2FwcGFibGU6MTsKCiAgICAgICAgdWlkX3Qg
dWlkLGV1aWQsc3VpZCxmc3VpZDsKICAgICAgICBnaWRfdCBnaWQsZWdpZCxzZ2lkLGZzZ2lkOwog
ICAgICAgIGludCBuZ3JvdXBzOwogICAgICAgIGdpZF90IGdyb3Vwc1szMl07CiAgICAgICAga2Vy
bmVsX2NhcF90IGNhcF9lZmZlY3RpdmUsIGNhcF9pbmhlcml0YWJsZSwgY2FwX3Blcm1pdHRlZDsK
ICAgICAgICBpbnQga2VlcF9jYXBhYmlsaXRpZXM6MTsKICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1
Y3QgKnVzZXI7CgogICAgICAgIHN0cnVjdCBybGltaXQgcmxpbVsxMV07CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgdXNlZF9tYXRoOwogICAgICAgIGNoYXIgY29tbVsxNl07CgogICAgICAgIGludCBs
aW5rX2NvdW50OwogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICp0dHk7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGxvY2tzOwoKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnNlbXVuZG87CiAgICAgICAg
c3RydWN0IHNlbV9xdWV1ZSAqc2Vtc2xlZXBpbmc7CgogICAgICAgIHN0cnVjdCB0aHJlYWRfc3Ry
dWN0IHRocmVhZDsKCiAgICAgICAgc3RydWN0IGZzX3N0cnVjdCAqZnM7CgogICAgICAgIHN0cnVj
dCBmaWxlc19zdHJ1Y3QgKmZpbGVzOwoKICAgICAgICBzcGlubG9ja190IHNpZ21hc2tfbG9jazsK
ICAgICAgICBzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqc2lnOwoKICAgICAgICBzaWdzZXRfdCBibG9j
a2VkOwogICAgICAgIHN0cnVjdCBzaWdwZW5kaW5nIHBlbmRpbmc7CgogICAgICAgIHVuc2lnbmVk
IGxvbmcgc2FzX3NzX3NwOwogICAgICAgIHNpemVfdCBzYXNfc3Nfc2l6ZTsKICAgICAgICBpbnQg
KCpub3RpZmllcikodm9pZCAqcHJpdik7CiAgICAgICAgdm9pZCAqbm90aWZpZXJfZGF0YTsKICAg
ICAgICBzaWdzZXRfdCAqbm90aWZpZXJfbWFzazsKCgogICAgICAgIHUzMiBwYXJlbnRfZXhlY19p
ZDsKICAgICAgICB1MzIgc2VsZl9leGVjX2lkOwoKICAgICAgICBzcGlubG9ja190IGFsbG9jX2xv
Y2s7Cn07CiMgNDQ0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiCmV4dGVybiBzdHJ1Y3QgZXhlY19kb21haW4gZGVmYXVsdF9leGVjX2RvbWFpbjsKIyA0
OTYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKdW5p
b24gdGFza191bmlvbiB7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0IHRhc2s7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzdGFja1syMDQ4KnNpemVvZihsb25nKS9zaXplb2YobG9uZyldOwp9OwoK
ZXh0ZXJuIHVuaW9uIHRhc2tfdW5pb24gaW5pdF90YXNrX3VuaW9uX1I4MjhhYjkzNzsKCmV4dGVy
biBzdHJ1Y3QgbW1fc3RydWN0IGluaXRfbW1fUjZmY2JmMGU4OwpleHRlcm4gc3RydWN0IHRhc2tf
c3RydWN0ICppbml0X3Rhc2tzWzFdOwoKCgpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpwaWRo
YXNoX1JhYmJjNTdlZlsoNDA5NiA+PiAyKV07CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBoYXNoX3Bp
ZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipo
dGFibGUgPSAmcGlkaGFzaF9SYWJiYzU3ZWZbKCgoKHAtPnBpZCkgPj4gOCkgXiAocC0+cGlkKSkg
JiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAgICBpZigocC0+cGlkaGFzaF9uZXh0ID0gKmh0
YWJsZSkgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAoKmh0YWJsZSktPnBpZGhhc2hf
cHByZXYgPSAmcC0+cGlkaGFzaF9uZXh0OwogICAgICAgICpodGFibGUgPSBwOwogICAgICAgIHAt
PnBpZGhhc2hfcHByZXYgPSBodGFibGU7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhhc2hfcGlk
KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIGlmKHAtPnBpZGhhc2hfbmV4dCkKICAg
ICAgICAgICAgICAgIHAtPnBpZGhhc2hfbmV4dC0+cGlkaGFzaF9wcHJldiA9IHAtPnBpZGhhc2hf
cHByZXY7CiAgICAgICAgKnAtPnBpZGhhc2hfcHByZXYgPSBwLT5waWRoYXNoX25leHQ7Cn0KCnN0
YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX3Rhc2tfYnlfcGlkKGludCBwaWQp
CnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsICoqaHRhYmxlID0gJnBpZGhhc2hfUmFi
YmM1N2VmWygoKChwaWQpID4+IDgpIF4gKHBpZCkpICYgKCg0MDk2ID4+IDIpIC0gMSkpXTsKCiAg
ICAgICAgZm9yKHAgPSAqaHRhYmxlOyBwICYmIHAtPnBpZCAhPSBwaWQ7IHAgPSBwLT5waWRoYXNo
X25leHQpCiAgICAgICAgICAgICAgICA7CgogICAgICAgIHJldHVybiBwOwp9CgoKZXh0ZXJuIHN0
cnVjdCB1c2VyX3N0cnVjdCAqIGFsbG9jX3VpZCh1aWRfdCk7CmV4dGVybiB2b2lkIGZyZWVfdWlk
KHN0cnVjdCB1c2VyX3N0cnVjdCAqKTsKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9hc20vY3VycmVudC5oIiAxCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKCnN0YXRpYyBp
bmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICogZ2V0X2N1cnJlbnQodm9pZCkKewogICAgICAgIHN0
cnVjdCB0YXNrX3N0cnVjdCAqY3VycmVudDsKICAgICAgICBfX2FzbV9fKCJhbmRsICUlZXNwLCUw
OyAiOiI9ciIgKGN1cnJlbnQpIDogIjAiICh+ODE5MVVMKSk7CiAgICAgICAgcmV0dXJuIGN1cnJl
bnQ7CiB9CiMgNTQ0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiIDIKCmV4dGVybiB1bnNpZ25lZCBsb25nIHZvbGF0aWxlIGppZmZpZXNfUjBkYTAyZDY3
OwpleHRlcm4gdW5zaWduZWQgbG9uZyBpdGltZXJfdGlja3M7CmV4dGVybiB1bnNpZ25lZCBsb25n
IGl0aW1lcl9uZXh0OwpleHRlcm4gc3RydWN0IHRpbWV2YWwgeHRpbWVfUmYzMWRkZjgzOwpleHRl
cm4gdm9pZCBkb190aW1lcihzdHJ1Y3QgcHRfcmVncyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQg
KiBwcm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9sZW47CmV4dGVybiB1bnNp
Z25lZCBsb25nIHByb2Zfc2hpZnQ7CgoKCmV4dGVybiB2b2lkIF9fd2FrZV91cF9SYjc2YzVmMWUo
d2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHVuc2lnbmVkIGludCBtb2RlLCBpbnQgbnIpIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX193YWtlX3VwX3N5bmNfUjAyMzFkOWVh
KHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHNsZWVwX29uX1JlMDY3OWEzZih3YWl0
X3F1ZXVlX2hlYWRfdCAqcSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gbG9u
ZyBzbGVlcF9vbl90aW1lb3V0X1I3NWM4ZTM5NCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgc2lnbmVk
IGxvbmcgdGltZW91dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKZXh0ZXJuIHZvaWQg
aW50ZXJydXB0aWJsZV9zbGVlcF9vbl9SN2U0Zjg5YzMod2FpdF9xdWV1ZV9oZWFkX3QgKnEpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGxvbmcgaW50ZXJydXB0aWJsZV9zbGVl
cF9vbl90aW1lb3V0X1I0MDdhMjhkOCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgc2lnbmVkIGxvbmcg
dGltZW91dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKZXh0ZXJuIGludCB3YWtlX3Vw
X3Byb2Nlc3NfUjY4MzZlNzVkKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHRzaykgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpOwojIDU3NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9zY2hlZC5oIgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3dh
aXQ0KHBpZF90IHBpZCx1bnNpZ25lZCBpbnQgKiBzdGF0X2FkZHIsIGludCBvcHRpb25zLCBzdHJ1
Y3QgcnVzYWdlICogcnUpOwoKZXh0ZXJuIGludCBpbl9ncm91cF9wX1JjM2NmMTEyOChnaWRfdCk7
CmV4dGVybiBpbnQgaW5fZWdyb3VwX3BfUmQ4YTJhYjk1KGdpZF90KTsKCmV4dGVybiB2b2lkIHBy
b2NfY2FjaGVzX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbHNfUmViZjY5Nzdl
KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2lnbmFsX2hhbmRsZXJz
KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBkZXF1ZXVlX3NpZ25hbF9SOGUzOTMx
OWIoc2lnc2V0X3QgKiwgc2lnaW5mb190ICopOwpleHRlcm4gdm9pZCBibG9ja19hbGxfc2lnbmFs
c19SNGIzNGZiZjUoaW50ICgqbm90aWZpZXIpKHZvaWQgKnByaXYpLCB2b2lkICpwcml2LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdzZXRfdCAqbWFzayk7CmV4dGVybiB2b2lkIHVu
YmxvY2tfYWxsX3NpZ25hbHNfUjBhMjQ4N2UwKHZvaWQpOwpleHRlcm4gaW50IHNlbmRfc2lnX2lu
Zm9fUjJiZmRkMDAzKGludCwgc3RydWN0IHNpZ2luZm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICop
OwpleHRlcm4gaW50IGZvcmNlX3NpZ19pbmZvX1IzZTk1MDk0ZihpbnQsIHN0cnVjdCBzaWdpbmZv
ICosIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBraWxsX3BnX2luZm9fUjhlMmQ0
OTkwKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRlcm4gaW50IGtpbGxfc2xfaW5m
b19SMTk4OGQyMWUoaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVybiBpbnQga2ls
bF9wcm9jX2luZm9fUmZiNjhiMjY0KGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRl
cm4gdm9pZCBub3RpZnlfcGFyZW50X1IzNjExYjA3YShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50
KTsKZXh0ZXJuIHZvaWQgZG9fbm90aWZ5X3BhcmVudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50
KTsKZXh0ZXJuIHZvaWQgZm9yY2Vfc2lnX1IxNDJiNDMwNihpbnQsIHN0cnVjdCB0YXNrX3N0cnVj
dCAqKTsKZXh0ZXJuIGludCBzZW5kX3NpZ19SYzBiZmVjMmYoaW50LCBzdHJ1Y3QgdGFza19zdHJ1
Y3QgKiwgaW50KTsKZXh0ZXJuIGludCBraWxsX3BnX1IzOGYyOTcxOShwaWRfdCwgaW50LCBpbnQp
OwpleHRlcm4gaW50IGtpbGxfc2xfUmZiYTEyZmQwKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBp
bnQga2lsbF9wcm9jX1I5MzJkYTY3ZShwaWRfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IGRvX3Np
Z2FjdGlvbihpbnQsIGNvbnN0IHN0cnVjdCBrX3NpZ2FjdGlvbiAqLCBzdHJ1Y3Qga19zaWdhY3Rp
b24gKik7CmV4dGVybiBpbnQgZG9fc2lnYWx0c3RhY2soY29uc3Qgc3RhY2tfdCAqLCBzdGFja190
ICosIHVuc2lnbmVkIGxvbmcpOwoKc3RhdGljIGlubGluZSBpbnQgc2lnbmFsX3BlbmRpbmcoc3Ry
dWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgcmV0dXJuIChwLT5zaWdwZW5kaW5nICE9IDAp
Owp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgaGFzX3BlbmRpbmdfc2lnbmFscyhzaWdzZXRfdCAq
c2lnbmFsLCBzaWdzZXRfdCAqYmxvY2tlZCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVhZHk7
CiAgICAgICAgbG9uZyBpOwoKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAoNjQgLyAzMiksIHJlYWR5ID0gMDsgLS1p
ID49IDAgOykKICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbaV0g
Jn4gYmxvY2tlZC0+c2lnW2ldOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2Ug
NDogcmVhZHkgPSBzaWduYWwtPnNpZ1szXSAmfiBibG9ja2VkLT5zaWdbM107CiAgICAgICAgICAg
ICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1syXSAmfiBibG9ja2VkLT5zaWdbMl07CiAgICAgICAg
ICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1sxXSAmfiBibG9ja2VkLT5zaWdbMV07CiAgICAg
ICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1swXSAmfiBibG9ja2VkLT5zaWdbMF07CiAg
ICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOiByZWFkeSA9IHNpZ25hbC0+c2ln
WzFdICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+
c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlIDE6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwogICAg
ICAgIH0KICAgICAgICByZXR1cm4gcmVhZHkgIT0gMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCByZWNhbGNfc2lncGVuZGluZ19SNzM4MDFkZmUoc3RydWN0IHRhc2tfc3RydWN0ICp0KQp7CiAg
ICAgICAgdC0+c2lncGVuZGluZyA9IGhhc19wZW5kaW5nX3NpZ25hbHMoJnQtPnBlbmRpbmcuc2ln
bmFsLCAmdC0+YmxvY2tlZCk7Cn0KCgoKc3RhdGljIGlubGluZSBpbnQgb25fc2lnX3N0YWNrKHVu
c2lnbmVkIGxvbmcgc3ApCnsKICAgICAgICByZXR1cm4gKHNwIC0gZ2V0X2N1cnJlbnQoKS0+c2Fz
X3NzX3NwIDwgZ2V0X2N1cnJlbnQoKS0+c2FzX3NzX3NpemUpOwp9CgpzdGF0aWMgaW5saW5lIGlu
dCBzYXNfc3NfZmxhZ3ModW5zaWduZWQgbG9uZyBzcCkKewogICAgICAgIHJldHVybiAoZ2V0X2N1
cnJlbnQoKS0+c2FzX3NzX3NpemUgPT0gMCA/IDIKICAgICAgICAgICAgICAgIDogb25fc2lnX3N0
YWNrKHNwKSA/IDEgOiAwKTsKfQoKZXh0ZXJuIGludCByZXF1ZXN0X2lycV9SMGM2MGYyZTAodW5z
aWduZWQgaW50LAogICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpoYW5kbGVyKShpbnQsIHZv
aWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZywgY29uc3QgY2hhciAqLCB2b2lkICopOwpleHRlcm4gdm9pZCBmcmVlX2lycV9SZjIwZGFi
ZDgodW5zaWduZWQgaW50LCB2b2lkICopOwojIDY4MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5lIGludCBzdXNlcih2b2lkKQp7
CiAgICAgICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAm
IDB4MDAwMDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0c19SYWJlNzc0ODQgKSAmJiBnZXRf
Y3VycmVudCgpLT5ldWlkID09IDApIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZs
YWdzIHw9IDB4MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAg
ICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGZzdXNlcih2b2lkKQp7CiAgICAg
ICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAmIDB4MDAw
MDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0c19SYWJlNzc0ODQgKSAmJiBnZXRfY3VycmVu
dCgpLT5mc3VpZCA9PSAwKSB7CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5mbGFncyB8
PSAweDAwMDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAg
IHJldHVybiAwOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIGludCBjYXBhYmxlKGludCBjYXApCnsK
CiAgICAgICAgaWYgKCgoZ2V0X2N1cnJlbnQoKS0+Y2FwX2VmZmVjdGl2ZSkgJiAoMSA8PCAoY2Fw
KSkpKQoKCgogICAgICAgIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZsYWdzIHw9
IDB4MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAg
cmV0dXJuIDA7Cn0KCgoKCmV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICogbW1fYWxsb2Modm9pZCk7
CgpleHRlcm4gc3RydWN0IG1tX3N0cnVjdCAqIHN0YXJ0X2xhenlfdGxiKHZvaWQpOwpleHRlcm4g
dm9pZCBlbmRfbGF6eV90bGIoc3RydWN0IG1tX3N0cnVjdCAqbW0pOwoKCmV4dGVybiBpbmxpbmUg
dm9pZCBfX21tZHJvcChzdHJ1Y3QgbW1fc3RydWN0ICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKc3RhdGljIGlubGluZSB2b2lkIG1tZHJvcChzdHJ1Y3QgbW1fc3RydWN0ICogbW0pCnsK
ICAgICAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmbW0tPm1tX2NvdW50KSkKICAgICAgICAg
ICAgICAgIF9fbW1kcm9wKG1tKTsKfQoKCmV4dGVybiB2b2lkIG1tcHV0KHN0cnVjdCBtbV9zdHJ1
Y3QgKik7CgpleHRlcm4gdm9pZCBtbV9yZWxlYXNlKHZvaWQpOwoKCgoKZXh0ZXJuIHN0cnVjdCBm
aWxlICoqIGFsbG9jX2ZkX2FycmF5KGludCk7CmV4dGVybiBpbnQgZXhwYW5kX2ZkX2FycmF5KHN0
cnVjdCBmaWxlc19zdHJ1Y3QgKiwgaW50IG5yKTsKZXh0ZXJuIHZvaWQgZnJlZV9mZF9hcnJheShz
dHJ1Y3QgZmlsZSAqKiwgaW50KTsKCmV4dGVybiBmZF9zZXQgKmFsbG9jX2Zkc2V0KGludCk7CmV4
dGVybiBpbnQgZXhwYW5kX2Zkc2V0KHN0cnVjdCBmaWxlc19zdHJ1Y3QgKiwgaW50IG5yKTsKZXh0
ZXJuIHZvaWQgZnJlZV9mZHNldChmZF9zZXQgKiwgaW50KTsKCmV4dGVybiBpbnQgY29weV90aHJl
YWQoaW50LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBzdHJ1
Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiB2b2lkIGZsdXNoX3Ro
cmVhZCh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhpdF90aHJlYWQodm9pZCk7CgpleHRlcm4gdm9pZCBl
eGl0X21tX1JkNDViYmUyOShzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGV4aXRf
ZmlsZXNfUjljYzdlM2Q0KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZXhpdF9z
aWdoYW5kX1I1MGE5NTgzNChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CgpleHRlcm4gdm9pZCByZXBh
cmVudF90b19pbml0X1JlYzYxNThkMCh2b2lkKTsKZXh0ZXJuIHZvaWQgZGFlbW9uaXplX1JkNjZh
MzU0YSh2b2lkKTsKCmV4dGVybiBpbnQgZG9fZXhlY3ZlX1I5YzYyMDk4ZihjaGFyICosIGNoYXIg
KiosIGNoYXIgKiosIHN0cnVjdCBwdF9yZWdzICopOwpleHRlcm4gaW50IGRvX2ZvcmsodW5zaWdu
ZWQgbG9uZywgdW5zaWduZWQgbG9uZywgc3RydWN0IHB0X3JlZ3MgKiwgdW5zaWduZWQgbG9uZyk7
CgpleHRlcm4gdm9pZCBhZGRfd2FpdF9xdWV1ZV9SMWUzMTU2NGUod2FpdF9xdWV1ZV9oZWFkX3Qg
KnEsIHdhaXRfcXVldWVfdCAqIHdhaXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0
ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWVfZXhjbHVzaXZlX1I1YmNjOWQ1MSh3YWl0X3F1ZXVlX2hl
YWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwpleHRlcm4gdm9pZCByZW1vdmVfd2FpdF9xdWV1ZV9SNjM2OGQ4Mzkod2FpdF9xdWV1ZV9oZWFk
X3QgKnEsIHdhaXRfcXVldWVfdCAqIHdhaXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsK
IyA4NDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIK
c3RhdGljIGlubGluZSB2b2lkIGRlbF9mcm9tX3J1bnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVjdCAq
IHApCnsKICAgICAgICBucl9ydW5uaW5nX1JjYTNjNmQ3OC0tOwogICAgICAgIHAtPnNsZWVwX3Rp
bWUgPSBqaWZmaWVzX1IwZGEwMmQ2NzsKICAgICAgICBsaXN0X2RlbCgmcC0+cnVuX2xpc3QpOwog
ICAgICAgIHAtPnJ1bl9saXN0Lm5leHQgPSAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBp
bnQgdGFza19vbl9ydW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1
cm4gKHAtPnJ1bl9saXN0Lm5leHQgIT0gKCh2b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIHZv
aWQgdW5oYXNoX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgaWYgKHRh
c2tfb25fcnVucXVldWUocCkpIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIi
KTsKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7
ICh2b2lkKSgmdGFza2xpc3RfbG9ja19SOTk5YzgwYTIpOyB9IHdoaWxlICgwKTsKICAgICAgICBu
cl90aHJlYWRzLS07CiAgICAgICAgdW5oYXNoX3BpZChwKTsKICAgICAgICBkbyB7IChwKS0+bmV4
dF90YXNrLT5wcmV2X3Rhc2sgPSAocCktPnByZXZfdGFzazsgKHApLT5wcmV2X3Rhc2stPm5leHRf
dGFzayA9IChwKS0+bmV4dF90YXNrOyBpZiAoKHApLT5wX29zcHRyKSAocCktPnBfb3NwdHItPnBf
eXNwdHIgPSAocCktPnBfeXNwdHI7IGlmICgocCktPnBfeXNwdHIpIChwKS0+cF95c3B0ci0+cF9v
c3B0ciA9IChwKS0+cF9vc3B0cjsgZWxzZSAocCktPnBfcHB0ci0+cF9jcHRyID0gKHApLT5wX29z
cHRyOyB9IHdoaWxlICgwKTsKICAgICAgICBsaXN0X2RlbCgmcC0+dGhyZWFkX2dyb3VwKTsKICAg
ICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDog
OiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza19sb2Nr
KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgICh2b2lkKSgmcC0+YWxsb2NfbG9jayk7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3VubG9jayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAp
CnsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBkX3Bh
dGgoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgdmZzbW91bnQgKnZmc21udCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIGludCBidWZsZW4pCnsKICAgICAg
ICBjaGFyICpyZXM7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpyb290bW50OwogICAgICAgIHN0
cnVjdCBkZW50cnkgKnJvb3Q7CiAgICAgICAgKHZvaWQpKCZnZXRfY3VycmVudCgpLT5mcy0+bG9j
ayk7CiAgICAgICAgcm9vdG1udCA9IG1udGdldChnZXRfY3VycmVudCgpLT5mcy0+cm9vdG1udCk7
CiAgICAgICAgcm9vdCA9IGRnZXQoZ2V0X2N1cnJlbnQoKS0+ZnMtPnJvb3QpOwogICAgICAgIGRv
IHsgfSB3aGlsZSgwKTsKICAgICAgICAodm9pZCkoJmRjYWNoZV9sb2NrX1I3MzQ2M2NlZik7CiAg
ICAgICAgcmVzID0gX19kX3BhdGhfUjZjZjNkOTQ4KGRlbnRyeSwgdmZzbW50LCByb290LCByb290
bW50LCBidWYsIGJ1Zmxlbik7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGRwdXRf
UmQ2Y2Q4Mjg0KHJvb3QpOwogICAgICAgIG1udHB1dChyb290bW50KTsKICAgICAgICByZXR1cm4g
cmVzOwp9CiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5o
IiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9lcnJuby5o
IiAxCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIiAy
CgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcu
aCIgMQojIDEwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21tLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N0cmluZy5o
IiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW0uaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbGlzdC5oIiAx
CiMgMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW0uaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW16b25lLmgiIDEK
CgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZp
Zy5oIiAxCiMgOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbXpv
bmUuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3Bp
bmxvY2suaCIgMQojIDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
bW16b25lLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2xpc3QuaCIgMQojIDEwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L21tem9uZS5oIiAyCiMgMjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvbW16b25lLmgiCnR5cGVkZWYgc3RydWN0IGZyZWVfYXJlYV9zdHJ1Y3QgewogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgKm1hcDsKfSBm
cmVlX2FyZWFfdDsKCnN0cnVjdCBwZ2xpc3RfZGF0YTsKIyAzNiAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRlZiBzdHJ1Y3Qgem9uZV9zdHJ1
Y3QgewoKCgogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIGZy
ZWVfcGFnZXNfUjk5NDFjY2I4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGFnZXNfbWluLCBwYWdl
c19sb3csIHBhZ2VzX2hpZ2g7CiAgICAgICAgaW50IG5lZWRfYmFsYW5jZTsKCgoKCiAgICAgICAg
ZnJlZV9hcmVhX3QgZnJlZV9hcmVhWzEwXTsKCgoKCiAgICAgICAgc3RydWN0IHBnbGlzdF9kYXRh
ICp6b25lX3BnZGF0OwogICAgICAgIHN0cnVjdCBwYWdlICp6b25lX21lbV9tYXA7CiAgICAgICAg
dW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X3BhZGRyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgem9u
ZV9zdGFydF9tYXBucjsKCgoKCiAgICAgICAgY2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNpemU7Cn0gem9uZV90OwojIDgxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L21tem9uZS5oIgp0eXBlZGVmIHN0cnVjdCB6b25lbGlzdF9zdHJ1Y3QgewogICAg
ICAgIHpvbmVfdCAqIHpvbmVzIFszICsxXTsKfSB6b25lbGlzdF90OwojIDk4ICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdHJ1Y3QgYm9vdG1lbV9k
YXRhOwp0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0YSB7CiAgICAgICAgem9uZV90IG5vZGVfem9u
ZXNbM107CiAgICAgICAgem9uZWxpc3RfdCBub2RlX3pvbmVsaXN0c1sweDBmICsxXTsKICAgICAg
ICBpbnQgbnJfem9uZXM7CiAgICAgICAgc3RydWN0IHBhZ2UgKm5vZGVfbWVtX21hcDsKICAgICAg
ICB1bnNpZ25lZCBsb25nICp2YWxpZF9hZGRyX2JpdG1hcDsKICAgICAgICBzdHJ1Y3QgYm9vdG1l
bV9kYXRhICpiZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIG5vZGVfc3RhcnRfcGFkZHI7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0X21hcG5yOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgbm9kZV9zaXplOwogICAgICAgIGludCBub2RlX2lkOwogICAgICAgIHN0cnVjdCBwZ2xpc3Rf
ZGF0YSAqbm9kZV9uZXh0Owp9IHBnX2RhdGFfdDsKCmV4dGVybiBpbnQgbnVtbm9kZXM7CmV4dGVy
biBwZ19kYXRhX3QgKnBnZGF0X2xpc3Q7CiMgMTIzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdHJ1Y3QgcGFnZTsKZXh0ZXJuIHZvaWQgc2hvd19m
cmVlX2FyZWFzX2NvcmUocGdfZGF0YV90ICpwZ2RhdCk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9p
bml0X2NvcmUoaW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKipnbWFwLAog
IHVuc2lnbmVkIGxvbmcgKnpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgcGFkZHIsIHVuc2lnbmVk
IGxvbmcgKnpob2xlc19zaXplLAogIHN0cnVjdCBwYWdlICpwbWFwKTsKCmV4dGVybiBwZ19kYXRh
X3QgY29udGlnX3BhZ2VfZGF0YTsKIyAxMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9zd2FwLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2xpbnV4L3N3YXAuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvc3dhcC5oIiAyCiMgMjUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvbGludXgvc3dhcC5oIgp1bmlvbiBzd2FwX2hlYWRlciB7CiAgICAgICAgc3RydWN0CiAgICAg
ICAgewogICAgICAgICAgICAgICAgY2hhciByZXNlcnZlZFsoMVVMIDw8IDEyKSAtIDEwXTsKICAg
ICAgICAgICAgICAgIGNoYXIgbWFnaWNbMTBdOwogICAgICAgIH0gbWFnaWM7CiAgICAgICAgc3Ry
dWN0CiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciBib290Yml0c1sxMDI0XTsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwogICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGxhc3RfcGFnZTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9iYWRwYWdlczsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWRkaW5nWzEyNV07CiAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgYmFkcGFnZXNbMV07CiAgICAgICAgfSBpbmZvOwp9OwojIDUxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIKIyAxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDUyICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIgMgojIDY0ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIKc3RydWN0IHN3YXBfaW5m
b19zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBrZGV2X3Qgc3dh
cF9kZXZpY2U7CiAgICAgICAgc3BpbmxvY2tfdCBzZGV2X2xvY2s7CiAgICAgICAgc3RydWN0IGRl
bnRyeSAqIHN3YXBfZmlsZTsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKnN3YXBfdmZzbW50Owog
ICAgICAgIHVuc2lnbmVkIHNob3J0ICogc3dhcF9tYXA7CiAgICAgICAgdW5zaWduZWQgaW50IGxv
d2VzdF9iaXQ7CiAgICAgICAgdW5zaWduZWQgaW50IGhpZ2hlc3RfYml0OwogICAgICAgIHVuc2ln
bmVkIGludCBjbHVzdGVyX25leHQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNsdXN0ZXJfbnI7CiAg
ICAgICAgaW50IHByaW87CiAgICAgICAgaW50IHBhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
bWF4OwogICAgICAgIGludCBuZXh0Owp9OwoKZXh0ZXJuIGludCBucl9zd2FwX3BhZ2VzOwpleHRl
cm4gdW5zaWduZWQgaW50IG5yX2ZyZWVfcGFnZXModm9pZCk7CmV4dGVybiB1bnNpZ25lZCBpbnQg
bnJfZnJlZV9idWZmZXJfcGFnZXModm9pZCk7CmV4dGVybiBpbnQgbnJfYWN0aXZlX3BhZ2VzOwpl
eHRlcm4gaW50IG5yX2luYWN0aXZlX3BhZ2VzOwpleHRlcm4gYXRvbWljX3QgbnJfYXN5bmNfcGFn
ZXNfUmE4MGE1ZGYyOwpleHRlcm4gYXRvbWljX3QgcGFnZV9jYWNoZV9zaXplOwpleHRlcm4gYXRv
bWljX3QgYnVmZmVybWVtX3BhZ2VzOwpleHRlcm4gc3BpbmxvY2tfdCBwYWdlY2FjaGVfbG9jazsK
ZXh0ZXJuIHZvaWQgX19yZW1vdmVfaW5vZGVfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKCgpzdHJ1Y3Qg
dGFza19zdHJ1Y3Q7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3RydWN0IHN5c2luZm87CgpzdHJ1
Y3Qgem9uZV90OwoKCmV4dGVybiB2b2lkIGxydV9jYWNoZV9hZGQoc3RydWN0IHBhZ2UgKikgX19h
dHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBfX2xydV9jYWNoZV9kZWwoc3Ry
dWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBscnVf
Y2FjaGVfZGVsKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4
dGVybiB2b2lkIGRlYWN0aXZhdGVfcGFnZV9SNGRlOTRlMWUoc3RydWN0IHBhZ2UgKikgX19hdHRy
aWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBkZWFjdGl2YXRlX3BhZ2Vfbm9sb2Nr
KHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQg
YWN0aXZhdGVfcGFnZShzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CmV4dGVybiB2b2lkIGFjdGl2YXRlX3BhZ2Vfbm9sb2NrKHN0cnVjdCBwYWdlICopIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIHN3YXBfc2V0dXAodm9pZCk7CgoKZXh0
ZXJuIHdhaXRfcXVldWVfaGVhZF90IGtzd2FwZF93YWl0OwpleHRlcm4gaW50IHRyeV90b19mcmVl
X3BhZ2VzKHpvbmVfdCAqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCkgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpOwoKCmV4dGVybiB2b2lkIHJ3X3N3YXBfcGFnZShpbnQsIHN0cnVjdCBw
YWdlICopOwpleHRlcm4gdm9pZCByd19zd2FwX3BhZ2Vfbm9sb2NrKGludCwgc3dwX2VudHJ5X3Qs
IGNoYXIgKik7CgoKCgpleHRlcm4gdm9pZCBzaG93X3N3YXBfY2FjaGVfaW5mbyh2b2lkKTsKZXh0
ZXJuIHZvaWQgYWRkX3RvX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKiwgc3dwX2VudHJ5X3QpOwpl
eHRlcm4gdm9pZCBfX2RlbGV0ZV9mcm9tX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBhZ2UpOwpl
eHRlcm4gdm9pZCBkZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0
ZXJuIHZvaWQgZnJlZV9wYWdlX2FuZF9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0
ZXJuIHN0cnVjdCBwYWdlICogbG9va3VwX3N3YXBfY2FjaGUoc3dwX2VudHJ5X3QpOwpleHRlcm4g
c3RydWN0IHBhZ2UgKiByZWFkX3N3YXBfY2FjaGVfYXN5bmMoc3dwX2VudHJ5X3QpOwoKCmV4dGVy
biB2b2lkIG9vbV9raWxsKHZvaWQpOwoKCmV4dGVybiB1bnNpZ25lZCBpbnQgbnJfc3dhcGZpbGVz
OwpleHRlcm4gc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3Qgc3dhcF9pbmZvW107CmV4dGVybiBpbnQg
aXNfc3dhcF9wYXJ0aXRpb24oa2Rldl90KTsKZXh0ZXJuIHZvaWQgc2lfc3dhcGluZm8oc3RydWN0
IHN5c2luZm8gKik7CmV4dGVybiBzd3BfZW50cnlfdCBnZXRfc3dhcF9wYWdlKHZvaWQpOwpleHRl
cm4gdm9pZCBnZXRfc3dhcGhhbmRsZV9pbmZvKHN3cF9lbnRyeV90LCB1bnNpZ25lZCBsb25nICos
IGtkZXZfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IGlub2RlICoqKTsKZXh0ZXJuIGludCBzd2FwX2R1cGxpY2F0ZShzd3BfZW50cnlfdCk7CmV4dGVy
biBpbnQgc3dhcF9jb3VudChzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIGludCB2YWxpZF9zd2FwaGFu
ZGxlcyhzd3BfZW50cnlfdCwgdW5zaWduZWQgbG9uZyAqKTsKZXh0ZXJuIHZvaWQgc3dhcF9mcmVl
KHN3cF9lbnRyeV90KTsKc3RydWN0IHN3YXBfbGlzdF90IHsKICAgICAgICBpbnQgaGVhZDsKICAg
ICAgICBpbnQgbmV4dDsKfTsKZXh0ZXJuIHN0cnVjdCBzd2FwX2xpc3RfdCBzd2FwX2xpc3Q7CiBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc3dhcG9mZihjb25zdCBjaGFyICop
OwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3N3YXBvbihjb25zdCBjaGFy
ICosIGludCk7CgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBzd2FwX2NhY2hlX2FkZF90b3RhbDsK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc3dhcF9jYWNoZV9kZWxfdG90YWw7CmV4dGVybiB1bnNpZ25l
ZCBsb25nIHN3YXBfY2FjaGVfZmluZF90b3RhbDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc3dhcF9j
YWNoZV9maW5kX3N1Y2Nlc3M7CgoKZXh0ZXJuIHNwaW5sb2NrX3QgcGFnZW1hcF9scnVfbG9jazsK
CmV4dGVybiB2b2lkIG1hcmtfcGFnZV9hY2Nlc3NlZChzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDMpKSk7CiMgMjI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L3N3YXAuaCIKZXh0ZXJuIHNwaW5sb2NrX3Qgc3dhcGxvY2s7CgoKCgoKCmV4dGVy
biB2b2lkIHNobWVtX3VudXNlKHN3cF9lbnRyeV90IGVudHJ5LCBzdHJ1Y3QgcGFnZSAqcGFnZSk7
CiMgMTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW0uaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiIDEK
IyAxNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIiAyCgpl
eHRlcm4gdW5zaWduZWQgbG9uZyBtYXhfbWFwbnJfUjAxMTM5ZmZjOwpleHRlcm4gdW5zaWduZWQg
bG9uZyBudW1fcGh5c3BhZ2VzX1IwOTQ4Y2RlOTsKZXh0ZXJuIHZvaWQgKiBoaWdoX21lbW9yeV9S
OGE3ZDFjMzE7CmV4dGVybiBpbnQgcGFnZV9jbHVzdGVyOwoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hl
YWQgYWN0aXZlX2xpc3Q7CmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGluYWN0aXZlX2xpc3Q7Cgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDI1
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDEKCgoKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMg
NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAyCiMg
MTYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMQoj
IDE3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMQoj
IDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMg
MTcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMg
MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQoj
IDE4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2FwaWNkZWYuaCIgMQoj
IDEyMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXBpY2RlZi5oIgpz
dHJ1Y3QgbG9jYWxfYXBpYyB7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2Vy
dmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDE7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf
X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHBoeXNfYXBpY19pZCA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2
ZWRfMiA6IDQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAg
ICAgICB9IGlkOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgdmVyc2lvbiA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVz
ZXJ2ZWRfMSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sdnQgOiA4LAogICAgICAg
ICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiA4OwogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSB2ZXJzaW9uOwoKICAgICAgICBzdHJ1Y3Qg
eyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAzOwoKICAgICAgICBz
dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA0OwoKICAg
ICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA1
OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2Vy
dmVkXzA2OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBy
aW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMjQ7CiAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0gdHBy
OwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEg
OiAyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAg
ICAgfSBhcHI7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBwcmlvcml0eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVz
ZXJ2ZWRfMSA6IDI0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlsz
XTsKICAgICAgICB9IHBwcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBlb2k7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsK
ICAgICAgICB9IGVvaTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRb
NF07IH0gX19yZXNlcnZlZF8wNzsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgbG9n
aWNhbF9kZXN0IDogODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJb
M107CiAgICAgICAgfSBsZHI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjgsCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVs
IDogNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAg
ICAgfSBkZnI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
c3B1cmlvdXNfdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgYXBpY19lbmFibGVk
IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNfY3B1IDogMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMjI7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgIH0gc3ZyOwoKICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSBpc3IgWzhdOwoKICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSB0bXIgWzhdOwoKICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSBpcnIgWzhdOwoKICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgc2VuZF9jc19lcnJvciA6IDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVjZWl2ZV9jc19lcnJvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VuZF9hY2NlcHRfZXJyb3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlY2VpdmVfYWNjZXB0X2Vycm9yIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbmRfaWxsZWdhbF92ZWN0b3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlY2VpdmVfaWxsZWdhbF92ZWN0b3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlsbGVnYWxfcmVnaXN0ZXJfYWRkcmVzcyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19yZXNlcnZlZF8yIDogMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgICAgICAgICB9IGVycm9yX2JpdHM7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgZXJyb3JzOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZF8zWzNdOwogICAgICAgICAgICAgICAgfSBhbGxfZXJyb3JzOwogICAgICAgIH0gZXNyOwoKICAg
ICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA4
OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2Vy
dmVkXzA5OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBf
X3Jlc2VydmVkXzEwOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0
XTsgfSBfX3Jlc2VydmVkXzExOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNl
cnZlZFs0XTsgfSBfX3Jlc2VydmVkXzEyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQg
X19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzEzOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25l
ZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE0OwoKICAgICAgICBzdHJ1Y3Qgewog
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5h
dGlvbl9tb2RlIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDog
MSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgbGV2ZWwgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIDog
MSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMiwKICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvcnRoYW5kIDogMiwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNl
cnZlZF8zIDogMTI7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNd
OwogICAgICAgIH0gaWNyMTsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoeXNfZGVzdCA6IDQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogNDsKICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMyA6IDI0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvZ2ljYWxfZGVzdCA6IDg7CiAgICAgICAgICAgICAgICB9IGRlc3Q7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0g
aWNyMjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0
b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiA0LAogICAgICAg
ICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAg
ICAgICBfX3Jlc2VydmVkXzIgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDogMSwK
ICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJfbW9kZSA6IDEsCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDE0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9f
cmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF90aW1lcjsKCiAgICAgICAgc3RydWN0IHsgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNTsKCiAgICAgICAgc3RydWN0
IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAg
ICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDog
MSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMywKICAgICAgICAgICAg
ICAgICAgICAgICAgbWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRf
MyA6IDE1OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAg
ICAgICB9IGx2dF9wYzsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDog
MywKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
cG9sYXJpdHkgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfaXJyIDogMSwKICAg
ICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAg
IG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAxNTsKICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBsdnRf
bGludDA7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVj
dG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGFyaXR5
IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2lyciA6IDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgIHRyaWdnZXIgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDog
MSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMTU7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgIH0gbHZ0X2xpbnQxOwoK
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgs
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
cmVzZXJ2ZWRfMiA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzMgOiAxNTsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAgICAgfSBsdnRfZXJyb3I7CgogICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW5pdGlhbF9jb3VudDsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0aW1lcl9p
Y3I7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBjdXJyX2NvdW50OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRfMlszXTsKICAgICAgICB9IHRpbWVyX2NjcjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQg
aW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNjsKCiAgICAgICAgc3RydWN0IHsgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNzsKCiAgICAgICAgc3RydWN0
IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xODsKCiAgICAgICAg
c3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xOTsKCiAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXZpc29yIDogNCwK
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMjg7CiAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0gdGltZXJfZGNyOwoKICAg
ICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzIw
OwoKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiMgMTkgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMjAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgNTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgplbnVtIGZpeGVkX2FkZHJlc3NlcyB7CgogICAgICAg
IEZJWF9BUElDX0JBU0UsCgoKICAgICAgICBGSVhfSU9fQVBJQ19CQVNFXzAsCiAgICAgICAgRklY
X0lPX0FQSUNfQkFTRV9FTkQgPSBGSVhfSU9fQVBJQ19CQVNFXzAgKyA4IC0xLAojIDY4ICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKICAgICAgICBfX2Vu
ZF9vZl9maXhlZF9hZGRyZXNzZXMKfTsKCmV4dGVybiB2b2lkIF9fc2V0X2ZpeG1hcCAoZW51bSBm
aXhlZF9hZGRyZXNzZXMgaWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBwaHlzLCBwZ3Byb3RfdCBmbGFncyk7CiMgOTQgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgpleHRlcm4gdm9pZCBfX3RoaXNf
Zml4bWFwX2RvZXNfbm90X2V4aXN0KHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IGxvbmcgZml4X3RvX3ZpcnQoY29uc3QgdW5zaWduZWQgaW50IGlkeCkKewojIDExMiAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vZml4bWFwLmgiCiAgICAgICAgaWYgKGlk
eCA+PSBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMpCiAgICAgICAgICAgICAgICBfX3RoaXNfZml4
bWFwX2RvZXNfbm90X2V4aXN0KCk7CgogICAgICAgIHJldHVybiAoKDB4ZmZmZmUwMDBVTCkgLSAo
KGlkeCkgPDwgMTIpKTsKfQojIDE4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2FzbS9wZ3RhYmxlLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L3RocmVhZHMuaCIgMQojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2FzbS9wZ3RhYmxlLmgiIDIKCgoKCgpleHRlcm4gcGdkX3Qgc3dhcHBlcl9wZ19kaXJbMTAy
NF07CmV4dGVybiB2b2lkIHBhZ2luZ19pbml0KHZvaWQpOwojIDY3ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHBn
a2Vybl9tYXNrOwojIDk1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9w
Z3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGVtcHR5X3plcm9fcGFnZVsxMDI0XTsKIyAx
MDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKIyAx
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5o
IiAxCiMgMzIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BndGFibGUt
MmxldmVsLmgiCnN0YXRpYyBpbmxpbmUgaW50IHBnZF9ub25lKHBnZF90IHBnZCkgeyByZXR1cm4g
MDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfYmFkKHBnZF90IHBnZCkgeyByZXR1cm4gMDsgfQpz
dGF0aWMgaW5saW5lIGludCBwZ2RfcHJlc2VudChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDE7IH0KIyA1
MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGd0YWJsZS0ybGV2ZWwu
aCIKc3RhdGljIGlubGluZSBwbWRfdCAqIHBtZF9vZmZzZXQocGdkX3QgKiBkaXIsIHVuc2lnbmVk
IGxvbmcgYWRkcmVzcykKewogICAgICAgIHJldHVybiAocG1kX3QgKikgZGlyOwp9CiMgMTEwICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIKIyAyNDQg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgcGcwWzEwMjRdOwojIDI2NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu
MTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oIgpzdGF0aWMgaW5saW5lIGludCBwdGVfcmVhZChwdGVf
dCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDAwNDsgfQpzdGF0aWMgaW5saW5lIGlu
dCBwdGVfZXhlYyhwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDAwNDsgfQpz
dGF0aWMgaW5saW5lIGludCBwdGVfZGlydHkocHRlX3QgcHRlKSB7IHJldHVybiAocHRlKS5wdGVf
bG93ICYgMHgwNDA7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlX3lvdW5nKHB0ZV90IHB0ZSkgeyBy
ZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDIwOyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZV93cml0
ZShwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDAwMjsgfQoKc3RhdGljIGlu
bGluZSBwdGVfdCBwdGVfcmRwcm90ZWN0KHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4w
eDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9leHByb3RlY3QocHRl
X3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDA0OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBp
bmxpbmUgcHRlX3QgcHRlX21rY2xlYW4ocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4
MDQwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rb2xkKHB0ZV90IHB0
ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4weDAyMDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5l
IHB0ZV90IHB0ZV93cnByb3RlY3QocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDAy
OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rcmVhZChwdGVfdCBwdGUp
IHsgKHB0ZSkucHRlX2xvdyB8PSAweDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0
ZV90IHB0ZV9ta2V4ZWMocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgfD0gMHgwMDQ7IHJldHVy
biBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtkaXJ0eShwdGVfdCBwdGUpIHsgKHB0
ZSkucHRlX2xvdyB8PSAweDA0MDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0
ZV9ta3lvdW5nKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4MDIwOyByZXR1cm4gcHRl
OyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rd3JpdGUocHRlX3QgcHRlKSB7IChwdGUpLnB0
ZV9sb3cgfD0gMHgwMDI7IHJldHVybiBwdGU7IH0KCnN0YXRpYyBpbmxpbmUgaW50IHB0ZXBfdGVz
dF9hbmRfY2xlYXJfZGlydHkocHRlX3QgKnB0ZXApIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2Jp
dCg2LCBwdGVwKTsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVwX3Rlc3RfYW5kX2NsZWFyX3lvdW5n
KHB0ZV90ICpwdGVwKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoNSwgcHRlcCk7IH0Kc3Rh
dGljIGlubGluZSB2b2lkIHB0ZXBfc2V0X3dycHJvdGVjdChwdGVfdCAqcHRlcCkgeyBjbGVhcl9i
aXQoMSwgcHRlcCk7IH0Kc3RhdGljIGlubGluZSB2b2lkIHB0ZXBfbWtkaXJ0eShwdGVfdCAqcHRl
cCkgeyBzZXRfYml0KDYsIHB0ZXApOyB9CiMgMjk3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21vZGlmeShw
dGVfdCBwdGUsIHBncHJvdF90IG5ld3Byb3QpCnsKICAgICAgICBwdGUucHRlX2xvdyAmPSAoKH4o
KDFVTCA8PCAxMiktMSkpIHwgMHgwMjAgfCAweDA0MCk7CiAgICAgICAgcHRlLnB0ZV9sb3cgfD0g
KChuZXdwcm90KS5wZ3Byb3QpOwogICAgICAgIHJldHVybiBwdGU7Cn0KIyAyNiAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAyNyAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgNDMgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW0uaCIKc3RydWN0IHZtX2FyZWFfc3RydWN0IHsK
ICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICogdm1fbW07CiAgICAgICAgdW5zaWduZWQgbG9uZyB2
bV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2VuZDsKCgogICAgICAgIHN0cnVjdCB2
bV9hcmVhX3N0cnVjdCAqdm1fbmV4dDsKCiAgICAgICAgcGdwcm90X3Qgdm1fcGFnZV9wcm90Owog
ICAgICAgIHVuc2lnbmVkIGxvbmcgdm1fZmxhZ3M7CgogICAgICAgIHJiX25vZGVfdCB2bV9yYjsK
CgoKCgoKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtX25leHRfc2hhcmU7CiAgICAg
ICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1fcHByZXZfc2hhcmU7CgoKICAgICAgICBzdHJ1
Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgKiB2bV9vcHM7CgoKICAgICAgICB1bnNpZ25lZCBsb25n
IHZtX3Bnb2ZmOwoKICAgICAgICBzdHJ1Y3QgZmlsZSAqIHZtX2ZpbGU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyB2bV9yYWVuZDsKICAgICAgICB2b2lkICogdm1fcHJpdmF0ZV9kYXRhOwp9OwojIDEx
NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIgpleHRlcm4g
cGdwcm90X3QgcHJvdGVjdGlvbl9tYXBbMTZdOwoKCgoKCgoKc3RydWN0IHZtX29wZXJhdGlvbnNf
c3RydWN0IHsKICAgICAgICB2b2lkICgqb3Blbikoc3RydWN0IHZtX2FyZWFfc3RydWN0ICogYXJl
YSk7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBhcmVhKTsK
ICAgICAgICBzdHJ1Y3QgcGFnZSAqICgqbm9wYWdlKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBh
cmVhLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB3cml0ZV9hY2Nlc3MpOwp9OwojIDE0NiAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIgp0eXBlZGVmIHN0
cnVjdCBwYWdlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgICAgc3RydWN0
IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKICAg
ICAgICBzdHJ1Y3QgcGFnZSAqbmV4dF9oYXNoOwoKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxydTsK
CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBzdHJ1Y3QgcGFnZSAqKnBw
cmV2X2hhc2g7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmZmVyczsKICAgICAgICB2
b2lkICp2aXJ0dWFsOwoKICAgICAgICBzdHJ1Y3Qgem9uZV9zdHJ1Y3QgKnpvbmU7Cn0gbWVtX21h
cF90OwojIDI5NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5o
IgpleHRlcm4gdm9pZCBfX3NldF9wYWdlX2RpcnR5KHN0cnVjdCBwYWdlICopOwoKc3RhdGljIGlu
bGluZSB2b2lkIHNldF9wYWdlX2RpcnR5KHN0cnVjdCBwYWdlICogcGFnZSkKewogICAgICAgIGlm
ICghdGVzdF9hbmRfc2V0X2JpdCg0LCAmcGFnZS0+ZmxhZ3MpKQogICAgICAgICAgICAgICAgX19z
ZXRfcGFnZV9kaXJ0eShwYWdlKTsKfQojIDM2MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9saW51eC9tbS5oIgpleHRlcm4gbWVtX21hcF90ICogbWVtX21hcF9SOGQyZGI0ZjI7
CgoKCgoKCgpleHRlcm4gc3RydWN0IHBhZ2UgKiBfYWxsb2NfcGFnZXNfUmNmYTNlYTg3KHVuc2ln
bmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqIF9fYWxsb2NfcGFnZXNfUmNjZGNhMzUwKHVu
c2lnbmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCB6b25lbGlzdF90ICp6b25l
bGlzdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiBh
bGxvY19wYWdlc19ub2RlX1I2ZGVlMDVmMyhpbnQgbmlkLCB1bnNpZ25lZCBpbnQgZ2ZwX21hc2ss
IHVuc2lnbmVkIGludCBvcmRlcik7CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICogYWxsb2Nf
cGFnZXModW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpCnsKCgoKICAg
ICAgICBpZiAob3JkZXIgPj0gMTApCiAgICAgICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7
CiAgICAgICAgcmV0dXJuIF9hbGxvY19wYWdlc19SY2ZhM2VhODcoZ2ZwX21hc2ssIG9yZGVyKTsK
fQoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBfX2dldF9mcmVlX3BhZ2VzX1I0Nzg0ZTQyNCh1bnNp
Z25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRfemVyb2VkX3BhZ2VfUjBjMjE4OGM3
KHVuc2lnbmVkIGludCBnZnBfbWFzaykgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDQw
MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIgpleHRlcm4g
dm9pZCBfX2ZyZWVfcGFnZXNfUmY1OWU5NDAyKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBp
bnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgZnJlZV9w
YWdlc19SOTk0MWNjYjgodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCgoKCmV4dGVybiB2b2lkIHNob3dfZnJlZV9hcmVh
cyh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19mcmVlX2FyZWFzX25vZGUocGdfZGF0YV90ICpwZ2Rh
dCk7CgpleHRlcm4gdm9pZCBjbGVhcl9wYWdlX3RhYmxlcyhzdHJ1Y3QgbW1fc3RydWN0ICosIHVu
c2lnbmVkIGxvbmcsIGludCk7CgpzdHJ1Y3QgcGFnZSAqIHNobWVtX25vcGFnZShzdHJ1Y3Qgdm1f
YXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgaW50IG5vX3NoYXJlKTsK
c3RydWN0IGZpbGUgKnNobWVtX2ZpbGVfc2V0dXBfUjhhZThiMThmKGNoYXIgKiBuYW1lLCBsb2Zm
X3Qgc2l6ZSk7CmV4dGVybiB2b2lkIHNobWVtX2xvY2soc3RydWN0IGZpbGUgKiBmaWxlLCBpbnQg
bG9jayk7CmV4dGVybiBpbnQgc2htZW1femVyb19zZXR1cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg
Kik7CgpleHRlcm4gdm9pZCB6YXBfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5z
aWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBsb25nIHNpemUpOwpleHRlcm4gaW50IGNvcHlf
cGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKnNyYywg
c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwpleHRlcm4gaW50IHJlbWFwX3BhZ2VfcmFuZ2Vf
UjY5ZDAxZTczKHVuc2lnbmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyB0bywgdW5zaWduZWQg
bG9uZyBzaXplLCBwZ3Byb3RfdCBwcm90KTsKZXh0ZXJuIGludCB6ZXJvbWFwX3BhZ2VfcmFuZ2Uo
dW5zaWduZWQgbG9uZyBmcm9tLCB1bnNpZ25lZCBsb25nIHNpemUsIHBncHJvdF90IHByb3QpOwoK
ZXh0ZXJuIGludCB2bXRydW5jYXRlX1I1NDE2MTI3YyhzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgbG9m
Zl90IG9mZnNldCk7CmV4dGVybiBwbWRfdCAqX19wbWRfYWxsb2Moc3RydWN0IG1tX3N0cnVjdCAq
bW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwpleHRlcm4gcHRlX3QgKnB0ZV9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwg
cG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CmV4dGVybiBpbnQgaGFuZGxlX21tX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLHN0
cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB3cml0
ZV9hY2Nlc3MpOwpleHRlcm4gaW50IG1ha2VfcGFnZXNfcHJlc2VudCh1bnNpZ25lZCBsb25nIGFk
ZHIsIHVuc2lnbmVkIGxvbmcgZW5kKTsKZXh0ZXJuIGludCBhY2Nlc3NfcHJvY2Vzc192bShzdHJ1
Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpidWYsIGludCBs
ZW4sIGludCB3cml0ZSk7CmV4dGVybiBpbnQgcHRyYWNlX3JlYWRkYXRhKHN0cnVjdCB0YXNrX3N0
cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIHNyYywgY2hhciAqZHN0LCBpbnQgbGVuKTsKZXh0ZXJu
IGludCBwdHJhY2Vfd3JpdGVkYXRhKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBjaGFyICogc3Jj
LCB1bnNpZ25lZCBsb25nIGRzdCwgaW50IGxlbik7CmV4dGVybiBpbnQgcHRyYWNlX2F0dGFjaChz
dHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CmV4dGVybiBpbnQgcHRyYWNlX2RldGFjaChzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcHRyYWNlX2Rpc2FibGUo
c3RydWN0IHRhc2tfc3RydWN0ICopOwoKCgoKCgpzdGF0aWMgaW5saW5lIHBtZF90ICpwbWRfYWxs
b2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVz
cykKewogICAgICAgIGlmIChwZ2Rfbm9uZSgqcGdkKSkKICAgICAgICAgICAgICAgIHJldHVybiBf
X3BtZF9hbGxvYyhtbSwgcGdkLCBhZGRyZXNzKTsKICAgICAgICByZXR1cm4gcG1kX29mZnNldChw
Z2QsIGFkZHJlc3MpOwp9CgpleHRlcm4gaW50IHBndF9jYWNoZV93YXRlclsyXTsKZXh0ZXJuIGlu
dCBjaGVja19wZ3RfY2FjaGUodm9pZCk7CgpleHRlcm4gdm9pZCBmcmVlX2FyZWFfaW5pdCh1bnNp
Z25lZCBsb25nICogem9uZXNfc2l6ZSk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9pbml0X25vZGUo
aW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKnBtYXAsCiAgICAgICAgdW5z
aWduZWQgbG9uZyAqIHpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFydF9wYWRkciwK
ICAgICAgICB1bnNpZ25lZCBsb25nICp6aG9sZXNfc2l6ZSk7CmV4dGVybiB2b2lkIG1lbV9pbml0
KHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X21lbSh2b2lkKTsKZXh0ZXJuIHZvaWQgc2lfbWVtaW5m
b19SYjNhMzA3YzYoc3RydWN0IHN5c2luZm8gKiB2YWwpOwpleHRlcm4gdm9pZCBzd2FwaW5fcmVh
ZGFoZWFkKHN3cF9lbnRyeV90KTsKCmV4dGVybiBzdHJ1Y3QgYWRkcmVzc19zcGFjZSBzd2FwcGVy
X3NwYWNlOwoKCnN0YXRpYyBpbmxpbmUgaW50IGlzX3BhZ2VfY2FjaGVfZnJlZWFibGUoc3RydWN0
IHBhZ2UgKiBwYWdlKQp7CiAgICAgICAgcmV0dXJuICgoJihwYWdlKS0+Y291bnQpLT5jb3VudGVy
KSAtICEhcGFnZS0+YnVmZmVycyA9PSAxOwp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgZXhjbHVz
aXZlX3N3YXBfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKewogICAgICAgIGlmICghKF9fYnVpbHRp
bl9jb25zdGFudF9wKDApID8gY29uc3RhbnRfdGVzdF9iaXQoKDApLCgmKHBhZ2UpLT5mbGFncykp
IDogdmFyaWFibGVfdGVzdF9iaXQoKDApLCgmKHBhZ2UpLT5mbGFncykpKSkKICAgICAgICAgICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKICAgICAgICBpZiAo
ISgocGFnZSktPm1hcHBpbmcgPT0gJnN3YXBwZXJfc3BhY2UpKQogICAgICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgaWYgKCgoJihwYWdlKS0+Y291bnQpLT5jb3VudGVyKSAtICEhcGFnZS0+
YnVmZmVycyAhPSAyKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgcmV0dXJuIHN3
YXBfY291bnQocGFnZSkgPT0gMTsKfQoKZXh0ZXJuIHZvaWQgX19mcmVlX3B0ZShwdGVfdCk7CgoK
ZXh0ZXJuIHZvaWQgbG9ja192bWFfbWFwcGluZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpl
eHRlcm4gdm9pZCB1bmxvY2tfdm1hX21hcHBpbmdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsK
ZXh0ZXJuIHZvaWQgaW5zZXJ0X3ZtX3N0cnVjdChzdHJ1Y3QgbW1fc3RydWN0ICosIHN0cnVjdCB2
bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgX19pbnNlcnRfdm1fc3RydWN0KHN0cnVjdCBt
bV9zdHJ1Y3QgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCBidWlsZF9t
bWFwX3JiKHN0cnVjdCBtbV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGV4aXRfbW1hcChzdHJ1Y3Qg
bW1fc3RydWN0ICopOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZ2V0X3VubWFwcGVkX2FyZWFfUmIw
NDFmNGYyKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fbW1hcF9w
Z29mZl9SMzU2YzMxMjYoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgYWRkciwKICAg
ICAgICB1bnNpZ25lZCBsb25nIGxlbiwgdW5zaWduZWQgbG9uZyBwcm90LAogICAgICAgIHVuc2ln
bmVkIGxvbmcgZmxhZywgdW5zaWduZWQgbG9uZyBwZ29mZik7CgpzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhZGRyLAog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25nIHByb3QsCiAgICAgICAgdW5z
aWduZWQgbG9uZyBmbGFnLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKewogICAgICAgIHVuc2lnbmVk
IGxvbmcgcmV0ID0gLTIyOwogICAgICAgIGlmICgob2Zmc2V0ICsgKCgobGVuKSsoMVVMIDw8IDEy
KS0xKSYofigoMVVMIDw8IDEyKS0xKSkpKSA8IG9mZnNldCkKICAgICAgICAgICAgICAgIGdvdG8g
b3V0OwogICAgICAgIGlmICghKG9mZnNldCAmIH4ofigoMVVMIDw8IDEyKS0xKSkpKQogICAgICAg
ICAgICAgICAgcmV0ID0gZG9fbW1hcF9wZ29mZl9SMzU2YzMxMjYoZmlsZSwgYWRkciwgbGVuLCBw
cm90LCBmbGFnLCBvZmZzZXQgPj4gMTIpOwpvdXQ6CiAgICAgICAgcmV0dXJuIHJldDsKfQoKZXh0
ZXJuIGludCBkb19tdW5tYXBfUjFjMzYwMTMwKHN0cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQg
bG9uZywgc2l6ZV90KTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRvX2Jya19SOWVlY2RlMTYodW5z
aWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIHZvaWQgX192bWFfdW5s
aW5rKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCBz
dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBwcmV2KQp7CiAgICAgICAgcHJldi0+dm1fbmV4dCA9IHZt
YS0+dm1fbmV4dDsKICAgICAgICByYl9lcmFzZSgmdm1hLT52bV9yYiwgJm1tLT5tbV9yYik7CiAg
ICAgICAgaWYgKG1tLT5tbWFwX2NhY2hlID09IHZtYSkKICAgICAgICAgICAgICAgIG1tLT5tbWFw
X2NhY2hlID0gcHJldjsKfQoKc3RhdGljIGlubGluZSBpbnQgY2FuX3ZtYV9tZXJnZShzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgdm1fZmxhZ3MpCnsKICAgICAgICBp
ZiAoIXZtYS0+dm1fZmlsZSAmJiB2bWEtPnZtX2ZsYWdzID09IHZtX2ZsYWdzKQogICAgICAgICAg
ICAgICAgcmV0dXJuIDE7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIDA7Cn0K
CnN0cnVjdCB6b25lX3Q7CgpleHRlcm4gdm9pZCByZW1vdmVfaW5vZGVfcGFnZShzdHJ1Y3QgcGFn
ZSAqKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGFnZV91bnVzZShzdHJ1Y3QgcGFnZSAqKTsKZXh0
ZXJuIHZvaWQgdHJ1bmNhdGVfaW5vZGVfcGFnZXNfUjU0ZjQ5OGNlKHN0cnVjdCBhZGRyZXNzX3Nw
YWNlICosIGxvZmZfdCk7CgoKZXh0ZXJuIGludCBmaWxlbWFwX3N5bmNfUmMxM2QwMmYxKHN0cnVj
dCB2bV9hcmVhX3N0cnVjdCAqLCB1bnNpZ25lZCBsb25nLCBzaXplX3QsIHVuc2lnbmVkIGludCk7
CmV4dGVybiBzdHJ1Y3QgcGFnZSAqZmlsZW1hcF9ub3BhZ2VfUjRkNThmZmFmKHN0cnVjdCB2bV9h
cmVhX3N0cnVjdCAqLCB1bnNpZ25lZCBsb25nLCBpbnQpOwojIDU3MSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIgpzdGF0aWMgaW5saW5lIGludCBleHBhbmRf
c3RhY2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3Mp
CnsKICAgICAgICB1bnNpZ25lZCBsb25nIGdyb3c7CgoKCgoKCiAgICAgICAgYWRkcmVzcyAmPSAo
figoMVVMIDw8IDEyKS0xKSk7CiAgICAgICAgZ3JvdyA9ICh2bWEtPnZtX3N0YXJ0IC0gYWRkcmVz
cykgPj4gMTI7CiAgICAgICAgaWYgKHZtYS0+dm1fZW5kIC0gYWRkcmVzcyA+IGdldF9jdXJyZW50
KCktPnJsaW1bM10ucmxpbV9jdXIgfHwKICAgICAgICAgICAgKCh2bWEtPnZtX21tLT50b3RhbF92
bSArIGdyb3cpIDw8IDEyKSA+IGdldF9jdXJyZW50KCktPnJsaW1bOV0ucmxpbV9jdXIpCiAgICAg
ICAgICAgICAgICByZXR1cm4gLTEyOwogICAgICAgICh2b2lkKSgmdm1hLT52bV9tbS0+cGFnZV90
YWJsZV9sb2NrKTsKICAgICAgICB2bWEtPnZtX3N0YXJ0ID0gYWRkcmVzczsKICAgICAgICB2bWEt
PnZtX3Bnb2ZmIC09IGdyb3c7CiAgICAgICAgdm1hLT52bV9tbS0+dG90YWxfdm0gKz0gZ3JvdzsK
ICAgICAgICBpZiAodm1hLT52bV9mbGFncyAmIDB4MDAwMDIwMDApCiAgICAgICAgICAgICAgICB2
bWEtPnZtX21tLT5sb2NrZWRfdm0gKz0gZ3JvdzsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAg
ICAgICAgcmV0dXJuIDA7Cn0KCgpleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICogZmluZF92
bWFfUmU3MWMxMGUwKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQgbG9uZyBhZGRyKTsK
ZXh0ZXJuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hX3ByZXYoc3RydWN0IG1tX3N0
cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnBwcmV2KTsKCgoKc3Rh
dGljIGlubGluZSBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3ZtYV9pbnRlcnNlY3Rpb24o
c3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2FkZHIsIHVuc2lnbmVk
IGxvbmcgZW5kX2FkZHIpCnsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEgPSBm
aW5kX3ZtYV9SZTcxYzEwZTAobW0sc3RhcnRfYWRkcik7CgogICAgICAgIGlmICh2bWEgJiYgZW5k
X2FkZHIgPD0gdm1hLT52bV9zdGFydCkKICAgICAgICAgICAgICAgIHZtYSA9ICgodm9pZCAqKTAp
OwogICAgICAgIHJldHVybiB2bWE7Cn0KCmV4dGVybiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmZp
bmRfZXh0ZW5kX3ZtYShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyKTsK
IyAxNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbGFiLmgiIDIK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEK
IyAxNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbGFiLmgiIDIK
IyA0OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbGFiLmgiCmV4
dGVybiB2b2lkIGttZW1fY2FjaGVfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQga21lbV9jYWNoZV9z
aXplc19pbml0KHZvaWQpOwoKZXh0ZXJuIGttZW1fY2FjaGVfdCAqa21lbV9maW5kX2dlbmVyYWxf
Y2FjaGVwX1I1MmJiNjg5MShzaXplX3QsIGludCBnZnBmbGFncyk7CmV4dGVybiBrbWVtX2NhY2hl
X3QgKmttZW1fY2FjaGVfY3JlYXRlX1JkMWMwYjRlNihjb25zdCBjaGFyICosIHNpemVfdCwgc2l6
ZV90LCB1bnNpZ25lZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICgqKSh2b2lkICosIGttZW1fY2FjaGVfdCAqLCB1bnNpZ25lZCBsb25nKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKikodm9pZCAqLCBrbWVtX2Nh
Y2hlX3QgKiwgdW5zaWduZWQgbG9uZykpOwpleHRlcm4gaW50IGttZW1fY2FjaGVfZGVzdHJveV9S
ZGY4M2M2OTIoa21lbV9jYWNoZV90ICopOwpleHRlcm4gaW50IGttZW1fY2FjaGVfc2hyaW5rX1Ix
MmY3Y2YwNChrbWVtX2NhY2hlX3QgKik7CmV4dGVybiB2b2lkICprbWVtX2NhY2hlX2FsbG9jX1I3
NTgxMDk1NihrbWVtX2NhY2hlX3QgKiwgaW50KTsKZXh0ZXJuIHZvaWQga21lbV9jYWNoZV9mcmVl
X1I4OTFmMjY4NihrbWVtX2NhY2hlX3QgKiwgdm9pZCAqKTsKCmV4dGVybiB2b2lkICprbWFsbG9j
X1I5M2Q0Y2ZlNihzaXplX3QsIGludCk7CmV4dGVybiB2b2lkIGtmcmVlX1IwMzdhMGNiYShjb25z
dCB2b2lkICopOwoKZXh0ZXJuIGludCBrbWVtX2NhY2hlX3JlYXAoaW50KSBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgc2xhYmluZm9fcmVhZF9wcm9jKGNoYXIgKnBhZ2Us
IGNoYXIgKipzdGFydCwgb2ZmX3Qgb2ZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgY291bnQsIGludCAqZW9mLCB2b2lkICpkYXRhKTsKZXh0ZXJuIGludCBzbGFiaW5mb193
cml0ZV9wcm9jKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpidWZmZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpOwoKCmV4
dGVybiBrbWVtX2NhY2hlX3QgKnZtX2FyZWFfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpt
bV9jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKm5hbWVzX2NhY2hlcF9SZDI1NDY5YjQ7CmV4
dGVybiBrbWVtX2NhY2hlX3QgKmZpbGVzX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqZmls
cF9jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKmRxdW90X2NhY2hlcDsKZXh0ZXJuIGttZW1f
Y2FjaGVfdCAqYmhfY2FjaGVwX1JkY2MwYmIzNzsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqZnNfY2Fj
aGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpzaWdhY3RfY2FjaGVwOwojIDMxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NjYXR0ZXJsaXN0LmgiIDEKCgoKc3RydWN0IHNjYXR0
ZXJsaXN0IHsKICAgIGNoYXIgKiBhZGRyZXNzOwogICAgY2hhciAqIGFsdF9hZGRyZXNzOwoKICAg
IHVuc2lnbmVkIGludCBsZW5ndGg7Cn07CiMgMzIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvYXNtL3BjaS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDMzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p
bmNsdWRlL2FzbS9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1
ZGUvYXNtL2lvLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9hc20vaW8uaCIgMgojIDg1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz
bS9pby5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgaW5iKHVuc2lnbmVkIHNob3J0IHBv
cnQpIHsgdW5zaWduZWQgY2hhciBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgImIiICIg
JSIgInciICIxLCUiICIiICIwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBf
djsgfSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgaW5iX3AodW5zaWduZWQgc2hvcnQgcG9y
dCkgeyB1bnNpZ25lZCBjaGFyIF92OyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImluIiAiYiIgIiAl
IiAidyIgIjEsJSIgIiIgIjAiICJcbm91dGIgJSVhbCwkMHg4MCIgOiAiPWEiIChfdikgOiAiTmQi
IChwb3J0KSApOyByZXR1cm4gX3Y7IH0KCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHNob3J0IGlu
dyh1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIHNob3J0IF92OyBfX2FzbV9fIF9fdm9s
YXRpbGVfXyAoImluIiAidyIgIiAlIiAidyIgIjEsJSIgIiIgIjAiIDogIj1hIiAoX3YpIDogIk5k
IiAocG9ydCkgKTsgcmV0dXJuIF92OyB9IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvcnQgaW53
X3AodW5zaWduZWQgc2hvcnQgcG9ydCkgeyB1bnNpZ25lZCBzaG9ydCBfdjsgX19hc21fXyBfX3Zv
bGF0aWxlX18gKCJpbiIgInciICIgJSIgInciICIxLCUiICIiICIwIiAiXG5vdXRiICUlYWwsJDB4
ODAiIDogIj1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9CgoKc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBpbnQgaW5sKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWduZWQgaW50
IF92OyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImluIiAibCIgIiAlIiAidyIgIjEsJSIgIiIgIjAi
IDogIj1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9IHN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgaW50IGlubF9wKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWduZWQgaW50IF92
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImluIiAibCIgIiAlIiAidyIgIjEsJSIgIiIgIjAiICJc
bm91dGIgJSVhbCwkMHg4MCIgOiAiPWEiIChfdikgOiAiTmQiIChwb3J0KSApOyByZXR1cm4gX3Y7
IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQgb3V0Yih1bnNpZ25lZCBjaGFyIHZhbHVlLCB1bnNpZ25l
ZCBzaG9ydCBwb3J0KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgib3V0IiAiYiIgIiAlIiAiYiIg
IjAsJSIgInciICIxIiA6IDogImEiICh2YWx1ZSksICJOZCIgKHBvcnQpKTsgfSBzdGF0aWMgaW5s
aW5lIHZvaWQgb3V0Yl9wKHVuc2lnbmVkIGNoYXIgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQp
IHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJiIiAiICUiICJiIiAiMCwlIiAidyIgIjEi
ICJcbm91dGIgJSVhbCwkMHg4MCIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7fQpzdGF0
aWMgaW5saW5lIHZvaWQgb3V0dyh1bnNpZ25lZCBzaG9ydCB2YWx1ZSwgdW5zaWduZWQgc2hvcnQg
cG9ydCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm91dCIgInciICIgJSIgInciICIwLCUiICJ3
IiAiMSIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7IH0gc3RhdGljIGlubGluZSB2b2lk
IG91dHdfcCh1bnNpZ25lZCBzaG9ydCB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9ydCkgeyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyAoIm91dCIgInciICIgJSIgInciICIwLCUiICJ3IiAiMSIgIlxub3V0
YiAlJWFsLCQweDgwIiA6IDogImEiICh2YWx1ZSksICJOZCIgKHBvcnQpKTt9CnN0YXRpYyBpbmxp
bmUgdm9pZCBvdXRsKHVuc2lnbmVkIGludCB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9ydCkgeyBf
X2FzbV9fIF9fdm9sYXRpbGVfXyAoIm91dCIgImwiICIgJSIgIjAsJSIgInciICIxIiA6IDogImEi
ICh2YWx1ZSksICJOZCIgKHBvcnQpKTsgfSBzdGF0aWMgaW5saW5lIHZvaWQgb3V0bF9wKHVuc2ln
bmVkIGludCB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9ydCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVf
XyAoIm91dCIgImwiICIgJSIgIjAsJSIgInciICIxIiAiXG5vdXRiICUlYWwsJDB4ODAiIDogOiAi
YSIgKHZhbHVlKSwgIk5kIiAocG9ydCkpO30KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbnNiKHVuc2ln
bmVkIHNob3J0IHBvcnQsIHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNt
X18gX192b2xhdGlsZV9fICgicmVwIDsgaW5zIiAiYiIgOiAiPUQiIChhZGRyKSwgIj1jIiAoY291
bnQpIDogImQiIChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291bnQpKTsgfQpzdGF0aWMgaW5saW5l
IHZvaWQgaW5zdyh1bnNpZ25lZCBzaG9ydCBwb3J0LCB2b2lkICogYWRkciwgdW5zaWduZWQgbG9u
ZyBjb3VudCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInJlcCA7IGlucyIgInciIDogIj1EIiAo
YWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7
IH0Kc3RhdGljIGlubGluZSB2b2lkIGluc2wodW5zaWduZWQgc2hvcnQgcG9ydCwgdm9pZCAqIGFk
ZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJyZXAgOyBp
bnMiICJsIiA6ICI9RCIgKGFkZHIpLCAiPWMiIChjb3VudCkgOiAiZCIgKHBvcnQpLCIwIiAoYWRk
ciksIjEiIChjb3VudCkpOyB9CgpzdGF0aWMgaW5saW5lIHZvaWQgb3V0c2IodW5zaWduZWQgc2hv
cnQgcG9ydCwgY29uc3Qgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsgX19hc21f
XyBfX3ZvbGF0aWxlX18gKCJyZXAgOyBvdXRzIiAiYiIgOiAiPVMiIChhZGRyKSwgIj1jIiAoY291
bnQpIDogImQiIChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291bnQpKTsgfQpzdGF0aWMgaW5saW5l
IHZvaWQgb3V0c3codW5zaWduZWQgc2hvcnQgcG9ydCwgY29uc3Qgdm9pZCAqIGFkZHIsIHVuc2ln
bmVkIGxvbmcgY291bnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJyZXAgOyBvdXRzIiAidyIg
OiAiPVMiIChhZGRyKSwgIj1jIiAoY291bnQpIDogImQiIChwb3J0KSwiMCIgKGFkZHIpLCIxIiAo
Y291bnQpKTsgfQpzdGF0aWMgaW5saW5lIHZvaWQgb3V0c2wodW5zaWduZWQgc2hvcnQgcG9ydCwg
Y29uc3Qgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsgX19hc21fXyBfX3ZvbGF0
aWxlX18gKCJyZXAgOyBvdXRzIiAibCIgOiAiPVMiIChhZGRyKSwgIj1jIiAoY291bnQpIDogImQi
IChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291bnQpKTsgfQoKCgoKCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDEKCgoKIyAxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKIyA1ICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3ZtYWxsb2MuaCIgMgojIDEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW0uaCIgMQojIDYgIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdm1hbGxvYy5oIiAyCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgNyAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKCiMgMSAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAxCiMgOSAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKCgoK
CgpzdHJ1Y3Qgdm1fc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAg
IHZvaWQgKiBhZGRyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKICAgICAgICBzdHJ1Y3Qg
dm1fc3RydWN0ICogbmV4dDsKfTsKCmV4dGVybiBzdHJ1Y3Qgdm1fc3RydWN0ICogZ2V0X3ZtX2Fy
ZWEgKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBmbGFncyk7CmV4dGVybiB2b2lk
IHZmcmVlX1IyZmQxZDgxYyh2b2lkICogYWRkcik7CmV4dGVybiB2b2lkICogX192bWFsbG9jX1I3
OTk5NWM1YiAodW5zaWduZWQgbG9uZyBzaXplLCBpbnQgZ2ZwX21hc2ssIHBncHJvdF90IHByb3Qp
OwpleHRlcm4gbG9uZyB2cmVhZChjaGFyICpidWYsIGNoYXIgKmFkZHIsIHVuc2lnbmVkIGxvbmcg
Y291bnQpOwpleHRlcm4gdm9pZCB2bWZyZWVfYXJlYV9wYWdlcyh1bnNpZ25lZCBsb25nIGFkZHJl
c3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBpbnQgdm1hbGxvY19hcmVhX3BhZ2VzKHVu
c2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgZ2ZwX21hc2ssIHBncHJvdF90IHByb3QpOwoKCgoKCnN0YXRpYyBp
bmxpbmUgdm9pZCAqIHZtYWxsb2MgKHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVy
biBfX3ZtYWxsb2NfUjc5OTk1YzViKHNpemUsICgweDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwIHwg
MHgxMDApIHwgMHgwMiwgKHsgcGdwcm90X3QgX19yZXQ7IGlmICgoKF9fYnVpbHRpbl9jb25zdGFu
dF9wKCgwKjMyKzEzKSkgPyBjb25zdGFudF90ZXN0X2JpdCgoKDAqMzIrMTMpKSwoYm9vdF9jcHVf
ZGF0YV9SMDY1N2QwMzcueDg2X2NhcGFiaWxpdHkpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KCgoMCoz
MisxMykpLChib290X2NwdV9kYXRhX1IwNjU3ZDAzNy54ODZfY2FwYWJpbGl0eSkpKSkpIF9fcmV0
ID0gKChwZ3Byb3RfdCkgeyAoKCgweDAwMSB8IDB4MDAyIHwgMHgwNDAgfCAweDAyMCkpIHwgMHgx
MDApIH0gKTsgZWxzZSBfX3JldCA9ICgocGdwcm90X3QpIHsgKCgweDAwMSB8IDB4MDAyIHwgMHgw
NDAgfCAweDAyMCkpIH0gKTsgX19yZXQ7IH0pKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAq
IHZtYWxsb2NfZG1hICh1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICByZXR1cm4gX192bWFs
bG9jX1I3OTk5NWM1YihzaXplLCAoMHgyMCB8IDB4MTAgfCAweDQwIHwgMHg4MCB8IDB4MTAwKXww
eDAxLCAoeyBwZ3Byb3RfdCBfX3JldDsgaWYgKCgoX19idWlsdGluX2NvbnN0YW50X3AoKDAqMzIr
MTMpKSA/IGNvbnN0YW50X3Rlc3RfYml0KCgoMCozMisxMykpLChib290X2NwdV9kYXRhX1IwNjU3
ZDAzNy54ODZfY2FwYWJpbGl0eSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKCgwKjMyKzEzKSksKGJv
b3RfY3B1X2RhdGFfUjA2NTdkMDM3Lng4Nl9jYXBhYmlsaXR5KSkpKSkgX19yZXQgPSAoKHBncHJv
dF90KSB7ICgoKDB4MDAxIHwgMHgwMDIgfCAweDA0MCB8IDB4MDIwKSkgfCAweDEwMCkgfSApOyBl
bHNlIF9fcmV0ID0gKChwZ3Byb3RfdCkgeyAoKDB4MDAxIHwgMHgwMDIgfCAweDA0MCB8IDB4MDIw
KSkgfSApOyBfX3JldDsgfSkpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogdm1hbGxvY18z
Mih1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICByZXR1cm4gX192bWFsbG9jX1I3OTk5NWM1
YihzaXplLCAoMHgyMCB8IDB4MTAgfCAweDQwIHwgMHg4MCB8IDB4MTAwKSwgKHsgcGdwcm90X3Qg
X19yZXQ7IGlmICgoKF9fYnVpbHRpbl9jb25zdGFudF9wKCgwKjMyKzEzKSkgPyBjb25zdGFudF90
ZXN0X2JpdCgoKDAqMzIrMTMpKSwoYm9vdF9jcHVfZGF0YV9SMDY1N2QwMzcueDg2X2NhcGFiaWxp
dHkpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KCgoMCozMisxMykpLChib290X2NwdV9kYXRhX1IwNjU3
ZDAzNy54ODZfY2FwYWJpbGl0eSkpKSkpIF9fcmV0ID0gKChwZ3Byb3RfdCkgeyAoKCgweDAwMSB8
IDB4MDAyIHwgMHgwNDAgfCAweDAyMCkpIHwgMHgxMDApIH0gKTsgZWxzZSBfX3JldCA9ICgocGdw
cm90X3QpIHsgKCgweDAwMSB8IDB4MDAyIHwgMHgwNDAgfCAweDAyMCkpIH0gKTsgX19yZXQ7IH0p
KTsKfQoKCgoKCmV4dGVybiByd2xvY2tfdCB2bWxpc3RfbG9jazsKCmV4dGVybiBzdHJ1Y3Qgdm1f
c3RydWN0ICogdm1saXN0OwojIDExMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9hc20vaW8uaCIgMgojIDEzMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9h
c20vaW8uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHZpcnRfdG9fcGh5cyh2b2xhdGls
ZSB2b2lkICogYWRkcmVzcykKewogICAgICAgIHJldHVybiAoKHVuc2lnbmVkIGxvbmcpKGFkZHJl
c3MpLSgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKTsKfQoKc3RhdGljIGlubGluZSB2b2lk
ICogcGh5c190b192aXJ0KHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHJldHVybiAo
KHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpKGFkZHJlc3MpKygodW5zaWduZWQgbG9uZykoMHhDMDAw
MDAwMCkpKSk7Cn0KCgoKCgoKZXh0ZXJuIHZvaWQgKiBfX2lvcmVtYXBfUjllYWMwNDJhKHVuc2ln
bmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3Mp
OwoKc3RhdGljIGlubGluZSB2b2lkICogaW9yZW1hcCAodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVu
c2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiBfX2lvcmVtYXBfUjllYWMwNDJhKG9m
ZnNldCwgc2l6ZSwgMCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogaW9yZW1hcF9ub2Nh
Y2hlICh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAg
cmV0dXJuIF9faW9yZW1hcF9SOWVhYzA0MmEob2Zmc2V0LCBzaXplLCAweDAxMCk7Cn0KCmV4dGVy
biB2b2lkIGlvdW5tYXBfUjVmYjE5NmQ0KHZvaWQgKmFkZHIpOwojIDIyNCAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaW8uaCIKc3RhdGljIGlubGluZSBpbnQgY2hlY2tf
c2lnbmF0dXJlKHVuc2lnbmVkIGxvbmcgaW9fYWRkciwKICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyICpzaWduYXR1cmUsIGludCBsZW5ndGgpCnsKICAgICAgICBpbnQgcmV0dmFsID0gMDsKICAg
ICAgICBkbyB7CiAgICAgICAgICAgICAgICBpZiAoKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAq
KSAoKHZvaWQgKikoaW9fYWRkcikpKSAhPSAqc2lnbmF0dXJlKQogICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgIGlvX2FkZHIrKzsKICAgICAgICAgICAgICAg
IHNpZ25hdHVyZSsrOwogICAgICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAgICAgfSB3aGlsZSAo
bGVuZ3RoKTsKICAgICAgICByZXR2YWwgPSAxOwpvdXQ6CiAgICAgICAgcmV0dXJuIHJldHZhbDsK
fQoKc3RhdGljIGlubGluZSBpbnQgaXNhX2NoZWNrX3NpZ25hdHVyZSh1bnNpZ25lZCBsb25nIGlv
X2FkZHIsCiAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2lnbmF0dXJlLCBpbnQgbGVuZ3Ro
KQp7CiAgICAgICAgaW50IHJldHZhbCA9IDA7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAg
aWYgKCgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKCgoY2hhciAqKSgoKHVu
c2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkpICsgKGlvX2FkZHIpKSkpICE9ICpzaWduYXR1cmUp
CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgaW9fYWRk
cisrOwogICAgICAgICAgICAgICAgc2lnbmF0dXJlKys7CiAgICAgICAgICAgICAgICBsZW5ndGgt
LTsKICAgICAgICB9IHdoaWxlIChsZW5ndGgpOwogICAgICAgIHJldHZhbCA9IDE7Cm91dDoKICAg
ICAgICByZXR1cm4gcmV0dmFsOwp9CiMgMzQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvYXNtL3BjaS5oIiAyCgpzdHJ1Y3QgcGNpX2RldjsKIyA0NCAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGNpLmgiCmV4dGVybiB2b2lkICpwY2lfYWxsb2NfY29u
c2lzdGVudF9SZGIxNjhjYzQoc3RydWN0IHBjaV9kZXYgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUpOwoj
IDU1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wY2kuaCIKZXh0ZXJu
IHZvaWQgcGNpX2ZyZWVfY29uc2lzdGVudF9SYmVhMDY4ZDcoc3RydWN0IHBjaV9kZXYgKmh3ZGV2
LCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWRk
ciwgZG1hX2FkZHJfdCBkbWFfaGFuZGxlKTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgZG1hX2FkZHJf
dCBwY2lfbWFwX3NpbmdsZShzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHZvaWQgKnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBpbnQgZGlyZWN0
aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgIHJldHVybiB2aXJ0X3Rv
X3BoeXMocHRyKTsKfQojIDc5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz
bS9wY2kuaCIKc3RhdGljIGlubGluZSB2b2lkIHBjaV91bm1hcF9zaW5nbGUoc3RydWN0IHBjaV9k
ZXYgKmh3ZGV2LCBkbWFfYWRkcl90IGRtYV9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGRpcmVjdGlvbikKewogICAgICAgIGlmIChkaXJl
Y3Rpb24gPT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAw
eDBmLDB4MGIiKTsKCn0KIyAxMDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv
YXNtL3BjaS5oIgpzdGF0aWMgaW5saW5lIGludCBwY2lfbWFwX3NnKHN0cnVjdCBwY2lfZGV2ICpo
d2Rldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbmVudHMsIGludCBkaXJlY3Rpb24pCnsKICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMp
CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7
CiAgICAgICAgcmV0dXJuIG5lbnRzOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHBjaV91bm1h
cF9zZyhzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5lbnRzLCBpbnQgZGlyZWN0aW9uKQp7CiAg
ICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwoKfQojIDEzMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9hc20vcGNpLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfZG1hX3N5bmNf
c2luZ2xlKHN0cnVjdCBwY2lfZGV2ICpod2RldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG1hX2FkZHJfdCBkbWFfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGRpcmVjdGlvbikKewogICAgICAgIGlm
IChkaXJlY3Rpb24gPT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIu
Ynl0ZSAweDBmLDB4MGIiKTsKCn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfZG1hX3N5
bmNfc2coc3RydWN0IHBjaV9kZXYgKmh3ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IG5lbGVtcywgaW50IGRpcmVjdGlvbikKewogICAgICAgIGlmIChkaXJlY3Rp
b24gPT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBm
LDB4MGIiKTsKCn0KCgoKCgoKc3RhdGljIGlubGluZSBpbnQgcGNpX2RtYV9zdXBwb3J0ZWQoc3Ry
dWN0IHBjaV9kZXYgKmh3ZGV2LCBkbWFfYWRkcl90IG1hc2spCnsKCgoKCgogICAgICAgIGlmKG1h
c2sgPCAweDAwZmZmZmZmKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIHJldHVy
biAxOwp9CiMgMTgzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wY2ku
aCIKc3RhdGljIGlubGluZSBpbnQgcGNpX2NvbnRyb2xsZXJfbnVtKHN0cnVjdCBwY2lfZGV2ICpk
ZXYpCnsKICAgICAgICByZXR1cm4gMDsKfQoKCmV4dGVybiBpbnQgcGNpX21tYXBfcGFnZV9yYW5n
ZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcGNpX21tYXBfc3RhdGUgbW1hcF9zdGF0ZSwg
aW50IHdyaXRlX2NvbWJpbmUpOwojIDYwNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9wY2kuaCIgMgojIDY2OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9wY2kuaCIKc3RhdGljIGlubGluZSBpbnQgcGNpX21vZHVsZV9pbml0KHN0cnVj
dCBwY2lfZHJpdmVyICpkcnYpCnsKICAgICAgICBpbnQgcmMgPSBwY2lfcmVnaXN0ZXJfZHJpdmVy
X1JkZTdiMjc1MSAoZHJ2KTsKCiAgICAgICAgaWYgKHJjID4gMCkKICAgICAgICAgICAgICAgIHJl
dHVybiAwOwojIDY4NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9w
Y2kuaCIKICAgICAgICBpZiAocmMgPT0gMCkKICAgICAgICAgICAgICAgIHJjID0gLTE5OwoKCgoK
ICAgICAgICBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJfUjgzNmVhMjExIChkcnYpOwoKICAgICAgICBy
ZXR1cm4gcmM7Cn0KIyA3MTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu
dXgvcGNpLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqcGNpX2dldF9kcnZkYXRhIChzdHJ1Y3QgcGNp
X2RldiAqcGRldikKewogICAgICAgIHJldHVybiBwZGV2LT5kcml2ZXJfZGF0YTsKfQoKc3RhdGlj
IGlubGluZSB2b2lkIHBjaV9zZXRfZHJ2ZGF0YSAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHZvaWQg
KmRhdGEpCnsKICAgICAgICBwZGV2LT5kcml2ZXJfZGF0YSA9IGRhdGE7Cn0KIyA3MzEgIi91c3Iv
c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcGNpLmgiCnN0cnVjdCBwY2lfZml4
dXAgewogICAgICAgIGludCBwYXNzOwogICAgICAgIHUxNiB2ZW5kb3IsIGRldmljZTsKICAgICAg
ICB2b2lkICgqaG9vaykoc3RydWN0IHBjaV9kZXYgKmRldik7Cn07CgpleHRlcm4gc3RydWN0IHBj
aV9maXh1cCBwY2liaW9zX2ZpeHVwc1tdOwoKCgoKdm9pZCBwY2lfZml4dXBfZGV2aWNlKGludCBw
YXNzLCBzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKCmV4dGVybiBpbnQgcGNpX3BjaV9wcm9ibGVtc19S
ZGMxNGVkYTc7CiMgMjUgInVzYi11aGNpLmMiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMjYgInVzYi11aGNpLmMiIDIKIyAxICIv
dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2RlbGF5LmgiIDEKIyAxMCAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kZWxheS5oIgpleHRlcm4g
dW5zaWduZWQgbG9uZyBsb29wc19wZXJfamlmZnlfUmJhNDk3ZjEzOwoKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9kZWxheS5oIiAxCiMgMTAgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2RlbGF5LmgiCmV4dGVybiB2b2lkIF9fYmFkX3Vk
ZWxheSh2b2lkKTsKCmV4dGVybiB2b2lkIF9fdWRlbGF5X1I5ZTdkNmJkMCh1bnNpZ25lZCBsb25n
IHVzZWNzKTsKZXh0ZXJuIHZvaWQgX19jb25zdF91ZGVsYXlfUmVhZTNkZmQ2KHVuc2lnbmVkIGxv
bmcgdXNlY3MpOwpleHRlcm4gdm9pZCBfX2RlbGF5X1I0NjZjMTRhNyh1bnNpZ25lZCBsb25nIGxv
b3BzKTsKIyAxMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kZWxh
eS5oIiAyCiMgMjcgInVzYi11aGNpLmMiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIiAxCiMgMjggInVzYi11aGNpLmMiIDIKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKIyAyOSAidXNi
LXVoY2kuYyIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv
c2xhYi5oIiAxCiMgMzAgInVzYi11aGNpLmMiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu
NC4xMC9pbmNsdWRlL2xpbnV4L3NtcF9sb2NrLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbXBfbG9jay5oIiAyCiMgMzEgInVzYi11aGNpLmMi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Vycm5vLmgi
IDEKIyAzMiAidXNiLXVoY2kuYyIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvdW5pc3RkLmgiIDEKCgoKZXh0ZXJuIGludCBlcnJubzsKCgoKCiMgMSAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdW5pc3RkLmgiIDEKIyAxMCAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91bmlzdGQuaCIgMgojIDMzICJ1
c2ItdWhjaS5jIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9pbnRlcnJ1cHQuaCIgMQoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs
dWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j
bHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEKIyA3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9zbXAuaCIgMQojIDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKIyA5ICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDEyICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAxMyAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgoKc3RydWN0
IGlycWFjdGlvbiB7CiAgICAgICAgdm9pZCAoKmhhbmRsZXIpKGludCwgdm9pZCAqLCBzdHJ1Y3Qg
cHRfcmVncyAqKTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgbWFzazsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIHZvaWQgKmRldl9p
ZDsKICAgICAgICBzdHJ1Y3QgaXJxYWN0aW9uICpuZXh0Owp9OwoKCgoKCmVudW0gewogICAgICAg
IFRJTUVSX0JIID0gMCwKICAgICAgICBUUVVFVUVfQkgsCiAgICAgICAgRElHSV9CSCwKICAgICAg
ICBTRVJJQUxfQkgsCiAgICAgICAgUklTQ09NOF9CSCwKICAgICAgICBTUEVDSUFMSVhfQkgsCiAg
ICAgICAgQVVST1JBX0JILAogICAgICAgIEVTUF9CSCwKICAgICAgICBTQ1NJX0JILAogICAgICAg
IElNTUVESUFURV9CSCwKICAgICAgICBDWUNMQURFU19CSCwKICAgICAgICBDTTIwNl9CSCwKICAg
ICAgICBKU19CSCwKICAgICAgICBNQUNTRVJJQUxfQkgsCiAgICAgICAgSVNJQ09NX0JICn07Cgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMQoK
CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgi
IDEKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgi
IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RocmVhZHMu
aCIgMQojIDYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2hhcmRpcnEu
aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXJxLmgi
IDEKIyAxMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pcnEuaCIK
IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx
CiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXJxLmgiIDIK
CgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgi
IDEKIyAxNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pcnEuaCIg
MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3BpbmxvY2su
aCIgMQojIDE4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lycS5o
IiAyCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2lycS5oIiAx
CiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2lycS5oIgojIDEg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAx
NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaXJxLmgiIDIKIyAyOCAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaXJxLmgiCnN0YXRpYyBfX2lu
bGluZV9fIGludCBpcnFfY2Fubm9uaWNhbGl6ZShpbnQgaXJxKQp7CiAgICAgICAgcmV0dXJuICgo
aXJxID09IDIpID8gOSA6IGlycSk7Cn0KCmV4dGVybiB2b2lkIGRpc2FibGVfaXJxX1IzY2U0Y2E2
Zih1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBkaXNhYmxlX2lycV9ub3N5bmNfUjI3YmJmMjIx
KHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIGVuYWJsZV9pcnFfUmZjZWMwOTg3KHVuc2lnbmVk
IGludCk7CiMgMjAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXJx
LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wdHJhY2Uu
aCIgMQojIDIxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lycS5o
IiAyCiMgMzkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXJxLmgi
CnN0cnVjdCBod19pbnRlcnJ1cHRfdHlwZSB7CiAgICAgICAgY29uc3QgY2hhciAqIHR5cGVuYW1l
OwogICAgICAgIHVuc2lnbmVkIGludCAoKnN0YXJ0dXApKHVuc2lnbmVkIGludCBpcnEpOwogICAg
ICAgIHZvaWQgKCpzaHV0ZG93bikodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKmVu
YWJsZSkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKmRpc2FibGUpKHVuc2lnbmVk
IGludCBpcnEpOwogICAgICAgIHZvaWQgKCphY2spKHVuc2lnbmVkIGludCBpcnEpOwogICAgICAg
IHZvaWQgKCplbmQpKHVuc2lnbmVkIGludCBpcnEpOwogICAgICAgIHZvaWQgKCpzZXRfYWZmaW5p
dHkpKHVuc2lnbmVkIGludCBpcnEsIHVuc2lnbmVkIGxvbmcgbWFzayk7Cn07Cgp0eXBlZGVmIHN0
cnVjdCBod19pbnRlcnJ1cHRfdHlwZSBod19pcnFfY29udHJvbGxlcjsKIyA1OSAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pcnEuaCIKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAgICAgaHdfaXJxX2NvbnRyb2xsZXIgKmhh
bmRsZXI7CiAgICAgICAgc3RydWN0IGlycWFjdGlvbiAqYWN0aW9uOwogICAgICAgIHVuc2lnbmVk
IGludCBkZXB0aDsKICAgICAgICBzcGlubG9ja190IGxvY2s7Cn0gX19hdHRyaWJ1dGVfXygoX19h
bGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpIGlycV9kZXNjX3Q7CgpleHRlcm4gaXJxX2Rlc2NfdCBp
cnFfZGVzYyBbMjI0XTsKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9h
c20vaHdfaXJxLmgiIDEKIyAxNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9h
c20vaHdfaXJxLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMQojIDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz
bS9od19pcnEuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNt
L2F0b21pYy5oIiAxCiMgMTcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNt
L2h3X2lycS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20v
aXJxLmgiIDEKIyAxOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaHdf
aXJxLmgiIDIKIyA2MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaHdf
aXJxLmgiCmV4dGVybiBpbnQgaXJxX3ZlY3RvclsyMjRdOwojIDcxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9od19pcnEuaCIKZXh0ZXJuIHZvaWQgbWFza19pcnEodW5z
aWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIHVubWFza19pcnEodW5zaWduZWQgaW50IGlycSk7
CmV4dGVybiB2b2lkIGRpc2FibGVfODI1OUFfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4g
dm9pZCBlbmFibGVfODI1OUFfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4gaW50IGk4MjU5
QV9pcnFfcGVuZGluZyh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJuIHZvaWQgbWFrZV84MjU5QV9p
cnEodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIGluaXRfODI1OUEoaW50IGFlb2kpOwpl
eHRlcm4gdm9pZCBzZW5kX0lQSV9zZWxmKGludCB2ZWN0b3IpIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKTsKZXh0ZXJuIHZvaWQgaW5pdF9WSVNXU19BUElDX2lycXModm9pZCk7CmV4dGVybiB2
b2lkIHNldHVwX0lPX0FQSUModm9pZCk7CmV4dGVybiB2b2lkIGRpc2FibGVfSU9fQVBJQyh2b2lk
KTsKZXh0ZXJuIHZvaWQgcHJpbnRfSU9fQVBJQyh2b2lkKTsKZXh0ZXJuIGludCBJT19BUElDX2dl
dF9QQ0lfaXJxX3ZlY3RvcihpbnQgYnVzLCBpbnQgc2xvdCwgaW50IGZuKTsKZXh0ZXJuIHZvaWQg
c2VuZF9JUEkoaW50IGRlc3QsIGludCB2ZWN0b3IpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW9f
YXBpY19pcnFzOwoKZXh0ZXJuIGF0b21pY190IGlycV9lcnJfY291bnQ7CmV4dGVybiBhdG9taWNf
dCBpcnFfbWlzX2NvdW50OwoKZXh0ZXJuIGNoYXIgX3N0ZXh0LCBfZXRleHQ7CiMgMTgzICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9od19pcnEuaCIKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgcHJvZl9jcHVfbWFzazsKZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2ZfYnVmZmVy
OwpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJv
Zl9zaGlmdDsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgeDg2X2RvX3Byb2ZpbGUgKHVuc2lnbmVk
IGxvbmcgZWlwKQp7CiAgICAgICAgaWYgKCFwcm9mX2J1ZmZlcikKICAgICAgICAgICAgICAgIHJl
dHVybjsKCgoKCgogICAgICAgIGlmICghKCgxPDwwKSAmIHByb2ZfY3B1X21hc2spKQogICAgICAg
ICAgICAgICAgcmV0dXJuOwoKICAgICAgICBlaXAgLT0gKHVuc2lnbmVkIGxvbmcpICZfc3RleHQ7
CiAgICAgICAgZWlwID4+PSBwcm9mX3NoaWZ0OwoKCgoKCiAgICAgICAgaWYgKGVpcCA+IHByb2Zf
bGVuLTEpCiAgICAgICAgICAgICAgICBlaXAgPSBwcm9mX2xlbi0xOwogICAgICAgIGF0b21pY19p
bmMoKGF0b21pY190ICopJnByb2ZfYnVmZmVyW2VpcF0pOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgaHdfcmVzZW5kX2lycShzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgKmgsIHVuc2lnbmVk
IGludCBpKSB7fQojIDcwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2lycS5oIiAyCgpleHRlcm4gaW50IGhhbmRsZV9JUlFfZXZlbnQodW5zaWduZWQgaW50LCBzdHJ1
Y3QgcHRfcmVncyAqLCBzdHJ1Y3QgaXJxYWN0aW9uICopOwpleHRlcm4gaW50IHNldHVwX2lycSh1
bnNpZ25lZCBpbnQgLCBzdHJ1Y3QgaXJxYWN0aW9uICogKTsKCmV4dGVybiBod19pcnFfY29udHJv
bGxlciBub19pcnFfdHlwZTsKZXh0ZXJuIHZvaWQgbm9fYWN0aW9uKGludCBjcGwsIHZvaWQgKmRl
dl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwojIDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1
bnNpZ25lZCBpbnQgX19zb2Z0aXJxX3BlbmRpbmc7CiAgICAgICAgdW5zaWduZWQgaW50IF9fbG9j
YWxfaXJxX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBfX2xvY2FsX2JoX2NvdW50OwogICAg
ICAgIHVuc2lnbmVkIGludCBfX3N5c2NhbGxfY291bnQ7CiAgICAgICAgc3RydWN0IHRhc2tfc3Ry
dWN0ICogX19rc29mdGlycWRfdGFzazsKICAgICAgICB1bnNpZ25lZCBpbnQgX19ubWlfY291bnQ7
Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpIGlycV9jcHVzdGF0
X3Q7CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXJxX2Nw
dXN0YXQuaCIgMQojIDEyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4
L2lycV9jcHVzdGF0LmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s
aW51eC9jb25maWcuaCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2xpbnV4L2lycV9jcHVzdGF0LmgiIDIKCgoKCgoKCmV4dGVybiBpcnFfY3B1c3RhdF90IGlycV9z
dGF0X1I5ZTM2ZjA2ZVtdOwojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl
L2FzbS9oYXJkaXJxLmgiIDIKIyA0NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk
ZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvYXNtL3NvZnRpcnEuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9hc20vc29mdGlycS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9hc20vaGFyZGlycS5oIiAxCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9hc20vc29mdGlycS5oIiAyCiMgNDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyA1NiAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKZW51bQp7CiAgICAgICAgSElfU09GVElS
UT0wLAogICAgICAgIE5FVF9UWF9TT0ZUSVJRLAogICAgICAgIE5FVF9SWF9TT0ZUSVJRLAogICAg
ICAgIFRBU0tMRVRfU09GVElSUQp9OwoKCgoKCnN0cnVjdCBzb2Z0aXJxX2FjdGlvbgp7CiAgICAg
ICAgdm9pZCAoKmFjdGlvbikoc3RydWN0IHNvZnRpcnFfYWN0aW9uICopOwogICAgICAgIHZvaWQg
KmRhdGE7Cn07CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgZG9fc29mdGlycV9S
ZjBhNTI5Yjcodm9pZCk7CmV4dGVybiB2b2lkIG9wZW5fc29mdGlycShpbnQgbnIsIHZvaWQgKCph
Y3Rpb24pKHN0cnVjdCBzb2Z0aXJxX2FjdGlvbiopLCB2b2lkICpkYXRhKTsKZXh0ZXJuIHZvaWQg
c29mdGlycV9pbml0KHZvaWQpOwoKZXh0ZXJuIHZvaWQgY3B1X3JhaXNlX3NvZnRpcnFfUmQwMWYz
ZWU4KHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBucikgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwpleHRlcm4gdm9pZCByYWlzZV9zb2Z0aXJxX1JkOGU0ZmExYyh1bnNpZ25lZCBp
bnQgbnIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyAxMDMgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCnN0cnVjdCB0YXNrbGV0X3N0
cnVjdAp7CiAgICAgICAgc3RydWN0IHRhc2tsZXRfc3RydWN0ICpuZXh0OwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc3RhdGU7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgdm9pZCAoKmZ1
bmMpKHVuc2lnbmVkIGxvbmcpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YTsKfTsKIyAxMTkg
Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmVu
dW0KewogICAgICAgIFRBU0tMRVRfU1RBVEVfU0NIRUQsCiAgICAgICAgVEFTS0xFVF9TVEFURV9S
VU4KfTsKCnN0cnVjdCB0YXNrbGV0X2hlYWQKewogICAgICAgIHN0cnVjdCB0YXNrbGV0X3N0cnVj
dCAqbGlzdDsKfSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpOwoK
ZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X2hlYWQgdGFza2xldF92ZWNfUjQxZDNiMzY3WzFdOwpleHRl
cm4gc3RydWN0IHRhc2tsZXRfaGVhZCB0YXNrbGV0X2hpX3ZlY19SYmIwNjU3NWZbMV07CiMgMTU1
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIgpl
eHRlcm4gdm9pZCBfX3Rhc2tsZXRfc2NoZWR1bGVfUmVkNWM3M2JmKHN0cnVjdCB0YXNrbGV0X3N0
cnVjdCAqdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKc3RhdGljIGlubGluZSB2b2lk
IHRhc2tsZXRfc2NoZWR1bGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgaWYg
KCF0ZXN0X2FuZF9zZXRfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5zdGF0ZSkpCiAgICAg
ICAgICAgICAgICBfX3Rhc2tsZXRfc2NoZWR1bGVfUmVkNWM3M2JmKHQpOwp9CgpleHRlcm4gdm9p
ZCBfX3Rhc2tsZXRfaGlfc2NoZWR1bGVfUjYwZWE1ZmU3KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAq
dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKc3RhdGljIGlubGluZSB2b2lkIHRhc2ts
ZXRfaGlfc2NoZWR1bGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgaWYgKCF0
ZXN0X2FuZF9zZXRfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5zdGF0ZSkpCiAgICAgICAg
ICAgICAgICBfX3Rhc2tsZXRfaGlfc2NoZWR1bGVfUjYwZWE1ZmU3KHQpOwp9CgoKc3RhdGljIGlu
bGluZSB2b2lkIHRhc2tsZXRfZGlzYWJsZV9ub3N5bmMoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0
KQp7CiAgICAgICAgYXRvbWljX2luYygmdC0+Y291bnQpOwogICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2Rp
c2FibGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgdGFza2xldF9kaXNhYmxl
X25vc3luYyh0KTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0
X2VuYWJsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGF0b21pY19kZWMoJnQtPmNvdW50KTsK
fQoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfaGlfZW5hYmxlKHN0cnVjdCB0YXNrbGV0X3N0
cnVjdCAqdCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7
CiAgICAgICAgYXRvbWljX2RlYygmdC0+Y291bnQpOwp9CgpleHRlcm4gdm9pZCB0YXNrbGV0X2tp
bGxfUjc5YWQyMjRiKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCk7CmV4dGVybiB2b2lkIHRhc2ts
ZXRfaW5pdF9SYTU4MDhiYmYoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAoKmZ1bmMpKHVuc2lnbmVkIGxvbmcpLCB1bnNpZ25lZCBsb25nIGRh
dGEpOwojIDIyMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pbnRl
cnJ1cHQuaCIKZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X3N0cnVjdCBiaF90YXNrX3ZlY19SMjg0MTc3
YjhbXTsKCgpleHRlcm4gc3BpbmxvY2tfdCBnbG9iYWxfYmhfbG9jazsKCnN0YXRpYyBpbmxpbmUg
dm9pZCBtYXJrX2JoKGludCBucikKewogICAgICAgIHRhc2tsZXRfaGlfc2NoZWR1bGUoYmhfdGFz
a192ZWNfUjI4NDE3N2I4K25yKTsKfQoKZXh0ZXJuIHZvaWQgaW5pdF9iaF9SZjZjZjI3Y2MoaW50
IG5yLCB2b2lkICgqcm91dGluZSkodm9pZCkpOwpleHRlcm4gdm9pZCByZW1vdmVfYmhfUmJjNTI0
YTMyKGludCBucik7CiMgMjYzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp
bnV4L2ludGVycnVwdC5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9iZV9pcnFfb25fUmIxMjEz
OTBhKHZvaWQpOwpleHRlcm4gaW50IHByb2JlX2lycV9vZmZfUmFiNjAwNDIxKHVuc2lnbmVkIGxv
bmcpOwpleHRlcm4gdW5zaWduZWQgaW50IHByb2JlX2lycV9tYXNrX1IzNjBiMWFmZSh1bnNpZ25l
ZCBsb25nKTsKIyAzNCAidXNiLXVoY2kuYyIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvaW5pdC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvaW5pdC5oIiAyCiMgMTMxICIvdXNyL3NyYy9ydWRvL2xpbnV4
LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2luaXQuaCIKdHlwZWRlZiBpbnQgKCpfX2luaXRfbW9kdWxl
X2Z1bmNfdCkodm9pZCk7CnR5cGVkZWYgdm9pZCAoKl9fY2xlYW51cF9tb2R1bGVfZnVuY190KSh2
b2lkKTsKIyAzNSAidXNiLXVoY2kuYyIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw
L2luY2x1ZGUvbGludXgvdmVyc2lvbi5oIiAxCiMgMzYgInVzYi11aGNpLmMiIDIKIyAxICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BtLmgiIDEKIyAyNiAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wbS5oIgojIDEgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAyNyAiL3Vzci9zcmMv
cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wbS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAyOCAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wbS5oIiAyCgoKCgplbnVtCnsKICAgICAgICBQ
TV9TVVNQRU5ELAogICAgICAgIFBNX1JFU1VNRSwKCiAgICAgICAgUE1fU0FWRV9TVEFURSwKCgog
ICAgICAgIFBNX1NFVF9XQUtFVVAsCgoKICAgICAgICBQTV9HRVRfUkVTT1VSQ0VTLAogICAgICAg
IFBNX1NFVF9SRVNPVVJDRVMsCgoKICAgICAgICBQTV9FSkVDVCwKICAgICAgICBQTV9MT0NLLAp9
OwoKdHlwZWRlZiBpbnQgcG1fcmVxdWVzdF90OwoKCgoKZW51bQp7CiAgICAgICAgUE1fVU5LTk9X
Tl9ERVYgPSAwLAogICAgICAgIFBNX1NZU19ERVYsCiAgICAgICAgUE1fUENJX0RFViwKICAgICAg
ICBQTV9VU0JfREVWLAogICAgICAgIFBNX1NDU0lfREVWLAogICAgICAgIFBNX0lTQV9ERVYsCiAg
ICAgICAgUE1fTVREX0RFViwKfTsKCnR5cGVkZWYgaW50IHBtX2Rldl90OwoKCgoKZW51bQp7CiAg
ICAgICAgUE1fU1lTX1VOS05PV04gPSAweDAwMDAwMDAwLAogICAgICAgIFBNX1NZU19LQkMgPSAw
eDQxZDAwMzAzLAogICAgICAgIFBNX1NZU19DT00gPSAweDQxZDAwNTAwLAogICAgICAgIFBNX1NZ
U19JUkRBID0gMHg0MWQwMDUxMCwKICAgICAgICBQTV9TWVNfRkRDID0gMHg0MWQwMDcwMCwKICAg
ICAgICBQTV9TWVNfVkdBID0gMHg0MWQwMDkwMCwKICAgICAgICBQTV9TWVNfUENNQ0lBID0gMHg0
MWQwMGUwMCwKfTsKIyA5MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51
eC9wbS5oIgpzdHJ1Y3QgcG1fZGV2OwoKdHlwZWRlZiBpbnQgKCpwbV9jYWxsYmFjaykoc3RydWN0
IHBtX2RldiAqZGV2LCBwbV9yZXF1ZXN0X3QgcnFzdCwgdm9pZCAqZGF0YSk7CgoKCgpzdHJ1Y3Qg
cG1fZGV2CnsKICAgICAgICBwbV9kZXZfdCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaWQ7
CiAgICAgICAgcG1fY2FsbGJhY2sgY2FsbGJhY2s7CiAgICAgICAgdm9pZCAqZGF0YTsKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBpbnQgc3RhdGU7CiAgICAgICAgaW50IHBy
ZXZfc3RhdGU7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZW50cnk7Cn07CgoKCmV4dGVybiBp
bnQgcG1fYWN0aXZlX1JlYmQzODdmNjsKCgoKCgoKc3RydWN0IHBtX2RldiAqcG1fcmVnaXN0ZXJf
UjhkYmFiMTFjKHBtX2Rldl90IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtX2NhbGxiYWNrIGNhbGxi
YWNrKTsKCgoKCnZvaWQgcG1fdW5yZWdpc3Rlcl9SZWNjZDFlNjQoc3RydWN0IHBtX2RldiAqZGV2
KTsKCgoKCnZvaWQgcG1fdW5yZWdpc3Rlcl9hbGxfUjljMGJhNWIyKHBtX2NhbGxiYWNrIGNhbGxi
YWNrKTsKCgoKCmludCBwbV9zZW5kX1IzOGZmM2VkMShzdHJ1Y3QgcG1fZGV2ICpkZXYsIHBtX3Jl
cXVlc3RfdCBycXN0LCB2b2lkICpkYXRhKTsKCgoKCmludCBwbV9zZW5kX2FsbF9SZWNiZjljYWQo
cG1fcmVxdWVzdF90IHJxc3QsIHZvaWQgKmRhdGEpOwoKCgoKc3RydWN0IHBtX2RldiAqcG1fZmlu
ZF9SMWE1NTc4MGEocG1fZGV2X3QgdHlwZSwgc3RydWN0IHBtX2RldiAqZnJvbSk7CgpzdGF0aWMg
aW5saW5lIHZvaWQgcG1fYWNjZXNzKHN0cnVjdCBwbV9kZXYgKmRldikge30Kc3RhdGljIGlubGlu
ZSB2b2lkIHBtX2Rldl9pZGxlKHN0cnVjdCBwbV9kZXYgKmRldikge30KIyAxODggIi91c3Ivc3Jj
L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcG0uaCIKZXh0ZXJuIHZvaWQgKCpwbV9p
ZGxlX1JmODkwZmU3Zikodm9pZCk7CmV4dGVybiB2b2lkICgqcG1fcG93ZXJfb2ZmX1I2MGEzMmVh
OSkodm9pZCk7CiMgMzcgInVzYi11aGNpLmMiIDIKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y
LjQuMTAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIiAxCgoKCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9s
aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDggIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQojIDkgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMQojIDEwICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAxICIvdXNyL3NyYy9y
dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyAxMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIiAyCiMgMzUgIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIGludCBfX3Zlcmlm
eV93cml0ZV9SMjAzYWZiZWIoY29uc3Qgdm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKIyA2MiAiL3Vz
ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdGF0aWMgaW5s
aW5lIGludCB2ZXJpZnlfYXJlYShpbnQgdHlwZSwgY29uc3Qgdm9pZCAqIGFkZHIsIHVuc2lnbmVk
IGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiAoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1bTsg
YXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9
JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiIChhZGRyKSwiZyIgKChpbnQpKHNpemUpKSwiZyIg
KGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZsYWc7IH0pID09IDApID8gMCA6IC0x
NDsKfQojIDgxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS91YWNjZXNz
LmgiCnN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkKewogICAgICAgIHVuc2lnbmVkIGxvbmcg
aW5zbiwgZml4dXA7Cn07CgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2VhcmNoX2V4Y2VwdGlvbl90
YWJsZSh1bnNpZ25lZCBsb25nKTsKIyAxMDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIHZvaWQgX19nZXRfdXNlcl8xKHZvaWQpOwpleHRl
cm4gdm9pZCBfX2dldF91c2VyXzIodm9pZCk7CmV4dGVybiB2b2lkIF9fZ2V0X3VzZXJfNCh2b2lk
KTsKIyAxMjcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3VhY2Nlc3Mu
aCIKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl8xKHZvaWQpOwpleHRlcm4gdm9pZCBfX3B1dF91c2Vy
XzIodm9pZCk7CmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfNCh2b2lkKTsKZXh0ZXJuIHZvaWQgX19w
dXRfdXNlcl84KHZvaWQpOwoKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl9iYWQodm9pZCk7CiMgMTg4
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0cnVj
dCBfX2xhcmdlX3N0cnVjdCB7IHVuc2lnbmVkIGxvbmcgYnVmWzEwMF07IH07CiMgMjIwICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCmV4dGVybiBsb25n
IF9fZ2V0X3VzZXJfYmFkKHZvaWQpOwojIDMwOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19nZW5l
cmljX2NvcHlfZnJvbV91c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVu
c2lnbmVkIGxvbmcgbikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9fYXNtX18gX192
b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIgIjE6CXJlcDsgbW92
c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglsZWEgMCglMywlMCw0
KSwlMFxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVl
YXhcbiIgIglyZXA7IHN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglqbXAg
MmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGln
biA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9
JmMiKG4pLCAiPSZEIiAoX19kMCksICI9JlMiIChfX2QxKSA6ICJyIihuICYgMyksICIwIihuIC8g
NCksICIxIih0byksICIyIihmcm9tKSA6ICJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
cmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2dlbmVyaWNfY29weV90
b191c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcg
bikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9fYXNtX18gX192b2xhdGlsZV9fKCAi
MDoJcmVwOyBtb3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIgIjE6CXJlcDsgbW92c2JcbiIgIjI6XG4i
ICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglsZWEgMCglMywlMCw0KSwlMFxuIiAiCWpt
cCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFs
aWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDJiXG4iICIucHJldmlvdXMiIDog
Ij0mYyIobiksICI9JkQiIChfX2QwKSwgIj0mUyIgKF9fZDEpIDogInIiKG4gJiAzKSwgIjAiKG4g
LyA0KSwgIjEiKHRvKSwgIjIiKGZyb20pIDogIm1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAg
ICByZXR1cm4gbjsKfQojIDU0MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9h
c20vdWFjY2Vzcy5oIgp1bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19jb3B5X3RvX3VzZXJfUmQ1MjNm
ZGQzKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgbG9uZyBf
X2dlbmVyaWNfY29weV9mcm9tX3VzZXJfUjExNjE2NmFhKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCB1
bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2NvbnN0YW50X2Nv
cHlfdG9fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7
CiAgICAgICAgcHJlZmV0Y2goZnJvbSk7CiAgICAgICAgaWYgKCgoeyB1bnNpZ25lZCBsb25nIGZs
YWcsc3VtOyBhc20oImFkZGwgJTMsJTEgOyBzYmJsICUwLCUwOyBjbXBsICUxLCU0OyBzYmJsICQw
LCUwIiA6Ij0mciIgKGZsYWcpLCAiPXIiIChzdW0pIDoiMSIgKHRvKSwiZyIgKChpbnQpKG4pKSwi
ZyIgKGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZsYWc7IH0pID09IDApKQogICAg
ICAgICAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlv
biAuZml4dXAsXCJheFwiXG4iICIyOglzaGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91
c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcg
MGIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2Qx
KSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNl
IDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIg
IjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWlu
Y2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxc
ImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAi
LnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZy
b20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21f
XyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5z
ZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXNobCAkMiwlMFxuIiAiNDoJYWRkbCAkMiwlMFxu
IiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4i
ICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlv
dXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIy
Iih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpc
biIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXNobCAkMiwlMFxuIiAiNToJYWRkbCAk
MiwlMFxuIiAiNjoJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlv
biBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5s
b25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZT
IiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAi
bWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcih2b2lkICp0
bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgaWYgKCgoeyB1
bnNpZ25lZCBsb25nIGZsYWcsc3VtOyBhc20oImFkZGwgJTMsJTEgOyBzYmJsICUwLCUwOyBjbXBs
ICUxLCU0OyBzYmJsICQwLCUwIiA6Ij0mciIgKGZsYWcpLCAiPXIiIChzdW0pIDoiMSIgKGZyb20p
LCJnIiAoKGludCkobikpLCJnIiAoZ2V0X2N1cnJlbnQoKS0+YWRkcl9saW1pdC5zZWcpKTsgZmxh
ZzsgfSkgPT0gMCkpCiAgICAgICAgICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBzd2l0Y2gg
KG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxu
IiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXB1c2hsICUwXG4iICIJcHVz
aGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXBvcGwg
JSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlv
dXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25n
IDBiLDJiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19k
MSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2Fz
ZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4i
ICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNo
bCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc2Jc
biIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWluY2wgJTBc
biIgIglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAi
CXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2
aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxv
bmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMi
IChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJt
ZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1v
dnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6
CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVw
OyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwg
JDIsJTBcbiIgIglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAi
CXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQy
LCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJh
XCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5w
cmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9t
KSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18g
X192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4i
ICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNo
bCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dc
biIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4i
ICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNToJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUl
ZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRs
ICQzLCUwXG4iICIJam1wIDJiXG4iICI2OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVl
YXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDNiXG4i
ICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxu
IiAiCS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnBy
ZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20p
LCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9f
YnVpbHRpbl9jb25zdGFudF9wKChuKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgo
KHRvKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChuKSkpIDogX19jb25z
dGFudF9jX21lbXNldCgoKHRvKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSks
KChuKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgobikpID8gX19tZW1zZXRfZ2VuZXJpYygo
KCh0bykpKSwoKCgwKSkpLCgoKG4pKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHRvKSksKCgwKSks
KChuKSkpKSk7CiAgICAgICAgcmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u
ZwpfX2NvbnN0YW50X2NvcHlfdG9fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpm
cm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBzd2l0
Y2ggKG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3Zz
bFxuIiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXNobCAkMiwlMFxuIiAi
CWptcCAxYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJ
LmFsaWduIDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMi
IChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJt
ZW1vcnkiKTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1v
dnNsXG4iICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6
CXNobCAkMiwlMFxuIiAiNDoJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIu
c2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxu
IiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAi
PSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBi
cmVhazsgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6
CW1vdnN3XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUw
XG4iICI0OglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9u
IF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxv
bmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChf
X2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBj
YXNlIDM6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dc
biIgIjI6CW1vdnNiXG4iICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJc2hs
ICQyLCUwXG4iICI1OglhZGRsICQyLCUwXG4iICI2OglpbmNsICUwXG4iICIJam1wIDNiXG4iICIu
cHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAi
CS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnByZXZp
b3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAi
MiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgICAg
ICAgcmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2NvbnN0YW50X2Nv
cHlfZnJvbV91c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVk
IGxvbmcgbikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsg
ZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAi
LnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMjoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxu
IiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJcG9wbCAlJWVheFxuIiAi
CXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91c1xuIiAiLnNl
Y3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsMmJcbiIg
Ii5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihm
cm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDE6IF9fYXNt
X18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIgIjI6XG4iICIu
c2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4i
ICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zYlxuIiAiCXBvcGwg
JSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJaW5jbCAlMFxuIiAiCWptcCAy
YlxuIiAiNDoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIg
Iglwb3BsICUlZWF4XG4iICIJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIu
c2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxu
IiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAi
PSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBi
cmVhazsgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6
CW1vdnN3XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBc
biIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4i
ICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAi
CWFkZGwgJDIsJTBcbiIgIglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVh
eCwlJWVheFxuIiAiCXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCWFkZGwgJDIsJTBcbiIgIglq
bXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5h
bGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6
ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8p
LCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0aWxl
X18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4iICIu
c2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICI0OglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4i
ICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXN0b3Ni
XG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglhZGRsICQz
LCUwXG4iICIJam1wIDJiXG4iICI1OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc
biIgIglzdG9zd1xuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWFkZGwgJDMsJTBcbiIg
IglqbXAgMmJcbiIgIjY6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0
b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91
c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcg
MGIsNGJcbiIgIgkubG9uZyAxYiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDog
Ij1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byks
ICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICByZXR1
cm4gbjsKfQojIDU5OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdWFj
Y2Vzcy5oIgpsb25nIHN0cm5jcHlfZnJvbV91c2VyX1IyNDQyOGJlNShjaGFyICpkc3QsIGNvbnN0
IGNoYXIgKnNyYywgbG9uZyBjb3VudCk7CmxvbmcgX19zdHJuY3B5X2Zyb21fdXNlcl9SYzAwM2M2
MzcoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIGxvbmcgY291bnQpOwoKbG9uZyBzdHJubGVu
X3VzZXJfUmJjYzMwOGJiKGNvbnN0IGNoYXIgKnN0ciwgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBj
bGVhcl91c2VyX1I3YWVjOTA4OSh2b2lkICptZW0sIHVuc2lnbmVkIGxvbmcgbGVuKTsKdW5zaWdu
ZWQgbG9uZyBfX2NsZWFyX3VzZXJfUmYzMzQxMjY4KHZvaWQgKm1lbSwgdW5zaWduZWQgbG9uZyBs
ZW4pOwojIDM5ICJ1c2ItdWhjaS5jIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv
aW5jbHVkZS9hc20vaW8uaCIgMQojIDQwICJ1c2ItdWhjaS5jIiAyCiMgMSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaXJxLmgiIDEKIyA0MSAidXNiLXVoY2kuYyIgMgoj
IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMg
NDIgInVzYi11aGNpLmMiIDIKIyA1NyAidXNiLXVoY2kuYyIKIyAxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIiAxCiMgMTMxICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEzMiAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvaW9jdGwuaCIgMQojIDEzMyAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt
Mi40LjEwL2luY2x1ZGUvbGludXgvdmVyc2lvbi5oIiAxCiMgMTM0ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAxCiMgMTM1ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kZWxheS5oIiAxCiMgMTM2ICIvdXNyL3NyYy9ydWRvL2xp
bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51
eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMQojIDEzNyAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v
bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMzggIi91c3Ivc3JjL3J1
ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdXNiLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRv
L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDEzOSAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIgMgoKCgpzdGF0aWMgX19pbmxpbmVf
XyB2b2lkIHdhaXRfbXModW5zaWduZWQgaW50IG1zKQp7CiAgICAgICAgaWYoISh7IGludCBfX2Nw
dSA9IDA7ICgoKHZvaWQpKChfX2NwdSkpLCBpcnFfc3RhdF9SOWUzNmYwNmVbMF0uX19sb2NhbF9p
cnFfY291bnQpICsgKCh2b2lkKSgoX19jcHUpKSwgaXJxX3N0YXRfUjllMzZmMDZlWzBdLl9fbG9j
YWxfYmhfY291bnQpICE9IDApOyB9KSkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+
c3RhdGUgPSAyOwogICAgICAgICAgICAgICAgc2NoZWR1bGVfdGltZW91dF9SMTdkNTlkMDEoMSAr
IG1zICogMTAwIC8gMTAwMCk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICggKF9fYnVpbHRpbl9jb25zdGFudF9wKG1zKSAmJiAobXMpPD01KSA/IChfX2J1aWx0aW5fY29u
c3RhbnRfcCgobXMpKjEwMDApID8gKCgobXMpKjEwMDApID4gMjAwMDAgPyBfX2JhZF91ZGVsYXko
KSA6IF9fY29uc3RfdWRlbGF5X1JlYWUzZGZkNigoKG1zKSoxMDAwKSAqIDB4MTBjNnVsKSkgOiBf
X3VkZWxheV9SOWU3ZDZiZDAoKG1zKSoxMDAwKSkgOiAoe3Vuc2lnbmVkIGxvbmcgbXNlYz0obXMp
OyB3aGlsZSAobXNlYy0tKSAoX19idWlsdGluX2NvbnN0YW50X3AoMTAwMCkgPyAoKDEwMDApID4g
MjAwMDAgPyBfX2JhZF91ZGVsYXkoKSA6IF9fY29uc3RfdWRlbGF5X1JlYWUzZGZkNigoMTAwMCkg
KiAweDEwYzZ1bCkpIDogX191ZGVsYXlfUjllN2Q2YmQwKDEwMDApKTt9KSk7Cn0KCnR5cGVkZWYg
c3RydWN0IHsKICAgICAgICBfX3U4IHJlcXVlc3R0eXBlOwogICAgICAgIF9fdTggcmVxdWVzdDsK
ICAgICAgICBfX3UxNiB2YWx1ZTsKICAgICAgICBfX3UxNiBpbmRleDsKICAgICAgICBfX3UxNiBs
ZW5ndGg7Cn0gZGV2cmVxdWVzdCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiMgMTkwICIvdXNy
L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIgpzdHJ1Y3QgdXNiX2Rl
dm1hcCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkZXZpY2VtYXBbMTI4IC8gKDgqc2l6ZW9mKHVu
c2lnbmVkIGxvbmcpKV07Cn07CgoKCnN0cnVjdCB1c2JfYnVzbWFwIHsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGJ1c21hcFs2NCAvICg4KnNpemVvZih1bnNpZ25lZCBsb25nKSldOwp9OwojIDIxNCAi
L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIKc3RydWN0IHVz
Yl9kZXNjcmlwdG9yX2hlYWRlciB7CiAgICAgICAgX191OCBiTGVuZ3RoOwogICAgICAgIF9fdTgg
YkRlc2NyaXB0b3JUeXBlOwp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKCgpzdHJ1Y3QgdXNi
X2RldmljZV9kZXNjcmlwdG9yIHsKICAgICAgICBfX3U4IGJMZW5ndGg7CiAgICAgICAgX191OCBi
RGVzY3JpcHRvclR5cGU7CiAgICAgICAgX191MTYgYmNkVVNCOwogICAgICAgIF9fdTggYkRldmlj
ZUNsYXNzOwogICAgICAgIF9fdTggYkRldmljZVN1YkNsYXNzOwogICAgICAgIF9fdTggYkRldmlj
ZVByb3RvY29sOwogICAgICAgIF9fdTggYk1heFBhY2tldFNpemUwOwogICAgICAgIF9fdTE2IGlk
VmVuZG9yOwogICAgICAgIF9fdTE2IGlkUHJvZHVjdDsKICAgICAgICBfX3UxNiBiY2REZXZpY2U7
CiAgICAgICAgX191OCBpTWFudWZhY3R1cmVyOwogICAgICAgIF9fdTggaVByb2R1Y3Q7CiAgICAg
ICAgX191OCBpU2VyaWFsTnVtYmVyOwogICAgICAgIF9fdTggYk51bUNvbmZpZ3VyYXRpb25zOwp9
IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKCgpzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0
b3IgewogICAgICAgIF9fdTggYkxlbmd0aCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAg
ICAgX191OCBiRGVzY3JpcHRvclR5cGUgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogICAgICAg
IF9fdTggYkVuZHBvaW50QWRkcmVzcyBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAg
X191OCBibUF0dHJpYnV0ZXMgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogICAgICAgIF9fdTE2
IHdNYXhQYWNrZXRTaXplIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGJJ
bnRlcnZhbCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBiUmVmcmVzaCBf
X2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBiU3luY2hBZGRyZXNzIF9fYXR0
cmlidXRlX18gKChwYWNrZWQpKTsKCiAgICAgICAgdW5zaWduZWQgY2hhciAqZXh0cmE7CiAgICAg
ICAgaW50IGV4dHJhbGVuOwp9OwoKCnN0cnVjdCB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3Igewog
ICAgICAgIF9fdTggYkxlbmd0aCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191
OCBiRGVzY3JpcHRvclR5cGUgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogICAgICAgIF9fdTgg
YkludGVyZmFjZU51bWJlciBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBi
QWx0ZXJuYXRlU2V0dGluZyBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBi
TnVtRW5kcG9pbnRzIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGJJbnRl
cmZhY2VDbGFzcyBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBiSW50ZXJm
YWNlU3ViQ2xhc3MgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogICAgICAgIF9fdTggYkludGVy
ZmFjZVByb3RvY29sIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGlJbnRl
cmZhY2UgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoKICAgICAgICBzdHJ1Y3QgdXNiX2VuZHBv
aW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50OwoKICAgICAgICB1bnNpZ25lZCBjaGFyICpleHRyYTsK
ICAgICAgICBpbnQgZXh0cmFsZW47Cn07CgpzdHJ1Y3QgdXNiX2ludGVyZmFjZSB7CiAgICAgICAg
c3RydWN0IHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvciAqYWx0c2V0dGluZzsKCiAgICAgICAgaW50
IGFjdF9hbHRzZXR0aW5nOwogICAgICAgIGludCBudW1fYWx0c2V0dGluZzsKICAgICAgICBpbnQg
bWF4X2FsdHNldHRpbmc7CgogICAgICAgIHN0cnVjdCB1c2JfZHJpdmVyICpkcml2ZXI7CiAgICAg
ICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwp9OwoKCnN0cnVjdCB1c2JfY29uZmlnX2Rlc2NyaXB0b3Ig
ewogICAgICAgIF9fdTggYkxlbmd0aCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAg
X191OCBiRGVzY3JpcHRvclR5cGUgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogICAgICAgIF9f
dTE2IHdUb3RhbExlbmd0aCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBi
TnVtSW50ZXJmYWNlcyBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBiQ29u
ZmlndXJhdGlvblZhbHVlIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGlD
b25maWd1cmF0aW9uIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGJtQXR0
cmlidXRlcyBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBNYXhQb3dlciBf
X2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CgogICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICpp
bnRlcmZhY2U7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgKmV4dHJhOwogICAgICAgIGludCBleHRy
YWxlbjsKfTsKCgpzdHJ1Y3QgdXNiX3N0cmluZ19kZXNjcmlwdG9yIHsKICAgICAgICBfX3U4IGJM
ZW5ndGg7CiAgICAgICAgX191OCBiRGVzY3JpcHRvclR5cGU7CiAgICAgICAgX191MTYgd0RhdGFb
MV07Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoKc3RydWN0IHVzYl9kZXZpY2U7CiMgMzQ4
ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIgpzdHJ1Y3Qg
dXNiX2RldmljZV9pZCB7CgoKCiAgICAgICAgX191MTYgbWF0Y2hfZmxhZ3M7CgoKCgoKCiAgICAg
ICAgX191MTYgaWRWZW5kb3I7CiAgICAgICAgX191MTYgaWRQcm9kdWN0OwogICAgICAgIF9fdTE2
IGJjZERldmljZV9sbywgYmNkRGV2aWNlX2hpOwoKCgoKCiAgICAgICAgX191OCBiRGV2aWNlQ2xh
c3M7CiAgICAgICAgX191OCBiRGV2aWNlU3ViQ2xhc3M7CiAgICAgICAgX191OCBiRGV2aWNlUHJv
dG9jb2w7CgoKCgoKICAgICAgICBfX3U4IGJJbnRlcmZhY2VDbGFzczsKICAgICAgICBfX3U4IGJJ
bnRlcmZhY2VTdWJDbGFzczsKICAgICAgICBfX3U4IGJJbnRlcmZhY2VQcm90b2NvbDsKCgoKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBkcml2ZXJfaW5mbzsKfTsKCnN0cnVjdCB1c2JfZHJpdmVyIHsK
ICAgICAgICBjb25zdCBjaGFyICpuYW1lOwoKICAgICAgICB2b2lkICooKnByb2JlKSgKICAgICAg
ICAgICAgc3RydWN0IHVzYl9kZXZpY2UgKmRldiwKICAgICAgICAgICAgdW5zaWduZWQgaW50ZiwK
ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkCiAgICAgICAgICAgICk7
CiAgICAgICAgdm9pZCAoKmRpc2Nvbm5lY3QpKHN0cnVjdCB1c2JfZGV2aWNlICosIHZvaWQgKik7
CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZHJpdmVyX2xpc3Q7CgogICAgICAgIHN0cnVjdCBm
aWxlX29wZXJhdGlvbnMgKmZvcHM7CiAgICAgICAgaW50IG1pbm9yOwoKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIHNlcmlhbGl6ZTsKCgogICAgICAgIGludCAoKmlvY3RsKShzdHJ1Y3QgdXNiX2Rl
dmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgY29kZSwgdm9pZCAqYnVmKTsKCgoKCiAgICAgICAgY29u
c3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkX3RhYmxlOwoKCgoKCn07CiMgNDMxICIvdXNyL3Ny
Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIgp0eXBlZGVmIHN0cnVjdAp7
CiAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldDsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3Ro
OwogICAgICAgIHVuc2lnbmVkIGludCBhY3R1YWxfbGVuZ3RoOwogICAgICAgIHVuc2lnbmVkIGlu
dCBzdGF0dXM7Cn0gaXNvX3BhY2tldF9kZXNjcmlwdG9yX3QsICpwaXNvX3BhY2tldF9kZXNjcmlw
dG9yX3Q7CgpzdHJ1Y3QgdXJiOwp0eXBlZGVmIHZvaWQgKCp1c2JfY29tcGxldGVfdCkoc3RydWN0
IHVyYiAqKTsKCnR5cGVkZWYgc3RydWN0IHVyYgp7CiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwog
ICAgICAgIHZvaWQgKmhjcHJpdjsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHVyYl9saXN0Owog
ICAgICAgIHN0cnVjdCB1cmIgKm5leHQ7CiAgICAgICAgc3RydWN0IHVzYl9kZXZpY2UgKmRldjsK
ICAgICAgICB1bnNpZ25lZCBpbnQgcGlwZTsKICAgICAgICBpbnQgc3RhdHVzOwogICAgICAgIHVu
c2lnbmVkIGludCB0cmFuc2Zlcl9mbGFnczsKICAgICAgICB2b2lkICp0cmFuc2Zlcl9idWZmZXI7
CiAgICAgICAgaW50IHRyYW5zZmVyX2J1ZmZlcl9sZW5ndGg7CiAgICAgICAgaW50IGFjdHVhbF9s
ZW5ndGg7CiAgICAgICAgaW50IGJhbmR3aWR0aDsKICAgICAgICB1bnNpZ25lZCBjaGFyICpzZXR1
cF9wYWNrZXQ7CgogICAgICAgIGludCBzdGFydF9mcmFtZTsKICAgICAgICBpbnQgbnVtYmVyX29m
X3BhY2tldHM7CiAgICAgICAgaW50IGludGVydmFsOwogICAgICAgIGludCBlcnJvcl9jb3VudDsK
ICAgICAgICBpbnQgdGltZW91dDsKCiAgICAgICAgdm9pZCAqY29udGV4dDsKICAgICAgICB1c2Jf
Y29tcGxldGVfdCBjb21wbGV0ZV9SOTQyNjEzYWQ7CgogICAgICAgIGlzb19wYWNrZXRfZGVzY3Jp
cHRvcl90IGlzb19mcmFtZV9kZXNjWzBdOwp9IHVyYl90LCAqcHVyYl90OwojIDUzMSAiL3Vzci9z
cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIKcHVyYl90IHVzYl9hbGxv
Y191cmJfUjEzOWE0NDRmKGludCBpc29fcGFja2V0cyk7CnZvaWQgdXNiX2ZyZWVfdXJiX1IzZDVj
MGM1OCAocHVyYl90IHB1cmIpOwppbnQgdXNiX3N1Ym1pdF91cmJfUjMzMjdkNjE4KHB1cmJfdCBw
dXJiKTsKaW50IHVzYl91bmxpbmtfdXJiX1I5Nzg2OTgyNShwdXJiX3QgcHVyYik7CmludCB1c2Jf
aW50ZXJuYWxfY29udHJvbF9tc2coc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYsIHVuc2lnbmVk
IGludCBwaXBlLCBkZXZyZXF1ZXN0ICpjbWQsIHZvaWQgKmRhdGEsIGludCBsZW4sIGludCB0aW1l
b3V0KTsKaW50IHVzYl9idWxrX21zZ19SNTg5Y2JkZTQoc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9k
ZXYsIHVuc2lnbmVkIGludCBwaXBlLCB2b2lkICpkYXRhLCBpbnQgbGVuLCBpbnQgKmFjdHVhbF9s
ZW5ndGgsIGludCB0aW1lb3V0KTsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgd2FpdF9xdWV1ZV9o
ZWFkX3QgKndha2V1cDsKCiAgdm9pZCogc3R1ZmY7Cgp9IGFwaV93cmFwcGVyX2RhdGE7CgoKCnN0
cnVjdCB1c2Jfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqYWxsb2NhdGUpKHN0cnVjdCB1c2Jf
ZGV2aWNlICopOwogICAgICAgIGludCAoKmRlYWxsb2NhdGUpKHN0cnVjdCB1c2JfZGV2aWNlICop
OwogICAgICAgIGludCAoKmdldF9mcmFtZV9udW1iZXIpIChzdHJ1Y3QgdXNiX2RldmljZSAqdXNi
X2Rldik7CiAgICAgICAgaW50ICgqc3VibWl0X3VyYikgKHN0cnVjdCB1cmIqIHB1cmIpOwogICAg
ICAgIGludCAoKnVubGlua191cmIpIChzdHJ1Y3QgdXJiKiBwdXJiKTsKfTsKCgoKCgoKc3RydWN0
IHVzYl9idXMgewogICAgICAgIGludCBidXNudW07CgoKICAgICAgICBpbnQgZGV2bnVtX25leHQ7
CgoKICAgICAgICBzdHJ1Y3QgdXNiX2Rldm1hcCBkZXZtYXA7CiAgICAgICAgc3RydWN0IHVzYl9v
cGVyYXRpb25zICpvcDsKICAgICAgICBzdHJ1Y3QgdXNiX2RldmljZSAqcm9vdF9odWI7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBidXNfbGlzdDsKICAgICAgICB2b2lkICpoY3ByaXY7CgogICAg
ICAgIGludCBiYW5kd2lkdGhfYWxsb2NhdGVkOwoKCgoKICAgICAgICBpbnQgYmFuZHdpZHRoX2lu
dF9yZXFzOwogICAgICAgIGludCBiYW5kd2lkdGhfaXNvY19yZXFzOwoKCiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBpbm9kZXM7CgogICAgICAgIGF0b21pY190IHJlZmNudDsKfTsKCgoKCgoKCnN0
cnVjdCB1c2JfZGV2aWNlIHsKICAgICAgICBpbnQgZGV2bnVtOwoKICAgICAgICBlbnVtIHsKICAg
ICAgICAgICAgICAgIFVTQl9TUEVFRF9VTktOT1dOID0gMCwKICAgICAgICAgICAgICAgIFVTQl9T
UEVFRF9MT1csIFVTQl9TUEVFRF9GVUxMLAogICAgICAgICAgICAgICAgVVNCX1NQRUVEX0hJR0gK
ICAgICAgICB9IHNwZWVkOwoKICAgICAgICBzdHJ1Y3QgdXNiX2RldmljZSAqdHQ7CiAgICAgICAg
aW50IHR0cG9ydDsKCiAgICAgICAgYXRvbWljX3QgcmVmY250OwogICAgICAgIHN0cnVjdCBzZW1h
cGhvcmUgc2VyaWFsaXplOwoKICAgICAgICB1bnNpZ25lZCBpbnQgdG9nZ2xlWzJdOwogICAgICAg
IHVuc2lnbmVkIGludCBoYWx0ZWRbMl07CgogICAgICAgIGludCBlcG1heHBhY2tldGluWzE2XTsK
ICAgICAgICBpbnQgZXBtYXhwYWNrZXRvdXRbMTZdOwoKICAgICAgICBzdHJ1Y3QgdXNiX2Rldmlj
ZSAqcGFyZW50OwogICAgICAgIHN0cnVjdCB1c2JfYnVzICpidXM7CgogICAgICAgIHN0cnVjdCB1
c2JfZGV2aWNlX2Rlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICAgICBzdHJ1Y3QgdXNiX2NvbmZp
Z19kZXNjcmlwdG9yICpjb25maWc7CiAgICAgICAgc3RydWN0IHVzYl9jb25maWdfZGVzY3JpcHRv
ciAqYWN0Y29uZmlnOwoKICAgICAgICBjaGFyICoqcmF3ZGVzY3JpcHRvcnM7CgogICAgICAgIGlu
dCBoYXZlX2xhbmdpZDsKICAgICAgICBpbnQgc3RyaW5nX2xhbmdpZDsKCiAgICAgICAgdm9pZCAq
aGNwcml2OwoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbm9kZXM7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBmaWxlbGlzdDsKIyA2NDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvdXNiLmgiCiAgICAgICAgaW50IG1heGNoaWxkOwogICAgICAgIHN0cnVjdCB1
c2JfZGV2aWNlICpjaGlsZHJlblsoMTYpXTsKfTsKCmV4dGVybiBzdHJ1Y3QgdXNiX2ludGVyZmFj
ZSAqdXNiX2lmbnVtX3RvX2lmX1IzMWUwMDJhNihzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNp
Z25lZCBpZm51bSk7CmV4dGVybiBzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKnVzYl9l
cG51bV90b19lcF9kZXNjX1JiODJhMTY2YihzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25l
ZCBlcG51bSk7CgpleHRlcm4gaW50IHVzYl9yZWdpc3Rlcl9SYjQwNjkyMWQoc3RydWN0IHVzYl9k
cml2ZXIgKik7CmV4dGVybiB2b2lkIHVzYl9kZXJlZ2lzdGVyX1JhZDgwN2Q0MChzdHJ1Y3QgdXNi
X2RyaXZlciAqKTsKZXh0ZXJuIHZvaWQgdXNiX3NjYW5fZGV2aWNlc19SY2E0ZjYzMDEodm9pZCk7
CgoKZXh0ZXJuIHZvaWQgdXNiX2RyaXZlcl9jbGFpbV9pbnRlcmZhY2VfUjUxNjk5MjM1KHN0cnVj
dCB1c2JfZHJpdmVyICpkcml2ZXIsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppZmFjZSwgdm9pZCog
cHJpdik7CmV4dGVybiBpbnQgdXNiX2ludGVyZmFjZV9jbGFpbWVkX1JkODAxNjdjZChzdHJ1Y3Qg
dXNiX2ludGVyZmFjZSAqaWZhY2UpOwpleHRlcm4gdm9pZCB1c2JfZHJpdmVyX3JlbGVhc2VfaW50
ZXJmYWNlX1I1OGI3ZDA0MChzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyLCBzdHJ1Y3QgdXNiX2lu
dGVyZmFjZSAqaWZhY2UpOwpjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqdXNiX21hdGNoX2lk
X1IzMzgyNDIyNihzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZp
Y2VfaWQgKmlkKTsKCmV4dGVybiBzdHJ1Y3QgdXNiX2J1cyAqdXNiX2FsbG9jX2J1c19SNzNiMjg4
ZmEoc3RydWN0IHVzYl9vcGVyYXRpb25zICopOwpleHRlcm4gdm9pZCB1c2JfZnJlZV9idXNfUjM2
MzdmZGI0KHN0cnVjdCB1c2JfYnVzICopOwpleHRlcm4gdm9pZCB1c2JfcmVnaXN0ZXJfYnVzX1Jj
YmUzMTkzMyhzdHJ1Y3QgdXNiX2J1cyAqKTsKZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXJfYnVz
X1JiYzhiZmM5NihzdHJ1Y3QgdXNiX2J1cyAqKTsKCmV4dGVybiBzdHJ1Y3QgdXNiX2RldmljZSAq
dXNiX2FsbG9jX2Rldl9SMTcxOTYxZDMoc3RydWN0IHVzYl9kZXZpY2UgKnBhcmVudCwgc3RydWN0
IHVzYl9idXMgKik7CmV4dGVybiB2b2lkIHVzYl9mcmVlX2Rldl9SNDFiZDgwMTEoc3RydWN0IHVz
Yl9kZXZpY2UgKik7CmV4dGVybiB2b2lkIHVzYl9pbmNfZGV2X3VzZV9SZDZlM2VlODYoc3RydWN0
IHVzYl9kZXZpY2UgKik7CgoKZXh0ZXJuIGludCB1c2JfY2hlY2tfYmFuZHdpZHRoX1JiODRkN2Rj
NiAoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgc3RydWN0IHVyYiAqdXJiKTsKZXh0ZXJuIHZvaWQg
dXNiX2NsYWltX2JhbmR3aWR0aF9SZWJjYzkxZjMgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHN0
cnVjdCB1cmIgKnVyYiwgaW50IGJ1c3RpbWUsIGludCBpc29jKTsKZXh0ZXJuIHZvaWQgdXNiX3Jl
bGVhc2VfYmFuZHdpZHRoX1JmODA1NGY3YihzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBzdHJ1Y3Qg
dXJiICp1cmIsIGludCBpc29jKTsKCmV4dGVybiBpbnQgdXNiX2NvbnRyb2xfbXNnX1I2NzRlNzE0
YyhzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwgX191OCByZXF1ZXN0
LCBfX3U4IHJlcXVlc3R0eXBlLCBfX3UxNiB2YWx1ZSwgX191MTYgaW5kZXgsIHZvaWQgKmRhdGEs
IF9fdTE2IHNpemUsIGludCB0aW1lb3V0KTsKCmV4dGVybiBpbnQgdXNiX3Jvb3RfaHViX3N0cmlu
Z19SYTY4NzE4ZjAoaW50IGlkLCBpbnQgc2VyaWFsLCBjaGFyICp0eXBlLCBfX3U4ICpkYXRhLCBp
bnQgbGVuKTsKZXh0ZXJuIHZvaWQgdXNiX2Nvbm5lY3RfUjljZmNhNDc3KHN0cnVjdCB1c2JfZGV2
aWNlICpkZXYpOwpleHRlcm4gdm9pZCB1c2JfZGlzY29ubmVjdF9SOWFmNmNlYzkoc3RydWN0IHVz
Yl9kZXZpY2UgKiopOwoKZXh0ZXJuIHZvaWQgdXNiX2Rlc3Ryb3lfY29uZmlndXJhdGlvbihzdHJ1
Y3QgdXNiX2RldmljZSAqZGV2KTsKCmludCB1c2JfZ2V0X2N1cnJlbnRfZnJhbWVfbnVtYmVyX1I4
OTAzMDg4YSAoc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYpOwojIDc2MCAiL3Vzci9zcmMvcnVk
by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIKc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBpbnQgX19jcmVhdGVfcGlwZShzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQg
ZW5kcG9pbnQpCnsKICAgICAgICByZXR1cm4gKGRldi0+ZGV2bnVtIDw8IDgpIHwgKGVuZHBvaW50
IDw8IDE1KSB8CiAgICAgICAgICAgICAgICAoKGRldi0+c3BlZWQgPT0gVVNCX1NQRUVEX0xPVykg
PDwgMjYpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfX2RlZmF1bHRfcGlwZShzdHJ1
Y3QgdXNiX2RldmljZSAqZGV2KQp7CiAgICAgICAgcmV0dXJuICgoZGV2LT5zcGVlZCA9PSBVU0Jf
U1BFRURfTE9XKSA8PCAyNik7Cn0KIyA3ODYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu
Y2x1ZGUvbGludXgvdXNiLmgiCmludCB1c2JfbmV3X2RldmljZV9SYTFjYzkxMjYoc3RydWN0IHVz
Yl9kZXZpY2UgKmRldik7CmludCB1c2JfcmVzZXRfZGV2aWNlX1JhYTBmM2EyOChzdHJ1Y3QgdXNi
X2RldmljZSAqZGV2KTsKaW50IHVzYl9zZXRfYWRkcmVzc19SNjhjMWI4NGMoc3RydWN0IHVzYl9k
ZXZpY2UgKmRldik7CmludCB1c2JfZ2V0X2Rlc2NyaXB0b3JfUjExZTlkN2VlKHN0cnVjdCB1c2Jf
ZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgZGVzY3R5cGUsCiAgICAgICAgdW5zaWduZWQgY2hh
ciBkZXNjaW5kZXgsIHZvaWQgKmJ1ZiwgaW50IHNpemUpOwppbnQgdXNiX2dldF9jbGFzc19kZXNj
cmlwdG9yX1IxMjU0MmU4ZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBpbnQgaWZudW0sIHVuc2ln
bmVkIGNoYXIgZGVzY3R5cGUsCiAgICAgICAgdW5zaWduZWQgY2hhciBkZXNjaW5kZXgsIHZvaWQg
KmJ1ZiwgaW50IHNpemUpOwppbnQgdXNiX2dldF9kZXZpY2VfZGVzY3JpcHRvcl9SMjJmM2ZkMTQo
c3RydWN0IHVzYl9kZXZpY2UgKmRldik7CmludCBfX3VzYl9nZXRfZXh0cmFfZGVzY3JpcHRvcl9S
OTkyNGM0OTYoY2hhciAqYnVmZmVyLCB1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBjaGFyIHR5cGUs
IHZvaWQgKipwdHIpOwppbnQgdXNiX2dldF9zdGF0dXMoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwg
aW50IHR5cGUsIGludCB0YXJnZXQsIHZvaWQgKmRhdGEpOwppbnQgdXNiX2dldF9jb25maWd1cmF0
aW9uX1JlNGJhYzI0NyhzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KTsKaW50IHVzYl9nZXRfcHJvdG9j
b2xfUjQxOGJlYTQyKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIGludCBpZm51bSk7CmludCB1c2Jf
c2V0X3Byb3RvY29sX1JmMWYzNjQ4MShzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBpbnQgaWZudW0s
IGludCBwcm90b2NvbCk7CmludCB1c2Jfc2V0X2ludGVyZmFjZV9SYWE3NWM1ZDcoc3RydWN0IHVz
Yl9kZXZpY2UgKmRldiwgaW50IGlmbnVtLCBpbnQgYWx0ZXJuYXRlKTsKaW50IHVzYl9zZXRfaWRs
ZV9SZWMxZmI1YmIoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgaW50IGlmbnVtLCBpbnQgZHVyYXRp
b24sIGludCByZXBvcnRfaWQpOwppbnQgdXNiX3NldF9jb25maWd1cmF0aW9uX1JlNjVmMDNlZihz
dHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBpbnQgY29uZmlndXJhdGlvbik7CmludCB1c2JfZ2V0X3Jl
cG9ydF9SODRjNjJhNzUoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgaW50IGlmbnVtLCB1bnNpZ25l
ZCBjaGFyIHR5cGUsCiAgICAgICAgdW5zaWduZWQgY2hhciBpZCwgdm9pZCAqYnVmLCBpbnQgc2l6
ZSk7CmludCB1c2Jfc2V0X3JlcG9ydF9SZTgwYmQ2ZmQoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwg
aW50IGlmbnVtLCB1bnNpZ25lZCBjaGFyIHR5cGUsCiAgICAgICAgdW5zaWduZWQgY2hhciBpZCwg
dm9pZCAqYnVmLCBpbnQgc2l6ZSk7CmludCB1c2Jfc3RyaW5nX1JjM2YyZjBiNChzdHJ1Y3QgdXNi
X2RldmljZSAqZGV2LCBpbnQgaW5kZXgsIGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpOwppbnQgdXNi
X2NsZWFyX2hhbHRfUjg4NmE3ODhmKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIGludCBwaXBlKTsK
dm9pZCB1c2Jfc2V0X21heHBhY2tldChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KTsKIyA4MzYgIi91
c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdXNiLmgiCnZvaWQgdXNiX3No
b3dfZGV2aWNlX2Rlc2NyaXB0b3Ioc3RydWN0IHVzYl9kZXZpY2VfZGVzY3JpcHRvciAqKTsKdm9p
ZCB1c2Jfc2hvd19jb25maWdfZGVzY3JpcHRvcihzdHJ1Y3QgdXNiX2NvbmZpZ19kZXNjcmlwdG9y
ICopOwp2b2lkIHVzYl9zaG93X2ludGVyZmFjZV9kZXNjcmlwdG9yKHN0cnVjdCB1c2JfaW50ZXJm
YWNlX2Rlc2NyaXB0b3IgKik7CnZvaWQgdXNiX3Nob3dfZW5kcG9pbnRfZGVzY3JpcHRvcihzdHJ1
Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKik7CnZvaWQgdXNiX3Nob3dfZGV2aWNlKHN0cnVj
dCB1c2JfZGV2aWNlICopOwp2b2lkIHVzYl9zaG93X3N0cmluZyhzdHJ1Y3QgdXNiX2RldmljZSAq
ZGV2LCBjaGFyICppZCwgaW50IGluZGV4KTsKIyA4NTcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40
LjEwL2luY2x1ZGUvbGludXgvdXNiLmgiCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIHVzYl9kcml2
ZXJfbGlzdDsKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgdXNiX2J1c19saXN0OwpleHRlcm4gcnds
b2NrX3QgdXNiX2J1c19saXN0X2xvY2s7CiMgODcxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x
MC9pbmNsdWRlL2xpbnV4L3VzYi5oIgpleHRlcm4gdm9pZCB1c2JkZXZmc19hZGRfYnVzKHN0cnVj
dCB1c2JfYnVzICpidXMpOwpleHRlcm4gdm9pZCB1c2JkZXZmc19yZW1vdmVfYnVzKHN0cnVjdCB1
c2JfYnVzICpidXMpOwpleHRlcm4gdm9pZCB1c2JkZXZmc19hZGRfZGV2aWNlKHN0cnVjdCB1c2Jf
ZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCB1c2JkZXZmc19yZW1vdmVfZGV2aWNlKHN0cnVjdCB1
c2JfZGV2aWNlICpkZXYpOwoKZXh0ZXJuIGludCB1c2JkZXZmc19pbml0KHZvaWQpOwpleHRlcm4g
dm9pZCB1c2JkZXZmc19jbGVhbnVwKHZvaWQpOwojIDU4ICJ1c2ItdWhjaS5jIiAyCiMgMSAidXNi
LXVoY2kuaCIgMQojIDEwICJ1c2ItdWhjaS5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHVoY2lf
d2FpdF9tcyh1bnNpZ25lZCBpbnQgbXMpCnsKICAgICAgICBpZighKHsgaW50IF9fY3B1ID0gMDsg
KCgodm9pZCkoKF9fY3B1KSksIGlycV9zdGF0X1I5ZTM2ZjA2ZVswXS5fX2xvY2FsX2lycV9jb3Vu
dCkgKyAoKHZvaWQpKChfX2NwdSkpLCBpcnFfc3RhdF9SOWUzNmYwNmVbMF0uX19sb2NhbF9iaF9j
b3VudCkgIT0gMCk7IH0pKQogICAgICAgIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCkt
PnN0YXRlID0gMjsKICAgICAgICAgICAgICAgIHNjaGVkdWxlX3RpbWVvdXRfUjE3ZDU5ZDAxKDEg
KyBtcyAqIDEwMCAvIDEwMDApOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAoIChfX2J1aWx0aW5fY29uc3RhbnRfcChtcykgJiYgKG1zKTw9NSkgPyAoX19idWlsdGluX2Nv
bnN0YW50X3AoKG1zKSoxMDAwKSA/ICgoKG1zKSoxMDAwKSA+IDIwMDAwID8gX19iYWRfdWRlbGF5
KCkgOiBfX2NvbnN0X3VkZWxheV9SZWFlM2RmZDYoKChtcykqMTAwMCkgKiAweDEwYzZ1bCkpIDog
X191ZGVsYXlfUjllN2Q2YmQwKChtcykqMTAwMCkpIDogKHt1bnNpZ25lZCBsb25nIG1zZWM9KG1z
KTsgd2hpbGUgKG1zZWMtLSkgKF9fYnVpbHRpbl9jb25zdGFudF9wKDEwMDApID8gKCgxMDAwKSA+
IDIwMDAwID8gX19iYWRfdWRlbGF5KCkgOiBfX2NvbnN0X3VkZWxheV9SZWFlM2RmZDYoKDEwMDAp
ICogMHgxMGM2dWwpKSA6IF9fdWRlbGF5X1I5ZTdkNmJkMCgxMDAwKSk7fSkpOwp9CiMgMTI3ICJ1
c2ItdWhjaS5oIgp0eXBlZGVmIGVudW0gewogICAgICAgIFREX1RZUEUsIFFIX1RZUEUKfSB1aGNp
X2Rlc2NfdHlwZV90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIF9fdTMyIGxpbms7CiAgICAg
ICAgX191MzIgc3RhdHVzOwogICAgICAgIF9fdTMyIGluZm87CiAgICAgICAgX191MzIgYnVmZmVy
Owp9IHVoY2lfdGRfdCwgKnB1aGNpX3RkX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgX191
MzIgaGVhZDsKICAgICAgICBfX3UzMiBlbGVtZW50Owp9IHVoY2lfcWhfdCwgKnB1aGNpX3FoX3Q7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgdWhjaV90
ZF90IHRkOwogICAgICAgICAgICAgICAgdWhjaV9xaF90IHFoOwogICAgICAgIH0gaHc7CiAgICAg
ICAgdWhjaV9kZXNjX3R5cGVfdCB0eXBlOwogICAgICAgIGRtYV9hZGRyX3QgZG1hX2FkZHI7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBob3Jpem9udGFsOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgdmVydGljYWw7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkZXNjX2xpc3Q7CiAgICAgICAg
aW50IGxhc3RfdXNlZDsKfSB1aGNpX2Rlc2NfdCwgKnB1aGNpX2Rlc2NfdDsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRlc2NfbGlzdDsKICAgICAgICBkbWFfYWRk
cl90IHNldHVwX3BhY2tldF9kbWE7CiAgICAgICAgZG1hX2FkZHJfdCB0cmFuc2Zlcl9idWZmZXJf
ZG1hOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRlZDsKICAgICAgICB1cmJfdCAqbmV4dF9x
dWV1ZWRfdXJiOwogICAgICAgIHVyYl90ICpwcmV2X3F1ZXVlZF91cmI7CiAgICAgICAgdWhjaV9k
ZXNjX3QgKmJvdHRvbV9xaDsKICAgICAgICB1aGNpX2Rlc2NfdCAqbmV4dF9xaDsKICAgICAgICBj
aGFyIHVzZV9sb29wOwogICAgICAgIGNoYXIgZmxhZ3M7Cn0gdXJiX3ByaXZfdCwgKnB1cmJfcHJp
dl90OwoKc3RydWN0IHZpcnRfcm9vdF9odWIgewogICAgICAgIGludCBkZXZudW07CiAgICAgICAg
dm9pZCAqdXJiOwogICAgICAgIHZvaWQgKmludF9hZGRyOwogICAgICAgIGludCBzZW5kOwogICAg
ICAgIGludCBpbnRlcnZhbDsKICAgICAgICBpbnQgbnVtcG9ydHM7CiAgICAgICAgaW50IGNfcF9y
WzhdOwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHJoX2ludF90aW1lcjsKfTsKCnR5cGVkZWYg
c3RydWN0IHVoY2kgewogICAgICAgIGludCBpcnE7CiAgICAgICAgdW5zaWduZWQgaW50IGlvX2Fk
ZHI7CiAgICAgICAgdW5zaWduZWQgaW50IGlvX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IG1h
eHBvcnRzOwogICAgICAgIGludCBydW5uaW5nOwoKICAgICAgICBpbnQgYXBtX3N0YXRlOwoKICAg
ICAgICBzdHJ1Y3QgdWhjaSAqbmV4dDsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB1cmJfbGlz
dDsKCiAgICAgICAgc3BpbmxvY2tfdCB1cmJfbGlzdF9sb2NrOwoKICAgICAgICBpbnQgdW5saW5r
X3VyYl9kb25lOwogICAgICAgIGF0b21pY190IGF2b2lkX2J1bGs7CgogICAgICAgIHN0cnVjdCB1
c2JfYnVzICpidXM7CgogICAgICAgIF9fdTMyICpmcmFtZWxpc3Q7CiAgICAgICAgZG1hX2FkZHJf
dCBmcmFtZWxpc3RfZG1hOwogICAgICAgIHVoY2lfZGVzY190ICoqaXNvX3RkOwogICAgICAgIHVo
Y2lfZGVzY190ICppbnRfY2hhaW5bOF07CiAgICAgICAgdWhjaV9kZXNjX3QgKmxzX2NvbnRyb2xf
Y2hhaW47CiAgICAgICAgdWhjaV9kZXNjX3QgKmNvbnRyb2xfY2hhaW47CiAgICAgICAgdWhjaV9k
ZXNjX3QgKmJ1bGtfY2hhaW47CiAgICAgICAgdWhjaV9kZXNjX3QgKmNoYWluX2VuZDsKICAgICAg
ICB1aGNpX2Rlc2NfdCAqdGQxbXM7CiAgICAgICAgdWhjaV9kZXNjX3QgKnRkMzJtczsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGZyZWVfZGVzYzsKICAgICAgICBzcGlubG9ja190IHFoX2xvY2s7
CiAgICAgICAgc3BpbmxvY2tfdCB0ZF9sb2NrOwogICAgICAgIHN0cnVjdCB2aXJ0X3Jvb3RfaHVi
IHJoOwogICAgICAgIGludCBsb29wX3VzYWdlOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHVy
Yl91bmxpbmtlZDsKICAgICAgICBsb25nIHRpbWVvdXRfY2hlY2s7CiAgICAgICAgaW50IHRpbWVv
dXRfdXJiczsKICAgICAgICBzdHJ1Y3QgcGNpX2RldiAqdWhjaV9wY2k7CiAgICAgICAgc3RydWN0
IHBjaV9wb29sICpkZXNjX3Bvb2w7CiAgICAgICAgbG9uZyBsYXN0X2Vycm9yX3RpbWU7Cn0gdWhj
aV90LCAqcHVoY2lfdDsKIyA1OSAidXNiLXVoY2kuYyIgMgojIDEgInVzYi11aGNpLWRlYnVnLmgi
IDEKCnN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSB1aGNpX3Nob3dfcWgg
KHB1aGNpX2Rlc2NfdCBxaCkKewogICAgICAgIGlmIChxaC0+dHlwZSAhPSBRSF9UWVBFKSB7CiAg
ICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Nz4iICJ1c2ItdWhjaS1kZWJ1Zy5oIiAi
OiAiICJxaCBoYXMgbm90IFFIX1RZUEUiICJcbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgIH0KICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Nz4iICJ1c2ItdWhjaS1kZWJ1Zy5o
IiAiOiAiICJRSCBAICVwLyUwOFg6IiAiXG4iICwgcWgsIHFoLT5kbWFfYWRkcik7CgogICAgICAg
IGlmIChxaC0+aHcucWguaGVhZCAmIDB4MDAwMSkKICAgICAgICAgICAgICAgIHByaW50a19SMWI3
ZDQwNzQoIjw3PiIgInVzYi11aGNpLWRlYnVnLmgiICI6ICIgIiAgICBIZWFkIFRlcm1pbmF0ZSIg
IlxuIik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCgiPDc+
IiAidXNiLXVoY2ktZGVidWcuaCIgIjogIiAiICAgIEhlYWQ6ICVzIEAgJTA4WCIgIlxuIiAsIChx
aC0+aHcucWguaGVhZCAmIDB4MDAwMj8iUUgiOiJURCIpLCBxaC0+aHcucWguaGVhZCAmIH4weDAw
MEYpOwoKCgogICAgICAgIGlmIChxaC0+aHcucWguZWxlbWVudCAmIDB4MDAwMSkKICAgICAgICAg
ICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjw3PiIgInVzYi11aGNpLWRlYnVnLmgiICI6ICIgIiAg
ICBFbGVtZW50IFRlcm1pbmF0ZSIgIlxuIik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
cHJpbnRrX1IxYjdkNDA3NCgiPDc+IiAidXNiLXVoY2ktZGVidWcuaCIgIjogIiAiICAgIEVsZW1l
bnQ6ICVzIEAgJTA4WCIgIlxuIiAsIChxaC0+aHcucWguZWxlbWVudCAmIDB4MDAwMj8iUUgiOiJU
RCIpLCBxaC0+aHcucWguZWxlbWVudCAmIH4weDAwMEYpOwoKCn0KIyA4MSAidXNiLXVoY2ktZGVi
dWcuaCIKc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIHVoY2lfc2hvd190
ZF9xdWV1ZSAocHVoY2lfZGVzY190IHRkKQp7CgoKICAgICAgICByZXR1cm47CiMgOTkgInVzYi11
aGNpLWRlYnVnLmgiCn0KCnN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSB1
aGNpX3Nob3dfcXVldWUgKHB1aGNpX2Rlc2NfdCBxaCkKewoKCgoKICAgICAgICBwcmludGtfUjFi
N2Q0MDc0KCI8Nz4iICJ1c2ItdWhjaS1kZWJ1Zy5oIiAiOiAiICJ1aGNpX3Nob3dfcXVldWUgJXA6
IiAiXG4iICwgcWgpOwoKICAgICAgICByZXR1cm47CiMgMTMzICJ1c2ItdWhjaS1kZWJ1Zy5oIgp9
CgpzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgdWhjaV9zaG93X3NjIChp
bnQgcG9ydCwgdW5zaWduZWQgc2hvcnQgc3RhdHVzKQp7CiAgICAgICAgcHJpbnRrX1IxYjdkNDA3
NCgiPDc+IiAidXNiLXVoY2ktZGVidWcuaCIgIjogIiAiICBzdGF0JWQgICAgID0gICAgICUwNHgg
ICAlcyVzJXMlcyVzJXMlcyVzIiAiXG4iICwgcG9ydCwgc3RhdHVzLCAoc3RhdHVzICYgMHgxMDAw
KSA/ICJQb3J0U3VzcGVuZCAiIDogIiIsIChzdGF0dXMgJiAweDAyMDApID8gIlBvcnRSZXNldCAi
IDogIiIsIChzdGF0dXMgJiAweDAxMDApID8gIkxvd1NwZWVkICIgOiAiIiwgKHN0YXR1cyAmIDB4
MDA0MCkgPyAiUmVzdW1lRGV0ZWN0ICIgOiAiIiwgKHN0YXR1cyAmIDB4MDAwOCkgPyAiRW5hYmxl
Q2hhbmdlICIgOiAiIiwgKHN0YXR1cyAmIDB4MDAwNCkgPyAiUG9ydEVuYWJsZWQgIiA6ICIiLCAo
c3RhdHVzICYgMHgwMDAyKSA/ICJDb25uZWN0Q2hhbmdlICIgOiAiIiwgKHN0YXR1cyAmIDB4MDAw
MSkgPyAiUG9ydENvbm5lY3RlZCAiIDogIiIpOwojIDE0OCAidXNiLXVoY2ktZGVidWcuaCIKfQoK
dm9pZCB1aGNpX3Nob3dfc3RhdHVzIChwdWhjaV90IHMpCnsKICAgICAgICB1bnNpZ25lZCBpbnQg
aW9fYWRkciA9IHMtPmlvX2FkZHI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdXNiY21kLCB1c2Jz
dGF0LCB1c2JpbnQsIHVzYmZybnVtOwogICAgICAgIHVuc2lnbmVkIGludCBmbGJhc2VhZGQ7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBzb2Y7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9ydHNjMSwg
cG9ydHNjMjsKCiAgICAgICAgdXNiY21kID0gaW53IChpb19hZGRyICsgMCk7CiAgICAgICAgdXNi
c3RhdCA9IGludyAoaW9fYWRkciArIDIpOwogICAgICAgIHVzYmludCA9IGludyAoaW9fYWRkciAr
IDQpOwogICAgICAgIHVzYmZybnVtID0gaW53IChpb19hZGRyICsgNik7CiAgICAgICAgZmxiYXNl
YWRkID0gaW5sIChpb19hZGRyICsgOCk7CiAgICAgICAgc29mID0gaW5iIChpb19hZGRyICsgMTIp
OwogICAgICAgIHBvcnRzYzEgPSBpbncgKGlvX2FkZHIgKyAxNik7CiAgICAgICAgcG9ydHNjMiA9
IGludyAoaW9fYWRkciArIDE4KTsKCiAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCgiPDc+IiAidXNi
LXVoY2ktZGVidWcuaCIgIjogIiAiICB1c2JjbWQgICAgPSAgICAgJTA0eCAgICVzJXMlcyVzJXMl
cyVzJXMiICJcbiIgLCB1c2JjbWQsICh1c2JjbWQgJiAweDAwODApID8gIk1heHA2NCAiIDogIk1h
eHAzMiAiLCAodXNiY21kICYgMHgwMDQwKSA/ICJDRiAiIDogIiIsICh1c2JjbWQgJiAweDAwMjAp
ID8gIlNXREJHICIgOiAiIiwgKHVzYmNtZCAmIDB4MDAxMCkgPyAiRkdSICIgOiAiIiwgKHVzYmNt
ZCAmIDB4MDAwOCkgPyAiRUdTTSAiIDogIiIsICh1c2JjbWQgJiAweDAwMDQpID8gIkdSRVNFVCAi
IDogIiIsICh1c2JjbWQgJiAweDAwMDIpID8gIkhDUkVTRVQgIiA6ICIiLCAodXNiY21kICYgMHgw
MDAxKSA/ICJSUyAiIDogIiIpOwojIDE3OCAidXNiLXVoY2ktZGVidWcuaCIKICAgICAgICBwcmlu
dGtfUjFiN2Q0MDc0KCI8Nz4iICJ1c2ItdWhjaS1kZWJ1Zy5oIiAiOiAiICIgIHVzYnN0YXQgICA9
ICAgICAlMDR4ICAgJXMlcyVzJXMlcyVzIiAiXG4iICwgdXNic3RhdCwgKHVzYnN0YXQgJiAweDAw
MjApID8gIkhDSGFsdGVkICIgOiAiIiwgKHVzYnN0YXQgJiAweDAwMTApID8gIkhvc3RDb250cm9s
bGVyUHJvY2Vzc0Vycm9yICIgOiAiIiwgKHVzYnN0YXQgJiAweDAwMDgpID8gIkhvc3RTeXN0ZW1F
cnJvciAiIDogIiIsICh1c2JzdGF0ICYgMHgwMDA0KSA/ICJSZXN1bWVEZXRlY3QgIiA6ICIiLCAo
dXNic3RhdCAmIDB4MDAwMikgPyAiVVNCRXJyb3IgIiA6ICIiLCAodXNic3RhdCAmIDB4MDAwMSkg
PyAiVVNCSU5UICIgOiAiIik7CiMgMTg3ICJ1c2ItdWhjaS1kZWJ1Zy5oIgogICAgICAgIHByaW50
a19SMWI3ZDQwNzQoIjw3PiIgInVzYi11aGNpLWRlYnVnLmgiICI6ICIgIiAgdXNiaW50ICAgID0g
ICAgICUwNHgiICJcbiIgLCB1c2JpbnQpOwogICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjw3PiIg
InVzYi11aGNpLWRlYnVnLmgiICI6ICIgIiAgdXNiZnJudW0gID0gICAoJWQpJTAzeCIgIlxuIiAs
ICh1c2Jmcm51bSA+PiAxMCkgJiAxLCAweGZmZiAmICg0ICogKHVuc2lnbmVkIGludCkgdXNiZnJu
dW0pKTsKCiAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCgiPDc+IiAidXNiLXVoY2ktZGVidWcuaCIg
IjogIiAiICBmbGJhc2VhZGQgPSAlMDh4IiAiXG4iICwgZmxiYXNlYWRkKTsKICAgICAgICBwcmlu
dGtfUjFiN2Q0MDc0KCI8Nz4iICJ1c2ItdWhjaS1kZWJ1Zy5oIiAiOiAiICIgIHNvZiAgICAgICA9
ICAgICAgICUwMngiICJcbiIgLCBzb2YpOwogICAgICAgIHVoY2lfc2hvd19zYyAoMSwgcG9ydHNj
MSk7CiAgICAgICAgdWhjaV9zaG93X3NjICgyLCBwb3J0c2MyKTsKfQojIDYwICJ1c2ItdWhjaS5j
IiAyCiMgODUgInVzYi11aGNpLmMiCiAgICAgICAgc3RhdGljIGttZW1fY2FjaGVfdCAqdXJiX3By
aXZfa21lbTsKIyAxMTkgInVzYi11aGNpLmMiCiAgICAgICAgaW50IHJoX3N1Ym1pdF91cmIgKHVy
Yl90ICp1cmIpOwogICAgICAgIGludCByaF91bmxpbmtfdXJiICh1cmJfdCAqdXJiKTsKICAgICAg
ICBpbnQgZGVsZXRlX3FoICh1aGNpX3QgKnMsIHVoY2lfZGVzY190ICpxaCk7CiAgICAgICAgaW50
IHByb2Nlc3NfdHJhbnNmZXIgKHVoY2lfdCAqcywgdXJiX3QgKnVyYiwgaW50IG1vZGUpOwogICAg
ICAgIGludCBwcm9jZXNzX2ludGVycnVwdCAodWhjaV90ICpzLCB1cmJfdCAqdXJiKTsKICAgICAg
ICBpbnQgcHJvY2Vzc19pc28gKHVoY2lfdCAqcywgdXJiX3QgKnVyYiwgaW50IGZvcmNlKTsKCgoK
CnN0YXRpYyB1aGNpX3QgKmRldnMgPSAoKHZvaWQgKikwKTsKCgp1aGNpX3QgKip1aGNpX2Rldmlj
ZXMgPSAmZGV2czsKCgoKdm9pZCBjbGVhbl9kZXNjcyh1aGNpX3QgKnMsIGludCBmb3JjZSkKewog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnE7CiAgICAgICAgdWhjaV9kZXNjX3QgKnFoOwogICAg
ICAgIGludCBub3c9KGludyAoKHMpLT5pb19hZGRyICsgNikpLCBuPTA7CgogICAgICAgIHE9cy0+
ZnJlZV9kZXNjLnByZXY7CgogICAgICAgIHdoaWxlIChxICE9ICZzLT5mcmVlX2Rlc2MgJiYgKGZv
cmNlIHx8IG48MTAwKSkgewogICAgICAgICAgICAgICAgcWggPSAoKHVoY2lfZGVzY190ICopKChj
aGFyICopKHEpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT5ob3Jpem9udGFs
KSkpOwogICAgICAgICAgICAgICAgcT1xaC0+aG9yaXpvbnRhbC5wcmV2OwoKICAgICAgICAgICAg
ICAgIGlmICgocWgtPmxhc3RfdXNlZCE9bm93KSB8fCBmb3JjZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgZGVsZXRlX3FoKHMscWgpOwogICAgICAgICAgICAgICAgbisrOwogICAgICAgIH0KfQoK
ICAgICAgICB2b2lkIHVoY2lfc3dpdGNoX3RpbWVyX2ludCh1aGNpX3QgKnMpCnsKCiAgICAgICAg
aWYgKCFsaXN0X2VtcHR5KCZzLT51cmJfdW5saW5rZWQpKQogICAgICAgICAgICAgICAgKHMtPnRk
MW1zKS0+aHcudGQuc3RhdHVzIHw9ICgoX191MzIpKCgxIDw8IDI0KSkpOwogICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgIChzLT50ZDFtcyktPmh3LnRkLnN0YXR1cyAmPSAoKF9fdTMyKSh+KDEg
PDwgMjQpKSk7CgogICAgICAgIGlmIChzLT50aW1lb3V0X3VyYnMpCiAgICAgICAgICAgICAgICAo
cy0+dGQzMm1zKS0+aHcudGQuc3RhdHVzIHw9ICgoX191MzIpKCgxIDw8IDI0KSkpOwogICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgIChzLT50ZDMybXMpLT5ody50ZC5zdGF0dXMgJj0gKChfX3Uz
MikofigxIDw8IDI0KSkpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIjogOiA6Im1l
bW9yeSIpOwp9CgoKICAgICAgICB2b2lkIGVuYWJsZV9kZXNjX2xvb3AodWhjaV90ICpzLCB1cmJf
dCAqdXJiKQp7CiAgICAgICAgaW50IGZsYWdzOwoKICAgICAgICBpZiAodXJiLT50cmFuc2Zlcl9m
bGFncyAmIDB4MDAyMCkKICAgICAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZG8geyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6
Im1lbW9yeSIpOyAodm9pZCkoJnMtPnFoX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBzLT5j
aGFpbl9lbmQtPmh3LnFoLmhlYWQmPSgoX191MzIpKH4weDAwMDEpKTsKICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAsMCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CiAg
ICAgICAgcy0+bG9vcF91c2FnZSsrOwogICAgICAgICgodXJiX3ByaXZfdCopdXJiLT5oY3ByaXYp
LT51c2VfbG9vcD0xOwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7
IH0gd2hpbGUgKDApOwp9CgogICAgICAgIHZvaWQgZGlzYWJsZV9kZXNjX2xvb3AodWhjaV90ICpz
LCB1cmJfdCAqdXJiKQp7CiAgICAgICAgaW50IGZsYWdzOwoKICAgICAgICBpZiAodXJiLT50cmFu
c2Zlcl9mbGFncyAmIDB4MDAyMCkKICAgICAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZG8g
eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxh
Z3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnMtPnFoX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAg
ICBpZiAoKCh1cmJfcHJpdl90Kil1cmItPmhjcHJpdiktPnVzZV9sb29wKSB7CiAgICAgICAgICAg
ICAgICBzLT5sb29wX3VzYWdlLS07CgogICAgICAgICAgICAgICAgaWYgKCFzLT5sb29wX3VzYWdl
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNoYWluX2VuZC0+aHcucWguaGVhZHw9KChf
X3UzMikoMHgwMDAxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fICgibG9jazsgYWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICgodXJiX3ByaXZfdCopdXJiLT5oY3ByaXYpLT51c2VfbG9v
cD0wOwogICAgICAgIH0KICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3Zv
bGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIp
OyB9IHdoaWxlICgwKTsKfQoKCiAgICAgICAgdm9pZCBxdWV1ZV91cmJfdW5sb2NrZWQgKHVoY2lf
dCAqcywgdXJiX3QgKnVyYikKewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnA9JnVyYi0+dXJi
X2xpc3Q7CgogICAgICAgIHsKICAgICAgICAgICAgICAgIGludCB0eXBlOwogICAgICAgICAgICAg
ICAgdHlwZT0oKCh1cmItPnBpcGUpID4+IDMwKSAmIDMpOwoKICAgICAgICAgICAgICAgIGlmICgo
dHlwZSA9PSAzKSB8fCAodHlwZSA9PSAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxl
X2Rlc2NfbG9vcChzLCB1cmIpOwogICAgICAgIH0KCiAgICAgICAgdXJiLT5zdGF0dXMgPSAtMTE1
OwogICAgICAgICgodXJiX3ByaXZfdCopdXJiLT5oY3ByaXYpLT5zdGFydGVkPWppZmZpZXNfUjBk
YTAyZDY3OwogICAgICAgIGxpc3RfYWRkIChwLCAmcy0+dXJiX2xpc3QpOwogICAgICAgIGlmICh1
cmItPnRpbWVvdXQpCiAgICAgICAgICAgICAgICBzLT50aW1lb3V0X3VyYnMrKzsKICAgICAgICB1
aGNpX3N3aXRjaF90aW1lcl9pbnQocyk7Cn0KCiAgICAgICAgdm9pZCBxdWV1ZV91cmIgKHVoY2lf
dCAqcywgdXJiX3QgKnVyYikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M9MDsKCiAgICAg
ICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1n
IiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnMtPnVyYl9saXN0X2xvY2spOyB9IHdoaWxl
ICgwKTsKICAgICAgICBxdWV1ZV91cmJfdW5sb2NrZWQocyx1cmIpOwogICAgICAgIGRvIHsgZG8g
eyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoi
ZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwp9CgogICAgICAgIHZvaWQg
ZGVxdWV1ZV91cmIgKHVoY2lfdCAqcywgdXJiX3QgKnVyYikKewoKICAgICAgICBpbnQgdHlwZTsK
CiAgICAgICAgdHlwZT0oKCh1cmItPnBpcGUpID4+IDMwKSAmIDMpOwoKICAgICAgICBpZiAoKHR5
cGUgPT0gMykgfHwgKHR5cGUgPT0gMikpCiAgICAgICAgICAgICAgICBkaXNhYmxlX2Rlc2NfbG9v
cChzLCB1cmIpOwoKCiAgICAgICAgbGlzdF9kZWwgKCZ1cmItPnVyYl9saXN0KTsKICAgICAgICBp
ZiAodXJiLT50aW1lb3V0ICYmIHMtPnRpbWVvdXRfdXJicykKICAgICAgICAgICAgICAgIHMtPnRp
bWVvdXRfdXJicy0tOwoKfQoKICAgICAgICBpbnQgYWxsb2NfdGQgKHVoY2lfdCAqcywgdWhjaV9k
ZXNjX3QgKiogbmV3LCBpbnQgZmxhZ3MpCnsKICAgICAgICBkbWFfYWRkcl90IGRtYV9oYW5kbGU7
CgogICAgICAgICpuZXcgPSBwY2lfcG9vbF9hbGxvY19SNTEzMWI4MTgocy0+ZGVzY19wb29sLCAw
eDAxIHwgKDB4MjApLCAmZG1hX2hhbmRsZSk7CiAgICAgICAgaWYgKCEqbmV3KQogICAgICAgICAg
ICAgICAgcmV0dXJuIC0xMjsKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19i
dWlsdGluX2NvbnN0YW50X3AoKHNpemVvZiAodWhjaV9kZXNjX3QpKSkgPyBfX2NvbnN0YW50X2Nf
YW5kX2NvdW50X21lbXNldCgoKCpuZXcpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhciko
MCkpKSwoKHNpemVvZiAodWhjaV9kZXNjX3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKCpu
ZXcpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZiAodWhjaV9k
ZXNjX3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mICh1aGNpX2Rlc2NfdCkp
KSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoKm5ldykpKSwoKCgwKSkpLCgoKHNpemVvZiAodWhjaV9k
ZXNjX3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgqbmV3KSksKCgwKSksKChzaXplb2YgKHVo
Y2lfZGVzY190KSkpKSkpOwogICAgICAgICgqbmV3KS0+ZG1hX2FkZHIgPSBkbWFfaGFuZGxlOwog
ICAgICAgICgoKm5ldykpLT5ody50ZC5saW5rPSgoX191MzIpKDB4MDAwMSB8IChmbGFncyAmIDB4
MDAwRikpKTsKICAgICAgICAoKm5ldyktPnR5cGUgPSBURF9UWVBFOwogICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fICgibG9jazsgYWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAg
ICAgICBkbyB7ICgmKCpuZXcpLT52ZXJ0aWNhbCktPm5leHQgPSAoJigqbmV3KS0+dmVydGljYWwp
OyAoJigqbmV3KS0+dmVydGljYWwpLT5wcmV2ID0gKCYoKm5ldyktPnZlcnRpY2FsKTsgfSB3aGls
ZSAoMCk7CiAgICAgICAgZG8geyAoJigqbmV3KS0+aG9yaXpvbnRhbCktPm5leHQgPSAoJigqbmV3
KS0+aG9yaXpvbnRhbCk7ICgmKCpuZXcpLT5ob3Jpem9udGFsKS0+cHJldiA9ICgmKCpuZXcpLT5o
b3Jpem9udGFsKTsgfSB3aGlsZSAoMCk7CgogICAgICAgIHJldHVybiAwOwp9CgoKICAgICAgICB2
b2lkIGFwcGVuZF9xaCh1aGNpX3QgKnMsIHVoY2lfZGVzY190ICp0ZCwgdWhjaV9kZXNjX3QqIHFo
LCBpbnQgZmxhZ3MpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHh4eDsKCiAgICAgICAgZG8geyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoeHh4KTog
OiJtZW1vcnkiKTsgKHZvaWQpKCZzLT50ZF9sb2NrKTsgfSB3aGlsZSAoMCk7CgogICAgICAgICh0
ZCktPmh3LnRkLmxpbms9KChfX3UzMikocWgtPmRtYV9hZGRyIHwgKGZsYWdzICYgMHgwMDA0KSB8
IDB4MDAwMikpOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAs
MCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9f
YXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoeHh4KToibWVtb3J5
IiwgImNjIik7IH0gd2hpbGUgKDApOwp9CgoKICAgICAgICBpbnQgaW5zZXJ0X3RkICh1aGNpX3Qg
KnMsIHVoY2lfZGVzY190ICpxaCwgdWhjaV9kZXNjX3QqIG5ldywgaW50IGZsYWdzKQp7CiAgICAg
ICAgdWhjaV9kZXNjX3QgKnByZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyB4eHg7CgogICAgICAg
IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIg
KHh4eCk6IDoibWVtb3J5Iik7ICh2b2lkKSgmcy0+dGRfbG9jayk7IH0gd2hpbGUgKDApOwoKICAg
ICAgICBsaXN0X2FkZF90YWlsICgmbmV3LT52ZXJ0aWNhbCwgJnFoLT52ZXJ0aWNhbCk7CgogICAg
ICAgIHByZXYgPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKG5ldy0+dmVydGljYWwucHJldikt
KHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPnZlcnRpY2FsKSkpOwoKICAgICAg
ICBpZiAocWggPT0gcHJldiApIHsKCiAgICAgICAgICAgICAgICAocWgpLT5ody5xaC5lbGVtZW50
PSgoX191MzIpKG5ldy0+ZG1hX2FkZHIgfCAweDAwMDEpKTsKICAgICAgICB9CiAgICAgICAgZWxz
ZSB7CgogICAgICAgICAgICAgICAgKHByZXYpLT5ody50ZC5saW5rPSgoX191MzIpKG5ldy0+ZG1h
X2FkZHIgfCAoZmxhZ3MgJiAweDAwMDQpKSk7CiAgICAgICAgfQogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fICgibG9jazsgYWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAgICAg
ICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsg
cG9wZmwiOiA6ImciICh4eHgpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CgogICAgICAg
IHJldHVybiAwOwp9CgoKICAgICAgICBpbnQgaW5zZXJ0X3RkX2hvcml6b250YWwgKHVoY2lfdCAq
cywgdWhjaV9kZXNjX3QgKnRkLCB1aGNpX2Rlc2NfdCogbmV3KQp7CiAgICAgICAgdWhjaV9kZXNj
X3QgKm5leHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgZG8geyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6
Im1lbW9yeSIpOyAodm9pZCkoJnMtPnRkX2xvY2spOyB9IHdoaWxlICgwKTsKCiAgICAgICAgbmV4
dCA9ICgodWhjaV9kZXNjX3QgKikoKGNoYXIgKikodGQtPmhvcml6b250YWwubmV4dCktKHVuc2ln
bmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPmhvcml6b250YWwpKSk7CiAgICAgICAgbGlz
dF9hZGQgKCZuZXctPmhvcml6b250YWwsICZ0ZC0+aG9yaXpvbnRhbCk7CiAgICAgICAgbmV3LT5o
dy50ZC5saW5rID0gdGQtPmh3LnRkLmxpbms7CiAgICAgICAgKHRkKS0+aHcudGQubGluaz0oKF9f
dTMyKShuZXctPmRtYV9hZGRyKSk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2Nr
OyBhZGRsICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGRvIHsgZG8geyB9IHdo
aWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZs
YWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwoKICAgICAgICByZXR1cm4gMDsKfQoK
ICAgICAgICBpbnQgdW5saW5rX3RkICh1aGNpX3QgKnMsIHVoY2lfZGVzY190ICplbGVtZW50LCBp
bnQgcGh5c191bmxpbmspCnsKICAgICAgICB1aGNpX2Rlc2NfdCAqbmV4dCwgKnByZXY7CiAgICAg
ICAgaW50IGRpciA9IDA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgZG8g
eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxh
Z3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnMtPnRkX2xvY2spOyB9IHdoaWxlICgwKTsKCiAgICAg
ICAgbmV4dCA9ICgodWhjaV9kZXNjX3QgKikoKGNoYXIgKikoZWxlbWVudC0+dmVydGljYWwubmV4
dCktKHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPnZlcnRpY2FsKSkpOwoKICAg
ICAgICBpZiAobmV4dCA9PSBlbGVtZW50KSB7CiAgICAgICAgICAgICAgICBkaXIgPSAxOwogICAg
ICAgICAgICAgICAgcHJldiA9ICgodWhjaV9kZXNjX3QgKikoKGNoYXIgKikoZWxlbWVudC0+aG9y
aXpvbnRhbC5wcmV2KS0odW5zaWduZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+aG9yaXpv
bnRhbCkpKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJldiA9ICgo
dWhjaV9kZXNjX3QgKikoKGNoYXIgKikoZWxlbWVudC0+dmVydGljYWwucHJldiktKHVuc2lnbmVk
IGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPnZlcnRpY2FsKSkpOwoKICAgICAgICBpZiAocGh5
c191bmxpbmspIHsKCiAgICAgICAgICAgICAgICBpZiAocHJldi0+dHlwZSA9PSBURF9UWVBFKQog
ICAgICAgICAgICAgICAgICAgICAgICBwcmV2LT5ody50ZC5saW5rID0gZWxlbWVudC0+aHcudGQu
bGluazsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgcHJldi0+
aHcucWguZWxlbWVudCA9IGVsZW1lbnQtPmh3LnRkLmxpbms7CiAgICAgICAgfQoKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAsMCglJWVzcCkiOiA6IDoibWVtb3J5
Iik7CgogICAgICAgIGlmIChkaXIgPT0gMCkKICAgICAgICAgICAgICAgIGxpc3RfZGVsICgmZWxl
bWVudC0+dmVydGljYWwpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGxpc3RfZGVsICgm
ZWxlbWVudC0+aG9yaXpvbnRhbCk7CgogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5
IiwgImNjIik7IH0gd2hpbGUgKDApOwoKICAgICAgICByZXR1cm4gMDsKfQoKCiAgICAgICAgaW50
IGRlbGV0ZV9kZXNjICh1aGNpX3QgKnMsIHVoY2lfZGVzY190ICplbGVtZW50KQp7CiAgICAgICAg
cGNpX3Bvb2xfZnJlZV9SNzdiODdjZjMocy0+ZGVzY19wb29sLCBlbGVtZW50LCBlbGVtZW50LT5k
bWFfYWRkcik7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgogICAgICAgIGludCBhbGxvY19xaCAodWhj
aV90ICpzLCB1aGNpX2Rlc2NfdCAqKiBuZXcpCnsKICAgICAgICBkbWFfYWRkcl90IGRtYV9oYW5k
bGU7CgogICAgICAgICpuZXcgPSBwY2lfcG9vbF9hbGxvY19SNTEzMWI4MTgocy0+ZGVzY19wb29s
LCAweDAxIHwgKDB4MjApLCAmZG1hX2hhbmRsZSk7CiAgICAgICAgaWYgKCEqbmV3KQogICAgICAg
ICAgICAgICAgcmV0dXJuIC0xMjsKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAo
X19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZiAodWhjaV9kZXNjX3QpKSkgPyBfX2NvbnN0YW50
X2NfYW5kX2NvdW50X21lbXNldCgoKCpuZXcpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh
cikoMCkpKSwoKHNpemVvZiAodWhjaV9kZXNjX3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgo
KCpuZXcpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZiAodWhj
aV9kZXNjX3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mICh1aGNpX2Rlc2Nf
dCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoKm5ldykpKSwoKCgwKSkpLCgoKHNpemVvZiAodWhj
aV9kZXNjX3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgqbmV3KSksKCgwKSksKChzaXplb2Yg
KHVoY2lfZGVzY190KSkpKSkpOwogICAgICAgICgqbmV3KS0+ZG1hX2FkZHIgPSBkbWFfaGFuZGxl
OwogICAgICAgICgqbmV3KS0+aHcucWguaGVhZD0oKF9fdTMyKSgweDAwMDEpKTsKICAgICAgICAo
Km5ldyktPmh3LnFoLmVsZW1lbnQ9KChfX3UzMikoMHgwMDAxKSk7CiAgICAgICAgKCpuZXcpLT50
eXBlID0gUUhfVFlQRTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2NrOyBhZGRs
ICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGRvIHsgKCYoKm5ldyktPmhvcml6
b250YWwpLT5uZXh0ID0gKCYoKm5ldyktPmhvcml6b250YWwpOyAoJigqbmV3KS0+aG9yaXpvbnRh
bCktPnByZXYgPSAoJigqbmV3KS0+aG9yaXpvbnRhbCk7IH0gd2hpbGUgKDApOwogICAgICAgIGRv
IHsgKCYoKm5ldyktPnZlcnRpY2FsKS0+bmV4dCA9ICgmKCpuZXcpLT52ZXJ0aWNhbCk7ICgmKCpu
ZXcpLT52ZXJ0aWNhbCktPnByZXYgPSAoJigqbmV3KS0+dmVydGljYWwpOyB9IHdoaWxlICgwKTsK
CiAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKICAgICAgICByZXR1cm4gMDsKfQoKCgogICAgICAg
IGludCBpbnNlcnRfcWggKHVoY2lfdCAqcywgdWhjaV9kZXNjX3QgKnBvcywgdWhjaV9kZXNjX3Qg
Km5ldywgaW50IG9yZGVyKQp7CiAgICAgICAgdWhjaV9kZXNjX3QgKm9sZDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGZsYWdzOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo
ZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmcy0+
cWhfbG9jayk7IH0gd2hpbGUgKDApOwoKICAgICAgICBpZiAoIW9yZGVyKSB7CgogICAgICAgICAg
ICAgICAgb2xkID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShwb3MtPmhvcml6b250YWwucHJl
diktKHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPmhvcml6b250YWwpKSk7CiAg
ICAgICAgICAgICAgICBsaXN0X2FkZF90YWlsICgmbmV3LT5ob3Jpem9udGFsLCAmcG9zLT5ob3Jp
em9udGFsKTsKICAgICAgICAgICAgICAgIChuZXcpLT5ody5xaC5oZWFkPSgoX191MzIpKCgocG9z
KS0+ZG1hX2FkZHJ8MHgwMDAyKSkpIDsKICAgICAgICAgICAgICAgIGlmICghKG9sZC0+aHcucWgu
aGVhZCAmICgoX191MzIpKDB4MDAwMSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCkt
Pmh3LnFoLmhlYWQ9KChfX3UzMikoKChuZXcpLT5kbWFfYWRkcnwweDAwMDIpKSkgOwogICAgICAg
IH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICBvbGQgPSAoKHVoY2lfZGVzY190ICop
KChjaGFyICopKHBvcy0+aG9yaXpvbnRhbC5uZXh0KS0odW5zaWduZWQgbG9uZykoJigodWhjaV9k
ZXNjX3QgKikwKS0+aG9yaXpvbnRhbCkpKTsKICAgICAgICAgICAgICAgIGxpc3RfYWRkICgmbmV3
LT5ob3Jpem9udGFsLCAmcG9zLT5ob3Jpem9udGFsKTsKICAgICAgICAgICAgICAgIChuZXcpLT5o
dy5xaC5oZWFkPSgoX191MzIpKCgob2xkKS0+ZG1hX2FkZHJ8MHgwMDAyKSkpOwogICAgICAgICAg
ICAgICAgKHBvcyktPmh3LnFoLmhlYWQ9KChfX3UzMikoKChuZXcpLT5kbWFfYWRkcnwweDAwMDIp
KSkgOwogICAgICAgIH0KCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2NrOyBhZGRs
ICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIpOwoKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgw
KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6
Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgcmV0dXJuIDA7Cn0KCgogICAg
ICAgIGludCB1bmxpbmtfcWggKHVoY2lfdCAqcywgdWhjaV9kZXNjX3QgKmVsZW1lbnQpCnsKICAg
ICAgICB1aGNpX2Rlc2NfdCAqcHJldjsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAg
ICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoi
PWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmcy0+cWhfbG9jayk7IH0gd2hpbGUgKDAp
OwoKICAgICAgICBwcmV2ID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShlbGVtZW50LT5ob3Jp
em9udGFsLnByZXYpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT5ob3Jpem9u
dGFsKSkpOwogICAgICAgIHByZXYtPmh3LnFoLmhlYWQgPSBlbGVtZW50LT5ody5xaC5oZWFkOwoK
ICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKICAgICAgICBsaXN0X2RlbCgmZWxlbWVudC0+aG9y
aXpvbnRhbCk7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibG9jazsgYWRkbCAkMCww
KCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19h
c21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9y
eSIsICJjYyIpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgcmV0dXJuIDA7Cn0KCiAgICAgICAgaW50
IGRlbGV0ZV9xaCAodWhjaV90ICpzLCB1aGNpX2Rlc2NfdCAqcWgpCnsKICAgICAgICB1aGNpX2Rl
c2NfdCAqdGQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqcDsKCiAgICAgICAgbGlzdF9kZWwg
KCZxaC0+aG9yaXpvbnRhbCk7CgogICAgICAgIHdoaWxlICgocCA9IHFoLT52ZXJ0aWNhbC5uZXh0
KSAhPSAmcWgtPnZlcnRpY2FsKSB7CiAgICAgICAgICAgICAgICB0ZCA9ICgodWhjaV9kZXNjX3Qg
KikoKGNoYXIgKikocCktKHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPnZlcnRp
Y2FsKSkpOwogICAgICAgICAgICAgICAgZG8ge30gd2hpbGUgKDApOwogICAgICAgICAgICAgICAg
dW5saW5rX3RkIChzLCB0ZCwgMCk7CiAgICAgICAgICAgICAgICBkZWxldGVfZGVzYyAocywgdGQp
OwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlX2Rlc2MgKHMsIHFoKTsKCiAgICAgICAgcmV0dXJu
IDA7Cn0KCiAgICAgICAgdm9pZCBjbGVhbl90ZF9jaGFpbiAodWhjaV90ICpzLCB1aGNpX2Rlc2Nf
dCAqdGQpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwOwogICAgICAgIHVoY2lfZGVzY190
ICp0ZDE7CgogICAgICAgIGlmICghdGQpCiAgICAgICAgICAgICAgICByZXR1cm47CgogICAgICAg
IHdoaWxlICgocCA9IHRkLT5ob3Jpem9udGFsLm5leHQpICE9ICZ0ZC0+aG9yaXpvbnRhbCkgewog
ICAgICAgICAgICAgICAgdGQxID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShwKS0odW5zaWdu
ZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+aG9yaXpvbnRhbCkpKTsKICAgICAgICAgICAg
ICAgIGRlbGV0ZV9kZXNjIChzLCB0ZDEpOwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlX2Rlc2Mg
KHMsIHRkKTsKfQoKCiAgICAgICAgdm9pZCBmaWxsX3RkICh1aGNpX2Rlc2NfdCAqdGQsIGludCBz
dGF0dXMsIGludCBpbmZvLCBfX3UzMiBidWZmZXIpCnsKICAgICAgICB0ZC0+aHcudGQuc3RhdHVz
ID0gKChfX3UzMikoc3RhdHVzKSk7CiAgICAgICAgdGQtPmh3LnRkLmluZm8gPSAoKF9fdTMyKShp
bmZvKSk7CiAgICAgICAgdGQtPmh3LnRkLmJ1ZmZlciA9ICgoX191MzIpKGJ1ZmZlcikpOwp9CgoK
ICAgICAgICB2b2lkIGNsZWFudXBfc2tlbCAodWhjaV90ICpzKQp7CiAgICAgICAgdW5zaWduZWQg
aW50IG47CiAgICAgICAgdWhjaV9kZXNjX3QgKnRkOwoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7
CgogICAgICAgIGNsZWFuX2Rlc2NzKHMsMSk7CgoKICAgICAgICBpZiAocy0+dGQzMm1zKSB7Cgog
ICAgICAgICAgICAgICAgdW5saW5rX3RkKHMscy0+dGQzMm1zLDEpOwogICAgICAgICAgICAgICAg
ZGVsZXRlX2Rlc2Mocywgcy0+dGQzMm1zKTsKICAgICAgICB9CgogICAgICAgIGZvciAobiA9IDA7
IG4gPCA4OyBuKyspIHsKICAgICAgICAgICAgICAgIHRkID0gcy0+aW50X2NoYWluW25dOwogICAg
ICAgICAgICAgICAgY2xlYW5fdGRfY2hhaW4gKHMsIHRkKTsKICAgICAgICB9CgogICAgICAgIGlm
IChzLT5pc29fdGQpIHsKICAgICAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCAxMDI0OyBuKysp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGQgPSBzLT5pc29fdGRbbl07CiAgICAgICAgICAg
ICAgICAgICAgICAgIGNsZWFuX3RkX2NoYWluIChzLCB0ZCk7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICBrZnJlZV9SMDM3YTBjYmEgKHMtPmlzb190ZCk7CiAgICAgICAgfQoKICAg
ICAgICBpZiAocy0+ZnJhbWVsaXN0KQogICAgICAgICAgICAgICAgcGNpX2ZyZWVfY29uc2lzdGVu
dF9SYmVhMDY4ZDcocy0+dWhjaV9wY2ksICgxVUwgPDwgMTIpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLT5mcmFtZWxpc3QsIHMtPmZyYW1lbGlzdF9kbWEpOwoKICAgICAg
ICBpZiAocy0+Y29udHJvbF9jaGFpbikgewoKICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgKnA7CiAgICAgICAgICAgICAgICB1aGNpX2Rlc2NfdCAqcWgsICpxaDE7CgogICAgICAgICAg
ICAgICAgcWggPSBzLT5jb250cm9sX2NoYWluOwogICAgICAgICAgICAgICAgd2hpbGUgKChwID0g
cWgtPmhvcml6b250YWwubmV4dCkgIT0gJnFoLT5ob3Jpem9udGFsKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHFoMSA9ICgodWhjaV9kZXNjX3QgKikoKGNoYXIgKikocCktKHVuc2lnbmVkIGxv
bmcpKCYoKHVoY2lfZGVzY190ICopMCktPmhvcml6b250YWwpKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbGV0ZV9xaCAocywgcWgxKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICBkZWxldGVfcWggKHMsIHFoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICBpZiAocy0+bHNfY29udHJvbF9jaGFpbikKICAgICAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlX2Rlc2MgKHMsIHMtPmxzX2NvbnRyb2xfY2hhaW4pOwogICAgICAgICAgICAgICAgaWYg
KHMtPmNvbnRyb2xfY2hhaW4pCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZV9kZXNjIChz
LCBzLT5jb250cm9sX2NoYWluKTsKICAgICAgICAgICAgICAgIGlmIChzLT5idWxrX2NoYWluKQog
ICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVfZGVzYyAocywgcy0+YnVsa19jaGFpbik7CiAg
ICAgICAgICAgICAgICBpZiAocy0+Y2hhaW5fZW5kKQogICAgICAgICAgICAgICAgICAgICAgICBk
ZWxldGVfZGVzYyAocywgcy0+Y2hhaW5fZW5kKTsKICAgICAgICB9CgogICAgICAgIGlmIChzLT5k
ZXNjX3Bvb2wpIHsKICAgICAgICAgICAgICAgIHBjaV9wb29sX2Rlc3Ryb3lfUjFkN2I5Y2MyKHMt
PmRlc2NfcG9vbCk7CiAgICAgICAgICAgICAgICBzLT5kZXNjX3Bvb2wgPSAoKHZvaWQgKikwKTsK
ICAgICAgICB9CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKfQoKCgogICAgICAgIGludCBpbml0
X3NrZWwgKHVoY2lfdCAqcykKewogICAgICAgIGludCBuLCByZXQ7CiAgICAgICAgdWhjaV9kZXNj
X3QgKnFoLCAqdGQ7CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKCiAgICAgICAgcy0+ZnJhbWVs
aXN0ID0gcGNpX2FsbG9jX2NvbnNpc3RlbnRfUmRiMTY4Y2M0KHMtPnVoY2lfcGNpLCAoMVVMIDw8
IDEyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcy0+ZnJh
bWVsaXN0X2RtYSk7CgogICAgICAgIGlmICghcy0+ZnJhbWVsaXN0KQogICAgICAgICAgICAgICAg
cmV0dXJuIC0xMjsKCiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRp
bl9jb25zdGFudF9wKCg0MDk2KSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHMt
PmZyYW1lbGlzdCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoNDA5Nikp
KSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKChzLT5mcmFtZWxpc3QpKSwoKDB4MDEwMTAxMDFVTCoo
dW5zaWduZWQgY2hhcikoMCkpKSwoKDQwOTYpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKCg0
MDk2KSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHMtPmZyYW1lbGlzdCkpKSwoKCgwKSkpLCgoKDQw
OTYpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHMtPmZyYW1lbGlzdCkpLCgoMCkpLCgoNDA5Nikp
KSkpOwoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAgIHMtPmRlc2NfcG9vbCA9IHBj
aV9wb29sX2NyZWF0ZV9SNjliNjc4NDMoInVoY2lfZGVzYyIsIHMtPnVoY2lfcGNpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodWhjaV9kZXNjX3QpLCAxNiwg
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSB8ICgweDIwKSk7
CiAgICAgICAgaWYgKCFzLT5kZXNjX3Bvb2wpCiAgICAgICAgICAgICAgICBnb3RvIGluaXRfc2tl
bF9jbGVhbnVwOwoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgcy0+aXNvX3RkID0g
KHVoY2lfZGVzY190ICoqKSBrbWFsbG9jX1I5M2Q0Y2ZlNiAoMTAyNCAqIHNpemVvZiAodWhjaV9k
ZXNjX3QqKSwgKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4ODAgfCAweDEwMCkpOwoKICAgICAgICBp
ZiAoIXMtPmlzb190ZCkKICAgICAgICAgICAgICAgIGdvdG8gaW5pdF9za2VsX2NsZWFudXA7Cgog
ICAgICAgIHMtPmxzX2NvbnRyb2xfY2hhaW4gPSAoKHZvaWQgKikwKTsKICAgICAgICBzLT5jb250
cm9sX2NoYWluID0gKCh2b2lkICopMCk7CiAgICAgICAgcy0+YnVsa19jaGFpbiA9ICgodm9pZCAq
KTApOwogICAgICAgIHMtPmNoYWluX2VuZCA9ICgodm9pZCAqKTApOwoKICAgICAgICBkbyB7fSB3
aGlsZSAoMCk7CiAgICAgICAgZm9yIChuID0gMDsgbiA8IDEwMjQ7IG4rKykgewoKICAgICAgICAg
ICAgICAgIGlmIChhbGxvY190ZCAocywgJnRkLCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAg
Z290byBpbml0X3NrZWxfY2xlYW51cDsKCiAgICAgICAgICAgICAgICBzLT5pc29fdGRbbl0gPSB0
ZDsKICAgICAgICAgICAgICAgIHMtPmZyYW1lbGlzdFtuXSA9ICgoX191MzIpKChfX3UzMikgdGQt
PmRtYV9hZGRyKSk7CiAgICAgICAgfQoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAg
aWYgKGFsbG9jX3FoIChzLCAmcWgpKQogICAgICAgICAgICAgICAgZ290byBpbml0X3NrZWxfY2xl
YW51cDsKCiAgICAgICAgcy0+Y2hhaW5fZW5kID0gcWg7CgogICAgICAgIGlmIChhbGxvY190ZCAo
cywgJnRkLCAwKSkKICAgICAgICAgICAgICAgIGdvdG8gaW5pdF9za2VsX2NsZWFudXA7CgogICAg
ICAgIGZpbGxfdGQgKHRkLCAwICogKDEgPDwgMjQpLCAwLCAwKTsKICAgICAgICBpbnNlcnRfdGQg
KHMsIHFoLCB0ZCwgMCk7CiAgICAgICAgcWgtPmh3LnFoLmVsZW1lbnQgJj0gKChfX3UzMikofjB4
MDAwMSkpOwogICAgICAgIHMtPnRkMW1zPXRkOwoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAg
ICAgICAgaWYgKGFsbG9jX3FoIChzLCAmcWgpKQogICAgICAgICAgICAgICAgZ290byBpbml0X3Nr
ZWxfY2xlYW51cDsKCiAgICAgICAgaW5zZXJ0X3FoIChzLCBzLT5jaGFpbl9lbmQsIHFoLCAwKTsK
ICAgICAgICBzLT5idWxrX2NoYWluID0gcWg7CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKICAg
ICAgICByZXQgPSBhbGxvY19xaCAocywgJnFoKTsKICAgICAgICBpZiAocmV0KQogICAgICAgICAg
ICAgICAgZ290byBpbml0X3NrZWxfY2xlYW51cDsKCiAgICAgICAgaW5zZXJ0X3FoIChzLCBzLT5i
dWxrX2NoYWluLCBxaCwgMCk7CiAgICAgICAgcy0+Y29udHJvbF9jaGFpbiA9IHFoOwoKCgogICAg
ICAgIChzLT5jaGFpbl9lbmQpLT5ody5xaC5oZWFkPSgoX191MzIpKHMtPmNvbnRyb2xfY2hhaW4t
PmRtYV9hZGRyIHwgMHgwMDAyIHwgMHgwMDAxKSk7CgoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7
CiAgICAgICAgaWYgKGFsbG9jX3FoIChzLCAmcWgpKQogICAgICAgICAgICAgICAgZ290byBpbml0
X3NrZWxfY2xlYW51cDsKCiAgICAgICAgaW5zZXJ0X3FoIChzLCBzLT5jb250cm9sX2NoYWluLCBx
aCwgMCk7CiAgICAgICAgcy0+bHNfY29udHJvbF9jaGFpbiA9IHFoOwoKICAgICAgICBmb3IgKG4g
PSAwOyBuIDwgODsgbisrKQogICAgICAgICAgICAgICAgcy0+aW50X2NoYWluW25dID0gMDsKCiAg
ICAgICAgZG8ge30gd2hpbGUgKDApOwoKICAgICAgICBmb3IgKG4gPSAwOyBuIDwgODsgbisrKSB7
CiAgICAgICAgICAgICAgICB1aGNpX2Rlc2NfdCAqdGQ7CgogICAgICAgICAgICAgICAgaWYgKGFs
bG9jX3RkIChzLCAmdGQsIDApKQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGluaXRfc2tl
bF9jbGVhbnVwOwoKICAgICAgICAgICAgICAgIHMtPmludF9jaGFpbltuXSA9IHRkOwogICAgICAg
ICAgICAgICAgaWYgKG4gPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAocy0+aW50X2No
YWluWzBdKS0+aHcudGQubGluaz0oKF9fdTMyKShzLT5sc19jb250cm9sX2NoYWluLT5kbWFfYWRk
ciB8IDB4MDAwMikpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIChzLT5pbnRfY2hhaW5bbl0pLT5ody50ZC5saW5rPSgoX191
MzIpKHMtPmludF9jaGFpblswXS0+ZG1hX2FkZHIpKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICB9CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKCiAgICAgICAgZm9yIChuID0gMDsgbiA8IDEw
MjQ7IG4rKykgewoKICAgICAgICAgICAgICAgIGludCBtLCBvOwogICAgICAgICAgICAgICAgZG8g
e30gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgaWYgKChuJjEyNyk9PTEyNykKICAgICAgICAg
ICAgICAgICAgICAgICAgKCh1aGNpX2Rlc2NfdCopIHMtPmlzb190ZFtuXSktPmh3LnRkLmxpbmsg
PSAoKF9fdTMyKShzLT5pbnRfY2hhaW5bMF0tPmRtYV9hZGRyKSk7CiAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDEsIG0gPSAyOyBtIDw9IDEyODsg
bysrLCBtICs9IG0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuICYgKG0g
LSAxKSkgPT0gKChtIC0gMSkgLyAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICgoKHVoY2lfZGVzY190Kikgcy0+aXNvX3RkW25dKSktPmh3LnRkLmxpbms9KChfX3Uz
Mikocy0+aW50X2NoYWluW29dLT5kbWFfYWRkcikpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGFs
bG9jX3RkIChzLCAmdGQsIDApKQogICAgICAgICAgICAgICAgZ290byBpbml0X3NrZWxfY2xlYW51
cDsKCiAgICAgICAgZmlsbF90ZCAodGQsIDAgKiAoMSA8PCAyNCksIDAsIDApOwogICAgICAgIHMt
PnRkMzJtcz10ZDsKCiAgICAgICAgaW5zZXJ0X3RkX2hvcml6b250YWwgKHMsIHMtPmludF9jaGFp
bls1XSwgdGQpOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAs
MCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKICAgICAg
ICByZXR1cm4gMDsKCiAgICAgIGluaXRfc2tlbF9jbGVhbnVwOgogICAgICAgIGNsZWFudXBfc2tl
bCAocyk7CiAgICAgICAgcmV0dXJuIC0xMjsKfQoKCgoKCiAgICAgICAgaW50IHVoY2lfc3VibWl0
X2NvbnRyb2xfdXJiICh1cmJfdCAqdXJiKQp7CiAgICAgICAgdWhjaV9kZXNjX3QgKnFoLCAqdGQ7
CiAgICAgICAgdWhjaV90ICpzID0gKHVoY2lfdCopIHVyYi0+ZGV2LT5idXMtPmhjcHJpdjsKICAg
ICAgICB1cmJfcHJpdl90ICp1cmJfcHJpdiA9IHVyYi0+aGNwcml2OwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZGVzdGluYXRpb24sIHN0YXR1czsKICAgICAgICBpbnQgbWF4c3plID0gKCgoKCh1cmIt
PnBpcGUpID4+IDcpICYgMSkgXiAxKSA/ICh1cmItPmRldiktPmVwbWF4cGFja2V0b3V0WygoKHVy
Yi0+cGlwZSkgPj4gMTUpICYgMHhmKV0gOiAodXJiLT5kZXYpLT5lcG1heHBhY2tldGluIFsoKCh1
cmItPnBpcGUpID4+IDE1KSAmIDB4ZildICk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsZW47CiAg
ICAgICAgY2hhciAqZGF0YTsKICAgICAgICBpbnQgZGVwdGhfZmlyc3Q9MDsKCiAgICAgICAgZG8g
e30gd2hpbGUgKDApOwogICAgICAgIGlmIChhbGxvY19xaCAocywgJnFoKSkKICAgICAgICAgICAg
ICAgIHJldHVybiAtMTI7CgogICAgICAgIGlmIChhbGxvY190ZCAocywgJnRkLCAweDAwMDQgKiBk
ZXB0aF9maXJzdCkpCiAgICAgICAgewogICAgICAgICAgICAgICAgZGVsZXRlX3FoIChzLCBxaCk7
CiAgICAgICAgICAgICAgICByZXR1cm4gLTEyOwogICAgICAgIH0KCgogICAgICAgIGRlc3RpbmF0
aW9uID0gKHVyYi0+cGlwZSAmIDB4MDAwN2ZmMDApIHwgMHgyZDsKCgogICAgICAgIHN0YXR1cyA9
ICh1cmItPnBpcGUgJiAoMSA8PCAyNikpIHwgKDEgPDwgMjMpIHwKICAgICAgICAgICAgICAgICh1
cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDAxID8gMCA6ICgxIDw8IDI5KSkgfCAoMyA8PCAyNyk7
CgoKICAgICAgICBmaWxsX3RkICh0ZCwgc3RhdHVzLCBkZXN0aW5hdGlvbiB8ICg3IDw8IDIxKSwg
dXJiX3ByaXYtPnNldHVwX3BhY2tldF9kbWEpOwoKICAgICAgICBpbnNlcnRfdGQgKHMsIHFoLCB0
ZCwgMCk7CiMgNzQxICJ1c2ItdWhjaS5jIgogICAgICAgIGxlbiA9IHVyYi0+dHJhbnNmZXJfYnVm
ZmVyX2xlbmd0aDsKICAgICAgICBkYXRhID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7CgoKCgogICAg
ICAgIGRlc3RpbmF0aW9uID0gKHVyYi0+cGlwZSAmIDB4MDAwN2ZmMDApIHwgKCgoKCh1cmItPnBp
cGUpID4+IDcpICYgMSkgXiAxKT8weGUxOjB4NjkpOwoKICAgICAgICB3aGlsZSAobGVuID4gMCkg
ewogICAgICAgICAgICAgICAgaW50IHBrdHN6ZSA9IGxlbjsKCiAgICAgICAgICAgICAgICBpZiAo
YWxsb2NfdGQgKHMsICZ0ZCwgMHgwMDA0ICogZGVwdGhfZmlyc3QpKQogICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIGZhaWxfdW5tYXBfZW5vbWVtOwoKICAgICAgICAgICAgICAgIGlmIChwa3Rz
emUgPiBtYXhzemUpCiAgICAgICAgICAgICAgICAgICAgICAgIHBrdHN6ZSA9IG1heHN6ZTsKCiAg
ICAgICAgICAgICAgICBkZXN0aW5hdGlvbiBePSAxIDw8IDE5OwoKCiAgICAgICAgICAgICAgICBm
aWxsX3RkICh0ZCwgc3RhdHVzLCBkZXN0aW5hdGlvbiB8ICgocGt0c3plIC0gMSkgPDwgMjEpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgdXJiX3ByaXYtPnRyYW5zZmVyX2J1ZmZlcl9kbWEgKyAo
ZGF0YSAtIChjaGFyICopdXJiLT50cmFuc2Zlcl9idWZmZXIpKTsKCiAgICAgICAgICAgICAgICBp
bnNlcnRfdGQgKHMsIHFoLCB0ZCwgMHgwMDA0ICogZGVwdGhfZmlyc3QpOwoKICAgICAgICAgICAg
ICAgIGRhdGEgKz0gcGt0c3plOwogICAgICAgICAgICAgICAgbGVuIC09IHBrdHN6ZTsKICAgICAg
ICB9CgoKCgogICAgICAgIGRlc3RpbmF0aW9uICY9IH4weGZmOwoKICAgICAgICBpZiAoKCgoKHVy
Yi0+cGlwZSkgPj4gNykgJiAxKSBeIDEpIHx8ICh1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGgg
PT0gMCkpCiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiB8PSAweDY5OwogICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uIHw9IDB4ZTE7CgogICAgICAgIGRlc3RpbmF0aW9u
IHw9IDEgPDwgMTk7CgogICAgICAgIGlmIChhbGxvY190ZCAocywgJnRkLCAweDAwMDQpKQogICAg
ICAgICAgICAgICAgZ290byBmYWlsX3VubWFwX2Vub21lbTsKCiAgICAgICAgc3RhdHVzICY9figx
IDw8IDI5KTsKCgogICAgICAgIGZpbGxfdGQgKHRkLCBzdGF0dXMgfCAoMSA8PCAyNCksIGRlc3Rp
bmF0aW9uIHwgKDB4N2ZmIDw8IDIxKSwKICAgICAgICAgICAgICAgICAwKTsKCiAgICAgICAgaW5z
ZXJ0X3RkIChzLCBxaCwgdGQsIDB4MDAwNCAqIGRlcHRoX2ZpcnN0KTsKCiAgICAgICAgbGlzdF9h
ZGQgKCZxaC0+ZGVzY19saXN0LCAmdXJiX3ByaXYtPmRlc2NfbGlzdCk7CgogICAgICAgIHF1ZXVl
X3VyYiAocywgdXJiKTsKCiAgICAgICAgcWgtPmh3LnFoLmVsZW1lbnQgJj0gKChfX3UzMikofjB4
MDAwMSkpOwoKCgogICAgICAgIGlmICh1cmItPnBpcGUgJiAoMSA8PCAyNikpCiAgICAgICAgICAg
ICAgICBpbnNlcnRfcWggKHMsIHMtPmNvbnRyb2xfY2hhaW4sIHFoLCAwKTsKICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICBpbnNlcnRfcWggKHMsIHMtPmJ1bGtfY2hhaW4sIHFoLCAwKTsKCiAg
ICAgICAgZG8ge30gd2hpbGUgKDApOwogICAgICAgIHJldHVybiAwOwoKZmFpbF91bm1hcF9lbm9t
ZW06CiAgICAgICAgZGVsZXRlX3FoKHMsIHFoKTsKICAgICAgICByZXR1cm4gLTEyOwp9CgoKCgog
ICAgICAgIGludCB1aGNpX3N1Ym1pdF9idWxrX3VyYiAodXJiX3QgKnVyYiwgdXJiX3QgKmJ1bGtf
dXJiKQp7CiAgICAgICAgdWhjaV90ICpzID0gKHVoY2lfdCopIHVyYi0+ZGV2LT5idXMtPmhjcHJp
djsKICAgICAgICB1cmJfcHJpdl90ICp1cmJfcHJpdiA9IHVyYi0+aGNwcml2LCAqdXByaXYsICpi
cHJpdj0oKHZvaWQgKikwKTsKICAgICAgICB1aGNpX2Rlc2NfdCAqcWgsICp0ZCwgKm5xaD0oKHZv
aWQgKikwKSwgKmJxaD0oKHZvaWQgKikwKSwgKmZpcnN0X3RkPSgodm9pZCAqKTApOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZGVzdGluYXRpb24sIHN0YXR1czsKICAgICAgICBjaGFyICpkYXRhOwog
ICAgICAgIHVuc2lnbmVkIGludCBwaXBlID0gdXJiLT5waXBlOwogICAgICAgIGludCBtYXhzemUg
PSAoKCgoKHBpcGUpID4+IDcpICYgMSkgXiAxKSA/ICh1cmItPmRldiktPmVwbWF4cGFja2V0b3V0
WygoKHBpcGUpID4+IDE1KSAmIDB4ZildIDogKHVyYi0+ZGV2KS0+ZXBtYXhwYWNrZXRpbiBbKCgo
cGlwZSkgPj4gMTUpICYgMHhmKV0gKTsKICAgICAgICBpbnQgaW5mbywgbGVuLCBsYXN0OwogICAg
ICAgIGludCBkZXB0aF9maXJzdD0wOwoKICAgICAgICBpZiAoKCh1cmItPmRldiktPmhhbHRlZFso
KCgocGlwZSkgPj4gNykgJiAxKSBeIDEpXSAmICgxIDw8ICgoKChwaXBlKSA+PiAxNSkgJiAweGYp
KSkpKQogICAgICAgICAgICAgICAgcmV0dXJuIC0zMjsKCiAgICAgICAgZG8ge30gd2hpbGUgKDAp
OwoKCiAgICAgICAgdXByaXYgPSAodXJiX3ByaXZfdCopdXJiLT5oY3ByaXY7CgogICAgICAgIGlm
ICghYnVsa191cmIpIHsKICAgICAgICAgICAgICAgIGlmIChhbGxvY19xaCAocywgJnFoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xMjsKCiAgICAgICAgICAgICAgICBpZiAodXJi
LT50cmFuc2Zlcl9mbGFncyAmIDB4MDAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YWxsb2NfcWgocywgJm5xaCkpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWxldGVfZGVzYyAocywgcWgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAtMTI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgdXByaXYtPm5leHRfcWggPSBucWg7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGRvIHt9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBicHJpdiA9ICh1cmJfcHJpdl90KilidWxrX3Vy
Yi0+aGNwcml2OwogICAgICAgICAgICAgICAgcWggPSBicHJpdi0+Ym90dG9tX3FoOwogICAgICAg
ICAgICAgICAgbnFoID0gYnByaXYtPm5leHRfcWg7CiAgICAgICAgICAgICAgICB1cHJpdi0+bmV4
dF9xaD1ucWg7CiAgICAgICAgICAgICAgICB1cHJpdi0+cHJldl9xdWV1ZWRfdXJiPWJ1bGtfdXJi
OwogICAgICAgIH0KCiAgICAgICAgaWYgKHVyYi0+dHJhbnNmZXJfZmxhZ3MgJiAweDAwMTApIHsK
ICAgICAgICAgICAgICAgIGlmIChhbGxvY19xaCAocywgJmJxaCkpCiAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYnVsa191cmIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWxldGVfZGVzYyhzLCBxaCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVsZXRlX2Rlc2MocywgbnFoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEyOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgKGJxaCktPmh3LnFoLmVsZW1lbnQ9KChfX3UzMikoMHgwMDAxKSk7CiAg
ICAgICAgICAgICAgICAoYnFoKS0+aHcucWguaGVhZD0oKF9fdTMyKShucWgtPmRtYV9hZGRyIHwg
MHgwMDAyKSk7CiAgICAgICAgICAgICAgICB1cHJpdi0+Ym90dG9tX3FoID0gYnFoOwogICAgICAg
IH0KICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKICAgICAgICBkZXN0aW5hdGlvbiA9IChwaXBl
ICYgMHgwMDA3ZmYwMCkgfCAoKChwaXBlKSAmIDB4ODApID8gMHg2OSA6IDB4ZTEpOwoKCiAgICAg
ICAgc3RhdHVzID0gKHBpcGUgJiAoMSA8PCAyNikpIHwgKDEgPDwgMjMpIHwKICAgICAgICAgICAg
ICAgICgodXJiLT50cmFuc2Zlcl9mbGFncyAmIDB4MDAwMSkgPyAwIDogKDEgPDwgMjkpKSB8ICgz
IDw8IDI3KTsKCgogICAgICAgIGxlbiA9IHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aDsKICAg
ICAgICBkYXRhID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7CgogICAgICAgIGRvIHsKICAgICAgICAg
ICAgICAgIGludCBwa3RzemUgPSBsZW47CgogICAgICAgICAgICAgICAgaWYgKGFsbG9jX3RkIChz
LCAmdGQsIDB4MDAwNCAqIGRlcHRoX2ZpcnN0KSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgZGVsZXRlX3FoIChzLCBxaCk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAtMTI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHBrdHN6
ZSA+IG1heHN6ZSkKICAgICAgICAgICAgICAgICAgICAgICAgcGt0c3plID0gbWF4c3plOwoKCiAg
ICAgICAgICAgICAgICBpbmZvID0gZGVzdGluYXRpb24gfCAoKChwa3RzemUgLSAxKSYweDdmZikg
PDwgMjEpIHwKICAgICAgICAgICAgICAgICAgICAgICAgKCgoKHVyYi0+ZGV2KS0+dG9nZ2xlWygo
KChwaXBlKSA+PiA3KSAmIDEpIF4gMSldID4+ICgoKHBpcGUpID4+IDE1KSAmIDB4ZikpICYgMSkg
PDwgMTkpOwoKICAgICAgICAgICAgICAgIGZpbGxfdGQgKHRkLCBzdGF0dXMsIGluZm8sCiAgICAg
ICAgICAgICAgICAgICAgICAgICB1cmJfcHJpdi0+dHJhbnNmZXJfYnVmZmVyX2RtYSArIChkYXRh
IC0gKGNoYXIgKil1cmItPnRyYW5zZmVyX2J1ZmZlcikpOwoKICAgICAgICAgICAgICAgIGRhdGEg
Kz0gcGt0c3plOwogICAgICAgICAgICAgICAgbGVuIC09IHBrdHN6ZTsKCiAgICAgICAgICAgICAg
ICBsYXN0ID0gKGxlbiA9PSAwICYmICgoKChwaXBlKSA+PiA3KSAmIDEpIHx8IHBrdHN6ZSA8IG1h
eHN6ZSB8fCAhKHVyYi0+dHJhbnNmZXJfZmxhZ3MgJiAweDAwNDApKSk7CgogICAgICAgICAgICAg
ICAgaWYgKGxhc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICh0ZCktPmh3LnRkLnN0YXR1cyB8
PSAoKF9fdTMyKSgoMSA8PCAyNCkpKTsKCiAgICAgICAgICAgICAgICBpbnNlcnRfdGQgKHMsIHFo
LCB0ZCwgMHgwMDA0ICogZGVwdGhfZmlyc3QpOwogICAgICAgICAgICAgICAgaWYgKCFmaXJzdF90
ZCkKICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfdGQ9dGQ7CiAgICAgICAgICAgICAgICAo
KHVyYi0+ZGV2KS0+dG9nZ2xlWygoKChwaXBlKSA+PiA3KSAmIDEpIF4gMSldIF49ICgxIDw8ICgo
KHBpcGUpID4+IDE1KSAmIDB4ZikpKTsKCiAgICAgICAgfSB3aGlsZSAoIWxhc3QpOwoKICAgICAg
ICBpZiAoYnVsa191cmIgJiYgYnByaXYpCiAgICAgICAgICAgICAgICBicHJpdi0+bmV4dF9xdWV1
ZWRfdXJiPXVyYjsKCiAgICAgICAgbGlzdF9hZGQgKCZxaC0+ZGVzY19saXN0LCAmdXJiX3ByaXYt
PmRlc2NfbGlzdCk7CgogICAgICAgIGlmICh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDEwKQog
ICAgICAgICAgICAgICAgYXBwZW5kX3FoKHMsIHRkLCBicWgsIDB4MDAwNCAqIGRlcHRoX2ZpcnN0
KTsKCiAgICAgICAgcXVldWVfdXJiX3VubG9ja2VkIChzLCB1cmIpOwoKICAgICAgICBpZiAodXJi
LT50cmFuc2Zlcl9mbGFncyAmIDB4MDAxMCkKICAgICAgICAgICAgICAgIChxaCktPmh3LnFoLmVs
ZW1lbnQ9KChfX3UzMikoZmlyc3RfdGQtPmRtYV9hZGRyKSk7CiAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgcWgtPmh3LnFoLmVsZW1lbnQgJj0gKChfX3UzMikofjB4MDAwMSkpOwoKICAgICAg
ICBpZiAoIWJ1bGtfdXJiKSB7CiAgICAgICAgICAgICAgICBpZiAodXJiLT50cmFuc2Zlcl9mbGFn
cyAmIDB4MDAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkoJnMtPnRkX2xvY2sp
OwogICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRfcWggKHMsIHMtPmNoYWluX2VuZCwgcWgs
IDApOwogICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRfcWggKHMsIHMtPmNoYWluX2VuZCwg
bnFoLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBp
bnNlcnRfcWggKHMsIHMtPmNoYWluX2VuZCwgcWgsIDApOwogICAgICAgIH0KCgoKICAgICAgICBy
ZXR1cm4gMDsKfQoKICAgICAgICB2b2lkIHVoY2lfY2xlYW5faXNvX3N0ZXAxKHVoY2lfdCAqcywg
dXJiX3ByaXZfdCAqdXJiX3ByaXYpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwOwogICAg
ICAgIHVoY2lfZGVzY190ICp0ZDsKCiAgICAgICAgZm9yIChwID0gdXJiX3ByaXYtPmRlc2NfbGlz
dC5uZXh0OyBwICE9ICZ1cmJfcHJpdi0+ZGVzY19saXN0OyBwID0gcC0+bmV4dCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRkID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShw
KS0odW5zaWduZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+ZGVzY19saXN0KSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGlua190ZCAocywgdGQsIDEpOwogICAgICAg
IH0KfQoKICAgICAgICB2b2lkIHVoY2lfY2xlYW5faXNvX3N0ZXAyKHVoY2lfdCAqcywgdXJiX3By
aXZfdCAqdXJiX3ByaXYpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwOwogICAgICAgIHVo
Y2lfZGVzY190ICp0ZDsKCiAgICAgICAgd2hpbGUgKChwID0gdXJiX3ByaXYtPmRlc2NfbGlzdC5u
ZXh0KSAhPSAmdXJiX3ByaXYtPmRlc2NfbGlzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRkID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShwKS0odW5zaWduZWQgbG9uZyko
JigodWhjaV9kZXNjX3QgKikwKS0+ZGVzY19saXN0KSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpc3RfZGVsIChwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWxldGVfZGVzYyAocywgdGQpOwogICAgICAgIH0KfQoKCgoKCgoKICAgICAgICB2b2lkIHVoY2lf
Y2xlYW5fdHJhbnNmZXIgKHVoY2lfdCAqcywgdXJiX3QgKnVyYiwgdWhjaV9kZXNjX3QgKnFoLCBp
bnQgbW9kZSkKewogICAgICAgIHVoY2lfZGVzY190ICpicWgsICpucWgsICpwcmV2cWgsICpwcmV2
dGQ7CiAgICAgICAgaW50IG5vdzsKICAgICAgICB1cmJfcHJpdl90ICpwcml2PSh1cmJfcHJpdl90
Kil1cmItPmhjcHJpdjsKCiAgICAgICAgbm93PShpbncgKChzKS0+aW9fYWRkciArIDYpKTsKCiAg
ICAgICAgYnFoPXByaXYtPmJvdHRvbV9xaDsKCiAgICAgICAgaWYgKCFwcml2LT5uZXh0X3F1ZXVl
ZF91cmIpIHsKCiAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAgICAgICAg
ICAgaWYgKHByaXYtPnByZXZfcXVldWVkX3VyYiAmJiBtb2RlICE9IDIpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVyYl9wcml2X3QqIHBwcml2PSh1cmJfcHJpdl90Kilwcml2LT5wcmV2
X3F1ZXVlZF91cmItPmhjcHJpdjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8g
eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxh
Z3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnMtPnFoX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2cWggPSAoKHVoY2lfZGVzY190ICopKChjaGFy
ICopKHBwcml2LT5kZXNjX2xpc3QubmV4dCktKHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190
ICopMCktPmRlc2NfbGlzdCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2
dGQgPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKHByZXZxaC0+dmVydGljYWwucHJldiktKHVu
c2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPnZlcnRpY2FsKSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChwcmV2dGQpLT5ody50ZC5saW5rPSgoX191MzIpKHByaXYt
PmJvdHRvbV9xaC0+ZG1hX2FkZHIgfCAweDAwMDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAsMCglJWVzcCkiOiA6
IDoibWVtb3J5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8ge30gd2hpbGUg
KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDAp
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToi
bWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcHJpdi0+Ym90dG9tX3FoID0gcHJpdi0+Ym90dG9tX3FoOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBwcml2LT5uZXh0X3F1ZXVlZF91cmIgPSAoKHZvaWQgKikwKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobW9kZSAhPSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVubGlua19xaChzLCBxaCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnFoKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnFoPXByaXYtPm5leHRfcWg7CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RlICE9IDIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmtfcWgocywgbnFoKTsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgIT0gMCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnFoLT5sYXN0X3VzZWQgPSBicWgtPmxhc3RfdXNlZCA9IG5v
dzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwg
KCZucWgtPmhvcml6b250YWwsICZzLT5mcmVlX2Rlc2MpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCAoJmJxaC0+aG9yaXpvbnRhbCwgJnMtPmZy
ZWVfZGVzYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewoK
ICAgICAgICAgIGRvIHt9IHdoaWxlICgwKTsKCgogICAgICAgICAgICAgICAgaWYgKG1vZGUgIT0g
MikgewogICAgICAgICAgICAgICAgICAgICAgICB1cmJfdCAqbnVyYjsKICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgICAgICAgICAgICAgICAgIG51
cmIgPSBwcml2LT5uZXh0X3F1ZXVlZF91cmI7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsg
X19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdz
KTogOiJtZW1vcnkiKTsgKHZvaWQpKCZzLT5xaF9sb2NrKTsgfSB3aGlsZSAoMCk7CgogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXByaXYtPnByZXZfcXVldWVkX3VyYikgewoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmV2cWggPSAoKHVoY2lfZGVzY190ICopKChjaGFyICop
KHFoLT5ob3Jpem9udGFsLnByZXYpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTAp
LT5ob3Jpem9udGFsKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmV2cWgp
LT5ody5xaC5oZWFkPSgoX191MzIpKGJxaC0+ZG1hX2FkZHIgfCAweDAwMDIpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2RlbCAoJnFoLT5ob3Jpem9udGFsKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2FkZCAoJmJxaC0+aG9yaXpvbnRhbCwgJnBy
ZXZxaC0+aG9yaXpvbnRhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiX3By
aXZfdCogcHByaXY9KHVyYl9wcml2X3QqKXByaXYtPnByZXZfcXVldWVkX3VyYi0+aGNwcml2Owog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyYl9wcml2X3QqIG5wcml2PSh1cmJfcHJp
dl90KiludXJiLT5oY3ByaXY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWhjaV9k
ZXNjX3QgKiBibnFoOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibnFoID0gKCh1
aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShucHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBs
b25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHByaXYtPmJvdHRvbV9xaCA9IGJucWg7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHByaXYtPm5leHRfcXVldWVkX3VyYiA9IG51cmI7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJldnFoID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShw
cHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTAp
LT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXZxaCkt
Pmh3LnFoLmhlYWQ9KChfX3UzMikoYnFoLT5kbWFfYWRkciB8IDB4MDAwMikpOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXyAoImxvY2s7IGFkZGwgJDAsMCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICgodXJiX3ByaXZfdCopbnVyYi0+aGNwcml2KS0+cHJldl9xdWV1ZWRfdXJi
PXByaXYtPnByZXZfcXVldWVkX3VyYjsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBkbyB7
IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJn
IiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgfQoKICAgICAgICBpZiAobW9kZSAhPSAwKSB7CiAgICAgICAgICAgICAgICBxaC0+
bGFzdF91c2VkID0gbm93OwogICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCAoJnFoLT5ob3Jp
em9udGFsLCAmcy0+ZnJlZV9kZXNjKTsKICAgICAgICB9Cn0KCgogICAgICAgIHZvaWQgdWhjaV9y
ZWxlYXNlX2JhbmR3aWR0aCh1cmJfdCAqdXJiKQp7CiAgICAgICAgaWYgKHVyYi0+YmFuZHdpZHRo
KSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKCgoKHVyYi0+cGlwZSkgPj4gMzApICYgMykpIHsK
ICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgdXNiX3JlbGVh
c2VfYmFuZHdpZHRoX1JmODA1NGY3YiAodXJiLT5kZXYsIHVyYiwgMCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAg
ICAgICAgICB1c2JfcmVsZWFzZV9iYW5kd2lkdGhfUmY4MDU0ZjdiICh1cmItPmRldiwgdXJiLCAx
KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICB9Cn0KCiAgICAgICAgdm9pZCB1aGNpX3VyYl9kbWFfc3luYyh1aGNpX3QgKnMsIHVyYl90ICp1
cmIsIHVyYl9wcml2X3QgKnVyYl9wcml2KQp7CiAgICAgICAgaWYgKHVyYl9wcml2LT5zZXR1cF9w
YWNrZXRfZG1hKQogICAgICAgICAgICAgICAgcGNpX2RtYV9zeW5jX3NpbmdsZShzLT51aGNpX3Bj
aSwgdXJiX3ByaXYtPnNldHVwX3BhY2tldF9kbWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVvZihkZXZyZXF1ZXN0KSwgMSk7CgogICAgICAgIGlmICh1cmJfcHJpdi0+
dHJhbnNmZXJfYnVmZmVyX2RtYSkKICAgICAgICAgICAgICAgIHBjaV9kbWFfc3luY19zaW5nbGUo
cy0+dWhjaV9wY2ksIHVyYl9wcml2LT50cmFuc2Zlcl9idWZmZXJfZG1hLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVyYi0+cGlwZSkgPj4gNykgJiAxKSA/
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxKTsKfQoKICAgICAgICB2b2lkIHVoY2lfdXJiX2RtYV91bm1h
cCh1aGNpX3QgKnMsIHVyYl90ICp1cmIsIHVyYl9wcml2X3QgKnVyYl9wcml2KQp7CiAgICAgICAg
aWYgKHVyYl9wcml2LT5zZXR1cF9wYWNrZXRfZG1hKSB7CiAgICAgICAgICAgICAgICBwY2lfdW5t
YXBfc2luZ2xlKHMtPnVoY2lfcGNpLCB1cmJfcHJpdi0+c2V0dXBfcGFja2V0X2RtYSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRldnJlcXVlc3QpLCAxKTsKICAgICAg
ICAgICAgICAgIHVyYl9wcml2LT5zZXR1cF9wYWNrZXRfZG1hID0gMDsKICAgICAgICB9CiAgICAg
ICAgaWYgKHVyYl9wcml2LT50cmFuc2Zlcl9idWZmZXJfZG1hKSB7CiAgICAgICAgICAgICAgICBw
Y2lfdW5tYXBfc2luZ2xlKHMtPnVoY2lfcGNpLCB1cmJfcHJpdi0+dHJhbnNmZXJfYnVmZmVyX2Rt
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT50cmFuc2Zlcl9idWZmZXJf
bGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh1cmItPnBpcGUpID4+
IDcpICYgMSkgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIDoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMSk7CiAgICAgICAgICAgICAgICB1cmJfcHJpdi0+dHJh
bnNmZXJfYnVmZmVyX2RtYSA9IDA7CiAgICAgICAgfQp9CgoKCgoKICAgICAgICBpbnQgdWhjaV91
bmxpbmtfdXJiX2FzeW5jICh1aGNpX3QgKnMsdXJiX3QgKnVyYiwgaW50IG1vZGUpCnsKICAgICAg
ICB1aGNpX2Rlc2NfdCAqcWg7CiAgICAgICAgdXJiX3ByaXZfdCAqdXJiX3ByaXY7CgogICAgICAg
IGRvIHt9IHdoaWxlICgwKTsKCiAgICAgICAgaWYgKCh1cmItPnN0YXR1cyA9PSAtMTE1KSB8fAog
ICAgICAgICAgICAoKCgoKHVyYi0+cGlwZSkgPj4gMzApICYgMykgPT0gMSkgJiYgKCh1cmJfcHJp
dl90Kil1cmItPmhjcHJpdiktPmZsYWdzKSkKICAgICAgICB7CiAgICAgICAgICAgICAgICAoKHVy
Yl9wcml2X3QqKXVyYi0+aGNwcml2KS0+c3RhcnRlZCA9IH4wOwogICAgICAgICAgICAgICAgZGVx
dWV1ZV91cmIgKHMsIHVyYik7CgogICAgICAgICAgICAgICAgaWYgKG1vZGU9PTApCiAgICAgICAg
ICAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwgKCZ1cmItPnVyYl9saXN0LCAmcy0+dXJiX3Vu
bGlua2VkKTsKCiAgICAgICAgICAgICAgICB1aGNpX3N3aXRjaF90aW1lcl9pbnQocyk7CiAgICAg
ICAgICAgICAgICBzLT51bmxpbmtfdXJiX2RvbmUgPSAxOwogICAgICAgICAgICAgICAgdWhjaV9y
ZWxlYXNlX2JhbmR3aWR0aCh1cmIpOwoKICAgICAgICAgICAgICAgIHVyYi0+c3RhdHVzID0gLTEw
MzsKICAgICAgICAgICAgICAgIHVyYl9wcml2ID0gKHVyYl9wcml2X3QqKXVyYi0+aGNwcml2OwoK
ICAgICAgICAgICAgICAgIHN3aXRjaCAoKCgodXJiLT5waXBlKSA+PiAzMCkgJiAzKSkgewogICAg
ICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAoKHVyYi0+ZGV2KS0+
dG9nZ2xlWygoKCh1cmItPnBpcGUpID4+IDcpICYgMSkgXiAxKV0gXj0gKDEgPDwgKCgodXJiLT5w
aXBlKSA+PiAxNSkgJiAweGYpKSk7CgogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAg
ICAgICAgICAgICAgICB1aGNpX2NsZWFuX2lzb19zdGVwMSAocywgdXJiX3ByaXYpOwogICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAg
ICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIHFoID0gKCh1aGNpX2Rlc2Nf
dCAqKSgoY2hhciAqKSh1cmJfcHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBsb25nKSgm
KCh1aGNpX2Rlc2NfdCAqKTApLT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVoY2lfY2xlYW5fdHJhbnNmZXIgKHMsIHVyYiwgcWgsIDApOwogICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICgodXJiX3ByaXZf
dCopdXJiLT5oY3ByaXYpLT5zdGFydGVkID0gKGludyAoKHMpLT5pb19hZGRyICsgNikpOwogICAg
ICAgICAgICAgICAgcmV0dXJuIC0xMTU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gMDsKfQoK
CiAgICAgICAgaW50IHVoY2lfdW5saW5rX3VyYl9zeW5jICh1aGNpX3QgKnMsIHVyYl90ICp1cmIp
CnsKICAgICAgICB1aGNpX2Rlc2NfdCAqcWg7CiAgICAgICAgdXJiX3ByaXZfdCAqdXJiX3ByaXY7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncz0wOwogICAgICAgIHN0cnVjdCB1c2JfZGV2aWNl
ICp1c2JfZGV2OwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBw
b3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmcy0+dXJiX2xp
c3RfbG9jayk7IH0gd2hpbGUgKDApOwoKICAgICAgICBpZiAodXJiLT5zdGF0dXMgPT0gLTExNSkg
ewoKCiAgICAgICAgICAgICAgICB1aGNpX3VubGlua191cmJfYXN5bmMocywgdXJiLCAxKTsKCiAg
ICAgICAgICAgICAgICB1cmJfcHJpdiA9IHVyYi0+aGNwcml2OwogICAgICAgICAgICAgICAgdXJi
LT5zdGF0dXMgPSAtMjsKICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5
IiwgImNjIik7IH0gd2hpbGUgKDApOwoKCiAgICAgICAgICAgICAgICBzd2l0Y2ggKCgoKHVyYi0+
cGlwZSkgPj4gMzApICYgMykpIHsKCiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAg
ICAgICAgICAgICAgIHVoY2lfd2FpdF9tcygxKTsKICAgICAgICAgICAgICAgICAgICAgICAgdWhj
aV9jbGVhbl9pc29fc3RlcDIocywgdXJiX3ByaXYpOwogICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAg
ICAgICAgICAgICAgICAgICAgICAgIHFoID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKSh1cmJf
cHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTAp
LT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHVoY2lfY2xlYW5fdHJhbnNm
ZXIocywgdXJiLCBxaCwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgIHVoY2lfd2FpdF9tcygx
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVyYi0+c3RhdHVzID0gLTI7Cgog
ICAgICAgICAgICAgICAgdWhjaV91cmJfZG1hX3VubWFwKHMsIHVyYiwgdXJiLT5oY3ByaXYpOwoK
CiAgICAgICAgICAgICAgICBrbWVtX2NhY2hlX2ZyZWVfUjg5MWYyNjg2ICh1cmJfcHJpdl9rbWVt
LCB1cmItPmhjcHJpdik7CgoKCiAgICAgICAgICAgICAgICB1c2JfZGV2ID0gdXJiLT5kZXY7CiAg
ICAgICAgICAgICAgICBpZiAodXJiLT5jb21wbGV0ZV9SOTQyNjEzYWQpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgZG8ge30gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICB1cmIt
PmRldiA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgICAgICAgICB1cmItPmNvbXBsZXRl
X1I5NDI2MTNhZCAoKHN0cnVjdCB1cmIgKikgdXJiKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIHVzYl9mcmVlX2Rldl9SNDFiZDgwMTEgKHVzYl9kZXYpOwogICAgICAgIH0KICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBf
X3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJj
YyIpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCgoKICAgICAgICB2b2lk
IHVoY2lfY2xlYW51cF91bmxpbmsodWhjaV90ICpzLCBpbnQgZm9yY2UpCnsKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkICpxOwogICAgICAgIHVyYl90ICp1cmI7CiAgICAgICAgc3RydWN0IHVzYl9k
ZXZpY2UgKmRldjsKICAgICAgICBpbnQgbm93LCB0eXBlOwogICAgICAgIHVyYl9wcml2X3QgKnVy
Yl9wcml2OwoKICAgICAgICBxPXMtPnVyYl91bmxpbmtlZC5uZXh0OwogICAgICAgIG5vdz0oaW53
ICgocyktPmlvX2FkZHIgKyA2KSk7CgogICAgICAgIHdoaWxlIChxICE9ICZzLT51cmJfdW5saW5r
ZWQpIHsKCiAgICAgICAgICAgICAgICB1cmIgPSAoKHVyYl90ICopKChjaGFyICopKHEpLSh1bnNp
Z25lZCBsb25nKSgmKCh1cmJfdCAqKTApLT51cmJfbGlzdCkpKTsKCiAgICAgICAgICAgICAgICB1
cmJfcHJpdiA9ICh1cmJfcHJpdl90Kil1cmItPmhjcHJpdjsKICAgICAgICAgICAgICAgIHEgPSB1
cmItPnVyYl9saXN0Lm5leHQ7CgogICAgICAgICAgICAgICAgaWYgKCF1cmJfcHJpdikKICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgaWYgKGZvcmNlIHx8ICgo
dXJiX3ByaXYtPnN0YXJ0ZWQgIT0gfjApICYmICh1cmJfcHJpdi0+c3RhcnRlZCAhPSBub3cpKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGU9KCgodXJiLT5waXBlKSA+PiAzMCkgJiAzKTsKCiAgICAgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc190cmFuc2ZlciAocywgdXJi
LCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
cy0+YXZvaWRfYnVsay5jb3VudGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvY2Vzc190cmFuc2ZlciAocywgdXJiLCAyKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3NfaXNvIChzLCB1cmIsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvY2Vzc19pbnRlcnJ1cHQgKHMsIHVyYik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghKHVyYi0+dHJhbnNmZXJfZmxhZ3MgJiAweDEwMDApKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+c3RhdHVzID0gLTEwNDsKCiAgICAgICAg
ICAgICAgICAgICAgICAgIGRldiA9IHVyYi0+ZGV2OwogICAgICAgICAgICAgICAgICAgICAgICB1
cmJfcHJpdiA9IHVyYi0+aGNwcml2OwogICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2RlbCAo
JnVyYi0+dXJiX2xpc3QpOwoKICAgICAgICAgICAgICAgICAgICAgICAgdWhjaV91cmJfZG1hX3N5
bmMocywgdXJiLCB1cmJfcHJpdik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmItPmNv
bXBsZXRlX1I5NDI2MTNhZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsg
fSB3aGlsZSgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmItPmRldiA9ICgo
dm9pZCAqKTApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+Y29tcGxldGVf
Ujk0MjYxM2FkICgoc3RydWN0IHVyYiAqKSB1cmIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh2b2lkKSgmcy0+dXJiX2xpc3RfbG9jayk7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHVyYi0+dHJhbnNmZXJfZmxhZ3MgJiAw
eDEwMDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+c3RhdHVzID0gLTI7
CgogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWhjaV9jbGVhbl9pc29fc3RlcDIocywgdXJiX3ByaXYp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB1aGNpX3VyYl9kbWFfdW5tYXAocywg
dXJiLCB1cmJfcHJpdik7CgogICAgICAgICAgICAgICAgICAgICAgICB1c2JfZnJlZV9kZXZfUjQx
YmQ4MDExIChkZXYpOwoKICAgICAgICAgICAgICAgICAgICAgICAga21lbV9jYWNoZV9mcmVlX1I4
OTFmMjY4NiAodXJiX3ByaXZfa21lbSwgdXJiX3ByaXYpOwoKCgoKICAgICAgICAgICAgICAgIH0K
ICAgICAgICB9Cn0KCgogICAgICAgIGludCB1aGNpX3VubGlua191cmIgKHVyYl90ICp1cmIpCnsK
ICAgICAgICB1aGNpX3QgKnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncz0wOwogICAgICAg
IGRvIHt9IHdoaWxlICgwKTsKICAgICAgICBpZiAoIXVyYiB8fCAhdXJiLT5kZXYpCiAgICAgICAg
ICAgICAgICByZXR1cm4gLTIyOwoKICAgICAgICBzID0gKHVoY2lfdCopIHVyYi0+ZGV2LT5idXMt
PmhjcHJpdjsKCiAgICAgICAgaWYgKCgoKHVyYi0+cGlwZSkgPj4gOCkgJiAweDdmKSA9PSBzLT5y
aC5kZXZudW0pCiAgICAgICAgICAgICAgICByZXR1cm4gcmhfdW5saW5rX3VyYiAodXJiKTsKCiAg
ICAgICAgaWYgKCF1cmItPmhjcHJpdikKICAgICAgICAgICAgICAgIHJldHVybiAtMjI7CgogICAg
ICAgIGlmICh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDA4KSB7CiAgICAgICAgICAgICAgICBp
bnQgcmV0OwogICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZs
IDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnMtPnVy
Yl9saXN0X2xvY2spOyB9IHdoaWxlICgwKTsKCiAgICAgICAgICAgICAgICB1aGNpX3JlbGVhc2Vf
YmFuZHdpZHRoKHVyYik7CiAgICAgICAgICAgICAgICByZXQgPSB1aGNpX3VubGlua191cmJfYXN5
bmMocywgdXJiLCAwKTsKCiAgICAgICAgICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19h
c21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9y
eSIsICJjYyIpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAg
ICAgfQogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiB1aGNpX3VubGlua191cmJf
c3luYyhzLCB1cmIpOwp9CgoKCgogICAgICAgIGludCBmaW5kX2lzb19saW1pdHMgKHVyYl90ICp1
cmIsIHVuc2lnbmVkIGludCAqc3RhcnQsIHVuc2lnbmVkIGludCAqZW5kKQp7CiAgICAgICAgdXJi
X3QgKnUsICpsYXN0X3VyYiA9ICgodm9pZCAqKTApOwogICAgICAgIHVoY2lfdCAqcyA9ICh1aGNp
X3QqKSB1cmItPmRldi0+YnVzLT5oY3ByaXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqcDsK
ICAgICAgICBpbnQgcmV0PS0xOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAg
IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIg
KGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZzLT51cmJfbGlzdF9sb2NrKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgcD1zLT51cmJfbGlzdC5wcmV2OwoKICAgICAgICBmb3IgKDsgcCAhPSAmcy0+
dXJiX2xpc3Q7IHAgPSBwLT5wcmV2KSB7CiAgICAgICAgICAgICAgICB1ID0gKCh1cmJfdCAqKSgo
Y2hhciAqKShwKS0odW5zaWduZWQgbG9uZykoJigodXJiX3QgKikwKS0+dXJiX2xpc3QpKSk7CgoK
ICAgICAgICAgICAgICAgIGlmICgodXJiLT5waXBlID09IHUtPnBpcGUpICYmICh1cmItPmRldiA9
PSB1LT5kZXYpICYmICh1LT5zdGF0dXMgPT0gLTExNSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFsYXN0X3VyYikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhcnQg
PSB1LT5zdGFydF9mcmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF91cmIgPSB1Owog
ICAgICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGxhc3RfdXJiKSB7CiAgICAg
ICAgICAgICAgICAqZW5kID0gKGxhc3RfdXJiLT5zdGFydF9mcmFtZSArIGxhc3RfdXJiLT5udW1i
ZXJfb2ZfcGFja2V0cykgJiAxMDIzOwogICAgICAgICAgICAgICAgcmV0PTA7CiAgICAgICAgfQoK
ICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hs
ICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsK
CiAgICAgICAgcmV0dXJuIHJldDsKfQoKCgogICAgICAgIGludCBpc29fZmluZF9zdGFydCAodXJi
X3QgKnVyYikKewogICAgICAgIHVoY2lfdCAqcyA9ICh1aGNpX3QqKSB1cmItPmRldi0+YnVzLT5o
Y3ByaXY7CiAgICAgICAgdW5zaWduZWQgaW50IG5vdzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3Rh
cnRfbGltaXQgPSAwLCBzdG9wX2xpbWl0ID0gMCwgcXVldWVkX3NpemU7CiAgICAgICAgaW50IGxp
bWl0czsKCiAgICAgICAgbm93ID0gKGludyAoKHMpLT5pb19hZGRyICsgNikpICYgMTAyMzsKCiAg
ICAgICAgaWYgKCh1bnNpZ25lZCkgdXJiLT5udW1iZXJfb2ZfcGFja2V0cyA+IDkwMCkKICAgICAg
ICAgICAgICAgIHJldHVybiAtMjc7CgogICAgICAgIGxpbWl0cyA9IGZpbmRfaXNvX2xpbWl0cyAo
dXJiLCAmc3RhcnRfbGltaXQsICZzdG9wX2xpbWl0KTsKICAgICAgICBxdWV1ZWRfc2l6ZSA9IChz
dG9wX2xpbWl0IC0gc3RhcnRfbGltaXQpICYgMTAyMzsKCiAgICAgICAgaWYgKHVyYi0+dHJhbnNm
ZXJfZmxhZ3MgJiAweDAwMDIpIHsKCiAgICAgICAgICAgICAgICBpZiAobGltaXRzKSB7CgogICAg
ICAgICAgICAgICAgICAgICAgICB1cmItPnN0YXJ0X2ZyYW1lID0gKG5vdyArIDEwKSAmIDEwMjM7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgdXJiLT5zdGFydF9mcmFtZSA9IHN0b3BfbGltaXQ7CgogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKChub3cgLSB1cmItPnN0YXJ0X2ZyYW1lKSAmIDEwMjMpIDw9ICh1bnNpZ25l
ZCkgdXJiLT5udW1iZXJfb2ZfcGFja2V0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW50a19SMWI3ZDQwNzQoIjw2PiIgInVzYi11aGNpLmMiICI6ICIgImlzb19maW5kX3N0
YXJ0OiBnYXAgaW4gc2VhbWxlc3MgaXNvY2hyb25vdXMgc2NoZWR1bGluZyIgIlxuIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1cmItPnN0YXJ0X2ZyYW1lID0gKG5vdyArIDUpICYgMTAyMzsK
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHVyYi0+c3RhcnRfZnJhbWUgJj0gMTAyMzsKICAg
ICAgICAgICAgICAgIGlmICgoKG5vdyAtIHVyYi0+c3RhcnRfZnJhbWUpICYgMTAyMykgPCAodW5z
aWduZWQpIHVyYi0+bnVtYmVyX29mX3BhY2tldHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ZG8ge30gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTExOwogICAg
ICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIGlmIChsaW1pdHMpCiAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKCiAgICAgICAgaWYgKCgodXJiLT5zdGFydF9mcmFtZSAtIHN0YXJ0X2xp
bWl0KSAmIDEwMjMpIDwgcXVldWVkX3NpemUgfHwKICAgICAgICAgICAgKCh1cmItPnN0YXJ0X2Zy
YW1lICsgdXJiLT5udW1iZXJfb2ZfcGFja2V0cyAtIDEgLSBzdGFydF9saW1pdCkgJiAxMDIzKSA8
IHF1ZXVlZF9zaXplKSB7CiAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAg
ICAgICAgICAgcmV0dXJuIC0xMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAwOwp9CgoKCgoK
ICAgICAgICBpbnQgdWhjaV9zdWJtaXRfaW50X3VyYiAodXJiX3QgKnVyYikKewogICAgICAgIHVo
Y2lfdCAqcyA9ICh1aGNpX3QqKSB1cmItPmRldi0+YnVzLT5oY3ByaXY7CiAgICAgICAgdXJiX3By
aXZfdCAqdXJiX3ByaXYgPSB1cmItPmhjcHJpdjsKICAgICAgICBpbnQgbmludCwgbjsKICAgICAg
ICB1aGNpX2Rlc2NfdCAqdGQ7CiAgICAgICAgaW50IHN0YXR1cywgZGVzdGluYXRpb247CiAgICAg
ICAgaW50IGluZm87CiAgICAgICAgdW5zaWduZWQgaW50IHBpcGUgPSB1cmItPnBpcGU7CgogICAg
ICAgIGlmICh1cmItPmludGVydmFsIDwgMCB8fCB1cmItPmludGVydmFsID49IDI1NikKICAgICAg
ICAgICAgICAgIHJldHVybiAtMjI7CgogICAgICAgIGlmICh1cmItPmludGVydmFsID09IDApCiAg
ICAgICAgICAgICAgICBuaW50ID0gMDsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGZv
ciAobmludCA9IDAsIG4gPSAxOyBuaW50IDw9IDg7IG5pbnQrKywgbiArPSBuKQogICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVyYi0+aW50ZXJ2YWwgPCBuKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT5pbnRlcnZhbCA9IG4gLyAyOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuaW50LS07CiAgICAgICAg
fQoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAgIHVyYi0+c3RhcnRfZnJhbWUgPSAo
aW53ICgocyktPmlvX2FkZHIgKyA2KSkgJiAxMDIzOwoKICAgICAgICB1cmItPm51bWJlcl9vZl9w
YWNrZXRzID0gMTsKCgogICAgICAgIGlmICh1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPiAo
KCgoKHBpcGUpID4+IDcpICYgMSkgXiAxKSA/ICh1cmItPmRldiktPmVwbWF4cGFja2V0b3V0Wygo
KHBpcGUpID4+IDE1KSAmIDB4ZildIDogKHVyYi0+ZGV2KS0+ZXBtYXhwYWNrZXRpbiBbKCgocGlw
ZSkgPj4gMTUpICYgMHhmKV0gKSkKICAgICAgICAgICAgICAgIHJldHVybiAtMjI7CgogICAgICAg
IGlmIChhbGxvY190ZCAocywgJnRkLCAweDAwMDQpKQogICAgICAgICAgICAgICAgcmV0dXJuIC0x
MjsKCiAgICAgICAgc3RhdHVzID0gKHBpcGUgJiAoMSA8PCAyNikpIHwgKDEgPDwgMjMpIHwgKDEg
PDwgMjQpIHwKICAgICAgICAgICAgICAgICh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDAxID8g
MCA6ICgxIDw8IDI5KSkgfCAoMyA8PCAyNyk7CgogICAgICAgIGRlc3RpbmF0aW9uID0gKHVyYi0+
cGlwZSAmIDB4MDAwN2ZmMDApIHwgKCgodXJiLT5waXBlKSAmIDB4ODApID8gMHg2OSA6IDB4ZTEp
IHwKICAgICAgICAgICAgICAgICgoKHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCAtIDEpICYg
MHg3ZmYpIDw8IDIxKTsKCgogICAgICAgIGluZm8gPSBkZXN0aW5hdGlvbiB8ICgoKCh1cmItPmRl
diktPnRvZ2dsZVsoKCgocGlwZSkgPj4gNykgJiAxKSBeIDEpXSA+PiAoKChwaXBlKSA+PiAxNSkg
JiAweGYpKSAmIDEpIDw8IDE5KTsKCiAgICAgICAgZmlsbF90ZCAodGQsIHN0YXR1cywgaW5mbywg
dXJiX3ByaXYtPnRyYW5zZmVyX2J1ZmZlcl9kbWEpOwogICAgICAgIGxpc3RfYWRkX3RhaWwgKCZ0
ZC0+ZGVzY19saXN0LCAmdXJiX3ByaXYtPmRlc2NfbGlzdCk7CgogICAgICAgIHF1ZXVlX3VyYiAo
cywgdXJiKTsKCiAgICAgICAgaW5zZXJ0X3RkX2hvcml6b250YWwgKHMsIHMtPmludF9jaGFpbltu
aW50XSwgdGQpOwoKICAgICAgICAoKHVyYi0+ZGV2KS0+dG9nZ2xlWygoKChwaXBlKSA+PiA3KSAm
IDEpIF4gMSldIF49ICgxIDw8ICgoKHBpcGUpID4+IDE1KSAmIDB4ZikpKTsKCiAgICAgICAgcmV0
dXJuIDA7Cn0KCiAgICAgICAgaW50IHVoY2lfc3VibWl0X2lzb191cmIgKHVyYl90ICp1cmIpCnsK
ICAgICAgICB1aGNpX3QgKnMgPSAodWhjaV90KikgdXJiLT5kZXYtPmJ1cy0+aGNwcml2OwogICAg
ICAgIHVyYl9wcml2X3QgKnVyYl9wcml2ID0gdXJiLT5oY3ByaXY7CgoKCgogICAgICAgIGludCBu
LCByZXQsIGxhc3Q9MDsKICAgICAgICB1aGNpX2Rlc2NfdCAqdGQsICoqdGRtOwogICAgICAgIGlu
dCBzdGF0dXMsIGRlc3RpbmF0aW9uOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIjoiPWciIChmbGFncyk6
ICk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsKICAg
ICAgICByZXQgPSBpc29fZmluZF9zdGFydCAodXJiKTsKCiAgICAgICAgaWYgKHJldCkKICAgICAg
ICAgICAgICAgIGdvdG8gZXJyOwoKICAgICAgICB0ZG0gPSAodWhjaV9kZXNjX3QgKiopIGttYWxs
b2NfUjkzZDRjZmU2ICh1cmItPm51bWJlcl9vZl9wYWNrZXRzICogc2l6ZW9mICh1aGNpX2Rlc2Nf
dCopLCAoKHsgaW50IF9fY3B1ID0gMDsgKCgodm9pZCkoKF9fY3B1KSksIGlycV9zdGF0X1I5ZTM2
ZjA2ZVswXS5fX2xvY2FsX2lycV9jb3VudCkgKyAoKHZvaWQpKChfX2NwdSkpLCBpcnFfc3RhdF9S
OWUzNmYwNmVbMF0uX19sb2NhbF9iaF9jb3VudCkgIT0gMCk7IH0pPyAoMHgyMCkgOiAoMHgyMCB8
IDB4MTAgfCAweDQwIHwgMHg4MCB8IDB4MTAwKSkpOwoKICAgICAgICBpZiAoIXRkbSkgewogICAg
ICAgICAgICAgICAgcmV0ID0gLTEyOwogICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAg
fQoKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50
X3AoKHVyYi0+bnVtYmVyX29mX3BhY2tldHMgKiBzaXplb2YgKHVoY2lfZGVzY190KikpKSA/IF9f
Y29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgodGRtKSksKCgweDAxMDEwMTAxVUwqKHVuc2ln
bmVkIGNoYXIpKDApKSksKCh1cmItPm51bWJlcl9vZl9wYWNrZXRzICogc2l6ZW9mICh1aGNpX2Rl
c2NfdCopKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKHRkbSkpLCgoMHgwMTAxMDEwMVVMKih1
bnNpZ25lZCBjaGFyKSgwKSkpLCgodXJiLT5udW1iZXJfb2ZfcGFja2V0cyAqIHNpemVvZiAodWhj
aV9kZXNjX3QqKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHVyYi0+bnVtYmVyX29mX3Bh
Y2tldHMgKiBzaXplb2YgKHVoY2lfZGVzY190KikpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgodGRt
KSkpLCgoKDApKSksKCgodXJiLT5udW1iZXJfb2ZfcGFja2V0cyAqIHNpemVvZiAodWhjaV9kZXNj
X3QqKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgodGRtKSksKCgwKSksKCh1cmItPm51bWJlcl9v
Zl9wYWNrZXRzICogc2l6ZW9mICh1aGNpX2Rlc2NfdCopKSkpKSk7CgoKCgoKICAgICAgICBmb3Ig
KG4gPSAwOyBuIDwgdXJiLT5udW1iZXJfb2ZfcGFja2V0czsgbisrKSB7CiAgICAgICAgICAgICAg
ICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBpZiAoIXVyYi0+aXNvX2ZyYW1lX2Rl
c2Nbbl0ubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIyAxNTQxICJ1
c2ItdWhjaS5jIgogICAgICAgICAgICAgICAgaWYgKGFsbG9jX3RkIChzLCAmdGQsIDB4MDAwNCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGk7CgogICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKGkgPSAwOyBpIDwgbjsgbisrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh0ZG1baV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVs
ZXRlX2Rlc2MocywgdGRtW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAga2ZyZWVfUjAzN2Ew
Y2JhICh0ZG0pOwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIGxhc3Q9bjsKICAgICAgICAgICAgICAgIHRkbVtuXSA9IHRk
OwogICAgICAgIH0KCiAgICAgICAgc3RhdHVzID0gKDEgPDwgMjMpIHwgKDEgPDwgMjUpOwoKICAg
ICAgICBkZXN0aW5hdGlvbiA9ICh1cmItPnBpcGUgJiAweDAwMDdmZjAwKSB8ICgoKHVyYi0+cGlw
ZSkgJiAweDgwKSA/IDB4NjkgOiAweGUxKTsKCgogICAgICAgIGZvciAobiA9IDA7IG4gPCB1cmIt
Pm51bWJlcl9vZl9wYWNrZXRzOyBuKyspIHsKICAgICAgICAgICAgICAgIHRkID0gdGRtW25dOwog
ICAgICAgICAgICAgICAgaWYgKCF0ZCkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CgogICAgICAgICAgICAgICAgaWYgKG4gPT0gbGFzdCkgewogICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0dXMgfD0gKDEgPDwgMjQpOwogICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZV91cmIg
KHMsIHVyYik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZmlsbF90ZCAodGQs
IHN0YXR1cywgZGVzdGluYXRpb24gfCAoKCh1cmItPmlzb19mcmFtZV9kZXNjW25dLmxlbmd0aCAt
IDEpICYgMHg3ZmYpIDw8IDIxKSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVyYl9wcml2LT50
cmFuc2Zlcl9idWZmZXJfZG1hICsgdXJiLT5pc29fZnJhbWVfZGVzY1tuXS5vZmZzZXQpOwogICAg
ICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCAoJnRkLT5kZXNjX2xpc3QsICZ1cmJfcHJpdi0+ZGVz
Y19saXN0KTsKCiAgICAgICAgICAgICAgICBpbnNlcnRfdGRfaG9yaXpvbnRhbCAocywgcy0+aXNv
X3RkWyh1cmItPnN0YXJ0X2ZyYW1lICsgbikgJiAxMDIzXSwgdGQpOwogICAgICAgIH0KCiAgICAg
ICAga2ZyZWVfUjAzN2EwY2JhICh0ZG0pOwogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKICAgICAg
ICByZXQgPSAwOwoKICAgICAgZXJyOgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo
bCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsKICAgICAgICByZXR1
cm4gcmV0Owp9CgoKCiAgICAgICAgdXJiX3QqIHNlYXJjaF9kZXZfZXAgKHVoY2lfdCAqcywgdXJi
X3QgKnVyYikKewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnA7CiAgICAgICAgdXJiX3QgKnRt
cDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWFzayA9ICgoKCgodXJiLT5waXBlKSkgPj4gMzApICYg
MykgPT0gMikgPyAofjB4ODApIDogKH4wKTsKCiAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKICAg
ICAgICBwPXMtPnVyYl9saXN0Lm5leHQ7CgogICAgICAgIGZvciAoOyBwICE9ICZzLT51cmJfbGlz
dDsgcCA9IHAtPm5leHQpIHsKICAgICAgICAgICAgICAgIHRtcCA9ICgodXJiX3QgKikoKGNoYXIg
KikocCktKHVuc2lnbmVkIGxvbmcpKCYoKHVyYl90ICopMCktPnVyYl9saXN0KSkpOwogICAgICAg
ICAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKCiAgICAgICAgICAgICAgICBpZiAoKCEoKCgoKHVy
Yi0+cGlwZSkpID4+IDMwKSAmIDMpID09IDApICYmICh0bXAtPmRldiA9PSB1cmItPmRldikgJiYg
ISgodG1wLT5waXBlIF4gdXJiLT5waXBlKSAmIG1hc2spKSB8fAogICAgICAgICAgICAgICAgICAg
ICh1cmIgPT0gdG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG1wOwogICAg
ICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDA7Cn0KCiAgICAgICAgaW50
IHVoY2lfc3VibWl0X3VyYiAodXJiX3QgKnVyYikKewogICAgICAgIHVoY2lfdCAqczsKICAgICAg
ICB1cmJfcHJpdl90ICp1cmJfcHJpdjsKICAgICAgICBpbnQgcmV0ID0gMCwgdHlwZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVyYl90ICpxdWV1ZWRfdXJiPSgodm9pZCAq
KTApOwogICAgICAgIGludCBidXN0aW1lOwoKICAgICAgICBpZiAoIXVyYi0+ZGV2IHx8ICF1cmIt
PmRldi0+YnVzKQogICAgICAgICAgICAgICAgcmV0dXJuIC0xOTsKCiAgICAgICAgcyA9ICh1aGNp
X3QqKSB1cmItPmRldi0+YnVzLT5oY3ByaXY7CgoKICAgICAgICBpZiAoIXMtPnJ1bm5pbmcpCiAg
ICAgICAgICAgICAgICByZXR1cm4gLTE5OwoKICAgICAgICB0eXBlID0gKCgodXJiLT5waXBlKSA+
PiAzMCkgJiAzKTsKCiAgICAgICAgaWYgKCgoKHVyYi0+cGlwZSkgPj4gOCkgJiAweDdmKSA9PSBz
LT5yaC5kZXZudW0pCiAgICAgICAgICAgICAgICByZXR1cm4gcmhfc3VibWl0X3VyYiAodXJiKTsK
CgogICAgICAgIGlmICgoKCgoKHVyYi0+cGlwZSkgPj4gNykgJiAxKSBeIDEpID8gKHVyYi0+ZGV2
KS0+ZXBtYXhwYWNrZXRvdXRbKCgodXJiLT5waXBlKSA+PiAxNSkgJiAweGYpXSA6ICh1cmItPmRl
diktPmVwbWF4cGFja2V0aW4gWygoKHVyYi0+cGlwZSkgPj4gMTUpICYgMHhmKV0gKSA8PSAwKSB7
CiAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Mz4iICJ1c2ItdWhjaS5jIiAiOiAi
ICJ1aGNpX3N1Ym1pdF91cmI6IHBpcGVzaXplIGZvciBwaXBlICV4IGlzIHplcm8iICJcbiIgLCB1
cmItPnBpcGUpOwogICAgICAgICAgICAgICAgcmV0dXJuIC05MDsKICAgICAgICB9CgogICAgICAg
IGlmICh1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPCAwICYmIHR5cGUgIT0gMCkgewogICAg
ICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCgiPDM+IiAidXNiLXVoY2kuYyIgIjogIiAidWhj
aV9zdWJtaXRfdXJiOiBOZWdhdGl2ZSB0cmFuc2ZlciBsZW5ndGggZm9yIHVyYiAlcCIgIlxuIiAs
IHVyYik7CiAgICAgICAgICAgICAgICByZXR1cm4gLTIyOwogICAgICAgIH0KCiAgICAgICAgdXNi
X2luY19kZXZfdXNlX1JkNmUzZWU4NiAodXJiLT5kZXYpOwoKICAgICAgICBkbyB7IF9fYXNtX18g
X192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVt
b3J5Iik7ICh2b2lkKSgmcy0+dXJiX2xpc3RfbG9jayk7IH0gd2hpbGUgKDApOwoKICAgICAgICBx
dWV1ZWRfdXJiID0gc2VhcmNoX2Rldl9lcCAocywgdXJiKTsKCiAgICAgICAgaWYgKHF1ZXVlZF91
cmIpIHsKCiAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAgICAgICAgICAg
aWYgKCggdHlwZSAhPSAzKSB8fAogICAgICAgICAgICAgICAgICAgICgodHlwZSA9PSAzKSAmJgog
ICAgICAgICAgICAgICAgICAgICAoISh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDEwKSB8fCAh
KHF1ZXVlZF91cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDEwKSkpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVz
aGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDAp
OwogICAgICAgICAgICAgICAgICAgICAgICB1c2JfZnJlZV9kZXZfUjQxYmQ4MDExICh1cmItPmRl
dik7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjwzPiIgInVzYi11
aGNpLmMiICI6ICIgIkVOWElPICUwOHgsIGZsYWdzICV4LCB1cmIgJXAsIGJ1cmIgJXAiICJcbiIg
LCB1cmItPnBpcGUsdXJiLT50cmFuc2Zlcl9mbGFncyx1cmIscXVldWVkX3VyYik7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAtNjsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgoK
ICAgICAgICB1cmJfcHJpdiA9IGttZW1fY2FjaGVfYWxsb2NfUjc1ODEwOTU2KHVyYl9wcml2X2tt
ZW0sICgoeyBpbnQgX19jcHUgPSAwOyAoKCh2b2lkKSgoX19jcHUpKSwgaXJxX3N0YXRfUjllMzZm
MDZlWzBdLl9fbG9jYWxfaXJxX2NvdW50KSArICgodm9pZCkoKF9fY3B1KSksIGlycV9zdGF0X1I5
ZTM2ZjA2ZVswXS5fX2xvY2FsX2JoX2NvdW50KSAhPSAwKTsgfSk/ICgweDIwKSA6ICgweDIwIHwg
MHgxMCB8IDB4NDAgfCAweDgwIHwgMHgxMDApKSk7CgoKCiAgICAgICAgaWYgKCF1cmJfcHJpdikg
ewogICAgICAgICAgICAgICAgdXNiX2ZyZWVfZGV2X1I0MWJkODAxMSAodXJiLT5kZXYpOwogICAg
ICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJw
dXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgICAgICAgICByZXR1cm4gLTEyOwogICAgICAgIH0KCiAgICAgICAgKF9fYnVp
bHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YodXJiX3By
aXZfdCkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgodXJiX3ByaXYpKSwoKDB4
MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZih1cmJfcHJpdl90KSkpKSA6
IF9fY29uc3RhbnRfY19tZW1zZXQoKCh1cmJfcHJpdikpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25l
ZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKHVyYl9wcml2X3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgoc2l6ZW9mKHVyYl9wcml2X3QpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHVyYl9wcml2
KSkpLCgoKDApKSksKCgoc2l6ZW9mKHVyYl9wcml2X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMo
KCh1cmJfcHJpdikpLCgoMCkpLCgoc2l6ZW9mKHVyYl9wcml2X3QpKSkpKSk7CiAgICAgICAgdXJi
LT5oY3ByaXYgPSB1cmJfcHJpdjsKICAgICAgICBkbyB7ICgmdXJiX3ByaXYtPmRlc2NfbGlzdCkt
Pm5leHQgPSAoJnVyYl9wcml2LT5kZXNjX2xpc3QpOyAoJnVyYl9wcml2LT5kZXNjX2xpc3QpLT5w
cmV2ID0gKCZ1cmJfcHJpdi0+ZGVzY19saXN0KTsgfSB3aGlsZSAoMCk7CgogICAgICAgIGRvIHt9
IHdoaWxlICgwKTsKCiAgICAgICAgaWYgKHR5cGUgPT0gMikKICAgICAgICAgICAgICAgIHVyYl9w
cml2LT5zZXR1cF9wYWNrZXRfZG1hID0gcGNpX21hcF9zaW5nbGUocy0+dWhjaV9wY2ksIHVyYi0+
c2V0dXBfcGFja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplb2YoZGV2cmVxdWVzdCksIDEpOwoKICAgICAgICBpZiAodXJi
LT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoKQogICAgICAgICAgICAgICAgdXJiX3ByaXYtPnRyYW5z
ZmVyX2J1ZmZlcl9kbWEgPSBwY2lfbWFwX3NpbmdsZShzLT51aGNpX3BjaSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT50
cmFuc2Zlcl9idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KCgodXJiLT5waXBlKSA+PiA3KSAmIDEpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwoKICAgICAgICBp
ZiAodHlwZSA9PSAzKSB7CgogICAgICAgICAgICAgICAgaWYgKHF1ZXVlZF91cmIpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKCgodXJiX3ByaXZfdCopcXVldWVkX3VyYi0+aGNwcml2
KS0+bmV4dF9xdWV1ZWRfdXJiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVl
ZF91cmI9KCh1cmJfcHJpdl90KilxdWV1ZWRfdXJiLT5oY3ByaXYpLT5uZXh0X3F1ZXVlZF91cmI7
CgogICAgICAgICAgICAgICAgICAgICAgICAoKHVyYl9wcml2X3QqKXF1ZXVlZF91cmItPmhjcHJp
diktPm5leHRfcXVldWVkX3VyYj11cmI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICBhdG9taWNfaW5jICgmcy0+YXZvaWRfYnVsayk7CiAgICAgICAgICAgICAgICByZXQgPSB1aGNp
X3N1Ym1pdF9idWxrX3VyYiAodXJiLCBxdWV1ZWRfdXJiKTsKICAgICAgICAgICAgICAgIGF0b21p
Y19kZWMgKCZzLT5hdm9pZF9idWxrKTsKICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxl
KDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdz
KToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVf
XygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hp
bGUgKDApOwogICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICAgICBj
YXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmItPmJhbmR3aWR0aCA9PSAwKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVyYi0+bnVtYmVyX29mX3BhY2tl
dHMgPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0g
LTIyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBidXN0aW1lID0gdXNiX2NoZWNrX2JhbmR3aWR0aF9SYjg0ZDdkYzYgKHVyYi0+ZGV2LCB1
cmIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidXN0aW1lIDwgMCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGJ1c3RpbWU7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXQgPSB1aGNpX3N1Ym1pdF9pc29fdXJiKHVyYik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDApCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYl9jbGFpbV9iYW5kd2lkdGhf
UmViY2M5MWYzICh1cmItPmRldiwgdXJiLCBidXN0aW1lLCAxKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdWhjaV9zdWJtaXRfaXNvX3VyYih1cmIpOwog
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJiLT5i
YW5kd2lkdGggPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1c3RpbWUg
PSB1c2JfY2hlY2tfYmFuZHdpZHRoX1JiODRkN2RjNiAodXJiLT5kZXYsIHVyYik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1c3RpbWUgPCAwKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gYnVzdGltZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldCA9IHVoY2lfc3VibWl0X2ludF91cmIodXJiKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXNiX2NsYWltX2JhbmR3aWR0aF9SZWJjYzkxZjMgKHVy
Yi0+ZGV2LCB1cmIsIGJ1c3RpbWUsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXQgPSB1aGNpX3N1Ym1pdF9pbnRfdXJiKHVyYik7CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHVoY2lfc3VibWl0X2NvbnRy
b2xfdXJiICh1cmIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IC0yMjsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKCiAgICAgICAgaWYg
KHJldCAhPSAwKSB7CiAgICAgICAgICAgICAgICB1aGNpX3VyYl9kbWFfdW5tYXAocywgdXJiLCB1
cmJfcHJpdik7CiAgICAgICAgICAgICAgICB1c2JfZnJlZV9kZXZfUjQxYmQ4MDExICh1cmItPmRl
dik7CgogICAgICAgICAgICAgICAga21lbV9jYWNoZV9mcmVlX1I4OTFmMjY4Nih1cmJfcHJpdl9r
bWVtLCB1cmJfcHJpdik7CgoKCiAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgIH0K
CiAgICAgICAgcmV0dXJuIDA7Cn0KCgogICAgICAgIHZvaWQgdWhjaV9jaGVja190aW1lb3V0cyh1
aGNpX3QgKnMpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwLCpwMjsKICAgICAgICB1cmJf
dCAqdXJiOwogICAgICAgIGludCB0eXBlOwoKICAgICAgICBwID0gcy0+dXJiX2xpc3QucHJldjsK
CiAgICAgICAgd2hpbGUgKHAgIT0gJnMtPnVyYl9saXN0KSB7CiAgICAgICAgICAgICAgICB1cmJf
cHJpdl90ICpoY3ByaXY7CgogICAgICAgICAgICAgICAgcDIgPSBwOwogICAgICAgICAgICAgICAg
cCA9IHAtPnByZXY7CiAgICAgICAgICAgICAgICB1cmIgPSAoKHVyYl90ICopKChjaGFyICopKHAy
KS0odW5zaWduZWQgbG9uZykoJigodXJiX3QgKikwKS0+dXJiX2xpc3QpKSk7CiAgICAgICAgICAg
ICAgICB0eXBlID0gKCgodXJiLT5waXBlKSA+PiAzMCkgJiAzKTsKCiAgICAgICAgICAgICAgICBo
Y3ByaXYgPSAodXJiX3ByaXZfdCopdXJiLT5oY3ByaXY7CgogICAgICAgICAgICAgICAgaWYgKCB1
cmItPnRpbWVvdXQgJiYKICAgICAgICAgICAgICAgICAgICAgICAgKChoY3ByaXYtPnN0YXJ0ZWQg
KyB1cmItPnRpbWVvdXQpIDwgamlmZmllc19SMGRhMDJkNjcpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHVyYi0+dHJhbnNmZXJfZmxhZ3MgfD0gMHgxMDAwIHwgMHgwMDA4OwogICAgICAgICAg
ICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHVo
Y2lfdW5saW5rX3VyYl9hc3luYyhzLCB1cmIsIDApOwogICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKCgodHlwZSA9PSAzKSB8fCAodHlwZSA9PSAyKSkgJiYKICAgICAg
ICAgICAgICAgICAgICAgKGhjcHJpdi0+dXNlX2xvb3ApICYmCiAgICAgICAgICAgICAgICAgICAg
ICgoaGNwcml2LT5zdGFydGVkICsgKDEwMC8yMCkpIDwgamlmZmllc19SMGRhMDJkNjcpKQogICAg
ICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2Rlc2NfbG9vcChzLCB1cmIpOwoKCiAgICAgICAg
fQogICAgICAgIHMtPnRpbWVvdXRfY2hlY2s9amlmZmllc19SMGRhMDJkNjc7Cn0KCgoKCgogICAg
ICAgIF9fdTggcm9vdF9odWJfZGV2X2Rlc1tdID0KewogICAgICAgIDB4MTIsCiAgICAgICAgMHgw
MSwKICAgICAgICAweDAwLAogICAgICAgIDB4MDEsCiAgICAgICAgMHgwOSwKICAgICAgICAweDAw
LAogICAgICAgIDB4MDAsCiAgICAgICAgMHgwOCwKICAgICAgICAweDAwLAogICAgICAgIDB4MDAs
CiAgICAgICAgMHgwMCwKICAgICAgICAweDAwLAogICAgICAgIDB4MDAsCiAgICAgICAgMHgwMCwK
ICAgICAgICAweDAwLAogICAgICAgIDB4MDIsCiAgICAgICAgMHgwMSwKICAgICAgICAweDAxCn07
CgoKCiAgICAgICAgX191OCByb290X2h1Yl9jb25maWdfZGVzW10gPQp7CiAgICAgICAgMHgwOSwK
ICAgICAgICAweDAyLAogICAgICAgIDB4MTksCiAgICAgICAgMHgwMCwKICAgICAgICAweDAxLAog
ICAgICAgIDB4MDEsCiAgICAgICAgMHgwMCwKICAgICAgICAweDQwLAoKICAgICAgICAweDAwLAoK
CiAgICAgICAgMHgwOSwKICAgICAgICAweDA0LAogICAgICAgIDB4MDAsCiAgICAgICAgMHgwMCwK
ICAgICAgICAweDAxLAogICAgICAgIDB4MDksCiAgICAgICAgMHgwMCwKICAgICAgICAweDAwLAog
ICAgICAgIDB4MDAsCgoKICAgICAgICAweDA3LAogICAgICAgIDB4MDUsCiAgICAgICAgMHg4MSwK
ICAgICAgICAweDAzLAogICAgICAgIDB4MDgsCiAgICAgICAgMHgwMCwKICAgICAgICAweGZmCn07
CgoKICAgICAgICBfX3U4IHJvb3RfaHViX2h1Yl9kZXNbXSA9CnsKICAgICAgICAweDA5LAogICAg
ICAgIDB4MjksCiAgICAgICAgMHgwMiwKICAgICAgICAweDAwLAogICAgICAgIDB4MDAsCiAgICAg
ICAgMHgwMSwKICAgICAgICAweDAwLAogICAgICAgIDB4MDAsCiAgICAgICAgMHhmZgp9OwoKCgog
ICAgICAgIGludCByaF9zZW5kX2lycSAodXJiX3QgKnVyYikKewogICAgICAgIGludCBsZW4gPSAx
OwogICAgICAgIGludCBpOwogICAgICAgIHVoY2lfdCAqdWhjaSA9IHVyYi0+ZGV2LT5idXMtPmhj
cHJpdjsKICAgICAgICB1bnNpZ25lZCBpbnQgaW9fYWRkciA9IHVoY2ktPmlvX2FkZHI7CiAgICAg
ICAgX191MTYgZGF0YSA9IDA7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCB1aGNpLT5yaC5udW1w
b3J0czsgaSsrKSB7CiAgICAgICAgICAgICAgICBkYXRhIHw9ICgoaW53IChpb19hZGRyICsgMTYg
KyBpICogMikgJiAweGEpID4gMCA/ICgxIDw8IChpICsgMSkpIDogMCk7CiAgICAgICAgICAgICAg
ICBsZW4gPSAoaSArIDEpIC8gOCArIDE7CiAgICAgICAgfQoKICAgICAgICAqKF9fdTE2ICopIHVy
Yi0+dHJhbnNmZXJfYnVmZmVyID0gKChfX3UxNikoZGF0YSkpOwogICAgICAgIHVyYi0+YWN0dWFs
X2xlbmd0aCA9IGxlbjsKICAgICAgICB1cmItPnN0YXR1cyA9IDA7CgogICAgICAgIGlmICgoZGF0
YSA+IDApICYmICh1aGNpLT5yaC5zZW5kICE9IDApKSB7CiAgICAgICAgICAgICAgICBkbyB7fSB3
aGlsZSAoMCk7CgogICAgICAgICAgICAgICAgdXJiLT5jb21wbGV0ZV9SOTQyNjEzYWQgKHVyYik7
CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CgoKCiAgICAgICAgaW50IHJoX2luaXRfaW50
X3RpbWVyICh1cmJfdCAqdXJiKTsKCiAgICAgICAgdm9pZCByaF9pbnRfdGltZXJfZG8gKHVuc2ln
bmVkIGxvbmcgcHRyKQp7CiAgICAgICAgaW50IGxlbjsKICAgICAgICB1cmJfdCAqdXJiID0gKHVy
Yl90KikgcHRyOwogICAgICAgIHVoY2lfdCAqdWhjaSA9IHVyYi0+ZGV2LT5idXMtPmhjcHJpdjsK
CiAgICAgICAgaWYgKHVoY2ktPnJoLnNlbmQpIHsKICAgICAgICAgICAgICAgIGxlbiA9IHJoX3Nl
bmRfaXJxICh1cmIpOwogICAgICAgICAgICAgICAgaWYgKGxlbiA+IDApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgdXJiLT5hY3R1YWxfbGVuZ3RoID0gbGVuOwogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodXJiLT5jb21wbGV0ZV9SOTQyNjEzYWQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXJiLT5jb21wbGV0ZV9SOTQyNjEzYWQgKHVyYik7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgfQogICAgICAgIHJoX2luaXRfaW50X3RpbWVyICh1cmIpOwp9CgoKCgogICAgICAg
IGludCByaF9pbml0X2ludF90aW1lciAodXJiX3QgKnVyYikKewogICAgICAgIHVoY2lfdCAqdWhj
aSA9IHVyYi0+ZGV2LT5idXMtPmhjcHJpdjsKCiAgICAgICAgdWhjaS0+cmguaW50ZXJ2YWwgPSB1
cmItPmludGVydmFsOwogICAgICAgIGluaXRfdGltZXIgKCZ1aGNpLT5yaC5yaF9pbnRfdGltZXIp
OwogICAgICAgIHVoY2ktPnJoLnJoX2ludF90aW1lci5mdW5jdGlvbiA9IHJoX2ludF90aW1lcl9k
bzsKICAgICAgICB1aGNpLT5yaC5yaF9pbnRfdGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSB1
cmI7CiAgICAgICAgdWhjaS0+cmgucmhfaW50X3RpbWVyLmV4cGlyZXMgPSBqaWZmaWVzX1IwZGEw
MmQ2NyArICgxMDAgKiAyMCkgLyAxMDAwOwogICAgICAgIGFkZF90aW1lcl9SYTE5ZWFjZjggKCZ1
aGNpLT5yaC5yaF9pbnRfdGltZXIpOwoKICAgICAgICByZXR1cm4gMDsKfQojIDE5NjQgInVzYi11
aGNpLmMiCiAgICAgICAgaW50IHJoX3N1Ym1pdF91cmIgKHVyYl90ICp1cmIpCnsKICAgICAgICBz
dHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiA9IHVyYi0+ZGV2OwogICAgICAgIHVoY2lfdCAqdWhj
aSA9IHVzYl9kZXYtPmJ1cy0+aGNwcml2OwogICAgICAgIHVuc2lnbmVkIGludCBwaXBlID0gdXJi
LT5waXBlOwogICAgICAgIGRldnJlcXVlc3QgKmNtZCA9IChkZXZyZXF1ZXN0ICopIHVyYi0+c2V0
dXBfcGFja2V0OwogICAgICAgIHZvaWQgKmRhdGEgPSB1cmItPnRyYW5zZmVyX2J1ZmZlcjsKICAg
ICAgICBpbnQgbGVuaSA9IHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aDsKICAgICAgICBpbnQg
bGVuID0gMDsKICAgICAgICBpbnQgc3RhdHVzID0gMDsKICAgICAgICBpbnQgc3RhdCA9IDA7CiAg
ICAgICAgaW50IGk7CiAgICAgICAgdW5zaWduZWQgaW50IGlvX2FkZHIgPSB1aGNpLT5pb19hZGRy
OwogICAgICAgIF9fdTE2IGNzdGF0dXM7CgogICAgICAgIF9fdTE2IGJtUlR5cGVfYlJlcTsKICAg
ICAgICBfX3UxNiB3VmFsdWU7CiAgICAgICAgX191MTYgd0luZGV4OwogICAgICAgIF9fdTE2IHdM
ZW5ndGg7CgogICAgICAgIGlmICgoKChwaXBlKSA+PiAzMCkgJiAzKSA9PSAxKSB7CiAgICAgICAg
ICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICB1aGNpLT5yaC51cmIgPSB1
cmI7CiAgICAgICAgICAgICAgICB1aGNpLT5yaC5zZW5kID0gMTsKICAgICAgICAgICAgICAgIHVo
Y2ktPnJoLmludGVydmFsID0gdXJiLT5pbnRlcnZhbDsKICAgICAgICAgICAgICAgIHJoX2luaXRf
aW50X3RpbWVyICh1cmIpOwoKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCgog
ICAgICAgIGJtUlR5cGVfYlJlcSA9IGNtZC0+cmVxdWVzdHR5cGUgfCBjbWQtPnJlcXVlc3QgPDwg
ODsKICAgICAgICB3VmFsdWUgPSAoKF9fdTE2KShjbWQtPnZhbHVlKSk7CiAgICAgICAgd0luZGV4
ID0gKChfX3UxNikoY21kLT5pbmRleCkpOwogICAgICAgIHdMZW5ndGggPSAoKF9fdTE2KShjbWQt
Pmxlbmd0aCkpOwoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQogICAgICAgICAgICAg
ICAgdWhjaS0+cmguY19wX3JbaV0gPSAwOwoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKICAg
ICAgICBzd2l0Y2ggKGJtUlR5cGVfYlJlcSkgewojIDIwMTUgInVzYi11aGNpLmMiCiAgICAgICAg
Y2FzZSAweDAwODA6CiAgICAgICAgICAgICAgICAqKF9fdTE2ICopIGRhdGEgPSAoKF9fdTE2KSgx
KSk7CiAgICAgICAgICAgICAgICBsZW4gPSAoMik7IGJyZWFrOwogICAgICAgIGNhc2UgMHgwMDgw
IHwgMHgwMToKICAgICAgICAgICAgICAgICooX191MTYgKikgZGF0YSA9ICgoX191MTYpKDApKTsK
ICAgICAgICAgICAgICAgIGxlbiA9ICgyKTsgYnJlYWs7CiAgICAgICAgY2FzZSAweDAwODAgfCAw
eDAyOgogICAgICAgICAgICAgICAgKihfX3UxNiAqKSBkYXRhID0gKChfX3UxNikoMCkpOwogICAg
ICAgICAgICAgICAgbGVuID0gKDIpOyBicmVhazsKICAgICAgICBjYXNlIDB4MDA4MCB8IDB4MjA6
CiAgICAgICAgICAgICAgICAqKF9fdTMyICopIGRhdGEgPSAoKF9fdTMyKSgwKSk7CiAgICAgICAg
ICAgICAgICBsZW4gPSAoNCk7IGJyZWFrOwogICAgICAgIGNhc2UgMHgwMDgwIHwgMHgwMyB8IDB4
MjA6CiAgICAgICAgICAgICAgICBzdGF0dXMgPSBpbncgKGlvX2FkZHIgKyAxNiArIDIgKiAod0lu
ZGV4IC0gMSkpOwogICAgICAgICAgICAgICAgY3N0YXR1cyA9ICgoc3RhdHVzICYgMHgwMDAyKSA+
PiAoMSAtIDApKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICgoc3RhdHVzICYgMHgwMDA4KSA+
PiAoMyAtIDEpKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICh1aGNpLT5yaC5jX3Bfclt3SW5k
ZXggLSAxXSA8PCAoMCArIDQpKTsKICAgICAgICAgICAgICAgIHN0YXR1cyA9IChzdGF0dXMgJiAw
eDAwMDEpIHwKICAgICAgICAgICAgICAgICAgICAgICAgKChzdGF0dXMgJiAweDAwMDQpID4+ICgy
IC0gMSkpIHwKICAgICAgICAgICAgICAgICAgICAgICAgKChzdGF0dXMgJiAweDEwMDApID4+ICgx
MiAtIDIpKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICgoc3RhdHVzICYgMHgwMjAwKSA+PiAo
OSAtIDQpKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDgpIHwKICAgICAgICAgICAg
ICAgICAgICAgICAgKChzdGF0dXMgJiAweDAxMDApIDw8ICgtOCArIDkpKTsKCiAgICAgICAgICAg
ICAgICAqKF9fdTE2ICopIGRhdGEgPSAoKF9fdTE2KShzdGF0dXMpKTsKICAgICAgICAgICAgICAg
ICooX191MTYgKikgKGRhdGEgKyAyKSA9ICgoX191MTYpKGNzdGF0dXMpKTsKICAgICAgICAgICAg
ICAgIGxlbiA9ICg0KTsgYnJlYWs7CgogICAgICAgIGNhc2UgMHgwMTAwIHwgMHgwMjoKICAgICAg
ICAgICAgICAgIHN3aXRjaCAod1ZhbHVlKSB7CiAgICAgICAgICAgICAgICBjYXNlICgweDAxKToK
ICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKDApOyBicmVhazsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4MDEwMCB8IDB4MjA6CiAg
ICAgICAgICAgICAgICBzd2l0Y2ggKHdWYWx1ZSkgewogICAgICAgICAgICAgICAgY2FzZSAoMHgw
MSk6CiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9ICgwKTsgYnJlYWs7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDAxMDAgfCAweDAz
IHwgMHgyMDoKICAgICAgICAgICAgICAgIHN3aXRjaCAod1ZhbHVlKSB7CiAgICAgICAgICAgICAg
ICBjYXNlICgweDAxKToKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gaW53KGlvX2Fk
ZHIrMTYgKzIqKHdJbmRleC0xKSk7IHN0YXR1cyA9IChzdGF0dXMgJiAweGZmZjUpICYgfigweDAw
MDQpOyBvdXR3KHN0YXR1cywgaW9fYWRkcisxNiArMiood0luZGV4LTEpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgbGVuID0gKDApOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgKDB4MDIp
OgogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBpbncoaW9fYWRkcisxNiArMiood0lu
ZGV4LTEpKTsgc3RhdHVzID0gKHN0YXR1cyAmIDB4ZmZmNSkgJiB+KDB4MTAwMCk7IG91dHcoc3Rh
dHVzLCBpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOwogICAgICAgICAgICAgICAgICAgICAgICBs
ZW4gPSAoMCk7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAoMHgwOCk6CiAgICAgICAgICAg
ICAgICAgICAgICAgIGxlbiA9ICgwKTsgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICgweDEw
KToKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gaW53KGlvX2FkZHIrMTYgKzIqKHdJ
bmRleC0xKSk7IHN0YXR1cyA9IChzdGF0dXMgJiAweGZmZjUpIHwgKDB4MDAwMik7IG91dHcoc3Rh
dHVzLCBpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOwogICAgICAgICAgICAgICAgICAgICAgICBs
ZW4gPSAoMCk7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAoMHgxMSk6CiAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXR1cyA9IGludyhpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOyBzdGF0
dXMgPSAoc3RhdHVzICYgMHhmZmY1KSB8ICgweDAwMDgpOyBvdXR3KHN0YXR1cywgaW9fYWRkcisx
NiArMiood0luZGV4LTEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKDApOyBicmVh
azsKICAgICAgICAgICAgICAgIGNhc2UgKDB4MTIpOgoKICAgICAgICAgICAgICAgICAgICAgICAg
bGVuID0gKDApOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgKDB4MTMpOgogICAgICAgICAg
ICAgICAgICAgICAgICBsZW4gPSAoMCk7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAoMHgx
NCk6CiAgICAgICAgICAgICAgICAgICAgICAgIHVoY2ktPnJoLmNfcF9yW3dJbmRleCAtIDFdID0g
MDsKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKDApOyBicmVhazsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4MDMwMCB8IDB4MDMg
fCAweDIwOgogICAgICAgICAgICAgICAgc3dpdGNoICh3VmFsdWUpIHsKICAgICAgICAgICAgICAg
IGNhc2UgKDB4MDIpOgogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBpbncoaW9fYWRk
cisxNiArMiood0luZGV4LTEpKTsgc3RhdHVzID0gKHN0YXR1cyAmIDB4ZmZmNSkgfCAoMHgxMDAw
KTsgb3V0dyhzdGF0dXMsIGlvX2FkZHIrMTYgKzIqKHdJbmRleC0xKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGxlbiA9ICgwKTsgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICgweDA0KToK
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gaW53KGlvX2FkZHIrMTYgKzIqKHdJbmRl
eC0xKSk7IHN0YXR1cyA9IChzdGF0dXMgJiAweGZmZjUpIHwgKDB4MDIwMCk7IG91dHcoc3RhdHVz
LCBpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOwogICAgICAgICAgICAgICAgICAgICAgICB1aGNp
X3dhaXRfbXMgKDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdWhjaS0+cmguY19wX3Jbd0lu
ZGV4IC0gMV0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBpbncoaW9fYWRk
cisxNiArMiood0luZGV4LTEpKTsgc3RhdHVzID0gKHN0YXR1cyAmIDB4ZmZmNSkgJiB+KDB4MDIw
MCk7IG91dHcoc3RhdHVzLCBpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMTApID8gKCgxMCkgPiAyMDAwMCA/IF9f
YmFkX3VkZWxheSgpIDogX19jb25zdF91ZGVsYXlfUmVhZTNkZmQ2KCgxMCkgKiAweDEwYzZ1bCkp
IDogX191ZGVsYXlfUjllN2Q2YmQwKDEwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1
cyA9IGludyhpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOyBzdGF0dXMgPSAoc3RhdHVzICYgMHhm
ZmY1KSB8ICgweDAwMDQpOyBvdXR3KHN0YXR1cywgaW9fYWRkcisxNiArMiood0luZGV4LTEpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgdWhjaV93YWl0X21zICgxMCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1cyA9IGludyhpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOyBzdGF0dXMg
PSAoc3RhdHVzICYgMHhmZmY1KSB8ICgweGEpOyBvdXR3KHN0YXR1cywgaW9fYWRkcisxNiArMioo
d0luZGV4LTEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKDApOyBicmVhazsKICAg
ICAgICAgICAgICAgIGNhc2UgKDB4MDgpOgogICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAo
MCk7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAoMHgwMSk6CiAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXR1cyA9IGludyhpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOyBzdGF0dXMgPSAo
c3RhdHVzICYgMHhmZmY1KSB8ICgweDAwMDQpOyBvdXR3KHN0YXR1cywgaW9fYWRkcisxNiArMioo
d0luZGV4LTEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKDApOyBicmVhazsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4MDUw
MDoKICAgICAgICAgICAgICAgIHVoY2ktPnJoLmRldm51bSA9IHdWYWx1ZTsKICAgICAgICAgICAg
ICAgIGxlbiA9ICgwKTsgYnJlYWs7CgogICAgICAgIGNhc2UgMHgwNjgwOgogICAgICAgICAgICAg
ICAgc3dpdGNoICgod1ZhbHVlICYgMHhmZjAwKSA+PiA4KSB7CiAgICAgICAgICAgICAgICBjYXNl
ICgweDAxKToKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKHsgdW5zaWduZWQgaW50IF9f
eCA9IChsZW5pKTsgdW5zaWduZWQgaW50IF9feSA9ICgoeyB1bnNpZ25lZCBpbnQgX194ID0gKHNp
emVvZiAocm9vdF9odWJfZGV2X2RlcykpOyB1bnNpZ25lZCBpbnQgX195ID0gKHdMZW5ndGgpOyBf
X3ggPCBfX3kgPyBfX3g6IF9feTsgfSkpOyBfX3ggPCBfX3kgPyBfX3g6IF9feTsgfSk7CgoKICAg
ICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKGxlbikgPyBfX2NvbnN0
YW50X21lbWNweSgoZGF0YSksKHJvb3RfaHViX2Rldl9kZXMpLChsZW4pKSA6IF9fbWVtY3B5KChk
YXRhKSwocm9vdF9odWJfZGV2X2RlcyksKGxlbikpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
bGVuID0gKGxlbik7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAoMHgwMik6CiAgICAgICAg
ICAgICAgICAgICAgICAgIGxlbiA9ICh7IHVuc2lnbmVkIGludCBfX3ggPSAobGVuaSk7IHVuc2ln
bmVkIGludCBfX3kgPSAoKHsgdW5zaWduZWQgaW50IF9feCA9IChzaXplb2YgKHJvb3RfaHViX2Nv
bmZpZ19kZXMpKTsgdW5zaWduZWQgaW50IF9feSA9ICh3TGVuZ3RoKTsgX194IDwgX195ID8gX194
OiBfX3k7IH0pKTsgX194IDwgX195ID8gX194OiBfX3k7IH0pOwoKCiAgICAgICAgICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChsZW4pID8gX19jb25zdGFudF9tZW1jcHkoKGRh
dGEpLChyb290X2h1Yl9jb25maWdfZGVzKSwobGVuKSkgOiBfX21lbWNweSgoZGF0YSksKHJvb3Rf
aHViX2NvbmZpZ19kZXMpLChsZW4pKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IChs
ZW4pOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgKDB4MDMpOgogICAgICAgICAgICAgICAg
ICAgICAgICBsZW4gPSB1c2Jfcm9vdF9odWJfc3RyaW5nX1JhNjg3MThmMCAod1ZhbHVlICYgMHhm
ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aGNpLT5pb19hZGRyLCAiVUhDSSIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwgd0xlbmd0aCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChsZW4gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGVuID0gKCh7IGludCBfX3ggPSAobGVuaSk7IGludCBfX3kgPSAobGVuKTsgX194IDwg
X195ID8gX194OiBfX3k7IH0pKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQgPSAtMzI7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDA2ODAgfCAweDIw
OgogICAgICAgICAgICAgICAgcm9vdF9odWJfaHViX2Rlc1syXSA9IHVoY2ktPnJoLm51bXBvcnRz
OwogICAgICAgICAgICAgICAgbGVuID0gKHsgdW5zaWduZWQgaW50IF9feCA9IChsZW5pKTsgdW5z
aWduZWQgaW50IF9feSA9ICgoeyB1bnNpZ25lZCBpbnQgX194ID0gKHNpemVvZiAocm9vdF9odWJf
aHViX2RlcykpOyB1bnNpZ25lZCBpbnQgX195ID0gKHdMZW5ndGgpOyBfX3ggPCBfX3kgPyBfX3g6
IF9feTsgfSkpOyBfX3ggPCBfX3kgPyBfX3g6IF9feTsgfSk7CgogICAgICAgICAgICAgICAgKF9f
YnVpbHRpbl9jb25zdGFudF9wKGxlbikgPyBfX2NvbnN0YW50X21lbWNweSgoZGF0YSksKHJvb3Rf
aHViX2h1Yl9kZXMpLChsZW4pKSA6IF9fbWVtY3B5KChkYXRhKSwocm9vdF9odWJfaHViX2Rlcyks
KGxlbikpKTsKICAgICAgICAgICAgICAgIGxlbiA9IChsZW4pOyBicmVhazsKCiAgICAgICAgY2Fz
ZSAweDA4ODA6CiAgICAgICAgICAgICAgICAqKF9fdTggKikgZGF0YSA9IDB4MDE7CiAgICAgICAg
ICAgICAgICBsZW4gPSAoMSk7IGJyZWFrOwoKICAgICAgICBjYXNlIDB4MDkwMDoKICAgICAgICAg
ICAgICAgIGxlbiA9ICgwKTsgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
IHN0YXQgPSAtMzI7CiAgICAgICAgfQoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKICAgICAg
ICB1cmItPmFjdHVhbF9sZW5ndGggPSBsZW47CiAgICAgICAgdXJiLT5zdGF0dXMgPSBzdGF0Owog
ICAgICAgIHVyYi0+ZGV2PSgodm9pZCAqKTApOwogICAgICAgIGlmICh1cmItPmNvbXBsZXRlX1I5
NDI2MTNhZCkKICAgICAgICAgICAgICAgIHVyYi0+Y29tcGxldGVfUjk0MjYxM2FkICh1cmIpOwog
ICAgICAgIHJldHVybiAwOwp9CgoKICAgICAgICBpbnQgcmhfdW5saW5rX3VyYiAodXJiX3QgKnVy
YikKewogICAgICAgIHVoY2lfdCAqdWhjaSA9IHVyYi0+ZGV2LT5idXMtPmhjcHJpdjsKCiAgICAg
ICAgaWYgKHVoY2ktPnJoLnVyYj09dXJiKSB7CiAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAo
MCk7CiAgICAgICAgICAgICAgICB1aGNpLT5yaC5zZW5kID0gMDsKICAgICAgICAgICAgICAgIGRl
bF90aW1lcl9SZmM2MmYxNmQgKCZ1aGNpLT5yaC5yaF9pbnRfdGltZXIpOwogICAgICAgIH0KICAg
ICAgICByZXR1cm4gMDsKfQojIDIxODQgInVzYi11aGNpLmMiCiAgICAgICAgaW50IHVoY2lfbWFw
X3N0YXR1cyAoaW50IHN0YXR1cywgaW50IGRpcl9vdXQpCnsKICAgICAgICBpZiAoIXN0YXR1cykK
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGlmIChzdGF0dXMgJiAoMSA8PCAxNykp
CiAgICAgICAgICAgICAgICByZXR1cm4gLTcxOwogICAgICAgIGlmIChzdGF0dXMgJiAoMSA8PCAx
OCkpIHsKICAgICAgICAgICAgICAgIGlmIChkaXJfb3V0KQogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gLTExMDsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC04NDsKICAgICAgICB9CiAgICAgICAgaWYgKHN0YXR1cyAmICgxIDw8IDE5KSkK
ICAgICAgICAgICAgICAgIHJldHVybiAtMTEwOwogICAgICAgIGlmIChzdGF0dXMgJiAoMSA8PCAy
MCkpCiAgICAgICAgICAgICAgICByZXR1cm4gLTMyOwogICAgICAgIGlmIChzdGF0dXMgJiAoMSA8
PCAyMSkpCiAgICAgICAgICAgICAgICByZXR1cm4gLTYzOwogICAgICAgIGlmIChzdGF0dXMgJiAo
MSA8PCAyMikpCiAgICAgICAgICAgICAgICByZXR1cm4gLTMyOwogICAgICAgIGlmIChzdGF0dXMg
JiAoMSA8PCAyMykpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKCiAgICAgICAgcmV0dXJuIC03
MTsKfQoKCgoKICAgICAgICBpbnQgdWhjaV9hbGxvY19kZXYgKHN0cnVjdCB1c2JfZGV2aWNlICp1
c2JfZGV2KQp7CiAgICAgICAgcmV0dXJuIDA7Cn0KCiAgICAgICAgdm9pZCB1aGNpX3VubGlua191
cmJzKHVoY2lfdCAqcywgc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYsIGludCByZW1vdmVfYWxs
KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk
ICpwOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnAyOwogICAgICAgIHVyYl90ICp1cmI7Cgog
ICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGki
OiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZzLT51cmJfbGlzdF9sb2NrKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgcCA9IHMtPnVyYl9saXN0LnByZXY7CiAgICAgICAgd2hpbGUgKHAg
IT0gJnMtPnVyYl9saXN0KSB7CiAgICAgICAgICAgICAgICBwMiA9IHA7CiAgICAgICAgICAgICAg
ICBwID0gcC0+cHJldiA7CiAgICAgICAgICAgICAgICB1cmIgPSAoKHVyYl90ICopKChjaGFyICop
KHAyKS0odW5zaWduZWQgbG9uZykoJigodXJiX3QgKikwKS0+dXJiX2xpc3QpKSk7CiAgICAgICAg
ICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKCiAgICAgICAgICAgICAgICBpZiAocmVtb3ZlX2Fs
bCB8fCAodXNiX2RldiA9PSB1cmItPmRldikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG8g
eyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZs
IjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjw0PiIgInVzYi11aGNpLmMiICI6ICIgImZv
cmNlZCByZW1vdmluZyBvZiBxdWV1ZWQgVVJCICVwIGR1ZSB0byBkaXNjb25uZWN0IiAiXG4iICwg
dXJiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdWhjaV91bmxpbmtfdXJiKHVyYik7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHVyYi0+ZGV2ID0gKCh2b2lkICopMCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBj
bGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZzLT51cmJfbGlzdF9sb2NrKTsg
fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBzLT51cmJfbGlzdC5wcmV2
OwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgw
KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6
Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQoKICAgICAgICBpbnQgdWhjaV9mcmVlX2Rl
diAoc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYpCnsKICAgICAgICB1aGNpX3QgKnM7CgoKICAg
ICAgICBpZighdXNiX2RldiB8fCAhdXNiX2Rldi0+YnVzIHx8ICF1c2JfZGV2LT5idXMtPmhjcHJp
dikKICAgICAgICAgICAgICAgIHJldHVybiAtMjI7CgogICAgICAgIHM9KHVoY2lfdCopIHVzYl9k
ZXYtPmJ1cy0+aGNwcml2OwogICAgICAgIHVoY2lfdW5saW5rX3VyYnMocywgdXNiX2RldiwgMCk7
CgogICAgICAgIHJldHVybiAwOwp9CgoKCgoKCiAgICAgICAgaW50IHVoY2lfZ2V0X2N1cnJlbnRf
ZnJhbWVfbnVtYmVyIChzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldikKewogICAgICAgIHJldHVy
biAoaW53ICgoKHVoY2lfdCopIHVzYl9kZXYtPmJ1cy0+aGNwcml2KS0+aW9fYWRkciArIDYpKTsK
fQoKc3RydWN0IHVzYl9vcGVyYXRpb25zIHVoY2lfZGV2aWNlX29wZXJhdGlvbnMgPQp7CiAgICAg
ICAgdWhjaV9hbGxvY19kZXYsCiAgICAgICAgdWhjaV9mcmVlX2RldiwKICAgICAgICB1aGNpX2dl
dF9jdXJyZW50X2ZyYW1lX251bWJlciwKICAgICAgICB1aGNpX3N1Ym1pdF91cmIsCiAgICAgICAg
dWhjaV91bmxpbmtfdXJiCn07CgogICAgICAgIHZvaWQgY29ycmVjdF9kYXRhX3RvZ2dsZXModXJi
X3QgKnVyYikKewogICAgICAgICgodXJiLT5kZXYpLT50b2dnbGVbKCgoKHVyYi0+cGlwZSkgPj4g
NykgJiAxKSBeIDEpXSA9ICgodXJiLT5kZXYpLT50b2dnbGVbKCgoKHVyYi0+cGlwZSkgPj4gNykg
JiAxKSBeIDEpXSAmIH4oMSA8PCAoKCh1cmItPnBpcGUpID4+IDE1KSAmIDB4ZikpKSB8ICgoISgo
KHVyYi0+ZGV2KS0+dG9nZ2xlWygoKCh1cmItPnBpcGUpID4+IDcpICYgMSkgXiAxKV0gPj4gKCgo
dXJiLT5waXBlKSA+PiAxNSkgJiAweGYpKSAmIDEpKSA8PCAoKCh1cmItPnBpcGUpID4+IDE1KSAm
IDB4ZikpKTsKCgogICAgICAgIHdoaWxlKHVyYikgewogICAgICAgICAgICAgICAgdXJiX3ByaXZf
dCAqcHJpdj11cmItPmhjcHJpdjsKICAgICAgICAgICAgICAgIHVoY2lfZGVzY190ICpxaCA9ICgo
dWhjaV9kZXNjX3QgKikoKGNoYXIgKikocHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBs
b25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkICpwID0gcWgtPnZlcnRpY2FsLm5leHQ7CiAgICAgICAgICAgICAgICB1
aGNpX2Rlc2NfdCAqdGQ7CiAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAg
ICAgICAgICAgZm9yICg7IHAgIT0gJnFoLT52ZXJ0aWNhbDsgcCA9IHAtPm5leHQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgdGQgPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKHApLSh1bnNp
Z25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT52ZXJ0aWNhbCkpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgdGQtPmh3LnRkLmluZm9ePSgoX191MzIpKDE8PDE5KSk7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB1cmI9cHJpdi0+bmV4dF9xdWV1ZWRfdXJiOwogICAgICAg
IH0KfQojIDIzMTAgInVzYi11aGNpLmMiCiAgICAgICAgaW50IHByb2Nlc3NfdHJhbnNmZXIgKHVo
Y2lfdCAqcywgdXJiX3QgKnVyYiwgaW50IG1vZGUpCnsKICAgICAgICBpbnQgcmV0ID0gMDsKICAg
ICAgICB1cmJfcHJpdl90ICp1cmJfcHJpdiA9IHVyYi0+aGNwcml2OwogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgKnFobCA9IHVyYl9wcml2LT5kZXNjX2xpc3QubmV4dDsKICAgICAgICB1aGNpX2Rl
c2NfdCAqcWggPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKHFobCktKHVuc2lnbmVkIGxvbmcp
KCYoKHVoY2lfZGVzY190ICopMCktPmRlc2NfbGlzdCkpKTsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkICpwID0gcWgtPnZlcnRpY2FsLm5leHQ7CiAgICAgICAgdWhjaV9kZXNjX3QgKmRlc2M9ICgo
dWhjaV9kZXNjX3QgKikoKGNoYXIgKikodXJiX3ByaXYtPmRlc2NfbGlzdC5wcmV2KS0odW5zaWdu
ZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+ZGVzY19saXN0KSkpOwogICAgICAgIHVoY2lf
ZGVzY190ICpsYXN0X2Rlc2MgPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKGRlc2MtPnZlcnRp
Y2FsLnByZXYpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT52ZXJ0aWNhbCkp
KTsKICAgICAgICBpbnQgZGF0YV90b2dnbGUgPSAoKCh1cmItPmRldiktPnRvZ2dsZVsoKCgodXJi
LT5waXBlKSA+PiA3KSAmIDEpIF4gMSldID4+ICgoKHVyYi0+cGlwZSkgPj4gMTUpICYgMHhmKSkg
JiAxKTsKICAgICAgICBpbnQgbWF4bGVuZ3RoOwogICAgICAgIGludCBhY3R1YWxfbGVuZ3RoOwog
ICAgICAgIGludCBzdGF0dXMgPSAwOwojIDIzMzEgInVzYi11aGNpLmMiCiAgICAgICAgaWYgKHVy
Yl9wcml2LT5mbGFncyAmJgogICAgICAgICAgICAoKHFoLT5ody5xaC5lbGVtZW50ID09ICgoX191
MzIpKDB4MDAwMSkpKSB8fCAhKGRlc2MtPmh3LnRkLnN0YXR1cyAmICgoX191MzIpKCgxIDw8IDIz
KSkpKSkpCiAgICAgICAgICAgICAgICBnb3RvIHRyYW5zZmVyX2ZpbmlzaGVkOwoKICAgICAgICB1
cmItPmFjdHVhbF9sZW5ndGg9MDsKCiAgICAgICAgZm9yICg7IHAgIT0gJnFoLT52ZXJ0aWNhbDsg
cCA9IHAtPm5leHQpIHsKICAgICAgICAgICAgICAgIGRlc2MgPSAoKHVoY2lfZGVzY190ICopKChj
aGFyICopKHApLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT52ZXJ0aWNhbCkp
KTsKCiAgICAgICAgICAgICAgICBpZiAoKGRlc2MtPmh3LnRkLnN0YXR1cyAmICgoX191MzIpKCgx
IDw8IDIzKSkpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSAyKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVoY2lfY2xlYW5fdHJhbnNmZXIocywgdXJiLCBx
aCwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgYWN0dWFsX2xlbmd0aCA9ICgoKChfX3UzMikoZGVzYy0+aHcu
dGQuc3RhdHVzKSkgKyAxKSAmIDB4N2ZmKTsKICAgICAgICAgICAgICAgIG1heGxlbmd0aCA9ICgo
KCgoX191MzIpKGRlc2MtPmh3LnRkLmluZm8pKSA+PiAyMSkgJiAweDdmZikgKyAxKSAmIDB4N2Zm
OwogICAgICAgICAgICAgICAgc3RhdHVzID0gdWhjaV9tYXBfc3RhdHVzICgoKChfX3UzMikoZGVz
Yy0+aHcudGQuc3RhdHVzKSkgJiAweEZFMDAwMCksICgoKCh1cmItPnBpcGUpID4+IDcpICYgMSkg
XiAxKSk7CgogICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAtMzIpIHsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICgodXJiLT5kZXYpLT5oYWx0ZWRbKCgoKHVyYi0+cGlwZSkgPj4gNykgJiAx
KSBeIDEpXSB8PSAoMSA8PCAoKCgodXJiLT5waXBlKSA+PiAxNSkgJiAweGYpKSkpOwogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyAhPSAtMzIp
KSB7CgogIGlzX2Vycm9yOgogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzdGF0dXM7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHVyYi0+ZXJyb3JfY291bnQrKzsKICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlm
ICgoKChfX3UzMikoZGVzYy0+aHcudGQuaW5mbykpICYgMHhmZikgIT0gMHgyZCkKICAgICAgICAg
ICAgICAgICAgICAgICAgdXJiLT5hY3R1YWxfbGVuZ3RoICs9IGFjdHVhbF9sZW5ndGg7CgoKICAg
ICAgICAgICAgICAgIGlmICggKGFjdHVhbF9sZW5ndGggPCBtYXhsZW5ndGgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDAxKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gLTEyMTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKCgoKHVyYi0+cGlwZSkgPj4gMzApICYgMykgPT0gMikpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgoKF9fdTMyKShsYXN0X2Rlc2MtPmh3LnRk
LmluZm8pKSkgJiAweGZmKSA9PSAweGUxKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHFoKS0+aHcucWguZWxlbWVudD0oKF9fdTMyKShsYXN0X2Rlc2MtPmRtYV9h
ZGRyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7fSB3aGls
ZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmJfcHJpdi0+
ZmxhZ3MgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3RvZ2dsZSA9ICgoKCgoX191MzIp
KGRlc2MtPmh3LnRkLmluZm8pKSkgPj4gMTkpICYgMSk7CiAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdHVz
KQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGlzX2Vycm9yOwoKICAgICAgICAgICAgICAg
IGRhdGFfdG9nZ2xlID0gKCgoKChfX3UzMikoZGVzYy0+aHcudGQuaW5mbykpKSA+PiAxOSkgJiAx
KTsKICAgICAgICAgICAgICAgIGRvIHt9IHdoaWxlICgwKTsKCiAgICAgICAgfQoKICAgICAgICBp
ZiAoKCgodXJiLT5waXBlKSA+PiAzMCkgJiAzKSA9PSAzICkgewoKICAgICAgICAgICAgICAgIHVy
Yl9wcml2X3QgKnByaXY9KHVyYl9wcml2X3QqKXVyYi0+aGNwcml2OwogICAgICAgICAgICAgICAg
dXJiX3QgKm5leHRfcXVldWVkX3VyYj1wcml2LT5uZXh0X3F1ZXVlZF91cmI7CgogICAgICAgICAg
ICAgICAgaWYgKG5leHRfcXVldWVkX3VyYikgewogICAgICAgICAgICAgICAgICAgICAgICB1cmJf
cHJpdl90ICpuZXh0X3ByaXY9KHVyYl9wcml2X3QqKW5leHRfcXVldWVkX3VyYi0+aGNwcml2Owog
ICAgICAgICAgICAgICAgICAgICAgICB1aGNpX2Rlc2NfdCAqcWggPSAoKHVoY2lfZGVzY190ICop
KChjaGFyICopKG5leHRfcHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBsb25nKSgmKCh1
aGNpX2Rlc2NfdCAqKTApLT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHVo
Y2lfZGVzY190ICpmaXJzdF90ZD0oKHVoY2lfZGVzY190ICopKChjaGFyICopKHFoLT52ZXJ0aWNh
bC5uZXh0KS0odW5zaWduZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+dmVydGljYWwpKSk7
CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YV90b2dnbGUgPT0gKCgoKChfX3UzMiko
Zmlyc3RfdGQtPmh3LnRkLmluZm8pKSkgPj4gMTkpICYgMSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Mz4iICJ1c2ItdWhjaS5jIiAiOiAiICJw
cm9jZXNzX3RyYW5zZmVyOiBmaXhlZCB0b2dnbGUiICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvcnJlY3RfZGF0YV90b2dnbGVzKG5leHRfcXVldWVkX3VyYik7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgKCh1cmItPmRldiktPnRvZ2dsZVsoKCgodXJiLT5w
aXBlKSA+PiA3KSAmIDEpIF4gMSldID0gKCh1cmItPmRldiktPnRvZ2dsZVsoKCgodXJiLT5waXBl
KSA+PiA3KSAmIDEpIF4gMSldICYgfigxIDw8ICgoKHVyYi0+cGlwZSkgPj4gMTUpICYgMHhmKSkp
IHwgKCghZGF0YV90b2dnbGUpIDw8ICgoKHVyYi0+cGlwZSkgPj4gMTUpICYgMHhmKSkpOwogICAg
ICAgIH0KCiB0cmFuc2Zlcl9maW5pc2hlZDoKCiAgICAgICAgdWhjaV9jbGVhbl90cmFuc2Zlcihz
LCB1cmIsIHFoLCBtb2RlKTsKCiAgICAgICAgdXJiLT5zdGF0dXMgPSBzdGF0dXM7CgoKICAgICAg
ICBkaXNhYmxlX2Rlc2NfbG9vcChzLHVyYik7CgoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7Cgog
ICAgICAgIHJldHVybiByZXQ7Cn0KCiAgICAgICAgaW50IHByb2Nlc3NfaW50ZXJydXB0ICh1aGNp
X3QgKnMsIHVyYl90ICp1cmIpCnsKICAgICAgICBpbnQgaSwgcmV0ID0gLTExNTsKICAgICAgICB1
cmJfcHJpdl90ICp1cmJfcHJpdiA9IHVyYi0+aGNwcml2OwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgKnAgPSB1cmJfcHJpdi0+ZGVzY19saXN0Lm5leHQ7CiAgICAgICAgdWhjaV9kZXNjX3QgKmRl
c2MgPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKHVyYl9wcml2LT5kZXNjX2xpc3QucHJldikt
KHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPmRlc2NfbGlzdCkpKTsKCiAgICAg
ICAgaW50IGFjdHVhbF9sZW5ndGg7CiAgICAgICAgaW50IHN0YXR1cyA9IDA7CgoKCiAgICAgICAg
Zm9yIChpID0gMDsgcCAhPSAmdXJiX3ByaXYtPmRlc2NfbGlzdDsgcCA9IHAtPm5leHQsIGkrKykK
ICAgICAgICB7CiAgICAgICAgICAgICAgICBkZXNjID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAq
KShwKS0odW5zaWduZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+ZGVzY19saXN0KSkpOwoK
ICAgICAgICAgICAgICAgIGlmICgoZGVzYy0+aHcudGQuc3RhdHVzICYgKChfX3UzMikoKDEgPDwg
MjMpKSkpKSB7CgoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgaWYgKCFkZXNjLT5ody50ZC5zdGF0dXMgJiAoKF9fdTMyKSgo
MSA8PCAyNCkpKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICB9CgoKICAgICAgICAgICAgICAgIGFjdHVhbF9sZW5ndGggPSAoKCgoX191MzIpKGRlc2Mt
Pmh3LnRkLnN0YXR1cykpICsgMSkgJiAweDdmZik7CiAgICAgICAgICAgICAgICBzdGF0dXMgPSB1
aGNpX21hcF9zdGF0dXMgKCgoKF9fdTMyKShkZXNjLT5ody50ZC5zdGF0dXMpKSAmIDB4RkUwMDAw
KSwgKCgoKHVyYi0+cGlwZSkgPj4gNykgJiAxKSBeIDEpKTsKCgogICAgICAgICAgICAgICAgaWYg
KHN0YXR1cyA9PSAtMzIpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICgodXJiLT5kZXYpLT5o
YWx0ZWRbKCgoKHVyYi0+cGlwZSkgPj4gNykgJiAxKSBeIDEpXSB8PSAoMSA8PCAoKCgodXJiLT5w
aXBlKSA+PiAxNSkgJiAweGYpKSkpOwogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAg
ICBpZiAoc3RhdHVzICE9IDApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+ZXJyb3Jf
Y291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZWN5Y2xlOwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICB1cmIt
PmFjdHVhbF9sZW5ndGggPSBhY3R1YWxfbGVuZ3RoOwoKICAgICAgICByZWN5Y2xlOgogICAgICAg
ICAgICAgICAgdWhjaV91cmJfZG1hX3N5bmMocywgdXJiLCB1cmItPmhjcHJpdik7CiAgICAgICAg
ICAgICAgICBpZiAodXJiLT5jb21wbGV0ZV9SOTQyNjEzYWQpIHsKCiAgICAgICAgICAgICAgICAg
ICAgICAgIHVyYi0+c3RhdHVzID0gc3RhdHVzOwogICAgICAgICAgICAgICAgICAgICAgICAoKHVy
Yl9wcml2X3QqKXVyYi0+aGNwcml2KS0+ZmxhZ3M9MTsKCiAgICAgICAgICAgICAgICAgICAgICAg
IGRvIHsgfSB3aGlsZSgwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+Y29tcGxldGVf
Ujk0MjYxM2FkICgoc3RydWN0IHVyYiAqKSB1cmIpOwoKICAgICAgICAgICAgICAgICAgICAgICAg
KHZvaWQpKCZzLT51cmJfbGlzdF9sb2NrKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICgodXJi
X3ByaXZfdCopdXJiLT5oY3ByaXYpLT5mbGFncz0wOwogICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgIGlmICgodXJiLT5zdGF0dXMgIT0gLTEwMykgJiYgKHVyYi0+c3RhdHVzICE9IDEw
NCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmItPnN0YXR1cyAhPSAtMikpIHsK
CiAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+c3RhdHVzID0gLTExNTsKCgogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodXJiLT5pbnRlcnZhbCkgewoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXNjLT5ody50ZC5pbmZvICY9ICgoX191MzIpKH4oMSA8PCAxOSkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzPT0wKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVyYl9wcml2X3QqKXVyYi0+aGNwcml2KS0+
c3RhcnRlZD1qaWZmaWVzX1IwZGEwMmQ2NzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc2MtPmh3LnRkLmluZm8gfD0gKChfX3UzMikoKCgoKHVyYi0+ZGV2KS0+dG9n
Z2xlWygoKCh1cmItPnBpcGUpID4+IDcpICYgMSkgXiAxKV0gPj4gKCgodXJiLT5waXBlKSA+PiAx
NSkgJiAweGYpKSAmIDEpIDw8IDE5KSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgodXJiLT5kZXYpLT50b2dnbGVbKCgoKHVyYi0+cGlwZSkgPj4gNykgJiAxKSBe
IDEpXSBePSAoMSA8PCAoKCh1cmItPnBpcGUpID4+IDE1KSAmIDB4ZikpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzYy0+aHcudGQuaW5mbyB8PSAoKF9fdTMyKSgoISgoKHVyYi0+ZGV2KS0+
dG9nZ2xlWygoKCh1cmItPnBpcGUpID4+IDcpICYgMSkgXiAxKV0gPj4gKCgodXJiLT5waXBlKSA+
PiAxNSkgJiAweGYpKSAmIDEpIDw8IDE5KSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYy0+aHcudGQuc3RhdHVz
PSAoKF9fdTMyKSgodXJiLT5waXBlICYgKDEgPDwgMjYpKSB8ICgxIDw8IDIzKSB8ICgxIDw8IDI0
KSB8ICh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDAxID8gMCA6ICgxIDw8IDI5KSkgfCAoMyA8
PCAyNykpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18gKCJsb2NrOyBhZGRsICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIpOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVoY2lfdW5saW5rX3VyYl9hc3luYyhzLCB1cmIsIDApOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXNjKS0+aHcudGQuc3RhdHVzICY9ICgo
X191MzIpKH4oMSA8PCAyNCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJldDsKfQoKCgoKICAgICAgICBpbnQg
cHJvY2Vzc19pc28gKHVoY2lfdCAqcywgdXJiX3QgKnVyYiwgaW50IG1vZGUpCnsKICAgICAgICBp
bnQgaTsKICAgICAgICBpbnQgcmV0ID0gMDsKICAgICAgICB1cmJfcHJpdl90ICp1cmJfcHJpdiA9
IHVyYi0+aGNwcml2OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnAgPSB1cmJfcHJpdi0+ZGVz
Y19saXN0Lm5leHQ7CiAgICAgICAgdWhjaV9kZXNjX3QgKmRlc2MgPSAoKHVoY2lfZGVzY190ICop
KChjaGFyICopKHVyYl9wcml2LT5kZXNjX2xpc3QucHJldiktKHVuc2lnbmVkIGxvbmcpKCYoKHVo
Y2lfZGVzY190ICopMCktPmRlc2NfbGlzdCkpKTsKCiAgICAgICAgZG8ge30gd2hpbGUgKDApOwog
ICAgICAgIGlmICgoZGVzYy0+aHcudGQuc3RhdHVzICYgKChfX3UzMikoKDEgPDwgMjMpKSkpICYm
IG1vZGU9PTApCiAgICAgICAgICAgICAgICByZXR1cm4gLTE4OwoKICAgICAgICB1cmItPmVycm9y
X2NvdW50ID0gMDsKICAgICAgICB1cmItPmFjdHVhbF9sZW5ndGggPSAwOwogICAgICAgIHVyYi0+
c3RhdHVzID0gMDsKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKICAgICAgICBmb3IgKGkgPSAw
OyBwICE9ICZ1cmJfcHJpdi0+ZGVzY19saXN0OyBpKyspIHsKICAgICAgICAgICAgICAgIGRlc2Mg
PSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKHApLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rl
c2NfdCAqKTApLT5kZXNjX2xpc3QpKSk7CgoKICAgICAgICAgICAgICAgIGlmICgoZGVzYy0+aHcu
dGQuc3RhdHVzICYgKChfX3UzMikoKDEgPDwgMjMpKSkpKSB7CgogICAgICAgICAgICAgICAgICAg
ICAgICBkZXNjLT5ody50ZC5zdGF0dXMgJj0gKChfX3UzMikofigxIDw8IDIzKSkpOwogICAgICAg
ICAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldCA9IC0xODsKICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT5pc29fZnJhbWVfZGVzY1tp
XS5zdGF0dXMgPSByZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVubGlua190ZCAocywgZGVz
YywgMSk7CgogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAg
ICB1bmxpbmtfdGQgKHMsIGRlc2MsIDEpOwoKICAgICAgICAgICAgICAgIGlmICh1cmItPm51bWJl
cl9vZl9wYWNrZXRzIDw9IGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG8ge30gd2hpbGUg
KDApOwogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAtMjI7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHVyYi0+
aXNvX2ZyYW1lX2Rlc2NbaV0uYWN0dWFsX2xlbmd0aCA9ICgoKChfX3UzMikoZGVzYy0+aHcudGQu
c3RhdHVzKSkgKyAxKSAmIDB4N2ZmKTsKICAgICAgICAgICAgICAgIHVyYi0+aXNvX2ZyYW1lX2Rl
c2NbaV0uc3RhdHVzID0gdWhjaV9tYXBfc3RhdHVzICgoKChfX3UzMikoZGVzYy0+aHcudGQuc3Rh
dHVzKSkgJiAweEZFMDAwMCksICgoKCh1cmItPnBpcGUpID4+IDcpICYgMSkgXiAxKSk7CiAgICAg
ICAgICAgICAgICB1cmItPmFjdHVhbF9sZW5ndGggKz0gdXJiLT5pc29fZnJhbWVfZGVzY1tpXS5h
Y3R1YWxfbGVuZ3RoOwoKICAgICAgICAgICAgICBlcnI6CgogICAgICAgICAgICAgICAgaWYgKHVy
Yi0+aXNvX2ZyYW1lX2Rlc2NbaV0uc3RhdHVzICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgdXJiLT5lcnJvcl9jb3VudCsrOwogICAgICAgICAgICAgICAgICAgICAgICB1cmItPnN0YXR1
cyA9IHVyYi0+aXNvX2ZyYW1lX2Rlc2NbaV0uc3RhdHVzOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKCiAgICAgICAgICAgICAgICBsaXN0X2RlbCAo
cCk7CiAgICAgICAgICAgICAgICBwID0gcC0+bmV4dDsKICAgICAgICAgICAgICAgIGRlbGV0ZV9k
ZXNjIChzLCBkZXNjKTsKICAgICAgICB9CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKICAgICAg
ICByZXR1cm4gcmV0Owp9CgoKICAgICAgICBpbnQgcHJvY2Vzc191cmIgKHVoY2lfdCAqcywgc3Ry
dWN0IGxpc3RfaGVhZCAqcCkKewogICAgICAgIGludCByZXQgPSAwOwogICAgICAgIHVyYl90ICp1
cmI7CgogICAgICAgIHVyYj0oKHVyYl90ICopKChjaGFyICopKHApLSh1bnNpZ25lZCBsb25nKSgm
KCh1cmJfdCAqKTApLT51cmJfbGlzdCkpKTsKCgogICAgICAgIHN3aXRjaCAoKCgodXJiLT5waXBl
KSA+PiAzMCkgJiAzKSkgewogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIHJldCA9IHBy
b2Nlc3NfdHJhbnNmZXIgKHMsIHVyYiwgMSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICBjYXNlIDM6CiAgICAgICAgICAgICAgICBpZiAoIXMtPmF2b2lkX2J1bGsuY291bnRlcikKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0ID0gcHJvY2Vzc190cmFuc2ZlciAocywgdXJiLCAxKTsK
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICByZXQg
PSBwcm9jZXNzX2lzbyAocywgdXJiLCAwKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IGNhc2UgMToKICAgICAgICAgICAgICAgIHJldCA9IHByb2Nlc3NfaW50ZXJydXB0IChzLCB1cmIp
OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAodXJiLT5zdGF0
dXMgIT0gLTExNSkgewogICAgICAgICAgICAgICAgdXJiX3ByaXZfdCAqdXJiX3ByaXY7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldjsKCiAgICAgICAgICAgICAgICB1
c2JfZGV2PXVyYi0+ZGV2OwoKCiAgICAgICAgICAgICAgICBpZiAodXJiLT5iYW5kd2lkdGgpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoKHVyYi0+cGlwZSkgPj4gMzApICYgMyk9PTAp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNiX3JlbGVhc2VfYmFuZHdpZHRoX1Jm
ODA1NGY3YiAodXJiLT5kZXYsIHVyYiwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKCgoKHVyYi0+cGlwZSkgPj4gMzApICYgMyk9PTEgJiYgdXJiLT5pbnRlcnZhbCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2JfcmVsZWFzZV9iYW5kd2lkdGhfUmY4MDU0Zjdi
ICh1cmItPmRldiwgdXJiLCAwKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBk
byB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBkZXF1ZXVlX3VyYiAocywgdXJiKTsKCiAg
ICAgICAgICAgICAgICB1cmJfcHJpdiA9IHVyYi0+aGNwcml2OwoKICAgICAgICAgICAgICAgIHVo
Y2lfdXJiX2RtYV91bm1hcChzLCB1cmIsIHVyYl9wcml2KTsKCgogICAgICAgICAgICAgICAga21l
bV9jYWNoZV9mcmVlX1I4OTFmMjY4Nih1cmJfcHJpdl9rbWVtLCB1cmJfcHJpdik7CgoKCgogICAg
ICAgICAgICAgICAgaWYgKCgoKCh1cmItPnBpcGUpID4+IDMwKSAmIDMpICE9IDEpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHVyYl90ICpuZXh0X3VyYiA9IHVyYi0+bmV4dDsKICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGlzX3JpbmcgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY29udGFpbnNfa2lsbGVkID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxvb3Bf
Y291bnQ9MDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0X3VyYikgewoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAobmV4dF91cmIgIT0gKCh2b2lkICopMCkg
JiYgbmV4dF91cmIgIT0gdXJiICYmIGxvb3BfY291bnQgPCAyMDQ4KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dF91cmItPnN0YXR1cyA9PSAtMikgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluc19r
aWxsZWQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdXJiID0gbmV4dF91cmItPm5l
eHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wX2NvdW50Kys7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobG9vcF9jb3VudCA9PSAyMDQ4KQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCgiPDM+IiAidXNiLXVoY2kuYyIgIjog
IiAicHJvY2Vzc191cmI6IFRvbyBtdWNoIGxpbmtlZCBVUkJzIGluIHJpbmcgZGV0ZWN0aW9uISIg
IlxuIik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0X3VyYiA9PSB1
cmIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19yaW5nPTE7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KCgoKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRf
dXJiID0gdXJiLT5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dF91cmIgJiYg
IWNvbnRhaW5zX2tpbGxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBy
ZXRfc3VibWl0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdXJiID0gdXJi
LT5uZXh0OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wX2NvdW50PTA7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5leHRfdXJiICE9ICgodm9pZCAq
KTApICYmIG5leHRfdXJiICE9IHVyYiAmJiBsb29wX2NvdW50IDwgMjA0OCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRfdXJiLT5zdGF0dXMgIT0gLTEx
NSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG5leHRfdXJiLT5zdGF0dXMgPT0gLTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRfc3VibWl0PXVoY2lfc3VibWl0X3Vy
YihuZXh0X3VyYik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICh2b2lkKSgmcy0+dXJiX2xpc3RfbG9jayk7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0X3N1Ym1pdCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvb3BfY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5leHRfdXJiID0gbmV4dF91cmItPm5leHQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb29wX2Nv
dW50ID09IDIwNDgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlu
dGtfUjFiN2Q0MDc0KCI8Mz4iICJ1c2ItdWhjaS5jIiAiOiAiICJwcm9jZXNzX3VyYjogVG9vIG11
Y2ggbGlua2VkIFVSQnMgaW4gcmVzdWJtaXNzaW9uISIgIlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJiLT5jb21wbGV0ZV9SOTQy
NjEzYWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2FzX3VubGlua2Vk
ID0gKHVyYi0+c3RhdHVzID09IC0yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
cmItPmRldiA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
IHsgfSB3aGlsZSgwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT5jb21w
bGV0ZV9SOTQyNjEzYWQgKChzdHJ1Y3QgdXJiICopIHVyYik7CgoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNfcmluZyAmJiAhd2FzX3VubGlua2VkICYmICFjb250YWluc19r
aWxsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+ZGV2
PXVzYl9kZXY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aGNpX3N1
Ym1pdF91cmIgKHVyYik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSgmcy0+dXJiX2xpc3RfbG9jayk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHVzYl9mcmVlX2Rl
dl9SNDFiZDgwMTEgKHVzYl9kZXYpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAg
ICAgcmV0dXJuIHJldDsKfQoKICAgICAgICB2b2lkIHVoY2lfaW50ZXJydXB0IChpbnQgaXJxLCB2
b2lkICpfX3VoY2ksIHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7CiAgICAgICAgdWhjaV90ICpzID0g
X191aGNpOwogICAgICAgIHVuc2lnbmVkIGludCBpb19hZGRyID0gcy0+aW9fYWRkcjsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqcCwgKnAy
OwogICAgICAgIGludCByZXN0YXJ0cywgd29ya19kb25lOwoKCgoKCgogICAgICAgIHN0YXR1cyA9
IGludyAoaW9fYWRkciArIDIpOwoKICAgICAgICBpZiAoIXN0YXR1cykKICAgICAgICAgICAgICAg
IHJldHVybjsKCiAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKICAgICAgICBpZiAoc3RhdHVzICE9
IDEpIHsKCiAgICAgICAgICAgICAgICBpZiAoKGppZmZpZXNfUjBkYTAyZDY3IC0gcy0+bGFzdF9l
cnJvcl90aW1lID4gKDEwMCo1KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrX1Ix
YjdkNDA3NCgiPDQ+IiAidXNiLXVoY2kuYyIgIjogIiAiaW50ZXJydXB0LCBzdGF0dXMgJXgsIGZy
YW1lIyAlaSIgIlxuIiAsIHN0YXR1cywgKGludyAoKHMpLT5pb19hZGRyICsgNikpKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfZXJyb3JfdGltZSA9IGppZmZpZXNfUjBkYTAyZDY3
OwogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICBpZiAoKHN0YXR1cyYweDIwKSAm
JiAocy0+cnVubmluZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3
NCgiPDM+IiAidXNiLXVoY2kuYyIgIjogIiAiSG9zdCBjb250cm9sbGVyIGhhbHRlZCwgdHJ5aW5n
IHRvIHJlc3RhcnQuIiAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgb3V0dyAoMHgwMDAx
IHwgaW53KGlvX2FkZHIgKyAwKSwgaW9fYWRkciArIDApOwogICAgICAgICAgICAgICAgfQoKICAg
ICAgICB9CiMgMjc2NCAidXNiLXVoY2kuYyIKICAgICAgICAodm9pZCkoJnMtPnVyYl9saXN0X2xv
Y2spOwoKICAgICAgICByZXN0YXJ0cz0wOwogICAgICAgIHdvcmtfZG9uZT0wOwoKcmVzdGFydDoK
ICAgICAgICBzLT51bmxpbmtfdXJiX2RvbmU9MDsKICAgICAgICBwID0gcy0+dXJiX2xpc3QucHJl
djsKCiAgICAgICAgd2hpbGUgKHAgIT0gJnMtPnVyYl9saXN0ICYmICh3b3JrX2RvbmUgPCAxMDI0
KSkgewogICAgICAgICAgICAgICAgcDIgPSBwOwogICAgICAgICAgICAgICAgcCA9IHAtPnByZXY7
CgogICAgICAgICAgICAgICAgcHJvY2Vzc191cmIgKHMsIHAyKTsKCiAgICAgICAgICAgICAgICB3
b3JrX2RvbmUrKzsKCiAgICAgICAgICAgICAgICBpZiAocy0+dW5saW5rX3VyYl9kb25lKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHMtPnVubGlua191cmJfZG9uZT0wOwogICAgICAgICAgICAg
ICAgICAgICAgICByZXN0YXJ0cysrOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Rh
cnRzPDE2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoKGppZmZpZXNf
UjBkYTAyZDY3IC0gcy0+dGltZW91dF9jaGVjaykgPiAoMTAwLzMwKSkKICAgICAgICAgICAgICAg
IHVoY2lfY2hlY2tfdGltZW91dHMocyk7CgogICAgICAgIGNsZWFuX2Rlc2NzKHMsIDApOwogICAg
ICAgIHVoY2lfY2xlYW51cF91bmxpbmsocywgMCk7CiAgICAgICAgdWhjaV9zd2l0Y2hfdGltZXJf
aW50KHMpOwoKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CgogICAgICAgIG91dHcgKHN0YXR1cywg
aW9fYWRkciArIDIpOwoKCn0KCiAgICAgICAgdm9pZCByZXNldF9oYyAodWhjaV90ICpzKQp7CiAg
ICAgICAgdW5zaWduZWQgaW50IGlvX2FkZHIgPSBzLT5pb19hZGRyOwoKICAgICAgICBzLT5hcG1f
c3RhdGUgPSAwOwoKICAgICAgICBvdXR3ICgweDAwMDQsIGlvX2FkZHIgKyAwKTsKICAgICAgICB1
aGNpX3dhaXRfbXMgKDUwKTsKICAgICAgICBvdXR3ICgwLCBpb19hZGRyICsgMCk7CiAgICAgICAg
dWhjaV93YWl0X21zICgxMCk7Cn0KCiAgICAgICAgdm9pZCBzdGFydF9oYyAodWhjaV90ICpzKQp7
CiAgICAgICAgdW5zaWduZWQgaW50IGlvX2FkZHIgPSBzLT5pb19hZGRyOwogICAgICAgIGludCB0
aW1lb3V0ID0gMTAwMDsKCgoKCgoKCiAgICAgICAgb3V0dyAoMHgwMDAyLCBpb19hZGRyICsgMCk7
CgogICAgICAgIHdoaWxlIChpbncgKGlvX2FkZHIgKyAwKSAmIDB4MDAwMikgewogICAgICAgICAg
ICAgICAgaWYgKCEtLXRpbWVvdXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrX1Ix
YjdkNDA3NCgiPDM+IiAidXNiLXVoY2kuYyIgIjogIiAiVVNCQ01EX0hDUkVTRVQgdGltZWQgb3V0
ISIgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
fQogICAgICAgIH0KCgogICAgICAgIG91dHcgKDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4
MDAwOCwgaW9fYWRkciArIDQpOwoKCiAgICAgICAgb3V0dyAoMCwgaW9fYWRkciArIDYpOwogICAg
ICAgIG91dGwgKHMtPmZyYW1lbGlzdF9kbWEsIGlvX2FkZHIgKyA4KTsKCgogICAgICAgIG91dHcg
KDB4MDAwMSB8IDB4MDA0MCB8IDB4MDA4MCwgaW9fYWRkciArIDApOwogICAgICAgIHMtPmFwbV9z
dGF0ZSA9IDE7CiAgICAgICAgcy0+cnVubmluZyA9IDE7Cn0KCiAgICAgICAgdm9pZAp1aGNpX3Bj
aV9yZW1vdmUgKHN0cnVjdCBwY2lfZGV2ICpkZXYpCnsKICAgICAgICB1aGNpX3QgKnMgPSAodWhj
aV90KikgZGV2LT5kcml2ZXJfZGF0YTsKICAgICAgICBzdHJ1Y3QgdXNiX2RldmljZSAqcm9vdF9o
dWIgPSBzLT5idXMtPnJvb3RfaHViOwoKICAgICAgICBzLT5ydW5uaW5nID0gMDsKCiAgICAgICAg
aWYgKHJvb3RfaHViKQogICAgICAgICAgICAgICAgdXNiX2Rpc2Nvbm5lY3RfUjlhZjZjZWM5ICgm
cm9vdF9odWIpOwoKICAgICAgICByZXNldF9oYyAocyk7CiAgICAgICAgd2FpdF9tcyAoMSk7Cgog
ICAgICAgIHVoY2lfdW5saW5rX3VyYnMgKHMsIDAsIDEpOwogICAgICAgIHVoY2lfY2xlYW51cF91
bmxpbmsgKHMsIDEpOwoKICAgICAgICB1c2JfZGVyZWdpc3Rlcl9idXNfUmJjOGJmYzk2IChzLT5i
dXMpOwoKICAgICAgICBfX3JlbGVhc2VfcmVnaW9uX1JkNDk1MDFkNCgmaW9wb3J0X3Jlc291cmNl
X1I4NjVlYmNjZCwgKHMtPmlvX2FkZHIpLCAocy0+aW9fc2l6ZSkpOwogICAgICAgIGZyZWVfaXJx
X1JmMjBkYWJkOCAocy0+aXJxLCBzKTsKICAgICAgICB1c2JfZnJlZV9idXNfUjM2MzdmZGI0IChz
LT5idXMpOwogICAgICAgIGNsZWFudXBfc2tlbCAocyk7CiAgICAgICAga2ZyZWVfUjAzN2EwY2Jh
IChzKTsKfQoKICAgICAgICBpbnQgdWhjaV9zdGFydF91c2IgKHVoY2lfdCAqcykKewoKICAgICAg
ICBzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldjsKCiAgICAgICAgdXNiX2RldiA9IHVzYl9hbGxv
Y19kZXZfUjE3MTk2MWQzICgoKHZvaWQgKikwKSwgcy0+YnVzKTsKICAgICAgICBpZiAoIXVzYl9k
ZXYpCiAgICAgICAgICAgICAgICByZXR1cm4gLTE7CgogICAgICAgIHMtPmJ1cy0+cm9vdF9odWIg
PSB1c2JfZGV2OwogICAgICAgIHVzYl9jb25uZWN0X1I5Y2ZjYTQ3NyAodXNiX2Rldik7CgogICAg
ICAgIGlmICh1c2JfbmV3X2RldmljZV9SYTFjYzkxMjYgKHVzYl9kZXYpICE9IDApIHsKICAgICAg
ICAgICAgICAgIHVzYl9mcmVlX2Rldl9SNDFiZDgwMTEgKHVzYl9kZXYpOwogICAgICAgICAgICAg
ICAgcmV0dXJuIC0xOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDA7Cn0KCgogICAgICAgIGlu
dAp1aGNpX3BjaV9zdXNwZW5kIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgc3RhdGUpCnsKICAg
ICAgICByZXNldF9oYygodWhjaV90ICopIGRldi0+ZHJpdmVyX2RhdGEpOwogICAgICAgIHJldHVy
biAwOwp9CgogICAgICAgIGludAp1aGNpX3BjaV9yZXN1bWUgKHN0cnVjdCBwY2lfZGV2ICpkZXYp
CnsKICAgICAgICBzdGFydF9oYygodWhjaV90ICopIGRldi0+ZHJpdmVyX2RhdGEpOwogICAgICAg
IHJldHVybiAwOwp9CgoKICAgICAgICBpbnQgYWxsb2NfdWhjaSAoc3RydWN0IHBjaV9kZXYgKmRl
diwgaW50IGlycSwgdW5zaWduZWQgaW50IGlvX2FkZHIsIHVuc2lnbmVkIGludCBpb19zaXplKQp7
CiAgICAgICAgdWhjaV90ICpzOwogICAgICAgIHN0cnVjdCB1c2JfYnVzICpidXM7CiAgICAgICAg
Y2hhciBidWZbOF0sICpidWZwID0gYnVmOwoKCiAgICAgICAgc3ByaW50Zl9SM2MyYzVhZjUoYnVm
LCAiJWQiLCBpcnEpOwoKCgogICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjw2PiIgInVzYi11aGNp
LmMiICI6IFVTQiBVSENJIGF0IEkvTyAweCV4LCBJUlEgJXNcbiIsCiAgICAgICAgICAgICAgICBp
b19hZGRyLCBidWZwKTsKCiAgICAgICAgcyA9IGttYWxsb2NfUjkzZDRjZmU2IChzaXplb2YgKHVo
Y2lfdCksICgweDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwIHwgMHgxMDApKTsKICAgICAgICBpZiAo
IXMpCiAgICAgICAgICAgICAgICByZXR1cm4gLTE7CgogICAgICAgIChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mICh1aGNpX3QpKSkgPyBfX2Nv
bnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHMpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQg
Y2hhcikoMCkpKSwoKHNpemVvZiAodWhjaV90KSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKChz
KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YgKHVoY2lfdCkp
KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YgKHVoY2lfdCkpKSA/IF9fbWVtc2V0
X2dlbmVyaWMoKCgocykpKSwoKCgwKSkpLCgoKHNpemVvZiAodWhjaV90KSkpKSkgOiBfX21lbXNl
dF9nZW5lcmljKCgocykpLCgoMCkpLCgoc2l6ZW9mICh1aGNpX3QpKSkpKSk7CiAgICAgICAgZG8g
eyAoJnMtPmZyZWVfZGVzYyktPm5leHQgPSAoJnMtPmZyZWVfZGVzYyk7ICgmcy0+ZnJlZV9kZXNj
KS0+cHJldiA9ICgmcy0+ZnJlZV9kZXNjKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyAoJnMt
PnVyYl9saXN0KS0+bmV4dCA9ICgmcy0+dXJiX2xpc3QpOyAoJnMtPnVyYl9saXN0KS0+cHJldiA9
ICgmcy0+dXJiX2xpc3QpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7ICgmcy0+dXJiX3VubGlu
a2VkKS0+bmV4dCA9ICgmcy0+dXJiX3VubGlua2VkKTsgKCZzLT51cmJfdW5saW5rZWQpLT5wcmV2
ID0gKCZzLT51cmJfdW5saW5rZWQpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUo
MCk7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAg
ICAgICAoKCgmcy0+YXZvaWRfYnVsayktPmNvdW50ZXIpID0gKDApKTsKICAgICAgICBzLT5pcnEg
PSAtMTsKICAgICAgICBzLT5pb19hZGRyID0gaW9fYWRkcjsKICAgICAgICBzLT5pb19zaXplID0g
aW9fc2l6ZTsKICAgICAgICBzLT51aGNpX3BjaT1kZXY7CgogICAgICAgIGJ1cyA9IHVzYl9hbGxv
Y19idXNfUjczYjI4OGZhICgmdWhjaV9kZXZpY2Vfb3BlcmF0aW9ucyk7CiAgICAgICAgaWYgKCFi
dXMpIHsKICAgICAgICAgICAgICAgIGtmcmVlX1IwMzdhMGNiYSAocyk7CiAgICAgICAgICAgICAg
ICByZXR1cm4gLTE7CiAgICAgICAgfQoKICAgICAgICBzLT5idXMgPSBidXM7CiAgICAgICAgYnVz
LT5oY3ByaXYgPSBzOwoKCgoKCgoKICAgICAgICBmb3IgKHMtPm1heHBvcnRzID0gMDsgcy0+bWF4
cG9ydHMgPCAoaW9fc2l6ZSAtIDB4MTApIC8gMjsgcy0+bWF4cG9ydHMrKykgewogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IHBvcnRzdGF0dXM7CgogICAgICAgICAgICAgICAgcG9ydHN0YXR1
cyA9IGludyAoaW9fYWRkciArIDB4MTAgKyAocy0+bWF4cG9ydHMgKiAyKSk7CiAgICAgICAgICAg
ICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAgICAgICAgICAgaWYgKCEocG9ydHN0YXR1cyAm
IDB4MDA4MCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAg
ICBwcmludGtfUjFiN2Q0MDc0KCI8ND4iICJ1c2ItdWhjaS5jIiAiOiAiICJEZXRlY3RlZCAlZCBw
b3J0cyIgIlxuIiAsIHMtPm1heHBvcnRzKTsKCgoKICAgICAgICBpZiAocy0+bWF4cG9ydHMgPCAy
IHx8IHMtPm1heHBvcnRzID4gOCkgewogICAgICAgICAgICAgICAgZG8ge30gd2hpbGUgKDApOwog
ICAgICAgICAgICAgICAgcy0+bWF4cG9ydHMgPSAyOwogICAgICAgIH0KCiAgICAgICAgcy0+cmgu
bnVtcG9ydHMgPSBzLT5tYXhwb3J0czsKICAgICAgICBzLT5sb29wX3VzYWdlPTA7CiAgICAgICAg
aWYgKGluaXRfc2tlbCAocykpIHsKICAgICAgICAgICAgICAgIHVzYl9mcmVlX2J1c19SMzYzN2Zk
YjQgKGJ1cyk7CiAgICAgICAgICAgICAgICBrZnJlZV9SMDM3YTBjYmEocyk7CiAgICAgICAgICAg
ICAgICByZXR1cm4gLTE7CiAgICAgICAgfQoKICAgICAgICBfX3JlcXVlc3RfcmVnaW9uX1IxYTFh
NGYwOSgmaW9wb3J0X3Jlc291cmNlX1I4NjVlYmNjZCwgKHMtPmlvX2FkZHIpLCAoaW9fc2l6ZSks
ICgidXNiLXVoY2kiKSk7CiAgICAgICAgcmVzZXRfaGMgKHMpOwogICAgICAgIHVzYl9yZWdpc3Rl
cl9idXNfUmNiZTMxOTMzIChzLT5idXMpOwoKICAgICAgICBzdGFydF9oYyAocyk7CgogICAgICAg
IGlmIChyZXF1ZXN0X2lycV9SMGM2MGYyZTAgKGlycSwgdWhjaV9pbnRlcnJ1cHQsIDB4MDQwMDAw
MDAsICJ1c2ItdWhjaSIsIHMpKSB7CiAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8
Mz4iICJ1c2ItdWhjaS5jIiAiOiAiICJyZXF1ZXN0X2lycSAlZCBmYWlsZWQhIiAiXG4iICwgaXJx
KTsKICAgICAgICAgICAgICAgIHVzYl9mcmVlX2J1c19SMzYzN2ZkYjQgKGJ1cyk7CiAgICAgICAg
ICAgICAgICByZXNldF9oYyAocyk7CiAgICAgICAgICAgICAgICBfX3JlbGVhc2VfcmVnaW9uX1Jk
NDk1MDFkNCgmaW9wb3J0X3Jlc291cmNlX1I4NjVlYmNjZCwgKHMtPmlvX2FkZHIpLCAocy0+aW9f
c2l6ZSkpOwogICAgICAgICAgICAgICAgY2xlYW51cF9za2VsKHMpOwogICAgICAgICAgICAgICAg
a2ZyZWVfUjAzN2EwY2JhKHMpOwogICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0K
CgogICAgICAgIHBjaV93cml0ZV9jb25maWdfd29yZF9SMjBmODU4NDUgKGRldiwgMHhjMCwgMHgy
MDAwKTsKCiAgICAgICAgcy0+aXJxID0gaXJxOwoKICAgICAgICBpZih1aGNpX3N0YXJ0X3VzYiAo
cykgPCAwKSB7CiAgICAgICAgICAgICAgICB1aGNpX3BjaV9yZW1vdmUoZGV2KTsKICAgICAgICAg
ICAgICAgIHJldHVybiAtMTsKICAgICAgICB9CgoKICAgICAgICBkZXYtPmRyaXZlcl9kYXRhID0g
czsKICAgICAgICBkZXZzPXM7CgogICAgICAgIHJldHVybiAwOwp9CgogICAgICAgIGludAp1aGNp
X3BjaV9wcm9iZSAoc3RydWN0IHBjaV9kZXYgKmRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2Vf
aWQgKmlkKQp7CiAgICAgICAgaW50IGk7CgogICAgICAgIGlmIChwY2lfZW5hYmxlX2RldmljZV9S
ZDA0ZmVhMDgoZGV2KSA8IDApCiAgICAgICAgICAgICAgICByZXR1cm4gLTE5OwoKICAgICAgICBp
ZiAoIWRldi0+aXJxKSB7CiAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Mz4iICJ1
c2ItdWhjaS5jIiAiOiAiICJmb3VuZCBVSENJIGRldmljZSB3aXRoIG5vIElSUSBhc3NpZ25lZC4g
Y2hlY2sgQklPUyBzZXR0aW5ncyEiICJcbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIC0xOTsK
ICAgICAgICB9CgogICAgICAgIHBjaV9zZXRfbWFzdGVyX1IyZDA3NjBhZShkZXYpOwoKCiAgICAg
ICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykgewoKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBpb19hZGRyID0gKChkZXYpLT5yZXNvdXJjZVsoaSldLnN0YXJ0KTsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBpb19zaXplID0gKCgoKChkZXYpKS0+cmVzb3VyY2VbKChpKSldLnN0YXJ0
KSA9PSAwICYmICgoKGRldikpLT5yZXNvdXJjZVsoKGkpKV0uZW5kKSA9PSAoKChkZXYpKS0+cmVz
b3VyY2VbKChpKSldLnN0YXJ0KSkgPyAwIDogKCgoKGRldikpLT5yZXNvdXJjZVsoKGkpKV0uZW5k
KSAtICgoKGRldikpLT5yZXNvdXJjZVsoKGkpKV0uc3RhcnQpICsgMSkpOwogICAgICAgICAgICAg
ICAgaWYgKCEoKChkZXYpLT5yZXNvdXJjZVsoaSldLmZsYWdzKSAmIDB4MDAwMDAxMDApKQogICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCgogICAgICAgICAgICAgICAgaWYgKF9fY2hl
Y2tfcmVnaW9uX1JmMWQwY2RhYigmaW9wb3J0X3Jlc291cmNlX1I4NjVlYmNjZCwgKGlvX2FkZHIp
LCAoaW9fc2l6ZSkpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAg
ICAgICBwY2lfd3JpdGVfY29uZmlnX3dvcmRfUjIwZjg1ODQ1IChkZXYsIDB4YzAsIDApOwoKICAg
ICAgICAgICAgICAgIHJldHVybiBhbGxvY191aGNpKGRldiwgZGV2LT5pcnEsIGlvX2FkZHIsIGlv
X3NpemUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gLTE5Owp9CgoKCnN0YXRpYyBjb25zdCBz
dHJ1Y3QgcGNpX2RldmljZV9pZCB1aGNpX3BjaV9pZHMgW10gPSB7IHsKCgogICAgICAgIGNsYXNz
OiAoKDB4MGMwMyA8PCA4KSB8IDB4MDApLAogICAgICAgIGNsYXNzX21hc2s6IH4wLAoKCiAgICAg
ICAgdmVuZG9yOiAofjApLAogICAgICAgIGRldmljZTogKH4wKSwKICAgICAgICBzdWJ2ZW5kb3I6
ICh+MCksCiAgICAgICAgc3ViZGV2aWNlOiAofjApLAoKICAgICAgICB9LCB7IH0KfTsKCnN0YXRp
YyBjb25zdCB1bnNpZ25lZCBsb25nIF9fbW9kdWxlX3BjaV9kZXZpY2Vfc2l6ZSBfX2F0dHJpYnV0
ZV9fICgodW51c2VkKSkgPSBzaXplb2Yoc3RydWN0IHBjaV9kZXZpY2VfaWQpOyBzdGF0aWMgY29u
c3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKiBfX21vZHVsZV9wY2lfZGV2aWNlX3RhYmxlIF9fYXR0
cmlidXRlX18gKCh1bnVzZWQpKSA9IHVoY2lfcGNpX2lkczsKCnN0YXRpYyBzdHJ1Y3QgcGNpX2Ry
aXZlciB1aGNpX3BjaV9kcml2ZXIgPSB7CiAgICAgICAgbmFtZTogInVzYi11aGNpIiwKICAgICAg
ICBpZF90YWJsZTogJnVoY2lfcGNpX2lkcyBbMF0sCgogICAgICAgIHByb2JlOiB1aGNpX3BjaV9w
cm9iZSwKICAgICAgICByZW1vdmU6IHVoY2lfcGNpX3JlbW92ZSwKCgogICAgICAgIHN1c3BlbmQ6
IHVoY2lfcGNpX3N1c3BlbmQsCiAgICAgICAgcmVzdW1lOiB1aGNpX3BjaV9yZXN1bWUsCgoKfTsK
CgoKc3RhdGljIGludCB1aGNpX2hjZF9pbml0ICh2b2lkKQp7CiAgICAgICAgaW50IHJldHZhbDsK
CgogICAgICAgIHVyYl9wcml2X2ttZW0gPSBrbWVtX2NhY2hlX2NyZWF0ZV9SZDFjMGI0ZTYoInVy
Yl9wcml2Iiwgc2l6ZW9mKHVyYl9wcml2X3QpLCAwLCAweDAwMDAyMDAwVUwsICgodm9pZCAqKTAp
LCAoKHZvaWQgKikwKSk7CgogICAgICAgIGlmKCF1cmJfcHJpdl9rbWVtKSB7CiAgICAgICAgICAg
ICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Mz4iICJ1c2ItdWhjaS5jIiAiOiAiICJrbWVtX2NhY2hl
X2NyZWF0ZSBmb3IgdXJiX3ByaXZfdCBmYWlsZWQgKG91dCBvZiBtZW1vcnkpIiAiXG4iKTsKICAg
ICAgICAgICAgICAgIHJldHVybiAtMTI7CiAgICAgICAgfQoKICAgICAgICBwcmludGtfUjFiN2Q0
MDc0KCI8Nj4iICJ1c2ItdWhjaS5jIiAiOiAiICIkUmV2aXNpb246IDEuMjY4ICQgdGltZSAiICIy
MjoyODoyNyIgIiAiICJTZXAgMjcgMjAwMSIgIlxuIik7CgoKICAgICAgICBwcmludGtfUjFiN2Q0
MDc0KCI8Nj4iICJ1c2ItdWhjaS5jIiAiOiAiICJIaWdoIGJhbmR3aWR0aCBtb2RlIGVuYWJsZWQi
ICJcbiIpOwoKCiAgICAgICAgcmV0dmFsID0gcGNpX21vZHVsZV9pbml0ICgmdWhjaV9wY2lfZHJp
dmVyKTsKCgogICAgICAgIGlmIChyZXR2YWwgPCAwICkgewogICAgICAgICAgICAgICAgaWYgKGtt
ZW1fY2FjaGVfZGVzdHJveV9SZGY4M2M2OTIodXJiX3ByaXZfa21lbSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjwzPiIgInVzYi11aGNpLmMiICI6ICIgInVyYl9w
cml2X2ttZW0gcmVtYWluZWQiICJcbiIpOwogICAgICAgIH0KCgogICAgICAgIHByaW50a19SMWI3
ZDQwNzQoIjw2PiIgInVzYi11aGNpLmMiICI6ICIgInYxLjI2OCIgIjoiICJVU0IgVW5pdmVyc2Fs
IEhvc3QgQ29udHJvbGxlciBJbnRlcmZhY2UgZHJpdmVyIiAiXG4iKTsKCiAgICAgICAgcmV0dXJu
IHJldHZhbDsKfQoKc3RhdGljIHZvaWQgdWhjaV9oY2RfY2xlYW51cCAodm9pZCkKewogICAgICAg
IHBjaV91bnJlZ2lzdGVyX2RyaXZlcl9SODM2ZWEyMTEgKCZ1aGNpX3BjaV9kcml2ZXIpOwoKCiAg
ICAgICAgaWYoa21lbV9jYWNoZV9kZXN0cm95X1JkZjgzYzY5Mih1cmJfcHJpdl9rbWVtKSkKICAg
ICAgICAgICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjwzPiIgInVzYi11aGNpLmMiICI6ICIgInVy
Yl9wcml2X2ttZW0gcmVtYWluZWQiICJcbiIpOwoKfQoKaW50IGluaXRfbW9kdWxlKHZvaWQpIF9f
YXR0cmlidXRlX18oKGFsaWFzKCJ1aGNpX2hjZF9pbml0IikpKTsgc3RhdGljIGlubGluZSBfX2lu
aXRfbW9kdWxlX2Z1bmNfdCBfX2luaXRfbW9kdWxlX2lubGluZSh2b2lkKSB7IHJldHVybiB1aGNp
X2hjZF9pbml0OyB9Owp2b2lkIGNsZWFudXBfbW9kdWxlKHZvaWQpIF9fYXR0cmlidXRlX18oKGFs
aWFzKCJ1aGNpX2hjZF9jbGVhbnVwIikpKTsgc3RhdGljIGlubGluZSBfX2NsZWFudXBfbW9kdWxl
X2Z1bmNfdCBfX2NsZWFudXBfbW9kdWxlX2lubGluZSh2b2lkKSB7IHJldHVybiB1aGNpX2hjZF9j
bGVhbnVwOyB9OwoKCmNvbnN0IGNoYXIgX19tb2R1bGVfYXV0aG9yW10gX19hdHRyaWJ1dGVfXygo
c2VjdGlvbigiLm1vZGluZm8iKSkpID0gImF1dGhvcj0iICJHZW9yZyBBY2hlciwgRGV0aSBGbGll
Z2wsIFRob21hcyBTYWlsZXIsIFJvbWFuIFdlaXNzZ2FlcmJlciI7CmNvbnN0IGNoYXIgX19tb2R1
bGVfZGVzY3JpcHRpb25bXSBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIubW9kaW5mbyIpKSkgPSAi
ZGVzY3JpcHRpb249IiAiVVNCIFVuaXZlcnNhbCBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIGRy
aXZlciI7Cg==


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

* Re: optimization/4413: GCC 3.0.2 prerelease internal error when compiling linux-2.4.10
@ 2001-10-04 17:33 rodrigc
  0 siblings, 0 replies; 2+ messages in thread
From: rodrigc @ 2001-10-04 17:33 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, thomr9am

Synopsis: GCC 3.0.2 prerelease internal error when compiling linux-2.4.10

State-Changed-From-To: open->closed
State-Changed-By: rodrigc
State-Changed-When: Thu Oct  4 17:33:22 2001
State-Changed-Why:
    Fixed in gcc version 3.0.2 20011004 (prerelease)

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4413&database=gcc


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

end of thread, other threads:[~2001-10-04 17:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-09-27 13:56 optimization/4413: GCC 3.0.2 prerelease internal error when compiling linux-2.4.10 thomr9am
2001-10-04 17:33 rodrigc

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