c/1504: Segmentation fault
zome@iname.com
zome@iname.com
Sat Dec 23 19:56:00 GMT 2000
>Number: 1504
>Category: c
>Synopsis: Segmentation fault
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Dec 23 19:56:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator: zome@iname.com
>Release: gcc version 2.96 20000731 (Red Hat Linux 7.0)
>Organization:
>Environment:
RedHat 7.0. Out of the box
>Description:
gcc -fPIC -I../../Pax -I/usr/include/python1.5 -I/usr/local/include -g -O2 -I/usr/include/python1.5 -I/usr/include/python1.5 -DHAVE_CONFIG_H -c ./curveobject.c
./curveobject.c: In function `add_bezier_rect':
./curveobject.c:781: Internal error: Segmentation fault.
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
make: *** [curveobject.o] Error 1
>How-To-Repeat:
Try to compile Sketch, the vector drawing program.
http://sketch.sourceforge.net/
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="curveobject.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="curveobject.i"
IyAxICIuL2N1cnZlb2JqZWN0LmMiCiMgMjIgIi4vY3VydmVvYmplY3QuYyIKIyAyOCAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMg
MzExICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDI4ICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKCgoKCgoKCgoKCgoKCiMgNjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyA1NCAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwpleHRlcm4gZG91YmxlIGFjb3MgKCBkb3Vi
bGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3MgKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3Vi
bGUgYXNpbiAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fYXNpbiAoIGRvdWJsZSBfX3gp
OwoKZXh0ZXJuIGRvdWJsZSBhdGFuICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFu
ICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGF0YW4yICggZG91YmxlIF9feSwgZG91Ymxl
IF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFuMiAoIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpOwoK
CmV4dGVybiBkb3VibGUgY29zICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19jb3MgKCBk
b3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgc2luICggZG91YmxlIF9feCk7IGV4dGVybiBkb3Vi
bGUgX19zaW4gKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgdGFuICggZG91YmxlIF9feCk7
IGV4dGVybiBkb3VibGUgX190YW4gKCBkb3VibGUgX194KTsKCiMgNzggIi91c3IvaW5jbHVkZS9i
aXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgY29zaCAoIGRvdWJsZSBfX3gpOyBleHRl
cm4gZG91YmxlIF9fY29zaCAoIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGRvdWJsZSBzaW5oICggZG91
YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zaW5oICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91
YmxlIHRhbmggKCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX3RhbmggKCBkb3VibGUgX194
KTsKCgoKZXh0ZXJuIGRvdWJsZSBhY29zaCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9f
YWNvc2ggKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgYXNpbmggKCBkb3VibGUgX194KTsg
ZXh0ZXJuIGRvdWJsZSBfX2FzaW5oICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGF0YW5o
ICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoIGRvdWJsZSBfX3gpOwoKCgoK
CmV4dGVybiBkb3VibGUgZXhwICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19leHAgKCBk
b3VibGUgX194KTsKCiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRl
cm4gZG91YmxlIGZyZXhwICggZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KTsgZXh0ZXJuIGRv
dWJsZSBfX2ZyZXhwICggZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KTsKCgpleHRlcm4gZG91
YmxlIGxkZXhwICggZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpOyBleHRlcm4gZG91YmxlIF9f
bGRleHAgKCBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cg
KCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2xvZyAoIGRvdWJsZSBfX3gpOwoKCmV4dGVy
biBkb3VibGUgbG9nMTAgKCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzEwICggZG91
YmxlIF9feCk7CgoKZXh0ZXJuIGRvdWJsZSBtb2RmICggZG91YmxlIF9feCwgZG91YmxlICpfX2lw
dHIpOyBleHRlcm4gZG91YmxlIF9fbW9kZiAoIGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKTsK
CgoKZXh0ZXJuIGRvdWJsZSBleHBtMSAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fZXhw
bTEgKCBkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGxvZzFwICggZG91YmxlIF9feCk7IGV4
dGVybiBkb3VibGUgX19sb2cxcCAoIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBkb3VibGUgbG9nYiAo
IGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fbG9nYiAoIGRvdWJsZSBfX3gpOwojIDE0MyAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBwb3cgKCBkb3Vi
bGUgX194LCBkb3VibGUgX195KTsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAoIGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpOwoKCmV4dGVybiBkb3VibGUgc3FydCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91
YmxlIF9fc3FydCAoIGRvdWJsZSBfX3gpOwoKCgpleHRlcm4gZG91YmxlIGh5cG90ICggZG91Ymxl
IF9feCwgZG91YmxlIF9feSk7IGV4dGVybiBkb3VibGUgX19oeXBvdCAoIGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjYnJ0ICggZG91YmxlIF9feCk7IGV4dGVybiBk
b3VibGUgX19jYnJ0ICggZG91YmxlIF9feCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoIGRv
dWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fY2VpbCAoIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBk
b3VibGUgZmFicyAoIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGRvdWJsZSBfX2ZhYnMgKCBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGRvdWJsZSBmbG9vciAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9f
Zmxvb3IgKCBkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGZtb2QgKCBkb3VibGUgX194LCBk
b3VibGUgX195KTsgZXh0ZXJuIGRvdWJsZSBfX2Ztb2QgKCBkb3VibGUgX194LCBkb3VibGUgX195
KTsKCgoKCmV4dGVybiBpbnQgX19pc2luZiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlIChkb3VibGUgX192YWx1ZSkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlIF9f
dmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZSAo
ZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVy
biBkb3VibGUgaW5mbmFuIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OyBleHRlcm4gZG91YmxlIF9faW5mbmFuIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZHJlbSAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
OyBleHRlcm4gZG91YmxlIF9fZHJlbSAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOwoKCgpleHRl
cm4gZG91YmxlIHNpZ25pZmljYW5kICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zaWdu
aWZpY2FuZCAoIGRvdWJsZSBfX3gpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbiAoIGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRv
dWJsZSBfX2NvcHlzaWduICggZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0
ZXJuIGludCBfX2lzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgpleHRlcm4gaW50IGlzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgajAgKCBkb3VibGUpOyBleHRlcm4gZG91Ymxl
IF9fajAgKCBkb3VibGUpOwpleHRlcm4gZG91YmxlIGoxICggZG91YmxlKTsgZXh0ZXJuIGRvdWJs
ZSBfX2oxICggZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpOyBleHRlcm4g
ZG91YmxlIF9fam4gKGludCwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5MCAoIGRvdWJsZSk7IGV4
dGVybiBkb3VibGUgX195MCAoIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgeTEgKCBkb3VibGUpOyBl
eHRlcm4gZG91YmxlIF9feTEgKCBkb3VibGUpOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJs
ZSk7IGV4dGVybiBkb3VibGUgX195biAoaW50LCBkb3VibGUpOwoKCgoKCmV4dGVybiBkb3VibGUg
ZXJmICggZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZiAoIGRvdWJsZSk7CmV4dGVybiBkb3Vi
bGUgZXJmYyAoIGRvdWJsZSk7IGV4dGVybiBkb3VibGUgX19lcmZjICggZG91YmxlKTsKZXh0ZXJu
IGRvdWJsZSBsZ2FtbWEgKCBkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hICggZG91Ymxl
KTsKIyAyNDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUg
Z2FtbWEgKCBkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fZ2FtbWEgKCBkb3VibGUpOwoKCgoKCgpl
eHRlcm4gZG91YmxlIGxnYW1tYV9yICggZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApOyBleHRlcm4g
ZG91YmxlIF9fbGdhbW1hX3IgKCBkb3VibGUsIGludCAqX19zaWduZ2FtcCk7CgoKCgoKCmV4dGVy
biBkb3VibGUgcmludCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fcmludCAoIGRvdWJs
ZSBfX3gpOwoKCmV4dGVybiBkb3VibGUgbmV4dGFmdGVyICggZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dGFmdGVy
ICggZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgoKCmV4dGVybiBkb3VibGUgcmVtYWluZGVyICggZG91YmxlIF9feCwgZG91YmxlIF9feSk7IGV4
dGVybiBkb3VibGUgX19yZW1haW5kZXIgKCBkb3VibGUgX194LCBkb3VibGUgX195KTsKCgoKZXh0
ZXJuIGRvdWJsZSBzY2FsYiAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX24pOyBleHRlcm4gZG91Ymxl
IF9fc2NhbGIgKCBkb3VibGUgX194LCBkb3VibGUgX19uKTsKCgoKCmV4dGVybiBkb3VibGUgc2Nh
bGJuICggZG91YmxlIF9feCwgaW50IF9fbik7IGV4dGVybiBkb3VibGUgX19zY2FsYm4gKCBkb3Vi
bGUgX194LCBpbnQgX19uKTsKCgoKZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlIF9feCk7IGV4dGVy
biBpbnQgX19pbG9nYiAoZG91YmxlIF9feCk7CiMgNjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIg
MwojIDgzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21h
dGhjYWxscy5oIiAxIDMKZXh0ZXJuIGZsb2F0IGFjb3NmICggZmxvYXQgX194KTsgZXh0ZXJuIGZs
b2F0IF9fYWNvc2YgKCBmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGFzaW5mICggZmxvYXQgX194
KTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGF0YW5m
ICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXRhbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJu
IGZsb2F0IGF0YW4yZiAoIGZsb2F0IF9feSwgZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXRh
bjJmICggZmxvYXQgX195LCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBjb3NmICggZmxvYXQg
X194KTsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoIGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgc2lu
ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NpbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJu
IGZsb2F0IHRhbmYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX190YW5mICggZmxvYXQgX194
KTsKCiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBj
b3NoZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2Nvc2hmICggZmxvYXQgX194KTsKCmV4
dGVybiBmbG9hdCBzaW5oZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NpbmhmICggZmxv
YXQgX194KTsKCmV4dGVybiBmbG9hdCB0YW5oZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBf
X3RhbmhmICggZmxvYXQgX194KTsKCgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoIGZsb2F0IF9feCk7
IGV4dGVybiBmbG9hdCBfX2Fjb3NoZiAoIGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgYXNpbmhm
ICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmICggZmxvYXQgX194KTsKCmV4dGVy
biBmbG9hdCBhdGFuaGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19hdGFuaGYgKCBmbG9h
dCBfX3gpOwoKCgoKCmV4dGVybiBmbG9hdCBleHBmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0
IF9fZXhwZiAoIGZsb2F0IF9feCk7CgojIDEwNiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxz
LmgiIDMKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoIGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50KTsg
ZXh0ZXJuIGZsb2F0IF9fZnJleHBmICggZmxvYXQgX194LCBpbnQgKl9fZXhwb25lbnQpOwoKCmV4
dGVybiBmbG9hdCBsZGV4cGYgKCBmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KTsgZXh0ZXJuIGZs
b2F0IF9fbGRleHBmICggZmxvYXQgX194LCBpbnQgX19leHBvbmVudCk7CgoKZXh0ZXJuIGZsb2F0
IGxvZ2YgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19sb2dmICggZmxvYXQgX194KTsKCgpl
eHRlcm4gZmxvYXQgbG9nMTBmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fbG9nMTBmICgg
ZmxvYXQgX194KTsKCgpleHRlcm4gZmxvYXQgbW9kZmYgKCBmbG9hdCBfX3gsIGZsb2F0ICpfX2lw
dHIpOyBleHRlcm4gZmxvYXQgX19tb2RmZiAoIGZsb2F0IF9feCwgZmxvYXQgKl9faXB0cik7CgoK
CmV4dGVybiBmbG9hdCBleHBtMWYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19leHBtMWYg
KCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBsb2cxcGYgKCBmbG9hdCBfX3gpOyBleHRlcm4g
ZmxvYXQgX19sb2cxcGYgKCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBsb2diZiAoIGZsb2F0
IF9feCk7IGV4dGVybiBmbG9hdCBfX2xvZ2JmICggZmxvYXQgX194KTsKIyAxNDMgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBwb3dmICggZmxvYXQgX194LCBm
bG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19wb3dmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOwoK
CmV4dGVybiBmbG9hdCBzcXJ0ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NxcnRmICgg
ZmxvYXQgX194KTsKCgoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoIGZsb2F0IF9feCwgZmxvYXQgX195
KTsgZXh0ZXJuIGZsb2F0IF9faHlwb3RmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOwoKCgoKZXh0
ZXJuIGZsb2F0IGNicnRmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fY2JydGYgKCBmbG9h
dCBfX3gpOwoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxv
YXQgX19jZWlsZiAoIGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGZhYnNmICggZmxvYXQgX194
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZhYnNmICggZmxv
YXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZsb29y
ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2Zsb29yZiAoIGZsb2F0IF9feCk7CgoKZXh0
ZXJuIGZsb2F0IGZtb2RmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19m
bW9kZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsKCgoKCmV4dGVybiBpbnQgX19pc2luZmYgKGZs
b2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9f
ZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK
ZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVybiBmbG9hdCBpbmZuYW5mIChpbnQgX19lcnJvcikg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19pbmZuYW5mIChpbnQg
X19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBkcmVt
ZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsgZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKCBmbG9hdCBf
X3gsIGZsb2F0IF9feSk7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKCBmbG9hdCBfX3gp
OyBleHRlcm4gZmxvYXQgX19zaWduaWZpY2FuZGYgKCBmbG9hdCBfX3gpOwoKCgoKZXh0ZXJuIGZs
b2F0IGNvcHlzaWduZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoIGZsb2F0IF9feCwgZmxvYXQgX195
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMjE3ICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoY2FsbHMuaCIgMwpleHRlcm4gaW50IF9faXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVl
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGowZiAoIGZsb2F0
KTsgZXh0ZXJuIGZsb2F0IF9fajBmICggZmxvYXQpOwpleHRlcm4gZmxvYXQgajFmICggZmxvYXQp
OyBleHRlcm4gZmxvYXQgX19qMWYgKCBmbG9hdCk7CmV4dGVybiBmbG9hdCBqbmYgKGludCwgZmxv
YXQpOyBleHRlcm4gZmxvYXQgX19qbmYgKGludCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgeTBmICgg
ZmxvYXQpOyBleHRlcm4gZmxvYXQgX195MGYgKCBmbG9hdCk7CmV4dGVybiBmbG9hdCB5MWYgKCBm
bG9hdCk7IGV4dGVybiBmbG9hdCBfX3kxZiAoIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHluZiAoaW50
LCBmbG9hdCk7IGV4dGVybiBmbG9hdCBfX3luZiAoaW50LCBmbG9hdCk7CgoKCgoKZXh0ZXJuIGZs
b2F0IGVyZmYgKCBmbG9hdCk7IGV4dGVybiBmbG9hdCBfX2VyZmYgKCBmbG9hdCk7CmV4dGVybiBm
bG9hdCBlcmZjZiAoIGZsb2F0KTsgZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKCBmbG9hdCk7CmV4dGVy
biBmbG9hdCBsZ2FtbWFmICggZmxvYXQpOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmICggZmxvYXQp
OwojIDI0NiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGdh
bW1hZiAoIGZsb2F0KTsgZXh0ZXJuIGZsb2F0IF9fZ2FtbWFmICggZmxvYXQpOwoKCgoKCgpleHRl
cm4gZmxvYXQgbGdhbW1hZl9yICggZmxvYXQsIGludCAqX19zaWduZ2FtcCk7IGV4dGVybiBmbG9h
dCBfX2xnYW1tYWZfciAoIGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApOwoKCgoKCgpleHRlcm4gZmxv
YXQgcmludGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19yaW50ZiAoIGZsb2F0IF9feCk7
CgoKZXh0ZXJuIGZsb2F0IG5leHRhZnRlcmYgKCBmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uZXh0YWZ0ZXJmICggZmxvYXQg
X194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4g
ZmxvYXQgcmVtYWluZGVyZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsgZXh0ZXJuIGZsb2F0IF9f
cmVtYWluZGVyZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsKCgoKZXh0ZXJuIGZsb2F0IHNjYWxi
ZiAoIGZsb2F0IF9feCwgZmxvYXQgX19uKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmICggZmxvYXQg
X194LCBmbG9hdCBfX24pOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibmYgKCBmbG9hdCBfX3gsIGlu
dCBfX24pOyBleHRlcm4gZmxvYXQgX19zY2FsYm5mICggZmxvYXQgX194LCBpbnQgX19uKTsKCgoK
ZXh0ZXJuIGludCBpbG9nYmYgKGZsb2F0IF9feCk7IGV4dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0
IF9feCk7CiMgODMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDEwMCAiL3Vzci9pbmNsdWRl
L21hdGguaCIgMwojIDU0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCmV4dGVy
biBsb25nIGRvdWJsZSBhY29zbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2Fjb3NsICggbG9uZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAo
IGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5sICggbG9uZyBkb3Vi
bGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFubCAoIGxvbmcgZG91YmxlIF9feCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sICggbG9uZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25n
IGRvdWJsZSBhdGFuMmwgKCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2F0YW4ybCAoIGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194
KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2Nvc2wgKCBsb25nIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNpbmwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sICggbG9u
ZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5sICggbG9uZyBkb3VibGUgX194
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFubCAoIGxvbmcgZG91YmxlIF9feCk7CgojIDc4ICIv
dXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgY29zaGwg
KCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NobCAoIGxvbmcgZG91
YmxlIF9feCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2luaGwgKCBsb25nIGRvdWJsZSBfX3gpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19zaW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9u
ZyBkb3VibGUgdGFuaGwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX190
YW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwgKCBs
b25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zaGwgKCBsb25nIGRvdWJs
ZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5obCAoIGxvbmcgZG91YmxlIF9feCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2FzaW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9u
ZyBkb3VibGUgYXRhbmhsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
YXRhbmhsICggbG9uZyBkb3VibGUgX194KTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbCAo
IGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cGwgKCBsb25nIGRvdWJs
ZSBfX3gpOwoKIyAxMDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBs
b25nIGRvdWJsZSBmcmV4cGwgKCBsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2ZyZXhwbCAoIGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9u
ZW50KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsICggbG9uZyBkb3VibGUgX194LCBpbnQg
X19leHBvbmVudCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xkZXhwbCAoIGxvbmcgZG91YmxlIF9f
eCwgaW50IF9fZXhwb25lbnQpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2dsICggbG9uZyBkb3Vi
bGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAoIGxvbmcgZG91YmxlIF9feCk7CgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2xvZzEwbCAoIGxvbmcgZG91YmxlIF9feCk7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IG1vZGZsICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbW9kZmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIp
OwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbTFsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fZXhwbTFsICggbG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBk
b3VibGUgbG9nMXBsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9n
MXBsICggbG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKCBsb25n
IGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dibCAoIGxvbmcgZG91YmxlIF9f
eCk7CiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBk
b3VibGUgcG93bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fcG93bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsKCgpl
eHRlcm4gbG9uZyBkb3VibGUgc3FydGwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19zcXJ0bCAoIGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBo
eXBvdGwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2h5cG90bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsKCgoKCmV4
dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2NicnRsICggbG9uZyBkb3VibGUgX194KTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IGNlaWxsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2VpbGwgKCBs
b25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmYWJzbCAoIGxvbmcgZG91Ymxl
IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19m
YWJzbCAoIGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBmbG9vcmwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19mbG9vcmwgKCBsb25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBm
bW9kbCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fZm1vZGwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7CgoKCgpleHRl
cm4gaW50IF9faXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmZsIChsb25nIGRv
dWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBm
aW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgaW5mbmFubCAoaW50IF9fZXJyb3IpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9faW5mbmFubCAoaW50IF9f
ZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUg
ZHJlbWwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2RyZW1sICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpOwoKCgpleHRl
cm4gbG9uZyBkb3VibGUgc2lnbmlmaWNhbmRsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsICggbG9uZyBkb3VibGUgX194KTsKCgoKCmV4dGVybiBs
b25nIGRvdWJsZSBjb3B5c2lnbmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3B5c2ln
bmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJu
IGludCBfX2lzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBqMGwgKCBsb25nIGRv
dWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2owbCAoIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxv
bmcgZG91YmxlIGoxbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajFsICgg
bG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgam5sIChpbnQsIGxvbmcgZG91YmxlKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fam5sIChpbnQsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcg
ZG91YmxlIHkwbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsICggbG9u
ZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgeTFsICggbG9uZyBkb3VibGUpOyBleHRlcm4g
bG9uZyBkb3VibGUgX195MWwgKCBsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSB5bmwg
KGludCwgbG9uZyBkb3VibGUpOyBleHRlcm4gbG9uZyBkb3VibGUgX195bmwgKGludCwgbG9uZyBk
b3VibGUpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBlcmZsICggbG9uZyBkb3VibGUpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19lcmZsICggbG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUg
ZXJmY2wgKCBsb25nIGRvdWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmNsICggbG9uZyBk
b3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fbGdhbW1hbCAoIGxvbmcgZG91YmxlKTsKIyAyNDYgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBnYW1tYWwgKCBsb25nIGRv
dWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2dhbW1hbCAoIGxvbmcgZG91YmxlKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWxfciAoIGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdh
bXApOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZ2FtbWFsX3IgKCBsb25nIGRvdWJsZSwgaW50ICpf
X3NpZ25nYW1wKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJpbnRsICggbG9uZyBkb3VibGUg
X194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmludGwgKCBsb25nIGRvdWJsZSBfX3gpOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBuZXh0YWZ0ZXJsICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
bmV4dGFmdGVybCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJlbWFpbmRlcmwgKCBs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Jl
bWFpbmRlcmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7CgoKCmV4dGVybiBs
b25nIGRvdWJsZSBzY2FsYmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbik7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X19uKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYm5sICggbG9uZyBkb3VibGUgX194LCBp
bnQgX19uKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJubCAoIGxvbmcgZG91YmxlIF9feCwg
aW50IF9fbik7CgoKCmV4dGVybiBpbnQgaWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4g
aW50IF9faWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpOwojIDEwMCAiL3Vzci9pbmNsdWRlL21hdGgu
aCIgMiAzCiMgMTEzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBpbnQgc2lnbmdhbTsK
IyAyMzYgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKdHlwZWRlZiBlbnVtCnsKICBfSUVFRV8gPSAt
MSwKICBfU1ZJRF8sCiAgX1hPUEVOXywKICBfUE9TSVhfLAogIF9JU09DXwp9IF9MSUJfVkVSU0lP
Tl9UWVBFOwoKCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsKIyAyNjEg
Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDMKc3RydWN0IGV4Y2VwdGlvbgoKICB7CiAgICBpbnQgdHlw
ZTsKICAgIGNoYXIgKm5hbWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAg
ZG91YmxlIHJldHZhbDsKICB9OwoKCgoKZXh0ZXJuIGludCBtYXRoZXJyIChzdHJ1Y3QgZXhjZXB0
aW9uICpfX2V4Yyk7CiMgMjkwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgNzkgIi91c3IvbGli
L2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2Zsb2F0LmgiIDEgMwp1bmlv
biBfX2NvbnZlcnRfbG9uZ19kb3VibGUgewogIHVuc2lnbmVkIF9fY29udmVydF9sb25nX2RvdWJs
ZV9pWzRdOwogIGxvbmcgZG91YmxlIF9fY29udmVydF9sb25nX2RvdWJsZV9kOwp9OwojIDI5MCAi
L3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgMzQ5ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMg
MjgxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDEgMwpleHRlcm4gX19pbmxpbmUg
ZG91YmxlIF9fc2duIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3Vi
bGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0x
LjApOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0KTsgZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IF9fc2duZiAoZmxvYXQgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDog
KF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBf
X3NnbmwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2dubCAo
bG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/
IDEuMCA6IC0xLjApOyB9CgoKCiMgNDY2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0
YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYXRhbjJmIChmbG9hdCBfX3ks
IGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6
ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUg
YXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192
YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsg
fQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwg
bG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChf
X3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJs
ZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5c
dCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAo
X195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxv
YXQgZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5c
dCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAo
X195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5c
dCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkg
OiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQoj
IDQ4MSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBk
b3VibGUgc3FydCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJl
dHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgc3FydGYgKGZsb2F0IF9feCkg
eyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDog
Ij10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChf
X3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1
bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgoKZXh0ZXJuIF9faW5saW5lIGRv
dWJsZSBmYWJzIChkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyAoX194KTsgfQpl
eHRlcm4gX19pbmxpbmUgZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgeyByZXR1cm4gX19idWlsdGlu
X2ZhYnNmIChfX3gpOyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmYWJzbCAobG9uZyBk
b3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2wgKF9feCk7IH0KZXh0ZXJuIF9faW5s
aW5lIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19idWls
dGluX2ZhYnNsIChfX3gpOyB9CiMgNTA3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGRv
dWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIg
KF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0
ZXJuIF9faW5saW5lIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19y
ZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3Vs
dCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lu
bGluZSBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10
IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQoK
ZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlKTsgZXh0ZXJu
IF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlIF9feCkgeyBfX2V4dGVu
c2lvbl9fIHVuaW9uIHsgbG9uZyBkb3VibGUgX194bGQ7IHVuc2lnbmVkIGludCBfX3hpWzNdOyB9
IF9fbiA9IHsgX194bGQ6IF9feCB9OyBfX24uX194aVsyXSA9IChfX24uX194aVsyXSAmIDB4ODAw
MCkgfCAweDNmZmY7IF9fbi5fX3hpWzFdID0gMHg4MDAwMDAwMDsgX19uLl9feGlbMF0gPSAwOyBy
ZXR1cm4gX19uLl9feGxkOyB9CiMgNTE4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDMKIyA1MzMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxp
bmUgZG91YmxlIGZsb29yIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1t
IiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3Zv
bGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAo
ImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxl
ICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9f
aW5saW5lIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5z
aWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDog
Ij1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBf
X3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGls
ZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJu
IF9faW5saW5lIGxvbmcgZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7
IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwg
MHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsg
X19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkp
OyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9f
dmFsdWU7IH0KIyA1NDQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4g
X19pbmxpbmUgZG91YmxlIGNlaWwgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIg
OiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxl
IHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUw
IiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19h
c20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192
b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9f
Y3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYp
IHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXAp
KTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJu
IF9fdmFsdWU7IH0KIyA1NTUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwoKCgoK
CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpsZGV4cCAoZG91YmxlIF9feCwgaW50IF9feSkKewog
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2Fs
ZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgobG9uZyBkb3VibGUpIF9feSkp
OyByZXR1cm4gX192YWx1ZTsKfQoKCgojIDU4MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGlu
ZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICog
MS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNl
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEz
NTYyMzczMDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9f
dmFsdWUpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQx
NDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19h
c20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQi
IChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfQojIDU5
NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3Vi
bGUgYXNpbmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJz
bCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kg
KyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRlcm4gX19pbmxpbmUg
ZmxvYXQgYXNpbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19m
YWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBf
X3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRlcm4gX19pbmxp
bmUgbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChf
X3NxcnRsIChfX3kgKiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsg
fQoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgeyByZXR1cm4g
bG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9
IGV4dGVybiBfX2lubGluZSBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgeyByZXR1cm4gbG9nbCAo
X194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4g
bG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9
CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAoLShf
X3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfSBleHRlcm4gX19pbmxp
bmUgZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0g
X19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAg
KyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGF0
YW5obCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFi
c2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195
KSkgKiBfX3NnbjFsIChfX3gpOyB9CgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGh5cG90IChk
b3VibGUgX194LCBkb3VibGUgX195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kg
KiBfX3kpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBoeXBvdGYgKGZsb2F0IF9feCwgZmxvYXQg
X195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9CgpleHRlcm4g
X19pbmxpbmUgZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194
KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2diZiAoZmxvYXQg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5r
KSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4g
X19pbmxpbmUgbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUp
IDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0KCgoKCgoKCiMgNjkzICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBkcmVtIChkb3Vi
bGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBp
bnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3Rz
dwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChf
X2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1
ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7
IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0
IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9f
eCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJl
Z2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAi
anAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCks
ICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQojIDcwNiAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKX19maW5pdGUgKGRvdWJs
ZSBfX3gpCnsKICByZXR1cm4gKF9fZXh0ZW5zaW9uX18KICAgICAgICAgICgoKCgodW5pb24geyBk
b3VibGUgX19kOyBpbnQgX19pWzJdOyB9KSB7X19kOiBfX3h9KS5fX2lbMV0KICAgICAgICAgICAg
IHwgMHg4MDBmZmZmZnUpICsgMSkgPj4gMzEpKTsKfQoKCiMgMzQ5ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAyIDMKIyA0MDkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAyMiAiLi9jdXJ2ZW9iamVj
dC5jIiAyCgoKIyAzOSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMQoKIyA1OCAi
L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIKIyAyOSAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDEgMwoKCgoKCiMgMTk5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIu
OTYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyAz
NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiMgNDMgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKdHlwZWRlZiBfX2J1
aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyAzOSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDIgMwoKCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwoKCnR5cGVkZWYgdW5z
aWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9u
ZzsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFk
X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7
CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGlu
dCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVk
ZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7
CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90Owpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoK
dHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7
CnR5cGVkZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRl
ZiBfX3VfbG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191
X2ludCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRf
dCBfX2xvZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0
eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsK
dHlwZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFs
WzJdOwogIH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIg
Kl9fY2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYg
bG9uZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRl
ZiBpbnQgX19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgaW50IF9fZmRfbWFzazsKCgojIDEwOSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMwp0eXBlZGVmIHN0cnVjdAogIHsKCgoKCgoKICAgIF9fZmRfbWFzayBfX2Zkc19iaXRz
WzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwoKCiAgfSBfX2ZkX3NldDsKCgp0eXBl
ZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90
OwoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBf
X2Jsa2NudF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9s
b25nIF9fZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5
cGVkZWYgX191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNu
dDY0X3Q7CgoKdHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90
IF9fb2ZmNjRfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgoKIyAyNCAiL3Vzci9pbmNsdWRl
L2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5o
IiAxIDMKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgc2NoZWRfcHJpb3JpdHk7CiAg
fTsKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBf
cHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7
Cgp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rl
c2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19z
Y2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9f
aW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQg
X19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6
ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVh
ZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhy
ZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRf
Y29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5
cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0
aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRf
ZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7
CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50
IHB0aHJlYWRfb25jZV90OwoKCiMgMTQwICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMu
aCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKCiMgMTY2ICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyA0MSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoK
CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKCiMgNTggIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMKIyAxNSAiL3Vzci9pbmNs
dWRlL19HX2NvbmZpZy5oIiAxIDMKIyAyODcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQt
bGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90
OwojIDMxMiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUv
c3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1
ZGUvX0dfY29uZmlnLmgiIDIgMwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyA0
NiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDYyICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg
Mwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3Qg
X193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMg
MjUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19v
ZmZfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBz
dHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zw
b3M2NF90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAyOSAiL3Vzci9pbmNs
dWRlL2djb252LmgiIDEgMwojIDQ2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgMjkgIi91
c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCgoKCgoKCmVudW0KewogIF9fR0NPTlZfT0sgPSAwLAog
IF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05WX05PTUVNLAoKICBfX0dD
T05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAgX19HQ09OVl9JTExFR0FM
X0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19HQ09OVl9JTExFR0FMX0RF
U0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgplbnVtCnsKICBfX0dDT05W
X0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JTID0gMHgwMDAyCn07CgoK
CnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9f
Z2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRl
ZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwgc3RydWN0IF9fZ2Nv
bnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6ZV90ICosIGludCwgaW50KTsKCgp0eXBlZGVm
IGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwp0eXBlZGVm
IHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwoKCgp0eXBl
ZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICos
IHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNp
Z25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1
bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRl
eHRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
KiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfcXVlcnlf
ZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqKiosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252
X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRlZiB2b2lkICgq
X19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252X3RyYW5zX2Rh
dGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252X3RyYW5zX2Nv
bnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19lbmRfZmN0IF9f
dHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0
YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3QgX19nY29udl9s
b2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsK
CiAgaW50IF9fY291bnRlcjsKCiAgX19jb25zdCBjaGFyICpfX2Zyb21fbmFtZTsKICBfX2NvbnN0
IGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0X2Zj
dCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgoKCiAgaW50IF9fbWlu
X25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQgX19taW5fbmVlZGVk
X3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0ZWZ1bDsKCiAgdm9pZCAq
X19kYXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewogIHVuc2lnbmVkIGNoYXIg
Kl9fb3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoKCgogIGludCBfX2ZsYWdz
OwoKCgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQgX19pbnRlcm5hbF91c2U7
CgogIF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwoKCgogIHN0
cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5cGVkZWYgc3RydWN0IF9f
Z2NvbnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2djb252X3N0ZXAgKl9f
c3RlcHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhWzBd
Owp9ICpfX2djb252X3Q7CgojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBl
ZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAg
c3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9f
ZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2lu
dDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0
eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fU0lfXykpKTsKCiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MiAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMKIyAxNTcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBf
SU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CgoKCgoKCgoKCnR5cGVkZWYgdm9pZCBfSU9fbG9j
a190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7
CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTAgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRf
b2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9u
b2NvbnYKfTsKCiMgMjYyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX0ZJTEUg
ewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVh
ZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBj
aGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1
Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNo
YXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9f
bWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmls
ZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVk
IHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIg
X3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwNiAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQgKl9fcGFkMTsKICB2
b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAo
aW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklM
RSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJ
TEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18y
XzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsK
IyAzNDUgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVh
ZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpOwoKCgoK
CgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29raWUsIF9fY29u
c3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19v
ZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9p
ZCAqX19jb29raWUpOwoKCiMgMzk3ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50
IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKTsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAq
KTsKZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpOwpleHRlcm4gd2ludF90
IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKik7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19G
SUxFICopOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpOwoK
IyA0MjcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19G
SUxFICpfX2ZwKTsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnAp
OwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCk7CmV4dGVybiBpbnQgX0lPX2Zl
cnJvciAoX0lPX0ZJTEUgKl9fZnApOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9f
RklMRSAqX19mcCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKik7
CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKik7CmV4dGVybiBpbnQgX0lP
X2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKik7CgojIDQ1MyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBj
aGFyICogX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qs
IGludCAqX19yZXN0cmljdCk7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19y
ZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAg
IF9fZ251Y192YV9saXN0KTsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwg
aW50LCBfX3NzaXplX3QpOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9p
ZCAqLCBzaXplX3QpOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwg
X19vZmY2NF90LCBpbnQsIGludCk7CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19G
SUxFICosIF9fb2ZmNjRfdCwgaW50KTsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVh
IChfSU9fRklMRSAqKTsKCiMgNTggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKdHlwZWRl
ZiBfR19mcG9zX3QgZnBvc190OwojIDExMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKZXh0
ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJy
OwoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKTsKCmV4
dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3
KTsKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKTsKIyAxNDIgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcyk7CgoKCgpleHRlcm4gY2hh
ciAqdG1wbmFtX3IgKGNoYXIgKl9fcyk7CiMgMTU5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpf
X3BmeCkKIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9z
ZSAoRklMRSAqX19zdHJlYW0pOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKTsK
CgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKIyAxODIgIi91
c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbW9kZXMpOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKTsKIyAyMTIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxF
ICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpOwojIDIzNSAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKTsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAg
ICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKTsKCgoKCmV4dGVybiB2b2lkIHNl
dGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplKTsKCgpleHRlcm4gdm9pZCBz
ZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSk7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAq
X19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKTsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKOwoKZXh0
ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19h
cmcpOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90
IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLikKIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAz
LCA0KSkpOwoKZXh0ZXJuIGludCBfX3ZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNp
emVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKIF9fYXR0cmlidXRlX18gKChf
X2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcp
CiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKIyAzMDkg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLik7CgojIDMzNSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGlu
dCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFt
KTsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3Vu
bG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9p
ZCk7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CgoKCgpl
eHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgcHV0
YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9f
Yyk7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0
cmVhbSk7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3Ry
ZWFtKTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKTsKCgoKCgpleHRlcm4g
aW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKTsKCgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJ
TEUgKl9fc3RyZWFtKTsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmljdCBf
X3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCjsKCiMgNDAxICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKTsKCgojIDQyNSAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKOwoKCgoKCgoKCmV4dGVy
biBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jl
c3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCmV4dGVybiBzaXplX3QgZndyaXRlIChf
X2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcyk7CgoKCmV4dGVybiBz
aXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3Np
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0pOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2
b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSk7CgoKCgpl
eHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3do
ZW5jZSk7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKTsKCmV4dGVybiB2
b2lkIHJld2luZCAoRklMRSAqX19zdHJlYW0pOwoKCgoKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2Zm
X3Q7CiMgNDk1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRwb3MgKEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKOwoKZXh0
ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKTsK
IyA1MzEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxF
ICpfX3N0cmVhbSk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKTsKCmV4dGVybiBp
bnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9j
a2VkIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwoKCgoK
ZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcyk7CgoKCgpleHRlcm4gaW50IHN5
c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CiMgNTYy
ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJl
YW0pOwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKCgoK
CgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBj
aGFyICpfX21vZGVzKTsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pOwoKCgoK
CmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpOwojIDYwOSAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSk7CgoKCmV4dGVy
biBpbnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSk7CgoKZXh0ZXJuIHZvaWQgZnVubG9j
a2ZpbGUgKEZJTEUgKl9fc3RyZWFtKTsKIyA2MzEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMg
MzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwpleHRlcm4gX19pbmxpbmUgaW50CnZw
cmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19h
cmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJnKTsKfQoKCmV4dGVy
biBfX2lubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4p
Owp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsK
ICByZXR1cm4gKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8g
X191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIr
Kyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICBy
ZXR1cm4gKChzdGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBf
X3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRy
KyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1
cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmcHV0
Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJl
YW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVy
ZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikg
KCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9f
aW5saW5lIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJl
dHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRl
X2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1
bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0K
CgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1
cm4gKCgoc3Rkb3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkg
PyBfX292ZXJmbG93IChzdGRvdXQsICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQg
Y2hhcikgKCooc3Rkb3V0KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQojIDExMCAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CmZlb2ZfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgx
MCkgIT0gMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAq
X19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsK
fQojIDYzMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCiMgNTggIi91c3IvaW5jbHVkZS9w
eXRob24xLjUvUHl0aG9uLmgiIDIKCiMgMjggIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCgoK
CgoKCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X24pOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAq
X19zcmMsIHNpemVfdCBfX24pCjsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19y
ZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAg
ICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCjsKCgoKCmV4dGVybiB2b2lkICptZW1z
ZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCBtZW1jbXAg
KF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2
b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCiMgNzcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyY3B5IChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQo7
CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p
OwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCjsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3Qg
Y2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFy
ICpfX3MyLCBzaXplX3QgX19uKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pOwoKIyAxMjAgIi91c3IvaW5jbHVkZS9zdHJpbmcu
aCIgMwpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4g
Y2hhciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKIyAxNjcgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2Nv
bnN0IGNoYXIgKl9fcmVqZWN0KQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0
KQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19j
b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFj
aywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
IyAxODkgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RydG9rIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCjsKCgoK
ZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKTsKCmV4dGVybiBj
aGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
c2F2ZV9wdHIpOwojIDIyMCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qg
c3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7Cgoj
IDIzMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50
IF9fZXJybnVtKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBj
aGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKTsKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGlu
dCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxlbik7CgoKCgpleHRlcm4gdm9p
ZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pOwoKCgpleHRlcm4gdm9pZCBiY29weSAo
X19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKTsKCgpleHRlcm4g
dm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKTsKCgpleHRlcm4gaW50IGJjbXAgKF9f
Y29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIg
KnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCgpleHRlcm4gaW50IF9fZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoY29u
c3QpKTsKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
CgojIDI3NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBpbnQgX19zdHJjYXNlY21w
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwg
X19jb25zdCBjaGFyICpfX3MyKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGludCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIs
IHNpemVfdCBfX24pCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyAzMDAgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBf
X3N0cmluZ3AsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2RlbGltKTsKIyAzNjMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgojIDUzICIvdXNyL2lu
Y2x1ZGUvYml0cy9zdHJpbmcyLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEg
MwojIDUzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwojIDM3MSAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiB2b2lkICpfX3Jhd21lbWNociAoY29uc3Qgdm9p
ZCAqX19zLCBpbnQgX19jKTsKIyAzOTUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjcHlfc21hbGwgKGNoYXIgKiwgX191aW50MTZfdCwg
X191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQz
Ml90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RyY3B5
X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8y
LCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50MzJfdCBfX3NyYzBf
NCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikK
ewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAg
ICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAqX191ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRj
aCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+
X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0g
X19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3UtPl9fdXNpID0gX19z
cmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAg
ICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgX191LT5f
X3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkg
PSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7
CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBf
X3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAgYnJlYWs7CiAgICBj
YXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAg
ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3Vj
ID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3Jj
MF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAg
X191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIGJyZWFrOwogICAgfQogIHJldHVybiBfX2Rlc3Q7
Cn0KIyA4NzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg
c2l6ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpOwpl
eHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNo
YXIgX19yZWplY3QpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChf
X3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsr
X19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9f
c3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxp
bmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3Qx
LCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hp
bGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQog
ICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1bHQ7CiAg
cmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMyAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9f
aW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVq
ZWN0MSwgY2hhciBfX3JlamVjdDIsCiAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDMpCnsKICBy
ZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdc
MCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0
XSAhPSBfX3JlamVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICArK19fcmVz
dWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDkyNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAzCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19y
ZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsrX19y
ZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ry
c3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNp
emVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFy
IF9fYWNjZXB0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChf
X3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MikK
ICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6
ZV90IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNj
ZXB0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAg
cmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0g
X19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCiAgICAgICAgIHx8IF9fc1tf
X3Jlc3VsdF0gPT0gX19hY2NlcHQzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7
Cn0KIyA5ODIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg
Y2hhciAqX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVy
biBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBf
X2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9f
cyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4g
Kl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFy
IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19h
Y2NlcHQyLCBjaGFyIF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJr
X2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyLAog
ICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQzKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYg
Kl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIKICAgICAgICAgJiYgKl9fcyAh
PSBfX2FjY2VwdDMpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICop
MCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KIyAxMDQzICIvdXNyL2luY2x1ZGUvYml0cy9z
dHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9f
cywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApCnsKICBj
aGFyICpfX3Jlc3VsdDsKICBpZiAoX19zID09ICgodm9pZCAqKTApKQogICAgX19zID0gKl9fbmV4
dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXApCiAgICArK19fczsKICBpZiAoKl9fcyA9PSAnXDAn
KQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBlbHNlCiAgICB7CiAgICAgIF9fcmVzdWx0
ID0gX19zOwogICAgICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19zZXApCiAgICAg
ICAgKytfX3M7CiAgICAgIGlmICgqX19zID09ICdcMCcpCiAgICAgICAgKl9fbmV4dHAgPSBfX3M7
CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAqX19zID0gJ1wwJzsKICAgICAgICAgICpf
X25leHRwID0gX19zICsgMTsKICAgICAgICB9CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMg
MTA5MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFy
ICpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGlu
ZSBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdp
c3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTAp
KQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVq
ZWN0KQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRl
bnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoX19yZWplY3QpID09
ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9fcmVqZWN0KSA6IHN0cmNo
ciAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikwKSkKICAgICAgKigqX19zKSsr
ID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwogIHJldHVybiBfX3Jl
dHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBj
aGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsK
ICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9p
ZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09
IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QyKQogICAgKigqX19zKSsrID0gJ1ww
JzsKICBlbHNlCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAg
ICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYgKl9fY3AgIT0gX19yZWplY3QxICYmICpfX2NwICE9
IF9fcmVqZWN0MikKICAgICAgICArK19fY3A7CiAgICAgIGlmICgqX19jcCAhPSAnXDAnKQogICAg
ICAgIHsKICAgICAgICAgICpfX3MgPSBfX2NwOwogICAgICAgICAgKigqX19zKSsrID0gJ1wwJzsK
ICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICAqX19zID0gKCh2b2lkICopMCk7CiAgICB9CiAg
cmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfM2MgKGNo
YXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBjaGFy
ICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0
MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAg
aWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikw
KTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3Qy
CiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDMpCiAgICAqKCpfX3MpKysgPSAnXDAnOwog
IGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3
aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9fY3AgIT0gX19y
ZWplY3QyCiAgICAgICAgICAgICAmJiAqX19jcCAhPSBfX3JlamVjdDMpCiAgICAgICAgKytfX2Nw
OwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAgICAqX19zID0gX19j
cDsKICAgICAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAg
ICAgKl9fcyA9ICgodm9pZCAqKTApOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJu
IF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19y
ZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9f
Y29uc3QgY2hhciAqX19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7
CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICgodm9pZCAqKTApOwog
IGlmICgoKl9fcyA9IF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
X19yZWplY3QpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKF9fcmVqZWN0KSA9PSAxKSA/
ICgoX19hMCA9ICgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzBdLCBfX2EwID09ICdcMCcp
ID8gKCh2b2lkICopMCkgOiAoKF9fYTEgPSAoKF9fY29uc3QgY2hhciAqKSAoX19yZWplY3QpKVsx
XSwgX19hMSA9PSAnXDAnKSA/IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
X19hMCkgJiYgKF9fYTApID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWws
IF9fYTApIDogc3RyY2hyIChfX3JldHZhbCwgX19hMCkpKSA6ICgoX19hMiA9ICgoX19jb25zdCBj
aGFyICopIChfX3JlamVjdCkpWzJdLCBfX2EyID09ICdcMCcpID8gX19zdHJwYnJrX2MyIChfX3Jl
dHZhbCwgX19hMCwgX19hMSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbM10gPT0g
J1wwJyA/IF9fc3RycGJya19jMyAoX19yZXR2YWwsIF9fYTAsIF9fYTEsIF9fYTIpIDogc3RycGJy
ayAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSkgOiBzdHJwYnJrIChfX3JldHZhbCwgX19yZWplY3Qp
KTsgfSkpICE9ICgodm9pZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19y
ZXR2YWw7Cn0KIyAxMTg3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKIyAzNCAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKCiMgNTI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFs
bG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19z
aXplKQogX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyA4NDYgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwojIDExODcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCgoKCgpl
eHRlcm4gY2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcpIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7CiMgMTIxMCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAz
CmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBf
X24pCiBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDM2NiAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAyIDMKCgoKIyA1OSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyAzMiAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwoKCgoKCiMgMjYgIi91c3IvaW5jbHVkZS9i
aXRzL2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMKIyAy
NiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRz
L2Vycm5vLmgiIDMKZXh0ZXJuIGludCBlcnJubzsKCgpleHRlcm4gaW50ICpfX2Vycm5vX2xvY2F0
aW9uICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgojIDM3ICIvdXNyL2luY2x1
ZGUvZXJybm8uaCIgMiAzCiMgNTkgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzCiMgNjAgIi91c3Iv
aW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCgojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDEgMwoKIyA5NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYgc3RydWN0CiAg
ewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0
CiAgewogICAgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgaW50IHJlbTsKICB9IGxkaXZfdDsKIyAx
MzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21i
X2N1cl9tYXggKHZvaWQpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19u
cHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgYXRvaSAoX19jb25z
dCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcg
aW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBj
aGFyICpfX25wdHIpCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGRvdWJs
ZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cik7CgojIDE2MyAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzCmV4dGVybiBsb25nIGludCBzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19iYXNlKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCjsKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKOwoKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25n
IGxvbmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQg
X19iYXNlKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3Ry
dG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSkKOwojIDI1MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBkb3VibGUgX19z
dHJ0b2RfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQg
X19ncm91cCkKOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQo7CmV4dGVybiBsb25nIGRvdWJsZSBf
X3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19ncm91cCk7
CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IF9fYmFzZSwgaW50IF9fZ3JvdXApOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0
b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YmFzZSwgaW50IF9fZ3JvdXApOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGlu
dCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YmFzZSwgaW50IF9fZ3JvdXApOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25n
IGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCjsKIyAyOTQgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsK
ICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVy
biBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICBy
ZXR1cm4gX19zdHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0K
ZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBp
bnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0
ciwgX19iYXNlLCAwKTsKfQoKIyAzMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpfX2V4dGVu
c2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg
aW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg
bG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVy
biBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoK
Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5l
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jh
c2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i
YXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpf
X25wdHIpCnsKICByZXR1cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSk7
Cn0KZXh0ZXJuIF9faW5saW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJl
dHVybiAoaW50KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0K
ZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAg
cmV0dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQoKCl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3Qg
Y2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopICgodm9p
ZCAqKTApLCAxMCk7Cn0KIyAzODUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hh
ciAqbDY0YSAobG9uZyBpbnQgX19uKTsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoX19jb25zdCBj
aGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgojIDI4ICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDEgMwoKCgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVm
IF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xv
bmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVf
cXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IGxvZmZf
dDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwojIDU4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoK
CgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190
OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwojIDk2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoK
CnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90
Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMg
MTI3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyA3MSAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMSAzCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKIyA4MiAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKCiMgOTMgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKCiMgMTI3ICIvdXNyL2luY2x1ZGUv
c3lzL3R5cGVzLmgiIDIgMwojIDE0MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCgoKCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50
IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxODQgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1FJX18pKSk7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0hJX18pKSk7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1NJX18pKSk7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0RJX18pKSk7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVu
c2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7
Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3Jk
X18pKSk7CgoKCgojIDIxMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMzIgIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwoKCgojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdz
ZXQuaCIgMSAzCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QK
ICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNp
Z25lZCBsb25nIGludCkpKV07CiAgfSBfX3NpZ3NldF90OwoKIyAzNSAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMiAzCgoKCgojIDEwNSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCnN0cnVj
dCB0aW1lc3BlYwogIHsKICAgIGxvbmcgaW50IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7
CiAgfTsKCiMgMzkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgoKCgoKc3RydWN0
IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKCnR5cGVkZWYgX19mZF9zZXQg
ZmRfc2V0OwoKCiMgNzQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKZXh0ZXJuIGludCBz
ZWxlY3QgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAg
ICAgICAgICAgICAgIF9fZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAg
ICAgICAgICBfX2ZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCk7CgojIDkyICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMgMjEwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
MwoKCgojIDIyNCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19ibGtjbnRf
dCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRl
ZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMwojIDM5MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKZXh0ZXJuIGludDMy
X3QgcmFuZG9tICh2b2lkKTsKCgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19z
ZWVkKTsKCgoKCgpleHRlcm4gY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBj
aGFyICpfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxl
bik7CgoKCmV4dGVybiBjaGFyICpzZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1Zik7CgoKCgoKCgpz
dHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0
cjsKICAgIGludDMyX3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2Rl
ZzsKICAgIGludCByYW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBp
bnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7CgpleHRlcm4gaW50
IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1
Zik7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpf
X3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0
YXRlbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVz
dHJpY3QgX19idWYpOwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9f
c3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmKTsKCgoKCgpleHRlcm4gaW50IHJhbmQgKHZvaWQpOwoKZXh0ZXJuIHZvaWQg
c3JhbmQgKHVuc2lnbmVkIGludCBfX3NlZWQpOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWdu
ZWQgaW50ICpfX3NlZWQpOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKTsKZXh0
ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSk7CgoKZXh0
ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpOwpleHRlcm4gbG9uZyBpbnQgbnJhbmQ0OCAodW5z
aWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pOwoKCmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2
b2lkKTsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp
WzNdKTsKCgpleHRlcm4gdm9pZCBzcmFuZDQ4IChsb25nIGludCBfX3NlZWR2YWwpOwpleHRlcm4g
dW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZb
M10pOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSk7
CgoKc3RydWN0IGRyYW5kNDhfZGF0YQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB4WzNdOwog
ICAgdW5zaWduZWQgc2hvcnQgaW50IGFbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsKICAg
IHVuc2lnbmVkIHNob3J0IGludCBvbGRfeFszXTsKICAgIGludCBpbml0OwogIH07CgoKCmV4dGVy
biBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVy
LAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKZXh0
ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCk7CgoKZXh0
ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7
CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7
CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl
c3VsdCk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz
XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl
c3VsdCk7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCjsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVk
IHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fYnVmZmVyKTsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9y
dCBpbnQgX19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2Rh
dGEgKl9fYnVmZmVyKTsKIyA1MzUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9p
ZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChf
X21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cik7CgoKCmV4dGVybiB2
b2lkIGNmcmVlICh2b2lkICpfX3B0cik7CgoKCgojIDI2ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgi
IDEgMwoKCgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSk7CgoKCgoKIyA1
NDYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChz
aXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDU2MCAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAo
dm9pZCkpOwoKCgoKZXh0ZXJuIGludCBfX29uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19z
dGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCjsKZXh0ZXJuIGludCBvbl9leGl0ICh2
b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQo7
CgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3JldHVybl9fKSk7CgojIDU4OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFy
ICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJl
X2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpOwoKCgoKCmV4dGVybiBpbnQgcHV0ZW52IChj
aGFyICpfX3N0cmluZyk7CgoKCgoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19u
YW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCjsKCgpleHRlcm4gdm9p
ZCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpOwoKCgoKCgpleHRlcm4gaW50IGNsZWFy
ZW52ICh2b2lkKTsKIyA2MjQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAq
bWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKTsKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFy
ICpfX3RlbXBsYXRlKTsKIyA2NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hh
ciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSk7CgoKCgpleHRlcm4gaW50IHN5c3RlbSAoX19j
b25zdCBjaGFyICpfX2NvbW1hbmQpOwoKCiMgNjYyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCk7CgoKCgoK
CnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9fY29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZv
aWQgKik7CgoKCgoKCgoKZXh0ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXks
IF9fY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbm1l
bWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gdm9p
ZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAg
ICAgICAgICAgICAgICAgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gaW50IGFi
cyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQg
bGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNzAwICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGlu
dCBfX2Rlbm9tKQogX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxk
aXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CiMgNzE4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIg
KmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2Rl
Y3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbik7CgoKCgpleHRl
cm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKTsK
CgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFy
ICpfX2J1Zik7CgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGlu
dCAqX19yZXN0cmljdCBfX3NpZ24pOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9f
dmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbik7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9u
ZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1Zik7CgoKCgoKZXh0ZXJu
IGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hh
ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbik7CmV4
dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24s
IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4p
OwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
CiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0
cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwg
c2l6ZV90IF9fbGVuKTsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQs
IGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0
cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKTsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25z
dCBjaGFyICpfX3MsIHNpemVfdCBfX24pOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpf
X3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywgd2No
YXJfdCBfX3djaGFyKTsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0
cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3MsIHNpemVfdCBfX24pOwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19y
ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCjsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAo
X19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKTsKIyA4NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MwpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0p
OwoKCgoKCiMgNjIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCgoKCgoKCgoK
IyAxMTQgIi91c3IvaW5jbHVkZS9weXRob24xLjUvb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qg
X29iamVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90
eXBlOwp9IFB5T2JqZWN0OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7
IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9iX3NpemU7Cn0gUHlWYXJPYmplY3Q7
CiMgMTM5ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamVjdC5oIgp0eXBlZGVmIFB5T2JqZWN0
ICogKCp1bmFyeWZ1bmMpIChQeU9iamVjdCAqKTsKdHlwZWRlZiBQeU9iamVjdCAqICgqYmluYXJ5
ZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIFB5T2JqZWN0ICogKCp0ZXJu
YXJ5ZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIGlu
dCAoKmlucXVpcnkpIChQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpjb2VyY2lvbikgKFB5T2Jq
ZWN0ICoqLCBQeU9iamVjdCAqKik7CnR5cGVkZWYgUHlPYmplY3QgKigqaW50YXJnZnVuYykgKFB5
T2JqZWN0ICosIGludCk7CnR5cGVkZWYgUHlPYmplY3QgKigqaW50aW50YXJnZnVuYykgKFB5T2Jq
ZWN0ICosIGludCwgaW50KTsKdHlwZWRlZiBpbnQoKmludG9iamFyZ3Byb2MpIChQeU9iamVjdCAq
LCBpbnQsIFB5T2JqZWN0ICopOwp0eXBlZGVmIGludCgqaW50aW50b2JqYXJncHJvYykgKFB5T2Jq
ZWN0ICosIGludCwgaW50LCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQoKm9iam9iamFyZ3Byb2Mp
IChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpnZXRy
ZWFkYnVmZmVycHJvYykgKFB5T2JqZWN0ICosIGludCwgdm9pZCAqKik7CnR5cGVkZWYgaW50ICgq
Z2V0d3JpdGVidWZmZXJwcm9jKSAoUHlPYmplY3QgKiwgaW50LCB2b2lkICoqKTsKdHlwZWRlZiBp
bnQgKCpnZXRzZWdjb3VudHByb2MpIChQeU9iamVjdCAqLCBpbnQgKik7CnR5cGVkZWYgaW50ICgq
Z2V0Y2hhcmJ1ZmZlcnByb2MpIChQeU9iamVjdCAqLCBpbnQsIGNvbnN0IGNoYXIgKiopOwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGJpbmFyeWZ1bmMgbmJfYWRkOwogICAgICAgIGJpbmFyeWZ1
bmMgbmJfc3VidHJhY3Q7CiAgICAgICAgYmluYXJ5ZnVuYyBuYl9tdWx0aXBseTsKICAgICAgICBi
aW5hcnlmdW5jIG5iX2RpdmlkZTsKICAgICAgICBiaW5hcnlmdW5jIG5iX3JlbWFpbmRlcjsKICAg
ICAgICBiaW5hcnlmdW5jIG5iX2Rpdm1vZDsKICAgICAgICB0ZXJuYXJ5ZnVuYyBuYl9wb3dlcjsK
ICAgICAgICB1bmFyeWZ1bmMgbmJfbmVnYXRpdmU7CiAgICAgICAgdW5hcnlmdW5jIG5iX3Bvc2l0
aXZlOwogICAgICAgIHVuYXJ5ZnVuYyBuYl9hYnNvbHV0ZTsKICAgICAgICBpbnF1aXJ5IG5iX25v
bnplcm87CiAgICAgICAgdW5hcnlmdW5jIG5iX2ludmVydDsKICAgICAgICBiaW5hcnlmdW5jIG5i
X2xzaGlmdDsKICAgICAgICBiaW5hcnlmdW5jIG5iX3JzaGlmdDsKICAgICAgICBiaW5hcnlmdW5j
IG5iX2FuZDsKICAgICAgICBiaW5hcnlmdW5jIG5iX3hvcjsKICAgICAgICBiaW5hcnlmdW5jIG5i
X29yOwogICAgICAgIGNvZXJjaW9uIG5iX2NvZXJjZTsKICAgICAgICB1bmFyeWZ1bmMgbmJfaW50
OwogICAgICAgIHVuYXJ5ZnVuYyBuYl9sb25nOwogICAgICAgIHVuYXJ5ZnVuYyBuYl9mbG9hdDsK
ICAgICAgICB1bmFyeWZ1bmMgbmJfb2N0OwogICAgICAgIHVuYXJ5ZnVuYyBuYl9oZXg7Cn0gUHlO
dW1iZXJNZXRob2RzOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlucXVpcnkgc3FfbGVuZ3Ro
OwogICAgICAgIGJpbmFyeWZ1bmMgc3FfY29uY2F0OwogICAgICAgIGludGFyZ2Z1bmMgc3FfcmVw
ZWF0OwogICAgICAgIGludGFyZ2Z1bmMgc3FfaXRlbTsKICAgICAgICBpbnRpbnRhcmdmdW5jIHNx
X3NsaWNlOwogICAgICAgIGludG9iamFyZ3Byb2Mgc3FfYXNzX2l0ZW07CiAgICAgICAgaW50aW50
b2JqYXJncHJvYyBzcV9hc3Nfc2xpY2U7Cn0gUHlTZXF1ZW5jZU1ldGhvZHM7Cgp0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgaW5xdWlyeSBtcF9sZW5ndGg7CiAgICAgICAgYmluYXJ5ZnVuYyBtcF9z
dWJzY3JpcHQ7CiAgICAgICAgb2Jqb2JqYXJncHJvYyBtcF9hc3Nfc3Vic2NyaXB0Owp9IFB5TWFw
cGluZ01ldGhvZHM7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgZ2V0cmVhZGJ1ZmZlcnByb2Mg
YmZfZ2V0cmVhZGJ1ZmZlcjsKICAgICAgICBnZXR3cml0ZWJ1ZmZlcnByb2MgYmZfZ2V0d3JpdGVi
dWZmZXI7CiAgICAgICAgZ2V0c2VnY291bnRwcm9jIGJmX2dldHNlZ2NvdW50OwogICAgICAgIGdl
dGNoYXJidWZmZXJwcm9jIGJmX2dldGNoYXJidWZmZXI7Cn0gUHlCdWZmZXJQcm9jczsKCgp0eXBl
ZGVmIHZvaWQgKCpkZXN0cnVjdG9yKSAoUHlPYmplY3QgKik7CnR5cGVkZWYgaW50ICgqcHJpbnRm
dW5jKSAoUHlPYmplY3QgKiwgRklMRSAqLCBpbnQpOwp0eXBlZGVmIFB5T2JqZWN0ICooKmdldGF0
dHJmdW5jKSAoUHlPYmplY3QgKiwgY2hhciAqKTsKdHlwZWRlZiBQeU9iamVjdCAqKCpnZXRhdHRy
b2Z1bmMpIChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpzZXRhdHRyZnVu
YykgKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKik7CnR5cGVkZWYgaW50ICgqc2V0YXR0
cm9mdW5jKSAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CnR5cGVkZWYgaW50
ICgqY21wZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIFB5T2JqZWN0ICoo
KnJlcHJmdW5jKSAoUHlPYmplY3QgKik7CnR5cGVkZWYgbG9uZyAoKmhhc2hmdW5jKSAoUHlPYmpl
Y3QgKik7Cgp0eXBlZGVmIHN0cnVjdCBfdHlwZW9iamVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNu
dDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOyBpbnQgb2Jfc2l6ZTsKICAgICAgICBjaGFy
ICp0cF9uYW1lOwogICAgICAgIGludCB0cF9iYXNpY3NpemUsIHRwX2l0ZW1zaXplOwoKCgogICAg
ICAgIGRlc3RydWN0b3IgdHBfZGVhbGxvYzsKICAgICAgICBwcmludGZ1bmMgdHBfcHJpbnQ7CiAg
ICAgICAgZ2V0YXR0cmZ1bmMgdHBfZ2V0YXR0cjsKICAgICAgICBzZXRhdHRyZnVuYyB0cF9zZXRh
dHRyOwogICAgICAgIGNtcGZ1bmMgdHBfY29tcGFyZTsKICAgICAgICByZXByZnVuYyB0cF9yZXBy
OwoKCgogICAgICAgIFB5TnVtYmVyTWV0aG9kcyAqdHBfYXNfbnVtYmVyOwogICAgICAgIFB5U2Vx
dWVuY2VNZXRob2RzICp0cF9hc19zZXF1ZW5jZTsKICAgICAgICBQeU1hcHBpbmdNZXRob2RzICp0
cF9hc19tYXBwaW5nOwoKCgogICAgICAgIGhhc2hmdW5jIHRwX2hhc2g7CiAgICAgICAgdGVybmFy
eWZ1bmMgdHBfY2FsbDsKICAgICAgICByZXByZnVuYyB0cF9zdHI7CiAgICAgICAgZ2V0YXR0cm9m
dW5jIHRwX2dldGF0dHJvOwogICAgICAgIHNldGF0dHJvZnVuYyB0cF9zZXRhdHRybzsKCgogICAg
ICAgIFB5QnVmZmVyUHJvY3MgKnRwX2FzX2J1ZmZlcjsKCgogICAgICAgIGxvbmcgdHBfZmxhZ3M7
CgogICAgICAgIGNoYXIgKnRwX2RvYzsKCgogICAgICAgIGxvbmcgdHBfeHh4NTsKICAgICAgICBs
b25nIHRwX3h4eDY7CiAgICAgICAgbG9uZyB0cF94eHg3OwogICAgICAgIGxvbmcgdHBfeHh4ODsK
CgoKCgoKCgp9IFB5VHlwZU9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUeXBlX1R5cGU7
CgoKCgpleHRlcm4gaW50IFB5T2JqZWN0X1ByaW50IChQeU9iamVjdCAqLCBGSUxFICosIGludCk7
CmV4dGVybiBQeU9iamVjdCAqIFB5T2JqZWN0X1JlcHIgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlP
YmplY3QgKiBQeU9iamVjdF9TdHIgKFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5T2JqZWN0X0Nv
bXBhcmUgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeU9iamVj
dF9HZXRBdHRyU3RyaW5nIChQeU9iamVjdCAqLCBjaGFyICopOwpleHRlcm4gaW50IFB5T2JqZWN0
X1NldEF0dHJTdHJpbmcgKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKik7CmV4dGVybiBp
bnQgUHlPYmplY3RfSGFzQXR0clN0cmluZyAoUHlPYmplY3QgKiwgY2hhciAqKTsKZXh0ZXJuIFB5
T2JqZWN0ICogUHlPYmplY3RfR2V0QXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVy
biBpbnQgUHlPYmplY3RfU2V0QXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3Qg
Kik7CmV4dGVybiBpbnQgUHlPYmplY3RfSGFzQXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7
CmV4dGVybiBsb25nIFB5T2JqZWN0X0hhc2ggKFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5T2Jq
ZWN0X0lzVHJ1ZSAoUHlPYmplY3QgKik7CmV4dGVybiBpbnQgUHlPYmplY3RfTm90IChQeU9iamVj
dCAqKTsKZXh0ZXJuIGludCBQeUNhbGxhYmxlX0NoZWNrIChQeU9iamVjdCAqKTsKZXh0ZXJuIGlu
dCBQeU51bWJlcl9Db2VyY2UgKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CmV4dGVybiBpbnQg
UHlOdW1iZXJfQ29lcmNlRXggKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CgoKZXh0ZXJuIGlu
dCBQeV9SZXByRW50ZXIgKFB5T2JqZWN0ICopOwpleHRlcm4gdm9pZCBQeV9SZXByTGVhdmUgKFB5
T2JqZWN0ICopOwoKCiMgNDM0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamVjdC5oIgpleHRl
cm4gUHlPYmplY3QgX1B5X05vbmVTdHJ1Y3Q7CgojIDcxICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41
L1B5dGhvbi5oIiAyCgojIDU4ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamltcGwuaCIgMQpl
eHRlcm4gUHlPYmplY3QgKiBfUHlPYmplY3RfTmV3IChQeVR5cGVPYmplY3QgKik7CmV4dGVybiBQ
eVZhck9iamVjdCAqIF9QeU9iamVjdF9OZXdWYXIgKFB5VHlwZU9iamVjdCAqLCBpbnQpOwoKIyA3
MiAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgMzggIi91c3IvaW5jbHVk
ZS9weXRob24xLjUvcHlkZWJ1Zy5oIiAxCmV4dGVybiBpbnQgUHlfRGVidWdGbGFnOwpleHRlcm4g
aW50IFB5X1ZlcmJvc2VGbGFnOwpleHRlcm4gaW50IFB5X0ludGVyYWN0aXZlRmxhZzsKZXh0ZXJu
IGludCBQeV9PcHRpbWl6ZUZsYWc7CmV4dGVybiBpbnQgUHlfTm9TaXRlRmxhZzsKZXh0ZXJuIGlu
dCBQeV9Vc2VDbGFzc0V4Y2VwdGlvbnNGbGFnOwpleHRlcm4gaW50IFB5X0Zyb3plbkZsYWc7CmV4
dGVybiBpbnQgUHlfVGFiY2hlY2tGbGFnOwoKdm9pZCBQeV9GYXRhbEVycm9yIChjaGFyICopOwoK
IyA3NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNTUgIi91c3IvaW5j
bHVkZS9weXRob24xLjUvaW50b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlu
dCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBsb25nIG9i
X2l2YWw7Cn0gUHlJbnRPYmplY3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFB5SW50X1R5cGU7CgoK
CmV4dGVybiBQeU9iamVjdCAqIFB5SW50X0Zyb21Mb25nIChsb25nKTsKZXh0ZXJuIGxvbmcgUHlJ
bnRfQXNMb25nIChQeU9iamVjdCAqKTsKZXh0ZXJuIGxvbmcgUHlJbnRfR2V0TWF4ICh2b2lkKTsK
IyA4MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9pbnRvYmplY3QuaCIKZXh0ZXJuIFB5SW50T2Jq
ZWN0IF9QeV9aZXJvU3RydWN0LCBfUHlfVHJ1ZVN0cnVjdDsKCiMgOTQgIi91c3IvaW5jbHVkZS9w
eXRob24xLjUvaW50b2JqZWN0LmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIFB5T1Nfc3RydG91bCAo
Y2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4gbG9uZyBQeU9TX3N0cnRvbCAoY2hhciAqLCBj
aGFyICoqLCBpbnQpOwoKIyA3NiAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9sb25nb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1
Y3QgX2xvbmdvYmplY3QgUHlMb25nT2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUxvbmdf
VHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlMb25nX0Zyb21Mb25nIChsb25nKTsKZXh0ZXJu
IFB5T2JqZWN0ICogUHlMb25nX0Zyb21VbnNpZ25lZExvbmcgKHVuc2lnbmVkIGxvbmcpOwpleHRl
cm4gUHlPYmplY3QgKiBQeUxvbmdfRnJvbURvdWJsZSAoZG91YmxlKTsKZXh0ZXJuIGxvbmcgUHlM
b25nX0FzTG9uZyAoUHlPYmplY3QgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFB5TG9uZ19Bc1Vu
c2lnbmVkTG9uZyAoUHlPYmplY3QgKik7CmV4dGVybiBkb3VibGUgUHlMb25nX0FzRG91YmxlIChQ
eU9iamVjdCAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlMb25nX0Zyb21Wb2lkUHRyICh2b2lkICop
OwpleHRlcm4gdm9pZCAqIFB5TG9uZ19Bc1ZvaWRQdHIgKFB5T2JqZWN0ICopOwoKCgoKCiMgMTIg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2xpbWl0cy5o
IiAxIDMKIyA4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVk
ZS9zeXNsaW1pdHMuaCIgMSAzCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4LzIuOTYvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVkZS9saW1pdHMu
aCIgMSAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEgMwojIDM3ICIv
dXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMSAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0
cy9wb3NpeDFfbGltLmgiIDIgMwojIDMxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoK
IyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2xp
bWl0cy5oIiAyIDMKIyA4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYv
aW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCiMgMTIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRo
YXQtbGludXgvMi45Ni9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyA1OSAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9sb25nb2JqZWN0LmgiIDIKIyA3OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9sb25n
b2JqZWN0LmgiCmV4dGVybiBQeU9iamVjdCAqIFB5TG9uZ19Gcm9tTG9uZ0xvbmcgKGxvbmcgbG9u
Zyk7CmV4dGVybiBQeU9iamVjdCAqIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyAodW5zaWdu
ZWQgbG9uZyBsb25nKTsKZXh0ZXJuIGxvbmcgbG9uZyBQeUxvbmdfQXNMb25nTG9uZyAoUHlPYmpl
Y3QgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgUHlMb25nX0FzVW5zaWduZWRMb25nTG9u
ZyAoUHlPYmplY3QgKik7CgoKUHlPYmplY3QgKiBQeUxvbmdfRnJvbVN0cmluZyAoY2hhciAqLCBj
aGFyICoqLCBpbnQpOwoKIyA3NyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyA0NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9mbG9hdG9iamVjdC5oIiAxCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBpbnQgb2JfcmVmY250OyBzdHJ1Y3QgX3R5cGVvYmplY3QgKm9iX3R5cGU7
CiAgICAgICAgZG91YmxlIG9iX2Z2YWw7Cn0gUHlGbG9hdE9iamVjdDsKCmV4dGVybiBQeVR5cGVP
YmplY3QgUHlGbG9hdF9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUZsb2F0X0Zyb21Eb3Vi
bGUgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgUHlGbG9hdF9Bc0RvdWJsZSAoUHlPYmplY3QgKik7
CgoKIyA3OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgOSAiL3Vzci9p
bmNsdWRlL3B5dGhvbjEuNS9jb21wbGV4b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICBk
b3VibGUgcmVhbDsKICAgZG91YmxlIGltYWc7Cn0gUHlfY29tcGxleDsKCgoKCgoKCgoKCmV4dGVy
biBQeV9jb21wbGV4IF9QeV9jX3N1bSAoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CmV4dGVybiBQ
eV9jb21wbGV4IF9QeV9jX2RpZmYgKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwpleHRlcm4gUHlf
Y29tcGxleCBfUHlfY19uZWcgKFB5X2NvbXBsZXgpOwpleHRlcm4gUHlfY29tcGxleCBfUHlfY19w
cm9kIChQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKZXh0ZXJuIFB5X2NvbXBsZXggX1B5X2NfcXVv
dCAoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CmV4dGVybiBQeV9jb21wbGV4IF9QeV9jX3BvdyAo
UHlfY29tcGxleCwgUHlfY29tcGxleCk7CiMgMzggIi91c3IvaW5jbHVkZS9weXRob24xLjUvY29t
cGxleG9iamVjdC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3Ry
dWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgICAgIFB5X2NvbXBsZXggY3ZhbDsKfSBQeUNv
bXBsZXhPYmplY3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFB5Q29tcGxleF9UeXBlOwoKCgpleHRl
cm4gUHlPYmplY3QgKiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4IChQeV9jb21wbGV4KTsKZXh0ZXJu
IFB5T2JqZWN0ICogUHlDb21wbGV4X0Zyb21Eb3VibGVzIChkb3VibGUgcmVhbCwgZG91YmxlIGlt
YWcpOwoKZXh0ZXJuIGRvdWJsZSBQeUNvbXBsZXhfUmVhbEFzRG91YmxlIChQeU9iamVjdCAqb3Ap
OwpleHRlcm4gZG91YmxlIFB5Q29tcGxleF9JbWFnQXNEb3VibGUgKFB5T2JqZWN0ICpvcCk7CmV4
dGVybiBQeV9jb21wbGV4IFB5Q29tcGxleF9Bc0NDb21wbGV4IChQeU9iamVjdCAqb3ApOwoKIyA4
MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNDIgIi91c3IvaW5jbHVk
ZS9weXRob24xLjUvcmFuZ2VvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5UmFuZ2Vf
VHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlSYW5nZV9OZXcgKGxvbmcsIGxvbmcsIGxvbmcs
IGludCk7CiMgODIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgNjkgIi91
c3IvaW5jbHVkZS9weXRob24xLjUvc3RyaW5nb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9i
X3NpemU7CgogICAgICAgIGxvbmcgb2Jfc2hhc2g7CgoKICAgICAgICBQeU9iamVjdCAqb2Jfc2lu
dGVybmVkOwoKICAgICAgICBjaGFyIG9iX3N2YWxbMV07Cn0gUHlTdHJpbmdPYmplY3Q7CgpleHRl
cm4gUHlUeXBlT2JqZWN0IFB5U3RyaW5nX1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5U3Ry
aW5nX0Zyb21TdHJpbmdBbmRTaXplIChjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBQeU9iamVj
dCAqIFB5U3RyaW5nX0Zyb21TdHJpbmcgKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgUHlTdHJp
bmdfU2l6ZSAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlTdHJpbmdfQXNTdHJpbmcgKFB5
T2JqZWN0ICopOwpleHRlcm4gdm9pZCBQeVN0cmluZ19Db25jYXQgKFB5T2JqZWN0ICoqLCBQeU9i
amVjdCAqKTsKZXh0ZXJuIHZvaWQgUHlTdHJpbmdfQ29uY2F0QW5kRGVsIChQeU9iamVjdCAqKiwg
UHlPYmplY3QgKik7CmV4dGVybiBpbnQgX1B5U3RyaW5nX1Jlc2l6ZSAoUHlPYmplY3QgKiosIGlu
dCk7CmV4dGVybiBQeU9iamVjdCAqIFB5U3RyaW5nX0Zvcm1hdCAoUHlPYmplY3QgKiwgUHlPYmpl
Y3QgKik7CgoKZXh0ZXJuIHZvaWQgUHlTdHJpbmdfSW50ZXJuSW5QbGFjZSAoUHlPYmplY3QgKiop
OwpleHRlcm4gUHlPYmplY3QgKiBQeVN0cmluZ19JbnRlcm5Gcm9tU3RyaW5nIChjb25zdCBjaGFy
ICopOwojIDgzICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgojIDQzICIvdXNy
L2luY2x1ZGUvcHl0aG9uMS41L2J1ZmZlcm9iamVjdC5oIiAxCmV4dGVybiBQeVR5cGVPYmplY3Qg
UHlCdWZmZXJfVHlwZTsKCgoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUJ1ZmZlcl9Gcm9tT2JqZWN0
IChQeU9iamVjdCAqYmFzZSwgaW50IG9mZnNldCwgaW50IHNpemUpOwpleHRlcm4gUHlPYmplY3Qg
KiBQeUJ1ZmZlcl9Gcm9tUmVhZFdyaXRlT2JqZWN0IChQeU9iamVjdCAqYmFzZSwgaW50IG9mZnNl
dCwgaW50IHNpemUpOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlCdWZmZXJfRnJvbU1lbW9yeSAodm9p
ZCAqcHRyLCBpbnQgc2l6ZSk7CmV4dGVybiBQeU9iamVjdCAqIFB5QnVmZmVyX0Zyb21SZWFkV3Jp
dGVNZW1vcnkgKHZvaWQgKnB0ciwgaW50IHNpemUpOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlCdWZm
ZXJfTmV3IChpbnQgc2l6ZSk7CgojIDg0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5o
IiAyCgojIDU0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L3R1cGxlb2JqZWN0LmgiIDEKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2Jf
dHlwZTsgaW50IG9iX3NpemU7CiAgICAgICAgUHlPYmplY3QgKm9iX2l0ZW1bMV07Cn0gUHlUdXBs
ZU9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUdXBsZV9UeXBlOwoKCgpleHRlcm4gUHlP
YmplY3QgKiBQeVR1cGxlX05ldyAoaW50IHNpemUpOwpleHRlcm4gaW50IFB5VHVwbGVfU2l6ZSAo
UHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5VHVwbGVfR2V0SXRlbSAoUHlPYmplY3Qg
KiwgaW50KTsKZXh0ZXJuIGludCBQeVR1cGxlX1NldEl0ZW0gKFB5T2JqZWN0ICosIGludCwgUHlP
YmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5VHVwbGVfR2V0U2xpY2UgKFB5T2JqZWN0ICos
IGludCwgaW50KTsKZXh0ZXJuIGludCBfUHlUdXBsZV9SZXNpemUgKFB5T2JqZWN0ICoqLCBpbnQs
IGludCk7CgoKIyA4NSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA1NCAi
L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9saXN0b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9i
X3NpemU7CiAgICAgICAgUHlPYmplY3QgKipvYl9pdGVtOwp9IFB5TGlzdE9iamVjdDsKCmV4dGVy
biBQeVR5cGVPYmplY3QgUHlMaXN0X1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5TGlzdF9O
ZXcgKGludCBzaXplKTsKZXh0ZXJuIGludCBQeUxpc3RfU2l6ZSAoUHlPYmplY3QgKik7CmV4dGVy
biBQeU9iamVjdCAqIFB5TGlzdF9HZXRJdGVtIChQeU9iamVjdCAqLCBpbnQpOwpleHRlcm4gaW50
IFB5TGlzdF9TZXRJdGVtIChQeU9iamVjdCAqLCBpbnQsIFB5T2JqZWN0ICopOwpleHRlcm4gaW50
IFB5TGlzdF9JbnNlcnQgKFB5T2JqZWN0ICosIGludCwgUHlPYmplY3QgKik7CmV4dGVybiBpbnQg
UHlMaXN0X0FwcGVuZCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAq
IFB5TGlzdF9HZXRTbGljZSAoUHlPYmplY3QgKiwgaW50LCBpbnQpOwpleHRlcm4gaW50IFB5TGlz
dF9TZXRTbGljZSAoUHlPYmplY3QgKiwgaW50LCBpbnQsIFB5T2JqZWN0ICopOwpleHRlcm4gaW50
IFB5TGlzdF9Tb3J0IChQeU9iamVjdCAqKTsKZXh0ZXJuIGludCBQeUxpc3RfUmV2ZXJzZSAoUHlP
YmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5TGlzdF9Bc1R1cGxlIChQeU9iamVjdCAqKTsK
CgojIDg2ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgojIDQwICIvdXNyL2lu
Y2x1ZGUvcHl0aG9uMS41L2RpY3RvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5RGlj
dF9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeURpY3RfTmV3ICh2b2lkKTsKZXh0ZXJuIFB5
T2JqZWN0ICogUHlEaWN0X0dldEl0ZW0gKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CmV4
dGVybiBpbnQgUHlEaWN0X1NldEl0ZW0gKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlP
YmplY3QgKml0ZW0pOwpleHRlcm4gaW50IFB5RGljdF9EZWxJdGVtIChQeU9iamVjdCAqbXAsIFB5
T2JqZWN0ICprZXkpOwpleHRlcm4gdm9pZCBQeURpY3RfQ2xlYXIgKFB5T2JqZWN0ICptcCk7CmV4
dGVybiBpbnQgUHlEaWN0X05leHQKICAgICAgICAoUHlPYmplY3QgKm1wLCBpbnQgKnBvcywgUHlP
YmplY3QgKiprZXksIFB5T2JqZWN0ICoqdmFsdWUpOwpleHRlcm4gUHlPYmplY3QgKiBQeURpY3Rf
S2V5cyAoUHlPYmplY3QgKm1wKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlEaWN0X1ZhbHVlcyAoUHlP
YmplY3QgKm1wKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlEaWN0X0l0ZW1zIChQeU9iamVjdCAqbXAp
OwpleHRlcm4gaW50IFB5RGljdF9TaXplIChQeU9iamVjdCAqbXApOwoKZXh0ZXJuIFB5T2JqZWN0
ICogUHlEaWN0X0dldEl0ZW1TdHJpbmcgKFB5T2JqZWN0ICpkcCwgY2hhciAqa2V5KTsKZXh0ZXJu
IGludCBQeURpY3RfU2V0SXRlbVN0cmluZyAoUHlPYmplY3QgKmRwLCBjaGFyICprZXksIFB5T2Jq
ZWN0ICppdGVtKTsKZXh0ZXJuIGludCBQeURpY3RfRGVsSXRlbVN0cmluZyAoUHlPYmplY3QgKmRw
LCBjaGFyICprZXkpOwoKIyA4NyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9tZXRob2RvYmplY3QuaCIgMQpleHRlcm4gUHlU
eXBlT2JqZWN0IFB5Q0Z1bmN0aW9uX1R5cGU7CgoKCnR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVu
Y3Rpb24pIChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBQeU9iamVjdCAqKCpQeUNG
dW5jdGlvbldpdGhLZXl3b3JkcykKICAgICAgICAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlP
YmplY3QgKik7CgpleHRlcm4gUHlDRnVuY3Rpb24gUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24gKFB5
T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUNGdW5jdGlvbl9HZXRTZWxmIChQeU9iamVj
dCAqKTsKZXh0ZXJuIGludCBQeUNGdW5jdGlvbl9HZXRGbGFncyAoUHlPYmplY3QgKik7CgoKCgoK
CgoKCgpzdHJ1Y3QgUHlNZXRob2REZWYgewogICAgICAgIGNoYXIgKm1sX25hbWU7CiAgICAgICAg
UHlDRnVuY3Rpb24gbWxfbWV0aDsKICAgICAgICBpbnQgbWxfZmxhZ3M7CiAgICAgICAgY2hhciAq
bWxfZG9jOwp9Owp0eXBlZGVmIHN0cnVjdCBQeU1ldGhvZERlZiBQeU1ldGhvZERlZjsKCmV4dGVy
biBQeU9iamVjdCAqIFB5X0ZpbmRNZXRob2QKICAgICAgICAoUHlNZXRob2REZWZbXSwgUHlPYmpl
Y3QgKiwgY2hhciAqKTsKCmV4dGVybiBQeU9iamVjdCAqIFB5Q0Z1bmN0aW9uX05ldwogICAgICAg
IChQeU1ldGhvZERlZiAqLCBQeU9iamVjdCAqKTsKCgoKCgp0eXBlZGVmIHN0cnVjdCBQeU1ldGhv
ZENoYWluIHsKICAgICAgICBQeU1ldGhvZERlZiAqbWV0aG9kczsKICAgICAgICBzdHJ1Y3QgUHlN
ZXRob2RDaGFpbiAqbGluazsKfSBQeU1ldGhvZENoYWluOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlf
RmluZE1ldGhvZEluQ2hhaW4KICAgICAgICAoUHlNZXRob2RDaGFpbiAqLCBQeU9iamVjdCAqLCBj
aGFyICopOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBf
dHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBQeU1ldGhvZERlZiAqbV9tbDsKICAgICAgICBQ
eU9iamVjdCAqbV9zZWxmOwp9IFB5Q0Z1bmN0aW9uT2JqZWN0OwoKIyA4OCAiL3Vzci9pbmNsdWRl
L3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9tb2R1
bGVvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5TW9kdWxlX1R5cGU7CgoKCmV4dGVy
biBQeU9iamVjdCAqIFB5TW9kdWxlX05ldyAoY2hhciAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlN
b2R1bGVfR2V0RGljdCAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlNb2R1bGVfR2V0TmFt
ZSAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlNb2R1bGVfR2V0RmlsZW5hbWUgKFB5T2Jq
ZWN0ICopOwpleHRlcm4gdm9pZCBfUHlNb2R1bGVfQ2xlYXIgKFB5T2JqZWN0ICopOwoKIyA4OSAi
L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9mdW5jb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9y
ZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBQeU9iamVjdCAqZnVu
Y19jb2RlOwogICAgICAgIFB5T2JqZWN0ICpmdW5jX2dsb2JhbHM7CiAgICAgICAgUHlPYmplY3Qg
KmZ1bmNfZGVmYXVsdHM7CiAgICAgICAgUHlPYmplY3QgKmZ1bmNfZG9jOwogICAgICAgIFB5T2Jq
ZWN0ICpmdW5jX25hbWU7Cn0gUHlGdW5jdGlvbk9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3Qg
UHlGdW5jdGlvbl9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUZ1bmN0aW9uX05ldyAoUHlP
YmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0Q29k
ZSAoUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0R2xvYmFscyAo
UHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0RGVmYXVsdHMgKFB5
T2JqZWN0ICopOwpleHRlcm4gaW50IFB5RnVuY3Rpb25fU2V0RGVmYXVsdHMgKFB5T2JqZWN0ICos
IFB5T2JqZWN0ICopOwoKCgojIDkwICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAy
CgojIDQyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0LmgiIDEKdHlwZWRlZiBz
dHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlw
ZTsKICAgICAgICBQeU9iamVjdCAqY2xfYmFzZXM7CiAgICAgICAgUHlPYmplY3QgKmNsX2RpY3Q7
CiAgICAgICAgUHlPYmplY3QgKmNsX25hbWU7CgogICAgICAgIFB5T2JqZWN0ICpjbF9nZXRhdHRy
OwogICAgICAgIFB5T2JqZWN0ICpjbF9zZXRhdHRyOwogICAgICAgIFB5T2JqZWN0ICpjbF9kZWxh
dHRyOwp9IFB5Q2xhc3NPYmplY3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3Jl
ZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgICAgIFB5Q2xhc3NPYmplY3Qg
KmluX2NsYXNzOwogICAgICAgIFB5T2JqZWN0ICppbl9kaWN0Owp9IFB5SW5zdGFuY2VPYmplY3Q7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2Jq
ZWN0ICpvYl90eXBlOwogICAgICAgIFB5T2JqZWN0ICppbV9mdW5jOwogICAgICAgIFB5T2JqZWN0
ICppbV9zZWxmOwogICAgICAgIFB5T2JqZWN0ICppbV9jbGFzczsKfSBQeU1ldGhvZE9iamVjdDsK
CmV4dGVybiBQeVR5cGVPYmplY3QgUHlDbGFzc19UeXBlLCBQeUluc3RhbmNlX1R5cGUsIFB5TWV0
aG9kX1R5cGU7CgoKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlDbGFzc19OZXcgKFB5T2JqZWN0ICos
IFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUluc3RhbmNlX05l
dyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAq
IFB5TWV0aG9kX05ldyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CgpleHRl
cm4gUHlPYmplY3QgKiBQeU1ldGhvZF9GdW5jdGlvbiAoUHlPYmplY3QgKik7CmV4dGVybiBQeU9i
amVjdCAqIFB5TWV0aG9kX1NlbGYgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeU1l
dGhvZF9DbGFzcyAoUHlPYmplY3QgKik7CgoKCgoKCgoKCgpleHRlcm4gaW50IFB5Q2xhc3NfSXNT
dWJjbGFzcyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CgpleHRlcm4gUHlPYmplY3QgKiBQeUlu
c3RhbmNlX0RvQmluT3AKCgogICAgICAgIChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAojIDk0ICIv
dXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0LmgiCiAgICAgICAgICAgICAgICAgIGNo
YXIgKiwgY2hhciAqLAojIDk0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0Lmgi
CiAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICogKCopIChQeU9iamVjdCAqLCBQeU9iamVjdCAq
KSApOwoKIyA5MSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vz
ci9pbmNsdWRlL3B5dGhvbjEuNS9maWxlb2JqZWN0LmgiIDEKZXh0ZXJuIFB5VHlwZU9iamVjdCBQ
eUZpbGVfVHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlGaWxlX0Zyb21TdHJpbmcgKGNoYXIg
KiwgY2hhciAqKTsKZXh0ZXJuIHZvaWQgUHlGaWxlX1NldEJ1ZlNpemUgKFB5T2JqZWN0ICosIGlu
dCk7CmV4dGVybiBQeU9iamVjdCAqIFB5RmlsZV9Gcm9tRmlsZQogICAgICAgIChGSUxFICosIGNo
YXIgKiwgY2hhciAqLCBpbnQgKCopKEZJTEUgKikpOwpleHRlcm4gRklMRSAqIFB5RmlsZV9Bc0Zp
bGUgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUZpbGVfTmFtZSAoUHlPYmplY3Qg
Kik7CmV4dGVybiBQeU9iamVjdCAqIFB5RmlsZV9HZXRMaW5lIChQeU9iamVjdCAqLCBpbnQpOwpl
eHRlcm4gaW50IFB5RmlsZV9Xcml0ZU9iamVjdCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgaW50
KTsKZXh0ZXJuIGludCBQeUZpbGVfU29mdFNwYWNlIChQeU9iamVjdCAqLCBpbnQpOwpleHRlcm4g
aW50IFB5RmlsZV9Xcml0ZVN0cmluZyAoY2hhciAqLCBQeU9iamVjdCAqKTsKCiMgOTIgIi91c3Iv
aW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgNDcgIi91c3IvaW5jbHVkZS9weXRob24x
LjUvY29iamVjdC5oIiAxCmV4dGVybiBQeVR5cGVPYmplY3QgUHlDT2JqZWN0X1R5cGU7CgojIDU3
ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NvYmplY3QuaCIKZXh0ZXJuIFB5T2JqZWN0ICoKUHlD
T2JqZWN0X0Zyb21Wb2lkUHRyICh2b2lkICpjb2JqLCB2b2lkICgqZGVzdHJ1Y3QpKHZvaWQqKSk7
CgoKCgoKCgpleHRlcm4gUHlPYmplY3QgKgpQeUNPYmplY3RfRnJvbVZvaWRQdHJBbmREZXNjICh2
b2lkICpjb2JqLCB2b2lkICpkZXNjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICgqZGVzdHJ1Y3QpKHZvaWQqLHZvaWQqKSk7CgoKZXh0ZXJuIHZvaWQgKgpQeUNP
YmplY3RfQXNWb2lkUHRyIChQeU9iamVjdCAqKTsKCgpleHRlcm4gdm9pZCAqClB5Q09iamVjdF9H
ZXREZXNjIChQeU9iamVjdCAqKTsKCgpleHRlcm4gdm9pZCAqClB5Q09iamVjdF9JbXBvcnQgKGNo
YXIgKm1vZHVsZV9uYW1lLCBjaGFyICpjb2JqZWN0X25hbWUpOwoKIyA5MyAiL3Vzci9pbmNsdWRl
L3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS90cmFj
ZWJhY2suaCIgMQpzdHJ1Y3QgX2ZyYW1lOwoKaW50IFB5VHJhY2VCYWNrX0hlcmUgKHN0cnVjdCBf
ZnJhbWUgKik7ClB5T2JqZWN0ICogUHlUcmFjZUJhY2tfRmV0Y2ggKHZvaWQpOwppbnQgUHlUcmFj
ZUJhY2tfU3RvcmUgKFB5T2JqZWN0ICopOwppbnQgUHlUcmFjZUJhY2tfUHJpbnQgKFB5T2JqZWN0
ICosIFB5T2JqZWN0ICopOwoKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUcmFjZUJhY2tfVHlwZTsK
IyA5NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA5ICIvdXNyL2luY2x1
ZGUvcHl0aG9uMS41L3NsaWNlb2JqZWN0LmgiIDEKZXh0ZXJuIFB5T2JqZWN0IF9QeV9FbGxpcHNp
c09iamVjdDsKCiMgMjIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvc2xpY2VvYmplY3QuaCIKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAq
b2JfdHlwZTsKICAgICAgICBQeU9iamVjdCAqc3RhcnQsICpzdG9wLCAqc3RlcDsKfSBQeVNsaWNl
T2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVNsaWNlX1R5cGU7CgoKClB5T2JqZWN0ICog
UHlTbGljZV9OZXcgKAogICAgICAgIFB5T2JqZWN0KiBzdGFydCwgUHlPYmplY3QqIHN0b3AsIFB5
T2JqZWN0KiBzdGVwKTsKaW50IFB5U2xpY2VfR2V0SW5kaWNlcyAoCiAgICAgICAgUHlTbGljZU9i
amVjdCAqciwgaW50IGxlbmd0aCwgaW50ICpzdGFydCwgaW50ICpzdG9wLCBpbnQgKnN0ZXApOwoK
IyA5NSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNDAgIi91c3IvaW5j
bHVkZS9weXRob24xLjUvcHllcnJvcnMuaCIgMQp2b2lkIFB5RXJyX1NldE5vbmUgKFB5T2JqZWN0
ICopOwp2b2lkIFB5RXJyX1NldE9iamVjdCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CnZvaWQg
UHlFcnJfU2V0U3RyaW5nIChQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOwpQeU9iamVjdCAqIFB5
RXJyX09jY3VycmVkICh2b2lkKTsKdm9pZCBQeUVycl9DbGVhciAodm9pZCk7CnZvaWQgUHlFcnJf
RmV0Y2ggKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKiwgUHlPYmplY3QgKiopOwp2b2lkIFB5RXJy
X1Jlc3RvcmUgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwoKCmludCBQeUVy
cl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwppbnQgUHlF
cnJfRXhjZXB0aW9uTWF0Y2hlcyAoUHlPYmplY3QgKik7CnZvaWQgUHlFcnJfTm9ybWFsaXplRXhj
ZXB0aW9uIChQeU9iamVjdCoqLCBQeU9iamVjdCoqLCBQeU9iamVjdCoqKTsKCgoKCmV4dGVybiBQ
eU9iamVjdCAqIFB5RXhjX0V4Y2VwdGlvbjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfU3RhbmRh
cmRFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfQXJpdGhtZXRpY0Vycm9yOwpleHRlcm4g
UHlPYmplY3QgKiBQeUV4Y19Mb29rdXBFcnJvcjsKCmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0Fz
c2VydGlvbkVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19BdHRyaWJ1dGVFcnJvcjsKZXh0
ZXJuIFB5T2JqZWN0ICogUHlFeGNfRU9GRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0Zs
b2F0aW5nUG9pbnRFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfRW52aXJvbm1lbnRFcnJv
cjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfSU9FcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlF
eGNfT1NFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfSW1wb3J0RXJyb3I7CmV4dGVybiBQ
eU9iamVjdCAqIFB5RXhjX0luZGV4RXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0tleUVy
cm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19LZXlib2FyZEludGVycnVwdDsKZXh0ZXJuIFB5
T2JqZWN0ICogUHlFeGNfTWVtb3J5RXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX05hbWVF
cnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfT3ZlcmZsb3dFcnJvcjsKZXh0ZXJuIFB5T2Jq
ZWN0ICogUHlFeGNfUnVudGltZUVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19Ob3RJbXBs
ZW1lbnRlZEVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19TeW50YXhFcnJvcjsKZXh0ZXJu
IFB5T2JqZWN0ICogUHlFeGNfU3lzdGVtRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX1N5
c3RlbUV4aXQ7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX1R5cGVFcnJvcjsKZXh0ZXJuIFB5T2Jq
ZWN0ICogUHlFeGNfVmFsdWVFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfWmVyb0Rpdmlz
aW9uRXJyb3I7CgpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19NZW1vcnlFcnJvckluc3Q7CgoKCgpl
eHRlcm4gaW50IFB5RXJyX0JhZEFyZ3VtZW50ICh2b2lkKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlF
cnJfTm9NZW1vcnkgKHZvaWQpOwpleHRlcm4gUHlPYmplY3QgKiBQeUVycl9TZXRGcm9tRXJybm8g
KFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmls
ZW5hbWUgKFB5T2JqZWN0ICosIGNoYXIgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RXJyX0Zvcm1h
dCAoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJuIHZvaWQgUHlFcnJfQmFk
SW50ZXJuYWxDYWxsICh2b2lkKTsKCgpQeU9iamVjdCAqIFB5RXJyX05ld0V4Y2VwdGlvbiAoY2hh
ciAqbmFtZSwgUHlPYmplY3QgKmJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFB5T2JqZWN0ICpkaWN0KTsKCgpleHRlcm4gaW50IFB5RXJyX0NoZWNrU2lnbmFscyAo
dm9pZCk7CmV4dGVybiB2b2lkIFB5RXJyX1NldEludGVycnVwdCAodm9pZCk7CgoKIyA5NyAiL3Vz
ci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyAxMDkgIi91c3IvaW5jbHVkZS9weXRo
b24xLjUvbXltYWxsb2MuaCIgMQpleHRlcm4gdm9pZCAqIFB5X01hbGxvYyAoc2l6ZV90KTsKZXh0
ZXJuIHZvaWQgKiBQeV9SZWFsbG9jICh2b2lkICosIHNpemVfdCk7CmV4dGVybiB2b2lkIFB5X0Zy
ZWUgKHZvaWQgKik7CgoKZXh0ZXJuIHZvaWQgKiBQeU1lbV9NYWxsb2MgKHNpemVfdCk7CmV4dGVy
biB2b2lkICogUHlNZW1fUmVhbGxvYyAodm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCBQeU1l
bV9GcmVlICh2b2lkICopOwoKIyA5OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIg
MgoKCiMgNDMgIi91c3IvaW5jbHVkZS9weXRob24xLjUvcHlzdGF0ZS5oIiAxCnN0cnVjdCBfdHM7
CnN0cnVjdCBfaXM7Cgp0eXBlZGVmIHN0cnVjdCBfaXMgewoKICAgICAgICBzdHJ1Y3QgX2lzICpu
ZXh0OwogICAgICAgIHN0cnVjdCBfdHMgKnRzdGF0ZV9oZWFkOwoKICAgICAgICBQeU9iamVjdCAq
bW9kdWxlczsKICAgICAgICBQeU9iamVjdCAqc3lzZGljdDsKICAgICAgICBQeU9iamVjdCAqYnVp
bHRpbnM7CgogICAgICAgIGludCBjaGVja2ludGVydmFsOwoKfSBQeUludGVycHJldGVyU3RhdGU7
CgoKCgpzdHJ1Y3QgX2ZyYW1lOwoKdHlwZWRlZiBzdHJ1Y3QgX3RzIHsKCiAgICAgICAgc3RydWN0
IF90cyAqbmV4dDsKICAgICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKCiAgICAgICAg
c3RydWN0IF9mcmFtZSAqZnJhbWU7CiAgICAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aDsKICAgICAg
ICBpbnQgdGlja2VyOwogICAgICAgIGludCB0cmFjaW5nOwoKICAgICAgICBQeU9iamVjdCAqc3lz
X3Byb2ZpbGVmdW5jOwogICAgICAgIFB5T2JqZWN0ICpzeXNfdHJhY2VmdW5jOwoKICAgICAgICBQ
eU9iamVjdCAqY3VyZXhjX3R5cGU7CiAgICAgICAgUHlPYmplY3QgKmN1cmV4Y192YWx1ZTsKICAg
ICAgICBQeU9iamVjdCAqY3VyZXhjX3RyYWNlYmFjazsKCiAgICAgICAgUHlPYmplY3QgKmV4Y190
eXBlOwogICAgICAgIFB5T2JqZWN0ICpleGNfdmFsdWU7CiAgICAgICAgUHlPYmplY3QgKmV4Y190
cmFjZWJhY2s7CgogICAgICAgIFB5T2JqZWN0ICpkaWN0OwoKCgp9IFB5VGhyZWFkU3RhdGU7CgoK
UHlJbnRlcnByZXRlclN0YXRlICogUHlJbnRlcnByZXRlclN0YXRlX05ldyAodm9pZCk7CnZvaWQg
UHlJbnRlcnByZXRlclN0YXRlX0NsZWFyIChQeUludGVycHJldGVyU3RhdGUgKik7CnZvaWQgUHlJ
bnRlcnByZXRlclN0YXRlX0RlbGV0ZSAoUHlJbnRlcnByZXRlclN0YXRlICopOwoKUHlUaHJlYWRT
dGF0ZSAqIFB5VGhyZWFkU3RhdGVfTmV3IChQeUludGVycHJldGVyU3RhdGUgKik7CnZvaWQgUHlU
aHJlYWRTdGF0ZV9DbGVhciAoUHlUaHJlYWRTdGF0ZSAqKTsKdm9pZCBQeVRocmVhZFN0YXRlX0Rl
bGV0ZSAoUHlUaHJlYWRTdGF0ZSAqKTsKClB5VGhyZWFkU3RhdGUgKiBQeVRocmVhZFN0YXRlX0dl
dCAodm9pZCk7ClB5VGhyZWFkU3RhdGUgKiBQeVRocmVhZFN0YXRlX1N3YXAgKFB5VGhyZWFkU3Rh
dGUgKik7ClB5T2JqZWN0ICogUHlUaHJlYWRTdGF0ZV9HZXREaWN0ICh2b2lkKTsKCgoKCmV4dGVy
biBQeVRocmVhZFN0YXRlICogX1B5VGhyZWFkU3RhdGVfQ3VycmVudDsKCiMgMTAwICIvdXNyL2lu
Y2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgoKIyA0MyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEu
NS9tb2RzdXBwb3J0LmgiIDEKIyAxMTAgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGlu
dXgvMi45Ni9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9s
aXN0OwojIDQzICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L21vZHN1cHBvcnQuaCIgMgoKZXh0ZXJu
IGludCBQeUFyZ19QYXJzZSAoUHlPYmplY3QgKiwgY2hhciAqLCAuLi4pOwpleHRlcm4gaW50IFB5
QXJnX1BhcnNlVHVwbGUgKFB5T2JqZWN0ICosIGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBQeUFy
Z19QYXJzZVR1cGxlQW5kS2V5d29yZHMgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIGNoYXIgKios
IC4uLik7CmV4dGVybiBQeU9iamVjdCAqIFB5X0J1aWxkVmFsdWUgKGNoYXIgKiwgLi4uKTsKCiMg
NjEgIi91c3IvaW5jbHVkZS9weXRob24xLjUvbW9kc3VwcG9ydC5oIgpleHRlcm4gaW50IFB5QXJn
X1ZhUGFyc2UgKFB5T2JqZWN0ICosIGNoYXIgKiwgdmFfbGlzdCk7CmV4dGVybiBQeU9iamVjdCAq
IFB5X1ZhQnVpbGRWYWx1ZSAoY2hhciAqLCB2YV9saXN0KTsKCiMgMTEyICIvdXNyL2luY2x1ZGUv
cHl0aG9uMS41L21vZHN1cHBvcnQuaCIKZXh0ZXJuIFB5T2JqZWN0ICogUHlfSW5pdE1vZHVsZTQg
KGNoYXIgKiwgUHlNZXRob2REZWYgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqLCBQeU9iamVjdCAqLCBpbnQpOwojIDEyMiAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9tb2RzdXBwb3J0LmgiCmV4dGVybiBjaGFyICogX1B5X1BhY2thZ2VDb250ZXh0OwoK
IyAxMDIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgNDAgIi91c3IvaW5j
bHVkZS9weXRob24xLjUvY2V2YWwuaCIgMQpQeU9iamVjdCAqIFB5RXZhbF9DYWxsT2JqZWN0V2l0
aEtleXdvcmRzCiAgICAgICAgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwoK
CgpQeU9iamVjdCAqIFB5RXZhbF9DYWxsT2JqZWN0IChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsK
CgoKCgoKUHlPYmplY3QgKiBQeUV2YWxfQ2FsbEZ1bmN0aW9uIChQeU9iamVjdCAqb2JqLCBjaGFy
ICpmb3JtYXQsIC4uLik7ClB5T2JqZWN0ICogUHlFdmFsX0NhbGxNZXRob2QgKFB5T2JqZWN0ICpv
YmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbWV0aG9kbmFt
ZSwgY2hhciAqZm9ybWF0LCAuLi4pOwoKCgoKCgpQeU9iamVjdCAqIFB5RXZhbF9HZXRCdWlsdGlu
cyAodm9pZCk7ClB5T2JqZWN0ICogUHlFdmFsX0dldEdsb2JhbHMgKHZvaWQpOwpQeU9iamVjdCAq
IFB5RXZhbF9HZXRMb2NhbHMgKHZvaWQpOwpQeU9iamVjdCAqIFB5RXZhbF9HZXRPd25lciAodm9p
ZCk7ClB5T2JqZWN0ICogUHlFdmFsX0dldEZyYW1lICh2b2lkKTsKaW50IFB5RXZhbF9HZXRSZXN0
cmljdGVkICh2b2lkKTsKCmludCBQeV9GbHVzaExpbmUgKHZvaWQpOwoKaW50IFB5X0FkZFBlbmRp
bmdDYWxsIChpbnQgKCpmdW5jKSAodm9pZCAqKSwgdm9pZCAqYXJnKTsKaW50IFB5X01ha2VQZW5k
aW5nQ2FsbHMgKHZvaWQpOwojIDExOSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9jZXZhbC5oIgpl
eHRlcm4gUHlUaHJlYWRTdGF0ZSAqIFB5RXZhbF9TYXZlVGhyZWFkICh2b2lkKTsKZXh0ZXJuIHZv
aWQgUHlFdmFsX1Jlc3RvcmVUaHJlYWQgKFB5VGhyZWFkU3RhdGUgKik7CgoKCmV4dGVybiB2b2lk
IFB5RXZhbF9Jbml0VGhyZWFkcyAodm9pZCk7CmV4dGVybiB2b2lkIFB5RXZhbF9BY3F1aXJlTG9j
ayAodm9pZCk7CmV4dGVybiB2b2lkIFB5RXZhbF9SZWxlYXNlTG9jayAodm9pZCk7CmV4dGVybiB2
b2lkIFB5RXZhbF9BY3F1aXJlVGhyZWFkIChQeVRocmVhZFN0YXRlICp0c3RhdGUpOwpleHRlcm4g
dm9pZCBQeUV2YWxfUmVsZWFzZVRocmVhZCAoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKCiMgMTAz
ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgojIDQwICIvdXNyL2luY2x1ZGUv
cHl0aG9uMS41L3B5dGhvbnJ1bi5oIiAxCnZvaWQgUHlfU2V0UHJvZ3JhbU5hbWUgKGNoYXIgKik7
CmNoYXIgKiBQeV9HZXRQcm9ncmFtTmFtZSAodm9pZCk7Cgp2b2lkIFB5X1NldFB5dGhvbkhvbWUg
KGNoYXIgKik7CmNoYXIgKiBQeV9HZXRQeXRob25Ib21lICh2b2lkKTsKCnZvaWQgUHlfSW5pdGlh
bGl6ZSAodm9pZCk7CnZvaWQgUHlfRmluYWxpemUgKHZvaWQpOwppbnQgUHlfSXNJbml0aWFsaXpl
ZCAodm9pZCk7ClB5VGhyZWFkU3RhdGUgKiBQeV9OZXdJbnRlcnByZXRlciAodm9pZCk7CnZvaWQg
UHlfRW5kSW50ZXJwcmV0ZXIgKFB5VGhyZWFkU3RhdGUgKik7CgppbnQgUHlSdW5fQW55RmlsZSAo
RklMRSAqLCBjaGFyICopOwoKaW50IFB5UnVuX1NpbXBsZVN0cmluZyAoY2hhciAqKTsKaW50IFB5
UnVuX1NpbXBsZUZpbGUgKEZJTEUgKiwgY2hhciAqKTsKaW50IFB5UnVuX0ludGVyYWN0aXZlT25l
IChGSUxFICosIGNoYXIgKik7CmludCBQeVJ1bl9JbnRlcmFjdGl2ZUxvb3AgKEZJTEUgKiwgY2hh
ciAqKTsKCnN0cnVjdCBfbm9kZSAqIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nIChjaGFyICos
IGludCk7CnN0cnVjdCBfbm9kZSAqIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZSAoRklMRSAqLCBj
aGFyICosIGludCk7CgpQeU9iamVjdCAqIFB5UnVuX1N0cmluZyAoY2hhciAqLCBpbnQsIFB5T2Jq
ZWN0ICosIFB5T2JqZWN0ICopOwpQeU9iamVjdCAqIFB5UnVuX0ZpbGUgKEZJTEUgKiwgY2hhciAq
LCBpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwoKUHlPYmplY3QgKiBQeV9Db21waWxlU3Ry
aW5nIChjaGFyICosIGNoYXIgKiwgaW50KTsKCnZvaWQgUHlFcnJfUHJpbnQgKHZvaWQpOwp2b2lk
IFB5RXJyX1ByaW50RXggKGludCk7CgppbnQgUHlfQXRFeGl0ICh2b2lkICgqZnVuYykgKHZvaWQp
KTsKCnZvaWQgUHlfRXhpdCAoaW50KTsKCmludCBQeV9GZElzSW50ZXJhY3RpdmUgKEZJTEUgKiwg
Y2hhciAqKTsKCgpjaGFyICogUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoICh2b2lkKTsKY2hhciAqIFB5
X0dldFByZWZpeCAodm9pZCk7CmNoYXIgKiBQeV9HZXRFeGVjUHJlZml4ICh2b2lkKTsKY2hhciAq
IFB5X0dldFBhdGggKHZvaWQpOwoKCmNvbnN0IGNoYXIgKiBQeV9HZXRWZXJzaW9uICh2b2lkKTsK
Y29uc3QgY2hhciAqIFB5X0dldFBsYXRmb3JtICh2b2lkKTsKY29uc3QgY2hhciAqIFB5X0dldENv
cHlyaWdodCAodm9pZCk7CmNvbnN0IGNoYXIgKiBQeV9HZXRDb21waWxlciAodm9pZCk7CmNvbnN0
IGNoYXIgKiBQeV9HZXRCdWlsZEluZm8gKHZvaWQpOwoKCgpQeU9iamVjdCAqIF9QeUJ1aWx0aW5f
SW5pdF8xICh2b2lkKTsKdm9pZCBfUHlCdWlsdGluX0luaXRfMiAoUHlPYmplY3QgKik7ClB5T2Jq
ZWN0ICogX1B5U3lzX0luaXQgKHZvaWQpOwp2b2lkIF9QeUltcG9ydF9Jbml0ICh2b2lkKTsKCgp2
b2lkIF9QeUltcG9ydF9GaW5pICh2b2lkKTsKdm9pZCBfUHlCdWlsdGluX0ZpbmlfMSAodm9pZCk7
CnZvaWQgX1B5QnVpbHRpbl9GaW5pXzIgKHZvaWQpOwp2b2lkIFB5TWV0aG9kX0ZpbmkgKHZvaWQp
Owp2b2lkIFB5RnJhbWVfRmluaSAodm9pZCk7CnZvaWQgUHlDRnVuY3Rpb25fRmluaSAodm9pZCk7
CnZvaWQgUHlUdXBsZV9GaW5pICh2b2lkKTsKdm9pZCBQeVN0cmluZ19GaW5pICh2b2lkKTsKdm9p
ZCBQeUludF9GaW5pICh2b2lkKTsKdm9pZCBQeUZsb2F0X0ZpbmkgKHZvaWQpOwp2b2lkIFB5T1Nf
RmluaUludGVycnVwdHMgKHZvaWQpOwoKCmNoYXIgKiBQeU9TX1JlYWRsaW5lIChjaGFyICopOwpl
eHRlcm4gaW50ICgqUHlPU19JbnB1dEhvb2spICh2b2lkKTsKZXh0ZXJuIGNoYXIgKigqUHlPU19S
ZWFkbGluZUZ1bmN0aW9uUG9pbnRlcikgKGNoYXIgKik7CgojIDEwNCAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9zeXNtb2R1
bGUuaCIgMQpQeU9iamVjdCAqIFB5U3lzX0dldE9iamVjdCAoY2hhciAqKTsKaW50IFB5U3lzX1Nl
dE9iamVjdCAoY2hhciAqLCBQeU9iamVjdCAqKTsKRklMRSAqIFB5U3lzX0dldEZpbGUgKGNoYXIg
KiwgRklMRSAqKTsKdm9pZCBQeVN5c19TZXRBcmd2IChpbnQsIGNoYXIgKiopOwp2b2lkIFB5U3lz
X1NldFBhdGggKGNoYXIgKik7CgoKdm9pZCBQeVN5c19Xcml0ZVN0ZG91dChjb25zdCBjaGFyICpm
b3JtYXQsIC4uLik7CnZvaWQgUHlTeXNfV3JpdGVTdGRlcnIoY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pOwoKCgoKCgpleHRlcm4gUHlPYmplY3QgKiBfUHlTeXNfVHJhY2VGdW5jLCAqX1B5U3lzX1By
b2ZpbGVGdW5jOwpleHRlcm4gaW50IF9QeVN5c19DaGVja0ludGVydmFsOwoKIyAxMDUgIi91c3Iv
aW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgMzggIi91c3IvaW5jbHVkZS9weXRob24x
LjUvaW50cmNoZWNrLmgiIDEKZXh0ZXJuIGludCBQeU9TX0ludGVycnVwdE9jY3VycmVkICh2b2lk
KTsKZXh0ZXJuIHZvaWQgUHlPU19Jbml0SW50ZXJydXB0cyAodm9pZCk7CnZvaWQgUHlPU19BZnRl
ckZvcmsgKHZvaWQpOwoKIyAxMDYgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIK
CiMgNDAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvaW1wb3J0LmgiIDEKbG9uZyBQeUltcG9ydF9H
ZXRNYWdpY051bWJlciAodm9pZCk7ClB5T2JqZWN0ICogUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUg
KGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpjbyk7ClB5T2JqZWN0ICogUHlJbXBvcnRfRXhlY0NvZGVN
b2R1bGVFeCAoCiAgICAgICAgY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvLCBjaGFyICpwYXRobmFt
ZSk7ClB5T2JqZWN0ICogUHlJbXBvcnRfR2V0TW9kdWxlRGljdCAodm9pZCk7ClB5T2JqZWN0ICog
UHlJbXBvcnRfQWRkTW9kdWxlIChjaGFyICpuYW1lKTsKUHlPYmplY3QgKiBQeUltcG9ydF9JbXBv
cnRNb2R1bGUgKGNoYXIgKm5hbWUpOwpQeU9iamVjdCAqIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4
ICgKICAgICAgICBjaGFyICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2Fs
cywgUHlPYmplY3QgKmZyb21saXN0KTsKUHlPYmplY3QgKiBQeUltcG9ydF9JbXBvcnQgKFB5T2Jq
ZWN0ICpuYW1lKTsKUHlPYmplY3QgKiBQeUltcG9ydF9SZWxvYWRNb2R1bGUgKFB5T2JqZWN0ICpt
KTsKdm9pZCBQeUltcG9ydF9DbGVhbnVwICh2b2lkKTsKaW50IFB5SW1wb3J0X0ltcG9ydEZyb3pl
bk1vZHVsZSAoY2hhciAqKTsKCmV4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0ZpbmRFeHRlbnNp
b24gKGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIFB5T2JqZWN0ICpfUHlJbXBvcnRfRml4dXBFeHRl
bnNpb24gKGNoYXIgKiwgY2hhciAqKTsKCnN0cnVjdCBfaW5pdHRhYiB7CiAgICAgICAgY2hhciAq
bmFtZTsKICAgICAgICB2b2lkICgqaW5pdGZ1bmMpKCk7Cn07CgpleHRlcm4gc3RydWN0IF9pbml0
dGFiICogUHlJbXBvcnRfSW5pdHRhYjsKCmV4dGVybiBpbnQgUHlJbXBvcnRfQXBwZW5kSW5pdHRh
YiAoY2hhciAqbmFtZSwgdm9pZCAoKmluaXRmdW5jKSgpKTsKZXh0ZXJuIGludCBQeUltcG9ydF9F
eHRlbmRJbml0dGFiIChzdHJ1Y3QgX2luaXR0YWIgKm5ld3RhYik7CgpzdHJ1Y3QgX2Zyb3plbiB7
CiAgICAgICAgY2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpjb2RlOwogICAgICAg
IGludCBzaXplOwp9OwoKCgoKZXh0ZXJuIHN0cnVjdCBfZnJvemVuICogUHlJbXBvcnRfRnJvemVu
TW9kdWxlczsKCiMgMTA3ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgoKIyAy
NTcgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIgMQogICAgIGludCBQeU9iamVj
dF9DbXAgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yLCBpbnQgKnJlc3VsdCk7CiMgMzA1ICIv
dXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5Q2FsbGFibGVfQ2hl
Y2sgKFB5T2JqZWN0ICpvKTsKIyAzMTcgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3Qu
aCIKICAgICBQeU9iamVjdCAqIFB5T2JqZWN0X0NhbGxPYmplY3QgKFB5T2JqZWN0ICpjYWxsYWJs
ZV9vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5
T2JqZWN0ICphcmdzKTsKIyAzMzAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIK
ICAgICBQeU9iamVjdCAqIFB5T2JqZWN0X0NhbGxGdW5jdGlvbiAoUHlPYmplY3QgKmNhbGxhYmxl
X29iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICpmb3JtYXQsIC4uLik7CiMgMzQ0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0
LmgiCiAgICAgUHlPYmplY3QgKiBQeU9iamVjdF9DYWxsTWV0aG9kIChQeU9iamVjdCAqbywgY2hh
ciAqbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Zm9ybWF0LCAuLi4pOwojIDM5NyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgog
ICAgIFB5T2JqZWN0ICogUHlPYmplY3RfVHlwZSAoUHlPYmplY3QgKm8pOwoKCgoKCgoKICAgICBp
bnQgUHlPYmplY3RfTGVuZ3RoIChQeU9iamVjdCAqbyk7CiMgNDE1ICIvdXNyL2luY2x1ZGUvcHl0
aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU9iamVjdF9HZXRJdGVtIChQeU9i
amVjdCAqbywgUHlPYmplY3QgKmtleSk7CiMgNDI0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fi
c3RyYWN0LmgiCiAgICAgaW50IFB5T2JqZWN0X1NldEl0ZW0gKFB5T2JqZWN0ICpvLCBQeU9iamVj
dCAqa2V5LCBQeU9iamVjdCAqdik7CgoKCgoKCgogICAgIGludCBQeU9iamVjdF9EZWxJdGVtIChQ
eU9iamVjdCAqbywgUHlPYmplY3QgKmtleSk7CiMgNDQyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41
L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5TnVtYmVyX0NoZWNrIChQeU9iamVjdCAqbyk7CiMgNDUy
ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51
bWJlcl9BZGQgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIyA0NjEgIi91c3IvaW5jbHVk
ZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX1N1YnRyYWN0
IChQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNDcwICIvdXNyL2luY2x1ZGUvcHl0aG9u
MS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9NdWx0aXBseSAoUHlPYmpl
Y3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDQ4MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0
cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlOdW1iZXJfRGl2aWRlIChQeU9iamVjdCAqbzEsIFB5
T2JqZWN0ICpvMik7CiMgNDg5ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAg
ICAgUHlPYmplY3QgKiBQeU51bWJlcl9SZW1haW5kZXIgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3Qg
Km8yKTsKIyA0OTkgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9i
amVjdCAqIFB5TnVtYmVyX0Rpdm1vZCAoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDUw
OSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlO
dW1iZXJfUG93ZXIgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yLCBQeU9iamVjdCAqbzMpOwoj
IDUxOCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICog
UHlOdW1iZXJfTmVnYXRpdmUgKFB5T2JqZWN0ICpvKTsKCgoKCgoKCiAgICAgUHlPYmplY3QgKiBQ
eU51bWJlcl9Qb3NpdGl2ZSAoUHlPYmplY3QgKm8pOwoKCgoKCgoKICAgICBQeU9iamVjdCAqIFB5
TnVtYmVyX0Fic29sdXRlIChQeU9iamVjdCAqbyk7CgoKCgoKCgogICAgIFB5T2JqZWN0ICogUHlO
dW1iZXJfSW52ZXJ0IChQeU9iamVjdCAqbyk7CiMgNTUyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41
L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9Mc2hpZnQgKFB5T2JqZWN0ICpv
MSwgUHlPYmplY3QgKm8yKTsKIyA1NjIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3Qu
aCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX1JzaGlmdCAoUHlPYmplY3QgKm8xLCBQeU9iamVj
dCAqbzIpOwojIDU3MSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIFB5
T2JqZWN0ICogUHlOdW1iZXJfQW5kIChQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNTgx
ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51
bWJlcl9Yb3IgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIyA1OTEgIi91c3IvaW5jbHVk
ZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX09yIChQeU9i
amVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNjE5ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fi
c3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9JbnQgKFB5T2JqZWN0ICpvKTsKIyA2
MjggIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5
TnVtYmVyX0xvbmcgKFB5T2JqZWN0ICpvKTsKIyA2MzcgIi91c3IvaW5jbHVkZS9weXRob24xLjUv
YWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX0Zsb2F0IChQeU9iamVjdCAqbyk7
CiMgNjQ4ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5U2Vx
dWVuY2VfQ2hlY2sgKFB5T2JqZWN0ICpvKTsKIyA2NTggIi91c3IvaW5jbHVkZS9weXRob24xLjUv
YWJzdHJhY3QuaCIKICAgICBpbnQgUHlTZXF1ZW5jZV9MZW5ndGggKFB5T2JqZWN0ICpvKTsKCgoK
CgoKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfQ29uY2F0IChQeU9iamVjdCAqbzEsIFB5T2Jq
ZWN0ICpvMik7CiMgNjc0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAg
UHlPYmplY3QgKiBQeVNlcXVlbmNlX1JlcGVhdCAoUHlPYmplY3QgKm8sIGludCBjb3VudCk7CiMg
NjgzICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQ
eVNlcXVlbmNlX0dldEl0ZW0gKFB5T2JqZWN0ICpvLCBpbnQgaSk7CgoKCgoKCgogICAgIFB5T2Jq
ZWN0ICogUHlTZXF1ZW5jZV9HZXRTbGljZSAoUHlPYmplY3QgKm8sIGludCBpMSwgaW50IGkyKTsK
IyA3MDAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlTZXF1
ZW5jZV9TZXRJdGVtIChQeU9iamVjdCAqbywgaW50IGksIFB5T2JqZWN0ICp2KTsKIyA3MDkgIi91
c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlTZXF1ZW5jZV9EZWxJ
dGVtIChQeU9iamVjdCAqbywgaW50IGkpOwoKCgoKCgoKICAgICBpbnQgUHlTZXF1ZW5jZV9TZXRT
bGljZSAoUHlPYmplY3QgKm8sIGludCBpMSwgaW50IGkyLCBQeU9iamVjdCAqdik7CgoKCgoKCgog
ICAgIGludCBQeVNlcXVlbmNlX0RlbFNsaWNlIChQeU9iamVjdCAqbywgaW50IGkxLCBpbnQgaTIp
OwoKCgoKCgoKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfVHVwbGUgKFB5T2JqZWN0ICpvKTsK
CgoKCgoKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfTGlzdCAoUHlPYmplY3QgKm8pOwoKCgoK
CgogICAgIGludCBQeVNlcXVlbmNlX0NvdW50IChQeU9iamVjdCAqbywgUHlPYmplY3QgKnZhbHVl
KTsKIyA3NTYgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlT
ZXF1ZW5jZV9Db250YWlucyAoUHlPYmplY3QgKm8sIFB5T2JqZWN0ICp2YWx1ZSk7CgoKCiAgICAg
aW50IFB5U2VxdWVuY2VfSW4gKFB5T2JqZWN0ICpvLCBQeU9iamVjdCAqdmFsdWUpOwoKCiMgNzcx
ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5U2VxdWVuY2Vf
SW5kZXggKFB5T2JqZWN0ICpvLCBQeU9iamVjdCAqdmFsdWUpOwojIDc4MSAiL3Vzci9pbmNsdWRl
L3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIGludCBQeU1hcHBpbmdfQ2hlY2sgKFB5T2JqZWN0
ICpvKTsKIyA3OTAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQg
UHlNYXBwaW5nX0xlbmd0aCAoUHlPYmplY3QgKm8pOwojIDgwNiAiL3Vzci9pbmNsdWRlL3B5dGhv
bjEuNS9hYnN0cmFjdC5oIgojIDgxOCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5o
IgogICAgIGludCBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nIChQeU9iamVjdCAqbywgY2hhciAqa2V5
KTsKIyA4MjggIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlN
YXBwaW5nX0hhc0tleSAoUHlPYmplY3QgKm8sIFB5T2JqZWN0ICprZXkpOwojIDg0NyAiL3Vzci9p
bmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgojIDg3MSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEu
NS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcgKFB5
T2JqZWN0ICpvLCBjaGFyICprZXkpOwoKCgoKCgoKICAgICBpbnQgUHlNYXBwaW5nX1NldEl0ZW1T
dHJpbmcgKFB5T2JqZWN0ICpvLCBjaGFyICprZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUpOwojIDg4OSAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9hYnN0cmFjdC5oIgojIDEwOSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24u
aCIgMgojIDEyMiAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIKIyAyNCAiLi9jdXJ2
ZW9iamVjdC5jIiAyCgojIDQyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L3N0cnVjdG1lbWJlci5o
IiAxCiMgMTQ3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyA0MiAiL3Vzci9pbmNsdWRl
L3B5dGhvbjEuNS9zdHJ1Y3RtZW1iZXIuaCIgMgojIDYwICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41
L3N0cnVjdG1lbWJlci5oIgpzdHJ1Y3QgbWVtYmVybGlzdCB7CiAgICAgICAgY2hhciAqbmFtZTsK
ICAgICAgICBpbnQgdHlwZTsKICAgICAgICBpbnQgb2Zmc2V0OwogICAgICAgIGludCByZWFkb25s
eTsKfTsKCgojIDk1ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L3N0cnVjdG1lbWJlci5oIgpQeU9i
amVjdCAqIFB5TWVtYmVyX0dldCAoY2hhciAqLCBzdHJ1Y3QgbWVtYmVybGlzdCAqLCBjaGFyICop
OwppbnQgUHlNZW1iZXJfU2V0IChjaGFyICosIHN0cnVjdCBtZW1iZXJsaXN0ICosIGNoYXIgKiwg
UHlPYmplY3QgKik7CgojIDI1ICIuL2N1cnZlb2JqZWN0LmMiIDIKCgojIDU4ICIvdXNyL2luY2x1
ZGUvYXNzZXJ0LmgiIDEgMwoKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9mYWlsIChfX2NvbnN0IGNo
YXIgKl9fYXNzZXJ0aW9uLCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQog
X19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCmV4dGVybiB2b2lkIF9fYXNzZXJ0X3Bl
cnJvcl9mYWlsIChpbnQgX19lcnJudW0sIF9fY29uc3QgY2hhciAqX19maWxlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fbGluZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikKIF9fYXR0cmli
dXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiB2b2lkIF9fYXNzZXJ0IChjb25zdCBj
aGFyICpfX2Fzc2VydGlvbiwgY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19saW5lKQogX19hdHRy
aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiMgMjcgIi4vY3VydmVvYmplY3QuYyIgMgoKCiMg
MjYgInNrcG9pbnQuaCIgMQp0eXBlZGVmIGZsb2F0IFNLQ29vcmQ7CgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgU0tD
b29yZCB4LCB5Owp9IFNLUG9pbnRPYmplY3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFNLUG9pbnRU
eXBlOwoKCgpQeU9iamVjdCAqIFNLUG9pbnRfRnJvbVhZKFNLQ29vcmQgeCwgU0tDb29yZCB5KTsK
CmludCBza3BvaW50X2V4dHJhY3RfeHkoUHlPYmplY3QgKiBzZXF1ZW5jZSwgZG91YmxlICogeCwg
ZG91YmxlICogeSk7CgpQeU9iamVjdCAqIHNrcG9pbnRfYWxsb2NhdGVkKFB5T2JqZWN0ICogc2Vs
ZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3QgKiBTS1BvaW50X1B5UG9sYXIoUHlPYmplY3Qg
KiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIFNLUG9pbnRfUHlQb2ludChQeU9i
amVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7CgoKCiMgMjkgIi4vY3VydmVvYmplY3QuYyIg
MgoKIyAyNSAic2tyZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IG9iX3JlZmNudDsg
c3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgU0tDb29yZCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b207Cn0gU0tSZWN0T2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBTS1JlY3RUeXBl
OwoKCmV4dGVybiBTS1JlY3RPYmplY3QgKiBTS1JlY3RfSW5maW5pdHlSZWN0OwpleHRlcm4gU0tS
ZWN0T2JqZWN0ICogU0tSZWN0X0VtcHR5UmVjdDsKClB5T2JqZWN0ICogU0tSZWN0X0Zyb21Eb3Vi
bGUoZG91YmxlIGxlZnQsIGRvdWJsZSB0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlIHJpZ2h0LCBkb3VibGUgYm90dG9tKTsKCmludCBTS1JlY3RfQ29udGFpbnNYWShTS1Jl
Y3RPYmplY3QgKiBzZWxmLCBkb3VibGUgeCwgZG91YmxlIHkpOwoKCmludCBTS1JlY3RfQWRkWFko
U0tSZWN0T2JqZWN0ICogc2VsZiwgZG91YmxlIHgsIGRvdWJsZSB5KTsKaW50IFNLUmVjdF9BZGRY
KFNLUmVjdE9iamVjdCAqIHNlbGYsIGRvdWJsZSB4KTsKaW50IFNLUmVjdF9BZGRZKFNLUmVjdE9i
amVjdCAqIHNlbGYsIGRvdWJsZSB5KTsKCgoKUHlPYmplY3QgKiBza3JlY3RfYWxsb2NhdGVkKFB5
T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3QgKiBza3JlY3RfUG9pbnRz
VG9SZWN0KFB5T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3QgKiBza3Jl
Y3RfaW50ZXJzZWN0KFB5T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3Qg
KiBza3JlY3RfdW5pb25yZWN0cyhQeU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7ClB5
T2JqZWN0ICogc2tyZWN0X3NrcmVjdChQeU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7
CgoKCiMgMzAgIi4vY3VydmVvYmplY3QuYyIgMgoKIyAyNSAic2t0cmFmby5oIiAxCnR5cGVkZWYg
c3RydWN0IHsKICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsK
ICAgIGRvdWJsZSBtMTEsIG0yMSwgbTEyLCBtMjIsIHYxLCB2MjsKfSBTS1RyYWZvT2JqZWN0OwoK
ZXh0ZXJuIFB5VHlwZU9iamVjdCBTS1RyYWZvVHlwZTsKCgoKUHlPYmplY3QgKiBTS1RyYWZvX0Zy
b21Eb3VibGUoZG91YmxlIG0xMSwgZG91YmxlIG0yMSwgZG91YmxlIG0xMiwgZG91YmxlIG0yMiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHYxLCBkb3VibGUgdjIpOwoKdm9p
ZCBTS1RyYWZvX1RyYW5zZm9ybVhZKFB5T2JqZWN0ICogdHJhZm8sIGRvdWJsZSB4LCBkb3VibGUg
eSwKICAgICAgICAgICAgICAgICAgICAgICAgIFNLQ29vcmQgKiBvdXRfeCwgU0tDb29yZCAqIG91
dF95KTsKCnZvaWQgU0tUcmFmb19EVHJhbnNmb3JtWFkoUHlPYmplY3QgKiB0cmFmbywgZG91Ymxl
IHgsIGRvdWJsZSB5LAogICAgICAgICAgICAgICAgICAgICAgICAgIFNLQ29vcmQgKiBvdXRfeCwg
U0tDb29yZCAqIG91dF95KTsKCmV4dGVybiBQeU9iamVjdCAqIFNLVHJhZm9fRXhjU2luZ3VsYXI7
CgpQeU9iamVjdCAqIHNrdHJhZm9fcm90YXRpb24oUHlPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAq
IGFyZ3MpOwpQeU9iamVjdCAqIHNrdHJhZm9fdHJhbnNsYXRpb24oUHlPYmplY3QgKiBzZWxmLCBQ
eU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIHNrdHJhZm9fc2NhbGUoUHlPYmplY3QgKiBzZWxm
LCBQeU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIHNrdHJhZm9fc2t0cmFmbyhQeU9iamVjdCAq
IHNlbGYsIFB5T2JqZWN0ICogYXJncyk7ClB5T2JqZWN0ICogc2t0cmFmb19hbGxvY2F0ZWQoUHlP
YmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwoKCiMgMzEgIi4vY3VydmVvYmplY3QuYyIg
MgoKIyAyOSAiY3VydmVvYmplY3QuaCIgMQp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyIHR5cGU7
CiAgICBjaGFyIGNvbnQ7CiAgICBjaGFyIHNlbGVjdGVkOwogICAgU0tDb29yZCB4MSwgeTEsIHgy
LCB5MjsKCiAgICBTS0Nvb3JkIHgsIHk7Cn0gQ3VydmVTZWdtZW50OwoKIyA2MSAiY3VydmVvYmpl
Y3QuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2Jq
ZWN0ICpvYl90eXBlOwogICAgaW50IGxlbjsKICAgIGludCBhbGxvY2F0ZWQ7CiAgICBDdXJ2ZVNl
Z21lbnQgKiBzZWdtZW50czsKICAgIGNoYXIgY2xvc2VkOwp9IFNLQ3VydmVPYmplY3Q7CgoKCmV4
dGVybiBQeVR5cGVPYmplY3QgU0tDdXJ2ZVR5cGU7CgoKCgpQeU9iamVjdCAqIFNLQ3VydmVfTmV3
KGludCBsZW4pOwoKaW50IFNLQ3VydmVfQXBwZW5kU2VnbWVudChTS0N1cnZlT2JqZWN0ICogc2Vs
ZiwgQ3VydmVTZWdtZW50ICogc2VnbWVudCk7CmludCBTS0N1cnZlX0FwcGVuZExpbmUoU0tDdXJ2
ZU9iamVjdCAqIHNlbGYsIGRvdWJsZSB4LCBkb3VibGUgeSwKICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgY29udGludWl0eSk7CmludCBTS0N1cnZlX0FwcGVuZEJlemllcihTS0N1cnZlT2JqZWN0
ICogc2VsZiwgZG91YmxlIHgxLCBkb3VibGUgeTEsCiAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgeDIsIGRvdWJsZSB5MiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB4LCBk
b3VibGUgeSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb250aW51aXR5KTsKaW50IFNL
Q3VydmVfQ2xvc2VQYXRoKFNLQ3VydmVPYmplY3QgKiBzZWxmKTsKaW50IFNLQ3VydmVfVGVzdFRy
YW5zZm9ybWVkKFNLQ3VydmVPYmplY3QgKiBzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHlPYmplY3QgKiB0cmFmbywgaW50IHRlc3RfeCwgaW50IHRlc3RfeSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBjbG9zZWQpOwppbnQgU0tDdXJ2ZV9UcmFuc2Zvcm0oU0tDdXJ2
ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogdHJhZm8pOwoKCgoKUHlPYmplY3QgKiBfU0tDdXJ2
ZV9OdW1BbGxvY2F0ZWQoUHlPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwppbnQgX1NL
Q3VydmVfSW5pdEN1cnZlT2JqZWN0KHZvaWQpOwoKCgoKCgojIDMyICIuL2N1cnZlb2JqZWN0LmMi
IDIKCiMgMjIgImN1cnZlZHJhdy5oIiAxClB5T2JqZWN0ICogU0tDdXJ2ZV9QeURyYXdUcmFuc2Zv
cm1lZChTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKClB5T2JqZWN0ICog
U0tDdXJ2ZV9QeURyYXdNdWx0aXBhdGgoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7
CgpQeU9iamVjdCAqIFNLQ3VydmVfUHlNdWx0aXBhdGhSZWdpb24oUHlPYmplY3QqIHNlbGYsIFB5
T2JqZWN0ICogYXJncyk7CgoKCiMgMzMgIi4vY3VydmVvYmplY3QuYyIgMgoKIyA1ICJjdXJ2ZWxv
dy5oIiAxCiMgNTIgIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAxIDMKIyA2NyAiL3Vzci9pbmNs
dWRlL1gxMS9YLmgiIDEgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElEOwoKCgp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgTWFzazsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEF0b207Cgp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgVmlzdWFsSUQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBUaW1lOwojIDk3
ICIvdXNyL2luY2x1ZGUvWDExL1guaCIgMwp0eXBlZGVmIFhJRCBXaW5kb3c7CnR5cGVkZWYgWElE
IERyYXdhYmxlOwoKCnR5cGVkZWYgWElEIEZvbnQ7Cgp0eXBlZGVmIFhJRCBQaXhtYXA7CnR5cGVk
ZWYgWElEIEN1cnNvcjsKdHlwZWRlZiBYSUQgQ29sb3JtYXA7CnR5cGVkZWYgWElEIEdDb250ZXh0
Owp0eXBlZGVmIFhJRCBLZXlTeW07Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgS2V5Q29kZTsKCgoK
CgojIDUyICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMiAzCgoKCgojIDY5ICIvdXNyL2luY2x1
ZGUvWDExL1hsaWIuaCIgMwojIDg2ICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMwp0eXBlZGVm
IGNoYXIgKlhQb2ludGVyOwoKIyAxNTggIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAzCnR5cGVk
ZWYgc3RydWN0IF9YRXh0RGF0YSB7CiAgICAgICAgaW50IG51bWJlcjsKICAgICAgICBzdHJ1Y3Qg
X1hFeHREYXRhICpuZXh0OwogICAgICAgIGludCAoKmZyZWVfcHJpdmF0ZSkoCgogICAgICAgIHN0
cnVjdCBfWEV4dERhdGEgKmV4dGVuc2lvbgoKICAgICAgICApOwogICAgICAgIFhQb2ludGVyIHBy
aXZhdGVfZGF0YTsKfSBYRXh0RGF0YTsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQg
ZXh0ZW5zaW9uOwogICAgICAgIGludCBtYWpvcl9vcGNvZGU7CiAgICAgICAgaW50IGZpcnN0X2V2
ZW50OwogICAgICAgIGludCBmaXJzdF9lcnJvcjsKfSBYRXh0Q29kZXM7CgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgaW50IGRlcHRoOwogICAgaW50IGJpdHNfcGVyX3BpeGVsOwogICAgaW50IHNj
YW5saW5lX3BhZDsKfSBYUGl4bWFwRm9ybWF0VmFsdWVzOwoKCgoKCnR5cGVkZWYgc3RydWN0IHsK
ICAgICAgICBpbnQgZnVuY3Rpb247CiAgICAgICAgdW5zaWduZWQgbG9uZyBwbGFuZV9tYXNrOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZm9yZWdyb3VuZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJh
Y2tncm91bmQ7CiAgICAgICAgaW50IGxpbmVfd2lkdGg7CiAgICAgICAgaW50IGxpbmVfc3R5bGU7
CiAgICAgICAgaW50IGNhcF9zdHlsZTsKCiAgICAgICAgaW50IGpvaW5fc3R5bGU7CiAgICAgICAg
aW50IGZpbGxfc3R5bGU7CgogICAgICAgIGludCBmaWxsX3J1bGU7CiAgICAgICAgaW50IGFyY19t
b2RlOwogICAgICAgIFBpeG1hcCB0aWxlOwogICAgICAgIFBpeG1hcCBzdGlwcGxlOwogICAgICAg
IGludCB0c194X29yaWdpbjsKICAgICAgICBpbnQgdHNfeV9vcmlnaW47CiAgICAgICAgRm9udCBm
b250OwogICAgICAgIGludCBzdWJ3aW5kb3dfbW9kZTsKICAgICAgICBpbnQgZ3JhcGhpY3NfZXhw
b3N1cmVzOwogICAgICAgIGludCBjbGlwX3hfb3JpZ2luOwogICAgICAgIGludCBjbGlwX3lfb3Jp
Z2luOwogICAgICAgIFBpeG1hcCBjbGlwX21hc2s7CiAgICAgICAgaW50IGRhc2hfb2Zmc2V0Owog
ICAgICAgIGNoYXIgZGFzaGVzOwp9IFhHQ1ZhbHVlczsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX1hH
QwoKCgoKCgoKKkdDOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFhFeHREYXRhICpleHRf
ZGF0YTsKICAgICAgICBWaXN1YWxJRCB2aXN1YWxpZDsKCgoKICAgICAgICBpbnQgY2xhc3M7Cgog
ICAgICAgIHVuc2lnbmVkIGxvbmcgcmVkX21hc2ssIGdyZWVuX21hc2ssIGJsdWVfbWFzazsKICAg
ICAgICBpbnQgYml0c19wZXJfcmdiOwogICAgICAgIGludCBtYXBfZW50cmllczsKfSBWaXN1YWw7
CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGRlcHRoOwogICAgICAgIGludCBudmlz
dWFsczsKICAgICAgICBWaXN1YWwgKnZpc3VhbHM7Cn0gRGVwdGg7CgoKCgoKCgpzdHJ1Y3QgX1hE
aXNwbGF5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFhFeHREYXRhICpleHRfZGF0YTsKICAg
ICAgICBzdHJ1Y3QgX1hEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyByb290OwogICAg
ICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBtd2lkdGgsIG1oZWlnaHQ7CiAgICAg
ICAgaW50IG5kZXB0aHM7CiAgICAgICAgRGVwdGggKmRlcHRoczsKICAgICAgICBpbnQgcm9vdF9k
ZXB0aDsKICAgICAgICBWaXN1YWwgKnJvb3RfdmlzdWFsOwogICAgICAgIEdDIGRlZmF1bHRfZ2M7
CiAgICAgICAgQ29sb3JtYXAgY21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHdoaXRlX3BpeGVs
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYmxhY2tfcGl4ZWw7CiAgICAgICAgaW50IG1heF9tYXBz
LCBtaW5fbWFwczsKICAgICAgICBpbnQgYmFja2luZ19zdG9yZTsKICAgICAgICBpbnQgc2F2ZV91
bmRlcnM7CiAgICAgICAgbG9uZyByb290X2lucHV0X21hc2s7Cn0gU2NyZWVuOwoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIFhFeHREYXRhICpleHRfZGF0YTsKICAgICAgICBpbnQgZGVwdGg7
CiAgICAgICAgaW50IGJpdHNfcGVyX3BpeGVsOwogICAgICAgIGludCBzY2FubGluZV9wYWQ7Cn0g
U2NyZWVuRm9ybWF0OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgUGl4bWFwIGJhY2tncm91bmRf
cGl4bWFwOwogICAgdW5zaWduZWQgbG9uZyBiYWNrZ3JvdW5kX3BpeGVsOwogICAgUGl4bWFwIGJv
cmRlcl9waXhtYXA7CiAgICB1bnNpZ25lZCBsb25nIGJvcmRlcl9waXhlbDsKICAgIGludCBiaXRf
Z3Jhdml0eTsKICAgIGludCB3aW5fZ3Jhdml0eTsKICAgIGludCBiYWNraW5nX3N0b3JlOwogICAg
dW5zaWduZWQgbG9uZyBiYWNraW5nX3BsYW5lczsKICAgIHVuc2lnbmVkIGxvbmcgYmFja2luZ19w
aXhlbDsKICAgIGludCBzYXZlX3VuZGVyOwogICAgbG9uZyBldmVudF9tYXNrOwogICAgbG9uZyBk
b19ub3RfcHJvcGFnYXRlX21hc2s7CiAgICBpbnQgb3ZlcnJpZGVfcmVkaXJlY3Q7CiAgICBDb2xv
cm1hcCBjb2xvcm1hcDsKICAgIEN1cnNvciBjdXJzb3I7Cn0gWFNldFdpbmRvd0F0dHJpYnV0ZXM7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgeCwgeTsKICAgIGludCB3aWR0aCwgaGVpZ2h0Owog
ICAgaW50IGJvcmRlcl93aWR0aDsKICAgIGludCBkZXB0aDsKICAgIFZpc3VhbCAqdmlzdWFsOwog
ICAgV2luZG93IHJvb3Q7CgoKCiAgICBpbnQgY2xhc3M7CgogICAgaW50IGJpdF9ncmF2aXR5Owog
ICAgaW50IHdpbl9ncmF2aXR5OwogICAgaW50IGJhY2tpbmdfc3RvcmU7CiAgICB1bnNpZ25lZCBs
b25nIGJhY2tpbmdfcGxhbmVzOwogICAgdW5zaWduZWQgbG9uZyBiYWNraW5nX3BpeGVsOwogICAg
aW50IHNhdmVfdW5kZXI7CiAgICBDb2xvcm1hcCBjb2xvcm1hcDsKICAgIGludCBtYXBfaW5zdGFs
bGVkOwogICAgaW50IG1hcF9zdGF0ZTsKICAgIGxvbmcgYWxsX2V2ZW50X21hc2tzOwogICAgbG9u
ZyB5b3VyX2V2ZW50X21hc2s7CiAgICBsb25nIGRvX25vdF9wcm9wYWdhdGVfbWFzazsKICAgIGlu
dCBvdmVycmlkZV9yZWRpcmVjdDsKICAgIFNjcmVlbiAqc2NyZWVuOwp9IFhXaW5kb3dBdHRyaWJ1
dGVzOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBp
bnQgbGVuZ3RoOwogICAgICAgIGNoYXIgKmFkZHJlc3M7Cn0gWEhvc3RBZGRyZXNzOwoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgX1hJbWFnZSB7CiAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgIGludCB4b2Zm
c2V0OwogICAgaW50IGZvcm1hdDsKICAgIGNoYXIgKmRhdGE7CiAgICBpbnQgYnl0ZV9vcmRlcjsK
ICAgIGludCBiaXRtYXBfdW5pdDsKICAgIGludCBiaXRtYXBfYml0X29yZGVyOwogICAgaW50IGJp
dG1hcF9wYWQ7CiAgICBpbnQgZGVwdGg7CiAgICBpbnQgYnl0ZXNfcGVyX2xpbmU7CiAgICBpbnQg
Yml0c19wZXJfcGl4ZWw7CiAgICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrOwogICAgdW5zaWduZWQg
bG9uZyBncmVlbl9tYXNrOwogICAgdW5zaWduZWQgbG9uZyBibHVlX21hc2s7CiAgICBYUG9pbnRl
ciBvYmRhdGE7CiAgICBzdHJ1Y3QgZnVuY3MgewoKICAgICAgICBzdHJ1Y3QgX1hJbWFnZSAqKCpj
cmVhdGVfaW1hZ2UpKAogICAgICAgICAgICAgICAgc3RydWN0IF9YRGlzcGxheSogLAogICAgICAg
ICAgICAgICAgVmlzdWFsKiAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAogICAgICAg
ICAgICAgICAgaW50ICwKICAgICAgICAgICAgICAgIGludCAsCiAgICAgICAgICAgICAgICBjaGFy
KiAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50ICwKICAgICAgICAgICAgICAgIGludCAsCiAgICAgICAgICAgICAgICBpbnQgKTsKICAg
ICAgICBpbnQgKCpkZXN0cm95X2ltYWdlKSAoc3RydWN0IF9YSW1hZ2UgKik7CiAgICAgICAgdW5z
aWduZWQgbG9uZyAoKmdldF9waXhlbCkgKHN0cnVjdCBfWEltYWdlICosIGludCwgaW50KTsKICAg
ICAgICBpbnQgKCpwdXRfcGl4ZWwpIChzdHJ1Y3QgX1hJbWFnZSAqLCBpbnQsIGludCwgdW5zaWdu
ZWQgbG9uZyk7CiAgICAgICAgc3RydWN0IF9YSW1hZ2UgKigqc3ViX2ltYWdlKShzdHJ1Y3QgX1hJ
bWFnZSAqLCBpbnQsIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOwogICAgICAgIGlu
dCAoKmFkZF9waXhlbCkgKHN0cnVjdCBfWEltYWdlICosIGxvbmcpOwojIDQwNCAiL3Vzci9pbmNs
dWRlL1gxMS9YbGliLmgiIDMKICAgICAgICB9IGY7Cn0gWEltYWdlOwoKCgoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgaW50IHgsIHk7CiAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgIGludCBib3JkZXJf
d2lkdGg7CiAgICBXaW5kb3cgc2libGluZzsKICAgIGludCBzdGFja19tb2RlOwp9IFhXaW5kb3dD
aGFuZ2VzOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgcGl4ZWw7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcmVkLCBncmVlbiwgYmx1ZTsKICAgICAgICBjaGFyIGZs
YWdzOwogICAgICAgIGNoYXIgcGFkOwp9IFhDb2xvcjsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgc2hvcnQgeDEsIHkxLCB4MiwgeTI7Cn0gWFNlZ21lbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICBzaG9ydCB4LCB5Owp9IFhQb2ludDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0IHgsIHk7
CiAgICB1bnNpZ25lZCBzaG9ydCB3aWR0aCwgaGVpZ2h0Owp9IFhSZWN0YW5nbGU7Cgp0eXBlZGVm
IHN0cnVjdCB7CiAgICBzaG9ydCB4LCB5OwogICAgdW5zaWduZWQgc2hvcnQgd2lkdGgsIGhlaWdo
dDsKICAgIHNob3J0IGFuZ2xlMSwgYW5nbGUyOwp9IFhBcmM7CgoKCgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgaW50IGtleV9jbGlja19wZXJjZW50OwogICAgICAgIGludCBiZWxsX3BlcmNlbnQ7
CiAgICAgICAgaW50IGJlbGxfcGl0Y2g7CiAgICAgICAgaW50IGJlbGxfZHVyYXRpb247CiAgICAg
ICAgaW50IGxlZDsKICAgICAgICBpbnQgbGVkX21vZGU7CiAgICAgICAgaW50IGtleTsKICAgICAg
ICBpbnQgYXV0b19yZXBlYXRfbW9kZTsKfSBYS2V5Ym9hcmRDb250cm9sOwoKCgp0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgaW50IGtleV9jbGlja19wZXJjZW50OwogICAgICAgIGludCBiZWxsX3Bl
cmNlbnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGJlbGxfcGl0Y2gsIGJlbGxfZHVyYXRpb247CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBsZWRfbWFzazsKICAgICAgICBpbnQgZ2xvYmFsX2F1dG9fcmVw
ZWF0OwogICAgICAgIGNoYXIgYXV0b19yZXBlYXRzWzMyXTsKfSBYS2V5Ym9hcmRTdGF0ZTsKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFRpbWUgdGltZTsKICAgICAgICBzaG9ydCB4LCB5Owp9
IFhUaW1lQ29vcmQ7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgbWF4X2tleXBlcm1v
ZDsKICAgICAgICBLZXlDb2RlICptb2RpZmllcm1hcDsKfSBYTW9kaWZpZXJLZXltYXA7CgoKCgoK
CgoKdHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CgoKc3RydWN0IF9YUHJpdmF0ZTsK
c3RydWN0IF9Ycm1IYXNoQnVja2V0UmVjOwoKdHlwZWRlZiBzdHJ1Y3QKCgoKewogICAgICAgIFhF
eHREYXRhICpleHRfZGF0YTsKICAgICAgICBzdHJ1Y3QgX1hQcml2YXRlICpwcml2YXRlMTsKICAg
ICAgICBpbnQgZmQ7CiAgICAgICAgaW50IHByaXZhdGUyOwogICAgICAgIGludCBwcm90b19tYWpv
cl92ZXJzaW9uOwogICAgICAgIGludCBwcm90b19taW5vcl92ZXJzaW9uOwogICAgICAgIGNoYXIg
KnZlbmRvcjsKICAgICAgICBYSUQgcHJpdmF0ZTM7CiAgICAgICAgWElEIHByaXZhdGU0OwogICAg
ICAgIFhJRCBwcml2YXRlNTsKICAgICAgICBpbnQgcHJpdmF0ZTY7CiAgICAgICAgWElEICgqcmVz
b3VyY2VfYWxsb2MpKAoKICAgICAgICAgICAgICAgIHN0cnVjdCBfWERpc3BsYXkqCgogICAgICAg
ICk7CiAgICAgICAgaW50IGJ5dGVfb3JkZXI7CiAgICAgICAgaW50IGJpdG1hcF91bml0OwogICAg
ICAgIGludCBiaXRtYXBfcGFkOwogICAgICAgIGludCBiaXRtYXBfYml0X29yZGVyOwogICAgICAg
IGludCBuZm9ybWF0czsKICAgICAgICBTY3JlZW5Gb3JtYXQgKnBpeG1hcF9mb3JtYXQ7CiAgICAg
ICAgaW50IHByaXZhdGU4OwogICAgICAgIGludCByZWxlYXNlOwogICAgICAgIHN0cnVjdCBfWFBy
aXZhdGUgKnByaXZhdGU5LCAqcHJpdmF0ZTEwOwogICAgICAgIGludCBxbGVuOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgbGFzdF9yZXF1ZXN0X3JlYWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZXF1
ZXN0OwogICAgICAgIFhQb2ludGVyIHByaXZhdGUxMTsKICAgICAgICBYUG9pbnRlciBwcml2YXRl
MTI7CiAgICAgICAgWFBvaW50ZXIgcHJpdmF0ZTEzOwogICAgICAgIFhQb2ludGVyIHByaXZhdGUx
NDsKICAgICAgICB1bnNpZ25lZCBtYXhfcmVxdWVzdF9zaXplOwogICAgICAgIHN0cnVjdCBfWHJt
SGFzaEJ1Y2tldFJlYyAqZGI7CiAgICAgICAgaW50ICgqcHJpdmF0ZTE1KSgKCiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgX1hEaXNwbGF5KgoKICAgICAgICAgICAgICAgICk7CiAgICAgICAgY2hhciAq
ZGlzcGxheV9uYW1lOwogICAgICAgIGludCBkZWZhdWx0X3NjcmVlbjsKICAgICAgICBpbnQgbnNj
cmVlbnM7CiAgICAgICAgU2NyZWVuICpzY3JlZW5zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW90
aW9uX2J1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHByaXZhdGUxNjsKICAgICAgICBpbnQg
bWluX2tleWNvZGU7CiAgICAgICAgaW50IG1heF9rZXljb2RlOwogICAgICAgIFhQb2ludGVyIHBy
aXZhdGUxNzsKICAgICAgICBYUG9pbnRlciBwcml2YXRlMTg7CiAgICAgICAgaW50IHByaXZhdGUx
OTsKICAgICAgICBjaGFyICp4ZGVmYXVsdHM7Cgp9CgoKCipfWFByaXZEaXNwbGF5OwoKCgoKCgoK
CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5
OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgV2luZG93IHJvb3Q7CiAgICAgICAgV2lu
ZG93IHN1YndpbmRvdzsKICAgICAgICBUaW1lIHRpbWU7CiAgICAgICAgaW50IHgsIHk7CiAgICAg
ICAgaW50IHhfcm9vdCwgeV9yb290OwogICAgICAgIHVuc2lnbmVkIGludCBzdGF0ZTsKICAgICAg
ICB1bnNpZ25lZCBpbnQga2V5Y29kZTsKICAgICAgICBpbnQgc2FtZV9zY3JlZW47Cn0gWEtleUV2
ZW50Owp0eXBlZGVmIFhLZXlFdmVudCBYS2V5UHJlc3NlZEV2ZW50Owp0eXBlZGVmIFhLZXlFdmVu
dCBYS2V5UmVsZWFzZWRFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAg
ICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgV2lu
ZG93IHJvb3Q7CiAgICAgICAgV2luZG93IHN1YndpbmRvdzsKICAgICAgICBUaW1lIHRpbWU7CiAg
ICAgICAgaW50IHgsIHk7CiAgICAgICAgaW50IHhfcm9vdCwgeV9yb290OwogICAgICAgIHVuc2ln
bmVkIGludCBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYnV0dG9uOwogICAgICAgIGludCBz
YW1lX3NjcmVlbjsKfSBYQnV0dG9uRXZlbnQ7CnR5cGVkZWYgWEJ1dHRvbkV2ZW50IFhCdXR0b25Q
cmVzc2VkRXZlbnQ7CnR5cGVkZWYgWEJ1dHRvbkV2ZW50IFhCdXR0b25SZWxlYXNlZEV2ZW50OwoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
c2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7
CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBXaW5kb3cgcm9vdDsKICAgICAgICBXaW5k
b3cgc3Vid2luZG93OwogICAgICAgIFRpbWUgdGltZTsKICAgICAgICBpbnQgeCwgeTsKICAgICAg
ICBpbnQgeF9yb290LCB5X3Jvb3Q7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOwogICAgICAg
IGNoYXIgaXNfaGludDsKICAgICAgICBpbnQgc2FtZV9zY3JlZW47Cn0gWE1vdGlvbkV2ZW50Owp0
eXBlZGVmIFhNb3Rpb25FdmVudCBYUG9pbnRlck1vdmVkRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAg
aW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cg
d2luZG93OwogICAgICAgIFdpbmRvdyByb290OwogICAgICAgIFdpbmRvdyBzdWJ3aW5kb3c7CiAg
ICAgICAgVGltZSB0aW1lOwogICAgICAgIGludCB4LCB5OwogICAgICAgIGludCB4X3Jvb3QsIHlf
cm9vdDsKICAgICAgICBpbnQgbW9kZTsKICAgICAgICBpbnQgZGV0YWlsOwoKCgoKICAgICAgICBp
bnQgc2FtZV9zY3JlZW47CiAgICAgICAgaW50IGZvY3VzOwogICAgICAgIHVuc2lnbmVkIGludCBz
dGF0ZTsKfSBYQ3Jvc3NpbmdFdmVudDsKdHlwZWRlZiBYQ3Jvc3NpbmdFdmVudCBYRW50ZXJXaW5k
b3dFdmVudDsKdHlwZWRlZiBYQ3Jvc3NpbmdFdmVudCBYTGVhdmVXaW5kb3dFdmVudDsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlh
bDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAg
ICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IG1vZGU7CiAgICAgICAgaW50IGRldGFpbDsK
CgoKCgp9IFhGb2N1c0NoYW5nZUV2ZW50Owp0eXBlZGVmIFhGb2N1c0NoYW5nZUV2ZW50IFhGb2N1
c0luRXZlbnQ7CnR5cGVkZWYgWEZvY3VzQ2hhbmdlRXZlbnQgWEZvY3VzT3V0RXZlbnQ7CgoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg
ICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBjaGFyIGtleV92ZWN0b3JbMzJdOwp9IFhLZXlt
YXBFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5
ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHgsIHk7CiAgICAg
ICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgaW50IGNvdW50Owp9IFhFeHBvc2VFdmVudDsK
CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5
OwogICAgICAgIERyYXdhYmxlIGRyYXdhYmxlOwogICAgICAgIGludCB4LCB5OwogICAgICAgIGlu
dCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBjb3VudDsKICAgICAgICBpbnQgbWFqb3JfY29k
ZTsKICAgICAgICBpbnQgbWlub3JfY29kZTsKfSBYR3JhcGhpY3NFeHBvc2VFdmVudDsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlh
bDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAg
ICAgIERyYXdhYmxlIGRyYXdhYmxlOwogICAgICAgIGludCBtYWpvcl9jb2RlOwogICAgICAgIGlu
dCBtaW5vcl9jb2RlOwp9IFhOb0V4cG9zZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg
IGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5k
X2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsK
ICAgICAgICBpbnQgc3RhdGU7Cn0gWFZpc2liaWxpdHlFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsK
ICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBp
bnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBw
YXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBp
bnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9yZGVyX3dpZHRoOwogICAgICAgIGludCBv
dmVycmlkZV9yZWRpcmVjdDsKfSBYQ3JlYXRlV2luZG93RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAg
aW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cg
ZXZlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBYRGVzdHJveVdpbmRvd0V2ZW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg
ICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IGZy
b21fY29uZmlndXJlOwp9IFhVbm1hcEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlu
dCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2
ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAg
ICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IG92ZXJyaWRlX3JlZGlyZWN0Owp9IFhNYXBF
dmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpk
aXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBY
TWFwUmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAg
IERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3
aW5kb3c7CiAgICAgICAgV2luZG93IHBhcmVudDsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBp
bnQgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWFJlcGFyZW50RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAg
aW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cg
ZXZlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBp
bnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9yZGVyX3dpZHRoOwogICAgICAgIFdpbmRv
dyBhYm92ZTsKICAgICAgICBpbnQgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWENvbmZpZ3VyZUV2ZW50
OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3Bs
YXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAg
aW50IHgsIHk7Cn0gWEdyYXZpdHlFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQg
dHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVu
dDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAg
ICAgaW50IHdpZHRoLCBoZWlnaHQ7Cn0gWFJlc2l6ZVJlcXVlc3RFdmVudDsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg
ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp
bmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgeCwgeTsKICAg
ICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9yZGVyX3dpZHRoOwogICAgICAg
IFdpbmRvdyBhYm92ZTsKICAgICAgICBpbnQgZGV0YWlsOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
dmFsdWVfbWFzazsKfSBYQ29uZmlndXJlUmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGlu
dCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2
ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHBsYWNlOwp9IFhDaXJjdWxh
dGVFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5
ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsK
ICAgICAgICBpbnQgcGxhY2U7Cn0gWENpcmN1bGF0ZVJlcXVlc3RFdmVudDsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg
ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp
bmRvdyB3aW5kb3c7CiAgICAgICAgQXRvbSBhdG9tOwogICAgICAgIFRpbWUgdGltZTsKICAgICAg
ICBpbnQgc3RhdGU7Cn0gWFByb3BlcnR5RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAg
aW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRf
ZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93Owog
ICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAgIFRpbWUgdGltZTsKfSBYU2VsZWN0aW9uQ2xl
YXJFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5
ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBvd25lcjsKICAgICAgICBXaW5kb3cgcmVxdWVzdG9y
OwogICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAgIEF0b20gdGFyZ2V0OwogICAgICAgIEF0
b20gcHJvcGVydHk7CiAgICAgICAgVGltZSB0aW1lOwp9IFhTZWxlY3Rpb25SZXF1ZXN0RXZlbnQ7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxh
eTsKICAgICAgICBXaW5kb3cgcmVxdWVzdG9yOwogICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAg
ICAgIEF0b20gdGFyZ2V0OwogICAgICAgIEF0b20gcHJvcGVydHk7CiAgICAgICAgVGltZSB0aW1l
Owp9IFhTZWxlY3Rpb25FdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAg
ICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgQ29s
b3JtYXAgY29sb3JtYXA7CgoKCiAgICAgICAgaW50IG5ldzsKCiAgICAgICAgaW50IHN0YXRlOwp9
IFhDb2xvcm1hcEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAg
IERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBBdG9tIG1l
c3NhZ2VfdHlwZTsKICAgICAgICBpbnQgZm9ybWF0OwogICAgICAgIHVuaW9uIHsKICAgICAgICAg
ICAgICAgIGNoYXIgYlsyMF07CiAgICAgICAgICAgICAgICBzaG9ydCBzWzEwXTsKICAgICAgICAg
ICAgICAgIGxvbmcgbFs1XTsKICAgICAgICAgICAgICAgIH0gZGF0YTsKfSBYQ2xpZW50TWVzc2Fn
ZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkg
KmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgcmVxdWVzdDsKCiAg
ICAgICAgaW50IGZpcnN0X2tleWNvZGU7CiAgICAgICAgaW50IGNvdW50Owp9IFhNYXBwaW5nRXZl
bnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgRGlzcGxheSAq
ZGlzcGxheTsKICAgICAgICBYSUQgcmVzb3VyY2VpZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNl
cmlhbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGVycm9yX2NvZGU7CiAgICAgICAgdW5zaWduZWQg
Y2hhciByZXF1ZXN0X2NvZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBtaW5vcl9jb2RlOwp9IFhF
cnJvckV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3Bs
YXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBYQW55RXZlbnQ7CgoKCgoKdHlw
ZWRlZiB1bmlvbiBfWEV2ZW50IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICBYQW55RXZlbnQg
eGFueTsKICAgICAgICBYS2V5RXZlbnQgeGtleTsKICAgICAgICBYQnV0dG9uRXZlbnQgeGJ1dHRv
bjsKICAgICAgICBYTW90aW9uRXZlbnQgeG1vdGlvbjsKICAgICAgICBYQ3Jvc3NpbmdFdmVudCB4
Y3Jvc3Npbmc7CiAgICAgICAgWEZvY3VzQ2hhbmdlRXZlbnQgeGZvY3VzOwogICAgICAgIFhFeHBv
c2VFdmVudCB4ZXhwb3NlOwogICAgICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50IHhncmFwaGljc2V4
cG9zZTsKICAgICAgICBYTm9FeHBvc2VFdmVudCB4bm9leHBvc2U7CiAgICAgICAgWFZpc2liaWxp
dHlFdmVudCB4dmlzaWJpbGl0eTsKICAgICAgICBYQ3JlYXRlV2luZG93RXZlbnQgeGNyZWF0ZXdp
bmRvdzsKICAgICAgICBYRGVzdHJveVdpbmRvd0V2ZW50IHhkZXN0cm95d2luZG93OwogICAgICAg
IFhVbm1hcEV2ZW50IHh1bm1hcDsKICAgICAgICBYTWFwRXZlbnQgeG1hcDsKICAgICAgICBYTWFw
UmVxdWVzdEV2ZW50IHhtYXByZXF1ZXN0OwogICAgICAgIFhSZXBhcmVudEV2ZW50IHhyZXBhcmVu
dDsKICAgICAgICBYQ29uZmlndXJlRXZlbnQgeGNvbmZpZ3VyZTsKICAgICAgICBYR3Jhdml0eUV2
ZW50IHhncmF2aXR5OwogICAgICAgIFhSZXNpemVSZXF1ZXN0RXZlbnQgeHJlc2l6ZXJlcXVlc3Q7
CiAgICAgICAgWENvbmZpZ3VyZVJlcXVlc3RFdmVudCB4Y29uZmlndXJlcmVxdWVzdDsKICAgICAg
ICBYQ2lyY3VsYXRlRXZlbnQgeGNpcmN1bGF0ZTsKICAgICAgICBYQ2lyY3VsYXRlUmVxdWVzdEV2
ZW50IHhjaXJjdWxhdGVyZXF1ZXN0OwogICAgICAgIFhQcm9wZXJ0eUV2ZW50IHhwcm9wZXJ0eTsK
ICAgICAgICBYU2VsZWN0aW9uQ2xlYXJFdmVudCB4c2VsZWN0aW9uY2xlYXI7CiAgICAgICAgWFNl
bGVjdGlvblJlcXVlc3RFdmVudCB4c2VsZWN0aW9ucmVxdWVzdDsKICAgICAgICBYU2VsZWN0aW9u
RXZlbnQgeHNlbGVjdGlvbjsKICAgICAgICBYQ29sb3JtYXBFdmVudCB4Y29sb3JtYXA7CiAgICAg
ICAgWENsaWVudE1lc3NhZ2VFdmVudCB4Y2xpZW50OwogICAgICAgIFhNYXBwaW5nRXZlbnQgeG1h
cHBpbmc7CiAgICAgICAgWEVycm9yRXZlbnQgeGVycm9yOwogICAgICAgIFhLZXltYXBFdmVudCB4
a2V5bWFwOwogICAgICAgIGxvbmcgcGFkWzI0XTsKfSBYRXZlbnQ7CgoKCgoKCgp0eXBlZGVmIHN0
cnVjdCB7CiAgICBzaG9ydCBsYmVhcmluZzsKICAgIHNob3J0IHJiZWFyaW5nOwogICAgc2hvcnQg
d2lkdGg7CiAgICBzaG9ydCBhc2NlbnQ7CiAgICBzaG9ydCBkZXNjZW50OwogICAgdW5zaWduZWQg
c2hvcnQgYXR0cmlidXRlczsKfSBYQ2hhclN0cnVjdDsKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICBBdG9tIG5hbWU7CiAgICB1bnNpZ25lZCBsb25nIGNhcmQzMjsKfSBYRm9udFByb3A7Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBYRXh0RGF0YSAqZXh0X2RhdGE7CiAgICBGb250IGZpZDsKICAgIHVu
c2lnbmVkIGRpcmVjdGlvbjsKICAgIHVuc2lnbmVkIG1pbl9jaGFyX29yX2J5dGUyOwogICAgdW5z
aWduZWQgbWF4X2NoYXJfb3JfYnl0ZTI7CiAgICB1bnNpZ25lZCBtaW5fYnl0ZTE7CiAgICB1bnNp
Z25lZCBtYXhfYnl0ZTE7CiAgICBpbnQgYWxsX2NoYXJzX2V4aXN0OwogICAgdW5zaWduZWQgZGVm
YXVsdF9jaGFyOwogICAgaW50IG5fcHJvcGVydGllczsKICAgIFhGb250UHJvcCAqcHJvcGVydGll
czsKICAgIFhDaGFyU3RydWN0IG1pbl9ib3VuZHM7CiAgICBYQ2hhclN0cnVjdCBtYXhfYm91bmRz
OwogICAgWENoYXJTdHJ1Y3QgKnBlcl9jaGFyOwogICAgaW50IGFzY2VudDsKICAgIGludCBkZXNj
ZW50Owp9IFhGb250U3RydWN0OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciAqY2hhcnM7
CiAgICBpbnQgbmNoYXJzOwogICAgaW50IGRlbHRhOwogICAgRm9udCBmb250Owp9IFhUZXh0SXRl
bTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2lnbmVkIGNoYXIgYnl0ZTE7CiAgICB1bnNpZ25l
ZCBjaGFyIGJ5dGUyOwp9IFhDaGFyMmI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYQ2hhcjJiICpj
aGFyczsKICAgIGludCBuY2hhcnM7CiAgICBpbnQgZGVsdGE7CiAgICBGb250IGZvbnQ7Cn0gWFRl
eHRJdGVtMTY7CgoKdHlwZWRlZiB1bmlvbiB7IERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgICAg
ICAgICBHQyBnYzsKICAgICAgICAgICAgICAgIFZpc3VhbCAqdmlzdWFsOwogICAgICAgICAgICAg
ICAgU2NyZWVuICpzY3JlZW47CiAgICAgICAgICAgICAgICBTY3JlZW5Gb3JtYXQgKnBpeG1hcF9m
b3JtYXQ7CiAgICAgICAgICAgICAgICBYRm9udFN0cnVjdCAqZm9udDsgfSBYRURhdGFPYmplY3Q7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYUmVjdGFuZ2xlIG1heF9pbmtfZXh0ZW50OwogICAgWFJl
Y3RhbmdsZSBtYXhfbG9naWNhbF9leHRlbnQ7Cn0gWEZvbnRTZXRFeHRlbnRzOwoKCgoKCnR5cGVk
ZWYgc3RydWN0IF9YT00gKlhPTTsKdHlwZWRlZiBzdHJ1Y3QgX1hPQyAqWE9DLCAqWEZvbnRTZXQ7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyICpjaGFyczsKICAgIGludCBuY2hhcnM7CiAgICBp
bnQgZGVsdGE7CiAgICBYRm9udFNldCBmb250X3NldDsKfSBYbWJUZXh0SXRlbTsKCnR5cGVkZWYg
c3RydWN0IHsKICAgIHdjaGFyX3QgKmNoYXJzOwogICAgaW50IG5jaGFyczsKICAgIGludCBkZWx0
YTsKICAgIFhGb250U2V0IGZvbnRfc2V0Owp9IFh3Y1RleHRJdGVtOwoKIyAxMTA4ICIvdXNyL2lu
Y2x1ZGUvWDExL1hsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgY2hhcnNldF9jb3Vu
dDsKICAgIGNoYXIgKipjaGFyc2V0X2xpc3Q7Cn0gWE9NQ2hhclNldExpc3Q7Cgp0eXBlZGVmIGVu
dW0gewogICAgWE9NT3JpZW50YXRpb25fTFRSX1RUQiwKICAgIFhPTU9yaWVudGF0aW9uX1JUTF9U
VEIsCiAgICBYT01PcmllbnRhdGlvbl9UVEJfTFRSLAogICAgWE9NT3JpZW50YXRpb25fVFRCX1JU
TCwKICAgIFhPTU9yaWVudGF0aW9uX0NvbnRleHQKfSBYT3JpZW50YXRpb247Cgp0eXBlZGVmIHN0
cnVjdCB7CiAgICBpbnQgbnVtX29yaWVudGF0aW9uOwogICAgWE9yaWVudGF0aW9uICpvcmllbnRh
dGlvbjsKfSBYT01PcmllbnRhdGlvbjsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBudW1fZm9u
dDsKICAgIFhGb250U3RydWN0ICoqZm9udF9zdHJ1Y3RfbGlzdDsKICAgIGNoYXIgKipmb250X25h
bWVfbGlzdDsKfSBYT01Gb250SW5mbzsKCnR5cGVkZWYgc3RydWN0IF9YSU0gKlhJTTsKdHlwZWRl
ZiBzdHJ1Y3QgX1hJQyAqWElDOwoKdHlwZWRlZiB2b2lkICgqWElNUHJvYykoCgogICAgWElNLAog
ICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5cGVkZWYgaW50ICgqWElDUHJvYykoCgog
ICAgWElDLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5cGVkZWYgdm9pZCAoKlhJ
RFByb2MpKAoKICAgIERpc3BsYXkqLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1TdHlsZTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2ln
bmVkIHNob3J0IGNvdW50X3N0eWxlczsKICAgIFhJTVN0eWxlICpzdXBwb3J0ZWRfc3R5bGVzOwp9
IFhJTVN0eWxlczsKCiMgMTIyNyAiL3Vzci9pbmNsdWRlL1gxMS9YbGliLmgiIDMKdHlwZWRlZiB2
b2lkICpYVmFOZXN0ZWRMaXN0OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgWFBvaW50ZXIgY2xp
ZW50X2RhdGE7CiAgICBYSU1Qcm9jIGNhbGxiYWNrOwp9IFhJTUNhbGxiYWNrOwoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgWFBvaW50ZXIgY2xpZW50X2RhdGE7CiAgICBYSUNQcm9jIGNhbGxiYWNrOwp9
IFhJQ0NhbGxiYWNrOwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJTUZlZWRiYWNrOwoKIyAxMjU0
ICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdCBfWElNVGV4dCB7CiAg
ICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiAgICBYSU1GZWVkYmFjayAqZmVlZGJhY2s7CiAgICBp
bnQgZW5jb2RpbmdfaXNfd2NoYXI7CiAgICB1bmlvbiB7CiAgICAgICAgY2hhciAqbXVsdGlfYnl0
ZTsKICAgICAgICB3Y2hhcl90ICp3aWRlX2NoYXI7CiAgICB9IHN0cmluZzsKfSBYSU1UZXh0OwoK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJTVByZWVkaXRTdGF0ZTsKCgoKCgp0eXBlZGVmIHN0cnVj
dCBfWElNUHJlZWRpdFN0YXRlTm90aWZ5Q2FsbGJhY2tTdHJ1Y3QgewogICAgWElNUHJlZWRpdFN0
YXRlIHN0YXRlOwp9IFhJTVByZWVkaXRTdGF0ZU5vdGlmeUNhbGxiYWNrU3RydWN0OwoKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIFhJTVJlc2V0U3RhdGU7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
WElNU3RyaW5nQ29udmVyc2lvbkZlZWRiYWNrOwoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9YSU1T
dHJpbmdDb252ZXJzaW9uVGV4dCB7CiAgICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiAgICBYSU1T
dHJpbmdDb252ZXJzaW9uRmVlZGJhY2sgKmZlZWRiYWNrOwogICAgaW50IGVuY29kaW5nX2lzX3dj
aGFyOwogICAgdW5pb24gewogICAgICAgIGNoYXIgKm1iczsKICAgICAgICB3Y2hhcl90ICp3Y3M7
CiAgICB9IHN0cmluZzsKfSBYSU1TdHJpbmdDb252ZXJzaW9uVGV4dDsKCnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgWElNU3RyaW5nQ29udmVyc2lvblBvc2l0aW9uOwoKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBYSU1TdHJpbmdDb252ZXJzaW9uVHlwZTsKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBYSU1TdHJpbmdDb252ZXJzaW9uT3BlcmF0aW9uOwoKCgoKdHlwZWRlZiBlbnVtIHsKICAgIFhJ
TUZvcndhcmRDaGFyLCBYSU1CYWNrd2FyZENoYXIsCiAgICBYSU1Gb3J3YXJkV29yZCwgWElNQmFj
a3dhcmRXb3JkLAogICAgWElNQ2FyZXRVcCwgWElNQ2FyZXREb3duLAogICAgWElNTmV4dExpbmUs
IFhJTVByZXZpb3VzTGluZSwKICAgIFhJTUxpbmVTdGFydCwgWElNTGluZUVuZCwKICAgIFhJTUFi
c29sdXRlUG9zaXRpb24sCiAgICBYSU1Eb250Q2hhbmdlCn0gWElNQ2FyZXREaXJlY3Rpb247Cgp0
eXBlZGVmIHN0cnVjdCBfWElNU3RyaW5nQ29udmVyc2lvbkNhbGxiYWNrU3RydWN0IHsKICAgIFhJ
TVN0cmluZ0NvbnZlcnNpb25Qb3NpdGlvbiBwb3NpdGlvbjsKICAgIFhJTUNhcmV0RGlyZWN0aW9u
IGRpcmVjdGlvbjsKICAgIFhJTVN0cmluZ0NvbnZlcnNpb25PcGVyYXRpb24gb3BlcmF0aW9uOwog
ICAgdW5zaWduZWQgc2hvcnQgZmFjdG9yOwogICAgWElNU3RyaW5nQ29udmVyc2lvblRleHQgKnRl
eHQ7Cn0gWElNU3RyaW5nQ29udmVyc2lvbkNhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBzdHJ1Y3Qg
X1hJTVByZWVkaXREcmF3Q2FsbGJhY2tTdHJ1Y3QgewogICAgaW50IGNhcmV0OwogICAgaW50IGNo
Z19maXJzdDsKICAgIGludCBjaGdfbGVuZ3RoOwogICAgWElNVGV4dCAqdGV4dDsKfSBYSU1QcmVl
ZGl0RHJhd0NhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBlbnVtIHsKICAgIFhJTUlzSW52aXNpYmxl
LAogICAgWElNSXNQcmltYXJ5LAogICAgWElNSXNTZWNvbmRhcnkKfSBYSU1DYXJldFN0eWxlOwoK
dHlwZWRlZiBzdHJ1Y3QgX1hJTVByZWVkaXRDYXJldENhbGxiYWNrU3RydWN0IHsKICAgIGludCBw
b3NpdGlvbjsKICAgIFhJTUNhcmV0RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgIFhJTUNhcmV0U3R5
bGUgc3R5bGU7Cn0gWElNUHJlZWRpdENhcmV0Q2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIGVudW0g
ewogICAgWElNVGV4dFR5cGUsCiAgICBYSU1CaXRtYXBUeXBlCn0gWElNU3RhdHVzRGF0YVR5cGU7
Cgp0eXBlZGVmIHN0cnVjdCBfWElNU3RhdHVzRHJhd0NhbGxiYWNrU3RydWN0IHsKICAgIFhJTVN0
YXR1c0RhdGFUeXBlIHR5cGU7CiAgICB1bmlvbiB7CiAgICAgICAgWElNVGV4dCAqdGV4dDsKICAg
ICAgICBQaXhtYXAgYml0bWFwOwogICAgfSBkYXRhOwp9IFhJTVN0YXR1c0RyYXdDYWxsYmFja1N0
cnVjdDsKCnR5cGVkZWYgc3RydWN0IF9YSU1Ib3RLZXlUcmlnZ2VyIHsKICAgIEtleVN5bSBrZXlz
eW07CiAgICBpbnQgbW9kaWZpZXI7CiAgICBpbnQgbW9kaWZpZXJfbWFzazsKfSBYSU1Ib3RLZXlU
cmlnZ2VyOwoKdHlwZWRlZiBzdHJ1Y3QgX1hJTUhvdEtleVRyaWdnZXJzIHsKICAgIGludCBudW1f
aG90X2tleTsKICAgIFhJTUhvdEtleVRyaWdnZXIgKmtleTsKfSBYSU1Ib3RLZXlUcmlnZ2VyczsK
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1Ib3RLZXlTdGF0ZTsKCgoKCnR5cGVkZWYgc3RydWN0
IHsKICAgIHVuc2lnbmVkIHNob3J0IGNvdW50X3ZhbHVlczsKICAgIGNoYXIgKipzdXBwb3J0ZWRf
dmFsdWVzOwp9IFhJTVZhbHVlc0xpc3Q7CgoKCgoKCgpleHRlcm4gaW50IF9YZGVidWc7CgpleHRl
cm4gWEZvbnRTdHJ1Y3QgKlhMb2FkUXVlcnlGb250KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0
IGNoYXIqCgopOwoKZXh0ZXJuIFhGb250U3RydWN0ICpYUXVlcnlGb250KAoKICAgIERpc3BsYXkq
ICwKICAgIFhJRAoKKTsKCgpleHRlcm4gWFRpbWVDb29yZCAqWEdldE1vdGlvbkV2ZW50cygKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgVGltZSAsCiAgICBUaW1lICwKICAgIGludCoK
Cik7CgpleHRlcm4gWE1vZGlmaWVyS2V5bWFwICpYRGVsZXRlTW9kaWZpZXJtYXBFbnRyeSgKCiAg
ICBYTW9kaWZpZXJLZXltYXAqICwKCiAgICB1bnNpZ25lZCBpbnQgLAoKCgogICAgaW50CgopOwoK
ZXh0ZXJuIFhNb2RpZmllcktleW1hcCAqWEdldE1vZGlmaWVyTWFwcGluZygKCiAgICBEaXNwbGF5
KgoKKTsKCmV4dGVybiBYTW9kaWZpZXJLZXltYXAgKlhJbnNlcnRNb2RpZmllcm1hcEVudHJ5KAoK
ICAgIFhNb2RpZmllcktleW1hcCogLAoKICAgIHVuc2lnbmVkIGludCAsCgoKCiAgICBpbnQKCik7
CgpleHRlcm4gWE1vZGlmaWVyS2V5bWFwICpYTmV3TW9kaWZpZXJtYXAoCgogICAgaW50CgopOwoK
ZXh0ZXJuIFhJbWFnZSAqWENyZWF0ZUltYWdlKAoKICAgIERpc3BsYXkqICwKICAgIFZpc3VhbCog
LAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY2hhciogLAogICAg
dW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwpl
eHRlcm4gaW50IFhJbml0SW1hZ2UoCgogICAgWEltYWdlKgoKKTsKZXh0ZXJuIFhJbWFnZSAqWEdl
dEltYWdlKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIGludCAsCiAgICBpbnQg
LAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBsb25n
ICwKICAgIGludAoKKTsKZXh0ZXJuIFhJbWFnZSAqWEdldFN1YkltYWdlKAoKICAgIERpc3BsYXkq
ICwKICAgIERyYXdhYmxlICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwK
ICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIGludCAsCiAgICBYSW1h
Z2UqICwKICAgIGludCAsCiAgICBpbnQKCik7CgoKCgpleHRlcm4gRGlzcGxheSAqWE9wZW5EaXNw
bGF5KAoKICAgIGNvbnN0IGNoYXIqCgopOwoKZXh0ZXJuIHZvaWQgWHJtSW5pdGlhbGl6ZSgKCiAg
ICB2b2lkCgopOwoKZXh0ZXJuIGNoYXIgKlhGZXRjaEJ5dGVzKAoKICAgIERpc3BsYXkqICwKICAg
IGludCoKCik7CmV4dGVybiBjaGFyICpYRmV0Y2hCdWZmZXIoCgogICAgRGlzcGxheSogLAogICAg
aW50KiAsCiAgICBpbnQKCik7CmV4dGVybiBjaGFyICpYR2V0QXRvbU5hbWUoCgogICAgRGlzcGxh
eSogLAogICAgQXRvbQoKKTsKZXh0ZXJuIGludCBYR2V0QXRvbU5hbWVzKAoKICAgIERpc3BsYXkq
ICwKICAgIEF0b20qICwKICAgIGludCAsCiAgICBjaGFyKioKCik7CmV4dGVybiBjaGFyICpYR2V0
RGVmYXVsdCgKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBjb25zdCBjaGFy
KgoKKTsKZXh0ZXJuIGNoYXIgKlhEaXNwbGF5TmFtZSgKCiAgICBjb25zdCBjaGFyKgoKKTsKZXh0
ZXJuIGNoYXIgKlhLZXlzeW1Ub1N0cmluZygKCiAgICBLZXlTeW0KCik7CgpleHRlcm4gaW50ICgq
WFN5bmNocm9uaXplKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKSkoCgogICAgRGlzcGxheSoK
Cik7CmV4dGVybiBpbnQgKCpYU2V0QWZ0ZXJGdW5jdGlvbigKCiAgICBEaXNwbGF5KiAsCiAgICBp
bnQgKCopICgKCiAgICAgICAgICAgICBEaXNwbGF5KgoKICAgICAgICAgICAgKQoKKSkoCgogICAg
RGlzcGxheSoKCik7CmV4dGVybiBBdG9tIFhJbnRlcm5BdG9tKAoKICAgIERpc3BsYXkqICwKICAg
IGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKZXh0ZXJuIGludCBYSW50ZXJuQXRvbXMoCgogICAg
RGlzcGxheSogLAogICAgY2hhcioqICwKICAgIGludCAsCiAgICBpbnQgLAogICAgQXRvbSoKCik7
CmV4dGVybiBDb2xvcm1hcCBYQ29weUNvbG9ybWFwQW5kRnJlZSgKCiAgICBEaXNwbGF5KiAsCiAg
ICBDb2xvcm1hcAoKKTsKZXh0ZXJuIENvbG9ybWFwIFhDcmVhdGVDb2xvcm1hcCgKCiAgICBEaXNw
bGF5KiAsCiAgICBXaW5kb3cgLAogICAgVmlzdWFsKiAsCiAgICBpbnQKCik7CmV4dGVybiBDdXJz
b3IgWENyZWF0ZVBpeG1hcEN1cnNvcigKCiAgICBEaXNwbGF5KiAsCiAgICBQaXhtYXAgLAogICAg
UGl4bWFwICwKICAgIFhDb2xvciogLAogICAgWENvbG9yKiAsCiAgICB1bnNpZ25lZCBpbnQgLAog
ICAgdW5zaWduZWQgaW50CgopOwpleHRlcm4gQ3Vyc29yIFhDcmVhdGVHbHlwaEN1cnNvcigKCiAg
ICBEaXNwbGF5KiAsCiAgICBGb250ICwKICAgIEZvbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAg
IHVuc2lnbmVkIGludCAsCiAgICBYQ29sb3IgY29uc3QgKiAsCiAgICBYQ29sb3IgY29uc3QgKgoK
KTsKZXh0ZXJuIEN1cnNvciBYQ3JlYXRlRm9udEN1cnNvcigKCiAgICBEaXNwbGF5KiAsCiAgICB1
bnNpZ25lZCBpbnQKCik7CmV4dGVybiBGb250IFhMb2FkRm9udCgKCiAgICBEaXNwbGF5KiAsCiAg
ICBjb25zdCBjaGFyKgoKKTsKZXh0ZXJuIEdDIFhDcmVhdGVHQygKCiAgICBEaXNwbGF5KiAsCiAg
ICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIFhHQ1ZhbHVlcyoKCik7CmV4dGVy
biBHQ29udGV4dCBYR0NvbnRleHRGcm9tR0MoCgogICAgR0MKCik7CmV4dGVybiB2b2lkIFhGbHVz
aEdDKAoKICAgIERpc3BsYXkqICwKICAgIEdDCgopOwpleHRlcm4gUGl4bWFwIFhDcmVhdGVQaXht
YXAoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgdW5zaWduZWQgaW50ICwKICAg
IHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CmV4dGVybiBQaXhtYXAgWENyZWF0
ZUJpdG1hcEZyb21EYXRhKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIGNvbnN0
IGNoYXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CmV4dGVybiBQ
aXhtYXAgWENyZWF0ZVBpeG1hcEZyb21CaXRtYXBEYXRhKAoKICAgIERpc3BsYXkqICwKICAgIERy
YXdhYmxlICwKICAgIGNoYXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQg
LAogICAgdW5zaWduZWQgbG9uZyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIHVuc2lnbmVkIGlu
dAoKKTsKZXh0ZXJuIFdpbmRvdyBYQ3JlYXRlU2ltcGxlV2luZG93KAoKICAgIERpc3BsYXkqICwK
ICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1
bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAg
dW5zaWduZWQgbG9uZwoKKTsKZXh0ZXJuIFdpbmRvdyBYR2V0U2VsZWN0aW9uT3duZXIoCgogICAg
RGlzcGxheSogLAogICAgQXRvbQoKKTsKZXh0ZXJuIFdpbmRvdyBYQ3JlYXRlV2luZG93KAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAg
ICB1bnNpZ25lZCBpbnQgLAogICAgVmlzdWFsKiAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIFhT
ZXRXaW5kb3dBdHRyaWJ1dGVzKgoKKTsKZXh0ZXJuIENvbG9ybWFwICpYTGlzdEluc3RhbGxlZENv
bG9ybWFwcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50KgoKKTsKZXh0ZXJu
IGNoYXIgKipYTGlzdEZvbnRzKAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAg
IGludCAsCiAgICBpbnQqCgopOwpleHRlcm4gY2hhciAqKlhMaXN0Rm9udHNXaXRoSW5mbygKCiAg
ICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBY
Rm9udFN0cnVjdCoqCgopOwpleHRlcm4gY2hhciAqKlhHZXRGb250UGF0aCgKCiAgICBEaXNwbGF5
KiAsCiAgICBpbnQqCgopOwpleHRlcm4gY2hhciAqKlhMaXN0RXh0ZW5zaW9ucygKCiAgICBEaXNw
bGF5KiAsCiAgICBpbnQqCgopOwpleHRlcm4gQXRvbSAqWExpc3RQcm9wZXJ0aWVzKAoKICAgIERp
c3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQqCgopOwpleHRlcm4gWEhvc3RBZGRyZXNzICpY
TGlzdEhvc3RzKAoKICAgIERpc3BsYXkqICwKICAgIGludCogLAogICAgaW50KgoKKTsKZXh0ZXJu
IEtleVN5bSBYS2V5Y29kZVRvS2V5c3ltKAoKICAgIERpc3BsYXkqICwKCiAgICB1bnNpZ25lZCBp
bnQgLAoKCgogICAgaW50CgopOwpleHRlcm4gS2V5U3ltIFhMb29rdXBLZXlzeW0oCgogICAgWEtl
eUV2ZW50KiAsCiAgICBpbnQKCik7CmV4dGVybiBLZXlTeW0gKlhHZXRLZXlib2FyZE1hcHBpbmco
CgogICAgRGlzcGxheSogLAoKICAgIHVuc2lnbmVkIGludCAsCgoKCiAgICBpbnQgLAogICAgaW50
KgoKKTsKZXh0ZXJuIEtleVN5bSBYU3RyaW5nVG9LZXlzeW0oCgogICAgY29uc3QgY2hhcioKCik7
CmV4dGVybiBsb25nIFhNYXhSZXF1ZXN0U2l6ZSgKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIGxv
bmcgWEV4dGVuZGVkTWF4UmVxdWVzdFNpemUoCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBjaGFy
ICpYUmVzb3VyY2VNYW5hZ2VyU3RyaW5nKAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gY2hhciAq
WFNjcmVlblJlc291cmNlU3RyaW5nKAoKICAgICAgICBTY3JlZW4qCgopOwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBYRGlzcGxheU1vdGlvbkJ1ZmZlclNpemUoCgogICAgRGlzcGxheSoKCik7CmV4dGVy
biBWaXN1YWxJRCBYVmlzdWFsSURGcm9tVmlzdWFsKAoKICAgIFZpc3VhbCoKCik7CgoKCmV4dGVy
biBpbnQgWEluaXRUaHJlYWRzKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBYTG9ja0Rpc3Bs
YXkoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gdm9pZCBYVW5sb2NrRGlzcGxheSgKCiAgICBE
aXNwbGF5KgoKKTsKCgoKZXh0ZXJuIFhFeHRDb2RlcyAqWEluaXRFeHRlbnNpb24oCgogICAgRGlz
cGxheSogLAogICAgY29uc3QgY2hhcioKCik7CgpleHRlcm4gWEV4dENvZGVzICpYQWRkRXh0ZW5z
aW9uKAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gWEV4dERhdGEgKlhGaW5kT25FeHRlbnNpb25M
aXN0KAoKICAgIFhFeHREYXRhKiogLAogICAgaW50CgopOwpleHRlcm4gWEV4dERhdGEgKipYRUhl
YWRPZkV4dGVuc2lvbkxpc3QoCgogICAgWEVEYXRhT2JqZWN0CgopOwoKCmV4dGVybiBXaW5kb3cg
WFJvb3RXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwpleHRlcm4gV2luZG93IFhE
ZWZhdWx0Um9vdFdpbmRvdygKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIFdpbmRvdyBYUm9vdFdp
bmRvd09mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CmV4dGVybiBWaXN1YWwgKlhEZWZhdWx0Vmlz
dWFsKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKZXh0ZXJuIFZpc3VhbCAqWERlZmF1bHRW
aXN1YWxPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwpleHRlcm4gR0MgWERlZmF1bHRHQygKCiAg
ICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiBHQyBYRGVmYXVsdEdDT2ZTY3JlZW4oCgog
ICAgU2NyZWVuKgoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWEJsYWNrUGl4ZWwoCgogICAgRGlz
cGxheSogLAogICAgaW50CgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYV2hpdGVQaXhlbCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhBbGxQbGFuZXMo
CgogICAgdm9pZAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWEJsYWNrUGl4ZWxPZlNjcmVlbigK
CiAgICBTY3JlZW4qCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYV2hpdGVQaXhlbE9mU2NyZWVu
KAoKICAgIFNjcmVlbioKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhOZXh0UmVxdWVzdCgKCiAg
ICBEaXNwbGF5KgoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWExhc3RLbm93blJlcXVlc3RQcm9j
ZXNzZWQoCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBjaGFyICpYU2VydmVyVmVuZG9yKAoKICAg
IERpc3BsYXkqCgopOwpleHRlcm4gY2hhciAqWERpc3BsYXlTdHJpbmcoCgogICAgRGlzcGxheSoK
Cik7CmV4dGVybiBDb2xvcm1hcCBYRGVmYXVsdENvbG9ybWFwKAoKICAgIERpc3BsYXkqICwKICAg
IGludAoKKTsKZXh0ZXJuIENvbG9ybWFwIFhEZWZhdWx0Q29sb3JtYXBPZlNjcmVlbigKCiAgICBT
Y3JlZW4qCgopOwpleHRlcm4gRGlzcGxheSAqWERpc3BsYXlPZlNjcmVlbigKCiAgICBTY3JlZW4q
CgopOwpleHRlcm4gU2NyZWVuICpYU2NyZWVuT2ZEaXNwbGF5KAoKICAgIERpc3BsYXkqICwKICAg
IGludAoKKTsKZXh0ZXJuIFNjcmVlbiAqWERlZmF1bHRTY3JlZW5PZkRpc3BsYXkoCgogICAgRGlz
cGxheSoKCik7CmV4dGVybiBsb25nIFhFdmVudE1hc2tPZlNjcmVlbigKCiAgICBTY3JlZW4qCgop
OwoKZXh0ZXJuIGludCBYU2NyZWVuTnVtYmVyT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCnR5
cGVkZWYgaW50ICgqWEVycm9ySGFuZGxlcikgKAoKICAgIERpc3BsYXkqICwKICAgIFhFcnJvckV2
ZW50KgoKKTsKCmV4dGVybiBYRXJyb3JIYW5kbGVyIFhTZXRFcnJvckhhbmRsZXIgKAoKICAgIFhF
cnJvckhhbmRsZXIKCik7CgoKdHlwZWRlZiBpbnQgKCpYSU9FcnJvckhhbmRsZXIpICgKCiAgICBE
aXNwbGF5KgoKKTsKCmV4dGVybiBYSU9FcnJvckhhbmRsZXIgWFNldElPRXJyb3JIYW5kbGVyICgK
CiAgICBYSU9FcnJvckhhbmRsZXIKCik7CgoKZXh0ZXJuIFhQaXhtYXBGb3JtYXRWYWx1ZXMgKlhM
aXN0UGl4bWFwRm9ybWF0cygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQqCgopOwpleHRlcm4gaW50
ICpYTGlzdERlcHRocygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgaW50KgoKKTsKCgoK
ZXh0ZXJuIGludCBYUmVjb25maWd1cmVXTVdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k
b3cgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBYV2luZG93Q2hhbmdlcyoKCik7
CgpleHRlcm4gaW50IFhHZXRXTVByb3RvY29scygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgQXRvbSoqICwKICAgIGludCoKCik7CmV4dGVybiBpbnQgWFNldFdNUHJvdG9jb2xzKAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBBdG9tKiAsCiAgICBpbnQKCik7CmV4dGVy
biBpbnQgWEljb25pZnlXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGlu
dAoKKTsKZXh0ZXJuIGludCBYV2l0aGRyYXdXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2lu
ZG93ICwKICAgIGludAoKKTsKZXh0ZXJuIGludCBYR2V0Q29tbWFuZCgKCiAgICBEaXNwbGF5KiAs
CiAgICBXaW5kb3cgLAogICAgY2hhcioqKiAsCiAgICBpbnQqCgopOwpleHRlcm4gaW50IFhHZXRX
TUNvbG9ybWFwV2luZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93
KiogLAogICAgaW50KgoKKTsKZXh0ZXJuIGludCBYU2V0V01Db2xvcm1hcFdpbmRvd3MoCgogICAg
RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyogLAogICAgaW50CgopOwpleHRlcm4g
dm9pZCBYRnJlZVN0cmluZ0xpc3QoCgogICAgY2hhcioqCgopOwpleHRlcm4gaW50IFhTZXRUcmFu
c2llbnRGb3JIaW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cKCik7
CgoKCmV4dGVybiBpbnQgWEFjdGl2YXRlU2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSoKCik7Cgpl
eHRlcm4gaW50IFhBZGRIb3N0KAoKICAgIERpc3BsYXkqICwKICAgIFhIb3N0QWRkcmVzcyoKCik7
CgpleHRlcm4gaW50IFhBZGRIb3N0cygKCiAgICBEaXNwbGF5KiAsCiAgICBYSG9zdEFkZHJlc3Mq
ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEFkZFRvRXh0ZW5zaW9uTGlzdCgKCiAgICBzdHJ1
Y3QgX1hFeHREYXRhKiogLAogICAgWEV4dERhdGEqCgopOwoKZXh0ZXJuIGludCBYQWRkVG9TYXZl
U2V0KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWEFsbG9jQ29s
b3IoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgWENvbG9yKgoKKTsKCmV4dGVy
biBpbnQgWEFsbG9jQ29sb3JDZWxscygKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAg
ICBpbnQgLAogICAgdW5zaWduZWQgbG9uZyogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2ln
bmVkIGxvbmcqICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWEFsbG9jQ29sb3JQ
bGFuZXMoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgaW50ICwKICAgIHVuc2ln
bmVkIGxvbmcqICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1
bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBsb25nKgoK
KTsKCmV4dGVybiBpbnQgWEFsbG9jTmFtZWRDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xv
cm1hcCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBYQ29sb3IqICwKICAgIFhDb2xvcioKCik7Cgpl
eHRlcm4gaW50IFhBbGxvd0V2ZW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgVGlt
ZQoKKTsKCmV4dGVybiBpbnQgWEF1dG9SZXBlYXRPZmYoCgogICAgRGlzcGxheSoKCik7CgpleHRl
cm4gaW50IFhBdXRvUmVwZWF0T24oCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhCZWxs
KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEJpdG1hcEJpdE9yZGVy
KAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYQml0bWFwUGFkKAoKICAgIERpc3BsYXkq
CgopOwoKZXh0ZXJuIGludCBYQml0bWFwVW5pdCgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBp
bnQgWENlbGxzT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWENoYW5nZUFj
dGl2ZVBvaW50ZXJHcmFiKAoKICAgIERpc3BsYXkqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBD
dXJzb3IgLAogICAgVGltZQoKKTsKCmV4dGVybiBpbnQgWENoYW5nZUdDKAoKICAgIERpc3BsYXkq
ICwKICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgWEdDVmFsdWVzKgoKKTsKCmV4dGVy
biBpbnQgWENoYW5nZUtleWJvYXJkQ29udHJvbCgKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25l
ZCBsb25nICwKICAgIFhLZXlib2FyZENvbnRyb2wqCgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlS2V5
Ym9hcmRNYXBwaW5nKAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBpbnQgLAogICAgS2V5
U3ltKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VQb2ludGVyQ29udHJvbCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlUHJvcGVydHkoCgogICAgRGlzcGxheSogLAogICAg
V2luZG93ICwKICAgIEF0b20gLAogICAgQXRvbSAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENoYW5nZVNhdmVT
ZXQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQg
WENoYW5nZVdpbmRvd0F0dHJpYnV0ZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IHVuc2lnbmVkIGxvbmcgLAogICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMqCgopOwoKZXh0ZXJuIGlu
dCBYQ2hlY2tJZkV2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCogLAogICAgaW50ICgq
KSAoCgogICAgICAgICAgICAgICBEaXNwbGF5KiAsCiAgICAgICAgICAgICAgIFhFdmVudCogLAog
ICAgICAgICAgICAgICBYUG9pbnRlcgoKICAgICAgICAgICAgICkgLAogICAgWFBvaW50ZXIKCik7
CgpleHRlcm4gaW50IFhDaGVja01hc2tFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBsb25nICwK
ICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhDaGVja1R5cGVkRXZlbnQoCgogICAgRGlzcGxh
eSogLAogICAgaW50ICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhDaGVja1R5cGVkV2lu
ZG93RXZlbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBYRXZl
bnQqCgopOwoKZXh0ZXJuIGludCBYQ2hlY2tXaW5kb3dFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAg
ICBXaW5kb3cgLAogICAgbG9uZyAsCiAgICBYRXZlbnQqCgopOwoKZXh0ZXJuIGludCBYQ2lyY3Vs
YXRlU3Vid2luZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYQ2lyY3VsYXRlU3Vid2luZG93c0Rvd24oCgogICAgRGlzcGxheSogLAogICAg
V2luZG93CgopOwoKZXh0ZXJuIGludCBYQ2lyY3VsYXRlU3Vid2luZG93c1VwKAoKICAgIERpc3Bs
YXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWENsZWFyQXJlYSgKCiAgICBEaXNwbGF5
KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAog
ICAgdW5zaWduZWQgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENsZWFyV2luZG93KAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWENsb3NlRGlzcGxheSgK
CiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWENvbmZpZ3VyZVdpbmRvdygKCiAgICBEaXNw
bGF5KiAsCiAgICBXaW5kb3cgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFhXaW5kb3dDaGFuZ2Vz
KgoKKTsKCmV4dGVybiBpbnQgWENvbm5lY3Rpb25OdW1iZXIoCgogICAgRGlzcGxheSoKCik7Cgpl
eHRlcm4gaW50IFhDb252ZXJ0U2VsZWN0aW9uKAoKICAgIERpc3BsYXkqICwKICAgIEF0b20gLAog
ICAgQXRvbSAsCiAgICBBdG9tICwKICAgIFdpbmRvdyAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGlu
dCBYQ29weUFyZWEoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgRHJhd2FibGUg
LAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhDb3B5R0MoCgog
ICAgRGlzcGxheSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBHQwoKKTsKCmV4
dGVybiBpbnQgWENvcHlQbGFuZSgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBE
cmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAs
CiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBsb25n
CgopOwoKZXh0ZXJuIGludCBYRGVmYXVsdERlcHRoKAoKICAgIERpc3BsYXkqICwKICAgIGludAoK
KTsKCmV4dGVybiBpbnQgWERlZmF1bHREZXB0aE9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7Cgpl
eHRlcm4gaW50IFhEZWZhdWx0U2NyZWVuKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBY
RGVmaW5lQ3Vyc29yKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBDdXJzb3IKCik7
CgpleHRlcm4gaW50IFhEZWxldGVQcm9wZXJ0eSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgQXRvbQoKKTsKCmV4dGVybiBpbnQgWERlc3Ryb3lXaW5kb3coCgogICAgRGlzcGxheSog
LAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYRGVzdHJveVN1YndpbmRvd3MoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYRG9lc0JhY2tpbmdTdG9yZSgKCiAg
ICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYRG9lc1NhdmVVbmRlcnMoCgogICAgU2NyZWVuKgoK
KTsKCmV4dGVybiBpbnQgWERpc2FibGVBY2Nlc3NDb250cm9sKAoKICAgIERpc3BsYXkqCgopOwoK
CmV4dGVybiBpbnQgWERpc3BsYXlDZWxscygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7Cgpl
eHRlcm4gaW50IFhEaXNwbGF5SGVpZ2h0KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4
dGVybiBpbnQgWERpc3BsYXlIZWlnaHRNTSgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7Cgpl
eHRlcm4gaW50IFhEaXNwbGF5S2V5Y29kZXMoCgogICAgRGlzcGxheSogLAogICAgaW50KiAsCiAg
ICBpbnQqCgopOwoKZXh0ZXJuIGludCBYRGlzcGxheVBsYW5lcygKCiAgICBEaXNwbGF5KiAsCiAg
ICBpbnQKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5V2lkdGgoCgogICAgRGlzcGxheSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRGlzcGxheVdpZHRoTU0oCgogICAgRGlzcGxheSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0FyYygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJs
ZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1
bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdBcmNz
KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhBcmMqICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdJbWFnZVN0cmluZygKCiAgICBEaXNwbGF5KiAsCiAg
ICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdJbWFnZVN0cmluZzE2KAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29u
c3QgWENoYXIyYiogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0xpbmUoCgogICAgRGlz
cGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBp
bnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0xpbmVzKAoKICAgIERpc3BsYXkqICwK
ICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhQb2ludCogLAogICAgaW50ICwKICAgIGludAoK
KTsKCmV4dGVybiBpbnQgWERyYXdQb2ludCgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAs
CiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1BvaW50cygK
CiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYUG9pbnQqICwKICAg
IGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3UmVjdGFuZ2xlKAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdSZWN0YW5n
bGVzKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhSZWN0YW5n
bGUqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdTZWdtZW50cygKCiAgICBEaXNwbGF5
KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYU2VnbWVudCogLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYRHJhd1N0cmluZygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAg
ICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsK
CmV4dGVybiBpbnQgWERyYXdTdHJpbmcxNigKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAs
CiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IFhDaGFyMmIqICwKICAgIGlu
dAoKKTsKCmV4dGVybiBpbnQgWERyYXdUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl
ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWFRleHRJdGVtKiAsCiAgICBpbnQK
Cik7CgpleHRlcm4gaW50IFhEcmF3VGV4dDE2KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl
ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWFRleHRJdGVtMTYqICwKICAgIGlu
dAoKKTsKCmV4dGVybiBpbnQgWEVuYWJsZUFjY2Vzc0NvbnRyb2woCgogICAgRGlzcGxheSoKCik7
CgpleHRlcm4gaW50IFhFdmVudHNRdWV1ZWQoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYRmV0Y2hOYW1lKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBj
aGFyKioKCik7CgpleHRlcm4gaW50IFhGaWxsQXJjKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdh
YmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAg
IHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRmlsbEFy
Y3MoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWEFyYyogLAog
ICAgaW50CgopOwoKZXh0ZXJuIGludCBYRmlsbFBvbHlnb24oCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgR0MgLAogICAgWFBvaW50KiAsCiAgICBpbnQgLAogICAgaW50ICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWEZpbGxSZWN0YW5nbGUoCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQg
LAogICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYRmlsbFJlY3RhbmdsZXMoCgogICAg
RGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWFJlY3RhbmdsZSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRmx1c2goCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50
IFhGb3JjZVNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4dGVybiBp
bnQgWEZyZWUoCgogICAgdm9pZCoKCik7CgpleHRlcm4gaW50IFhGcmVlQ29sb3JtYXAoCgogICAg
RGlzcGxheSogLAogICAgQ29sb3JtYXAKCik7CgpleHRlcm4gaW50IFhGcmVlQ29sb3JzKAoKICAg
IERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIHVuc2lnbmVkIGxvbmcqICwKICAgIGludCAs
CiAgICB1bnNpZ25lZCBsb25nCgopOwoKZXh0ZXJuIGludCBYRnJlZUN1cnNvcigKCiAgICBEaXNw
bGF5KiAsCiAgICBDdXJzb3IKCik7CgpleHRlcm4gaW50IFhGcmVlRXh0ZW5zaW9uTGlzdCgKCiAg
ICBjaGFyKioKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udCgKCiAgICBEaXNwbGF5KiAsCiAgICBY
Rm9udFN0cnVjdCoKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udEluZm8oCgogICAgY2hhcioqICwK
ICAgIFhGb250U3RydWN0KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udE5hbWVz
KAoKICAgIGNoYXIqKgoKKTsKCmV4dGVybiBpbnQgWEZyZWVGb250UGF0aCgKCiAgICBjaGFyKioK
Cik7CgpleHRlcm4gaW50IFhGcmVlR0MoCgogICAgRGlzcGxheSogLAogICAgR0MKCik7CgpleHRl
cm4gaW50IFhGcmVlTW9kaWZpZXJtYXAoCgogICAgWE1vZGlmaWVyS2V5bWFwKgoKKTsKCmV4dGVy
biBpbnQgWEZyZWVQaXhtYXAoCgogICAgRGlzcGxheSogLAogICAgUGl4bWFwCgopOwoKZXh0ZXJu
IGludCBYR2VvbWV0cnkoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQg
LAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBp
bnQqICwKICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdldEVycm9yRGF0YWJh
c2VUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQg
WEdldEVycm9yVGV4dCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgY2hhciogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYR2V0Rm9udFByb3BlcnR5KAoKICAgIFhGb250U3RydWN0KiAs
CiAgICBBdG9tICwKICAgIHVuc2lnbmVkIGxvbmcqCgopOwoKZXh0ZXJuIGludCBYR2V0R0NWYWx1
ZXMoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBYR0NW
YWx1ZXMqCgopOwoKZXh0ZXJuIGludCBYR2V0R2VvbWV0cnkoCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgV2luZG93KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgdW5zaWdu
ZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5z
aWduZWQgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdldEljb25OYW1lKAoKICAgIERpc3BsYXkqICwK
ICAgIFdpbmRvdyAsCiAgICBjaGFyKioKCik7CgpleHRlcm4gaW50IFhHZXRJbnB1dEZvY3VzKAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdl
dEtleWJvYXJkQ29udHJvbCgKCiAgICBEaXNwbGF5KiAsCiAgICBYS2V5Ym9hcmRTdGF0ZSoKCik7
CgpleHRlcm4gaW50IFhHZXRQb2ludGVyQ29udHJvbCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQq
ICwKICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdldFBvaW50ZXJNYXBwaW5n
KAoKICAgIERpc3BsYXkqICwKICAgIHVuc2lnbmVkIGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVy
biBpbnQgWEdldFNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkqICwKICAgIGludCogLAogICAgaW50
KiAsCiAgICBpbnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhHZXRUcmFuc2llbnRGb3JI
aW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cqCgopOwoKZXh0ZXJu
IGludCBYR2V0V2luZG93UHJvcGVydHkoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IEF0b20gLAogICAgbG9uZyAsCiAgICBsb25nICwKICAgIGludCAsCiAgICBBdG9tICwKICAgIEF0
b20qICwKICAgIGludCogLAogICAgdW5zaWduZWQgbG9uZyogLAogICAgdW5zaWduZWQgbG9uZyog
LAogICAgdW5zaWduZWQgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYR2V0V2luZG93QXR0cmlidXRl
cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFdpbmRvd0F0dHJpYnV0ZXMqCgop
OwoKZXh0ZXJuIGludCBYR3JhYkJ1dHRvbigKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25lZCBp
bnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgdW5zaWdu
ZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgV2luZG93ICwKICAgIEN1cnNvcgoKKTsK
CmV4dGVybiBpbnQgWEdyYWJLZXkoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIHVuc2ln
bmVkIGludCAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7Cgpl
eHRlcm4gaW50IFhHcmFiS2V5Ym9hcmQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50IFhHcmFi
UG9pbnRlcigKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIHVuc2ln
bmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFdpbmRvdyAsCiAgICBDdXJzb3IgLAog
ICAgVGltZQoKKTsKCmV4dGVybiBpbnQgWEdyYWJTZXJ2ZXIoCgogICAgRGlzcGxheSoKCik7Cgpl
eHRlcm4gaW50IFhIZWlnaHRNTU9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50
IFhIZWlnaHRPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYSWZFdmVudCgK
CiAgICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqICwKICAgIGludCAoKikgKAoKICAgICAgICAgICAg
ICAgRGlzcGxheSogLAogICAgICAgICAgICAgICBYRXZlbnQqICwKICAgICAgICAgICAgICAgWFBv
aW50ZXIKCiAgICAgICAgICAgICApICwKICAgIFhQb2ludGVyCgopOwoKZXh0ZXJuIGludCBYSW1h
Z2VCeXRlT3JkZXIoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhJbnN0YWxsQ29sb3Jt
YXAoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAKCik7CgpleHRlcm4gS2V5Q29kZSBYS2V5
c3ltVG9LZXljb2RlKAoKICAgIERpc3BsYXkqICwKICAgIEtleVN5bQoKKTsKCmV4dGVybiBpbnQg
WEtpbGxDbGllbnQoCgogICAgRGlzcGxheSogLAogICAgWElECgopOwoKZXh0ZXJuIGludCBYTG9v
a3VwQ29sb3IoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgY29uc3QgY2hhciog
LAogICAgWENvbG9yKiAsCiAgICBYQ29sb3IqCgopOwoKZXh0ZXJuIGludCBYTG93ZXJXaW5kb3co
CgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYTWFwUmFpc2VkKAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWE1hcFN1YndpbmRvd3Mo
CgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYTWFwV2luZG93KAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWE1hc2tFdmVudCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBsb25nICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhNYXhD
bWFwc09mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhNaW5DbWFwc09mU2Ny
ZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhNb3ZlUmVzaXplV2luZG93KAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CgpleHRlcm4gaW50IFhNb3ZlV2luZG93KAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGlu
dCBYTmV4dEV2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50
IFhOb09wKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYUGFyc2VDb2xvcigKCiAgICBE
aXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBYQ29sb3IqCgop
OwoKZXh0ZXJuIGludCBYUGFyc2VHZW9tZXRyeSgKCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQq
ICwKICAgIGludCogLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqCgopOwoK
ZXh0ZXJuIGludCBYUGVla0V2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCoKCik7Cgpl
eHRlcm4gaW50IFhQZWVrSWZFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqICwKICAg
IGludCAoKikgKAoKICAgICAgICAgICAgICAgRGlzcGxheSogLAogICAgICAgICAgICAgICBYRXZl
bnQqICwKICAgICAgICAgICAgICAgWFBvaW50ZXIKCiAgICAgICAgICAgICApICwKICAgIFhQb2lu
dGVyCgopOwoKZXh0ZXJuIGludCBYUGVuZGluZygKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBp
bnQgWFBsYW5lc09mU2NyZWVuKAoKICAgIFNjcmVlbioKCgopOwoKZXh0ZXJuIGludCBYUHJvdG9j
b2xSZXZpc2lvbigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFByb3RvY29sVmVyc2lv
bigKCiAgICBEaXNwbGF5KgoKKTsKCgpleHRlcm4gaW50IFhQdXRCYWNrRXZlbnQoCgogICAgRGlz
cGxheSogLAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBpbnQgWFB1dEltYWdlKAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhJbWFnZSogLAogICAgaW50ICwKICAg
IGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25l
ZCBpbnQKCik7CgpleHRlcm4gaW50IFhRTGVuZ3RoKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJu
IGludCBYUXVlcnlCZXN0Q3Vyc29yKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAg
IHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50KiAsCiAg
ICB1bnNpZ25lZCBpbnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlCZXN0U2l6ZSgKCiAgICBEaXNw
bGF5KiAsCiAgICBpbnQgLAogICAgRHJhd2FibGUgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVu
c2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCoKCik7Cgpl
eHRlcm4gaW50IFhRdWVyeUJlc3RTdGlwcGxlKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl
ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50
KiAsCiAgICB1bnNpZ25lZCBpbnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlCZXN0VGlsZSgKCiAg
ICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWdu
ZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgaW50KgoKKTsKCmV4dGVy
biBpbnQgWFF1ZXJ5Q29sb3IoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgWENv
bG9yKgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5Q29sb3JzKAoKICAgIERpc3BsYXkqICwKICAgIENv
bG9ybWFwICwKICAgIFhDb2xvciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYUXVlcnlFeHRl
bnNpb24oCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgaW50KiAsCiAgICBp
bnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhRdWVyeUtleW1hcCgKCiAgICBEaXNwbGF5
KiAsCiAgICBjaGFyIFszMl0KCik7CgpleHRlcm4gaW50IFhRdWVyeVBvaW50ZXIoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyogLAogICAgV2luZG93KiAsCiAgICBpbnQq
ICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIHVuc2lnbmVkIGludCoKCik7
CgpleHRlcm4gaW50IFhRdWVyeVRleHRFeHRlbnRzKAoKICAgIERpc3BsYXkqICwKICAgIFhJRCAs
CiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGlu
dCogLAogICAgWENoYXJTdHJ1Y3QqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlUZXh0RXh0ZW50czE2
KAoKICAgIERpc3BsYXkqICwKICAgIFhJRCAsCiAgICBjb25zdCBYQ2hhcjJiKiAsCiAgICBpbnQg
LAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgWENoYXJTdHJ1Y3QqCgopOwoK
ZXh0ZXJuIGludCBYUXVlcnlUcmVlKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBX
aW5kb3cqICwKICAgIFdpbmRvdyogLAogICAgV2luZG93KiogLAogICAgdW5zaWduZWQgaW50KgoK
KTsKCmV4dGVybiBpbnQgWFJhaXNlV2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoK
KTsKCmV4dGVybiBpbnQgWFJlYWRCaXRtYXBGaWxlKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdh
YmxlICwKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQg
aW50KiAsCiAgICBQaXhtYXAqICwKICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQg
WFJlYWRCaXRtYXBGaWxlRGF0YSgKCiAgICBjb25zdCBjaGFyKiAsCiAgICB1bnNpZ25lZCBpbnQq
ICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgY2hhcioqICwKICAgIGludCogLAog
ICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWFJlYmluZEtleXN5bSgKCiAgICBEaXNwbGF5KiAsCiAg
ICBLZXlTeW0gLAogICAgS2V5U3ltKiAsCiAgICBpbnQgLAogICAgY29uc3QgdW5zaWduZWQgY2hh
ciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYUmVjb2xvckN1cnNvcigKCiAgICBEaXNwbGF5
KiAsCiAgICBDdXJzb3IgLAogICAgWENvbG9yKiAsCiAgICBYQ29sb3IqCgopOwoKZXh0ZXJuIGlu
dCBYUmVmcmVzaEtleWJvYXJkTWFwcGluZygKCiAgICBYTWFwcGluZ0V2ZW50KgoKKTsKCmV4dGVy
biBpbnQgWFJlbW92ZUZyb21TYXZlU2V0KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsK
CmV4dGVybiBpbnQgWFJlbW92ZUhvc3QoCgogICAgRGlzcGxheSogLAogICAgWEhvc3RBZGRyZXNz
KgoKKTsKCmV4dGVybiBpbnQgWFJlbW92ZUhvc3RzKAoKICAgIERpc3BsYXkqICwKICAgIFhIb3N0
QWRkcmVzcyogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYUmVwYXJlbnRXaW5kb3coCgogICAg
RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50Cgop
OwoKZXh0ZXJuIGludCBYUmVzZXRTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVy
biBpbnQgWFJlc2l6ZVdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWFJlc3RhY2tXaW5k
b3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyogLAogICAgaW50CgopOwoKZXh0ZXJuIGlu
dCBYUm90YXRlQnVmZmVycygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50
IFhSb3RhdGVXaW5kb3dQcm9wZXJ0aWVzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAg
ICBBdG9tKiAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2NyZWVuQ291bnQo
CgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhTZWxlY3RJbnB1dCgKCiAgICBEaXNwbGF5
KiAsCiAgICBXaW5kb3cgLAogICAgbG9uZwoKKTsKCmV4dGVybiBpbnQgWFNlbmRFdmVudCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGxvbmcgLAogICAgWEV2ZW50
KgoKKTsKCmV4dGVybiBpbnQgWFNldEFjY2Vzc0NvbnRyb2woCgogICAgRGlzcGxheSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYU2V0QXJjTW9kZSgKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRCYWNrZ3JvdW5kKAoKICAgIERpc3BsYXkqICwK
ICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZXRDbGlwTWFzaygK
CiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50IFhTZXRD
bGlwT3JpZ2luKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQKCik7
CgpleHRlcm4gaW50IFhTZXRDbGlwUmVjdGFuZ2xlcygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAs
CiAgICBpbnQgLAogICAgaW50ICwKICAgIFhSZWN0YW5nbGUqICwKICAgIGludCAsCiAgICBpbnQK
Cik7CgpleHRlcm4gaW50IFhTZXRDbG9zZURvd25Nb2RlKAoKICAgIERpc3BsYXkqICwKICAgIGlu
dAoKKTsKCmV4dGVybiBpbnQgWFNldENvbW1hbmQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93
ICwKICAgIGNoYXIqKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXREYXNoZXMoCgogICAg
RGlzcGxheSogLAogICAgR0MgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoK
KTsKCmV4dGVybiBpbnQgWFNldEZpbGxSdWxlKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWFNldEZpbGxTdHlsZSgKCiAgICBEaXNwbGF5KiAsCiAgICBH
QyAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRGb250KAoKICAgIERpc3BsYXkqICwKICAg
IEdDICwKICAgIEZvbnQKCik7CgpleHRlcm4gaW50IFhTZXRGb250UGF0aCgKCiAgICBEaXNwbGF5
KiAsCiAgICBjaGFyKiogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Rm9yZWdyb3VuZCgK
CiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1bnNpZ25lZCBsb25nCgopOwoKZXh0ZXJuIGlu
dCBYU2V0RnVuY3Rpb24oCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgaW50CgopOwoKZXh0
ZXJuIGludCBYU2V0R3JhcGhpY3NFeHBvc3VyZXMoCgogICAgRGlzcGxheSogLAogICAgR0MgLAog
ICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0SWNvbk5hbWUoCgogICAgRGlzcGxheSogLAogICAg
V2luZG93ICwKICAgIGNvbnN0IGNoYXIqCgopOwoKZXh0ZXJuIGludCBYU2V0SW5wdXRGb2N1cygK
CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIFRpbWUKCik7CgpleHRl
cm4gaW50IFhTZXRMaW5lQXR0cmlidXRlcygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1
bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50
IFhTZXRNb2RpZmllck1hcHBpbmcoCgogICAgRGlzcGxheSogLAogICAgWE1vZGlmaWVyS2V5bWFw
KgoKKTsKCmV4dGVybiBpbnQgWFNldFBsYW5lTWFzaygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAs
CiAgICB1bnNpZ25lZCBsb25nCgopOwoKZXh0ZXJuIGludCBYU2V0UG9pbnRlck1hcHBpbmcoCgog
ICAgRGlzcGxheSogLAogICAgY29uc3QgdW5zaWduZWQgY2hhciogLAogICAgaW50CgopOwoKZXh0
ZXJuIGludCBYU2V0U2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGlu
dCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0U2VsZWN0aW9uT3duZXIo
CgogICAgRGlzcGxheSogLAogICAgQXRvbSAsCiAgICBXaW5kb3cgLAogICAgVGltZQoKKTsKCmV4
dGVybiBpbnQgWFNldFN0YXRlKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIHVuc2lnbmVk
IGxvbmcgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgbG9uZwoK
KTsKCmV4dGVybiBpbnQgWFNldFN0aXBwbGUoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAg
UGl4bWFwCgopOwoKZXh0ZXJuIGludCBYU2V0U3Vid2luZG93TW9kZSgKCiAgICBEaXNwbGF5KiAs
CiAgICBHQyAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRUU09yaWdpbigKCiAgICBEaXNw
bGF5KiAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0VGls
ZSgKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50IFhT
ZXRXaW5kb3dCYWNrZ3JvdW5kKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICB1bnNp
Z25lZCBsb25nCgopOwoKZXh0ZXJuIGludCBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgUGl4bWFwCgopOwoKZXh0ZXJuIGludCBYU2V0
V2luZG93Qm9yZGVyKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICB1bnNpZ25lZCBs
b25nCgopOwoKZXh0ZXJuIGludCBYU2V0V2luZG93Qm9yZGVyUGl4bWFwKAoKICAgIERpc3BsYXkq
ICwKICAgIFdpbmRvdyAsCiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50IFhTZXRXaW5kb3dCb3Jk
ZXJXaWR0aCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgdW5zaWduZWQgaW50Cgop
OwoKZXh0ZXJuIGludCBYU2V0V2luZG93Q29sb3JtYXAoCgogICAgRGlzcGxheSogLAogICAgV2lu
ZG93ICwKICAgIENvbG9ybWFwCgopOwoKZXh0ZXJuIGludCBYU3RvcmVCdWZmZXIoCgogICAgRGlz
cGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBp
bnQgWFN0b3JlQnl0ZXMoCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgaW50
CgopOwoKZXh0ZXJuIGludCBYU3RvcmVDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1h
cCAsCiAgICBYQ29sb3IqCgopOwoKZXh0ZXJuIGludCBYU3RvcmVDb2xvcnMoCgogICAgRGlzcGxh
eSogLAogICAgQ29sb3JtYXAgLAogICAgWENvbG9yKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50
IFhTdG9yZU5hbWUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGNvbnN0IGNoYXIq
CgopOwoKZXh0ZXJuIGludCBYU3RvcmVOYW1lZENvbG9yKAoKICAgIERpc3BsYXkqICwKICAgIENv
bG9ybWFwICwKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgaW50Cgop
OwoKZXh0ZXJuIGludCBYU3luYygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CgpleHRlcm4g
aW50IFhUZXh0RXh0ZW50cygKCiAgICBYRm9udFN0cnVjdCogLAogICAgY29uc3QgY2hhciogLAog
ICAgaW50ICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIFhDaGFyU3RydWN0
KgoKKTsKCmV4dGVybiBpbnQgWFRleHRFeHRlbnRzMTYoCgogICAgWEZvbnRTdHJ1Y3QqICwKICAg
IGNvbnN0IFhDaGFyMmIqICwKICAgIGludCAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgaW50
KiAsCiAgICBYQ2hhclN0cnVjdCoKCik7CgpleHRlcm4gaW50IFhUZXh0V2lkdGgoCgogICAgWEZv
bnRTdHJ1Y3QqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFRl
eHRXaWR0aDE2KAoKICAgIFhGb250U3RydWN0KiAsCiAgICBjb25zdCBYQ2hhcjJiKiAsCiAgICBp
bnQKCik7CgpleHRlcm4gaW50IFhUcmFuc2xhdGVDb29yZGluYXRlcygKCiAgICBEaXNwbGF5KiAs
CiAgICBXaW5kb3cgLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50KiAs
CiAgICBpbnQqICwKICAgIFdpbmRvdyoKCik7CgpleHRlcm4gaW50IFhVbmRlZmluZUN1cnNvcigK
CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhVbmdyYWJCdXR0b24o
CgogICAgRGlzcGxheSogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAg
ICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhVbmdyYWJLZXkoCgogICAgRGlzcGxheSogLAogICAg
aW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhVbmdy
YWJLZXlib2FyZCgKCiAgICBEaXNwbGF5KiAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGludCBYVW5n
cmFiUG9pbnRlcigKCiAgICBEaXNwbGF5KiAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGludCBYVW5n
cmFiU2VydmVyKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYVW5pbnN0YWxsQ29sb3Jt
YXAoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAKCik7CgpleHRlcm4gaW50IFhVbmxvYWRG
b250KAoKICAgIERpc3BsYXkqICwKICAgIEZvbnQKCik7CgpleHRlcm4gaW50IFhVbm1hcFN1Yndp
bmRvd3MoCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYVW5tYXBX
aW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYVmVuZG9y
UmVsZWFzZSgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFdhcnBQb2ludGVyKAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAs
CiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQK
Cik7CgpleHRlcm4gaW50IFhXaWR0aE1NT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVy
biBpbnQgWFdpZHRoT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWFdpbmRv
d0V2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBsb25nICwKICAgIFhFdmVu
dCoKCik7CgpleHRlcm4gaW50IFhXcml0ZUJpdG1hcEZpbGUoCgogICAgRGlzcGxheSogLAogICAg
Y29uc3QgY2hhciogLAogICAgUGl4bWFwICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25l
ZCBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFN1cHBvcnRzTG9jYWxl
KAoKICAgIHZvaWQKCik7CgpleHRlcm4gY2hhciAqWFNldExvY2FsZU1vZGlmaWVycygKCiAgICBj
b25zdCBjaGFyKgoKKTsKCmV4dGVybiBYT00gWE9wZW5PTSgKCiAgICBEaXNwbGF5KiAsCiAgICBz
dHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNvbnN0IGNo
YXIqCgopOwoKZXh0ZXJuIGludCBYQ2xvc2VPTSgKCiAgICBYT00KCik7CgpleHRlcm4gY2hhciAq
WFNldE9NVmFsdWVzKAoKICAgIFhPTSAsCiAgICAuLi4KCik7CgpleHRlcm4gY2hhciAqWEdldE9N
VmFsdWVzKAoKICAgIFhPTSAsCiAgICAuLi4KCik7CgpleHRlcm4gRGlzcGxheSAqWERpc3BsYXlP
Zk9NKAoKICAgIFhPTQoKKTsKCmV4dGVybiBjaGFyICpYTG9jYWxlT2ZPTSgKCiAgICBYT00KCik7
CgpleHRlcm4gWE9DIFhDcmVhdGVPQygKCiAgICBYT00gLAogICAgLi4uCgopOwoKZXh0ZXJuIHZv
aWQgWERlc3Ryb3lPQygKCiAgICBYT0MKCik7CgpleHRlcm4gWE9NIFhPTU9mT0MoCgogICAgWE9D
CgopOwoKZXh0ZXJuIGNoYXIgKlhTZXRPQ1ZhbHVlcygKCiAgICBYT0MgLAogICAgLi4uCgopOwoK
ZXh0ZXJuIGNoYXIgKlhHZXRPQ1ZhbHVlcygKCiAgICBYT0MgLAogICAgLi4uCgopOwoKZXh0ZXJu
IFhGb250U2V0IFhDcmVhdGVGb250U2V0KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGNoYXIqKiogLAogICAgaW50KiAsCiAgICBjaGFyKioKCik7CgpleHRlcm4gdm9pZCBY
RnJlZUZvbnRTZXQoCgogICAgRGlzcGxheSogLAogICAgWEZvbnRTZXQKCik7CgpleHRlcm4gaW50
IFhGb250c09mRm9udFNldCgKCiAgICBYRm9udFNldCAsCiAgICBYRm9udFN0cnVjdCoqKiAsCiAg
ICBjaGFyKioqCgopOwoKZXh0ZXJuIGNoYXIgKlhCYXNlRm9udE5hbWVMaXN0T2ZGb250U2V0KAoK
ICAgIFhGb250U2V0CgopOwoKZXh0ZXJuIGNoYXIgKlhMb2NhbGVPZkZvbnRTZXQoCgogICAgWEZv
bnRTZXQKCik7CgpleHRlcm4gaW50IFhDb250ZXh0RGVwZW5kZW50RHJhd2luZygKCiAgICBYRm9u
dFNldAoKKTsKCmV4dGVybiBpbnQgWERpcmVjdGlvbmFsRGVwZW5kZW50RHJhd2luZygKCiAgICBY
Rm9udFNldAoKKTsKCmV4dGVybiBpbnQgWENvbnRleHR1YWxEcmF3aW5nKAoKICAgIFhGb250U2V0
CgopOwoKZXh0ZXJuIFhGb250U2V0RXh0ZW50cyAqWEV4dGVudHNPZkZvbnRTZXQoCgogICAgWEZv
bnRTZXQKCik7CgpleHRlcm4gaW50IFhtYlRleHRFc2NhcGVtZW50KAoKICAgIFhGb250U2V0ICwK
ICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWHdjVGV4dEVzY2FwZW1l
bnQoCgogICAgWEZvbnRTZXQgLAogICAgY29uc3Qgd2NoYXJfdCogLAogICAgaW50CgopOwoKZXh0
ZXJuIGludCBYbWJUZXh0RXh0ZW50cygKCiAgICBYRm9udFNldCAsCiAgICBjb25zdCBjaGFyKiAs
CiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAgWFJlY3RhbmdsZSoKCik7CgpleHRlcm4g
aW50IFh3Y1RleHRFeHRlbnRzKAoKICAgIFhGb250U2V0ICwKICAgIGNvbnN0IHdjaGFyX3QqICwK
ICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVybiBp
bnQgWG1iVGV4dFBlckNoYXJFeHRlbnRzKAoKICAgIFhGb250U2V0ICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBpbnQg
LAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVy
biBpbnQgWHdjVGV4dFBlckNoYXJFeHRlbnRzKAoKICAgIFhGb250U2V0ICwKICAgIGNvbnN0IHdj
aGFyX3QqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAg
ICBpbnQgLAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKgoKKTsK
CmV4dGVybiB2b2lkIFhtYkRyYXdUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwK
ICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWG1iVGV4dEl0ZW0qICwKICAgIGludAoK
KTsKCmV4dGVybiB2b2lkIFh3Y0RyYXdUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl
ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWHdjVGV4dEl0ZW0qICwKICAgIGlu
dAoKKTsKCmV4dGVybiB2b2lkIFhtYkRyYXdTdHJpbmcoCgogICAgRGlzcGxheSogLAogICAgRHJh
d2FibGUgLAogICAgWEZvbnRTZXQgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBj
b25zdCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gdm9pZCBYd2NEcmF3U3RyaW5nKAoKICAg
IERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIFhGb250U2V0ICwKICAgIEdDICwKICAgIGlu
dCAsCiAgICBpbnQgLAogICAgY29uc3Qgd2NoYXJfdCogLAogICAgaW50CgopOwoKZXh0ZXJuIHZv
aWQgWG1iRHJhd0ltYWdlU3RyaW5nKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAg
IFhGb250U2V0ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3QgY2hhciog
LAogICAgaW50CgopOwoKZXh0ZXJuIHZvaWQgWHdjRHJhd0ltYWdlU3RyaW5nKAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIFhGb250U2V0ICwKICAgIEdDICwKICAgIGludCAsCiAg
ICBpbnQgLAogICAgY29uc3Qgd2NoYXJfdCogLAogICAgaW50CgopOwoKZXh0ZXJuIFhJTSBYT3Bl
bklNKAoKICAgIERpc3BsYXkqICwKICAgIHN0cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYyogLAogICAg
Y2hhciogLAogICAgY2hhcioKCik7CgpleHRlcm4gaW50IFhDbG9zZUlNKAoKICAgIFhJTQoKKTsK
CmV4dGVybiBjaGFyICpYR2V0SU1WYWx1ZXMoCgogICAgWElNICwgLi4uCgopOwoKZXh0ZXJuIERp
c3BsYXkgKlhEaXNwbGF5T2ZJTSgKCiAgICBYSU0KCik7CgpleHRlcm4gY2hhciAqWExvY2FsZU9m
SU0oCgogICAgWElNCgopOwoKZXh0ZXJuIFhJQyBYQ3JlYXRlSUMoCgogICAgWElNICwgLi4uCgop
OwoKZXh0ZXJuIHZvaWQgWERlc3Ryb3lJQygKCiAgICBYSUMKCik7CgpleHRlcm4gdm9pZCBYU2V0
SUNGb2N1cygKCiAgICBYSUMKCik7CgpleHRlcm4gdm9pZCBYVW5zZXRJQ0ZvY3VzKAoKICAgIFhJ
QwoKKTsKCmV4dGVybiB3Y2hhcl90ICpYd2NSZXNldElDKAoKICAgIFhJQwoKKTsKCmV4dGVybiBj
aGFyICpYbWJSZXNldElDKAoKICAgIFhJQwoKKTsKCmV4dGVybiBjaGFyICpYU2V0SUNWYWx1ZXMo
CgogICAgWElDICwgLi4uCgopOwoKZXh0ZXJuIGNoYXIgKlhHZXRJQ1ZhbHVlcygKCiAgICBYSUMg
LCAuLi4KCik7CgpleHRlcm4gWElNIFhJTU9mSUMoCgogICAgWElDCgopOwoKZXh0ZXJuIGludCBY
RmlsdGVyRXZlbnQoCgogICAgWEV2ZW50KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFht
Ykxvb2t1cFN0cmluZygKCiAgICBYSUMgLAogICAgWEtleVByZXNzZWRFdmVudCogLAogICAgY2hh
ciogLAogICAgaW50ICwKICAgIEtleVN5bSogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWHdj
TG9va3VwU3RyaW5nKAoKICAgIFhJQyAsCiAgICBYS2V5UHJlc3NlZEV2ZW50KiAsCiAgICB3Y2hh
cl90KiAsCiAgICBpbnQgLAogICAgS2V5U3ltKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIFhWYU5l
c3RlZExpc3QgWFZhQ3JlYXRlTmVzdGVkTGlzdCgKCiAgICBpbnQgLCAuLi4KCik7CgoKCmV4dGVy
biBpbnQgWFJlZ2lzdGVySU1JbnN0YW50aWF0ZUNhbGxiYWNrKAoKICAgIERpc3BsYXkqICwKICAg
IHN0cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYyogLAogICAgY2hhciogLAogICAgY2hhciogLAogICAg
WElEUHJvYyAsCiAgICBYUG9pbnRlcgoKKTsKCmV4dGVybiBpbnQgWFVucmVnaXN0ZXJJTUluc3Rh
bnRpYXRlQ2FsbGJhY2soCgogICAgRGlzcGxheSogLAogICAgc3RydWN0IF9Ycm1IYXNoQnVja2V0
UmVjKiAsCiAgICBjaGFyKiAsCiAgICBjaGFyKiAsCiAgICBYSURQcm9jICwKICAgIFhQb2ludGVy
CgopOwoKdHlwZWRlZiB2b2lkICgqWENvbm5lY3Rpb25XYXRjaFByb2MpKAoKICAgIERpc3BsYXkq
ICwKICAgIFhQb2ludGVyICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWFBvaW50ZXIqCgopOwoK
CmV4dGVybiBpbnQgWEludGVybmFsQ29ubmVjdGlvbk51bWJlcnMoCgogICAgRGlzcGxheSogLAog
ICAgaW50KiogLAogICAgaW50KgoKKTsKCmV4dGVybiB2b2lkIFhQcm9jZXNzSW50ZXJuYWxDb25u
ZWN0aW9uKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEFkZENvbm5l
Y3Rpb25XYXRjaCgKCiAgICBEaXNwbGF5KiAsCiAgICBYQ29ubmVjdGlvbldhdGNoUHJvYyAsCiAg
ICBYUG9pbnRlcgoKKTsKCmV4dGVybiB2b2lkIFhSZW1vdmVDb25uZWN0aW9uV2F0Y2goCgogICAg
RGlzcGxheSogLAogICAgWENvbm5lY3Rpb25XYXRjaFByb2MgLAogICAgWFBvaW50ZXIKCik7Cgpl
eHRlcm4gdm9pZCBYU2V0QXV0aG9yaXphdGlvbigKCiAgICBjaGFyICogLAogICAgaW50ICwKICAg
IGNoYXIgKiAsCiAgICBpbnQKCik7CgojIDUgImN1cnZlbG93LmgiIDIKCgoKCgppbnQgYmV6aWVy
X2ZpbGxfcG9pbnRzKFhQb2ludCAqIHBvaW50cywgaW50ICogeCwgaW50ICogeSk7CgppbnQgYmV6
aWVyX2hpdF9zZWdtZW50KGludCAqIHgsIGludCAqIHksIGludCBweCwgaW50IHB5KTsKaW50IGJl
emllcl9oaXRfbGluZShpbnQgc3gsIGludCBzeSwgaW50IGV4LCBpbnQgZXksIGludCBweCwgaW50
IHB5KTsKCgp2b2lkIGJlemllcl9wb2ludF9hdChkb3VibGUgKngsIGRvdWJsZSAqeSwgZG91Ymxl
IHQsCiAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqIHJlc3VsdF94LCBkb3VibGUgKiByZXN1
bHRfeSk7CnZvaWQgYmV6aWVyX3RhbmdlbnRfYXQoZG91YmxlICp4LCBkb3VibGUgKnksIGRvdWJs
ZSB0LAogICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqIHJlc3VsdF94LCBkb3VibGUgKiBy
ZXN1bHRfeSk7CgpleHRlcm4gaW50IGJlemllcl9iYXNpc1s0XVs0XTsKCiMgMzQgIi4vY3VydmVv
YmplY3QuYyIgMgoKIyAyNCAiY3VydmVtaXNjLmgiIDEKUHlPYmplY3QgKiBjdXJ2ZV9sb2NhbF9j
b29yZF9zeXN0ZW0oU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7CgpQeU9i
amVjdCAqIGN1cnZlX2FyY19sZW5ndGhzKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAq
IGFyZ3MpOwoKUHlPYmplY3QgKiBTS0N1cnZlX05lYXJlc3RQb2ludFB5KFNLQ3VydmVPYmplY3Qg
KiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIFNLQ3VydmVfUG9pbnRBdFB5KFNL
Q3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwoKIyAzNSAiLi9jdXJ2ZW9iamVj
dC5jIiAyCiMgNTIgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIHZvaWQKaW5pdF9zZWdtZW50KEN1
cnZlU2VnbWVudCAqIHNlZ21lbnQsIGludCB0eXBlKQp7CiAgICBzZWdtZW50LT50eXBlID0gdHlw
ZTsKICAgIHNlZ21lbnQtPmNvbnQgPSAwOwogICAgc2VnbWVudC0+c2VsZWN0ZWQgPSAwOwogICAg
c2VnbWVudC0+eDEgPSBzZWdtZW50LT55MSA9IHNlZ21lbnQtPngyID0gc2VnbWVudC0+eTIgPSAw
LjA7CiAgICBzZWdtZW50LT54ID0gc2VnbWVudC0+eSA9IDAuMDsKfQoKCgoKCnN0YXRpYyB2b2lk
ClNLQ3VydmVfQWRqdXN0Q29udHJvbFBvaW50KFNLQ29vcmQgKiB4LCBTS0Nvb3JkICogeSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGN1cl94LCBkb3VibGUgY3VyX3ksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBub2RlX3gsIGRvdWJsZSBub2RlX3ksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBjb250KQp7CiAgICBzd2l0Y2ggKGNvbnQpCiAgICB7
CiAgICBjYXNlIDI6CiAgICAgICAgKnggPSAyICogbm9kZV94IC0gY3VyX3g7CiAgICAgICAgKnkg
PSAyICogbm9kZV95IC0gY3VyX3k7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAxOgogICAgewog
ICAgICAgIGRvdWJsZSBkeCA9IGN1cl94IC0gbm9kZV94OwogICAgICAgIGRvdWJsZSBkeSA9IGN1
cl95IC0gbm9kZV95OwogICAgICAgIGRvdWJsZSBsZW5ndGggPSBoeXBvdCgqeCAtIG5vZGVfeCwg
KnkgLSBub2RlX3kpOwogICAgICAgIGRvdWJsZSBjdXJfbGVuZ3RoID0gaHlwb3QoZHgsIGR5KTsK
ICAgICAgICBpZiAoY3VyX2xlbmd0aCA8IDAuMSkKICAgICAgICAgICAgY3VyX2xlbmd0aCA9IDAu
MTsKCiAgICAgICAgKnggPSBub2RlX3ggLSBsZW5ndGggKiBkeCAvIGN1cl9sZW5ndGg7CiAgICAg
ICAgKnkgPSBub2RlX3kgLSBsZW5ndGggKiBkeSAvIGN1cl9sZW5ndGg7CiAgICAgICAgYnJlYWs7
CiAgICB9CiAgICBkZWZhdWx0OgogICAgICAgIGJyZWFrOwogICAgfQp9CgoKCgoKCnN0YXRpYyBp
bnQgcGF0aHNfYWxsb2NhdGVkID0gMDsKClB5T2JqZWN0ICoKU0tDdXJ2ZV9OZXcoaW50IGxlbmd0
aCkKewogICAgU0tDdXJ2ZU9iamVjdCAqIHNlbGY7CiAgICBpbnQgaTsKCiAgICBzZWxmID0gKChT
S0N1cnZlT2JqZWN0ICopIF9QeU9iamVjdF9OZXcoJlNLQ3VydmVUeXBlKSk7CiAgICBpZiAoc2Vs
ZiA9PSAoKHZvaWQgKikwKSkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgbGVuZ3Ro
ID0gKChsZW5ndGgpPjAgPyAoKChsZW5ndGgpKyg5KS0xKS8oOSkpKig5KSA6ICg5KSk7CiAgICBz
ZWxmLT5sZW4gPSAwOwogICAgc2VsZi0+Y2xvc2VkID0gMDsKICAgIHNlbGYtPnNlZ21lbnRzID0g
bWFsbG9jKGxlbmd0aCAqIHNpemVvZihDdXJ2ZVNlZ21lbnQpKTsKICAgIGlmICghc2VsZi0+c2Vn
bWVudHMpCiAgICB7CiAgICAgICAgZnJlZShzZWxmKTsKICAgICAgICByZXR1cm4gUHlFcnJfTm9N
ZW1vcnkoKTsKICAgIH0KICAgIHNlbGYtPmFsbG9jYXRlZCA9IGxlbmd0aDsKCiAgICBmb3IgKGkg
PSAwOyBpIDwgc2VsZi0+YWxsb2NhdGVkOyBpKyspCiAgICB7CiAgICAgICAgaW5pdF9zZWdtZW50
KHNlbGYtPnNlZ21lbnRzICsgaSwgMik7CiAgICB9CgogICAgcGF0aHNfYWxsb2NhdGVkKys7Cgog
ICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Cn0KCgoKCgpzdGF0aWMgaW50CmNoZWNrX2luZGV4
KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKiBmdW5jbmFtZSkK
ewogICAgaWYgKGluZGV4IDwgMCkKICAgICAgICBpbmRleCA9IGluZGV4ICsgc2VsZi0+bGVuOwoK
ICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc2VsZi0+bGVuKQogICAgewogICAgICAgIGNo
YXIgbWVzc2FnZVsxMDAwXTsKICAgICAgICBzcHJpbnRmKG1lc3NhZ2UsICIlczogaW5kZXggb3V0
IG9mIHJhbmdlIiwgZnVuY25hbWUpOwogICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRl
eEVycm9yLCBtZXNzYWdlKTsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgcmV0dXJuIGlu
ZGV4Owp9CiMgMTY5ICIuL2N1cnZlb2JqZWN0LmMiCnN0YXRpYyB2b2lkCmN1cnZlX2NoZWNrX3N0
YXRlKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBpbnQgd2FybiwgY29uc3QgY2hhciAqIGZ1bmNuYW1l
KQp7Cn0KIyAxODEgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIGludApjdXJ2ZV9yZWFsbG9jKFNL
Q3VydmVPYmplY3QgKiBzZWxmLCBpbnQgbmV3X2xlbikKewogICAgbmV3X2xlbiA9ICgobmV3X2xl
bik+MCA/ICgoKG5ld19sZW4pKyg5KS0xKS8oOSkpKig5KSA6ICg5KSk7CiAgICBpZiAobmV3X2xl
biAhPSBzZWxmLT5hbGxvY2F0ZWQpCiAgICB7CiAgICAgICAgQ3VydmVTZWdtZW50ICogbmV3X3Nl
Z21lbnRzOwogICAgICAgIG5ld19zZWdtZW50cyA9IHJlYWxsb2Moc2VsZi0+c2VnbWVudHMsIG5l
d19sZW4gKiBzaXplb2YoQ3VydmVTZWdtZW50KSk7CiAgICAgICAgaWYgKCFuZXdfc2VnbWVudHMp
CiAgICAgICAgewogICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICB9CiAgICAgICAgc2VsZi0+c2VnbWVudHMgPSBuZXdfc2VnbWVudHM7CiAg
ICAgICAgc2VsZi0+YWxsb2NhdGVkID0gbmV3X2xlbjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoK
CgoKCgpzdGF0aWMgaW50CmN1cnZlX2dyb3coU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIGludCBncm93
KQp7CiAgICByZXR1cm4gY3VydmVfcmVhbGxvYyhzZWxmLCBzZWxmLT5sZW4gKyBncm93KTsKfQoK
CgoKCgpzdGF0aWMgdm9pZApjdXJ2ZV9kZWFsbG9jKFNLQ3VydmVPYmplY3QgKiBzZWxmKQp7CiAg
ICBmcmVlKHNlbGYtPnNlZ21lbnRzKTsKICAgIGZyZWUoc2VsZik7CiAgICBwYXRoc19hbGxvY2F0
ZWQtLTsKfQoKc3RhdGljIGludApjdXJ2ZV9jb21wYXJlKFNLQ3VydmVPYmplY3QgKiB2LCBTS0N1
cnZlT2JqZWN0ICogdykKewoKCgogICAgaWYgKHYgPT0gdykKICAgICAgICByZXR1cm4gMDsKCiAg
ICByZXR1cm4gdiA8IHcgPyAtMSA6ICsxOwp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9yZXBy
KFNLQ3VydmVPYmplY3QgKiBzZWxmKQp7CiAgICBjaGFyIGJ1ZlsxMDBdOwogICAgc3ByaW50Zihi
dWYsICI8U0tDdXJ2ZU9iamVjdCBhdCAlbGQgd2l0aCAlZCBub2Rlcz4iLCAobG9uZylzZWxmLAog
ICAgICAgICAgICBzZWxmLT5sZW4pOwogICAgcmV0dXJuIFB5U3RyaW5nX0Zyb21TdHJpbmcoYnVm
KTsKfQojIDI1OCAiLi9jdXJ2ZW9iamVjdC5jIgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9kdXBs
aWNhdGUoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgU0tDdXJ2
ZU9iamVjdCAqIGNvcHk7CiAgICBpbnQgaTsKCiAgICBjb3B5ID0gKFNLQ3VydmVPYmplY3QqKVNL
Q3VydmVfTmV3KHNlbGYtPmxlbik7CiAgICBpZiAoIWNvcHkpCiAgICAgICAgcmV0dXJuICgodm9p
ZCAqKTApOwoKICAgIGNvcHktPmxlbiA9IHNlbGYtPmxlbjsKICAgIGNvcHktPmNsb3NlZCA9IHNl
bGYtPmNsb3NlZDsKCiAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+bGVuOyBpKyspCiAgICAgICAg
Y29weS0+c2VnbWVudHNbaV0gPSBzZWxmLT5zZWdtZW50c1tpXTsKCiAgICByZXR1cm4gKFB5T2Jq
ZWN0Kiljb3B5Owp9CgoKCgoKCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9ub2RlKFNLQ3VydmVP
YmplY3QgKiBzZWxmLCBQeU9iamVjdCAqYXJncykKewogICAgaW50IGlkeDsKCiAgICBpZiAoIVB5
QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmaWR4KSkKICAgICAgICByZXR1cm4gKCh2b2lkICop
MCk7CgogICAgaWYgKGlkeCA8IDApCiAgICAgICAgaWR4ID0gaWR4ICsgc2VsZi0+bGVuOwoKICAg
IGlmIChpZHggPCAwIHx8IGlkeCA+PSBzZWxmLT5sZW4pCiAgICB7CiAgICAgICAgUHlFcnJfU2V0
U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJjdXJ2ZV9u
b2RlOiBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAg
ICB9CgogICAgcmV0dXJuIFNLUG9pbnRfRnJvbVhZKHNlbGYtPnNlZ21lbnRzW2lkeF0ueCwgc2Vs
Zi0+c2VnbWVudHNbaWR4XS55KTsKfQoKCgoKCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfbm9k
ZV9saXN0KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqYXJncykKewogICAgaW50IGks
IGxlbmd0aDsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CiAgICBQeU9iamVjdCAqIGxpc3Qs
ICpwb2ludDsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIpKQogICAgICAgIHJl
dHVybiAoKHZvaWQgKikwKTsKCiAgICBsZW5ndGggPSBzZWxmLT5sZW47CiAgICBpZiAoc2VsZi0+
Y2xvc2VkKQogICAgICAgIGxlbmd0aCAtPSAxOwoKICAgIGxpc3QgPSBQeUxpc3RfTmV3KGxlbmd0
aCk7CiAgICBpZiAoIWxpc3QpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIHNlZ21l
bnQgPSBzZWxmLT5zZWdtZW50czsKICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKywgc2Vn
bWVudCsrKQogICAgewogICAgICAgIHBvaW50ID0gU0tQb2ludF9Gcm9tWFkoc2VnbWVudC0+eCwg
c2VnbWVudC0+eSk7CiAgICAgICAgaWYgKCFwb2ludCkKICAgICAgICB7CiAgICAgICAgICAgIGlm
ICgtLShsaXN0KS0+b2JfcmVmY250ICE9IDApIDsgZWxzZSAoKigoUHlPYmplY3QgKikobGlzdCkp
LT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICopKGxpc3QpKSk7
CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICAgICAgUHlMaXN0
X1NldEl0ZW0obGlzdCwgaSwgcG9pbnQpOwogICAgfQoKICAgIHJldHVybiBsaXN0Owp9CiMgMzUw
ICIuL2N1cnZlb2JqZWN0LmMiCnN0YXRpYyBQeU9iamVjdCAqCmN1cnZlX2NvbnRpbnVpdHkoU0tD
dXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgaW50IGlkeDsKCiAgICBp
ZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmaWR4KSkKICAgICAgICByZXR1cm4gKCh2
b2lkICopMCk7CgogICAgaWYgKGlkeCA8IDApCiAgICAgICAgaWR4ID0gaWR4ICsgc2VsZi0+bGVu
OwoKICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBzZWxmLT5sZW4pCiAgICB7CiAgICAgICAgUHlF
cnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJj
dXJ2ZV9jb250aW51aXR5OiBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICByZXR1cm4gKCh2
b2lkICopMCk7CiAgICB9CgogICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKHNlbGYtPnNlZ21lbnRz
W2lkeF0uY29udCk7Cn0KIyAzNzkgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIFB5T2JqZWN0ICoK
Y3VydmVfc2VnbWVudF90eXBlKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3Mp
CnsKICAgIGludCBpZHg7CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmlk
eCkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlmIChpZHggPCAwKQogICAgICAg
IGlkeCA9IGlkeCArIHNlbGYtPmxlbjsKCiAgICBpZiAoaWR4IDwgMCB8fCBpZHggPj0gc2VsZi0+
bGVuKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAogICAg
ICAgICAgICAgICAgICAgICAgICAiY3VydmVfc2VnbWVudF90eXBlOiBpbmRleCBvdXQgb2YgcmFu
Z2UiKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9CgogICAgcmV0dXJuIFB5SW50
X0Zyb21Mb25nKHNlbGYtPnNlZ21lbnRzW2lkeF0udHlwZSk7Cn0KCgoKCgpzdGF0aWMgUHlPYmpl
Y3QgKgpjdXJ2ZV9zZWdtZW50KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3Mp
CnsKICAgIGludCBpZHg7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAgUHlPYmplY3Qg
KiByZXN1bHQsICpwMSwgKnAyLCAqcDsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywg
ImkiLCAmaWR4KSkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgaWR4ID0gY2hlY2tf
aW5kZXgoc2VsZiwgaWR4LCAicGF0aC5TZWdtZW50Iik7CiAgICBpZiAoaWR4IDwgMCkKICAgICAg
ICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgc2VnbWVudCA9IHNlbGYtPnNlZ21lbnRzICsgaWR4
OwogICAgcCA9IFNLUG9pbnRfRnJvbVhZKHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpOwogICAgaWYg
KHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgIHsKICAgICAgICBwMSA9IFNLUG9pbnRfRnJvbVhZKHNl
Z21lbnQtPngxLCBzZWdtZW50LT55MSk7CiAgICAgICAgcDIgPSBTS1BvaW50X0Zyb21YWShzZWdt
ZW50LT54Miwgc2VnbWVudC0+eTIpOwogICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoImko
T08pT2kiLCBzZWdtZW50LT50eXBlLCBwMSwgcDIsIHAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWdtZW50LT5jb250KTsKICAgICAgICBpZiAoKHAxKSA9PSAoKHZvaWQgKikwKSkg
OyBlbHNlIGlmICgtLShwMSktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2UgKCooKFB5T2JqZWN0ICop
KHAxKSktPm9iX3R5cGUtPnRwX2RlYWxsb2MpKChQeU9iamVjdCAqKSgoUHlPYmplY3QgKikocDEp
KSk7CiAgICAgICAgaWYgKChwMikgPT0gKCh2b2lkICopMCkpIDsgZWxzZSBpZiAoLS0ocDIpLT5v
Yl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShwMikpLT5vYl90eXBlLT50cF9k
ZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICopKHAyKSkpOwogICAgfQogICAgZWxzZQog
ICAgewogICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoImkoKU9pIiwgc2VnbWVudC0+dHlw
ZSwgcCwgc2VnbWVudC0+Y29udCk7CiAgICB9CiAgICBpZiAoKHApID09ICgodm9pZCAqKTApKSA7
IGVsc2UgaWYgKC0tKHApLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShw
KSktPm9iX3R5cGUtPnRwX2RlYWxsb2MpKChQeU9iamVjdCAqKSgoUHlPYmplY3QgKikocCkpKTsK
CiAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfc2V0X2Nv
bnRpbnVpdHkoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgaW50
IGlkeCwgY29udDsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJmlkeCwg
JmNvbnQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBpZiAoaWR4IDwgMCkKICAg
ICAgICBpZHggPSBpZHggKyBzZWxmLT5sZW47CgogICAgaWYgKGlkeCA8IDAgfHwgaWR4ID49IHNl
bGYtPmxlbikKICAgIHsKICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwK
ICAgICAgICAgICAgICAgICAgICAgICAgImN1cnZlX3NldF9jb250aW51aXR5OiBpbmRleCBvdXQg
b2YgcmFuZ2UiKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9CgogICAgaWYgKCEo
KGNvbnQpID49IDAgJiYgKGNvbnQpIDw9IDIpKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmlu
ZyhQeUV4Y19WYWx1ZUVycm9yLCAiY3VydmVfc2V0X2NvbnRpbnVpdHk6ICIKICAgICAgICAgICAg
ICAgICAgICAgICAgImNvbnQgbXVzdCBiZSBvbmUgb2YgQ29udEFuZ2xlLCBDb250U21vb3RoICIK
ICAgICAgICAgICAgICAgICAgICAgICAgIm9yIENvbnRTeW1tZXRyaWNhbCIpOwogICAgICAgIHJl
dHVybiAoKHZvaWQgKikwKTsKICAgIH0KICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0uY29udCA9IGNv
bnQ7CiAgICBpZiAoc2VsZi0+Y2xvc2VkKQogICAgewogICAgICAgIGlmIChpZHggPT0gMCkKICAg
ICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0uY29udCA9IGNvbnQ7CiAgICAg
ICAgZWxzZSBpZiAoaWR4ID09IHNlbGYtPmxlbiAtIDEpCiAgICAgICAgICAgIHNlbGYtPnNlZ21l
bnRzWzBdLmNvbnQgPSBjb250OwogICAgfQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9y
ZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KIyA0OTAgIi4vY3VydmVv
YmplY3QuYyIKaW50ClNLQ3VydmVfQXBwZW5kU2VnbWVudChTS0N1cnZlT2JqZWN0ICogc2VsZiwg
Q3VydmVTZWdtZW50ICogc2VnbWVudCkKewogICAgaWYgKCFjdXJ2ZV9ncm93KHNlbGYsIDEpKQog
ICAgICAgIHJldHVybiAwOwoKICAgIHNlbGYtPnNlZ21lbnRzW3NlbGYtPmxlbl0gPSAqc2VnbWVu
dDsKICAgIHNlbGYtPmxlbiArPSAxOwoKICAgIGN1cnZlX2NoZWNrX3N0YXRlKHNlbGYsIDEsIF9f
RlVOQ1RJT05fXyk7CgogICAgcmV0dXJuIDE7Cn0KCmludApTS0N1cnZlX0FwcGVuZExpbmUoU0tD
dXJ2ZU9iamVjdCAqIHNlbGYsIGRvdWJsZSB4LCBkb3VibGUgeSwgaW50IGNvbnRpbnVpdHkpCnsK
ICAgIEN1cnZlU2VnbWVudCBzZWdtZW50OwoKICAgIHNlZ21lbnQudHlwZSA9IDI7CiAgICBzZWdt
ZW50LmNvbnQgPSBjb250aW51aXR5OwogICAgc2VnbWVudC5zZWxlY3RlZCA9IDA7CiAgICBzZWdt
ZW50LnggPSB4OwogICAgc2VnbWVudC55ID0geTsKCiAgICByZXR1cm4gU0tDdXJ2ZV9BcHBlbmRT
ZWdtZW50KHNlbGYsICZzZWdtZW50KTsKfQoKaW50ClNLQ3VydmVfQXBwZW5kQmV6aWVyKFNLQ3Vy
dmVPYmplY3QgKiBzZWxmLCBkb3VibGUgeDEsIGRvdWJsZSB5MSwKICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIHgyLCBkb3VibGUgeTIsIGRvdWJsZSB4LCBkb3VibGUgeSwKICAgICAgICAgICAg
ICAgICAgICAgaW50IGNvbnRpbnVpdHkpCnsKICAgIEN1cnZlU2VnbWVudCBzZWdtZW50OwoKICAg
IHNlZ21lbnQudHlwZSA9IDE7CiAgICBzZWdtZW50LmNvbnQgPSBjb250aW51aXR5OwogICAgc2Vn
bWVudC5zZWxlY3RlZCA9IDA7CiAgICBzZWdtZW50LngxID0geDE7IHNlZ21lbnQueTEgPSB5MTsK
ICAgIHNlZ21lbnQueDIgPSB4Mjsgc2VnbWVudC55MiA9IHkyOwogICAgc2VnbWVudC54ID0geDsg
c2VnbWVudC55ID0geTsKCiAgICByZXR1cm4gU0tDdXJ2ZV9BcHBlbmRTZWdtZW50KHNlbGYsICZz
ZWdtZW50KTsKfQoKCgoKc3RhdGljIFB5T2JqZWN0ICogc2V0X25vZGVzX2FuZF9zZWdtZW50c19z
dHJpbmcgPSAoKHZvaWQgKikwKTsKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfY3JlYXRlX2Z1bGxf
dW5kbyhTS0N1cnZlT2JqZWN0ICogc2VsZikKewogICAgUHlPYmplY3QgKiB1bmRvX3NlZ21lbnRz
OwogICAgUHlPYmplY3QgKiByZXN1bHQ7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50czsKCiAg
ICBzZWdtZW50cyA9IG1hbGxvYyhzZWxmLT5hbGxvY2F0ZWQgKiBzaXplb2YoQ3VydmVTZWdtZW50
KSk7CiAgICBpZiAoIXNlZ21lbnRzKQogICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwoK
ICAgIG1lbWNweShzZWdtZW50cywgc2VsZi0+c2VnbWVudHMsIHNlbGYtPmFsbG9jYXRlZCAqIHNp
emVvZihDdXJ2ZVNlZ21lbnQpKTsKCiAgICB1bmRvX3NlZ21lbnRzID0gUHlDT2JqZWN0X0Zyb21W
b2lkUHRyKHNlZ21lbnRzLCBmcmVlKTsKICAgIGlmICghdW5kb19zZWdtZW50cykKICAgIHsKICAg
ICAgICBmcmVlKHNlZ21lbnRzKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9Cgog
ICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT09paWkiLCBzZXRfbm9kZXNfYW5kX3NlZ21lbnRz
X3N0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kb19zZWdtZW50cywgc2VsZi0+
bGVuLCBzZWxmLT5hbGxvY2F0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmNs
b3NlZCk7CiAgICBpZiAoLS0odW5kb19zZWdtZW50cyktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2Ug
KCooKFB5T2JqZWN0ICopKHVuZG9fc2VnbWVudHMpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYykoKFB5
T2JqZWN0ICopKChQeU9iamVjdCAqKSh1bmRvX3NlZ21lbnRzKSkpOwoKICAgIHJldHVybiByZXN1
bHQ7Cn0KCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9fc2V0X25vZGVzX2FuZF9zZWdtZW50cyhT
S0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7CiAgICBpbnQgYWxsb2NhdGVk
ID0gLTEsIGxlbmd0aCA9IC0xLCBjbG9zZWQgPSAwOwogICAgUHlPYmplY3QgKiB1bmRvX3NlZ21l
bnRzID0gKCh2b2lkICopMCk7CiAgICBQeU9iamVjdCAqIHJlc3VsdDsKCiAgICBpZiAoIVB5QXJn
X1BhcnNlVHVwbGUoYXJncywgIk8haWlpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlD
T2JqZWN0X1R5cGUsICZ1bmRvX3NlZ21lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICZs
ZW5ndGgsICZhbGxvY2F0ZWQsICZjbG9zZWQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsK
CiAgICByZXN1bHQgPSBjdXJ2ZV9jcmVhdGVfZnVsbF91bmRvKHNlbGYpOwogICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlmICghY3VydmVfcmVhbGxvYyhz
ZWxmLCBhbGxvY2F0ZWQpKQogICAgewogICAgICAgIGlmICgtLShyZXN1bHQpLT5vYl9yZWZjbnQg
IT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShyZXN1bHQpKS0+b2JfdHlwZS0+dHBfZGVhbGxv
YykoKFB5T2JqZWN0ICopKChQeU9iamVjdCAqKShyZXN1bHQpKSk7CiAgICAgICAgcmV0dXJuICgo
dm9pZCAqKTApOwogICAgfQoKICAgIG1lbWNweShzZWxmLT5zZWdtZW50cywgUHlDT2JqZWN0X0Fz
Vm9pZFB0cih1bmRvX3NlZ21lbnRzKSwKICAgICAgICAgICBhbGxvY2F0ZWQgKiBzaXplb2YoQ3Vy
dmVTZWdtZW50KSk7CiAgICBzZWxmLT5hbGxvY2F0ZWQgPSBhbGxvY2F0ZWQ7CiAgICBzZWxmLT5s
ZW4gPSBsZW5ndGg7CiAgICBzZWxmLT5jbG9zZWQgPSBjbG9zZWQ7CgogICAgY3VydmVfY2hlY2tf
c3RhdGUoc2VsZiwgMSwgX19GVU5DVElPTl9fKTsKCiAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoK
c3RhdGljIFB5T2JqZWN0ICoKY3VydmVfaGl0X3BvaW50KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQ
eU9iamVjdCAqIGFyZ3MpCnsKICAgIFNLUmVjdE9iamVjdCAqIHJlY3Q7CiAgICBpbnQgaSwgcmVz
dWx0ID0gMDsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CgogICAgaWYgKCFQeUFyZ19QYXJz
ZVR1cGxlKGFyZ3MsICJPISIsICZTS1JlY3RUeXBlLCAmcmVjdCkpCiAgICAgICAgcmV0dXJuICgo
dm9pZCAqKTApOwoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsKICAgIGZvciAoaSA9IDA7
IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgewogICAgICAgIGlmIChTS1JlY3Rf
Q29udGFpbnNYWShyZWN0LCBzZWdtZW50LT54LCBzZWdtZW50LT55KSkKICAgICAgICAgICAgcmVz
dWx0ID0gMTsKICAgIH0KCiAgICByZXR1cm4gUHlJbnRfRnJvbUxvbmcocmVzdWx0KTsKfQojIDYz
NiAiLi9jdXJ2ZW9iamVjdC5jIgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9jb29yZF9yZWN0KFNL
Q3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIFNLUmVjdE9iamVjdCAq
IHJlY3QgPSAoKHZvaWQgKikwKTsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CiAgICBQeU9i
amVjdCAqIHRyYWZvID0gKCh2b2lkICopMCk7CiAgICBpbnQgaTsKCiAgICBpZiAoIVB5QXJnX1Bh
cnNlVHVwbGUoYXJncywgInxPISIsICZTS1RyYWZvVHlwZSwgJnRyYWZvKSkKICAgICAgICByZXR1
cm4gKCh2b2lkICopMCk7CgogICAgaWYgKHNlbGYtPmxlbiA9PSAwKQogICAgewogICAgICAgICgo
U0tSZWN0X0VtcHR5UmVjdCktPm9iX3JlZmNudCsrKTsKICAgICAgICByZXR1cm4gKFB5T2JqZWN0
KilTS1JlY3RfRW1wdHlSZWN0OwogICAgfQoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsK
ICAgIGlmICghdHJhZm8pCiAgICB7CiAgICAgICAgcmVjdCA9IChTS1JlY3RPYmplY3QqKVNLUmVj
dF9Gcm9tRG91YmxlKHNlZ21lbnQtPngsIHNlZ21lbnQtPnksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpOwogICAg
ICAgIGlmICghcmVjdCkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIHNl
Z21lbnQgKz0gMTsKICAgICAgICBmb3IgKGkgPSAxOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21l
bnQrKykKICAgICAgICB7CiAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0LCBzZWdtZW50LT54
LCBzZWdtZW50LT55KTsKICAgICAgICAgICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgU0tSZWN0X0FkZFhZKHJlY3QsIHNlZ21lbnQtPngxLCBz
ZWdtZW50LT55MSk7CiAgICAgICAgICAgICAgICBTS1JlY3RfQWRkWFkocmVjdCwgc2VnbWVudC0+
eDIsIHNlZ21lbnQtPnkyKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UK
ICAgIHsKICAgICAgICBTS0Nvb3JkIHgsIHk7CgogICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFko
dHJhZm8sIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksICZ4LCAmeSk7CiAgICAgICAgcmVjdCA9IChT
S1JlY3RPYmplY3QqKVNLUmVjdF9Gcm9tRG91YmxlKHgsIHksIHgsIHkpOwogICAgICAgIGlmICgh
cmVjdCkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgICAgICBzZWdtZW50ICs9
IDE7CiAgICAgICAgZm9yIChpID0gMTsgaSA8IHNlbGYtPmxlbjsgaSsrLCBzZWdtZW50KyspCiAg
ICAgICAgewogICAgICAgICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZKHRyYWZvLCBzZWdtZW50LT54
LCBzZWdtZW50LT55LCAmeCwgJnkpOwogICAgICAgICAgICBTS1JlY3RfQWRkWFkocmVjdCwgeCwg
eSk7CiAgICAgICAgICAgIGlmIChzZWdtZW50LT50eXBlID09IDEpCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngxLCBzZWdt
ZW50LT55MSwgJngsICZ5KTsKICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0LCB4LCB5
KTsKICAgICAgICAgICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngy
LCBzZWdtZW50LT55MiwgJngsICZ5KTsKICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0
LCB4LCB5KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAoUHlPYmpl
Y3QqKXJlY3Q7Cn0KCgoKCgoKCgoKCnN0YXRpYyB2b2lkCmFkZF9iZXppZXJfcmVjdChTS1JlY3RP
YmplY3QgKiByZWN0LAogICAgICAgICAgICAgICAgZG91YmxlIHAxeCwgZG91YmxlIHAxeSwgZG91
YmxlIHAyeCwgZG91YmxlIHAyeSwKICAgICAgICAgICAgICAgIGRvdWJsZSBwM3gsIGRvdWJsZSBw
M3ksIGRvdWJsZSBwNHgsIGRvdWJsZSBwNHkpCnsKICAgIGRvdWJsZSBkaXNjciwgZGVub20sIHA7
CgogICAgZGlzY3IgPSAocDF4KnA0eCAtIHAxeCpwM3ggLSBwMngqcDN4IC0gcDJ4KnA0eCArIHAy
eCpwMnggKyBwM3gqcDN4KTsKICAgIGlmIChkaXNjciA+PSAwKQogICAgewogICAgICAgIGRvdWJs
ZSBwMTMgPSAzICogcDF4LCBwMjMgPSAzICogcDJ4LCBwMzMgPSAzICogcDN4OwogICAgICAgIGRv
dWJsZSBjMSA9IHAyMyAtIHAxeCAtIHAzMyArIHA0eDsKICAgICAgICBkb3VibGUgYzIgPSBwMTMg
LSAyICogcDIzICsgcDMzOwogICAgICAgIGRvdWJsZSBjMyA9IHAyMyAtIHAxMzsKICAgICAgICBk
b3VibGUgdDsKCiAgICAgICAgZGVub20gPSAocDF4IC0gMyAqIHAyeCArIDMgKiBwM3ggLSBwNHgp
OwogICAgICAgIGlmIChkZW5vbSkKICAgICAgICB7CiAgICAgICAgICAgIGRpc2NyID0gc3FydChk
aXNjcik7CiAgICAgICAgICAgIHAgPSBwMXggLSAyICogcDJ4ICsgcDN4OwoKICAgICAgICAgICAg
dCA9IChwICsgZGlzY3IpIC8gZGVub207CiAgICAgICAgICAgIGlmICgwIDwgdCAmJiB0IDwgMSkK
ICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRYKHJlY3QsICgoYzEgKiB0ICsgYzIpICogdCArIGMz
KSAqIHQgKyBwMXgpOwogICAgICAgICAgICB0ID0gKHAgLSBkaXNjcikgLyBkZW5vbTsKICAgICAg
ICAgICAgaWYgKDAgPCB0ICYmIHQgPCAxKQogICAgICAgICAgICAgICAgU0tSZWN0X0FkZFgocmVj
dCwgKChjMSAqIHQgKyBjMikgKiB0ICsgYzMpICogdCArIHAxeCk7CiAgICAgICAgfQogICAgICAg
IGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGRlbm9tID0gcDF4IC0gMiAqIHAyeCArIHAzeDsK
ICAgICAgICAgICAgaWYgKGRlbm9tKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0ID0g
MC41ICogKHAxeCAtIHAyeCkgLyBkZW5vbTsKICAgICAgICAgICAgICAgIGlmICgwIDwgdCAmJiB0
IDwgMSkKICAgICAgICAgICAgICAgICAgICBTS1JlY3RfQWRkWChyZWN0LCAoKGMxICogdCArIGMy
KSAqIHQgKyBjMykgKiB0ICsgcDF4KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAg
ICBkaXNjciA9IChwMXkqcDR5IC0gcDF5KnAzeSAtIHAyeSpwM3kgLSBwMnkqcDR5ICsgcDJ5KnAy
eSArIHAzeSpwM3kpOwogICAgaWYgKGRpc2NyID49IDApCiAgICB7CiAgICAgICAgZG91YmxlIHAx
MyA9IDMgKiBwMXksIHAyMyA9IDMgKiBwMnksIHAzMyA9IDMgKiBwM3k7CiAgICAgICAgZG91Ymxl
IGMxID0gcDIzIC0gcDF5IC0gcDMzICsgcDR5OwogICAgICAgIGRvdWJsZSBjMiA9IHAxMyAtIDIg
KiBwMjMgKyBwMzM7CiAgICAgICAgZG91YmxlIGMzID0gcDIzIC0gcDEzOwogICAgICAgIGRvdWJs
ZSB0OwoKICAgICAgICBkZW5vbSA9IChwMXkgLSAzICogcDJ5ICsgMyAqIHAzeSAtIHA0eSk7CiAg
ICAgICAgaWYgKGRlbm9tKQogICAgICAgIHsKICAgICAgICAgICAgZGlzY3IgPSBzcXJ0KGRpc2Ny
KTsKICAgICAgICAgICAgcCA9IHAxeSAtIDIgKiBwMnkgKyBwM3k7CgogICAgICAgICAgICB0ID0g
KHAgKyBkaXNjcikgLyBkZW5vbTsKICAgICAgICAgICAgaWYgKDAgPCB0ICYmIHQgPCAxKQogICAg
ICAgICAgICAgICAgU0tSZWN0X0FkZFkocmVjdCwgKChjMSAqIHQgKyBjMikgKiB0ICsgYzMpICog
dCArIHAxeSk7CiAgICAgICAgICAgIHQgPSAocCAtIGRpc2NyKSAvIGRlbm9tOwogICAgICAgICAg
ICBpZiAoMCA8IHQgJiYgdCA8IDEpCiAgICAgICAgICAgICAgICBTS1JlY3RfQWRkWShyZWN0LCAo
KGMxICogdCArIGMyKSAqIHQgKyBjMykgKiB0ICsgcDF5KTsKICAgICAgICB9CiAgICAgICAgZWxz
ZQogICAgICAgIHsKICAgICAgICAgICAgZGVub20gPSBwMXkgLSAyICogcDJ5ICsgcDN5OwogICAg
ICAgICAgICBpZiAoZGVub20pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHQgPSAwLjUg
KiAocDF5IC0gcDJ5KSAvIGRlbm9tOwogICAgICAgICAgICAgICAgaWYgKDAgPCB0ICYmIHQgPCAx
KQogICAgICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRZKHJlY3QsICgoYzEgKiB0ICsgYzIpICog
dCArIGMzKSAqIHQgKyBwMXkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKfQoKCnN0
YXRpYyBQeU9iamVjdCAqCmN1cnZlX2FjY3VyYXRlX3JlY3QoU0tDdXJ2ZU9iamVjdCAqIHNlbGYs
IFB5T2JqZWN0ICogYXJncykKewogICAgU0tSZWN0T2JqZWN0ICogcmVjdCA9ICgodm9pZCAqKTAp
OwogICAgQ3VydmVTZWdtZW50ICogc2VnbWVudDsKICAgIFB5T2JqZWN0ICogdHJhZm8gPSAoKHZv
aWQgKikwKTsKICAgIGludCBpOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8h
IiwgJlNLVHJhZm9UeXBlLCAmdHJhZm8pKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAg
ICBpZiAoc2VsZi0+bGVuID09IDApCiAgICB7CiAgICAgICAgKChTS1JlY3RfRW1wdHlSZWN0KS0+
b2JfcmVmY250KyspOwogICAgICAgIHJldHVybiAoUHlPYmplY3QqKVNLUmVjdF9FbXB0eVJlY3Q7
OwogICAgfQoKCiAgICBzZWdtZW50ID0gc2VsZi0+c2VnbWVudHM7CiAgICBpZiAoIXRyYWZvKQog
ICAgewogICAgICAgIHJlY3QgPSAoU0tSZWN0T2JqZWN0KilTS1JlY3RfRnJvbURvdWJsZShzZWdt
ZW50LT54LCBzZWdtZW50LT55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWdtZW50LT54LCBzZWdtZW50LT55KTsKICAgICAgICBpZiAoIXJlY3QpCiAg
ICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICAgICAgc2VnbWVudCArPSAxOwogICAg
ICAgIGZvciAoaSA9IDE7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgICAgIHsK
ICAgICAgICAgICAgU0tSZWN0X0FkZFhZKHJlY3QsIHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpOwog
ICAgICAgICAgICBpZiAoc2VnbWVudC0+dHlwZSA9PSAxKQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICBhZGRfYmV6aWVyX3JlY3QocmVjdCwgc2VnbWVudFstMV0ueCwgc2VnbWVudFstMV0u
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LT54MSwgc2VnbWVudC0+
eTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC0+eDIsIHNlZ21lbnQt
PnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQtPngsIHNlZ21lbnQt
PnkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAg
IFNLQ29vcmQgeCwgeTsKCiAgICAgICAgU0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVu
dC0+eCwgc2VnbWVudC0+eSwgJngsICZ5KTsKICAgICAgICByZWN0ID0gKFNLUmVjdE9iamVjdCop
U0tSZWN0X0Zyb21Eb3VibGUoeCwgeSwgeCwgeSk7CiAgICAgICAgaWYgKCFyZWN0KQogICAgICAg
ICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgICAgIHNlZ21lbnQgKz0gMTsKICAgICAgICBm
b3IgKGkgPSAxOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgICAgICB7CiAgICAg
ICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngsIHNlZ21lbnQtPnks
ICZ4LCAmeSk7CiAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0LCB4LCB5KTsKICAgICAgICAg
ICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
U0tDb29yZCBwMXgsIHAxeSwgcDJ4LCBwMnksIHAzeCwgcDN5OwogICAgICAgICAgICAgICAgU0tU
cmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudFstMV0ueCwgc2VnbWVudFstMV0ueSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnAxeCwgJnAxeSk7CiAgICAgICAgICAg
ICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZKHRyYWZvLCBzZWdtZW50LT54MSwgc2VnbWVudC0+eTEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwMngsICZwMnkpOwogICAgICAg
ICAgICAgICAgU0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudC0+eDIsIHNlZ21lbnQt
PnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcDN4LCAmcDN5KTsKICAg
ICAgICAgICAgICAgIGFkZF9iZXppZXJfcmVjdChyZWN0LCBwMXgsIHAxeSwgcDJ4LCBwMnksIHAz
eCwgcDN5LCB4LCB5KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAo
UHlPYmplY3QqKXJlY3Q7Cn0KCgoKCgoKCmludApTS0N1cnZlX1RyYW5zZm9ybShTS0N1cnZlT2Jq
ZWN0ICogc2VsZiwgUHlPYmplY3QgKiB0cmFmbykKewogICAgaW50IGk7CiAgICBDdXJ2ZVNlZ21l
bnQgKiBzZWdtZW50OwoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsKICAgIGZvciAoaSA9
IDA7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgewogICAgICAgIFNLVHJhZm9f
VHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmc2VnbWVudC0+eCwgJnNlZ21lbnQtPnkpOwogICAgICAgIGlmIChzZWdt
ZW50LT50eXBlID09IDEpCiAgICAgICAgewogICAgICAgICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZ
KHRyYWZvLCBzZWdtZW50LT54MSwgc2VnbWVudC0+eTEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnNlZ21lbnQtPngxLCAmc2VnbWVudC0+eTEpOwogICAgICAgICAgICBTS1RyYWZv
X1RyYW5zZm9ybVhZKHRyYWZvLCBzZWdtZW50LT54Miwgc2VnbWVudC0+eTIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnNlZ21lbnQtPngyLCAmc2VnbWVudC0+eTIpOwogICAgICAg
IH0KICAgIH0KICAgIHJldHVybiAwOwp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9hcHBseV90
cmFmbyhTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7CiAgICBQeU9iamVj
dCAqIHRyYWZvOwogICAgUHlPYmplY3QgKiB1bmRvOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBs
ZShhcmdzLCAiTyEiLCAmU0tUcmFmb1R5cGUsICZ0cmFmbykpCiAgICAgICAgcmV0dXJuICgodm9p
ZCAqKTApOwoKICAgIHVuZG8gPSBjdXJ2ZV9jcmVhdGVfZnVsbF91bmRvKHNlbGYpOwogICAgaWYg
KCF1bmRvKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBTS0N1cnZlX1RyYW5zZm9y
bShzZWxmLCB0cmFmbyk7CgogICAgcmV0dXJuIHVuZG87Cn0KCnN0YXRpYyBQeU9iamVjdCAqCmN1
cnZlX2FwcGx5X3RyYW5zbGF0aW9uKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFy
Z3MpCnsKICAgIGRvdWJsZSB4LCB5OwogICAgaW50IGk7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdt
ZW50OwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZGQiLCAmeCwgJnkpKQogICAg
ewogICAgICAgIFB5T2JqZWN0ICogc2VxdWVuY2U7CiAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAg
ICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8iLCAmc2VxdWVuY2UpKQogICAgICAg
ICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgaWYgKCFza3BvaW50X2V4dHJhY3RfeHko
c2VxdWVuY2UsICZ4LCAmeSkpCiAgICAgICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmco
UHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgaXMgbmVpdGhl
ciBudW1iZXIgbm9yIHNlcXVlbmNlIG9mIHR3byBudW1iZXJzIik7CiAgICAgICAgICAgIHJldHVy
biAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICB9CgoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdt
ZW50czsKICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAg
ewogICAgICAgIHNlZ21lbnQtPnggKz0geDsKICAgICAgICBzZWdtZW50LT55ICs9IHk7CiAgICAg
ICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgICAgICB7CiAgICAgICAgICAgIHNlZ21lbnQt
PngxICs9IHg7CiAgICAgICAgICAgIHNlZ21lbnQtPnkxICs9IHk7CiAgICAgICAgICAgIHNlZ21l
bnQtPngyICs9IHg7CiAgICAgICAgICAgIHNlZ21lbnQtPnkyICs9IHk7CiAgICAgICAgfQogICAg
fQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZf
UHlfTm9uZVN0cnVjdCk7Cn0KCgoKCgoKCnN0YXRpYyBQeU9iamVjdCAqIHVuZG9fY2xvc2Vfc3Ry
aW5nID0gKCh2b2lkICopMCk7CnN0YXRpYyBQeU9iamVjdCAqCmN1cnZlX191bmRvX2Nsb3NlKFNL
Q3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGludCBjbG9zZWQgPSAw
LCBpdGVtcDsKICAgIGRvdWJsZSBsYXN0X3gsIGxhc3RfeSwgZHRlbXA7CiAgICBpbnQgZmlyc3Rf
Y29udCwgbGFzdF9jb250OwogICAgaW50IGxhc3RpZHggPSBzZWxmLT5sZW4gLSAxOwoKICAgIGlm
ICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpZGQiLCAmY2xvc2VkLCAmZmlyc3RfY29udCwg
Jmxhc3RfY29udCwKICAgICAgICAgICAgICAgICAgICAgICAgICAmbGFzdF94LCAmbGFzdF95KSkK
ICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgaXRlbXAgPSBzZWxmLT5zZWdtZW50c1sw
XS5jb250OyBzZWxmLT5zZWdtZW50c1swXS5jb250ID0gZmlyc3RfY29udDsgZmlyc3RfY29udCA9
IGl0ZW1wOwogICAgZHRlbXAgPSBzZWxmLT5zZWdtZW50c1tsYXN0aWR4XS54OyBzZWxmLT5zZWdt
ZW50c1tsYXN0aWR4XS54ID0gbGFzdF94OyBsYXN0X3ggPSBkdGVtcDsKICAgIGR0ZW1wID0gc2Vs
Zi0+c2VnbWVudHNbbGFzdGlkeF0ueTsgc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueSA9IGxhc3Rf
eTsgbGFzdF95ID0gZHRlbXA7CiAgICBpdGVtcCA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLmNv
bnQ7IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLmNvbnQgPSBsYXN0X2NvbnQ7IGxhc3RfY29udCA9
IGl0ZW1wOwoKICAgIHNlbGYtPmNsb3NlZCA9IGNsb3NlZDsKCiAgICBpZiAoc2VsZi0+c2VnbWVu
dHNbbGFzdGlkeF0udHlwZSA9PSAxKQogICAgewogICAgICAgIHNlbGYtPnNlZ21lbnRzW2xhc3Rp
ZHhdLngyICs9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLnggLSBsYXN0X3g7CiAgICAgICAgc2Vs
Zi0+c2VnbWVudHNbbGFzdGlkeF0ueTIgKz0gc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueSAtIGxh
c3RfeTsKICAgIH0KCiAgICBjdXJ2ZV9jaGVja19zdGF0ZShzZWxmLCAxLCBfX0ZVTkNUSU9OX18p
OwoKICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPaWlpZGQiLCB1bmRvX2Nsb3NlX3N0cmluZywg
IXNlbGYtPmNsb3NlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbnQsIGxhc3Rf
Y29udCwgbGFzdF94LCBsYXN0X3kpOwp9CgoKCmludApTS0N1cnZlX0Nsb3NlUGF0aChTS0N1cnZl
T2JqZWN0ICogc2VsZikKewogICAgZG91YmxlIGxhc3RfeCwgbGFzdF95OwogICAgaW50IGxhc3Rp
ZHggPSBzZWxmLT5sZW4gLSAxOwoKICAgIGlmIChsYXN0aWR4IDw9IDApCiAgICB7CiAgICAgICAg
cmV0dXJuIDA7CiAgICB9CgogICAgbGFzdF94ID0gc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueDsK
ICAgIGxhc3RfeSA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLnk7CiAgICBzZWxmLT5zZWdtZW50
c1tsYXN0aWR4XS54ID0gc2VsZi0+c2VnbWVudHNbMF0ueDsKICAgIHNlbGYtPnNlZ21lbnRzW2xh
c3RpZHhdLnkgPSBzZWxmLT5zZWdtZW50c1swXS55OwogICAgc2VsZi0+c2VnbWVudHNbMF0uY29u
dCA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLmNvbnQgPSAwOwogICAgc2VsZi0+Y2xvc2VkID0g
MTsKCiAgICBpZiAoc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0udHlwZSA9PSAxKQogICAgewogICAg
ICAgIHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLngyICs9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhd
LnggLSBsYXN0X3g7CiAgICAgICAgc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueTIgKz0gc2VsZi0+
c2VnbWVudHNbbGFzdGlkeF0ueSAtIGxhc3RfeTsKICAgIH0KCiAgICBjdXJ2ZV9jaGVja19zdGF0
ZShzZWxmLCAxLCBfX0ZVTkNUSU9OX18pOwogICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBQeU9iamVj
dCAqCmN1cnZlX2Nsb3NlX2NvbnRvdXIoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICog
YXJncykKewogICAgZG91YmxlIGxhc3RfeCwgbGFzdF95OwogICAgaW50IGZpcnN0X2NvbnQsIGxh
c3RfY29udDsKICAgIGludCBsYXN0aWR4ID0gc2VsZi0+bGVuIC0gMTsKCiAgICBpZiAobGFzdGlk
eCA8PSAwKQogICAgewogICAgICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7
CiAgICAgICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwogICAgfQoKICAgIGZpcnN0X2NvbnQg
PSBzZWxmLT5zZWdtZW50c1swXS5jb250OwogICAgbGFzdF94ID0gc2VsZi0+c2VnbWVudHNbbGFz
dGlkeF0ueDsKICAgIGxhc3RfeSA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLnk7CiAgICBsYXN0
X2NvbnQgPSBzZWxmLT5zZWdtZW50c1tsYXN0aWR4XS5jb250OwoKICAgIFNLQ3VydmVfQ2xvc2VQ
YXRoKHNlbGYpOwoKICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPaWlpZGQiLCB1bmRvX2Nsb3Nl
X3N0cmluZywgMCwgZmlyc3RfY29udCwgbGFzdF9jb250LAogICAgICAgICAgICAgICAgICAgICAg
ICAgbGFzdF94LCBsYXN0X3kpOwp9CgoKCgoKCnN0YXRpYyBpbnQKc2F2ZV9zZWdtZW50KFB5T2Jq
ZWN0ICogbGlzdCwgaW50IGksIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQpCnsKICAgIFB5T2JqZWN0
ICogdHVwbGU7CiAgICBpZiAoc2VnbWVudC0+dHlwZSA9PSAxKQogICAgewogICAgICAgIHR1cGxl
ID0gUHlfQnVpbGRWYWx1ZSgiZGRkZGRkaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlZ21lbnQtPngxLCBzZWdtZW50LT55MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VnbWVudC0+eDIsIHNlZ21lbnQtPnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWdtZW50LT54LCBzZWdtZW50LT55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdt
ZW50LT5jb250KTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICB0dXBsZSA9IFB5X0J1aWxk
VmFsdWUoImRkaSIsIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksIHNlZ21lbnQtPmNvbnQpOwogICAg
fQogICAgaWYgKCF0dXBsZSkKICAgIHsKICAgICAgICBpZiAoLS0obGlzdCktPm9iX3JlZmNudCAh
PSAwKSA7IGVsc2UgKCooKFB5T2JqZWN0ICopKGxpc3QpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYyko
KFB5T2JqZWN0ICopKChQeU9iamVjdCAqKShsaXN0KSkpOwogICAgICAgIHJldHVybiAwOwogICAg
fQogICAgaWYgKFB5TGlzdF9TZXRJdGVtKGxpc3QsIGksIHR1cGxlKSA9PSAtMSkKICAgIHsKICAg
ICAgICBpZiAoLS0odHVwbGUpLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAq
KSh0dXBsZSkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICop
KHR1cGxlKSkpOwogICAgICAgIGlmICgtLShsaXN0KS0+b2JfcmVmY250ICE9IDApIDsgZWxzZSAo
KigoUHlPYmplY3QgKikobGlzdCkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKiko
KFB5T2JqZWN0ICopKGxpc3QpKSk7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4g
MTsKfQojIDEwODMgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfZ2V0
X3NhdmUoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgQ3VydmVT
ZWdtZW50ICogc2VnbWVudDsKICAgIFB5T2JqZWN0ICogbGlzdDsKICAgIGludCBpOwoKICAgIGxp
c3QgPSBQeUxpc3RfTmV3KHNlbGYtPmxlbik7CiAgICBpZiAoIWxpc3QpCiAgICAgICAgcmV0dXJu
ICgodm9pZCAqKTApOwoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsKCiAgICBmb3IgKGkg
PSAwOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsKICAgICAgICBpZiAoIXNh
dmVfc2VnbWVudChsaXN0LCBpLCBzZWdtZW50KSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAq
KTApOwogICAgfQogICAgcmV0dXJuIGxpc3Q7Cn0KCgpzdGF0aWMgaW50CndyaXRlX3NlZ21lbnQo
RklMRSAqIGZpbGUsIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQpCnsKICAgIGludCByZXN1bHQgPSAw
OwoKICAgIGlmIChzZWdtZW50LT50eXBlID09IDEpCiAgICB7CiAgICAgICAgcmVzdWx0ID0gZnBy
aW50ZihmaWxlLCAiYmMoJWcsJWcsJWcsJWcsJWcsJWcsJWQpXG4iLAogICAgICAgICAgICAgICAg
ICAgICAgICAgc2VnbWVudC0+eDEsIHNlZ21lbnQtPnkxLCBzZWdtZW50LT54Miwgc2VnbWVudC0+
eTIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LT54LCBzZWdtZW50LT55LCBzZWdt
ZW50LT5jb250KTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICByZXN1bHQgPSBmcHJpbnRm
KGZpbGUsICJicyglZywlZywlZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50
LT54LCBzZWdtZW50LT55LCBzZWdtZW50LT5jb250KTsKICAgIH0KCiAgICBpZiAocmVzdWx0IDwg
MCkKICAgIHsKICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAg
ICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3RhdGljIFB5T2JqZWN0ICoKY3Vy
dmVfd3JpdGVfdG9fZmlsZShTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7
CiAgICBQeU9iamVjdCAqIHB5ZmlsZSA9ICgodm9pZCAqKTApOwogICAgRklMRSAqIGZpbGUgPSAo
KHZvaWQgKikwKTsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CiAgICBpbnQgaTsKCiAgICBp
ZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hIiwgJlB5RmlsZV9UeXBlLCAmcHlmaWxlKSkK
ICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgZmlsZSA9IFB5RmlsZV9Bc0ZpbGUocHlm
aWxlKTsKCiAgICBzZWdtZW50ID0gc2VsZi0+c2VnbWVudHM7CiAgICBmb3IgKGkgPSAwOyBpIDwg
c2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsKICAgICAgICBpZiAoIXdyaXRlX3NlZ21l
bnQoZmlsZSwgc2VnbWVudCkpCiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgIH0K
ICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlf
Tm9uZVN0cnVjdCk7Cn0KCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfYXBwZW5kX3N0cmFpZ2h0
KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGRvdWJsZSB4LCB5
OwogICAgaW50IGNvbnQgPSAwOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZGR8
aSIsICZ4LCAmeSwgJmNvbnQpKQogICAgewogICAgICAgIFB5T2JqZWN0ICogc2VxdWVuY2U7CiAg
ICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywg
Ik98aSIsICZzZXF1ZW5jZSwgJmNvbnQpKQogICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7
CiAgICAgICAgaWYgKCFza3BvaW50X2V4dHJhY3RfeHkoc2VxdWVuY2UsICZ4LCAmeSkpCiAgICAg
ICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAiZmly
c3QgYXJndW1lbnQgaXMgbmVpdGhlciBudW1iZXIgbm9yIHNlcXVlbmNlIG9mIHR3byBudW1iZXJz
Iik7CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICB9CgogICAg
aWYgKCFTS0N1cnZlX0FwcGVuZExpbmUoc2VsZiwgeCwgeSwgY29udCkpCiAgICAgICAgcmV0dXJu
ICgodm9pZCAqKTApOwoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAg
ICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9h
cHBlbmRfY3VydmUoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAg
aW50IGNvbnQgPSAwOwogICAgZG91YmxlIHgsIHksIHgxLCB5MSwgeDIsIHkyOwoKICAgIGlmIChQ
eVR1cGxlX1NpemUoYXJncykgPiA0KQogICAgewogICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBs
ZShhcmdzLCAiZGRkZGRkfGkiLCAmeDEsICZ5MSwgJngyLCAmeTIsICZ4LCAmeSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmNvbnQpKQogICAgICAgICAgICByZXR1cm4gKCh2b2lkICop
MCk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgUHlPYmplY3QgKnAxLCAqcDIsICpwMzsK
ICAgICAgICBpbnQgcmVzdWx0OwoKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywg
Ik9PT3xpIiwgJnAxLCAmcDIsICZwMywgJmNvbnQpKQogICAgICAgICAgICByZXR1cm4gKCh2b2lk
ICopMCk7CgogICAgICAgIHJlc3VsdCA9IHNrcG9pbnRfZXh0cmFjdF94eShwMSwgJngxLCAmeTEp
OwogICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiBza3BvaW50X2V4dHJhY3RfeHkocDIsICZ4Miwg
JnkyKTsKICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgc2twb2ludF9leHRyYWN0X3h5KHAzLCAm
eCwgJnkpOwogICAgICAgIGlmICghcmVzdWx0KQogICAgICAgIHsKICAgICAgICAgICAgUHlFcnJf
U2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInRocmVlIHBvaW50cyBleHBlY3RlZCIpOwogICAg
ICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICghU0tD
dXJ2ZV9BcHBlbmRCZXppZXIoc2VsZiwgeDEsIHkxLCB4MiwgeTIsIHgsIHksIGNvbnQpKQogICAg
ICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICAoKCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVm
Y250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwp9CgoKc3RhdGljIFB5T2JqZWN0
ICoKY3VydmVfYXBwZW5kX3NlZ21lbnQoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICog
YXJncykKewogICAgZG91YmxlIHgsIHksIHgxLCB5MSwgeDIsIHkyOwogICAgaW50IGNvbnQgPSAw
OwogICAgaW50IHR5cGU7CiAgICBQeU9iamVjdCAqIHAsICpwMSwgKnAyLCAqdHVwbGU7CgogICAg
aWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT098aSIsICZ0eXBlLCAmdHVwbGUsICZwLCAm
Y29udCkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlmICghc2twb2ludF9leHRy
YWN0X3h5KHAsICZ4LCAmeSkpCiAgICB7CiAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5
cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgInRoaXJkIGFyZ3VtZW50IG11c3QgYmUg
YSBwb2ludCBzcGVjIik7CiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQoKICAgIGlm
ICh0eXBlID09IDIpCiAgICB7CiAgICAgICAgaWYgKCFTS0N1cnZlX0FwcGVuZExpbmUoc2VsZiwg
eCwgeSwgY29udCkpCiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgIH0KICAgIGVs
c2UgaWYgKHR5cGUgPT0gMSkKICAgIHsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUodHVw
bGUsICJPTyIsICZwMSwgJnAyKSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAg
ICAgIGlmICghc2twb2ludF9leHRyYWN0X3h5KHAxLCAmeDEsICZ5MSkKICAgICAgICAgICAgfHwg
IXNrcG9pbnRfZXh0cmFjdF94eShwMiwgJngyLCAmeTIpKQogICAgICAgIHsKICAgICAgICAgICAg
UHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJmb3IgYmV6aWVyIHNlZ21lbnRzLCBzZWNvbmQgYXJndW1lbnQgIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzZXF1ZW5jZSBvZiB0d28gcG9pbnQgc3BlY3MgIik7
CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CgogICAgICAgIGlmICgh
U0tDdXJ2ZV9BcHBlbmRCZXppZXIoc2VsZiwgeDEsIHkxLCB4MiwgeTIsIHgsIHksIGNvbnQpKQog
ICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9CgogICAgKCgoJl9QeV9Ob25lU3Ry
dWN0KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQoKc3Rh
dGljIFB5T2JqZWN0ICoKY3VydmVfc2V0X3N0cmFpZ2h0KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQ
eU9iamVjdCAqIGFyZ3MpCnsKICAgIGRvdWJsZSB4LCB5OwogICAgaW50IGlkeCwgY29udCA9IDA7
CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpZGR8aSIsICZpZHgsICZ4LCAmeSwg
JmNvbnQpKQogICAgewogICAgICAgIFB5T2JqZWN0ICogc2VxdWVuY2U7CiAgICAgICAgUHlFcnJf
Q2xlYXIoKTsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPfGkiLCAmaWR4
LCAmc2VxdWVuY2UsICZjb250KSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAg
ICAgIGlmICghc2twb2ludF9leHRyYWN0X3h5KHNlcXVlbmNlLCAmeCwgJnkpKQogICAgICAgIHsK
ICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgImZpcnN0IGFy
Z3VtZW50IGlzIG5laXRoZXIgbnVtYmVyIG5vciBzZXF1ZW5jZSBvZiB0d28gbnVtYmVycyIpOwog
ICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgfQogICAgfQoKICAgIGlkeCA9
IGNoZWNrX2luZGV4KHNlbGYsIGlkeCwgIlNldExpbmUiKTsKICAgIGlmIChpZHggPCAwKQogICAg
ICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLnR5cGUgPSAy
OwogICAgc2VsZi0+c2VnbWVudHNbaWR4XS5jb250ID0gY29udDsKICAgIHNlbGYtPnNlZ21lbnRz
W2lkeF0ueCA9IHg7CiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLnkgPSB5OwoKICAgIGlmIChzZWxm
LT5jbG9zZWQpCiAgICB7CiAgICAgICAgaWYgKGlkeCA9PSAwKQogICAgICAgIHsKICAgICAgICAg
ICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0ueCA9IHg7CiAgICAgICAgICAgIHNlbGYt
PnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLnkgPSB5OwogICAgICAgICAgICBzZWxmLT5zZWdtZW50
c1tzZWxmLT5sZW4gLSAxXS5jb250ID0gY29udDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAo
aWR4ID09IHNlbGYtPmxlbiAtIDEpCiAgICAgICAgewogICAgICAgICAgICBzZWxmLT5zZWdtZW50
c1swXS54ID0geDsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0ueSA9IHk7CiAgICAgICAg
ICAgIHNlbGYtPnNlZ21lbnRzWzBdLmNvbnQgPSBjb250OwogICAgICAgIH0KICAgIH0KCiAgICAo
KCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVmY250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVT
dHJ1Y3QpOwp9CgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfc2V0X2N1cnZlKFNLQ3VydmVPYmpl
Y3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGludCBpZHgsIGNvbnQgPSAwOwogICAg
ZG91YmxlIHgsIHksIHgxLCB5MSwgeDIsIHkyOwoKICAgIGlmIChQeVR1cGxlX1NpemUoYXJncykg
PiA1KQogICAgewogICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWRkZGRkZHxp
IiwgJmlkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJngxLCAmeTEsICZ4MiwgJnky
LCAmeCwgJnksICZjb250KSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQog
ICAgZWxzZQogICAgewogICAgICAgIFB5T2JqZWN0ICpwMSwgKnAyLCAqcDM7CiAgICAgICAgaW50
IHJlc3VsdDsKCiAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT09PfGkiLCAm
aWR4LCAmcDEsICZwMiwgJnAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udCkp
CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICAgICAgcmVzdWx0ID0gc2twb2lu
dF9leHRyYWN0X3h5KHAxLCAmeDEsICZ5MSk7CiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHNr
cG9pbnRfZXh0cmFjdF94eShwMiwgJngyLCAmeTIpOwogICAgICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiBza3BvaW50X2V4dHJhY3RfeHkocDMsICZ4LCAmeSk7CiAgICAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAidGhy
ZWUgcG9pbnRzIGV4cGVjdGVkIik7CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAg
ICAgICB9CiAgICB9CgogICAgaWR4ID0gY2hlY2tfaW5kZXgoc2VsZiwgaWR4LCAiU2V0QmV6aWVy
Iik7CiAgICBpZiAoaWR4IDwgMCkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgoKICAgIHNl
bGYtPnNlZ21lbnRzW2lkeF0udHlwZSA9IDE7CiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLmNvbnQg
PSBjb250OwogICAgc2VsZi0+c2VnbWVudHNbaWR4XS54ID0geDsgc2VsZi0+c2VnbWVudHNbaWR4
XS55ID0geTsKICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0ueDEgPSB4MTsgc2VsZi0+c2VnbWVudHNb
aWR4XS55MSA9IHkxOwogICAgc2VsZi0+c2VnbWVudHNbaWR4XS54MiA9IHgyOyBzZWxmLT5zZWdt
ZW50c1tpZHhdLnkyID0geTI7CgogICAgaWYgKHNlbGYtPmNsb3NlZCkKICAgIHsKICAgICAgICBp
ZiAoaWR4ID09IDApCiAgICAgICAgewogICAgICAgICAgICBzZWxmLT5zZWdtZW50c1tzZWxmLT5s
ZW4gLSAxXS54ID0geDsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0u
eSA9IHk7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLmNvbnQgPSBj
b250OwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChpZHggPT0gc2VsZi0+bGVuIC0gMSkKICAg
ICAgICB7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzWzBdLnggPSB4OwogICAgICAgICAgICBz
ZWxmLT5zZWdtZW50c1swXS55ID0geTsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0uY29u
dCA9IGNvbnQ7CiAgICAgICAgfQogICAgfQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9y
ZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCgpzdGF0aWMgUHlPYmpl
Y3QgKgpjdXJ2ZV9zZXRfc2VnbWVudChTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBh
cmdzKQp7CiAgICBkb3VibGUgeCwgeSwgeDEsIHkxLCB4MiwgeTI7CiAgICBpbnQgY29udCA9IDA7
CiAgICBpbnQgaWR4LCB0eXBlOwogICAgUHlPYmplY3QgKiBwLCAqcDEsICpwMiwgKnR1cGxlOwoK
ICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU9PfGkiLCAmaWR4LCAmdHlwZSwgJnR1
cGxlLCAmcCwgJmNvbnQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBpZiAoIXNr
cG9pbnRfZXh0cmFjdF94eShwLCAmeCwgJnkpKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmlu
ZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0aGlyZCBhcmd1bWVu
dCBtdXN0IGJlIGEgcG9pbnQgc3BlYyIpOwogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAg
IH0KCgogICAgaWR4ID0gY2hlY2tfaW5kZXgoc2VsZiwgaWR4LCAiU2V0U2VnbWVudCIpOwogICAg
aWYgKGlkeCA8IDApCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIHNlbGYtPnNlZ21l
bnRzW2lkeF0udHlwZSA9IDI7CiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLmNvbnQgPSBjb250Owog
ICAgc2VsZi0+c2VnbWVudHNbaWR4XS54ID0geDsKICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0ueSA9
IHk7CgogICAgaWYgKHR5cGUgPT0gMSkKICAgIHsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVw
bGUodHVwbGUsICJPTyIsICZwMSwgJnAyKSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTAp
OwogICAgICAgIGlmICghc2twb2ludF9leHRyYWN0X3h5KHAxLCAmeDEsICZ5MSkKICAgICAgICAg
ICAgfHwgIXNrcG9pbnRfZXh0cmFjdF94eShwMiwgJngyLCAmeTIpKQogICAgICAgIHsKICAgICAg
ICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmb3IgYmV6aWVyIHNlZ21lbnRzLCBzZWNvbmQgYXJndW1lbnQgIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzZXF1ZW5jZSBvZiB0d28gcG9pbnQgc3Bl
Y3MgIik7CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CgogICAgICAg
IHNlbGYtPnNlZ21lbnRzW2lkeF0ueDEgPSB4MTsgc2VsZi0+c2VnbWVudHNbaWR4XS55MSA9IHkx
OwogICAgICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0ueDIgPSB4Mjsgc2VsZi0+c2VnbWVudHNbaWR4
XS55MiA9IHkyOwogICAgfQoKICAgIGlmIChzZWxmLT5jbG9zZWQpCiAgICB7CiAgICAgICAgaWYg
KGlkeCA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVu
IC0gMV0ueCA9IHg7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLnkg
PSB5OwogICAgICAgICAgICBzZWxmLT5zZWdtZW50c1tzZWxmLT5sZW4gLSAxXS5jb250ID0gY29u
dDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoaWR4ID09IHNlbGYtPmxlbiAtIDEpCiAgICAg
ICAgewogICAgICAgICAgICBzZWxmLT5zZWdtZW50c1swXS54ID0geDsKICAgICAgICAgICAgc2Vs
Zi0+c2VnbWVudHNbMF0ueSA9IHk7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzWzBdLmNvbnQg
PSBjb250OwogICAgICAgIH0KICAgIH0KCiAgICAoKCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVm
Y250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwp9CgpzdGF0aWMgaW50CmN1cnZl
X3BhcnNlX3N0cmluZ19hcHBlbmQoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIGNvbnN0IGNoYXIgKiBz
dHJpbmcpCnsKICAgIEN1cnZlU2VnbWVudCBzZWdtZW50OwoKICAgIGlmIChzdHJpbmdbMV0gPT0g
J2MnKQogICAgewogICAgICAgIGRvdWJsZSB4LCB5LCB4MSwgeTEsIHgyLCB5MjsKICAgICAgICBp
bnQgY29udDsKCiAgICAgICAgc2VnbWVudC50eXBlID0gMTsKICAgICAgICBpZiAoc3NjYW5mKHN0
cmluZywgImJjJSpbIChdJWxmLCVsZiwlbGYsJWxmLCVsZiwlbGYsJWQiLAogICAgICAgICAgICAg
ICAgICAgJngxLCAmeTEsICZ4MiwgJnkyLCAmeCwgJnksICZjb250KSAhPSA3KQogICAgICAgIHsK
ICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJjYW5ub3QgcGFy
c2Ugc3RyaW5nIik7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgc2Vn
bWVudC5jb250ID0gY29udDsKICAgICAgICBzZWdtZW50LnggPSB4OyBzZWdtZW50LnkgPSB5Owog
ICAgICAgIHNlZ21lbnQueDEgPSB4MTsgc2VnbWVudC55MSA9IHkxOwogICAgICAgIHNlZ21lbnQu
eDIgPSB4Mjsgc2VnbWVudC55MiA9IHkyOwoKICAgICAgICBpZiAoIVNLQ3VydmVfQXBwZW5kU2Vn
bWVudChzZWxmLCAmc2VnbWVudCkpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgfQogICAgZWxz
ZSBpZiAoc3RyaW5nWzFdID09ICdzJykKICAgIHsKICAgICAgICBkb3VibGUgeCwgeTsKICAgICAg
ICBpbnQgY29udDsKCiAgICAgICAgc2VnbWVudC50eXBlID0gMjsKICAgICAgICBpZiAoc3NjYW5m
KHN0cmluZywgImJzJSpbIChdJWxmLCVsZiwlZCIsICZ4LCAmeSwgJmNvbnQpICE9IDMpCiAgICAg
ICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNhbm5v
dCBwYXJzZSBzdHJpbmciKTsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAg
ICBzZWdtZW50LmNvbnQgPSBjb250OwogICAgICAgIHNlZ21lbnQueCA9IHg7IHNlZ21lbnQueSA9
IHk7CgogICAgICAgIGlmICghU0tDdXJ2ZV9BcHBlbmRTZWdtZW50KHNlbGYsICZzZWdtZW50KSkK
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgUHlFcnJf
U2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHJp
bmcgbXVzdCBiZWdpbiB3aXRoICdiYycgb3IgJ2JzJyIpOwogICAgICAgIHJldHVybiAwOwogICAg
fQoKICAgIHJldHVybiAxOwp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9hcHBlbmRfZnJvbV9z
dHJpbmcoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgY2hhciAq
IHN0cmluZyA9ICgodm9pZCAqKTApOwogICAgaW50IGxlbjsKCiAgICBpZiAoIVB5QXJnX1BhcnNl
VHVwbGUoYXJncywgInMjIiwgJnN0cmluZywgJmxlbikpCiAgICAgICAgcmV0dXJuICgodm9pZCAq
KTApOwoKICAgIGlmIChsZW4gPCA0KQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4
Y19WYWx1ZUVycm9yLCAic3RyaW5nIHRvbyBzaG9ydCIpOwogICAgICAgIHJldHVybiAoKHZvaWQg
KikwKTsKICAgIH0KCiAgICBpZiAoIWN1cnZlX3BhcnNlX3N0cmluZ19hcHBlbmQoc2VsZiwgc3Ry
aW5nKSkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgKCgoJl9QeV9Ob25lU3RydWN0
KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQoKc3RhdGlj
IFB5T2JqZWN0ICoKY3VydmVfYXBwZW5kX2Zyb21fZmlsZShTS0N1cnZlT2JqZWN0ICogc2VsZiwg
UHlPYmplY3QgKiBhcmdzKQp7CiAgICBQeU9iamVjdCAqIHB5ZmlsZSA9ICgodm9pZCAqKTApOwog
ICAgUHlPYmplY3QgKiByZXR2YWwgPSAoKHZvaWQgKikwKTsKICAgIEZJTEUgKiBmaWxlID0gKCh2
b2lkICopMCk7CiAgICBjaGFyIGJ1Zls1MDBdOwogICAgY2hhciAqIHJlc3VsdDsKCiAgICBpZiAo
IVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hIiwgJlB5RmlsZV9UeXBlLCAmcHlmaWxlKSkKICAg
ICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgZmlsZSA9IFB5RmlsZV9Bc0ZpbGUocHlmaWxl
KTsKCiAgICB3aGlsZSgocmVzdWx0ID0gZmdldHMoYnVmLCBzaXplb2YoYnVmKSAtIDEsIGZpbGUp
KSAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgICBpZiAoYnVmWzBdICE9ICdiJyB8fCAoYnVm
WzFdICE9ICdjJyAmJiBidWZbMV0gIT0gJ3MnKSkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
aWYgKCFjdXJ2ZV9wYXJzZV9zdHJpbmdfYXBwZW5kKHNlbGYsIGJ1ZikpCiAgICAgICAgICAgIHJl
dHVybiAoKHZvaWQgKikwKTsKICAgIH0KCiAgICBpZiAocmVzdWx0KQogICAgewogICAgICAgIHJl
dHZhbCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcoYnVmKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAg
ICAgICBpZiAoZmVycm9yKGZpbGUpKQogICAgICAgIHsKICAgICAgICAgICAgUHlFcnJfU2V0RnJv
bUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICAgICByZXR2YWwgPSAoKHZvaWQgKikwKTsK
ICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgcmV0dmFsID0gUHlT
dHJpbmdfRnJvbVN0cmluZygiIik7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiByZXR2YWw7
Cn0KIyAxNTczICIuL2N1cnZlb2JqZWN0LmMiCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9ndWVz
c19jb250aW51aXR5KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAg
IGludCBpOwogICAgQ3VydmVTZWdtZW50ICogc2VnbWVudCwgKnByZWQ7CgogICAgc2VnbWVudCA9
IHNlbGYtPnNlZ21lbnRzOwogICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmxlbjsgaSsrLCBzZWdt
ZW50KyspCiAgICB7CiAgICAgICAgaWYgKGkgPiAwKQogICAgICAgICAgICBwcmVkID0gc2VnbWVu
dCAtIDE7CiAgICAgICAgZWxzZSBpZiAoc2VsZi0+Y2xvc2VkKQogICAgICAgICAgICBwcmVkID0g
c2VsZi0+c2VnbWVudHMgKyBzZWxmLT5sZW4gLSAxOwogICAgICAgIGVsc2UgcHJlZCA9ICgodm9p
ZCAqKTApOwoKICAgICAgICBpZiAocHJlZCAmJiBwcmVkLT50eXBlID09IDEgJiYgc2VnbWVudC0+
dHlwZSA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGZhYnMocHJlZC0+eDIgKyBzZWdt
ZW50LT54MSAtIDIgKiBzZWdtZW50LT54KSA8IDAuMQogICAgICAgICAgICAgICAgJiYgZmFicyhw
cmVkLT55MiArIHNlZ21lbnQtPnkxIC0gMipzZWdtZW50LT55KSA8IDAuMSkKICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgc2VnbWVudC0+Y29udCA9IDI7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTS0Nvb3JkIHgsIHk7CiAg
ICAgICAgICAgICAgICB4ID0gcHJlZC0+eDI7IHkgPSBwcmVkLT55MjsKICAgICAgICAgICAgICAg
IFNLQ3VydmVfQWRqdXN0Q29udHJvbFBvaW50KCZ4LCAmeSwgc2VnbWVudC0+eDEsIHNlZ21lbnQt
PnkxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC0+
eCwgc2VnbWVudC0+eSwgMSk7CiAgICAgICAgICAgICAgICBpZiAoZmFicyh4IC0gcHJlZC0+eDIp
IDwgMC4xCiAgICAgICAgICAgICAgICAgICAgJiYgZmFicyh5IC0gcHJlZC0+eTIpIDwgMC4xKQog
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHNlZ21lbnQtPmNvbnQgPSAxOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgIHggPSBzZWdtZW50LT54MTsgeSA9IHNlZ21lbnQtPnkxOwogICAg
ICAgICAgICAgICAgICAgIFNLQ3VydmVfQWRqdXN0Q29udHJvbFBvaW50KCZ4LCAmeSwgcHJlZC0+
eDIsIHByZWQtPnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGZhYnMoeCAtIHNl
Z21lbnQtPngxKSA8IDAuMQogICAgICAgICAgICAgICAgICAgICAgICAmJiBmYWJzKHkgLSBzZWdt
ZW50LT55MSkgPCAwLjEpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICAgICBzZWdtZW50LT5jb250ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpID09IDAgJiYgc2VsZi0+Y2xv
c2VkKQogICAgICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0uY29udCA9
IHNlZ21lbnQtPmNvbnQ7CiAgICAgICAgfQogICAgfQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkp
LT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCnN0YXRpYyBQ
eU9iamVjdCAqCmN1cnZlX2xvYWRfY2xvc2UoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0
ICogYXJncykKewogICAgaW50IGNvcHlfY29udF9mcm9tX2xhc3QgPSAwOwoKICAgIGlmICghUHlB
cmdfUGFyc2VUdXBsZShhcmdzLCAifGkiLCAmY29weV9jb250X2Zyb21fbGFzdCkpCiAgICAgICAg
cmV0dXJuICgodm9pZCAqKTApOwoKICAgIHNlbGYtPmNsb3NlZCA9IDE7CgogICAgaWYgKGNvcHlf
Y29udF9mcm9tX2xhc3QpCiAgICB7CiAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0uY29udCA9IHNl
bGYtPnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLmNvbnQ7CiAgICB9CgogICAgaWYgKHNlbGYtPmxl
biA+IDIgJiYgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0udHlwZSA9PSAyKQogICAgewog
ICAgICAgIGlmIChzZWxmLT5zZWdtZW50c1tzZWxmLT5sZW4gLSAxXS54ID09IHNlbGYtPnNlZ21l
bnRzW3NlbGYtPmxlbiAtIDJdLngKICAgICAgICAgICAgJiYgc2VsZi0+c2VnbWVudHNbc2VsZi0+
bGVuLTFdLnkgPT0gc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuLTJdLnkpCiAgICAgICAgewogICAg
ICAgICAgICBzZWxmLT5sZW4gLT0gMTsKICAgICAgICB9CiAgICB9CiAgICBjdXJ2ZV9jaGVja19z
dGF0ZShzZWxmLCAwLCBfX0ZVTkNUSU9OX18pOwoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5v
Yl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCgoKaW50ClNLQ3Vy
dmVfVGVzdFRyYW5zZm9ybWVkKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIHRyYWZv
LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGVzdF94LCBpbnQgdGVzdF95LCBpbnQgY2xv
c2VkKQp7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAgU0tDb29yZCBueCwgbnksIHgx
LCB5MSwgeDIsIHkyLCBsYXN0eCwgbGFzdHksIGk7CiAgICBpbnQgeFs0XSwgeVs0XTsKICAgIGlu
dCByZXN1bHQ7CiAgICBpbnQgY3Jvc3NfY291bnQ7CgoKCgoKICAgIHNlZ21lbnQgPSBzZWxmLT5z
ZWdtZW50czsKICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngsIHNlZ21l
bnQtPnksICZsYXN0eCwgJmxhc3R5KTsKCiAgICBzZWdtZW50ICs9IDE7CiAgICBjcm9zc19jb3Vu
dCA9IDA7CiAgICBmb3IgKGkgPSAxOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAg
IHsKICAgICAgICBpZiAoc2VnbWVudC0+dHlwZSA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAg
U0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudC0+eDEsIHNlZ21lbnQtPnkxLCAmeDEs
ICZ5MSk7CiAgICAgICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngy
LCBzZWdtZW50LT55MiwgJngyLCAmeTIpOwogICAgICAgICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZ
KHRyYWZvLCBzZWdtZW50LT54LCBzZWdtZW50LT55LCAmbngsICZueSk7CiAgICAgICAgICAgIHhb
MF0gPSBsYXN0eCArIDAuNTsgeVswXSA9IGxhc3R5ICsgMC41OwogICAgICAgICAgICB4WzFdID0g
eDEgKyAwLjU7IHlbMV0gPSB5MSArIDAuNTsKICAgICAgICAgICAgeFsyXSA9IHgyICsgMC41OyB5
WzJdID0geTIgKyAwLjU7CiAgICAgICAgICAgIHhbM10gPSBueCArIDAuNTsgeVszXSA9IG55ICsg
MC41OwogICAgICAgICAgICByZXN1bHQgPSBiZXppZXJfaGl0X3NlZ21lbnQoeCwgeSwgdGVzdF94
LCB0ZXN0X3kpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewoKICAgICAgICAgICAg
U0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudC0+eCwgc2VnbWVudC0+eSwgJm54LCAm
bnkpOwogICAgICAgICAgICByZXN1bHQgPSBiZXppZXJfaGl0X2xpbmUobGFzdHggKyAwLjUsIGxh
c3R5ICsgMC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnggKyAwLjUs
IG55ICsgMC41LCB0ZXN0X3gsIHRlc3RfeSk7CiAgICAgICAgfQogICAgICAgIGxhc3R4ID0gbng7
CiAgICAgICAgbGFzdHkgPSBueTsKICAgICAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICB7CiAg
ICAgICAgICAgIGNyb3NzX2NvdW50ID0gLTE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0K
ICAgICAgICBpZiAocmVzdWx0ID4gMCkKICAgICAgICAgICAgY3Jvc3NfY291bnQgKz0gcmVzdWx0
OwogICAgfQogICAgaWYgKCFzZWxmLT5jbG9zZWQgJiYgY2xvc2VkICYmIHNlbGYtPmxlbiA+PSAy
ICYmIGNyb3NzX2NvdW50ID49IDApCiAgICB7CgogICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFko
dHJhZm8sIHNlbGYtPnNlZ21lbnRzWzBdLngsIHNlbGYtPnNlZ21lbnRzWzBdLnksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmbngsICZueSk7CiAgICAgICAgcmVzdWx0ID0gYmV6aWVyX2hp
dF9saW5lKGxhc3R4ICsgMC41LCBsYXN0eSArIDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG54ICsgMC41LCBueSArIDAuNSwgdGVzdF94LCB0ZXN0X3kpOwogICAgICAgIGlm
IChyZXN1bHQgPiAwKQogICAgICAgICAgICBjcm9zc19jb3VudCArPSByZXN1bHQ7CiAgICB9CgoK
CgogICAgcmV0dXJuIGNyb3NzX2NvdW50Owp9CgoKCgoKIyAxNzQ1ICIuL2N1cnZlb2JqZWN0LmMi
CnN0YXRpYyBQeU9iamVjdCAqCmNyZWF0b3JfZHJhd19ub3RfbGFzdChTS0N1cnZlT2JqZWN0ICog
Y3VydmUsIFB5T2JqZWN0ICogYXJncykKewogICAgUHlPYmplY3QgKiByZXN1bHQ7CiAgICBDdXJ2
ZVNlZ21lbnQgKiBzZWdtZW50cyA9IGN1cnZlLT5zZWdtZW50czsKICAgIGludCBpOwogICAgUHlP
YmplY3QgKiBkcmF3X2JlemllcjsKICAgIFB5T2JqZWN0ICogZHJhd19saW5lOwoKICAgIGlmICgh
UHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmZHJhd19iZXppZXIsICZkcmF3X2xpbmUpKQog
ICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBmb3IgKGkgPSAxOyBpIDwgKCgoU0tDdXJ2
ZU9iamVjdCopY3VydmUpLT5sZW4pIC0gMTsgaSsrKQogICAgewogICAgICAgIGlmIChzZWdtZW50
c1tpXS50eXBlID09IDEpCiAgICAgICAgewoKCgogICAgICAgICAgICByZXN1bHQgPSBQeU9iamVj
dF9DYWxsRnVuY3Rpb24oZHJhd19iZXppZXIsICIoZGQpKGRkKShkZCkoZGQpIiwgc2VnbWVudHNb
aSAtIDFdLngsc2VnbWVudHNbaSAtIDFdLnksc2VnbWVudHNbaV0ueDEsc2VnbWVudHNbaV0ueTEs
c2VnbWVudHNbaV0ueDIsc2VnbWVudHNbaV0ueTIsc2VnbWVudHNbaV0ueCxzZWdtZW50c1tpXS55
KTtpZiAoIXJlc3VsdCkgcmV0dXJuIDA7IGlmICgtLShyZXN1bHQpLT5vYl9yZWZjbnQgIT0gMCkg
OyBlbHNlICgqKChQeU9iamVjdCAqKShyZXN1bHQpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYykoKFB5
T2JqZWN0ICopKChQeU9iamVjdCAqKShyZXN1bHQpKSk7CiAgICAgICAgfQogICAgICAgIGVsc2Ug
aWYgKHNlZ21lbnRzW2ldLnR5cGUgPT0gMikKICAgICAgICB7CgogICAgICAgICAgICByZXN1bHQg
PSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZHJhd19saW5lLCAiKGRkKShkZCkiLHNlZ21lbnRzW2kg
LSAxXS54LHNlZ21lbnRzW2kgLSAxXS55LHNlZ21lbnRzW2ldLngsc2VnbWVudHNbaV0ueSk7IGlm
ICghcmVzdWx0KSByZXR1cm4gMDsgaWYgKC0tKHJlc3VsdCktPm9iX3JlZmNudCAhPSAwKSA7IGVs
c2UgKCooKFB5T2JqZWN0ICopKHJlc3VsdCkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmpl
Y3QgKikoKFB5T2JqZWN0ICopKHJlc3VsdCkpKTsKICAgICAgICB9CiAgICB9CgogICAgKCgoJl9Q
eV9Ob25lU3RydWN0KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0
KTsKfQoKCgoKCgojIDE3OTIgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIFB5T2JqZWN0ICoKY3Vy
dmVfc2VsZWN0aW9uX2NvdW50KFNLQ3VydmVPYmplY3QgKiBzZWxmKQp7CiAgICBpbnQgY291bnQg
PSAwOwogICAgaW50IGk7CgogICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmxlbjsgaSsrKQogICAg
ewogICAgICAgIGlmIChzZWxmLT5zZWdtZW50c1tpXS5zZWxlY3RlZCAmJiAoIXNlbGYtPmNsb3Nl
ZCB8fCBpIDwgc2VsZi0+bGVuIC0gMSkpCiAgICAgICAgICAgICsrY291bnQ7CiAgICB9CiAgICBy
ZXR1cm4gUHlJbnRfRnJvbUxvbmcoY291bnQpOwp9CiMgMTgxMyAiLi9jdXJ2ZW9iamVjdC5jIgpz
dGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9ub2RlX3NlbGVjdGVkKFNLQ3VydmVPYmplY3QgKiBzZWxm
LCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGludCBpZHg7CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1
cGxlKGFyZ3MsICJpIiwgJmlkeCkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlk
eCA9IGNoZWNrX2luZGV4KHNlbGYsIGlkeCwgIk5vZGVTZWxlY3RlZCIpOwogICAgaWYgKGlkeCA8
IDApCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIHJldHVybiBQeUludF9Gcm9tTG9u
ZyhzZWxmLT5zZWdtZW50c1tpZHhdLnNlbGVjdGVkKTsKfQoKCnN0YXRpYyBQeU9iamVjdCAqCmN1
cnZlX3NlbGVjdF9yZWN0KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsK
ICAgIFNLUmVjdE9iamVjdCAqIHJlY3Q7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAg
aW50IGksIG1vZGUgPSAwOwogICAgaW50IHNlbGVjdGVkID0gMDsKCiAgICBpZiAoIVB5QXJnX1Bh
cnNlVHVwbGUoYXJncywgIk8hfGkiLCAmU0tSZWN0VHlwZSwgJnJlY3QsICZtb2RlKSkKICAgICAg
ICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgc2VnbWVudCA9IHNlbGYtPnNlZ21lbnRzOwogICAg
Zm9yIChpID0gMDsgaSA8IHNlbGYtPmxlbjsgaSsrLCBzZWdtZW50KyspCiAgICB7CiAgICAgICAg
aWYgKFNLUmVjdF9Db250YWluc1hZKHJlY3QsIHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpKQogICAg
ICAgIHsKICAgICAgICAgICAgaWYgKG1vZGUgPT0gMikKICAgICAgICAgICAgICAgIHNlZ21lbnQt
PnNlbGVjdGVkID0gMDsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgc2VnbWVudC0+
c2VsZWN0ZWQgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAg
ICBpZiAobW9kZSA9PSAwKQogICAgICAgICAgICAgICAgc2VnbWVudC0+c2VsZWN0ZWQgPSAwOwog
ICAgICAgIH0KICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkIHx8IHNlZ21lbnQtPnNlbGVjdGVk
OwogICAgfQoKICAgIGN1cnZlX2NoZWNrX3N0YXRlKHNlbGYsIDEsIF9fRlVOQ1RJT05fXyk7Cgog
ICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKHNlbGVjdGVkKTsKfQoKCnN0YXRpYyBQeU9iamVjdCAq
CmN1cnZlX3NlbGVjdF9zZWdtZW50KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFy
Z3MpCnsKICAgIGludCBpZHgsIHZhbHVlID0gMTsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUo
YXJncywgIml8aSIsICZpZHgsICZ2YWx1ZSkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoK
ICAgIGlmIChpZHggPCAwKQogICAgICAgIGlkeCA9IGlkeCArIHNlbGYtPmxlbjsKCiAgICBpZiAo
aWR4IDwgMCB8fCBpZHggPj0gc2VsZi0+bGVuKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmlu
ZyhQeUV4Y19JbmRleEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAiY3VydmVfY29udGlu
dWl0eTogaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwog
ICAgfQoKICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0uc2VsZWN0ZWQgPSB2YWx1ZTsKCiAgICBpZiAo
c2VsZi0+Y2xvc2VkKQogICAgewogICAgICAgIGlmIChpZHggPT0gc2VsZi0+bGVuIC0gMSkKICAg
ICAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0uc2VsZWN0ZWQgPSB2YWx1ZTsKICAgICAgICBlbHNl
IGlmIChpZHggPT0gMCkKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0u
c2VsZWN0ZWQgPSB2YWx1ZTsKICAgIH0KCiAgICAoKCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVm
Y250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwp9CgpzdGF0aWMgUHlPYmplY3Qg
KgpjdXJ2ZV9kZXNlbGVjdChTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7
CiAgICBpbnQgaTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+bGVuOyBpKyspCiAgICB7CiAg
ICAgICAgc2VsZi0+c2VnbWVudHNbaV0uc2VsZWN0ZWQgPSAwOwogICAgfQoKICAgICgoKCZfUHlf
Tm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7
Cn0KCgoKCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfZHJhd19kcmFnZ2VkX25vZGVzKFNLQ3Vy
dmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIFB5T2JqZWN0ICogZHJhd19i
ZXppZXI7CiAgICBQeU9iamVjdCAqIGRyYXdfbGluZTsKICAgIFB5T2JqZWN0ICogcmVzdWx0Owog
ICAgU0tQb2ludE9iamVjdCAqIG9mZnNldDsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQgPSBz
ZWxmLT5zZWdtZW50cyArIDE7CiAgICBpbnQgcGFydGlhbGx5OwogICAgaW50IGk7CgogICAgaWYg
KCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIWlPTyIsICZTS1BvaW50VHlwZSwgJm9mZnNldCwg
JnBhcnRpYWxseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAmZHJhd19iZXppZXIsICZkcmF3
X2xpbmUpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBmb3IgKGkgPSAxOyBpIDwg
c2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsKICAgICAgICBpZiAoc2VnbWVudFstMV0u
c2VsZWN0ZWQgfHwgc2VnbWVudC0+c2VsZWN0ZWQgfHwgIXBhcnRpYWxseSkKICAgICAgICB7CiAg
ICAgICAgICAgIGRvdWJsZSBueCA9IHNlZ21lbnRbLTFdLng7CiAgICAgICAgICAgIGRvdWJsZSBu
eSA9IHNlZ21lbnRbLTFdLnk7CiAgICAgICAgICAgIEN1cnZlU2VnbWVudCBzZWcgPSAqc2VnbWVu
dDsKCiAgICAgICAgICAgIGlmIChzZWdtZW50Wy0xXS5zZWxlY3RlZCkKICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgbnggKz0gb2Zmc2V0LT54OwogICAgICAgICAgICAgICAgbnkgKz0gb2Zm
c2V0LT55OwogICAgICAgICAgICAgICAgc2VnLngxICs9IG9mZnNldC0+eDsKICAgICAgICAgICAg
ICAgIHNlZy55MSArPSBvZmZzZXQtPnk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHNl
Z21lbnQtPnNlbGVjdGVkKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzZWcueCArPSBv
ZmZzZXQtPng7CiAgICAgICAgICAgICAgICBzZWcueSArPSBvZmZzZXQtPnk7CiAgICAgICAgICAg
ICAgICBzZWcueDIgKz0gb2Zmc2V0LT54OwogICAgICAgICAgICAgICAgc2VnLnkyICs9IG9mZnNl
dC0+eTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkK
ICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5j
dGlvbihkcmF3X2JlemllciwgIihkZCkoZGQpKGRkKShkZCkiLCBueCxueSxzZWcueDEsc2VnLnkx
LHNlZy54MixzZWcueTIsc2VnLngsc2VnLnkpO2lmICghcmVzdWx0KSByZXR1cm4gMDsgaWYgKC0t
KHJlc3VsdCktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2UgKCooKFB5T2JqZWN0ICopKHJlc3VsdCkp
LT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICopKHJlc3VsdCkp
KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihkcmF3X2xpbmUsICIoZGQpKGRk
KSIsbngsbnksc2VnLngsc2VnLnkpOyBpZiAoIXJlc3VsdCkgcmV0dXJuIDA7IGlmICgtLShyZXN1
bHQpLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShyZXN1bHQpKS0+b2Jf
dHlwZS0+dHBfZGVhbGxvYykoKFB5T2JqZWN0ICopKChQeU9iamVjdCAqKShyZXN1bHQpKSk7CiAg
ICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgKCgoJl9QeV9Ob25lU3RydWN0KSktPm9i
X3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQoKc3RhdGljIFB5T2Jq
ZWN0ICoKY3VydmVfbW92ZV9zZWxlY3RlZF9ub2RlcyhTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlP
YmplY3QgKiBhcmdzKQp7CiAgICBTS1BvaW50T2JqZWN0ICogb2Zmc2V0OwogICAgaW50IGk7CiAg
ICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAgUHlPYmplY3QgKiB1bmRvX29iamVjdCA9ICgo
dm9pZCAqKTApOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyEiLCAmU0tQb2lu
dFR5cGUsICZvZmZzZXQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICB1bmRvX29i
amVjdCA9IGN1cnZlX2NyZWF0ZV9mdWxsX3VuZG8oc2VsZik7CiAgICBpZiAoIXVuZG9fb2JqZWN0
KQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBzZWdtZW50ID0gc2VsZi0+c2VnbWVu
dHM7CiAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsK
ICAgICAgICBpZiAoc2VnbWVudC0+c2VsZWN0ZWQpCiAgICAgICAgewogICAgICAgICAgICBzZWdt
ZW50LT54ICs9IG9mZnNldC0+eDsKICAgICAgICAgICAgc2VnbWVudC0+eSArPSBvZmZzZXQtPnk7
CiAgICAgICAgICAgIGlmIChzZWdtZW50LT50eXBlID09IDEpCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIHNlZ21lbnQtPngyICs9IG9mZnNldC0+eDsKICAgICAgICAgICAgICAgIHNlZ21l
bnQtPnkyICs9IG9mZnNldC0+eTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaSA8IHNl
bGYtPmxlbiAtIDEgJiYgc2VnbWVudFsxXS50eXBlID09IDEpCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIHNlZ21lbnRbMV0ueDEgKz0gb2Zmc2V0LT54OwogICAgICAgICAgICAgICAgc2Vn
bWVudFsxXS55MSArPSBvZmZzZXQtPnk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cgog
ICAgcmV0dXJuIHVuZG9fb2JqZWN0Owp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9kcmF3X3Vu
c2VsZWN0ZWQoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgUHlP
YmplY3QgKiBkcmF3X2JlemllcjsKICAgIFB5T2JqZWN0ICogZHJhd19saW5lOwogICAgUHlPYmpl
Y3QgKiByZXN1bHQ7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50ID0gc2VsZi0+c2VnbWVudHMg
KyAxOwogICAgaW50IGk7CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZk
cmF3X2JlemllciwgJmRyYXdfbGluZSkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAg
IGZvciAoaSA9IDE7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgewogICAgICAg
IGlmIChzZWdtZW50LT50eXBlID09IDIpCiAgICAgICAgewogICAgICAgICAgICByZXN1bHQgPSBQ
eU9iamVjdF9DYWxsRnVuY3Rpb24oZHJhd19saW5lLCAiKGRkKShkZCkiLHNlZ21lbnRbLTFdLngs
c2VnbWVudFstMV0ueSxzZWdtZW50LT54LHNlZ21lbnQtPnkpOyBpZiAoIXJlc3VsdCkgcmV0dXJu
IDA7IGlmICgtLShyZXN1bHQpLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAq
KShyZXN1bHQpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYykoKFB5T2JqZWN0ICopKChQeU9iamVjdCAq
KShyZXN1bHQpKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCFzZWdtZW50Wy0xXS5zZWxl
Y3RlZCAmJiAhc2VnbWVudC0+c2VsZWN0ZWQpCiAgICAgICAgewoKICAgICAgICAgICAgcmVzdWx0
ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGRyYXdfYmV6aWVyLCAiKGRkKShkZCkoZGQpKGRkKSIs
IHNlZ21lbnRbLTFdLngsc2VnbWVudFstMV0ueSxzZWdtZW50LT54MSxzZWdtZW50LT55MSxzZWdt
ZW50LT54MixzZWdtZW50LT55MixzZWdtZW50LT54LHNlZ21lbnQtPnkpO2lmICghcmVzdWx0KSBy
ZXR1cm4gMDsgaWYgKC0tKHJlc3VsdCktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2UgKCooKFB5T2Jq
ZWN0ICopKHJlc3VsdCkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2Jq
ZWN0ICopKHJlc3VsdCkpKTsKICAgICAgICB9CiAgICB9CgogICAgKCgoJl9QeV9Ob25lU3RydWN0
KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQojIDIwNDMg
Ii4vY3VydmVvYmplY3QuYyIKCnN0YXRpYyBzdHJ1Y3QgbWVtYmVybGlzdCBjdXJ2ZV9tZW1iZXJs
aXN0W10gPSB7CiAgICB7ImxlbiIsIDEsICgoc2l6ZV90KSAmKChTS0N1cnZlT2JqZWN0ICopMCkt
PmxlbiksIDF9LAogICAgeyJjbG9zZWQiLCA4LCAoKHNpemVfdCkgJigoU0tDdXJ2ZU9iamVjdCAq
KTApLT5jbG9zZWQpLCAxfSwKICAgIHsoKHZvaWQgKikwKX0KfTsKCgoKCnN0YXRpYyBzdHJ1Y3Qg
UHlNZXRob2REZWYgY3VydmVfbWV0aG9kc1tdID0gewogICAgeyJkcmF3X3RyYW5zZm9ybWVkIiwo
UHlDRnVuY3Rpb24pU0tDdXJ2ZV9QeURyYXdUcmFuc2Zvcm1lZCwgMX0sCiAgICB7ImhpdF9wb2lu
dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9oaXRfcG9pbnQsIDF9LAoKICAgIHsiYWNjdXJhdGVfcmVj
dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9hY2N1cmF0ZV9yZWN0LCAxfSwKICAgIHsiY29vcmRfcmVj
dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9jb29yZF9yZWN0LCAxfSwKCgogICAgeyJUcmFuc2xhdGUi
LCAoUHlDRnVuY3Rpb24pY3VydmVfYXBwbHlfdHJhbnNsYXRpb24sIDF9LAogICAgeyJUcmFuc2Zv
cm0iLCAoUHlDRnVuY3Rpb24pY3VydmVfYXBwbHlfdHJhZm8sIDF9LAogICAgeyJEdXBsaWNhdGUi
LCAoUHlDRnVuY3Rpb24pY3VydmVfZHVwbGljYXRlLCAxfSwKICAgIHsiQXBwZW5kTGluZSIsIChQ
eUNGdW5jdGlvbiljdXJ2ZV9hcHBlbmRfc3RyYWlnaHQsIDF9LAogICAgeyJBcHBlbmRCZXppZXIi
LCAoUHlDRnVuY3Rpb24pY3VydmVfYXBwZW5kX2N1cnZlLCAxfSwKICAgIHsiQXBwZW5kU2VnbWVu
dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9hcHBlbmRfc2VnbWVudCwgMX0sCiAgICB7Ik5vZGVMaXN0
IiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX25vZGVfbGlzdCwgMX0sCiAgICB7Ik5vZGUiLCAoUHlDRnVu
Y3Rpb24pY3VydmVfbm9kZSwgMX0sCiAgICB7IlNlZ21lbnQiLCAoUHlDRnVuY3Rpb24pY3VydmVf
c2VnbWVudCwgMX0sCiAgICB7IlNldENvbnRpbnVpdHkiLCAoUHlDRnVuY3Rpb24pY3VydmVfc2V0
X2NvbnRpbnVpdHksIDF9LAogICAgeyJTZXRMaW5lIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX3NldF9z
dHJhaWdodCwgMX0sCiAgICB7IlNldEJlemllciIsIChQeUNGdW5jdGlvbiljdXJ2ZV9zZXRfY3Vy
dmUsIDF9LAogICAgeyJTZXRTZWdtZW50IiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX3NldF9zZWdtZW50
LCAxfSwKICAgIHsiQ29udGludWl0eSIsIChQeUNGdW5jdGlvbiljdXJ2ZV9jb250aW51aXR5LCAx
fSwKICAgIHsiU2VnbWVudFR5cGUiLCAoUHlDRnVuY3Rpb24pY3VydmVfc2VnbWVudF90eXBlLCAx
fSwKICAgIHsiQ2xvc2VQYXRoIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX2Nsb3NlX2NvbnRvdXIsIDF9
LAoKCiAgICB7ImFyY19sZW5ndGhzIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX2FyY19sZW5ndGhzLCAx
fSwKICAgIHsiX3NldF9ub2Rlc19hbmRfc2VnbWVudHMiLChQeUNGdW5jdGlvbiljdXJ2ZV9fc2V0
X25vZGVzX2FuZF9zZWdtZW50cywxfSwKICAgIHsiX3VuZG9fY2xvc2UiLCAoUHlDRnVuY3Rpb24p
Y3VydmVfX3VuZG9fY2xvc2UsIDF9LAogICAgeyJhcHBlbmRfZnJvbV9maWxlIiwoUHlDRnVuY3Rp
b24pY3VydmVfYXBwZW5kX2Zyb21fZmlsZSwgMX0sCiAgICB7ImdldF9zYXZlIiwgKFB5Q0Z1bmN0
aW9uKWN1cnZlX2dldF9zYXZlLCAxfSwKICAgIHsid3JpdGVfdG9fZmlsZSIsIChQeUNGdW5jdGlv
biljdXJ2ZV93cml0ZV90b19maWxlLCAxfSwKICAgIHsiZ3Vlc3NfY29udGludWl0eSIsKFB5Q0Z1
bmN0aW9uKWN1cnZlX2d1ZXNzX2NvbnRpbnVpdHksIDF9LAogICAgeyJsb2FkX2Nsb3NlIiwgKFB5
Q0Z1bmN0aW9uKWN1cnZlX2xvYWRfY2xvc2UsIDF9LAogICAgeyJhcHBlbmRfZnJvbV9zdHJpbmci
LChQeUNGdW5jdGlvbiljdXJ2ZV9hcHBlbmRfZnJvbV9zdHJpbmcsMX0sCgoKICAgIHsiU2VnbWVu
dFNlbGVjdGVkIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX25vZGVfc2VsZWN0ZWQsIDF9LAogICAgeyJT
ZWxlY3RTZWdtZW50IiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX3NlbGVjdF9zZWdtZW50LCAxfSwKICAg
IHsiZHJhd19kcmFnZ2VkX25vZGVzIiwoUHlDRnVuY3Rpb24pY3VydmVfZHJhd19kcmFnZ2VkX25v
ZGVzLDF9LAogICAgeyJkcmF3X3Vuc2VsZWN0ZWQiLCAoUHlDRnVuY3Rpb24pY3VydmVfZHJhd191
bnNlbGVjdGVkLCAxfSwKICAgIHsic2VsZWN0aW9uX2NvdW50IiwgKFB5Q0Z1bmN0aW9uKWN1cnZl
X3NlbGVjdGlvbl9jb3VudCwgMX0sCiAgICB7Im5vZGVfc2VsZWN0ZWQiLCAoUHlDRnVuY3Rpb24p
Y3VydmVfbm9kZV9zZWxlY3RlZCwgMX0sCiAgICB7InNlbGVjdF9yZWN0IiwgKFB5Q0Z1bmN0aW9u
KWN1cnZlX3NlbGVjdF9yZWN0LCAxfSwKICAgIHsic2VsZWN0X3NlZ21lbnQiLCAoUHlDRnVuY3Rp
b24pY3VydmVfc2VsZWN0X3NlZ21lbnQsIDF9LAogICAgeyJkZXNlbGVjdCIsIChQeUNGdW5jdGlv
biljdXJ2ZV9kZXNlbGVjdCwgMX0sCiAgICB7Im1vdmVfc2VsZWN0ZWRfbm9kZXMiLChQeUNGdW5j
dGlvbiljdXJ2ZV9tb3ZlX3NlbGVjdGVkX25vZGVzLDF9LAogICAgeyJuZWFyZXN0X3BvaW50Iiwg
KFB5Q0Z1bmN0aW9uKVNLQ3VydmVfTmVhcmVzdFBvaW50UHksIDF9LAogICAgeyJwb2ludF9hdCIs
IChQeUNGdW5jdGlvbilTS0N1cnZlX1BvaW50QXRQeSwgMX0sCgoKICAgIHsiZHJhd19ub3RfbGFz
dCIsIChQeUNGdW5jdGlvbiljcmVhdG9yX2RyYXdfbm90X2xhc3QsIDF9LAoKICAgIHsoKHZvaWQg
KikwKSwgKCh2b2lkICopMCl9Cn07CgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfZ2V0YXR0cihQ
eU9iamVjdCAqIHNlbGYsIGNoYXIgKiBuYW1lKQp7CiAgICBQeU9iamVjdCAqIHJlc3VsdDsKCiAg
ICByZXN1bHQgPSBQeV9GaW5kTWV0aG9kKGN1cnZlX21ldGhvZHMsIHNlbGYsIG5hbWUpOwogICAg
aWYgKHJlc3VsdCAhPSAoKHZvaWQgKikwKSkKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgUHlF
cnJfQ2xlYXIoKTsKCiAgICByZXR1cm4gUHlNZW1iZXJfR2V0KChjaGFyICopc2VsZiwgY3VydmVf
bWVtYmVybGlzdCwgbmFtZSk7Cn0KCgpQeVR5cGVPYmplY3QgU0tDdXJ2ZVR5cGUgPSB7CiAgICAx
LCAmUHlUeXBlX1R5cGUsCiAgICAwLAogICAgIlNLQ3VydmVPYmplY3QiLAogICAgc2l6ZW9mKFNL
Q3VydmVPYmplY3QpLAogICAgMCwKICAgIChkZXN0cnVjdG9yKWN1cnZlX2RlYWxsb2MsCiAgICAo
cHJpbnRmdW5jKSgodm9pZCAqKTApLAogICAgY3VydmVfZ2V0YXR0ciwKICAgIDAsCiAgICAoY21w
ZnVuYyljdXJ2ZV9jb21wYXJlLAogICAgKHJlcHJmdW5jKWN1cnZlX3JlcHIsCiAgICAwLAogICAg
MCwKICAgIDAsCiAgICAwLAogICAgKHRlcm5hcnlmdW5jKTAsCn07CgoKClB5T2JqZWN0ICoKX1NL
Q3VydmVfTnVtQWxsb2NhdGVkKFB5T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7CiAg
ICByZXR1cm4gUHlJbnRfRnJvbUxvbmcocGF0aHNfYWxsb2NhdGVkKTsKfQoKCmludApfU0tDdXJ2
ZV9Jbml0Q3VydmVPYmplY3Qodm9pZCkKewogICAgc2V0X25vZGVzX2FuZF9zZWdtZW50c19zdHJp
bmcgPQogICAgICAgIFB5U3RyaW5nX0ludGVybkZyb21TdHJpbmcoIl9zZXRfbm9kZXNfYW5kX3Nl
Z21lbnRzIik7CiAgICB1bmRvX2Nsb3NlX3N0cmluZyA9IFB5U3RyaW5nX0ludGVybkZyb21TdHJp
bmcoIl91bmRvX2Nsb3NlIik7CiAgICByZXR1cm4gMTsKfQo=
More information about the Gcc-prs
mailing list