public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/7365: Use of extern integer constant causes ice
@ 2002-07-23  8:29 lerdsuwa
  0 siblings, 0 replies; 2+ messages in thread
From: lerdsuwa @ 2002-07-23  8:29 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, tobenkin

Synopsis: Use of extern integer constant causes ice

State-Changed-From-To: open->closed
State-Changed-By: lerdsuwa
State-Changed-When: Tue Jul 23 08:29:07 2002
State-Changed-Why:
    Fixed in GCC 3.0 or newer.

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


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

* c++/7365: Use of extern integer constant causes ice
@ 2002-07-20 11:46 tobenkin
  0 siblings, 0 replies; 2+ messages in thread
From: tobenkin @ 2002-07-20 11:46 UTC (permalink / raw)
  To: gcc-gnats


>Number:         7365
>Category:       c++
>Synopsis:       Use of extern integer constant causes ice
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Sat Jul 20 11:46:03 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Mark Tobenkin
>Release:        gcc version 2.95.4 20011002 (Debian prerelease)
>Organization:
>Environment:
Intel PIII, running Debian sid. Linux kernel 2.4.18. Code does involve the gl/glut libraries (though that has made no problems in the past).
>Description:
GCC reports the following:

In file included from pp2_4_tobenkin.cpp:30:
tobenkin_ray.h: In method `void Walls::render() const':
tobenkin_ray.h:240: Internal compiler error:
tobenkin_ray.h:240: Internal compiler error in `find_function_data', at function.c:544

The above code involves dereferencing an array of classes and viewing a single member (summarized):

GLfloatPoint vertices[wallCount];

vertices[i].x

The following is the command line:

gcc -lGL -lglut -o 4.exe pp2_4_tobenkin.cpp

Removing this line incurs further problems:

pp2_4_tobenkin.cpp: In method `Walls::Walls()':
pp2_4_tobenkin.cpp:42: Internal compiler error:
pp2_4_tobenkin.cpp:42: Internal compiler error in `expand_expr', at expr.c:8136

Key Note:

Removal of the extern int "wallCount" causes all of these errors to disappear.
>How-To-Repeat:

>Fix:

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

IyAxICJwcDJfNF90b2Jlbmtpbi5jcHAiCiAKCgoKCgoKCgoKCiAKCiMgMSAiL3Vzci9saWIvZ2Nj
LWxpYi9pMzg2LWxpbnV4LzIuOTUuNC8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2lvc3RyZWFt
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGludGVyZmFjZQoKCgoj
IDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdHJlYW1idWYuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojcHJh
Z21hIGludGVyZmFjZQoKCiAgIAoKCgpleHRlcm4gIkMiIHsKIyAxICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1
ZGUvX0dfY29uZmlnLmgiIDEgMwogCgoKCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBl
cy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgogCgoKCiAKCgoKCgoKCiAKIyAxNDIgIi91c3IvaW5jbHVkZS9mZWF0dXJl
cy5oIiAzCgoKIAoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgojIDIwOCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKIAoKCiAKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgog
CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKIAoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCiAKCgoKIyA2NSAiL3Vzci9pbmNsdWRl
L3N5cy9jZGVmcy5oIiAzCgoKIAoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgogCgoKCgoKCgoK
IAoKCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCgoKIAoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgojIDI4MyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIg
MwoKCgogCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9nbnUv
c3R1YnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMiAzCgoKCgojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgoK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxp
bnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1
LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGlu
dXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2Nj
LWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiAKdHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9z
aG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg
X191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7
CiMgNDggIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKCnR5cGVkZWYgc2lnbmVkIGNoYXIg
X19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVk
IHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2
X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9f
dWludDMyX3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19p
bnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3Vp
bnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90
IF9fZGV2X3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX3VpZF90OwkJIAp0eXBlZGVmIF9fdV9pbnQg
X19naWRfdDsJCSAKdHlwZWRlZiBfX3VfbG9uZyBfX2lub190OwkJIAp0eXBlZGVmIF9fdV9pbnQg
X19tb2RlX3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX25saW5rX3Q7IAkJIAp0eXBlZGVmIGxvbmcg
aW50IF9fb2ZmX3Q7CQkgCnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CQkgCnR5cGVkZWYgaW50
IF9fcGlkX3Q7CQkJIAp0eXBlZGVmIGludCBfX3NzaXplX3Q7CQkJIAp0eXBlZGVmIF9fdV9sb25n
IF9fcmxpbV90OwkJIAp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsJCSAKdHlwZWRlZiBf
X3VfaW50IF9faWRfdDsJCQkgCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsK
ICB9IF9fZnNpZF90OwkJCQkgCgogCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsJCQkgCnR5cGVkZWYg
Y2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2ln
bmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlw
ZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7CQkgCgwKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7
CgogCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKIAp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoK
IAoKCgp0eXBlZGVmIGludCBfX2tleV90OwoKIAp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBf
X2lwY19waWRfdDsKCgogCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7CgogCgogCnR5cGVk
ZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7Cgog
CnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Js
a2NudDY0X3Q7CgogCnR5cGVkZWYgX191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9x
dWFkX3QgX19mc2ZpbGNudDY0X3Q7CgogCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7Cgog
CnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKIAp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2Fs
YXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90OwoKIAp0eXBlZGVm
IGludCBfX2ludHB0cl90OwoKIAp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsKCgog
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAxIDMKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDYyICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAz
CgoKCgoKIApzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVkX3ByaW9yaXR5
OwogIH07CgoKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnR5
cGVkZWYgaW50IF9fYXRvbWljX2xvY2tfdDsKCiAKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsK
ICBsb25nIGludCBfX3N0YXR1czsgICAgCiAgX19hdG9taWNfbG9ja190IF9fc3BpbmxvY2s7ICAg
Cgp9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9k
ZXNjcjsKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7CiAgaW50IF9fZGV0
YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19z
Y2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3Qg
X19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsK
ICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKIAp0eXBlZGVmIHN0cnVj
dAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOyAgCiAgX3B0aHJlYWRfZGVz
Y3IgX19jX3dhaXRpbmc7ICAgICAgICAgCn0gcHRocmVhZF9jb25kX3Q7CgoKIAp0eXBlZGVmIHN0
cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKIAp0eXBlZGVmIHVu
c2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKCiAKIAoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBf
X21fcmVzZXJ2ZWQ7ICAgICAgICAgICAgICAgIAogIGludCBfX21fY291bnQ7ICAgICAgICAgICAg
ICAgICAgIAogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsgICAgICAgIAogIGludCBfX21fa2lu
ZDsgICAgICAgICAgICAgICAgICAgIAogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9j
azsgIAp9IHB0aHJlYWRfbXV0ZXhfdDsKCgogCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRl
eGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgogCnR5cGVkZWYgaW50IHB0aHJlYWRfb25j
ZV90OwoKCiMgMTE5ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwoKCiMgMTM4
ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwoKCgogCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBpbnQgcHRocmVhZF90OwoKCiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5o
IiAyIDMKCgoKCiMgOSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCgoKCgojIDEgIi91
c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoK
CgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45
NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIv
aTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50ICB3aW50X3Q7CgoKCgogCgog
CgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTQgIi91c3IvaW5jbHVkZS9fR19j
b25maWcuaCIgMiAzCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDQ2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg
MwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1
LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9n
Y2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4
Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMTkwICIvdXNyL2xp
Yi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCgoK
IAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRk
ZWYuaCIgMwoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
bGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvd2NoYXIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNTAgIi91c3IvaW5j
bHVkZS93Y2hhci5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgogCnR5cGVkZWYgc3RydWN0CnsKICBp
bnQgX19jb3VudDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hi
WzRdOwogIH0gX192YWx1ZTsJCSAKfSBfX21ic3RhdGVfdDsKCgoKCiAKCiMgNjgyICIvdXNyL2lu
Y2x1ZGUvd2NoYXIuaCIgMwoKCgojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoK
CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7
Cn0gX0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJz
dGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
Z2NvbnYuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1
ZGUvd2NoYXIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKIyA0NiAiL3Vz
ci9pbmNsdWRlL3djaGFyLmgiIDMKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8y
Ljk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgog
CgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgog
CgogCgojIDE5MCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0
ZGRlZi5oIiAzCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgv
Mi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vz
ci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCgoK
CiAKCgoKCgoKCgoKCgojIDc2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwoKCgoKIAoKIyA2ODIg
Ii91c3IvaW5jbHVkZS93Y2hhci5oIiAzCgoKCiMgMjggIi91c3IvaW5jbHVkZS9nY29udi5oIiAy
IDMKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIu
OTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGli
L2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNy
L2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgog
CgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1
LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2kz
ODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIyAzMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCiAKCgogCmVudW0KewogIF9f
R0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05W
X05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAg
X19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19H
Q09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCiAK
ZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAxLAogIF9fR0NPTlZfSUdOT1JFX0VSUk9S
UyA9IDB4MDAwMgp9OwoKCiAKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3Rl
cF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFu
c19kYXRhOwoKCiAKdHlwZWRlZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0
ZXAgKiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCgkJCSAgICBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAoJCQkgICAgdW5zaWduZWQgY2hhciAq
Kiwgc2l6ZV90ICosIGludCwgaW50KTsKCiAKdHlwZWRlZiBpbnQgKCpfX2djb252X2luaXRfZmN0
KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9lbmRfZmN0
KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgogCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFu
c19mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosCgkJCQkgIHN0cnVjdCBfX2djb252X3N0ZXBf
ZGF0YSAqLCB2b2lkICosCgkJCQkgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAoJCQkJICBfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKiosCgkJCQkgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNp
Z25lZCBjaGFyICoqLAoJCQkJICBzaXplX3QgKik7CgogCnR5cGVkZWYgaW50ICgqX19nY29udl90
cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQgKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCgkJCQkJ
ICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKCQkJCQkgIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWdu
ZWQgY2hhciAqKTsKCiAKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9f
Y29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKioqLAoJCQkJCXNpemVfdCAqKTsKCiAKdHlwZWRl
ZiBpbnQgKCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsK
dHlwZWRlZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBf
X2djb252X3RyYW5zX2RhdGEKewogICAKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsK
ICBfX2djb252X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29u
dl90cmFuc19lbmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0
IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCiAKc3RydWN0IF9fZ2NvbnZfc3RlcAp7
CiAgc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9oYW5kbGU7CiAgX19jb25z
dCBjaGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7CgogIGNoYXIgKl9fZnJvbV9uYW1l
OwogIGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0
X2ZjdCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgogICAKCiAgaW50
IF9fbWluX25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQgX19taW5f
bmVlZGVkX3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgogICAKICBpbnQgX19zdGF0ZWZ1bDsK
CiAgdm9pZCAqX19kYXRhOwkJIAp9OwoKIAoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1
bnNpZ25lZCBjaGFyICpfX291dGJ1ZjsgICAgIAogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5k
OyAgCgoKICAgCiAgaW50IF9fZmxhZ3M7CgogICAKCiAgaW50IF9faW52b2NhdGlvbl9jb3VudGVy
OwoKICAgCgogIGludCBfX2ludGVybmFsX3VzZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwog
IF9fbWJzdGF0ZV90IF9fc3RhdGU7CSAKCgogICAKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRh
ICpfX3RyYW5zOwp9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgX19nY29udl9pbmZvCnsKICBzaXplX3Qg
X19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsKICBfX2V4dGVuc2lvbl9f
IHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGEgWzBdIDsKfSAqX19nY29udl90OwoKCiMg
NDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1
Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAgc3RydWN0IF9fZ2NvbnZfaW5m
byBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YTsKICB9IF9fY29tYmlu
ZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAo
KF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgMzIgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAyIDMKCiAKCgoKCgoKCgoKCgoKCgoKCgogCgojIDEgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKdHlwZWRlZiB2b2lkICpfX2dudWNfdmFfbGlzdDsKCgoKIAoKIyAxMjIgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKCgoKCgoKCgoK
CgoKCgoKCiMgMjA5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUv
c3RkYXJnLmgiIDMKCgoKCiMgNTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKCgoKCgoKCiMg
NzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiMgMTAzICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCnN0cnVjdCBfSU9fanVtcF90OyAgc3RydWN0IF9JT19G
SUxFOwoKIAoKCgoKCgoKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoKCiAKCnN0cnVjdCBfSU9f
bWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpf
c2J1ZjsKICAgCgogICAKICBpbnQgX3BvczsKIyAxOTIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAz
Cgp9OwoKIAplbnVtIF9fY29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVj
dnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9OwoKIyAy
NTkgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2Zs
YWdzOwkJIAoKCiAgIAogICAKICBjaGFyKiBfSU9fcmVhZF9wdHI7CSAKICBjaGFyKiBfSU9fcmVh
ZF9lbmQ7CSAKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwkgCiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7
CSAKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwkgCiAgY2hhciogX0lPX3dyaXRlX2VuZDsJIAogIGNo
YXIqIF9JT19idWZfYmFzZTsJIAogIGNoYXIqIF9JT19idWZfZW5kOwkgCiAgIAogIGNoYXIgKl9J
T19zYXZlX2Jhc2U7ICAKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7ICAgCiAgY2hhciAqX0lPX3Nh
dmVfZW5kOyAgCgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19G
SUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90ICAg
X29sZF9vZmZzZXQ7ICAKCgogICAKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWdu
ZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCiAgIAoKICBfSU9f
bG9ja190ICpfbG9jazsKCgoKCgoKCgogIF9fb2ZmNjRfdCAgIF9vZmZzZXQ7CgoKCgoKICB2b2lk
ICpfX3BhZDE7CiAgdm9pZCAqX19wYWQyOwoKICBpbnQgX21vZGU7CiAgIAogIGNoYXIgX3VudXNl
ZDJbMTUgKiBzaXplb2YgKGludCkgLSAyICogc2l6ZW9mICh2b2lkICopXTsKCn07CgoKCgoKc3Ry
dWN0IF9JT19GSUxFX3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9z
dGRpbl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4dGVy
biBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CgoKCgoKCgoKCgoKIAoKIAoK
dHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwgY2hhciAqX19i
dWYsIHNpemVfdCBfX25ieXRlcyk7CgogCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0
ZV9mbiAodm9pZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCgkJCQkgc2l6ZV90IF9f
bik7CgogCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19v
ZmY2NF90ICAgKl9fcG9zLCBpbnQgX193KTsKCiAKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAo
dm9pZCAqX19jb29raWUpOwoKCiMgMzg5ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCgoKZXh0
ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCkg
OwpleHRlcm4gaW50IF9fdWZsb3cgKF9JT19GSUxFICopIHRocm93ICgpIDsKZXh0ZXJuIGludCBf
X292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIHRocm93ICgpIDsKZXh0ZXJuIHdpbnRfdCAgIF9f
d3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCkgOwpleHRlcm4gd2ludF90ICAgX193dWZs
b3cgKF9JT19GSUxFICopIHRocm93ICgpIDsKZXh0ZXJuIHdpbnRfdCAgIF9fd292ZXJmbG93IChf
SU9fRklMRSAqLCB3aW50X3QgICkgdGhyb3cgKCkgOwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpl
eHRlcm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCkgOwpleHRlcm4gaW50
IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgdGhyb3cgKCkgOwpleHRlcm4gaW50
IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCkgOwpleHRlcm4gaW50IF9JT19mZXJy
b3IgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKSA7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2Nr
ZWQgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKSA7CgogCgoKCmV4dGVybiB2b2lkIF9JT19mbG9j
a2ZpbGUgKF9JT19GSUxFICopIHRocm93ICgpIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxl
IChfSU9fRklMRSAqKSB0aHJvdyAoKSA7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lP
X0ZJTEUgKikgdGhyb3cgKCkgOwoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9fdmZzY2Fu
ZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKCQkJX19n
bnVjX3ZhX2xpc3QgLCBpbnQgKl9fcmVzdHJpY3QpIHRocm93ICgpIDsKZXh0ZXJuIGludCBfSU9f
dmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAoJ
CQkgX19nbnVjX3ZhX2xpc3QgKSB0aHJvdyAoKSA7CmV4dGVybiBfX3NzaXplX3QgICBfSU9fcGFk
biAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QgICkgdGhyb3cgKCkgOwpleHRlcm4gc2l6ZV90
ICAgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCAgKSB0aHJvdyAoKSA7Cgpl
eHRlcm4gX19vZmY2NF90ICAgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCAgLCBp
bnQsIGludCkgdGhyb3cgKCkgOwpleHRlcm4gX19vZmY2NF90ICAgX0lPX3NlZWtwb3MgKF9JT19G
SUxFICosIF9fb2ZmNjRfdCAgLCBpbnQpIHRocm93ICgpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVl
X2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSB0aHJvdyAoKSA7CgojIDUxMSAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDMKCgoKfQoKCgojIDM2ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45
NS40Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgiIDIgMwoKfQogCgojIDEg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRhcmcuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCnZvaWQgdmFfZW5k
IChfX2dudWNfdmFfbGlzdCk7CQkgCgoKIAoKCgogCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCiAKCgoKCgoKCgoKCgoKCiMgMTc1ICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
bGludXgvMi45NS40L2luY2x1ZGUvc3RkYXJnLmgiIDMKCgogCgoKCgogCgogCgogCgp0eXBlZGVm
IF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDAgIi91
c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKyst
My9zdHJlYW1idWYuaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMrKyIg
ewpjbGFzcyBpc3RyZWFtOyAgCmNsYXNzIG9zdHJlYW07IGNsYXNzIHN0cmVhbWJ1ZjsKCiAKCgoK
CnR5cGVkZWYgX19vZmY2NF90ICAgc3RyZWFtb2ZmOwp0eXBlZGVmIF9fb2ZmNjRfdCAgIHN0cmVh
bXBvczsKCgoKCnR5cGVkZWYgX19zc2l6ZV90ICAgc3RyZWFtc2l6ZTsKCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBfX2ZtdGZsYWdzOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX19pb3N0YXRlOwoKc3Ry
dWN0IF9pb3NfZmllbGRzCnsgIAogICAgc3RyZWFtYnVmICpfc3RyYnVmOwogICAgb3N0cmVhbSog
X3RpZTsKICAgIGludCBfd2lkdGg7CiAgICBfX2ZtdGZsYWdzIF9mbGFnczsKICAgIHdjaGFyX3Qg
ICBfZmlsbDsKICAgIF9faW9zdGF0ZSBfc3RhdGU7CiAgICBfX2lvc3RhdGUgX2V4Y2VwdGlvbnM7
CiAgICBpbnQgX3ByZWNpc2lvbjsKCiAgICB2b2lkICpfYXJyYXlzOyAgCn07CgoKCgoKCgoKCgoK
CgoKCiMgMTI0ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40Ly4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgiIDMKCgpjbGFzcyBpb3MgOiBwdWJsaWMgX2lvc19m
aWVsZHMgewogIGlvcyYgb3BlcmF0b3I9KGlvcyYpOyAgIAogIGlvcyAoY29uc3QgaW9zJik7ICAK
ICBwdWJsaWM6CiAgICB0eXBlZGVmIF9fZm10ZmxhZ3MgZm10ZmxhZ3M7CiAgICB0eXBlZGVmIGlu
dCBpb3N0YXRlOwogICAgdHlwZWRlZiBpbnQgb3Blbm1vZGU7CiAgICB0eXBlZGVmIF9fc3NpemVf
dCAgIHN0cmVhbXNpemU7CiAgICBlbnVtIGlvX3N0YXRlIHsKCWdvb2RiaXQgPSAwICwKCWVvZmJp
dCA9IDEgLAoJZmFpbGJpdCA9IDIgLAoJYmFkYml0ID0gNCAgfTsKICAgIGVudW0gb3Blbl9tb2Rl
IHsKCWluID0gMSAsCglvdXQgPSAyICwKCWF0ZSA9IDQgLAoJYXBwID0gOCAsCgl0cnVuYyA9IDE2
ICwKCW5vY3JlYXRlID0gMzIgLAoJbm9yZXBsYWNlID0gNjQgLAoJYmluID0gMTI4ICwgIAoJYmlu
YXJ5ID0gMTI4ICB9OwogICAgZW51bSBzZWVrX2RpciB7IGJlZywgY3VyLCBlbmR9OwogICAgdHlw
ZWRlZiBlbnVtIHNlZWtfZGlyIHNlZWtkaXI7CiAgICAgCiAgICBlbnVtIHsgc2tpcHdzPSAwMSAs
CgkgICBsZWZ0PSAwMiAsIHJpZ2h0PSAwNCAsIGludGVybmFsPSAwMTAgLAoJICAgZGVjPSAwMjAg
LCBvY3Q9IDA0MCAsIGhleD0gMDEwMCAsCgkgICBzaG93YmFzZT0gMDIwMCAsIHNob3dwb2ludD0g
MDQwMCAsCgkgICB1cHBlcmNhc2U9IDAxMDAwICwgc2hvd3Bvcz0gMDIwMDAgLAoJICAgc2NpZW50
aWZpYz0gMDQwMDAgLCBmaXhlZD0gMDEwMDAwICwKCSAgIHVuaXRidWY9IDAyMDAwMCAsIHN0ZGlv
PSAwNDAwMDAgCgoKCgkgICB9OwogICAgZW51bSB7ICAKCWJhc2VmaWVsZD1kZWMrb2N0K2hleCwK
CWZsb2F0ZmllbGQgPSBzY2llbnRpZmljK2ZpeGVkLAoJYWRqdXN0ZmllbGQgPSBsZWZ0K3JpZ2h0
K2ludGVybmFsCiAgICB9OwoKIyAxNzcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1
LjQvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJlYW1idWYuaCIgMwoKCiAgICBvc3RyZWFt
KiB0aWUoKSBjb25zdCB7IHJldHVybiBfdGllOyB9CiAgICBvc3RyZWFtKiB0aWUob3N0cmVhbSog
dmFsKSB7IG9zdHJlYW0qIHNhdmU9X3RpZTsgX3RpZT12YWw7IHJldHVybiBzYXZlOyB9CgogICAg
IAogICAgd2NoYXJfdCAgIGZpbGwoKSBjb25zdCB7IHJldHVybiBfZmlsbDsgfQogICAgd2NoYXJf
dCAgIGZpbGwod2NoYXJfdCAgIG5ld2YpCgl7d2NoYXJfdCAgIG9sZGYgPSBfZmlsbDsgX2ZpbGwg
PSBuZXdmOyByZXR1cm4gb2xkZjt9CiAgICBmbXRmbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJu
IF9mbGFnczsgfQogICAgZm10ZmxhZ3MgZmxhZ3MoZm10ZmxhZ3MgbmV3X3ZhbCkgewoJZm10Zmxh
Z3Mgb2xkX3ZhbCA9IF9mbGFnczsgX2ZsYWdzID0gbmV3X3ZhbDsgcmV0dXJuIG9sZF92YWw7IH0K
ICAgIGludCBwcmVjaXNpb24oKSBjb25zdCB7IHJldHVybiBfcHJlY2lzaW9uOyB9CiAgICBpbnQg
cHJlY2lzaW9uKGludCBuZXdwKSB7Cgl1bnNpZ25lZCBzaG9ydCBvbGRwID0gX3ByZWNpc2lvbjsg
X3ByZWNpc2lvbiA9ICh1bnNpZ25lZCBzaG9ydCluZXdwOwoJcmV0dXJuIG9sZHA7IH0KICAgIGZt
dGZsYWdzIHNldGYoZm10ZmxhZ3MgdmFsKSB7CglmbXRmbGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJ
X2ZsYWdzIHw9IHZhbDsgcmV0dXJuIG9sZGJpdHM7IH0KICAgIGZtdGZsYWdzIHNldGYoZm10Zmxh
Z3MgdmFsLCBmbXRmbGFncyBtYXNrKSB7CglmbXRmbGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJX2Zs
YWdzID0gKF9mbGFncyAmIH5tYXNrKSB8ICh2YWwgJiBtYXNrKTsgcmV0dXJuIG9sZGJpdHM7IH0K
ICAgIGZtdGZsYWdzIHVuc2V0ZihmbXRmbGFncyBtYXNrKSB7CglmbXRmbGFncyBvbGRiaXRzID0g
X2ZsYWdzOwoJX2ZsYWdzICY9IH5tYXNrOyByZXR1cm4gb2xkYml0czsgfQogICAgaW50IHdpZHRo
KCkgY29uc3QgeyByZXR1cm4gX3dpZHRoOyB9CiAgICBpbnQgd2lkdGgoaW50IHZhbCkgeyBpbnQg
c2F2ZSA9IF93aWR0aDsgX3dpZHRoID0gdmFsOyByZXR1cm4gc2F2ZTsgfQoKCgoKICAgIHZvaWQg
X3Rocm93X2ZhaWx1cmUoKSBjb25zdCB7IH0KCiAgICB2b2lkIGNsZWFyKGlvc3RhdGUgc3RhdGUg
PSAwKSB7Cglfc3RhdGUgPSBfc3RyYnVmID8gc3RhdGUgOiBzdGF0ZXxiYWRiaXQ7CglpZiAoX3N0
YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19mYWlsdXJlKCk7IH0KICAgIHZvaWQgc2V0KGlvc3Rh
dGUgZmxhZykgeyBfc3RhdGUgfD0gZmxhZzsKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Ro
cm93X2ZhaWx1cmUoKTsgfQogICAgdm9pZCBzZXRzdGF0ZShpb3N0YXRlIGZsYWcpIHsgX3N0YXRl
IHw9IGZsYWc7ICAKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsg
fQogICAgaW50IGdvb2QoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgPT0gMDsgfQogICAgaW50IGVv
ZigpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAmIGlvczo6ZW9mYml0OyB9CiAgICBpbnQgZmFpbCgp
IGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAmIChpb3M6OmJhZGJpdHxpb3M6OmZhaWxiaXQpOyB9CiAg
ICBpbnQgYmFkKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlICYgaW9zOjpiYWRiaXQ7IH0KICAgIGlv
c3RhdGUgcmRzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZTsgfQogICAgb3BlcmF0b3Igdm9p
ZCooKSBjb25zdCB7IHJldHVybiBmYWlsKCkgPyAodm9pZCopMCA6ICh2b2lkKikoLTEpOyB9CiAg
ICBpbnQgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gZmFpbCgpOyB9CiAgICBpb3N0YXRlIGV4
Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBfZXhjZXB0aW9uczsgfQogICAgdm9pZCBleGNlcHRp
b25zKGlvc3RhdGUgZW5hYmxlKSB7CglfZXhjZXB0aW9ucyA9IGVuYWJsZTsKCWlmIChfc3RhdGUg
JiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQoKICAgIHN0cmVhbWJ1ZiogcmRidWYo
KSBjb25zdCB7IHJldHVybiBfc3RyYnVmOyB9CiAgICBzdHJlYW1idWYqIHJkYnVmKHN0cmVhbWJ1
ZiAqX3MpIHsKICAgICAgc3RyZWFtYnVmICpfb2xkID0gX3N0cmJ1ZjsgX3N0cmJ1ZiA9IF9zOyBj
bGVhciAoKTsgcmV0dXJuIF9vbGQ7IH0KCiAgICBzdGF0aWMgaW50IHN5bmNfd2l0aF9zdGRpbyhp
bnQgb24pOwogICAgc3RhdGljIHZvaWQgc3luY193aXRoX3N0ZGlvKCkgeyBzeW5jX3dpdGhfc3Rk
aW8oMSk7IH0KICAgIHN0YXRpYyBmbXRmbGFncyBiaXRhbGxvYygpOwogICAgc3RhdGljIGludCB4
YWxsb2MoKTsKICAgIHZvaWQqJiBwd29yZChpbnQpOwogICAgdm9pZCogcHdvcmQoaW50KSBjb25z
dDsKICAgIGxvbmcmIGl3b3JkKGludCk7CiAgICBsb25nIGl3b3JkKGludCkgY29uc3Q7CgoKCgoK
CgoKCiAgICAgCiAgICBjbGFzcyBJbml0IHsKICAgIHB1YmxpYzoKICAgICAgSW5pdCAoKSB7IH0K
ICAgIH07CgogIHByb3RlY3RlZDoKICAgIGlubGluZSBpb3Moc3RyZWFtYnVmKiBzYiA9IDAsIG9z
dHJlYW0qIHRpZV90byA9IDApOwogICAgaW5saW5lIHZpcnR1YWwgfmlvcygpOwogICAgaW5saW5l
IHZvaWQgaW5pdChzdHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWUgPSAwKTsKfTsKCgoKCnR5cGVk
ZWYgaW9zOjpzZWVrX2RpciBfc2Vla19kaXI7CgoKIAogCiAKIAogCgogCiAKY2xhc3Mgc3RyZWFt
bWFya2VyIDogcHJpdmF0ZSBfSU9fbWFya2VyIHsKICAgIGZyaWVuZCBjbGFzcyBzdHJlYW1idWY7
CiAgICB2b2lkIHNldF9vZmZzZXQoaW50IG9mZnNldCkgeyBfcG9zID0gb2Zmc2V0OyB9CiAgcHVi
bGljOgogICAgc3RyZWFtbWFya2VyKHN0cmVhbWJ1ZiAqc2IpOwogICAgfnN0cmVhbW1hcmtlcigp
OwogICAgaW50IHNhdmluZygpIHsgcmV0dXJuICAxOyB9CiAgICBpbnQgZGVsdGEoc3RyZWFtbWFy
a2VyJik7CiAgICBpbnQgZGVsdGEoKTsKfTsKCnN0cnVjdCBzdHJlYW1idWYgOiBwdWJsaWMgX0lP
X0ZJTEUgeyAgCiAgICBmcmllbmQgY2xhc3MgaW9zOwogICAgZnJpZW5kIGNsYXNzIGlzdHJlYW07
CiAgICBmcmllbmQgY2xhc3Mgb3N0cmVhbTsKICAgIGZyaWVuZCBjbGFzcyBzdHJlYW1tYXJrZXI7
CiAgICBjb25zdCB2b2lkIComX3Z0YWJsZSgpIHsgcmV0dXJuICooY29uc3Qgdm9pZCoqKSgoX0lP
X0ZJTEUqKXRoaXMgKyAxKTsgfQogIHByb3RlY3RlZDoKICAgIHN0YXRpYyBzdHJlYW1idWYqIF9s
aXN0X2FsbDsgIAogICAgX0lPX0ZJTEUqJiB4Y2hhaW4oKSB7IHJldHVybiBfY2hhaW47IH0KICAg
IHZvaWQgX3VuX2xpbmsoKTsKICAgIHZvaWQgX2xpbmtfaW4oKTsKICAgIGNoYXIqIGdwdHIoKSBj
b25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgxMDAgID8gX0lPX3NhdmVfYmFzZSA6IF9J
T19yZWFkX3B0cjsgfQogICAgY2hhciogcHB0cigpIGNvbnN0IHsgcmV0dXJuIF9JT193cml0ZV9w
dHI7IH0KICAgIGNoYXIqIGVncHRyKCkgY29uc3QKICAgICAgeyByZXR1cm4gX2ZsYWdzICAmIDB4
MTAwICA/IF9JT19zYXZlX2VuZCA6IF9JT19yZWFkX2VuZDsgfQogICAgY2hhciogZXBwdHIoKSBj
b25zdCB7IHJldHVybiBfSU9fd3JpdGVfZW5kOyB9CiAgICBjaGFyKiBwYmFzZSgpIGNvbnN0IHsg
cmV0dXJuIF9JT193cml0ZV9iYXNlOyB9CiAgICBjaGFyKiBlYmFjaygpIGNvbnN0CiAgICAgIHsg
cmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9iYXNlIDogX0lPX3JlYWRfYmFzZTt9
CiAgICBjaGFyKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9iYXNlOyB9CiAgICBjaGFy
KiBlYnVmKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9lbmQ7IH0KICAgIGludCBibGVuKCkgY29u
c3QgeyByZXR1cm4gX0lPX2J1Zl9lbmQgLSBfSU9fYnVmX2Jhc2U7IH0KICAgIHZvaWQgeHB1dF9j
aGFyKGNoYXIgYykgeyAqX0lPX3dyaXRlX3B0cisrID0gYzsgfQogICAgaW50IHhmbGFncygpIHsg
cmV0dXJuIF9mbGFncyA7IH0KICAgIGludCB4ZmxhZ3MoaW50IGYpIHtpbnQgZmwgPSBfZmxhZ3Mg
OyBfZmxhZ3MgID0gZjsgcmV0dXJuIGZsO30KICAgIHZvaWQgeHNldGZsYWdzKGludCBmKSB7IF9m
bGFncyAgfD0gZjsgfQogICAgdm9pZCB4c2V0ZmxhZ3MoaW50IGYsIGludCBtYXNrKQogICAgICB7
IF9mbGFncyAgPSAoX2ZsYWdzICAmIH5tYXNrKSB8IChmICYgbWFzayk7IH0KICAgIHZvaWQgZ2J1
bXAoaW50IG4pCiAgICAgIHsgX2ZsYWdzICAmIDB4MTAwICA/IChfSU9fc2F2ZV9iYXNlKz1uKToo
X0lPX3JlYWRfcHRyKz1uKTt9CiAgICB2b2lkIHBidW1wKGludCBuKSB7IF9JT193cml0ZV9wdHIg
Kz0gbjsgfQogICAgdm9pZCBzZXRiKGNoYXIqIGIsIGNoYXIqIGViLCBpbnQgYT0wKTsKICAgIHZv
aWQgc2V0cChjaGFyKiBwLCBjaGFyKiBlcCkKICAgICAgeyBfSU9fd3JpdGVfYmFzZT1fSU9fd3Jp
dGVfcHRyPXA7IF9JT193cml0ZV9lbmQ9ZXA7IH0KICAgIHZvaWQgc2V0ZyhjaGFyKiBlYiwgY2hh
ciogZywgY2hhciAqZWcpIHsKICAgICAgaWYgKF9mbGFncyAgJiAweDEwMCApIF9JT19mcmVlX2Jh
Y2t1cF9hcmVhKHRoaXMpOyAKICAgICAgX0lPX3JlYWRfYmFzZSA9IGViOyBfSU9fcmVhZF9wdHIg
PSBnOyBfSU9fcmVhZF9lbmQgPSBlZzsgfQogICAgY2hhciAqc2hvcnRidWYoKSB7IHJldHVybiBf
c2hvcnRidWY7IH0KCiAgICBpbnQgaW5fYmFja3VwKCkgeyByZXR1cm4gX2ZsYWdzICYgMHgxMDAg
OyB9CiAgICAgCiAgICBjaGFyICpHYmFzZSgpIHsgcmV0dXJuIGluX2JhY2t1cCgpID8gX0lPX3Nh
dmVfYmFzZSA6IF9JT19yZWFkX2Jhc2U7IH0KICAgICAKICAgIGNoYXIgKmVHcHRyKCkgeyByZXR1
cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9lbmQgOiBfSU9fcmVhZF9lbmQ7IH0KICAgICAKICAg
IGNoYXIgKkJiYXNlKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fcmVhZF9iYXNlIDogX0lP
X3NhdmVfYmFzZTsgfQogICAgY2hhciAqQnB0cigpIHsgcmV0dXJuIF9JT19iYWNrdXBfYmFzZTsg
fQogICAgIAogICAgY2hhciAqZUJwdHIoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19yZWFk
X2VuZCA6IF9JT19zYXZlX2VuZDsgfQogICAgY2hhciAqTmJhc2UoKSB7IHJldHVybiBfSU9fc2F2
ZV9iYXNlOyB9CiAgICBjaGFyICplTnB0cigpIHsgcmV0dXJuIF9JT19zYXZlX2VuZDsgfQogICAg
aW50IGhhdmVfYmFja3VwKCkgeyByZXR1cm4gX0lPX3NhdmVfYmFzZSAhPSBfX251bGwgOyB9CiAg
ICBpbnQgaGF2ZV9tYXJrZXJzKCkgeyByZXR1cm4gX21hcmtlcnMgIT0gX19udWxsIDsgfQogICAg
dm9pZCBmcmVlX2JhY2t1cF9hcmVhKCk7CiAgICB2b2lkIHVuc2F2ZV9tYXJrZXJzKCk7ICAKICAg
IGludCBwdXRfbW9kZSgpIHsgcmV0dXJuIF9mbGFncyAmIDB4ODAwIDsgfQogICAgaW50IHN3aXRj
aF90b19nZXRfbW9kZSgpOwogICAgCiAgICBzdHJlYW1idWYoaW50IGZsYWdzPTApOwogIHB1Ymxp
YzoKICAgIHN0YXRpYyBpbnQgZmx1c2hfYWxsKCk7CiAgICBzdGF0aWMgdm9pZCBmbHVzaF9hbGxf
bGluZWJ1ZmZlcmVkKCk7ICAKICAgIHZpcnR1YWwgfnN0cmVhbWJ1ZigpOwogICAgdmlydHVhbCBp
bnQgb3ZlcmZsb3coaW50IGMgPSAoLTEpICk7ICAKICAgIHZpcnR1YWwgaW50IHVuZGVyZmxvdygp
OyAgCiAgICB2aXJ0dWFsIGludCB1ZmxvdygpOyAgCiAgICB2aXJ0dWFsIGludCBwYmFja2ZhaWwo
aW50IGMpOwogCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0
cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgeHNnZXRuKGNoYXIqIHMsIHN0cmVh
bXNpemUgbik7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtf
ZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNl
ZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUgPSBpb3M6OmlufGlvczo6b3V0KTsKCiAgICBz
dHJlYW1wb3MgcHVic2Vla29mZihzdHJlYW1vZmYgbywgX3NlZWtfZGlyIGQsIGludCBtb2RlPWlv
czo6aW58aW9zOjpvdXQpCiAgICAgIHsgcmV0dXJuIF9JT19zZWVrb2ZmICh0aGlzLCBvLCBkLCBt
b2RlKTsgfQogICAgc3RyZWFtcG9zIHB1YnNlZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUg
PSBpb3M6OmlufGlvczo6b3V0KQogICAgICB7IHJldHVybiBfSU9fc2Vla3BvcyAodGhpcywgcG9z
LCBtb2RlKTsgfQogICAgc3RyZWFtcG9zIHNzZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtfZGlyLCBp
bnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHN0cmVhbXBvcyBzc2Vla3BvcyhzdHJlYW1w
b3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1i
dWYqIHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVuKTsKICAgIHZpcnR1YWwgaW50IHN5bmMoKTsKICAg
IHZpcnR1YWwgaW50IGRvYWxsb2NhdGUoKTsKCiAgICBpbnQgc2Vla21hcmsoc3RyZWFtbWFya2Vy
JiBtYXJrLCBpbnQgZGVsdGEgPSAwKTsKICAgIGludCBzcHV0YmFja2MoY2hhciBjKTsKICAgIGlu
dCBzdW5nZXRjKCk7CiAgICBpbnQgdW5idWZmZXJlZCgpIHsgcmV0dXJuIF9mbGFncyAmIDIgID8g
MSA6IDA7IH0KICAgIGludCBsaW5lYnVmZmVyZWQoKSB7IHJldHVybiBfZmxhZ3MgJiAweDIwMCAg
PyAxIDogMDsgfQogICAgdm9pZCB1bmJ1ZmZlcmVkKGludCBpKQoJeyBpZiAoaSkgX2ZsYWdzIHw9
IDIgOyBlbHNlIF9mbGFncyAmPSB+MiA7IH0KICAgIHZvaWQgbGluZWJ1ZmZlcmVkKGludCBpKQoJ
eyBpZiAoaSkgX2ZsYWdzIHw9IDB4MjAwIDsgZWxzZSBfZmxhZ3MgJj0gfjB4MjAwIDsgfQogICAg
aW50IGFsbG9jYXRlKCkgeyAgCglpZiAoYmFzZSgpIHx8IHVuYnVmZmVyZWQoKSkgcmV0dXJuIDA7
CgllbHNlIHJldHVybiBkb2FsbG9jYXRlKCk7IH0KICAgICAKICAgIHZvaWQgYWxsb2NidWYoKSB7
IGlmIChiYXNlKCkgPT0gX19udWxsICkgZG9hbGxvY2J1ZigpOyB9CiAgICB2b2lkIGRvYWxsb2Ni
dWYoKTsKICAgIGludCBpbl9hdmFpbCgpIHsgcmV0dXJuIF9JT19yZWFkX2VuZCAtIF9JT19yZWFk
X3B0cjsgfQogICAgaW50IG91dF93YWl0aW5nKCkgeyByZXR1cm4gX0lPX3dyaXRlX3B0ciAtIF9J
T193cml0ZV9iYXNlOyB9CiAgICBzdHJlYW1zaXplIHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVh
bXNpemUgbikgeyByZXR1cm4geHNwdXRuKHMsIG4pOyB9CiAgICBzdHJlYW1zaXplIHBhZG4oY2hh
ciBwYWQsIHN0cmVhbXNpemUgbikgeyByZXR1cm4gX0lPX3BhZG4odGhpcywgcGFkLCBuKTsgfQog
ICAgc3RyZWFtc2l6ZSBzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4pIHsgcmV0dXJuIF9JT19z
Z2V0bih0aGlzLCBzLCBuKTsgfQogICAgaW50IGlnbm9yZShpbnQpOwogICAgaW50IGdldF9jb2x1
bW4oKTsKICAgIGludCBzZXRfY29sdW1uKGludCk7CiAgICBsb25nIHNnZXRsaW5lKGNoYXIqIGJ1
Ziwgc2l6ZV90ICAgbiwgY2hhciBkZWxpbSwgaW50IHB1dGJhY2tfZGVsaW0pOwogICAgaW50IHNw
dXRjKGludCBjKSB7IHJldHVybiBfSU9fcHV0YyhjLCB0aGlzKTsgfQogICAgaW50IHNidW1wYygp
IHsgcmV0dXJuIF9JT19nZXRjKHRoaXMpOyB9CiAgICBpbnQgc2dldGMoKSB7IHJldHVybiAoKCAg
dGhpcyAgKS0+X0lPX3JlYWRfcHRyID49ICggIHRoaXMgICktPl9JT19yZWFkX2VuZCAmJiBfX3Vu
ZGVyZmxvdyAoICB0aGlzICApID09ICgtMSkgID8gKC0xKSAgOiAqKHVuc2lnbmVkIGNoYXIgKikg
KCAgdGhpcyAgKS0+X0lPX3JlYWRfcHRyKSAgOyB9CiAgICBpbnQgc25leHRjKCkgewoJaWYgKF9J
T19yZWFkX3B0ciA+PSBfSU9fcmVhZF9lbmQgJiYgX191bmRlcmZsb3codGhpcykgPT0gKC0xKSAp
CgkgIHJldHVybiAoLTEpIDsKCWVsc2UgcmV0dXJuIF9JT19yZWFkX3B0cisrLCBzZ2V0YygpOyB9
CiAgICB2b2lkIHN0b3NzYygpIHsgaWYgKF9JT19yZWFkX3B0ciA8IF9JT19yZWFkX2VuZCkgX0lP
X3JlYWRfcHRyKys7IH0KICAgIGludCB2c2NhbihjaGFyIGNvbnN0ICpmbXQwLCBfX2dudWNfdmFf
bGlzdCAgYXAsIGlvcyogc3RyZWFtID0gX19udWxsICk7CiAgICBpbnQgc2NhbihjaGFyIGNvbnN0
ICpmbXQwIC4uLik7CiAgICBpbnQgdmZvcm0oY2hhciBjb25zdCAqZm10MCwgX19nbnVjX3ZhX2xp
c3QgIGFwKTsKICAgIGludCBmb3JtKGNoYXIgY29uc3QgKmZtdDAgLi4uKTsKCgoKCiAgICB2aXJ0
dWFsIHN0cmVhbXNpemUgc3lzX3JlYWQoY2hhciogYnVmLCBzdHJlYW1zaXplIHNpemUpOwogICAg
dmlydHVhbCBzdHJlYW1zaXplIHN5c193cml0ZShjb25zdCBjaGFyKiwgc3RyZWFtc2l6ZSk7CiAg
ICB2aXJ0dWFsIHN0cmVhbXBvcyBzeXNfc2VlayhzdHJlYW1vZmYsIF9zZWVrX2Rpcik7CiAgICB2
aXJ0dWFsIGludCBzeXNfY2xvc2UoKTsKICAgIHZpcnR1YWwgaW50IHN5c19zdGF0KHZvaWQqKTsg
IAoKICAgIHZpcnR1YWwgaW50IHNob3dtYW55YygpOwogICAgdmlydHVhbCB2b2lkIGltYnVlKHZv
aWQgKik7Cgp9OwoKIAogCgpjbGFzcyBmaWxlYnVmIDogcHVibGljIHN0cmVhbWJ1ZiB7CiAgcHJv
dGVjdGVkOgogICAgdm9pZCBpbml0KCk7CiAgcHVibGljOgogICAgc3RhdGljIGNvbnN0IGludCBv
cGVucHJvdDsgIAogICAgZmlsZWJ1ZigpOwogICAgZmlsZWJ1ZihpbnQgZmQpOwogICAgZmlsZWJ1
ZihpbnQgZmQsIGNoYXIqIHAsIGludCBsZW4pOwoKCgogICAgfmZpbGVidWYoKTsKICAgIGZpbGVi
dWYqIGF0dGFjaChpbnQgZmQpOwogICAgZmlsZWJ1Ziogb3Blbihjb25zdCBjaGFyICpmaWxlbmFt
ZSwgY29uc3QgY2hhciAqbW9kZSk7CiAgICBmaWxlYnVmKiBvcGVuKGNvbnN0IGNoYXIgKmZpbGVu
YW1lLCBpb3M6Om9wZW5tb2RlIG1vZGUsIGludCBwcm90ID0gMDY2NCk7CiAgICB2aXJ0dWFsIGlu
dCB1bmRlcmZsb3coKTsKICAgIHZpcnR1YWwgaW50IG92ZXJmbG93KGludCBjID0gKC0xKSApOwog
ICAgaW50IGlzX29wZW4oKSBjb25zdCB7IHJldHVybiBfZmlsZW5vID49IDA7IH0KICAgIGludCBm
ZCgpIGNvbnN0IHsgcmV0dXJuIGlzX29wZW4oKSA/IF9maWxlbm8gOiAoLTEpIDsgfQogICAgZmls
ZWJ1ZiogY2xvc2UoKTsKICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUoKTsKICAgIHZpcnR1YWwg
c3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGludCBtb2RlPWlvczo6aW58
aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1idWYqIHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVu
KTsKICAgIHN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAg
ICBzdHJlYW1zaXplIHhzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgdmlydHVhbCBp
bnQgc3luYygpOwogIHByb3RlY3RlZDogIAogCiAgICBpbnQgaXNfcmVhZGluZygpIHsgcmV0dXJu
IGViYWNrKCkgIT0gZWdwdHIoKTsgfQogICAgY2hhciogY3VyX3B0cigpIHsgcmV0dXJuIGlzX3Jl
YWRpbmcoKSA/ICBncHRyKCkgOiBwcHRyKCk7IH0KICAgICAKICAgIGNoYXIqIGZpbGVfcHRyKCkg
eyByZXR1cm4gZUdwdHIoKTsgfQogICAgIAogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c19yZWFk
KGNoYXIqIGJ1Ziwgc3RyZWFtc2l6ZSBzaXplKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHN5c19z
ZWVrKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNfd3Jp
dGUoY29uc3QgY2hhciosIHN0cmVhbXNpemUpOwogICAgdmlydHVhbCBpbnQgc3lzX3N0YXQodm9p
ZCopOyAgCiAgICB2aXJ0dWFsIGludCBzeXNfY2xvc2UoKTsKCgoKCn07CgppbmxpbmUgdm9pZCBp
b3M6OmluaXQoc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllX3RvKSB7CgkJX3N0YXRlID0gc2Ig
PyBpb3M6Omdvb2RiaXQgOiBpb3M6OmJhZGJpdDsgX2V4Y2VwdGlvbnM9MDsKCQlfc3RyYnVmPXNi
OyBfdGllID0gdGllX3RvOyBfd2lkdGg9MDsgX2ZpbGw9JyAnOwoKCQlfZmxhZ3M9aW9zOjpza2lw
d3N8aW9zOjpkZWM7CgoKCgkJX3ByZWNpc2lvbj02OyBfYXJyYXlzID0gMDsgfQoKaW5saW5lIGlv
czo6aW9zKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZV90bykgeyBpbml0KHNiLCB0aWVfdG8p
OyB9CgppbmxpbmUgaW9zOjp+aW9zKCkgewoKCgogICAgIAogICAgIAogICAgb3BlcmF0b3IgZGVs
ZXRlW10gKF9hcnJheXMpOwp9Cn0gIAoKIyAzMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4
LzIuOTUuNC8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2lvc3RyZWFtLmgiIDIgMwoKCmV4dGVy
biAiQysrIiB7CmNsYXNzIGlzdHJlYW07IGNsYXNzIG9zdHJlYW07CnR5cGVkZWYgaW9zJiAoKl9f
bWFuaXApKGlvcyYpOwp0eXBlZGVmIGlzdHJlYW0mICgqX19pbWFuaXApKGlzdHJlYW0mKTsKdHlw
ZWRlZiBvc3RyZWFtJiAoKl9fb21hbmlwKShvc3RyZWFtJik7CgpleHRlcm4gaXN0cmVhbSYgd3Mo
aXN0cmVhbSYgaW5zKTsKZXh0ZXJuIG9zdHJlYW0mIGZsdXNoKG9zdHJlYW0mIG91dHMpOwpleHRl
cm4gb3N0cmVhbSYgZW5kbChvc3RyZWFtJiBvdXRzKTsKZXh0ZXJuIG9zdHJlYW0mIGVuZHMob3N0
cmVhbSYgb3V0cyk7CgpjbGFzcyBvc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAgICAK
ICAgIHZvaWQgZG9fb3NmeCgpOwogIHB1YmxpYzoKICAgIG9zdHJlYW0oKSB7IH0KICAgIG9zdHJl
YW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllZD0gX19udWxsICk7CiAgICBpbnQgb3BmeCgp
IHsKCWlmICghZ29vZCgpKSByZXR1cm4gMDsKCWVsc2UgeyBpZiAoX3RpZSkgX3RpZS0+Zmx1c2go
KTsgIDsgcmV0dXJuIDE7fSB9CiAgICB2b2lkIG9zZngoKSB7ICA7CgkJICBpZiAoZmxhZ3MoKSAm
IChpb3M6OnVuaXRidWZ8aW9zOjpzdGRpbykpCgkJICAgICAgZG9fb3NmeCgpOyB9CiAgICBvc3Ry
ZWFtJiBmbHVzaCgpOwogICAgb3N0cmVhbSYgcHV0KGNoYXIgYykgeyBfc3RyYnVmLT5zcHV0Yyhj
KTsgcmV0dXJuICp0aGlzOyB9CgoKCgoKICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IGNoYXIgKnMs
IHN0cmVhbXNpemUgbik7CiAgICBvc3RyZWFtJiB3cml0ZShjb25zdCB1bnNpZ25lZCBjaGFyICpz
LCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9
CiAgICBvc3RyZWFtJiB3cml0ZShjb25zdCBzaWduZWQgY2hhciAqcywgc3RyZWFtc2l6ZSBuKQog
ICAgICB7IHJldHVybiB3cml0ZSgoY29uc3QgY2hhciopcywgbik7fQogICAgb3N0cmVhbSYgd3Jp
dGUoY29uc3Qgdm9pZCAqcywgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgoY29u
c3QgY2hhciopcywgbik7fQogICAgb3N0cmVhbSYgc2Vla3Aoc3RyZWFtcG9zKTsKICAgIG9zdHJl
YW0mIHNlZWtwKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHN0cmVhbXBvcyB0ZWxscCgpOwog
ICAgb3N0cmVhbSYgZm9ybShjb25zdCBjaGFyICpmb3JtYXQgLi4uKTsKICAgIG9zdHJlYW0mIHZm
b3JtKGNvbnN0IGNoYXIgKmZvcm1hdCwgX19nbnVjX3ZhX2xpc3QgIGFyZ3MpOwoKICAgIG9zdHJl
YW0mIG9wZXJhdG9yPDwoY2hhciBjKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQg
Y2hhciBjKSB7IHJldHVybiAoKnRoaXMpIDw8IChjaGFyKWM7IH0KICAgIG9zdHJlYW0mIG9wZXJh
dG9yPDwoc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gKCp0aGlzKSA8PCAoY2hhciljOyB9CiAgICBv
c3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IGNoYXIgKnMpOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8
PChjb25zdCB1bnNpZ25lZCBjaGFyICpzKQoJeyByZXR1cm4gKCp0aGlzKSA8PCAoY29uc3QgY2hh
ciopczsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBzaWduZWQgY2hhciAqcykKCXsg
cmV0dXJuICgqdGhpcykgPDwgKGNvbnN0IGNoYXIqKXM7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9y
PDwoY29uc3Qgdm9pZCAqcCk7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGludCBuKTsKICAgIG9z
dHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgaW50IG4pOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8
PChsb25nIG4pOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIG4pOwoKICAg
IF9fZXh0ZW5zaW9uX18gb3N0cmVhbSYgb3BlcmF0b3I8PChsb25nIGxvbmcgbik7CiAgICBfX2V4
dGVuc2lvbl9fIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBsb25nIG4pOwoKICAg
IG9zdHJlYW0mIG9wZXJhdG9yPDwoc2hvcnQgbikge3JldHVybiBvcGVyYXRvcjw8KChpbnQpbik7
fQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBzaG9ydCBuKSB7cmV0dXJuIG9wZXJh
dG9yPDwoKHVuc2lnbmVkIGludCluKTt9CgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChib29sIGIp
IHsgcmV0dXJuIG9wZXJhdG9yPDwoKGludCliKTsgfQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwo
ZG91YmxlIG4pOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChmbG9hdCBuKSB7IHJldHVybiBvcGVy
YXRvcjw8KChkb3VibGUpbik7IH0KCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgZG91Ymxl
IG4pOwoKCgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChfX29tYW5pcCBmdW5jKSB7IHJldHVybiAo
KmZ1bmMpKCp0aGlzKTsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChfX21hbmlwIGZ1bmMpIHso
KmZ1bmMpKCp0aGlzKTsgcmV0dXJuICp0aGlzO30KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc3Ry
ZWFtYnVmKik7CgoKCn07CgpjbGFzcyBpc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAg
ICAKcHJvdGVjdGVkOgogICAgc2l6ZV90ICAgX2djb3VudDsKCiAgICBpbnQgX3NraXBfd3MoKTsK
ICBwdWJsaWM6CiAgICBpc3RyZWFtKCk6IF9nY291bnQgKDApIHsgfQogICAgaXN0cmVhbShzdHJl
YW1idWYqIHNiLCBvc3RyZWFtKnRpZWQ9IF9fbnVsbCApOwogICAgaXN0cmVhbSYgZ2V0KGNoYXIq
IHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0KHVuc2ln
bmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpCgl7IHJldHVybiBnZXQo
KGNoYXIqKXB0ciwgbGVuLCBkZWxpbSk7IH0KICAgIGlzdHJlYW0mIGdldChjaGFyJiBjKTsKICAg
IGlzdHJlYW0mIGdldCh1bnNpZ25lZCBjaGFyJiBjKSB7IHJldHVybiBnZXQoKGNoYXImKWMpOyB9
CiAgICBpc3RyZWFtJiBnZXRsaW5lKGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdc
bicpOwogICAgaXN0cmVhbSYgZ2V0bGluZSh1bnNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNo
YXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGlt
KTsgfQogICAgaXN0cmVhbSYgZ2V0KHNpZ25lZCBjaGFyJiBjKSAgeyByZXR1cm4gZ2V0KChjaGFy
JiljKTsgfQogICAgaXN0cmVhbSYgZ2V0KHNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIg
ZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0KChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9CiAg
ICBpc3RyZWFtJiBnZXRsaW5lKHNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0g
PSAnXG4nKQoJeyByZXR1cm4gZ2V0bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAg
aXN0cmVhbSYgcmVhZChjaGFyICpwdHIsIHN0cmVhbXNpemUgbik7CiAgICBpc3RyZWFtJiByZWFk
KHVuc2lnbmVkIGNoYXIgKnB0ciwgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiByZWFkKChj
aGFyKilwdHIsIG4pOyB9CiAgICBpc3RyZWFtJiByZWFkKHNpZ25lZCBjaGFyICpwdHIsIHN0cmVh
bXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0cmVh
bSYgcmVhZCh2b2lkICpwdHIsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hh
ciopcHRyLCBuKTsgfQogICAgaXN0cmVhbSYgZ2V0KHN0cmVhbWJ1ZiYgc2IsIGNoYXIgZGVsaW0g
PSAnXG4nKTsKICAgIGlzdHJlYW0mIGdldHMoY2hhciAqKnMsIGNoYXIgZGVsaW0gPSAnXG4nKTsK
ICAgIGludCBpcGZ4KGludCBuZWVkID0gMCkgewoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFp
bGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsKCSAgaWYgKF90aWUgJiYgKG5lZWQgPT0g
MCB8fCByZGJ1ZigpLT5pbl9hdmFpbCgpIDwgbmVlZCkpIF90aWUtPmZsdXNoKCk7CgkgIGlmICgh
bmVlZCAmJiAoZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSkgcmV0dXJuIF9za2lwX3dzKCk7CgkgIGVs
c2UgcmV0dXJuIDE7Cgl9CiAgICB9CiAgICBpbnQgaXBmeDAoKSB7ICAKCWlmICghZ29vZCgpKSB7
IHNldChpb3M6OmZhaWxiaXQpOyByZXR1cm4gMDsgfQoJZWxzZSB7CgkgICA7CgkgIGlmIChfdGll
KSBfdGllLT5mbHVzaCgpOwoJICBpZiAoZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSByZXR1cm4gX3Nr
aXBfd3MoKTsKCSAgZWxzZSByZXR1cm4gMTsKCX0KICAgIH0KICAgIGludCBpcGZ4MSgpIHsgIAoJ
aWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAg
IDsKCSAgaWYgKF90aWUgJiYgcmRidWYoKS0+aW5fYXZhaWwoKSA9PSAwKSBfdGllLT5mbHVzaCgp
OwoJICByZXR1cm4gMTsKCX0KICAgIH0KICAgIHZvaWQgaXNmeCgpIHsgIDsgfQogICAgaW50IGdl
dCgpIHsgaWYgKCFpcGZ4MSgpKSByZXR1cm4gKC0xKSA7CgkJZWxzZSB7IGludCBjaCA9IF9zdHJi
dWYtPnNidW1wYygpOwoJCSAgICAgICBpZiAoY2ggPT0gKC0xKSApIHNldChpb3M6OmVvZmJpdCk7
CgkJICAgICAgIGlzZngoKTsKCQkgICAgICAgcmV0dXJuIGNoOwoJCSAgICAgfSB9CiAgICBpbnQg
cGVlaygpOwogICAgc2l6ZV90ICAgZ2NvdW50KCkgeyByZXR1cm4gX2djb3VudDsgfQogICAgaXN0
cmVhbSYgaWdub3JlKGludCBuPTEsIGludCBkZWxpbSA9ICgtMSkgKTsKICAgIGludCBzeW5jICgp
OwogICAgaXN0cmVhbSYgc2Vla2coc3RyZWFtcG9zKTsKICAgIGlzdHJlYW0mIHNlZWtnKHN0cmVh
bW9mZiwgX3NlZWtfZGlyKTsKICAgIHN0cmVhbXBvcyB0ZWxsZygpOwogICAgaXN0cmVhbSYgcHV0
YmFjayhjaGFyIGNoKSB7CglpZiAoZ29vZCgpICYmIF9zdHJidWYtPnNwdXRiYWNrYyhjaCkgPT0g
KC0xKSApIGNsZWFyKGlvczo6YmFkYml0KTsKCXJldHVybiAqdGhpczt9CiAgICBpc3RyZWFtJiB1
bmdldCgpIHsKCWlmIChnb29kKCkgJiYgX3N0cmJ1Zi0+c3VuZ2V0YygpID09ICgtMSkgKSBjbGVh
cihpb3M6OmJhZGJpdCk7CglyZXR1cm4gKnRoaXM7fQogICAgaXN0cmVhbSYgc2Nhbihjb25zdCBj
aGFyICpmb3JtYXQgLi4uKTsKICAgIGlzdHJlYW0mIHZzY2FuKGNvbnN0IGNoYXIgKmZvcm1hdCwg
X19nbnVjX3ZhX2xpc3QgIGFyZ3MpOwoKCgoKCgogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFy
Kik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGNoYXIqIHApIHsgcmV0dXJuIG9w
ZXJhdG9yPj4oKGNoYXIqKXApOyB9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNpZ25lZCBjaGFy
KnApIHsgcmV0dXJuIG9wZXJhdG9yPj4oKGNoYXIqKXApOyB9CiAgICBpc3RyZWFtJiBvcGVyYXRv
cj4+KGNoYXImIGMpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBjaGFyJiBjKSB7
cmV0dXJuIG9wZXJhdG9yPj4oKGNoYXImKWMpO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc2ln
bmVkIGNoYXImIGMpIHtyZXR1cm4gb3BlcmF0b3I+PigoY2hhciYpYyk7fQogICAgaXN0cmVhbSYg
b3BlcmF0b3I+PihpbnQmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyYpOwoKICAgIF9f
ZXh0ZW5zaW9uX18gaXN0cmVhbSYgb3BlcmF0b3I+Pihsb25nIGxvbmcmKTsKICAgIF9fZXh0ZW5z
aW9uX18gaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBsb25nIGxvbmcmKTsKCiAgICBpc3Ry
ZWFtJiBvcGVyYXRvcj4+KHNob3J0Jik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVk
IGludCYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBsb25nJik7CiAgICBpc3Ry
ZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIHNob3J0Jik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+
Pihib29sJik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihmbG9hdCYpOwogICAgaXN0cmVhbSYg
b3BlcmF0b3I+Pihkb3VibGUmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyBkb3VibGUm
KTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oIF9fbWFuaXAgZnVuYykgeygqZnVuYykoKnRoaXMp
OyByZXR1cm4gKnRoaXM7fQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihfX2ltYW5pcCBmdW5jKSB7
IHJldHVybiAoKmZ1bmMpKCp0aGlzKTsgfQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzdHJlYW1i
dWYqKTsKfTsKCmNsYXNzIGlvc3RyZWFtIDogcHVibGljIGlzdHJlYW0sIHB1YmxpYyBvc3RyZWFt
CnsKICBwdWJsaWM6CiAgICBpb3N0cmVhbSgpIHsgfQogICAgaW9zdHJlYW0oc3RyZWFtYnVmKiBz
Yiwgb3N0cmVhbSp0aWVkPSBfX251bGwgKTsKfTsKCmNsYXNzIF9JT19pc3RyZWFtX3dpdGhhc3Np
Z24gOiBwdWJsaWMgaXN0cmVhbSB7CnB1YmxpYzoKICBfSU9faXN0cmVhbV93aXRoYXNzaWduJiBv
cGVyYXRvcj0oaXN0cmVhbSYpOwogIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShf
SU9faXN0cmVhbV93aXRoYXNzaWduJiByaHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRp
Y19jYXN0PGlzdHJlYW0mPiAocmhzKSk7IH0KfTsKCmNsYXNzIF9JT19vc3RyZWFtX3dpdGhhc3Np
Z24gOiBwdWJsaWMgb3N0cmVhbSB7CnB1YmxpYzoKICBfSU9fb3N0cmVhbV93aXRoYXNzaWduJiBv
cGVyYXRvcj0ob3N0cmVhbSYpOwogIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShf
SU9fb3N0cmVhbV93aXRoYXNzaWduJiByaHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRp
Y19jYXN0PG9zdHJlYW0mPiAocmhzKSk7IH0KfTsKCmV4dGVybiBfSU9faXN0cmVhbV93aXRoYXNz
aWduIGNpbjsKIApleHRlcm4gX0lPX29zdHJlYW1fd2l0aGFzc2lnbiBjb3V0LCBjZXJyOwoKZXh0
ZXJuIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24gY2xvZwoKCgo7CgpleHRlcm4gaXN0cmVhbSYgbG9j
ayhpc3RyZWFtJiBpbnMpOwpleHRlcm4gaXN0cmVhbSYgdW5sb2NrKGlzdHJlYW0mIGlucyk7CmV4
dGVybiBvc3RyZWFtJiBsb2NrKG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgdW5sb2Nr
KG9zdHJlYW0mIG91dHMpOwoKc3RydWN0IElvc3RyZWFtX2luaXQgeyB9IDsgICAKCmlubGluZSBp
b3MmIGRlYyhpb3MmIGkpCnsgaS5zZXRmKGlvczo6ZGVjLCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6
Om9jdCk7IHJldHVybiBpOyB9CmlubGluZSBpb3MmIGhleChpb3MmIGkpCnsgaS5zZXRmKGlvczo6
aGV4LCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9CmlubGluZSBpb3Mm
IG9jdChpb3MmIGkpCnsgaS5zZXRmKGlvczo6b2N0LCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9j
dCk7IHJldHVybiBpOyB9Cn0gIAoKCiMgMTQgInBwMl80X3RvYmVua2luLmNwcCIgMgoKIyAxICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIAoK
CgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1
LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9n
Y2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4
Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4OCAiL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoK
CgoKIAoKCiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40
L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKCgoK
IyA5MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAg
IGludCBxdW90OwkJCSAKICAgIGludCByZW07CQkJIAogIH0gZGl2X3Q7CgogCgp0eXBlZGVmIHN0
cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CQkgCiAgICBsb25nIGludCByZW07CQkgCiAgfSBs
ZGl2X3Q7CgoKCiMgMTE4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKIAoKCgogCgoKCgoK
IAoKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSB0aHJvdyAoKSA7
CgoKIApleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSAg
IDsKIApleHRlcm4gaW50IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSAgIDsK
IApleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpICAg
OwoKCiAKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBj
aGFyICpfX25wdHIpCiAgICAgdGhyb3cgKCkgICA7CgoKIApleHRlcm4gZG91YmxlIHN0cnRvZCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0cikgdGhyb3cgKCkgOwoKCgoKCgoKCgoKIApleHRlcm4gbG9uZyBpbnQgc3RydG9s
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQljaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCkgOwogCmV4dGVybiB1bnNpZ25lZCBsb25nIGlu
dCBzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKSA7CgoKIApfX2V4
dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSkgdGhyb3cgKCkgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKSA7
CgoKCiAKCiAKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCkgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCgkJCQkJY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAg
dGhyb3cgKCkgOwoKCgojIDI0NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiAKCgpleHRl
cm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAoJCQkJIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICB0
aHJvdyAoKSA7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKCQkJCWNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19n
cm91cCkKICAgICB0aHJvdyAoKSA7CmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJu
YWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCgkJCQkgICAgICAgaW50IF9fZ3JvdXApIHRocm93ICgpIDsKCmV4
dGVybiBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKCQkJCSAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJICAgaW50IF9f
YmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50
IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJ
CQkgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCSAgICAgaW50IF9fYmFzZSwg
aW50IF9fZ3JvdXApIHRocm93ICgpIDsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgX19zdHJ0b2xsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAoJCQkJCSBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkgaW50IF9fYmFzZSwgaW50
IF9fZ3JvdXApIHRocm93ICgpIDsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9u
ZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKgoJCQkJCQkgICBf
X3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJ
CQkJCSAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKQogICAgIHRocm93ICgpIDsKCgoKCiMgMzc3
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKCiAKCgpleHRlcm4gY2hhciAqbDY0YSAobG9u
ZyBpbnQgX19uKSB0aHJvdyAoKSA7CgogCmV4dGVybiBsb25nIGludCBhNjRsIChfX2NvbnN0IGNo
YXIgKl9fcykgdGhyb3cgKCkgICA7CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCgoKCgp0eXBlZGVm
IF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3Vf
aW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFk
X3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7
CgoKCgp0eXBlZGVmIF9fbG9mZl90IGxvZmZfdDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwoK
CgoKCgoKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRf
dDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3Qgbmxp
bmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2Zm
X3Q7CgoKCgoKCgoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3Qg
aWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRy
X3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5
X3Qga2V5X3Q7CgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoK
CiMgNjEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgogCnR5cGVkZWYgX190aW1lX3Qg
dGltZV90OwoKCgoKCgoKCgoKIAp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKCgoKCgoK
CgoKCiAKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKCgoKCgojIDExMiAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMwoKCgoKIyAzNjQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAxMzIgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIyAxNDMgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGlu
dXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vz
ci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODgg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIu
OTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDE0NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIAp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hv
cnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CgoKIAoKIyAxODAgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwoKCiAKCgoKCgoKCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9f
ICgoX19tb2RlX18gKCAgX19RSV9fICkpKSA7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fICggIF9fSElfXyApKSkgOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsKdHlwZWRlZiBpbnQgaW50NjRfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ESV9fICkpKSA7CgoKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyApKSkgOwp0
eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICgg
IF9fSElfXyApKSkgOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fICggIF9fU0lfXyApKSkgOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDY0
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fRElfXyApKSkgOwoKdHlwZWRlZiBpbnQg
cmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkpOwoKCiAKCgoK
CgoKIAojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwog
CgoKCgoKCiMgMzcgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKIyAyMTIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIAojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoK
CiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAzCgoKCgoKCgoKCgoK
CiMgNTYgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAzCgojIDcyICIvdXNyL2luY2x1ZGUv
Yml0cy9zZWxlY3QuaCIgMwoKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoK
IAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsKCiAKCgp0eXBlZGVmIHN0cnVjdAogIHsK
ICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVk
IGxvbmcgaW50KSkpIF07CiAgfSBfX3NpZ3NldF90OwoKCgoKIAoKCgoKCiMgMTI1ICIvdXNyL2lu
Y2x1ZGUvYml0cy9zaWdzZXQuaCIgMwoKIyAzNCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIg
MiAzCgoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKIAoKCiMgMSAiL3Vzci9pbmNs
dWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCiMgNjEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoK
IyA3MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDg0ICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAzCgoKCiMgOTYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgogCgpzdHJ1Y3QgdGlt
ZXNwZWMKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CQkgCiAgICBsb25nIGludCB0dl9uc2VjOwkJ
IAogIH07CgoKCgoKIyAzNjQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA0NCAiL3Vzci9p
bmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyA1NyAiL3Vzci9pbmNsdWRlL2JpdHMvdGlt
ZS5oIiAzCgoKCgoKCgoKIAoKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7
CQkgCiAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CSAKICB9OwoKCiMgNDYgIi91c3IvaW5jbHVk
ZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgp0eXBlZGVmIF9fc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7
CgoKCgogCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwoKIAoKCgoKIAp0eXBlZGVmIHN0cnVj
dAogIHsKICAgICAKCgoKCgogICAgX19mZF9tYXNrIF9fZmRzX2JpdHNbMTAyNCAgLyAoOCAqIHNp
emVvZiAoX19mZF9tYXNrKSkgXTsKCgogIH0gZmRfc2V0OwoKIAoKCgogCnR5cGVkZWYgX19mZF9t
YXNrIGZkX21hc2s7CgogCgoKCgogCgoKCgoKCmV4dGVybiAiQyIgeyAKCiAKCgoKCmV4dGVybiBp
bnQgc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAoJCSAg
IGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAoJCSAgIGZkX3NldCAqX19yZXN0cmljdCBf
X2V4Y2VwdGZkcywKCQkgICBzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpIHRo
cm93ICgpIDsKCiMgMTE2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCgoKfSAKCgojIDIx
NSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy9zeXNtYWNyb3MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgNDcg
Ii91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDMKCgoKIyAyMTggIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMiAzCgoKCgoKCgoKCiAKCgp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7
CSAgCgoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7ICAKCgoKdHlwZWRlZiBfX2Zz
ZmlsY250X3QgZnNmaWxjbnRfdDsgIAoKCiMgMjU0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDMKCgoKCgoKCgp9IAoKCiMgMzkwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCiAKCgoK
IApleHRlcm4gbG9uZyBpbnQgcmFuZG9tICh2b2lkKSB0aHJvdyAoKSA7CgogCmV4dGVybiB2b2lk
IHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIHRocm93ICgpIDsKCiAKCgoKZXh0ZXJuIGNo
YXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKCQkJ
c2l6ZV90IF9fc3RhdGVsZW4pIHRocm93ICgpIDsKCiAKCmV4dGVybiBjaGFyICpzZXRzdGF0ZSAo
Y2hhciAqX19zdGF0ZWJ1ZikgdGhyb3cgKCkgOwoKCgogCgoKCnN0cnVjdCByYW5kb21fZGF0YQog
IHsKICAgIGludDMyX3QgKmZwdHI7CQkgCiAgICBpbnQzMl90ICpycHRyOwkJIAogICAgaW50MzJf
dCAqc3RhdGU7CQkgCiAgICBpbnQgcmFuZF90eXBlOwkJIAogICAgaW50IHJhbmRfZGVnOwkJIAog
ICAgaW50IHJhbmRfc2VwOwkJIAogICAgaW50MzJfdCAqZW5kX3B0cjsJCSAKICB9OwoKZXh0ZXJu
IGludCByYW5kb21fciAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAoJCSAg
ICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgOwoKZXh0ZXJuIGludCBz
cmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYp
IHRocm93ICgpIDsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQs
IGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKCQkJc2l6ZV90IF9fc3RhdGVsZW4sCgkJCXN0
cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCkgOwoKZXh0ZXJuIGlu
dCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCgkJICAgICAgIHN0cnVj
dCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCkgOwoKCgoKIApleHRlcm4g
aW50IHJhbmQgKHZvaWQpIHRocm93ICgpIDsKIApleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQg
aW50IF9fc2VlZCkgdGhyb3cgKCkgOwoKCiAKZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGlu
dCAqX19zZWVkKSB0aHJvdyAoKSA7CgoKCgogCgogCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9p
ZCkgdGhyb3cgKCkgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBf
X3hzdWJpWzNdKSB0aHJvdyAoKSA7CgogCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSB0
aHJvdyAoKSA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194
c3ViaVszXSkgdGhyb3cgKCkgOwoKIApleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgdGhy
b3cgKCkgOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1
YmlbM10pIHRocm93ICgpIDsKCiAKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVk
dmFsKSB0aHJvdyAoKSA7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWdu
ZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgdGhyb3cgKCkgOwpleHRlcm4gdm9pZCBsY29uZzQ4
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgdGhyb3cgKCkgOwoKCiAKCgpzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsJIAogICAgdW5z
aWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107ICAKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2M7
CSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2luaXQ7CSAKICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgX19hOwkgCiAgfTsKCiAKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9f
cmVzdWx0KSB0aHJvdyAoKSA7CmV4dGVybiBpbnQgZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBp
bnQgX194c3ViaVszXSwKCQkgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmZmVyLAoJCSAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgOwoK
IApleHRlcm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBf
X2J1ZmZlciwKCQkgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkg
OwpleHRlcm4gaW50IG5yYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJ
ICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkgICAgICBs
b25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgOwoKIApleHRlcm4gaW50IG1y
YW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkgICAg
ICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgOwpleHRlcm4gaW50IGpy
YW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJICAgICAgc3RydWN0IGRy
YW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkgICAgICBsb25nIGludCAqX19yZXN0
cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgOwoKIApleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBp
bnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICB0aHJvdyAo
KSA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNd
LAoJCSAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIHRocm93ICgpIDsKCmV4dGVy
biBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKCQkgICAgICBz
dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCkgOwoKCgoKCgoKIApleHRlcm4g
dm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSB0aHJvdyAoKSAgIDsKIApleHRlcm4gdm9pZCAq
Y2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICB0aHJvdyAoKSAgIDsK
CgoKIAoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSB0
aHJvdyAoKSAgIDsKIApleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cikgdGhyb3cgKCkgOwoK
CiAKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSB0aHJvdyAoKSA7CgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vz
ci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoK
CgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
bGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1
LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVm
LmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjUgIi91c3Iv
aW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKIAoKCiAKZXh0ZXJuIHZvaWQg
KmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgOwoKCgoKCn0gCgoKIyA1NDYgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgogCmV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBf
X3NpemUpIHRocm93ICgpICAgOwoKCgoKCgoKCiAKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIHRo
cm93ICgpICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKIApleHRlcm4gaW50IGF0
ZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSB0aHJvdyAoKSA7CgoKIAoKZXh0ZXJuIGludCBv
bl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQg
Kl9fYXJnKQogICAgIHRocm93ICgpIDsKCgogCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3Rh
dHVzKSB0aHJvdyAoKSAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgoKCiAK
ZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpIDsKCiAK
CmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJv
dyAoKSA7CgoKIAogCgpleHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIHRocm93ICgp
IDsKCgoKIAoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0
IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCiAgICAgdGhyb3cgKCkgOwoKIApleHRlcm4g
aW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCkgOwoKCgogCgoKZXh0
ZXJuIGludCBjbGVhcmVudiAodm9pZCkgdGhyb3cgKCkgOwoKCgoKIAoKCgpleHRlcm4gY2hhciAq
bWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKSA7CgogCgoKCgoKZXh0ZXJuIGludCBt
a3N0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKSA7CgoKCgoKCgoKCgoKCgogCgoKCgpl
eHRlcm4gY2hhciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCkgOwoKCgogCmV4
dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgdGhyb3cgKCkgOwoKCgoK
CgoKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbmFtZSwKCQkgICAgICAgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSB0aHJvdyAo
KSA7CgoKCiAKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQgKiwg
X19jb25zdCB2b2lkICopOwoKCgoKCgogCgpleHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2
b2lkICpfX2tleSwgX19jb25zdCB2b2lkICpfX2Jhc2UsCgkJICAgICAgc2l6ZV90IF9fbm1lbWIs
IHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKIAoKZXh0ZXJuIHZvaWQg
cXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJICAg
X19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKIApleHRlcm4gaW50IGFicyAoaW50IF9feCkgdGhy
b3cgKCkgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMg
KGxvbmcgaW50IF9feCkgdGhyb3cgKCkgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
CgoKIAoKIApleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAg
dGhyb3cgKCkgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBsZGl2
IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rlbm9tKQogICAgIHRocm93ICgpICBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgoKIAoKCiAKCgpleHRlcm4gY2hhciAqZWN2
dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQs
CgkJICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCkgOwoKIAoKCmV4dGVybiBjaGFy
ICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19k
ZWNwdCwKCQkgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJvdyAoKSA7CgogCgoKZXh0ZXJu
IGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSB0
aHJvdyAoKSA7CgoKCiAKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsCgkJICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJp
Y3QgX19zaWduKSB0aHJvdyAoKSA7CmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3VibGUgX192
YWx1ZSwgaW50IF9fbmRpZ2l0LAoJCSAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpf
X3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCkgOwpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcgZG91
YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpIDsKCgogCgpl
eHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jl
c3RyaWN0IF9fZGVjcHQsCgkJICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0
cmljdCBfX2J1ZiwKCQkgICBzaXplX3QgX19sZW4pIHRocm93ICgpIDsKZXh0ZXJuIGludCBmY3Z0
X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0
LAoJCSAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCgkJ
ICAgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKSA7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91
YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQs
IGludCAqX19yZXN0cmljdCBfX3NpZ24sCgkJICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNp
emVfdCBfX2xlbikgdGhyb3cgKCkgOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9f
dmFsdWUsIGludCBfX25kaWdpdCwKCQkgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAq
X19yZXN0cmljdCBfX3NpZ24sCgkJICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBf
X2xlbikgdGhyb3cgKCkgOwoKCgoKIAoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25zdCBjaGFyICpf
X3MsIHNpemVfdCBfX24pIHRocm93ICgpIDsKIAoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19wd2MsCgkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6
ZV90IF9fbikgdGhyb3cgKCkgOwogCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19zLCB3Y2hh
cl90IF9fd2NoYXIpIHRocm93ICgpIDsKCgogCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgKHdjaGFy
X3QgKl9fcmVzdHJpY3QgIF9fcHdjcywKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywg
c2l6ZV90IF9fbikgdGhyb3cgKCkgOwogCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLAoJCQlfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXpl
X3QgX19uKQogICAgIHRocm93ICgpIDsKCgoKIAoKCgpleHRlcm4gaW50IHJwbWF0Y2ggKF9fY29u
c3QgY2hhciAqX19yZXNwb25zZSkgdGhyb3cgKCkgOwoKCgojIDgxMSAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzCgoKCgoKCgoKCiAKCgoKCgoKIyA4NDIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MwoKCiMgODUyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKIAoKCmV4dGVybiBpbnQgZ2V0
bG9hZGF2ZyAoZG91YmxlIF9fbG9hZGF2Z1tdLCBpbnQgX19uZWxlbSkgdGhyb3cgKCkgOwoKCgoK
Cn0gCgoKIyAxNSAicHAyXzRfdG9iZW5raW4uY3BwIiAyCgojIDEgIi91c3IvaW5jbHVkZS9tYXRo
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgogCgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKIAoKIyA4MSAiL3Vzci9pbmNsdWRlL2JpdHMvaHVn
ZV92YWwuaCIgMwoKIyAzMyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKIAoKCgogCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGRlZi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDQxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoZGVmLmgiIDMKCiMgNDAgIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDIgMwoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhjYWxscy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFjb3MgICAgICAgICAg
KGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Fj
b3MgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIGFzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBl
eHRlcm4gICBkb3VibGUgICAgICAgICBfX2FzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0
aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW4gICAgICAgICAgKGRv
dWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2F0YW4g
ICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIGF0YW4yICAgICAgICAgIChkb3VibGUgIF9feSwgZG91YmxlICBfX3gpICAgIHRo
cm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXRhbjIgICAgICAgICAgKGRvdWJs
ZSAgX195LCBkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBkb3VibGUg
ICAgICAgICAgY29zICAgICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX19jb3MgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAo
KSAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHNpbiAgICAgICAgICAoZG91YmxlICBf
X3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2luICAgICAgICAg
IChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg
ICB0YW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3Vi
bGUgICAgICAgICBfX3RhbiAgICAgICAgICAoZG91YmxlICBfX3gpICAgIHRocm93ICgpICAgIDsK
CgoKCgoKCiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvc2ggICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Nvc2ggICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIHNpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX3NpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAo
KSAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRhbmggICAgICAgICAgKGRvdWJsZSAg
X194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3RhbmggICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAg
ICAgICAgYWNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX2Fjb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cg
KCkgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhc2luaCAgICAgICAgICAoZG91Ymxl
ICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNpbmggICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGF0YW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX19hdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIHRocm93
ICgpICAgIDsKCgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBleHAgICAgICAgICAgKGRv
dWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2V4cCAg
ICAgICAgICAoZG91YmxlICBfX3gpICAgIHRocm93ICgpICAgIDsKCgoKCgoKCgogCmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICBmcmV4cCAgICAgICAgICAoZG91YmxlICBfX3gsIGludCAqX19leHBv
bmVudCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19mcmV4cCAgICAg
ICAgICAoZG91YmxlICBfX3gsIGludCAqX19leHBvbmVudCkgICAgdGhyb3cgKCkgICAgOwoKIApl
eHRlcm4gICBkb3VibGUgICAgICAgICAgbGRleHAgICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQg
X19leHBvbmVudCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sZGV4
cCAgICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX2V4cG9uZW50KSAgICB0aHJvdyAoKSAgICA7
CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBsb2cgICAgICAgICAgKGRvdWJsZSAgX194KSAg
ICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZyAgICAgICAgICAoZG91
YmxlICBfX3gpICAgIHRocm93ICgpICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxv
ZzEwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19sb2cxMCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIHRocm93ICgpICAgIDsK
CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIG1vZGYgICAgICAgICAgKGRvdWJsZSAgX194LCBk
b3VibGUgICpfX2lwdHIpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f
bW9kZiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgKl9faXB0cikgICAgdGhyb3cgKCkg
ICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGV4cG0xICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19leHBtMSAgICAg
ICAgICAoZG91YmxlICBfX3gpICAgIHRocm93ICgpICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGxvZzFwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX19sb2cxcCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIHRocm93
ICgpICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxvZ2IgICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZ2IgICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CgoKCgoKCgoKCgoKIAoKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgcG93ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBf
X3kpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fcG93ICAgICAgICAg
IChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIHRocm93ICgpICAgIDsKCiAKZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgIHNxcnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAg
OyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NxcnQgICAgICAgICAgKGRvdWJsZSAgX194KSAg
ICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgaHlwb3QgICAgICAg
ICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91
YmxlICAgICAgICAgX19oeXBvdCAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAg
ICB0aHJvdyAoKSAgICA7CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNicnQgICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X2NicnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CgoKCiAKCiAKZXh0
ZXJuICAgZG91YmxlICAgICAgICAgIGNlaWwgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0aHJv
dyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NlaWwgICAgICAgICAgKGRvdWJsZSAg
X194KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmYWJzICAg
ICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICggICAgKF9f
Y29uc3RfXykgICk7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZmFicyAgICAgICAgICAoZG91
YmxlICBfX3gpICAgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICAp
ICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmbG9vciAgICAgICAgICAoZG91YmxlICBf
X3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZmxvb3IgICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAg
ICAgICBmbW9kICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIHRocm93ICgp
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZm1vZCAgICAgICAgICAoZG91YmxlICBfX3gs
IGRvdWJsZSAgX195KSAgICB0aHJvdyAoKSAgICA7CgoKIAoKZXh0ZXJuICBpbnQgICAgIF9faXNp
bmYgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgogCmV4dGVybiAgaW50ICAgICBfX2Zpbml0ZSAgICAgIChkb3VibGUgIF9fdmFs
dWUpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCgpleHRlcm4g
IGludCAgICAgaXNpbmYgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgdGhyb3cgKCkgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgaW50ICAgICBmaW5pdGUgICAgICAoZG91
YmxlICBfX3ZhbHVlKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cgog
CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBkcmVtICAgICAgICAgIChkb3VibGUgIF9feCwgZG91
YmxlICBfX3kpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZHJlbSAg
ICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICB0aHJvdyAoKSAgICA7CgoKIApl
eHRlcm4gICBkb3VibGUgICAgICAgICAgc2lnbmlmaWNhbmQgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NpZ25pZmljYW5kICAg
ICAgICAgIChkb3VibGUgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKCgogCmV4dGVybiAgIGRvdWJs
ZSAgICAgICAgICBjb3B5c2lnbiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAg
ICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX19jb3B5c2lnbiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAg
X195KSAgICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoK
CgoKCgoKCiAKZXh0ZXJuICBpbnQgICAgIF9faXNuYW4gICAgICAoZG91YmxlICBfX3ZhbHVlKSAg
dGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gIGludCAg
ICAgaXNuYW4gICAgICAoZG91YmxlICBfX3ZhbHVlKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBqMCAgICAgICAgICAo
ZG91YmxlICkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19qMCAgICAg
ICAgICAoZG91YmxlICkgICAgdGhyb3cgKCkgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAg
ajEgICAgICAgICAgKGRvdWJsZSApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9fajEgICAgICAgICAgKGRvdWJsZSApICAgIHRocm93ICgpICAgIDsKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIGpuICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgIHRocm93ICgpICA7IGV4
dGVybiAgIGRvdWJsZSAgICAgICAgIF9fam4gICAgICAgICAgKGludCwgZG91YmxlICkgICAgdGhy
b3cgKCkgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgeTAgICAgICAgICAgKGRvdWJsZSAp
ICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9feTAgICAgICAgICAgKGRv
dWJsZSApICAgIHRocm93ICgpICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHkxICAgICAg
ICAgIChkb3VibGUgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3kx
ICAgICAgICAgIChkb3VibGUgKSAgICB0aHJvdyAoKSAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAg
ICAgICB5biAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX3luICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgIHRocm93ICgpICAg
IDsKCgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGVyZiAgICAgICAgICAoZG91YmxlICkg
ICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19lcmYgICAgICAgICAgKGRv
dWJsZSApICAgIHRocm93ICgpICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGVyZmMgICAg
ICAgICAgKGRvdWJsZSApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f
ZXJmYyAgICAgICAgICAoZG91YmxlICkgICAgdGhyb3cgKCkgICAgOwpleHRlcm4gICBkb3VibGUg
ICAgICAgICAgbGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX2xnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgdGhyb3cgKCkg
ICAgOwoKCgoKCgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZ2FtbWEgICAgICAgICAgKGRv
dWJsZSApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZ2FtbWEgICAg
ICAgICAgKGRvdWJsZSApICAgIHRocm93ICgpICAgIDsKCgoKIAoKCmV4dGVybiAgIGRvdWJsZSAg
ICAgICAgICBsZ2FtbWFfciAgICAgICAgICAgICAgKGRvdWJsZSAsIGludCAqX19zaWduZ2FtcCkg
ICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sZ2FtbWFfciAgICAgICAg
ICAgICAgKGRvdWJsZSAsIGludCAqX19zaWduZ2FtcCkgICAgdGhyb3cgKCkgICAgOwoKCgoKIAoK
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHJpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICB0
aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3JpbnQgICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBuZXh0
YWZ0ZXIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgdGhyb3cgKCkgICBf
X2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGRvdWJsZSAgICAgICAg
IF9fbmV4dGFmdGVyICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIHRocm93
ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCgogCmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICByZW1haW5kZXIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUg
IF9feSkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yZW1haW5kZXIg
ICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgdGhyb3cgKCkgICAgOwoKCiAK
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHNjYWxiICAgICAgICAgIChkb3VibGUgIF9feCwgZG91
YmxlICBfX24pICAgIHRocm93ICgpICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2NhbGIg
ICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9fbikgICAgdGhyb3cgKCkgICAgOwoKCgog
CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzY2FsYm4gICAgICAgICAgKGRvdWJsZSAgX194LCBp
bnQgX19uKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NjYWxibiAg
ICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX24pICAgIHRocm93ICgpICAgIDsKCgogCmV4dGVy
biAgIGludCAgICAgICAgaWxvZ2IgICAgICAgIChkb3VibGUgIF9feCkgICB0aHJvdyAoKSAgOyBl
eHRlcm4gICBpbnQgICAgICAgIF9faWxvZ2IgICAgICAgIChkb3VibGUgIF9feCkgICB0aHJvdyAo
KSAgIDsKCgojIDMzMyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKCiMgNjMgIi91
c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBhY29zZiAg
ICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAg
ICBfX2Fjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgYXNpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgp
ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hc2luZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGF0YW5mICAgICAgICAg
KGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRh
bmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKIApleHRlcm4gICBmbG9h
dCAgICAgICAgICBhdGFuMmYgICAgICAgICAoZmxvYXQgICBfX3ksIGZsb2F0ICAgX194KSAgICB0
aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRhbjJmICAgICAgICAgKGZsb2F0
ICAgX195LCBmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBmbG9hdCAg
ICAgICAgICBjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4g
ICBmbG9hdCAgICAgICAgIF9fY29zZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkg
ICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNpbmYgICAgICAgICAoZmxvYXQgICBfX3gp
ICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19zaW5mICAgICAgICAgKGZs
b2F0ICAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgdGFu
ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAg
ICAgICBfX3RhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKCgoKCgoK
CiAKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gp
ICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19jb3NoZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNp
bmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fc2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKIApl
eHRlcm4gICBmbG9hdCAgICAgICAgICB0YW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhy
b3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3RhbmhmICAgICAgICAgKGZsb2F0ICAg
X194KSAgICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBhY29zaGYg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAg
ICAgX19hY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKIApleHRl
cm4gICBmbG9hdCAgICAgICAgICBhc2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93
ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hc2luaGYgICAgICAgICAoZmxvYXQgICBf
X3gpICAgIHRocm93ICgpICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBhdGFuaGYgICAg
ICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAg
X19hdGFuaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKCgogCgogCmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIGV4cGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93
ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19leHBmICAgICAgICAgKGZsb2F0ICAgX194
KSAgICB0aHJvdyAoKSAgICA7CgoKCgoKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmcmV4
cGYgICAgICAgICAoZmxvYXQgICBfX3gsIGludCAqX19leHBvbmVudCkgICAgdGhyb3cgKCkgIDsg
ZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2ZyZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50
ICpfX2V4cG9uZW50KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg
IGxkZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fZXhwb25lbnQpICAgIHRocm93ICgp
ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sZGV4cGYgICAgICAgICAoZmxvYXQgICBfX3gs
IGludCBfX2V4cG9uZW50KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGxvZ2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZs
b2F0ICAgICAgICAgX19sb2dmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgICA7
CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxvZzEwZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZzEwZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBt
b2RmZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICAqX19pcHRyKSAgICB0aHJvdyAoKSAg
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbW9kZmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZs
b2F0ICAgKl9faXB0cikgICAgdGhyb3cgKCkgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAg
ICAgZXhwbTFmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBm
bG9hdCAgICAgICAgIF9fZXhwbTFmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAg
ICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxvZzFwZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZzFwZiAgICAgICAg
IChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAg
ICBsb2diZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX2xvZ2JmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgICA7
CgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBwb3dmICAgICAgICAgKGZs
b2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAg
ICAgICBfX3Bvd2YgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICB0aHJvdyAo
KSAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNxcnRmICAgICAgICAgKGZsb2F0ICAg
X194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc3FydGYgICAgICAg
ICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGh5cG90ZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIHRocm93ICgp
ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19oeXBvdGYgICAgICAgICAoZmxvYXQgICBfX3gs
IGZsb2F0ICAgX195KSAgICB0aHJvdyAoKSAgICA7CgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAg
ICAgY2JydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZs
b2F0ICAgICAgICAgX19jYnJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAg
OwoKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNlaWxmICAgICAgICAgKGZsb2F0ICAg
X194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY2VpbGYgICAgICAg
ICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAg
ICAgZmFic2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgX19hdHRyaWJ1dGVf
XyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZmFic2YgICAg
ICAgICAoZmxvYXQgICBfX3gpICAgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2Nv
bnN0X18pICApICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZsb29yZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2Zsb29y
ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBmbG9h
dCAgICAgICAgICBmbW9kZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIHRo
cm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19mbW9kZiAgICAgICAgIChmbG9hdCAg
IF9feCwgZmxvYXQgICBfX3kpICAgIHRocm93ICgpICAgIDsKCgogCgpleHRlcm4gIGludCAgICBf
X2lzaW5mZiAgICAgKGZsb2F0ICAgX192YWx1ZSkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICBfX2Zpbml0ZWYgICAgIChmbG9hdCAgIF9f
dmFsdWUpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCgpleHRl
cm4gIGludCAgICBpc2luZmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICB0aHJvdyAoKSAgIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgZmluaXRlZiAgICAgKGZs
b2F0ICAgX192YWx1ZSkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBkcmVtZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxv
YXQgICBfX3kpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19kcmVtZiAg
ICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIHRocm93ICgpICAgIDsKCgogCmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIHNpZ25pZmljYW5kZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NpZ25pZmljYW5kZiAgICAg
ICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAg
ICAgICAgIGNvcHlzaWduZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIHRo
cm93ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fY29weXNpZ25mICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkg
ICAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCgoK
CgogCmV4dGVybiAgaW50ICAgIF9faXNuYW5mICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgdGhyb3cg
KCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gIGludCAgICBpc25h
bmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajBmICAgICAgICAgKGZsb2F0ICAp
ICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19qMGYgICAgICAgICAoZmxv
YXQgICkgICAgdGhyb3cgKCkgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICBqMWYgICAgICAg
ICAoZmxvYXQgICkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2oxZiAg
ICAgICAgIChmbG9hdCAgKSAgICB0aHJvdyAoKSAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAg
IGpuZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX19qbmYgICAgICAgICAoaW50LCBmbG9hdCAgKSAgICB0aHJvdyAoKSAgICA7CmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIHkwZiAgICAgICAgIChmbG9hdCAgKSAgICB0aHJvdyAoKSAg
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9feTBmICAgICAgICAgKGZsb2F0ICApICAgIHRocm93
ICgpICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgeTFmICAgICAgICAgKGZsb2F0ICApICAg
IHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX195MWYgICAgICAgICAoZmxvYXQg
ICkgICAgdGhyb3cgKCkgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICB5bmYgICAgICAgICAo
aW50LCBmbG9hdCAgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9feW5m
ICAgICAgICAgKGludCwgZmxvYXQgICkgICAgdGhyb3cgKCkgICAgOwoKCgoKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICBlcmZmICAgICAgICAgKGZsb2F0ICApICAgIHRocm93ICgpICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19lcmZmICAgICAgICAgKGZsb2F0ICApICAgIHRocm93ICgpICAg
IDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZXJmY2YgICAgICAgICAoZmxvYXQgICkgICAgdGhy
b3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2VyZmNmICAgICAgICAgKGZsb2F0ICAp
ICAgIHRocm93ICgpICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbGdhbW1hZiAgICAgICAg
IChmbG9hdCAgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGdhbW1h
ZiAgICAgICAgIChmbG9hdCAgKSAgICB0aHJvdyAoKSAgICA7CgoKCgoKCgogCmV4dGVybiAgIGZs
b2F0ICAgICAgICAgIGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAgICB0aHJvdyAoKSAgOyBleHRl
cm4gICBmbG9hdCAgICAgICAgIF9fZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgIHRocm93ICgp
ICAgIDsKCgoKIAoKCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxnYW1tYWZfciAgICAgICAgICAg
IChmbG9hdCAgLCBpbnQgKl9fc2lnbmdhbXApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX19sZ2FtbWFmX3IgICAgICAgICAgICAoZmxvYXQgICwgaW50ICpfX3NpZ25nYW1w
KSAgICB0aHJvdyAoKSAgICA7CgoKCgogCgpleHRlcm4gICBmbG9hdCAgICAgICAgICByaW50ZiAg
ICAgICAgIChmbG9hdCAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAg
ICBfX3JpbnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVy
biAgIGZsb2F0ICAgICAgICAgIG5leHRhZnRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0
ICAgX195KSAgICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsg
ZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX25leHRhZnRlcmYgICAgICAgICAoZmxvYXQgICBfX3gs
IGZsb2F0ICAgX195KSAgICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9f
KSAgKSAgOwoKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICByZW1haW5kZXJmICAgICAgICAg
KGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX3JlbWFpbmRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAg
ICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBzY2FsYmYgICAgICAg
ICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX19uKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fc2NhbGJmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9fbikgICAg
dGhyb3cgKCkgICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNjYWxibmYgICAgICAg
ICAoZmxvYXQgICBfX3gsIGludCBfX24pICAgIHRocm93ICgpICA7IGV4dGVybiAgIGZsb2F0ICAg
ICAgICAgX19zY2FsYm5mICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19uKSAgICB0aHJvdyAo
KSAgICA7CgoKIApleHRlcm4gICBpbnQgICAgICAgaWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkg
ICB0aHJvdyAoKSAgOyBleHRlcm4gICBpbnQgICAgICAgX19pbG9nYmYgICAgICAgKGZsb2F0ICAg
X194KSAgIHRocm93ICgpICAgOwoKCiMgMzMzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMu
aCIgMwoKIyA4MiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgoKIAoKCgoKCgoKCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgICBhY29zbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkg
IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Fjb3NsICAgICAgICAgKGxvbmcgZG91
YmxlICAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICAgYXNpbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19hc2lubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f
eCkgICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGF0YW5s
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25n
IGRvdWJsZSAgICAgICAgIF9fYXRhbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRo
cm93ICgpICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhdGFuMmwgICAgICAg
ICAobG9uZyBkb3VibGUgICBfX3ksIGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgOyBl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fYXRhbjJsICAgICAgICAgKGxvbmcgZG91Ymxl
ICAgX195LCBsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICBjb3NsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0
aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fY29zbCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgIHNpbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICA7
IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19zaW5sICAgICAgICAgKGxvbmcgZG91Ymxl
ICAgX194KSAgICB0aHJvdyAoKSAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg
dGFubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAg
bG9uZyBkb3VibGUgICAgICAgICBfX3RhbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAg
IHRocm93ICgpICAgIDsKCgoKCgoKCiAKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg
Y29zaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19jb3NobCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkg
ICAgdGhyb3cgKCkgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHNpbmhsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgIF9fc2luaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93
ICgpICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICB0YW5obCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg
ICAgICBfX3RhbmhsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgICA7
CgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhY29zaGwgICAgICAgICAobG9uZyBk
b3VibGUgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAg
X19hY29zaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICAgIDsKIApl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhc2luaGwgICAgICAgICAobG9uZyBkb3VibGUg
ICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19hc2lu
aGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICAgIDsKIApleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgICBhdGFuaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gp
ICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19hdGFuaGwgICAg
ICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICAgIDsKCgogCgogCmV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgIGV4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAg
IHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19leHBsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgICA7CgoKCgoKCgoKIApleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICBmcmV4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGlu
dCAqX19leHBvbmVudCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICBfX2ZyZXhwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50ICpfX2V4cG9uZW50KSAg
ICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGxkZXhwbCAg
ICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50IF9fZXhwb25lbnQpICAgIHRocm93ICgpICA7
IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19sZGV4cGwgICAgICAgICAobG9uZyBkb3Vi
bGUgICBfX3gsIGludCBfX2V4cG9uZW50KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGxv
bmcgZG91YmxlICAgICAgICAgIGxvZ2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRo
cm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19sb2dsICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgIGxvZzEwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkg
IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xvZzEwbCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAg
ICAgICBtb2RmbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICAqX19p
cHRyKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fbW9kZmwg
ICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgKl9faXB0cikgICAgdGhy
b3cgKCkgICAgOwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZXhwbTFsICAgICAg
ICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgIF9fZXhwbTFsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAo
KSAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGxvZzFwbCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg
ICAgICBfX2xvZzFwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAg
OwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsb2dibCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBf
X2xvZ2JsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgICA7CgoKCgoK
CgoKCgoKIAoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBwb3dsICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgdGhyb3cgKCkgIDsgZXh0ZXJu
ICAgbG9uZyBkb3VibGUgICAgICAgICBfX3Bvd2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gs
IGxvbmcgZG91YmxlICAgX195KSAgICB0aHJvdyAoKSAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgIHNxcnRsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAo
KSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc3FydGwgICAgICAgICAobG9uZyBk
b3VibGUgICBfX3gpICAgIHRocm93ICgpICAgIDsKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgIGh5cG90bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBf
X3kpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19oeXBvdGwg
ICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICB0aHJvdyAo
KSAgICA7CgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY2JydGwgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgX19jYnJ0bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAg
OwoKCgogCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGNlaWxsICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194KSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAg
ICAgIF9fY2VpbGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIHRocm93ICgpICAgIDsK
CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZmFic2wgICAgICAgICAobG9uZyBkb3Vi
bGUgICBfX3gpICAgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICAp
OyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZmFic2wgICAgICAgICAobG9uZyBkb3Vi
bGUgICBfX3gpICAgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICAp
ICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGZsb29ybCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICBfX2Zsb29ybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoK
IApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBmbW9kbCAgICAgICAgIChsb25nIGRvdWJs
ZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcg
ZG91YmxlICAgICAgICAgX19mbW9kbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBk
b3VibGUgICBfX3kpICAgIHRocm93ICgpICAgIDsKCgogCgpleHRlcm4gIGludCAgICBfX2lzaW5m
bCAgICAgKGxvbmcgZG91YmxlICAgX192YWx1ZSkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICBfX2Zpbml0ZWwgICAgIChsb25nIGRvdWJs
ZSAgIF9fdmFsdWUpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgog
CgpleHRlcm4gIGludCAgICBpc2luZmwgICAgIChsb25nIGRvdWJsZSAgIF9fdmFsdWUpICB0aHJv
dyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgZmlu
aXRlbCAgICAgKGxvbmcgZG91YmxlICAgX192YWx1ZSkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBkcmVtbCAg
ICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIHRocm93ICgp
ICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19kcmVtbCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIHRocm93ICgpICAgIDsKCgogCmV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgIHNpZ25pZmljYW5kbCAgICAgICAgIChsb25nIGRvdWJs
ZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3Np
Z25pZmljYW5kbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgICAgOwoK
CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGNvcHlzaWdubCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIHRocm93ICgpICAgX19hdHRyaWJ1
dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9f
Y29weXNpZ25sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkg
ICAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCgoK
CgogCmV4dGVybiAgaW50ICAgIF9faXNuYW5sICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAg
dGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gIGludCAg
ICBpc25hbmwgICAgIChsb25nIGRvdWJsZSAgIF9fdmFsdWUpICB0aHJvdyAoKSAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgajBs
ICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgX19qMGwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgdGhyb3cgKCkgICAg
OwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBqMWwgICAgICAgICAobG9uZyBkb3VibGUg
ICkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2oxbCAgICAg
ICAgIChsb25nIGRvdWJsZSAgKSAgICB0aHJvdyAoKSAgICA7CmV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgIGpubCAgICAgICAgIChpbnQsIGxvbmcgZG91YmxlICApICAgIHRocm93ICgpICA7
IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19qbmwgICAgICAgICAoaW50LCBsb25nIGRv
dWJsZSAgKSAgICB0aHJvdyAoKSAgICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHkw
bCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgIF9feTBsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIHRocm93ICgpICAg
IDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgeTFsICAgICAgICAgKGxvbmcgZG91Ymxl
ICApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX195MWwgICAg
ICAgICAobG9uZyBkb3VibGUgICkgICAgdGhyb3cgKCkgICAgOwpleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgICB5bmwgICAgICAgICAoaW50LCBsb25nIGRvdWJsZSAgKSAgICB0aHJvdyAoKSAg
OyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9feW5sICAgICAgICAgKGludCwgbG9uZyBk
b3VibGUgICkgICAgdGhyb3cgKCkgICAgOwoKCgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAg
ICAgICBlcmZsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIHRocm93ICgpICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19lcmZsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIHRo
cm93ICgpICAgIDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZXJmY2wgICAgICAgICAo
bG9uZyBkb3VibGUgICkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICBfX2VyZmNsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIHRocm93ICgpICAgIDsKZXh0ZXJu
ICAgbG9uZyBkb3VibGUgICAgICAgICAgbGdhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAg
ICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fbGdhbW1hbCAgICAg
ICAgIChsb25nIGRvdWJsZSAgKSAgICB0aHJvdyAoKSAgICA7CgoKCgoKCgogCmV4dGVybiAgIGxv
bmcgZG91YmxlICAgICAgICAgIGdhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICB0aHJv
dyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZ2FtbWFsICAgICAgICAgKGxv
bmcgZG91YmxlICApICAgIHRocm93ICgpICAgIDsKCgoKIAoKCmV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgIGxnYW1tYWxfciAgICAgICAgICAgIChsb25nIGRvdWJsZSAgLCBpbnQgKl9fc2ln
bmdhbXApICAgIHRocm93ICgpICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19sZ2Ft
bWFsX3IgICAgICAgICAgICAobG9uZyBkb3VibGUgICwgaW50ICpfX3NpZ25nYW1wKSAgICB0aHJv
dyAoKSAgICA7CgoKCgogCgpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICByaW50bCAgICAg
ICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgdGhyb3cgKCkgIDsgZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICBfX3JpbnRsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICB0aHJvdyAo
KSAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIG5leHRhZnRlcmwgICAgICAg
ICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICB0aHJvdyAoKSAgIF9f
YXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg
ICAgICBfX25leHRhZnRlcmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91Ymxl
ICAgX195KSAgICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAg
OwoKCgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICByZW1haW5kZXJsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgdGhyb3cgKCkgIDsgZXh0
ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3JlbWFpbmRlcmwgICAgICAgICAobG9uZyBkb3Vi
bGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgICBzY2FsYmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gs
IGxvbmcgZG91YmxlICAgX19uKSAgICB0aHJvdyAoKSAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAg
ICAgICAgIF9fc2NhbGJsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAg
IF9fbikgICAgdGhyb3cgKCkgICAgOwoKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAg
IHNjYWxibmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGludCBfX24pICAgIHRocm93ICgp
ICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19zY2FsYm5sICAgICAgICAgKGxvbmcg
ZG91YmxlICAgX194LCBpbnQgX19uKSAgICB0aHJvdyAoKSAgICA7CgoKIApleHRlcm4gICBpbnQg
ICAgICAgaWxvZ2JsICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICB0aHJvdyAoKSAgOyBleHRl
cm4gICBpbnQgICAgICAgX19pbG9nYmwgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgIHRocm93
ICgpICAgOwoKCiMgMzMzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwoKIyA5OSAi
L3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgoKCgoKCgoKCgogCmV4dGVybiBpbnQgc2lnbmdh
bTsKCgoKIAojIDIzNiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCgogCnR5cGVkZWYgZW51bQp7
CiAgX0lFRUVfID0gLTEsCSAKICBfU1ZJRF8sCSAKICBfWE9QRU5fLAkgCiAgX1BPU0lYXywKICBf
SVNPQ18JIAp9IF9MSUJfVkVSU0lPTl9UWVBFOwoKIAoKCmV4dGVybiBfTElCX1ZFUlNJT05fVFlQ
RSBfTElCX1ZFUlNJT047CgoKCgogCgoKCgoKc3RydWN0IF9fZXhjZXB0aW9uCgoKCiAgewogICAg
aW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3VibGUgYXJn
MjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgpleHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBf
X2V4Y2VwdGlvbiAqX19leGMpIHRocm93ICgpOwoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCiAKCgojIDMzOCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCgog
CgoKCgoKCiAKCgoKCgojIDQwOSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCn0gCgoKCiMgMTYg
InBwMl80X3RvYmVua2luLmNwcCIgMgoKCiAKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9HTC9nbC5o
IiAxIDMKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
IyA1OSAiL3Vzci9pbmNsdWRlL0dML2dsLmgiIDMKCiAKCgoKCgoKCgoKCgogCgoKCgoKCmV4dGVy
biAiQyIgewoKCgoKCgoKCgogCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludAlHTGVudW07CnR5
cGVkZWYgdW5zaWduZWQgY2hhcglHTGJvb2xlYW47CnR5cGVkZWYgdW5zaWduZWQgaW50CUdMYml0
ZmllbGQ7CnR5cGVkZWYgdm9pZAkJR0x2b2lkOwp0eXBlZGVmIHNpZ25lZCBjaGFyCUdMYnl0ZTsJ
CSAKdHlwZWRlZiBzaG9ydAkJR0xzaG9ydDsJIAp0eXBlZGVmIGludAkJR0xpbnQ7CQkgCnR5cGVk
ZWYgdW5zaWduZWQgY2hhcglHTHVieXRlOwkgCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQJR0x1c2hv
cnQ7CSAKdHlwZWRlZiB1bnNpZ25lZCBpbnQJR0x1aW50OwkJIAp0eXBlZGVmIGludAkJR0xzaXpl
aTsJIAp0eXBlZGVmIGZsb2F0CQlHTGZsb2F0OwkgCnR5cGVkZWYgZmxvYXQJCUdMY2xhbXBmOwkg
CnR5cGVkZWYgZG91YmxlCQlHTGRvdWJsZTsJIAp0eXBlZGVmIGRvdWJsZQkJR0xjbGFtcGQ7CSAK
CgoKIAoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgoKCgoKIAoKCgoKCgoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCiAKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgog
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgpleHRlcm4gIHZvaWQgICBnbENsZWFySW5kZXgoIEdMZmxvYXQgYyApOwoKZXh0ZXJuICB2
b2lkICAgZ2xDbGVhckNvbG9yKCBHTGNsYW1wZiByZWQsCgkJCSAgR0xjbGFtcGYgZ3JlZW4sCgkJ
CSAgR0xjbGFtcGYgYmx1ZSwKCQkJICBHTGNsYW1wZiBhbHBoYSApOwoKZXh0ZXJuICB2b2lkICAg
Z2xDbGVhciggR0xiaXRmaWVsZCBtYXNrICk7CgpleHRlcm4gIHZvaWQgICBnbEluZGV4TWFzaygg
R0x1aW50IG1hc2sgKTsKCmV4dGVybiAgdm9pZCAgIGdsQ29sb3JNYXNrKCBHTGJvb2xlYW4gcmVk
LCBHTGJvb2xlYW4gZ3JlZW4sCgkJCSBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWFuIGFscGhhICk7
CgpleHRlcm4gIHZvaWQgICBnbEFscGhhRnVuYyggR0xlbnVtIGZ1bmMsIEdMY2xhbXBmIHJlZiAp
OwoKZXh0ZXJuICB2b2lkICAgZ2xCbGVuZEZ1bmMoIEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZh
Y3RvciApOwoKZXh0ZXJuICB2b2lkICAgZ2xMb2dpY09wKCBHTGVudW0gb3Bjb2RlICk7CgpleHRl
cm4gIHZvaWQgICBnbEN1bGxGYWNlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xG
cm9udEZhY2UoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gIHZvaWQgICBnbFBvaW50U2l6ZSggR0xm
bG9hdCBzaXplICk7CgpleHRlcm4gIHZvaWQgICBnbExpbmVXaWR0aCggR0xmbG9hdCB3aWR0aCAp
OwoKZXh0ZXJuICB2b2lkICAgZ2xMaW5lU3RpcHBsZSggR0xpbnQgZmFjdG9yLCBHTHVzaG9ydCBw
YXR0ZXJuICk7CgpleHRlcm4gIHZvaWQgICBnbFBvbHlnb25Nb2RlKCBHTGVudW0gZmFjZSwgR0xl
bnVtIG1vZGUgKTsKCmV4dGVybiAgdm9pZCAgIGdsUG9seWdvbk9mZnNldCggR0xmbG9hdCBmYWN0
b3IsIEdMZmxvYXQgdW5pdHMgKTsKCmV4dGVybiAgdm9pZCAgIGdsUG9seWdvblN0aXBwbGUoIGNv
bnN0IEdMdWJ5dGUgKm1hc2sgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0UG9seWdvblN0aXBwbGUo
IEdMdWJ5dGUgKm1hc2sgKTsKCmV4dGVybiAgdm9pZCAgIGdsRWRnZUZsYWcoIEdMYm9vbGVhbiBm
bGFnICk7CgpleHRlcm4gIHZvaWQgICBnbEVkZ2VGbGFndiggY29uc3QgR0xib29sZWFuICpmbGFn
ICk7CgpleHRlcm4gIHZvaWQgICBnbFNjaXNzb3IoIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
OwoKZXh0ZXJuICB2b2lkICAgZ2xDbGlwUGxhbmUoIEdMZW51bSBwbGFuZSwgY29uc3QgR0xkb3Vi
bGUgKmVxdWF0aW9uICk7CgpleHRlcm4gIHZvaWQgICBnbEdldENsaXBQbGFuZSggR0xlbnVtIHBs
YW5lLCBHTGRvdWJsZSAqZXF1YXRpb24gKTsKCmV4dGVybiAgdm9pZCAgIGdsRHJhd0J1ZmZlcigg
R0xlbnVtIG1vZGUgKTsKCmV4dGVybiAgdm9pZCAgIGdsUmVhZEJ1ZmZlciggR0xlbnVtIG1vZGUg
KTsKCmV4dGVybiAgdm9pZCAgIGdsRW5hYmxlKCBHTGVudW0gY2FwICk7CgpleHRlcm4gIHZvaWQg
ICBnbERpc2FibGUoIEdMZW51bSBjYXAgKTsKCmV4dGVybiAgR0xib29sZWFuICAgZ2xJc0VuYWJs
ZWQoIEdMZW51bSBjYXAgKTsKCgpleHRlcm4gIHZvaWQgICBnbEVuYWJsZUNsaWVudFN0YXRlKCBH
TGVudW0gY2FwICk7ICAgCgpleHRlcm4gIHZvaWQgICBnbERpc2FibGVDbGllbnRTdGF0ZSggR0xl
bnVtIGNhcCApOyAgIAoKCmV4dGVybiAgdm9pZCAgIGdsR2V0Qm9vbGVhbnYoIEdMZW51bSBwbmFt
ZSwgR0xib29sZWFuICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0RG91YmxldiggR0xl
bnVtIHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbEdldEZsb2F0
diggR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0
SW50ZWdlcnYoIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyApOwoKCmV4dGVybiAgdm9pZCAg
IGdsUHVzaEF0dHJpYiggR0xiaXRmaWVsZCBtYXNrICk7CgpleHRlcm4gIHZvaWQgICBnbFBvcEF0
dHJpYiggdm9pZCApOwoKCmV4dGVybiAgdm9pZCAgIGdsUHVzaENsaWVudEF0dHJpYiggR0xiaXRm
aWVsZCBtYXNrICk7ICAgCgpleHRlcm4gIHZvaWQgICBnbFBvcENsaWVudEF0dHJpYiggdm9pZCAp
OyAgIAoKCmV4dGVybiAgR0xpbnQgICBnbFJlbmRlck1vZGUoIEdMZW51bSBtb2RlICk7CgpleHRl
cm4gIEdMZW51bSAgIGdsR2V0RXJyb3IoIHZvaWQgKTsKCmV4dGVybiAgY29uc3QgR0x1Ynl0ZSog
ICBnbEdldFN0cmluZyggR0xlbnVtIG5hbWUgKTsKCmV4dGVybiAgdm9pZCAgIGdsRmluaXNoKCB2
b2lkICk7CgpleHRlcm4gIHZvaWQgICBnbEZsdXNoKCB2b2lkICk7CgpleHRlcm4gIHZvaWQgICBn
bEhpbnQoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlICk7CgoKCiAKCgoKZXh0ZXJuICB2b2lk
ICAgZ2xDbGVhckRlcHRoKCBHTGNsYW1wZCBkZXB0aCApOwoKZXh0ZXJuICB2b2lkICAgZ2xEZXB0
aEZ1bmMoIEdMZW51bSBmdW5jICk7CgpleHRlcm4gIHZvaWQgICBnbERlcHRoTWFzayggR0xib29s
ZWFuIGZsYWcgKTsKCmV4dGVybiAgdm9pZCAgIGdsRGVwdGhSYW5nZSggR0xjbGFtcGQgbmVhcl92
YWwsIEdMY2xhbXBkIGZhcl92YWwgKTsKCgogCgoKCmV4dGVybiAgdm9pZCAgIGdsQ2xlYXJBY2N1
bSggR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFscGhhICk7CgpleHRlcm4gIHZvaWQg
ICBnbEFjY3VtKCBHTGVudW0gb3AsIEdMZmxvYXQgdmFsdWUgKTsKCgoKIAoKCgpleHRlcm4gIHZv
aWQgICBnbE1hdHJpeE1vZGUoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gIHZvaWQgICBnbE9ydGhv
KCBHTGRvdWJsZSBsZWZ0LCBHTGRvdWJsZSByaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xkb3VibGUgYm90dG9tLCBHTGRvdWJsZSB0b3AsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZG91YmxlIG5lYXJfdmFsLCBHTGRvdWJsZSBmYXJfdmFsICk7Cgpl
eHRlcm4gIHZvaWQgICBnbEZydXN0dW0oIEdMZG91YmxlIGxlZnQsIEdMZG91YmxlIHJpZ2h0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xkb3Vi
bGUgdG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIG5lYXJf
dmFsLCBHTGRvdWJsZSBmYXJfdmFsICk7CgpleHRlcm4gIHZvaWQgICBnbFZpZXdwb3J0KCBHTGlu
dCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCApOwoKZXh0ZXJuICB2b2lkICAgZ2xQdXNoTWF0cml4KCB2
b2lkICk7CgpleHRlcm4gIHZvaWQgICBnbFBvcE1hdHJpeCggdm9pZCApOwoKZXh0ZXJuICB2b2lk
ICAgZ2xMb2FkSWRlbnRpdHkoIHZvaWQgKTsKCmV4dGVybiAgdm9pZCAgIGdsTG9hZE1hdHJpeGQo
IGNvbnN0IEdMZG91YmxlICptICk7CmV4dGVybiAgdm9pZCAgIGdsTG9hZE1hdHJpeGYoIGNvbnN0
IEdMZmxvYXQgKm0gKTsKCmV4dGVybiAgdm9pZCAgIGdsTXVsdE1hdHJpeGQoIGNvbnN0IEdMZG91
YmxlICptICk7CmV4dGVybiAgdm9pZCAgIGdsTXVsdE1hdHJpeGYoIGNvbnN0IEdMZmxvYXQgKm0g
KTsKCmV4dGVybiAgdm9pZCAgIGdsUm90YXRlZCggR0xkb3VibGUgYW5nbGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUg
eiApOwpleHRlcm4gIHZvaWQgICBnbFJvdGF0ZWYoIEdMZmxvYXQgYW5nbGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiAp
OwoKZXh0ZXJuICB2b2lkICAgZ2xTY2FsZWQoIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91
YmxlIHogKTsKZXh0ZXJuICB2b2lkICAgZ2xTY2FsZWYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBH
TGZsb2F0IHogKTsKCmV4dGVybiAgdm9pZCAgIGdsVHJhbnNsYXRlZCggR0xkb3VibGUgeCwgR0xk
b3VibGUgeSwgR0xkb3VibGUgeiApOwpleHRlcm4gIHZvaWQgICBnbFRyYW5zbGF0ZWYoIEdMZmxv
YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKCgoKIAoKCgpleHRlcm4gIEdMYm9vbGVhbiAg
IGdsSXNMaXN0KCBHTHVpbnQgbGlzdCApOwoKZXh0ZXJuICB2b2lkICAgZ2xEZWxldGVMaXN0cygg
R0x1aW50IGxpc3QsIEdMc2l6ZWkgcmFuZ2UgKTsKCmV4dGVybiAgR0x1aW50ICAgZ2xHZW5MaXN0
cyggR0xzaXplaSByYW5nZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xOZXdMaXN0KCBHTHVpbnQgbGlz
dCwgR0xlbnVtIG1vZGUgKTsKCmV4dGVybiAgdm9pZCAgIGdsRW5kTGlzdCggdm9pZCApOwoKZXh0
ZXJuICB2b2lkICAgZ2xDYWxsTGlzdCggR0x1aW50IGxpc3QgKTsKCmV4dGVybiAgdm9pZCAgIGds
Q2FsbExpc3RzKCBHTHNpemVpIG4sIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpsaXN0cyApOwoKZXh0ZXJuICB2b2lkICAgZ2xM
aXN0QmFzZSggR0x1aW50IGJhc2UgKTsKCgoKIAoKCgpleHRlcm4gIHZvaWQgICBnbEJlZ2luKCBH
TGVudW0gbW9kZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xFbmQoIHZvaWQgKTsKCgpleHRlcm4gIHZv
aWQgICBnbFZlcnRleDJkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5ICk7CmV4dGVybiAgdm9pZCAg
IGdsVmVydGV4MmYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5ICk7CmV4dGVybiAgdm9pZCAgIGdsVmVy
dGV4MmkoIEdMaW50IHgsIEdMaW50IHkgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXgycyggR0xz
aG9ydCB4LCBHTHNob3J0IHkgKTsKCmV4dGVybiAgdm9pZCAgIGdsVmVydGV4M2QoIEdMZG91Ymxl
IHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXgzZigg
R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiApOwpleHRlcm4gIHZvaWQgICBnbFZlcnRl
eDNpKCBHTGludCB4LCBHTGludCB5LCBHTGludCB6ICk7CmV4dGVybiAgdm9pZCAgIGdsVmVydGV4
M3MoIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHogKTsKCmV4dGVybiAgdm9pZCAgIGds
VmVydGV4NGQoIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcg
KTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXg0ZiggR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv
YXQgeiwgR0xmbG9hdCB3ICk7CmV4dGVybiAgdm9pZCAgIGdsVmVydGV4NGkoIEdMaW50IHgsIEdM
aW50IHksIEdMaW50IHosIEdMaW50IHcgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXg0cyggR0xz
aG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3ICk7CgpleHRlcm4gIHZvaWQg
ICBnbFZlcnRleDJkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0
ZXgyZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXgyaXYoIGNv
bnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsVmVydGV4MnN2KCBjb25zdCBHTHNob3J0
ICp2ICk7CgpleHRlcm4gIHZvaWQgICBnbFZlcnRleDNkdiggY29uc3QgR0xkb3VibGUgKnYgKTsK
ZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXgzZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuICB2
b2lkICAgZ2xWZXJ0ZXgzaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsVmVy
dGV4M3N2KCBjb25zdCBHTHNob3J0ICp2ICk7CgpleHRlcm4gIHZvaWQgICBnbFZlcnRleDRkdigg
Y29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXg0ZnYoIGNvbnN0IEdM
ZmxvYXQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xWZXJ0ZXg0aXYoIGNvbnN0IEdMaW50ICp2ICk7
CmV4dGVybiAgdm9pZCAgIGdsVmVydGV4NHN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgoKZXh0ZXJu
ICB2b2lkICAgZ2xOb3JtYWwzYiggR0xieXRlIG54LCBHTGJ5dGUgbnksIEdMYnl0ZSBueiApOwpl
eHRlcm4gIHZvaWQgICBnbE5vcm1hbDNkKCBHTGRvdWJsZSBueCwgR0xkb3VibGUgbnksIEdMZG91
YmxlIG56ICk7CmV4dGVybiAgdm9pZCAgIGdsTm9ybWFsM2YoIEdMZmxvYXQgbngsIEdMZmxvYXQg
bnksIEdMZmxvYXQgbnogKTsKZXh0ZXJuICB2b2lkICAgZ2xOb3JtYWwzaSggR0xpbnQgbngsIEdM
aW50IG55LCBHTGludCBueiApOwpleHRlcm4gIHZvaWQgICBnbE5vcm1hbDNzKCBHTHNob3J0IG54
LCBHTHNob3J0IG55LCBHTHNob3J0IG56ICk7CgpleHRlcm4gIHZvaWQgICBnbE5vcm1hbDNidigg
Y29uc3QgR0xieXRlICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsTm9ybWFsM2R2KCBjb25zdCBHTGRv
dWJsZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbE5vcm1hbDNmdiggY29uc3QgR0xmbG9hdCAqdiAp
OwpleHRlcm4gIHZvaWQgICBnbE5vcm1hbDNpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuICB2
b2lkICAgZ2xOb3JtYWwzc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCgpleHRlcm4gIHZvaWQgICBn
bEluZGV4ZCggR0xkb3VibGUgYyApOwpleHRlcm4gIHZvaWQgICBnbEluZGV4ZiggR0xmbG9hdCBj
ICk7CmV4dGVybiAgdm9pZCAgIGdsSW5kZXhpKCBHTGludCBjICk7CmV4dGVybiAgdm9pZCAgIGds
SW5kZXhzKCBHTHNob3J0IGMgKTsKZXh0ZXJuICB2b2lkICAgZ2xJbmRleHViKCBHTHVieXRlIGMg
KTsgICAKCmV4dGVybiAgdm9pZCAgIGdsSW5kZXhkdiggY29uc3QgR0xkb3VibGUgKmMgKTsKZXh0
ZXJuICB2b2lkICAgZ2xJbmRleGZ2KCBjb25zdCBHTGZsb2F0ICpjICk7CmV4dGVybiAgdm9pZCAg
IGdsSW5kZXhpdiggY29uc3QgR0xpbnQgKmMgKTsKZXh0ZXJuICB2b2lkICAgZ2xJbmRleHN2KCBj
b25zdCBHTHNob3J0ICpjICk7CmV4dGVybiAgdm9pZCAgIGdsSW5kZXh1YnYoIGNvbnN0IEdMdWJ5
dGUgKmMgKTsgICAKCmV4dGVybiAgdm9pZCAgIGdsQ29sb3IzYiggR0xieXRlIHJlZCwgR0xieXRl
IGdyZWVuLCBHTGJ5dGUgYmx1ZSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yM2QoIEdMZG91Ymxl
IHJlZCwgR0xkb3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUgKTsKZXh0ZXJuICB2b2lkICAgZ2xD
b2xvcjNmKCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlICk7CmV4dGVy
biAgdm9pZCAgIGdsQ29sb3IzaSggR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSAp
OwpleHRlcm4gIHZvaWQgICBnbENvbG9yM3MoIEdMc2hvcnQgcmVkLCBHTHNob3J0IGdyZWVuLCBH
THNob3J0IGJsdWUgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjN1YiggR0x1Ynl0ZSByZWQsIEdM
dWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgYmx1ZSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yM3VpKCBH
THVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWludCBibHVlICk7CmV4dGVybiAgdm9pZCAgIGds
Q29sb3IzdXMoIEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUgKTsK
CmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0YiggR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYnl0ZSBibHVlLCBHTGJ5dGUgYWxwaGEg
KTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjRkKCBHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGJsdWUsIEdMZG91
YmxlIGFscGhhICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0ZiggR0xmbG9hdCByZWQsIEdMZmxv
YXQgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBibHVl
LCBHTGZsb2F0IGFscGhhICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0aSggR0xpbnQgcmVkLCBH
TGludCBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBibHVl
LCBHTGludCBhbHBoYSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNHMoIEdMc2hvcnQgcmVkLCBH
THNob3J0IGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQg
Ymx1ZSwgR0xzaG9ydCBhbHBoYSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNHViKCBHTHVieXRl
IHJlZCwgR0x1Ynl0ZSBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1Ynl0ZSBibHVlLCBHTHVieXRlIGFscGhhICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0dWko
IEdMdWludCByZWQsIEdMdWludCBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGJsdWUsIEdMdWludCBhbHBoYSApOwpleHRlcm4gIHZvaWQgICBnbENvbG9y
NHVzKCBHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVzaG9ydCBibHVlLCBHTHVzaG9ydCBhbHBoYSApOwoKCmV4dGVybiAg
dm9pZCAgIGdsQ29sb3IzYnYoIGNvbnN0IEdMYnl0ZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbENv
bG9yM2R2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yM2Z2KCBj
b25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3IzaXYoIGNvbnN0IEdMaW50
ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsQ29sb3Izc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKZXh0
ZXJuICB2b2lkICAgZ2xDb2xvcjN1YnYoIGNvbnN0IEdMdWJ5dGUgKnYgKTsKZXh0ZXJuICB2b2lk
ICAgZ2xDb2xvcjN1aXYoIGNvbnN0IEdMdWludCAqdiApOwpleHRlcm4gIHZvaWQgICBnbENvbG9y
M3VzdiggY29uc3QgR0x1c2hvcnQgKnYgKTsKCmV4dGVybiAgdm9pZCAgIGdsQ29sb3I0YnYoIGNv
bnN0IEdMYnl0ZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNGR2KCBjb25zdCBHTGRvdWJs
ZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNGZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4
dGVybiAgdm9pZCAgIGdsQ29sb3I0aXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAg
IGdsQ29sb3I0c3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjR1
YnYoIGNvbnN0IEdMdWJ5dGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xDb2xvcjR1aXYoIGNvbnN0
IEdMdWludCAqdiApOwpleHRlcm4gIHZvaWQgICBnbENvbG9yNHVzdiggY29uc3QgR0x1c2hvcnQg
KnYgKTsKCgpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkMWQoIEdMZG91YmxlIHMgKTsKZXh0ZXJu
ICB2b2lkICAgZ2xUZXhDb29yZDFmKCBHTGZsb2F0IHMgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhD
b29yZDFpKCBHTGludCBzICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQxcyggR0xzaG9ydCBz
ICk7CgpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkMmQoIEdMZG91YmxlIHMsIEdMZG91YmxlIHQg
KTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDJmKCBHTGZsb2F0IHMsIEdMZmxvYXQgdCApOwpl
eHRlcm4gIHZvaWQgICBnbFRleENvb3JkMmkoIEdMaW50IHMsIEdMaW50IHQgKTsKZXh0ZXJuICB2
b2lkICAgZ2xUZXhDb29yZDJzKCBHTHNob3J0IHMsIEdMc2hvcnQgdCApOwoKZXh0ZXJuICB2b2lk
ICAgZ2xUZXhDb29yZDNkKCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByICk7CmV4
dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQzZiggR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQg
ciApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkM2koIEdMaW50IHMsIEdMaW50IHQsIEdMaW50
IHIgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDNzKCBHTHNob3J0IHMsIEdMc2hvcnQgdCwg
R0xzaG9ydCByICk7CgpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkNGQoIEdMZG91YmxlIHMsIEdM
ZG91YmxlIHQsIEdMZG91YmxlIHIsIEdMZG91YmxlIHEgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhD
b29yZDRmKCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEgKTsKZXh0
ZXJuICB2b2lkICAgZ2xUZXhDb29yZDRpKCBHTGludCBzLCBHTGludCB0LCBHTGludCByLCBHTGlu
dCBxICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQ0cyggR0xzaG9ydCBzLCBHTHNob3J0IHQs
IEdMc2hvcnQgciwgR0xzaG9ydCBxICk7CgpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkMWR2KCBj
b25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkMWZ2KCBjb25zdCBH
TGZsb2F0ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQxaXYoIGNvbnN0IEdMaW50ICp2
ICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQxc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4
dGVybiAgdm9pZCAgIGdsVGV4Q29vcmQyZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiAg
dm9pZCAgIGdsVGV4Q29vcmQyZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuICB2b2lkICAg
Z2xUZXhDb29yZDJpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29y
ZDJzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDNkdigg
Y29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29yZDNmdiggY29uc3Qg
R0xmbG9hdCAqdiApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkM2l2KCBjb25zdCBHTGludCAq
diApOwpleHRlcm4gIHZvaWQgICBnbFRleENvb3JkM3N2KCBjb25zdCBHTHNob3J0ICp2ICk7Cgpl
eHRlcm4gIHZvaWQgICBnbFRleENvb3JkNGR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4g
IHZvaWQgICBnbFRleENvb3JkNGZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiAgdm9pZCAg
IGdsVGV4Q29vcmQ0aXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4Q29v
cmQ0c3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCgpleHRlcm4gIHZvaWQgICBnbFJhc3RlclBvczJk
KCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zMmYo
IEdMZmxvYXQgeCwgR0xmbG9hdCB5ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zMmkoIEdM
aW50IHgsIEdMaW50IHkgKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3MycyggR0xzaG9ydCB4
LCBHTHNob3J0IHkgKTsKCmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zM2QoIEdMZG91YmxlIHgs
IEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3MzZigg
R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiApOwpleHRlcm4gIHZvaWQgICBnbFJhc3Rl
clBvczNpKCBHTGludCB4LCBHTGludCB5LCBHTGludCB6ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFz
dGVyUG9zM3MoIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHogKTsKCmV4dGVybiAgdm9p
ZCAgIGdsUmFzdGVyUG9zNGQoIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdM
ZG91YmxlIHcgKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3M0ZiggR0xmbG9hdCB4LCBHTGZs
b2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9z
NGkoIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcgKTsKZXh0ZXJuICB2b2lkICAg
Z2xSYXN0ZXJQb3M0cyggR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3
ICk7CgpleHRlcm4gIHZvaWQgICBnbFJhc3RlclBvczJkdiggY29uc3QgR0xkb3VibGUgKnYgKTsK
ZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3MyZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJu
ICB2b2lkICAgZ2xSYXN0ZXJQb3MyaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAg
IGdsUmFzdGVyUG9zMnN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgpleHRlcm4gIHZvaWQgICBnbFJh
c3RlclBvczNkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQ
b3MzZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3MzaXYo
IGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiAgdm9pZCAgIGdsUmFzdGVyUG9zM3N2KCBjb25zdCBH
THNob3J0ICp2ICk7CgpleHRlcm4gIHZvaWQgICBnbFJhc3RlclBvczRkdiggY29uc3QgR0xkb3Vi
bGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3M0ZnYoIGNvbnN0IEdMZmxvYXQgKnYg
KTsKZXh0ZXJuICB2b2lkICAgZ2xSYXN0ZXJQb3M0aXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVy
biAgdm9pZCAgIGdsUmFzdGVyUG9zNHN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgoKZXh0ZXJuICB2
b2lkICAgZ2xSZWN0ZCggR0xkb3VibGUgeDEsIEdMZG91YmxlIHkxLCBHTGRvdWJsZSB4MiwgR0xk
b3VibGUgeTIgKTsKZXh0ZXJuICB2b2lkICAgZ2xSZWN0ZiggR0xmbG9hdCB4MSwgR0xmbG9hdCB5
MSwgR0xmbG9hdCB4MiwgR0xmbG9hdCB5MiApOwpleHRlcm4gIHZvaWQgICBnbFJlY3RpKCBHTGlu
dCB4MSwgR0xpbnQgeTEsIEdMaW50IHgyLCBHTGludCB5MiApOwpleHRlcm4gIHZvaWQgICBnbFJl
Y3RzKCBHTHNob3J0IHgxLCBHTHNob3J0IHkxLCBHTHNob3J0IHgyLCBHTHNob3J0IHkyICk7CgoK
ZXh0ZXJuICB2b2lkICAgZ2xSZWN0ZHYoIGNvbnN0IEdMZG91YmxlICp2MSwgY29uc3QgR0xkb3Vi
bGUgKnYyICk7CmV4dGVybiAgdm9pZCAgIGdsUmVjdGZ2KCBjb25zdCBHTGZsb2F0ICp2MSwgY29u
c3QgR0xmbG9hdCAqdjIgKTsKZXh0ZXJuICB2b2lkICAgZ2xSZWN0aXYoIGNvbnN0IEdMaW50ICp2
MSwgY29uc3QgR0xpbnQgKnYyICk7CmV4dGVybiAgdm9pZCAgIGdsUmVjdHN2KCBjb25zdCBHTHNo
b3J0ICp2MSwgY29uc3QgR0xzaG9ydCAqdjIgKTsKCgoKIAoKCgpleHRlcm4gIHZvaWQgICBnbFZl
cnRleFBvaW50ZXIoIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKTsK
CmV4dGVybiAgdm9pZCAgIGdsTm9ybWFsUG9pbnRlciggR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3Ry
aWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg
KnB0ciApOwoKZXh0ZXJuICB2b2lkICAgZ2xDb2xvclBvaW50ZXIoIEdMaW50IHNpemUsIEdMZW51
bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3Ry
aWRlLCBjb25zdCBHTHZvaWQgKnB0ciApOwoKZXh0ZXJuICB2b2lkICAgZ2xJbmRleFBvaW50ZXIo
IEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHZvaWQgKnB0ciApOwoKZXh0ZXJuICB2b2lkICAgZ2xUZXhDb29y
ZFBvaW50ZXIoIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0ciApOwoK
ZXh0ZXJuICB2b2lkICAgZ2xFZGdlRmxhZ1BvaW50ZXIoIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBH
THZvaWQgKnB0ciApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRQb2ludGVydiggR0xlbnVtIHBuYW1l
LCB2b2lkICoqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbEFycmF5RWxlbWVudCggR0xpbnQg
aSApOwoKZXh0ZXJuICB2b2lkICAgZ2xEcmF3QXJyYXlzKCBHTGVudW0gbW9kZSwgR0xpbnQgZmly
c3QsIEdMc2l6ZWkgY291bnQgKTsKCmV4dGVybiAgdm9pZCAgIGdsRHJhd0VsZW1lbnRzKCBHTGVu
dW0gbW9kZSwgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzICk7CgpleHRlcm4gIHZvaWQg
ICBnbEludGVybGVhdmVkQXJyYXlzKCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHN0cmlkZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcG9p
bnRlciApOwoKCiAKCgoKZXh0ZXJuICB2b2lkICAgZ2xTaGFkZU1vZGVsKCBHTGVudW0gbW9kZSAp
OwoKZXh0ZXJuICB2b2lkICAgZ2xMaWdodGYoIEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0IHBhcmFtICk7CmV4dGVybiAgdm9pZCAgIGdsTGlnaHRpKCBHTGVudW0gbGlnaHQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xMaWdodGZ2KCBHTGVu
dW0gbGlnaHQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiAgdm9pZCAgIGdsTGlnaHRpdiggR0xlbnVt
IGxpZ2h0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0TGlnaHRmdiggR0xlbnVt
IGxpZ2h0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gIHZvaWQgICBnbEdldExpZ2h0aXYoIEdMZW51bSBs
aWdodCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbExpZ2h0TW9kZWxmKCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xMaWdodE1vZGVsaSggR0xlbnVt
IHBuYW1lLCBHTGludCBwYXJhbSApOwpleHRlcm4gIHZvaWQgICBnbExpZ2h0TW9kZWxmdiggR0xl
bnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xMaWdo
dE1vZGVsaXYoIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuICB2
b2lkICAgZ2xNYXRlcmlhbGYoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xNYXRlcmlhbGkoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5h
bWUsIEdMaW50IHBhcmFtICk7CmV4dGVybiAgdm9pZCAgIGdsTWF0ZXJpYWxmdiggR0xlbnVtIGZh
Y2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiAgdm9pZCAg
IGdsTWF0ZXJpYWxpdiggR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBh
cmFtcyApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRNYXRlcmlhbGZ2KCBHTGVudW0gZmFjZSwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xHZXRNYXRlcmlh
bGl2KCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4g
IHZvaWQgICBnbENvbG9yTWF0ZXJpYWwoIEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSApOwoKCgoK
IAoKCgpleHRlcm4gIHZvaWQgICBnbFBpeGVsWm9vbSggR0xmbG9hdCB4ZmFjdG9yLCBHTGZsb2F0
IHlmYWN0b3IgKTsKCmV4dGVybiAgdm9pZCAgIGdsUGl4ZWxTdG9yZWYoIEdMZW51bSBwbmFtZSwg
R0xmbG9hdCBwYXJhbSApOwpleHRlcm4gIHZvaWQgICBnbFBpeGVsU3RvcmVpKCBHTGVudW0gcG5h
bWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gIHZvaWQgICBnbFBpeGVsVHJhbnNmZXJmKCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xQaXhlbFRyYW5zZmVy
aSggR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwoKZXh0ZXJuICB2b2lkICAgZ2xQaXhlbE1h
cGZ2KCBHTGVudW0gbWFwLCBHTGludCBtYXBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xQaXhl
bE1hcHVpdiggR0xlbnVtIG1hcCwgR0xpbnQgbWFwc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWVzICk7CmV4dGVybiAgdm9pZCAgIGds
UGl4ZWxNYXB1c3YoIEdMZW51bSBtYXAsIEdMaW50IG1hcHNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVzaG9ydCAqdmFsdWVzICk7CgpleHRlcm4gIHZv
aWQgICBnbEdldFBpeGVsTWFwZnYoIEdMZW51bSBtYXAsIEdMZmxvYXQgKnZhbHVlcyApOwpleHRl
cm4gIHZvaWQgICBnbEdldFBpeGVsTWFwdWl2KCBHTGVudW0gbWFwLCBHTHVpbnQgKnZhbHVlcyAp
OwpleHRlcm4gIHZvaWQgICBnbEdldFBpeGVsTWFwdXN2KCBHTGVudW0gbWFwLCBHTHVzaG9ydCAq
dmFsdWVzICk7CgpleHRlcm4gIHZvaWQgICBnbEJpdG1hcCggR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4b3JpZywg
R0xmbG9hdCB5b3JpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHht
b3ZlLCBHTGZsb2F0IHltb3ZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdWJ5dGUgKmJpdG1hcCApOwoKZXh0ZXJuICB2b2lkICAgZ2xSZWFkUGl4ZWxzKCBHTGludCB4
LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdm9pZCAqcGl4ZWxzICk7CgpleHRlcm4gIHZvaWQgICBnbERyYXdQaXhlbHMoIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCmV4dGVybiAgdm9pZCAgIGds
Q29weVBpeGVscyggR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlICk7CgoKCiAKCgoKZXh0ZXJuICB2b2lkICAg
Z2xTdGVuY2lsRnVuYyggR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2sgKTsKCmV4
dGVybiAgdm9pZCAgIGdsU3RlbmNpbE1hc2soIEdMdWludCBtYXNrICk7CgpleHRlcm4gIHZvaWQg
ICBnbFN0ZW5jaWxPcCggR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzICk7
CgpleHRlcm4gIHZvaWQgICBnbENsZWFyU3RlbmNpbCggR0xpbnQgcyApOwoKCgogCgoKCmV4dGVy
biAgdm9pZCAgIGdsVGV4R2VuZCggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZG91Ymxl
IHBhcmFtICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4R2VuZiggR0xlbnVtIGNvb3JkLCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhHZW5pKCBHTGVudW0g
Y29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKCmV4dGVybiAgdm9pZCAgIGdsVGV4
R2VuZHYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGRvdWJsZSAqcGFyYW1z
ICk7CmV4dGVybiAgdm9pZCAgIGdsVGV4R2VuZnYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1l
LCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhHZW5pdiggR0xl
bnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAg
dm9pZCAgIGdsR2V0VGV4R2VuZHYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJs
ZSAqcGFyYW1zICk7CmV4dGVybiAgdm9pZCAgIGdsR2V0VGV4R2VuZnYoIEdMZW51bSBjb29yZCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xHZXRUZXhH
ZW5pdiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsKCgpleHRl
cm4gIHZvaWQgICBnbFRleEVudmYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCBwYXJhbSApOwpleHRlcm4gIHZvaWQgICBnbFRleEVudmkoIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKCmV4dGVybiAgdm9pZCAgIGdsVGV4RW52ZnYoIEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiAg
dm9pZCAgIGdsVGV4RW52aXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xp
bnQgKnBhcmFtcyApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRUZXhFbnZmdiggR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuICB2b2lkICAgZ2xHZXRU
ZXhFbnZpdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgoK
ZXh0ZXJuICB2b2lkICAgZ2xUZXhQYXJhbWV0ZXJmKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuICB2b2lkICAgZ2xUZXhQYXJhbWV0ZXJpKCBHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gIHZvaWQgICBn
bFRleFBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwpl
eHRlcm4gIHZvaWQgICBnbFRleFBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0VGV4UGFyYW1ldGVyZnYoIEdMZW51bSB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CmV4dGVybiAgdm9pZCAgIGdsR2V0VGV4UGFyYW1ldGVy
aXYoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0
VGV4TGV2ZWxQYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwgR0xm
bG9hdCAqcGFyYW1zICk7CmV4dGVybiAgdm9pZCAgIGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdigg
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyApOwoKCmV4dGVy
biAgdm9pZCAgIGdsVGV4SW1hZ2UxRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGludCBib3Jk
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZv
aWQgKnBpeGVscyApOwoKZXh0ZXJuICB2b2lkICAgZ2xUZXhJbWFnZTJEKCBHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
aW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKZXh0ZXJu
ICB2b2lkICAgZ2xHZXRUZXhJbWFnZSggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzICk7
CgoKCiAKCmV4dGVybiAgdm9pZCAgIGdsR2VuVGV4dHVyZXMoIEdMc2l6ZWkgbiwgR0x1aW50ICp0
ZXh0dXJlcyApOwoKZXh0ZXJuICB2b2lkICAgZ2xEZWxldGVUZXh0dXJlcyggR0xzaXplaSBuLCBj
b25zdCBHTHVpbnQgKnRleHR1cmVzKTsKCmV4dGVybiAgdm9pZCAgIGdsQmluZFRleHR1cmUoIEdM
ZW51bSB0YXJnZXQsIEdMdWludCB0ZXh0dXJlICk7CgpleHRlcm4gIHZvaWQgICBnbFByaW9yaXRp
emVUZXh0dXJlcyggR0xzaXplaSBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdWludCAqdGV4dHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjbGFtcGYgKnByaW9yaXRpZXMgKTsKCmV4dGVy
biAgR0xib29sZWFuICAgZ2xBcmVUZXh0dXJlc1Jlc2lkZW50KCBHTHNpemVpIG4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0
ZXh0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gKnJlc2lkZW5jZXMgKTsKCmV4dGVybiAgR0xib29sZWFuICAgZ2xJc1RleHR1
cmUoIEdMdWludCB0ZXh0dXJlICk7CgoKZXh0ZXJuICB2b2lkICAgZ2xUZXhTdWJJbWFnZTFEKCBH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgoK
ZXh0ZXJuICB2b2lkICAgZ2xUZXhTdWJJbWFnZTJEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKCmV4dGVybiAgdm9p
ZCAgIGdsQ29weVRleEltYWdlMUQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdM
aW50IGJvcmRlciApOwoKCmV4dGVybiAgdm9pZCAgIGdsQ29weVRleEltYWdlMkQoIEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyICk7CgoKZXh0ZXJuICB2b2lkICAg
Z2xDb3B5VGV4U3ViSW1hZ2UxRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB4
LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSB3aWR0aCApOwoKCmV4dGVybiAgdm9pZCAgIGdsQ29weVRleFN1YkltYWdlMkQoIEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCApOwoKCgoKIAoKCgpleHRlcm4gIHZvaWQgICBnbE1hcDFkKCBHTGVudW0gdGFyZ2V0LCBHTGRv
dWJsZSB1MSwgR0xkb3VibGUgdTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBvcmRlciwgY29u
c3QgR0xkb3VibGUgKnBvaW50cyApOwpleHRlcm4gIHZvaWQgICBnbE1hcDFmKCBHTGVudW0gdGFy
Z2V0LCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgb3Jk
ZXIsIGNvbnN0IEdMZmxvYXQgKnBvaW50cyApOwoKZXh0ZXJuICB2b2lkICAgZ2xNYXAyZCggR0xl
bnVtIHRhcmdldCwKCQkgICAgIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwgR0xpbnQgdXN0cmlk
ZSwgR0xpbnQgdW9yZGVyLAoJCSAgICAgR0xkb3VibGUgdjEsIEdMZG91YmxlIHYyLCBHTGludCB2
c3RyaWRlLCBHTGludCB2b3JkZXIsCgkJICAgICBjb25zdCBHTGRvdWJsZSAqcG9pbnRzICk7CmV4
dGVybiAgdm9pZCAgIGdsTWFwMmYoIEdMZW51bSB0YXJnZXQsCgkJICAgICBHTGZsb2F0IHUxLCBH
TGZsb2F0IHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3JkZXIsCgkJICAgICBHTGZsb2F0IHYx
LCBHTGZsb2F0IHYyLCBHTGludCB2c3RyaWRlLCBHTGludCB2b3JkZXIsCgkJICAgICBjb25zdCBH
TGZsb2F0ICpwb2ludHMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0TWFwZHYoIEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBxdWVyeSwgR0xkb3VibGUgKnYgKTsKZXh0ZXJuICB2b2lkICAgZ2xHZXRNYXBm
diggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGZsb2F0ICp2ICk7CmV4dGVybiAgdm9p
ZCAgIGdsR2V0TWFwaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xpbnQgKnYgKTsK
CmV4dGVybiAgdm9pZCAgIGdsRXZhbENvb3JkMWQoIEdMZG91YmxlIHUgKTsKZXh0ZXJuICB2b2lk
ICAgZ2xFdmFsQ29vcmQxZiggR0xmbG9hdCB1ICk7CgpleHRlcm4gIHZvaWQgICBnbEV2YWxDb29y
ZDFkdiggY29uc3QgR0xkb3VibGUgKnUgKTsKZXh0ZXJuICB2b2lkICAgZ2xFdmFsQ29vcmQxZnYo
IGNvbnN0IEdMZmxvYXQgKnUgKTsKCmV4dGVybiAgdm9pZCAgIGdsRXZhbENvb3JkMmQoIEdMZG91
YmxlIHUsIEdMZG91YmxlIHYgKTsKZXh0ZXJuICB2b2lkICAgZ2xFdmFsQ29vcmQyZiggR0xmbG9h
dCB1LCBHTGZsb2F0IHYgKTsKCmV4dGVybiAgdm9pZCAgIGdsRXZhbENvb3JkMmR2KCBjb25zdCBH
TGRvdWJsZSAqdSApOwpleHRlcm4gIHZvaWQgICBnbEV2YWxDb29yZDJmdiggY29uc3QgR0xmbG9h
dCAqdSApOwoKZXh0ZXJuICB2b2lkICAgZ2xNYXBHcmlkMWQoIEdMaW50IHVuLCBHTGRvdWJsZSB1
MSwgR0xkb3VibGUgdTIgKTsKZXh0ZXJuICB2b2lkICAgZ2xNYXBHcmlkMWYoIEdMaW50IHVuLCBH
TGZsb2F0IHUxLCBHTGZsb2F0IHUyICk7CgpleHRlcm4gIHZvaWQgICBnbE1hcEdyaWQyZCggR0xp
bnQgdW4sIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB2biwgR0xkb3VibGUgdjEsIEdMZG91YmxlIHYyICk7CmV4dGVybiAg
dm9pZCAgIGdsTWFwR3JpZDJmKCBHTGludCB1biwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2biwgR0xmbG9hdCB2MSwgR0xm
bG9hdCB2MiApOwoKZXh0ZXJuICB2b2lkICAgZ2xFdmFsUG9pbnQxKCBHTGludCBpICk7CgpleHRl
cm4gIHZvaWQgICBnbEV2YWxQb2ludDIoIEdMaW50IGksIEdMaW50IGogKTsKCmV4dGVybiAgdm9p
ZCAgIGdsRXZhbE1lc2gxKCBHTGVudW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGkyICk7CgpleHRl
cm4gIHZvaWQgICBnbEV2YWxNZXNoMiggR0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGludCBpMiwg
R0xpbnQgajEsIEdMaW50IGoyICk7CgoKCiAKCgoKZXh0ZXJuICB2b2lkICAgZ2xGb2dmKCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKCmV4dGVybiAgdm9pZCAgIGdsRm9naSggR0xlbnVt
IHBuYW1lLCBHTGludCBwYXJhbSApOwoKZXh0ZXJuICB2b2lkICAgZ2xGb2dmdiggR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsRm9naXYoIEdM
ZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKCgogCgoKCmV4dGVybiAgdm9pZCAg
IGdsRmVlZGJhY2tCdWZmZXIoIEdMc2l6ZWkgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMZmxvYXQgKmJ1
ZmZlciApOwoKZXh0ZXJuICB2b2lkICAgZ2xQYXNzVGhyb3VnaCggR0xmbG9hdCB0b2tlbiApOwoK
ZXh0ZXJuICB2b2lkICAgZ2xTZWxlY3RCdWZmZXIoIEdMc2l6ZWkgc2l6ZSwgR0x1aW50ICpidWZm
ZXIgKTsKCmV4dGVybiAgdm9pZCAgIGdsSW5pdE5hbWVzKCB2b2lkICk7CgpleHRlcm4gIHZvaWQg
ICBnbExvYWROYW1lKCBHTHVpbnQgbmFtZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xQdXNoTmFtZSgg
R0x1aW50IG5hbWUgKTsKCmV4dGVybiAgdm9pZCAgIGdsUG9wTmFtZSggdm9pZCApOwoKCgogCmV4
dGVybiAgdm9pZCAgIGdsRHJhd1JhbmdlRWxlbWVudHMoIEdMZW51bSBtb2RlLCBHTHVpbnQgc3Rh
cnQsCglHTHVpbnQgZW5kLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk
ICppbmRpY2VzICk7CgpleHRlcm4gIHZvaWQgICBnbFRleEltYWdlM0QoIEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKZXh0
ZXJuICB2b2lkICAgZ2xUZXhTdWJJbWFnZTNEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhl
bHMpOwoKZXh0ZXJuICB2b2lkICAgZ2xDb3B5VGV4U3ViSW1hZ2UzRCggR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsIEdMaW50IHgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0
ICk7CgoKIAoKZXh0ZXJuICB2b2lkICAgZ2xDb2xvclRhYmxlKCBHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxlICk7CgpleHRlcm4gIHZvaWQg
ICBnbENvbG9yU3ViVGFibGUoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEg
KTsKCmV4dGVybiAgdm9pZCAgIGdsQ29sb3JUYWJsZVBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOwoKZXh0ZXJuICB2b2lkICAgZ2xDb2xvclRhYmxlUGFy
YW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKCmV4dGVy
biAgdm9pZCAgIGdsQ29weUNvbG9yU3ViVGFibGUoIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3Rh
cnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBH
TGludCB5LCBHTHNpemVpIHdpZHRoICk7CgpleHRlcm4gIHZvaWQgICBnbENvcHlDb2xvclRhYmxl
KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoICk7
CgpleHRlcm4gIHZvaWQgICBnbEdldENvbG9yVGFibGUoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBm
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LCBHTHZvaWQgKnRhYmxlICk7CgpleHRlcm4gIHZvaWQgICBnbEdldENvbG9yVGFibGVQYXJhbWV0
ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyApOwoKZXh0ZXJuICB2
b2lkICAgZ2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbEJsZW5kRXF1YXRpb24oIEdMZW51bSBt
b2RlICk7CgpleHRlcm4gIHZvaWQgICBnbEJsZW5kQ29sb3IoIEdMY2xhbXBmIHJlZCwgR0xjbGFt
cGYgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIGJs
dWUsIEdMY2xhbXBmIGFscGhhICk7CgpleHRlcm4gIHZvaWQgICBnbEhpc3RvZ3JhbSggR0xlbnVt
IHRhcmdldCwgR0xzaXplaSB3aWR0aCwKCQkJCSAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xi
b29sZWFuIHNpbmsgKTsKCmV4dGVybiAgdm9pZCAgIGdsUmVzZXRIaXN0b2dyYW0oIEdMZW51bSB0
YXJnZXQgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0SGlzdG9ncmFtKCBHTGVudW0gdGFyZ2V0LCBH
TGJvb2xlYW4gcmVzZXQsCgkJCQkgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKCQkJ
CSAgICAgIEdMdm9pZCAqdmFsdWVzICk7CgpleHRlcm4gIHZvaWQgICBnbEdldEhpc3RvZ3JhbVBh
cmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCgkJCQkJCSBHTGZsb2F0ICpw
YXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0SGlzdG9ncmFtUGFyYW1ldGVyaXYoIEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKCQkJCQkJIEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAg
dm9pZCAgIGdsTWlubWF4KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCgkJ
CQlHTGJvb2xlYW4gc2luayApOwoKZXh0ZXJuICB2b2lkICAgZ2xSZXNldE1pbm1heCggR0xlbnVt
IHRhcmdldCApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRNaW5tYXgoIEdMZW51bSB0YXJnZXQsIEdM
Ym9vbGVhbiByZXNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x2b2lkICp2YWx1ZXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0TWlubWF4UGFyYW1ldGVyZnYo
IEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKCQkJCQkgICAgICBHTGZsb2F0ICpwYXJhbXMg
KTsKCmV4dGVybiAgdm9pZCAgIGdsR2V0TWlubWF4UGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwKCQkJCQkgICAgICBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQg
ICBnbENvbnZvbHV0aW9uRmlsdGVyMUQoIEdMZW51bSB0YXJnZXQsCglHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAoJY29uc3Qg
R0x2b2lkICppbWFnZSApOwoKZXh0ZXJuICB2b2lkICAgZ2xDb252b2x1dGlvbkZpbHRlcjJEKCBH
TGVudW0gdGFyZ2V0LAoJR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwKCUdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmlt
YWdlICk7CgpleHRlcm4gIHZvaWQgICBnbENvbnZvbHV0aW9uUGFyYW1ldGVyZiggR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLAoJR0xmbG9hdCBwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGds
Q29udm9sdXRpb25QYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAoJY29u
c3QgR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbENvbnZvbHV0aW9uUGFyYW1l
dGVyaSggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAoJR0xpbnQgcGFyYW1zICk7CgpleHRl
cm4gIHZvaWQgICBnbENvbnZvbHV0aW9uUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwKCWNvbnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiAgdm9pZCAgIGdsQ29weUNv
bnZvbHV0aW9uRmlsdGVyMUQoIEdMZW51bSB0YXJnZXQsCglHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGggKTsKCmV4dGVybiAgdm9pZCAgIGdsQ29w
eUNvbnZvbHV0aW9uRmlsdGVyMkQoIEdMZW51bSB0YXJnZXQsCglHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsCglHTHNpemVpIGhlaWdodCk7Cgpl
eHRlcm4gIHZvaWQgICBnbEdldENvbnZvbHV0aW9uRmlsdGVyKCBHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gZm9ybWF0LAoJR0xlbnVtIHR5cGUsIEdMdm9pZCAqaW1hZ2UgKTsKCmV4dGVybiAgdm9pZCAg
IGdsR2V0Q29udm9sdXRpb25QYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LAoJR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4gIHZvaWQgICBnbEdldENvbnZvbHV0aW9uUGFy
YW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKCUdMaW50ICpwYXJhbXMgKTsK
CmV4dGVybiAgdm9pZCAgIGdsU2VwYXJhYmxlRmlsdGVyMkQoIEdMZW51bSB0YXJnZXQsCglHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g
Zm9ybWF0LAoJR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcm93LCBjb25zdCBHTHZvaWQgKmNv
bHVtbiApOwoKZXh0ZXJuICB2b2lkICAgZ2xHZXRTZXBhcmFibGVGaWx0ZXIoIEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBmb3JtYXQsCglHTGVudW0gdHlwZSwgR0x2b2lkICpyb3csIEdMdm9pZCAqY29s
dW1uLCBHTHZvaWQgKnNwYW4gKTsKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCmV4dGVybiAgdm9pZCAgIGdsQWN0aXZlVGV4dHVyZUFSQihHTGVudW0gdGV4dHVy
ZSk7CmV4dGVybiAgdm9pZCAgIGdsQ2xpZW50QWN0aXZlVGV4dHVyZUFSQihHTGVudW0gdGV4dHVy
ZSk7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDFkQVJCKEdMZW51bSB0YXJnZXQsIEdM
ZG91YmxlIHMpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQxZHZBUkIoR0xlbnVtIHRh
cmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQx
ZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4
Q29vcmQxZnZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiAgdm9p
ZCAgIGdsTXVsdGlUZXhDb29yZDFpQVJCKEdMZW51bSB0YXJnZXQsIEdMaW50IHMpOwpleHRlcm4g
IHZvaWQgICBnbE11bHRpVGV4Q29vcmQxaXZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQg
KnYpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQxc0FSQihHTGVudW0gdGFyZ2V0LCBH
THNob3J0IHMpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQxc3ZBUkIoR0xlbnVtIHRh
cmdldCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDJk
QVJCKEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpOwpleHRlcm4gIHZvaWQg
ICBnbE11bHRpVGV4Q29vcmQyZHZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYp
OwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQyZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZs
b2F0IHMsIEdMZmxvYXQgdCk7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDJmdkFSQihH
TGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKZXh0ZXJuICB2b2lkICAgZ2xNdWx0aVRl
eENvb3JkMmlBUkIoR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCk7CmV4dGVybiAgdm9p
ZCAgIGdsTXVsdGlUZXhDb29yZDJpdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7
CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDJzQVJCKEdMZW51bSB0YXJnZXQsIEdMc2hv
cnQgcywgR0xzaG9ydCB0KTsKZXh0ZXJuICB2b2lkICAgZ2xNdWx0aVRleENvb3JkMnN2QVJCKEdM
ZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4
Q29vcmQzZEFSQihHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJs
ZSByKTsKZXh0ZXJuICB2b2lkICAgZ2xNdWx0aVRleENvb3JkM2R2QVJCKEdMZW51bSB0YXJnZXQs
IGNvbnN0IEdMZG91YmxlICp2KTsKZXh0ZXJuICB2b2lkICAgZ2xNdWx0aVRleENvb3JkM2ZBUkIo
R0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgcik7CmV4dGVybiAg
dm9pZCAgIGdsTXVsdGlUZXhDb29yZDNmdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0
ICp2KTsKZXh0ZXJuICB2b2lkICAgZ2xNdWx0aVRleENvb3JkM2lBUkIoR0xlbnVtIHRhcmdldCwg
R0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgcik7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29y
ZDNpdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7CmV4dGVybiAgdm9pZCAgIGds
TXVsdGlUZXhDb29yZDNzQVJCKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBH
THNob3J0IHIpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQzc3ZBUkIoR0xlbnVtIHRh
cmdldCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDRk
QVJCKEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIsIEdM
ZG91YmxlIHEpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQ0ZHZBUkIoR0xlbnVtIHRh
cmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQ0
ZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZs
b2F0IHEpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQ0ZnZBUkIoR0xlbnVtIHRhcmdl
dCwgY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiAgdm9pZCAgIGdsTXVsdGlUZXhDb29yZDRpQVJC
KEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEpOwpleHRl
cm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQ0aXZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xp
bnQgKnYpOwpleHRlcm4gIHZvaWQgICBnbE11bHRpVGV4Q29vcmQ0c0FSQihHTGVudW0gdGFyZ2V0
LCBHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xzaG9ydCByLCBHTHNob3J0IHEpOwpleHRlcm4gIHZv
aWQgICBnbE11bHRpVGV4Q29vcmQ0c3ZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAq
dik7CgoKCgoKCiMgMjI0MyAiL3Vzci9pbmNsdWRlL0dML2dsLmgiIDMKCgojIDEgIi91c3IvaW5j
bHVkZS9HTC9nbGV4dC5oIiAxIDMKCgoKCmV4dGVybiAiQyIgewoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCgojIDE0MSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0
LmgiIDMKCgojIDE3OSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCiAKIAogCiAKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCiMgMTU5MyAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCgojIDE2
NjcgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAg
KiBQRk5HTExPQURUUkFOU1BPU0VNQVRSSVhGQVJCUFJPQykgKGNvbnN0IEdMZmxvYXQgKm0pOwp0
eXBlZGVmIHZvaWQgKCAgKiBQRk5HTExPQURUUkFOU1BPU0VNQVRSSVhEQVJCUFJPQykgKGNvbnN0
IEdMZG91YmxlICptKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xNVUxUVFJBTlNQT1NFTUFUUklY
RkFSQlBST0MpIChjb25zdCBHTGZsb2F0ICptKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xNVUxU
VFJBTlNQT1NFTUFUUklYREFSQlBST0MpIChjb25zdCBHTGRvdWJsZSAqbSk7CgoKCgoKCgoKdHlw
ZWRlZiB2b2lkICggICogUEZOR0xTQU1QTEVDT1ZFUkFHRUFSQlBST0MpIChHTGNsYW1wZiB2YWx1
ZSwgR0xib29sZWFuIGludmVydCk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0FNUExFUEFTU0FS
QlBST0MpIChHTGVudW0gcGFzcyk7CgoKCgoKCgoKCgoKCiMgMTcxMSAiL3Vzci9pbmNsdWRlL0dM
L2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09NUFJFU1NFRFRFWElNQUdFM0RB
UkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJv
cmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9p
ZCAoICAqIFBGTkdMQ09NUFJFU1NFRFRFWElNQUdFMkRBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAq
ZGF0YSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09NUFJFU1NFRFRFWElNQUdFMURBUkJQUk9D
KSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xz
aXplaSB3aWR0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lk
ICpkYXRhKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT01QUkVTU0VEVEVYU1VCSU1BR0UzREFS
QlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
c2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZv
aWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPTVBSRVNTRURURVhTVUJJTUFHRTJE
QVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg
R0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICAq
IFBGTkdMQ09NUFJFU1NFRFRFWFNVQklNQUdFMURBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdM
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ
Rk5HTEdFVENPTVBSRVNTRURURVhJTUFHRUFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgdm9pZCAqaW1nKTsKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEJMRU5E
Q09MT1JFWFRQUk9DKSAoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1
ZSwgR0xjbGFtcGYgYWxwaGEpOwoKCgoKCgoKdHlwZWRlZiB2b2lkICggICogUEZOR0xQT0xZR09O
T0ZGU0VURVhUUFJPQykgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IGJpYXMpOwoKCgoKCgoKCgoK
Cgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWElNQUdFM0RFWFRQUk9DKSAoR0xlbnVtIHRhcmdl
dCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKdHlwZWRlZiB2b2lkICggICogUEZO
R0xURVhTVUJJTUFHRTNERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdF
VFRFWEZJTFRFUkZVTkNTR0lTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmaWx0ZXIsIEdM
ZmxvYXQgKndlaWdodHMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWEZJTFRFUkZVTkNTR0lT
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmaWx0ZXIsIEdMc2l6ZWkgbiwgY29uc3QgR0xm
bG9hdCAqd2VpZ2h0cyk7CgoKCgoKCgoKdHlwZWRlZiB2b2lkICggICogUEZOR0xURVhTVUJJTUFH
RTFERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBH
THNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpw
aXhlbHMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWFNVQklNQUdFMkRFWFRQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
Y29uc3QgR0x2b2lkICpwaXhlbHMpOwoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM
Q09QWVRFWElNQUdFMURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xpbnQg
Ym9yZGVyKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT1BZVEVYSU1BR0UyREVYVFBST0MpIChH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyKTsK
dHlwZWRlZiB2b2lkICggICogUEZOR0xDT1BZVEVYU1VCSU1BR0UxREVYVFBST0MpIChHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xz
aXplaSB3aWR0aCk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09QWVRFWFNVQklNQUdFMkRFWFRQ
Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsK
dHlwZWRlZiB2b2lkICggICogUEZOR0xDT1BZVEVYU1VCSU1BR0UzREVYVFBST0MpIChHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQg
em9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
OwoKCgoKIyAxODA0ICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwoKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xHRVRISVNUT0dSQU1FWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xib29sZWFuIHJl
c2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp2YWx1ZXMpOwp0eXBlZGVm
IHZvaWQgKCAgKiBQRk5HTEdFVEhJU1RPR1JBTVBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICog
UEZOR0xHRVRISVNUT0dSQU1QQVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVE1JTk1B
WEVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVzZXQsIEdMZW51bSBmb3JtYXQs
IEdMZW51bSB0eXBlLCBHTHZvaWQgKnZhbHVlcyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0VU
TUlOTUFYUEFSQU1FVEVSRlZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVE1JTk1BWFBBUkFNRVRF
UklWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7
CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMSElTVE9HUkFNRVhUUFJPQykgKEdMZW51bSB0YXJnZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xib29sZWFuIHNpbmspOwp0
eXBlZGVmIHZvaWQgKCAgKiBQRk5HTE1JTk1BWEVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rKTsKdHlwZWRlZiB2b2lkICggICogUEZO
R0xSRVNFVEhJU1RPR1JBTUVYVFBST0MpIChHTGVudW0gdGFyZ2V0KTsKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xSRVNFVE1JTk1BWEVYVFBST0MpIChHTGVudW0gdGFyZ2V0KTsKCgoKCiMgMTgzMyAi
L3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09OVk9M
VVRJT05GSUxURVIxREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQgKmltYWdlKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT05WT0xVVElPTkZJTFRFUjJERVhU
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQgKmltYWdlKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT05WT0xVVElPTlBBUkFNRVRFUkZF
WFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtcyk7CnR5
cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09OVk9MVVRJT05QQVJBTUVURVJGVkVYVFBST0MpIChHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYg
dm9pZCAoICAqIFBGTkdMQ09OVk9MVVRJT05QQVJBTUVURVJJRVhUUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xD
T05WT0xVVElPTlBBUkFNRVRFUklWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09QWUNPTlZP
TFVUSU9ORklMVEVSMURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoKTsKdHlwZWRlZiB2b2lkICggICog
UEZOR0xDT1BZQ09OVk9MVVRJT05GSUxURVIyREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRDT05WT0xVVElPTkZJTFRFUkVY
VFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lk
ICppbWFnZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0VUQ09OVk9MVVRJT05QQVJBTUVURVJG
VkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7
CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0VUQ09OVk9MVVRJT05QQVJBTUVURVJJVkVYVFBST0Mp
IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZv
aWQgKCAgKiBQRk5HTEdFVFNFUEFSQUJMRUZJTFRFUkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICpyb3csIEdMdm9pZCAqY29sdW1uLCBH
THZvaWQgKnNwYW4pOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNFUEFSQUJMRUZJTFRFUjJERVhU
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQgKnJvdywgY29uc3QgR0x2b2lkICpjb2x1bW4pOwoKCgoKCgoKCiMgMTg2MyAiL3Vzci9pbmNs
dWRlL0dML2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09MT1JUQUJMRVNHSVBS
T0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgs
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxlKTsKdHlwZWRl
ZiB2b2lkICggICogUEZOR0xDT0xPUlRBQkxFUEFSQU1FVEVSRlZTR0lQUk9DKSAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg
KCAgKiBQRk5HTENPTE9SVEFCTEVQQVJBTUVURVJJVlNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H
TENPUFlDT0xPUlRBQkxFU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CnR5cGVkZWYgdm9pZCAoICAq
IFBGTkdMR0VUQ09MT1JUQUJMRVNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgR0x2b2lkICp0YWJsZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0VU
Q09MT1JUQUJMRVBBUkFNRVRFUkZWU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRDT0xPUlRBQkxF
UEFSQU1FVEVSSVZTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zKTsKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUElYRUxURVhHRU5TR0lYUFJP
QykgKEdMZW51bSBtb2RlKTsKCgoKCgoKCgoKCgoKdHlwZWRlZiB2b2lkICggICogUEZOR0xQSVhF
TFRFWEdFTlBBUkFNRVRFUklTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0
eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFBJWEVMVEVYR0VOUEFSQU1FVEVSSVZTR0lTUFJPQykgKEdM
ZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM
UElYRUxURVhHRU5QQVJBTUVURVJGU0dJU1BST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0pOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFBJWEVMVEVYR0VOUEFSQU1FVEVSRlZTR0lTUFJP
QykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xHRVRQSVhFTFRFWEdFTlBBUkFNRVRFUklWU0dJU1BST0MpIChHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVFBJWEVMVEVYR0VOUEFS
QU1FVEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKCgoKCgoK
Cgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWElNQUdFNERTR0lTUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTHNpemVpIHNpemU0ZCwgR0xpbnQgYm9yZGVy
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhlbHMpOwp0eXBl
ZGVmIHZvaWQgKCAgKiBQRk5HTFRFWFNVQklNQUdFNERTR0lTUFJPQykgKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0
LCBHTGludCB3b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBk
ZXB0aCwgR0xzaXplaSBzaXplNGQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBH
THZvaWQgKnBpeGVscyk7CgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBHTGJvb2xlYW4gKCAg
KiBQRk5HTEFSRVRFWFRVUkVTUkVTSURFTlRFWFRQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVp
bnQgKnRleHR1cmVzLCBHTGJvb2xlYW4gKnJlc2lkZW5jZXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ
Rk5HTEJJTkRURVhUVVJFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCB0ZXh0dXJlKTsK
dHlwZWRlZiB2b2lkICggICogUEZOR0xERUxFVEVURVhUVVJFU0VYVFBST0MpIChHTHNpemVpIG4s
IGNvbnN0IEdMdWludCAqdGV4dHVyZXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFTlRFWFRV
UkVTRVhUUFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcyk7CnR5cGVkZWYgR0xib29s
ZWFuICggICogUEZOR0xJU1RFWFRVUkVFWFRQUk9DKSAoR0x1aW50IHRleHR1cmUpOwp0eXBlZGVm
IHZvaWQgKCAgKiBQRk5HTFBSSU9SSVRJWkVURVhUVVJFU0VYVFBST0MpIChHTHNpemVpIG4sIGNv
bnN0IEdMdWludCAqdGV4dHVyZXMsIGNvbnN0IEdMY2xhbXBmICpwcmlvcml0aWVzKTsKCgoKCgoK
Cgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTERFVEFJTFRFWEZVTkNTR0lTUFJPQykgKEdMZW51bSB0
YXJnZXQsIEdMc2l6ZWkgbiwgY29uc3QgR0xmbG9hdCAqcG9pbnRzKTsKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xHRVRERVRBSUxURVhGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGZsb2F0
ICpwb2ludHMpOwoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0hBUlBFTlRFWEZVTkNT
R0lTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbiwgY29uc3QgR0xmbG9hdCAqcG9pbnRz
KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRTSEFSUEVOVEVYRlVOQ1NHSVNQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0xmbG9hdCAqcG9pbnRzKTsKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9p
ZCAoICAqIFBGTkdMU0FNUExFTUFTS1NHSVNQUk9DKSAoR0xjbGFtcGYgdmFsdWUsIEdMYm9vbGVh
biBpbnZlcnQpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNBTVBMRVBBVFRFUk5TR0lTUFJPQykg
KEdMZW51bSBwYXR0ZXJuKTsKCgoKCgoKCgojIDE5ODkgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5o
IiAzCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEFSUkFZRUxFTUVOVEVYVFBST0MpIChHTGludCBp
KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT0xPUlBPSU5URVJFWFRQUk9DKSAoR0xpbnQgc2l6
ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZv
aWQgKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTERSQVdBUlJBWVNFWFRQUk9DKSAo
R0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xFREdFRkxBR1BPSU5URVJFWFRQUk9DKSAoR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMYm9vbGVhbiAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM
R0VUUE9JTlRFUlZFWFRQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTHZvaWQqICpwYXJhbXMpOwp0eXBl
ZGVmIHZvaWQgKCAgKiBQRk5HTElOREVYUE9JTlRFUkVYVFBST0MpIChHTGVudW0gdHlwZSwgR0xz
aXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CnR5cGVk
ZWYgdm9pZCAoICAqIFBGTkdMTk9STUFMUE9JTlRFUkVYVFBST0MpIChHTGVudW0gdHlwZSwgR0xz
aXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CnR5cGVk
ZWYgdm9pZCAoICAqIFBGTkdMVEVYQ09PUkRQT0lOVEVSRVhUUFJPQykgKEdMaW50IHNpemUsIEdM
ZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x2b2lkICpw
b2ludGVyKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xWRVJURVhQT0lOVEVSRVhUUFJPQykgKEdM
aW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0x2b2lkICpwb2ludGVyKTsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVk
ZWYgdm9pZCAoICAqIFBGTkdMQkxFTkRFUVVBVElPTkVYVFBST0MpIChHTGVudW0gbW9kZSk7CgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU1BSSVRF
UEFSQU1FVEVSRlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRl
ZiB2b2lkICggICogUEZOR0xTUFJJVEVQQVJBTUVURVJGVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1l
LCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNQUklURVBB
UkFNRVRFUklTR0lYUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZv
aWQgKCAgKiBQRk5HTFNQUklURVBBUkFNRVRFUklWU0dJWFBST0MpIChHTGVudW0gcG5hbWUsIGNv
bnN0IEdMaW50ICpwYXJhbXMpOwoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM
UE9JTlRQQVJBTUVURVJGRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5
cGVkZWYgdm9pZCAoICAqIFBGTkdMUE9JTlRQQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gcG5h
bWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUE9JTlRQ
QVJBTUVURVJGU0dJU1BST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVm
IHZvaWQgKCAgKiBQRk5HTFBPSU5UUEFSQU1FVEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKCgoKCgoKCgoKCgoKdHlwZWRlZiBHTGludCAoICAqIFBG
TkdMR0VUSU5TVFJVTUVOVFNTR0lYUFJPQykgKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H
TElOU1RSVU1FTlRTQlVGRkVSU0dJWFBST0MpIChHTHNpemVpIHNpemUsIEdMaW50ICpidWZmZXIp
Owp0eXBlZGVmIEdMaW50ICggICogUEZOR0xQT0xMSU5TVFJVTUVOVFNTR0lYUFJPQykgKEdMaW50
ICptYXJrZXJfcCk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVBRElOU1RSVU1FTlRTU0dJWFBS
T0MpIChHTGludCBtYXJrZXIpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNUQVJUSU5TVFJVTUVO
VFNTR0lYUFJPQykgKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNUT1BJTlNUUlVNRU5U
U1NHSVhQUk9DKSAoR0xpbnQgbWFya2VyKTsKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQ
Rk5HTEZSQU1FWk9PTVNHSVhQUk9DKSAoR0xpbnQgZmFjdG9yKTsKCgoKCgoKCnR5cGVkZWYgdm9p
ZCAoICAqIFBGTkdMVEFHU0FNUExFQlVGRkVSU0dJWFBST0MpICh2b2lkKTsKCgoKCgoKCgoKCnR5
cGVkZWYgdm9pZCAoICAqIFBGTkdMREVGT1JNQVRJT05NQVAzRFNHSVhQUk9DKSAoR0xlbnVtIHRh
cmdldCwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3Jk
ZXIsIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVy
LCBHTGRvdWJsZSB3MSwgR0xkb3VibGUgdzIsIEdMaW50IHdzdHJpZGUsIEdMaW50IHdvcmRlciwg
Y29uc3QgR0xkb3VibGUgKnBvaW50cyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMREVGT1JNQVRJ
T05NQVAzRlNHSVhQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1Miwg
R0xpbnQgdXN0cmlkZSwgR0xpbnQgdW9yZGVyLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyLCBHTGlu
dCB2c3RyaWRlLCBHTGludCB2b3JkZXIsIEdMZmxvYXQgdzEsIEdMZmxvYXQgdzIsIEdMaW50IHdz
dHJpZGUsIEdMaW50IHdvcmRlciwgY29uc3QgR0xmbG9hdCAqcG9pbnRzKTsKdHlwZWRlZiB2b2lk
ICggICogUEZOR0xERUZPUk1TR0lYUFJPQykgKEdMYml0ZmllbGQgbWFzayk7CnR5cGVkZWYgdm9p
ZCAoICAqIFBGTkdMTE9BRElERU5USVRZREVGT1JNQVRJT05NQVBTR0lYUFJPQykgKEdMYml0Zmll
bGQgbWFzayk7CgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFJFRkVSRU5DRVBMQU5FU0dJ
WFBST0MpIChjb25zdCBHTGRvdWJsZSAqZXF1YXRpb24pOwoKCgoKCgoKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xGTFVTSFJBU1RFUlNHSVhQUk9DKSAodm9pZCk7CgoKCgoKCgoKCgoKCnR5cGVkZWYg
dm9pZCAoICAqIFBGTkdMRk9HRlVOQ1NHSVNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTGZsb2F0
ICpwb2ludHMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVEZPR0ZVTkNTR0lTUFJPQykgKGNv
bnN0IEdMZmxvYXQgKnBvaW50cyk7CgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQ
Rk5HTElNQUdFVFJBTlNGT1JNUEFSQU1FVEVSSUhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTElNQUdFVFJBTlNG
T1JNUEFSQU1FVEVSRkhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMSU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJJ
VkhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFt
cyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMSU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJGVkhQUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsK
dHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRJTUFHRVRSQU5TRk9STVBBUkFNRVRFUklWSFBQUk9D
KSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2
b2lkICggICogUEZOR0xHRVRJTUFHRVRSQU5TRk9STVBBUkFNRVRFUkZWSFBQUk9DKSAoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwoKCgoKCgoKCgoKCgoKCgoK
dHlwZWRlZiB2b2lkICggICogUEZOR0xDT0xPUlNVQlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPUFlDT0xP
UlNVQlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3RhcnQsIEdMaW50IHgs
IEdMaW50IHksIEdMc2l6ZWkgd2lkdGgpOwoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBG
TkdMSElOVFBHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBtb2RlKTsKCgoKCgoKCgoKCnR5
cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09MT1JUQUJMRUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxlKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRD
T0xPUlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVENPTE9SVEFCTEVQ
QVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpw
YXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVENPTE9SVEFCTEVQQVJBTUVURVJGVkVY
VFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CgoK
CgoKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVExJU1RQQVJBTUVURVJGVlNH
SVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlw
ZWRlZiB2b2lkICggICogUEZOR0xHRVRMSVNUUEFSQU1FVEVSSVZTR0lYUFJPQykgKEdMdWludCBs
aXN0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H
TExJU1RQQVJBTUVURVJGU0dJWFBST0MpIChHTHVpbnQgbGlzdCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xMSVNUUEFSQU1FVEVSRlZTR0lYUFJP
QykgKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5
cGVkZWYgdm9pZCAoICAqIFBGTkdMTElTVFBBUkFNRVRFUklTR0lYUFJPQykgKEdMdWludCBsaXN0
LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xMSVNU
UEFSQU1FVEVSSVZTR0lYUFJPQykgKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50ICpwYXJhbXMpOwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAg
KiBQRk5HTElOREVYTUFURVJJQUxFWFRQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKTsK
CgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMSU5ERVhGVU5DRVhUUFJPQykgKEdMZW51bSBm
dW5jLCBHTGNsYW1wZiByZWYpOwoKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTExP
Q0tBUlJBWVNFWFRQUk9DKSAoR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwp0eXBlZGVmIHZv
aWQgKCAgKiBQRk5HTFVOTE9DS0FSUkFZU0VYVFBST0MpICh2b2lkKTsKCgoKCgoKCgp0eXBlZGVm
IHZvaWQgKCAgKiBQRk5HTENVTExQQVJBTUVURVJEVkVYVFBST0MpIChHTGVudW0gcG5hbWUsIEdM
ZG91YmxlICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENVTExQQVJBTUVURVJGVkVY
VFBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CgoKCgoKCgoKIyAyMzQwICIv
dXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwoKdHlwZWRlZiB2b2lkICggICogUEZOR0xGUkFHTUVO
VENPTE9STUFURVJJQUxTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSk7CnR5cGVk
ZWYgdm9pZCAoICAqIFBGTkdMRlJBR01FTlRMSUdIVEZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xGUkFH
TUVOVExJR0hURlZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBH
TGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEZSQUdNRU5UTElHSFRJU0dJ
WFBST0MpIChHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVm
IHZvaWQgKCAgKiBQRk5HTEZSQUdNRU5UTElHSFRJVlNHSVhQUk9DKSAoR0xlbnVtIGxpZ2h0LCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H
TEZSQUdNRU5UTElHSFRNT0RFTEZTR0lYUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJh
bSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMRlJBR01FTlRMSUdIVE1PREVMRlZTR0lYUFJPQykg
KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICog
UEZOR0xGUkFHTUVOVExJR0hUTU9ERUxJU0dJWFBST0MpIChHTGVudW0gcG5hbWUsIEdMaW50IHBh
cmFtKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xGUkFHTUVOVExJR0hUTU9ERUxJVlNHSVhQUk9D
KSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICog
UEZOR0xGUkFHTUVOVE1BVEVSSUFMRlNHSVhQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMRlJBR01FTlRNQVRFUklB
TEZWU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpw
YXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEZSQUdNRU5UTUFURVJJQUxJU0dJWFBST0Mp
IChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAo
ICAqIFBGTkdMRlJBR01FTlRNQVRFUklBTElWU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVt
IHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRG
UkFHTUVOVExJR0hURlZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVEZSQUdNRU5UTElHSFRJVlNH
SVhQUk9DKSAoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBl
ZGVmIHZvaWQgKCAgKiBQRk5HTEdFVEZSQUdNRU5UTUFURVJJQUxGVlNHSVhQUk9DKSAoR0xlbnVt
IGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICog
UEZOR0xHRVRGUkFHTUVOVE1BVEVSSUFMSVZTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTExJR0hURU5WSVNH
SVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CgoKCgoKCgoKCgoKCgoKCnR5cGVk
ZWYgdm9pZCAoICAqIFBGTkdMRFJBV1JBTkdFRUxFTUVOVFNFWFRQUk9DKSAoR0xlbnVtIG1vZGUs
IEdMdWludCBzdGFydCwgR0x1aW50IGVuZCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNv
bnN0IEdMdm9pZCAqaW5kaWNlcyk7CgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB2b2lkICggICog
UEZOR0xBUFBMWVRFWFRVUkVFWFRQUk9DKSAoR0xlbnVtIG1vZGUpOwp0eXBlZGVmIHZvaWQgKCAg
KiBQRk5HTFRFWFRVUkVMSUdIVEVYVFBST0MpIChHTGVudW0gcG5hbWUpOwp0eXBlZGVmIHZvaWQg
KCAgKiBQRk5HTFRFWFRVUkVNQVRFUklBTEVYVFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIG1v
ZGUpOwoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQVNZTkNNQVJL
RVJTR0lYUFJPQykgKEdMdWludCBtYXJrZXIpOwp0eXBlZGVmIEdMaW50ICggICogUEZOR0xGSU5J
U0hBU1lOQ1NHSVhQUk9DKSAoR0x1aW50ICptYXJrZXJwKTsKdHlwZWRlZiBHTGludCAoICAqIFBG
TkdMUE9MTEFTWU5DU0dJWFBST0MpIChHTHVpbnQgKm1hcmtlcnApOwp0eXBlZGVmIEdMdWludCAo
ICAqIFBGTkdMR0VOQVNZTkNNQVJLRVJTU0dJWFBST0MpIChHTHNpemVpIHJhbmdlKTsKdHlwZWRl
ZiB2b2lkICggICogUEZOR0xERUxFVEVBU1lOQ01BUktFUlNTR0lYUFJPQykgKEdMdWludCBtYXJr
ZXIsIEdMc2l6ZWkgcmFuZ2UpOwp0eXBlZGVmIEdMYm9vbGVhbiAoICAqIFBGTkdMSVNBU1lOQ01B
UktFUlNHSVhQUk9DKSAoR0x1aW50IG1hcmtlcik7CgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYg
dm9pZCAoICAqIFBGTkdMVkVSVEVYUE9JTlRFUlZJTlRFTFBST0MpIChHTGludCBzaXplLCBHTGVu
dW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM
Tk9STUFMUE9JTlRFUlZJTlRFTFBST0MpIChHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqcG9p
bnRlcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09MT1JQT0lOVEVSVklOVEVMUFJPQykgKEdM
aW50IHNpemUsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyKTsKdHlwZWRlZiB2
b2lkICggICogUEZOR0xURVhDT09SRFBPSU5URVJWSU5URUxQUk9DKSAoR0xpbnQgc2l6ZSwgR0xl
bnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIpOwoKCgoKCgoKCgoKCgoKCnR5cGVkZWYg
dm9pZCAoICAqIFBGTkdMUElYRUxUUkFOU0ZPUk1QQVJBTUVURVJJRVhUUFJPQykgKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H
TFBJWEVMVFJBTlNGT1JNUEFSQU1FVEVSRkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFBJWEVMVFJBTlNG
T1JNUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25z
dCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xQSVhFTFRSQU5TRk9STVBB
UkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xm
bG9hdCAqcGFyYW1zKTsKCgoKCgoKCgoKCgoKCgoKCiMgMjQ5NSAiL3Vzci9pbmNsdWRlL0dML2ds
ZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05EQVJZQ09MT1IzQkVYVFBST0Mp
IChHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKTsKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xTRUNPTkRBUllDT0xPUjNCVkVYVFBST0MpIChjb25zdCBHTGJ5dGUgKnYpOwp0eXBl
ZGVmIHZvaWQgKCAgKiBQRk5HTFNFQ09OREFSWUNPTE9SM0RFWFRQUk9DKSAoR0xkb3VibGUgcmVk
LCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM
U0VDT05EQVJZQ09MT1IzRFZFWFRQUk9DKSAoY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZv
aWQgKCAgKiBQRk5HTFNFQ09OREFSWUNPTE9SM0ZFWFRQUk9DKSAoR0xmbG9hdCByZWQsIEdMZmxv
YXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05EQVJZ
Q09MT1IzRlZFWFRQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBG
TkdMU0VDT05EQVJZQ09MT1IzSUVYVFBST0MpIChHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGlu
dCBibHVlKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xTRUNPTkRBUllDT0xPUjNJVkVYVFBST0Mp
IChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05EQVJZQ09MT1Iz
U0VYVFBST0MpIChHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9ydCBibHVlKTsKdHlw
ZWRlZiB2b2lkICggICogUEZOR0xTRUNPTkRBUllDT0xPUjNTVkVYVFBST0MpIChjb25zdCBHTHNo
b3J0ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xTRUNPTkRBUllDT0xPUjNVQkVYVFBST0Mp
IChHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlKTsKdHlwZWRlZiB2b2lk
ICggICogUEZOR0xTRUNPTkRBUllDT0xPUjNVQlZFWFRQUk9DKSAoY29uc3QgR0x1Ynl0ZSAqdik7
CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVUlFWFRQUk9DKSAoR0x1aW50
IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM
U0VDT05EQVJZQ09MT1IzVUlWRVhUUFJPQykgKGNvbnN0IEdMdWludCAqdik7CnR5cGVkZWYgdm9p
ZCAoICAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVVNFWFRQUk9DKSAoR0x1c2hvcnQgcmVkLCBHTHVz
aG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05E
QVJZQ09MT1IzVVNWRVhUUFJPQykgKGNvbnN0IEdMdXNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xTRUNPTkRBUllDT0xPUlBPSU5URVJFWFRQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVt
IHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHZvaWQgKnBvaW50ZXIpOwoKCgoKCgoKdHlwZWRlZiB2
b2lkICggICogUEZOR0xURVhUVVJFTk9STUFMRVhUUFJPQykgKEdMZW51bSBtb2RlKTsKCgoKCgoK
Cgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVudW0g
bW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwp0
eXBlZGVmIHZvaWQgKCAgKiBQRk5HTE1VTFRJRFJBV0VMRU1FTlRTRVhUUFJPQykgKEdMZW51bSBt
b2RlLCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmlu
ZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50KTsKCgoKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQ
Rk5HTEZPR0NPT1JERkVYVFBST0MpIChHTGZsb2F0IGNvb3JkKTsKdHlwZWRlZiB2b2lkICggICog
UEZOR0xGT0dDT09SREZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKmNvb3JkKTsKdHlwZWRlZiB2
b2lkICggICogUEZOR0xGT0dDT09SRERFWFRQUk9DKSAoR0xkb3VibGUgY29vcmQpOwp0eXBlZGVm
IHZvaWQgKCAgKiBQRk5HTEZPR0NPT1JERFZFWFRQUk9DKSAoY29uc3QgR0xkb3VibGUgKmNvb3Jk
KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xGT0dDT09SRFBPSU5URVJFWFRQUk9DKSAoR0xlbnVt
IHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwoKCgoKCgoKCiMg
MjU3OCAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdM
VEFOR0VOVDNCRVhUUFJPQykgKEdMYnl0ZSB0eCwgR0xieXRlIHR5LCBHTGJ5dGUgdHopOwp0eXBl
ZGVmIHZvaWQgKCAgKiBQRk5HTFRBTkdFTlQzQlZFWFRQUk9DKSAoY29uc3QgR0xieXRlICp2KTsK
dHlwZWRlZiB2b2lkICggICogUEZOR0xUQU5HRU5UM0RFWFRQUk9DKSAoR0xkb3VibGUgdHgsIEdM
ZG91YmxlIHR5LCBHTGRvdWJsZSB0eik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEFOR0VOVDNE
VkVYVFBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEFO
R0VOVDNGRVhUUFJPQykgKEdMZmxvYXQgdHgsIEdMZmxvYXQgdHksIEdMZmxvYXQgdHopOwp0eXBl
ZGVmIHZvaWQgKCAgKiBQRk5HTFRBTkdFTlQzRlZFWFRQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7
CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEFOR0VOVDNJRVhUUFJPQykgKEdMaW50IHR4LCBHTGlu
dCB0eSwgR0xpbnQgdHopOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRBTkdFTlQzSVZFWFRQUk9D
KSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRBTkdFTlQzU0VYVFBS
T0MpIChHTHNob3J0IHR4LCBHTHNob3J0IHR5LCBHTHNob3J0IHR6KTsKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xUQU5HRU5UM1NWRVhUUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYpOwp0eXBlZGVmIHZv
aWQgKCAgKiBQRk5HTEJJTk9STUFMM0JFWFRQUk9DKSAoR0xieXRlIGJ4LCBHTGJ5dGUgYnksIEdM
Ynl0ZSBieik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQklOT1JNQUwzQlZFWFRQUk9DKSAoY29u
c3QgR0xieXRlICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xCSU5PUk1BTDNERVhUUFJPQykg
KEdMZG91YmxlIGJ4LCBHTGRvdWJsZSBieSwgR0xkb3VibGUgYnopOwp0eXBlZGVmIHZvaWQgKCAg
KiBQRk5HTEJJTk9STUFMM0RWRVhUUFJPQykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2
b2lkICggICogUEZOR0xCSU5PUk1BTDNGRVhUUFJPQykgKEdMZmxvYXQgYngsIEdMZmxvYXQgYnks
IEdMZmxvYXQgYnopOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEJJTk9STUFMM0ZWRVhUUFJPQykg
KGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEJJTk9STUFMM0lFWFRQ
Uk9DKSAoR0xpbnQgYngsIEdMaW50IGJ5LCBHTGludCBieik7CnR5cGVkZWYgdm9pZCAoICAqIFBG
TkdMQklOT1JNQUwzSVZFWFRQUk9DKSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAg
KiBQRk5HTEJJTk9STUFMM1NFWFRQUk9DKSAoR0xzaG9ydCBieCwgR0xzaG9ydCBieSwgR0xzaG9y
dCBieik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQklOT1JNQUwzU1ZFWFRQUk9DKSAoY29uc3Qg
R0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEFOR0VOVFBPSU5URVJFWFRQUk9D
KSAoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwp0
eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEJJTk9STUFMUE9JTlRFUkVYVFBST0MpIChHTGVudW0gdHlw
ZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKdHlwZWRlZiB2b2lkICggICogUEZOR0xGSU5JU0hURVhUVVJFU1VOWFBST0MpICh2
b2lkKTsKCgoKCiMgMjYzOCAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9p
ZCAoICAqIFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JCU1VOUFJPQykgKEdMYnl0ZSBmYWN0b3IpOwp0
eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9SU1NVTlBST0MpIChHTHNob3J0
IGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JJU1VOUFJP
QykgKEdMaW50IGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0xPQkFMQUxQSEFGQUNU
T1JGU1VOUFJPQykgKEdMZmxvYXQgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHTE9C
QUxBTFBIQUZBQ1RPUkRTVU5QUk9DKSAoR0xkb3VibGUgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUlVCU1VOUFJPQykgKEdMdWJ5dGUgZmFjdG9yKTsKdHlw
ZWRlZiB2b2lkICggICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUlVTU1VOUFJPQykgKEdMdXNob3J0
IGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JVSVNVTlBS
T0MpIChHTHVpbnQgZmFjdG9yKTsKCgoKCiMgMjY1OSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0Lmgi
IDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlTVU5QUk9DKSAoR0x1
aW50IGNvZGUpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVTU1VOUFJP
QykgKEdMdXNob3J0IGNvZGUpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFJFUExBQ0VNRU5UQ09E
RVVCU1VOUFJPQykgKEdMdWJ5dGUgY29kZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFD
RU1FTlRDT0RFVUlWU1VOUFJPQykgKGNvbnN0IEdMdWludCAqY29kZSk7CnR5cGVkZWYgdm9pZCAo
ICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVVNWU1VOUFJPQykgKGNvbnN0IEdMdXNob3J0ICpjb2Rl
KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVOVENPREVVQlZTVU5QUk9DKSAoY29u
c3QgR0x1Ynl0ZSAqY29kZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RF
UE9JTlRFUlNVTlBST0MpIChHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9p
ZCogKnBvaW50ZXIpOwoKCgoKIyAyNzEyICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwoKdHlw
ZWRlZiB2b2lkICggICogUEZOR0xDT0xPUjRVQlZFUlRFWDJGU1VOUFJPQykgKEdMdWJ5dGUgciwg
R0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwp0
eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPTE9SNFVCVkVSVEVYMkZWU1VOUFJPQykgKGNvbnN0IEdM
dWJ5dGUgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPTE9S
NFVCVkVSVEVYM0ZTVU5QUk9DKSAoR0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5dGUgYiwgR0x1
Ynl0ZSBhLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xDT0xPUjRVQlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTHVieXRlICpjLCBjb25z
dCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT0xPUjNGVkVSVEVYM0ZTVU5Q
Uk9DKSAoR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCB4LCBHTGZsb2F0
IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09MT1IzRlZFUlRFWDNGVlNV
TlBST0MpIChjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lk
ICggICogUEZOR0xOT1JNQUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgbngsIEdMZmxvYXQg
bnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVm
IHZvaWQgKCAgKiBQRk5HTE5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQg
Km4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPTE9SNEZOT1JN
QUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIsIEdM
ZmxvYXQgYSwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBH
TGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09MT1I0Rk5PUk1B
TDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0IEdMZmxvYXQgKm4s
IGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWENPT1JEMkZWRVJU
RVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCB4LCBHTGZsb2F0IHks
IEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEVYQ09PUkQyRlZFUlRFWDNGVlNV
TlBST0MpIChjb25zdCBHTGZsb2F0ICp0YywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9p
ZCAoICAqIFBGTkdMVEVYQ09PUkQ0RlZFUlRFWDRGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9h
dCB0LCBHTGZsb2F0IHAsIEdMZmxvYXQgcSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg
eiwgR0xmbG9hdCB3KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xURVhDT09SRDRGVkVSVEVYNEZW
U1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2
b2lkICggICogUEZOR0xURVhDT09SRDJGQ09MT1I0VUJWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0
IHMsIEdMZmxvYXQgdCwgR0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5dGUgYiwgR0x1Ynl0ZSBh
LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggICogUEZO
R0xURVhDT09SRDJGQ09MT1I0VUJWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMs
IGNvbnN0IEdMdWJ5dGUgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ
Rk5HTFRFWENPT1JEMkZDT0xPUjNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0
IHQsIEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIsIEdMZmxvYXQgeCwgR0xmbG9hdCB5
LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWENPT1JEMkZDT0xPUjNGVkVS
VEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICpjLCBjb25z
dCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xURVhDT09SRDJGTk9STUFMM0ZW
RVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBueCwgR0xmbG9h
dCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVk
ZWYgdm9pZCAoICAqIFBGTkdMVEVYQ09PUkQyRk5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNv
bnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlw
ZWRlZiB2b2lkICggICogUEZOR0xURVhDT09SRDJGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZTVU5Q
Uk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0
IGIsIEdMZmxvYXQgYSwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9h
dCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEVYQ09P
UkQyRkNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGZsb2F0ICp0Yywg
Y29uc3QgR0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5
cGVkZWYgdm9pZCAoICAqIFBGTkdMVEVYQ09PUkQ0RkNPTE9SNEZOT1JNQUwzRlZFUlRFWDRGU1VO
UFJPQykgKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHAsIEdMZmxvYXQgcSwgR0xmbG9h
dCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZsb2F0
IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0
IHcpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFRFWENPT1JENEZDT0xPUjRGTk9STUFMM0ZWRVJU
RVg0RlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0
IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFJF
UExBQ0VNRU5UQ09ERVVJVkVSVEVYM0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHgsIEdM
ZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVOVENP
REVVSVZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICp2
KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNPTE9SNFVCVkVSVEVY
M0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTHVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0ZSBiLCBH
THVieXRlIGEsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQg
KCAgKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJQ09MT1I0VUJWRVJURVgzRlZTVU5QUk9DKSAoY29u
c3QgR0xlbnVtICpyYywgY29uc3QgR0x1Ynl0ZSAqYywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVk
ZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlDT0xPUjNGVkVSVEVYM0ZTVU5QUk9D
KSAoR0xlbnVtIHJjLCBHTGZsb2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IHgs
IEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVO
VENPREVVSUNPTE9SM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xlbnVtICpyYywgY29uc3Qg
R0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQ
TEFDRU1FTlRDT0RFVUlOT1JNQUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xmbG9h
dCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv
YXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlOT1JNQUwzRlZF
UlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25z
dCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNP
TE9SNEZOT1JNQUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xmbG9hdCByLCBHTGZs
b2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZs
b2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0Mp
IChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBj
b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xSRVBMQUNFTUVOVENPREVV
SVRFWENPT1JEMkZWRVJURVgzRlNVTlBST0MpIChHTGVudW0gcmMsIEdMZmxvYXQgcywgR0xmbG9h
dCB0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggICog
UEZOR0xSRVBMQUNFTUVOVENPREVVSVRFWENPT1JEMkZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3Qg
R0xlbnVtICpyYywgY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVm
IHZvaWQgKCAgKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09PUkQyRk5PUk1BTDNGVkVSVEVY
M0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBueCwg
R0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7
CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGTk9STUFM
M0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xlbnVtICpyYywgY29uc3QgR0xmbG9hdCAqdGMs
IGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ
Rk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09PUkQyRkNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGU1VO
UFJPQykgKEdMZW51bSByYywgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgciwgR0xmbG9h
dCBnLCBHTGZsb2F0IGIsIEdMZmxvYXQgYSwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9h
dCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAq
IFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZW
U1VOUFJPQykgKGNvbnN0IEdMZW51bSAqcmMsIGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZs
b2F0ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKCgoKCgoKCnR5cGVk
ZWYgdm9pZCAoICAqIFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVFWFRQUk9DKSAoR0xlbnVtIHNmYWN0
b3JSR0IsIEdMZW51bSBkZmFjdG9yUkdCLCBHTGVudW0gc2ZhY3RvckFscGhhLCBHTGVudW0gZGZh
Y3RvckFscGhhKTsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
dHlwZWRlZiB2b2lkICggICogUEZOR0xWRVJURVhXRUlHSFRGRVhUUFJPQykgKEdMZmxvYXQgd2Vp
Z2h0KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xWRVJURVhXRUlHSFRGVkVYVFBST0MpIChjb25z
dCBHTGZsb2F0ICp3ZWlnaHQpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFZFUlRFWFdFSUdIVFBP
SU5URVJFWFRQUk9DKSAoR0xzaXplaSBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUs
IGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBG
TkdMRkxVU0hWRVJURVhBUlJBWVJBTkdFTlZQUk9DKSAodm9pZCk7CnR5cGVkZWYgdm9pZCAoICAq
IFBGTkdMVkVSVEVYQVJSQVlSQU5HRU5WUFJPQykgKEdMc2l6ZWkgc2l6ZSwgY29uc3QgR0x2b2lk
ICpwb2ludGVyKTsKCgoKCiMgMjg0MSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKCnR5cGVk
ZWYgdm9pZCAoICAqIFBGTkdMQ09NQklORVJQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xDT01CSU5F
UlBBUkFNRVRFUkZOVlBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVm
IHZvaWQgKCAgKiBQRk5HTENPTUJJTkVSUEFSQU1FVEVSSVZOVlBST0MpIChHTGVudW0gcG5hbWUs
IGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTENPTUJJTkVSUEFS
QU1FVEVSSU5WUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQg
KCAgKiBQRk5HTENPTUJJTkVSSU5QVVROVlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0
aW9uLCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBpbnB1dCwgR0xlbnVtIG1hcHBpbmcsIEdMZW51
bSBjb21wb25lbnRVc2FnZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMQ09NQklORVJPVVRQVVRO
VlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9uLCBHTGVudW0gYWJPdXRwdXQsIEdM
ZW51bSBjZE91dHB1dCwgR0xlbnVtIHN1bU91dHB1dCwgR0xlbnVtIHNjYWxlLCBHTGVudW0gYmlh
cywgR0xib29sZWFuIGFiRG90UHJvZHVjdCwgR0xib29sZWFuIGNkRG90UHJvZHVjdCwgR0xib29s
ZWFuIG11eFN1bSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMRklOQUxDT01CSU5FUklOUFVUTlZQ
Uk9DKSAoR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gaW5wdXQsIEdMZW51bSBtYXBwaW5nLCBHTGVu
dW0gY29tcG9uZW50VXNhZ2UpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVENPTUJJTkVSSU5Q
VVRQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51
bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg
KCAgKiBQRk5HTEdFVENPTUJJTkVSSU5QVVRQQVJBTUVURVJJVk5WUFJPQykgKEdMZW51bSBzdGFn
ZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zKTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xHRVRDT01CSU5FUk9VVFBVVFBBUkFNRVRF
UkZWTlZQUk9DKSAoR0xlbnVtIHN0YWdlLCBHTGVudW0gcG9ydGlvbiwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVENPTUJJTkVST1VUUFVU
UEFSQU1FVEVSSVZOVlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9uLCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTEdFVEZJTkFMQ09N
QklORVJJTlBVVFBBUkFNRVRFUkZWTlZQUk9DKSAoR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMR0VURklOQUxDT01C
SU5FUklOUFVUUEFSQU1FVEVSSVZOVlBST0MpIChHTGVudW0gdmFyaWFibGUsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcyk7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xSRVNJWkVCVUZGRVJTTUVTQVBST0MpICh2b2lkKTsKCgoKCiMgMjkwOCAiL3Vzci9p
bmNsdWRlL0dML2dsZXh0LmgiIDMKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TMkRN
RVNBUFJPQykgKEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H
TFdJTkRPV1BPUzJEVk1FU0FQUk9DKSAoY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQg
KCAgKiBQRk5HTFdJTkRPV1BPUzJGTUVTQVBST0MpIChHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CnR5
cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TMkZWTUVTQVBST0MpIChjb25zdCBHTGZsb2F0
ICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xXSU5ET1dQT1MySU1FU0FQUk9DKSAoR0xpbnQg
eCwgR0xpbnQgeSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TMklWTUVTQVBST0Mp
IChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TMlNNRVNB
UFJPQykgKEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xXSU5E
T1dQT1MyU1ZNRVNBUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ
Rk5HTFdJTkRPV1BPUzNETUVTQVBST0MpIChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJs
ZSB6KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xXSU5ET1dQT1MzRFZNRVNBUFJPQykgKGNvbnN0
IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggICogUEZOR0xXSU5ET1dQT1MzRk1FU0FQUk9D
KSAoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICAqIFBG
TkdMV0lORE9XUE9TM0ZWTUVTQVBST0MpIChjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lk
ICggICogUEZOR0xXSU5ET1dQT1MzSU1FU0FQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQg
eik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TM0lWTUVTQVBST0MpIChjb25zdCBH
TGludCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TM1NNRVNBUFJPQykgKEdM
c2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFdJ
TkRPV1BPUzNTVk1FU0FQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICAq
IFBGTkdMV0lORE9XUE9TNERNRVNBUFJPQykgKEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91
YmxlIHosIEdMZG91YmxlIHcpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFdJTkRPV1BPUzREVk1F
U0FQUk9DKSAoY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFdJTkRP
V1BPUzRGTUVTQVBST0MpIChHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0
IHcpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFdJTkRPV1BPUzRGVk1FU0FQUk9DKSAoY29uc3Qg
R0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMV0lORE9XUE9TNElNRVNBUFJPQykg
KEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ
Rk5HTFdJTkRPV1BPUzRJVk1FU0FQUk9DKSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQg
KCAgKiBQRk5HTFdJTkRPV1BPUzRTTUVTQVBST0MpIChHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xz
aG9ydCB6LCBHTHNob3J0IHcpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFdJTkRPV1BPUzRTVk1F
U0FQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CgoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAq
IFBGTkdMTVVMVElNT0RFRFJBV0FSUkFZU0lCTVBST0MpIChHTGVudW0gbW9kZSwgY29uc3QgR0xp
bnQgKmZpcnN0LCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQsIEdMaW50
IG1vZGVzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTE1VTFRJTU9ERURSQVdFTEVNRU5U
U0lCTVBST0MpIChjb25zdCBHTGVudW0gKm1vZGUsIGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBHTGVu
dW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqaW5kaWNlcywgR0xzaXplaSBwcmltY291bnQsIEdMaW50
IG1vZGVzdHJpZGUpOwoKCgoKIyAyOTYwICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwoKdHlw
ZWRlZiB2b2lkICggICogUEZOR0xDT0xPUlBPSU5URVJMSVNUSUJNUFJPQykgKEdMaW50IHNpemUs
IEdMZW51bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50
IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMU0VDT05EQVJZQ09MT1JQT0lOVEVS
TElTVElCTVBST0MpIChHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xpbnQgc3RyaWRlLCBjb25z
dCBHTHZvaWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAgKiBQ
Rk5HTEVER0VGTEFHUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xpbnQgc3RyaWRlLCBjb25zdCBHTGJv
b2xlYW4qICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H
TEZPR0NPT1JEUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xlbnVtIHR5cGUsIEdMaW50IHN0cmlkZSwg
Y29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRlZiB2b2lkICgg
ICogUEZOR0xJTkRFWFBPSU5URVJMSVNUSUJNUFJPQykgKEdMZW51bSB0eXBlLCBHTGludCBzdHJp
ZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9p
ZCAoICAqIFBGTkdMTk9STUFMUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xlbnVtIHR5cGUsIEdMaW50
IHN0cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRl
ZiB2b2lkICggICogUEZOR0xURVhDT09SRFBPSU5URVJMSVNUSUJNUFJPQykgKEdMaW50IHNpemUs
IEdMZW51bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50
IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVkVSVEVYUE9JTlRFUkxJU1RJQk1Q
Uk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMaW50IHN0cmlkZSwgY29uc3QgR0x2b2lk
KiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEJVRkZFUk1BU0szREZYUFJPQykgKEdMdWludCBt
YXNrKTsKCgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAgKiBQRk5HTFNBTVBMRU1BU0tFWFRQUk9DKSAo
R0xjbGFtcGYgdmFsdWUsIEdMYm9vbGVhbiBpbnZlcnQpOwp0eXBlZGVmIHZvaWQgKCAgKiBQRk5H
TFNBTVBMRVBBVFRFUk5FWFRQUk9DKSAoR0xlbnVtIHBhdHRlcm4pOwoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMVEVYVFVSRUNPTE9STUFTS1NHSVNQUk9DKSAo
R0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWFu
IGFscGhhKTsKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICAqIFBGTkdMSUdMT09JTlRFUkZBQ0VTR0lY
UFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0x2b2lkICpwYXJhbXMpOwoKCgoKCgoKCn0KCgoK
IyAyMjQ1ICIvdXNyL2luY2x1ZGUvR0wvZ2wuaCIgMiAzCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoK
Cn0KCgoKIyAyNCAicHAyXzRfdG9iZW5raW4uY3BwIiAyCgojIDEgIi91c3IvaW5jbHVkZS9HTC9n
bHUuaCIgMSAzCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAi
QyIgewoKCiAKCiAKCgoKIAoKCgogCgoKCgogCgoKCiAKCgoKCgogCiAKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgogCgoKCgoKIAogCgogCgoKCgogCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgog
CgoKCmNsYXNzIEdMVW51cmJzOwpjbGFzcyBHTFVxdWFkcmljOwpjbGFzcyBHTFV0ZXNzZWxhdG9y
OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBHTFVudXJicyBHTFVudXJic09iajsKdHlwZWRlZiBzdHJ1
Y3QgR0xVcXVhZHJpYyBHTFVxdWFkcmljT2JqOwp0eXBlZGVmIHN0cnVjdCBHTFV0ZXNzZWxhdG9y
IEdMVXRlc3NlbGF0b3JPYmo7CnR5cGVkZWYgc3RydWN0IEdMVXRlc3NlbGF0b3IgR0xVdHJpYW5n
dWxhdG9yT2JqOwoKCgogCnR5cGVkZWYgR0x2b2lkICgqX0dMVWZ1bmNwdHIpKEdMdm9pZCk7Cgpl
eHRlcm4gdm9pZCBnbHVCZWdpbkN1cnZlIChHTFVudXJicyogbnVyYik7CmV4dGVybiB2b2lkIGds
dUJlZ2luUG9seWdvbiAoR0xVdGVzc2VsYXRvciogdGVzcyk7CmV4dGVybiB2b2lkIGdsdUJlZ2lu
U3VyZmFjZSAoR0xVbnVyYnMqIG51cmIpOwpleHRlcm4gdm9pZCBnbHVCZWdpblRyaW0gKEdMVW51
cmJzKiBudXJiKTsKZXh0ZXJuIEdMaW50IGdsdUJ1aWxkMURNaXBtYXBMZXZlbHMgKEdMZW51bSB0
YXJnZXQsIEdMaW50IGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgR0xpbnQgbGV2ZWwsIEdMaW50IGJhc2UsIEdMaW50IG1heCwgY29uc3Qg
dm9pZCAqZGF0YSk7CmV4dGVybiBHTGludCBnbHVCdWlsZDFETWlwbWFwcyAoR0xlbnVtIHRhcmdl
dCwgR0xpbnQgaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBjb25zdCB2b2lkICpkYXRhKTsKZXh0ZXJuIEdMaW50IGdsdUJ1aWxkMkRNaXBt
YXBMZXZlbHMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IGxl
dmVsLCBHTGludCBiYXNlLCBHTGludCBtYXgsIGNvbnN0IHZvaWQgKmRhdGEpOwpleHRlcm4gR0xp
bnQgZ2x1QnVpbGQyRE1pcG1hcHMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGludGVybmFsRm9ybWF0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIGNvbnN0IHZvaWQgKmRhdGEpOwpleHRlcm4gR0xpbnQgZ2x1QnVpbGQzRE1pcG1hcExldmVs
cyAoR0xlbnVtIHRhcmdldCwgR0xpbnQgaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
R0xpbnQgbGV2ZWwsIEdMaW50IGJhc2UsIEdMaW50IG1heCwgY29uc3Qgdm9pZCAqZGF0YSk7CmV4
dGVybiBHTGludCBnbHVCdWlsZDNETWlwbWFwcyAoR0xlbnVtIHRhcmdldCwgR0xpbnQgaW50ZXJu
YWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqZGF0YSk7CmV4dGVybiBHTGJv
b2xlYW4gZ2x1Q2hlY2tFeHRlbnNpb24gKGNvbnN0IEdMdWJ5dGUgKmV4dE5hbWUsIGNvbnN0IEdM
dWJ5dGUgKmV4dFN0cmluZyk7CmV4dGVybiB2b2lkIGdsdUN5bGluZGVyIChHTFVxdWFkcmljKiBx
dWFkLCBHTGRvdWJsZSBiYXNlLCBHTGRvdWJsZSB0b3AsIEdMZG91YmxlIGhlaWdodCwgR0xpbnQg
c2xpY2VzLCBHTGludCBzdGFja3MpOwpleHRlcm4gdm9pZCBnbHVEZWxldGVOdXJic1JlbmRlcmVy
IChHTFVudXJicyogbnVyYik7CmV4dGVybiB2b2lkIGdsdURlbGV0ZVF1YWRyaWMgKEdMVXF1YWRy
aWMqIHF1YWQpOwpleHRlcm4gdm9pZCBnbHVEZWxldGVUZXNzIChHTFV0ZXNzZWxhdG9yKiB0ZXNz
KTsKZXh0ZXJuIHZvaWQgZ2x1RGlzayAoR0xVcXVhZHJpYyogcXVhZCwgR0xkb3VibGUgaW5uZXIs
IEdMZG91YmxlIG91dGVyLCBHTGludCBzbGljZXMsIEdMaW50IGxvb3BzKTsKZXh0ZXJuIHZvaWQg
Z2x1RW5kQ3VydmUgKEdMVW51cmJzKiBudXJiKTsKZXh0ZXJuIHZvaWQgZ2x1RW5kUG9seWdvbiAo
R0xVdGVzc2VsYXRvciogdGVzcyk7CmV4dGVybiB2b2lkIGdsdUVuZFN1cmZhY2UgKEdMVW51cmJz
KiBudXJiKTsKZXh0ZXJuIHZvaWQgZ2x1RW5kVHJpbSAoR0xVbnVyYnMqIG51cmIpOwpleHRlcm4g
Y29uc3QgR0x1Ynl0ZSAqIGdsdUVycm9yU3RyaW5nIChHTGVudW0gZXJyb3IpOwpleHRlcm4gdm9p
ZCBnbHVHZXROdXJic1Byb3BlcnR5IChHTFVudXJicyogbnVyYiwgR0xlbnVtIHByb3BlcnR5LCBH
TGZsb2F0KiBkYXRhKTsKZXh0ZXJuIGNvbnN0IEdMdWJ5dGUgKiBnbHVHZXRTdHJpbmcgKEdMZW51
bSBuYW1lKTsKZXh0ZXJuIHZvaWQgZ2x1R2V0VGVzc1Byb3BlcnR5IChHTFV0ZXNzZWxhdG9yKiB0
ZXNzLCBHTGVudW0gd2hpY2gsIEdMZG91YmxlKiBkYXRhKTsKZXh0ZXJuIHZvaWQgZ2x1TG9hZFNh
bXBsaW5nTWF0cmljZXMgKEdMVW51cmJzKiBudXJiLCBjb25zdCBHTGZsb2F0ICptb2RlbCwgY29u
c3QgR0xmbG9hdCAqcGVyc3BlY3RpdmUsIGNvbnN0IEdMaW50ICp2aWV3KTsKZXh0ZXJuIHZvaWQg
Z2x1TG9va0F0IChHTGRvdWJsZSBleWVYLCBHTGRvdWJsZSBleWVZLCBHTGRvdWJsZSBleWVaLCBH
TGRvdWJsZSBjZW50ZXJYLCBHTGRvdWJsZSBjZW50ZXJZLCBHTGRvdWJsZSBjZW50ZXJaLCBHTGRv
dWJsZSB1cFgsIEdMZG91YmxlIHVwWSwgR0xkb3VibGUgdXBaKTsKZXh0ZXJuIEdMVW51cmJzKiBn
bHVOZXdOdXJic1JlbmRlcmVyICh2b2lkKTsKZXh0ZXJuIEdMVXF1YWRyaWMqIGdsdU5ld1F1YWRy
aWMgKHZvaWQpOwpleHRlcm4gR0xVdGVzc2VsYXRvciogZ2x1TmV3VGVzcyAodm9pZCk7CmV4dGVy
biB2b2lkIGdsdU5leHRDb250b3VyIChHTFV0ZXNzZWxhdG9yKiB0ZXNzLCBHTGVudW0gdHlwZSk7
CmV4dGVybiB2b2lkIGdsdU51cmJzQ2FsbGJhY2sgKEdMVW51cmJzKiBudXJiLCBHTGVudW0gd2hp
Y2gsIF9HTFVmdW5jcHRyIENhbGxCYWNrRnVuYyk7CmV4dGVybiB2b2lkIGdsdU51cmJzQ2FsbGJh
Y2tEYXRhIChHTFVudXJicyogbnVyYiwgR0x2b2lkKiB1c2VyRGF0YSk7CmV4dGVybiB2b2lkIGds
dU51cmJzQ2FsbGJhY2tEYXRhRVhUIChHTFVudXJicyogbnVyYiwgR0x2b2lkKiB1c2VyRGF0YSk7
CmV4dGVybiB2b2lkIGdsdU51cmJzQ3VydmUgKEdMVW51cmJzKiBudXJiLCBHTGludCBrbm90Q291
bnQsIEdMZmxvYXQgKmtub3RzLCBHTGludCBzdHJpZGUsIEdMZmxvYXQgKmNvbnRyb2wsIEdMaW50
IG9yZGVyLCBHTGVudW0gdHlwZSk7CmV4dGVybiB2b2lkIGdsdU51cmJzUHJvcGVydHkgKEdMVW51
cmJzKiBudXJiLCBHTGVudW0gcHJvcGVydHksIEdMZmxvYXQgdmFsdWUpOwpleHRlcm4gdm9pZCBn
bHVOdXJic1N1cmZhY2UgKEdMVW51cmJzKiBudXJiLCBHTGludCBzS25vdENvdW50LCBHTGZsb2F0
KiBzS25vdHMsIEdMaW50IHRLbm90Q291bnQsIEdMZmxvYXQqIHRLbm90cywgR0xpbnQgc1N0cmlk
ZSwgR0xpbnQgdFN0cmlkZSwgR0xmbG9hdCogY29udHJvbCwgR0xpbnQgc09yZGVyLCBHTGludCB0
T3JkZXIsIEdMZW51bSB0eXBlKTsKZXh0ZXJuIHZvaWQgZ2x1T3J0aG8yRCAoR0xkb3VibGUgbGVm
dCwgR0xkb3VibGUgcmlnaHQsIEdMZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wKTsKZXh0ZXJu
IHZvaWQgZ2x1UGFydGlhbERpc2sgKEdMVXF1YWRyaWMqIHF1YWQsIEdMZG91YmxlIGlubmVyLCBH
TGRvdWJsZSBvdXRlciwgR0xpbnQgc2xpY2VzLCBHTGludCBsb29wcywgR0xkb3VibGUgc3RhcnQs
IEdMZG91YmxlIHN3ZWVwKTsKZXh0ZXJuIHZvaWQgZ2x1UGVyc3BlY3RpdmUgKEdMZG91YmxlIGZv
dnksIEdMZG91YmxlIGFzcGVjdCwgR0xkb3VibGUgek5lYXIsIEdMZG91YmxlIHpGYXIpOwpleHRl
cm4gdm9pZCBnbHVQaWNrTWF0cml4IChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSBk
ZWxYLCBHTGRvdWJsZSBkZWxZLCBHTGludCAqdmlld3BvcnQpOwpleHRlcm4gR0xpbnQgZ2x1UHJv
amVjdCAoR0xkb3VibGUgb2JqWCwgR0xkb3VibGUgb2JqWSwgR0xkb3VibGUgb2JqWiwgY29uc3Qg
R0xkb3VibGUgKm1vZGVsLCBjb25zdCBHTGRvdWJsZSAqcHJvaiwgY29uc3QgR0xpbnQgKnZpZXcs
IEdMZG91YmxlKiB3aW5YLCBHTGRvdWJsZSogd2luWSwgR0xkb3VibGUqIHdpblopOwpleHRlcm4g
dm9pZCBnbHVQd2xDdXJ2ZSAoR0xVbnVyYnMqIG51cmIsIEdMaW50IGNvdW50LCBHTGZsb2F0KiBk
YXRhLCBHTGludCBzdHJpZGUsIEdMZW51bSB0eXBlKTsKZXh0ZXJuIHZvaWQgZ2x1UXVhZHJpY0Nh
bGxiYWNrIChHTFVxdWFkcmljKiBxdWFkLCBHTGVudW0gd2hpY2gsIF9HTFVmdW5jcHRyIENhbGxC
YWNrRnVuYyk7CmV4dGVybiB2b2lkIGdsdVF1YWRyaWNEcmF3U3R5bGUgKEdMVXF1YWRyaWMqIHF1
YWQsIEdMZW51bSBkcmF3KTsKZXh0ZXJuIHZvaWQgZ2x1UXVhZHJpY05vcm1hbHMgKEdMVXF1YWRy
aWMqIHF1YWQsIEdMZW51bSBub3JtYWwpOwpleHRlcm4gdm9pZCBnbHVRdWFkcmljT3JpZW50YXRp
b24gKEdMVXF1YWRyaWMqIHF1YWQsIEdMZW51bSBvcmllbnRhdGlvbik7CmV4dGVybiB2b2lkIGds
dVF1YWRyaWNUZXh0dXJlIChHTFVxdWFkcmljKiBxdWFkLCBHTGJvb2xlYW4gdGV4dHVyZSk7CmV4
dGVybiBHTGludCBnbHVTY2FsZUltYWdlIChHTGVudW0gZm9ybWF0LCBHTHNpemVpIHdJbiwgR0xz
aXplaSBoSW4sIEdMZW51bSB0eXBlSW4sIGNvbnN0IHZvaWQgKmRhdGFJbiwgR0xzaXplaSB3T3V0
LCBHTHNpemVpIGhPdXQsIEdMZW51bSB0eXBlT3V0LCBHTHZvaWQqIGRhdGFPdXQpOwpleHRlcm4g
dm9pZCBnbHVTcGhlcmUgKEdMVXF1YWRyaWMqIHF1YWQsIEdMZG91YmxlIHJhZGl1cywgR0xpbnQg
c2xpY2VzLCBHTGludCBzdGFja3MpOwpleHRlcm4gdm9pZCBnbHVUZXNzQmVnaW5Db250b3VyIChH
TFV0ZXNzZWxhdG9yKiB0ZXNzKTsKZXh0ZXJuIHZvaWQgZ2x1VGVzc0JlZ2luUG9seWdvbiAoR0xV
dGVzc2VsYXRvciogdGVzcywgR0x2b2lkKiBkYXRhKTsKZXh0ZXJuIHZvaWQgZ2x1VGVzc0NhbGxi
YWNrIChHTFV0ZXNzZWxhdG9yKiB0ZXNzLCBHTGVudW0gd2hpY2gsIF9HTFVmdW5jcHRyIENhbGxC
YWNrRnVuYyk7CmV4dGVybiB2b2lkIGdsdVRlc3NFbmRDb250b3VyIChHTFV0ZXNzZWxhdG9yKiB0
ZXNzKTsKZXh0ZXJuIHZvaWQgZ2x1VGVzc0VuZFBvbHlnb24gKEdMVXRlc3NlbGF0b3IqIHRlc3Mp
OwpleHRlcm4gdm9pZCBnbHVUZXNzTm9ybWFsIChHTFV0ZXNzZWxhdG9yKiB0ZXNzLCBHTGRvdWJs
ZSB2YWx1ZVgsIEdMZG91YmxlIHZhbHVlWSwgR0xkb3VibGUgdmFsdWVaKTsKZXh0ZXJuIHZvaWQg
Z2x1VGVzc1Byb3BlcnR5IChHTFV0ZXNzZWxhdG9yKiB0ZXNzLCBHTGVudW0gd2hpY2gsIEdMZG91
YmxlIGRhdGEpOwpleHRlcm4gdm9pZCBnbHVUZXNzVmVydGV4IChHTFV0ZXNzZWxhdG9yKiB0ZXNz
LCBHTGRvdWJsZSAqbG9jYXRpb24sIEdMdm9pZCogZGF0YSk7CmV4dGVybiBHTGludCBnbHVVblBy
b2plY3QgKEdMZG91YmxlIHdpblgsIEdMZG91YmxlIHdpblksIEdMZG91YmxlIHdpblosIGNvbnN0
IEdMZG91YmxlICptb2RlbCwgY29uc3QgR0xkb3VibGUgKnByb2osIGNvbnN0IEdMaW50ICp2aWV3
LCBHTGRvdWJsZSogb2JqWCwgR0xkb3VibGUqIG9ialksIEdMZG91YmxlKiBvYmpaKTsKZXh0ZXJu
IEdMaW50IGdsdVVuUHJvamVjdDQgKEdMZG91YmxlIHdpblgsIEdMZG91YmxlIHdpblksIEdMZG91
YmxlIHdpblosIEdMZG91YmxlIGNsaXBXLCBjb25zdCBHTGRvdWJsZSAqbW9kZWwsIGNvbnN0IEdM
ZG91YmxlICpwcm9qLCBjb25zdCBHTGludCAqdmlldywgR0xkb3VibGUgbmVhciwgR0xkb3VibGUg
ZmFyLCBHTGRvdWJsZSogb2JqWCwgR0xkb3VibGUqIG9ialksIEdMZG91YmxlKiBvYmpaLCBHTGRv
dWJsZSogb2JqVyk7CgoKfQoKCgojIDI1ICJwcDJfNF90b2Jlbmtpbi5jcHAiIDIKCiMgMSAiL3Vz
ci9pbmNsdWRlL0dML2dsdXQuaCIgMSAzCgoKCiAKCiAKCgoKIyA1NiAiL3Vzci9pbmNsdWRlL0dM
L2dsdXQuaCIgMwoKCgoKCiAKCgoKCgoKCmV4dGVybiAiQyIgewoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoKCiAKCgoK
IAoKCgogCgoKCgoKIAoKCgoKIAoKCgojIDIyOCAiL3Vzci9pbmNsdWRlL0dML2dsdXQuaCIgMwoK
IApleHRlcm4gdm9pZCAqZ2x1dFN0cm9rZVJvbWFuOwpleHRlcm4gdm9pZCAqZ2x1dFN0cm9rZU1v
bm9Sb21hbjsKCiAKCgoKIApleHRlcm4gdm9pZCAqZ2x1dEJpdG1hcDlCeTE1OwpleHRlcm4gdm9p
ZCAqZ2x1dEJpdG1hcDhCeTEzOwpleHRlcm4gdm9pZCAqZ2x1dEJpdG1hcFRpbWVzUm9tYW4xMDsK
ZXh0ZXJuIHZvaWQgKmdsdXRCaXRtYXBUaW1lc1JvbWFuMjQ7CmV4dGVybiB2b2lkICpnbHV0Qml0
bWFwSGVsdmV0aWNhMTA7CmV4dGVybiB2b2lkICpnbHV0Qml0bWFwSGVsdmV0aWNhMTI7CmV4dGVy
biB2b2lkICpnbHV0Qml0bWFwSGVsdmV0aWNhMTg7CgogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKIAoKCgogCgoKCgogCiAKCgogCgoKCgoKCgoKIAoK
CiAKCgoKCgoKCgogCgogCgogCgoKCiAKZXh0ZXJuIHZvaWQgICBnbHV0SW5pdChpbnQgKmFyZ2Nw
LCBjaGFyICoqYXJndik7CmV4dGVybiB2b2lkICAgZ2x1dEluaXREaXNwbGF5TW9kZSh1bnNpZ25l
ZCBpbnQgbW9kZSk7CgpleHRlcm4gdm9pZCAgIGdsdXRJbml0RGlzcGxheVN0cmluZyhjb25zdCBj
aGFyICpzdHJpbmcpOwoKZXh0ZXJuIHZvaWQgICBnbHV0SW5pdFdpbmRvd1Bvc2l0aW9uKGludCB4
LCBpbnQgeSk7CmV4dGVybiB2b2lkICAgZ2x1dEluaXRXaW5kb3dTaXplKGludCB3aWR0aCwgaW50
IGhlaWdodCk7CmV4dGVybiB2b2lkICAgZ2x1dE1haW5Mb29wKHZvaWQpOwoKIApleHRlcm4gaW50
ICAgZ2x1dENyZWF0ZVdpbmRvdyhjb25zdCBjaGFyICp0aXRsZSk7CmV4dGVybiBpbnQgICBnbHV0
Q3JlYXRlU3ViV2luZG93KGludCB3aW4sIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KTsKZXh0ZXJuIHZvaWQgICBnbHV0RGVzdHJveVdpbmRvdyhpbnQgd2luKTsKZXh0ZXJuIHZv
aWQgICBnbHV0UG9zdFJlZGlzcGxheSh2b2lkKTsKCmV4dGVybiB2b2lkICAgZ2x1dFBvc3RXaW5k
b3dSZWRpc3BsYXkoaW50IHdpbik7CgpleHRlcm4gdm9pZCAgIGdsdXRTd2FwQnVmZmVycyh2b2lk
KTsKZXh0ZXJuIGludCAgIGdsdXRHZXRXaW5kb3codm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dFNl
dFdpbmRvdyhpbnQgd2luKTsKZXh0ZXJuIHZvaWQgICBnbHV0U2V0V2luZG93VGl0bGUoY29uc3Qg
Y2hhciAqdGl0bGUpOwpleHRlcm4gdm9pZCAgIGdsdXRTZXRJY29uVGl0bGUoY29uc3QgY2hhciAq
dGl0bGUpOwpleHRlcm4gdm9pZCAgIGdsdXRQb3NpdGlvbldpbmRvdyhpbnQgeCwgaW50IHkpOwpl
eHRlcm4gdm9pZCAgIGdsdXRSZXNoYXBlV2luZG93KGludCB3aWR0aCwgaW50IGhlaWdodCk7CmV4
dGVybiB2b2lkICAgZ2x1dFBvcFdpbmRvdyh2b2lkKTsKZXh0ZXJuIHZvaWQgICBnbHV0UHVzaFdp
bmRvdyh2b2lkKTsKZXh0ZXJuIHZvaWQgICBnbHV0SWNvbmlmeVdpbmRvdyh2b2lkKTsKZXh0ZXJu
IHZvaWQgICBnbHV0U2hvd1dpbmRvdyh2b2lkKTsKZXh0ZXJuIHZvaWQgICBnbHV0SGlkZVdpbmRv
dyh2b2lkKTsKCmV4dGVybiB2b2lkICAgZ2x1dEZ1bGxTY3JlZW4odm9pZCk7CmV4dGVybiB2b2lk
ICAgZ2x1dFNldEN1cnNvcihpbnQgY3Vyc29yKTsKCmV4dGVybiB2b2lkICAgZ2x1dFdhcnBQb2lu
dGVyKGludCB4LCBpbnQgeSk7CgoKIApleHRlcm4gdm9pZCAgIGdsdXRFc3RhYmxpc2hPdmVybGF5
KHZvaWQpOwpleHRlcm4gdm9pZCAgIGdsdXRSZW1vdmVPdmVybGF5KHZvaWQpOwpleHRlcm4gdm9p
ZCAgIGdsdXRVc2VMYXllcihHTGVudW0gbGF5ZXIpOwpleHRlcm4gdm9pZCAgIGdsdXRQb3N0T3Zl
cmxheVJlZGlzcGxheSh2b2lkKTsKCmV4dGVybiB2b2lkICAgZ2x1dFBvc3RXaW5kb3dPdmVybGF5
UmVkaXNwbGF5KGludCB3aW4pOwoKZXh0ZXJuIHZvaWQgICBnbHV0U2hvd092ZXJsYXkodm9pZCk7
CmV4dGVybiB2b2lkICAgZ2x1dEhpZGVPdmVybGF5KHZvaWQpOwoKCiAKZXh0ZXJuIGludCAgIGds
dXRDcmVhdGVNZW51KHZvaWQgKCopKGludCkpOwpleHRlcm4gdm9pZCAgIGdsdXREZXN0cm95TWVu
dShpbnQgbWVudSk7CmV4dGVybiBpbnQgICBnbHV0R2V0TWVudSh2b2lkKTsKZXh0ZXJuIHZvaWQg
ICBnbHV0U2V0TWVudShpbnQgbWVudSk7CmV4dGVybiB2b2lkICAgZ2x1dEFkZE1lbnVFbnRyeShj
b25zdCBjaGFyICpsYWJlbCwgaW50IHZhbHVlKTsKZXh0ZXJuIHZvaWQgICBnbHV0QWRkU3ViTWVu
dShjb25zdCBjaGFyICpsYWJlbCwgaW50IHN1Ym1lbnUpOwpleHRlcm4gdm9pZCAgIGdsdXRDaGFu
Z2VUb01lbnVFbnRyeShpbnQgaXRlbSwgY29uc3QgY2hhciAqbGFiZWwsIGludCB2YWx1ZSk7CmV4
dGVybiB2b2lkICAgZ2x1dENoYW5nZVRvU3ViTWVudShpbnQgaXRlbSwgY29uc3QgY2hhciAqbGFi
ZWwsIGludCBzdWJtZW51KTsKZXh0ZXJuIHZvaWQgICBnbHV0UmVtb3ZlTWVudUl0ZW0oaW50IGl0
ZW0pOwpleHRlcm4gdm9pZCAgIGdsdXRBdHRhY2hNZW51KGludCBidXR0b24pOwpleHRlcm4gdm9p
ZCAgIGdsdXREZXRhY2hNZW51KGludCBidXR0b24pOwoKIApleHRlcm4gdm9pZCAgIGdsdXREaXNw
bGF5RnVuYyh2b2lkICgqZnVuYykodm9pZCkpOwpleHRlcm4gdm9pZCAgIGdsdXRSZXNoYXBlRnVu
Yyh2b2lkICgqZnVuYykoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSk7CmV4dGVybiB2b2lkICAgZ2x1
dEtleWJvYXJkRnVuYyh2b2lkICgqZnVuYykodW5zaWduZWQgY2hhciBrZXksIGludCB4LCBpbnQg
eSkpOwpleHRlcm4gdm9pZCAgIGdsdXRNb3VzZUZ1bmModm9pZCAoKmZ1bmMpKGludCBidXR0b24s
IGludCBzdGF0ZSwgaW50IHgsIGludCB5KSk7CmV4dGVybiB2b2lkICAgZ2x1dE1vdGlvbkZ1bmMo
dm9pZCAoKmZ1bmMpKGludCB4LCBpbnQgeSkpOwpleHRlcm4gdm9pZCAgIGdsdXRQYXNzaXZlTW90
aW9uRnVuYyh2b2lkICgqZnVuYykoaW50IHgsIGludCB5KSk7CmV4dGVybiB2b2lkICAgZ2x1dEVu
dHJ5RnVuYyh2b2lkICgqZnVuYykoaW50IHN0YXRlKSk7CmV4dGVybiB2b2lkICAgZ2x1dFZpc2li
aWxpdHlGdW5jKHZvaWQgKCpmdW5jKShpbnQgc3RhdGUpKTsKZXh0ZXJuIHZvaWQgICBnbHV0SWRs
ZUZ1bmModm9pZCAoKmZ1bmMpKHZvaWQpKTsKZXh0ZXJuIHZvaWQgICBnbHV0VGltZXJGdW5jKHVu
c2lnbmVkIGludCBtaWxsaXMsIHZvaWQgKCpmdW5jKShpbnQgdmFsdWUpLCBpbnQgdmFsdWUpOwpl
eHRlcm4gdm9pZCAgIGdsdXRNZW51U3RhdGVGdW5jKHZvaWQgKCpmdW5jKShpbnQgc3RhdGUpKTsK
CmV4dGVybiB2b2lkICAgZ2x1dFNwZWNpYWxGdW5jKHZvaWQgKCpmdW5jKShpbnQga2V5LCBpbnQg
eCwgaW50IHkpKTsKZXh0ZXJuIHZvaWQgICBnbHV0U3BhY2ViYWxsTW90aW9uRnVuYyh2b2lkICgq
ZnVuYykoaW50IHgsIGludCB5LCBpbnQgeikpOwpleHRlcm4gdm9pZCAgIGdsdXRTcGFjZWJhbGxS
b3RhdGVGdW5jKHZvaWQgKCpmdW5jKShpbnQgeCwgaW50IHksIGludCB6KSk7CmV4dGVybiB2b2lk
ICAgZ2x1dFNwYWNlYmFsbEJ1dHRvbkZ1bmModm9pZCAoKmZ1bmMpKGludCBidXR0b24sIGludCBz
dGF0ZSkpOwpleHRlcm4gdm9pZCAgIGdsdXRCdXR0b25Cb3hGdW5jKHZvaWQgKCpmdW5jKShpbnQg
YnV0dG9uLCBpbnQgc3RhdGUpKTsKZXh0ZXJuIHZvaWQgICBnbHV0RGlhbHNGdW5jKHZvaWQgKCpm
dW5jKShpbnQgZGlhbCwgaW50IHZhbHVlKSk7CmV4dGVybiB2b2lkICAgZ2x1dFRhYmxldE1vdGlv
bkZ1bmModm9pZCAoKmZ1bmMpKGludCB4LCBpbnQgeSkpOwpleHRlcm4gdm9pZCAgIGdsdXRUYWJs
ZXRCdXR0b25GdW5jKHZvaWQgKCpmdW5jKShpbnQgYnV0dG9uLCBpbnQgc3RhdGUsIGludCB4LCBp
bnQgeSkpOwoKZXh0ZXJuIHZvaWQgICBnbHV0TWVudVN0YXR1c0Z1bmModm9pZCAoKmZ1bmMpKGlu
dCBzdGF0dXMsIGludCB4LCBpbnQgeSkpOwpleHRlcm4gdm9pZCAgIGdsdXRPdmVybGF5RGlzcGxh
eUZ1bmModm9pZCAoKmZ1bmMpKHZvaWQpKTsKCmV4dGVybiB2b2lkICAgZ2x1dFdpbmRvd1N0YXR1
c0Z1bmModm9pZCAoKmZ1bmMpKGludCBzdGF0ZSkpOwoKCmV4dGVybiB2b2lkICAgZ2x1dEtleWJv
YXJkVXBGdW5jKHZvaWQgKCpmdW5jKSh1bnNpZ25lZCBjaGFyIGtleSwgaW50IHgsIGludCB5KSk7
CmV4dGVybiB2b2lkICAgZ2x1dFNwZWNpYWxVcEZ1bmModm9pZCAoKmZ1bmMpKGludCBrZXksIGlu
dCB4LCBpbnQgeSkpOwpleHRlcm4gdm9pZCAgIGdsdXRKb3lzdGlja0Z1bmModm9pZCAoKmZ1bmMp
KHVuc2lnbmVkIGludCBidXR0b25NYXNrLCBpbnQgeCwgaW50IHksIGludCB6KSwgaW50IHBvbGxJ
bnRlcnZhbCk7CgoKCgogCmV4dGVybiB2b2lkICAgZ2x1dFNldENvbG9yKGludCwgR0xmbG9hdCBy
ZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSk7CmV4dGVybiBHTGZsb2F0ICAgZ2x1dEdl
dENvbG9yKGludCBuZHgsIGludCBjb21wb25lbnQpOwpleHRlcm4gdm9pZCAgIGdsdXRDb3B5Q29s
b3JtYXAoaW50IHdpbik7CgogCmV4dGVybiBpbnQgICBnbHV0R2V0KEdMZW51bSB0eXBlKTsKZXh0
ZXJuIGludCAgIGdsdXREZXZpY2VHZXQoR0xlbnVtIHR5cGUpOwoKIApleHRlcm4gaW50ICAgZ2x1
dEV4dGVuc2lvblN1cHBvcnRlZChjb25zdCBjaGFyICpuYW1lKTsKCgpleHRlcm4gaW50ICAgZ2x1
dEdldE1vZGlmaWVycyh2b2lkKTsKZXh0ZXJuIGludCAgIGdsdXRMYXllckdldChHTGVudW0gdHlw
ZSk7CgoKIApleHRlcm4gdm9pZCAgIGdsdXRCaXRtYXBDaGFyYWN0ZXIodm9pZCAqZm9udCwgaW50
IGNoYXJhY3Rlcik7CmV4dGVybiBpbnQgICBnbHV0Qml0bWFwV2lkdGgodm9pZCAqZm9udCwgaW50
IGNoYXJhY3Rlcik7CmV4dGVybiB2b2lkICAgZ2x1dFN0cm9rZUNoYXJhY3Rlcih2b2lkICpmb250
LCBpbnQgY2hhcmFjdGVyKTsKZXh0ZXJuIGludCAgIGdsdXRTdHJva2VXaWR0aCh2b2lkICpmb250
LCBpbnQgY2hhcmFjdGVyKTsKCmV4dGVybiBpbnQgICBnbHV0Qml0bWFwTGVuZ3RoKHZvaWQgKmZv
bnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0cmluZyk7CmV4dGVybiBpbnQgICBnbHV0U3Ryb2tl
TGVuZ3RoKHZvaWQgKmZvbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0cmluZyk7CgoKIApleHRl
cm4gdm9pZCAgIGdsdXRXaXJlU3BoZXJlKEdMZG91YmxlIHJhZGl1cywgR0xpbnQgc2xpY2VzLCBH
TGludCBzdGFja3MpOwpleHRlcm4gdm9pZCAgIGdsdXRTb2xpZFNwaGVyZShHTGRvdWJsZSByYWRp
dXMsIEdMaW50IHNsaWNlcywgR0xpbnQgc3RhY2tzKTsKZXh0ZXJuIHZvaWQgICBnbHV0V2lyZUNv
bmUoR0xkb3VibGUgYmFzZSwgR0xkb3VibGUgaGVpZ2h0LCBHTGludCBzbGljZXMsIEdMaW50IHN0
YWNrcyk7CmV4dGVybiB2b2lkICAgZ2x1dFNvbGlkQ29uZShHTGRvdWJsZSBiYXNlLCBHTGRvdWJs
ZSBoZWlnaHQsIEdMaW50IHNsaWNlcywgR0xpbnQgc3RhY2tzKTsKZXh0ZXJuIHZvaWQgICBnbHV0
V2lyZUN1YmUoR0xkb3VibGUgc2l6ZSk7CmV4dGVybiB2b2lkICAgZ2x1dFNvbGlkQ3ViZShHTGRv
dWJsZSBzaXplKTsKZXh0ZXJuIHZvaWQgICBnbHV0V2lyZVRvcnVzKEdMZG91YmxlIGlubmVyUmFk
aXVzLCBHTGRvdWJsZSBvdXRlclJhZGl1cywgR0xpbnQgc2lkZXMsIEdMaW50IHJpbmdzKTsKZXh0
ZXJuIHZvaWQgICBnbHV0U29saWRUb3J1cyhHTGRvdWJsZSBpbm5lclJhZGl1cywgR0xkb3VibGUg
b3V0ZXJSYWRpdXMsIEdMaW50IHNpZGVzLCBHTGludCByaW5ncyk7CmV4dGVybiB2b2lkICAgZ2x1
dFdpcmVEb2RlY2FoZWRyb24odm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dFNvbGlkRG9kZWNhaGVk
cm9uKHZvaWQpOwpleHRlcm4gdm9pZCAgIGdsdXRXaXJlVGVhcG90KEdMZG91YmxlIHNpemUpOwpl
eHRlcm4gdm9pZCAgIGdsdXRTb2xpZFRlYXBvdChHTGRvdWJsZSBzaXplKTsKZXh0ZXJuIHZvaWQg
ICBnbHV0V2lyZU9jdGFoZWRyb24odm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dFNvbGlkT2N0YWhl
ZHJvbih2b2lkKTsKZXh0ZXJuIHZvaWQgICBnbHV0V2lyZVRldHJhaGVkcm9uKHZvaWQpOwpleHRl
cm4gdm9pZCAgIGdsdXRTb2xpZFRldHJhaGVkcm9uKHZvaWQpOwpleHRlcm4gdm9pZCAgIGdsdXRX
aXJlSWNvc2FoZWRyb24odm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dFNvbGlkSWNvc2FoZWRyb24o
dm9pZCk7CgoKIApleHRlcm4gaW50ICAgZ2x1dFZpZGVvUmVzaXplR2V0KEdMZW51bSBwYXJhbSk7
CmV4dGVybiB2b2lkICAgZ2x1dFNldHVwVmlkZW9SZXNpemluZyh2b2lkKTsKZXh0ZXJuIHZvaWQg
ICBnbHV0U3RvcFZpZGVvUmVzaXppbmcodm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dFZpZGVvUmVz
aXplKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKZXh0ZXJuIHZvaWQgICBn
bHV0VmlkZW9QYW4oaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwoKIApleHRl
cm4gdm9pZCAgIGdsdXRSZXBvcnRFcnJvcnModm9pZCk7CgoKCiAKIAoKCgoKIAoKCgoKCmV4dGVy
biB2b2lkICAgZ2x1dElnbm9yZUtleVJlcGVhdChpbnQgaWdub3JlKTsKZXh0ZXJuIHZvaWQgICBn
bHV0U2V0S2V5UmVwZWF0KGludCByZXBlYXRNb2RlKTsKZXh0ZXJuIHZvaWQgICBnbHV0Rm9yY2VK
b3lzdGlja0Z1bmModm9pZCk7CgogCiAKCgoKCgoKCgpleHRlcm4gdm9pZCAgIGdsdXRHYW1lTW9k
ZVN0cmluZyhjb25zdCBjaGFyICpzdHJpbmcpOwpleHRlcm4gaW50ICAgZ2x1dEVudGVyR2FtZU1v
ZGUodm9pZCk7CmV4dGVybiB2b2lkICAgZ2x1dExlYXZlR2FtZU1vZGUodm9pZCk7CmV4dGVybiBp
bnQgICBnbHV0R2FtZU1vZGVHZXQoR0xlbnVtIG1vZGUpOwoKCgp9CgoKCgoKCgoKCgoKCgoKIyAy
NiAicHAyXzRfdG9iZW5raW4uY3BwIiAyCgoKIAoKIyAxICJ0b2Jlbmtpbl9yYXkuaCIgMQogCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCiAKIAogCgpjbGFzcyBHTGZsb2F0UG9p
bnQ7CmNsYXNzIFZlY3RvcjsKY2xhc3MgTGluZTsKY2xhc3MgUmF5OwoKCiAKIAogCgpjbGFzcyBH
TGZsb2F0UG9pbnQKewoJcHVibGljOgoJCUdMZmxvYXRQb2ludCgpOwoJCUdMZmxvYXRQb2ludChj
b25zdCBHTGZsb2F0UG9pbnQgJm8pOwoJCUdMZmxvYXRQb2ludChmbG9hdCBweCwgZmxvYXQgcHkp
OwoJCQoJCWZsb2F0IHgseTsKCgkJIAoJCWZsb2F0IG9wZXJhdG9yKihjb25zdCBHTGZsb2F0UG9p
bnQgJnApIGNvbnN0OwoJCUdMZmxvYXRQb2ludCBvcGVyYXRvciooZmxvYXQgcykgY29uc3Q7CgkJ
CgkJR0xmbG9hdFBvaW50IG9wZXJhdG9yKyhjb25zdCBHTGZsb2F0UG9pbnQgJnApIGNvbnN0OwoJ
CUdMZmxvYXRQb2ludCBvcGVyYXRvcisoZmxvYXQgcykgY29uc3Q7CgoJCUdMZmxvYXRQb2ludCBv
cGVyYXRvci0oY29uc3QgR0xmbG9hdFBvaW50ICZwKSBjb25zdDsKCQlHTGZsb2F0UG9pbnQgb3Bl
cmF0b3ItKGZsb2F0IHMpIGNvbnN0Owp9OwoKIAogCiAKCmNsYXNzIFZlY3RvciA6IHB1YmxpYyBH
TGZsb2F0UG9pbnQKewoJcHVibGljOgoJCVZlY3RvcigpOwoJCVZlY3Rvcihjb25zdCBHTGZsb2F0
UG9pbnQgJm8pOwoJCVZlY3RvcihmbG9hdCBweCwgZmxvYXQgcHkpOwoKCQlWZWN0b3IgZ2V0UGVy
cCgpIGNvbnN0OwoKfTsKCgogCiAKIAoKY2xhc3MgUmF5CnsKCXB1YmxpYzoKCQlWZWN0b3Igcyxj
OwoJCWZsb2F0IGdldEludGVyc2VjdFRpbWUoY29uc3QgTGluZSAmbCkgY29uc3Q7CgkJR0xmbG9h
dFBvaW50IGdldFBvaW50QXRUaW1lKGZsb2F0IHQpIGNvbnN0Owp9OwoKIAogCiAKCmNsYXNzIExp
bmUKewoJcHVibGljOgoJCUxpbmUoKTsKCQlMaW5lKGNvbnN0IEdMZmxvYXRQb2ludCAmcywgY29u
c3QgR0xmbG9hdFBvaW50ICZlKTsKCQkKCQlWZWN0b3IgbjsKCQlmbG9hdCBEOwoKCQl2b2lkIHNl
dEVuZFBvaW50cyhjb25zdCBHTGZsb2F0UG9pbnQgJnMsIGNvbnN0IEdMZmxvYXRQb2ludCAmZSk7
Cn07CgogCiAKIAoKY2xhc3MgV2FsbHMKewoJcHVibGljOgoJCUdMZmxvYXRQb2ludCB2ZXJ0aWNl
c1s4XTsKCQlMaW5lIHdhbGxzWzhdOwoKCQl2b2lkIHJlbmRlcigpIGNvbnN0OwoJCUxpbmUgZ2V0
Q2xvc2VzdExpbmUoY29uc3QgUmF5ICZyKSBjb25zdDsKfTsKCiAKIAogCgpHTGZsb2F0UG9pbnQ6
OkdMZmxvYXRQb2ludCgpCnsKCXggPSB5ID0gMDsKfQoKR0xmbG9hdFBvaW50OjpHTGZsb2F0UG9p
bnQoY29uc3QgR0xmbG9hdFBvaW50ICZvKQp7Cgl4ID0gby54OwoJeSA9IG8ueTsKfQoKR0xmbG9h
dFBvaW50OjpHTGZsb2F0UG9pbnQoZmxvYXQgcHgsIGZsb2F0IHB5KQp7Cgl4ID0gcHg7IHkgPSBw
eTsKfQoKZmxvYXQgR0xmbG9hdFBvaW50OjpvcGVyYXRvciooY29uc3QgR0xmbG9hdFBvaW50ICZw
KSBjb25zdAp7CglyZXR1cm4gKHgqcC54ICsgeSpwLnkpOwp9CgpHTGZsb2F0UG9pbnQgR0xmbG9h
dFBvaW50OjpvcGVyYXRvciooZmxvYXQgcykgY29uc3QKewoJcmV0dXJuIEdMZmxvYXRQb2ludCh4
KnMsIHkqcyk7Cn0KCkdMZmxvYXRQb2ludCBHTGZsb2F0UG9pbnQ6Om9wZXJhdG9yKyhjb25zdCBH
TGZsb2F0UG9pbnQgJnApIGNvbnN0CnsKCXJldHVybiBHTGZsb2F0UG9pbnQoeCtwLngsIHkrcC55
KTsKfQoKR0xmbG9hdFBvaW50IEdMZmxvYXRQb2ludDo6b3BlcmF0b3IrKGZsb2F0IHMpIGNvbnN0
CnsKCXJldHVybiBHTGZsb2F0UG9pbnQoeCtzLCB5K3MpOwp9CgpHTGZsb2F0UG9pbnQgR0xmbG9h
dFBvaW50OjpvcGVyYXRvci0oY29uc3QgR0xmbG9hdFBvaW50ICZwKSBjb25zdAp7CglyZXR1cm4g
R0xmbG9hdFBvaW50KHgtcC54LCB5LXAueSk7Cn0KCkdMZmxvYXRQb2ludCBHTGZsb2F0UG9pbnQ6
Om9wZXJhdG9yLShmbG9hdCBzKSBjb25zdAp7CglyZXR1cm4gR0xmbG9hdFBvaW50KHgtcywgeS1z
KTsKfQoKIAogCiAKClZlY3Rvcjo6VmVjdG9yKCk6IEdMZmxvYXRQb2ludCgpIHt9CgpWZWN0b3I6
OlZlY3Rvcihjb25zdCBHTGZsb2F0UG9pbnQgJm8pOiBHTGZsb2F0UG9pbnQobykge30KClZlY3Rv
cjo6VmVjdG9yKGZsb2F0IHB4LCBmbG9hdCBweSk6IEdMZmxvYXRQb2ludChweCxweSkge30KClZl
Y3RvciBWZWN0b3I6OmdldFBlcnAoKSBjb25zdAp7CglyZXR1cm4gVmVjdG9yKC0xKnksIHgpOwp9
CgoKIAogCiAKCmZsb2F0IFJheTo6Z2V0SW50ZXJzZWN0VGltZShjb25zdCBMaW5lICZsKSBjb25z
dAp7CglyZXR1cm4gKGwuRCAtIChsLm4qcykpIC8gKGwubipjKTsKfQoKR0xmbG9hdFBvaW50IFJh
eTo6Z2V0UG9pbnRBdFRpbWUoZmxvYXQgdCkgY29uc3QKewoJcmV0dXJuIHMgKyAoYyp0KTsKfQoK
IAogCiAKCkxpbmU6OkxpbmUoKQp7CglzZXRFbmRQb2ludHMoR0xmbG9hdFBvaW50KDAsMCksIEdM
ZmxvYXRQb2ludCgwLDApKTsKfQoKTGluZTo6TGluZShjb25zdCBHTGZsb2F0UG9pbnQgJnMsIGNv
bnN0IEdMZmxvYXRQb2ludCAmZSkKewoJc2V0RW5kUG9pbnRzKHMsZSk7Cn0KCnZvaWQgTGluZTo6
c2V0RW5kUG9pbnRzKGNvbnN0IEdMZmxvYXRQb2ludCAmcywgY29uc3QgR0xmbG9hdFBvaW50ICZl
KQp7CglWZWN0b3IgdiA9IGUgLSBzOwkKCgluID0gdi5nZXRQZXJwKCk7CglEID0gbiAqIHM7Cn0K
CiAKIAogCgp2b2lkIFdhbGxzOjpyZW5kZXIoKSBjb25zdAp7CglnbEJlZ2luKDB4MDAwMiApOwoK
CWZvcihpbnQgaSA9IDA7IGkgPCA4OyBpKyspewoJCWdsVmVydGV4MmYoMSwxKTsKCX0KCglnbEVu
ZCgpOwp9CiMgMzAgInBwMl80X3RvYmVua2luLmNwcCIgMgoKCiAKIAogCgpjb25zdCBjaGFyICpQ
Uk9CTEVNX05BTUUgPSAiQXV0aG9yOiBNYXJrIFRvYmVua2luOyBQcm9ncmFtbWluZyBQcm9qZWN0
IDI6IFByb2JsZW0gNCI7CmNvbnN0IGludCBzY3JlZW5XaWR0aCAgICA9IDY0MDsKY29uc3QgaW50
IHNjcmVlbkhlaWdodCAgID0gNDgwOwoKV2FsbHMgd2FsbHM7CgoKIAogCiAKCiAKIAogCgoKdm9p
ZCBkaXNwbGF5SGFuZGxlcigpIAp7IAoJZ2xDbGVhcigweDAwMDA0MDAwICk7CglnbEZsdXNoKCk7
IAp9Cgp2b2lkIG1vdXNlSGFuZGxlcihpbnQgYnV0dG9uLCBpbnQgc3RhdGUsIGludCB4LCBpbnQg
eSkKewoJaWYoIShidXR0b24gPT0gMCAgJiYgc3RhdGUgPT0gMCApKQoJCXJldHVybjsKCgkgCgkg
Cgp9CgogCgoKCnZvaWQga2V5Ym9hcmRIYW5kbGVyKHVuc2lnbmVkIGNoYXIga2V5LCBpbnQgeCwg
aW50IHkpCnsKCXN3aXRjaChrZXkpewoJCWNhc2UgMjcgOgoJCWNhc2UgJ3EnOgoJCWNhc2UgJ1En
OgoJCQlleGl0KDApOwoJCWJyZWFrOwoJfQp9CgogCiAKIAoKdm9pZCBpbml0R0woKQp7CgkKCWds
Q2xlYXJDb2xvcigxLjAsMS4wLDEuMCwwLjApOyAKCWdsQ29sb3IzZigwLDAsMCk7CgoJCglnbE1h
dHJpeE1vZGUoMHgxNzAxICk7IAoJZ2xMb2FkSWRlbnRpdHkoKTsgCglnbHVPcnRobzJEKDAuMCwg
c2NyZWVuV2lkdGgsIDAuMCwgc2NyZWVuSGVpZ2h0KTsgCgoJZ2xDbGVhcigweDAwMDA0MDAwICk7
IAoKfQogCnZvaWQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCnsKCWdsdXRJbml0KCZhcmdj
LCBhcmd2KTsgCglnbHV0SW5pdERpc3BsYXlNb2RlKDAgIHwgMCApOyAKCgoJZ2x1dEluaXRXaW5k
b3dTaXplKHNjcmVlbldpZHRoLCBzY3JlZW5IZWlnaHQpOyAKCWdsdXRJbml0V2luZG93UG9zaXRp
b24oMCwwKTsgCglnbHV0Q3JlYXRlV2luZG93KFBST0JMRU1fTkFNRSk7CgoJaW5pdEdMKCk7CgoK
CWdsdXREaXNwbGF5RnVuYyhkaXNwbGF5SGFuZGxlcik7IAoJZ2x1dEtleWJvYXJkRnVuYyhrZXli
b2FyZEhhbmRsZXIpOwoJZ2x1dE1vdXNlRnVuYyhtb3VzZUhhbmRsZXIpOwoJCgoJZ2x1dE1haW5M
b29wKCk7Cn0K


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

end of thread, other threads:[~2002-07-23 15:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-07-23  8:29 c++/7365: Use of extern integer constant causes ice lerdsuwa
  -- strict thread matches above, loose matches on Subject: below --
2002-07-20 11:46 tobenkin

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