This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

c++/1614: Internal compiler error in `output_die', at dwarf2out.c:5426



>Number:         1614
>Category:       c++
>Synopsis:       Internal compiler error in `output_die', at dwarf2out.c:5426
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Jan 11 01:16:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     alexb@cwi.nl
>Release:        gcc version 2.95.2 19991024 (release)
>Organization:
>Environment:
i386-redhat-linux
>Description:
Compiler dies and requests that I submit a bug report. (here it is)
The output:

../mpeglib/mpegvideoscan.h:43: Internal compiler error in `output_die', at dwarf2out.c:5426
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/faq.html#bugreport> for instructions.

It seems to crash on combining '-O4' and '-ggdb' when combining
this file, for ALL my other sourcefiles this does work...

I hope I have provided what you need,
I tried to follow the instructions...
>How-To-Repeat:
g++ -O4 -ggdb -c show.ii
>Fix:
g++ -O4 -c show.ii
or
g++ -ggdb -c show.ii
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="show.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="show.ii"

IyAxICJzaG93LmNwcCIKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgoKCiAKCgoK
CgoKCiAKIyAxMzcgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCgoKIAoKCgoKCgoKCgogCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDE5NSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoK
CiAKCgoKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCgoKCgoKIAoKCgoKIyA3MSAiL3Vzci9pbmNsdWRl
L3N5cy9jZGVmcy5oIiAzCgoKIAoKCgoKCgoKIAoKCgojIDEwMyAiL3Vzci9pbmNsdWRlL3N5cy9j
ZGVmcy5oIiAzCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoK
CgoKIAoKCgoKCgoKCgogCgoKCgoKCgojIDI0OSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIg
MwoKCiAKCgoKCgoKCgogCgoKCgoKIAoKIAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2dudS9z
dHVicy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjc3
ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCgoKCgojIDI3ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1y
ZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGlu
dXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3
ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAyIDMKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCnR5cGVkZWYgdm9pZCAq
X19nbnVjX3ZhX2xpc3Q7CgoKCiAKCiMgMTIyICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAy
MDkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
YXJnLmgiIDMKCgoKCiMgMzggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoj
IDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNy
L2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIu
OTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjkg
Ii91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiAKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRl
bnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRl
bnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDggIi91c3IvaW5jbHVk
ZS9iaXRzL3R5cGVzLmgiIDMKCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYg
dW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2
X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVk
IGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBf
X3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CQkgCnR5cGVk
ZWYgX191X2ludCBfX3VpZF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsJCSAKdHlwZWRl
ZiBfX3VfbG9uZyBfX2lub190OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CQkgCnR5cGVk
ZWYgX191X2ludCBfX25saW5rX3Q7IAkJIAp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CQkgCnR5
cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CQkgCnR5cGVkZWYgaW50IF9fcGlkX3Q7CQkJIAp0eXBl
ZGVmIGludCBfX3NzaXplX3Q7CQkJIAp0eXBlZGVmIGxvbmcgaW50IF9fcmxpbV90OwkJIAp0eXBl
ZGVmIF9fcXVhZF90IF9fcmxpbTY0X3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX2lkX3Q7CQkJIAoK
dHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsJCQkJIAoK
IAp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CQkJIAp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlw
ZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7CQkgCgwK
dHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
X19mZF9tYXNrOwoKIAoKCiAKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICAgCgoKCgoKICAg
IF9fZmRfbWFzayBfX2Zkc19iaXRzWzEwMjQgIC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpIF07
CgoKICB9IF9fZmRfc2V0OwoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgogCnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCiAKCiAKdHlwZWRlZiBsb25nIGludCBfX2Jsa2Nu
dF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBf
X2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCiAKdHlwZWRl
ZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRf
dDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBfX2lubzY0X3Q7CgogCnR5cGVkZWYgX19sb2ZmX3QgX19v
ZmY2NF90OwoKIAp0eXBlZGVmIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50
IF9fdF91c2NhbGFyX3Q7CgogCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKIAoKCgoKCiMgNDAg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJ
TEUgRklMRTsKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwog
CgoKCgoKIAoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxp
Yi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoK
CgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAK
CiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNs
dWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVk
aGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgIHdpbnRfdDsKCgoKCiAKCiAK
CiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTQgIi91c3IvaW5jbHVk
ZS9fR19jb25maWcuaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgaW50IF9HX2lu
dDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9H
X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5z
aWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkp
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl
X18gKF9fU0lfXykpKTsKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoK
CgoKCiMgMzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRh
cmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCiMgMTIyICIvdXNyL2xpYi9nY2MtbGli
L2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIyAyMDkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4y
L2luY2x1ZGUvc3RkYXJnLmgiIDMKCgoKCiMgNDggIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMK
CgoKCgoKCiMgNjcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CiMgOTggIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgpzdHJ1Y3QgX0lPX2p1bXBfdDsgIHN0cnVj
dCBfSU9fRklMRTsKCiAKCgoKCgoKCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgogCgpzdHJ1
Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9f
RklMRSAqX3NidWY7CiAgIAoKICAgCiAgaW50IF9wb3M7CiMgMTg2ICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMwoKfTsKCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsJCSAKCgogICAKICAg
CiAgY2hhciogX0lPX3JlYWRfcHRyOwkgCiAgY2hhciogX0lPX3JlYWRfZW5kOwkgCiAgY2hhciog
X0lPX3JlYWRfYmFzZTsJIAogIGNoYXIqIF9JT193cml0ZV9iYXNlOwkgCiAgY2hhciogX0lPX3dy
aXRlX3B0cjsJIAogIGNoYXIqIF9JT193cml0ZV9lbmQ7CSAKICBjaGFyKiBfSU9fYnVmX2Jhc2U7
CSAKICBjaGFyKiBfSU9fYnVmX2VuZDsJIAogICAKICBjaGFyICpfSU9fc2F2ZV9iYXNlOyAgCiAg
Y2hhciAqX0lPX2JhY2t1cF9iYXNlOyAgIAogIGNoYXIgKl9JT19zYXZlX2VuZDsgIAoKICBzdHJ1
Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBp
bnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZfdCAgIF9vbGRfb2Zmc2V0OyAgCgoK
ICAgCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9v
ZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgogICAKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CgoK
CgoKCgoKICBfX29mZjY0X3QgICBfb2Zmc2V0OwogICAKICBpbnQgX3VudXNlZDJbMTZdOwoKfTsK
CgoKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9J
T18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRf
OwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwoKCgoKCgoKCgoK
CiAKCiAKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAgKHZvaWQgKiAgX19jb29raWUs
IGNoYXIgKl9fYnVmLAoJCQkJICAgICAgIHNpemVfdCBfX25ieXRlcykgIDsKCiAKCgoKCgp0eXBl
ZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICAodm9pZCAqICBfX2Nvb2tpZSwgX19jb25zdCBj
aGFyICpfX2J1ZiwKCQkJCSAgICAgIHNpemVfdCBfX24pICA7CgogCgoKCgoKdHlwZWRlZiBpbnQg
X19pb19zZWVrX2ZuICAodm9pZCAqICBfX2Nvb2tpZSwgX19vZmZfdCAgIF9fcG9zLCBpbnQgX193
KSAgOwoKIAp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICAodm9pZCAqICBfX2Nvb2tpZSkgIDsK
CgojIDMxMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKCgoKCmV4dGVybiAiQyIgewoKCmV4dGVy
biBpbnQgX191bmRlcmZsb3cgIChfSU9fRklMRSAqKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBf
X3VmbG93ICAoX0lPX0ZJTEUgKikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAg
KF9JT19GSUxFICosIGludCkgIHRocm93ICgpICA7CgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gaW50
IF9JT19nZXRjICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IF9JT19w
dXRjICAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IF9J
T19mZW9mICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IF9JT19mZXJy
b3IgIChfSU9fRklMRSAqX19mcCkgIHRocm93ICgpICA7CgpleHRlcm4gaW50IF9JT19wZWVrY19s
b2NrZWQgIChfSU9fRklMRSAqX19mcCkgIHRocm93ICgpICA7CgogCgoKCmV4dGVybiB2b2lkIF9J
T19mbG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1
bmxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgX0lPX2Z0cnls
b2NrZmlsZSAgKF9JT19GSUxFICopICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKCgpleHRlcm4gaW50
IF9JT192ZnNjYW5mICAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0
cmljdCwKCQkJICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqX19yZXN0cmljdCkgIHRocm93ICgp
ICA7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmICAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0
IGNoYXIgKl9fcmVzdHJpY3QsCgkJCSAgICAgIF9fZ251Y192YV9saXN0ICkgIHRocm93ICgpICA7
CmV4dGVybiBfX3NzaXplX3QgICBfSU9fcGFkbiAgKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90
ICApICB0aHJvdyAoKSAgOwpleHRlcm4gc2l6ZV90ICAgX0lPX3NnZXRuICAoX0lPX0ZJTEUgKiwg
dm9pZCAqLCBzaXplX3QgICkgIHRocm93ICgpICA7CgpleHRlcm4gX19vZmY2NF90ICAgX0lPX3Nl
ZWtvZmYgIChfSU9fRklMRSAqLCBfX29mZjY0X3QgICwgaW50LCBpbnQpICB0aHJvdyAoKSAgOwpl
eHRlcm4gX19vZmY2NF90ICAgX0lPX3NlZWtwb3MgIChfSU9fRklMRSAqLCBfX29mZjY0X3QgICwg
aW50KSAgdGhyb3cgKCkgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhICAoX0lP
X0ZJTEUgKikgIHRocm93ICgpICA7CgoKfQoKCgojIDU3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MiAzCgoKIAoKdHlwZWRlZiBfX29mZl90ICBmcG9zX3Q7CgoKCgoKCgogCgoKCgoKIAoKCgoKCiAK
CgoKCgoKIAoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3Rk
aW9fbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTEw
ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCiAKZXh0ZXJuIEZJTEUgKnN0ZGluOwkJIApl
eHRlcm4gRklMRSAqc3Rkb3V0OwkJIApleHRlcm4gRklMRSAqc3RkZXJyOwkJIAoKCiAKZXh0ZXJu
IGludCByZW1vdmUgIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpICB0aHJvdyAoKSAgOwogCmV4
dGVybiBpbnQgcmVuYW1lICAoX19jb25zdCBjaGFyICpfX29sZCwgX19jb25zdCBjaGFyICpfX25l
dykgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIEZJTEUgKnRtcGZpbGUgICh2b2lkKSAgdGhyb3cg
KCkgIDsKCgoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnRtcG5hbSAgKGNoYXIgKl9fcykgIHRocm93
ICgpICA7CgoKIAoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yICAoY2hhciAqX19zKSAgdGhyb3cgKCkg
IDsKCgoKCiAKCgoKCgoKZXh0ZXJuIGNoYXIgKnRlbXBuYW0gIChfX2NvbnN0IGNoYXIgKl9fZGly
LCBfX2NvbnN0IGNoYXIgKl9fcGZ4KSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IGZjbG9z
ZSAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IGZmbHVzaCAgKEZJ
TEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2Vk
ICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoKCgoKCgogCmV4dGVybiBGSUxFICpm
b3BlbiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJCQkgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpICB0aHJvdyAoKSAgOwogCmV4dGVybiBGSUxFICpmcmVv
cGVuICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCgkJCSAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX21vZGVzLAoJCQkgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
KSAgdGhyb3cgKCkgIDsKIyAxOTcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCgoKCgoKCgog
CmV4dGVybiBGSUxFICpmZG9wZW4gIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSAg
dGhyb3cgKCkgIDsKCgojIDIyMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKIAoKZXh0ZXJu
IHZvaWQgc2V0YnVmICAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmlj
dCBfX2J1ZikgIHRocm93ICgpICA7CiAKCgpleHRlcm4gaW50IHNldHZidWYgIChGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkgaW50IF9fbW9kZXMs
IHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAgKEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCgkJCSAgICBz
aXplX3QgX19zaXplKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAgKEZJ
TEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IGZwcmludGYgIChGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAoJCQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LCAuLi4pICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgcHJpbnRmICAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgc3By
aW50ZiAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJCQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LCAuLi4pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHZmcHJpbnRmICAoRklM
RSAqX19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LAoJCQkgIF9fZ251Y192YV9saXN0ICBfX2FyZykgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCB2
cHJpbnRmICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJCQkgX19nbnVjX3Zh
X2xpc3QgIF9fYXJnKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHZzcHJpbnRmICAoY2hhciAq
X19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJ
CQkgIF9fZ251Y192YV9saXN0ICBfX2FyZykgIHRocm93ICgpICA7CgoKIApleHRlcm4gaW50IHNu
cHJpbnRmICAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgIHRocm93ICgpICAKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQg
X192c25wcmludGYgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAoJCQkg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICAgICBfX2dudWNfdmFf
bGlzdCAgX19hcmcpICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18g
KF9fcHJpbnRmX18sIDMsIDApKSk7CmV4dGVybiBpbnQgdnNucHJpbnRmICAoY2hhciAqX19yZXN0
cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LAoJCQkgICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICB0aHJvdyAoKSAgCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgoKIyAzMDIg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCiAKZXh0ZXJuIGludCBmc2NhbmYgIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLAoJCQlfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
IC4uLikgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBzY2FuZiAgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHNzY2FuZiAg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCV9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgLi4uKSAgdGhyb3cgKCkgIDsKCiMgMzMwICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMwoKCgogCmV4dGVybiBpbnQgZmdldGMgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7
CmV4dGVybiBpbnQgZ2V0YyAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu
IGludCBnZXRjaGFyICAodm9pZCkgIHRocm93ICgpICA7CgogCgoKCgogCmV4dGVybiBpbnQgZ2V0
Y191bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBnZXRj
aGFyX3VubG9ja2VkICAodm9pZCkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmZ2V0Y191
bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IGZw
dXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHB1
dGMgIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQg
cHV0Y2hhciAgKGludCBfX2MpICB0aHJvdyAoKSAgOwoKIAoKCgoKIApleHRlcm4gaW50IGZwdXRj
X3VubG9ja2VkICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgogCmV4
dGVybiBpbnQgcHV0Y191bmxvY2tlZCAgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cg
KCkgIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkICAoaW50IF9fYykgIHRocm93ICgpICA7
CgoKCgogCmV4dGVybiBpbnQgZ2V0dyAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCiAK
ZXh0ZXJuIGludCBwdXR3ICAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoK
CgogCmV4dGVybiBjaGFyICpmZ2V0cyAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLAoJ
CQkgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCgoKCgogCgpleHRl
cm4gY2hhciAqZ2V0cyAgKGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKIyA0MjAgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzCgoKCiAKZXh0ZXJuIGludCBmcHV0cyAgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsCgkJICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAo
KSAgOwoKCgoKCgoKIApleHRlcm4gaW50IHB1dHMgIChfX2NvbnN0IGNoYXIgKl9fcykgIHRocm93
ICgpICA7CgoKIApleHRlcm4gaW50IHVuZ2V0YyAgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAg
dGhyb3cgKCkgIDsKCgogCmV4dGVybiBzaXplX3QgZnJlYWQgICh2b2lkICpfX3Jlc3RyaWN0IF9f
cHRyLCBzaXplX3QgX19zaXplLAoJCQkgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiBzaXplX3QgZndyaXRlICAoX19jb25zdCB2b2lk
ICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAoJCQkgICBzaXplX3QgX19uLCBGSUxF
ICpfX3Jlc3RyaWN0IF9fcykgIHRocm93ICgpICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFkX3Vu
bG9ja2VkICAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJCSAgIHNp
emVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRlcm4g
c2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwK
CQkJCSAgICBzaXplX3QgX19zaXplLCBzaXplX3QgX19uLAoJCQkJICAgIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgZnNlZWsgIChGSUxFICpf
X3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgIHRocm93ICgpICA7CiAKZXh0
ZXJuIGxvbmcgaW50IGZ0ZWxsICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVy
biB2b2lkIHJld2luZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCiAKCgoKCiAKCgp0
eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKIApleHRlcm4gaW50IGZn
ZXRwb3MgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAoJCQkgZnBvc190ICpfX3Jlc3RyaWN0
IF9fcG9zKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IGZzZXRwb3MgIChGSUxFICpfX3N0cmVh
bSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSAgdGhyb3cgKCkgIDsKIyA1MTkgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAzCgoKIyA1MjkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKIApleHRlcm4g
dm9pZCBjbGVhcmVyciAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50
IGZlb2YgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBmZXJyb3Ig
IChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKIApleHRlcm4gdm9pZCBjbGVhcmVycl91
bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBmZW9mX3Vu
bG9ja2VkICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGZlcnJvcl91
bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gdm9pZCBw
ZXJyb3IgIChfX2NvbnN0IGNoYXIgKl9fcykgIHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGludCBz
eXNfbmVycjsKZXh0ZXJuIF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCgoK
CgoKCiAKZXh0ZXJuIGludCBmaWxlbm8gIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoK
CiAKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgp
ICA7CgoKCgoKIApleHRlcm4gRklMRSAqcG9wZW4gIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwg
X19jb25zdCBjaGFyICpfX21vZGVzKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwY2xvc2Ug
IChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCgogCmV4dGVybiBjaGFyICpjdGVybWlk
ICAoY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKIyA2MDMgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCgoKCgogCgogCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAgKEZJTEUgKl9fc3RyZWFt
KSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlICAoRklMRSAqX19zdHJl
YW0pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAgKEZJTEUgKl9fc3Ry
ZWFtKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKCiAKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0
ZGlvLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAppbmxpbmUgIGludAp2
cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIF9fZ251Y192YV9saXN0ICBf
X2FyZykgdGhyb3cgKCkgCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJn
KTsKfQoKIAppbmxpbmUgIGludApnZXRjaGFyICh2b2lkKSB0aHJvdyAoKSAKewogIHJldHVybiBf
SU9fZ2V0YyAoc3RkaW4pOwp9CgoKCiAKaW5saW5lICBpbnQKZ2V0Y191bmxvY2tlZCAoRklMRSAq
X19mcCkgdGhyb3cgKCkgCnsKICByZXR1cm4gKCggX19mcCApLT5fSU9fcmVhZF9wdHIgPj0gKCBf
X2ZwICktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKCBfX2ZwICkgOiAqKHVuc2lnbmVkIGNoYXIg
KikgKCBfX2ZwICktPl9JT19yZWFkX3B0cisrKSA7Cn0KCiAKaW5saW5lICBpbnQKZ2V0Y2hhcl91
bmxvY2tlZCAodm9pZCkgdGhyb3cgKCkgCnsKICByZXR1cm4gKCggc3RkaW4gKS0+X0lPX3JlYWRf
cHRyID49ICggc3RkaW4gKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoIHN0ZGluICkgOiAqKHVu
c2lnbmVkIGNoYXIgKikgKCBzdGRpbiApLT5fSU9fcmVhZF9wdHIrKykgOwp9CgoKCiAKaW5saW5l
ICBpbnQKcHV0Y2hhciAoaW50IF9fYykgdGhyb3cgKCkgCnsKICByZXR1cm4gX0lPX3B1dGMgKF9f
Yywgc3Rkb3V0KTsKfQoKCgogCmlubGluZSAgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBG
SUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgCnsKICByZXR1cm4gKCgoICBfX3N0cmVhbSApLT5fSU9f
d3JpdGVfcHRyID49ICggIF9fc3RyZWFtICktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAo
ICBfX3N0cmVhbSAsICh1bnNpZ25lZCBjaGFyKSAoIF9fYyApKSA6ICh1bnNpZ25lZCBjaGFyKSAo
KiggIF9fc3RyZWFtICktPl9JT193cml0ZV9wdHIrKyA9ICggX19jICkpKSA7Cn0KCgoKCiAKaW5s
aW5lICBpbnQKcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgp
IAp7CiAgcmV0dXJuICgoKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX3B0ciA+PSAoICBfX3N0cmVh
bSApLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKCAgX19zdHJlYW0gLCAodW5zaWduZWQg
Y2hhcikgKCBfX2MgKSkgOiAodW5zaWduZWQgY2hhcikgKCooICBfX3N0cmVhbSApLT5fSU9fd3Jp
dGVfcHRyKysgPSAoIF9fYyApKSkgOwp9CgogCmlubGluZSAgaW50CnB1dGNoYXJfdW5sb2NrZWQg
KGludCBfX2MpIHRocm93ICgpIAp7CiAgcmV0dXJuICgoKCAgc3Rkb3V0ICktPl9JT193cml0ZV9w
dHIgPj0gKCAgc3Rkb3V0ICktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoICBzdGRvdXQg
LCAodW5zaWduZWQgY2hhcikgKCBfX2MgKSkgOiAodW5zaWduZWQgY2hhcikgKCooICBzdGRvdXQg
KS0+X0lPX3dyaXRlX3B0cisrID0gKCBfX2MgKSkpIDsKfQoKCgoKCgoKCgoKCgoKCiAKaW5saW5l
ICBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpIAp7CiAgcmV0dXJu
ICgoKCBfX3N0cmVhbSApLT5fZmxhZ3MgJiAweDEwICkgIT0gMCkgOwp9CgogCmlubGluZSAgaW50
CmZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpIAp7CiAgcmV0dXJuICgo
KCBfX3N0cmVhbSApLT5fZmxhZ3MgJiAweDIwICkgIT0gMCkgOwp9CgoKCgoKCiAKCiMgMTQ5ICIv
dXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzCgoKIyAxNjUgIi91c3IvaW5jbHVkZS9iaXRzL3N0
ZGlvLmgiIDMKCgogCgojIDYzMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgp9IAoKCgoK
IyAxICJzaG93LmNwcCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJl
ZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQt
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGlu
dXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgog
CgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4y
L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVk
aGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3Iv
bGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAy
IDMKCgpleHRlcm4gIkMiIHsgCgoKCgogCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7
CQkJIAogICAgaW50IHJlbTsJCQkgCiAgfSBkaXZfdDsKCiAKCnR5cGVkZWYgc3RydWN0CiAgewog
ICAgbG9uZyBpbnQgcXVvdDsJCSAKICAgIGxvbmcgaW50IHJlbTsJCSAKICB9IGxkaXZfdDsKCgoK
IyA2NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiAKCgoKIAoKCgoKCiAKCmV4dGVybiBz
aXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0
ZXJuIGRvdWJsZSBhdG9mICAoX19jb25zdCBjaGFyICpfX25wdHIpICB0aHJvdyAoKSAgOwogCmV4
dGVybiBpbnQgYXRvaSAgKF9fY29uc3QgY2hhciAqX19ucHRyKSAgdGhyb3cgKCkgIDsKIApleHRl
cm4gbG9uZyBpbnQgYXRvbCAgKF9fY29uc3QgY2hhciAqX19ucHRyKSAgdGhyb3cgKCkgIDsKCgog
Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwgIChfX2NvbnN0IGNoYXIg
Kl9fbnB0cikgIHRocm93ICgpICA7CgoKIApleHRlcm4gZG91YmxlIHN0cnRvZCAgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCSAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
KSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKCiAKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIGludCBfX2Jhc2UpICB0aHJvdyAoKSAgOwogCmV4dGVybiB1bnNpZ25lZCBsb25nIGlu
dCBzdHJ0b3VsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCSAgICAgICBpbnQgX19iYXNlKSAgdGhyb3cg
KCkgIDsKCgogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9xICAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIGludCBfX2Jhc2UpICB0aHJvdyAoKSAgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCgkJCQkJICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCSAgICBpbnQg
X19iYXNlKSAgdGhyb3cgKCkgIDsKCgoKIAoKIApfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IHN0cnRvbGwgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpICB0aHJvdyAoKSAgOwogCl9f
ZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCgkJCQkJICAgICBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKCgoKIyAxOTAgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgogCgoKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRl
cm5hbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCSAgICAgIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsK
ZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKCQkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3Vw
KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGxvbmcgZG91YmxlICBfX3N0cnRvbGRfaW50ZXJuYWwgIChf
X2NvbnN0IGNoYXIgKgoJCQkJCQlfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCgkJCQkJCWludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBs
b25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCgkJCQkJY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJaW50IF9fYmFzZSwgaW50
IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0
b3VsX2ludGVybmFsICAoX19jb25zdCBjaGFyICoKCQkJCQkJICBfX3Jlc3RyaWN0IF9fbnB0ciwK
CQkJCQkJICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkJICBpbnQgX19iYXNlLCBp
bnQgX19ncm91cCkgIHRocm93ICgpICA7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCgkJCQkJICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJICAgICAgaW50
IF9fYmFzZSwgaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVy
biB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgIChfX2NvbnN0IGNo
YXIgKgoJCQkJCQkJX19yZXN0cmljdCBfX25wdHIsCgkJCQkJCQljaGFyICoqCgkJCQkJCQlfX3Jl
c3RyaWN0IF9fZW5kcHRyLAoJCQkJCQkJaW50IF9fYmFzZSwKCQkJCQkJCWludCBfX2dyb3VwKSAg
dGhyb3cgKCkgIDsKCgoKCgoKIAoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0b2QgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0
aHJvdyAoKSAKewogIHJldHVybiBfX3N0cnRvZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg
MCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCglpbnQgX19iYXNlKSB0
aHJvdyAoKSAKewogIHJldHVybiBfX3N0cnRvbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg
X19iYXNlLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCgkgaW50IF9fYmFzZSkgdGhyb3cgKCkgCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFs
IChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgojIDI3MSAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzCgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQK
c3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKCWludCBfX2Jhc2UpIHRocm93ICgpIAp7CiAgcmV0dXJuIF9fc3RydG9sbF9p
bnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4
dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJIGludCBf
X2Jhc2UpIHRocm93ICgpIAp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwg
X19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUg
bG9uZyBsb25nIGludApzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCSBpbnQgX19iYXNlKSB0aHJvdyAoKSAKewogIHJl
dHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0K
X19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0
b3VsbCAoX19jb25zdCBjaGFyICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAoJICBpbnQgX19iYXNlKSB0aHJvdyAoKSAKewogIHJldHVybiBfX3N0cnRvdWxs
X2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5s
aW5lIGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkgCnsKICByZXR1
cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSBfX251bGwgKTsKfQpleHRlcm4gX19pbmxpbmUg
aW50CmF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSAKewogIHJldHVybiAoaW50
KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopIF9fbnVsbCAsIDEwKTsKfQpleHRlcm4gX19pbmxp
bmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpIAp7CiAgcmV0
dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgX19udWxsICwgMTApOwp9CgoKX19leHRlbnNp
b25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFyICpf
X25wdHIpIHRocm93ICgpIAp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopIF9f
bnVsbCAsIDEwKTsKfQoKCgoKCiAKCgpleHRlcm4gY2hhciAqbDY0YSAgKGxvbmcgaW50IF9fbikg
IHRocm93ICgpICA7CgogCmV4dGVybiBsb25nIGludCBhNjRsICAoX19jb25zdCBjaGFyICpfX3Mp
ICB0aHJvdyAoKSAgOwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgoKCgp0eXBlZGVmIF9fdV9jaGFy
IHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50
Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVk
ZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoKdHlwZWRl
ZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKCgoKCgoKCgoKCnR5
cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVk
ZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5
cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIF9fcGlkX3QgcGlk
X3Q7CgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwoKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90
OwoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJf
dDsKCgoKdHlwZWRlZiBfX2tleV90IGtleV90OwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1l
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDMKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCgoKCiAK
dHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7CgoKCgoKIyA4OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MwoKCgoKIyAyNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAxMjEgIi91c3IvaW5jbHVk
ZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xp
Yi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
CiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgv
Mi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIv
aTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgog
CgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4
LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIyAxMjQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoK
CiAKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwoKCiAKCiMgMTU4ICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKCgogCgoKCgoKCgp0eXBlZGVmIGludCBpbnQ4X3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyApKSkgOwp0eXBlZGVmIGludCBpbnQxNl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0hJX18gKSkpIDsKdHlwZWRlZiBpbnQgaW50
MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19TSV9fICkpKSA7CnR5cGVkZWYgaW50
IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fRElfXyApKSkgOwoKCnR5cGVk
ZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1FJ
X18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChf
X21vZGVfXyAoICBfX0hJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0RJX18gKSkpIDsKCnR5
cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykp
KTsKCgogCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4u
aCIgMSAzCiAKCgoKCgoKIyAzNSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKCgogCgoKCgoK
CgoKCgoKCgojIDE5MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgog
CgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMKCgoKCgoKCgoK
CgoKIyA1NiAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMKCiMgNzIgIi91c3IvaW5jbHVk
ZS9iaXRzL3NlbGVjdC5oIiAzCgojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMK
CgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKIAoKCnR5cGVkZWYgc3RydWN0CiAg
ewogICAgdW5zaWduZWQgbG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWdu
ZWQgbG9uZyBpbnQpKSkgXTsKICB9IF9fc2lnc2V0X3Q7CgoKCgogCgoKCgoKIyAxMjUgIi91c3Iv
aW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCgojIDM0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o
IiAyIDMKCgogCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA2MiAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDczICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoK
CgoKCgoKIAoKc3RydWN0IHRpbWVzcGVjCiAgewogICAgbG9uZyBpbnQgdHZfc2VjOwkJIAogICAg
bG9uZyBpbnQgdHZfbnNlYzsJCSAKICB9OwoKCgoKCiMgMjc5ICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAzCgoKCiMgMzggIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCmV4dGVybiAiQyIg
eyAKCiAKCgoKc3RydWN0IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKIAp0
eXBlZGVmIF9fZmRfc2V0IGZkX3NldDsKCiAKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgpleHRlcm4g
aW50IF9fc2VsZWN0ICAoaW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywKCQkJICBfX2Zk
X3NldCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhjZXB0ZmRzLAoJCQkgIHN0cnVjdCB0aW1l
dmFsICpfX3RpbWVvdXQpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNlbGVjdCAgKGludCBfX25m
ZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJCV9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3Nl
dCAqX19leGNlcHRmZHMsCgkJCXN0cnVjdCB0aW1ldmFsICpfX3RpbWVvdXQpICB0aHJvdyAoKSAg
OwoKIyA5MSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwoKCn0gCgoKIyAxOTMgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFj
cm9zLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgojIDQ3ICIvdXNyL2lu
Y2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAzCgoKCiMgMTk2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDIgMwoKCgoKIAoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwkgIAp0eXBlZGVmIF9f
ZnNibGtjbnRfdCBmc2Jsa2NudF90OyAgCnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250X3Q7
ICAKCgoKCgoKCgoKCgoKfSAKCgojIDMzOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgog
CgoKCiAKZXh0ZXJuIGludDMyX3QgcmFuZG9tICAodm9pZCkgIHRocm93ICgpICA7CgogCmV4dGVy
biB2b2lkIHNyYW5kb20gICh1bnNpZ25lZCBpbnQgX19zZWVkKSAgdGhyb3cgKCkgIDsKCiAKCgoK
ZXh0ZXJuIHZvaWQgKiAgaW5pdHN0YXRlICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqICBf
X3N0YXRlYnVmLAoJCQkgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pICB0aHJvdyAoKSAgOwoKIAoK
ZXh0ZXJuIHZvaWQgKiAgc2V0c3RhdGUgICh2b2lkICogIF9fc3RhdGVidWYpICB0aHJvdyAoKSAg
OwoKCgogCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAgIGludDMyX3QgKmZwdHI7CQkgCiAg
ICBpbnQzMl90ICpycHRyOwkJIAogICAgaW50MzJfdCAqc3RhdGU7CQkgCiAgICBpbnQgcmFuZF90
eXBlOwkJIAogICAgaW50IHJhbmRfZGVnOwkJIAogICAgaW50IHJhbmRfc2VwOwkJIAogICAgaW50
MzJfdCAqZW5kX3B0cjsJCSAKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAgKHN0cnVjdCByYW5k
b21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKCQkJICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVz
dWx0KSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICAodW5zaWduZWQgaW50IF9f
c2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgIHRocm93ICgpICA7CgpleHRlcm4gaW50
IGluaXRzdGF0ZV9yICAodW5zaWduZWQgaW50IF9fc2VlZCwKCQkJICAgICB2b2lkICogIF9fcmVz
dHJpY3QgX19zdGF0ZWJ1ZiwKCQkJICAgICBzaXplX3QgX19zdGF0ZWxlbiwKCQkJICAgICBzdHJ1
Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGlu
dCBzZXRzdGF0ZV9yICAodm9pZCAqICBfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCgkJCSAgICBzdHJ1
Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpICB0aHJvdyAoKSAgOwoKCgoKIApleHRl
cm4gaW50IHJhbmQgICh2b2lkKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gdm9pZCBzcmFuZCAgKHVu
c2lnbmVkIGludCBfX3NlZWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCByYW5kX3IgICh1
bnNpZ25lZCBpbnQgKl9fc2VlZCkgIHRocm93ICgpICA7CgoKCgogCgogCmV4dGVybiBkb3VibGUg
ZHJhbmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggICh1bnNp
Z25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgIHRocm93ICgpICA7CgogCmV4dGVybiBsb25nIGlu
dCBscmFuZDQ4ICAodm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICAo
dW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gbG9u
ZyBpbnQgbXJhbmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0
OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu
IHZvaWQgc3JhbmQ0OCAgKGxvbmcgaW50IF9fc2VlZHZhbCkgIHRocm93ICgpICA7CmV4dGVybiB1
bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZb
M10pICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICAodW5zaWduZWQgc2hvcnQgaW50
IF9fcGFyYW1bN10pICB0aHJvdyAoKSAgOwoKIApzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAg
dW5zaWduZWQgc2hvcnQgaW50IHhbM107CSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBhWzNdOwkg
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJIAogICAgdW5zaWduZWQgc2hvcnQgaW50IG9sZF94
WzNdOyAgCiAgICBpbnQgaW5pdDsJCQkgCiAgfTsKCgogCmV4dGVybiBpbnQgZHJhbmQ0OF9yICAo
c3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgZG91YmxlICpf
X3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgICh1
bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAg
dGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBscmFuZDQ4X3IgIChzdHJ1Y3QgZHJhbmQ0OF9kYXRh
ICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAoJCQkgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3Vs
dCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50
IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkgIDsKCiAK
ZXh0ZXJuIGludCBtcmFuZDQ4X3IgIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmZmVyLAoJCQkgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgIHRocm93ICgpICA7
CmV4dGVybiBpbnQganJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJ
CSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxvbmcg
aW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzcmFu
ZDQ4X3IgIChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVy
KSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQg
X19zZWVkMTZ2WzNdLAoJCQkgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgdGhyb3cg
KCkgIDsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1b
N10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgdGhyb3cgKCkgIDsKCgoK
CgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWFsbG9jICAoc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7
CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUp
ICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gdm9pZCAqICByZWFsbG9jICAodm9pZCAqICBfX3B0
ciwgc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHZvaWQgZnJlZSAgKHZvaWQg
KiAgX19wdHIpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHZvaWQgY2ZyZWUgICh2b2lkICogIF9f
cHRyKSAgdGhyb3cgKCkgIDsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGli
L2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoK
IAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8y
Ljk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAK
CiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgv
Mi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxp
Yi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojIDI1ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCmV4dGVy
biAiQyIgeyAKCiAKCgogCmV4dGVybiB2b2lkICogIGFsbG9jYSAgKHNpemVfdCBfX3NpemUpICB0
aHJvdyAoKSAgOwoKCgoKCn0gCgoKIyA0OTIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoK
CgogCmV4dGVybiB2b2lkICogIHZhbGxvYyAgKHNpemVfdCBfX3NpemUpICB0aHJvdyAoKSAgOwoK
CgogCmV4dGVybiB2b2lkIGFib3J0ICAodm9pZCkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAo
KF9fbm9yZXR1cm5fXykpOwoKCiAKZXh0ZXJuIGludCBhdGV4aXQgICh2b2lkICgqX19mdW5jKSAo
dm9pZCkpICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBpbnQgX19vbl9leGl0ICAodm9pZCAoKl9f
ZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqICBfX2FyZyksCgkJCSAgIHZvaWQgKiAgX19hcmcp
ICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IG9uX2V4aXQgICh2b2lkICgqX19mdW5jKSAoaW50IF9f
c3RhdHVzLCB2b2lkICogIF9fYXJnKSwKCQkJIHZvaWQgKiAgX19hcmcpICB0aHJvdyAoKSAgOwoK
CiAKCgpleHRlcm4gdm9pZCBleGl0ICAoaW50IF9fc3RhdHVzKSAgdGhyb3cgKCkgICBfX2F0dHJp
YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKCgoKIApleHRlcm4gY2hhciAqZ2V0ZW52ICAo
X19jb25zdCBjaGFyICpfX25hbWUpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGNoYXIgKl9fc2Vj
dXJlX2dldGVudiAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAgdGhyb3cgKCkgIDsKCgogCiAKCmV4
dGVybiBpbnQgcHV0ZW52ICAoX19jb25zdCBjaGFyICpfX3N0cmluZykgIHRocm93ICgpICA7CgoK
CiAKCmV4dGVybiBpbnQgc2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hh
ciAqX192YWx1ZSwKCQkJaW50IF9fcmVwbGFjZSkgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lk
IHVuc2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25hbWUpICB0aHJvdyAoKSAgOwoKCgogCgoKZXh0
ZXJuIGludCBjbGVhcmVudiAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCgoKIAoKCgpleHRlcm4gY2hh
ciAqbWt0ZW1wICAoY2hhciAqX190ZW1wbGF0ZSkgIHRocm93ICgpICA7CgogCgoKCgpleHRlcm4g
aW50IG1rc3RlbXAgIChjaGFyICpfX3RlbXBsYXRlKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4g
aW50IHN5c3RlbSAgKF9fY29uc3QgY2hhciAqX19jb21tYW5kKSAgdGhyb3cgKCkgIDsKCgoKCgoK
CgoKCiAKCgoKCgpleHRlcm4gY2hhciAqcmVhbHBhdGggIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19uYW1lLAoJCQkgICAgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSAgdGhyb3cgKCkg
IDsKCgoKIAoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgIChfX2NvbnN0IHZvaWQgKiAs
IF9fY29uc3Qgdm9pZCAqICkgIDsKCgoKCgoKIAoKZXh0ZXJuIHZvaWQgKiAgYnNlYXJjaCAgKF9f
Y29uc3Qgdm9pZCAqICBfX2tleSwgX19jb25zdCB2b2lkICogIF9fYmFzZSwKCQkJICAgICAgIHNp
emVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLAoJCQkgICAgICAgX19jb21wYXJfZm5fdCBfX2Nv
bXBhcikgIDsKCiAKCmV4dGVybiB2b2lkIHFzb3J0ICAodm9pZCAqICBfX2Jhc2UsIHNpemVfdCBf
X25tZW1iLCBzaXplX3QgX19zaXplLAoJCQkgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpICA7CgoK
IApleHRlcm4gaW50IGFicyAgKGludCBfX3gpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgIChsb25nIGludCBfX3gpICB0aHJvdyAo
KSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKIAoKIApleHRlcm4gZGl2X3Qg
ZGl2ICAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CmV4dGVybiBsZGl2X3QgbGRpdiAgKGxvbmcgaW50IF9fbnVtZXIsIGxv
bmcgaW50IF9fZGVub20pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgoKCgoKCiAKCgogCgoKZXh0ZXJuIGNoYXIgKmVjdnQgIChkb3VibGUgX192YWx1ZSwg
aW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50ICpfX3Jlc3RyaWN0
IF9fc2lnbikgIHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGNoYXIgKmZjdnQgIChkb3VibGUgX192
YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50ICpfX3Jl
c3RyaWN0IF9fc2lnbikgIHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGNoYXIgKmdjdnQgIChkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgIHRocm93ICgpICA7CgogCmV4
dGVybiBjaGFyICpxZWN2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJ
CSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgIHRocm93
ICgpICA7CmV4dGVybiBjaGFyICpxZmN2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
bikgIHRocm93ICgpICA7CmV4dGVybiBjaGFyICpxZ2N2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVl
LCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGlu
dCBlY3Z0X3IgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3Qg
X19kZWNwdCwKCQkJaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZiwKCQkJc2l6ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBmY3Z0X3IgIChkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50
ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkJc2l6ZV90IF9f
bGVuKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgcWVjdnRfciAgKGxvbmcgZG91YmxlICBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jl
c3RyaWN0IF9fc2lnbiwKCQkJIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikg
IHRocm93ICgpICA7CmV4dGVybiBpbnQgcWZjdnRfciAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0
IF9fc2lnbiwKCQkJIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgIHRocm93
ICgpICA7CgoKCgogCgpleHRlcm4gaW50IG1ibGVuICAoX19jb25zdCBjaGFyICpfX3MsIHNpemVf
dCBfX24pICB0aHJvdyAoKSAgOwogCgpleHRlcm4gaW50IG1idG93YyAgKHdjaGFyX3QgKl9fcmVz
dHJpY3QgX19wd2MsCgkJCV9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24p
ICB0aHJvdyAoKSAgOwogCgpleHRlcm4gaW50IHdjdG9tYiAgKGNoYXIgKl9fcywgd2NoYXJfdCBf
X3djaGFyKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgICh3Y2hhcl90
ICpfX3Jlc3RyaWN0ICBfX3B3Y3MsCgkJCSAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CiAKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLAoJCQkgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBf
X3B3Y3MsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKCgogCgoKCmV4dGVybiBpbnQgcnBtYXRj
aCAgKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkgIHRocm93ICgpICA7CgoKCiMgNzMyICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKIyA3NTYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoK
CiMgNzY2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKCgp9IAoKCiMgMiAic2hvdy5jcHAi
IDIKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZ2RrL2dkay5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9nZGsvZ2RrdHlwZXMuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvZ2xp
Yi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvbGliL2dsaWIvaW5jbHVkZS9nbGliY29uZmln
LmgiIDEKIAoKCgoKCgoKCmV4dGVybiAiQyIgewoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiAKCgogCgoKCgoKIAoj
IDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3lz
bGltaXRzLmgiIDEgMwogCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4LzIuOTUuMi9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoKCiAKCiMgMTE0ICIvdXNyL2xpYi9n
Y2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL2xpbWl0cy5oIiAzCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCiAKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKCiAK
CgogCgoKIAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAK
CgogCgoKIAoKCgogCgoKIAoKCiAKCgogCgoKIAoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
bG9jYWxfbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCiMgMSAiL3Vzci9p
bmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjcgIi91c3Iv
aW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAyIDMKCgogCgoKCgoKIAoKIAoKCiAKCiAKCgogCgog
CgoKIAoKCgogCgojIDEyNiAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAyIDMKCgoK
CgoKCgogCgoKCgoKCgojIDMwICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKCiAKCgoKCiAKCgoKIAoKCiAKCgoKIAoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDM0ICIvdXNyL2luY2x1ZGUvbGlt
aXRzLmgiIDIgMwoKCgoKCgoKCiAKCgoKCgogCgojIDEyMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5o
IiAzCgoKCgogIAoKCgoKCgoKCiMgMTE3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4LzIuOTUuMi9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCiMgNyAiL3Vzci9saWIvZ2NjLWxp
Yi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCgoKIyAx
MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9saW1p
dHMuaCIgMiAzCgoKCgoKIAoKCgogCgoKCiAKCgoKCiAKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoK
IAoKIAoKCgoKIAoKCgogCgoKCgoKCgoKIAoKCgogCgoKCgoKCgoKCgoKCgogCgoKCiMgMTA3ICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL2xpbWl0cy5o
IiAzCgoKCgogCgoKCgoKCgoKCiMgMTMgIi91c3IvbGliL2dsaWIvaW5jbHVkZS9nbGliY29uZmln
LmgiIDIKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5j
bHVkZS9mbG9hdC5oIiAxIDMKIAoKCgogCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAg
IAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCgogICAgCgoKICAg
IAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgoKICAg
IAoKCiAgICAKCgogICAgCgoKCnVuaW9uIF9fY29udmVydF9sb25nX2RvdWJsZSB7CiAgdW5zaWdu
ZWQgX19jb252ZXJ0X2xvbmdfZG91YmxlX2lbNF07CiAgbG9uZyBkb3VibGUgX19jb252ZXJ0X2xv
bmdfZG91YmxlX2Q7Cn07CgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAg
CgoKCgojIDE0ICIvdXNyL2xpYi9nbGliL2luY2x1ZGUvZ2xpYmNvbmZpZy5oIiAyCgoKCgoKCgoK
CgoKCgoKdHlwZWRlZiBzaWduZWQgY2hhciBnaW50ODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGd1
aW50ODsKdHlwZWRlZiBzaWduZWQgc2hvcnQgZ2ludDE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IGd1aW50MTY7CnR5cGVkZWYgc2lnbmVkIGludCBnaW50MzI7CnR5cGVkZWYgdW5zaWduZWQgaW50
IGd1aW50MzI7CgoKCgoKCgoKCl9fZXh0ZW5zaW9uX18gIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9u
ZyBnaW50NjQ7Cl9fZXh0ZW5zaW9uX18gIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGd1aW50
NjQ7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR1N0
YXRpY011dGV4IEdTdGF0aWNNdXRleDsKc3RydWN0IF9HU3RhdGljTXV0ZXgKewogIHN0cnVjdCBf
R011dGV4ICpydW50aW1lX211dGV4OwogIHVuaW9uIHsKICAgIGNoYXIgICBwYWRbMjRdOwogICAg
ZG91YmxlIGR1bW15X2RvdWJsZTsKICAgIHZvaWQgICpkdW1teV9wb2ludGVyOwogICAgbG9uZyAg
IGR1bW15X2xvbmc7CiAgfSBhbGlnbmVkX3BhZF91Owp9OwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCn0KCgoKIyA2NiAiL3Vzci9pbmNsdWRlL2dsaWIuaCIgMiAzCgoKIAoK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0
ZGFyZy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
dm9pZCB2YV9lbmQgKF9fZ251Y192YV9saXN0KTsJCSAKCgogCgoKCiAKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgoKCgoKCgoKCgoKIyAxNzUgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKCgogCgoK
CgogCgogCgogCgp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiMgNzAgIi91c3IvaW5jbHVkZS9nbGliLmgiIDIgMwoKCiAKCgoKCgoKIyA4OSAi
L3Vzci9pbmNsdWRlL2dsaWIuaCIgMwoKCiAKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIyAxNDYgIi91c3IvaW5jbHVkZS9nbGliLmgi
IDMKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiMgMTkyICIvdXNyL2luY2x1ZGUv
Z2xpYi5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKIyAzNTcgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMKCgoKCgoKCgoKIyAzODQgIi91c3IvaW5j
bHVkZS9nbGliLmgiIDMKCgoKCgoKCgoKCgoKCgoKIyA0MTAgIi91c3IvaW5jbHVkZS9nbGliLmgi
IDMKCgojIDQyMyAiL3Vzci9pbmNsdWRlL2dsaWIuaCIgMwoKIyA0NTAgIi91c3IvaW5jbHVkZS9n
bGliLmgiIDMKCgoKCgogCgoKCgoKCnR5cGVkZWYgY2hhciAgIGdjaGFyOwp0eXBlZGVmIHNob3J0
ICBnc2hvcnQ7CnR5cGVkZWYgbG9uZyAgIGdsb25nOwp0eXBlZGVmIGludCAgICBnaW50Owp0eXBl
ZGVmIGdpbnQgICBnYm9vbGVhbjsKCnR5cGVkZWYgdW5zaWduZWQgY2hhcglndWNoYXI7CnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQJZ3VzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nCWd1bG9uZzsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQJZ3VpbnQ7Cgp0eXBlZGVmIGZsb2F0CWdmbG9hdDsKdHlwZWRl
ZiBkb3VibGUJZ2RvdWJsZTsKCiAKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCogZ3BvaW50ZXI7CnR5
cGVkZWYgY29uc3Qgdm9pZCAqZ2NvbnN0cG9pbnRlcjsKCgp0eXBlZGVmIGdpbnQzMglnc3NpemU7
CnR5cGVkZWYgZ3VpbnQzMiBnc2l6ZTsKdHlwZWRlZiBndWludDMyIEdRdWFyazsKdHlwZWRlZiBn
aW50MzIJR1RpbWU7CgoKIAoKCgoKCgoJCgoKIAoKCgoKCgoKCgoKIAoKCgojIDUzMSAiL3Vzci9p
bmNsdWRlL2dsaWIuaCIgMwoKCgoKIyA1NDYgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMKIyA1NTcg
Ii91c3IvaW5jbHVkZS9nbGliLmgiIDMKCgoKCgoKCgoKIyA1ODIgIi91c3IvaW5jbHVkZS9nbGli
LmgiIDMKCgojIDU5OCAiL3Vzci9pbmNsdWRlL2dsaWIuaCIgMwoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKZXh0ZXJu
ICBjb25zdCBndWludCBnbGliX21ham9yX3ZlcnNpb247CmV4dGVybiAgY29uc3QgZ3VpbnQgZ2xp
Yl9taW5vcl92ZXJzaW9uOwpleHRlcm4gIGNvbnN0IGd1aW50IGdsaWJfbWljcm9fdmVyc2lvbjsK
ZXh0ZXJuICBjb25zdCBndWludCBnbGliX2ludGVyZmFjZV9hZ2U7CmV4dGVybiAgY29uc3QgZ3Vp
bnQgZ2xpYl9iaW5hcnlfYWdlOwoKCgoKCgoKIAoKdHlwZWRlZiBzdHJ1Y3QgX0dBbGxvY2F0b3IJ
R0FsbG9jYXRvcjsKdHlwZWRlZiBzdHJ1Y3QgX0dBcnJheQkJR0FycmF5Owp0eXBlZGVmIHN0cnVj
dCBfR0J5dGVBcnJheQlHQnl0ZUFycmF5Owp0eXBlZGVmIHN0cnVjdCBfR0NhY2hlCQlHQ2FjaGU7
CnR5cGVkZWYgc3RydWN0IF9HQ29tcGxldGlvbglHQ29tcGxldGlvbjsKdHlwZWRlZglzdHJ1Y3Qg
X0dEYXRhCQlHRGF0YTsKdHlwZWRlZiBzdHJ1Y3QgX0dEZWJ1Z0tleQlHRGVidWdLZXk7CnR5cGVk
ZWYgc3RydWN0IF9HSGFzaFRhYmxlCUdIYXNoVGFibGU7CnR5cGVkZWYgc3RydWN0IF9HSG9vawkJ
R0hvb2s7CnR5cGVkZWYgc3RydWN0IF9HSG9va0xpc3QJR0hvb2tMaXN0Owp0eXBlZGVmIHN0cnVj
dCBfR0xpc3QJCUdMaXN0Owp0eXBlZGVmIHN0cnVjdCBfR01lbUNodW5rCUdNZW1DaHVuazsKdHlw
ZWRlZiBzdHJ1Y3QgX0dOb2RlCQlHTm9kZTsKdHlwZWRlZiBzdHJ1Y3QgX0dQdHJBcnJheQlHUHRy
QXJyYXk7CnR5cGVkZWYgc3RydWN0IF9HUmVsYXRpb24JR1JlbGF0aW9uOwp0eXBlZGVmIHN0cnVj
dCBfR1NjYW5uZXIJR1NjYW5uZXI7CnR5cGVkZWYgc3RydWN0IF9HU2Nhbm5lckNvbmZpZwlHU2Nh
bm5lckNvbmZpZzsKdHlwZWRlZiBzdHJ1Y3QgX0dTTGlzdAkJR1NMaXN0Owp0eXBlZGVmIHN0cnVj
dCBfR1N0cmluZwkJR1N0cmluZzsKdHlwZWRlZiBzdHJ1Y3QgX0dTdHJpbmdDaHVuawlHU3RyaW5n
Q2h1bms7CnR5cGVkZWYgc3RydWN0IF9HVGltZXIJCUdUaW1lcjsKdHlwZWRlZiBzdHJ1Y3QgX0dU
cmVlCQlHVHJlZTsKdHlwZWRlZiBzdHJ1Y3QgX0dUdXBsZXMJCUdUdXBsZXM7CnR5cGVkZWYgdW5p
b24gIF9HVG9rZW5WYWx1ZQlHVG9rZW5WYWx1ZTsKdHlwZWRlZiBzdHJ1Y3QgX0dJT0NoYW5uZWwJ
R0lPQ2hhbm5lbDsKCiAKdHlwZWRlZiBlbnVtCnsKICBHX1RSQVZFUlNFX0xFQUZTCT0gMSA8PCAw
LAogIEdfVFJBVkVSU0VfTk9OX0xFQUZTCT0gMSA8PCAxLAogIEdfVFJBVkVSU0VfQUxMCT0gR19U
UkFWRVJTRV9MRUFGUyB8IEdfVFJBVkVSU0VfTk9OX0xFQUZTLAogIEdfVFJBVkVSU0VfTUFTSwk9
IDB4MDMKfSBHVHJhdmVyc2VGbGFnczsKCiAKdHlwZWRlZiBlbnVtCnsKICBHX0lOX09SREVSLAog
IEdfUFJFX09SREVSLAogIEdfUE9TVF9PUkRFUiwKICBHX0xFVkVMX09SREVSCn0gR1RyYXZlcnNl
VHlwZTsKCiAKCgoKCiAKCnR5cGVkZWYgZW51bQp7CiAgIAogIEdfTE9HX0ZMQUdfUkVDVVJTSU9O
CQk9IDEgPDwgMCwKICBHX0xPR19GTEFHX0ZBVEFMCQk9IDEgPDwgMSwKICAKICAgCiAgR19MT0df
TEVWRUxfRVJST1IJCT0gMSA8PCAyLAkgCiAgR19MT0dfTEVWRUxfQ1JJVElDQUwJCT0gMSA8PCAz
LAogIEdfTE9HX0xFVkVMX1dBUk5JTkcJCT0gMSA8PCA0LAogIEdfTE9HX0xFVkVMX01FU1NBR0UJ
CT0gMSA8PCA1LAogIEdfTE9HX0xFVkVMX0lORk8JCT0gMSA8PCA2LAogIEdfTE9HX0xFVkVMX0RF
QlVHCQk9IDEgPDwgNywKICAKICBHX0xPR19MRVZFTF9NQVNLCQk9IH4oR19MT0dfRkxBR19SRUNV
UlNJT04gfCBHX0xPR19GTEFHX0ZBVEFMKQp9IEdMb2dMZXZlbEZsYWdzOwoKIAoKCgp0eXBlZGVm
IGdwb2ludGVyCSgqR0NhY2hlTmV3RnVuYykJKGdwb2ludGVyCWtleSk7CnR5cGVkZWYgZ3BvaW50
ZXIJKCpHQ2FjaGVEdXBGdW5jKQkoZ3BvaW50ZXIJdmFsdWUpOwp0eXBlZGVmIHZvaWQJCSgqR0Nh
Y2hlRGVzdHJveUZ1bmMpCShncG9pbnRlcgl2YWx1ZSk7CnR5cGVkZWYgZ2ludAkJKCpHQ29tcGFy
ZUZ1bmMpCQkoZ2NvbnN0cG9pbnRlcglhLAoJCQkJCQkgZ2NvbnN0cG9pbnRlcgliKTsKdHlwZWRl
ZiBnY2hhcioJCSgqR0NvbXBsZXRpb25GdW5jKQkoZ3BvaW50ZXIpOwp0eXBlZGVmIHZvaWQJCSgq
R0Rlc3Ryb3lOb3RpZnkpCShncG9pbnRlcglkYXRhKTsKdHlwZWRlZiB2b2lkCQkoKkdEYXRhRm9y
ZWFjaEZ1bmMpCShHUXVhcmsJCWtleV9pZCwKCQkJCQkJIGdwb2ludGVyCWRhdGEsCgkJCQkJCSBn
cG9pbnRlcgl1c2VyX2RhdGEpOwp0eXBlZGVmIHZvaWQJCSgqR0Z1bmMpCQkoZ3BvaW50ZXIJZGF0
YSwKCQkJCQkJIGdwb2ludGVyCXVzZXJfZGF0YSk7CnR5cGVkZWYgZ3VpbnQJCSgqR0hhc2hGdW5j
KQkJKGdjb25zdHBvaW50ZXIJa2V5KTsKdHlwZWRlZiB2b2lkCQkoKkdGcmVlRnVuYykJCShncG9p
bnRlcglkYXRhKTsKdHlwZWRlZiB2b2lkCQkoKkdIRnVuYykJCShncG9pbnRlcglrZXksCgkJCQkJ
CSBncG9pbnRlcgl2YWx1ZSwKCQkJCQkJIGdwb2ludGVyCXVzZXJfZGF0YSk7CnR5cGVkZWYgZ2Jv
b2xlYW4JKCpHSFJGdW5jKQkJKGdwb2ludGVyCWtleSwKCQkJCQkJIGdwb2ludGVyCXZhbHVlLAoJ
CQkJCQkgZ3BvaW50ZXIJdXNlcl9kYXRhKTsKdHlwZWRlZiBnaW50CQkoKkdIb29rQ29tcGFyZUZ1
bmMpCShHSG9vawkJKm5ld19ob29rLAoJCQkJCQkgR0hvb2sJCSpzaWJsaW5nKTsKdHlwZWRlZiBn
Ym9vbGVhbgkoKkdIb29rRmluZEZ1bmMpCShHSG9vawkJKmhvb2ssCgkJCQkJCSBncG9pbnRlcgkg
ZGF0YSk7CnR5cGVkZWYgdm9pZAkJKCpHSG9va01hcnNoYWxsZXIpCShHSG9vawkJKmhvb2ssCgkJ
CQkJCSBncG9pbnRlcgkgZGF0YSk7CnR5cGVkZWYgZ2Jvb2xlYW4JKCpHSG9va0NoZWNrTWFyc2hh
bGxlcikJKEdIb29rCQkqaG9vaywKCQkJCQkJIGdwb2ludGVyCSBkYXRhKTsKdHlwZWRlZiB2b2lk
CQkoKkdIb29rRnVuYykJCShncG9pbnRlcgkgZGF0YSk7CnR5cGVkZWYgZ2Jvb2xlYW4JKCpHSG9v
a0NoZWNrRnVuYykJKGdwb2ludGVyCSBkYXRhKTsKdHlwZWRlZiB2b2lkCQkoKkdIb29rRnJlZUZ1
bmMpCShHSG9va0xpc3QgICAgICAqaG9va19saXN0LAoJCQkJCQkgR0hvb2sgICAgICAgICAgKmhv
b2spOwp0eXBlZGVmIHZvaWQJCSgqR0xvZ0Z1bmMpCQkoY29uc3QgZ2NoYXIgICAqbG9nX2RvbWFp
biwKCQkJCQkJIEdMb2dMZXZlbEZsYWdzCWxvZ19sZXZlbCwKCQkJCQkJIGNvbnN0IGdjaGFyICAg
Km1lc3NhZ2UsCgkJCQkJCSBncG9pbnRlcgl1c2VyX2RhdGEpOwp0eXBlZGVmIGdib29sZWFuCSgq
R05vZGVUcmF2ZXJzZUZ1bmMpCShHTm9kZQkgICAgICAgKm5vZGUsCgkJCQkJCSBncG9pbnRlcglk
YXRhKTsKdHlwZWRlZiB2b2lkCQkoKkdOb2RlRm9yZWFjaEZ1bmMpCShHTm9kZQkgICAgICAgKm5v
ZGUsCgkJCQkJCSBncG9pbnRlcglkYXRhKTsKdHlwZWRlZiBnaW50CQkoKkdTZWFyY2hGdW5jKQkJ
KGdwb2ludGVyCWtleSwKCQkJCQkJIGdwb2ludGVyCWRhdGEpOwp0eXBlZGVmIHZvaWQJCSgqR1Nj
YW5uZXJNc2dGdW5jKQkoR1NjYW5uZXIgICAgICAqc2Nhbm5lciwKCQkJCQkJIGdjaGFyCSAgICAg
ICAqbWVzc2FnZSwKCQkJCQkJIGdpbnQJCWVycm9yKTsKdHlwZWRlZiBnaW50CQkoKkdUcmF2ZXJz
ZUZ1bmMpCShncG9pbnRlcglrZXksCgkJCQkJCSBncG9pbnRlcgl2YWx1ZSwKCQkJCQkJIGdwb2lu
dGVyCWRhdGEpOwp0eXBlZGVmCXZvaWQJCSgqR1ZvaWRGdW5jKQkJKHZvaWQpOwoKCnN0cnVjdCBf
R0xpc3QKewogIGdwb2ludGVyIGRhdGE7CiAgR0xpc3QgKm5leHQ7CiAgR0xpc3QgKnByZXY7Cn07
CgpzdHJ1Y3QgX0dTTGlzdAp7CiAgZ3BvaW50ZXIgZGF0YTsKICBHU0xpc3QgKm5leHQ7Cn07Cgpz
dHJ1Y3QgX0dTdHJpbmcKewogIGdjaGFyICpzdHI7CiAgZ2ludCBsZW47Cn07CgpzdHJ1Y3QgX0dB
cnJheQp7CiAgZ2NoYXIgKmRhdGE7CiAgZ3VpbnQgbGVuOwp9OwoKc3RydWN0IF9HQnl0ZUFycmF5
CnsKICBndWludDggKmRhdGE7CiAgZ3VpbnQJICBsZW47Cn07CgpzdHJ1Y3QgX0dQdHJBcnJheQp7
CiAgZ3BvaW50ZXIgKnBkYXRhOwogIGd1aW50CSAgICBsZW47Cn07CgpzdHJ1Y3QgX0dUdXBsZXMK
ewogIGd1aW50IGxlbjsKfTsKCnN0cnVjdCBfR0RlYnVnS2V5CnsKICBnY2hhciAqa2V5OwogIGd1
aW50CSB2YWx1ZTsKfTsKCgogCgp2b2lkICAgZ19saXN0X3B1c2hfYWxsb2NhdG9yICAgIChHQWxs
b2NhdG9yICAgICAqYWxsb2NhdG9yKTsKdm9pZCAgIGdfbGlzdF9wb3BfYWxsb2NhdG9yICAgICAo
dm9pZCk7CkdMaXN0KiBnX2xpc3RfYWxsb2MJCSh2b2lkKTsKdm9pZCAgIGdfbGlzdF9mcmVlCQko
R0xpc3QJCSpsaXN0KTsKdm9pZCAgIGdfbGlzdF9mcmVlXzEJCShHTGlzdAkJKmxpc3QpOwpHTGlz
dCogZ19saXN0X2FwcGVuZAkJKEdMaXN0CQkqbGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSk7CkdM
aXN0KiBnX2xpc3RfcHJlcGVuZAkJKEdMaXN0CQkqbGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSk7
CkdMaXN0KiBnX2xpc3RfaW5zZXJ0CQkoR0xpc3QJCSpsaXN0LAoJCQkJIGdwb2ludGVyCSBkYXRh
LAoJCQkJIGdpbnQJCSBwb3NpdGlvbik7CkdMaXN0KiBnX2xpc3RfaW5zZXJ0X3NvcnRlZAkoR0xp
c3QJCSpsaXN0LAoJCQkJIGdwb2ludGVyCSBkYXRhLAoJCQkJIEdDb21wYXJlRnVuYwkgZnVuYyk7
CkdMaXN0KiBnX2xpc3RfY29uY2F0CQkoR0xpc3QJCSpsaXN0MSwKCQkJCSBHTGlzdAkJKmxpc3Qy
KTsKR0xpc3QqIGdfbGlzdF9yZW1vdmUJCShHTGlzdAkJKmxpc3QsCgkJCQkgZ3BvaW50ZXIJIGRh
dGEpOwpHTGlzdCogZ19saXN0X3JlbW92ZV9saW5rCShHTGlzdAkJKmxpc3QsCgkJCQkgR0xpc3QJ
CSpsbGluayk7CkdMaXN0KiBnX2xpc3RfcmV2ZXJzZQkJKEdMaXN0CQkqbGlzdCk7CkdMaXN0KiBn
X2xpc3RfY29weQkJKEdMaXN0CQkqbGlzdCk7CkdMaXN0KiBnX2xpc3RfbnRoCQkoR0xpc3QJCSps
aXN0LAoJCQkJIGd1aW50CQkgbik7CkdMaXN0KiBnX2xpc3RfZmluZAkJKEdMaXN0CQkqbGlzdCwK
CQkJCSBncG9pbnRlcgkgZGF0YSk7CkdMaXN0KiBnX2xpc3RfZmluZF9jdXN0b20JKEdMaXN0CQkq
bGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSwKCQkJCSBHQ29tcGFyZUZ1bmMJIGZ1bmMpOwpnaW50
ICAgZ19saXN0X3Bvc2l0aW9uCQkoR0xpc3QJCSpsaXN0LAoJCQkJIEdMaXN0CQkqbGxpbmspOwpn
aW50ICAgZ19saXN0X2luZGV4CQkoR0xpc3QJCSpsaXN0LAoJCQkJIGdwb2ludGVyCSBkYXRhKTsK
R0xpc3QqIGdfbGlzdF9sYXN0CQkoR0xpc3QJCSpsaXN0KTsKR0xpc3QqIGdfbGlzdF9maXJzdAkJ
KEdMaXN0CQkqbGlzdCk7Cmd1aW50ICBnX2xpc3RfbGVuZ3RoCQkoR0xpc3QJCSpsaXN0KTsKdm9p
ZCAgIGdfbGlzdF9mb3JlYWNoCQkoR0xpc3QJCSpsaXN0LAoJCQkJIEdGdW5jCQkgZnVuYywKCQkJ
CSBncG9pbnRlcgkgdXNlcl9kYXRhKTsKR0xpc3QqIGdfbGlzdF9zb3J0ICAgICAgICAgICAgICAo
R0xpc3QgICAgICAgICAgKmxpc3QsCgkJICAgICAgICAgICAgICAgICBHQ29tcGFyZUZ1bmMgICAg
Y29tcGFyZV9mdW5jKTsKZ3BvaW50ZXIgZ19saXN0X250aF9kYXRhCShHTGlzdAkJKmxpc3QsCgkJ
CQkgZ3VpbnQJCSBuKTsKCgoKCiAKCnZvaWQgICAgZ19zbGlzdF9wdXNoX2FsbG9jYXRvciAgKEdB
bGxvY2F0b3IgICAgICphbGxvY2F0b3IpOwp2b2lkICAgIGdfc2xpc3RfcG9wX2FsbG9jYXRvciAg
ICh2b2lkKTsKR1NMaXN0KiBnX3NsaXN0X2FsbG9jCQkodm9pZCk7CnZvaWQJZ19zbGlzdF9mcmVl
CQkoR1NMaXN0CQkqbGlzdCk7CnZvaWQJZ19zbGlzdF9mcmVlXzEJCShHU0xpc3QJCSpsaXN0KTsK
R1NMaXN0KiBnX3NsaXN0X2FwcGVuZAkJKEdTTGlzdAkJKmxpc3QsCgkJCQkgZ3BvaW50ZXIJIGRh
dGEpOwpHU0xpc3QqIGdfc2xpc3RfcHJlcGVuZAkJKEdTTGlzdAkJKmxpc3QsCgkJCQkgZ3BvaW50
ZXIJIGRhdGEpOwpHU0xpc3QqIGdfc2xpc3RfaW5zZXJ0CQkoR1NMaXN0CQkqbGlzdCwKCQkJCSBn
cG9pbnRlcgkgZGF0YSwKCQkJCSBnaW50CQkgcG9zaXRpb24pOwpHU0xpc3QqIGdfc2xpc3RfaW5z
ZXJ0X3NvcnRlZAkoR1NMaXN0CQkqbGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSwKCQkJCSBHQ29t
cGFyZUZ1bmMJIGZ1bmMpOwpHU0xpc3QqIGdfc2xpc3RfY29uY2F0CQkoR1NMaXN0CQkqbGlzdDEs
CgkJCQkgR1NMaXN0CQkqbGlzdDIpOwpHU0xpc3QqIGdfc2xpc3RfcmVtb3ZlCQkoR1NMaXN0CQkq
bGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSk7CkdTTGlzdCogZ19zbGlzdF9yZW1vdmVfbGluawko
R1NMaXN0CQkqbGlzdCwKCQkJCSBHU0xpc3QJCSpsbGluayk7CkdTTGlzdCogZ19zbGlzdF9yZXZl
cnNlCQkoR1NMaXN0CQkqbGlzdCk7CkdTTGlzdCoJZ19zbGlzdF9jb3B5CQkoR1NMaXN0CQkqbGlz
dCk7CkdTTGlzdCogZ19zbGlzdF9udGgJCShHU0xpc3QJCSpsaXN0LAoJCQkJIGd1aW50CQkgbik7
CkdTTGlzdCogZ19zbGlzdF9maW5kCQkoR1NMaXN0CQkqbGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0
YSk7CkdTTGlzdCogZ19zbGlzdF9maW5kX2N1c3RvbQkoR1NMaXN0CQkqbGlzdCwKCQkJCSBncG9p
bnRlcgkgZGF0YSwKCQkJCSBHQ29tcGFyZUZ1bmMJIGZ1bmMpOwpnaW50CWdfc2xpc3RfcG9zaXRp
b24JKEdTTGlzdAkJKmxpc3QsCgkJCQkgR1NMaXN0CQkqbGxpbmspOwpnaW50CWdfc2xpc3RfaW5k
ZXgJCShHU0xpc3QJCSpsaXN0LAoJCQkJIGdwb2ludGVyCSBkYXRhKTsKR1NMaXN0KiBnX3NsaXN0
X2xhc3QJCShHU0xpc3QJCSpsaXN0KTsKZ3VpbnQJZ19zbGlzdF9sZW5ndGgJCShHU0xpc3QJCSps
aXN0KTsKdm9pZAlnX3NsaXN0X2ZvcmVhY2gJCShHU0xpc3QJCSpsaXN0LAoJCQkJIEdGdW5jCQkg
ZnVuYywKCQkJCSBncG9pbnRlcgkgdXNlcl9kYXRhKTsKR1NMaXN0KiAgZ19zbGlzdF9zb3J0ICAg
ICAgICAgICAoR1NMaXN0ICAgICAgICAgICpsaXN0LAoJCSAgICAgICAgICAgICAgICAgR0NvbXBh
cmVGdW5jICAgIGNvbXBhcmVfZnVuYyk7Cmdwb2ludGVyIGdfc2xpc3RfbnRoX2RhdGEJKEdTTGlz
dAkJKmxpc3QsCgkJCQkgZ3VpbnQJCSBuKTsKCgoKIAoKR0hhc2hUYWJsZSogZ19oYXNoX3RhYmxl
X25ldwkJKEdIYXNoRnVuYwkgaGFzaF9mdW5jLAoJCQkJCSBHQ29tcGFyZUZ1bmMJIGtleV9jb21w
YXJlX2Z1bmMpOwp2b2lkCSAgICBnX2hhc2hfdGFibGVfZGVzdHJveQkoR0hhc2hUYWJsZQkqaGFz
aF90YWJsZSk7CnZvaWQJICAgIGdfaGFzaF90YWJsZV9pbnNlcnQJCShHSGFzaFRhYmxlCSpoYXNo
X3RhYmxlLAoJCQkJCSBncG9pbnRlcgkga2V5LAoJCQkJCSBncG9pbnRlcgkgdmFsdWUpOwp2b2lk
CSAgICBnX2hhc2hfdGFibGVfcmVtb3ZlCQkoR0hhc2hUYWJsZQkqaGFzaF90YWJsZSwKCQkJCQkg
Z2NvbnN0cG9pbnRlcgkga2V5KTsKZ3BvaW50ZXIgICAgZ19oYXNoX3RhYmxlX2xvb2t1cAkJKEdI
YXNoVGFibGUJKmhhc2hfdGFibGUsCgkJCQkJIGdjb25zdHBvaW50ZXIJIGtleSk7Cmdib29sZWFu
ICAgIGdfaGFzaF90YWJsZV9sb29rdXBfZXh0ZW5kZWQoR0hhc2hUYWJsZQkqaGFzaF90YWJsZSwK
CQkJCQkgZ2NvbnN0cG9pbnRlcgkgbG9va3VwX2tleSwKCQkJCQkgZ3BvaW50ZXIJKm9yaWdfa2V5
LAoJCQkJCSBncG9pbnRlcgkqdmFsdWUpOwp2b2lkCSAgICBnX2hhc2hfdGFibGVfZnJlZXplCQko
R0hhc2hUYWJsZQkqaGFzaF90YWJsZSk7CnZvaWQJICAgIGdfaGFzaF90YWJsZV90aGF3CQkoR0hh
c2hUYWJsZQkqaGFzaF90YWJsZSk7CnZvaWQJICAgIGdfaGFzaF90YWJsZV9mb3JlYWNoCShHSGFz
aFRhYmxlCSpoYXNoX3RhYmxlLAoJCQkJCSBHSEZ1bmMJCSBmdW5jLAoJCQkJCSBncG9pbnRlcgkg
dXNlcl9kYXRhKTsKZ3VpbnQJICAgIGdfaGFzaF90YWJsZV9mb3JlYWNoX3JlbW92ZQkoR0hhc2hU
YWJsZQkqaGFzaF90YWJsZSwKCQkJCQkgR0hSRnVuYwkgZnVuYywKCQkJCQkgZ3BvaW50ZXIJIHVz
ZXJfZGF0YSk7Cmd1aW50CSAgICBnX2hhc2hfdGFibGVfc2l6ZQkJKEdIYXNoVGFibGUJKmhhc2hf
dGFibGUpOwoKCiAKCkdDYWNoZSoJIGdfY2FjaGVfbmV3CSAgICAgICAoR0NhY2hlTmV3RnVuYwkg
ICB2YWx1ZV9uZXdfZnVuYywKCQkJCUdDYWNoZURlc3Ryb3lGdW5jICB2YWx1ZV9kZXN0cm95X2Z1
bmMsCgkJCQlHQ2FjaGVEdXBGdW5jCSAgIGtleV9kdXBfZnVuYywKCQkJCUdDYWNoZURlc3Ryb3lG
dW5jICBrZXlfZGVzdHJveV9mdW5jLAoJCQkJR0hhc2hGdW5jCSAgIGhhc2hfa2V5X2Z1bmMsCgkJ
CQlHSGFzaEZ1bmMJICAgaGFzaF92YWx1ZV9mdW5jLAoJCQkJR0NvbXBhcmVGdW5jCSAgIGtleV9j
b21wYXJlX2Z1bmMpOwp2b2lkCSBnX2NhY2hlX2Rlc3Ryb3kgICAgICAgKEdDYWNoZQkJICAqY2Fj
aGUpOwpncG9pbnRlciBnX2NhY2hlX2luc2VydAkgICAgICAgKEdDYWNoZQkJICAqY2FjaGUsCgkJ
CQlncG9pbnRlcgkgICBrZXkpOwp2b2lkCSBnX2NhY2hlX3JlbW92ZQkgICAgICAgKEdDYWNoZQkJ
ICAqY2FjaGUsCgkJCQlncG9pbnRlcgkgICB2YWx1ZSk7CnZvaWQJIGdfY2FjaGVfa2V5X2ZvcmVh
Y2ggICAoR0NhY2hlCQkgICpjYWNoZSwKCQkJCUdIRnVuYwkJICAgZnVuYywKCQkJCWdwb2ludGVy
CSAgIHVzZXJfZGF0YSk7CnZvaWQJIGdfY2FjaGVfdmFsdWVfZm9yZWFjaCAoR0NhY2hlCQkgICpj
YWNoZSwKCQkJCUdIRnVuYwkJICAgZnVuYywKCQkJCWdwb2ludGVyCSAgIHVzZXJfZGF0YSk7CgoK
IAoKR1RyZWUqCSBnX3RyZWVfbmV3CSAoR0NvbXBhcmVGdW5jCSBrZXlfY29tcGFyZV9mdW5jKTsK
dm9pZAkgZ190cmVlX2Rlc3Ryb3kJIChHVHJlZQkJKnRyZWUpOwp2b2lkCSBnX3RyZWVfaW5zZXJ0
CSAoR1RyZWUJCSp0cmVlLAoJCQkgIGdwb2ludGVyCSBrZXksCgkJCSAgZ3BvaW50ZXIJIHZhbHVl
KTsKdm9pZAkgZ190cmVlX3JlbW92ZQkgKEdUcmVlCQkqdHJlZSwKCQkJICBncG9pbnRlcgkga2V5
KTsKZ3BvaW50ZXIgZ190cmVlX2xvb2t1cAkgKEdUcmVlCQkqdHJlZSwKCQkJICBncG9pbnRlcgkg
a2V5KTsKdm9pZAkgZ190cmVlX3RyYXZlcnNlIChHVHJlZQkJKnRyZWUsCgkJCSAgR1RyYXZlcnNl
RnVuYwkgdHJhdmVyc2VfZnVuYywKCQkJICBHVHJhdmVyc2VUeXBlCSB0cmF2ZXJzZV90eXBlLAoJ
CQkgIGdwb2ludGVyCSBkYXRhKTsKZ3BvaW50ZXIgZ190cmVlX3NlYXJjaAkgKEdUcmVlCQkqdHJl
ZSwKCQkJICBHU2VhcmNoRnVuYwkgc2VhcmNoX2Z1bmMsCgkJCSAgZ3BvaW50ZXIJIGRhdGEpOwpn
aW50CSBnX3RyZWVfaGVpZ2h0CSAoR1RyZWUJCSp0cmVlKTsKZ2ludAkgZ190cmVlX25ub2Rlcwkg
KEdUcmVlCQkqdHJlZSk7CgoKCiAKCnN0cnVjdCBfR05vZGUKewogIGdwb2ludGVyIGRhdGE7CiAg
R05vZGUJICAqbmV4dDsKICBHTm9kZQkgICpwcmV2OwogIEdOb2RlCSAgKnBhcmVudDsKICBHTm9k
ZQkgICpjaGlsZHJlbjsKfTsKCgoKCgoKdm9pZCAgICAgZ19ub2RlX3B1c2hfYWxsb2NhdG9yICAo
R0FsbG9jYXRvciAgICAgICAqYWxsb2NhdG9yKTsKdm9pZCAgICAgZ19ub2RlX3BvcF9hbGxvY2F0
b3IgICAodm9pZCk7CkdOb2RlKgkgZ19ub2RlX25ldwkJKGdwb2ludGVyCSAgIGRhdGEpOwp2b2lk
CSBnX25vZGVfZGVzdHJveQkJKEdOb2RlCQkgICpyb290KTsKdm9pZAkgZ19ub2RlX3VubGluawkJ
KEdOb2RlCQkgICpub2RlKTsKR05vZGUqCSBnX25vZGVfaW5zZXJ0CQkoR05vZGUJCSAgKnBhcmVu
dCwKCQkJCSBnaW50CQkgICBwb3NpdGlvbiwKCQkJCSBHTm9kZQkJICAqbm9kZSk7CkdOb2RlKgkg
Z19ub2RlX2luc2VydF9iZWZvcmUJKEdOb2RlCQkgICpwYXJlbnQsCgkJCQkgR05vZGUJCSAgKnNp
YmxpbmcsCgkJCQkgR05vZGUJCSAgKm5vZGUpOwpHTm9kZSoJIGdfbm9kZV9wcmVwZW5kCQkoR05v
ZGUJCSAgKnBhcmVudCwKCQkJCSBHTm9kZQkJICAqbm9kZSk7Cmd1aW50CSBnX25vZGVfbl9ub2Rl
cwkJKEdOb2RlCQkgICpyb290LAoJCQkJIEdUcmF2ZXJzZUZsYWdzCSAgIGZsYWdzKTsKR05vZGUq
CSBnX25vZGVfZ2V0X3Jvb3QJKEdOb2RlCQkgICpub2RlKTsKZ2Jvb2xlYW4gZ19ub2RlX2lzX2Fu
Y2VzdG9yCShHTm9kZQkJICAqbm9kZSwKCQkJCSBHTm9kZQkJICAqZGVzY2VuZGFudCk7Cmd1aW50
CSBnX25vZGVfZGVwdGgJCShHTm9kZQkJICAqbm9kZSk7CkdOb2RlKgkgZ19ub2RlX2ZpbmQJCShH
Tm9kZQkJICAqcm9vdCwKCQkJCSBHVHJhdmVyc2VUeXBlCSAgIG9yZGVyLAoJCQkJIEdUcmF2ZXJz
ZUZsYWdzCSAgIGZsYWdzLAoJCQkJIGdwb2ludGVyCSAgIGRhdGEpOwoKIAoKCgoKCgoKCgoKCiAK
CgoKCnZvaWQJIGdfbm9kZV90cmF2ZXJzZQkoR05vZGUJCSAgKnJvb3QsCgkJCQkgR1RyYXZlcnNl
VHlwZQkgICBvcmRlciwKCQkJCSBHVHJhdmVyc2VGbGFncwkgICBmbGFncywKCQkJCSBnaW50CQkg
ICBtYXhfZGVwdGgsCgkJCQkgR05vZGVUcmF2ZXJzZUZ1bmMgZnVuYywKCQkJCSBncG9pbnRlcgkg
ICBkYXRhKTsKCiAKCgoKCmd1aW50CSBnX25vZGVfbWF4X2hlaWdodAkgKEdOb2RlICpyb290KTsK
CnZvaWQJIGdfbm9kZV9jaGlsZHJlbl9mb3JlYWNoIChHTm9kZQkJICAqbm9kZSwKCQkJCSAgR1Ry
YXZlcnNlRmxhZ3MgICBmbGFncywKCQkJCSAgR05vZGVGb3JlYWNoRnVuYyBmdW5jLAoJCQkJICBn
cG9pbnRlcgkgICBkYXRhKTsKdm9pZAkgZ19ub2RlX3JldmVyc2VfY2hpbGRyZW4gKEdOb2RlCQkg
ICpub2RlKTsKZ3VpbnQJIGdfbm9kZV9uX2NoaWxkcmVuCSAoR05vZGUJCSAgKm5vZGUpOwpHTm9k
ZSoJIGdfbm9kZV9udGhfY2hpbGQJIChHTm9kZQkJICAqbm9kZSwKCQkJCSAgZ3VpbnQJCSAgIG4p
OwpHTm9kZSoJIGdfbm9kZV9sYXN0X2NoaWxkCSAoR05vZGUJCSAgKm5vZGUpOwpHTm9kZSoJIGdf
bm9kZV9maW5kX2NoaWxkCSAoR05vZGUJCSAgKm5vZGUsCgkJCQkgIEdUcmF2ZXJzZUZsYWdzICAg
ZmxhZ3MsCgkJCQkgIGdwb2ludGVyCSAgIGRhdGEpOwpnaW50CSBnX25vZGVfY2hpbGRfcG9zaXRp
b24JIChHTm9kZQkJICAqbm9kZSwKCQkJCSAgR05vZGUJCSAgKmNoaWxkKTsKZ2ludAkgZ19ub2Rl
X2NoaWxkX2luZGV4CSAoR05vZGUJCSAgKm5vZGUsCgkJCQkgIGdwb2ludGVyCSAgIGRhdGEpOwoK
R05vZGUqCSBnX25vZGVfZmlyc3Rfc2libGluZwkgKEdOb2RlCQkgICpub2RlKTsKR05vZGUqCSBn
X25vZGVfbGFzdF9zaWJsaW5nCSAoR05vZGUJCSAgKm5vZGUpOwoKCgoKCgoKCgogCgoKdHlwZWRl
ZiBlbnVtCnsKICBHX0hPT0tfRkxBR19BQ1RJVkUJPSAxIDw8IDAsCiAgR19IT09LX0ZMQUdfSU5f
Q0FMTAk9IDEgPDwgMSwKICBHX0hPT0tfRkxBR19NQVNLCT0gMHgwZgp9IEdIb29rRmxhZ01hc2s7
CgoKCnN0cnVjdCBfR0hvb2tMaXN0CnsKICBndWludAkJIHNlcV9pZDsKICBndWludAkJIGhvb2tf
c2l6ZTsKICBndWludAkJIGlzX3NldHVwIDogMTsKICBHSG9vawkJKmhvb2tzOwogIEdNZW1DaHVu
awkqaG9va19tZW1jaHVuazsKICBHSG9va0ZyZWVGdW5jCSBob29rX2ZyZWU7ICAKICBHSG9va0Zy
ZWVGdW5jCSBob29rX2Rlc3Ryb3k7ICAKfTsKCnN0cnVjdCBfR0hvb2sKewogIGdwb2ludGVyCSBk
YXRhOwogIEdIb29rCQkqbmV4dDsKICBHSG9vawkJKnByZXY7CiAgZ3VpbnQJCSByZWZfY291bnQ7
CiAgZ3VpbnQJCSBob29rX2lkOwogIGd1aW50CQkgZmxhZ3M7CiAgZ3BvaW50ZXIJIGZ1bmM7CiAg
R0Rlc3Ryb3lOb3RpZnkgZGVzdHJveTsKfTsKCgoKCgoKCgoKCgoKdm9pZAkgZ19ob29rX2xpc3Rf
aW5pdAkJKEdIb29rTGlzdAkJKmhvb2tfbGlzdCwKCQkJCQkgZ3VpbnQJCQkgaG9va19zaXplKTsK
dm9pZAkgZ19ob29rX2xpc3RfY2xlYXIJCShHSG9va0xpc3QJCSpob29rX2xpc3QpOwpHSG9vayoJ
IGdfaG9va19hbGxvYwkJCShHSG9va0xpc3QJCSpob29rX2xpc3QpOwp2b2lkCSBnX2hvb2tfZnJl
ZQkJCShHSG9va0xpc3QJCSpob29rX2xpc3QsCgkJCQkJIEdIb29rCQkJKmhvb2spOwp2b2lkCSBn
X2hvb2tfcmVmCQkJKEdIb29rTGlzdAkJKmhvb2tfbGlzdCwKCQkJCQkgR0hvb2sJCQkqaG9vayk7
CnZvaWQJIGdfaG9va191bnJlZgkJCShHSG9va0xpc3QJCSpob29rX2xpc3QsCgkJCQkJIEdIb29r
CQkJKmhvb2spOwpnYm9vbGVhbiBnX2hvb2tfZGVzdHJveQkJCShHSG9va0xpc3QJCSpob29rX2xp
c3QsCgkJCQkJIGd1aW50CQkJIGhvb2tfaWQpOwp2b2lkCSBnX2hvb2tfZGVzdHJveV9saW5rCQko
R0hvb2tMaXN0CQkqaG9va19saXN0LAoJCQkJCSBHSG9vawkJCSpob29rKTsKdm9pZAkgZ19ob29r
X3ByZXBlbmQJCQkoR0hvb2tMaXN0CQkqaG9va19saXN0LAoJCQkJCSBHSG9vawkJCSpob29rKTsK
dm9pZAkgZ19ob29rX2luc2VydF9iZWZvcmUJCShHSG9va0xpc3QJCSpob29rX2xpc3QsCgkJCQkJ
IEdIb29rCQkJKnNpYmxpbmcsCgkJCQkJIEdIb29rCQkJKmhvb2spOwp2b2lkCSBnX2hvb2tfaW5z
ZXJ0X3NvcnRlZAkJKEdIb29rTGlzdAkJKmhvb2tfbGlzdCwKCQkJCQkgR0hvb2sJCQkqaG9vaywK
CQkJCQkgR0hvb2tDb21wYXJlRnVuYwkgZnVuYyk7CkdIb29rKgkgZ19ob29rX2dldAkJCShHSG9v
a0xpc3QJCSpob29rX2xpc3QsCgkJCQkJIGd1aW50CQkJIGhvb2tfaWQpOwpHSG9vayoJIGdfaG9v
a19maW5kCQkJKEdIb29rTGlzdAkJKmhvb2tfbGlzdCwKCQkJCQkgZ2Jvb2xlYW4JCSBuZWVkX3Zh
bGlkcywKCQkJCQkgR0hvb2tGaW5kRnVuYwkJIGZ1bmMsCgkJCQkJIGdwb2ludGVyCQkgZGF0YSk7
CkdIb29rKgkgZ19ob29rX2ZpbmRfZGF0YQkJKEdIb29rTGlzdAkJKmhvb2tfbGlzdCwKCQkJCQkg
Z2Jvb2xlYW4JCSBuZWVkX3ZhbGlkcywKCQkJCQkgZ3BvaW50ZXIJCSBkYXRhKTsKR0hvb2sqCSBn
X2hvb2tfZmluZF9mdW5jCQkoR0hvb2tMaXN0CQkqaG9va19saXN0LAoJCQkJCSBnYm9vbGVhbgkJ
IG5lZWRfdmFsaWRzLAoJCQkJCSBncG9pbnRlcgkJIGZ1bmMpOwpHSG9vayoJIGdfaG9va19maW5k
X2Z1bmNfZGF0YQkJKEdIb29rTGlzdAkJKmhvb2tfbGlzdCwKCQkJCQkgZ2Jvb2xlYW4JCSBuZWVk
X3ZhbGlkcywKCQkJCQkgZ3BvaW50ZXIJCSBmdW5jLAoJCQkJCSBncG9pbnRlcgkJIGRhdGEpOwog
CkdIb29rKgkgZ19ob29rX2ZpcnN0X3ZhbGlkCQkoR0hvb2tMaXN0CQkqaG9va19saXN0LAoJCQkJ
CSBnYm9vbGVhbgkJIG1heV9iZV9pbl9jYWxsKTsKIAoKCkdIb29rKgkgZ19ob29rX25leHRfdmFs
aWQJCShHSG9va0xpc3QJCSpob29rX2xpc3QsCgkJCQkJIEdIb29rCQkJKmhvb2ssCgkJCQkJIGdi
b29sZWFuCQkgbWF5X2JlX2luX2NhbGwpOwoKIApnaW50CSBnX2hvb2tfY29tcGFyZV9pZHMJCShH
SG9vawkJCSpuZXdfaG9vaywKCQkJCQkgR0hvb2sJCQkqc2libGluZyk7CgogCgoKCiAKCnZvaWQJ
IGdfaG9va19saXN0X2ludm9rZQkJKEdIb29rTGlzdAkJKmhvb2tfbGlzdCwKCQkJCQkgZ2Jvb2xl
YW4JCSBtYXlfcmVjdXJzZSk7CiAKCgp2b2lkCSBnX2hvb2tfbGlzdF9pbnZva2VfY2hlY2sJKEdI
b29rTGlzdAkJKmhvb2tfbGlzdCwKCQkJCQkgZ2Jvb2xlYW4JCSBtYXlfcmVjdXJzZSk7CiAKCnZv
aWQJIGdfaG9va19saXN0X21hcnNoYWwJCShHSG9va0xpc3QJCSpob29rX2xpc3QsCgkJCQkJIGdi
b29sZWFuCQkgbWF5X3JlY3Vyc2UsCgkJCQkJIEdIb29rTWFyc2hhbGxlcgkgbWFyc2hhbGxlciwK
CQkJCQkgZ3BvaW50ZXIJCSBkYXRhKTsKdm9pZAkgZ19ob29rX2xpc3RfbWFyc2hhbF9jaGVjawko
R0hvb2tMaXN0CQkqaG9va19saXN0LAoJCQkJCSBnYm9vbGVhbgkJIG1heV9yZWN1cnNlLAoJCQkJ
CSBHSG9va0NoZWNrTWFyc2hhbGxlcgkgbWFyc2hhbGxlciwKCQkJCQkgZ3BvaW50ZXIJCSBkYXRh
KTsKCgogCgoKCgoKCgoKdm9pZCBnX29uX2Vycm9yX3F1ZXJ5IChjb25zdCBnY2hhciAqcHJnX25h
bWUpOwp2b2lkIGdfb25fZXJyb3Jfc3RhY2tfdHJhY2UgKGNvbnN0IGdjaGFyICpwcmdfbmFtZSk7
CgoKIAoKZXh0ZXJuCSAgICAgICAgY29uc3QgZ2NoYXIJCSpnX2xvZ19kb21haW5fZ2xpYjsKZ3Vp
bnQJCWdfbG9nX3NldF9oYW5kbGVyCShjb25zdCBnY2hhcgkqbG9nX2RvbWFpbiwKCQkJCQkgR0xv
Z0xldmVsRmxhZ3MJIGxvZ19sZXZlbHMsCgkJCQkJIEdMb2dGdW5jCSBsb2dfZnVuYywKCQkJCQkg
Z3BvaW50ZXIJIHVzZXJfZGF0YSk7CnZvaWQJCWdfbG9nX3JlbW92ZV9oYW5kbGVyCShjb25zdCBn
Y2hhcgkqbG9nX2RvbWFpbiwKCQkJCQkgZ3VpbnQJCSBoYW5kbGVyX2lkKTsKdm9pZAkJZ19sb2df
ZGVmYXVsdF9oYW5kbGVyCShjb25zdCBnY2hhcgkqbG9nX2RvbWFpbiwKCQkJCQkgR0xvZ0xldmVs
RmxhZ3MJIGxvZ19sZXZlbCwKCQkJCQkgY29uc3QgZ2NoYXIJKm1lc3NhZ2UsCgkJCQkJIGdwb2lu
dGVyCSB1bnVzZWRfZGF0YSk7CnZvaWQJCWdfbG9nCQkJKGNvbnN0IGdjaGFyCSpsb2dfZG9tYWlu
LAoJCQkJCSBHTG9nTGV2ZWxGbGFncwkgbG9nX2xldmVsLAoJCQkJCSBjb25zdCBnY2hhcgkqZm9y
bWF0LAoJCQkJCSAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAgMyAsICAgNCAp
KSkgOwp2b2lkCQlnX2xvZ3YJCQkoY29uc3QgZ2NoYXIJKmxvZ19kb21haW4sCgkJCQkJIEdMb2dM
ZXZlbEZsYWdzCSBsb2dfbGV2ZWwsCgkJCQkJIGNvbnN0IGdjaGFyCSpmb3JtYXQsCgkJCQkJIHZh
X2xpc3QJIGFyZ3MpOwpHTG9nTGV2ZWxGbGFncwlnX2xvZ19zZXRfZmF0YWxfbWFzawkoY29uc3Qg
Z2NoYXIJKmxvZ19kb21haW4sCgkJCQkJIEdMb2dMZXZlbEZsYWdzCSBmYXRhbF9tYXNrKTsKR0xv
Z0xldmVsRmxhZ3MJZ19sb2dfc2V0X2Fsd2F5c19mYXRhbAkoR0xvZ0xldmVsRmxhZ3MJIGZhdGFs
X21hc2spOwoKCgoKCgoKCgoKCgoKIyAxMzIxICIvdXNyL2luY2x1ZGUvZ2xpYi5oIiAzCgoKdHlw
ZWRlZiB2b2lkCSgqR1ByaW50RnVuYykJCShjb25zdCBnY2hhcgkqc3RyaW5nKTsKdm9pZAkJZ19w
cmludAkJCShjb25zdCBnY2hhcgkqZm9ybWF0LAoJCQkJCSAuLi4pIF9fYXR0cmlidXRlX18oKGZv
cm1hdCAocHJpbnRmLCAgMSAsICAgMiApKSkgOwpHUHJpbnRGdW5jCWdfc2V0X3ByaW50X2hhbmRs
ZXIJKEdQcmludEZ1bmMJIGZ1bmMpOwp2b2lkCQlnX3ByaW50ZXJyCQkoY29uc3QgZ2NoYXIJKmZv
cm1hdCwKCQkJCQkgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgIDEgLCAgIDIg
KSkpIDsKR1ByaW50RnVuYwlnX3NldF9wcmludGVycl9oYW5kbGVyCShHUHJpbnRGdW5jCSBmdW5j
KTsKCiAKdHlwZWRlZiB2b2lkCQkoKkdFcnJvckZ1bmMpCQkoY29uc3QgZ2NoYXIgKnN0cik7CnR5
cGVkZWYgdm9pZAkJKCpHV2FybmluZ0Z1bmMpCQkoY29uc3QgZ2NoYXIgKnN0cik7CkdFcnJvckZ1
bmMgICBnX3NldF9lcnJvcl9oYW5kbGVyICAgKEdFcnJvckZ1bmMJIGZ1bmMpOwpHV2FybmluZ0Z1
bmMgZ19zZXRfd2FybmluZ19oYW5kbGVyIChHV2FybmluZ0Z1bmMgZnVuYyk7CkdQcmludEZ1bmMg
ICBnX3NldF9tZXNzYWdlX2hhbmRsZXIgKEdQcmludEZ1bmMgZnVuYyk7CgoKIAoKCgoKCgoKCgoK
Z3BvaW50ZXIgZ19tYWxsb2MgICAgICAoZ3Vsb25nCSAgc2l6ZSk7Cmdwb2ludGVyIGdfbWFsbG9j
MCAgICAgKGd1bG9uZwkgIHNpemUpOwpncG9pbnRlciBnX3JlYWxsb2MgICAgIChncG9pbnRlciAg
bWVtLAoJCQlndWxvbmcJICBzaXplKTsKdm9pZAkgZ19mcmVlCSAgICAgICAoZ3BvaW50ZXIgIG1l
bSk7CgoKCnZvaWQJIGdfbWVtX3Byb2ZpbGUgKHZvaWQpOwp2b2lkCSBnX21lbV9jaGVjayAgIChn
cG9pbnRlciAgbWVtKTsKCiAKCkdBbGxvY2F0b3IqIGdfYWxsb2NhdG9yX25ldyAgIChjb25zdCBn
Y2hhciAgKm5hbWUsCgkJCSAgICAgICBndWludCAgICAgICAgIG5fcHJlYWxsb2NzKTsKdm9pZCAg
ICAgICAgZ19hbGxvY2F0b3JfZnJlZSAgKEdBbGxvY2F0b3IgICAqYWxsb2NhdG9yKTsKCgoKCgoK
IAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKR01lbUNodW5rKiBnX21lbV9jaHVua19uZXcgICAgIChn
Y2hhcgkgICpuYW1lLAoJCQkJZ2ludAkgICBhdG9tX3NpemUsCgkJCQlndWxvbmcJICAgYXJlYV9z
aXplLAoJCQkJZ2ludAkgICB0eXBlKTsKdm9pZAkgICBnX21lbV9jaHVua19kZXN0cm95IChHTWVt
Q2h1bmsgKm1lbV9jaHVuayk7Cmdwb2ludGVyICAgZ19tZW1fY2h1bmtfYWxsb2MgICAoR01lbUNo
dW5rICptZW1fY2h1bmspOwpncG9pbnRlciAgIGdfbWVtX2NodW5rX2FsbG9jMCAgKEdNZW1DaHVu
ayAqbWVtX2NodW5rKTsKdm9pZAkgICBnX21lbV9jaHVua19mcmVlICAgIChHTWVtQ2h1bmsgKm1l
bV9jaHVuaywKCQkJCWdwb2ludGVyICAgbWVtKTsKdm9pZAkgICBnX21lbV9jaHVua19jbGVhbiAg
IChHTWVtQ2h1bmsgKm1lbV9jaHVuayk7CnZvaWQJICAgZ19tZW1fY2h1bmtfcmVzZXQgICAoR01l
bUNodW5rICptZW1fY2h1bmspOwp2b2lkCSAgIGdfbWVtX2NodW5rX3ByaW50ICAgKEdNZW1DaHVu
ayAqbWVtX2NodW5rKTsKdm9pZAkgICBnX21lbV9jaHVua19pbmZvICAgICh2b2lkKTsKCiAKCgoK
CgoKCnZvaWQgZ19ibG93X2NodW5rcyAodm9pZCk7CgoKIAoKR1RpbWVyKiBnX3RpbWVyX25ldwko
dm9pZCk7CnZvaWQJZ190aW1lcl9kZXN0cm95IChHVGltZXIJICp0aW1lcik7CnZvaWQJZ190aW1l
cl9zdGFydAkoR1RpbWVyCSAqdGltZXIpOwp2b2lkCWdfdGltZXJfc3RvcAkoR1RpbWVyCSAqdGlt
ZXIpOwp2b2lkCWdfdGltZXJfcmVzZXQJKEdUaW1lcgkgKnRpbWVyKTsKZ2RvdWJsZSBnX3RpbWVy
X2VsYXBzZWQgKEdUaW1lcgkgKnRpbWVyLAoJCQkgZ3Vsb25nCSAqbWljcm9zZWNvbmRzKTsKCgog
CgoKCmdjaGFyKgkgZ19zdHJkZWxpbWl0CQkoZ2NoYXIJICAgICAqc3RyaW5nLAoJCQkJIGNvbnN0
IGdjaGFyICpkZWxpbWl0ZXJzLAoJCQkJIGdjaGFyCSAgICAgIG5ld19kZWxpbWl0ZXIpOwpnZG91
YmxlCSBnX3N0cnRvZAkJKGNvbnN0IGdjaGFyICpucHRyLAoJCQkJIGdjaGFyCSAgICAqKmVuZHB0
cik7CmdjaGFyKgkgZ19zdHJlcnJvcgkJKGdpbnQJICAgICAgZXJybnVtKTsKZ2NoYXIqCSBnX3N0
cnNpZ25hbAkJKGdpbnQJICAgICAgc2lnbnVtKTsKZ2ludAkgZ19zdHJjYXNlY21wCQkoY29uc3Qg
Z2NoYXIgKnMxLAoJCQkJIGNvbnN0IGdjaGFyICpzMik7CmdpbnQJIGdfc3RybmNhc2VjbXAJCShj
b25zdCBnY2hhciAqczEsCgkJCQkgY29uc3QgZ2NoYXIgKnMyLAoJCQkJIGd1aW50IAkgICAgICBu
KTsKdm9pZAkgZ19zdHJkb3duCQkoZ2NoYXIJICAgICAqc3RyaW5nKTsKdm9pZAkgZ19zdHJ1cAkJ
KGdjaGFyCSAgICAgKnN0cmluZyk7CnZvaWQJIGdfc3RycmV2ZXJzZQkJKGdjaGFyCSAgICAgKnN0
cmluZyk7CiAKZ2NoYXIqICAgZ19zdHJjaHVnICAgICAgICAgICAgICAoZ2NoYXIgICAgICAgICpz
dHJpbmcpOwogCmdjaGFyKiAgZ19zdHJjaG9tcCAgICAgICAgICAgICAgKGdjaGFyICAgICAgICAq
c3RyaW5nKTsKIAoKCiAKCgpnY2hhcioJIGdfc3RyZHVwCQkoY29uc3QgZ2NoYXIgKnN0cik7Cmdj
aGFyKgkgZ19zdHJkdXBfcHJpbnRmCShjb25zdCBnY2hhciAqZm9ybWF0LAoJCQkJIC4uLikgX19h
dHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsICAxICwgICAyICkpKSA7CmdjaGFyKgkgZ19zdHJk
dXBfdnByaW50ZgkoY29uc3QgZ2NoYXIgKmZvcm1hdCwKCQkJCSB2YV9saXN0ICAgICAgYXJncyk7
CmdjaGFyKgkgZ19zdHJuZHVwCQkoY29uc3QgZ2NoYXIgKnN0ciwKCQkJCSBndWludAkgICAgICBu
KTsKZ2NoYXIqCSBnX3N0cm5maWxsCQkoZ3VpbnQJICAgICAgbGVuZ3RoLAoJCQkJIGdjaGFyCSAg
ICAgIGZpbGxfY2hhcik7CmdjaGFyKgkgZ19zdHJjb25jYXQJCShjb25zdCBnY2hhciAqc3RyaW5n
MSwKCQkJCSAuLi4pOyAgCmdjaGFyKiAgIGdfc3Ryam9pbgkJKGNvbnN0IGdjaGFyICAqc2VwYXJh
dG9yLAoJCQkJIC4uLik7ICAKZ2NoYXIqCSBnX3N0cmVzY2FwZQkJKGdjaGFyCSAgICAgICpzdHJp
bmcpOwpncG9pbnRlciBnX21lbWR1cAkJKGdjb25zdHBvaW50ZXIgbWVtLAoJCQkJIGd1aW50CSAg
ICAgICBieXRlX3NpemUpOwoKIAoKCgoKCgpnY2hhcioqCSBnX3N0cnNwbGl0CQkoY29uc3QgZ2No
YXIgICpzdHJpbmcsCgkJCQkgY29uc3QgZ2NoYXIgICpkZWxpbWl0ZXIsCgkJCQkgZ2ludCAgICAg
ICAgICBtYXhfdG9rZW5zKTsKZ2NoYXIqICAgZ19zdHJqb2ludgkJKGNvbnN0IGdjaGFyICAqc2Vw
YXJhdG9yLAoJCQkJIGdjaGFyICAgICAgICoqc3RyX2FycmF5KTsKdm9pZCAgICAgZ19zdHJmcmVl
dgkJKGdjaGFyICAgICAgICoqc3RyX2FycmF5KTsKCgoKIAoKZ3VpbnQJZ19wcmludGZfc3RyaW5n
X3VwcGVyX2JvdW5kIChjb25zdCBnY2hhciogZm9ybWF0LAoJCQkJICAgICB2YV9saXN0CSAgYXJn
cyk7CgoKIAoKZ2NoYXIqCWdfZ2V0X3VzZXJfbmFtZQkJKHZvaWQpOwpnY2hhcioJZ19nZXRfcmVh
bF9uYW1lCQkodm9pZCk7CmdjaGFyKglnX2dldF9ob21lX2RpcgkJKHZvaWQpOwpnY2hhcioJZ19n
ZXRfdG1wX2RpcgkJKHZvaWQpOwpnY2hhcioJZ19nZXRfcHJnbmFtZQkJKHZvaWQpOwp2b2lkCWdf
c2V0X3ByZ25hbWUJCShjb25zdCBnY2hhciAqcHJnbmFtZSk7CgoKIAoKZ3VpbnQJZ19wYXJzZV9k
ZWJ1Z19zdHJpbmcJKGNvbnN0IGdjaGFyICpzdHJpbmcsCgkJCQkgR0RlYnVnS2V5ICAgKmtleXMs
CgkJCQkgZ3VpbnQJICAgICAgbmtleXMpOwpnaW50CWdfc25wcmludGYJCShnY2hhcgkgICAgICpz
dHJpbmcsCgkJCQkgZ3Vsb25nCSAgICAgIG4sCgkJCQkgZ2NoYXIgY29uc3QgKmZvcm1hdCwKCQkJ
CSAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAgMyAsICAgNCApKSkgOwpnaW50
CWdfdnNucHJpbnRmCQkoZ2NoYXIJICAgICAqc3RyaW5nLAoJCQkJIGd1bG9uZwkgICAgICBuLAoJ
CQkJIGdjaGFyIGNvbnN0ICpmb3JtYXQsCgkJCQkgdmFfbGlzdCAgICAgIGFyZ3MpOwpnY2hhcioJ
Z19iYXNlbmFtZQkJKGNvbnN0IGdjaGFyICpmaWxlX25hbWUpOwogCmdib29sZWFuIGdfcGF0aF9p
c19hYnNvbHV0ZQkoY29uc3QgZ2NoYXIgKmZpbGVfbmFtZSk7CiAKZ2NoYXIqICBnX3BhdGhfc2tp
cF9yb290CShnY2hhciAgICAgICAqZmlsZV9uYW1lKTsKCiAKZ2NoYXIqCWdfZGlybmFtZQkJKGNv
bnN0IGdjaGFyICpmaWxlX25hbWUpOwpnY2hhcioJZ19nZXRfY3VycmVudF9kaXIJKHZvaWQpOwpn
Y2hhciogIGdfZ2V0ZW52CQkoY29uc3QgZ2NoYXIgKnZhcmlhYmxlKTsKCgogCgoKCgp2b2lkCWdf
YXRleGl0CQkoR1ZvaWRGdW5jICAgIGZ1bmMpOwoKCiAKCmV4dGVybiBpbmxpbmUgIGdpbnQJZ19i
aXRfbnRoX2xzZiAoZ3VpbnQzMiBtYXNrLAoJCQkJICAgICAgIGdpbnQgICAgbnRoX2JpdCk7Cgpl
eHRlcm4gaW5saW5lICBnaW50CmdfYml0X250aF9sc2YgKGd1aW50MzIgbWFzaywKCSAgICAgICBn
aW50ICAgIG50aF9iaXQpCnsKICBkbwogICAgewogICAgICBudGhfYml0Kys7CiAgICAgIGlmICht
YXNrICYgKDEgPDwgKGd1aW50KSBudGhfYml0KSkKCXJldHVybiBudGhfYml0OwogICAgfQogIHdo
aWxlIChudGhfYml0IDwgMzIpOwogIHJldHVybiAtMTsKfQoKCmV4dGVybiBpbmxpbmUgIGdpbnQJ
Z19iaXRfbnRoX21zZiAoZ3VpbnQzMiBtYXNrLAoJCQkJICAgICAgIGdpbnQgICAgbnRoX2JpdCk7
CgpleHRlcm4gaW5saW5lICBnaW50CmdfYml0X250aF9tc2YgKGd1aW50MzIgbWFzaywKCSAgICAg
ICBnaW50ICAgIG50aF9iaXQpCnsKICBpZiAobnRoX2JpdCA8IDApCiAgICBudGhfYml0ID0gMzI7
CiAgZG8KICAgIHsKICAgICAgbnRoX2JpdC0tOwogICAgICBpZiAobWFzayAmICgxIDw8IChndWlu
dCkgbnRoX2JpdCkpCglyZXR1cm4gbnRoX2JpdDsKICAgIH0KICB3aGlsZSAobnRoX2JpdCA+IDAp
OwogIHJldHVybiAtMTsKfQoKCmV4dGVybiBpbmxpbmUgIGd1aW50CWdfYml0X3N0b3JhZ2UgKGd1
aW50IG51bWJlcik7CgpleHRlcm4gaW5saW5lICBndWludApnX2JpdF9zdG9yYWdlIChndWludCBu
dW1iZXIpCnsKICByZWdpc3RlciBndWludCBuX2JpdHMgPSAwOwogIAogIGRvCiAgICB7CiAgICAg
IG5fYml0cysrOwogICAgICBudW1iZXIgPj49IDE7CiAgICB9CiAgd2hpbGUgKG51bWJlcik7CiAg
cmV0dXJuIG5fYml0czsKfQoKCiAKCkdTdHJpbmdDaHVuayogZ19zdHJpbmdfY2h1bmtfbmV3CSAg
IChnaW50IHNpemUpOwp2b2lkCSAgICAgIGdfc3RyaW5nX2NodW5rX2ZyZWUJICAgKEdTdHJpbmdD
aHVuayAqY2h1bmspOwpnY2hhcioJICAgICAgZ19zdHJpbmdfY2h1bmtfaW5zZXJ0CSAgIChHU3Ry
aW5nQ2h1bmsgKmNodW5rLAoJCQkJCSAgICBjb25zdCBnY2hhcgkgKnN0cmluZyk7CmdjaGFyKgkg
ICAgICBnX3N0cmluZ19jaHVua19pbnNlcnRfY29uc3QgIChHU3RyaW5nQ2h1bmsgKmNodW5rLAoJ
CQkJCSAgICBjb25zdCBnY2hhcgkgKnN0cmluZyk7CgoKIAoKR1N0cmluZyogZ19zdHJpbmdfbmV3
CSAgICAoY29uc3QgZ2NoYXIgKmluaXQpOwpHU3RyaW5nKiBnX3N0cmluZ19zaXplZF9uZXcgKGd1
aW50CSAgZGZsX3NpemUpOwp2b2lkCSBnX3N0cmluZ19mcmVlCSAgICAoR1N0cmluZwkgKnN0cmlu
ZywKCQkJICAgICBnaW50CSAgZnJlZV9zZWdtZW50KTsKR1N0cmluZyogZ19zdHJpbmdfYXNzaWdu
ICAgIChHU3RyaW5nCSAqbHZhbCwKCQkJICAgICBjb25zdCBnY2hhciAqcnZhbCk7CkdTdHJpbmcq
IGdfc3RyaW5nX3RydW5jYXRlICAoR1N0cmluZwkgKnN0cmluZywKCQkJICAgICBnaW50CSAgbGVu
KTsKR1N0cmluZyogZ19zdHJpbmdfYXBwZW5kICAgIChHU3RyaW5nCSAqc3RyaW5nLAoJCQkgICAg
IGNvbnN0IGdjaGFyICp2YWwpOwpHU3RyaW5nKiBnX3N0cmluZ19hcHBlbmRfYyAgKEdTdHJpbmcJ
ICpzdHJpbmcsCgkJCSAgICAgZ2NoYXIJICBjKTsKR1N0cmluZyogZ19zdHJpbmdfcHJlcGVuZCAg
IChHU3RyaW5nCSAqc3RyaW5nLAoJCQkgICAgIGNvbnN0IGdjaGFyICp2YWwpOwpHU3RyaW5nKiBn
X3N0cmluZ19wcmVwZW5kX2MgKEdTdHJpbmcJICpzdHJpbmcsCgkJCSAgICAgZ2NoYXIJICBjKTsK
R1N0cmluZyogZ19zdHJpbmdfaW5zZXJ0ICAgIChHU3RyaW5nCSAqc3RyaW5nLAoJCQkgICAgIGdp
bnQJICBwb3MsCgkJCSAgICAgY29uc3QgZ2NoYXIgKnZhbCk7CkdTdHJpbmcqIGdfc3RyaW5nX2lu
c2VydF9jICAoR1N0cmluZwkgKnN0cmluZywKCQkJICAgICBnaW50CSAgcG9zLAoJCQkgICAgIGdj
aGFyCSAgYyk7CkdTdHJpbmcqIGdfc3RyaW5nX2VyYXNlCSAgICAoR1N0cmluZwkgKnN0cmluZywK
CQkJICAgICBnaW50CSAgcG9zLAoJCQkgICAgIGdpbnQJICBsZW4pOwpHU3RyaW5nKiBnX3N0cmlu
Z19kb3duCSAgICAoR1N0cmluZwkgKnN0cmluZyk7CkdTdHJpbmcqIGdfc3RyaW5nX3VwCSAgICAo
R1N0cmluZwkgKnN0cmluZyk7CnZvaWQJIGdfc3RyaW5nX3NwcmludGYgICAoR1N0cmluZwkgKnN0
cmluZywKCQkJICAgICBjb25zdCBnY2hhciAqZm9ybWF0LAoJCQkgICAgIC4uLikgX19hdHRyaWJ1
dGVfXygoZm9ybWF0IChwcmludGYsICAyICwgICAzICkpKSA7CnZvaWQJIGdfc3RyaW5nX3Nwcmlu
dGZhICAoR1N0cmluZwkgKnN0cmluZywKCQkJICAgICBjb25zdCBnY2hhciAqZm9ybWF0LAoJCQkg
ICAgIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsICAyICwgICAzICkpKSA7CgoK
IAoKCgoKCgoKCgpHQXJyYXkqIGdfYXJyYXlfbmV3CSAgICAgICAgICAoZ2Jvb2xlYW4JICAgIHpl
cm9fdGVybWluYXRlZCwKCQkJCSAgIGdib29sZWFuCSAgICBjbGVhciwKCQkJCSAgIGd1aW50CSAg
ICBlbGVtZW50X3NpemUpOwp2b2lkCWdfYXJyYXlfZnJlZQkgICAgICAgICAgKEdBcnJheQkgICAq
YXJyYXksCgkJCQkgICBnYm9vbGVhbgkgICAgZnJlZV9zZWdtZW50KTsKR0FycmF5KiBnX2FycmF5
X2FwcGVuZF92YWxzICAgICAgIChHQXJyYXkJICAgKmFycmF5LAoJCQkJICAgZ2NvbnN0cG9pbnRl
ciAgICBkYXRhLAoJCQkJICAgZ3VpbnQJICAgIGxlbik7CkdBcnJheSogZ19hcnJheV9wcmVwZW5k
X3ZhbHMgICAgICAoR0FycmF5CSAgICphcnJheSwKCQkJCSAgIGdjb25zdHBvaW50ZXIgICAgZGF0
YSwKCQkJCSAgIGd1aW50CSAgICBsZW4pOwpHQXJyYXkqIGdfYXJyYXlfaW5zZXJ0X3ZhbHMgICAg
ICAgKEdBcnJheSAgICAgICAgICAqYXJyYXksCgkJCQkgICBndWludCAgICAgICAgICAgIGluZGV4
LAoJCQkJICAgZ2NvbnN0cG9pbnRlciAgICBkYXRhLAoJCQkJICAgZ3VpbnQgICAgICAgICAgICBs
ZW4pOwpHQXJyYXkqIGdfYXJyYXlfc2V0X3NpemUgICAgICAgICAgKEdBcnJheQkgICAqYXJyYXks
CgkJCQkgICBndWludAkgICAgbGVuZ3RoKTsKR0FycmF5KiBnX2FycmF5X3JlbW92ZV9pbmRleAkg
IChHQXJyYXkJICAgKmFycmF5LAoJCQkJICAgZ3VpbnQJICAgIGluZGV4KTsKR0FycmF5KiBnX2Fy
cmF5X3JlbW92ZV9pbmRleF9mYXN0IChHQXJyYXkJICAgKmFycmF5LAoJCQkJICAgZ3VpbnQJICAg
IGluZGV4KTsKCiAKCgoKCgpHUHRyQXJyYXkqICBnX3B0cl9hcnJheV9uZXcJCSAgICh2b2lkKTsK
dm9pZAkgICAgZ19wdHJfYXJyYXlfZnJlZQkJICAgKEdQdHJBcnJheQkqYXJyYXksCgkJCQkJICAg
IGdib29sZWFuCSBmcmVlX3NlZyk7CnZvaWQJICAgIGdfcHRyX2FycmF5X3NldF9zaXplCSAgIChH
UHRyQXJyYXkJKmFycmF5LAoJCQkJCSAgICBnaW50CSBsZW5ndGgpOwpncG9pbnRlciAgICBnX3B0
cl9hcnJheV9yZW1vdmVfaW5kZXgJICAgKEdQdHJBcnJheQkqYXJyYXksCgkJCQkJICAgIGd1aW50
CSBpbmRleCk7Cmdwb2ludGVyICAgIGdfcHRyX2FycmF5X3JlbW92ZV9pbmRleF9mYXN0ICAoR1B0
ckFycmF5CSphcnJheSwKCQkJCQkgICAgZ3VpbnQJIGluZGV4KTsKZ2Jvb2xlYW4gICAgZ19wdHJf
YXJyYXlfcmVtb3ZlCQkgICAoR1B0ckFycmF5CSphcnJheSwKCQkJCQkgICAgZ3BvaW50ZXIJIGRh
dGEpOwpnYm9vbGVhbiAgICBnX3B0cl9hcnJheV9yZW1vdmVfZmFzdCAgICAgICAgKEdQdHJBcnJh
eQkqYXJyYXksCgkJCQkJICAgIGdwb2ludGVyCSBkYXRhKTsKdm9pZAkgICAgZ19wdHJfYXJyYXlf
YWRkCQkgICAoR1B0ckFycmF5CSphcnJheSwKCQkJCQkgICAgZ3BvaW50ZXIJIGRhdGEpOwoKIAoK
CgpHQnl0ZUFycmF5KiBnX2J5dGVfYXJyYXlfbmV3CSAgICAgICAgICAgKHZvaWQpOwp2b2lkCSAg
ICBnX2J5dGVfYXJyYXlfZnJlZQkgICAgICAgICAgIChHQnl0ZUFycmF5CSAqYXJyYXksCgkJCQkJ
ICAgIGdib29sZWFuCSAgZnJlZV9zZWdtZW50KTsKR0J5dGVBcnJheSogZ19ieXRlX2FycmF5X2Fw
cGVuZAkgICAgICAgICAgIChHQnl0ZUFycmF5CSAqYXJyYXksCgkJCQkJICAgIGNvbnN0IGd1aW50
OCAqZGF0YSwKCQkJCQkgICAgZ3VpbnQJICBsZW4pOwpHQnl0ZUFycmF5KiBnX2J5dGVfYXJyYXlf
cHJlcGVuZCAgICAgICAgICAgKEdCeXRlQXJyYXkJICphcnJheSwKCQkJCQkgICAgY29uc3QgZ3Vp
bnQ4ICpkYXRhLAoJCQkJCSAgICBndWludAkgIGxlbik7CkdCeXRlQXJyYXkqIGdfYnl0ZV9hcnJh
eV9zZXRfc2l6ZSAgICAgICAgICAoR0J5dGVBcnJheQkgKmFycmF5LAoJCQkJCSAgICBndWludAkg
IGxlbmd0aCk7CkdCeXRlQXJyYXkqIGdfYnl0ZV9hcnJheV9yZW1vdmVfaW5kZXgJICAgKEdCeXRl
QXJyYXkJICphcnJheSwKCQkJCQkgICAgZ3VpbnQJICBpbmRleCk7CkdCeXRlQXJyYXkqIGdfYnl0
ZV9hcnJheV9yZW1vdmVfaW5kZXhfZmFzdCAoR0J5dGVBcnJheQkgKmFycmF5LAoJCQkJCSAgICBn
dWludAkgIGluZGV4KTsKCgogCgpnaW50ICBnX3N0cl9lcXVhbCAoZ2NvbnN0cG9pbnRlciAgIHYs
CgkJICAgZ2NvbnN0cG9pbnRlciAgIHYyKTsKZ3VpbnQgZ19zdHJfaGFzaCAgKGdjb25zdHBvaW50
ZXIgICB2KTsKCmdpbnQgIGdfaW50X2VxdWFsIChnY29uc3Rwb2ludGVyICAgdiwKCQkgICBnY29u
c3Rwb2ludGVyICAgdjIpOwpndWludCBnX2ludF9oYXNoICAoZ2NvbnN0cG9pbnRlciAgIHYpOwoK
IAoKCgoKCmd1aW50IGdfZGlyZWN0X2hhc2ggIChnY29uc3Rwb2ludGVyIHYpOwpnaW50ICBnX2Rp
cmVjdF9lcXVhbCAoZ2NvbnN0cG9pbnRlciB2LAoJCSAgICAgIGdjb25zdHBvaW50ZXIgdjIpOwoK
CiAKCkdRdWFyawkgIGdfcXVhcmtfdHJ5X3N0cmluZwkJKGNvbnN0IGdjaGFyCSpzdHJpbmcpOwpH
UXVhcmsJICBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZwkoY29uc3QgZ2NoYXIJKnN0cmluZyk7
CkdRdWFyawkgIGdfcXVhcmtfZnJvbV9zdHJpbmcJCShjb25zdCBnY2hhcgkqc3RyaW5nKTsKZ2No
YXIqCSAgZ19xdWFya190b19zdHJpbmcJCShHUXVhcmsJCSBxdWFyayk7CgoKIAoKdm9pZAkgIGdf
ZGF0YWxpc3RfaW5pdAkJIChHRGF0YQkJICoqZGF0YWxpc3QpOwp2b2lkCSAgZ19kYXRhbGlzdF9j
bGVhcgkJIChHRGF0YQkJICoqZGF0YWxpc3QpOwpncG9pbnRlciAgZ19kYXRhbGlzdF9pZF9nZXRf
ZGF0YQkgKEdEYXRhCQkgKipkYXRhbGlzdCwKCQkJCQkgIEdRdWFyawkgICBrZXlfaWQpOwp2b2lk
CSAgZ19kYXRhbGlzdF9pZF9zZXRfZGF0YV9mdWxsCSAoR0RhdGEJCSAqKmRhdGFsaXN0LAoJCQkJ
CSAgR1F1YXJrCSAgIGtleV9pZCwKCQkJCQkgIGdwb2ludGVyCSAgIGRhdGEsCgkJCQkJICBHRGVz
dHJveU5vdGlmeSAgIGRlc3Ryb3lfZnVuYyk7CnZvaWQJICBnX2RhdGFsaXN0X2lkX3JlbW92ZV9u
b19ub3RpZnkgKEdEYXRhCQkgKipkYXRhbGlzdCwKCQkJCQkgIEdRdWFyawkgICBrZXlfaWQpOwp2
b2lkCSAgZ19kYXRhbGlzdF9mb3JlYWNoCQkgKEdEYXRhCQkgKipkYXRhbGlzdCwKCQkJCQkgIEdE
YXRhRm9yZWFjaEZ1bmMgZnVuYywKCQkJCQkgIGdwb2ludGVyCSAgIHVzZXJfZGF0YSk7CgoKCgoK
CgoKCgoKCgoKCgogCgp2b2lkCSAgZ19kYXRhc2V0X2Rlc3Ryb3kJCShnY29uc3Rwb2ludGVyCSAg
ZGF0YXNldF9sb2NhdGlvbik7Cmdwb2ludGVyICBnX2RhdGFzZXRfaWRfZ2V0X2RhdGEJCShnY29u
c3Rwb2ludGVyCSAgZGF0YXNldF9sb2NhdGlvbiwKCQkJCQkgR1F1YXJrCQkgIGtleV9pZCk7CnZv
aWQJICBnX2RhdGFzZXRfaWRfc2V0X2RhdGFfZnVsbAkoZ2NvbnN0cG9pbnRlcgkgIGRhdGFzZXRf
bG9jYXRpb24sCgkJCQkJIEdRdWFyawkJICBrZXlfaWQsCgkJCQkJIGdwb2ludGVyCSAgZGF0YSwK
CQkJCQkgR0Rlc3Ryb3lOb3RpZnkJICBkZXN0cm95X2Z1bmMpOwp2b2lkCSAgZ19kYXRhc2V0X2lk
X3JlbW92ZV9ub19ub3RpZnkJKGdjb25zdHBvaW50ZXIJICBkYXRhc2V0X2xvY2F0aW9uLAoJCQkJ
CSBHUXVhcmsJCSAga2V5X2lkKTsKdm9pZAkgIGdfZGF0YXNldF9mb3JlYWNoCQkoZ2NvbnN0cG9p
bnRlcgkgIGRhdGFzZXRfbG9jYXRpb24sCgkJCQkJIEdEYXRhRm9yZWFjaEZ1bmMgZnVuYywKCQkJ
CQkgZ3BvaW50ZXIJICB1c2VyX2RhdGEpOwoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoK
CgogCnR5cGVkZWYgZW51bQp7CiAgR19FUlJfVU5LTk9XTiwKICBHX0VSUl9VTkVYUF9FT0YsCiAg
R19FUlJfVU5FWFBfRU9GX0lOX1NUUklORywKICBHX0VSUl9VTkVYUF9FT0ZfSU5fQ09NTUVOVCwK
ICBHX0VSUl9OT05fRElHSVRfSU5fQ09OU1QsCiAgR19FUlJfRElHSVRfUkFESVgsCiAgR19FUlJf
RkxPQVRfUkFESVgsCiAgR19FUlJfRkxPQVRfTUFMRk9STUVECn0gR0Vycm9yVHlwZTsKCiAKdHlw
ZWRlZiBlbnVtCnsKICBHX1RPS0VOX0VPRgkJCT0gICAwLAogIAogIEdfVE9LRU5fTEVGVF9QQVJF
TgkJPSAnKCcsCiAgR19UT0tFTl9SSUdIVF9QQVJFTgkJPSAnKScsCiAgR19UT0tFTl9MRUZUX0NV
UkxZCQk9ICd7JywKICBHX1RPS0VOX1JJR0hUX0NVUkxZCQk9ICd9JywKICBHX1RPS0VOX0xFRlRf
QlJBQ0UJCT0gJ1snLAogIEdfVE9LRU5fUklHSFRfQlJBQ0UJCT0gJ10nLAogIEdfVE9LRU5fRVFV
QUxfU0lHTgkJPSAnPScsCiAgR19UT0tFTl9DT01NQQkJCT0gJywnLAogIAogIEdfVE9LRU5fTk9O
RQkJCT0gMjU2LAogIAogIEdfVE9LRU5fRVJST1IsCiAgCiAgR19UT0tFTl9DSEFSLAogIEdfVE9L
RU5fQklOQVJZLAogIEdfVE9LRU5fT0NUQUwsCiAgR19UT0tFTl9JTlQsCiAgR19UT0tFTl9IRVgs
CiAgR19UT0tFTl9GTE9BVCwKICBHX1RPS0VOX1NUUklORywKICAKICBHX1RPS0VOX1NZTUJPTCwK
ICBHX1RPS0VOX0lERU5USUZJRVIsCiAgR19UT0tFTl9JREVOVElGSUVSX05VTEwsCiAgCiAgR19U
T0tFTl9DT01NRU5UX1NJTkdMRSwKICBHX1RPS0VOX0NPTU1FTlRfTVVMVEksCiAgR19UT0tFTl9M
QVNUCn0gR1Rva2VuVHlwZTsKCnVuaW9uCV9HVG9rZW5WYWx1ZQp7CiAgZ3BvaW50ZXIJdl9zeW1i
b2w7CiAgZ2NoYXIJCSp2X2lkZW50aWZpZXI7CiAgZ3Vsb25nCXZfYmluYXJ5OwogIGd1bG9uZwl2
X29jdGFsOwogIGd1bG9uZwl2X2ludDsKICBnZG91YmxlCXZfZmxvYXQ7CiAgZ3Vsb25nCXZfaGV4
OwogIGdjaGFyCQkqdl9zdHJpbmc7CiAgZ2NoYXIJCSp2X2NvbW1lbnQ7CiAgZ3VjaGFyCXZfY2hh
cjsKICBndWludAkJdl9lcnJvcjsKfTsKCnN0cnVjdAlfR1NjYW5uZXJDb25maWcKewogICAKCiAg
Z2NoYXIJCSpjc2V0X3NraXBfY2hhcmFjdGVyczsJCSAKICBnY2hhcgkJKmNzZXRfaWRlbnRpZmll
cl9maXJzdDsKICBnY2hhcgkJKmNzZXRfaWRlbnRpZmllcl9udGg7CiAgZ2NoYXIJCSpjcGFpcl9j
b21tZW50X3NpbmdsZTsJCSAKICAKICAgCgogIGd1aW50CQljYXNlX3NlbnNpdGl2ZSA6IDE7CiAg
CiAgIAoKCiAgZ3VpbnQJCXNraXBfY29tbWVudF9tdWx0aSA6IDE7CQkgCiAgZ3VpbnQJCXNraXBf
Y29tbWVudF9zaW5nbGUgOiAxOwkgCiAgZ3VpbnQJCXNjYW5fY29tbWVudF9tdWx0aSA6IDE7CQkg
CiAgZ3VpbnQJCXNjYW5faWRlbnRpZmllciA6IDE7CiAgZ3VpbnQJCXNjYW5faWRlbnRpZmllcl8x
Y2hhciA6IDE7CiAgZ3VpbnQJCXNjYW5faWRlbnRpZmllcl9OVUxMIDogMTsKICBndWludAkJc2Nh
bl9zeW1ib2xzIDogMTsKICBndWludAkJc2Nhbl9iaW5hcnkgOiAxOwogIGd1aW50CQlzY2FuX29j
dGFsIDogMTsKICBndWludAkJc2Nhbl9mbG9hdCA6IDE7CiAgZ3VpbnQJCXNjYW5faGV4IDogMTsJ
CQkgCiAgZ3VpbnQJCXNjYW5faGV4X2RvbGxhciA6IDE7CQkgCiAgZ3VpbnQJCXNjYW5fc3RyaW5n
X3NxIDogMTsJCSAKICBndWludAkJc2Nhbl9zdHJpbmdfZHEgOiAxOwkJIAogIGd1aW50CQludW1i
ZXJzXzJfaW50IDogMTsJCSAKICBndWludAkJaW50XzJfZmxvYXQgOiAxOwkJIAogIGd1aW50CQlp
ZGVudGlmaWVyXzJfc3RyaW5nIDogMTsKICBndWludAkJY2hhcl8yX3Rva2VuIDogMTsJCSAKICBn
dWludAkJc3ltYm9sXzJfdG9rZW4gOiAxOwogIGd1aW50CQlzY29wZV8wX2ZhbGxiYWNrIDogMTsJ
CSAKfTsKCnN0cnVjdAlfR1NjYW5uZXIKewogICAKICBncG9pbnRlcgkJdXNlcl9kYXRhOwogIGd1
aW50CQkJbWF4X3BhcnNlX2Vycm9yczsKICAKICAgCiAgZ3VpbnQJCQlwYXJzZV9lcnJvcnM7CiAg
CiAgIAogIGNvbnN0IGdjaGFyCQkqaW5wdXRfbmFtZTsKICAKICAgCiAgZ3BvaW50ZXIJCWRlcml2
ZWRfZGF0YTsKICAKICAgCiAgR1NjYW5uZXJDb25maWcJKmNvbmZpZzsKICAKICAgCiAgR1Rva2Vu
VHlwZQkJdG9rZW47CiAgR1Rva2VuVmFsdWUJCXZhbHVlOwogIGd1aW50CQkJbGluZTsKICBndWlu
dAkJCXBvc2l0aW9uOwogIAogICAKICBHVG9rZW5UeXBlCQluZXh0X3Rva2VuOwogIEdUb2tlblZh
bHVlCQluZXh0X3ZhbHVlOwogIGd1aW50CQkJbmV4dF9saW5lOwogIGd1aW50CQkJbmV4dF9wb3Np
dGlvbjsKICAKICAgCiAgR0hhc2hUYWJsZQkJKnN5bWJvbF90YWJsZTsKICBnaW50CQkJaW5wdXRf
ZmQ7CiAgY29uc3QgZ2NoYXIJCSp0ZXh0OwogIGNvbnN0IGdjaGFyCQkqdGV4dF9lbmQ7CiAgZ2No
YXIJCQkqYnVmZmVyOwogIGd1aW50CQkJc2NvcGVfaWQ7CiAgCiAgIAogIEdTY2FubmVyTXNnRnVu
Ywltc2dfaGFuZGxlcjsKfTsKCkdTY2FubmVyKglnX3NjYW5uZXJfbmV3CQkJKEdTY2FubmVyQ29u
ZmlnICpjb25maWdfdGVtcGwpOwp2b2lkCQlnX3NjYW5uZXJfZGVzdHJveQkJKEdTY2FubmVyCSpz
Y2FubmVyKTsKdm9pZAkJZ19zY2FubmVyX2lucHV0X2ZpbGUJCShHU2Nhbm5lcgkqc2Nhbm5lciwK
CQkJCQkJIGdpbnQJCWlucHV0X2ZkKTsKdm9pZAkJZ19zY2FubmVyX3N5bmNfZmlsZV9vZmZzZXQJ
KEdTY2FubmVyCSpzY2FubmVyKTsKdm9pZAkJZ19zY2FubmVyX2lucHV0X3RleHQJCShHU2Nhbm5l
cgkqc2Nhbm5lciwKCQkJCQkJIGNvbnN0CWdjaGFyCSp0ZXh0LAoJCQkJCQkgZ3VpbnQJCXRleHRf
bGVuKTsKR1Rva2VuVHlwZQlnX3NjYW5uZXJfZ2V0X25leHRfdG9rZW4JKEdTY2FubmVyCSpzY2Fu
bmVyKTsKR1Rva2VuVHlwZQlnX3NjYW5uZXJfcGVla19uZXh0X3Rva2VuCShHU2Nhbm5lcgkqc2Nh
bm5lcik7CkdUb2tlblR5cGUJZ19zY2FubmVyX2N1cl90b2tlbgkJKEdTY2FubmVyCSpzY2FubmVy
KTsKR1Rva2VuVmFsdWUJZ19zY2FubmVyX2N1cl92YWx1ZQkJKEdTY2FubmVyCSpzY2FubmVyKTsK
Z3VpbnQJCWdfc2Nhbm5lcl9jdXJfbGluZQkJKEdTY2FubmVyCSpzY2FubmVyKTsKZ3VpbnQJCWdf
c2Nhbm5lcl9jdXJfcG9zaXRpb24JCShHU2Nhbm5lcgkqc2Nhbm5lcik7Cmdib29sZWFuCWdfc2Nh
bm5lcl9lb2YJCQkoR1NjYW5uZXIJKnNjYW5uZXIpOwpndWludAkJZ19zY2FubmVyX3NldF9zY29w
ZQkJKEdTY2FubmVyCSpzY2FubmVyLAoJCQkJCQkgZ3VpbnQJCSBzY29wZV9pZCk7CnZvaWQJCWdf
c2Nhbm5lcl9zY29wZV9hZGRfc3ltYm9sCShHU2Nhbm5lcgkqc2Nhbm5lciwKCQkJCQkJIGd1aW50
CQkgc2NvcGVfaWQsCgkJCQkJCSBjb25zdCBnY2hhcgkqc3ltYm9sLAoJCQkJCQkgZ3BvaW50ZXIJ
dmFsdWUpOwp2b2lkCQlnX3NjYW5uZXJfc2NvcGVfcmVtb3ZlX3N5bWJvbAkoR1NjYW5uZXIJKnNj
YW5uZXIsCgkJCQkJCSBndWludAkJIHNjb3BlX2lkLAoJCQkJCQkgY29uc3QgZ2NoYXIJKnN5bWJv
bCk7Cmdwb2ludGVyCWdfc2Nhbm5lcl9zY29wZV9sb29rdXBfc3ltYm9sCShHU2Nhbm5lcgkqc2Nh
bm5lciwKCQkJCQkJIGd1aW50CQkgc2NvcGVfaWQsCgkJCQkJCSBjb25zdCBnY2hhcgkqc3ltYm9s
KTsKdm9pZAkJZ19zY2FubmVyX3Njb3BlX2ZvcmVhY2hfc3ltYm9sCShHU2Nhbm5lcgkqc2Nhbm5l
ciwKCQkJCQkJIGd1aW50CQkgc2NvcGVfaWQsCgkJCQkJCSBHSEZ1bmMJCSBmdW5jLAoJCQkJCQkg
Z3BvaW50ZXIJIHVzZXJfZGF0YSk7Cmdwb2ludGVyCWdfc2Nhbm5lcl9sb29rdXBfc3ltYm9sCQko
R1NjYW5uZXIJKnNjYW5uZXIsCgkJCQkJCSBjb25zdCBnY2hhcgkqc3ltYm9sKTsKdm9pZAkJZ19z
Y2FubmVyX2ZyZWV6ZV9zeW1ib2xfdGFibGUJKEdTY2FubmVyCSpzY2FubmVyKTsKdm9pZAkJZ19z
Y2FubmVyX3RoYXdfc3ltYm9sX3RhYmxlCShHU2Nhbm5lcgkqc2Nhbm5lcik7CnZvaWQJCWdfc2Nh
bm5lcl91bmV4cF90b2tlbgkJKEdTY2FubmVyCSpzY2FubmVyLAoJCQkJCQkgR1Rva2VuVHlwZQll
eHBlY3RlZF90b2tlbiwKCQkJCQkJIGNvbnN0IGdjaGFyCSppZGVudGlmaWVyX3NwZWMsCgkJCQkJ
CSBjb25zdCBnY2hhcgkqc3ltYm9sX3NwZWMsCgkJCQkJCSBjb25zdCBnY2hhcgkqc3ltYm9sX25h
bWUsCgkJCQkJCSBjb25zdCBnY2hhcgkqbWVzc2FnZSwKCQkJCQkJIGdpbnQJCSBpc19lcnJvcik7
CnZvaWQJCWdfc2Nhbm5lcl9lcnJvcgkJCShHU2Nhbm5lcgkqc2Nhbm5lciwKCQkJCQkJIGNvbnN0
IGdjaGFyCSpmb3JtYXQsCgkJCQkJCSAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRm
LCAgMiAsICAzICkpKSA7CnZvaWQJCWdfc2Nhbm5lcl93YXJuCQkJKEdTY2FubmVyCSpzY2FubmVy
LAoJCQkJCQkgY29uc3QgZ2NoYXIJKmZvcm1hdCwKCQkJCQkJIC4uLikgX19hdHRyaWJ1dGVfXygo
Zm9ybWF0IChwcmludGYsICAyICwgIDMgKSkpIDsKZ2ludAkJZ19zY2FubmVyX3N0YXRfbW9kZQkJ
KGNvbnN0IGdjaGFyCSpmaWxlbmFtZSk7CiAKCgoKCgoKCgoKCgogCgoKc3RydWN0IF9HQ29tcGxl
dGlvbgp7CiAgR0xpc3QqIGl0ZW1zOwogIEdDb21wbGV0aW9uRnVuYyBmdW5jOwogIAogIGdjaGFy
KiBwcmVmaXg7CiAgR0xpc3QqIGNhY2hlOwp9OwoKR0NvbXBsZXRpb24qIGdfY29tcGxldGlvbl9u
ZXcJICAgICAgIChHQ29tcGxldGlvbkZ1bmMgZnVuYyk7CnZvaWQJICAgICBnX2NvbXBsZXRpb25f
YWRkX2l0ZW1zICAgIChHQ29tcGxldGlvbioJY21wLAoJCQkJCUdMaXN0KgkJaXRlbXMpOwp2b2lk
CSAgICAgZ19jb21wbGV0aW9uX3JlbW92ZV9pdGVtcyAoR0NvbXBsZXRpb24qCWNtcCwKCQkJCQlH
TGlzdCoJCWl0ZW1zKTsKdm9pZAkgICAgIGdfY29tcGxldGlvbl9jbGVhcl9pdGVtcyAgKEdDb21w
bGV0aW9uKgljbXApOwpHTGlzdCoJICAgICBnX2NvbXBsZXRpb25fY29tcGxldGUgICAgIChHQ29t
cGxldGlvbioJY21wLAoJCQkJCWdjaGFyKgkJcHJlZml4LAoJCQkJCWdjaGFyKioJCW5ld19wcmVm
aXgpOwp2b2lkCSAgICAgZ19jb21wbGV0aW9uX2ZyZWUJICAgICAgIChHQ29tcGxldGlvbioJY21w
KTsKCgogCgoKCgoKCgoKdHlwZWRlZiBndWludDE2IEdEYXRlWWVhcjsKdHlwZWRlZiBndWludDgg
IEdEYXRlRGF5OyAgICAKdHlwZWRlZiBzdHJ1Y3QgX0dEYXRlIEdEYXRlOwogCnN0cnVjdCB0bTsK
CiAKdHlwZWRlZiBlbnVtCnsKICBHX0RBVEVfREFZICAgPSAwLAogIEdfREFURV9NT05USCA9IDEs
CiAgR19EQVRFX1lFQVIgID0gMgp9IEdEYXRlRE1ZOwoKIAp0eXBlZGVmIGVudW0KewogIEdfREFU
RV9CQURfV0VFS0RBWSAgPSAwLAogIEdfREFURV9NT05EQVkgICAgICAgPSAxLAogIEdfREFURV9U
VUVTREFZICAgICAgPSAyLAogIEdfREFURV9XRURORVNEQVkgICAgPSAzLAogIEdfREFURV9USFVS
U0RBWSAgICAgPSA0LAogIEdfREFURV9GUklEQVkgICAgICAgPSA1LAogIEdfREFURV9TQVRVUkRB
WSAgICAgPSA2LAogIEdfREFURV9TVU5EQVkgICAgICAgPSA3Cn0gR0RhdGVXZWVrZGF5Owp0eXBl
ZGVmIGVudW0KewogIEdfREFURV9CQURfTU9OVEggPSAwLAogIEdfREFURV9KQU5VQVJZICAgPSAx
LAogIEdfREFURV9GRUJSVUFSWSAgPSAyLAogIEdfREFURV9NQVJDSCAgICAgPSAzLAogIEdfREFU
RV9BUFJJTCAgICAgPSA0LAogIEdfREFURV9NQVkgICAgICAgPSA1LAogIEdfREFURV9KVU5FICAg
ICAgPSA2LAogIEdfREFURV9KVUxZICAgICAgPSA3LAogIEdfREFURV9BVUdVU1QgICAgPSA4LAog
IEdfREFURV9TRVBURU1CRVIgPSA5LAogIEdfREFURV9PQ1RPQkVSICAgPSAxMCwKICBHX0RBVEVf
Tk9WRU1CRVIgID0gMTEsCiAgR19EQVRFX0RFQ0VNQkVSICA9IDEyCn0gR0RhdGVNb250aDsKCgoK
CgogCgoKCgpzdHJ1Y3QgX0dEYXRlCnsgCiAgZ3VpbnQganVsaWFuX2RheXMgOiAzMjsgIAoKCgoK
CiAgZ3VpbnQganVsaWFuIDogMTsgICAgIAogIGd1aW50IGRteSAgICA6IDE7ICAgICAKCiAgIAog
IGd1aW50IGRheSAgICA6IDY7ICAKICBndWludCBtb250aCAgOiA0OyAKICBndWludCB5ZWFyICAg
OiAxNjsgCn07CgogCgoKCkdEYXRlKiAgICAgICBnX2RhdGVfbmV3ICAgICAgICAgICAgICAgICAg
ICh2b2lkKTsKR0RhdGUqICAgICAgIGdfZGF0ZV9uZXdfZG15ICAgICAgICAgICAgICAgKEdEYXRl
RGF5ICAgICBkYXksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0RhdGVNb250aCAgIG1vbnRoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdEYXRlWWVhciAgICB5ZWFyKTsKR0RhdGUqICAgICAgIGdfZGF0ZV9uZXdfanVsaWFu
ICAgICAgICAgICAgKGd1aW50MzIgICAgICBqdWxpYW5fZGF5KTsKdm9pZCAgICAgICAgIGdfZGF0
ZV9mcmVlICAgICAgICAgICAgICAgICAgKEdEYXRlICAgICAgICpkYXRlKTsKCiAKCgoKCmdib29s
ZWFuICAgICBnX2RhdGVfdmFsaWQgICAgICAgICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSk7
Cmdib29sZWFuICAgICBnX2RhdGVfdmFsaWRfZGF5ICAgICAgICAgICAgIChHRGF0ZURheSAgICAg
ZGF5KTsKZ2Jvb2xlYW4gICAgIGdfZGF0ZV92YWxpZF9tb250aCAgICAgICAgICAgKEdEYXRlTW9u
dGggICBtb250aCk7Cmdib29sZWFuICAgICBnX2RhdGVfdmFsaWRfeWVhciAgICAgICAgICAgIChH
RGF0ZVllYXIgICAgeWVhcik7Cmdib29sZWFuICAgICBnX2RhdGVfdmFsaWRfd2Vla2RheSAgICAg
ICAgIChHRGF0ZVdlZWtkYXkgd2Vla2RheSk7Cmdib29sZWFuICAgICBnX2RhdGVfdmFsaWRfanVs
aWFuICAgICAgICAgIChndWludDMyICAgICAganVsaWFuX2RhdGUpOwpnYm9vbGVhbiAgICAgZ19k
YXRlX3ZhbGlkX2RteSAgICAgICAgICAgICAoR0RhdGVEYXkgICAgIGRheSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEYXRlTW9udGggICBtb250aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEYXRlWWVhciAgICB5ZWFyKTsK
CkdEYXRlV2Vla2RheSBnX2RhdGVfd2Vla2RheSAgICAgICAgICAgICAgIChHRGF0ZSAgICAgICAq
ZGF0ZSk7CkdEYXRlTW9udGggICBnX2RhdGVfbW9udGggICAgICAgICAgICAgICAgIChHRGF0ZSAg
ICAgICAqZGF0ZSk7CkdEYXRlWWVhciAgICBnX2RhdGVfeWVhciAgICAgICAgICAgICAgICAgIChH
RGF0ZSAgICAgICAqZGF0ZSk7CkdEYXRlRGF5ICAgICBnX2RhdGVfZGF5ICAgICAgICAgICAgICAg
ICAgIChHRGF0ZSAgICAgICAqZGF0ZSk7Cmd1aW50MzIgICAgICBnX2RhdGVfanVsaWFuICAgICAg
ICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSk7Cmd1aW50ICAgICAgICBnX2RhdGVfZGF5X29m
X3llYXIgICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSk7CgogCgoKCgoKZ3VpbnQgICAgICAg
IGdfZGF0ZV9tb25kYXlfd2Vla19vZl95ZWFyICAgKEdEYXRlICAgICAgKmRhdGUpOwpndWludCAg
ICAgICAgZ19kYXRlX3N1bmRheV93ZWVrX29mX3llYXIgICAoR0RhdGUgICAgICAqZGF0ZSk7Cgog
CgoKCnZvaWQgICAgICAgICBnX2RhdGVfY2xlYXIgICAgICAgICAgICAgICAgIChHRGF0ZSAgICAg
ICAqZGF0ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu
dCAgICAgICAgbl9kYXRlcyk7CgogCgoKCnZvaWQgICAgICAgICBnX2RhdGVfc2V0X3BhcnNlICAg
ICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpzdHIpOwp2b2lkICAgICAgICAgZ19kYXRlX3Nl
dF90aW1lICAgICAgICAgICAgICAoR0RhdGUgICAgICAgKmRhdGUsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RpbWUgICAgICAgIHRpbWUpOwp2b2lkICAgICAg
ICAgZ19kYXRlX3NldF9tb250aCAgICAgICAgICAgICAoR0RhdGUgICAgICAgKmRhdGUsIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RhdGVNb250aCAgIG1vbnRo
KTsKdm9pZCAgICAgICAgIGdfZGF0ZV9zZXRfZGF5ICAgICAgICAgICAgICAgKEdEYXRlICAgICAg
ICpkYXRlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEYXRl
RGF5ICAgICBkYXkpOwp2b2lkICAgICAgICAgZ19kYXRlX3NldF95ZWFyICAgICAgICAgICAgICAo
R0RhdGUgICAgICAgKmRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHRGF0ZVllYXIgICAgeWVhcik7CnZvaWQgICAgICAgICBnX2RhdGVfc2V0X2RteSAgICAg
ICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdEYXRlRGF5ICAgICBkYXksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHRGF0ZU1vbnRoICAgbW9udGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHRGF0ZVllYXIgICAgeSk7CnZvaWQgICAgICAgICBn
X2RhdGVfc2V0X2p1bGlhbiAgICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICBqdWxpYW5fZGF0
ZSk7Cmdib29sZWFuICAgICBnX2RhdGVfaXNfZmlyc3Rfb2ZfbW9udGggICAgIChHRGF0ZSAgICAg
ICAqZGF0ZSk7Cmdib29sZWFuICAgICBnX2RhdGVfaXNfbGFzdF9vZl9tb250aCAgICAgIChHRGF0
ZSAgICAgICAqZGF0ZSk7CgogCnZvaWQgICAgICAgICBnX2RhdGVfYWRkX2RheXMgICAgICAgICAg
ICAgIChHRGF0ZSAgICAgICAqZGF0ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBndWludCAgICAgICAgbl9kYXlzKTsKdm9pZCAgICAgICAgIGdfZGF0ZV9zdWJ0
cmFjdF9kYXlzICAgICAgICAgKEdEYXRlICAgICAgICpkYXRlLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICBuX2RheXMpOwoKIAp2b2lkICAg
ICAgICAgZ19kYXRlX2FkZF9tb250aHMgICAgICAgICAgICAoR0RhdGUgICAgICAgKmRhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgbl9t
b250aHMpOwp2b2lkICAgICAgICAgZ19kYXRlX3N1YnRyYWN0X21vbnRocyAgICAgICAoR0RhdGUg
ICAgICAgKmRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
dWludCAgICAgICAgbl9tb250aHMpOwoKIAp2b2lkICAgICAgICAgZ19kYXRlX2FkZF95ZWFycyAg
ICAgICAgICAgICAoR0RhdGUgICAgICAgKmRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBndWludCAgICAgICAgbl95ZWFycyk7CnZvaWQgICAgICAgICBnX2Rh
dGVfc3VidHJhY3RfeWVhcnMgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICBuX3llYXJzKTsKZ2Jv
b2xlYW4gICAgIGdfZGF0ZV9pc19sZWFwX3llYXIgICAgICAgICAgKEdEYXRlWWVhciAgICB5ZWFy
KTsKZ3VpbnQ4ICAgICAgIGdfZGF0ZV9kYXlzX2luX21vbnRoICAgICAgICAgKEdEYXRlTW9udGgg
ICBtb250aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGF0
ZVllYXIgICAgeWVhcik7Cmd1aW50OCAgICAgICBnX2RhdGVfbW9uZGF5X3dlZWtzX2luX3llYXIg
IChHRGF0ZVllYXIgICAgeWVhcik7Cmd1aW50OCAgICAgICBnX2RhdGVfc3VuZGF5X3dlZWtzX2lu
X3llYXIgIChHRGF0ZVllYXIgICAgeWVhcik7CgogCmdpbnQgICAgICAgICBnX2RhdGVfY29tcGFy
ZSAgICAgICAgICAgICAgIChHRGF0ZSAgICAgICAqbGhzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0RhdGUgICAgICAgKnJocyk7CnZvaWQgICAgICAgICBnX2Rh
dGVfdG9fc3RydWN0X3RtICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAgICp0bSk7CgogCgoKZ3Np
emUgICAgICAgIGdfZGF0ZV9zdHJmdGltZSAgICAgICAgICAgICAgKGdjaGFyICAgICAgICpzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgICAgICAgIHNs
ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Rh
dGUgICAgICAgKmRhdGUpOwoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkdSZWxhdGlvbiogZ19y
ZWxhdGlvbl9uZXcgICAgIChnaW50CSAgICBmaWVsZHMpOwp2b2lkCSAgIGdfcmVsYXRpb25fZGVz
dHJveSAoR1JlbGF0aW9uICAgKnJlbGF0aW9uKTsKdm9pZAkgICBnX3JlbGF0aW9uX2luZGV4ICAg
KEdSZWxhdGlvbiAgICpyZWxhdGlvbiwKCQkJICAgICAgIGdpbnQJICAgIGZpZWxkLAoJCQkgICAg
ICAgR0hhc2hGdW5jICAgIGhhc2hfZnVuYywKCQkJICAgICAgIEdDb21wYXJlRnVuYyBrZXlfY29t
cGFyZV9mdW5jKTsKdm9pZAkgICBnX3JlbGF0aW9uX2luc2VydCAgKEdSZWxhdGlvbiAgICpyZWxh
dGlvbiwKCQkJICAgICAgIC4uLik7CmdpbnQJICAgZ19yZWxhdGlvbl9kZWxldGUgIChHUmVsYXRp
b24gICAqcmVsYXRpb24sCgkJCSAgICAgICBnY29uc3Rwb2ludGVyICBrZXksCgkJCSAgICAgICBn
aW50CSAgICBmaWVsZCk7CkdUdXBsZXMqICAgZ19yZWxhdGlvbl9zZWxlY3QgIChHUmVsYXRpb24g
ICAqcmVsYXRpb24sCgkJCSAgICAgICBnY29uc3Rwb2ludGVyICBrZXksCgkJCSAgICAgICBnaW50
CSAgICBmaWVsZCk7CmdpbnQJICAgZ19yZWxhdGlvbl9jb3VudCAgIChHUmVsYXRpb24gICAqcmVs
YXRpb24sCgkJCSAgICAgICBnY29uc3Rwb2ludGVyICBrZXksCgkJCSAgICAgICBnaW50CSAgICBm
aWVsZCk7Cmdib29sZWFuICAgZ19yZWxhdGlvbl9leGlzdHMgIChHUmVsYXRpb24gICAqcmVsYXRp
b24sCgkJCSAgICAgICAuLi4pOwp2b2lkCSAgIGdfcmVsYXRpb25fcHJpbnQgICAoR1JlbGF0aW9u
ICAgKnJlbGF0aW9uKTsKCnZvaWQJICAgZ190dXBsZXNfZGVzdHJveSAgIChHVHVwbGVzCSAgICp0
dXBsZXMpOwpncG9pbnRlciAgIGdfdHVwbGVzX2luZGV4ICAgICAoR1R1cGxlcwkgICAqdHVwbGVz
LAoJCQkgICAgICAgZ2ludAkgICAgaW5kZXgsCgkJCSAgICAgICBnaW50CSAgICBmaWVsZCk7CgoK
IAoKCiAKCgoKCgpndWludAkgICBnX3NwYWNlZF9wcmltZXNfY2xvc2VzdCAoZ3VpbnQgbnVtKTsK
CgogCgoKdHlwZWRlZiBzdHJ1Y3QgX0dJT0Z1bmNzIEdJT0Z1bmNzOwp0eXBlZGVmIGVudW0Kewog
IEdfSU9fRVJST1JfTk9ORSwKICBHX0lPX0VSUk9SX0FHQUlOLAogIEdfSU9fRVJST1JfSU5WQUws
CiAgR19JT19FUlJPUl9VTktOT1dOCn0gR0lPRXJyb3I7CnR5cGVkZWYgZW51bQp7CiAgR19TRUVL
X0NVUiwKICBHX1NFRUtfU0VULAogIEdfU0VFS19FTkQKfSBHU2Vla1R5cGU7CnR5cGVkZWYgZW51
bQp7CiAgR19JT19JTgk9MSAsCiAgR19JT19PVVQJPTQgLAogIEdfSU9fUFJJCT0yICwKICBHX0lP
X0VSUgk9OCAsCiAgR19JT19IVVAJPTE2ICwKICBHX0lPX05WQUwJPTMyIAp9IEdJT0NvbmRpdGlv
bjsKCnN0cnVjdCBfR0lPQ2hhbm5lbAp7CiAgZ3VpbnQgY2hhbm5lbF9mbGFnczsKICBndWludCBy
ZWZfY291bnQ7CiAgR0lPRnVuY3MgKmZ1bmNzOwp9OwoKdHlwZWRlZiBnYm9vbGVhbiAoKkdJT0Z1
bmMpIChHSU9DaGFubmVsICAgKnNvdXJjZSwKCQkJICAgICBHSU9Db25kaXRpb24gIGNvbmRpdGlv
biwKCQkJICAgICBncG9pbnRlciAgICAgIGRhdGEpOwpzdHJ1Y3QgX0dJT0Z1bmNzCnsKICBHSU9F
cnJvciAoKmlvX3JlYWQpICAgKEdJT0NoYW5uZWwgCSpjaGFubmVsLCAKCQkgICAgICAgICBnY2hh
ciAgICAgIAkqYnVmLCAKCQkgICAgICAgICBndWludCAgICAgIAkgY291bnQsCgkJCSBndWludCAg
ICAgIAkqYnl0ZXNfcmVhZCk7CiAgR0lPRXJyb3IgKCppb193cml0ZSkgIChHSU9DaGFubmVsIAkq
Y2hhbm5lbCwgCgkJIAkgZ2NoYXIgICAgICAJKmJ1ZiwgCgkJCSBndWludCAgICAgIAkgY291bnQs
CgkJCSBndWludCAgICAgIAkqYnl0ZXNfd3JpdHRlbik7CiAgR0lPRXJyb3IgKCppb19zZWVrKSAg
IChHSU9DaGFubmVsICAgCSpjaGFubmVsLCAKCQkgCSBnaW50ICAgICAgIAkgb2Zmc2V0LCAKCQkg
IAkgR1NlZWtUeXBlICAJIHR5cGUpOwogIHZvaWQgKCppb19jbG9zZSkgICAgICAoR0lPQ2hhbm5l
bAkqY2hhbm5lbCk7CiAgZ3VpbnQgKCppb19hZGRfd2F0Y2gpIChHSU9DaGFubmVsICAgICAqY2hh
bm5lbCwKCQkJIGdpbnQgICAgICAgICAgICBwcmlvcml0eSwKCQkJIEdJT0NvbmRpdGlvbiAgICBj
b25kaXRpb24sCgkJCSBHSU9GdW5jICAgICAgICAgZnVuYywKCQkJIGdwb2ludGVyICAgICAgICB1
c2VyX2RhdGEsCgkJCSBHRGVzdHJveU5vdGlmeSAgbm90aWZ5KTsKICB2b2lkICgqaW9fZnJlZSkg
ICAgICAgKEdJT0NoYW5uZWwJKmNoYW5uZWwpOwp9OwoKdm9pZCAgICAgICAgZ19pb19jaGFubmVs
X2luaXQgICAoR0lPQ2hhbm5lbCAgICAqY2hhbm5lbCk7CnZvaWQgICAgICAgIGdfaW9fY2hhbm5l
bF9yZWYgICAgKEdJT0NoYW5uZWwgICAgKmNoYW5uZWwpOwp2b2lkICAgICAgICBnX2lvX2NoYW5u
ZWxfdW5yZWYgIChHSU9DaGFubmVsICAgICpjaGFubmVsKTsKR0lPRXJyb3IgICAgZ19pb19jaGFu
bmVsX3JlYWQgICAoR0lPQ2hhbm5lbCAgICAqY2hhbm5lbCwgCgkJCSAgICAgICAgIGdjaGFyICAg
ICAgICAgKmJ1ZiwgCgkJCSAgICAgICAgIGd1aW50ICAgICAgICAgIGNvdW50LAoJCQkgICAgICAg
ICBndWludCAgICAgICAgICpieXRlc19yZWFkKTsKR0lPRXJyb3IgIGdfaW9fY2hhbm5lbF93cml0
ZSAgICAoR0lPQ2hhbm5lbCAgICAqY2hhbm5lbCwgCgkJCSAgICAgICAgIGdjaGFyICAgICAgICAg
KmJ1ZiwgCgkJCSAgICAgICAgIGd1aW50ICAgICAgICAgIGNvdW50LAoJCQkgICAgICAgICBndWlu
dCAgICAgICAgICpieXRlc193cml0dGVuKTsKR0lPRXJyb3IgIGdfaW9fY2hhbm5lbF9zZWVrICAg
ICAoR0lPQ2hhbm5lbCAgICAqY2hhbm5lbCwKCQkJICAgICAgICAgZ2ludCAgICAgICAgICAgb2Zm
c2V0LCAKCQkJICAgICAgICAgR1NlZWtUeXBlICAgICAgdHlwZSk7CnZvaWQgICAgICBnX2lvX2No
YW5uZWxfY2xvc2UgICAgKEdJT0NoYW5uZWwgICAgKmNoYW5uZWwpOwpndWludCAgICAgZ19pb19h
ZGRfd2F0Y2hfZnVsbCAgIChHSU9DaGFubmVsICAgICpjaGFubmVsLAoJCQkgICAgICAgICBnaW50
ICAgICAgICAgICBwcmlvcml0eSwKCQkJICAgICAgICAgR0lPQ29uZGl0aW9uICAgY29uZGl0aW9u
LAoJCQkgICAgICAgICBHSU9GdW5jICAgICAgICBmdW5jLAoJCQkgICAgICAgICBncG9pbnRlciAg
ICAgICB1c2VyX2RhdGEsCgkJCSAgICAgICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSk7Cmd1aW50
ICAgIGdfaW9fYWRkX3dhdGNoICAgICAgICAgKEdJT0NoYW5uZWwgICAgKmNoYW5uZWwsCgkJCSAg
ICAgICAgIEdJT0NvbmRpdGlvbiAgIGNvbmRpdGlvbiwKCQkJICAgICAgICAgR0lPRnVuYyAgICAg
ICAgZnVuYywKCQkJICAgICAgICAgZ3BvaW50ZXIgICAgICAgdXNlcl9kYXRhKTsKCgogCgp0eXBl
ZGVmIHN0cnVjdCBfR1RpbWVWYWwJR1RpbWVWYWw7CnR5cGVkZWYgc3RydWN0IF9HU291cmNlRnVu
Y3MJR1NvdXJjZUZ1bmNzOwp0eXBlZGVmIHN0cnVjdCBfR01haW5Mb29wCUdNYWluTG9vcDsJIAoK
c3RydWN0IF9HVGltZVZhbAp7CiAgZ2xvbmcgdHZfc2VjOwogIGdsb25nIHR2X3VzZWM7Cn07CnN0
cnVjdCBfR1NvdXJjZUZ1bmNzCnsKICBnYm9vbGVhbiAoKnByZXBhcmUpICAoZ3BvaW50ZXIgIHNv
dXJjZV9kYXRhLCAKCQkJR1RpbWVWYWwgKmN1cnJlbnRfdGltZSwKCQkJZ2ludCAgICAgKnRpbWVv
dXQsCgkJCWdwb2ludGVyICB1c2VyX2RhdGEpOwogIGdib29sZWFuICgqY2hlY2spICAgIChncG9p
bnRlciAgc291cmNlX2RhdGEsCgkJCUdUaW1lVmFsICpjdXJyZW50X3RpbWUsCgkJCWdwb2ludGVy
ICB1c2VyX2RhdGEpOwogIGdib29sZWFuICgqZGlzcGF0Y2gpIChncG9pbnRlciAgc291cmNlX2Rh
dGEsIAoJCQlHVGltZVZhbCAqY3VycmVudF90aW1lLAoJCQlncG9pbnRlciAgdXNlcl9kYXRhKTsK
ICBHRGVzdHJveU5vdGlmeSBkZXN0cm95Owp9OwoKIAoKCgoKCgoKdHlwZWRlZiBnYm9vbGVhbiAo
KkdTb3VyY2VGdW5jKSAoZ3BvaW50ZXIgZGF0YSk7CgogCmd1aW50ICAgIGdfc291cmNlX2FkZCAg
ICAgICAgICAgICAgICAgICAgICAgIChnaW50ICAgICAgICAgICBwcmlvcml0eSwgCgkJCQkJICAg
ICAgZ2Jvb2xlYW4gICAgICAgY2FuX3JlY3Vyc2UsCgkJCQkJICAgICAgR1NvdXJjZUZ1bmNzICAq
ZnVuY3MsCgkJCQkJICAgICAgZ3BvaW50ZXIgICAgICAgc291cmNlX2RhdGEsIAoJCQkJCSAgICAg
IGdwb2ludGVyICAgICAgIHVzZXJfZGF0YSwKCQkJCQkgICAgICBHRGVzdHJveU5vdGlmeSBub3Rp
ZnkpOwpnYm9vbGVhbiBnX3NvdXJjZV9yZW1vdmUgICAgICAgICAgICAgICAgICAgICAoZ3VpbnQg
ICAgICAgICAgdGFnKTsKZ2Jvb2xlYW4gZ19zb3VyY2VfcmVtb3ZlX2J5X3VzZXJfZGF0YSAgICAg
ICAgKGdwb2ludGVyICAgICAgIHVzZXJfZGF0YSk7Cmdib29sZWFuIGdfc291cmNlX3JlbW92ZV9i
eV9zb3VyY2VfZGF0YSAgICAgIChncG9pbnRlciAgICAgICBzb3VyY2VfZGF0YSk7Cmdib29sZWFu
IGdfc291cmNlX3JlbW92ZV9ieV9mdW5jc191c2VyX2RhdGEgIChHU291cmNlRnVuY3MgICpmdW5j
cywKCQkJCQkgICAgICBncG9pbnRlciAgICAgICB1c2VyX2RhdGEpOwoKdm9pZCBnX2dldF9jdXJy
ZW50X3RpbWUJCSAgICAoR1RpbWVWYWwJICAgKnJlc3VsdCk7CgogCkdNYWluTG9vcCoJZ19tYWlu
X25ldwkJKGdib29sZWFuCSBpc19ydW5uaW5nKTsKdm9pZAkJZ19tYWluX3J1bgkJKEdNYWluTG9v
cAkqbG9vcCk7CnZvaWQJCWdfbWFpbl9xdWl0CQkoR01haW5Mb29wCSpsb29wKTsKdm9pZAkJZ19t
YWluX2Rlc3Ryb3kJCShHTWFpbkxvb3AJKmxvb3ApOwpnYm9vbGVhbglnX21haW5faXNfcnVubmlu
ZwkoR01haW5Mb29wCSpsb29wKTsKCiAKCgpnYm9vbGVhbglnX21haW5faXRlcmF0aW9uCShnYm9v
bGVhbgltYXlfYmxvY2spOwoKIApnYm9vbGVhbglnX21haW5fcGVuZGluZwkJKHZvaWQpOwoKIApn
dWludAkJZ190aW1lb3V0X2FkZF9mdWxsCShnaW50ICAgICAgICAgICBwcmlvcml0eSwKCQkJCQkg
Z3VpbnQgICAgICAgICAgaW50ZXJ2YWwsIAoJCQkJCSBHU291cmNlRnVuYyAgICBmdW5jdGlvbiwK
CQkJCQkgZ3BvaW50ZXIgICAgICAgZGF0YSwKCQkJCQkgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KTsK
Z3VpbnQJCWdfdGltZW91dF9hZGQJCShndWludCAgICAgICAgICBpbnRlcnZhbCwKCQkJCQkgR1Nv
dXJjZUZ1bmMgICAgZnVuY3Rpb24sCgkJCQkJIGdwb2ludGVyICAgICAgIGRhdGEpOwpndWludAkJ
Z19pZGxlX2FkZAkgICAJKEdTb3VyY2VGdW5jCWZ1bmN0aW9uLAoJCQkJCSBncG9pbnRlcglkYXRh
KTsKZ3VpbnQJICAgCWdfaWRsZV9hZGRfZnVsbAkJKGdpbnQgICAJcHJpb3JpdHksCgkJCQkJIEdT
b3VyY2VGdW5jCWZ1bmN0aW9uLAoJCQkJCSBncG9pbnRlcglkYXRhLAoJCQkJCSBHRGVzdHJveU5v
dGlmeSBkZXN0cm95KTsKZ2Jvb2xlYW4JZ19pZGxlX3JlbW92ZV9ieV9kYXRhCShncG9pbnRlcglk
YXRhKTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR1BvbGxGRCBH
UG9sbEZEOwp0eXBlZGVmIGdpbnQJKCpHUG9sbEZ1bmMpCShHUG9sbEZEICp1ZmRzLAoJCQkJIGd1
aW50CSAgbmZzZCwKCQkJCSBnaW50ICAgICB0aW1lb3V0KTsKc3RydWN0IF9HUG9sbEZECnsKICBn
aW50CQlmZDsKICBndXNob3J0IAlldmVudHM7CiAgZ3VzaG9ydCAJcmV2ZW50czsKfTsKCnZvaWQg
ICAgICAgIGdfbWFpbl9hZGRfcG9sbCAgICAgICAgICAoR1BvbGxGRCAgICAqZmQsCgkJCQkgICAg
ICBnaW50ICAgICAgICBwcmlvcml0eSk7CnZvaWQgICAgICAgIGdfbWFpbl9yZW1vdmVfcG9sbCAg
ICAgICAoR1BvbGxGRCAgICAqZmQpOwp2b2lkICAgICAgICBnX21haW5fc2V0X3BvbGxfZnVuYyAg
ICAgKEdQb2xsRnVuYyAgIGZ1bmMpOwoKIAoKCgoKCgoKCgoKR0lPQ2hhbm5lbCogZ19pb19jaGFu
bmVsX3VuaXhfbmV3ICAgIChpbnQgICAgICAgICBmZCk7CmdpbnQgICAgICAgIGdfaW9fY2hhbm5l
bF91bml4X2dldF9mZCAoR0lPQ2hhbm5lbCAqY2hhbm5lbCk7CgojIDI1ODEgIi91c3IvaW5jbHVk
ZS9nbGliLmgiIDMKCgogCgojIDI2NDAgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMKCgoKIAoKdHlw
ZWRlZiBzdHJ1Y3QgX0dNdXRleAkJR011dGV4Owp0eXBlZGVmIHN0cnVjdCBfR0NvbmQJCUdDb25k
Owp0eXBlZGVmIHN0cnVjdCBfR1ByaXZhdGUJR1ByaXZhdGU7CnR5cGVkZWYgc3RydWN0IF9HU3Rh
dGljUHJpdmF0ZQlHU3RhdGljUHJpdmF0ZTsKdHlwZWRlZiBzdHJ1Y3QgX0dUaHJlYWRGdW5jdGlv
bnMgR1RocmVhZEZ1bmN0aW9uczsKc3RydWN0IF9HVGhyZWFkRnVuY3Rpb25zCnsKICBHTXV0ZXgq
ICAoKm11dGV4X25ldykgICAgICAgKHZvaWQpOwogIHZvaWQgICAgICgqbXV0ZXhfbG9jaykgICAg
ICAoR011dGV4CQkqbXV0ZXgpOwogIGdib29sZWFuICgqbXV0ZXhfdHJ5bG9jaykgICAoR011dGV4
CQkqbXV0ZXgpOwogIHZvaWQgICAgICgqbXV0ZXhfdW5sb2NrKSAgICAoR011dGV4CQkqbXV0ZXgp
OwogIHZvaWQgICAgICgqbXV0ZXhfZnJlZSkgICAgICAoR011dGV4CQkqbXV0ZXgpOwogIEdDb25k
KiAgICgqY29uZF9uZXcpICAgICAgICAodm9pZCk7CiAgdm9pZCAgICAgKCpjb25kX3NpZ25hbCkg
ICAgIChHQ29uZAkJKmNvbmQpOwogIHZvaWQgICAgICgqY29uZF9icm9hZGNhc3QpICAoR0NvbmQJ
CSpjb25kKTsKICB2b2lkICAgICAoKmNvbmRfd2FpdCkgICAgICAgKEdDb25kCQkqY29uZCwKCQkJ
ICAgICAgIEdNdXRleAkJKm11dGV4KTsKICBnYm9vbGVhbiAoKmNvbmRfdGltZWRfd2FpdCkgKEdD
b25kCQkqY29uZCwKCQkJICAgICAgIEdNdXRleAkJKm11dGV4LCAKCQkJICAgICAgIEdUaW1lVmFs
IAkqZW5kX3RpbWUpOwogIHZvaWQgICAgICAoKmNvbmRfZnJlZSkgICAgICAoR0NvbmQJCSpjb25k
KTsKICBHUHJpdmF0ZSogKCpwcml2YXRlX25ldykgICAgKEdEZXN0cm95Tm90aWZ5CSBkZXN0cnVj
dG9yKTsKICBncG9pbnRlciAgKCpwcml2YXRlX2dldCkgICAgKEdQcml2YXRlCQkqcHJpdmF0ZV9r
ZXkpOwogIHZvaWQgICAgICAoKnByaXZhdGVfc2V0KSAgICAoR1ByaXZhdGUJCSpwcml2YXRlX2tl
eSwKCQkJICAgICAgIGdwb2ludGVyCQkgZGF0YSk7Cn07CgpleHRlcm4gIEdUaHJlYWRGdW5jdGlv
bnMJZ190aHJlYWRfZnVuY3Rpb25zX2Zvcl9nbGliX3VzZTsKZXh0ZXJuICBnYm9vbGVhbgkJZ190
aHJlYWRfdXNlX2RlZmF1bHRfaW1wbDsKZXh0ZXJuICBnYm9vbGVhbgkJZ190aHJlYWRzX2dvdF9p
bml0aWFsaXplZDsKCiAKCgoKdm9pZAlnX3RocmVhZF9pbml0CShHVGhyZWFkRnVuY3Rpb25zCSp2
dGFibGUpOwoKIApHTXV0ZXgqCWdfc3RhdGljX211dGV4X2dldF9tdXRleF9pbXBsCShHTXV0ZXgJ
KiptdXRleCk7CgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
c3RydWN0IF9HU3RhdGljUHJpdmF0ZQp7CiAgZ3VpbnQgaW5kZXg7Cn07CgpncG9pbnRlciBnX3N0
YXRpY19wcml2YXRlX2dldCAoR1N0YXRpY1ByaXZhdGUJKnByaXZhdGVfa2V5KTsKdm9pZCAgICAg
Z19zdGF0aWNfcHJpdmF0ZV9zZXQgKEdTdGF0aWNQcml2YXRlCSpwcml2YXRlX2tleSwgCgkJCSAg
ICAgICBncG9pbnRlciAgICAgICAgCSBkYXRhLAoJCQkgICAgICAgR0Rlc3Ryb3lOb3RpZnkgICAg
bm90aWZ5KTsKCiAKCgoKCgoKCgpleHRlcm4gdm9pZCBnbGliX2R1bW15X2RlY2wgKHZvaWQpOwoK
CgoKCgoKIyAyNzc2ICIvdXNyL2luY2x1ZGUvZ2xpYi5oIiAzCgoKCgoKCgoKCgoKCgoKCn0KCgoK
CiMgMzMgIi91c3IvaW5jbHVkZS9nZGsvZ2RrdHlwZXMuaCIgMiAzCgoKCgoKCgogCgoKCgpleHRl
cm4gIkMiIHsKCgoKIAoKCnR5cGVkZWYgZ3Vsb25nCQkJICAgICAgR2RrQXRvbTsKdHlwZWRlZiBz
dHJ1Y3QgX0dka0NvbG9yCSAgICAgIEdka0NvbG9yOwp0eXBlZGVmIHN0cnVjdCBfR2RrQ29sb3Jt
YXAJICAgICAgR2RrQ29sb3JtYXA7CnR5cGVkZWYgc3RydWN0IF9HZGtWaXN1YWwJICAgICAgR2Rr
VmlzdWFsOwp0eXBlZGVmIHN0cnVjdCBfR2RrV2luZG93QXR0cgkgICAgICBHZGtXaW5kb3dBdHRy
Owp0eXBlZGVmIHN0cnVjdCBfR2RrV2luZG93CSAgICAgIEdka1dpbmRvdzsKdHlwZWRlZiBzdHJ1
Y3QgX0dka1dpbmRvdwkgICAgICBHZGtQaXhtYXA7CnR5cGVkZWYgc3RydWN0IF9HZGtXaW5kb3cJ
ICAgICAgR2RrQml0bWFwOwp0eXBlZGVmIHN0cnVjdCBfR2RrV2luZG93CSAgICAgIEdka0RyYXdh
YmxlOwp0eXBlZGVmIHN0cnVjdCBfR2RrR2VvbWV0cnkgICAgICAgICAgIEdka0dlb21ldHJ5Owp0
eXBlZGVmIHN0cnVjdCBfR2RrSW1hZ2UJICAgICAgR2RrSW1hZ2U7CnR5cGVkZWYgc3RydWN0IF9H
ZGtHQ1ZhbHVlcwkgICAgICBHZGtHQ1ZhbHVlczsKdHlwZWRlZiBzdHJ1Y3QgX0dka0dDCQkgICAg
ICBHZGtHQzsKdHlwZWRlZiBzdHJ1Y3QgX0dka1BvaW50CSAgICAgIEdka1BvaW50Owp0eXBlZGVm
IHN0cnVjdCBfR2RrUmVjdGFuZ2xlCSAgICAgIEdka1JlY3RhbmdsZTsKdHlwZWRlZiBzdHJ1Y3Qg
X0dka1NlZ21lbnQJICAgICAgR2RrU2VnbWVudDsKdHlwZWRlZiBzdHJ1Y3QgX0dka0ZvbnQJCSAg
ICAgIEdka0ZvbnQ7CnR5cGVkZWYgc3RydWN0IF9HZGtDdXJzb3IJICAgICAgR2RrQ3Vyc29yOwp0
eXBlZGVmIHN0cnVjdCBfR2RrQ29sb3JDb250ZXh0RGl0aGVyIEdka0NvbG9yQ29udGV4dERpdGhl
cjsKdHlwZWRlZiBzdHJ1Y3QgX0dka0NvbG9yQ29udGV4dAkgICAgICBHZGtDb2xvckNvbnRleHQ7
CnR5cGVkZWYgc3RydWN0IF9HZGtEcmFnQ29udGV4dCAgICAgICAgR2RrRHJhZ0NvbnRleHQ7Cgp0
eXBlZGVmIHN0cnVjdCBfR2RrRXZlbnRBbnkJICAgIEdka0V2ZW50QW55Owp0eXBlZGVmIHN0cnVj
dCBfR2RrRXZlbnRFeHBvc2UJICAgIEdka0V2ZW50RXhwb3NlOwp0eXBlZGVmIHN0cnVjdCBfR2Rr
RXZlbnROb0V4cG9zZSAgICBHZGtFdmVudE5vRXhwb3NlOwp0eXBlZGVmIHN0cnVjdCBfR2RrRXZl
bnRWaXNpYmlsaXR5ICBHZGtFdmVudFZpc2liaWxpdHk7CnR5cGVkZWYgc3RydWN0IF9HZGtFdmVu
dE1vdGlvbgkgICAgR2RrRXZlbnRNb3Rpb247CnR5cGVkZWYgc3RydWN0IF9HZGtFdmVudEJ1dHRv
bgkgICAgR2RrRXZlbnRCdXR0b247CnR5cGVkZWYgc3RydWN0IF9HZGtFdmVudEtleQkgICAgR2Rr
RXZlbnRLZXk7CnR5cGVkZWYgc3RydWN0IF9HZGtFdmVudEZvY3VzCSAgICBHZGtFdmVudEZvY3Vz
Owp0eXBlZGVmIHN0cnVjdCBfR2RrRXZlbnRDcm9zc2luZyAgICBHZGtFdmVudENyb3NzaW5nOwp0
eXBlZGVmIHN0cnVjdCBfR2RrRXZlbnRDb25maWd1cmUgICBHZGtFdmVudENvbmZpZ3VyZTsKdHlw
ZWRlZiBzdHJ1Y3QgX0dka0V2ZW50UHJvcGVydHkgICAgR2RrRXZlbnRQcm9wZXJ0eTsKdHlwZWRl
ZiBzdHJ1Y3QgX0dka0V2ZW50U2VsZWN0aW9uICAgR2RrRXZlbnRTZWxlY3Rpb247CnR5cGVkZWYg
c3RydWN0IF9HZGtFdmVudFByb3hpbWl0eSAgIEdka0V2ZW50UHJveGltaXR5Owp0eXBlZGVmIHN0
cnVjdCBfR2RrRXZlbnRDbGllbnQJICAgIEdka0V2ZW50Q2xpZW50OwoKdHlwZWRlZiBzdHJ1Y3Qg
X0dka0V2ZW50RE5EICAgICAgICAgR2RrRXZlbnRETkQ7Cgp0eXBlZGVmIHVuaW9uICBfR2RrRXZl
bnQJICAgIEdka0V2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgX0dka0RldmljZUtleQkgICAgR2RrRGV2
aWNlS2V5Owp0eXBlZGVmIHN0cnVjdCBfR2RrRGV2aWNlSW5mbwkgICAgR2RrRGV2aWNlSW5mbzsK
dHlwZWRlZiBzdHJ1Y3QgX0dka1RpbWVDb29yZAkgICAgR2RrVGltZUNvb3JkOwp0eXBlZGVmIHN0
cnVjdCBfR2RrUmVnaW9uCSAgICBHZGtSZWdpb247CnR5cGVkZWYgdm9pZCAoKkdka0V2ZW50RnVu
YykgKEdka0V2ZW50ICpldmVudCwKCQkJICAgICAgZ3BvaW50ZXIJZGF0YSk7Cgp0eXBlZGVmIHN0
cnVjdCBfR2RrSUMgICAgICAgICAgICAgICBHZGtJQzsKdHlwZWRlZiBzdHJ1Y3QgX0dka0lDQXR0
cgkgICAgR2RrSUNBdHRyOwoKdHlwZWRlZiBndWludDMyCQkJICAgIEdka1dDaGFyOwogCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGVudW0KewogIEdES19XSU5ET1dfUk9PVCwKICBHREtf
V0lORE9XX1RPUExFVkVMLAogIEdES19XSU5ET1dfQ0hJTEQsCiAgR0RLX1dJTkRPV19ESUFMT0cs
CiAgR0RLX1dJTkRPV19URU1QLAogIEdES19XSU5ET1dfUElYTUFQLAogIEdES19XSU5ET1dfRk9S
RUlHTgp9IEdka1dpbmRvd1R5cGU7CgogCgoKCgoKCgoKdHlwZWRlZiBlbnVtCnsKICBHREtfSU5Q
VVRfT1VUUFVULAogIEdES19JTlBVVF9PTkxZCn0gR2RrV2luZG93Q2xhc3M7CgogCgoKCgoKCgoK
CnR5cGVkZWYgZW51bQp7CiAgR0RLX0lNQUdFX05PUk1BTCwKICBHREtfSU1BR0VfU0hBUkVELAog
IEdES19JTUFHRV9GQVNURVNUCn0gR2RrSW1hZ2VUeXBlOwoKIAoKCgoKCgoKdHlwZWRlZiBlbnVt
CnsKICBHREtfVklTVUFMX1NUQVRJQ19HUkFZLAogIEdES19WSVNVQUxfR1JBWVNDQUxFLAogIEdE
S19WSVNVQUxfU1RBVElDX0NPTE9SLAogIEdES19WSVNVQUxfUFNFVURPX0NPTE9SLAogIEdES19W
SVNVQUxfVFJVRV9DT0xPUiwKICBHREtfVklTVUFMX0RJUkVDVF9DT0xPUgp9IEdka1Zpc3VhbFR5
cGU7CgogCgoKCnR5cGVkZWYgZW51bQp7CiAgR0RLX0ZPTlRfRk9OVCwKICBHREtfRk9OVF9GT05U
U0VUCn0gR2RrRm9udFR5cGU7CgogCgoKCgoKCgp0eXBlZGVmIGVudW0KewogIEdES19XQV9USVRM
RQkgID0gMSA8PCAxLAogIEdES19XQV9YCSAgPSAxIDw8IDIsCiAgR0RLX1dBX1kJICA9IDEgPDwg
MywKICBHREtfV0FfQ1VSU09SCSAgPSAxIDw8IDQsCiAgR0RLX1dBX0NPTE9STUFQID0gMSA8PCA1
LAogIEdES19XQV9WSVNVQUwJICA9IDEgPDwgNiwKICBHREtfV0FfV01DTEFTUyAgPSAxIDw8IDcs
CiAgR0RLX1dBX05PUkVESVIgID0gMSA8PCA4Cn0gR2RrV2luZG93QXR0cmlidXRlc1R5cGU7Cgog
Cgp0eXBlZGVmIGVudW0KewogIEdES19ISU5UX1BPUwkgICAgICA9IDEgPDwgMCwKICBHREtfSElO
VF9NSU5fU0laRSAgID0gMSA8PCAxLAogIEdES19ISU5UX01BWF9TSVpFICAgPSAxIDw8IDIsCiAg
R0RLX0hJTlRfQkFTRV9TSVpFICA9IDEgPDwgMywKICBHREtfSElOVF9BU1BFQ1QgICAgID0gMSA8
PCA0LAogIEdES19ISU5UX1JFU0laRV9JTkMgPSAxIDw8IDUKfSBHZGtXaW5kb3dIaW50czsKCiAK
CgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGVudW0KewogIEdES19DT1BZLAogIEdES19JTlZFUlQs
CiAgR0RLX1hPUiwKICBHREtfQ0xFQVIsCiAgR0RLX0FORCwKICBHREtfQU5EX1JFVkVSU0UsCiAg
R0RLX0FORF9JTlZFUlQsCiAgR0RLX05PT1AsCiAgR0RLX09SLAogIEdES19FUVVJViwKICBHREtf
T1JfUkVWRVJTRSwKICBHREtfQ09QWV9JTlZFUlQsCiAgR0RLX09SX0lOVkVSVCwKICBHREtfTkFO
RCwKICBHREtfU0VUCn0gR2RrRnVuY3Rpb247CgogCgoKCgoKdHlwZWRlZiBlbnVtCnsKICBHREtf
U09MSUQsCiAgR0RLX1RJTEVELAogIEdES19TVElQUExFRCwKICBHREtfT1BBUVVFX1NUSVBQTEVE
Cn0gR2RrRmlsbDsKCiAKCgoKdHlwZWRlZiBlbnVtCnsKICBHREtfRVZFTl9PRERfUlVMRSwKICBH
REtfV0lORElOR19SVUxFCn0gR2RrRmlsbFJ1bGU7CgogCgoKCgp0eXBlZGVmIGVudW0KewogIEdE
S19MSU5FX1NPTElELAogIEdES19MSU5FX09OX09GRl9EQVNILAogIEdES19MSU5FX0RPVUJMRV9E
QVNICn0gR2RrTGluZVN0eWxlOwoKIAoKCgoKCnR5cGVkZWYgZW51bQp7CiAgR0RLX0NBUF9OT1Rf
TEFTVCwKICBHREtfQ0FQX0JVVFQsCiAgR0RLX0NBUF9ST1VORCwKICBHREtfQ0FQX1BST0pFQ1RJ
TkcKfSBHZGtDYXBTdHlsZTsKCiAKCgoKCnR5cGVkZWYgZW51bQp7CiAgR0RLX0pPSU5fTUlURVIs
CiAgR0RLX0pPSU5fUk9VTkQsCiAgR0RLX0pPSU5fQkVWRUwKfSBHZGtKb2luU3R5bGU7CgogCgp0
eXBlZGVmIGVudW0KewojIDEgIi91c3IvaW5jbHVkZS9nZGsvZ2RrY3Vyc29ycy5oIiAxIDMKR0RL
X05VTV9HTFlQSFMgPSAxNTQsCkdES19YX0NVUlNPUiA9IDAsCkdES19BUlJPVyA9IDIsCkdES19C
QVNFRF9BUlJPV19ET1dOID0gNCwKR0RLX0JBU0VEX0FSUk9XX1VQID0gNiwKR0RLX0JPQVQgPSA4
LApHREtfQk9HT1NJVFkgPSAxMCwKR0RLX0JPVFRPTV9MRUZUX0NPUk5FUiA9IDEyLApHREtfQk9U
VE9NX1JJR0hUX0NPUk5FUiA9IDE0LApHREtfQk9UVE9NX1NJREUgPSAxNiwKR0RLX0JPVFRPTV9U
RUUgPSAxOCwKR0RLX0JPWF9TUElSQUwgPSAyMCwKR0RLX0NFTlRFUl9QVFIgPSAyMiwKR0RLX0NJ
UkNMRSA9IDI0LApHREtfQ0xPQ0sgPSAyNiwKR0RLX0NPRkZFRV9NVUcgPSAyOCwKR0RLX0NST1NT
ID0gMzAsCkdES19DUk9TU19SRVZFUlNFID0gMzIsCkdES19DUk9TU0hBSVIgPSAzNCwKR0RLX0RJ
QU1PTkRfQ1JPU1MgPSAzNiwKR0RLX0RPVCA9IDM4LApHREtfRE9UQk9YID0gNDAsCkdES19ET1VC
TEVfQVJST1cgPSA0MiwKR0RLX0RSQUZUX0xBUkdFID0gNDQsCkdES19EUkFGVF9TTUFMTCA9IDQ2
LApHREtfRFJBUEVEX0JPWCA9IDQ4LApHREtfRVhDSEFOR0UgPSA1MCwKR0RLX0ZMRVVSID0gNTIs
CkdES19HT0JCTEVSID0gNTQsCkdES19HVU1CWSA9IDU2LApHREtfSEFORDEgPSA1OCwKR0RLX0hB
TkQyID0gNjAsCkdES19IRUFSVCA9IDYyLApHREtfSUNPTiA9IDY0LApHREtfSVJPTl9DUk9TUyA9
IDY2LApHREtfTEVGVF9QVFIgPSA2OCwKR0RLX0xFRlRfU0lERSA9IDcwLApHREtfTEVGVF9URUUg
PSA3MiwKR0RLX0xFRlRCVVRUT04gPSA3NCwKR0RLX0xMX0FOR0xFID0gNzYsCkdES19MUl9BTkdM
RSA9IDc4LApHREtfTUFOID0gODAsCkdES19NSURETEVCVVRUT04gPSA4MiwKR0RLX01PVVNFID0g
ODQsCkdES19QRU5DSUwgPSA4NiwKR0RLX1BJUkFURSA9IDg4LApHREtfUExVUyA9IDkwLApHREtf
UVVFU1RJT05fQVJST1cgPSA5MiwKR0RLX1JJR0hUX1BUUiA9IDk0LApHREtfUklHSFRfU0lERSA9
IDk2LApHREtfUklHSFRfVEVFID0gOTgsCkdES19SSUdIVEJVVFRPTiA9IDEwMCwKR0RLX1JUTF9M
T0dPID0gMTAyLApHREtfU0FJTEJPQVQgPSAxMDQsCkdES19TQl9ET1dOX0FSUk9XID0gMTA2LApH
REtfU0JfSF9ET1VCTEVfQVJST1cgPSAxMDgsCkdES19TQl9MRUZUX0FSUk9XID0gMTEwLApHREtf
U0JfUklHSFRfQVJST1cgPSAxMTIsCkdES19TQl9VUF9BUlJPVyA9IDExNCwKR0RLX1NCX1ZfRE9V
QkxFX0FSUk9XID0gMTE2LApHREtfU0hVVFRMRSA9IDExOCwKR0RLX1NJWklORyA9IDEyMCwKR0RL
X1NQSURFUiA9IDEyMiwKR0RLX1NQUkFZQ0FOID0gMTI0LApHREtfU1RBUiA9IDEyNiwKR0RLX1RB
UkdFVCA9IDEyOCwKR0RLX1RDUk9TUyA9IDEzMCwKR0RLX1RPUF9MRUZUX0FSUk9XID0gMTMyLApH
REtfVE9QX0xFRlRfQ09STkVSID0gMTM0LApHREtfVE9QX1JJR0hUX0NPUk5FUiA9IDEzNiwKR0RL
X1RPUF9TSURFID0gMTM4LApHREtfVE9QX1RFRSA9IDE0MCwKR0RLX1RSRUsgPSAxNDIsCkdES19V
TF9BTkdMRSA9IDE0NCwKR0RLX1VNQlJFTExBID0gMTQ2LApHREtfVVJfQU5HTEUgPSAxNDgsCkdE
S19XQVRDSCA9IDE1MCwKR0RLX1hURVJNID0gMTUyLAojIDMzMiAiL3Vzci9pbmNsdWRlL2dkay9n
ZGt0eXBlcy5oIiAyIDMKCiAgR0RLX0xBU1RfQ1VSU09SLAogIEdES19DVVJTT1JfSVNfUElYTUFQ
ID0gLTEKfSBHZGtDdXJzb3JUeXBlOwoKdHlwZWRlZiBlbnVtIHsKICBHREtfRklMVEVSX0NPTlRJ
TlVFLAkgICAKICBHREtfRklMVEVSX1RSQU5TTEFURSwJICAgCiAgR0RLX0ZJTFRFUl9SRU1PVkUJ
ICAgCn0gR2RrRmlsdGVyUmV0dXJuOwoKdHlwZWRlZiBlbnVtIHsKICBHREtfVklTSUJJTElUWV9V
Tk9CU0NVUkVELAogIEdES19WSVNJQklMSVRZX1BBUlRJQUwsCiAgR0RLX1ZJU0lCSUxJVFlfRlVM
TFlfT0JTQ1VSRUQKfSBHZGtWaXNpYmlsaXR5U3RhdGU7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CnR5cGVkZWYgZW51bQp7CiAgR0RLX05PVEhJTkcJCT0gLTEsCiAgR0RLX0RFTEVURQkJPSAwLAog
IEdES19ERVNUUk9ZCQk9IDEsCiAgR0RLX0VYUE9TRQkJPSAyLAogIEdES19NT1RJT05fTk9USUZZ
CT0gMywKICBHREtfQlVUVE9OX1BSRVNTCT0gNCwKICBHREtfMkJVVFRPTl9QUkVTUwk9IDUsCiAg
R0RLXzNCVVRUT05fUFJFU1MJPSA2LAogIEdES19CVVRUT05fUkVMRUFTRQk9IDcsCiAgR0RLX0tF
WV9QUkVTUwkJPSA4LAogIEdES19LRVlfUkVMRUFTRQk9IDksCiAgR0RLX0VOVEVSX05PVElGWQk9
IDEwLAogIEdES19MRUFWRV9OT1RJRlkJPSAxMSwKICBHREtfRk9DVVNfQ0hBTkdFCT0gMTIsCiAg
R0RLX0NPTkZJR1VSRQkJPSAxMywKICBHREtfTUFQCQk9IDE0LAogIEdES19VTk1BUAkJPSAxNSwK
ICBHREtfUFJPUEVSVFlfTk9USUZZCT0gMTYsCiAgR0RLX1NFTEVDVElPTl9DTEVBUgk9IDE3LAog
IEdES19TRUxFQ1RJT05fUkVRVUVTVCA9IDE4LAogIEdES19TRUxFQ1RJT05fTk9USUZZCT0gMTks
CiAgR0RLX1BST1hJTUlUWV9JTgk9IDIwLAogIEdES19QUk9YSU1JVFlfT1VUCT0gMjEsCiAgR0RL
X0RSQUdfRU5URVIgICAgICAgID0gMjIsCiAgR0RLX0RSQUdfTEVBVkUgICAgICAgID0gMjMsCiAg
R0RLX0RSQUdfTU9USU9OICAgICAgID0gMjQsCiAgR0RLX0RSQUdfU1RBVFVTICAgICAgID0gMjUs
CiAgR0RLX0RST1BfU1RBUlQgICAgICAgID0gMjYsCiAgR0RLX0RST1BfRklOSVNIRUQgICAgID0g
MjcsCiAgR0RLX0NMSUVOVF9FVkVOVAk9IDI4LAogIEdES19WSVNJQklMSVRZX05PVElGWSA9IDI5
LAogIEdES19OT19FWFBPU0UJCT0gMzAKfSBHZGtFdmVudFR5cGU7CgogCgoKdHlwZWRlZiBlbnVt
CnsKICBHREtfRVhQT1NVUkVfTUFTSwkJPSAxIDw8IDEsCiAgR0RLX1BPSU5URVJfTU9USU9OX01B
U0sJPSAxIDw8IDIsCiAgR0RLX1BPSU5URVJfTU9USU9OX0hJTlRfTUFTSwk9IDEgPDwgMywKICBH
REtfQlVUVE9OX01PVElPTl9NQVNLCT0gMSA8PCA0LAogIEdES19CVVRUT04xX01PVElPTl9NQVNL
CT0gMSA8PCA1LAogIEdES19CVVRUT04yX01PVElPTl9NQVNLCT0gMSA8PCA2LAogIEdES19CVVRU
T04zX01PVElPTl9NQVNLCT0gMSA8PCA3LAogIEdES19CVVRUT05fUFJFU1NfTUFTSwkJPSAxIDw8
IDgsCiAgR0RLX0JVVFRPTl9SRUxFQVNFX01BU0sJPSAxIDw8IDksCiAgR0RLX0tFWV9QUkVTU19N
QVNLCQk9IDEgPDwgMTAsCiAgR0RLX0tFWV9SRUxFQVNFX01BU0sJCT0gMSA8PCAxMSwKICBHREtf
RU5URVJfTk9USUZZX01BU0sJCT0gMSA8PCAxMiwKICBHREtfTEVBVkVfTk9USUZZX01BU0sJCT0g
MSA8PCAxMywKICBHREtfRk9DVVNfQ0hBTkdFX01BU0sJCT0gMSA8PCAxNCwKICBHREtfU1RSVUNU
VVJFX01BU0sJCT0gMSA8PCAxNSwKICBHREtfUFJPUEVSVFlfQ0hBTkdFX01BU0sJPSAxIDw8IDE2
LAogIEdES19WSVNJQklMSVRZX05PVElGWV9NQVNLCT0gMSA8PCAxNywKICBHREtfUFJPWElNSVRZ
X0lOX01BU0sJCT0gMSA8PCAxOCwKICBHREtfUFJPWElNSVRZX09VVF9NQVNLCT0gMSA8PCAxOSwK
ICBHREtfU1VCU1RSVUNUVVJFX01BU0sJCT0gMSA8PCAyMCwKICBHREtfQUxMX0VWRU5UU19NQVNL
CQk9IDB4MEZGRkZGCn0gR2RrRXZlbnRNYXNrOwoKIAoKCgoKCgoKdHlwZWRlZiBlbnVtCnsKICBH
REtfTk9USUZZX0FOQ0VTVE9SCQk9IDAsCiAgR0RLX05PVElGWV9WSVJUVUFMCQk9IDEsCiAgR0RL
X05PVElGWV9JTkZFUklPUgkJPSAyLAogIEdES19OT1RJRllfTk9OTElORUFSCQk9IDMsCiAgR0RL
X05PVElGWV9OT05MSU5FQVJfVklSVFVBTAk9IDQsCiAgR0RLX05PVElGWV9VTktOT1dOCQk9IDUK
fSBHZGtOb3RpZnlUeXBlOwoKIAoKCgoKdHlwZWRlZiBlbnVtCnsKICBHREtfQ1JPU1NJTkdfTk9S
TUFMLAogIEdES19DUk9TU0lOR19HUkFCLAogIEdES19DUk9TU0lOR19VTkdSQUIKfSBHZGtDcm9z
c2luZ01vZGU7CgogCgp0eXBlZGVmIGVudW0KewogIEdES19TSElGVF9NQVNLICAgID0gMSA8PCAw
LAogIEdES19MT0NLX01BU0sJICAgID0gMSA8PCAxLAogIEdES19DT05UUk9MX01BU0sgID0gMSA8
PCAyLAogIEdES19NT0QxX01BU0sJICAgID0gMSA8PCAzLAogIEdES19NT0QyX01BU0sJICAgID0g
MSA8PCA0LAogIEdES19NT0QzX01BU0sJICAgID0gMSA8PCA1LAogIEdES19NT0Q0X01BU0sJICAg
ID0gMSA8PCA2LAogIEdES19NT0Q1X01BU0sJICAgID0gMSA8PCA3LAogIEdES19CVVRUT04xX01B
U0sgID0gMSA8PCA4LAogIEdES19CVVRUT04yX01BU0sgID0gMSA8PCA5LAogIEdES19CVVRUT04z
X01BU0sgID0gMSA8PCAxMCwKICBHREtfQlVUVE9ONF9NQVNLICA9IDEgPDwgMTEsCiAgR0RLX0JV
VFRPTjVfTUFTSyAgPSAxIDw8IDEyLAogIEdES19SRUxFQVNFX01BU0sgID0gMSA8PCAxMywKICBH
REtfTU9ESUZJRVJfTUFTSyA9IDB4M2ZmZgp9IEdka01vZGlmaWVyVHlwZTsKCnR5cGVkZWYgZW51
bQp7CiAgR0RLX0NMSVBfQllfQ0hJTERSRU4JPSAwLAogIEdES19JTkNMVURFX0lORkVSSU9SUyA9
IDEKfSBHZGtTdWJ3aW5kb3dNb2RlOwoKdHlwZWRlZiBlbnVtCnsKICBHREtfSU5QVVRfUkVBRCAg
ICAgICA9IDEgPDwgMCwKICBHREtfSU5QVVRfV1JJVEUgICAgICA9IDEgPDwgMSwKICBHREtfSU5Q
VVRfRVhDRVBUSU9OICA9IDEgPDwgMgp9IEdka0lucHV0Q29uZGl0aW9uOwoKdHlwZWRlZiBlbnVt
CnsKICBHREtfT0sJICA9IDAsCiAgR0RLX0VSUk9SCSAgPSAtMSwKICBHREtfRVJST1JfUEFSQU0g
PSAtMiwKICBHREtfRVJST1JfRklMRSAgPSAtMywKICBHREtfRVJST1JfTUVNCSAgPSAtNAp9IEdk
a1N0YXR1czsKCnR5cGVkZWYgZW51bQp7CiAgR0RLX0xTQl9GSVJTVCwKICBHREtfTVNCX0ZJUlNU
Cn0gR2RrQnl0ZU9yZGVyOwoKdHlwZWRlZiBlbnVtCnsKICBHREtfR0NfRk9SRUdST1VORCAgICA9
IDEgPDwgMCwKICBHREtfR0NfQkFDS0dST1VORCAgICA9IDEgPDwgMSwKICBHREtfR0NfRk9OVAkg
ICAgICAgPSAxIDw8IDIsCiAgR0RLX0dDX0ZVTkNUSU9OICAgICAgPSAxIDw8IDMsCiAgR0RLX0dD
X0ZJTEwJICAgICAgID0gMSA8PCA0LAogIEdES19HQ19USUxFCSAgICAgICA9IDEgPDwgNSwKICBH
REtfR0NfU1RJUFBMRSAgICAgICA9IDEgPDwgNiwKICBHREtfR0NfQ0xJUF9NQVNLICAgICA9IDEg
PDwgNywKICBHREtfR0NfU1VCV0lORE9XICAgICA9IDEgPDwgOCwKICBHREtfR0NfVFNfWF9PUklH
SU4gICA9IDEgPDwgOSwKICBHREtfR0NfVFNfWV9PUklHSU4gICA9IDEgPDwgMTAsCiAgR0RLX0dD
X0NMSVBfWF9PUklHSU4gPSAxIDw8IDExLAogIEdES19HQ19DTElQX1lfT1JJR0lOID0gMSA8PCAx
MiwKICBHREtfR0NfRVhQT1NVUkVTICAgICA9IDEgPDwgMTMsCiAgR0RLX0dDX0xJTkVfV0lEVEgg
ICAgPSAxIDw8IDE0LAogIEdES19HQ19MSU5FX1NUWUxFICAgID0gMSA8PCAxNSwKICBHREtfR0Nf
Q0FQX1NUWUxFICAgICA9IDEgPDwgMTYsCiAgR0RLX0dDX0pPSU5fU1RZTEUgICAgPSAxIDw8IDE3
Cn0gR2RrR0NWYWx1ZXNNYXNrOwoKdHlwZWRlZiBlbnVtCnsKICBHREtfU0VMRUNUSU9OX1BSSU1B
UlkgPSAxLAogIEdES19TRUxFQ1RJT05fU0VDT05EQVJZID0gMgp9IEdka1NlbGVjdGlvbjsKCnR5
cGVkZWYgZW51bQp7CiAgR0RLX1BST1BFUlRZX05FV19WQUxVRSwKICBHREtfUFJPUEVSVFlfREVM
RVRFCn0gR2RrUHJvcGVydHlTdGF0ZTsKCnR5cGVkZWYgZW51bQp7CiAgR0RLX1BST1BfTU9ERV9S
RVBMQUNFLAogIEdES19QUk9QX01PREVfUFJFUEVORCwKICBHREtfUFJPUF9NT0RFX0FQUEVORAp9
IEdka1Byb3BNb2RlOwoKIAoKdHlwZWRlZiBlbnVtCnsKICBHREtfU09VUkNFX01PVVNFLAogIEdE
S19TT1VSQ0VfUEVOLAogIEdES19TT1VSQ0VfRVJBU0VSLAogIEdES19TT1VSQ0VfQ1VSU09SCn0g
R2RrSW5wdXRTb3VyY2U7Cgp0eXBlZGVmIGVudW0KewogIEdES19NT0RFX0RJU0FCTEVELAogIEdE
S19NT0RFX1NDUkVFTiwKICBHREtfTU9ERV9XSU5ET1cKfSBHZGtJbnB1dE1vZGU7Cgp0eXBlZGVm
IGVudW0KewogIEdES19BWElTX0lHTk9SRSwKICBHREtfQVhJU19YLAogIEdES19BWElTX1ksCiAg
R0RLX0FYSVNfUFJFU1NVUkUsCiAgR0RLX0FYSVNfWFRJTFQsCiAgR0RLX0FYSVNfWVRJTFQsCiAg
R0RLX0FYSVNfTEFTVAp9IEdka0F4aXNVc2U7CgogCgoKdHlwZWRlZiBlbnVtCnsKICBHREtfVEFS
R0VUX0JJVE1BUCA9IDUsCiAgR0RLX1RBUkdFVF9DT0xPUk1BUCA9IDcsCiAgR0RLX1RBUkdFVF9E
UkFXQUJMRSA9IDE3LAogIEdES19UQVJHRVRfUElYTUFQID0gMjAsCiAgR0RLX1RBUkdFVF9TVFJJ
TkcgPSAzMQp9IEdka1RhcmdldDsKCnR5cGVkZWYgZW51bQp7CiAgR0RLX1NFTEVDVElPTl9UWVBF
X0FUT00gPSA0LAogIEdES19TRUxFQ1RJT05fVFlQRV9CSVRNQVAgPSA1LAogIEdES19TRUxFQ1RJ
T05fVFlQRV9DT0xPUk1BUCA9IDcsCiAgR0RLX1NFTEVDVElPTl9UWVBFX0RSQVdBQkxFID0gMTcs
CiAgR0RLX1NFTEVDVElPTl9UWVBFX0lOVEVHRVIgPSAxOSwKICBHREtfU0VMRUNUSU9OX1RZUEVf
UElYTUFQID0gMjAsCiAgR0RLX1NFTEVDVElPTl9UWVBFX1dJTkRPVyA9IDMzLAogIEdES19TRUxF
Q1RJT05fVFlQRV9TVFJJTkcgPSAzMQp9IEdka1NlbGVjdGlvblR5cGU7Cgp0eXBlZGVmIGVudW0K
ewogIEdES19FWFRFTlNJT05fRVZFTlRTX05PTkUsCiAgR0RLX0VYVEVOU0lPTl9FVkVOVFNfQUxM
LAogIEdES19FWFRFTlNJT05fRVZFTlRTX0NVUlNPUgp9IEdka0V4dGVuc2lvbk1vZGU7Cgp0eXBl
ZGVmIGVudW0JCQkgCnsKICBHREtfSU1fUFJFRURJVF9BUkVBCSAgID0gMHgwMDAxLCAKICBHREtf
SU1fUFJFRURJVF9DQUxMQkFDS1MgPSAweDAwMDIsIAogIEdES19JTV9QUkVFRElUX1BPU0lUSU9O
ICA9IDB4MDAwNCwKICBHREtfSU1fUFJFRURJVF9OT1RISU5HICAgPSAweDAwMDgsCiAgR0RLX0lN
X1BSRUVESVRfTk9ORQkgICA9IDB4MDAxMCwKICBHREtfSU1fUFJFRURJVF9NQVNLICAgICAgPSAw
eDAwMWYsCgogIEdES19JTV9TVEFUVVNfQVJFQQkgICA9IDB4MDEwMCwgCiAgR0RLX0lNX1NUQVRV
U19DQUxMQkFDS1MgID0gMHgwMjAwLAogIEdES19JTV9TVEFUVVNfTk9USElORwkgICA9IDB4MDQw
MCwKICBHREtfSU1fU1RBVFVTX05PTkUJICAgPSAweDA4MDAsCiAgR0RLX0lNX1NUQVRVU19NQVNL
CSAgID0gMHgwZjAwIAp9IEdka0lNU3R5bGU7Cgp0eXBlZGVmIGVudW0KewogIEdES19JQ19TVFlM
RQkJCT0gMSA8PCAwLAogIEdES19JQ19DTElFTlRfV0lORE9XCQk9IDEgPDwgMSwKICBHREtfSUNf
Rk9DVVNfV0lORE9XCQk9IDEgPDwgMiwKICBHREtfSUNfRklMVEVSX0VWRU5UUwkJPSAxIDw8IDMs
CiAgR0RLX0lDX1NQT1RfTE9DQVRJT04JCT0gMSA8PCA0LAogIEdES19JQ19MSU5FX1NQQUNJTkcJ
CT0gMSA8PCA1LAogIEdES19JQ19DVVJTT1IJCQk9IDEgPDwgNiwKCiAgR0RLX0lDX1BSRUVESVRf
Rk9OVFNFVAk9IDEgPDwgMTAsCiAgR0RLX0lDX1BSRUVESVRfQVJFQQkJPSAxIDw8IDExLAogIEdE
S19JQ19QUkVFRElUX0FSRUFfTkVFREVECT0gMSA8PCAxMiwKICBHREtfSUNfUFJFRURJVF9GT1JF
R1JPVU5ECT0gMSA8PCAxMywKICBHREtfSUNfUFJFRURJVF9CQUNLR1JPVU5ECT0gMSA8PCAxNCwK
ICBHREtfSUNfUFJFRURJVF9QSVhNQVAJCT0gMSA8PCAxNSwKICBHREtfSUNfUFJFRURJVF9DT0xP
Uk1BUAk9IDEgPDwgMTYsCgogIEdES19JQ19TVEFUVVNfRk9OVFNFVAkJPSAxIDw8IDIxLAogIEdE
S19JQ19TVEFUVVNfQVJFQQkJPSAxIDw8IDIyLAogIEdES19JQ19TVEFUVVNfQVJFQV9ORUVERUQJ
PSAxIDw8IDIzLAogIEdES19JQ19TVEFUVVNfRk9SRUdST1VORAk9IDEgPDwgMjQsCiAgR0RLX0lD
X1NUQVRVU19CQUNLR1JPVU5ECT0gMSA8PCAyNSwKICBHREtfSUNfU1RBVFVTX1BJWE1BUAkJPSAx
IDw8IDI2LAogIEdES19JQ19TVEFUVVNfQ09MT1JNQVAJPSAxIDw8IDI3LAoKICBHREtfSUNfQUxM
X1JFUQkJPSBHREtfSUNfU1RZTEUgfAogICAgCQkJCSAgR0RLX0lDX0NMSUVOVF9XSU5ET1csCgog
IEdES19JQ19QUkVFRElUX0FSRUFfUkVRCT0gR0RLX0lDX1BSRUVESVRfQVJFQSB8IAoJCQkJICBH
REtfSUNfUFJFRURJVF9GT05UU0VULAogIEdES19JQ19QUkVFRElUX1BPU0lUSU9OX1JFUQk9IEdE
S19JQ19QUkVFRElUX0FSRUEgfCBHREtfSUNfU1BPVF9MT0NBVElPTiB8CgkJCQkgIEdES19JQ19Q
UkVFRElUX0ZPTlRTRVQsCgogIEdES19JQ19TVEFUVVNfQVJFQV9SRVEJPSBHREtfSUNfU1RBVFVT
X0FSRUEgfCAKCQkJCSAgR0RLX0lDX1NUQVRVU19GT05UU0VUCn0gR2RrSUNBdHRyaWJ1dGVzVHlw
ZTsKCiAKCgoKCnR5cGVkZWYgZW51bQp7CiAgR0RLX0RFQ09SX0FMTAkJPSAxIDw8IDAsCiAgR0RL
X0RFQ09SX0JPUkRFUgk9IDEgPDwgMSwKICBHREtfREVDT1JfUkVTSVpFSAk9IDEgPDwgMiwKICBH
REtfREVDT1JfVElUTEUJPSAxIDw8IDMsCiAgR0RLX0RFQ09SX01FTlUJPSAxIDw8IDQsCiAgR0RL
X0RFQ09SX01JTklNSVpFCT0gMSA8PCA1LAogIEdES19ERUNPUl9NQVhJTUlaRQk9IDEgPDwgNgp9
IEdka1dNRGVjb3JhdGlvbjsKCnR5cGVkZWYgZW51bQp7CiAgR0RLX0ZVTkNfQUxMCQk9IDEgPDwg
MCwKICBHREtfRlVOQ19SRVNJWkUJPSAxIDw8IDEsCiAgR0RLX0ZVTkNfTU9WRQkJPSAxIDw8IDIs
CiAgR0RLX0ZVTkNfTUlOSU1JWkUJPSAxIDw8IDMsCiAgR0RLX0ZVTkNfTUFYSU1JWkUJPSAxIDw8
IDQsCiAgR0RLX0ZVTkNfQ0xPU0UJPSAxIDw8IDUKfSBHZGtXTUZ1bmN0aW9uOwoKdHlwZWRlZiB2
b2lkICgqR2RrSW5wdXRGdW5jdGlvbikgKGdwb2ludGVyCSAgICBkYXRhLAoJCQkJICBnaW50CQkg
ICAgc291cmNlLAoJCQkJICBHZGtJbnB1dENvbmRpdGlvbiBjb25kaXRpb24pOwoKdHlwZWRlZiB2
b2lkICgqR2RrRGVzdHJveU5vdGlmeSkgKGdwb2ludGVyIGRhdGEpOwoKIAoKCgoKCgoKIAoKdHlw
ZWRlZiBlbnVtCnsKICBHREtfQ0NfTU9ERV9VTkRFRklORUQsCiAgR0RLX0NDX01PREVfQlcsCiAg
R0RLX0NDX01PREVfU1REX0NNQVAsCiAgR0RLX0NDX01PREVfVFJVRSwKICBHREtfQ0NfTU9ERV9N
WV9HUkFZLAogIEdES19DQ19NT0RFX1BBTEVUVEUKfSBHZGtDb2xvckNvbnRleHRNb2RlOwoKIAoK
CgoKCnR5cGVkZWYgZW51bQp7CiAgR0RLX09WRVJMQVBfUkVDVEFOR0xFX0lOLAogIEdES19PVkVS
TEFQX1JFQ1RBTkdMRV9PVVQsCiAgR0RLX09WRVJMQVBfUkVDVEFOR0xFX1BBUlQKfSBHZGtPdmVy
bGFwVHlwZTsKCnR5cGVkZWYgZW51bSB7CiAgR0RLX0FDVElPTl9ERUZBVUxUID0gMSA8PCAwLAog
IEdES19BQ1RJT05fQ09QWSAgICA9IDEgPDwgMSwKICBHREtfQUNUSU9OX01PVkUgICAgPSAxIDw8
IDIsCiAgR0RLX0FDVElPTl9MSU5LICAgID0gMSA8PCAzLAogIEdES19BQ1RJT05fUFJJVkFURSA9
IDEgPDwgNCwKICBHREtfQUNUSU9OX0FTSyAgICAgPSAxIDw8IDUKfSBHZGtEcmFnQWN0aW9uOwoK
dHlwZWRlZiBlbnVtIHsKICBHREtfRFJBR19QUk9UT19NT1RJRiwKICBHREtfRFJBR19QUk9UT19Y
RE5ELAogIEdES19EUkFHX1BST1RPX1JPT1RXSU4sCSAKCiAgR0RLX0RSQUdfUFJPVE9fTk9ORQkJ
IAp9IEdka0RyYWdQcm90b2NvbDsKCiAKCgoKCgoKc3RydWN0IF9HZGtDb2xvcgp7CiAgZ3Vsb25n
ICBwaXhlbDsKICBndXNob3J0IHJlZDsKICBndXNob3J0IGdyZWVuOwogIGd1c2hvcnQgYmx1ZTsK
fTsKCiAKCgpzdHJ1Y3QgX0dka0NvbG9ybWFwCnsKICBnaW50ICAgICAgc2l6ZTsKICBHZGtDb2xv
ciAqY29sb3JzOwp9OwoKIAoKCgoKCgoKCgoKCnN0cnVjdCBfR2RrVmlzdWFsCnsKICBHZGtWaXN1
YWxUeXBlIHR5cGU7CiAgZ2ludCBkZXB0aDsKICBHZGtCeXRlT3JkZXIgYnl0ZV9vcmRlcjsKICBn
aW50IGNvbG9ybWFwX3NpemU7CiAgZ2ludCBiaXRzX3Blcl9yZ2I7CgogIGd1aW50MzIgcmVkX21h
c2s7CiAgZ2ludCByZWRfc2hpZnQ7CiAgZ2ludCByZWRfcHJlYzsKCiAgZ3VpbnQzMiBncmVlbl9t
YXNrOwogIGdpbnQgZ3JlZW5fc2hpZnQ7CiAgZ2ludCBncmVlbl9wcmVjOwoKICBndWludDMyIGJs
dWVfbWFzazsKICBnaW50IGJsdWVfc2hpZnQ7CiAgZ2ludCBibHVlX3ByZWM7Cn07CgpzdHJ1Y3Qg
X0dka1dpbmRvd0F0dHIKewogIGdjaGFyICp0aXRsZTsKICBnaW50IGV2ZW50X21hc2s7CiAgZ2lu
dDE2IHgsIHk7CiAgZ2ludDE2IHdpZHRoOwogIGdpbnQxNiBoZWlnaHQ7CiAgR2RrV2luZG93Q2xh
c3Mgd2NsYXNzOwogIEdka1Zpc3VhbCAqdmlzdWFsOwogIEdka0NvbG9ybWFwICpjb2xvcm1hcDsK
ICBHZGtXaW5kb3dUeXBlIHdpbmRvd190eXBlOwogIEdka0N1cnNvciAqY3Vyc29yOwogIGdjaGFy
ICp3bWNsYXNzX25hbWU7CiAgZ2NoYXIgKndtY2xhc3NfY2xhc3M7CiAgZ2Jvb2xlYW4gb3ZlcnJp
ZGVfcmVkaXJlY3Q7Cn07CgpzdHJ1Y3QgX0dka1dpbmRvdwp7CiAgZ3BvaW50ZXIgdXNlcl9kYXRh
Owp9OwoKc3RydWN0IF9HZGtHZW9tZXRyeSB7CiAgZ2ludCBtaW5fd2lkdGg7CiAgZ2ludCBtaW5f
aGVpZ2h0OwogIGdpbnQgbWF4X3dpZHRoOwogIGdpbnQgbWF4X2hlaWdodDsKICBnaW50IGJhc2Vf
d2lkdGg7CiAgZ2ludCBiYXNlX2hlaWdodDsKICBnaW50IHdpZHRoX2luYzsKICBnaW50IGhlaWdo
dF9pbmM7CiAgZ2RvdWJsZSBtaW5fYXNwZWN0OwogIGdkb3VibGUgbWF4X2FzcGVjdDsKICAgCn07
CgpzdHJ1Y3QgX0dka0ltYWdlCnsKICBHZGtJbWFnZVR5cGUJdHlwZTsKICBHZGtWaXN1YWwgICAg
KnZpc3VhbDsJICAgICAKICBHZGtCeXRlT3JkZXIJYnl0ZV9vcmRlcjsKICBndWludDE2CXdpZHRo
OwogIGd1aW50MTYJaGVpZ2h0OwogIGd1aW50MTYJZGVwdGg7CiAgZ3VpbnQxNglicHA7CSAgICAg
CiAgZ3VpbnQxNglicGw7CSAgICAgCiAgZ3BvaW50ZXIJbWVtOwp9OwoKc3RydWN0IF9HZGtHQ1Zh
bHVlcwp7CiAgR2RrQ29sb3IJICAgIGZvcmVncm91bmQ7CiAgR2RrQ29sb3IJICAgIGJhY2tncm91
bmQ7CiAgR2RrRm9udAkgICAqZm9udDsKICBHZGtGdW5jdGlvbgkgICAgZnVuY3Rpb247CiAgR2Rr
RmlsbAkgICAgZmlsbDsKICBHZGtQaXhtYXAJICAgKnRpbGU7CiAgR2RrUGl4bWFwCSAgICpzdGlw
cGxlOwogIEdka1BpeG1hcAkgICAqY2xpcF9tYXNrOwogIEdka1N1YndpbmRvd01vZGUgIHN1Yndp
bmRvd19tb2RlOwogIGdpbnQJCSAgICB0c194X29yaWdpbjsKICBnaW50CQkgICAgdHNfeV9vcmln
aW47CiAgZ2ludAkJICAgIGNsaXBfeF9vcmlnaW47CiAgZ2ludAkJICAgIGNsaXBfeV9vcmlnaW47
CiAgZ2ludAkJICAgIGdyYXBoaWNzX2V4cG9zdXJlczsKICBnaW50CQkgICAgbGluZV93aWR0aDsK
ICBHZGtMaW5lU3R5bGUJICAgIGxpbmVfc3R5bGU7CiAgR2RrQ2FwU3R5bGUJICAgIGNhcF9zdHls
ZTsKICBHZGtKb2luU3R5bGUJICAgIGpvaW5fc3R5bGU7Cn07CgpzdHJ1Y3QgX0dka0dDCnsKICBn
aW50IGR1bW15X3ZhcjsKfTsKCnN0cnVjdCBfR2RrUG9pbnQKewogIGdpbnQxNiB4OwogIGdpbnQx
NiB5Owp9OwoKc3RydWN0IF9HZGtSZWN0YW5nbGUKewogIGdpbnQxNiB4OwogIGdpbnQxNiB5Owog
IGd1aW50MTYgd2lkdGg7CiAgZ3VpbnQxNiBoZWlnaHQ7Cn07CgpzdHJ1Y3QgX0dka1NlZ21lbnQK
ewogIGdpbnQxNiB4MTsKICBnaW50MTYgeTE7CiAgZ2ludDE2IHgyOwogIGdpbnQxNiB5MjsKfTsK
CnN0cnVjdCBfR2RrRm9udAp7CiAgR2RrRm9udFR5cGUgdHlwZTsKICBnaW50IGFzY2VudDsKICBn
aW50IGRlc2NlbnQ7Cn07CgpzdHJ1Y3QgX0dka0N1cnNvcgp7CiAgR2RrQ3Vyc29yVHlwZSB0eXBl
Owp9OwoKCnN0cnVjdCBfR2RrQ29sb3JDb250ZXh0RGl0aGVyCnsKICBnaW50IGZhc3RfcmdiWzMy
XVszMl1bMzJdOyAgCiAgZ2ludCBmYXN0X2VyclszMl1bMzJdWzMyXTsgIAogIGdpbnQgZmFzdF9l
cmdbMzJdWzMyXVszMl07CiAgZ2ludCBmYXN0X2VyYlszMl1bMzJdWzMyXTsKfTsKCnN0cnVjdCBf
R2RrQ29sb3JDb250ZXh0CnsKICBHZGtWaXN1YWwgKnZpc3VhbDsKICBHZGtDb2xvcm1hcCAqY29s
b3JtYXA7CgogIGdpbnQgbnVtX2NvbG9yczsJCSAKICBnaW50IG1heF9jb2xvcnM7CQkgCiAgZ2lu
dCBudW1fYWxsb2NhdGVkOwkJIAoKICBHZGtDb2xvckNvbnRleHRNb2RlIG1vZGU7CiAgZ2ludCBu
ZWVkX3RvX2ZyZWVfY29sb3JtYXA7CiAgR2RrQXRvbSBzdGRfY21hcF9hdG9tOwoKICBndWxvbmcg
KmNsdXQ7CQkJIAogIEdka0NvbG9yICpjbWFwOwkJIAoKICBHSGFzaFRhYmxlICpjb2xvcl9oYXNo
OwkgCiAgR2RrQ29sb3IgKnBhbGV0dGU7CQkgCiAgZ2ludCBudW1fcGFsZXR0ZTsJCSAKCiAgR2Rr
Q29sb3JDb250ZXh0RGl0aGVyICpmYXN0X2RpdGhlcjsJIAoKICBzdHJ1Y3QKICB7CiAgICBnaW50
IHJlZDsKICAgIGdpbnQgZ3JlZW47CiAgICBnaW50IGJsdWU7CiAgfSBzaGlmdHM7CgogIHN0cnVj
dAogIHsKICAgIGd1bG9uZyByZWQ7CiAgICBndWxvbmcgZ3JlZW47CiAgICBndWxvbmcgYmx1ZTsK
ICB9IG1hc2tzOwoKICBzdHJ1Y3QKICB7CiAgICBnaW50IHJlZDsKICAgIGdpbnQgZ3JlZW47CiAg
ICBnaW50IGJsdWU7CiAgfSBiaXRzOwoKICBndWxvbmcgbWF4X2VudHJ5OwoKICBndWxvbmcgYmxh
Y2tfcGl4ZWw7CiAgZ3Vsb25nIHdoaXRlX3BpeGVsOwp9OwoKIAoKc3RydWN0IF9HZGtEZXZpY2VL
ZXkKewogIGd1aW50IGtleXZhbDsKICBHZGtNb2RpZmllclR5cGUgbW9kaWZpZXJzOwp9OwoKc3Ry
dWN0IF9HZGtEZXZpY2VJbmZvCnsKICBndWludDMyIGRldmljZWlkOwogIGdjaGFyICpuYW1lOwog
IEdka0lucHV0U291cmNlIHNvdXJjZTsKICBHZGtJbnB1dE1vZGUgbW9kZTsKICBnaW50IGhhc19j
dXJzb3I7CSAKICBnaW50IG51bV9heGVzOwogIEdka0F4aXNVc2UgKmF4ZXM7ICAgICAKICBnaW50
IG51bV9rZXlzOwogIEdka0RldmljZUtleSAqa2V5czsKfTsKCnN0cnVjdCBfR2RrVGltZUNvb3Jk
CnsKICBndWludDMyIHRpbWU7CiAgZ2RvdWJsZSB4OwogIGdkb3VibGUgeTsKICBnZG91YmxlIHBy
ZXNzdXJlOwogIGdkb3VibGUgeHRpbHQ7CiAgZ2RvdWJsZSB5dGlsdDsKfTsKCiAKCgpzdHJ1Y3Qg
X0dka0RyYWdDb250ZXh0IHsKICBHZGtEcmFnUHJvdG9jb2wgcHJvdG9jb2w7CiAgCiAgZ2Jvb2xl
YW4gaXNfc291cmNlOwogIAogIEdka1dpbmRvdyAqc291cmNlX3dpbmRvdzsKICBHZGtXaW5kb3cg
KmRlc3Rfd2luZG93OwoKICBHTGlzdCAqdGFyZ2V0czsKICBHZGtEcmFnQWN0aW9uIGFjdGlvbnM7
CiAgR2RrRHJhZ0FjdGlvbiBzdWdnZXN0ZWRfYWN0aW9uOwogIEdka0RyYWdBY3Rpb24gYWN0aW9u
OyAKCiAgZ3VpbnQzMiBzdGFydF90aW1lOwp9OwoKIAoKdHlwZWRlZiB2b2lkIEdka1hFdmVudDsJ
ICAgCgp0eXBlZGVmIEdka0ZpbHRlclJldHVybiAoKkdka0ZpbHRlckZ1bmMpIChHZGtYRXZlbnQg
KnhldmVudCwKCQkJCQkgIEdka0V2ZW50ICpldmVudCwKCQkJCQkgIGdwb2ludGVyICBkYXRhKTsK
CnN0cnVjdCBfR2RrRXZlbnRBbnkKewogIEdka0V2ZW50VHlwZSB0eXBlOwogIEdka1dpbmRvdyAq
d2luZG93OwogIGdpbnQ4IHNlbmRfZXZlbnQ7Cn07CgpzdHJ1Y3QgX0dka0V2ZW50RXhwb3NlCnsK
ICBHZGtFdmVudFR5cGUgdHlwZTsKICBHZGtXaW5kb3cgKndpbmRvdzsKICBnaW50OCBzZW5kX2V2
ZW50OwogIEdka1JlY3RhbmdsZSBhcmVhOwogIGdpbnQgY291bnQ7ICAKfTsKCnN0cnVjdCBfR2Rr
RXZlbnROb0V4cG9zZQp7CiAgR2RrRXZlbnRUeXBlIHR5cGU7CiAgR2RrV2luZG93ICp3aW5kb3c7
CiAgZ2ludDggc2VuZF9ldmVudDsKICAgCn07CgpzdHJ1Y3QgX0dka0V2ZW50VmlzaWJpbGl0eQp7
CiAgR2RrRXZlbnRUeXBlIHR5cGU7CiAgR2RrV2luZG93ICp3aW5kb3c7CiAgZ2ludDggc2VuZF9l
dmVudDsKICBHZGtWaXNpYmlsaXR5U3RhdGUgc3RhdGU7Cn07CgpzdHJ1Y3QgX0dka0V2ZW50TW90
aW9uCnsKICBHZGtFdmVudFR5cGUgdHlwZTsKICBHZGtXaW5kb3cgKndpbmRvdzsKICBnaW50OCBz
ZW5kX2V2ZW50OwogIGd1aW50MzIgdGltZTsKICBnZG91YmxlIHg7CiAgZ2RvdWJsZSB5OwogIGdk
b3VibGUgcHJlc3N1cmU7CiAgZ2RvdWJsZSB4dGlsdDsKICBnZG91YmxlIHl0aWx0OwogIGd1aW50
IHN0YXRlOwogIGdpbnQxNiBpc19oaW50OwogIEdka0lucHV0U291cmNlIHNvdXJjZTsKICBndWlu
dDMyIGRldmljZWlkOwogIGdkb3VibGUgeF9yb290LCB5X3Jvb3Q7Cn07CgpzdHJ1Y3QgX0dka0V2
ZW50QnV0dG9uCnsKICBHZGtFdmVudFR5cGUgdHlwZTsKICBHZGtXaW5kb3cgKndpbmRvdzsKICBn
aW50OCBzZW5kX2V2ZW50OwogIGd1aW50MzIgdGltZTsKICBnZG91YmxlIHg7CiAgZ2RvdWJsZSB5
OwogIGdkb3VibGUgcHJlc3N1cmU7CiAgZ2RvdWJsZSB4dGlsdDsKICBnZG91YmxlIHl0aWx0Owog
IGd1aW50IHN0YXRlOwogIGd1aW50IGJ1dHRvbjsKICBHZGtJbnB1dFNvdXJjZSBzb3VyY2U7CiAg
Z3VpbnQzMiBkZXZpY2VpZDsKICBnZG91YmxlIHhfcm9vdCwgeV9yb290Owp9OwoKc3RydWN0IF9H
ZGtFdmVudEtleQp7CiAgR2RrRXZlbnRUeXBlIHR5cGU7CiAgR2RrV2luZG93ICp3aW5kb3c7CiAg
Z2ludDggc2VuZF9ldmVudDsKICBndWludDMyIHRpbWU7CiAgZ3VpbnQgc3RhdGU7CiAgZ3VpbnQg
a2V5dmFsOwogIGdpbnQgbGVuZ3RoOwogIGdjaGFyICpzdHJpbmc7Cn07CgpzdHJ1Y3QgX0dka0V2
ZW50Q3Jvc3NpbmcKewogIEdka0V2ZW50VHlwZSB0eXBlOwogIEdka1dpbmRvdyAqd2luZG93Owog
IGdpbnQ4IHNlbmRfZXZlbnQ7CiAgR2RrV2luZG93ICpzdWJ3aW5kb3c7CiAgZ3VpbnQzMiB0aW1l
OwogIGdkb3VibGUgeDsKICBnZG91YmxlIHk7CiAgZ2RvdWJsZSB4X3Jvb3Q7CiAgZ2RvdWJsZSB5
X3Jvb3Q7CiAgR2RrQ3Jvc3NpbmdNb2RlIG1vZGU7CiAgR2RrTm90aWZ5VHlwZSBkZXRhaWw7CiAg
Z2Jvb2xlYW4gZm9jdXM7CiAgZ3VpbnQgc3RhdGU7Cn07CgpzdHJ1Y3QgX0dka0V2ZW50Rm9jdXMK
ewogIEdka0V2ZW50VHlwZSB0eXBlOwogIEdka1dpbmRvdyAqd2luZG93OwogIGdpbnQ4IHNlbmRf
ZXZlbnQ7CiAgZ2ludDE2IGluOwp9OwoKc3RydWN0IF9HZGtFdmVudENvbmZpZ3VyZQp7CiAgR2Rr
RXZlbnRUeXBlIHR5cGU7CiAgR2RrV2luZG93ICp3aW5kb3c7CiAgZ2ludDggc2VuZF9ldmVudDsK
ICBnaW50MTYgeCwgeTsKICBnaW50MTYgd2lkdGg7CiAgZ2ludDE2IGhlaWdodDsKfTsKCnN0cnVj
dCBfR2RrRXZlbnRQcm9wZXJ0eQp7CiAgR2RrRXZlbnRUeXBlIHR5cGU7CiAgR2RrV2luZG93ICp3
aW5kb3c7CiAgZ2ludDggc2VuZF9ldmVudDsKICBHZGtBdG9tIGF0b207CiAgZ3VpbnQzMiB0aW1l
OwogIGd1aW50IHN0YXRlOwp9OwoKc3RydWN0IF9HZGtFdmVudFNlbGVjdGlvbgp7CiAgR2RrRXZl
bnRUeXBlIHR5cGU7CiAgR2RrV2luZG93ICp3aW5kb3c7CiAgZ2ludDggc2VuZF9ldmVudDsKICBH
ZGtBdG9tIHNlbGVjdGlvbjsKICBHZGtBdG9tIHRhcmdldDsKICBHZGtBdG9tIHByb3BlcnR5Owog
IGd1aW50MzIgcmVxdWVzdG9yOwogIGd1aW50MzIgdGltZTsKfTsKCiAKCgpzdHJ1Y3QgX0dka0V2
ZW50UHJveGltaXR5CnsKICBHZGtFdmVudFR5cGUgdHlwZTsKICBHZGtXaW5kb3cgKndpbmRvdzsK
ICBnaW50OCBzZW5kX2V2ZW50OwogIGd1aW50MzIgdGltZTsKICBHZGtJbnB1dFNvdXJjZSBzb3Vy
Y2U7CiAgZ3VpbnQzMiBkZXZpY2VpZDsKfTsKCnN0cnVjdCBfR2RrRXZlbnRDbGllbnQKewogIEdk
a0V2ZW50VHlwZSB0eXBlOwogIEdka1dpbmRvdyAqd2luZG93OwogIGdpbnQ4IHNlbmRfZXZlbnQ7
CiAgR2RrQXRvbSBtZXNzYWdlX3R5cGU7CiAgZ3VzaG9ydCBkYXRhX2Zvcm1hdDsKICB1bmlvbiB7
CiAgICBjaGFyIGJbMjBdOwogICAgc2hvcnQgc1sxMF07CiAgICBsb25nIGxbNV07CiAgfSBkYXRh
Owp9OwoKIAoKc3RydWN0IF9HZGtFdmVudERORCB7CiAgR2RrRXZlbnRUeXBlIHR5cGU7CiAgR2Rr
V2luZG93ICp3aW5kb3c7CiAgZ2ludDggc2VuZF9ldmVudDsKICBHZGtEcmFnQ29udGV4dCAqY29u
dGV4dDsKCiAgZ3VpbnQzMiB0aW1lOwogIGdzaG9ydCB4X3Jvb3QsIHlfcm9vdDsKfTsKCnVuaW9u
IF9HZGtFdmVudAp7CiAgR2RrRXZlbnRUeXBlCQkgICAgdHlwZTsKICBHZGtFdmVudEFueQkJICAg
IGFueTsKICBHZGtFdmVudEV4cG9zZQkgICAgZXhwb3NlOwogIEdka0V2ZW50Tm9FeHBvc2UJICAg
IG5vX2V4cG9zZTsKICBHZGtFdmVudFZpc2liaWxpdHkJICAgIHZpc2liaWxpdHk7CiAgR2RrRXZl
bnRNb3Rpb24JICAgIG1vdGlvbjsKICBHZGtFdmVudEJ1dHRvbgkgICAgYnV0dG9uOwogIEdka0V2
ZW50S2V5CQkgICAga2V5OwogIEdka0V2ZW50Q3Jvc3NpbmcJICAgIGNyb3NzaW5nOwogIEdka0V2
ZW50Rm9jdXMJCSAgICBmb2N1c19jaGFuZ2U7CiAgR2RrRXZlbnRDb25maWd1cmUJICAgIGNvbmZp
Z3VyZTsKICBHZGtFdmVudFByb3BlcnR5CSAgICBwcm9wZXJ0eTsKICBHZGtFdmVudFNlbGVjdGlv
bgkgICAgc2VsZWN0aW9uOwogIEdka0V2ZW50UHJveGltaXR5CSAgICBwcm94aW1pdHk7CiAgR2Rr
RXZlbnRDbGllbnQJICAgIGNsaWVudDsKICBHZGtFdmVudERORCAgICAgICAgICAgICAgIGRuZDsK
fTsKCnN0cnVjdCBfR2RrUmVnaW9uCnsKICBncG9pbnRlciB1c2VyX2RhdGE7Cn07CgpzdHJ1Y3Qg
X0dka0lDQXR0cgp7CiAgR2RrSU1TdHlsZSBzdHlsZTsKICBHZGtXaW5kb3cgKmNsaWVudF93aW5k
b3c7CiAgR2RrV2luZG93ICpmb2N1c193aW5kb3c7CiAgR2RrRXZlbnRNYXNrIGZpbHRlcl9ldmVu
dHM7CiAgR2RrUG9pbnQgc3BvdF9sb2NhdGlvbjsKICBnaW50IGxpbmVfc3BhY2luZzsKICBHZGtD
dXJzb3IgKmN1cnNvcjsKCiAgR2RrRm9udCAqcHJlZWRpdF9mb250c2V0OwogIEdka1JlY3Rhbmds
ZSBwcmVlZGl0X2FyZWE7CiAgR2RrUmVjdGFuZ2xlIHByZWVkaXRfYXJlYV9uZWVkZWQ7IAogIEdk
a0NvbG9yIHByZWVkaXRfZm9yZWdyb3VuZDsKICBHZGtDb2xvciBwcmVlZGl0X2JhY2tncm91bmQ7
CiAgR2RrUGl4bWFwICpwcmVlZGl0X3BpeG1hcDsKICBHZGtDb2xvcm1hcCAqcHJlZWRpdF9jb2xv
cm1hcDsKCiAgR2RrRm9udCAqc3RhdHVzX2ZvbnRzZXQ7CiAgR2RrUmVjdGFuZ2xlIHN0YXR1c19h
cmVhOwogIEdka1JlY3RhbmdsZSBzdGF0dXNfYXJlYV9uZWVkZWQ7IAogIEdka0NvbG9yIHN0YXR1
c19mb3JlZ3JvdW5kOwogIEdka0NvbG9yIHN0YXR1c19iYWNrZ3JvdW5kOwogIEdka1BpeG1hcCAq
c3RhdHVzX3BpeG1hcDsKICBHZGtDb2xvcm1hcCAqc3RhdHVzX2NvbG9ybWFwOwp9OwoKCn0KCgoK
CiMgMzEgIi91c3IvaW5jbHVkZS9nZGsvZ2RrLmgiIDIgMwoKCgpleHRlcm4gIkMiIHsKCgoKIAoK
CnZvaWQgCSAgZ2RrX2luaXQJCSAgIAkoZ2ludAkgICAJKmFyZ2MsCgkJCQkJIGdjaGFyICAgICAg
ICAqKiphcmd2KTsKZ2Jvb2xlYW4gIGdka19pbml0X2NoZWNrICAgCSAgICAgICAgKGdpbnQJICAg
CSphcmdjLAoJCQkJCSBnY2hhciAgICAgICAgKioqYXJndik7CnZvaWQgIAkgIGdka19leGl0CQkg
ICAJKGdpbnQJICAgIAkgZXJyb3JfY29kZSk7CmdjaGFyKgkgIGdka19zZXRfbG9jYWxlCSAgIAko
dm9pZCk7CgogCgp2b2lkICAgICAgZ2RrX2Vycm9yX3RyYXBfcHVzaCAgICAgICAgICAgKHZvaWQp
OwpnaW50ICAgICAgZ2RrX2Vycm9yX3RyYXBfcG9wICAgICAgICAgICAgKHZvaWQpOwoKCmdib29s
ZWFuICBnZGtfZXZlbnRzX3BlbmRpbmcJIAkodm9pZCk7Ckdka0V2ZW50KiBnZGtfZXZlbnRfZ2V0
CQkJKHZvaWQpOwoKR2RrRXZlbnQqIGdka19ldmVudF9wZWVrICAgICAgICAgICAgICAgICh2b2lk
KTsKR2RrRXZlbnQqIGdka19ldmVudF9nZXRfZ3JhcGhpY3NfZXhwb3NlIChHZGtXaW5kb3cgCSp3
aW5kb3cpOwp2b2lkICAgICAgZ2RrX2V2ZW50X3B1dAkgCQkoR2RrRXZlbnQgIAkqZXZlbnQpOwoK
R2RrRXZlbnQqIGdka19ldmVudF9jb3B5ICAgICAJCShHZGtFdmVudCAJKmV2ZW50KTsKdm9pZAkg
IGdka19ldmVudF9mcmVlICAgICAJCShHZGtFdmVudCAJKmV2ZW50KTsKZ3VpbnQzMiAgIGdka19l
dmVudF9nZXRfdGltZSAJCShHZGtFdmVudCAJKmV2ZW50KTsKCnZvaWQJICBnZGtfZXZlbnRfaGFu
ZGxlcl9zZXQgCShHZGtFdmVudEZ1bmMgICAgZnVuYywKCQkJCQkgZ3BvaW50ZXIgICAgICAgIGRh
dGEsCgkJCQkJIEdEZXN0cm95Tm90aWZ5ICBub3RpZnkpOwoKdm9pZAkgIGdka19zZXRfc2hvd19l
dmVudHMJCShnYm9vbGVhbgkgc2hvd19ldmVudHMpOwp2b2lkCSAgZ2RrX3NldF91c2VfeHNobQkJ
KGdib29sZWFuCSB1c2VfeHNobSk7CgpnYm9vbGVhbiAgZ2RrX2dldF9zaG93X2V2ZW50cwkJKHZv
aWQpOwpnYm9vbGVhbiAgZ2RrX2dldF91c2VfeHNobQkJKHZvaWQpOwpnY2hhcioJICBnZGtfZ2V0
X2Rpc3BsYXkJCSh2b2lkKTsKCmd1aW50MzIgZ2RrX3RpbWVfZ2V0CSAgKHZvaWQpOwpndWludDMy
IGdka190aW1lcl9nZXQJICAodm9pZCk7CnZvaWQJZ2RrX3RpbWVyX3NldAkgIChndWludDMyIG1p
bGxpc2Vjb25kcyk7CnZvaWQJZ2RrX3RpbWVyX2VuYWJsZSAgKHZvaWQpOwp2b2lkCWdka190aW1l
cl9kaXNhYmxlICh2b2lkKTsKCmdpbnQgZ2RrX2lucHV0X2FkZF9mdWxsCSAgKGdpbnQJCSAgICAg
c291cmNlLAoJCQkgICBHZGtJbnB1dENvbmRpdGlvbiBjb25kaXRpb24sCgkJCSAgIEdka0lucHV0
RnVuY3Rpb24gIGZ1bmN0aW9uLAoJCQkgICBncG9pbnRlcgkgICAgIGRhdGEsCgkJCSAgIEdka0Rl
c3Ryb3lOb3RpZnkgIGRlc3Ryb3kpOwpnaW50IGdka19pbnB1dF9hZGQJICAoZ2ludAkJICAgICBz
b3VyY2UsCgkJCSAgIEdka0lucHV0Q29uZGl0aW9uIGNvbmRpdGlvbiwKCQkJICAgR2RrSW5wdXRG
dW5jdGlvbiAgZnVuY3Rpb24sCgkJCSAgIGdwb2ludGVyCSAgICAgZGF0YSk7CnZvaWQgZ2RrX2lu
cHV0X3JlbW92ZQkgIChnaW50CQkgICAgIHRhZyk7CgpnaW50ICAgICBnZGtfcG9pbnRlcl9ncmFi
ICAgICAgIChHZGtXaW5kb3cgICAgKndpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2ludCAgICAgICAgICBvd25lcl9ldmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdka0V2ZW50TWFzayAgZXZlbnRfbWFzaywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2RrV2luZG93ICAgICpjb25maW5lX3RvLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZGtDdXJzb3IgICAgKmN1cnNvciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3VpbnQzMiAgICAgICB0aW1lKTsKdm9pZCAgICAgZ2RrX3BvaW50ZXJfdW5n
cmFiICAgICAoZ3VpbnQzMiAgICAgICB0aW1lKTsKZ2ludCAgICAgZ2RrX2tleWJvYXJkX2dyYWIg
ICAgICAoR2RrV2luZG93ICAgICp3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdib29sZWFuICAgICAgb3duZXJfZXZlbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBndWludDMyICAgICAgIHRpbWUpOwp2b2lkICAgICBnZGtfa2V5Ym9hcmRfdW5ncmFi
ICAgIChndWludDMyICAgICAgIHRpbWUpOwpnYm9vbGVhbiBnZGtfcG9pbnRlcl9pc19ncmFiYmVk
ICh2b2lkKTsKCgpnaW50IGdka19zY3JlZW5fd2lkdGggICh2b2lkKTsKZ2ludCBnZGtfc2NyZWVu
X2hlaWdodCAodm9pZCk7CgpnaW50IGdka19zY3JlZW5fd2lkdGhfbW0gICh2b2lkKTsKZ2ludCBn
ZGtfc2NyZWVuX2hlaWdodF9tbSAodm9pZCk7Cgp2b2lkIGdka19mbHVzaCAodm9pZCk7CnZvaWQg
Z2RrX2JlZXAgKHZvaWQpOwoKdm9pZCBnZGtfa2V5X3JlcGVhdF9kaXNhYmxlICh2b2lkKTsKdm9p
ZCBnZGtfa2V5X3JlcGVhdF9yZXN0b3JlICh2b2lkKTsKCgogCgpnaW50CSAgICAgIGdka192aXN1
YWxfZ2V0X2Jlc3RfZGVwdGgJICAgICAodm9pZCk7Ckdka1Zpc3VhbFR5cGUgZ2RrX3Zpc3VhbF9n
ZXRfYmVzdF90eXBlCSAgICAgKHZvaWQpOwpHZGtWaXN1YWwqICAgIGdka192aXN1YWxfZ2V0X3N5
c3RlbQkgICAgICh2b2lkKTsKR2RrVmlzdWFsKiAgICBnZGtfdmlzdWFsX2dldF9iZXN0CSAgICAg
KHZvaWQpOwpHZGtWaXN1YWwqICAgIGdka192aXN1YWxfZ2V0X2Jlc3Rfd2l0aF9kZXB0aCAoZ2lu
dAkgICAgIGRlcHRoKTsKR2RrVmlzdWFsKiAgICBnZGtfdmlzdWFsX2dldF9iZXN0X3dpdGhfdHlw
ZSAgKEdka1Zpc3VhbFR5cGUgIHZpc3VhbF90eXBlKTsKR2RrVmlzdWFsKiAgICBnZGtfdmlzdWFs
X2dldF9iZXN0X3dpdGhfYm90aCAgKGdpbnQJICAgICBkZXB0aCwKCQkJCQkgICAgICBHZGtWaXN1
YWxUeXBlICB2aXN1YWxfdHlwZSk7CgogCkdka1Zpc3VhbCogZ2RrX3Zpc3VhbF9yZWYgKEdka1Zp
c3VhbCAqdmlzdWFsKTsKdm9pZAkgICBnZGtfdmlzdWFsX3VucmVmIChHZGtWaXN1YWwgKnZpc3Vh
bCk7Cgp2b2lkIGdka19xdWVyeV9kZXB0aHMJICAgIChnaW50CSAgICAqKmRlcHRocywKCQkJICAg
ICBnaW50CSAgICAgKmNvdW50KTsKdm9pZCBnZGtfcXVlcnlfdmlzdWFsX3R5cGVzIChHZGtWaXN1
YWxUeXBlICAqKnZpc3VhbF90eXBlcywKCQkJICAgICBnaW50CSAgICAgKmNvdW50KTsKCkdMaXN0
KiBnZGtfbGlzdF92aXN1YWxzICh2b2lkKTsKCgogCgpHZGtXaW5kb3cqICAgIGdka193aW5kb3df
bmV3CSAgICAgKEdka1dpbmRvdwkgICAgKnBhcmVudCwKCQkJCSAgICAgIEdka1dpbmRvd0F0dHIg
KmF0dHJpYnV0ZXMsCgkJCQkgICAgICBnaW50CSAgICAgYXR0cmlidXRlc19tYXNrKTsKCnZvaWQJ
ICAgICAgZ2RrX3dpbmRvd19kZXN0cm95ICAgICAoR2RrV2luZG93CSAgICAqd2luZG93KTsKR2Rr
V2luZG93KiAgICBnZGtfd2luZG93X3JlZgkgICAgIChHZGtXaW5kb3cJICAgICp3aW5kb3cpOwp2
b2lkCSAgICAgIGdka193aW5kb3dfdW5yZWYJICAgICAoR2RrV2luZG93CSAgICAqd2luZG93KTsK
Ckdka1dpbmRvdyogICAgZ2RrX3dpbmRvd19hdF9wb2ludGVyICAoZ2ludAkgICAqd2luX3gsCgkJ
CQkgICAgICBnaW50CSAgICp3aW5feSk7CnZvaWQJICAgICAgZ2RrX3dpbmRvd19zaG93CSAgICAg
KEdka1dpbmRvdwkgICAqd2luZG93KTsKdm9pZAkgICAgICBnZGtfd2luZG93X2hpZGUJICAgICAo
R2RrV2luZG93CSAgICp3aW5kb3cpOwp2b2lkCSAgICAgIGdka193aW5kb3dfd2l0aGRyYXcgICAg
KEdka1dpbmRvdwkgICAqd2luZG93KTsKdm9pZAkgICAgICBnZGtfd2luZG93X21vdmUJICAgICAo
R2RrV2luZG93CSAgICp3aW5kb3csCgkJCQkgICAgICBnaW50CSAgICB4LAoJCQkJICAgICAgZ2lu
dAkgICAgeSk7CnZvaWQJICAgICAgZ2RrX3dpbmRvd19yZXNpemUJICAgICAoR2RrV2luZG93CSAg
ICp3aW5kb3csCgkJCQkgICAgICBnaW50CSAgICB3aWR0aCwKCQkJCSAgICAgIGdpbnQJICAgIGhl
aWdodCk7CnZvaWQJICAgICAgZ2RrX3dpbmRvd19tb3ZlX3Jlc2l6ZSAoR2RrV2luZG93CSAgICp3
aW5kb3csCgkJCQkgICAgICBnaW50CSAgICB4LAoJCQkJICAgICAgZ2ludAkgICAgeSwKCQkJCSAg
ICAgIGdpbnQJICAgIHdpZHRoLAoJCQkJICAgICAgZ2ludAkgICAgaGVpZ2h0KTsKdm9pZAkgICAg
ICBnZGtfd2luZG93X3JlcGFyZW50ICAgIChHZGtXaW5kb3cJICAgKndpbmRvdywKCQkJCSAgICAg
IEdka1dpbmRvdwkgICAqbmV3X3BhcmVudCwKCQkJCSAgICAgIGdpbnQJICAgIHgsCgkJCQkgICAg
ICBnaW50CSAgICB5KTsKdm9pZAkgICAgICBnZGtfd2luZG93X2NsZWFyCSAgICAgKEdka1dpbmRv
dwkgICAqd2luZG93KTsKdm9pZAkgICAgICBnZGtfd2luZG93X2NsZWFyX2FyZWEgIChHZGtXaW5k
b3cJICAgKndpbmRvdywKCQkJCSAgICAgIGdpbnQJICAgIHgsCgkJCQkgICAgICBnaW50CSAgICB5
LAoJCQkJICAgICAgZ2ludAkgICAgd2lkdGgsCgkJCQkgICAgICBnaW50CSAgICBoZWlnaHQpOwp2
b2lkCSAgICAgIGdka193aW5kb3dfY2xlYXJfYXJlYV9lKEdka1dpbmRvdwkgICAqd2luZG93LAoJ
CQkJICAgICAgZ2ludAkgICAgeCwKCQkJCSAgICAgIGdpbnQJICAgIHksCgkJCQkgICAgICBnaW50
CSAgICB3aWR0aCwKCQkJCSAgICAgIGdpbnQJICAgIGhlaWdodCk7CnZvaWQJICAgICAgZ2RrX3dp
bmRvd19jb3B5X2FyZWEgICAoR2RrV2luZG93CSAgICp3aW5kb3csCgkJCQkgICAgICBHZGtHQwkg
ICAqZ2MsCgkJCQkgICAgICBnaW50CSAgICB4LAoJCQkJICAgICAgZ2ludAkgICAgeSwKCQkJCSAg
ICAgIEdka1dpbmRvdwkgICAqc291cmNlX3dpbmRvdywKCQkJCSAgICAgIGdpbnQJICAgIHNvdXJj
ZV94LAoJCQkJICAgICAgZ2ludAkgICAgc291cmNlX3ksCgkJCQkgICAgICBnaW50CSAgICB3aWR0
aCwKCQkJCSAgICAgIGdpbnQJICAgIGhlaWdodCk7CnZvaWQJICAgICAgZ2RrX3dpbmRvd19yYWlz
ZQkgICAgIChHZGtXaW5kb3cJICAgKndpbmRvdyk7CnZvaWQJICAgICAgZ2RrX3dpbmRvd19sb3dl
cgkgICAgIChHZGtXaW5kb3cJICAgKndpbmRvdyk7Cgp2b2lkCSAgICAgIGdka193aW5kb3dfc2V0
X3VzZXJfZGF0YQkgKEdka1dpbmRvdwkgICp3aW5kb3csCgkJCQkJICBncG9pbnRlcgkgICB1c2Vy
X2RhdGEpOwp2b2lkCSAgICAgIGdka193aW5kb3dfc2V0X292ZXJyaWRlX3JlZGlyZWN0KEdka1dp
bmRvdyAgKndpbmRvdywKCQkJCQkgICAgICAgZ2Jvb2xlYW4gb3ZlcnJpZGVfcmVkaXJlY3QpOwoK
dm9pZAkgICAgICBnZGtfd2luZG93X2FkZF9maWx0ZXIJKEdka1dpbmRvdyAgICAgKndpbmRvdywK
CQkJCQkgR2RrRmlsdGVyRnVuYwlmdW5jdGlvbiwKCQkJCQkgZ3BvaW50ZXIJZGF0YSk7CnZvaWQJ
ICAgICAgZ2RrX3dpbmRvd19yZW1vdmVfZmlsdGVyCShHZGtXaW5kb3cgICAgICp3aW5kb3csCgkJ
CQkJIEdka0ZpbHRlckZ1bmMJZnVuY3Rpb24sCgkJCQkJIGdwb2ludGVyCWRhdGEpOwoKIAoKCgoK
CnZvaWQgZ2RrX3dpbmRvd19zaGFwZV9jb21iaW5lX21hc2sgKEdka1dpbmRvdwkgICAgKndpbmRv
dywKCQkJCSAgICBHZGtCaXRtYXAJICAgICpzaGFwZV9tYXNrLAoJCQkJICAgIGdpbnQJICAgICBv
ZmZzZXRfeCwKCQkJCSAgICBnaW50CSAgICAgb2Zmc2V0X3kpOwogCgoKCgoKCnZvaWQgZ2RrX3dp
bmRvd19zZXRfY2hpbGRfc2hhcGVzIChHZGtXaW5kb3cgKndpbmRvdyk7CgogCgoKCgoKCnZvaWQg
Z2RrX3dpbmRvd19tZXJnZV9jaGlsZF9zaGFwZXMgKEdka1dpbmRvdyAqd2luZG93KTsKCiAKCgoK
CgpnYm9vbGVhbiBnZGtfd2luZG93X2lzX3Zpc2libGUgICAgIChHZGtXaW5kb3cgKndpbmRvdyk7
Cmdib29sZWFuIGdka193aW5kb3dfaXNfdmlld2FibGUgICAgKEdka1dpbmRvdyAqd2luZG93KTsK
CiAKCgpnYm9vbGVhbiBnZGtfd2luZG93X3NldF9zdGF0aWNfZ3Jhdml0aWVzIChHZGtXaW5kb3cg
KndpbmRvdywKCQkJCQkgIGdib29sZWFuICAgdXNlX3N0YXRpYyk7ICAgCiAKCgoKdm9pZCBnZGtf
YWRkX2NsaWVudF9tZXNzYWdlX2ZpbHRlciAoR2RrQXRvbSAgICAgICBtZXNzYWdlX3R5cGUsCgkJ
CQkgICAgR2RrRmlsdGVyRnVuYyBmdW5jLAoJCQkJICAgIGdwb2ludGVyICAgICAgZGF0YSk7Cgog
CgpHZGtEcmFnQ29udGV4dCAqIGdka19kcmFnX2NvbnRleHRfbmV3ICAgICAgICAodm9pZCk7CnZv
aWQgICAgICAgICAgICAgZ2RrX2RyYWdfY29udGV4dF9yZWYgICAgICAgIChHZGtEcmFnQ29udGV4
dCAqY29udGV4dCk7CnZvaWQgICAgICAgICAgICAgZ2RrX2RyYWdfY29udGV4dF91bnJlZiAgICAg
IChHZGtEcmFnQ29udGV4dCAqY29udGV4dCk7CgogCgp2b2lkICAgICAgICAgICAgIGdka19kcmFn
X3N0YXR1cyAgICAgICAgKEdka0RyYWdDb250ZXh0ICAgKmNvbnRleHQsCgkJCQkgICAgICAgICBH
ZGtEcmFnQWN0aW9uICAgICBhY3Rpb24sCgkJCQkJIGd1aW50MzIgICAgICAgICAgIHRpbWUpOwp2
b2lkICAgICAgICAgICAgIGdka19kcm9wX3JlcGx5ICAgICAgICAgKEdka0RyYWdDb250ZXh0ICAg
KmNvbnRleHQsCgkJCQkJIGdib29sZWFuICAgICAgICAgIG9rLAoJCQkJCSBndWludDMyICAgICAg
ICAgICB0aW1lKTsKdm9pZCAgICAgICAgICAgICBnZGtfZHJvcF9maW5pc2ggICAgICAgIChHZGtE
cmFnQ29udGV4dCAgICpjb250ZXh0LAoJCQkJCSBnYm9vbGVhbiAgICAgICAgICBzdWNjZXNzLAoJ
CQkJCSBndWludDMyICAgICAgICAgICB0aW1lKTsKR2RrQXRvbSAgICAgICAgICBnZGtfZHJhZ19n
ZXRfc2VsZWN0aW9uIChHZGtEcmFnQ29udGV4dCAgICpjb250ZXh0KTsKCiAKCkdka0RyYWdDb250
ZXh0ICogZ2RrX2RyYWdfYmVnaW4gICAgICAoR2RrV2luZG93ICAgICAgKndpbmRvdywKCQkJCSAg
ICAgIEdMaXN0ICAgICAgICAgICp0YXJnZXRzKTsKZ3VpbnQzMiAgICAgICAgIGdka19kcmFnX2dl
dF9wcm90b2NvbCAoZ3VpbnQzMiAgICAgICAgICB4aWQsCgkJCQkgICAgICAgR2RrRHJhZ1Byb3Rv
Y29sICpwcm90b2NvbCk7CnZvaWQgICAgICAgICAgICAgZ2RrX2RyYWdfZmluZF93aW5kb3cgKEdk
a0RyYWdDb250ZXh0ICAgKmNvbnRleHQsCgkJCQkgICAgICAgR2RrV2luZG93ICAgICAgICpkcmFn
X3dpbmRvdywKCQkJIAkgICAgICAgZ2ludCAgICAgICAgICAgICB4X3Jvb3QsCgkJCQkgICAgICAg
Z2ludCAgICAgICAgICAgICB5X3Jvb3QsCgkJCQkgICAgICAgR2RrV2luZG93ICAgICAgKipkZXN0
X3dpbmRvdywKCQkJCSAgICAgICBHZGtEcmFnUHJvdG9jb2wgKnByb3RvY29sKTsKZ2Jvb2xlYW4g
ICAgICAgIGdka19kcmFnX21vdGlvbiAgICAgIChHZGtEcmFnQ29udGV4dCAqY29udGV4dCwKCQkJ
CSAgICAgIEdka1dpbmRvdyAgICAgICpkZXN0X3dpbmRvdywKCQkJCSAgICAgIEdka0RyYWdQcm90
b2NvbCBwcm90b2NvbCwKCQkJCSAgICAgIGdpbnQgICAgICAgICAgICB4X3Jvb3QsIAoJCQkJICAg
ICAgZ2ludCAgICAgICAgICAgIHlfcm9vdCwKCQkJCSAgICAgIEdka0RyYWdBY3Rpb24gICBzdWdn
ZXN0ZWRfYWN0aW9uLAoJCQkJICAgICAgR2RrRHJhZ0FjdGlvbiAgIHBvc3NpYmxlX2FjdGlvbnMs
CgkJCQkgICAgICBndWludDMyICAgICAgICAgdGltZSk7CnZvaWQgICAgICAgICAgICBnZGtfZHJh
Z19kcm9wICAgICAgICAoR2RrRHJhZ0NvbnRleHQgKmNvbnRleHQsCgkJCQkgICAgICBndWludDMy
ICAgICAgICAgdGltZSk7CnZvaWQgICAgICAgICAgICBnZGtfZHJhZ19hYm9ydCAgICAgICAoR2Rr
RHJhZ0NvbnRleHQgKmNvbnRleHQsCgkJCQkgICAgICBndWludDMyICAgICAgICAgdGltZSk7Cgog
Cgp2b2lkCSAgICAgIGdka193aW5kb3dfc2V0X2hpbnRzCSAoR2RrV2luZG93CSAgKndpbmRvdywK
CQkJCQkgIGdpbnQJCSAgIHgsCgkJCQkJICBnaW50CQkgICB5LAoJCQkJCSAgZ2ludAkJICAgbWlu
X3dpZHRoLAoJCQkJCSAgZ2ludAkJICAgbWluX2hlaWdodCwKCQkJCQkgIGdpbnQJCSAgIG1heF93
aWR0aCwKCQkJCQkgIGdpbnQJCSAgIG1heF9oZWlnaHQsCgkJCQkJICBnaW50CQkgICBmbGFncyk7
CnZvaWQgICAgICAgICAgZ2RrX3dpbmRvd19zZXRfZ2VvbWV0cnlfaGludHMgKEdka1dpbmRvdyAg
ICAgICAgKndpbmRvdywKCQkJCQkgICAgIEdka0dlb21ldHJ5ICAgICAgKmdlb21ldHJ5LAoJCQkJ
CSAgICAgR2RrV2luZG93SGludHMgICAgZmxhZ3MpOwp2b2lkICAgICAgICAgIGdka19zZXRfc21f
Y2xpZW50X2lkICAgICAgICAgKGNvbnN0IGdjaGFyICpzbV9jbGllbnRfaWQpOwoKCnZvaWQJICAg
ICAgZ2RrX3dpbmRvd19zZXRfdGl0bGUJICAgKEdka1dpbmRvdwkgICp3aW5kb3csCgkJCQkJICAg
IGNvbnN0IGdjaGFyCSAgKnRpdGxlKTsKdm9pZCAgICAgICAgICBnZGtfd2luZG93X3NldF9yb2xl
ICAgICAgICAgIChHZGtXaW5kb3cgICAgICAgKndpbmRvdywKCQkJCQkgICAgY29uc3QgZ2NoYXIg
ICAgICpyb2xlKTsKdm9pZCAgICAgICAgICBnZGtfd2luZG93X3NldF90cmFuc2llbnRfZm9yIChH
ZGtXaW5kb3cgICAgICAgKndpbmRvdywgCgkJCQkJICAgIEdka1dpbmRvdyAgICAgICAqbGVhZGVy
KTsKdm9pZAkgICAgICBnZGtfd2luZG93X3NldF9iYWNrZ3JvdW5kCSAoR2RrV2luZG93CSAgKndp
bmRvdywKCQkJCQkgIEdka0NvbG9yCSAgKmNvbG9yKTsKdm9pZAkgICAgICBnZGtfd2luZG93X3Nl
dF9iYWNrX3BpeG1hcCAoR2RrV2luZG93CSAgKndpbmRvdywKCQkJCQkgIEdka1BpeG1hcAkgICpw
aXhtYXAsCgkJCQkJICBnYm9vbGVhbiAgICAgICAgIHBhcmVudF9yZWxhdGl2ZSk7CnZvaWQJICAg
ICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29yCSAoR2RrV2luZG93CSAgKndpbmRvdywKCQkJCQkgIEdk
a0N1cnNvcgkgICpjdXJzb3IpOwp2b2lkCSAgICAgIGdka193aW5kb3dfc2V0X2NvbG9ybWFwCSAo
R2RrV2luZG93CSAgKndpbmRvdywKCQkJCQkgIEdka0NvbG9ybWFwCSAgKmNvbG9ybWFwKTsKdm9p
ZAkgICAgICBnZGtfd2luZG93X2dldF91c2VyX2RhdGEJIChHZGtXaW5kb3cJICAqd2luZG93LAoJ
CQkJCSAgZ3BvaW50ZXIJICAqZGF0YSk7CnZvaWQJICAgICAgZ2RrX3dpbmRvd19nZXRfZ2VvbWV0
cnkJIChHZGtXaW5kb3cJICAqd2luZG93LAoJCQkJCSAgZ2ludAkJICAqeCwKCQkJCQkgIGdpbnQJ
CSAgKnksCgkJCQkJICBnaW50CQkgICp3aWR0aCwKCQkJCQkgIGdpbnQJCSAgKmhlaWdodCwKCQkJ
CQkgIGdpbnQJCSAgKmRlcHRoKTsKdm9pZAkgICAgICBnZGtfd2luZG93X2dldF9wb3NpdGlvbgkg
KEdka1dpbmRvdwkgICp3aW5kb3csCgkJCQkJICBnaW50CQkgICp4LAoJCQkJCSAgZ2ludAkJICAq
eSk7CnZvaWQJICAgICAgZ2RrX3dpbmRvd19nZXRfc2l6ZQkgKEdka1dpbmRvdwkgICp3aW5kb3cs
CgkJCQkJICBnaW50CQkgICp3aWR0aCwKCQkJCQkgIGdpbnQJCSAgKmhlaWdodCk7Ckdka1Zpc3Vh
bCogICAgZ2RrX3dpbmRvd19nZXRfdmlzdWFsCSAoR2RrV2luZG93CSAgKndpbmRvdyk7Ckdka0Nv
bG9ybWFwKiAgZ2RrX3dpbmRvd19nZXRfY29sb3JtYXAJIChHZGtXaW5kb3cJICAqd2luZG93KTsK
R2RrV2luZG93VHlwZSBnZGtfd2luZG93X2dldF90eXBlCSAoR2RrV2luZG93CSAgKndpbmRvdyk7
CmdpbnQJICAgICAgZ2RrX3dpbmRvd19nZXRfb3JpZ2luCSAoR2RrV2luZG93CSAgKndpbmRvdywK
CQkJCQkgIGdpbnQJCSAgKngsCgkJCQkJICBnaW50CQkgICp5KTsKZ2Jvb2xlYW4gICAgICBnZGtf
d2luZG93X2dldF9kZXNrcmVsYXRpdmVfb3JpZ2luIChHZGtXaW5kb3cJICAqd2luZG93LAoJCQkJ
CSAgZ2ludAkJICAqeCwKCQkJCQkgIGdpbnQJCSAgKnkpOwp2b2lkCSAgICAgIGdka193aW5kb3df
Z2V0X3Jvb3Rfb3JpZ2luIChHZGtXaW5kb3cJICAqd2luZG93LAoJCQkJCSAgZ2ludAkJICAqeCwK
CQkJCQkgIGdpbnQJCSAgKnkpOwpHZGtXaW5kb3cqICAgIGdka193aW5kb3dfZ2V0X3BvaW50ZXIJ
IChHZGtXaW5kb3cJICAqd2luZG93LAoJCQkJCSAgZ2ludAkJICAqeCwKCQkJCQkgIGdpbnQJCSAg
KnksCgkJCQkJICBHZGtNb2RpZmllclR5cGUgKm1hc2spOwpHZGtXaW5kb3cqICAgIGdka193aW5k
b3dfZ2V0X3BhcmVudAkgKEdka1dpbmRvdwkgICp3aW5kb3cpOwpHZGtXaW5kb3cqICAgIGdka193
aW5kb3dfZ2V0X3RvcGxldmVsCSAoR2RrV2luZG93CSAgKndpbmRvdyk7CkdMaXN0KgkgICAgICBn
ZGtfd2luZG93X2dldF9jaGlsZHJlbgkgKEdka1dpbmRvdwkgICp3aW5kb3cpOwpHZGtFdmVudE1h
c2sgIGdka193aW5kb3dfZ2V0X2V2ZW50cwkgKEdka1dpbmRvdwkgICp3aW5kb3cpOwp2b2lkCSAg
ICAgIGdka193aW5kb3dfc2V0X2V2ZW50cwkgKEdka1dpbmRvdwkgICp3aW5kb3csCgkJCQkJICBH
ZGtFdmVudE1hc2sJICAgZXZlbnRfbWFzayk7Cgp2b2lkCSAgICAgIGdka193aW5kb3dfc2V0X2lj
b24JIChHZGtXaW5kb3cJICAqd2luZG93LCAKCQkJCQkgIEdka1dpbmRvdwkgICppY29uX3dpbmRv
dywKCQkJCQkgIEdka1BpeG1hcAkgICpwaXhtYXAsCgkJCQkJICBHZGtCaXRtYXAJICAqbWFzayk7
CnZvaWQJICAgICAgZ2RrX3dpbmRvd19zZXRfaWNvbl9uYW1lCSAoR2RrV2luZG93CSAgKndpbmRv
dywgCgkJCQkJICBjb25zdCBnY2hhcgkgICpuYW1lKTsKdm9pZAkgICAgICBnZGtfd2luZG93X3Nl
dF9ncm91cAkgKEdka1dpbmRvdwkgICp3aW5kb3csIAoJCQkJCSAgR2RrV2luZG93CSAgKmxlYWRl
cik7CnZvaWQJICAgICAgZ2RrX3dpbmRvd19zZXRfZGVjb3JhdGlvbnMgKEdka1dpbmRvdwkgICp3
aW5kb3csCgkJCQkJICBHZGtXTURlY29yYXRpb24gIGRlY29yYXRpb25zKTsKdm9pZAkgICAgICBn
ZGtfd2luZG93X3NldF9mdW5jdGlvbnMJIChHZGtXaW5kb3cJICAqd2luZG93LAoJCQkJCSAgR2Rr
V01GdW5jdGlvbgkgICBmdW5jdGlvbnMpOwpHTGlzdCAqICAgICAgIGdka193aW5kb3dfZ2V0X3Rv
cGxldmVscyAgICh2b2lkKTsKCnZvaWQgICAgICAgICAgZ2RrX3dpbmRvd19yZWdpc3Rlcl9kbmQg
ICAgKEdka1dpbmRvdyAgICAgICAqd2luZG93KTsKCnZvaWQgICAgICAgICAgZ2RrX2RyYXdhYmxl
X3NldF9kYXRhICAgICAgKEdka0RyYXdhYmxlICAgICAqZHJhd2FibGUsCgkJCQkJICBjb25zdCBn
Y2hhciAgICAgKmtleSwKCQkJCQkgIGdwb2ludGVyCSAgIGRhdGEsCgkJCQkJICBHRGVzdHJveU5v
dGlmeSAgIGRlc3Ryb3lfZnVuYyk7CgkJCQkJICAKCiAKCkdka0N1cnNvciogZ2RrX2N1cnNvcl9u
ZXcJCSAoR2RrQ3Vyc29yVHlwZQkgIGN1cnNvcl90eXBlKTsKR2RrQ3Vyc29yKiBnZGtfY3Vyc29y
X25ld19mcm9tX3BpeG1hcAkgKEdka1BpeG1hcAkgICpzb3VyY2UsCgkJCQkJICBHZGtQaXhtYXAJ
ICAqbWFzaywKCQkJCQkgIEdka0NvbG9yCSAgKmZnLAoJCQkJCSAgR2RrQ29sb3IJICAqYmcsCgkJ
CQkJICBnaW50CQkgICB4LAoJCQkJCSAgZ2ludAkJICAgeSk7CnZvaWQJICAgZ2RrX2N1cnNvcl9k
ZXN0cm95CQkgKEdka0N1cnNvcgkgKmN1cnNvcik7CgoKIAoKR2RrR0MqIGdka19nY19uZXcJCSAg
KEdka1dpbmRvdwkgICAgKndpbmRvdyk7Ckdka0dDKiBnZGtfZ2NfbmV3X3dpdGhfdmFsdWVzCSAg
KEdka1dpbmRvdwkgICAgKndpbmRvdywKCQkJCSAgIEdka0dDVmFsdWVzCSAgICAqdmFsdWVzLAoJ
CQkJICAgR2RrR0NWYWx1ZXNNYXNrICAgdmFsdWVzX21hc2spOwpHZGtHQyogZ2RrX2djX3JlZgkJ
ICAoR2RrR0MJICAgICpnYyk7CnZvaWQgICBnZGtfZ2NfdW5yZWYJCSAgKEdka0dDCSAgICAqZ2Mp
Owp2b2lkICAgZ2RrX2djX2Rlc3Ryb3kJCSAgKEdka0dDCSAgICAqZ2MpOwp2b2lkICAgZ2RrX2dj
X2dldF92YWx1ZXMJICAoR2RrR0MJICAgICpnYywKCQkJCSAgIEdka0dDVmFsdWVzCSAgICAqdmFs
dWVzKTsKdm9pZCAgIGdka19nY19zZXRfZm9yZWdyb3VuZAkgIChHZGtHQwkgICAgKmdjLAoJCQkJ
ICAgR2RrQ29sb3IJICAgICpjb2xvcik7CnZvaWQgICBnZGtfZ2Nfc2V0X2JhY2tncm91bmQJICAo
R2RrR0MJICAgICpnYywKCQkJCSAgIEdka0NvbG9yCSAgICAqY29sb3IpOwp2b2lkICAgZ2RrX2dj
X3NldF9mb250CQkgIChHZGtHQwkgICAgKmdjLAoJCQkJICAgR2RrRm9udAkgICAgKmZvbnQpOwp2
b2lkICAgZ2RrX2djX3NldF9mdW5jdGlvbgkgIChHZGtHQwkgICAgKmdjLAoJCQkJICAgR2RrRnVu
Y3Rpb24JICAgICBmdW5jdGlvbik7CnZvaWQgICBnZGtfZ2Nfc2V0X2ZpbGwJCSAgKEdka0dDCSAg
ICAqZ2MsCgkJCQkgICBHZGtGaWxsCSAgICAgZmlsbCk7CnZvaWQgICBnZGtfZ2Nfc2V0X3RpbGUJ
CSAgKEdka0dDCSAgICAqZ2MsCgkJCQkgICBHZGtQaXhtYXAJICAgICp0aWxlKTsKdm9pZCAgIGdk
a19nY19zZXRfc3RpcHBsZQkgIChHZGtHQwkgICAgKmdjLAoJCQkJICAgR2RrUGl4bWFwCSAgICAq
c3RpcHBsZSk7CnZvaWQgICBnZGtfZ2Nfc2V0X3RzX29yaWdpbgkgIChHZGtHQwkgICAgKmdjLAoJ
CQkJICAgZ2ludAkJICAgICB4LAoJCQkJICAgZ2ludAkJICAgICB5KTsKdm9pZCAgIGdka19nY19z
ZXRfY2xpcF9vcmlnaW4JICAoR2RrR0MJICAgICpnYywKCQkJCSAgIGdpbnQJCSAgICAgeCwKCQkJ
CSAgIGdpbnQJCSAgICAgeSk7CnZvaWQgICBnZGtfZ2Nfc2V0X2NsaXBfbWFzawkgIChHZGtHQwkg
ICAgKmdjLAoJCQkJICAgR2RrQml0bWFwCSAgICAqbWFzayk7CnZvaWQgICBnZGtfZ2Nfc2V0X2Ns
aXBfcmVjdGFuZ2xlICAoR2RrR0MJICAgICpnYywKCQkJCSAgIEdka1JlY3RhbmdsZQkgICAgKnJl
Y3RhbmdsZSk7CnZvaWQgICBnZGtfZ2Nfc2V0X2NsaXBfcmVnaW9uCSAgKEdka0dDCSAgICAqZ2Ms
CgkJCQkgICBHZGtSZWdpb24JICAgICpyZWdpb24pOwp2b2lkICAgZ2RrX2djX3NldF9zdWJ3aW5k
b3cJICAoR2RrR0MJICAgICpnYywKCQkJCSAgIEdka1N1YndpbmRvd01vZGUgIG1vZGUpOwp2b2lk
ICAgZ2RrX2djX3NldF9leHBvc3VyZXMJICAoR2RrR0MJICAgICpnYywKCQkJCSAgIGdib29sZWFu
ICAgICAgICAgIGV4cG9zdXJlcyk7CnZvaWQgICBnZGtfZ2Nfc2V0X2xpbmVfYXR0cmlidXRlcyAo
R2RrR0MJICAgICpnYywKCQkJCSAgIGdpbnQJCSAgICAgbGluZV93aWR0aCwKCQkJCSAgIEdka0xp
bmVTdHlsZQkgICAgIGxpbmVfc3R5bGUsCgkJCQkgICBHZGtDYXBTdHlsZQkgICAgIGNhcF9zdHls
ZSwKCQkJCSAgIEdka0pvaW5TdHlsZQkgICAgIGpvaW5fc3R5bGUpOwp2b2lkICAgZ2RrX2djX3Nl
dF9kYXNoZXMgICAgICAgICAgKEdka0dDICAgICAgICAgICAgKmdjLAoJCQkJICAgZ2ludAkgICAg
ICAgICAgICAgZGFzaF9vZmZzZXQsCgkJCQkgICBnaW50OCAgICAgICAgICAgICBkYXNoX2xpc3Rb
XSwKCQkJCSAgIGdpbnQgICAgICAgICAgICAgIG4pOwp2b2lkICAgZ2RrX2djX2NvcHkJCSAgKEdk
a0dDCSAgICAgKmRzdF9nYywKCQkJCSAgIEdka0dDCSAgICAgKnNyY19nYyk7CgoKIAoKR2RrUGl4
bWFwKiBnZGtfcGl4bWFwX25ldwkJKEdka1dpbmRvdyAgKndpbmRvdywKCQkJCQkgZ2ludAkgICAg
IHdpZHRoLAoJCQkJCSBnaW50CSAgICAgaGVpZ2h0LAoJCQkJCSBnaW50CSAgICAgZGVwdGgpOwpH
ZGtCaXRtYXAqIGdka19iaXRtYXBfY3JlYXRlX2Zyb21fZGF0YQkoR2RrV2luZG93ICAgKndpbmRv
dywKCQkJCQkgY29uc3QgZ2NoYXIgKmRhdGEsCgkJCQkJIGdpbnQJICAgICAgd2lkdGgsCgkJCQkJ
IGdpbnQJICAgICAgaGVpZ2h0KTsKR2RrUGl4bWFwKiBnZGtfcGl4bWFwX2NyZWF0ZV9mcm9tX2Rh
dGEJKEdka1dpbmRvdyAgICp3aW5kb3csCgkJCQkJIGNvbnN0IGdjaGFyICpkYXRhLAoJCQkJCSBn
aW50CSAgICAgIHdpZHRoLAoJCQkJCSBnaW50CSAgICAgIGhlaWdodCwKCQkJCQkgZ2ludAkgICAg
ICBkZXB0aCwKCQkJCQkgR2RrQ29sb3IgICAgKmZnLAoJCQkJCSBHZGtDb2xvciAgICAqYmcpOwpH
ZGtQaXhtYXAqIGdka19waXhtYXBfY3JlYXRlX2Zyb21feHBtCShHZGtXaW5kb3cgICp3aW5kb3cs
CgkJCQkJIEdka0JpdG1hcCAqKm1hc2ssCgkJCQkJIEdka0NvbG9yICAgKnRyYW5zcGFyZW50X2Nv
bG9yLAoJCQkJCSBjb25zdCBnY2hhciAqZmlsZW5hbWUpOwpHZGtQaXhtYXAqIGdka19waXhtYXBf
Y29sb3JtYXBfY3JlYXRlX2Zyb21feHBtICgKCQkJCQkgR2RrV2luZG93ICAgKndpbmRvdywKCQkJ
CQkgR2RrQ29sb3JtYXAgKmNvbG9ybWFwLAoJCQkJCSBHZGtCaXRtYXAgICoqbWFzaywKCQkJCQkg
R2RrQ29sb3IgICAgKnRyYW5zcGFyZW50X2NvbG9yLAoJCQkJCSBjb25zdCBnY2hhciAqZmlsZW5h
bWUpOwpHZGtQaXhtYXAqIGdka19waXhtYXBfY3JlYXRlX2Zyb21feHBtX2QgKEdka1dpbmRvdyAg
KndpbmRvdywKCQkJCQkgR2RrQml0bWFwICoqbWFzaywKCQkJCQkgR2RrQ29sb3IgICAqdHJhbnNw
YXJlbnRfY29sb3IsCgkJCQkJIGdjaGFyCSAgICoqZGF0YSk7Ckdka1BpeG1hcCogZ2RrX3BpeG1h
cF9jb2xvcm1hcF9jcmVhdGVfZnJvbV94cG1fZCAoCgkJCQkJIEdka1dpbmRvdyAgICp3aW5kb3cs
CgkJCQkJIEdka0NvbG9ybWFwICpjb2xvcm1hcCwKCQkJCQkgR2RrQml0bWFwICAqKm1hc2ssCgkJ
CQkJIEdka0NvbG9yICAgICp0cmFuc3BhcmVudF9jb2xvciwKCQkJCQkgZ2NoYXIgICAgICoqZGF0
YSk7Ckdka1BpeG1hcCAqZ2RrX3BpeG1hcF9yZWYJCShHZGtQaXhtYXAgICpwaXhtYXApOwp2b2lk
CSAgIGdka19waXhtYXBfdW5yZWYJCShHZGtQaXhtYXAgICpwaXhtYXApOwoKR2RrQml0bWFwICpn
ZGtfYml0bWFwX3JlZgkJKEdka0JpdG1hcCAgKnBpeG1hcCk7CnZvaWQJICAgZ2RrX2JpdG1hcF91
bnJlZgkJKEdka0JpdG1hcCAgKnBpeG1hcCk7CgoKIAoKR2RrSW1hZ2UqIGdka19pbWFnZV9uZXdf
Yml0bWFwKEdka1Zpc3VhbCAgICAgKnZpc3VhbCwKCQkJCWdwb2ludGVyICAgICAgZGF0YSwKCQkJ
CWdpbnQgICAgICAgICAgd2lkdGgsCgkJCQlnaW50ICAgICAgICAgIGhlaWdodCk7Ckdka0ltYWdl
KiAgZ2RrX2ltYWdlX25ldyAgICAgICAoR2RrSW1hZ2VUeXBlICB0eXBlLAoJCQkJR2RrVmlzdWFs
ICAgICp2aXN1YWwsCgkJCQlnaW50CSAgICAgIHdpZHRoLAoJCQkJZ2ludAkgICAgICBoZWlnaHQp
OwpHZGtJbWFnZSogIGdka19pbWFnZV9nZXQgICAgICAgKEdka1dpbmRvdyAgICAqd2luZG93LAoJ
CQkJZ2ludAkgICAgICB4LAoJCQkJZ2ludAkgICAgICB5LAoJCQkJZ2ludAkgICAgICB3aWR0aCwK
CQkJCWdpbnQJICAgICAgaGVpZ2h0KTsKdm9pZAkgICBnZGtfaW1hZ2VfcHV0X3BpeGVsIChHZGtJ
bWFnZSAgICAgKmltYWdlLAoJCQkJZ2ludAkgICAgICB4LAoJCQkJZ2ludAkgICAgICB5LAoJCQkJ
Z3VpbnQzMgkgICAgICBwaXhlbCk7Cmd1aW50MzIJICAgZ2RrX2ltYWdlX2dldF9waXhlbCAoR2Rr
SW1hZ2UgICAgICppbWFnZSwKCQkJCWdpbnQJICAgICAgeCwKCQkJCWdpbnQJICAgICAgeSk7CnZv
aWQJICAgZ2RrX2ltYWdlX2Rlc3Ryb3kgICAoR2RrSW1hZ2UgICAgICppbWFnZSk7CgoKIAoKR2Rr
Q29sb3JtYXAqIGdka19jb2xvcm1hcF9uZXcJICAgICAgICAgIChHZGtWaXN1YWwgICAgICAqdmlz
dWFsLAoJCQkJCSAgIGdib29sZWFuICAgICAgICBhbGxvY2F0ZSk7Ckdka0NvbG9ybWFwKiBnZGtf
Y29sb3JtYXBfcmVmCSAgICAgICAgICAoR2RrQ29sb3JtYXAgICAgKmNtYXApOwp2b2lkCSAgICAg
Z2RrX2NvbG9ybWFwX3VucmVmCSAgICAgICAgICAoR2RrQ29sb3JtYXAgICAgKmNtYXApOwoKR2Rr
Q29sb3JtYXAqIGdka19jb2xvcm1hcF9nZXRfc3lzdGVtCSAgKHZvaWQpOwpnaW50CSAgICAgZ2Rr
X2NvbG9ybWFwX2dldF9zeXN0ZW1fc2l6ZSAodm9pZCk7Cgp2b2lkICAgICAgICAgZ2RrX2NvbG9y
bWFwX2NoYW5nZSAgICAgICAgICAoR2RrQ29sb3JtYXAgICAgKmNvbG9ybWFwLAoJCQkJCSAgIGdp
bnQJCSAgIG5jb2xvcnMpOwoKZ2ludCAgICAgICAgIGdka19jb2xvcm1hcF9hbGxvY19jb2xvcnMg
ICAgKEdka0NvbG9ybWFwICAgICpjb2xvcm1hcCwKCQkJCQkgICBHZGtDb2xvciAgICAgICAqY29s
b3JzLAoJCQkJCSAgIGdpbnQgICAgICAgICAgICBuY29sb3JzLAoJCQkJCSAgIGdib29sZWFuICAg
ICAgICB3cml0ZWFibGUsCgkJCQkJICAgZ2Jvb2xlYW4gICAgICAgIGJlc3RfbWF0Y2gsCgkJCQkJ
ICAgZ2Jvb2xlYW4gICAgICAgKnN1Y2Nlc3MpOwpnYm9vbGVhbiAgICAgZ2RrX2NvbG9ybWFwX2Fs
bG9jX2NvbG9yICAgICAoR2RrQ29sb3JtYXAgICAgKmNvbG9ybWFwLAoJCQkJCSAgIEdka0NvbG9y
ICAgICAgICpjb2xvciwKCQkJCQkgICBnYm9vbGVhbiAgICAgICAgd3JpdGVhYmxlLAoJCQkJCSAg
IGdib29sZWFuICAgICAgICBiZXN0X21hdGNoKTsKdm9pZCAgICAgICAgIGdka19jb2xvcm1hcF9m
cmVlX2NvbG9ycyAgICAgKEdka0NvbG9ybWFwICAgICpjb2xvcm1hcCwKCQkJCQkgICBHZGtDb2xv
ciAgICAgICAqY29sb3JzLAoJCQkJCSAgIGdpbnQgICAgICAgICAgICBuY29sb3JzKTsKCkdka1Zp
c3VhbCogICBnZGtfY29sb3JtYXBfZ2V0X3Zpc3VhbCAgICAgIChHZGtDb2xvcm1hcCAgICAqY29s
b3JtYXApOwoKR2RrQ29sb3IqICAgIGdka19jb2xvcl9jb3B5ICAgICAgICAgICAgICAgKGNvbnN0
IEdka0NvbG9yICpjb2xvcik7CnZvaWQgICAgICAgICBnZGtfY29sb3JfZnJlZSAgICAgICAgICAg
ICAgIChHZGtDb2xvciAgICAgICAqY29sb3IpOwoKZ2Jvb2xlYW4gICAgIGdka19jb2xvcl9wYXJz
ZQkgICAgICAgICAgKGNvbnN0IGdjaGFyICAgICpzcGVjLAoJCQkJCSAgIEdka0NvbG9yICAgICAg
ICpjb2xvcik7Cmd1aW50ICAgICAgICBnZGtfY29sb3JfaGFzaCAgICAgICAgICAgICAgIChjb25z
dCBHZGtDb2xvciAqY29sb3JhLAoJCQkJCSAgIGNvbnN0IEdka0NvbG9yICpjb2xvcmIpOwpnYm9v
bGVhbiAgICAgZ2RrX2NvbG9yX2VxdWFsCSAgICAgICAgICAoY29uc3QgR2RrQ29sb3IgKmNvbG9y
YSwKCQkJCQkgICBjb25zdCBHZGtDb2xvciAqY29sb3JiKTsKCgogCnZvaWQgICAgIGdka19jb2xv
cnNfc3RvcmUgKEdka0NvbG9ybWFwCSpjb2xvcm1hcCwKCQkJICAgR2RrQ29sb3IJKmNvbG9ycywK
CQkJICAgZ2ludAkJIG5jb2xvcnMpOwpnYm9vbGVhbiBnZGtfY29sb3JzX2FsbG9jIChHZGtDb2xv
cm1hcAkqY29sb3JtYXAsCgkJCSAgIGdib29sZWFuICAgICAgY29udGlndW91cywKCQkJICAgZ3Vs
b25nCSpwbGFuZXMsCgkJCSAgIGdpbnQJCSBucGxhbmVzLAoJCQkgICBndWxvbmcJKnBpeGVscywK
CQkJICAgZ2ludAkJIG5waXhlbHMpOwp2b2lkICAgICBnZGtfY29sb3JzX2ZyZWUgIChHZGtDb2xv
cm1hcAkqY29sb3JtYXAsCgkJCSAgIGd1bG9uZwkqcGl4ZWxzLAoJCQkgICBnaW50CQkgbnBpeGVs
cywKCQkJICAgZ3Vsb25nCSBwbGFuZXMpOwpnYm9vbGVhbiBnZGtfY29sb3Jfd2hpdGUgIChHZGtD
b2xvcm1hcAkqY29sb3JtYXAsCgkJCSAgIEdka0NvbG9yCSpjb2xvcik7Cmdib29sZWFuIGdka19j
b2xvcl9ibGFjayAgKEdka0NvbG9ybWFwCSpjb2xvcm1hcCwKCQkJICAgR2RrQ29sb3IJKmNvbG9y
KTsKZ2Jvb2xlYW4gZ2RrX2NvbG9yX2FsbG9jICAoR2RrQ29sb3JtYXAJKmNvbG9ybWFwLAoJCQkg
ICBHZGtDb2xvcgkqY29sb3IpOwpnYm9vbGVhbiBnZGtfY29sb3JfY2hhbmdlIChHZGtDb2xvcm1h
cAkqY29sb3JtYXAsCgkJCSAgIEdka0NvbG9yCSpjb2xvcik7CgoKIAoKR2RrRm9udCogZ2RrX2Zv
bnRfbG9hZAkgICAgKGNvbnN0IGdjaGFyICAgICpmb250X25hbWUpOwpHZGtGb250KiBnZGtfZm9u
dHNldF9sb2FkICAgKGNvbnN0IGdjaGFyICAgICpmb250c2V0X25hbWUpOwpHZGtGb250KiBnZGtf
Zm9udF9yZWYJICAgIChHZGtGb250ICAgICAgICAqZm9udCk7CnZvaWQJIGdka19mb250X3VucmVm
CSAgICAoR2RrRm9udCAgICAgICAgKmZvbnQpOwpnaW50CSBnZGtfZm9udF9pZAkgICAgKGNvbnN0
IEdka0ZvbnQgICpmb250KTsKZ2Jvb2xlYW4gZ2RrX2ZvbnRfZXF1YWwJICAgIChjb25zdCBHZGtG
b250ICAqZm9udGEsCgkJCSAgICAgY29uc3QgR2RrRm9udCAgKmZvbnRiKTsKZ2ludAkgZ2RrX3N0
cmluZ193aWR0aCAgIChHZGtGb250ICAgICAgICAqZm9udCwKCQkJICAgICBjb25zdCBnY2hhciAg
ICAqc3RyaW5nKTsKZ2ludAkgZ2RrX3RleHRfd2lkdGgJICAgIChHZGtGb250ICAgICAgICAqZm9u
dCwKCQkJICAgICBjb25zdCBnY2hhciAgICAqdGV4dCwKCQkJICAgICBnaW50ICAgICAgICAgICAg
dGV4dF9sZW5ndGgpOwpnaW50CSBnZGtfdGV4dF93aWR0aF93YyAgKEdka0ZvbnQgICAgICAgICpm
b250LAoJCQkgICAgIGNvbnN0IEdka1dDaGFyICp0ZXh0LAoJCQkgICAgIGdpbnQgICAgICAgICAg
ICB0ZXh0X2xlbmd0aCk7CmdpbnQJIGdka19jaGFyX3dpZHRoCSAgICAoR2RrRm9udCAgICAgICAg
KmZvbnQsCgkJCSAgICAgZ2NoYXIgICAgICAgICAgIGNoYXJhY3Rlcik7CmdpbnQJIGdka19jaGFy
X3dpZHRoX3djICAoR2RrRm9udCAgICAgICAgKmZvbnQsCgkJCSAgICAgR2RrV0NoYXIgICAgICAg
IGNoYXJhY3Rlcik7CmdpbnQJIGdka19zdHJpbmdfbWVhc3VyZSAoR2RrRm9udCAgICAgICAgKmZv
bnQsCgkJCSAgICAgY29uc3QgZ2NoYXIgICAgKnN0cmluZyk7CmdpbnQJIGdka190ZXh0X21lYXN1
cmUgICAoR2RrRm9udCAgICAgICAgKmZvbnQsCgkJCSAgICAgY29uc3QgZ2NoYXIgICAgKnRleHQs
CgkJCSAgICAgZ2ludCAgICAgICAgICAgIHRleHRfbGVuZ3RoKTsKZ2ludAkgZ2RrX2NoYXJfbWVh
c3VyZSAgIChHZGtGb250ICAgICAgICAqZm9udCwKCQkJICAgICBnY2hhciAgICAgICAgICAgY2hh
cmFjdGVyKTsKZ2ludAkgZ2RrX3N0cmluZ19oZWlnaHQgIChHZGtGb250ICAgICAgICAqZm9udCwK
CQkJICAgICBjb25zdCBnY2hhciAgICAqc3RyaW5nKTsKZ2ludAkgZ2RrX3RleHRfaGVpZ2h0ICAg
IChHZGtGb250ICAgICAgICAqZm9udCwKCQkJICAgICBjb25zdCBnY2hhciAgICAqdGV4dCwKCQkJ
ICAgICBnaW50ICAgICAgICAgICAgdGV4dF9sZW5ndGgpOwpnaW50CSBnZGtfY2hhcl9oZWlnaHQg
ICAgKEdka0ZvbnQgICAgICAgICpmb250LAoJCQkgICAgIGdjaGFyICAgICAgICAgICBjaGFyYWN0
ZXIpOwoKdm9pZCAgICAgZ2RrX3RleHRfZXh0ZW50cyAgIChHZGtGb250ICAgICAqZm9udCwKCQkJ
ICAgICBjb25zdCBnY2hhciAqdGV4dCwKCQkJICAgICBnaW50ICAgICAgICAgdGV4dF9sZW5ndGgs
CgkJCSAgICAgZ2ludCAgICAgICAgKmxiZWFyaW5nLAoJCQkgICAgIGdpbnQgICAgICAgICpyYmVh
cmluZywKCQkJICAgICBnaW50ICAgICAgICAqd2lkdGgsCgkJCSAgICAgZ2ludCAgICAgICAgKmFz
Y2VudCwKCQkJICAgICBnaW50ICAgICAgICAqZGVzY2VudCk7CnZvaWQgICAgZ2RrX3RleHRfZXh0
ZW50c193YyAoR2RrRm9udCAgICAgICAgKmZvbnQsCgkJCSAgICAgY29uc3QgR2RrV0NoYXIgKnRl
eHQsCgkJCSAgICAgZ2ludCAgICAgICAgICAgIHRleHRfbGVuZ3RoLAoJCQkgICAgIGdpbnQgICAg
ICAgICAgICpsYmVhcmluZywKCQkJICAgICBnaW50ICAgICAgICAgICAqcmJlYXJpbmcsCgkJCSAg
ICAgZ2ludCAgICAgICAgICAgKndpZHRoLAoJCQkgICAgIGdpbnQgICAgICAgICAgICphc2NlbnQs
CgkJCSAgICAgZ2ludCAgICAgICAgICAgKmRlc2NlbnQpOwp2b2lkICAgICBnZGtfc3RyaW5nX2V4
dGVudHMgKEdka0ZvbnQgICAgICpmb250LAoJCQkgICAgIGNvbnN0IGdjaGFyICpzdHJpbmcsCgkJ
CSAgICAgZ2ludCAgICAgICAgKmxiZWFyaW5nLAoJCQkgICAgIGdpbnQgICAgICAgICpyYmVhcmlu
ZywKCQkJICAgICBnaW50ICAgICAgICAqd2lkdGgsCgkJCSAgICAgZ2ludCAgICAgICAgKmFzY2Vu
dCwKCQkJICAgICBnaW50ICAgICAgICAqZGVzY2VudCk7CgogCgp2b2lkIGdka19kcmF3X3BvaW50
CSAoR2RrRHJhd2FibGUgICpkcmF3YWJsZSwKCQkJICBHZGtHQwkgICAgICAgKmdjLAoJCQkgIGdp
bnQJCXgsCgkJCSAgZ2ludAkJeSk7CnZvaWQgZ2RrX2RyYXdfbGluZQkgKEdka0RyYXdhYmxlICAq
ZHJhd2FibGUsCgkJCSAgR2RrR0MJICAgICAgICpnYywKCQkJICBnaW50CQl4MSwKCQkJICBnaW50
CQl5MSwKCQkJICBnaW50CQl4MiwKCQkJICBnaW50CQl5Mik7CnZvaWQgZ2RrX2RyYXdfcmVjdGFu
Z2xlCSAoR2RrRHJhd2FibGUgICpkcmF3YWJsZSwKCQkJICBHZGtHQwkgICAgICAgKmdjLAoJCQkg
IGdpbnQJCWZpbGxlZCwKCQkJICBnaW50CQl4LAoJCQkgIGdpbnQJCXksCgkJCSAgZ2ludAkJd2lk
dGgsCgkJCSAgZ2ludAkJaGVpZ2h0KTsKdm9pZCBnZGtfZHJhd19hcmMJIChHZGtEcmF3YWJsZSAg
KmRyYXdhYmxlLAoJCQkgIEdka0dDCSAgICAgICAqZ2MsCgkJCSAgZ2ludAkJZmlsbGVkLAoJCQkg
IGdpbnQJCXgsCgkJCSAgZ2ludAkJeSwKCQkJICBnaW50CQl3aWR0aCwKCQkJICBnaW50CQloZWln
aHQsCgkJCSAgZ2ludAkJYW5nbGUxLAoJCQkgIGdpbnQJCWFuZ2xlMik7CnZvaWQgZ2RrX2RyYXdf
cG9seWdvbgkgKEdka0RyYXdhYmxlICAqZHJhd2FibGUsCgkJCSAgR2RrR0MJICAgICAgICpnYywK
CQkJICBnaW50CQlmaWxsZWQsCgkJCSAgR2RrUG9pbnQgICAgICpwb2ludHMsCgkJCSAgZ2ludAkJ
bnBvaW50cyk7CnZvaWQgZ2RrX2RyYXdfc3RyaW5nCSAoR2RrRHJhd2FibGUgICpkcmF3YWJsZSwK
CQkJICBHZGtGb250ICAgICAgKmZvbnQsCgkJCSAgR2RrR0MJICAgICAgICpnYywKCQkJICBnaW50
CQl4LAoJCQkgIGdpbnQJCXksCgkJCSAgY29uc3QgZ2NoYXIgICpzdHJpbmcpOwp2b2lkIGdka19k
cmF3X3RleHQJIChHZGtEcmF3YWJsZSAgKmRyYXdhYmxlLAoJCQkgIEdka0ZvbnQgICAgICAqZm9u
dCwKCQkJICBHZGtHQwkgICAgICAgKmdjLAoJCQkgIGdpbnQJCXgsCgkJCSAgZ2ludAkJeSwKCQkJ
ICBjb25zdCBnY2hhciAgKnRleHQsCgkJCSAgZ2ludAkJdGV4dF9sZW5ndGgpOwp2b2lkIGdka19k
cmF3X3RleHRfd2MJIChHZGtEcmF3YWJsZQkgKmRyYXdhYmxlLAoJCQkgIEdka0ZvbnQJICpmb250
LAoJCQkgIEdka0dDCQkgKmdjLAoJCQkgIGdpbnQJCSAgeCwKCQkJICBnaW50CQkgIHksCgkJCSAg
Y29uc3QgR2RrV0NoYXIgKnRleHQsCgkJCSAgZ2ludAkJICB0ZXh0X2xlbmd0aCk7CnZvaWQgZ2Rr
X2RyYXdfcGl4bWFwCSAoR2RrRHJhd2FibGUgICpkcmF3YWJsZSwKCQkJICBHZGtHQwkgICAgICAg
KmdjLAoJCQkgIEdka0RyYXdhYmxlICAqc3JjLAoJCQkgIGdpbnQJCXhzcmMsCgkJCSAgZ2ludAkJ
eXNyYywKCQkJICBnaW50CQl4ZGVzdCwKCQkJICBnaW50CQl5ZGVzdCwKCQkJICBnaW50CQl3aWR0
aCwKCQkJICBnaW50CQloZWlnaHQpOwp2b2lkIGdka19kcmF3X2JpdG1hcAkgKEdka0RyYXdhYmxl
ICAqZHJhd2FibGUsCgkJCSAgR2RrR0MJICAgICAgICpnYywKCQkJICBHZGtEcmF3YWJsZSAgKnNy
YywKCQkJICBnaW50CQl4c3JjLAoJCQkgIGdpbnQJCXlzcmMsCgkJCSAgZ2ludAkJeGRlc3QsCgkJ
CSAgZ2ludAkJeWRlc3QsCgkJCSAgZ2ludAkJd2lkdGgsCgkJCSAgZ2ludAkJaGVpZ2h0KTsKdm9p
ZCBnZGtfZHJhd19pbWFnZQkgKEdka0RyYXdhYmxlICAqZHJhd2FibGUsCgkJCSAgR2RrR0MJICAg
ICAgICpnYywKCQkJICBHZGtJbWFnZSAgICAgKmltYWdlLAoJCQkgIGdpbnQJCXhzcmMsCgkJCSAg
Z2ludAkJeXNyYywKCQkJICBnaW50CQl4ZGVzdCwKCQkJICBnaW50CQl5ZGVzdCwKCQkJICBnaW50
CQl3aWR0aCwKCQkJICBnaW50CQloZWlnaHQpOwp2b2lkIGdka19kcmF3X3BvaW50cwkgKEdka0Ry
YXdhYmxlICAqZHJhd2FibGUsCgkJCSAgR2RrR0MJICAgICAgICpnYywKCQkJICBHZGtQb2ludCAg
ICAgKnBvaW50cywKCQkJICBnaW50CQlucG9pbnRzKTsKdm9pZCBnZGtfZHJhd19zZWdtZW50cwkg
KEdka0RyYXdhYmxlICAqZHJhd2FibGUsCgkJCSAgR2RrR0MJICAgICAgICpnYywKCQkJICBHZGtT
ZWdtZW50ICAgKnNlZ3MsCgkJCSAgZ2ludAkJbnNlZ3MpOwp2b2lkIGdka19kcmF3X2xpbmVzICAg
ICAgKEdka0RyYXdhYmxlICAqZHJhd2FibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR2Rr
R0MgICAgICAgICpnYywKICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtQb2ludCAgICAgKnBv
aW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgIG5wb2ludHMpOwog
CgoKCiAKCmdib29sZWFuICAgZ2RrX3NlbGVjdGlvbl9vd25lcl9zZXQgKEdka1dpbmRvdwkgKm93
bmVyLAoJCQkJICAgIEdka0F0b20JICBzZWxlY3Rpb24sCgkJCQkgICAgZ3VpbnQzMgkgIHRpbWUs
CgkJCQkgICAgZ2ludAkgIHNlbmRfZXZlbnQpOwpHZGtXaW5kb3cqIGdka19zZWxlY3Rpb25fb3du
ZXJfZ2V0IChHZGtBdG9tCSAgc2VsZWN0aW9uKTsKdm9pZAkgICBnZGtfc2VsZWN0aW9uX2NvbnZl
cnQgICAoR2RrV2luZG93CSAqcmVxdWVzdG9yLAoJCQkJICAgIEdka0F0b20JICBzZWxlY3Rpb24s
CgkJCQkgICAgR2RrQXRvbQkgIHRhcmdldCwKCQkJCSAgICBndWludDMyCSAgdGltZSk7Cmdib29s
ZWFuICAgZ2RrX3NlbGVjdGlvbl9wcm9wZXJ0eV9nZXQgKEdka1dpbmRvdyAgKnJlcXVlc3RvciwK
CQkJCSAgICAgICBndWNoYXIJICoqZGF0YSwKCQkJCSAgICAgICBHZGtBdG9tCSAgKnByb3BfdHlw
ZSwKCQkJCSAgICAgICBnaW50CSAgKnByb3BfZm9ybWF0KTsKdm9pZAkgICBnZGtfc2VsZWN0aW9u
X3NlbmRfbm90aWZ5IChndWludDMyCSAgICByZXF1ZXN0b3IsCgkJCQkgICAgICBHZGtBdG9tCSAg
ICBzZWxlY3Rpb24sCgkJCQkgICAgICBHZGtBdG9tCSAgICB0YXJnZXQsCgkJCQkgICAgICBHZGtB
dG9tCSAgICBwcm9wZXJ0eSwKCQkJCSAgICAgIGd1aW50MzIJICAgIHRpbWUpOwoKZ2ludCAgICAg
ICBnZGtfdGV4dF9wcm9wZXJ0eV90b190ZXh0X2xpc3QgKEdka0F0b20gZW5jb2RpbmcsIGdpbnQg
Zm9ybWF0LAoJCQkJCSAgIGd1Y2hhciAqdGV4dCwgZ2ludCBsZW5ndGgsCgkJCQkJICAgZ2NoYXIg
KioqbGlzdCk7CnZvaWQJICAgZ2RrX2ZyZWVfdGV4dF9saXN0CQkgIChnY2hhciAqKmxpc3QpOwpn
aW50ICAgICAgIGdka19zdHJpbmdfdG9fY29tcG91bmRfdGV4dAkgIChjb25zdCBnY2hhciAqc3Ry
LAoJCQkJCSAgIEdka0F0b20gKmVuY29kaW5nLCBnaW50ICpmb3JtYXQsCgkJCQkJICAgZ3VjaGFy
ICoqY3RleHQsIGdpbnQgKmxlbmd0aCk7CnZvaWQJICAgZ2RrX2ZyZWVfY29tcG91bmRfdGV4dAkg
IChndWNoYXIgKmN0ZXh0KTsKCiAKCkdka0F0b20gIGdka19hdG9tX2ludGVybiAgICAgKGNvbnN0
IGdjaGFyICAqYXRvbV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAg
ICAgICAgIG9ubHlfaWZfZXhpc3RzKTsKZ2NoYXIqICAgZ2RrX2F0b21fbmFtZSAgICAgICAoR2Rr
QXRvbSAgICAgICBhdG9tKTsKZ2Jvb2xlYW4gZ2RrX3Byb3BlcnR5X2dldCAgICAoR2RrV2luZG93
ICAgICp3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0F0b20gICAgICAg
cHJvcGVydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0F0b20gICAgICAgdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vsb25nICAgICAgICBvZmZzZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1bG9uZyAgICAgICAgbGVuZ3RoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgIHBkZWxldGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdka0F0b20gICAgICAqYWN0dWFsX3Byb3BlcnR5X3R5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAqYWN0dWFsX2Zvcm1hdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICphY3R1YWxfbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWNoYXIgICAgICAqKmRhdGEpOwp2b2lk
ICAgICBnZGtfcHJvcGVydHlfY2hhbmdlIChHZGtXaW5kb3cgICAgKndpbmRvdywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2RrQXRvbSAgICAgICBwcm9wZXJ0eSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2RrQXRvbSAgICAgICB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnaW50ICAgICAgICAgIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2RrUHJvcE1vZGUgICBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
dWNoYXIgICAgICAgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAg
ICAgICAgbmVsZW1lbnRzKTsKdm9pZCAgICAgZ2RrX3Byb3BlcnR5X2RlbGV0ZSAoR2RrV2luZG93
ICAgICp3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0F0b20gICAgICAg
cHJvcGVydHkpOwoKCgogCgpnYm9vbGVhbiBnZGtfcmVjdGFuZ2xlX2ludGVyc2VjdCAoR2RrUmVj
dGFuZ2xlICpzcmMxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFu
Z2xlICpzcmMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xl
ICpkZXN0KTsKdm9pZCAgICAgZ2RrX3JlY3RhbmdsZV91bmlvbiAgICAgKEdka1JlY3RhbmdsZSAq
c3JjMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSAqc3Jj
MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSAqZGVzdCk7
CgogCgp2b2lkICAgICAgICAgIGdka19pbnB1dF9pbml0ICAgICAgICAgICAgICAgICAodm9pZCk7
CnZvaWQgICAgICAgICAgZ2RrX2lucHV0X2V4aXQgICAgICAgICAgICAgICAgICh2b2lkKTsKR0xp
c3QgKiAgICAgICBnZGtfaW5wdXRfbGlzdF9kZXZpY2VzICAgICAgICAgKHZvaWQpOwp2b2lkICAg
ICAgICAgIGdka19pbnB1dF9zZXRfZXh0ZW5zaW9uX2V2ZW50cyAoR2RrV2luZG93ICAgICAgICAq
d2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2lu
dCAgICAgICAgICAgICAgbWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdka0V4dGVuc2lvbk1vZGUgIG1vZGUpOwp2b2lkICAgICAgICAgIGdka19pbnB1
dF9zZXRfc291cmNlICAgICAgICAgICAoZ3VpbnQzMiAgICAgICAgICAgZGV2aWNlaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtJbnB1dFNvdXJjZSAg
ICBzb3VyY2UpOwpnYm9vbGVhbiAgICAgIGdka19pbnB1dF9zZXRfbW9kZSAgICAgICAgICAgICAo
Z3VpbnQzMiAgICAgICAgICAgZGV2aWNlaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZGtJbnB1dE1vZGUgICAgICBtb2RlKTsKdm9pZCAgICAgICAgICBn
ZGtfaW5wdXRfc2V0X2F4ZXMgICAgICAgICAgICAgKGd1aW50MzIgICAgICAgICAgIGRldmljZWlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrQXhpc1Vz
ZSAgICAgICAqYXhlcyk7CnZvaWQgICAgICAgICAgZ2RrX2lucHV0X3NldF9rZXkgICAgICAgICAg
ICAgIChndWludDMyICAgICAgICAgICBkZXZpY2VpZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgIGluZGV4LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAga2V5
dmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrTW9k
aWZpZXJUeXBlICAgbW9kaWZpZXJzKTsKdm9pZCAgICAgICAgICBnZGtfaW5wdXRfd2luZG93X2dl
dF9wb2ludGVyICAgKEdka1dpbmRvdyAgICAgICAgKndpbmRvdywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICAgICAgIGRldmljZWlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAg
ICAgICAqeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdk
b3VibGUgICAgICAgICAgKnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnZG91YmxlICAgICAgICAgICpwcmVzc3VyZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgICAgICAgICAgKnh0aWx0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAgICAq
eXRpbHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtN
b2RpZmllclR5cGUgICptYXNrKTsKR2RrVGltZUNvb3JkICpnZGtfaW5wdXRfbW90aW9uX2V2ZW50
cyAgICAgICAgKEdka1dpbmRvdyAgICAgICAgKndpbmRvdywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICAgICAgIGRldmljZWlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAgICAgICAg
ICAgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
dWludDMyICAgICAgICAgICBzdG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAqbmV2ZW50c19yZXR1cm4pOwoKIAoKCmdib29s
ZWFuICAgICBnZGtfaW1fcmVhZHkJICAgKHZvaWQpOwoKdm9pZCAgICAgICAgIGdka19pbV9iZWdp
bgkgICAoR2RrSUMgICAgICAgICAgICAgICAqaWMsIAoJCQkJICAgIEdka1dpbmRvdyAgICAgICAg
ICAgKndpbmRvdyk7CnZvaWQgICAgICAgICBnZGtfaW1fZW5kCQkgICAodm9pZCk7Ckdka0lNU3R5
bGUgICBnZGtfaW1fZGVjaWRlX3N0eWxlICAgKEdka0lNU3R5bGUgICAgICAgICAgIHN1cHBvcnRl
ZF9zdHlsZSk7Ckdka0lNU3R5bGUgICBnZGtfaW1fc2V0X2Jlc3Rfc3R5bGUgKEdka0lNU3R5bGUg
ICAgICAgICAgIGJlc3RfYWxsb3dlZF9zdHlsZSk7CgpHZGtJQyogICAgICAgZ2RrX2ljX25ldwkJ
ICAgKEdka0lDQXR0ciAJCSphdHRyLAoJCQkJICAgIEdka0lDQXR0cmlidXRlc1R5cGUgbWFzayk7
CnZvaWQgICAgICAgICBnZGtfaWNfZGVzdHJveQkgICAoR2RrSUMgICAgICAgICAgICAgICAqaWMp
OwpHZGtJTVN0eWxlICAgZ2RrX2ljX2dldF9zdHlsZQkgICAoR2RrSUMgICAgICAgICAgICAgICAq
aWMpOwpHZGtFdmVudE1hc2sgZ2RrX2ljX2dldF9ldmVudHMgICAgIChHZGtJQyAgICAgICAgICAg
ICAgICppYyk7CgpHZGtJQ0F0dHIqICAgZ2RrX2ljX2F0dHJfbmV3ICAgICAgICh2b2lkKTsKdm9p
ZCAgICAgICAgIGdka19pY19hdHRyX2Rlc3Ryb3kgICAoR2RrSUNBdHRyICphdHRyKTsKCkdka0lD
QXR0cmlidXRlc1R5cGUgIGdka19pY19zZXRfYXR0ciAoR2RrSUMgICAgICAgICAgICAgICppYywg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0lDQXR0ciAgICAgICAg
ICAqYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtJQ0F0dHJp
YnV0ZXNUeXBlIG1hc2spOwpHZGtJQ0F0dHJpYnV0ZXNUeXBlICBnZGtfaWNfZ2V0X2F0dHIgKEdk
a0lDICAgICAgICAgICAgICAqaWMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdka0lDQXR0ciAgICAgICAgICAqYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZGtJQ0F0dHJpYnV0ZXNUeXBlIG1hc2spOwoKIAoKZ2NoYXIgICAgICpnZGtf
d2NzdG9tYnMgICAgICAgICAgKGNvbnN0IEdka1dDaGFyICAgKnNyYyk7CmdpbnQgICAgICAgZ2Rr
X21ic3Rvd2NzICAgICAgICAgIChHZGtXQ2hhciAgICAgICAgICpkZXN0LAoJCQkJICBjb25zdCBn
Y2hhciAgICAgICpzcmMsCgkJCQkgIGdpbnQgICAgICAgICAgICAgIGRlc3RfbWF4KTsKCgogCgpH
ZGtDb2xvckNvbnRleHQgKmdka19jb2xvcl9jb250ZXh0X25ldwkJCSAgKEdka1Zpc3VhbCAgICp2
aXN1YWwsCgkJCQkJCQkgICBHZGtDb2xvcm1hcCAqY29sb3JtYXApOwoKR2RrQ29sb3JDb250ZXh0
ICpnZGtfY29sb3JfY29udGV4dF9uZXdfbW9ubwkJICAoR2RrVmlzdWFsICAgKnZpc3VhbCwKCQkJ
CQkJCSAgIEdka0NvbG9ybWFwICpjb2xvcm1hcCk7Cgp2b2lkCQkgZ2RrX2NvbG9yX2NvbnRleHRf
ZnJlZQkJCSAgKEdka0NvbG9yQ29udGV4dCAqY2MpOwoKZ3Vsb25nCQkgZ2RrX2NvbG9yX2NvbnRl
eHRfZ2V0X3BpeGVsCQkgIChHZGtDb2xvckNvbnRleHQgKmNjLAoJCQkJCQkJICAgZ3VzaG9ydAkg
ICAgcmVkLAoJCQkJCQkJICAgZ3VzaG9ydAkgICAgZ3JlZW4sCgkJCQkJCQkgICBndXNob3J0CSAg
ICBibHVlLAoJCQkJCQkJICAgZ2ludAkJICAgKmZhaWxlZCk7CnZvaWQJCSBnZGtfY29sb3JfY29u
dGV4dF9nZXRfcGl4ZWxzCQkgIChHZGtDb2xvckNvbnRleHQgKmNjLAoJCQkJCQkJICAgZ3VzaG9y
dAkgICAqcmVkcywKCQkJCQkJCSAgIGd1c2hvcnQJICAgKmdyZWVucywKCQkJCQkJCSAgIGd1c2hv
cnQJICAgKmJsdWVzLAoJCQkJCQkJICAgZ2ludAkJICAgIG5jb2xvcnMsCgkJCQkJCQkgICBndWxv
bmcJICAgKmNvbG9ycywKCQkJCQkJCSAgIGdpbnQJCSAgICpuYWxsb2NhdGVkKTsKdm9pZAkJIGdk
a19jb2xvcl9jb250ZXh0X2dldF9waXhlbHNfaW5jcmVtZW50YWwgKEdka0NvbG9yQ29udGV4dCAq
Y2MsCgkJCQkJCQkgICBndXNob3J0CSAgICpyZWRzLAoJCQkJCQkJICAgZ3VzaG9ydAkgICAqZ3Jl
ZW5zLAoJCQkJCQkJICAgZ3VzaG9ydAkgICAqYmx1ZXMsCgkJCQkJCQkgICBnaW50CQkgICAgbmNv
bG9ycywKCQkJCQkJCSAgIGdpbnQJCSAgICp1c2VkLAoJCQkJCQkJICAgZ3Vsb25nCSAgICpjb2xv
cnMsCgkJCQkJCQkgICBnaW50CQkgICAqbmFsbG9jYXRlZCk7CgpnaW50CQkgZ2RrX2NvbG9yX2Nv
bnRleHRfcXVlcnlfY29sb3IJCSAgKEdka0NvbG9yQ29udGV4dCAqY2MsCgkJCQkJCQkgICBHZGtD
b2xvcgkgICAqY29sb3IpOwpnaW50CQkgZ2RrX2NvbG9yX2NvbnRleHRfcXVlcnlfY29sb3JzCQkg
IChHZGtDb2xvckNvbnRleHQgKmNjLAoJCQkJCQkJICAgR2RrQ29sb3IJICAgKmNvbG9ycywKCQkJ
CQkJCSAgIGdpbnQJCSAgICBudW1fY29sb3JzKTsKCmdpbnQJCSBnZGtfY29sb3JfY29udGV4dF9h
ZGRfcGFsZXR0ZQkJICAoR2RrQ29sb3JDb250ZXh0ICpjYywKCQkJCQkJCSAgIEdka0NvbG9yCSAg
ICpwYWxldHRlLAoJCQkJCQkJICAgZ2ludAkJICAgIG51bV9wYWxldHRlKTsKCnZvaWQJCSBnZGtf
Y29sb3JfY29udGV4dF9pbml0X2RpdGhlcgkJICAoR2RrQ29sb3JDb250ZXh0ICpjYyk7CnZvaWQJ
CSBnZGtfY29sb3JfY29udGV4dF9mcmVlX2RpdGhlcgkJICAoR2RrQ29sb3JDb250ZXh0ICpjYyk7
CgpndWxvbmcJCSBnZGtfY29sb3JfY29udGV4dF9nZXRfcGl4ZWxfZnJvbV9wYWxldHRlIChHZGtD
b2xvckNvbnRleHQgKmNjLAoJCQkJCQkJICAgZ3VzaG9ydAkgICAqcmVkLAoJCQkJCQkJICAgZ3Vz
aG9ydAkgICAqZ3JlZW4sCgkJCQkJCQkgICBndXNob3J0CSAgICpibHVlLAoJCQkJCQkJICAgZ2lu
dAkJICAgKmZhaWxlZCk7Cmd1Y2hhcgkJIGdka19jb2xvcl9jb250ZXh0X2dldF9pbmRleF9mcm9t
X3BhbGV0dGUgKEdka0NvbG9yQ29udGV4dCAqY2MsCgkJCQkJCQkgICBnaW50CQkgICAqcmVkLAoJ
CQkJCQkJICAgZ2ludAkJICAgKmdyZWVuLAoJCQkJCQkJICAgZ2ludAkJICAgKmJsdWUsCgkJCQkJ
CQkgICBnaW50CQkgICAqZmFpbGVkKTsKIAoKCkdka1JlZ2lvbiogICAgIGdka19yZWdpb25fbmV3
CSAgICAodm9pZCk7CnZvaWQJICAgICAgIGdka19yZWdpb25fZGVzdHJveSAgIChHZGtSZWdpb24J
ICAgKnJlZ2lvbik7Cgp2b2lkCSAgICAgICBnZGtfcmVnaW9uX2dldF9jbGlwYm94KEdka1JlZ2lv
biAgICAqcmVnaW9uLAoJCQkJICAgICAgR2RrUmVjdGFuZ2xlICpyZWN0YW5nbGUpOwoKZ2Jvb2xl
YW4gICAgICAgZ2RrX3JlZ2lvbl9lbXB0eQkgICAgKEdka1JlZ2lvbgkgICAqcmVnaW9uKTsKZ2Jv
b2xlYW4gICAgICAgZ2RrX3JlZ2lvbl9lcXVhbAkgICAgKEdka1JlZ2lvbgkgICAqcmVnaW9uMSwK
CQkJCSAgICAgR2RrUmVnaW9uCSAgICpyZWdpb24yKTsKZ2Jvb2xlYW4gICAgICAgZ2RrX3JlZ2lv
bl9wb2ludF9pbiAgKEdka1JlZ2lvbgkgICAqcmVnaW9uLAoJCQkJICAgICBpbnQJCSAgIHgsCgkJ
CQkgICAgIGludAkJICAgeSk7Ckdka092ZXJsYXBUeXBlIGdka19yZWdpb25fcmVjdF9pbiAgIChH
ZGtSZWdpb24JICAgKnJlZ2lvbiwKCQkJCSAgICAgR2RrUmVjdGFuZ2xlICAqcmVjdCk7CgpHZGtS
ZWdpb24qICAgICBnZGtfcmVnaW9uX3BvbHlnb24gICAoR2RrUG9pbnQgICAgICAqcG9pbnRzLAoJ
CQkJICAgICBnaW50ICAgICAgICAgICBucG9pbnRzLAoJCQkJICAgICBHZGtGaWxsUnVsZSAgICBm
aWxsX3J1bGUpOwoKdm9pZAkgICAgICAgZ2RrX3JlZ2lvbl9vZmZzZXQgICAoR2RrUmVnaW9uCSAg
ICpyZWdpb24sCgkJCQkgICAgZ2ludAkgICBkeCwKCQkJCSAgICBnaW50CSAgIGR5KTsKdm9pZAkg
ICAgICAgZ2RrX3JlZ2lvbl9zaHJpbmsgICAoR2RrUmVnaW9uCSAgICpyZWdpb24sCgkJCQkgICAg
Z2ludAkgICBkeCwKCQkJCSAgICBnaW50CSAgIGR5KTsKCkdka1JlZ2lvbiogICAgZ2RrX3JlZ2lv
bl91bmlvbl93aXRoX3JlY3QgIChHZGtSZWdpb24JICAqcmVnaW9uLAoJCQkJCSAgIEdka1JlY3Rh
bmdsZQkgICpyZWN0KTsKR2RrUmVnaW9uKiAgICBnZGtfcmVnaW9uc19pbnRlcnNlY3QJICAoR2Rr
UmVnaW9uCSAgKnNvdXJjZTEsCgkJCQkJICAgR2RrUmVnaW9uCSAgKnNvdXJjZTIpOwpHZGtSZWdp
b24qICAgIGdka19yZWdpb25zX3VuaW9uCQkgIChHZGtSZWdpb24JICAqc291cmNlMSwKCQkJCQkg
ICBHZGtSZWdpb24JICAqc291cmNlMik7Ckdka1JlZ2lvbiogICAgZ2RrX3JlZ2lvbnNfc3VidHJh
Y3QJICAoR2RrUmVnaW9uCSAgKnNvdXJjZTEsCgkJCQkJICAgR2RrUmVnaW9uCSAgKnNvdXJjZTIp
OwpHZGtSZWdpb24qICAgIGdka19yZWdpb25zX3hvcgkJICAoR2RrUmVnaW9uCSAgKnNvdXJjZTEs
CgkJCQkJICAgR2RrUmVnaW9uCSAgKnNvdXJjZTIpOwoKIAp2b2lkICAgICBnZGtfZXZlbnRfc2Vu
ZF9jbGllbnRtZXNzYWdlX3RvYWxsIChHZGtFdmVudCAgICAqZXZlbnQpOwpnYm9vbGVhbiBnZGtf
ZXZlbnRfc2VuZF9jbGllbnRfbWVzc2FnZSAoR2RrRXZlbnQgICAgKmV2ZW50LAoJCQkJCWd1aW50
MzIgICAgICB4aWQpOwoKIAoKZ2NoYXIqICAgZ2RrX2tleXZhbF9uYW1lCQkgIChndWludAlrZXl2
YWwpOwpndWludCAgICBnZGtfa2V5dmFsX2Zyb21fbmFtZQkJICAoY29uc3QgZ2NoYXIgKmtleXZh
bF9uYW1lKTsKZ3VpbnQgICAgZ2RrX2tleXZhbF90b191cHBlcgkJICAoZ3VpbnQJa2V5dmFsKTsK
Z3VpbnQgICAgZ2RrX2tleXZhbF90b19sb3dlcgkJICAoZ3VpbnQJa2V5dmFsKTsKZ2Jvb2xlYW4g
Z2RrX2tleXZhbF9pc191cHBlcgkJICAoZ3VpbnQJa2V5dmFsKTsKZ2Jvb2xlYW4gZ2RrX2tleXZh
bF9pc19sb3dlcgkJICAoZ3VpbnQJa2V5dmFsKTsKCiAKCgpleHRlcm4gR011dGV4ICpnZGtfdGhy
ZWFkc19tdXRleDsKCnZvaWQgICAgIGdka190aHJlYWRzX2VudGVyICAgICAgICAgICAgICAgICh2
b2lkKTsKdm9pZCAgICAgZ2RrX3RocmVhZHNfbGVhdmUgICAgICAgICAgICAgICAgKHZvaWQpOwoK
CgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9nZGsvZ2RrcmdiLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCnR5cGVkZWYgc3RydWN0IF9H
ZGtSZ2JDbWFwIEdka1JnYkNtYXA7CgpzdHJ1Y3QgX0dka1JnYkNtYXAgewogIGd1aW50MzIgY29s
b3JzWzI1Nl07CiAgZ3VjaGFyIGx1dFsyNTZdOyAgCn07Cgp2b2lkCmdka19yZ2JfaW5pdCAodm9p
ZCk7CgpndWxvbmcKZ2RrX3JnYl94cGl4ZWxfZnJvbV9yZ2IgKGd1aW50MzIgcmdiKTsKCnZvaWQK
Z2RrX3JnYl9nY19zZXRfZm9yZWdyb3VuZCAoR2RrR0MgKmdjLCBndWludDMyIHJnYik7Cgp2b2lk
Cmdka19yZ2JfZ2Nfc2V0X2JhY2tncm91bmQgKEdka0dDICpnYywgZ3VpbnQzMiByZ2IpOwoKdHlw
ZWRlZiBlbnVtCnsKICBHREtfUkdCX0RJVEhFUl9OT05FLAogIEdES19SR0JfRElUSEVSX05PUk1B
TCwKICBHREtfUkdCX0RJVEhFUl9NQVgKfSBHZGtSZ2JEaXRoZXI7Cgp2b2lkCmdka19kcmF3X3Jn
Yl9pbWFnZSAoR2RrRHJhd2FibGUgKmRyYXdhYmxlLAoJCSAgICBHZGtHQyAqZ2MsCgkJICAgIGdp
bnQgeCwKCQkgICAgZ2ludCB5LAoJCSAgICBnaW50IHdpZHRoLAoJCSAgICBnaW50IGhlaWdodCwK
CQkgICAgR2RrUmdiRGl0aGVyIGRpdGgsCgkJICAgIGd1Y2hhciAqcmdiX2J1ZiwKCQkgICAgZ2lu
dCByb3dzdHJpZGUpOwoKdm9pZApnZGtfZHJhd19yZ2JfaW1hZ2VfZGl0aGFsaWduIChHZGtEcmF3
YWJsZSAqZHJhd2FibGUsCgkJCSAgICAgIEdka0dDICpnYywKCQkJICAgICAgZ2ludCB4LAoJCQkg
ICAgICBnaW50IHksCgkJCSAgICAgIGdpbnQgd2lkdGgsCgkJCSAgICAgIGdpbnQgaGVpZ2h0LAoJ
CQkgICAgICBHZGtSZ2JEaXRoZXIgZGl0aCwKCQkJICAgICAgZ3VjaGFyICpyZ2JfYnVmLAoJCQkg
ICAgICBnaW50IHJvd3N0cmlkZSwKCQkJICAgICAgZ2ludCB4ZGl0aCwKCQkJICAgICAgZ2ludCB5
ZGl0aCk7Cgp2b2lkCmdka19kcmF3X3JnYl8zMl9pbWFnZSAoR2RrRHJhd2FibGUgKmRyYXdhYmxl
LAoJCSAgICAgICBHZGtHQyAqZ2MsCgkJICAgICAgIGdpbnQgeCwKCQkgICAgICAgZ2ludCB5LAoJ
CSAgICAgICBnaW50IHdpZHRoLAoJCSAgICAgICBnaW50IGhlaWdodCwKCQkgICAgICAgR2RrUmdi
RGl0aGVyIGRpdGgsCgkJICAgICAgIGd1Y2hhciAqYnVmLAoJCSAgICAgICBnaW50IHJvd3N0cmlk
ZSk7Cgp2b2lkCmdka19kcmF3X2dyYXlfaW1hZ2UgKEdka0RyYXdhYmxlICpkcmF3YWJsZSwKCQkg
ICAgIEdka0dDICpnYywKCQkgICAgIGdpbnQgeCwKCQkgICAgIGdpbnQgeSwKCQkgICAgIGdpbnQg
d2lkdGgsCgkJICAgICBnaW50IGhlaWdodCwKCQkgICAgIEdka1JnYkRpdGhlciBkaXRoLAoJCSAg
ICAgZ3VjaGFyICpidWYsCgkJICAgICBnaW50IHJvd3N0cmlkZSk7CgpHZGtSZ2JDbWFwICoKZ2Rr
X3JnYl9jbWFwX25ldyAoZ3VpbnQzMiAqY29sb3JzLCBnaW50IG5fY29sb3JzKTsKCnZvaWQKZ2Rr
X3JnYl9jbWFwX2ZyZWUgKEdka1JnYkNtYXAgKmNtYXApOwoKdm9pZApnZGtfZHJhd19pbmRleGVk
X2ltYWdlIChHZGtEcmF3YWJsZSAqZHJhd2FibGUsCgkJCUdka0dDICpnYywKCQkJZ2ludCB4LAoJ
CQlnaW50IHksCgkJCWdpbnQgd2lkdGgsCgkJCWdpbnQgaGVpZ2h0LAoJCQlHZGtSZ2JEaXRoZXIg
ZGl0aCwKCQkJZ3VjaGFyICpidWYsCgkJCWdpbnQgcm93c3RyaWRlLAoJCQlHZGtSZ2JDbWFwICpj
bWFwKTsKCgogCgpnYm9vbGVhbgpnZGtfcmdiX2RpdGhlcmFibGUgKHZvaWQpOwoKdm9pZApnZGtf
cmdiX3NldF92ZXJib3NlIChnYm9vbGVhbiB2ZXJib3NlKTsKCiAKdm9pZApnZGtfcmdiX3NldF9p
bnN0YWxsIChnYm9vbGVhbiBpbnN0YWxsKTsKCnZvaWQKZ2RrX3JnYl9zZXRfbWluX2NvbG9ycyAo
Z2ludCBtaW5fY29sb3JzKTsKCkdka0NvbG9ybWFwICoKZ2RrX3JnYl9nZXRfY21hcCAodm9pZCk7
CgpHZGtWaXN1YWwgKgpnZGtfcmdiX2dldF92aXN1YWwgKHZvaWQpOwoKCn0KCgoKCiMgMTAxMCAi
L3Vzci9pbmNsdWRlL2dkay9nZGsuaCIgMiAzCgoKCn0KCgoKCiMgMzEgIi91c3IvaW5jbHVkZS9n
dGsvZ3RrLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2FjY2VsZ3JvdXAuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2d0
ay9ndGtvYmplY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvZ3RrL2d0a2FyZy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrdHlwZXV0aWxzLmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKIAoKdHlwZWRlZiBlbnVt
CnsKICBHVEtfVFlQRV9JTlZBTElELAogIEdUS19UWVBFX05PTkUsCiAgCiAgIAogIEdUS19UWVBF
X0NIQVIsCiAgR1RLX1RZUEVfVUNIQVIsCiAgR1RLX1RZUEVfQk9PTCwKICBHVEtfVFlQRV9JTlQs
CiAgR1RLX1RZUEVfVUlOVCwKICBHVEtfVFlQRV9MT05HLAogIEdUS19UWVBFX1VMT05HLAogIEdU
S19UWVBFX0ZMT0FULAogIEdUS19UWVBFX0RPVUJMRSwKICBHVEtfVFlQRV9TVFJJTkcsCiAgR1RL
X1RZUEVfRU5VTSwKICBHVEtfVFlQRV9GTEFHUywKICBHVEtfVFlQRV9CT1hFRCwKICBHVEtfVFlQ
RV9QT0lOVEVSLAogIAogICAKICBHVEtfVFlQRV9TSUdOQUwsCiAgR1RLX1RZUEVfQVJHUywKICBH
VEtfVFlQRV9DQUxMQkFDSywKICBHVEtfVFlQRV9DX0NBTExCQUNLLAogIEdUS19UWVBFX0ZPUkVJ
R04sCiAgCiAgIAogIEdUS19UWVBFX09CSkVDVAp9IEd0a0Z1bmRhbWVudGFsVHlwZTsKCiAKCgoK
CgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgp0eXBlZGVm
IGd1aW50IEd0a1R5cGU7Cgp0eXBlZGVmIHN0cnVjdCBfR3RrVHlwZU9iamVjdAlHdGtUeXBlT2Jq
ZWN0Owp0eXBlZGVmIHN0cnVjdCBfR3RrVHlwZUNsYXNzCUd0a1R5cGVDbGFzczsKCgogCgojIDEg
Ii91c3IvaW5jbHVkZS9ndGsvZ3RrdHlwZWJ1aWx0aW5zLmgiIDEgMwogCgpleHRlcm4gR3RrVHlw
ZSBHVEtfVFlQRV9BQ0NFTF9GTEFHUzsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfQ0FMRU5EQVJf
RElTUExBWV9PUFRJT05TOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9DRUxMX1RZUEU7CmV4dGVy
biBHdGtUeXBlIEdUS19UWVBFX0NMSVNUX0RSQUdfUE9TOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQ
RV9CVVRUT05fQUNUSU9OOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9DVFJFRV9QT1M7CmV4dGVy
biBHdGtUeXBlIEdUS19UWVBFX0NUUkVFX0xJTkVfU1RZTEU7CmV4dGVybiBHdGtUeXBlIEdUS19U
WVBFX0NUUkVFX0VYUEFOREVSX1NUWUxFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9DVFJFRV9F
WFBBTlNJT05fVFlQRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfREVCVUdfRkxBRzsKZXh0ZXJu
IEd0a1R5cGUgR1RLX1RZUEVfREVTVF9ERUZBVUxUUzsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVf
VEFSR0VUX0ZMQUdTOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9BUlJPV19UWVBFOwpleHRlcm4g
R3RrVHlwZSBHVEtfVFlQRV9BVFRBQ0hfT1BUSU9OUzsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVf
QlVUVE9OX0JPWF9TVFlMRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfQ1VSVkVfVFlQRTsKZXh0
ZXJuIEd0a1R5cGUgR1RLX1RZUEVfRElSRUNUSU9OX1RZUEU7CmV4dGVybiBHdGtUeXBlIEdUS19U
WVBFX0pVU1RJRklDQVRJT047CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX01BVENIX1RZUEU7CmV4
dGVybiBHdGtUeXBlIEdUS19UWVBFX01FTlVfRElSRUNUSU9OX1RZUEU7CmV4dGVybiBHdGtUeXBl
IEdUS19UWVBFX01FTlVfRkFDVE9SWV9UWVBFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9NRVRS
SUNfVFlQRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfT1JJRU5UQVRJT047CmV4dGVybiBHdGtU
eXBlIEdUS19UWVBFX0NPUk5FUl9UWVBFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9QQUNLX1RZ
UEU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX1BBVEhfUFJJT1JJVFlfVFlQRTsKZXh0ZXJuIEd0
a1R5cGUgR1RLX1RZUEVfUEFUSF9UWVBFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9QT0xJQ1lf
VFlQRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfUE9TSVRJT05fVFlQRTsKZXh0ZXJuIEd0a1R5
cGUgR1RLX1RZUEVfUFJFVklFV19UWVBFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9SRUxJRUZf
U1RZTEU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX1JFU0laRV9NT0RFOwpleHRlcm4gR3RrVHlw
ZSBHVEtfVFlQRV9TSUdOQUxfUlVOX1RZUEU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX1NDUk9M
TF9UWVBFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9TRUxFQ1RJT05fTU9ERTsKZXh0ZXJuIEd0
a1R5cGUgR1RLX1RZUEVfU0hBRE9XX1RZUEU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX1NUQVRF
X1RZUEU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX1NVQk1FTlVfRElSRUNUSU9OOwpleHRlcm4g
R3RrVHlwZSBHVEtfVFlQRV9TVUJNRU5VX1BMQUNFTUVOVDsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZ
UEVfVE9PTEJBUl9TVFlMRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfVFJPVUdIX1RZUEU7CmV4
dGVybiBHdGtUeXBlIEdUS19UWVBFX1VQREFURV9UWVBFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQ
RV9WSVNJQklMSVRZOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9XSU5ET1dfUE9TSVRJT047CmV4
dGVybiBHdGtUeXBlIEdUS19UWVBFX1dJTkRPV19UWVBFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQ
RV9TT1JUX1RZUEU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0ZPTlRfTUVUUklDX1RZUEU7CmV4
dGVybiBHdGtUeXBlIEdUS19UWVBFX0ZPTlRfVFlQRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVf
Rk9OVF9GSUxURVJfVFlQRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfT0JKRUNUX0ZMQUdTOwpl
eHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9BUkdfRkxBR1M7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBF
X1BBQ0tFUl9PUFRJT05TOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9TSURFX1RZUEU7CmV4dGVy
biBHdGtUeXBlIEdUS19UWVBFX0FOQ0hPUl9UWVBFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9Q
UklWQVRFX0ZMQUdTOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9QUk9HUkVTU19CQVJfU1RZTEU7
CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX1BST0dSRVNTX0JBUl9PUklFTlRBVElPTjsKZXh0ZXJu
IEd0a1R5cGUgR1RLX1RZUEVfUkNfRkxBR1M7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX1JDX1RP
S0VOX1RZUEU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX1NQSU5fQlVUVE9OX1VQREFURV9QT0xJ
Q1k7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX1NQSU5fVFlQRTsKZXh0ZXJuIEd0a1R5cGUgR1RL
X1RZUEVfVE9PTEJBUl9DSElMRF9UWVBFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9UT09MQkFS
X1NQQUNFX1NUWUxFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9UUkVFX1ZJRVdfTU9ERTsKZXh0
ZXJuIEd0a1R5cGUgR1RLX1RZUEVfRlVOREFNRU5UQUxfVFlQRTsKZXh0ZXJuIEd0a1R5cGUgR1RL
X1RZUEVfV0lER0VUX0ZMQUdTOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9HREtfV0lORE9XX1RZ
UEU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0dES19XSU5ET1dfQ0xBU1M7CmV4dGVybiBHdGtU
eXBlIEdUS19UWVBFX0dES19JTUFHRV9UWVBFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9HREtf
VklTVUFMX1RZUEU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0dES19GT05UX1RZUEU7CmV4dGVy
biBHdGtUeXBlIEdUS19UWVBFX0dES19XSU5ET1dfQVRUUklCVVRFU19UWVBFOwpleHRlcm4gR3Rr
VHlwZSBHVEtfVFlQRV9HREtfV0lORE9XX0hJTlRTOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9H
REtfRlVOQ1RJT047CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0dES19GSUxMOwpleHRlcm4gR3Rr
VHlwZSBHVEtfVFlQRV9HREtfRklMTF9SVUxFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9HREtf
TElORV9TVFlMRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX0NBUF9TVFlMRTsKZXh0ZXJu
IEd0a1R5cGUgR1RLX1RZUEVfR0RLX0pPSU5fU1RZTEU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBF
X0dES19DVVJTT1JfVFlQRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX0ZJTFRFUl9SRVRV
Uk47CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0dES19WSVNJQklMSVRZX1NUQVRFOwpleHRlcm4g
R3RrVHlwZSBHVEtfVFlQRV9HREtfRVZFTlRfVFlQRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVf
R0RLX0VWRU5UX01BU0s7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0dES19OT1RJRllfVFlQRTsK
ZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX0NST1NTSU5HX01PREU7CmV4dGVybiBHdGtUeXBl
IEdUS19UWVBFX0dES19NT0RJRklFUl9UWVBFOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9HREtf
U1VCV0lORE9XX01PREU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0dES19JTlBVVF9DT05ESVRJ
T047CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0dES19TVEFUVVM7CmV4dGVybiBHdGtUeXBlIEdU
S19UWVBFX0dES19CWVRFX09SREVSOwpleHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9HREtfR0NfVkFM
VUVTX01BU0s7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0dES19TRUxFQ1RJT047CmV4dGVybiBH
dGtUeXBlIEdUS19UWVBFX0dES19QUk9QRVJUWV9TVEFURTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZ
UEVfR0RLX1BST1BfTU9ERTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX0lOUFVUX1NPVVJD
RTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX0lOUFVUX01PREU7CmV4dGVybiBHdGtUeXBl
IEdUS19UWVBFX0dES19BWElTX1VTRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX1RBUkdF
VDsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX1NFTEVDVElPTl9UWVBFOwpleHRlcm4gR3Rr
VHlwZSBHVEtfVFlQRV9HREtfRVhURU5TSU9OX01PREU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBF
X0dES19JTV9TVFlMRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX0lDX0FUVFJJQlVURVNf
VFlQRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX1dNX0RFQ09SQVRJT047CmV4dGVybiBH
dGtUeXBlIEdUS19UWVBFX0dES19XTV9GVU5DVElPTjsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVf
R0RLX0NPTE9SX0NPTlRFWFRfTU9ERTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX09WRVJM
QVBfVFlQRTsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX0RSQUdfQUNUSU9OOwpleHRlcm4g
R3RrVHlwZSBHVEtfVFlQRV9HREtfRFJBR19QUk9UT0NPTDsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZ
UEVfR0RLX1JHQl9ESVRIRVI7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0FDQ0VMX0dST1VQOwpl
eHRlcm4gR3RrVHlwZSBHVEtfVFlQRV9TRUxFQ1RJT05fREFUQTsKZXh0ZXJuIEd0a1R5cGUgR1RL
X1RZUEVfU1RZTEU7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0NUUkVFX05PREU7CmV4dGVybiBH
dGtUeXBlIEdUS19UWVBFX0dES19DT0xPUk1BUDsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RL
X1ZJU1VBTDsKZXh0ZXJuIEd0a1R5cGUgR1RLX1RZUEVfR0RLX0ZPTlQ7CmV4dGVybiBHdGtUeXBl
IEdUS19UWVBFX0dES19XSU5ET1c7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0dES19EUkFHX0NP
TlRFWFQ7CmV4dGVybiBHdGtUeXBlIEdUS19UWVBFX0dES19FVkVOVDsKZXh0ZXJuIEd0a1R5cGUg
R1RLX1RZUEVfR0RLX0NPTE9SOwoKCiMgMTMxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3R5cGV1dGls
cy5oIiAyIDMKCgoKR3RrVHlwZQkJZ3RrX2lkZW50aWZpZXJfZ2V0X3R5cGUJCSh2b2lkKTsKCiAK
CgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrQXJnCSAgICAgICBHdGtBcmc7CnR5cGVkZWYgc3RydWN0
IF9HdGtPYmplY3QgICAgICBHdGtPYmplY3Q7ICAgIAp0eXBlZGVmIHN0cnVjdCBfR3RrVHlwZUlu
Zm8gICAgR3RrVHlwZUluZm87CnR5cGVkZWYgc3RydWN0IF9HdGtUeXBlUXVlcnkgICBHdGtUeXBl
UXVlcnk7CnR5cGVkZWYgc3RydWN0IF9HdGtFbnVtVmFsdWUgICBHdGtFbnVtVmFsdWU7CnR5cGVk
ZWYgc3RydWN0IF9HdGtFbnVtVmFsdWUgICBHdGtGbGFnVmFsdWU7CgoKCgp0eXBlZGVmIHZvaWQg
KCpHdGtDbGFzc0luaXRGdW5jKSAgIChncG9pbnRlciAgIGtsYXNzKTsKdHlwZWRlZiB2b2lkICgq
R3RrT2JqZWN0SW5pdEZ1bmMpICAoZ3BvaW50ZXIgICBvYmplY3QsCgkJCQkgICAgZ3BvaW50ZXIg
ICBrbGFzcyk7CnR5cGVkZWYgdm9pZCAoKkd0a1NpZ25hbEZ1bmMpICAgICAgKCk7CnR5cGVkZWYg
Z2ludCAoKkd0a0Z1bmN0aW9uKQkgICAoZ3BvaW50ZXIgICBkYXRhKTsKdHlwZWRlZiB2b2lkICgq
R3RrRGVzdHJveU5vdGlmeSkgICAoZ3BvaW50ZXIgICBkYXRhKTsKdHlwZWRlZiB2b2lkICgqR3Rr
Q2FsbGJhY2tNYXJzaGFsKSAoR3RrT2JqZWN0ICpvYmplY3QsCgkJCQkgICAgZ3BvaW50ZXIgICBk
YXRhLAoJCQkJICAgIGd1aW50ICAgICAgbl9hcmdzLAoJCQkJICAgIEd0a0FyZyAgICAqYXJncyk7
CnR5cGVkZWYgdm9pZCAoKkd0a1NpZ25hbE1hcnNoYWxsZXIpIChHdGtPYmplY3QgICAgICAqb2Jq
ZWN0LAoJCQkJICAgICBHdGtTaWduYWxGdW5jICAgZnVuYywKCQkJCSAgICAgZ3BvaW50ZXIgICAg
ICAgIGZ1bmNfZGF0YSwKCQkJCSAgICAgR3RrQXJnICAgICAgICAgKmFyZ3MpOwoKIAp0eXBlZGVm
IHZvaWQgKCpHdGtBcmdHZXRGdW5jKQkgICAoR3RrT2JqZWN0KiwgR3RrQXJnKiwgZ3VpbnQpOwp0
eXBlZGVmIHZvaWQgKCpHdGtBcmdTZXRGdW5jKQkgICAoR3RrT2JqZWN0KiwgR3RrQXJnKiwgZ3Vp
bnQpOwoKCiAKCgoKCnN0cnVjdCBfR3RrVHlwZU9iamVjdAp7CiAgIAoKCgogIEd0a1R5cGVDbGFz
cwkqa2xhc3M7Cn07CgoKIAoKCgoKc3RydWN0IF9HdGtUeXBlQ2xhc3MKewogICAKCgogIEd0a1R5
cGUgdHlwZTsKfTsKCgpzdHJ1Y3QgX0d0a0FyZwp7CiAgR3RrVHlwZSB0eXBlOwogIGdjaGFyICpu
YW1lOwogIAogICAKCgoKCgogIHVuaW9uIHsKICAgICAKICAgIGdjaGFyIGNoYXJfZGF0YTsKICAg
IGd1Y2hhciB1Y2hhcl9kYXRhOwogICAgZ2Jvb2xlYW4gYm9vbF9kYXRhOwogICAgZ2ludCBpbnRf
ZGF0YTsKICAgIGd1aW50IHVpbnRfZGF0YTsKICAgIGdsb25nIGxvbmdfZGF0YTsKICAgIGd1bG9u
ZyB1bG9uZ19kYXRhOwogICAgZ2Zsb2F0IGZsb2F0X2RhdGE7CiAgICBnZG91YmxlIGRvdWJsZV9k
YXRhOwogICAgZ2NoYXIgKnN0cmluZ19kYXRhOwogICAgZ3BvaW50ZXIgcG9pbnRlcl9kYXRhOwog
ICAgR3RrT2JqZWN0ICpvYmplY3RfZGF0YTsKICAgIAogICAgIAogICAgc3RydWN0IHsKICAgICAg
R3RrU2lnbmFsRnVuYyBmOwogICAgICBncG9pbnRlciBkOwogICAgfSBzaWduYWxfZGF0YTsKICAg
IHN0cnVjdCB7CiAgICAgIGdpbnQgbl9hcmdzOwogICAgICBHdGtBcmcgKmFyZ3M7CiAgICB9IGFy
Z3NfZGF0YTsKICAgIHN0cnVjdCB7CiAgICAgIEd0a0NhbGxiYWNrTWFyc2hhbCBtYXJzaGFsOwog
ICAgICBncG9pbnRlciBkYXRhOwogICAgICBHdGtEZXN0cm95Tm90aWZ5IG5vdGlmeTsKICAgIH0g
Y2FsbGJhY2tfZGF0YTsKICAgIHN0cnVjdCB7CiAgICAgIEd0a0Z1bmN0aW9uIGZ1bmM7CiAgICAg
IGdwb2ludGVyIGZ1bmNfZGF0YTsKICAgIH0gY19jYWxsYmFja19kYXRhOwogICAgc3RydWN0IHsK
ICAgICAgZ3BvaW50ZXIgZGF0YTsKICAgICAgR3RrRGVzdHJveU5vdGlmeSBub3RpZnk7CiAgICB9
IGZvcmVpZ25fZGF0YTsKICB9IGQ7Cn07CgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCnN0cnVjdCBfR3RrVHlwZUluZm8KewogIGdjaGFyCQkJ
KnR5cGVfbmFtZTsKICBndWludAkJCSBvYmplY3Rfc2l6ZTsKICBndWludAkJCSBjbGFzc19zaXpl
OwogIEd0a0NsYXNzSW5pdEZ1bmMJIGNsYXNzX2luaXRfZnVuYzsKICBHdGtPYmplY3RJbml0RnVu
Ywkgb2JqZWN0X2luaXRfZnVuYzsKICBncG9pbnRlcgkJIHJlc2VydmVkXzE7CiAgZ3BvaW50ZXIJ
CSByZXNlcnZlZF8yOwogIEd0a0NsYXNzSW5pdEZ1bmMJIGJhc2VfY2xhc3NfaW5pdF9mdW5jOwp9
OwoKc3RydWN0IF9HdGtUeXBlUXVlcnkKewogIEd0a1R5cGUJCSB0eXBlOwogIGNvbnN0IGdjaGFy
CQkqdHlwZV9uYW1lOwogIGd1aW50CQkJIG9iamVjdF9zaXplOwogIGd1aW50CQkJIGNsYXNzX3Np
emU7Cn07CgpzdHJ1Y3QgX0d0a0VudW1WYWx1ZQp7CiAgZ3VpbnQJIHZhbHVlOwogIGdjaGFyCSp2
YWx1ZV9uYW1lOwogIGdjaGFyICp2YWx1ZV9uaWNrOwp9OwoKCnZvaWQJCWd0a190eXBlX2luaXQJ
CQkodm9pZCk7Ckd0a1R5cGUJCWd0a190eXBlX3VuaXF1ZQkJCShHdGtUeXBlCSAgIHBhcmVudF90
eXBlLAoJCQkJCQkgY29uc3QgR3RrVHlwZUluZm8gKnR5cGVfaW5mbyk7CnZvaWQJCWd0a190eXBl
X3NldF9jaHVua19hbGxvYwkoR3RrVHlwZQkgdHlwZSwKCQkJCQkJIGd1aW50CQkgbl9jaHVua3Mp
OwpnY2hhcioJCWd0a190eXBlX25hbWUJCQkoZ3VpbnQJCSB0eXBlKTsKR3RrVHlwZQkJZ3RrX3R5
cGVfZnJvbV9uYW1lCQkoY29uc3QgZ2NoYXIJKm5hbWUpOwpHdGtUeXBlCQlndGtfdHlwZV9wYXJl
bnQJCQkoR3RrVHlwZQkgdHlwZSk7Cmdwb2ludGVyCWd0a190eXBlX2NsYXNzCQkJKEd0a1R5cGUJ
IHR5cGUpOwpncG9pbnRlcglndGtfdHlwZV9wYXJlbnRfY2xhc3MJCShHdGtUeXBlCSB0eXBlKTsK
R0xpc3QqCQlndGtfdHlwZV9jaGlsZHJlbl90eXBlcwkJKEd0a1R5cGUJIHR5cGUpOwpncG9pbnRl
cglndGtfdHlwZV9uZXcJCQkoR3RrVHlwZQkgdHlwZSk7CnZvaWQJCWd0a190eXBlX2ZyZWUJCQko
R3RrVHlwZQkgdHlwZSwKCQkJCQkJIGdwb2ludGVyCSBtZW0pOwp2b2lkCQlndGtfdHlwZV9kZXNj
cmliZV9oZXJpdGFnZQkoR3RrVHlwZQkgdHlwZSk7CnZvaWQJCWd0a190eXBlX2Rlc2NyaWJlX3Ry
ZWUJCShHdGtUeXBlCSB0eXBlLAoJCQkJCQkgZ2Jvb2xlYW4JIHNob3dfc2l6ZSk7Cmdib29sZWFu
CWd0a190eXBlX2lzX2EJCQkoR3RrVHlwZQkgdHlwZSwKCQkJCQkJIEd0a1R5cGUJIGlzX2FfdHlw
ZSk7Ckd0a1R5cGVPYmplY3QqCWd0a190eXBlX2NoZWNrX29iamVjdF9jYXN0CShHdGtUeXBlT2Jq
ZWN0CSp0eXBlX29iamVjdCwKCQkJCQkJIEd0a1R5cGUgICAgICAgICBjYXN0X3R5cGUpOwpHdGtU
eXBlQ2xhc3MqCWd0a190eXBlX2NoZWNrX2NsYXNzX2Nhc3QJKEd0a1R5cGVDbGFzcwkqa2xhc3Ms
CgkJCQkJCSBHdGtUeXBlICAgICAgICAgY2FzdF90eXBlKTsKR3RrVHlwZQkJZ3RrX3R5cGVfcmVn
aXN0ZXJfZW51bQkJKGNvbnN0IGdjaGFyCSp0eXBlX25hbWUsCgkJCQkJCSBHdGtFbnVtVmFsdWUJ
KnZhbHVlcyk7Ckd0a1R5cGUJCWd0a190eXBlX3JlZ2lzdGVyX2ZsYWdzCQkoY29uc3QgZ2NoYXIJ
KnR5cGVfbmFtZSwKCQkJCQkJIEd0a0ZsYWdWYWx1ZQkqdmFsdWVzKTsKR3RrRW51bVZhbHVlKgln
dGtfdHlwZV9lbnVtX2dldF92YWx1ZXMJKEd0a1R5cGUJIGVudW1fdHlwZSk7Ckd0a0ZsYWdWYWx1
ZSoJZ3RrX3R5cGVfZmxhZ3NfZ2V0X3ZhbHVlcwkoR3RrVHlwZQkgZmxhZ3NfdHlwZSk7Ckd0a0Vu
dW1WYWx1ZSoJZ3RrX3R5cGVfZW51bV9maW5kX3ZhbHVlCShHdGtUeXBlCSBlbnVtX3R5cGUsCgkJ
CQkJCSBjb25zdCBnY2hhcgkqdmFsdWVfbmFtZSk7Ckd0a0ZsYWdWYWx1ZSoJZ3RrX3R5cGVfZmxh
Z3NfZmluZF92YWx1ZQkoR3RrVHlwZQkgZmxhZ190eXBlLAoJCQkJCQkgY29uc3QgZ2NoYXIJKnZh
bHVlX25hbWUpOwogCnZvaWQJCWd0a190eXBlX3NldF92YXJhcmdzX3R5cGUJKEd0a1R5cGUJZm9y
ZWlnbl90eXBlLAoJCQkJCQkgR3RrVHlwZQl2YXJhcmdzX3R5cGUpOwpHdGtUeXBlCQlndGtfdHlw
ZV9nZXRfdmFyYXJnc190eXBlCShHdGtUeXBlCWZvcmVpZ25fdHlwZSk7CiAKCgoKR3RrVHlwZVF1
ZXJ5KglndGtfdHlwZV9xdWVyeQkJCShHdGtUeXBlCXR5cGUpOwoKCgoKfQoKCgoKIyAzMSAiL3Vz
ci9pbmNsdWRlL2d0ay9ndGthcmcuaCIgMiAzCgoKCgpleHRlcm4gIkMiIHsKCgoKCgp0eXBlZGVm
IHN0cnVjdCBfR3RrQXJnSW5mbwkgR3RrQXJnSW5mbzsKCnN0cnVjdCBfR3RrQXJnSW5mbwp7CiAg
IAogIEd0a1R5cGUgY2xhc3NfdHlwZTsKICBnY2hhciAqbmFtZTsKICAKICBHdGtUeXBlIHR5cGU7
CiAgZ3VpbnQgYXJnX2ZsYWdzOwogIGdjaGFyICpmdWxsX25hbWU7CiAgCiAgIAogIGd1aW50IGFy
Z19pZDsKICBndWludCBzZXFfaWQ7Cn07CgoKIAoKR3RrQXJnKgkJZ3RrX2FyZ19uZXcJCSAoR3Rr
VHlwZQlhcmdfdHlwZSk7Ckd0a0FyZyoJCWd0a19hcmdfY29weQkJIChHdGtBcmcgICAgICAgKnNy
Y19hcmcsCgkJCQkJICBHdGtBcmcgICAgICAgKmRlc3RfYXJnKTsKdm9pZAkJZ3RrX2FyZ19mcmVl
CQkgKEd0a0FyZyAgICAgICAqYXJnLAoJCQkJCSAgZ2Jvb2xlYW4JZnJlZV9jb250ZW50cyk7CnZv
aWQJCWd0a19hcmdfcmVzZXQJCSAoR3RrQXJnICAgICAgICphcmcpOwpnYm9vbGVhbglndGtfYXJn
X3ZhbHVlc19lcXVhbAkgKGNvbnN0IEd0a0FyZyAqYXJnMSwKCQkJCQkgIGNvbnN0IEd0a0FyZyAq
YXJnMik7CmdjaGFyKgkJZ3RrX2FyZ3NfY29sbGVjdAkgKEd0a1R5cGUJb2JqZWN0X3R5cGUsCgkJ
CQkJICBHSGFzaFRhYmxlICAgICphcmdfaW5mb19oYXNoX3RhYmxlLAoJCQkJCSAgR1NMaXN0ICAg
ICAgKiphcmdfbGlzdF9wLAoJCQkJCSAgR1NMaXN0ICAgICAgKippbmZvX2xpc3RfcCwKCQkJCQkg
IGNvbnN0IGdjaGFyICAgKmZpcnN0X2FyZ19uYW1lLAoJCQkJCSAgdmFfbGlzdAl2YXJfYXJncyk7
CnZvaWQJCWd0a19hcmdzX2NvbGxlY3RfY2xlYW51cCAoR1NMaXN0ICAgICAgICphcmdfbGlzdCwK
CQkJCQkgIEdTTGlzdCAgICAgICAqaW5mb19saXN0KTsKZ2NoYXIqCQlndGtfYXJnX2dldF9pbmZv
CSAoR3RrVHlwZQlvYmplY3RfdHlwZSwKCQkJCQkgIEdIYXNoVGFibGUgICAgKmFyZ19pbmZvX2hh
c2hfdGFibGUsCgkJCQkJICBjb25zdCBnY2hhciAgICphcmdfbmFtZSwKCQkJCQkgIEd0a0FyZ0lu
Zm8gICAqKmluZm9fcCk7Ckd0a0FyZ0luZm8qCWd0a19hcmdfdHlwZV9uZXdfc3RhdGljCSAoR3Rr
VHlwZQliYXNlX2NsYXNzX3R5cGUsCgkJCQkJICBjb25zdCBnY2hhciAgICphcmdfbmFtZSwKCQkJ
CQkgIGd1aW50CQljbGFzc19uX2FyZ3Nfb2Zmc2V0LAoJCQkJCSAgR0hhc2hUYWJsZSAgICAqYXJn
X2luZm9faGFzaF90YWJsZSwKCQkJCQkgIEd0a1R5cGUJYXJnX3R5cGUsCgkJCQkJICBndWludAkJ
YXJnX2ZsYWdzLAoJCQkJCSAgZ3VpbnQJCWFyZ19pZCk7Ckd0a0FyZyoJCWd0a19hcmdzX3F1ZXJ5
CQkgKEd0a1R5cGUJY2xhc3NfdHlwZSwKCQkJCQkgIEdIYXNoVGFibGUgICAgKmFyZ19pbmZvX2hh
c2hfdGFibGUsCgkJCQkJICBndWludDMyICAgICAgKiphcmdfZmxhZ3MsCgkJCQkJICBndWludAkg
ICAgICAgKm5fYXJnc19wKTsKZ2NoYXIqCQlndGtfYXJnX25hbWVfc3RyaXBfdHlwZQkgKGNvbnN0
IGdjaGFyICAgKmFyZ19uYW1lKTsKZ2ludAkJZ3RrX2FyZ19pbmZvX2VxdWFsCSAoZ2NvbnN0cG9p
bnRlcgkgYXJnX2luZm9fMSwKCQkJCQkgIGdjb25zdHBvaW50ZXIJIGFyZ19pbmZvXzIpOwpndWlu
dAkJZ3RrX2FyZ19pbmZvX2hhc2gJIChnY29uc3Rwb2ludGVyCSBhcmdfaW5mbyk7CnZvaWQJCWd0
a19hcmdfdG9fdmFsdWVsb2MJIChHdGtBcmcJKmFyZywKCQkJCQkgIGdwb2ludGVyCSB2YWx1ZV9w
b2ludGVyKTsKICAgICAgIAoKCgoKfQoKCgoKIyAzMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtvYmpl
Y3QuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrZW51bXMuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKIAp0eXBlZGVmIGVudW0Kewog
IEdUS19BUlJPV19VUCwKICBHVEtfQVJST1dfRE9XTiwKICBHVEtfQVJST1dfTEVGVCwKICBHVEtf
QVJST1dfUklHSFQKfSBHdGtBcnJvd1R5cGU7CgogCnR5cGVkZWYgZW51bQp7CiAgR1RLX0VYUEFO
RCA9IDEgPDwgMCwKICBHVEtfU0hSSU5LID0gMSA8PCAxLAogIEdUS19GSUxMICAgPSAxIDw8IDIK
fSBHdGtBdHRhY2hPcHRpb25zOwoKIAp0eXBlZGVmIGVudW0gCnsKICBHVEtfQlVUVE9OQk9YX0RF
RkFVTFRfU1RZTEUsCiAgR1RLX0JVVFRPTkJPWF9TUFJFQUQsCiAgR1RLX0JVVFRPTkJPWF9FREdF
LAogIEdUS19CVVRUT05CT1hfU1RBUlQsCiAgR1RLX0JVVFRPTkJPWF9FTkQKfSBHdGtCdXR0b25C
b3hTdHlsZTsKCiAKdHlwZWRlZiBlbnVtCnsKICBHVEtfQ1VSVkVfVFlQRV9MSU5FQVIsICAgICAg
ICAKICBHVEtfQ1VSVkVfVFlQRV9TUExJTkUsICAgICAgICAKICBHVEtfQ1VSVkVfVFlQRV9GUkVF
ICAgICAgICAgICAKfSBHdGtDdXJ2ZVR5cGU7CiAKIAp0eXBlZGVmIGVudW0KewogIEdUS19ESVJf
VEFCX0ZPUldBUkQsCiAgR1RLX0RJUl9UQUJfQkFDS1dBUkQsCiAgR1RLX0RJUl9VUCwKICBHVEtf
RElSX0RPV04sCiAgR1RLX0RJUl9MRUZULAogIEdUS19ESVJfUklHSFQKfSBHdGtEaXJlY3Rpb25U
eXBlOwoKIAp0eXBlZGVmIGVudW0KewogIEdUS19KVVNUSUZZX0xFRlQsCiAgR1RLX0pVU1RJRllf
UklHSFQsCiAgR1RLX0pVU1RJRllfQ0VOVEVSLAogIEdUS19KVVNUSUZZX0ZJTEwKfSBHdGtKdXN0
aWZpY2F0aW9uOwoKIAp0eXBlZGVmIGVudW0KewogIEdUS19NQVRDSF9BTEwsICAgICAgICAKICBH
VEtfTUFUQ0hfQUxMX1RBSUwsICAgCiAgR1RLX01BVENIX0hFQUQsICAgICAgIAogIEdUS19NQVRD
SF9UQUlMLCAgICAgICAKICBHVEtfTUFUQ0hfRVhBQ1QsICAgICAgCiAgR1RLX01BVENIX0xBU1QK
fSBHdGtNYXRjaFR5cGU7CgogCnR5cGVkZWYgZW51bQp7CiAgR1RLX01FTlVfRElSX1BBUkVOVCwK
ICBHVEtfTUVOVV9ESVJfQ0hJTEQsCiAgR1RLX01FTlVfRElSX05FWFQsCiAgR1RLX01FTlVfRElS
X1BSRVYKfSBHdGtNZW51RGlyZWN0aW9uVHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgR1RLX01FTlVf
RkFDVE9SWV9NRU5VLAogIEdUS19NRU5VX0ZBQ1RPUllfTUVOVV9CQVIsCiAgR1RLX01FTlVfRkFD
VE9SWV9PUFRJT05fTUVOVQp9IEd0a01lbnVGYWN0b3J5VHlwZTsKCnR5cGVkZWYgZW51bQp7CiAg
R1RLX1BJWEVMUywKICBHVEtfSU5DSEVTLAogIEdUS19DRU5USU1FVEVSUwp9IEd0a01ldHJpY1R5
cGU7CgogCnR5cGVkZWYgZW51bQp7CiAgR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsCiAgR1RL
X09SSUVOVEFUSU9OX1ZFUlRJQ0FMCn0gR3RrT3JpZW50YXRpb247CgogCnR5cGVkZWYgZW51bQp7
CiAgR1RLX0NPUk5FUl9UT1BfTEVGVCwKICBHVEtfQ09STkVSX0JPVFRPTV9MRUZULAogIEdUS19D
T1JORVJfVE9QX1JJR0hULAogIEdUS19DT1JORVJfQk9UVE9NX1JJR0hUCn0gR3RrQ29ybmVyVHlw
ZTsKCiAKdHlwZWRlZiBlbnVtCnsKICBHVEtfUEFDS19TVEFSVCwKICBHVEtfUEFDS19FTkQKfSBH
dGtQYWNrVHlwZTsKCiAKdHlwZWRlZiBlbnVtCnsKICBHVEtfUEFUSF9QUklPX0xPV0VTVCAgICAg
ID0gMCwKICBHVEtfUEFUSF9QUklPX0dUSwkgICAgPSA0LAogIEdUS19QQVRIX1BSSU9fQVBQTElD
QVRJT04gPSA4LAogIEdUS19QQVRIX1BSSU9fUkMgICAgICAgICAgPSAxMiwKICBHVEtfUEFUSF9Q
UklPX0hJR0hFU1QgICAgID0gMTUsCiAgR1RLX1BBVEhfUFJJT19NQVNLICAgICAgICA9IDB4MGYK
fSBHdGtQYXRoUHJpb3JpdHlUeXBlOwoKIAp0eXBlZGVmIGVudW0KewogIEdUS19QQVRIX1dJREdF
VCwKICBHVEtfUEFUSF9XSURHRVRfQ0xBU1MsCiAgR1RLX1BBVEhfQ0xBU1MKfSBHdGtQYXRoVHlw
ZTsKCiAKdHlwZWRlZiBlbnVtCnsKICBHVEtfUE9MSUNZX0FMV0FZUywKICBHVEtfUE9MSUNZX0FV
VE9NQVRJQywKICBHVEtfUE9MSUNZX05FVkVSCn0gR3RrUG9saWN5VHlwZTsKCnR5cGVkZWYgZW51
bQp7CiAgR1RLX1BPU19MRUZULAogIEdUS19QT1NfUklHSFQsCiAgR1RLX1BPU19UT1AsCiAgR1RL
X1BPU19CT1RUT00KfSBHdGtQb3NpdGlvblR5cGU7Cgp0eXBlZGVmIGVudW0KewogIEdUS19QUkVW
SUVXX0NPTE9SLAogIEdUS19QUkVWSUVXX0dSQVlTQ0FMRQp9IEd0a1ByZXZpZXdUeXBlOwoKIAp0
eXBlZGVmIGVudW0KewogIEdUS19SRUxJRUZfTk9STUFMLAogIEdUS19SRUxJRUZfSEFMRiwKICBH
VEtfUkVMSUVGX05PTkUKfSBHdGtSZWxpZWZTdHlsZTsKCiAKdHlwZWRlZiBlbnVtCnsKICBHVEtf
UkVTSVpFX1BBUkVOVCwJCSAKICBHVEtfUkVTSVpFX1FVRVVFLAkJIAogIEdUS19SRVNJWkVfSU1N
RURJQVRFCQkgCn0gR3RrUmVzaXplTW9kZTsKCiAKdHlwZWRlZiBlbnVtCQkJIAp7CiAgR1RLX1JV
Tl9GSVJTVCAgICAgID0gMSA8PCAwLAogIEdUS19SVU5fTEFTVCAgICAgICA9IDEgPDwgMSwKICBH
VEtfUlVOX0JPVEggICAgICAgPSAoR1RLX1JVTl9GSVJTVCB8IEdUS19SVU5fTEFTVCksCiAgR1RL
X1JVTl9OT19SRUNVUlNFID0gMSA8PCAyLAogIEdUS19SVU5fQUNUSU9OICAgICA9IDEgPDwgMywK
ICBHVEtfUlVOX05PX0hPT0tTICAgPSAxIDw8IDQKfSBHdGtTaWduYWxSdW5UeXBlOwoKIAp0eXBl
ZGVmIGVudW0KewogIEdUS19TQ1JPTExfTk9ORSwKICBHVEtfU0NST0xMX1NURVBfQkFDS1dBUkQs
CiAgR1RLX1NDUk9MTF9TVEVQX0ZPUldBUkQsCiAgR1RLX1NDUk9MTF9QQUdFX0JBQ0tXQVJELAog
IEdUS19TQ1JPTExfUEFHRV9GT1JXQVJELAogIEdUS19TQ1JPTExfSlVNUAp9IEd0a1Njcm9sbFR5
cGU7CgogCnR5cGVkZWYgZW51bQp7CiAgR1RLX1NFTEVDVElPTl9TSU5HTEUsCiAgR1RLX1NFTEVD
VElPTl9CUk9XU0UsCiAgR1RLX1NFTEVDVElPTl9NVUxUSVBMRSwKICBHVEtfU0VMRUNUSU9OX0VY
VEVOREVECn0gR3RrU2VsZWN0aW9uTW9kZTsKCiAKdHlwZWRlZiBlbnVtCnsKICBHVEtfU0hBRE9X
X05PTkUsCiAgR1RLX1NIQURPV19JTiwKICBHVEtfU0hBRE9XX09VVCwKICBHVEtfU0hBRE9XX0VU
Q0hFRF9JTiwKICBHVEtfU0hBRE9XX0VUQ0hFRF9PVVQKfSBHdGtTaGFkb3dUeXBlOwoKIAp0eXBl
ZGVmIGVudW0KewogIEdUS19TVEFURV9OT1JNQUwsCiAgR1RLX1NUQVRFX0FDVElWRSwKICBHVEtf
U1RBVEVfUFJFTElHSFQsCiAgR1RLX1NUQVRFX1NFTEVDVEVELAogIEdUS19TVEFURV9JTlNFTlNJ
VElWRQp9IEd0a1N0YXRlVHlwZTsKCiAKdHlwZWRlZiBlbnVtCnsKICBHVEtfRElSRUNUSU9OX0xF
RlQsCiAgR1RLX0RJUkVDVElPTl9SSUdIVAp9IEd0a1N1Ym1lbnVEaXJlY3Rpb247CgogCnR5cGVk
ZWYgZW51bQp7CiAgR1RLX1RPUF9CT1RUT00sCiAgR1RLX0xFRlRfUklHSFQKfSBHdGtTdWJtZW51
UGxhY2VtZW50OwoKIAp0eXBlZGVmIGVudW0KewogIEdUS19UT09MQkFSX0lDT05TLAogIEdUS19U
T09MQkFSX1RFWFQsCiAgR1RLX1RPT0xCQVJfQk9USAp9IEd0a1Rvb2xiYXJTdHlsZTsKCiAKdHlw
ZWRlZiBlbnVtCnsKICBHVEtfVFJPVUdIX05PTkUsCiAgR1RLX1RST1VHSF9TVEFSVCwKICBHVEtf
VFJPVUdIX0VORCwKICBHVEtfVFJPVUdIX0pVTVAKfSBHdGtUcm91Z2hUeXBlOwoKIAp0eXBlZGVm
IGVudW0KewogIEdUS19VUERBVEVfQ09OVElOVU9VUywKICBHVEtfVVBEQVRFX0RJU0NPTlRJTlVP
VVMsCiAgR1RLX1VQREFURV9ERUxBWUVECn0gR3RrVXBkYXRlVHlwZTsKCiAKdHlwZWRlZiBlbnVt
CnsKICBHVEtfVklTSUJJTElUWV9OT05FLAogIEdUS19WSVNJQklMSVRZX1BBUlRJQUwsCiAgR1RL
X1ZJU0lCSUxJVFlfRlVMTAp9IEd0a1Zpc2liaWxpdHk7CgogCnR5cGVkZWYgZW51bQp7CiAgR1RL
X1dJTl9QT1NfTk9ORSwKICBHVEtfV0lOX1BPU19DRU5URVIsCiAgR1RLX1dJTl9QT1NfTU9VU0Us
CiAgR1RLX1dJTl9QT1NfQ0VOVEVSX0FMV0FZUwp9IEd0a1dpbmRvd1Bvc2l0aW9uOwoKIAp0eXBl
ZGVmIGVudW0KewogIEdUS19XSU5ET1dfVE9QTEVWRUwsCiAgR1RLX1dJTkRPV19ESUFMT0csCiAg
R1RLX1dJTkRPV19QT1BVUAp9IEd0a1dpbmRvd1R5cGU7CgogCnR5cGVkZWYgZW51bQp7CiAgR1RL
X1NPUlRfQVNDRU5ESU5HLAogIEdUS19TT1JUX0RFU0NFTkRJTkcKfSBHdGtTb3J0VHlwZTsKCgp9
CgoKCgojIDMyICIvdXNyL2luY2x1ZGUvZ3RrL2d0a29iamVjdC5oIiAyIDMKCgojIDEgIi91c3Iv
aW5jbHVkZS9ndGsvZ3RrZGVidWcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKZXh0ZXJuICJDIiB7CgoKdHlwZWRlZiBlbnVtIHsKICBHVEtfREVCVUdfT0JKRUNUUyAgICA9
IDEgPDwgMCwKICBHVEtfREVCVUdfTUlTQyAgICAgICA9IDEgPDwgMSwKICBHVEtfREVCVUdfU0lH
TkFMUyAgICA9IDEgPDwgMiwKICBHVEtfREVCVUdfRE5EICAgICAgICA9IDEgPDwgMywKICBHVEtf
REVCVUdfUExVR1NPQ0tFVCA9IDEgPDwgNAp9IEd0a0RlYnVnRmxhZzsKCgoKCgoKCgoKCiAgICAg
IAoKCmV4dGVybiBndWludCBndGtfZGVidWdfZmxhZ3M7CgoKfQoKCgoKIyAzNCAiL3Vzci9pbmNs
dWRlL2d0ay9ndGtvYmplY3QuaCIgMiAzCgoKCgpleHRlcm4gIkMiIHsKCgoKCiAKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKdHlwZWRlZiBlbnVtCnsKICBHVEtfREVTVFJP
WUVECQk9IDEgPDwgMCwKICBHVEtfRkxPQVRJTkcJCT0gMSA8PCAxLAogIEdUS19DT05ORUNURUQJ
CT0gMSA8PCAyLAogIEdUS19DT05TVFJVQ1RFRAk9IDEgPDwgMwp9IEd0a09iamVjdEZsYWdzOwoK
IAoKCgoKCgoKIAoKCgoKIAoKdHlwZWRlZiBlbnVtCnsKICBHVEtfQVJHX1JFQURBQkxFCSA9IDEg
PDwgMCwKICBHVEtfQVJHX1dSSVRBQkxFCSA9IDEgPDwgMSwKICBHVEtfQVJHX0NPTlNUUlVDVAkg
PSAxIDw8IDIsCiAgR1RLX0FSR19DT05TVFJVQ1RfT05MWSA9IDEgPDwgMywKICBHVEtfQVJHX0NI
SUxEX0FSRwkgPSAxIDw8IDQsCiAgR1RLX0FSR19NQVNLCQkgPSAweDFmLAogIAogICAKCiAgR1RL
X0FSR19SRUFEV1JJVEUJID0gR1RLX0FSR19SRUFEQUJMRSB8IEdUS19BUkdfV1JJVEFCTEUKfSBH
dGtBcmdGbGFnczsKCnR5cGVkZWYgc3RydWN0IF9HdGtPYmplY3RDbGFzcwlHdGtPYmplY3RDbGFz
czsKCgogCgoKCgpzdHJ1Y3QgX0d0a09iamVjdAp7CiAgIAogIEd0a09iamVjdENsYXNzICprbGFz
czsKICAKICAKICAgCgoKCgogIGd1aW50MzIgZmxhZ3M7CiAgCiAgIAoKCiAgZ3VpbnQgcmVmX2Nv
dW50OwogIAogICAKCgogIEdEYXRhICpvYmplY3RfZGF0YTsKfTsKCiAKCgoKCgoKc3RydWN0IF9H
dGtPYmplY3RDbGFzcwp7CiAgIAogIEd0a1R5cGUgdHlwZTsKICAKICAKICAgCgoKICBndWludCAq
c2lnbmFsczsKICAKICAgCgogIGd1aW50IG5zaWduYWxzOwogIAogICAKCiAgZ3VpbnQgbl9hcmdz
OwogIEdTTGlzdCAqY29uc3RydWN0X2FyZ3M7CiAgCiAgIAogIHZvaWQgKCpzZXRfYXJnKSAoR3Rr
T2JqZWN0ICpvYmplY3QsCgkJICAgR3RrQXJnICAgICphcmcsCgkJICAgZ3VpbnQgICAgICBhcmdf
aWQpOwogIHZvaWQgKCpnZXRfYXJnKSAoR3RrT2JqZWN0ICpvYmplY3QsCgkJICAgR3RrQXJnICAg
ICphcmcsCgkJICAgZ3VpbnQgICAgICBhcmdfaWQpOwogIAogICAKCgoKCgoKCiAgdm9pZCAoKiBz
aHV0ZG93bikgKEd0a09iamVjdCAqb2JqZWN0KTsKICB2b2lkICgqIGRlc3Ryb3kpICAoR3RrT2Jq
ZWN0ICpvYmplY3QpOwogIAogIHZvaWQgKCogZmluYWxpemUpIChHdGtPYmplY3QgKm9iamVjdCk7
Cn07CgoKCiAKCkd0a1R5cGUJZ3RrX29iamVjdF9nZXRfdHlwZQkJKHZvaWQpOwoKIApndWludAln
dGtfb2JqZWN0X2NsYXNzX3VzZXJfc2lnbmFsX25ldyAgKEd0a09iamVjdENsYXNzICAgICAqa2xh
c3MsCgkJCQkJICAgY29uc3QgZ2NoYXIJICAgICAgKm5hbWUsCgkJCQkJICAgR3RrU2lnbmFsUnVu
VHlwZSAgICBzaWduYWxfZmxhZ3MsCgkJCQkJICAgR3RrU2lnbmFsTWFyc2hhbGxlciBtYXJzaGFs
bGVyLAoJCQkJCSAgIEd0a1R5cGUJICAgICAgIHJldHVybl92YWwsCgkJCQkJICAgZ3VpbnQJICAg
ICAgIG5wYXJhbXMsCgkJCQkJICAgLi4uKTsKZ3VpbnQJZ3RrX29iamVjdF9jbGFzc191c2VyX3Np
Z25hbF9uZXd2IChHdGtPYmplY3RDbGFzcyAgICAgKmtsYXNzLAoJCQkJCSAgIGNvbnN0IGdjaGFy
CSAgICAgICpuYW1lLAoJCQkJCSAgIEd0a1NpZ25hbFJ1blR5cGUgICAgc2lnbmFsX2ZsYWdzLAoJ
CQkJCSAgIEd0a1NpZ25hbE1hcnNoYWxsZXIgbWFyc2hhbGxlciwKCQkJCQkgICBHdGtUeXBlCSAg
ICAgICByZXR1cm5fdmFsLAoJCQkJCSAgIGd1aW50CSAgICAgICBucGFyYW1zLAoJCQkJCSAgIEd0
a1R5cGUJICAgICAgKnBhcmFtcyk7Ckd0a09iamVjdCoJZ3RrX29iamVjdF9uZXcJCSAgKEd0a1R5
cGUJICAgICAgIHR5cGUsCgkJCQkJICAgY29uc3QgZ2NoYXIJICAgICAgKmZpcnN0X2FyZ19uYW1l
LAoJCQkJCSAgIC4uLik7Ckd0a09iamVjdCoJZ3RrX29iamVjdF9uZXd2CQkgIChHdGtUeXBlCSAg
ICAgICBvYmplY3RfdHlwZSwKCQkJCQkgICBndWludAkgICAgICAgbl9hcmdzLAoJCQkJCSAgIEd0
a0FyZwkgICAgICAqYXJncyk7CnZvaWQgZ3RrX29iamVjdF9kZWZhdWx0X2NvbnN0cnVjdCAgICAg
ICAgIChHdGtPYmplY3QJICAgICAgKm9iamVjdCk7CnZvaWQgZ3RrX29iamVjdF9jb25zdHJ1Y3Rl
ZAkJICAoR3RrT2JqZWN0CSAgICAgICpvYmplY3QpOwp2b2lkIGd0a19vYmplY3Rfc2luawkgIChH
dGtPYmplY3QJICAgICpvYmplY3QpOwp2b2lkIGd0a19vYmplY3RfcmVmCSAgKEd0a09iamVjdAkg
ICAgKm9iamVjdCk7CnZvaWQgZ3RrX29iamVjdF91bnJlZgkgIChHdGtPYmplY3QJICAgICpvYmpl
Y3QpOwp2b2lkIGd0a19vYmplY3Rfd2Vha3JlZgkgIChHdGtPYmplY3QJICAgICpvYmplY3QsCgkJ
CSAgIEd0a0Rlc3Ryb3lOb3RpZnkgIG5vdGlmeSwKCQkJICAgZ3BvaW50ZXIJICAgICBkYXRhKTsK
dm9pZCBndGtfb2JqZWN0X3dlYWt1bnJlZiAoR3RrT2JqZWN0CSAgICAqb2JqZWN0LAoJCQkgICBH
dGtEZXN0cm95Tm90aWZ5ICBub3RpZnksCgkJCSAgIGdwb2ludGVyCSAgICAgZGF0YSk7CnZvaWQg
Z3RrX29iamVjdF9kZXN0cm95CSAgKEd0a09iamVjdCAqb2JqZWN0KTsKCiAKCgoKCnZvaWQJZ3Rr
X29iamVjdF9nZXR2CQkoR3RrT2JqZWN0CSpvYmplY3QsCgkJCQkgZ3VpbnQJCW5fYXJncywKCQkJ
CSBHdGtBcmcJCSphcmdzKTsKIAoKCgoKdm9pZAlndGtfb2JqZWN0X2dldAkJKEd0a09iamVjdAkq
b2JqZWN0LAoJCQkJIGNvbnN0IGdjaGFyCSpmaXJzdF9hcmdfbmFtZSwKCQkJCSAuLi4pOwoKIAoK
CgoKdm9pZAlndGtfb2JqZWN0X3NldAkJKEd0a09iamVjdAkqb2JqZWN0LAoJCQkJIGNvbnN0IGdj
aGFyCSpmaXJzdF9hcmdfbmFtZSwKCQkJCSAuLi4pOwp2b2lkCWd0a19vYmplY3Rfc2V0dgkJKEd0
a09iamVjdAkqb2JqZWN0LAoJCQkJIGd1aW50CQluX2FyZ3MsCgkJCQkgR3RrQXJnCQkqYXJncyk7
CgogCgoKCgoKCgpHdGtBcmcqIGd0a19vYmplY3RfcXVlcnlfYXJncwkoR3RrVHlwZQkgIGNsYXNz
X3R5cGUsCgkJCQkgZ3VpbnQzMgkqKmFyZ19mbGFncywKCQkJCSBndWludAkJICpuX2FyZ3MpOwoK
IAoKCgoKCgoKCgoKCnZvaWQJIGd0a19vYmplY3Rfc2V0X2RhdGEJICAgICAoR3RrT2JqZWN0CSAg
ICAgKm9iamVjdCwKCQkJCSAgICAgIGNvbnN0IGdjaGFyICAgICprZXksCgkJCQkgICAgICBncG9p
bnRlcgkgICAgICBkYXRhKTsKdm9pZAkgZ3RrX29iamVjdF9zZXRfZGF0YV9mdWxsICAgIChHdGtP
YmplY3QJICAgICAqb2JqZWN0LAoJCQkJICAgICAgY29uc3QgZ2NoYXIgICAgKmtleSwKCQkJCSAg
ICAgIGdwb2ludGVyCSAgICAgIGRhdGEsCgkJCQkgICAgICBHdGtEZXN0cm95Tm90aWZ5IGRlc3Ry
b3kpOwp2b2lkCSBndGtfb2JqZWN0X3JlbW92ZV9kYXRhCSAgICAgKEd0a09iamVjdAkgICAgICpv
YmplY3QsCgkJCQkgICAgICBjb25zdCBnY2hhciAgICAqa2V5KTsKZ3BvaW50ZXIgZ3RrX29iamVj
dF9nZXRfZGF0YQkgICAgIChHdGtPYmplY3QJICAgICAqb2JqZWN0LAoJCQkJICAgICAgY29uc3Qg
Z2NoYXIgICAgKmtleSk7CnZvaWQJIGd0a19vYmplY3RfcmVtb3ZlX25vX25vdGlmeSAoR3RrT2Jq
ZWN0CSAgICAgKm9iamVjdCwKCQkJCSAgICAgIGNvbnN0IGdjaGFyICAgICprZXkpOwoKIAoKCgoK
dm9pZAkgZ3RrX29iamVjdF9zZXRfdXNlcl9kYXRhIChHdGtPYmplY3QJKm9iamVjdCwKCQkJCSAg
IGdwb2ludGVyCSBkYXRhKTsKZ3BvaW50ZXIgZ3RrX29iamVjdF9nZXRfdXNlcl9kYXRhIChHdGtP
YmplY3QJKm9iamVjdCk7CgoKIAoKIAp2b2lkCWd0a19vYmplY3RfY2xhc3NfYWRkX3NpZ25hbHMJ
KEd0a09iamVjdENsYXNzCSprbGFzcywKCQkJCQkgZ3VpbnQJCSpzaWduYWxzLAoJCQkJCSBndWlu
dAkJIG5zaWduYWxzKTsKIAp2b2lkCWd0a19vYmplY3RfYWRkX2FyZ190eXBlCQkoY29uc3QgZ2No
YXIJKmFyZ19uYW1lLAoJCQkJCSBHdGtUeXBlCSBhcmdfdHlwZSwKCQkJCQkgZ3VpbnQJCSBhcmdf
ZmxhZ3MsCgkJCQkJIGd1aW50CQkgYXJnX2lkKTsKCiAKdm9pZCBndGtfb2JqZWN0X3NldF9kYXRh
X2J5X2lkCQkoR3RrT2JqZWN0CSAqb2JqZWN0LAoJCQkJCSBHUXVhcmsJCSAgZGF0YV9pZCwKCQkJ
CQkgZ3BvaW50ZXIJICBkYXRhKTsKdm9pZCBndGtfb2JqZWN0X3NldF9kYXRhX2J5X2lkX2Z1bGwJ
KEd0a09iamVjdAkgKm9iamVjdCwKCQkJCQkgR1F1YXJrCQkgIGRhdGFfaWQsCgkJCQkJIGdwb2lu
dGVyCSAgZGF0YSwKCQkJCQkgR3RrRGVzdHJveU5vdGlmeSBkZXN0cm95KTsKZ3BvaW50ZXIgZ3Rr
X29iamVjdF9nZXRfZGF0YV9ieV9pZAkoR3RrT2JqZWN0CSAqb2JqZWN0LAoJCQkJCSBHUXVhcmsJ
CSAgZGF0YV9pZCk7CnZvaWQgIGd0a19vYmplY3RfcmVtb3ZlX2RhdGFfYnlfaWQJKEd0a09iamVj
dAkgKm9iamVjdCwKCQkJCQkgR1F1YXJrCQkgIGRhdGFfaWQpOwp2b2lkICBndGtfb2JqZWN0X3Jl
bW92ZV9ub19ub3RpZnlfYnlfaWQJKEd0a09iamVjdAkgKm9iamVjdCwKCQkJCQkgR1F1YXJrCQkg
IGtleV9pZCk7CgoKCgogCgp2b2lkCWd0a19vYmplY3RfYXJnX3NldAkoR3RrT2JqZWN0ICAgKm9i
amVjdCwKCQkJCSBHdGtBcmcJICAgICAqYXJnLAoJCQkJIEd0a0FyZ0luZm8gICppbmZvKTsKdm9p
ZAlndGtfb2JqZWN0X2FyZ19nZXQJKEd0a09iamVjdCAgICpvYmplY3QsCgkJCQkgR3RrQXJnCSAg
ICAgKmFyZywKCQkJCSBHdGtBcmdJbmZvICAqaW5mbyk7CmdjaGFyKglndGtfb2JqZWN0X2FyZ3Nf
Y29sbGVjdCAoR3RrVHlwZSAgICAgIG9iamVjdF90eXBlLAoJCQkJIEdTTGlzdAkgICAgKiphcmdf
bGlzdF9wLAoJCQkJIEdTTGlzdAkgICAgKippbmZvX2xpc3RfcCwKCQkJCSBjb25zdCBnY2hhciAq
Zmlyc3RfYXJnX25hbWUsCgkJCQkgdmFfbGlzdCAgICAgIHZhcl9hcmdzKTsKZ2NoYXIqCWd0a19v
YmplY3RfYXJnX2dldF9pbmZvIChHdGtUeXBlICAgICAgb2JqZWN0X3R5cGUsCgkJCQkgY29uc3Qg
Z2NoYXIgKmFyZ19uYW1lLAoJCQkJIEd0a0FyZ0luZm8gKippbmZvX3ApOwp2b2lkCWd0a190cmFj
ZV9yZWZlcmVuY2luZwkoR3RrT2JqZWN0ICAgKm9iamVjdCwKCQkJCSBjb25zdCBnY2hhciAqZnVu
YywKCQkJCSBndWludAkgICAgICBkdW1teSwKCQkJCSBndWludAkgICAgICBsaW5lLAoJCQkJIGdi
b29sZWFuICAgICBkb19yZWYpOwoKCgoKCgoKCgoKCgoKfQoKCgoKIyAzNSAiL3Vzci9pbmNsdWRl
L2d0ay9ndGthY2NlbGdyb3VwLmgiIDIgMwoKCgoKCmV4dGVybiAiQyIgewoKCgp0eXBlZGVmIHN0
cnVjdCBfR3RrQWNjZWxHcm91cAlHdGtBY2NlbEdyb3VwOwp0eXBlZGVmIHN0cnVjdCBfR3RrQWNj
ZWxFbnRyeQlHdGtBY2NlbEVudHJ5OwoKdHlwZWRlZiBlbnVtCnsKICAgCgoKICBHVEtfQUNDRUxf
VklTSUJMRSAgICAgICAgPSAxIDw8IDAsCiAgIAoKCiAgR1RLX0FDQ0VMX1NJR05BTF9WSVNJQkxF
ID0gMSA8PCAxLAogICAKCgogIEdUS19BQ0NFTF9MT0NLRUQgICAgICAgICA9IDEgPDwgMiwKICBH
VEtfQUNDRUxfTUFTSyAgICAgICAgICAgPSAweDA3Cn0gR3RrQWNjZWxGbGFnczsKCnN0cnVjdCBf
R3RrQWNjZWxHcm91cAp7CiAgZ3VpbnQJICAgICAgICAgIHJlZl9jb3VudDsKICBndWludAkgICAg
ICAgICAgbG9ja19jb3VudDsKICBHZGtNb2RpZmllclR5cGUgbW9kaWZpZXJfbWFzazsKICBHU0xp
c3QgICAgICAgICAqYXR0YWNoX29iamVjdHM7Cn07CgpzdHJ1Y3QgX0d0a0FjY2VsRW50cnkKewog
ICAKCiAgR3RrQWNjZWxHcm91cAkJKmFjY2VsX2dyb3VwOwogIGd1aW50CQkJIGFjY2VsZXJhdG9y
X2tleTsKICBHZGtNb2RpZmllclR5cGUJIGFjY2VsZXJhdG9yX21vZHM7CiAgCiAgR3RrQWNjZWxG
bGFncwkJIGFjY2VsX2ZsYWdzOwogIEd0a09iamVjdAkJKm9iamVjdDsKICBndWludAkJCSBzaWdu
YWxfaWQ7Cn07CgoKIAoKZ2Jvb2xlYW4gZ3RrX2FjY2VsZXJhdG9yX3ZhbGlkCQkgICAgICAoZ3Vp
bnQJICAgICAgICBrZXl2YWwsCgkJCQkJICAgICAgIEdka01vZGlmaWVyVHlwZSAgbW9kaWZpZXJz
KTsKdm9pZAkgZ3RrX2FjY2VsZXJhdG9yX3BhcnNlCQkgICAgICAoY29uc3QgZ2NoYXIgICAgICph
Y2NlbGVyYXRvciwKCQkJCQkgICAgICAgZ3VpbnQJICAgICAgICphY2NlbGVyYXRvcl9rZXksCgkJ
CQkJICAgICAgIEdka01vZGlmaWVyVHlwZSAqYWNjZWxlcmF0b3JfbW9kcyk7CmdjaGFyKgkgZ3Rr
X2FjY2VsZXJhdG9yX25hbWUJCSAgICAgIChndWludAkgICAgICAgIGFjY2VsZXJhdG9yX2tleSwK
CQkJCQkgICAgICAgR2RrTW9kaWZpZXJUeXBlICBhY2NlbGVyYXRvcl9tb2RzKTsKdm9pZAkgZ3Rr
X2FjY2VsZXJhdG9yX3NldF9kZWZhdWx0X21vZF9tYXNrIChHZGtNb2RpZmllclR5cGUgIGRlZmF1
bHRfbW9kX21hc2spOwpndWludAkgZ3RrX2FjY2VsZXJhdG9yX2dldF9kZWZhdWx0X21vZF9tYXNr
ICh2b2lkKTsKCgogCgpHdGtBY2NlbEdyb3VwKiAgZ3RrX2FjY2VsX2dyb3VwX25ldwkgICAgICAJ
KHZvaWQpOwpHdGtBY2NlbEdyb3VwKiAgZ3RrX2FjY2VsX2dyb3VwX2dldF9kZWZhdWx0ICAgIAko
dm9pZCk7Ckd0a0FjY2VsR3JvdXAqICBndGtfYWNjZWxfZ3JvdXBfcmVmCSAgICAgCShHdGtBY2Nl
bEdyb3VwCSphY2NlbF9ncm91cCk7CnZvaWQJICAgICAgICBndGtfYWNjZWxfZ3JvdXBfdW5yZWYJ
ICAgICAgCShHdGtBY2NlbEdyb3VwCSphY2NlbF9ncm91cCk7CnZvaWQJCWd0a19hY2NlbF9ncm91
cF9sb2NrCQkoR3RrQWNjZWxHcm91cAkqYWNjZWxfZ3JvdXApOwp2b2lkCQlndGtfYWNjZWxfZ3Jv
dXBfdW5sb2NrCQkoR3RrQWNjZWxHcm91cAkqYWNjZWxfZ3JvdXApOwpnYm9vbGVhbiAgICAgICAg
Z3RrX2FjY2VsX2dyb3Vwc19hY3RpdmF0ZSAgICAgIAkoR3RrT2JqZWN0CSpvYmplY3QsCgkJCQkJ
CSBndWludAkJIGFjY2VsX2tleSwKCQkJCQkJIEdka01vZGlmaWVyVHlwZSBhY2NlbF9tb2RzKTsK
CiAKCmdib29sZWFuICAgICAgICBndGtfYWNjZWxfZ3JvdXBfYWN0aXZhdGUJKEd0a0FjY2VsR3Jv
dXAJKmFjY2VsX2dyb3VwLAoJCQkJCQkgZ3VpbnQJCSBhY2NlbF9rZXksCgkJCQkJCSBHZGtNb2Rp
ZmllclR5cGUgYWNjZWxfbW9kcyk7CnZvaWQJCWd0a19hY2NlbF9ncm91cF9hdHRhY2gJCShHdGtB
Y2NlbEdyb3VwCSphY2NlbF9ncm91cCwKCQkJCQkJIEd0a09iamVjdAkqb2JqZWN0KTsKdm9pZAkJ
Z3RrX2FjY2VsX2dyb3VwX2RldGFjaAkJKEd0a0FjY2VsR3JvdXAJKmFjY2VsX2dyb3VwLAoJCQkJ
CQkgR3RrT2JqZWN0CSpvYmplY3QpOwoKIAoKR3RrQWNjZWxFbnRyeSogCWd0a19hY2NlbF9ncm91
cF9nZXRfZW50cnkgICAgICAJKEd0a0FjY2VsR3JvdXAgICphY2NlbF9ncm91cCwKCQkJCQkJIGd1
aW50ICAgICAgICAgICBhY2NlbF9rZXksCgkJCQkJCSBHZGtNb2RpZmllclR5cGUgYWNjZWxfbW9k
cyk7CnZvaWQJCWd0a19hY2NlbF9ncm91cF9sb2NrX2VudHJ5CShHdGtBY2NlbEdyb3VwCSphY2Nl
bF9ncm91cCwKCQkJCQkJIGd1aW50CQkgYWNjZWxfa2V5LAoJCQkJCQkgR2RrTW9kaWZpZXJUeXBl
IGFjY2VsX21vZHMpOwp2b2lkCQlndGtfYWNjZWxfZ3JvdXBfdW5sb2NrX2VudHJ5CShHdGtBY2Nl
bEdyb3VwCSphY2NlbF9ncm91cCwKCQkJCQkJIGd1aW50CQkgYWNjZWxfa2V5LAoJCQkJCQkgR2Rr
TW9kaWZpZXJUeXBlIGFjY2VsX21vZHMpOwp2b2lkCQlndGtfYWNjZWxfZ3JvdXBfYWRkCQkoR3Rr
QWNjZWxHcm91cAkqYWNjZWxfZ3JvdXAsCgkJCQkJCSBndWludAkJIGFjY2VsX2tleSwKCQkJCQkJ
IEdka01vZGlmaWVyVHlwZSBhY2NlbF9tb2RzLAoJCQkJCQkgR3RrQWNjZWxGbGFncwkgYWNjZWxf
ZmxhZ3MsCgkJCQkJCSBHdGtPYmplY3QJKm9iamVjdCwKCQkJCQkJIGNvbnN0IGdjaGFyCSphY2Nl
bF9zaWduYWwpOwp2b2lkCQlndGtfYWNjZWxfZ3JvdXBfcmVtb3ZlCQkoR3RrQWNjZWxHcm91cAkq
YWNjZWxfZ3JvdXAsCgkJCQkJCSBndWludAkJIGFjY2VsX2tleSwKCQkJCQkJIEdka01vZGlmaWVy
VHlwZSBhY2NlbF9tb2RzLAoJCQkJCQkgR3RrT2JqZWN0CSpvYmplY3QpOwoKIAoKdm9pZAkJZ3Rr
X2FjY2VsX2dyb3VwX2hhbmRsZV9hZGQJKEd0a09iamVjdAkqb2JqZWN0LAoJCQkJCQkgZ3VpbnQJ
CSBhY2NlbF9zaWduYWxfaWQsCgkJCQkJCSBHdGtBY2NlbEdyb3VwCSphY2NlbF9ncm91cCwKCQkJ
CQkJIGd1aW50CQkgYWNjZWxfa2V5LAoJCQkJCQkgR2RrTW9kaWZpZXJUeXBlIGFjY2VsX21vZHMs
CgkJCQkJCSBHdGtBY2NlbEZsYWdzICAgYWNjZWxfZmxhZ3MpOwp2b2lkCQlndGtfYWNjZWxfZ3Jv
dXBfaGFuZGxlX3JlbW92ZQkoR3RrT2JqZWN0CSpvYmplY3QsCgkJCQkJCSBHdGtBY2NlbEdyb3Vw
CSphY2NlbF9ncm91cCwKCQkJCQkJIGd1aW50CQkgYWNjZWxfa2V5LAoJCQkJCQkgR2RrTW9kaWZp
ZXJUeXBlIGFjY2VsX21vZHMpOwpndWludAkJZ3RrX2FjY2VsX2dyb3VwX2NyZWF0ZV9hZGQJKEd0
a1R5cGUJIGNsYXNzX3R5cGUsCgkJCQkJCSBHdGtTaWduYWxSdW5UeXBlIHNpZ25hbF9mbGFncywK
CQkJCQkJIGd1aW50CQkgaGFuZGxlcl9vZmZzZXQpOwpndWludAkJZ3RrX2FjY2VsX2dyb3VwX2Ny
ZWF0ZV9yZW1vdmUJKEd0a1R5cGUJIGNsYXNzX3R5cGUsCgkJCQkJCSBHdGtTaWduYWxSdW5UeXBl
IHNpZ25hbF9mbGFncywKCQkJCQkJIGd1aW50CQkgaGFuZGxlcl9vZmZzZXQpOwp2b2lkCQlndGtf
YWNjZWxfZ3JvdXBfbWFyc2hhbF9hZGQJKEd0a09iamVjdAkqb2JqZWN0LAoJCQkJCQkgR3RrU2ln
bmFsRnVuYwkgZnVuYywKCQkJCQkJIGdwb2ludGVyCSBmdW5jX2RhdGEsCgkJCQkJCSBHdGtBcmcJ
CSphcmdzKTsKdm9pZAkJZ3RrX2FjY2VsX2dyb3VwX21hcnNoYWxfcmVtb3ZlCShHdGtPYmplY3QJ
Km9iamVjdCwKCQkJCQkJIEd0a1NpZ25hbEZ1bmMJIGZ1bmMsCgkJCQkJCSBncG9pbnRlcgkgZnVu
Y19kYXRhLAoJCQkJCQkgR3RrQXJnCQkqYXJncyk7CgogCgpHU0xpc3QqCWd0a19hY2NlbF9ncm91
cHNfZnJvbV9vYmplY3QJCShHdGtPYmplY3QJKm9iamVjdCk7CkdTTGlzdCoJZ3RrX2FjY2VsX2dy
b3VwX2VudHJpZXNfZnJvbV9vYmplY3QJKEd0a09iamVjdAkqb2JqZWN0KTsKCgoKCn0KCgoKCiMg
MzIgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0
a2FjY2VsbGFiZWwuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2xhYmVsLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGttaXNjLmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3Rrd2lkZ2V0Lmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
Z3RrL2d0a2FkanVzdG1lbnQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtkYXRhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qg
X0d0a0RhdGEgICAgICAgR3RrRGF0YTsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0RhdGFDbGFzcyAgR3Rr
RGF0YUNsYXNzOwoKc3RydWN0IF9HdGtEYXRhCnsKICBHdGtPYmplY3Qgb2JqZWN0Owp9OwoKc3Ry
dWN0IF9HdGtEYXRhQ2xhc3MKewogIEd0a09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKCiAgdm9p
ZCAoKiBkaXNjb25uZWN0KSAoR3RrRGF0YSAqZGF0YSk7Cn07CgoKR3RrVHlwZSBndGtfZGF0YV9n
ZXRfdHlwZSAodm9pZCk7CgoKCn0KCgoKCiMgMzIgIi91c3IvaW5jbHVkZS9ndGsvZ3RrYWRqdXN0
bWVudC5oIiAyIDMKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0
a0FkanVzdG1lbnQJICAgIEd0a0FkanVzdG1lbnQ7CnR5cGVkZWYgc3RydWN0IF9HdGtBZGp1c3Rt
ZW50Q2xhc3MgIEd0a0FkanVzdG1lbnRDbGFzczsKCnN0cnVjdCBfR3RrQWRqdXN0bWVudAp7CiAg
R3RrRGF0YSBkYXRhOwogIAogIGdmbG9hdCBsb3dlcjsKICBnZmxvYXQgdXBwZXI7CiAgZ2Zsb2F0
IHZhbHVlOwogIGdmbG9hdCBzdGVwX2luY3JlbWVudDsKICBnZmxvYXQgcGFnZV9pbmNyZW1lbnQ7
CiAgZ2Zsb2F0IHBhZ2Vfc2l6ZTsKfTsKCnN0cnVjdCBfR3RrQWRqdXN0bWVudENsYXNzCnsKICBH
dGtEYXRhQ2xhc3MgcGFyZW50X2NsYXNzOwogIAogIHZvaWQgKCogY2hhbmdlZCkJIChHdGtBZGp1
c3RtZW50ICphZGp1c3RtZW50KTsKICB2b2lkICgqIHZhbHVlX2NoYW5nZWQpIChHdGtBZGp1c3Rt
ZW50ICphZGp1c3RtZW50KTsKfTsKCgpHdGtUeXBlCSAgIGd0a19hZGp1c3RtZW50X2dldF90eXBl
CQkodm9pZCk7Ckd0a09iamVjdCogZ3RrX2FkanVzdG1lbnRfbmV3CQkJKGdmbG9hdAkJICB2YWx1
ZSwKCQkJCQkJIGdmbG9hdAkJICBsb3dlciwKCQkJCQkJIGdmbG9hdAkJICB1cHBlciwKCQkJCQkJ
IGdmbG9hdAkJICBzdGVwX2luY3JlbWVudCwKCQkJCQkJIGdmbG9hdAkJICBwYWdlX2luY3JlbWVu
dCwKCQkJCQkJIGdmbG9hdAkJICBwYWdlX3NpemUpOwp2b2lkCSAgIGd0a19hZGp1c3RtZW50X2No
YW5nZWQJCShHdGtBZGp1c3RtZW50CSAqYWRqdXN0bWVudCk7CnZvaWQJICAgZ3RrX2FkanVzdG1l
bnRfdmFsdWVfY2hhbmdlZAkJKEd0a0FkanVzdG1lbnQJICphZGp1c3RtZW50KTsKdm9pZAkgICBn
dGtfYWRqdXN0bWVudF9jbGFtcF9wYWdlCQkoR3RrQWRqdXN0bWVudAkgKmFkanVzdG1lbnQsCgkJ
CQkJCSBnZmxvYXQJCSAgbG93ZXIsCgkJCQkJCSBnZmxvYXQJCSAgdXBwZXIpOwp2b2lkCSAgIGd0
a19hZGp1c3RtZW50X3NldF92YWx1ZQkJKEd0a0FkanVzdG1lbnQJICphZGp1c3RtZW50LAoJCQkJ
CQkgZ2Zsb2F0CQkgIHZhbHVlKTsKCgp9CgoKCgojIDMzICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3dp
ZGdldC5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtzdHlsZS5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKdHlwZWRlZiBzdHJ1
Y3QgX0d0a1N0eWxlICAgICAgIEd0a1N0eWxlOwp0eXBlZGVmIHN0cnVjdCBfR3RrU3R5bGVDbGFz
cyAgR3RrU3R5bGVDbGFzczsKCiAKCgp0eXBlZGVmIHN0cnVjdCBfR3RrVGhlbWVFbmdpbmUgR3Rr
VGhlbWVFbmdpbmU7CnR5cGVkZWYgc3RydWN0IF9HdGtSY1N0eWxlICAgICBHdGtSY1N0eWxlOwoK
CiAKCgp0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0ICAgICAgR3RrV2lkZ2V0OwoKIAoKCgoKCgpz
dHJ1Y3QgX0d0a1N0eWxlCnsKICBHdGtTdHlsZUNsYXNzICprbGFzczsKCiAgR2RrQ29sb3IgZmdb
NV07CiAgR2RrQ29sb3IgYmdbNV07CiAgR2RrQ29sb3IgbGlnaHRbNV07CiAgR2RrQ29sb3IgZGFy
a1s1XTsKICBHZGtDb2xvciBtaWRbNV07CiAgR2RrQ29sb3IgdGV4dFs1XTsKICBHZGtDb2xvciBi
YXNlWzVdOwogIAogIEdka0NvbG9yIGJsYWNrOwogIEdka0NvbG9yIHdoaXRlOwogIEdka0ZvbnQg
KmZvbnQ7CiAgCiAgR2RrR0MgKmZnX2djWzVdOwogIEdka0dDICpiZ19nY1s1XTsKICBHZGtHQyAq
bGlnaHRfZ2NbNV07CiAgR2RrR0MgKmRhcmtfZ2NbNV07CiAgR2RrR0MgKm1pZF9nY1s1XTsKICBH
ZGtHQyAqdGV4dF9nY1s1XTsKICBHZGtHQyAqYmFzZV9nY1s1XTsKICBHZGtHQyAqYmxhY2tfZ2M7
CiAgR2RrR0MgKndoaXRlX2djOwogIAogIEdka1BpeG1hcCAqYmdfcGl4bWFwWzVdOwogIAogICAK
ICAKICBnaW50IHJlZl9jb3VudDsKICBnaW50IGF0dGFjaF9jb3VudDsKICAKICBnaW50IGRlcHRo
OwogIEdka0NvbG9ybWFwICpjb2xvcm1hcDsKICAKICBHdGtUaGVtZUVuZ2luZSAqZW5naW5lOwog
IAogIGdwb2ludGVyCSAgZW5naW5lX2RhdGE7CiAgCiAgR3RrUmNTdHlsZQkgKnJjX3N0eWxlOwkg
CgoKICBHU0xpc3QJICpzdHlsZXM7Cn07CgpzdHJ1Y3QgX0d0a1N0eWxlQ2xhc3MKewogIGdpbnQg
eHRoaWNrbmVzczsKICBnaW50IHl0aGlja25lc3M7CiAgCiAgdm9pZCAoKmRyYXdfaGxpbmUpCQko
R3RrU3R5bGUJCSpzdHlsZSwKCQkJCSBHZGtXaW5kb3cJCSp3aW5kb3csCgkJCQkgR3RrU3RhdGVU
eXBlCQkgc3RhdGVfdHlwZSwKCQkJCSBHZGtSZWN0YW5nbGUJCSphcmVhLAoJCQkJIEd0a1dpZGdl
dAkJKndpZGdldCwKCQkJCSBnY2hhcgkJCSpkZXRhaWwsCgkJCQkgZ2ludAkJCSB4MSwKCQkJCSBn
aW50CQkJIHgyLAoJCQkJIGdpbnQJCQkgeSk7CiAgdm9pZCAoKmRyYXdfdmxpbmUpCQkoR3RrU3R5
bGUJCSpzdHlsZSwKCQkJCSBHZGtXaW5kb3cJCSp3aW5kb3csCgkJCQkgR3RrU3RhdGVUeXBlCQkg
c3RhdGVfdHlwZSwKCQkJCSBHZGtSZWN0YW5nbGUJCSphcmVhLAoJCQkJIEd0a1dpZGdldAkJKndp
ZGdldCwKCQkJCSBnY2hhcgkJCSpkZXRhaWwsCgkJCQkgZ2ludAkJCSB5MSwKCQkJCSBnaW50CQkJ
IHkyLAoJCQkJIGdpbnQJCQkgeCk7CiAgdm9pZCAoKmRyYXdfc2hhZG93KQkJKEd0a1N0eWxlCQkq
c3R5bGUsCgkJCQkgR2RrV2luZG93CQkqd2luZG93LAoJCQkJIEd0a1N0YXRlVHlwZQkJIHN0YXRl
X3R5cGUsCgkJCQkgR3RrU2hhZG93VHlwZQkJIHNoYWRvd190eXBlLAoJCQkJIEdka1JlY3Rhbmds
ZQkJKmFyZWEsCgkJCQkgR3RrV2lkZ2V0CQkqd2lkZ2V0LAoJCQkJIGdjaGFyCQkJKmRldGFpbCwK
CQkJCSBnaW50CQkJIHgsCgkJCQkgZ2ludAkJCSB5LAoJCQkJIGdpbnQJCQkgd2lkdGgsCgkJCQkg
Z2ludAkJCSBoZWlnaHQpOwogIHZvaWQgKCpkcmF3X3BvbHlnb24pCQkoR3RrU3R5bGUJCSpzdHls
ZSwKCQkJCSBHZGtXaW5kb3cJCSp3aW5kb3csCgkJCQkgR3RrU3RhdGVUeXBlCQkgc3RhdGVfdHlw
ZSwKCQkJCSBHdGtTaGFkb3dUeXBlCQkgc2hhZG93X3R5cGUsCgkJCQkgR2RrUmVjdGFuZ2xlCQkq
YXJlYSwKCQkJCSBHdGtXaWRnZXQJCSp3aWRnZXQsCgkJCQkgZ2NoYXIJCQkqZGV0YWlsLAoJCQkJ
IEdka1BvaW50CQkqcG9pbnQsCgkJCQkgZ2ludAkJCSBucG9pbnRzLAoJCQkJIGdib29sZWFuCQkg
ZmlsbCk7CiAgdm9pZCAoKmRyYXdfYXJyb3cpCQkoR3RrU3R5bGUJCSpzdHlsZSwKCQkJCSBHZGtX
aW5kb3cJCSp3aW5kb3csCgkJCQkgR3RrU3RhdGVUeXBlCQkgc3RhdGVfdHlwZSwKCQkJCSBHdGtT
aGFkb3dUeXBlCQkgc2hhZG93X3R5cGUsCgkJCQkgR2RrUmVjdGFuZ2xlCQkqYXJlYSwKCQkJCSBH
dGtXaWRnZXQJCSp3aWRnZXQsCgkJCQkgZ2NoYXIJCQkqZGV0YWlsLAoJCQkJIEd0a0Fycm93VHlw
ZQkJIGFycm93X3R5cGUsCgkJCQkgZ2Jvb2xlYW4JCSBmaWxsLAoJCQkJIGdpbnQJCQkgeCwKCQkJ
CSBnaW50CQkJIHksCgkJCQkgZ2ludAkJCSB3aWR0aCwKCQkJCSBnaW50CQkJIGhlaWdodCk7CiAg
dm9pZCAoKmRyYXdfZGlhbW9uZCkJCShHdGtTdHlsZQkJKnN0eWxlLAoJCQkJIEdka1dpbmRvdwkJ
KndpbmRvdywKCQkJCSBHdGtTdGF0ZVR5cGUJCSBzdGF0ZV90eXBlLAoJCQkJIEd0a1NoYWRvd1R5
cGUJCSBzaGFkb3dfdHlwZSwKCQkJCSBHZGtSZWN0YW5nbGUJCSphcmVhLAoJCQkJIEd0a1dpZGdl
dAkJKndpZGdldCwKCQkJCSBnY2hhcgkJCSpkZXRhaWwsCgkJCQkgZ2ludAkJCSB4LAoJCQkJIGdp
bnQJCQkgeSwKCQkJCSBnaW50CQkJIHdpZHRoLAoJCQkJIGdpbnQJCQkgaGVpZ2h0KTsKICB2b2lk
ICgqZHJhd19vdmFsKQkJKEd0a1N0eWxlCQkqc3R5bGUsCgkJCQkgR2RrV2luZG93CQkqd2luZG93
LAoJCQkJIEd0a1N0YXRlVHlwZQkJIHN0YXRlX3R5cGUsCgkJCQkgR3RrU2hhZG93VHlwZQkJIHNo
YWRvd190eXBlLAoJCQkJIEdka1JlY3RhbmdsZQkJKmFyZWEsCgkJCQkgR3RrV2lkZ2V0CQkqd2lk
Z2V0LAoJCQkJIGdjaGFyCQkJKmRldGFpbCwKCQkJCSBnaW50CQkJIHgsCgkJCQkgZ2ludAkJCSB5
LAoJCQkJIGdpbnQJCQkgd2lkdGgsCgkJCQkgZ2ludAkJCSBoZWlnaHQpOwogIHZvaWQgKCpkcmF3
X3N0cmluZykJCShHdGtTdHlsZQkJKnN0eWxlLAoJCQkJIEdka1dpbmRvdwkJKndpbmRvdywKCQkJ
CSBHdGtTdGF0ZVR5cGUJCSBzdGF0ZV90eXBlLAoJCQkJIEdka1JlY3RhbmdsZQkJKmFyZWEsCgkJ
CQkgR3RrV2lkZ2V0CQkqd2lkZ2V0LAoJCQkJIGdjaGFyCQkJKmRldGFpbCwKCQkJCSBnaW50CQkJ
IHgsCgkJCQkgZ2ludAkJCSB5LAoJCQkJIGNvbnN0IGdjaGFyCQkqc3RyaW5nKTsKICB2b2lkICgq
ZHJhd19ib3gpCQkoR3RrU3R5bGUJCSpzdHlsZSwKCQkJCSBHZGtXaW5kb3cJCSp3aW5kb3csCgkJ
CQkgR3RrU3RhdGVUeXBlCQkgc3RhdGVfdHlwZSwKCQkJCSBHdGtTaGFkb3dUeXBlCQkgc2hhZG93
X3R5cGUsCgkJCQkgR2RrUmVjdGFuZ2xlCQkqYXJlYSwKCQkJCSBHdGtXaWRnZXQJCSp3aWRnZXQs
CgkJCQkgZ2NoYXIJCQkqZGV0YWlsLAoJCQkJIGdpbnQJCQkgeCwKCQkJCSBnaW50CQkJIHksCgkJ
CQkgZ2ludAkJCSB3aWR0aCwKCQkJCSBnaW50CQkJIGhlaWdodCk7CiAgdm9pZCAoKmRyYXdfZmxh
dF9ib3gpCQkoR3RrU3R5bGUJCSpzdHlsZSwKCQkJCSBHZGtXaW5kb3cJCSp3aW5kb3csCgkJCQkg
R3RrU3RhdGVUeXBlCQkgc3RhdGVfdHlwZSwKCQkJCSBHdGtTaGFkb3dUeXBlCQkgc2hhZG93X3R5
cGUsCgkJCQkgR2RrUmVjdGFuZ2xlCQkqYXJlYSwKCQkJCSBHdGtXaWRnZXQJCSp3aWRnZXQsCgkJ
CQkgZ2NoYXIJCQkqZGV0YWlsLAoJCQkJIGdpbnQJCQkgeCwKCQkJCSBnaW50CQkJIHksCgkJCQkg
Z2ludAkJCSB3aWR0aCwKCQkJCSBnaW50CQkJIGhlaWdodCk7CiAgdm9pZCAoKmRyYXdfY2hlY2sp
CQkoR3RrU3R5bGUJCSpzdHlsZSwKCQkJCSBHZGtXaW5kb3cJCSp3aW5kb3csCgkJCQkgR3RrU3Rh
dGVUeXBlCQkgc3RhdGVfdHlwZSwKCQkJCSBHdGtTaGFkb3dUeXBlCQkgc2hhZG93X3R5cGUsCgkJ
CQkgR2RrUmVjdGFuZ2xlCQkqYXJlYSwKCQkJCSBHdGtXaWRnZXQJCSp3aWRnZXQsCgkJCQkgZ2No
YXIJCQkqZGV0YWlsLAoJCQkJIGdpbnQJCQkgeCwKCQkJCSBnaW50CQkJIHksCgkJCQkgZ2ludAkJ
CSB3aWR0aCwKCQkJCSBnaW50CQkJIGhlaWdodCk7CiAgdm9pZCAoKmRyYXdfb3B0aW9uKQkJKEd0
a1N0eWxlCQkqc3R5bGUsCgkJCQkgR2RrV2luZG93CQkqd2luZG93LAoJCQkJIEd0a1N0YXRlVHlw
ZQkJIHN0YXRlX3R5cGUsCgkJCQkgR3RrU2hhZG93VHlwZQkJIHNoYWRvd190eXBlLAoJCQkJIEdk
a1JlY3RhbmdsZQkJKmFyZWEsCgkJCQkgR3RrV2lkZ2V0CQkqd2lkZ2V0LAoJCQkJIGdjaGFyCQkJ
KmRldGFpbCwKCQkJCSBnaW50CQkJIHgsCgkJCQkgZ2ludAkJCSB5LAoJCQkJIGdpbnQJCQkgd2lk
dGgsCgkJCQkgZ2ludAkJCSBoZWlnaHQpOwogIHZvaWQgKCpkcmF3X2Nyb3NzKQkJKEd0a1N0eWxl
CQkqc3R5bGUsCgkJCQkgR2RrV2luZG93CQkqd2luZG93LAoJCQkJIEd0a1N0YXRlVHlwZQkJIHN0
YXRlX3R5cGUsCgkJCQkgR3RrU2hhZG93VHlwZQkJIHNoYWRvd190eXBlLAoJCQkJIEdka1JlY3Rh
bmdsZQkJKmFyZWEsCgkJCQkgR3RrV2lkZ2V0CQkqd2lkZ2V0LAoJCQkJIGdjaGFyCQkJKmRldGFp
bCwKCQkJCSBnaW50CQkJIHgsCgkJCQkgZ2ludAkJCSB5LAoJCQkJIGdpbnQJCQkgd2lkdGgsCgkJ
CQkgZ2ludAkJCSBoZWlnaHQpOwogIHZvaWQgKCpkcmF3X3JhbXApCQkoR3RrU3R5bGUJCSpzdHls
ZSwKCQkJCSBHZGtXaW5kb3cJCSp3aW5kb3csCgkJCQkgR3RrU3RhdGVUeXBlCQkgc3RhdGVfdHlw
ZSwKCQkJCSBHdGtTaGFkb3dUeXBlCQkgc2hhZG93X3R5cGUsCgkJCQkgR2RrUmVjdGFuZ2xlCQkq
YXJlYSwKCQkJCSBHdGtXaWRnZXQJCSp3aWRnZXQsCgkJCQkgZ2NoYXIJCQkqZGV0YWlsLAoJCQkJ
IEd0a0Fycm93VHlwZQkJIGFycm93X3R5cGUsCgkJCQkgZ2ludAkJCSB4LAoJCQkJIGdpbnQJCQkg
eSwKCQkJCSBnaW50CQkJIHdpZHRoLAoJCQkJIGdpbnQJCQkgaGVpZ2h0KTsKICB2b2lkICgqZHJh
d190YWIpCQkoR3RrU3R5bGUJCSpzdHlsZSwKCQkJCSBHZGtXaW5kb3cJCSp3aW5kb3csCgkJCQkg
R3RrU3RhdGVUeXBlCQkgc3RhdGVfdHlwZSwKCQkJCSBHdGtTaGFkb3dUeXBlCQkgc2hhZG93X3R5
cGUsCgkJCQkgR2RrUmVjdGFuZ2xlCQkqYXJlYSwKCQkJCSBHdGtXaWRnZXQJCSp3aWRnZXQsCgkJ
CQkgZ2NoYXIJCQkqZGV0YWlsLAoJCQkJIGdpbnQJCQkgeCwKCQkJCSBnaW50CQkJIHksCgkJCQkg
Z2ludAkJCSB3aWR0aCwKCQkJCSBnaW50CQkJIGhlaWdodCk7IAogIHZvaWQgKCpkcmF3X3NoYWRv
d19nYXApCShHdGtTdHlsZQkJKnN0eWxlLAoJCQkJIEdka1dpbmRvdwkJKndpbmRvdywKCQkJCSBH
dGtTdGF0ZVR5cGUJCSBzdGF0ZV90eXBlLAoJCQkJIEd0a1NoYWRvd1R5cGUJCSBzaGFkb3dfdHlw
ZSwKCQkJCSBHZGtSZWN0YW5nbGUJCSphcmVhLAoJCQkJIEd0a1dpZGdldAkJKndpZGdldCwKCQkJ
CSBnY2hhcgkJCSpkZXRhaWwsCgkJCQkgZ2ludAkJCSB4LAoJCQkJIGdpbnQJCQkgeSwKCQkJCSBn
aW50CQkJIHdpZHRoLAoJCQkJIGdpbnQJCQkgaGVpZ2h0LAoJCQkJIEd0a1Bvc2l0aW9uVHlwZQkg
Z2FwX3NpZGUsCgkJCQkgZ2ludAkJCSBnYXBfeCwKCQkJCSBnaW50CQkJIGdhcF93aWR0aCk7CiAg
dm9pZCAoKmRyYXdfYm94X2dhcCkJCShHdGtTdHlsZQkJKnN0eWxlLAoJCQkJIEdka1dpbmRvdwkJ
KndpbmRvdywKCQkJCSBHdGtTdGF0ZVR5cGUJCSBzdGF0ZV90eXBlLAoJCQkJIEd0a1NoYWRvd1R5
cGUJCSBzaGFkb3dfdHlwZSwKCQkJCSBHZGtSZWN0YW5nbGUJCSphcmVhLAoJCQkJIEd0a1dpZGdl
dAkJKndpZGdldCwKCQkJCSBnY2hhcgkJCSpkZXRhaWwsCgkJCQkgZ2ludAkJCSB4LAoJCQkJIGdp
bnQJCQkgeSwKCQkJCSBnaW50CQkJIHdpZHRoLAoJCQkJIGdpbnQJCQkgaGVpZ2h0LAoJCQkJIEd0
a1Bvc2l0aW9uVHlwZQkgZ2FwX3NpZGUsCgkJCQkgZ2ludAkJCSBnYXBfeCwKCQkJCSBnaW50CQkJ
IGdhcF93aWR0aCk7CiAgdm9pZCAoKmRyYXdfZXh0ZW5zaW9uKQkoR3RrU3R5bGUJCSpzdHlsZSwK
CQkJCSBHZGtXaW5kb3cJCSp3aW5kb3csCgkJCQkgR3RrU3RhdGVUeXBlCQkgc3RhdGVfdHlwZSwK
CQkJCSBHdGtTaGFkb3dUeXBlCQkgc2hhZG93X3R5cGUsCgkJCQkgR2RrUmVjdGFuZ2xlCQkqYXJl
YSwKCQkJCSBHdGtXaWRnZXQJCSp3aWRnZXQsCgkJCQkgZ2NoYXIJCQkqZGV0YWlsLAoJCQkJIGdp
bnQJCQkgeCwKCQkJCSBnaW50CQkJIHksCgkJCQkgZ2ludAkJCSB3aWR0aCwKCQkJCSBnaW50CQkJ
IGhlaWdodCwKCQkJCSBHdGtQb3NpdGlvblR5cGUJIGdhcF9zaWRlKTsKICB2b2lkICgqZHJhd19m
b2N1cykJCShHdGtTdHlsZQkJKnN0eWxlLAoJCQkJIEdka1dpbmRvdwkJKndpbmRvdywKCQkJCSBH
ZGtSZWN0YW5nbGUJCSphcmVhLAoJCQkJIEd0a1dpZGdldAkJKndpZGdldCwKCQkJCSBnY2hhcgkJ
CSpkZXRhaWwsCgkJCQkgZ2ludAkJCSB4LAoJCQkJIGdpbnQJCQkgeSwKCQkJCSBnaW50CQkJIHdp
ZHRoLAoJCQkJIGdpbnQJCQkgaGVpZ2h0KTsKICB2b2lkICgqZHJhd19zbGlkZXIpCQkoR3RrU3R5
bGUJCSpzdHlsZSwKCQkJCSBHZGtXaW5kb3cJCSp3aW5kb3csCgkJCQkgR3RrU3RhdGVUeXBlCQkg
c3RhdGVfdHlwZSwKCQkJCSBHdGtTaGFkb3dUeXBlCQkgc2hhZG93X3R5cGUsCgkJCQkgR2RrUmVj
dGFuZ2xlCQkqYXJlYSwKCQkJCSBHdGtXaWRnZXQJCSp3aWRnZXQsCgkJCQkgZ2NoYXIJCQkqZGV0
YWlsLAoJCQkJIGdpbnQJCQkgeCwKCQkJCSBnaW50CQkJIHksCgkJCQkgZ2ludAkJCSB3aWR0aCwK
CQkJCSBnaW50CQkJIGhlaWdodCwKCQkJCSBHdGtPcmllbnRhdGlvbgkJIG9yaWVudGF0aW9uKTsK
ICB2b2lkICgqZHJhd19oYW5kbGUpCQkoR3RrU3R5bGUJCSpzdHlsZSwKCQkJCSBHZGtXaW5kb3cJ
CSp3aW5kb3csCgkJCQkgR3RrU3RhdGVUeXBlCQkgc3RhdGVfdHlwZSwKCQkJCSBHdGtTaGFkb3dU
eXBlCQkgc2hhZG93X3R5cGUsCgkJCQkgR2RrUmVjdGFuZ2xlCQkqYXJlYSwKCQkJCSBHdGtXaWRn
ZXQJCSp3aWRnZXQsCgkJCQkgZ2NoYXIJCQkqZGV0YWlsLAoJCQkJIGdpbnQJCQkgeCwKCQkJCSBn
aW50CQkJIHksCgkJCQkgZ2ludAkJCSB3aWR0aCwKCQkJCSBnaW50CQkJIGhlaWdodCwKCQkJCSBH
dGtPcmllbnRhdGlvbgkJIG9yaWVudGF0aW9uKTsKfTsKCkd0a1N0eWxlKiBndGtfc3R5bGVfbmV3
CQkJICAgICAodm9pZCk7Ckd0a1N0eWxlKiBndGtfc3R5bGVfY29weQkJICAgICAoR3RrU3R5bGUJ
ICAgICpzdHlsZSk7Ckd0a1N0eWxlKiBndGtfc3R5bGVfYXR0YWNoCQkgICAgIChHdGtTdHlsZQkg
ICAgKnN0eWxlLAoJCQkJCSAgICAgIEdka1dpbmRvdwkgICAgKndpbmRvdyk7CnZvaWQJICBndGtf
c3R5bGVfZGV0YWNoCQkgICAgIChHdGtTdHlsZQkgICAqc3R5bGUpOwpHdGtTdHlsZSogZ3RrX3N0
eWxlX3JlZgkJCSAgICAgKEd0a1N0eWxlCSAgICpzdHlsZSk7CnZvaWQJICBndGtfc3R5bGVfdW5y
ZWYJCSAgICAgKEd0a1N0eWxlCSAgICpzdHlsZSk7CnZvaWQJICBndGtfc3R5bGVfc2V0X2JhY2tn
cm91bmQJICAgICAoR3RrU3R5bGUJICAgKnN0eWxlLAoJCQkJCSAgICAgIEdka1dpbmRvdwkgICAq
d2luZG93LAoJCQkJCSAgICAgIEd0a1N0YXRlVHlwZSAgc3RhdGVfdHlwZSk7CnZvaWQJICBndGtf
c3R5bGVfYXBwbHlfZGVmYXVsdF9iYWNrZ3JvdW5kIChHdGtTdHlsZQkgICAqc3R5bGUsCgkJCQkJ
ICAgICAgR2RrV2luZG93CSAgICp3aW5kb3csCgkJCQkJICAgICAgZ2Jvb2xlYW4JICAgIHNldF9i
ZywKCQkJCQkgICAgICBHdGtTdGF0ZVR5cGUgIHN0YXRlX3R5cGUsIAoJCQkJCSAgICAgIEdka1Jl
Y3RhbmdsZSAqYXJlYSwgCgkJCQkJICAgICAgZ2ludAkgICAgeCwgCgkJCQkJICAgICAgZ2ludAkg
ICAgeSwgCgkJCQkJICAgICAgZ2ludAkgICAgd2lkdGgsIAoJCQkJCSAgICAgIGdpbnQJICAgIGhl
aWdodCk7Cgp2b2lkIGd0a19kcmF3X2hsaW5lICAgKEd0a1N0eWxlCSAgICAgKnN0eWxlLAoJCSAg
ICAgICBHZGtXaW5kb3cgICAgICp3aW5kb3csCgkJICAgICAgIEd0a1N0YXRlVHlwZSAgIHN0YXRl
X3R5cGUsCgkJICAgICAgIGdpbnQJICAgICAgeDEsCgkJICAgICAgIGdpbnQJICAgICAgeDIsCgkJ
ICAgICAgIGdpbnQJICAgICAgeSk7CnZvaWQgZ3RrX2RyYXdfdmxpbmUgICAoR3RrU3R5bGUJICAg
ICAqc3R5bGUsCgkJICAgICAgIEdka1dpbmRvdyAgICAgKndpbmRvdywKCQkgICAgICAgR3RrU3Rh
dGVUeXBlICAgc3RhdGVfdHlwZSwKCQkgICAgICAgZ2ludAkgICAgICB5MSwKCQkgICAgICAgZ2lu
dAkgICAgICB5MiwKCQkgICAgICAgZ2ludAkgICAgICB4KTsKdm9pZCBndGtfZHJhd19zaGFkb3cg
IChHdGtTdHlsZQkgICAgICpzdHlsZSwKCQkgICAgICAgR2RrV2luZG93ICAgICAqd2luZG93LAoJ
CSAgICAgICBHdGtTdGF0ZVR5cGUgICBzdGF0ZV90eXBlLAoJCSAgICAgICBHdGtTaGFkb3dUeXBl
ICBzaGFkb3dfdHlwZSwKCQkgICAgICAgZ2ludAkgICAgICB4LAoJCSAgICAgICBnaW50CSAgICAg
IHksCgkJICAgICAgIGdpbnQJICAgICAgd2lkdGgsCgkJICAgICAgIGdpbnQJICAgICAgaGVpZ2h0
KTsKdm9pZCBndGtfZHJhd19wb2x5Z29uIChHdGtTdHlsZQkgICAgICpzdHlsZSwKCQkgICAgICAg
R2RrV2luZG93ICAgICAqd2luZG93LAoJCSAgICAgICBHdGtTdGF0ZVR5cGUgICBzdGF0ZV90eXBl
LAoJCSAgICAgICBHdGtTaGFkb3dUeXBlICBzaGFkb3dfdHlwZSwKCQkgICAgICAgR2RrUG9pbnQJ
ICAgICAqcG9pbnRzLAoJCSAgICAgICBnaW50CSAgICAgIG5wb2ludHMsCgkJICAgICAgIGdib29s
ZWFuCSAgICAgIGZpbGwpOwp2b2lkIGd0a19kcmF3X2Fycm93ICAgKEd0a1N0eWxlCSAgICAgKnN0
eWxlLAoJCSAgICAgICBHZGtXaW5kb3cgICAgICp3aW5kb3csCgkJICAgICAgIEd0a1N0YXRlVHlw
ZSAgIHN0YXRlX3R5cGUsCgkJICAgICAgIEd0a1NoYWRvd1R5cGUgIHNoYWRvd190eXBlLAoJCSAg
ICAgICBHdGtBcnJvd1R5cGUgICBhcnJvd190eXBlLAoJCSAgICAgICBnYm9vbGVhbgkgICAgICBm
aWxsLAoJCSAgICAgICBnaW50CSAgICAgIHgsCgkJICAgICAgIGdpbnQJICAgICAgeSwKCQkgICAg
ICAgZ2ludAkgICAgICB3aWR0aCwKCQkgICAgICAgZ2ludAkgICAgICBoZWlnaHQpOwp2b2lkIGd0
a19kcmF3X2RpYW1vbmQgKEd0a1N0eWxlCSAgICAgKnN0eWxlLAoJCSAgICAgICBHZGtXaW5kb3cg
ICAgICp3aW5kb3csCgkJICAgICAgIEd0a1N0YXRlVHlwZSAgIHN0YXRlX3R5cGUsCgkJICAgICAg
IEd0a1NoYWRvd1R5cGUgIHNoYWRvd190eXBlLAoJCSAgICAgICBnaW50CSAgICAgIHgsCgkJICAg
ICAgIGdpbnQJICAgICAgeSwKCQkgICAgICAgZ2ludAkgICAgICB3aWR0aCwKCQkgICAgICAgZ2lu
dAkgICAgICBoZWlnaHQpOwp2b2lkIGd0a19kcmF3X292YWwgICAgKEd0a1N0eWxlCSAgICAgKnN0
eWxlLAoJCSAgICAgICBHZGtXaW5kb3cgICAgICp3aW5kb3csCgkJICAgICAgIEd0a1N0YXRlVHlw
ZSAgIHN0YXRlX3R5cGUsCgkJICAgICAgIEd0a1NoYWRvd1R5cGUgIHNoYWRvd190eXBlLAoJCSAg
ICAgICBnaW50CSAgICAgIHgsCgkJICAgICAgIGdpbnQJICAgICAgeSwKCQkgICAgICAgZ2ludAkg
ICAgICB3aWR0aCwKCQkgICAgICAgZ2ludAkgICAgICBoZWlnaHQpOwp2b2lkIGd0a19kcmF3X3N0
cmluZyAgKEd0a1N0eWxlCSAgICAgKnN0eWxlLAoJCSAgICAgICBHZGtXaW5kb3cgICAgICp3aW5k
b3csCgkJICAgICAgIEd0a1N0YXRlVHlwZSAgIHN0YXRlX3R5cGUsCgkJICAgICAgIGdpbnQJICAg
ICAgeCwKCQkgICAgICAgZ2ludAkgICAgICB5LAoJCSAgICAgICBjb25zdCBnY2hhciAgICpzdHJp
bmcpOwp2b2lkIGd0a19kcmF3X2JveCAgICAgKEd0a1N0eWxlCSAgICAgKnN0eWxlLAoJCSAgICAg
ICBHZGtXaW5kb3cgICAgICp3aW5kb3csCgkJICAgICAgIEd0a1N0YXRlVHlwZSAgIHN0YXRlX3R5
cGUsCgkJICAgICAgIEd0a1NoYWRvd1R5cGUgIHNoYWRvd190eXBlLAoJCSAgICAgICBnaW50CSAg
ICAgIHgsCgkJICAgICAgIGdpbnQJICAgICAgeSwKCQkgICAgICAgZ2ludAkgICAgICB3aWR0aCwK
CQkgICAgICAgZ2ludAkgICAgICBoZWlnaHQpOwp2b2lkIGd0a19kcmF3X2ZsYXRfYm94IChHdGtT
dHlsZSAgICAgICpzdHlsZSwKCQkJR2RrV2luZG93ICAgICAqd2luZG93LAoJCQlHdGtTdGF0ZVR5
cGUgICBzdGF0ZV90eXBlLAoJCQlHdGtTaGFkb3dUeXBlICBzaGFkb3dfdHlwZSwKCQkJZ2ludAkg
ICAgICAgeCwKCQkJZ2ludAkgICAgICAgeSwKCQkJZ2ludAkgICAgICAgd2lkdGgsCgkJCWdpbnQJ
ICAgICAgIGhlaWdodCk7CnZvaWQgZ3RrX2RyYXdfY2hlY2sgICAoR3RrU3R5bGUJICAgICAqc3R5
bGUsCgkJICAgICAgIEdka1dpbmRvdyAgICAgKndpbmRvdywKCQkgICAgICAgR3RrU3RhdGVUeXBl
ICAgc3RhdGVfdHlwZSwKCQkgICAgICAgR3RrU2hhZG93VHlwZSAgc2hhZG93X3R5cGUsCgkJICAg
ICAgIGdpbnQJICAgICAgeCwKCQkgICAgICAgZ2ludAkgICAgICB5LAoJCSAgICAgICBnaW50CSAg
ICAgIHdpZHRoLAoJCSAgICAgICBnaW50CSAgICAgIGhlaWdodCk7CnZvaWQgZ3RrX2RyYXdfb3B0
aW9uICAoR3RrU3R5bGUJICAgICAqc3R5bGUsCgkJICAgICAgIEdka1dpbmRvdyAgICAgKndpbmRv
dywKCQkgICAgICAgR3RrU3RhdGVUeXBlICAgc3RhdGVfdHlwZSwKCQkgICAgICAgR3RrU2hhZG93
VHlwZSAgc2hhZG93X3R5cGUsCgkJICAgICAgIGdpbnQJICAgICAgeCwKCQkgICAgICAgZ2ludAkg
ICAgICB5LAoJCSAgICAgICBnaW50CSAgICAgIHdpZHRoLAoJCSAgICAgICBnaW50CSAgICAgIGhl
aWdodCk7CnZvaWQgZ3RrX2RyYXdfY3Jvc3MgICAoR3RrU3R5bGUJICAgICAqc3R5bGUsCgkJICAg
ICAgIEdka1dpbmRvdyAgICAgKndpbmRvdywKCQkgICAgICAgR3RrU3RhdGVUeXBlICAgc3RhdGVf
dHlwZSwKCQkgICAgICAgR3RrU2hhZG93VHlwZSAgc2hhZG93X3R5cGUsCgkJICAgICAgIGdpbnQJ
ICAgICAgeCwKCQkgICAgICAgZ2ludAkgICAgICB5LAoJCSAgICAgICBnaW50CSAgICAgIHdpZHRo
LAoJCSAgICAgICBnaW50CSAgICAgIGhlaWdodCk7CnZvaWQgZ3RrX2RyYXdfcmFtcCAgICAoR3Rr
U3R5bGUJICAgICAqc3R5bGUsCgkJICAgICAgIEdka1dpbmRvdyAgICAgKndpbmRvdywKCQkgICAg
ICAgR3RrU3RhdGVUeXBlICAgc3RhdGVfdHlwZSwKCQkgICAgICAgR3RrU2hhZG93VHlwZSAgc2hh
ZG93X3R5cGUsCgkJICAgICAgIEd0a0Fycm93VHlwZSAgIGFycm93X3R5cGUsCgkJICAgICAgIGdp
bnQJICAgICAgeCwKCQkgICAgICAgZ2ludAkgICAgICB5LAoJCSAgICAgICBnaW50CSAgICAgIHdp
ZHRoLAoJCSAgICAgICBnaW50CSAgICAgIGhlaWdodCk7CnZvaWQgZ3RrX2RyYXdfdGFiICAgICAo
R3RrU3R5bGUJICAgICAqc3R5bGUsCgkJICAgICAgIEdka1dpbmRvdyAgICAgKndpbmRvdywKCQkg
ICAgICAgR3RrU3RhdGVUeXBlICAgc3RhdGVfdHlwZSwKCQkgICAgICAgR3RrU2hhZG93VHlwZSAg
c2hhZG93X3R5cGUsCgkJICAgICAgIGdpbnQJICAgICAgeCwKCQkgICAgICAgZ2ludAkgICAgICB5
LAoJCSAgICAgICBnaW50CSAgICAgIHdpZHRoLAoJCSAgICAgICBnaW50CSAgICAgIGhlaWdodCk7
CnZvaWQgZ3RrX2RyYXdfc2hhZG93X2dhcCAoR3RrU3R5bGUJICpzdHlsZSwKCQkJICBHZGtXaW5k
b3cJICp3aW5kb3csCgkJCSAgR3RrU3RhdGVUeXBlCSAgc3RhdGVfdHlwZSwKCQkJICBHdGtTaGFk
b3dUeXBlCSAgc2hhZG93X3R5cGUsCgkJCSAgZ2ludAkJICB4LAoJCQkgIGdpbnQJCSAgeSwKCQkJ
ICBnaW50CQkgIHdpZHRoLAoJCQkgIGdpbnQJCSAgaGVpZ2h0LAoJCQkgIEd0a1Bvc2l0aW9uVHlw
ZSBnYXBfc2lkZSwKCQkJICBnaW50CQkgIGdhcF94LAoJCQkgIGdpbnQJCSAgZ2FwX3dpZHRoKTsK
dm9pZCBndGtfZHJhd19ib3hfZ2FwIChHdGtTdHlsZQkgICAgICAqc3R5bGUsCgkJICAgICAgIEdk
a1dpbmRvdyAgICAgICp3aW5kb3csCgkJICAgICAgIEd0a1N0YXRlVHlwZSAgICBzdGF0ZV90eXBl
LAoJCSAgICAgICBHdGtTaGFkb3dUeXBlICAgc2hhZG93X3R5cGUsCgkJICAgICAgIGdpbnQJICAg
ICAgIHgsCgkJICAgICAgIGdpbnQJICAgICAgIHksCgkJICAgICAgIGdpbnQJICAgICAgIHdpZHRo
LAoJCSAgICAgICBnaW50CSAgICAgICBoZWlnaHQsCgkJICAgICAgIEd0a1Bvc2l0aW9uVHlwZSBn
YXBfc2lkZSwKCQkgICAgICAgZ2ludAkgICAgICAgZ2FwX3gsCgkJICAgICAgIGdpbnQJICAgICAg
IGdhcF93aWR0aCk7CnZvaWQgZ3RrX2RyYXdfZXh0ZW5zaW9uIChHdGtTdHlsZQkqc3R5bGUsCgkJ
CSBHZGtXaW5kb3cJKndpbmRvdywKCQkJIEd0a1N0YXRlVHlwZQkgc3RhdGVfdHlwZSwKCQkJIEd0
a1NoYWRvd1R5cGUJIHNoYWRvd190eXBlLAoJCQkgZ2ludAkJIHgsCgkJCSBnaW50CQkgeSwKCQkJ
IGdpbnQJCSB3aWR0aCwKCQkJIGdpbnQJCSBoZWlnaHQsCgkJCSBHdGtQb3NpdGlvblR5cGUgZ2Fw
X3NpZGUpOwp2b2lkIGd0a19kcmF3X2ZvY3VzICAgKEd0a1N0eWxlCSAgICAgKnN0eWxlLAoJCSAg
ICAgICBHZGtXaW5kb3cgICAgICp3aW5kb3csCgkJICAgICAgIGdpbnQJICAgICAgeCwKCQkgICAg
ICAgZ2ludAkgICAgICB5LAoJCSAgICAgICBnaW50CSAgICAgIHdpZHRoLAoJCSAgICAgICBnaW50
CSAgICAgIGhlaWdodCk7CnZvaWQgZ3RrX2RyYXdfc2xpZGVyICAoR3RrU3R5bGUJICAgICAqc3R5
bGUsCgkJICAgICAgIEdka1dpbmRvdyAgICAgKndpbmRvdywKCQkgICAgICAgR3RrU3RhdGVUeXBl
ICAgc3RhdGVfdHlwZSwKCQkgICAgICAgR3RrU2hhZG93VHlwZSAgc2hhZG93X3R5cGUsCgkJICAg
ICAgIGdpbnQJICAgICAgeCwKCQkgICAgICAgZ2ludAkgICAgICB5LAoJCSAgICAgICBnaW50CSAg
ICAgIHdpZHRoLAoJCSAgICAgICBnaW50CSAgICAgIGhlaWdodCwKCQkgICAgICAgR3RrT3JpZW50
YXRpb24gb3JpZW50YXRpb24pOwp2b2lkIGd0a19kcmF3X2hhbmRsZSAgKEd0a1N0eWxlCSAgICAg
KnN0eWxlLAoJCSAgICAgICBHZGtXaW5kb3cgICAgICp3aW5kb3csCgkJICAgICAgIEd0a1N0YXRl
VHlwZSAgIHN0YXRlX3R5cGUsCgkJICAgICAgIEd0a1NoYWRvd1R5cGUgIHNoYWRvd190eXBlLAoJ
CSAgICAgICBnaW50CSAgICAgIHgsCgkJICAgICAgIGdpbnQJICAgICAgeSwKCQkgICAgICAgZ2lu
dAkgICAgICB3aWR0aCwKCQkgICAgICAgZ2ludAkgICAgICBoZWlnaHQsCgkJICAgICAgIEd0a09y
aWVudGF0aW9uIG9yaWVudGF0aW9uKTsKCnZvaWQgZ3RrX3BhaW50X2hsaW5lICAgKEd0a1N0eWxl
ICAgICAgKnN0eWxlLAoJCQlHZGtXaW5kb3cgICAgICp3aW5kb3csCgkJCUd0a1N0YXRlVHlwZSAg
IHN0YXRlX3R5cGUsCgkJCUdka1JlY3RhbmdsZSAgKmFyZWEsCgkJCUd0a1dpZGdldCAgICAgKndp
ZGdldCwKCQkJZ2NoYXIJICAgICAgKmRldGFpbCwKCQkJZ2ludAkgICAgICAgeDEsCgkJCWdpbnQJ
ICAgICAgIHgyLAoJCQlnaW50CSAgICAgICB5KTsKdm9pZCBndGtfcGFpbnRfdmxpbmUgICAoR3Rr
U3R5bGUgICAgICAqc3R5bGUsCgkJCUdka1dpbmRvdyAgICAgKndpbmRvdywKCQkJR3RrU3RhdGVU
eXBlICAgc3RhdGVfdHlwZSwKCQkJR2RrUmVjdGFuZ2xlICAqYXJlYSwKCQkJR3RrV2lkZ2V0ICAg
ICAqd2lkZ2V0LAoJCQlnY2hhcgkgICAgICAqZGV0YWlsLAoJCQlnaW50CSAgICAgICB5MSwKCQkJ
Z2ludAkgICAgICAgeTIsCgkJCWdpbnQJICAgICAgIHgpOwp2b2lkIGd0a19wYWludF9zaGFkb3cg
IChHdGtTdHlsZSAgICAgKnN0eWxlLAoJCQlHZGtXaW5kb3cgICAgKndpbmRvdywKCQkJR3RrU3Rh
dGVUeXBlICBzdGF0ZV90eXBlLAoJCQlHdGtTaGFkb3dUeXBlIHNoYWRvd190eXBlLAoJCQlHZGtS
ZWN0YW5nbGUgICphcmVhLAoJCQlHdGtXaWRnZXQgICAgICp3aWRnZXQsCgkJCWdjaGFyCSAgICAg
ICpkZXRhaWwsCgkJCWdpbnQJICAgICAgIHgsCgkJCWdpbnQJICAgICAgIHksCgkJCWdpbnQJICAg
ICAgIHdpZHRoLAoJCQlnaW50CSAgICAgICBoZWlnaHQpOwp2b2lkIGd0a19wYWludF9wb2x5Z29u
IChHdGtTdHlsZSAgICAgICpzdHlsZSwKCQkJR2RrV2luZG93ICAgICAqd2luZG93LAoJCQlHdGtT
dGF0ZVR5cGUgICBzdGF0ZV90eXBlLAoJCQlHdGtTaGFkb3dUeXBlICBzaGFkb3dfdHlwZSwKCQkJ
R2RrUmVjdGFuZ2xlICAqYXJlYSwKCQkJR3RrV2lkZ2V0ICAgICAqd2lkZ2V0LAoJCQlnY2hhcgkg
ICAgICAqZGV0YWlsLAoJCQlHZGtQb2ludCAgICAgICpwb2ludHMsCgkJCWdpbnQJICAgICAgIG5w
b2ludHMsCgkJCWdib29sZWFuICAgICAgIGZpbGwpOwp2b2lkIGd0a19wYWludF9hcnJvdyAgIChH
dGtTdHlsZSAgICAgICpzdHlsZSwKCQkJR2RrV2luZG93ICAgICAqd2luZG93LAoJCQlHdGtTdGF0
ZVR5cGUgICBzdGF0ZV90eXBlLAoJCQlHdGtTaGFkb3dUeXBlICBzaGFkb3dfdHlwZSwKCQkJR2Rr
UmVjdGFuZ2xlICAqYXJlYSwKCQkJR3RrV2lkZ2V0ICAgICAqd2lkZ2V0LAoJCQlnY2hhcgkgICAg
ICAqZGV0YWlsLAoJCQlHdGtBcnJvd1R5cGUgICBhcnJvd190eXBlLAoJCQlnYm9vbGVhbiAgICAg
ICBmaWxsLAoJCQlnaW50CSAgICAgICB4LAoJCQlnaW50CSAgICAgICB5LAoJCQlnaW50CSAgICAg
ICB3aWR0aCwKCQkJZ2ludAkgICAgICAgaGVpZ2h0KTsKdm9pZCBndGtfcGFpbnRfZGlhbW9uZCAo
R3RrU3R5bGUgICAgICAqc3R5bGUsCgkJCUdka1dpbmRvdyAgICAgKndpbmRvdywKCQkJR3RrU3Rh
dGVUeXBlICAgc3RhdGVfdHlwZSwKCQkJR3RrU2hhZG93VHlwZSAgc2hhZG93X3R5cGUsCgkJCUdk
a1JlY3RhbmdsZSAgKmFyZWEsCgkJCUd0a1dpZGdldCAgICAgKndpZGdldCwKCQkJZ2NoYXIJICAg
ICAgKmRldGFpbCwKCQkJZ2ludAkgICAgICAgeCwKCQkJZ2ludAkgICAgICAgeSwKCQkJZ2ludAkg
ICAgICAgd2lkdGgsCgkJCWdpbnQJICAgICAgIGhlaWdodCk7CnZvaWQgZ3RrX3BhaW50X292YWwg
ICAgKEd0a1N0eWxlICAgICAgKnN0eWxlLAoJCQlHZGtXaW5kb3cgICAgICp3aW5kb3csCgkJCUd0
a1N0YXRlVHlwZSAgIHN0YXRlX3R5cGUsCgkJCUd0a1NoYWRvd1R5cGUgIHNoYWRvd190eXBlLAoJ
CQlHZGtSZWN0YW5nbGUgICphcmVhLAoJCQlHdGtXaWRnZXQgICAgICp3aWRnZXQsCgkJCWdjaGFy
CSAgICAgICpkZXRhaWwsCgkJCWdpbnQJICAgICAgIHgsCgkJCWdpbnQJICAgICAgIHksCgkJCWdp
bnQJICAgICAgIHdpZHRoLAoJCQlnaW50CSAgICAgICBoZWlnaHQpOwp2b2lkIGd0a19wYWludF9z
dHJpbmcgIChHdGtTdHlsZSAgICAgICpzdHlsZSwKCQkJR2RrV2luZG93ICAgICAqd2luZG93LAoJ
CQlHdGtTdGF0ZVR5cGUgICBzdGF0ZV90eXBlLAoJCQlHZGtSZWN0YW5nbGUgICphcmVhLAoJCQlH
dGtXaWRnZXQgICAgICp3aWRnZXQsCgkJCWdjaGFyCSAgICAgICpkZXRhaWwsCgkJCWdpbnQJICAg
ICAgIHgsCgkJCWdpbnQJICAgICAgIHksCgkJCWNvbnN0IGdjaGFyICAgKnN0cmluZyk7CnZvaWQg
Z3RrX3BhaW50X2JveCAgICAgKEd0a1N0eWxlICAgICAgKnN0eWxlLAoJCQlHZGtXaW5kb3cgICAg
ICp3aW5kb3csCgkJCUd0a1N0YXRlVHlwZSAgIHN0YXRlX3R5cGUsCgkJCUd0a1NoYWRvd1R5cGUg
IHNoYWRvd190eXBlLAoJCQlHZGtSZWN0YW5nbGUgICphcmVhLAoJCQlHdGtXaWRnZXQgICAgICp3
aWRnZXQsCgkJCWdjaGFyCSAgICAgICpkZXRhaWwsCgkJCWdpbnQJICAgICAgIHgsCgkJCWdpbnQJ
ICAgICAgIHksCgkJCWdpbnQJICAgICAgIHdpZHRoLAoJCQlnaW50CSAgICAgICBoZWlnaHQpOwp2
b2lkIGd0a19wYWludF9mbGF0X2JveCAoR3RrU3R5bGUgICAgICAqc3R5bGUsCgkJCSBHZGtXaW5k
b3cgICAgICp3aW5kb3csCgkJCSBHdGtTdGF0ZVR5cGUJc3RhdGVfdHlwZSwKCQkJIEd0a1NoYWRv
d1R5cGUJc2hhZG93X3R5cGUsCgkJCSBHZGtSZWN0YW5nbGUgICphcmVhLAoJCQkgR3RrV2lkZ2V0
ICAgICAqd2lkZ2V0LAoJCQkgZ2NoYXIJICAgICAgICpkZXRhaWwsCgkJCSBnaW50CQl4LAoJCQkg
Z2ludAkJeSwKCQkJIGdpbnQJCXdpZHRoLAoJCQkgZ2ludAkJaGVpZ2h0KTsKdm9pZCBndGtfcGFp
bnRfY2hlY2sgICAoR3RrU3R5bGUgICAgICAqc3R5bGUsCgkJCUdka1dpbmRvdyAgICAgKndpbmRv
dywKCQkJR3RrU3RhdGVUeXBlICAgc3RhdGVfdHlwZSwKCQkJR3RrU2hhZG93VHlwZSAgc2hhZG93
X3R5cGUsCgkJCUdka1JlY3RhbmdsZSAgKmFyZWEsCgkJCUd0a1dpZGdldCAgICAgKndpZGdldCwK
CQkJZ2NoYXIJICAgICAgKmRldGFpbCwKCQkJZ2ludAkgICAgICAgeCwKCQkJZ2ludAkgICAgICAg
eSwKCQkJZ2ludAkgICAgICAgd2lkdGgsCgkJCWdpbnQJICAgICAgIGhlaWdodCk7CnZvaWQgZ3Rr
X3BhaW50X29wdGlvbiAgKEd0a1N0eWxlICAgICAgKnN0eWxlLAoJCQlHZGtXaW5kb3cgICAgICp3
aW5kb3csCgkJCUd0a1N0YXRlVHlwZSAgIHN0YXRlX3R5cGUsCgkJCUd0a1NoYWRvd1R5cGUgIHNo
YWRvd190eXBlLAoJCQlHZGtSZWN0YW5nbGUgICphcmVhLAoJCQlHdGtXaWRnZXQgICAgICp3aWRn
ZXQsCgkJCWdjaGFyCSAgICAgICpkZXRhaWwsCgkJCWdpbnQJICAgICAgIHgsCgkJCWdpbnQJICAg
ICAgIHksCgkJCWdpbnQJICAgICAgIHdpZHRoLAoJCQlnaW50CSAgICAgICBoZWlnaHQpOwp2b2lk
IGd0a19wYWludF9jcm9zcyAgIChHdGtTdHlsZSAgICAgICpzdHlsZSwKCQkJR2RrV2luZG93ICAg
ICAqd2luZG93LAoJCQlHdGtTdGF0ZVR5cGUgICBzdGF0ZV90eXBlLAoJCQlHdGtTaGFkb3dUeXBl
ICBzaGFkb3dfdHlwZSwKCQkJR2RrUmVjdGFuZ2xlICAqYXJlYSwKCQkJR3RrV2lkZ2V0ICAgICAq
d2lkZ2V0LAoJCQlnY2hhcgkgICAgICAqZGV0YWlsLAoJCQlnaW50CSAgICAgICB4LAoJCQlnaW50
CSAgICAgICB5LAoJCQlnaW50CSAgICAgICB3aWR0aCwKCQkJZ2ludAkgICAgICAgaGVpZ2h0KTsK
dm9pZCBndGtfcGFpbnRfcmFtcCAgICAoR3RrU3R5bGUgICAgICAqc3R5bGUsCgkJCUdka1dpbmRv
dyAgICAgKndpbmRvdywKCQkJR3RrU3RhdGVUeXBlICAgc3RhdGVfdHlwZSwKCQkJR3RrU2hhZG93
VHlwZSAgc2hhZG93X3R5cGUsCgkJCUdka1JlY3RhbmdsZSAgKmFyZWEsCgkJCUd0a1dpZGdldCAg
ICAgKndpZGdldCwKCQkJZ2NoYXIJICAgICAgKmRldGFpbCwKCQkJR3RrQXJyb3dUeXBlICAgYXJy
b3dfdHlwZSwKCQkJZ2ludAkgICAgICAgeCwKCQkJZ2ludAkgICAgICAgeSwKCQkJZ2ludAkgICAg
ICAgd2lkdGgsCgkJCWdpbnQJICAgICAgIGhlaWdodCk7CnZvaWQgZ3RrX3BhaW50X3RhYiAgICAg
KEd0a1N0eWxlICAgICAgKnN0eWxlLAoJCQlHZGtXaW5kb3cgICAgICp3aW5kb3csCgkJCUd0a1N0
YXRlVHlwZSAgIHN0YXRlX3R5cGUsCgkJCUd0a1NoYWRvd1R5cGUgIHNoYWRvd190eXBlLAoJCQlH
ZGtSZWN0YW5nbGUgICphcmVhLAoJCQlHdGtXaWRnZXQgICAgICp3aWRnZXQsCgkJCWdjaGFyCSAg
ICAgICpkZXRhaWwsCgkJCWdpbnQJICAgICAgIHgsCgkJCWdpbnQJICAgICAgIHksCgkJCWdpbnQJ
ICAgICAgIHdpZHRoLAoJCQlnaW50CSAgICAgICBoZWlnaHQpOwp2b2lkIGd0a19wYWludF9zaGFk
b3dfZ2FwIChHdGtTdHlsZQkgICpzdHlsZSwKCQkJICAgR2RrV2luZG93CSAgKndpbmRvdywKCQkJ
ICAgR3RrU3RhdGVUeXBlCSAgIHN0YXRlX3R5cGUsCgkJCSAgIEd0a1NoYWRvd1R5cGUgICBzaGFk
b3dfdHlwZSwKCQkJICAgR2RrUmVjdGFuZ2xlCSAgKmFyZWEsCgkJCSAgIEd0a1dpZGdldAkgICp3
aWRnZXQsCgkJCSAgIGdjaGFyCSAgKmRldGFpbCwKCQkJICAgZ2ludAkJICAgeCwKCQkJICAgZ2lu
dAkJICAgeSwKCQkJICAgZ2ludAkJICAgd2lkdGgsCgkJCSAgIGdpbnQJCSAgIGhlaWdodCwKCQkJ
ICAgR3RrUG9zaXRpb25UeXBlIGdhcF9zaWRlLAoJCQkgICBnaW50CQkgICBnYXBfeCwKCQkJICAg
Z2ludAkJICAgZ2FwX3dpZHRoKTsKdm9pZCBndGtfcGFpbnRfYm94X2dhcCAoR3RrU3R5bGUgICAg
ICAgKnN0eWxlLAoJCQlHZGtXaW5kb3cgICAgICAqd2luZG93LAoJCQlHdGtTdGF0ZVR5cGUJc3Rh
dGVfdHlwZSwKCQkJR3RrU2hhZG93VHlwZQlzaGFkb3dfdHlwZSwKCQkJR2RrUmVjdGFuZ2xlICAg
KmFyZWEsCgkJCUd0a1dpZGdldCAgICAgICp3aWRnZXQsCgkJCWdjaGFyCSAgICAgICAqZGV0YWls
LAoJCQlnaW50CQl4LAoJCQlnaW50CQl5LAoJCQlnaW50CQl3aWR0aCwKCQkJZ2ludAkJaGVpZ2h0
LAoJCQlHdGtQb3NpdGlvblR5cGUgZ2FwX3NpZGUsCgkJCWdpbnQJCWdhcF94LAoJCQlnaW50CQln
YXBfd2lkdGgpOwp2b2lkIGd0a19wYWludF9leHRlbnNpb24gKEd0a1N0eWxlCSAqc3R5bGUsCgkJ
CSAgR2RrV2luZG93CSAqd2luZG93LAoJCQkgIEd0a1N0YXRlVHlwZQkgIHN0YXRlX3R5cGUsCgkJ
CSAgR3RrU2hhZG93VHlwZQkgIHNoYWRvd190eXBlLAoJCQkgIEdka1JlY3RhbmdsZQkgKmFyZWEs
CgkJCSAgR3RrV2lkZ2V0CSAqd2lkZ2V0LAoJCQkgIGdjaGFyCQkgKmRldGFpbCwKCQkJICBnaW50
CQkgIHgsCgkJCSAgZ2ludAkJICB5LAoJCQkgIGdpbnQJCSAgd2lkdGgsCgkJCSAgZ2ludAkJICBo
ZWlnaHQsCgkJCSAgR3RrUG9zaXRpb25UeXBlIGdhcF9zaWRlKTsKdm9pZCBndGtfcGFpbnRfZm9j
dXMgICAoR3RrU3R5bGUgICAgICAqc3R5bGUsCgkJCUdka1dpbmRvdyAgICAgKndpbmRvdywKCQkJ
R2RrUmVjdGFuZ2xlICAqYXJlYSwKCQkJR3RrV2lkZ2V0ICAgICAqd2lkZ2V0LAoJCQlnY2hhcgkg
ICAgICAqZGV0YWlsLAoJCQlnaW50CSAgICAgICB4LAoJCQlnaW50CSAgICAgICB5LAoJCQlnaW50
CSAgICAgICB3aWR0aCwKCQkJZ2ludAkgICAgICAgaGVpZ2h0KTsKdm9pZCBndGtfcGFpbnRfc2xp
ZGVyICAoR3RrU3R5bGUgICAgICAqc3R5bGUsCgkJCUdka1dpbmRvdyAgICAgKndpbmRvdywKCQkJ
R3RrU3RhdGVUeXBlICAgc3RhdGVfdHlwZSwKCQkJR3RrU2hhZG93VHlwZSAgc2hhZG93X3R5cGUs
CgkJCUdka1JlY3RhbmdsZSAgKmFyZWEsCgkJCUd0a1dpZGdldCAgICAgKndpZGdldCwKCQkJZ2No
YXIJICAgICAgKmRldGFpbCwKCQkJZ2ludAkgICAgICAgeCwKCQkJZ2ludAkgICAgICAgeSwKCQkJ
Z2ludAkgICAgICAgd2lkdGgsCgkJCWdpbnQJICAgICAgIGhlaWdodCwKCQkJR3RrT3JpZW50YXRp
b24gb3JpZW50YXRpb24pOwp2b2lkIGd0a19wYWludF9oYW5kbGUgIChHdGtTdHlsZSAgICAgICpz
dHlsZSwKCQkJR2RrV2luZG93ICAgICAqd2luZG93LAoJCQlHdGtTdGF0ZVR5cGUgICBzdGF0ZV90
eXBlLAoJCQlHdGtTaGFkb3dUeXBlICBzaGFkb3dfdHlwZSwKCQkJR2RrUmVjdGFuZ2xlICAqYXJl
YSwKCQkJR3RrV2lkZ2V0ICAgICAqd2lkZ2V0LAoJCQlnY2hhcgkgICAgICAqZGV0YWlsLAoJCQln
aW50CSAgICAgICB4LAoJCQlnaW50CSAgICAgICB5LAoJCQlnaW50CSAgICAgICB3aWR0aCwKCQkJ
Z2ludAkgICAgICAgaGVpZ2h0LAoJCQlHdGtPcmllbnRhdGlvbiBvcmllbnRhdGlvbik7CgoKCn0K
CgoKCiMgMzQgIi91c3IvaW5jbHVkZS9ndGsvZ3Rrd2lkZ2V0LmgiIDIgMwoKCgoKZXh0ZXJuICJD
IiB7CgoKCiAKCgp0eXBlZGVmIGVudW0KewogIEdUS19UT1BMRVZFTCAgICAgICAgID0gMSA8PCA0
LAogIEdUS19OT19XSU5ET1cgICAgICAgID0gMSA8PCA1LAogIEdUS19SRUFMSVpFRCAgICAgICAg
ID0gMSA8PCA2LAogIEdUS19NQVBQRUQgICAgICAgICAgID0gMSA8PCA3LAogIEdUS19WSVNJQkxF
ICAgICAgICAgID0gMSA8PCA4LAogIEdUS19TRU5TSVRJVkUgICAgICAgID0gMSA8PCA5LAogIEdU
S19QQVJFTlRfU0VOU0lUSVZFID0gMSA8PCAxMCwKICBHVEtfQ0FOX0ZPQ1VTICAgICAgICA9IDEg
PDwgMTEsCiAgR1RLX0hBU19GT0NVUyAgICAgICAgPSAxIDw8IDEyLAogIEdUS19DQU5fREVGQVVM
VCAgICAgID0gMSA8PCAxMywKICBHVEtfSEFTX0RFRkFVTFQgICAgICA9IDEgPDwgMTQsCiAgR1RL
X0hBU19HUkFCCSAgICAgICA9IDEgPDwgMTUsCiAgR1RLX1JDX1NUWUxFCSAgICAgICA9IDEgPDwg
MTYsCiAgR1RLX0NPTVBPU0lURV9DSElMRCAgPSAxIDw8IDE3LAogIEdUS19OT19SRVBBUkVOVCAg
ICAgID0gMSA8PCAxOCwKICBHVEtfQVBQX1BBSU5UQUJMRSAgICA9IDEgPDwgMTksCiAgR1RLX1JF
Q0VJVkVTX0RFRkFVTFQgPSAxIDw8IDIwCn0gR3RrV2lkZ2V0RmxhZ3M7CgogCgoKCgoKCgoKIAoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAKIAoKCgogIAogIAogIAp0eXBlZGVmIHN0cnVj
dCBfR3RrUmVxdWlzaXRpb24JICBHdGtSZXF1aXNpdGlvbjsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0Fs
bG9jYXRpb24JICBHdGtBbGxvY2F0aW9uOwp0eXBlZGVmIHN0cnVjdCBfR3RrU2VsZWN0aW9uRGF0
YSBHdGtTZWxlY3Rpb25EYXRhOwp0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0Q2xhc3MJICBHdGtX
aWRnZXRDbGFzczsKdHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldEF1eEluZm8gIEd0a1dpZGdldEF1
eEluZm87CnR5cGVkZWYgc3RydWN0IF9HdGtXaWRnZXRTaGFwZUluZm8gR3RrV2lkZ2V0U2hhcGVJ
bmZvOwoKdHlwZWRlZiB2b2lkICgqR3RrQ2FsbGJhY2spIChHdGtXaWRnZXQgKndpZGdldCwKCQkJ
ICAgICBncG9pbnRlcglkYXRhKTsKCiAKCgpzdHJ1Y3QgX0d0a1JlcXVpc2l0aW9uCnsKICBnaW50
MTYgd2lkdGg7CiAgZ2ludDE2IGhlaWdodDsKfTsKCiAKCgoKc3RydWN0IF9HdGtBbGxvY2F0aW9u
CnsKICBnaW50MTYgeDsKICBnaW50MTYgeTsKICBndWludDE2IHdpZHRoOwogIGd1aW50MTYgaGVp
Z2h0Owp9OwoKIAoKCgoKCgoKCnN0cnVjdCBfR3RrU2VsZWN0aW9uRGF0YQp7CiAgR2RrQXRvbSBz
ZWxlY3Rpb247CiAgR2RrQXRvbSB0YXJnZXQ7CiAgR2RrQXRvbSB0eXBlOwogIGdpbnQJICBmb3Jt
YXQ7CiAgZ3VjaGFyICpkYXRhOwogIGdpbnQJICBsZW5ndGg7Cn07CgogCgoKCgpzdHJ1Y3QgX0d0
a1dpZGdldAp7CiAgIAoKCgoKCiAgR3RrT2JqZWN0IG9iamVjdDsKICAKICAgCgoKCgogIGd1aW50
MTYgcHJpdmF0ZV9mbGFnczsKICAKICAgCgoKICBndWludDggc3RhdGU7CiAgCiAgIAoKCgoKCiAg
Z3VpbnQ4IHNhdmVkX3N0YXRlOwogIAogICAKCgoKCgogIGdjaGFyICpuYW1lOwogIAogICAKCgoK
CiAgR3RrU3R5bGUgKnN0eWxlOwogIAogICAKCiAgR3RrUmVxdWlzaXRpb24gcmVxdWlzaXRpb247
CiAgCiAgIAoKICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247CiAgCiAgIAoKCgogIEdka1dpbmRv
dyAqd2luZG93OwogIAogICAKCiAgR3RrV2lkZ2V0ICpwYXJlbnQ7Cn07CgpzdHJ1Y3QgX0d0a1dp
ZGdldENsYXNzCnsKICAgCgoKCgoKICBHdGtPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CiAgCiAg
IAoKCgogIGd1aW50IGFjdGl2YXRlX3NpZ25hbDsKCiAgIAoKCgoKICBndWludCBzZXRfc2Nyb2xs
X2FkanVzdG1lbnRzX3NpZ25hbDsKICAKICAgCiAgdm9pZCAoKiBzaG93KQkJICAgICAgIChHdGtX
aWRnZXQgICAgICAqd2lkZ2V0KTsKICB2b2lkICgqIHNob3dfYWxsKSAgICAgICAgICAgIChHdGtX
aWRnZXQgICAgICAqd2lkZ2V0KTsKICB2b2lkICgqIGhpZGUpCQkgICAgICAgKEd0a1dpZGdldCAg
ICAgICp3aWRnZXQpOwogIHZvaWQgKCogaGlkZV9hbGwpICAgICAgICAgICAgKEd0a1dpZGdldCAg
ICAgICp3aWRnZXQpOwogIHZvaWQgKCogbWFwKQkJICAgICAgIChHdGtXaWRnZXQgICAgICAqd2lk
Z2V0KTsKICB2b2lkICgqIHVubWFwKQkgICAgICAgKEd0a1dpZGdldCAgICAgICp3aWRnZXQpOwog
IHZvaWQgKCogcmVhbGl6ZSkJICAgICAgIChHdGtXaWRnZXQgICAgICAqd2lkZ2V0KTsKICB2b2lk
ICgqIHVucmVhbGl6ZSkJICAgICAgIChHdGtXaWRnZXQgICAgICAqd2lkZ2V0KTsKICB2b2lkICgq
IGRyYXcpCQkgICAgICAgKEd0a1dpZGdldCAgICAgICp3aWRnZXQsCgkJCQlHZGtSZWN0YW5nbGUg
ICAqYXJlYSk7CiAgdm9pZCAoKiBkcmF3X2ZvY3VzKQkgICAgICAgKEd0a1dpZGdldCAgICAgICp3
aWRnZXQpOwogIHZvaWQgKCogZHJhd19kZWZhdWx0KQkgICAgICAgKEd0a1dpZGdldCAgICAgICp3
aWRnZXQpOwogIHZvaWQgKCogc2l6ZV9yZXF1ZXN0KQkgICAgICAgKEd0a1dpZGdldCAgICAgICp3
aWRnZXQsCgkJCQlHdGtSZXF1aXNpdGlvbiAqcmVxdWlzaXRpb24pOwogIHZvaWQgKCogc2l6ZV9h
bGxvY2F0ZSkgICAgICAgKEd0a1dpZGdldCAgICAgICp3aWRnZXQsCgkJCQlHdGtBbGxvY2F0aW9u
ICAqYWxsb2NhdGlvbik7CiAgdm9pZCAoKiBzdGF0ZV9jaGFuZ2VkKSAgICAgICAoR3RrV2lkZ2V0
ICAgICAgKndpZGdldCwKCQkJCUd0a1N0YXRlVHlwZQlwcmV2aW91c19zdGF0ZSk7CiAgdm9pZCAo
KiBwYXJlbnRfc2V0KQkgICAgICAgKEd0a1dpZGdldCAgICAgICp3aWRnZXQsCgkJCQlHdGtXaWRn
ZXQgICAgICAqcHJldmlvdXNfcGFyZW50KTsKICB2b2lkICgqIHN0eWxlX3NldCkJICAgICAgIChH
dGtXaWRnZXQgICAgICAqd2lkZ2V0LAoJCQkJR3RrU3R5bGUgICAgICAgKnByZXZpb3VzX3N0eWxl
KTsKICAKICAgCiAgZ2ludCAoKiBhZGRfYWNjZWxlcmF0b3IpICAgICAoR3RrV2lkZ2V0ICAgICAg
KndpZGdldCwKCQkJCWd1aW50ICAgICAgICAgICBhY2NlbF9zaWduYWxfaWQsCgkJCQlHdGtBY2Nl
bEdyb3VwICAqYWNjZWxfZ3JvdXAsCgkJCQlndWludCAgICAgICAgICAgYWNjZWxfa2V5LAoJCQkJ
R2RrTW9kaWZpZXJUeXBlIGFjY2VsX21vZHMsCgkJCQlHdGtBY2NlbEZsYWdzICAgYWNjZWxfZmxh
Z3MpOwogIHZvaWQgKCogcmVtb3ZlX2FjY2VsZXJhdG9yKSAgKEd0a1dpZGdldCAgICAgICp3aWRn
ZXQsCgkJCQlHdGtBY2NlbEdyb3VwICAqYWNjZWxfZ3JvdXAsCgkJCQlndWludCAgICAgICAgICAg
YWNjZWxfa2V5LAoJCQkJR2RrTW9kaWZpZXJUeXBlIGFjY2VsX21vZHMpOwoKICAgCiAgdm9pZCAo
KiBncmFiX2ZvY3VzKSAgICAgICAgICAoR3RrV2lkZ2V0ICAgICAgKndpZGdldCk7CiAgCiAgIAog
IGdpbnQgKCogZXZlbnQpCQkgICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJICAgIEdk
a0V2ZW50CSAgICAgICAqZXZlbnQpOwogIGdpbnQgKCogYnV0dG9uX3ByZXNzX2V2ZW50KQkgICAo
R3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJICAgIEdka0V2ZW50QnV0dG9uICAgICAqZXZl
bnQpOwogIGdpbnQgKCogYnV0dG9uX3JlbGVhc2VfZXZlbnQpCSAgIChHdGtXaWRnZXQJICAgICAg
ICp3aWRnZXQsCgkJCQkgICAgR2RrRXZlbnRCdXR0b24gICAgICpldmVudCk7CiAgZ2ludCAoKiBt
b3Rpb25fbm90aWZ5X2V2ZW50KQkgICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJICAg
IEdka0V2ZW50TW90aW9uICAgICAqZXZlbnQpOwogIGdpbnQgKCogZGVsZXRlX2V2ZW50KQkJICAg
KEd0a1dpZGdldAkgICAgICAgKndpZGdldCwKCQkJCSAgICBHZGtFdmVudEFueQkgICAgICAgKmV2
ZW50KTsKICBnaW50ICgqIGRlc3Ryb3lfZXZlbnQpCSAgIChHdGtXaWRnZXQJICAgICAgICp3aWRn
ZXQsCgkJCQkgICAgR2RrRXZlbnRBbnkJICAgICAgICpldmVudCk7CiAgZ2ludCAoKiBleHBvc2Vf
ZXZlbnQpCQkgICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJICAgIEdka0V2ZW50RXhw
b3NlICAgICAqZXZlbnQpOwogIGdpbnQgKCoga2V5X3ByZXNzX2V2ZW50KQkgICAoR3RrV2lkZ2V0
CSAgICAgICAqd2lkZ2V0LAoJCQkJICAgIEdka0V2ZW50S2V5CSAgICAgICAqZXZlbnQpOwogIGdp
bnQgKCoga2V5X3JlbGVhc2VfZXZlbnQpCSAgIChHdGtXaWRnZXQJICAgICAgICp3aWRnZXQsCgkJ
CQkgICAgR2RrRXZlbnRLZXkJICAgICAgICpldmVudCk7CiAgZ2ludCAoKiBlbnRlcl9ub3RpZnlf
ZXZlbnQpCSAgIChHdGtXaWRnZXQJICAgICAgICp3aWRnZXQsCgkJCQkgICAgR2RrRXZlbnRDcm9z
c2luZyAgICpldmVudCk7CiAgZ2ludCAoKiBsZWF2ZV9ub3RpZnlfZXZlbnQpCSAgIChHdGtXaWRn
ZXQJICAgICAgICp3aWRnZXQsCgkJCQkgICAgR2RrRXZlbnRDcm9zc2luZyAgICpldmVudCk7CiAg
Z2ludCAoKiBjb25maWd1cmVfZXZlbnQpCSAgIChHdGtXaWRnZXQJICAgICAgICp3aWRnZXQsCgkJ
CQkgICAgR2RrRXZlbnRDb25maWd1cmUgICpldmVudCk7CiAgZ2ludCAoKiBmb2N1c19pbl9ldmVu
dCkJICAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCwKCQkJCSAgICBHZGtFdmVudEZvY3VzICAg
ICAgKmV2ZW50KTsKICBnaW50ICgqIGZvY3VzX291dF9ldmVudCkJICAgKEd0a1dpZGdldAkgICAg
ICAgKndpZGdldCwKCQkJCSAgICBHZGtFdmVudEZvY3VzICAgICAgKmV2ZW50KTsKICBnaW50ICgq
IG1hcF9ldmVudCkJCSAgIChHdGtXaWRnZXQJICAgICAgICp3aWRnZXQsCgkJCQkgICAgR2RrRXZl
bnRBbnkJICAgICAgICpldmVudCk7CiAgZ2ludCAoKiB1bm1hcF9ldmVudCkJCSAgIChHdGtXaWRn
ZXQJICAgICAgICp3aWRnZXQsCgkJCQkgICAgR2RrRXZlbnRBbnkJICAgICAgICpldmVudCk7CiAg
Z2ludCAoKiBwcm9wZXJ0eV9ub3RpZnlfZXZlbnQpICAgKEd0a1dpZGdldAkgICAgICAgKndpZGdl
dCwKCQkJCSAgICBHZGtFdmVudFByb3BlcnR5ICAgKmV2ZW50KTsKICBnaW50ICgqIHNlbGVjdGlv
bl9jbGVhcl9ldmVudCkgICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJICAgIEdka0V2
ZW50U2VsZWN0aW9uICAqZXZlbnQpOwogIGdpbnQgKCogc2VsZWN0aW9uX3JlcXVlc3RfZXZlbnQp
IChHdGtXaWRnZXQJICAgICAgICp3aWRnZXQsCgkJCQkgICAgR2RrRXZlbnRTZWxlY3Rpb24gICpl
dmVudCk7CiAgZ2ludCAoKiBzZWxlY3Rpb25fbm90aWZ5X2V2ZW50KSAgKEd0a1dpZGdldAkgICAg
ICAgKndpZGdldCwKCQkJCSAgICBHZGtFdmVudFNlbGVjdGlvbiAgKmV2ZW50KTsKICBnaW50ICgq
IHByb3hpbWl0eV9pbl9ldmVudCkJICAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCwKCQkJCSAg
ICBHZGtFdmVudFByb3hpbWl0eSAgKmV2ZW50KTsKICBnaW50ICgqIHByb3hpbWl0eV9vdXRfZXZl
bnQpCSAgIChHdGtXaWRnZXQJICAgICAgICp3aWRnZXQsCgkJCQkgICAgR2RrRXZlbnRQcm94aW1p
dHkgICpldmVudCk7CiAgZ2ludCAoKiB2aXNpYmlsaXR5X25vdGlmeV9ldmVudCkgIChHdGtXaWRn
ZXQJICAgICAgICp3aWRnZXQsCgkJCQkgICAgIEdka0V2ZW50VmlzaWJpbGl0eSAqZXZlbnQpOwog
IGdpbnQgKCogY2xpZW50X2V2ZW50KQkJICAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCwKCQkJ
CSAgICBHZGtFdmVudENsaWVudCAgICAgKmV2ZW50KTsKICBnaW50ICgqIG5vX2V4cG9zZV9ldmVu
dCkJICAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCwKCQkJCSAgICBHZGtFdmVudEFueQkgICAg
ICAgKmV2ZW50KTsKCiAgIAogIHZvaWQgKCogc2VsZWN0aW9uX2dldCkgICAgICAgICAgIChHdGtX
aWRnZXQgICAgICAgICAgKndpZGdldCwKCQkJCSAgICBHdGtTZWxlY3Rpb25EYXRhICAgKnNlbGVj
dGlvbl9kYXRhLAoJCQkJICAgIGd1aW50ICAgICAgICAgICAgICAgaW5mbywKCQkJCSAgICBndWlu
dCAgICAgICAgICAgICAgIHRpbWUpOwogIHZvaWQgKCogc2VsZWN0aW9uX3JlY2VpdmVkKSAgICAg
IChHdGtXaWRnZXQgICAgICAgICAgKndpZGdldCwKCQkJCSAgICBHdGtTZWxlY3Rpb25EYXRhICAg
KnNlbGVjdGlvbl9kYXRhLAoJCQkJICAgIGd1aW50ICAgICAgICAgICAgICAgdGltZSk7CgogICAK
ICB2b2lkICgqIGRyYWdfYmVnaW4pCSAgICAgICAgICAgKEd0a1dpZGdldAkgICAgICAgKndpZGdl
dCwKCQkJCSAgICBHZGtEcmFnQ29udGV4dCAgICAgKmNvbnRleHQpOwogIHZvaWQgKCogZHJhZ19l
bmQpCSAgICAgICAgICAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCwKCQkJCSAgICBHZGtEcmFn
Q29udGV4dCAgICAgKmNvbnRleHQpOwogIHZvaWQgKCogZHJhZ19kYXRhX2dldCkgICAgICAgICAg
IChHdGtXaWRnZXQgICAgICAgICAgKndpZGdldCwKCQkJCSAgICBHZGtEcmFnQ29udGV4dCAgICAg
KmNvbnRleHQsCgkJCQkgICAgR3RrU2VsZWN0aW9uRGF0YSAgICpzZWxlY3Rpb25fZGF0YSwKCQkJ
CSAgICBndWludCAgICAgICAgICAgICAgIGluZm8sCgkJCQkgICAgZ3VpbnQgICAgICAgICAgICAg
ICB0aW1lKTsKICB2b2lkICgqIGRyYWdfZGF0YV9kZWxldGUpICAgICAgICAoR3RrV2lkZ2V0CSAg
ICAgICAqd2lkZ2V0LAoJCQkJICAgIEdka0RyYWdDb250ZXh0ICAgICAqY29udGV4dCk7CgogICAK
ICB2b2lkICgqIGRyYWdfbGVhdmUpCSAgICAgICAgICAgKEd0a1dpZGdldAkgICAgICAgKndpZGdl
dCwKCQkJCSAgICBHZGtEcmFnQ29udGV4dCAgICAgKmNvbnRleHQsCgkJCQkgICAgZ3VpbnQgICAg
ICAgICAgICAgICB0aW1lKTsKICBnYm9vbGVhbiAoKiBkcmFnX21vdGlvbikgICAgICAgICAoR3Rr
V2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJICAgIEdka0RyYWdDb250ZXh0ICAgICAqY29udGV4
dCwKCQkJCSAgICBnaW50ICAgICAgICAgICAgICAgIHgsCgkJCQkgICAgZ2ludCAgICAgICAgICAg
ICAgICB5LAoJCQkJICAgIGd1aW50ICAgICAgICAgICAgICAgdGltZSk7CiAgZ2Jvb2xlYW4gKCog
ZHJhZ19kcm9wKSAgICAgICAgICAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCwKCQkJCSAgICBH
ZGtEcmFnQ29udGV4dCAgICAgKmNvbnRleHQsCgkJCQkgICAgZ2ludCAgICAgICAgICAgICAgICB4
LAoJCQkJICAgIGdpbnQgICAgICAgICAgICAgICAgeSwKCQkJCSAgICBndWludCAgICAgICAgICAg
ICAgIHRpbWUpOwogIHZvaWQgKCogZHJhZ19kYXRhX3JlY2VpdmVkKSAgICAgIChHdGtXaWRnZXQg
ICAgICAgICAgKndpZGdldCwKCQkJCSAgICBHZGtEcmFnQ29udGV4dCAgICAgKmNvbnRleHQsCgkJ
CQkgICAgZ2ludCAgICAgICAgICAgICAgICB4LAoJCQkJICAgIGdpbnQgICAgICAgICAgICAgICAg
eSwKCQkJCSAgICBHdGtTZWxlY3Rpb25EYXRhICAgKnNlbGVjdGlvbl9kYXRhLAoJCQkJICAgIGd1
aW50ICAgICAgICAgICAgICAgaW5mbywKCQkJCSAgICBndWludCAgICAgICAgICAgICAgIHRpbWUp
OwogIAogICAKICB2b2lkICgqIGRlYnVnX21zZykJCSAgIChHdGtXaWRnZXQJICAgICAgICp3aWRn
ZXQsCgkJCQkgICAgY29uc3QgZ2NoYXIJICAgICAgICpzdHJpbmcpOwoKICAgCiAgR3RrRnVuY3Rp
b24gcGFkMTsKICBHdGtGdW5jdGlvbiBwYWQyOwogIEd0a0Z1bmN0aW9uIHBhZDM7CiAgR3RrRnVu
Y3Rpb24gcGFkNDsKfTsKCnN0cnVjdCBfR3RrV2lkZ2V0QXV4SW5mbwp7CiAgZ2ludDE2ICB4Owog
IGdpbnQxNiAgeTsKICBnaW50MTYgd2lkdGg7CiAgZ2ludDE2IGhlaWdodDsKfTsKCnN0cnVjdCBf
R3RrV2lkZ2V0U2hhcGVJbmZvCnsKICBnaW50MTYgICAgIG9mZnNldF94OwogIGdpbnQxNiAgICAg
b2Zmc2V0X3k7CiAgR2RrQml0bWFwICpzaGFwZV9tYXNrOwp9OwoKCkd0a1R5cGUJICAgZ3RrX3dp
ZGdldF9nZXRfdHlwZQkJICAodm9pZCk7Ckd0a1dpZGdldCogZ3RrX3dpZGdldF9uZXcJCSAgKEd0
a1R5cGUJCXR5cGUsCgkJCQkJICAgY29uc3QgZ2NoYXIJICAgICAgICpmaXJzdF9hcmdfbmFtZSwK
CQkJCQkgICAuLi4pOwpHdGtXaWRnZXQqIGd0a193aWRnZXRfbmV3dgkJICAoR3RrVHlwZQkJdHlw
ZSwKCQkJCQkgICBndWludAkJbmFyZ3MsCgkJCQkJICAgR3RrQXJnCSAgICAgICAqYXJncyk7CnZv
aWQJICAgZ3RrX3dpZGdldF9yZWYJCSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCk7CnZvaWQJ
ICAgZ3RrX3dpZGdldF91bnJlZgkJICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0KTsKdm9pZAkg
ICBndGtfd2lkZ2V0X2Rlc3Ryb3kJCSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCk7CnZvaWQJ
ICAgZ3RrX3dpZGdldF9kZXN0cm95ZWQJCSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCwKCQkJ
CQkgICBHdGtXaWRnZXQJICAgICAgKip3aWRnZXRfcG9pbnRlcik7CnZvaWQJICAgZ3RrX3dpZGdl
dF9nZXQJCSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCwKCQkJCQkgICBHdGtBcmcJICAgICAg
ICphcmcpOwp2b2lkCSAgIGd0a193aWRnZXRfZ2V0dgkJICAoR3RrV2lkZ2V0CSAgICAgICAqd2lk
Z2V0LAoJCQkJCSAgIGd1aW50CQluYXJncywKCQkJCQkgICBHdGtBcmcJICAgICAgICphcmdzKTsK
dm9pZAkgICBndGtfd2lkZ2V0X3NldAkJICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJ
CSAgIGNvbnN0IGdjaGFyICAgICAgICAgKmZpcnN0X2FyZ19uYW1lLAoJCQkJCSAgIC4uLik7CnZv
aWQJICAgZ3RrX3dpZGdldF9zZXR2CQkgIChHdGtXaWRnZXQJICAgICAgICp3aWRnZXQsCgkJCQkJ
ICAgZ3VpbnQJCW5hcmdzLAoJCQkJCSAgIEd0a0FyZwkgICAgICAgKmFyZ3MpOwp2b2lkCSAgIGd0
a193aWRnZXRfdW5wYXJlbnQJCSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCk7CnZvaWQJICAg
Z3RrX3dpZGdldF9zaG93CQkgIChHdGtXaWRnZXQJICAgICAgICp3aWRnZXQpOwp2b2lkICAgICAg
IGd0a193aWRnZXRfc2hvd19ub3cgICAgICAgICAgICAoR3RrV2lkZ2V0ICAgICAgICAgICAqd2lk
Z2V0KTsKdm9pZAkgICBndGtfd2lkZ2V0X2hpZGUJCSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdl
dCk7CnZvaWQJICAgZ3RrX3dpZGdldF9zaG93X2FsbAkJICAoR3RrV2lkZ2V0CSAgICAgICAqd2lk
Z2V0KTsKdm9pZAkgICBndGtfd2lkZ2V0X2hpZGVfYWxsCQkgIChHdGtXaWRnZXQJICAgICAgICp3
aWRnZXQpOwp2b2lkCSAgIGd0a193aWRnZXRfbWFwCQkgIChHdGtXaWRnZXQJICAgICAgICp3aWRn
ZXQpOwp2b2lkCSAgIGd0a193aWRnZXRfdW5tYXAJCSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdl
dCk7CnZvaWQJICAgZ3RrX3dpZGdldF9yZWFsaXplCQkgIChHdGtXaWRnZXQJICAgICAgICp3aWRn
ZXQpOwp2b2lkCSAgIGd0a193aWRnZXRfdW5yZWFsaXplCQkgIChHdGtXaWRnZXQJICAgICAgICp3
aWRnZXQpOwoKIAp2b2lkCSAgIGd0a193aWRnZXRfcXVldWVfZHJhdwkgIChHdGtXaWRnZXQJICAg
ICAgICp3aWRnZXQpOwp2b2lkCSAgIGd0a193aWRnZXRfcXVldWVfZHJhd19hcmVhCSAgKEd0a1dp
ZGdldAkgICAgICAgKndpZGdldCwKCQkJCQkgICBnaW50ICAgICAgICAgICAgICAgICB4LAoJCQkJ
CSAgIGdpbnQgICAgICAgICAgICAgICAgIHksCgkJCQkJICAgZ2ludCAgICAgICAgICAgICAgICAg
d2lkdGgsCgkJCQkJICAgZ2ludCAgICAgICAgICAgICAgICAgaGVpZ2h0KTsKdm9pZAkgICBndGtf
d2lkZ2V0X3F1ZXVlX2NsZWFyCSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCk7CnZvaWQJICAg
Z3RrX3dpZGdldF9xdWV1ZV9jbGVhcl9hcmVhCSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCwK
CQkJCQkgICBnaW50ICAgICAgICAgICAgICAgICB4LAoJCQkJCSAgIGdpbnQgICAgICAgICAgICAg
ICAgIHksCgkJCQkJICAgZ2ludCAgICAgICAgICAgICAgICAgd2lkdGgsCgkJCQkJICAgZ2ludCAg
ICAgICAgICAgICAgICAgaGVpZ2h0KTsKCgp2b2lkCSAgIGd0a193aWRnZXRfcXVldWVfcmVzaXpl
CSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCk7CnZvaWQJICAgZ3RrX3dpZGdldF9kcmF3CQkg
IChHdGtXaWRnZXQJICAgICAgICp3aWRnZXQsCgkJCQkJICAgR2RrUmVjdGFuZ2xlCSAgICAgICAq
YXJlYSk7CnZvaWQJICAgZ3RrX3dpZGdldF9kcmF3X2ZvY3VzCSAgKEd0a1dpZGdldAkgICAgICAg
KndpZGdldCk7CnZvaWQJICAgZ3RrX3dpZGdldF9kcmF3X2RlZmF1bHQJICAoR3RrV2lkZ2V0CSAg
ICAgICAqd2lkZ2V0KTsKdm9pZAkgICBndGtfd2lkZ2V0X3NpemVfcmVxdWVzdAkgIChHdGtXaWRn
ZXQJICAgICAgICp3aWRnZXQsCgkJCQkJICAgR3RrUmVxdWlzaXRpb24gICAgICAqcmVxdWlzaXRp
b24pOwp2b2lkCSAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZQkgIChHdGtXaWRnZXQJICAgICAg
ICp3aWRnZXQsCgkJCQkJICAgR3RrQWxsb2NhdGlvbiAgICAgICAqYWxsb2NhdGlvbik7CnZvaWQg
ICAgICAgZ3RrX3dpZGdldF9nZXRfY2hpbGRfcmVxdWlzaXRpb24gKEd0a1dpZGdldAkgICAgICAg
KndpZGdldCwKCQkJCQkgICAgIEd0a1JlcXVpc2l0aW9uICAgICpyZXF1aXNpdGlvbik7CnZvaWQJ
ICAgZ3RrX3dpZGdldF9hZGRfYWNjZWxlcmF0b3IJICAoR3RrV2lkZ2V0ICAgICAgICAgICAqd2lk
Z2V0LAoJCQkJCSAgIGNvbnN0IGdjaGFyICAgICAgICAgKmFjY2VsX3NpZ25hbCwKCQkJCQkgICBH
dGtBY2NlbEdyb3VwICAgICAgICphY2NlbF9ncm91cCwKCQkJCQkgICBndWludCAgICAgICAgICAg
ICAgICBhY2NlbF9rZXksCgkJCQkJICAgZ3VpbnQgICAgICAgICAgICAgICAgYWNjZWxfbW9kcywK
CQkJCQkgICBHdGtBY2NlbEZsYWdzICAgICAgICBhY2NlbF9mbGFncyk7CnZvaWQJICAgZ3RrX3dp
ZGdldF9yZW1vdmVfYWNjZWxlcmF0b3IgIChHdGtXaWRnZXQgICAgICAgICAgICp3aWRnZXQsCgkJ
CQkJICAgR3RrQWNjZWxHcm91cCAgICAgICAqYWNjZWxfZ3JvdXAsCgkJCQkJICAgZ3VpbnQgICAg
ICAgICAgICAgICAgYWNjZWxfa2V5LAoJCQkJCSAgIGd1aW50ICAgICAgICAgICAgICAgIGFjY2Vs
X21vZHMpOwp2b2lkCSAgIGd0a193aWRnZXRfcmVtb3ZlX2FjY2VsZXJhdG9ycyAoR3RrV2lkZ2V0
ICAgICAgICAgICAqd2lkZ2V0LAoJCQkJCSAgIGNvbnN0IGdjaGFyCSAgICAgICAqYWNjZWxfc2ln
bmFsLAoJCQkJCSAgIGdib29sZWFuCQl2aXNpYmxlX29ubHkpOwpndWludAkgICBndGtfd2lkZ2V0
X2FjY2VsZXJhdG9yX3NpZ25hbCAgKEd0a1dpZGdldCAgICAgICAgICAgKndpZGdldCwKCQkJCQkg
ICBHdGtBY2NlbEdyb3VwICAgICAgICphY2NlbF9ncm91cCwKCQkJCQkgICBndWludCAgICAgICAg
ICAgICAgICBhY2NlbF9rZXksCgkJCQkJICAgZ3VpbnQgICAgICAgICAgICAgICAgYWNjZWxfbW9k
cyk7CnZvaWQJICAgZ3RrX3dpZGdldF9sb2NrX2FjY2VsZXJhdG9ycyAgIChHdGtXaWRnZXQJICAg
ICAgICp3aWRnZXQpOwp2b2lkCSAgIGd0a193aWRnZXRfdW5sb2NrX2FjY2VsZXJhdG9ycyAoR3Rr
V2lkZ2V0CSAgICAgICAqd2lkZ2V0KTsKZ2Jvb2xlYW4gICBndGtfd2lkZ2V0X2FjY2VsZXJhdG9y
c19sb2NrZWQgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCk7CmdpbnQJICAgZ3RrX3dpZGdldF9l
dmVudAkJICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJCSAgIEdka0V2ZW50CSAgICAg
ICAqZXZlbnQpOwoKZ2Jvb2xlYW4gICBndGtfd2lkZ2V0X2FjdGl2YXRlCQkgICAgIChHdGtXaWRn
ZXQJICAgICAgICp3aWRnZXQpOwpnYm9vbGVhbiAgIGd0a193aWRnZXRfc2V0X3Njcm9sbF9hZGp1
c3RtZW50cyAoR3RrV2lkZ2V0ICAgICAgICAqd2lkZ2V0LAoJCQkJCSAgICAgIEd0a0FkanVzdG1l
bnQgICAgKmhhZGp1c3RtZW50LAoJCQkJCSAgICAgIEd0a0FkanVzdG1lbnQgICAgKnZhZGp1c3Rt
ZW50KTsKICAgICAKdm9pZAkgICBndGtfd2lkZ2V0X3JlcGFyZW50CQkgIChHdGtXaWRnZXQJICAg
ICAgICp3aWRnZXQsCgkJCQkJICAgR3RrV2lkZ2V0CSAgICAgICAqbmV3X3BhcmVudCk7CnZvaWQJ
ICAgZ3RrX3dpZGdldF9wb3B1cAkJICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJCSAg
IGdpbnQJCQl4LAoJCQkJCSAgIGdpbnQJCQl5KTsKZ2ludAkgICBndGtfd2lkZ2V0X2ludGVyc2Vj
dAkJICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJCSAgIEdka1JlY3RhbmdsZQkgICAg
ICAgKmFyZWEsCgkJCQkJICAgR2RrUmVjdGFuZ2xlCSAgICAgICAqaW50ZXJzZWN0aW9uKTsKCnZv
aWQJICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzCSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCk7
CnZvaWQJICAgZ3RrX3dpZGdldF9ncmFiX2RlZmF1bHQJICAoR3RrV2lkZ2V0CSAgICAgICAqd2lk
Z2V0KTsKCnZvaWQJICAgZ3RrX3dpZGdldF9zZXRfbmFtZQkJICAoR3RrV2lkZ2V0CSAgICAgICAq
d2lkZ2V0LAoJCQkJCSAgIGNvbnN0IGdjaGFyCSAgICAgICAqbmFtZSk7CmdjaGFyKgkgICBndGtf
d2lkZ2V0X2dldF9uYW1lCQkgIChHdGtXaWRnZXQJICAgICAgICp3aWRnZXQpOwp2b2lkCSAgIGd0
a193aWRnZXRfc2V0X3N0YXRlCQkgIChHdGtXaWRnZXQJICAgICAgICp3aWRnZXQsCgkJCQkJICAg
R3RrU3RhdGVUeXBlCQlzdGF0ZSk7CnZvaWQJICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlCSAg
KEd0a1dpZGdldAkgICAgICAgKndpZGdldCwKCQkJCQkgICBnYm9vbGVhbgkJc2Vuc2l0aXZlKTsK
dm9pZAkgICBndGtfd2lkZ2V0X3NldF9hcHBfcGFpbnRhYmxlCSAgKEd0a1dpZGdldAkgICAgICAg
KndpZGdldCwKCQkJCQkgICBnYm9vbGVhbgkJYXBwX3BhaW50YWJsZSk7CnZvaWQJICAgZ3RrX3dp
ZGdldF9zZXRfcGFyZW50CSAgKEd0a1dpZGdldAkgICAgICAgKndpZGdldCwKCQkJCQkgICBHdGtX
aWRnZXQJICAgICAgICpwYXJlbnQpOwp2b2lkCSAgIGd0a193aWRnZXRfc2V0X3BhcmVudF93aW5k
b3cJICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJCSAgIEdka1dpbmRvdwkgICAgICAg
KnBhcmVudF93aW5kb3cpOwpHZGtXaW5kb3cgKmd0a193aWRnZXRfZ2V0X3BhcmVudF93aW5kb3cJ
ICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0KTsKdm9pZAkgICBndGtfd2lkZ2V0X3NldF91cG9z
aXRpb24JICAoR3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0LAoJCQkJCSAgIGdpbnQJCQl4LAoJCQkJ
CSAgIGdpbnQJCQl5KTsKdm9pZAkgICBndGtfd2lkZ2V0X3NldF91c2l6ZQkJICAoR3RrV2lkZ2V0
CSAgICAgICAqd2lkZ2V0LAoJCQkJCSAgIGdpbnQJCQl3aWR0aCwKCQkJCQkgICBnaW50CQkJaGVp
Z2h0KTsKdm9pZAkgICBndGtfd2lkZ2V0X3NldF9ldmVudHMJICAoR3RrV2lkZ2V0CSAgICAgICAq
d2lkZ2V0LAoJCQkJCSAgIGdpbnQJCQlldmVudHMpOwp2b2lkICAgICAgIGd0a193aWRnZXRfYWRk
X2V2ZW50cyAgICAgICAgICAoR3RrV2lkZ2V0ICAgICAgICAgICAqd2lkZ2V0LAoJCQkJCSAgIGdp
bnQJICAgICAgICAgICAgICAgIGV2ZW50cyk7CnZvaWQJICAgZ3RrX3dpZGdldF9zZXRfZXh0ZW5z
aW9uX2V2ZW50cyAoR3RrV2lkZ2V0CQkqd2lkZ2V0LAoJCQkJCSAgICBHZGtFeHRlbnNpb25Nb2Rl
CW1vZGUpOwoKR2RrRXh0ZW5zaW9uTW9kZSBndGtfd2lkZ2V0X2dldF9leHRlbnNpb25fZXZlbnRz
IChHdGtXaWRnZXQJKndpZGdldCk7Ckd0a1dpZGdldCogICBndGtfd2lkZ2V0X2dldF90b3BsZXZl
bAkoR3RrV2lkZ2V0CSp3aWRnZXQpOwpHdGtXaWRnZXQqICAgZ3RrX3dpZGdldF9nZXRfYW5jZXN0
b3IJKEd0a1dpZGdldAkqd2lkZ2V0LAoJCQkJCSBHdGtUeXBlCXdpZGdldF90eXBlKTsKR2RrQ29s
b3JtYXAqIGd0a193aWRnZXRfZ2V0X2NvbG9ybWFwCShHdGtXaWRnZXQJKndpZGdldCk7Ckdka1Zp
c3VhbCogICBndGtfd2lkZ2V0X2dldF92aXN1YWwJKEd0a1dpZGdldAkqd2lkZ2V0KTsKCiAKCgoK
Cgp2b2lkICAgICAgICAgZ3RrX3dpZGdldF9zZXRfY29sb3JtYXAgICAgKEd0a1dpZGdldCAgICAg
ICp3aWRnZXQsCgkJCQkJIEdka0NvbG9ybWFwICAgICpjb2xvcm1hcCk7CnZvaWQgICAgICAgICBn
dGtfd2lkZ2V0X3NldF92aXN1YWwgICAgICAoR3RrV2lkZ2V0ICAgICAgKndpZGdldCwgCgkJCQkJ
IEdka1Zpc3VhbCAgICAgICp2aXN1YWwpOwoKCmdpbnQJICAgICBndGtfd2lkZ2V0X2dldF9ldmVu
dHMJKEd0a1dpZGdldAkqd2lkZ2V0KTsKdm9pZAkgICAgIGd0a193aWRnZXRfZ2V0X3BvaW50ZXIJ
KEd0a1dpZGdldAkqd2lkZ2V0LAoJCQkJCSBnaW50CQkqeCwKCQkJCQkgZ2ludAkJKnkpOwoKZ2lu
dAkgICAgIGd0a193aWRnZXRfaXNfYW5jZXN0b3IJKEd0a1dpZGdldAkqd2lkZ2V0LAoJCQkJCSBH
dGtXaWRnZXQJKmFuY2VzdG9yKTsKCiAKCmdpbnQJICAgZ3RrX3dpZGdldF9oaWRlX29uX2RlbGV0
ZQkoR3RrV2lkZ2V0CSp3aWRnZXQpOwoKIAoKdm9pZAkgICBndGtfd2lkZ2V0X3NldF9zdHlsZQkJ
KEd0a1dpZGdldAkqd2lkZ2V0LAoJCQkJCSBHdGtTdHlsZQkqc3R5bGUpOwp2b2lkCSAgIGd0a193
aWRnZXRfc2V0X3JjX3N0eWxlCShHdGtXaWRnZXQJKndpZGdldCk7CnZvaWQJICAgZ3RrX3dpZGdl
dF9lbnN1cmVfc3R5bGUJKEd0a1dpZGdldAkqd2lkZ2V0KTsKR3RrU3R5bGUqICBndGtfd2lkZ2V0
X2dldF9zdHlsZQkJKEd0a1dpZGdldAkqd2lkZ2V0KTsKdm9pZAkgICBndGtfd2lkZ2V0X3Jlc3Rv
cmVfZGVmYXVsdF9zdHlsZSAoR3RrV2lkZ2V0CSp3aWRnZXQpOwoKdm9pZCAgICAgICBndGtfd2lk
Z2V0X21vZGlmeV9zdHlsZSAgICAgIChHdGtXaWRnZXQgICAgICAqd2lkZ2V0LAoJCQkJCSBHdGtS
Y1N0eWxlICAgICAqc3R5bGUpOwoKIAoKCnZvaWQgICBndGtfd2lkZ2V0X3NldF9jb21wb3NpdGVf
bmFtZQkoR3RrV2lkZ2V0CSp3aWRnZXQsCgkJCQkJIGNvbnN0IGdjaGFyICAgCSpuYW1lKTsKZ2No
YXIqIGd0a193aWRnZXRfZ2V0X2NvbXBvc2l0ZV9uYW1lCShHdGtXaWRnZXQJKndpZGdldCk7CiAg
ICAgCiAKdm9pZCAgICAgICBndGtfd2lkZ2V0X3Jlc2V0X3JjX3N0eWxlcyAgIChHdGtXaWRnZXQg
ICAgICAqd2lkZ2V0KTsKCiAKCgoKdm9pZAkgICAgIGd0a193aWRnZXRfcHVzaF9zdHlsZQkgICAg
IChHdGtTdHlsZQkgKnN0eWxlKTsKdm9pZAkgICAgIGd0a193aWRnZXRfcHVzaF9jb2xvcm1hcAkg
ICAgIChHZGtDb2xvcm1hcCAqY21hcCk7CnZvaWQJICAgICBndGtfd2lkZ2V0X3B1c2hfdmlzdWFs
CSAgICAgKEdka1Zpc3VhbAkgKnZpc3VhbCk7CnZvaWQJICAgICBndGtfd2lkZ2V0X3B1c2hfY29t
cG9zaXRlX2NoaWxkICh2b2lkKTsKdm9pZAkgICAgIGd0a193aWRnZXRfcG9wX2NvbXBvc2l0ZV9j
aGlsZCAgKHZvaWQpOwp2b2lkCSAgICAgZ3RrX3dpZGdldF9wb3Bfc3R5bGUJICAgICAodm9pZCk7
CnZvaWQJICAgICBndGtfd2lkZ2V0X3BvcF9jb2xvcm1hcAkgICAgICh2b2lkKTsKdm9pZAkgICAg
IGd0a193aWRnZXRfcG9wX3Zpc3VhbAkgICAgICh2b2lkKTsKCiAKCnZvaWQJICAgICBndGtfd2lk
Z2V0X3NldF9kZWZhdWx0X3N0eWxlICAgIChHdGtTdHlsZQkgICpzdHlsZSk7CnZvaWQJICAgICBn
dGtfd2lkZ2V0X3NldF9kZWZhdWx0X2NvbG9ybWFwIChHZGtDb2xvcm1hcCAqY29sb3JtYXApOwp2
b2lkCSAgICAgZ3RrX3dpZGdldF9zZXRfZGVmYXVsdF92aXN1YWwgICAoR2RrVmlzdWFsCSAgKnZp
c3VhbCk7Ckd0a1N0eWxlKiAgICBndGtfd2lkZ2V0X2dldF9kZWZhdWx0X3N0eWxlICAgICh2b2lk
KTsKR2RrQ29sb3JtYXAqIGd0a193aWRnZXRfZ2V0X2RlZmF1bHRfY29sb3JtYXAgKHZvaWQpOwpH
ZGtWaXN1YWwqICAgZ3RrX3dpZGdldF9nZXRfZGVmYXVsdF92aXN1YWwgICAodm9pZCk7CgogCgp2
b2lkCSAgICAgZ3RrX3dpZGdldF9zaGFwZV9jb21iaW5lX21hc2sgKEd0a1dpZGdldCAqd2lkZ2V0
LAoJCQkJCSAgICBHZGtCaXRtYXAgKnNoYXBlX21hc2ssCgkJCQkJICAgIGdpbnQgICAgICAgb2Zm
c2V0X3gsCgkJCQkJICAgIGdpbnQgICAgICAgb2Zmc2V0X3kpOwoKIAp2b2lkCSAgICAgZ3RrX3dp
ZGdldF9yZXNldF9zaGFwZXMJICAgKEd0a1dpZGdldCAqd2lkZ2V0KTsKCiAKCgp2b2lkCSAgICAg
Z3RrX3dpZGdldF9wYXRoCQkgICAoR3RrV2lkZ2V0ICp3aWRnZXQsCgkJCQkJICAgIGd1aW50ICAg
ICAqcGF0aF9sZW5ndGgsCgkJCQkJICAgIGdjaGFyICAgICoqcGF0aCwKCQkJCQkgICAgZ2NoYXIg
ICAgKipwYXRoX3JldmVyc2VkKTsKdm9pZAkgICAgIGd0a193aWRnZXRfY2xhc3NfcGF0aAkgICAo
R3RrV2lkZ2V0ICp3aWRnZXQsCgkJCQkJICAgIGd1aW50ICAgICAqcGF0aF9sZW5ndGgsCgkJCQkJ
ICAgIGdjaGFyICAgICoqcGF0aCwKCQkJCQkgICAgZ2NoYXIgICAgKipwYXRoX3JldmVyc2VkKTsK
CgoKCgoKCgoKfQoKCgoKIyAzMiAiL3Vzci9pbmNsdWRlL2d0ay9ndGttaXNjLmgiIDIgMwoKCgoK
ZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrTWlzYwkgICAgICBHdGtN
aXNjOwp0eXBlZGVmIHN0cnVjdCBfR3RrTWlzY0NsYXNzICBHdGtNaXNjQ2xhc3M7CgpzdHJ1Y3Qg
X0d0a01pc2MKewogIEd0a1dpZGdldCB3aWRnZXQ7CiAgCiAgZ2Zsb2F0IHhhbGlnbjsKICBnZmxv
YXQgeWFsaWduOwogIAogIGd1aW50MTYgeHBhZDsKICBndWludDE2IHlwYWQ7Cn07CgpzdHJ1Y3Qg
X0d0a01pc2NDbGFzcwp7CiAgR3RrV2lkZ2V0Q2xhc3MgcGFyZW50X2NsYXNzOwp9OwoKCkd0a1R5
cGUgZ3RrX21pc2NfZ2V0X3R5cGUgICAgICAodm9pZCk7CnZvaWQJZ3RrX21pc2Nfc2V0X2FsaWdu
bWVudCAoR3RrTWlzYyAqbWlzYywKCQkJCWdmbG9hdAkgeGFsaWduLAoJCQkJZ2Zsb2F0CSB5YWxp
Z24pOwp2b2lkCWd0a19taXNjX3NldF9wYWRkaW5nICAgKEd0a01pc2MgKm1pc2MsCgkJCQlnaW50
CSB4cGFkLAoJCQkJZ2ludAkgeXBhZCk7CgoKCn0KCgoKCiMgMzEgIi91c3IvaW5jbHVkZS9ndGsv
Z3RrbGFiZWwuaCIgMiAzCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0
IF9HdGtMYWJlbCAgICAgICBHdGtMYWJlbDsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0xhYmVsQ2xhc3Mg
IEd0a0xhYmVsQ2xhc3M7Cgp0eXBlZGVmIHN0cnVjdCBfR3RrTGFiZWxXb3JkICAgR3RrTGFiZWxX
b3JkOwoKc3RydWN0IF9HdGtMYWJlbAp7CiAgR3RrTWlzYyBtaXNjOwoKICBnY2hhciAgICAqbGFi
ZWw7CiAgR2RrV0NoYXIgKmxhYmVsX3djOwogIGdjaGFyICAgICpwYXR0ZXJuOwoKICBHdGtMYWJl
bFdvcmQgKndvcmRzOwoKICBndWludAkgIG1heF93aWR0aCA6IDE2OwogIGd1aW50ICAganR5cGUg
OiAyOwogIGdib29sZWFuIHdyYXA7Cn07CgpzdHJ1Y3QgX0d0a0xhYmVsQ2xhc3MKewogIEd0a01p
c2NDbGFzcyBwYXJlbnRfY2xhc3M7Cn07CgoKR3RrVHlwZSAgICBndGtfbGFiZWxfZ2V0X3R5cGUg
ICAgICAodm9pZCk7Ckd0a1dpZGdldCogZ3RrX2xhYmVsX25ldyAgICAgICAgICAgKGNvbnN0IGdj
aGFyICAgICAgICpzdHIpOwp2b2lkICAgICAgIGd0a19sYWJlbF9zZXRfdGV4dCAgICAgIChHdGtM
YWJlbCAgICAgICAgICAqbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyICAgICAgICpzdHIpOwp2b2lkICAgICAgIGd0a19sYWJlbF9zZXRfanVzdGlm
eSAgIChHdGtMYWJlbCAgICAgICAgICAqbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEd0a0p1c3RpZmljYXRpb24gICBqdHlwZSk7CnZvaWQJICAgZ3RrX2xhYmVsX3Nl
dF9wYXR0ZXJuICAgKEd0a0xhYmVsCSAgICAgICpsYWJlbCwKCQkJCSAgICBjb25zdCBnY2hhcgkg
ICAgICAqcGF0dGVybik7CnZvaWQJICAgZ3RrX2xhYmVsX3NldF9saW5lX3dyYXAgKEd0a0xhYmVs
CSAgICAgICpsYWJlbCwKCQkJCSAgICBnYm9vbGVhbiAgICAgICAgICAgd3JhcCk7CnZvaWQgICAg
ICAgZ3RrX2xhYmVsX2dldCAgICAgICAgICAgKEd0a0xhYmVsICAgICAgICAgICpsYWJlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NoYXIgICAgICAgICAgICAqKnN0cik7
CgogCgoKCmd1aW50ICAgICAgZ3RrX2xhYmVsX3BhcnNlX3VsaW5lICAgIChHdGtMYWJlbCAgICAg
ICAgICpsYWJlbCwKCQkJCSAgICAgY29uc3QgZ2NoYXIgICAgICAqc3RyaW5nKTsKCgoKCgoKfQoK
CgoKIyAzNCAiL3Vzci9pbmNsdWRlL2d0ay9ndGthY2NlbGxhYmVsLmgiIDIgMwoKCgoKZXh0ZXJu
ICJDIiB7CgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrQWNjZWxMYWJlbAkgICAgR3RrQWNj
ZWxMYWJlbDsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0FjY2VsTGFiZWxDbGFzcyAgR3RrQWNjZWxMYWJl
bENsYXNzOwoKc3RydWN0IF9HdGtBY2NlbExhYmVsCnsKICBHdGtMYWJlbCBsYWJlbDsKCiAgZ3Vp
bnQJICAgICBxdWV1ZV9pZDsKICBndWludAkgICAgIGFjY2VsX3BhZGRpbmc7CiAgR3RrV2lkZ2V0
ICphY2NlbF93aWRnZXQ7CiAgZ2NoYXIgICAgICphY2NlbF9zdHJpbmc7CiAgZ3VpbnQxNiAgICAg
YWNjZWxfc3RyaW5nX3dpZHRoOwp9OwoKc3RydWN0IF9HdGtBY2NlbExhYmVsQ2xhc3MKewogIEd0
a0xhYmVsQ2xhc3MJIHBhcmVudF9jbGFzczsKCiAgZ2NoYXIJCSpzaWduYWxfcXVvdGUxOwogIGdj
aGFyCQkqc2lnbmFsX3F1b3RlMjsKICBnY2hhcgkJKm1vZF9uYW1lX3NoaWZ0OwogIGdjaGFyCQkq
bW9kX25hbWVfY29udHJvbDsKICBnY2hhcgkJKm1vZF9uYW1lX2FsdDsKICBnY2hhcgkJKm1vZF9z
ZXBhcmF0b3I7CiAgZ2NoYXIJCSphY2NlbF9zZXBlcmF0b3I7CiAgZ3VpbnQJCSBsYXRpbjFfdG9f
Y2hhciA6IDE7Cn07CgoKR3RrVHlwZQkgICBndGtfYWNjZWxfbGFiZWxfZ2V0X3R5cGUJICAgICAo
dm9pZCk7Ckd0a1dpZGdldCogZ3RrX2FjY2VsX2xhYmVsX25ldwkJICAgICAoY29uc3QgZ2NoYXIg
ICAqc3RyaW5nKTsKZ3VpbnQJICAgZ3RrX2FjY2VsX2xhYmVsX2dldF9hY2NlbF93aWR0aCAgIChH
dGtBY2NlbExhYmVsICphY2NlbF9sYWJlbCk7CnZvaWQJICAgZ3RrX2FjY2VsX2xhYmVsX3NldF9h
Y2NlbF93aWRnZXQgIChHdGtBY2NlbExhYmVsICphY2NlbF9sYWJlbCwKCQkJCQkgICAgICBHdGtX
aWRnZXQJICAgICphY2NlbF93aWRnZXQpOwpnYm9vbGVhbiAgIGd0a19hY2NlbF9sYWJlbF9yZWZl
dGNoICAgICAgICAgICAoR3RrQWNjZWxMYWJlbCAqYWNjZWxfbGFiZWwpOwoKCgp9CgoKCgojIDMz
ICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3Rr
YWxpZ25tZW50LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDEgIi91
c3IvaW5jbHVkZS9ndGsvZ3RrYmluLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrY29udGFpbmVyLmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgX0d0a0NvbnRhaW5lcgkgICBHdGtDb250YWluZXI7CnR5cGVkZWYgc3RydWN0
IF9HdGtDb250YWluZXJDbGFzcyAgR3RrQ29udGFpbmVyQ2xhc3M7CgpzdHJ1Y3QgX0d0a0NvbnRh
aW5lcgp7CiAgR3RrV2lkZ2V0IHdpZGdldDsKICAKICBHdGtXaWRnZXQgKmZvY3VzX2NoaWxkOwog
IAogIGd1aW50IGJvcmRlcl93aWR0aCA6IDE2OwogIGd1aW50IG5lZWRfcmVzaXplIDogMTsKICBn
dWludCByZXNpemVfbW9kZSA6IDI7CiAgZ3VpbnQgcmVhbGxvY2F0ZV9yZWRyYXdzIDogMTsKICAK
ICAgCgogIEdTTGlzdCAqcmVzaXplX3dpZGdldHM7Cn07CgpzdHJ1Y3QgX0d0a0NvbnRhaW5lckNs
YXNzCnsKICBHdGtXaWRnZXRDbGFzcyBwYXJlbnRfY2xhc3M7CiAgCiAgZ3VpbnQgICBuX2NoaWxk
X2FyZ3M7CgogIHZvaWQgKCogYWRkKQkgICAgICAgCQkoR3RrQ29udGFpbmVyCSAqY29udGFpbmVy
LAoJCQkJIEd0a1dpZGdldAkgKndpZGdldCk7CiAgdm9pZCAoKiByZW1vdmUpICAgICAgCQkoR3Rr
Q29udGFpbmVyCSAqY29udGFpbmVyLAoJCQkJIEd0a1dpZGdldAkgKndpZGdldCk7CiAgdm9pZCAo
KiBjaGVja19yZXNpemUpCQkoR3RrQ29udGFpbmVyCSAqY29udGFpbmVyKTsKICB2b2lkICgqIGZv
cmFsbCkgICAgIAkJKEd0a0NvbnRhaW5lcgkgKmNvbnRhaW5lciwKCQkJCSBnYm9vbGVhbgkgIGlu
Y2x1ZGVfaW50ZXJuYWxzLAoJCQkJIEd0a0NhbGxiYWNrCSAgY2FsbGJhY2ssCgkJCQkgZ3BvaW50
ZXIJICBjYWxsYmFiY2tfZGF0YSk7CiAgZ2ludCAoKiBmb2N1cykgICAgICAgCQkoR3RrQ29udGFp
bmVyCSAqY29udGFpbmVyLAoJCQkJIEd0a0RpcmVjdGlvblR5cGUgIGRpcmVjdGlvbik7CiAgdm9p
ZCAoKiBzZXRfZm9jdXNfY2hpbGQpCShHdGtDb250YWluZXIJICpjb250YWluZXIsCgkJCQkgR3Rr
V2lkZ2V0CSAqd2lkZ2V0KTsKICBHdGtUeXBlICgqY2hpbGRfdHlwZSkJCShHdGtDb250YWluZXIJ
KmNvbnRhaW5lcik7CiAgdm9pZCAgICAoKnNldF9jaGlsZF9hcmcpCShHdGtDb250YWluZXIgCSpj
b250YWluZXIsCgkJCQkgR3RrV2lkZ2V0ICAgIAkqY2hpbGQsCgkJCQkgR3RrQXJnICAgICAgIAkq
YXJnLAoJCQkJIGd1aW50ICAgICAgICAJIGFyZ19pZCk7CiAgdm9pZCAgICAoKmdldF9jaGlsZF9h
cmcpCShHdGtDb250YWluZXIJKmNvbnRhaW5lciwKCQkJCSBHdGtXaWRnZXQgICAgCSpjaGlsZCwK
CQkJCSBHdGtBcmcgICAgICAgCSphcmcsCgkJCQkgZ3VpbnQgICAgICAgIAkgYXJnX2lkKTsKICBn
Y2hhciogICgqY29tcG9zaXRlX25hbWUpCShHdGtDb250YWluZXIJKmNvbnRhaW5lciwKCQkJCSBH
dGtXaWRnZXQJKmNoaWxkKTsKCiAgIAogIEd0a0Z1bmN0aW9uIHBhZDE7CiAgR3RrRnVuY3Rpb24g
cGFkMjsKfTsKCiAKCkd0a1R5cGUgZ3RrX2NvbnRhaW5lcl9nZXRfdHlwZQkJICh2b2lkKTsKdm9p
ZCAgICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJfd2lkdGgJIChHdGtDb250YWluZXIJICAgKmNv
bnRhaW5lciwKCQkJCQkgIGd1aW50CQkgICAgYm9yZGVyX3dpZHRoKTsKdm9pZCAgICBndGtfY29u
dGFpbmVyX2FkZAkJIChHdGtDb250YWluZXIJICAgKmNvbnRhaW5lciwKCQkJCQkgIEd0a1dpZGdl
dAkgICAqd2lkZ2V0KTsKdm9pZCAgICBndGtfY29udGFpbmVyX3JlbW92ZQkJIChHdGtDb250YWlu
ZXIJICAgKmNvbnRhaW5lciwKCQkJCQkgIEd0a1dpZGdldAkgICAqd2lkZ2V0KTsKCnZvaWQgICAg
Z3RrX2NvbnRhaW5lcl9zZXRfcmVzaXplX21vZGUgICAgKEd0a0NvbnRhaW5lciAgICAgKmNvbnRh
aW5lciwKCQkJCQkgIEd0a1Jlc2l6ZU1vZGUgICAgIHJlc2l6ZV9tb2RlKTsKCnZvaWQgICAgZ3Rr
X2NvbnRhaW5lcl9jaGVja19yZXNpemUgICAgICAgKEd0a0NvbnRhaW5lciAgICAgKmNvbnRhaW5l
cik7Cgp2b2lkICAgIGd0a19jb250YWluZXJfZm9yZWFjaAkJIChHdGtDb250YWluZXIJICAgKmNv
bnRhaW5lciwKCQkJCQkgIEd0a0NhbGxiYWNrCSAgICBjYWxsYmFjaywKCQkJCQkgIGdwb2ludGVy
CSAgICBjYWxsYmFja19kYXRhKTsKdm9pZCAgICBndGtfY29udGFpbmVyX2ZvcmVhY2hfZnVsbAkg
KEd0a0NvbnRhaW5lcgkgICAqY29udGFpbmVyLAoJCQkJCSAgR3RrQ2FsbGJhY2sJICAgIGNhbGxi
YWNrLAoJCQkJCSAgR3RrQ2FsbGJhY2tNYXJzaGFsIG1hcnNoYWwsCgkJCQkJICBncG9pbnRlcgkg
ICAgY2FsbGJhY2tfZGF0YSwKCQkJCQkgIEd0a0Rlc3Ryb3lOb3RpZnkgIG5vdGlmeSk7CkdMaXN0
KiBndGtfY29udGFpbmVyX2NoaWxkcmVuCQkgKEd0a0NvbnRhaW5lcgkgICAqY29udGFpbmVyKTsK
Z2ludCAgIGd0a19jb250YWluZXJfZm9jdXMJCSAgIChHdGtDb250YWluZXIgICAgICpjb250YWlu
ZXIsCgkJCQkJICAgIEd0a0RpcmVjdGlvblR5cGUgIGRpcmVjdGlvbik7CgogCgp2b2lkICAgZ3Rr
X2NvbnRhaW5lcl9zZXRfcmVhbGxvY2F0ZV9yZWRyYXdzIChHdGtDb250YWluZXIgICAgKmNvbnRh
aW5lciwKCQkJCQkgICAgIGdib29sZWFuICAgICAgICAgbmVlZHNfcmVkcmF3cyk7CnZvaWQgICBn
dGtfY29udGFpbmVyX3NldF9mb2N1c19jaGlsZAkgICAoR3RrQ29udGFpbmVyICAgICAqY29udGFp
bmVyLAoJCQkJCSAgICBHdGtXaWRnZXQJICAgICAqY2hpbGQpOwp2b2lkICAgZ3RrX2NvbnRhaW5l
cl9zZXRfZm9jdXNfdmFkanVzdG1lbnQgKEd0a0NvbnRhaW5lciAgICAgKmNvbnRhaW5lciwKCQkJ
CQkgICAgR3RrQWRqdXN0bWVudCAgICAqYWRqdXN0bWVudCk7CnZvaWQgICBndGtfY29udGFpbmVy
X3NldF9mb2N1c19oYWRqdXN0bWVudCAoR3RrQ29udGFpbmVyICAgICAqY29udGFpbmVyLAoJCQkJ
CSAgICBHdGtBZGp1c3RtZW50ICAgICphZGp1c3RtZW50KTsKdm9pZCAgICBndGtfY29udGFpbmVy
X3JlZ2lzdGVyX3RvcGxldmVsCSAgIChHdGtDb250YWluZXIgICAgICpjb250YWluZXIpOwp2b2lk
ICAgIGd0a19jb250YWluZXJfdW5yZWdpc3Rlcl90b3BsZXZlbCAgKEd0a0NvbnRhaW5lciAgICAg
KmNvbnRhaW5lcik7CkdMaXN0KiAgZ3RrX2NvbnRhaW5lcl9nZXRfdG9wbGV2ZWxzICAgICAgICAo
dm9pZCk7Cgp2b2lkICAgIGd0a19jb250YWluZXJfcmVzaXplX2NoaWxkcmVuICAgICAgKEd0a0Nv
bnRhaW5lciAgICAgKmNvbnRhaW5lcik7CgpHdGtUeXBlIGd0a19jb250YWluZXJfY2hpbGRfdHlw
ZQkgICAoR3RrQ29udGFpbmVyICAgICAqY29udGFpbmVyKTsKCiAKdm9pZCAgICBndGtfY29udGFp
bmVyX2FkZF9jaGlsZF9hcmdfdHlwZSAgIChjb25zdCBnY2hhciAgICAgICphcmdfbmFtZSwKCQkJ
CQkgICAgR3RrVHlwZSAgICAgICAgICAgYXJnX3R5cGUsCgkJCQkJICAgIGd1aW50ICAgICAgICAg
ICAgIGFyZ19mbGFncywKCQkJCQkgICAgZ3VpbnQgICAgICAgICAgICAgYXJnX2lkKTsKICAgICAK
IAoKCgoKCgoKCkd0a0FyZyogZ3RrX2NvbnRhaW5lcl9xdWVyeV9jaGlsZF9hcmdzCSAgIChHdGtU
eXBlCSAgICAgICBjbGFzc190eXBlLAoJCQkJCSAgICBndWludDMyICAgICAgICAgICoqYXJnX2Zs
YWdzLAoJCQkJCSAgICBndWludCAgICAgICAgICAgICAqbmFyZ3MpOwoKIAoKCgoKdm9pZCAgICBn
dGtfY29udGFpbmVyX2NoaWxkX2dldHYJICAgKEd0a0NvbnRhaW5lciAgICAgICpjb250YWluZXIs
CgkJCQkJICAgIEd0a1dpZGdldAkgICAgICAqY2hpbGQsCgkJCQkJICAgIGd1aW50CSAgICAgICBu
X2FyZ3MsCgkJCQkJICAgIEd0a0FyZwkgICAgICAqYXJncyk7CnZvaWQgICAgZ3RrX2NvbnRhaW5l
cl9jaGlsZF9zZXR2ICAgCSAgIChHdGtDb250YWluZXIgICAgICAqY29udGFpbmVyLAoJCQkJCSAg
ICBHdGtXaWRnZXQJICAgICAgKmNoaWxkLAoJCQkJCSAgICBndWludAkgICAgICAgbl9hcmdzLAoJ
CQkJCSAgICBHdGtBcmcJICAgICAgKmFyZ3MpOwoKIAoKCgoKdm9pZCAgICBndGtfY29udGFpbmVy
X2FkZF93aXRoX2FyZ3MJICAgKEd0a0NvbnRhaW5lciAgICAgICpjb250YWluZXIsCgkJCQkJICAg
IEd0a1dpZGdldAkgICAgICAqd2lkZ2V0LAoJCQkJCSAgICBjb25zdCBnY2hhcgkgICAgICAqZmly
c3RfYXJnX25hbWUsCgkJCQkJICAgIC4uLik7CnZvaWQgICAgZ3RrX2NvbnRhaW5lcl9hZGR2CQkg
ICAoR3RrQ29udGFpbmVyICAgICAgKmNvbnRhaW5lciwKCQkJCQkgICAgR3RrV2lkZ2V0CSAgICAg
ICp3aWRnZXQsCgkJCQkJICAgIGd1aW50CSAgICAgICBuX2FyZ3MsCgkJCQkJICAgIEd0a0FyZwkg
ICAgICAqYXJncyk7CnZvaWQJZ3RrX2NvbnRhaW5lcl9jaGlsZF9zZXQJCSAgIChHdGtDb250YWlu
ZXIgICAgICAqY29udGFpbmVyLAoJCQkJCSAgICBHdGtXaWRnZXQgICAgICAgICAqY2hpbGQsCgkJ
CQkJICAgIGNvbnN0IGdjaGFyCSAgICAgICpmaXJzdF9hcmdfbmFtZSwKCQkJCQkgICAgLi4uKTsK
ICAgICAKCiAKCnZvaWQJZ3RrX2NvbnRhaW5lcl9xdWV1ZV9yZXNpemUJICAgICAoR3RrQ29udGFp
bmVyICpjb250YWluZXIpOwp2b2lkICAgIGd0a19jb250YWluZXJfY2xlYXJfcmVzaXplX3dpZGdl
dHMgICAoR3RrQ29udGFpbmVyICpjb250YWluZXIpOwp2b2lkICAgIGd0a19jb250YWluZXJfYXJn
X3NldAkJICAgICAoR3RrQ29udGFpbmVyICpjb250YWluZXIsCgkJCQkJICAgICAgR3RrV2lkZ2V0
CSAgICpjaGlsZCwKCQkJCQkgICAgICBHdGtBcmcgICAgICAgKmFyZywKCQkJCQkgICAgICBHdGtB
cmdJbmZvICAgKmluZm8pOwp2b2lkICAgIGd0a19jb250YWluZXJfYXJnX2dldAkJICAgICAoR3Rr
Q29udGFpbmVyICpjb250YWluZXIsCgkJCQkJICAgICAgR3RrV2lkZ2V0CSAgICpjaGlsZCwKCQkJ
CQkgICAgICBHdGtBcmcgICAgICAgKmFyZywKCQkJCQkgICAgICBHdGtBcmdJbmZvICAgKmluZm8p
OwpnY2hhcioJZ3RrX2NvbnRhaW5lcl9jaGlsZF9hcmdzX2NvbGxlY3QgICAgIChHdGtUeXBlICAg
ICAgIG9iamVjdF90eXBlLAoJCQkJCSAgICAgIEdTTGlzdCAgICAgICoqYXJnX2xpc3RfcCwKCQkJ
CQkgICAgICBHU0xpc3QgICAgICAqKmluZm9fbGlzdF9wLAoJCQkJCSAgICAgIGNvbnN0IGdjaGFy
ICAqZmlyc3RfYXJnX25hbWUsCgkJCQkJICAgICAgdmFfbGlzdCAgICAgICBhcmdzKTsKZ2NoYXIq
ICBndGtfY29udGFpbmVyX2NoaWxkX2FyZ19nZXRfaW5mbyAgICAgKEd0a1R5cGUgICAgICAgb2Jq
ZWN0X3R5cGUsCgkJCQkJICAgICAgY29uc3QgZ2NoYXIgICphcmdfbmFtZSwKCQkJCQkgICAgICBH
dGtBcmdJbmZvICAqKmluZm9fcCk7CnZvaWQgICAgZ3RrX2NvbnRhaW5lcl9mb3JhbGwJCSAgICAg
KEd0a0NvbnRhaW5lciAqY29udGFpbmVyLAoJCQkJCSAgICAgIEd0a0NhbGxiYWNrICAgY2FsbGJh
Y2ssCgkJCQkJICAgICAgZ3BvaW50ZXIJICAgIGNhbGxiYWNrX2RhdGEpOwpnY2hhcioJZ3RrX2Nv
bnRhaW5lcl9jaGlsZF9jb21wb3NpdGVfbmFtZSAgIChHdGtDb250YWluZXIgKmNvbnRhaW5lciwK
CQkJCQkgICAgICBHdGtXaWRnZXQJICAgKmNoaWxkKTsKdm9pZCAgICBndGtfY29udGFpbmVyX2Rl
cXVldWVfcmVzaXplX2hhbmRsZXIgKEd0a0NvbnRhaW5lciAqY29udGFpbmVyKTsKCgp9CgoKCgoj
IDMyICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2Jpbi5oIiAyIDMKCgoKCmV4dGVybiAiQyIgewoKCgoK
CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a0JpbiAgICAgICBHdGtCaW47CnR5cGVkZWYgc3RydWN0
IF9HdGtCaW5DbGFzcyAgR3RrQmluQ2xhc3M7CgpzdHJ1Y3QgX0d0a0Jpbgp7CiAgR3RrQ29udGFp
bmVyIGNvbnRhaW5lcjsKCiAgR3RrV2lkZ2V0ICpjaGlsZDsKfTsKCnN0cnVjdCBfR3RrQmluQ2xh
c3MKewogIEd0a0NvbnRhaW5lckNsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtUeXBlICBndGtf
YmluX2dldF90eXBlICAgKHZvaWQpOwoKCgp9CgoKCgojIDMyICIvdXNyL2luY2x1ZGUvZ3RrL2d0
a2FsaWdubWVudC5oIiAyIDMKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1
Y3QgX0d0a0FsaWdubWVudCAgICAgICBHdGtBbGlnbm1lbnQ7CnR5cGVkZWYgc3RydWN0IF9HdGtB
bGlnbm1lbnRDbGFzcyAgR3RrQWxpZ25tZW50Q2xhc3M7CgpzdHJ1Y3QgX0d0a0FsaWdubWVudAp7
CiAgR3RrQmluIGJpbjsKCiAgZ2Zsb2F0IHhhbGlnbjsKICBnZmxvYXQgeWFsaWduOwogIGdmbG9h
dCB4c2NhbGU7CiAgZ2Zsb2F0IHlzY2FsZTsKfTsKCnN0cnVjdCBfR3RrQWxpZ25tZW50Q2xhc3MK
ewogIEd0a0JpbkNsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtUeXBlICAgIGd0a19hbGlnbm1l
bnRfZ2V0X3R5cGUgICAodm9pZCk7Ckd0a1dpZGdldCogZ3RrX2FsaWdubWVudF9uZXcgICAgICAg
IChnZmxvYXQgICAgICAgICAgICAgeGFsaWduLAoJCQkJICAgICBnZmxvYXQgICAgICAgICAgICAg
eWFsaWduLAoJCQkJICAgICBnZmxvYXQgICAgICAgICAgICAgeHNjYWxlLAoJCQkJICAgICBnZmxv
YXQgICAgICAgICAgICAgeXNjYWxlKTsKdm9pZCAgICAgICBndGtfYWxpZ25tZW50X3NldCAgICAg
ICAgKEd0a0FsaWdubWVudCAgICAgICphbGlnbm1lbnQsCgkJCQkgICAgIGdmbG9hdCAgICAgICAg
ICAgICB4YWxpZ24sCgkJCQkgICAgIGdmbG9hdCAgICAgICAgICAgICB5YWxpZ24sCgkJCQkgICAg
IGdmbG9hdCAgICAgICAgICAgICB4c2NhbGUsCgkJCQkgICAgIGdmbG9hdCAgICAgICAgICAgICB5
c2NhbGUpOwoKCgp9CgoKCgojIDM1ICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMKCgojIDEg
Ii91c3IvaW5jbHVkZS9ndGsvZ3RrYXNwZWN0ZnJhbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrZnJhbWUuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoK
CnR5cGVkZWYgc3RydWN0IF9HdGtGcmFtZSAgICAgICBHdGtGcmFtZTsKdHlwZWRlZiBzdHJ1Y3Qg
X0d0a0ZyYW1lQ2xhc3MgIEd0a0ZyYW1lQ2xhc3M7CgpzdHJ1Y3QgX0d0a0ZyYW1lCnsKICBHdGtC
aW4gYmluOwogIAogIGdjaGFyICpsYWJlbDsKICBnaW50MTYgc2hhZG93X3R5cGU7CiAgZ2ludDE2
IGxhYmVsX3dpZHRoOwogIGdpbnQxNiBsYWJlbF9oZWlnaHQ7CiAgZ2Zsb2F0IGxhYmVsX3hhbGln
bjsKICBnZmxvYXQgbGFiZWxfeWFsaWduOwp9OwoKc3RydWN0IF9HdGtGcmFtZUNsYXNzCnsKICBH
dGtCaW5DbGFzcyBwYXJlbnRfY2xhc3M7Cn07CgoKR3RrVHlwZSAgICBndGtfZnJhbWVfZ2V0X3R5
cGUgICAgICAgICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfZnJhbWVfbmV3ICAgICAgICAgICAgIChj
b25zdCBnY2hhciAgICpsYWJlbCk7CnZvaWQgICAgICAgZ3RrX2ZyYW1lX3NldF9sYWJlbCAgICAg
ICAoR3RrRnJhbWUgICAgICAqZnJhbWUsCgkJCQkgICAgICBjb25zdCBnY2hhciAgICpsYWJlbCk7
CnZvaWQgICAgICAgZ3RrX2ZyYW1lX3NldF9sYWJlbF9hbGlnbiAoR3RrRnJhbWUgICAgICAqZnJh
bWUsCgkJCQkgICAgICBnZmxvYXQgICAgICAgICB4YWxpZ24sCgkJCQkgICAgICBnZmxvYXQgICAg
ICAgICB5YWxpZ24pOwp2b2lkICAgICAgIGd0a19mcmFtZV9zZXRfc2hhZG93X3R5cGUgKEd0a0Zy
YW1lICAgICAgKmZyYW1lLAoJCQkJICAgICAgR3RrU2hhZG93VHlwZSAgdHlwZSk7CgoKCn0KCgoK
CiMgMzMgIi91c3IvaW5jbHVkZS9ndGsvZ3RrYXNwZWN0ZnJhbWUuaCIgMiAzCgoKCmV4dGVybiAi
QyIgewoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtBc3BlY3RGcmFtZSAgICAgICBHdGtB
c3BlY3RGcmFtZTsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0FzcGVjdEZyYW1lQ2xhc3MgIEd0a0FzcGVj
dEZyYW1lQ2xhc3M7CgpzdHJ1Y3QgX0d0a0FzcGVjdEZyYW1lCnsKICBHdGtGcmFtZSBmcmFtZTsK
CiAgZ2Zsb2F0IHhhbGlnbjsKICBnZmxvYXQgeWFsaWduOwogIGdmbG9hdCByYXRpbzsKICBnYm9v
bGVhbiBvYmV5X2NoaWxkOwoKICBHdGtBbGxvY2F0aW9uIGNlbnRlcl9hbGxvY2F0aW9uOwp9OwoK
c3RydWN0IF9HdGtBc3BlY3RGcmFtZUNsYXNzCnsKICBHdGtCaW5DbGFzcyBwYXJlbnRfY2xhc3M7
Cn07CgoKR3RrVHlwZSAgICBndGtfYXNwZWN0X2ZyYW1lX2dldF90eXBlICAgKHZvaWQpOwpHdGtX
aWRnZXQqIGd0a19hc3BlY3RfZnJhbWVfbmV3ICAgICAgICAoY29uc3QgZ2NoYXIgICAgICpsYWJl
bCwKCQkJCQlnZmxvYXQgICAgICAgICAgIHhhbGlnbiwKCQkJCQlnZmxvYXQgICAgICAgICAgIHlh
bGlnbiwKCQkJCQlnZmxvYXQgICAgICAgICAgIHJhdGlvLAoJCQkJCWdib29sZWFuICAgICAgICAg
b2JleV9jaGlsZCk7CnZvaWQgICAgICAgZ3RrX2FzcGVjdF9mcmFtZV9zZXQgICAgICAgIChHdGtB
c3BlY3RGcmFtZSAgKmFzcGVjdF9mcmFtZSwKCQkJCQlnZmxvYXQgICAgICAgICAgIHhhbGlnbiwK
CQkJCQlnZmxvYXQgICAgICAgICAgIHlhbGlnbiwKCQkJCQlnZmxvYXQgICAgICAgICAgIHJhdGlv
LAoJCQkJCWdib29sZWFuICAgICAgICAgb2JleV9jaGlsZCk7CgoKCn0KCgoKCiMgMzcgIi91c3Iv
aW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2Fycm93Lmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoK
CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrQXJyb3cgICAgICAgR3RrQXJyb3c7CnR5cGVkZWYg
c3RydWN0IF9HdGtBcnJvd0NsYXNzICBHdGtBcnJvd0NsYXNzOwoKc3RydWN0IF9HdGtBcnJvdwp7
CiAgR3RrTWlzYyBtaXNjOwoKICBnaW50MTYgYXJyb3dfdHlwZTsKICBnaW50MTYgc2hhZG93X3R5
cGU7Cn07CgpzdHJ1Y3QgX0d0a0Fycm93Q2xhc3MKewogIEd0a01pc2NDbGFzcyBwYXJlbnRfY2xh
c3M7Cn07CgoKR3RrVHlwZSAgICBndGtfYXJyb3dfZ2V0X3R5cGUgICAodm9pZCk7Ckd0a1dpZGdl
dCogZ3RrX2Fycm93X25ldyAgICAgICAgKEd0a0Fycm93VHlwZSAgIGFycm93X3R5cGUsCgkJCQkg
R3RrU2hhZG93VHlwZSAgc2hhZG93X3R5cGUpOwp2b2lkICAgICAgIGd0a19hcnJvd19zZXQgICAg
ICAgIChHdGtBcnJvdyAgICAgICphcnJvdywKCQkJCSBHdGtBcnJvd1R5cGUgICBhcnJvd190eXBl
LAoJCQkJIEd0a1NoYWRvd1R5cGUgIHNoYWRvd190eXBlKTsKCgoKfQoKCgoKIyAzOCAiL3Vzci9p
bmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2JpbmRpbmdz
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAi
QyIgewoKCgogCgp0eXBlZGVmIHN0cnVjdAlfR3RrUGF0dGVyblNwZWMJR3RrUGF0dGVyblNwZWM7
CgpzdHJ1Y3QgX0d0a1BhdHRlcm5TcGVjCnsKICBHdGtNYXRjaFR5cGUJIG1hdGNoX3R5cGU7CiAg
Z3VpbnQJCSBwYXR0ZXJuX2xlbmd0aDsKICBnY2hhcgkJKnBhdHRlcm47CiAgZ2NoYXIJCSpwYXR0
ZXJuX3JldmVyc2VkOwogIGdwb2ludGVyCSB1c2VyX2RhdGE7CiAgZ3VpbnQJCSBzZXFfaWQ7Cn07
Cgp2b2lkCSBndGtfcGF0dGVybl9zcGVjX2luaXQJICAgIChHdGtQYXR0ZXJuU3BlYwkgKnBzcGVj
LAoJCQkJICAgICBjb25zdCBnY2hhcgkgKnBhdHRlcm4pOwp2b2lkCSBndGtfcGF0dGVybl9zcGVj
X2ZyZWVfc2VncyAoR3RrUGF0dGVyblNwZWMJICpwc3BlYyk7Cmdib29sZWFuIGd0a19wYXR0ZXJu
X21hdGNoCSAgICAoR3RrUGF0dGVyblNwZWMJICpwc3BlYywKCQkJCSAgICAgZ3VpbnQJCSAgc3Ry
aW5nX2xlbmd0aCwKCQkJCSAgICAgY29uc3QgZ2NoYXIJICpzdHJpbmcsCgkJCQkgICAgIGNvbnN0
IGdjaGFyCSAqc3RyaW5nX3JldmVyc2VkKTsKZ2Jvb2xlYW4gZ3RrX3BhdHRlcm5fbWF0Y2hfc3Ry
aW5nICAgKEd0a1BhdHRlcm5TcGVjCSAqcHNwZWMsCgkJCQkgICAgIGNvbnN0IGdjaGFyCSAqc3Ry
aW5nKTsKZ2Jvb2xlYW4gZ3RrX3BhdHRlcm5fbWF0Y2hfc2ltcGxlICAgKGNvbnN0IGdjaGFyCSAq
cGF0dGVybiwKCQkJCSAgICAgY29uc3QgZ2NoYXIJICpzdHJpbmcpOwoKCiAKCgp0eXBlZGVmIHN0
cnVjdCBfR3RrQmluZGluZ1NldAkJR3RrQmluZGluZ1NldDsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0Jp
bmRpbmdFbnRyeQkJR3RrQmluZGluZ0VudHJ5Owp0eXBlZGVmIHN0cnVjdCBfR3RrQmluZGluZ1Np
Z25hbAlHdGtCaW5kaW5nU2lnbmFsOwp0eXBlZGVmIHN0cnVjdCBfR3RrQmluZGluZ0FyZwkJR3Rr
QmluZGluZ0FyZzsKCnN0cnVjdCBfR3RrQmluZGluZ1NldAp7CiAgZ2NoYXIJCQkqc2V0X25hbWU7
CiAgZ2ludAkJCSBwcmlvcml0eTsKICBHU0xpc3QJCSp3aWRnZXRfcGF0aF9wc3BlY3M7CiAgR1NM
aXN0CQkqd2lkZ2V0X2NsYXNzX3BzcGVjczsKICBHU0xpc3QJCSpjbGFzc19icmFuY2hfcHNwZWNz
OwogIEd0a0JpbmRpbmdFbnRyeQkqZW50cmllczsKICBHdGtCaW5kaW5nRW50cnkJKmN1cnJlbnQ7
Cn07CgpzdHJ1Y3QgX0d0a0JpbmRpbmdFbnRyeQp7CiAgIAoKICBndWludAkJCSBrZXl2YWw7CiAg
Z3VpbnQJCQkgbW9kaWZpZXJzOwogIAogIEd0a0JpbmRpbmdTZXQJCSpiaW5kaW5nX3NldDsKICBn
dWludAkJCWRlc3Ryb3llZCA6IDE7CiAgZ3VpbnQJCQlpbl9lbWlzc2lvbiA6IDE7CiAgR3RrQmlu
ZGluZ0VudHJ5CSpzZXRfbmV4dDsKICBHdGtCaW5kaW5nRW50cnkJKmhhc2hfbmV4dDsKICBHdGtC
aW5kaW5nU2lnbmFsCSpzaWduYWxzOwp9OwoKc3RydWN0IF9HdGtCaW5kaW5nU2lnbmFsCnsKICBH
dGtCaW5kaW5nU2lnbmFsCSpuZXh0OwogIGdjaGFyCQkJKnNpZ25hbF9uYW1lOwogIGd1aW50CQkJ
IG5fYXJnczsKICBHdGtCaW5kaW5nQXJnCQkqYXJnczsKfTsKCnN0cnVjdCBfR3RrQmluZGluZ0Fy
Zwp7CiAgR3RrVHlwZQlhcmdfdHlwZTsKICB1bmlvbiB7CiAgICBnbG9uZwkgbG9uZ19kYXRhOwog
ICAgZ2RvdWJsZQkgZG91YmxlX2RhdGE7CiAgICBnY2hhcgkqc3RyaW5nX2RhdGE7CiAgfSBkOwp9
OwoKCiAKCkd0a0JpbmRpbmdTZXQqCWd0a19iaW5kaW5nX3NldF9uZXcJKGNvbnN0IGdjaGFyCSpz
ZXRfbmFtZSk7Ckd0a0JpbmRpbmdTZXQqCWd0a19iaW5kaW5nX3NldF9ieV9jbGFzcyhncG9pbnRl
cgkgb2JqZWN0X2NsYXNzKTsKR3RrQmluZGluZ1NldCoJZ3RrX2JpbmRpbmdfc2V0X2ZpbmQJKGNv
bnN0IGdjaGFyCSpzZXRfbmFtZSk7Cmdib29sZWFuIGd0a19iaW5kaW5nc19hY3RpdmF0ZQkJKEd0
a09iamVjdAkqb2JqZWN0LAoJCQkJCSBndWludAkJIGtleXZhbCwKCQkJCQkgZ3VpbnQJCSBtb2Rp
ZmllcnMpOwpnYm9vbGVhbiBndGtfYmluZGluZ19zZXRfYWN0aXZhdGUJKEd0a0JpbmRpbmdTZXQJ
KmJpbmRpbmdfc2V0LAoJCQkJCSBndWludAkJIGtleXZhbCwKCQkJCQkgZ3VpbnQJCSBtb2RpZmll
cnMsCgkJCQkJIEd0a09iamVjdAkqb2JqZWN0KTsKCnZvaWQJIGd0a19iaW5kaW5nX2VudHJ5X2Ns
ZWFyCShHdGtCaW5kaW5nU2V0CSpiaW5kaW5nX3NldCwKCQkJCQkgZ3VpbnQJCSBrZXl2YWwsCgkJ
CQkJIGd1aW50CQkgbW9kaWZpZXJzKTsKdm9pZAkgZ3RrX2JpbmRpbmdfZW50cnlfYWRkX3NpZ25h
bAkoR3RrQmluZGluZ1NldAkqYmluZGluZ19zZXQsCgkJCQkJIGd1aW50CQkga2V5dmFsLAoJCQkJ
CSBndWludAkJIG1vZGlmaWVycywKCQkJCQkgY29uc3QgZ2NoYXIJKnNpZ25hbF9uYW1lLAoJCQkJ
CSBndWludAkJIG5fYXJncywKCQkJCQkgLi4uKTsKdm9pZAkgZ3RrX2JpbmRpbmdfc2V0X2FkZF9w
YXRoCShHdGtCaW5kaW5nU2V0CSpiaW5kaW5nX3NldCwKCQkJCQkgR3RrUGF0aFR5cGUJIHBhdGhf
dHlwZSwKCQkJCQkgY29uc3QgZ2NoYXIJKnBhdGhfcGF0dGVybiwKCQkJCQkgR3RrUGF0aFByaW9y
aXR5VHlwZSBwcmlvcml0eSk7CgoKIAoKdm9pZAkgZ3RrX2JpbmRpbmdfZW50cnlfcmVtb3ZlCShH
dGtCaW5kaW5nU2V0CSpiaW5kaW5nX3NldCwKCQkJCQkgZ3VpbnQJCSBrZXl2YWwsCgkJCQkJIGd1
aW50CQkgbW9kaWZpZXJzKTsKdm9pZAkgZ3RrX2JpbmRpbmdfZW50cnlfYWRkX3NpZ25hbGwJKEd0
a0JpbmRpbmdTZXQJKmJpbmRpbmdfc2V0LAoJCQkJCSBndWludAkJIGtleXZhbCwKCQkJCQkgZ3Vp
bnQJCSBtb2RpZmllcnMsCgkJCQkJIGNvbnN0IGdjaGFyCSpzaWduYWxfbmFtZSwKCQkJCQkgR1NM
aXN0CQkqYmluZGluZ19hcmdzKTsKZ3VpbnQJIGd0a19iaW5kaW5nX3BhcnNlX2JpbmRpbmcJKEdT
Y2FubmVyCSpzY2FubmVyKTsKCgoKCgp9CgoKCgojIDQwICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5o
IiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtib3guaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoKCnR5cGVkZWYgc3Ry
dWN0IF9HdGtCb3gJICAgICAgR3RrQm94Owp0eXBlZGVmIHN0cnVjdCBfR3RrQm94Q2xhc3MgICBH
dGtCb3hDbGFzczsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0JveENoaWxkICAgR3RrQm94Q2hpbGQ7Cgpz
dHJ1Y3QgX0d0a0JveAp7CiAgR3RrQ29udGFpbmVyIGNvbnRhaW5lcjsKICAKICBHTGlzdCAqY2hp
bGRyZW47CiAgZ2ludDE2IHNwYWNpbmc7CiAgZ3VpbnQgaG9tb2dlbmVvdXMgOiAxOwp9OwoKc3Ry
dWN0IF9HdGtCb3hDbGFzcwp7CiAgR3RrQ29udGFpbmVyQ2xhc3MgcGFyZW50X2NsYXNzOwp9OwoK
c3RydWN0IF9HdGtCb3hDaGlsZAp7CiAgR3RrV2lkZ2V0ICp3aWRnZXQ7CiAgZ3VpbnQxNiBwYWRk
aW5nOwogIGd1aW50IGV4cGFuZCA6IDE7CiAgZ3VpbnQgZmlsbCA6IDE7CiAgZ3VpbnQgcGFjayA6
IDE7Cn07CgoKR3RrVHlwZQkgICBndGtfYm94X2dldF90eXBlCSAgICAgICAodm9pZCk7CnZvaWQJ
ICAgZ3RrX2JveF9wYWNrX3N0YXJ0CSAgICAgICAoR3RrQm94CSAgICAgKmJveCwKCQkJCQlHdGtX
aWRnZXQgICAgKmNoaWxkLAoJCQkJCWdib29sZWFuICAgICAgZXhwYW5kLAoJCQkJCWdib29sZWFu
ICAgICAgZmlsbCwKCQkJCQlndWludAkgICAgICBwYWRkaW5nKTsKdm9pZAkgICBndGtfYm94X3Bh
Y2tfZW5kCSAgICAgICAoR3RrQm94CSAgICAgKmJveCwKCQkJCQlHdGtXaWRnZXQgICAgKmNoaWxk
LAoJCQkJCWdib29sZWFuICAgICAgZXhwYW5kLAoJCQkJCWdib29sZWFuICAgICAgZmlsbCwKCQkJ
CQlndWludAkgICAgICBwYWRkaW5nKTsKdm9pZAkgICBndGtfYm94X3BhY2tfc3RhcnRfZGVmYXVs
dHMgKEd0a0JveAkgICAgICpib3gsCgkJCQkJR3RrV2lkZ2V0ICAgICp3aWRnZXQpOwp2b2lkCSAg
IGd0a19ib3hfcGFja19lbmRfZGVmYXVsdHMgICAoR3RrQm94CSAgICAgKmJveCwKCQkJCQlHdGtX
aWRnZXQgICAgKndpZGdldCk7CnZvaWQJICAgZ3RrX2JveF9zZXRfaG9tb2dlbmVvdXMgICAgIChH
dGtCb3gJICAgICAqYm94LAoJCQkJCWdib29sZWFuICAgICAgaG9tb2dlbmVvdXMpOwp2b2lkCSAg
IGd0a19ib3hfc2V0X3NwYWNpbmcJICAgICAgIChHdGtCb3gJICAgICAqYm94LAoJCQkJCWdpbnQJ
ICAgICAgc3BhY2luZyk7CnZvaWQJICAgZ3RrX2JveF9yZW9yZGVyX2NoaWxkICAgICAgIChHdGtC
b3gJICAgICAqYm94LAoJCQkJCUd0a1dpZGdldCAgICAqY2hpbGQsCgkJCQkJZ2ludAkgICAgICBw
b3NpdGlvbik7CnZvaWQJICAgZ3RrX2JveF9xdWVyeV9jaGlsZF9wYWNraW5nIChHdGtCb3gJICAg
ICAqYm94LAoJCQkJCUd0a1dpZGdldCAgICAqY2hpbGQsCgkJCQkJZ2Jvb2xlYW4gICAgICpleHBh
bmQsCgkJCQkJZ2Jvb2xlYW4gICAgICpmaWxsLAoJCQkJCWd1aW50CSAgICAgKnBhZGRpbmcsCgkJ
CQkJR3RrUGFja1R5cGUgICpwYWNrX3R5cGUpOwp2b2lkCSAgIGd0a19ib3hfc2V0X2NoaWxkX3Bh
Y2tpbmcgICAoR3RrQm94CSAgICAgKmJveCwKCQkJCQlHdGtXaWRnZXQgICAgKmNoaWxkLAoJCQkJ
CWdib29sZWFuICAgICAgZXhwYW5kLAoJCQkJCWdib29sZWFuICAgICAgZmlsbCwKCQkJCQlndWlu
dAkgICAgICBwYWRkaW5nLAoJCQkJCUd0a1BhY2tUeXBlICAgcGFja190eXBlKTsKCgoKCn0KCgoK
CiMgNDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZ3Rr
L2d0a2Jib3guaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKZXh0ZXJu
ICJDIiB7CgogIAoKCgoKCgogIAoKCiAKdHlwZWRlZiBzdHJ1Y3QgX0d0a0J1dHRvbkJveCAgICAg
ICBHdGtCdXR0b25Cb3g7CnR5cGVkZWYgc3RydWN0IF9HdGtCdXR0b25Cb3hDbGFzcyAgR3RrQnV0
dG9uQm94Q2xhc3M7CgpzdHJ1Y3QgX0d0a0J1dHRvbkJveAp7CiAgR3RrQm94IGJveDsKICBnaW50
IHNwYWNpbmc7CiAgZ2ludCBjaGlsZF9taW5fd2lkdGg7CiAgZ2ludCBjaGlsZF9taW5faGVpZ2h0
OwogIGdpbnQgY2hpbGRfaXBhZF94OwogIGdpbnQgY2hpbGRfaXBhZF95OwogIEd0a0J1dHRvbkJv
eFN0eWxlIGxheW91dF9zdHlsZTsKfTsKCnN0cnVjdCBfR3RrQnV0dG9uQm94Q2xhc3MKewogIEd0
a0JveENsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtUeXBlIGd0a19idXR0b25fYm94X2dldF90
eXBlICh2b2lkKTsKCnZvaWQgZ3RrX2J1dHRvbl9ib3hfZ2V0X2NoaWxkX3NpemVfZGVmYXVsdCAo
Z2ludCAqbWluX3dpZHRoLCBnaW50ICptaW5faGVpZ2h0KTsKdm9pZCBndGtfYnV0dG9uX2JveF9n
ZXRfY2hpbGRfaXBhZGRpbmdfZGVmYXVsdCAoZ2ludCAqaXBhZF94LCBnaW50ICppcGFkX3kpOwoK
dm9pZCBndGtfYnV0dG9uX2JveF9zZXRfY2hpbGRfc2l6ZV9kZWZhdWx0IChnaW50IG1pbl93aWR0
aCwgZ2ludCBtaW5faGVpZ2h0KTsKdm9pZCBndGtfYnV0dG9uX2JveF9zZXRfY2hpbGRfaXBhZGRp
bmdfZGVmYXVsdCAoZ2ludCBpcGFkX3gsIGdpbnQgaXBhZF95KTsKCmdpbnQgZ3RrX2J1dHRvbl9i
b3hfZ2V0X3NwYWNpbmcgKEd0a0J1dHRvbkJveCAqd2lkZ2V0KTsKR3RrQnV0dG9uQm94U3R5bGUg
Z3RrX2J1dHRvbl9ib3hfZ2V0X2xheW91dCAoR3RrQnV0dG9uQm94ICp3aWRnZXQpOwp2b2lkIGd0
a19idXR0b25fYm94X2dldF9jaGlsZF9zaXplIChHdGtCdXR0b25Cb3ggKndpZGdldCwKCQkJCSAg
ICBnaW50ICptaW5fd2lkdGgsIGdpbnQgKm1pbl9oZWlnaHQpOwp2b2lkIGd0a19idXR0b25fYm94
X2dldF9jaGlsZF9pcGFkZGluZyAoR3RrQnV0dG9uQm94ICp3aWRnZXQsIGdpbnQgKmlwYWRfeCwg
Z2ludCAqaXBhZF95KTsKCnZvaWQgZ3RrX2J1dHRvbl9ib3hfc2V0X3NwYWNpbmcgKEd0a0J1dHRv
bkJveCAqd2lkZ2V0LCBnaW50IHNwYWNpbmcpOwp2b2lkIGd0a19idXR0b25fYm94X3NldF9sYXlv
dXQgKEd0a0J1dHRvbkJveCAqd2lkZ2V0LCAKCQkJCUd0a0J1dHRvbkJveFN0eWxlIGxheW91dF9z
dHlsZSk7CnZvaWQgZ3RrX2J1dHRvbl9ib3hfc2V0X2NoaWxkX3NpemUgKEd0a0J1dHRvbkJveCAq
d2lkZ2V0LAoJCQkJICAgIGdpbnQgbWluX3dpZHRoLCBnaW50IG1pbl9oZWlnaHQpOwp2b2lkIGd0
a19idXR0b25fYm94X3NldF9jaGlsZF9pcGFkZGluZyAoR3RrQnV0dG9uQm94ICp3aWRnZXQsIGdp
bnQgaXBhZF94LCBnaW50IGlwYWRfeSk7CgoKIAp2b2lkIGd0a19idXR0b25fYm94X2NoaWxkX3Jl
cXVpc2l0aW9uIChHdGtXaWRnZXQgKndpZGdldCwKCQkJCSAgICAgICBpbnQgKm52aXNfY2hpbGRy
ZW4sCgkJCQkgICAgICAgaW50ICp3aWR0aCwKCQkJCSAgICAgICBpbnQgKmhlaWdodCk7CgoKfQoK
CgoKCgojIDQyICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRl
L2d0ay9ndGtidXR0b24uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtCdXR0b24gICAgICAg
R3RrQnV0dG9uOwp0eXBlZGVmIHN0cnVjdCBfR3RrQnV0dG9uQ2xhc3MgIEd0a0J1dHRvbkNsYXNz
OwoKc3RydWN0IF9HdGtCdXR0b24KewogIEd0a0JpbiBiaW47CgogIEd0a1dpZGdldCAqY2hpbGQg
IAoKOwoKICBndWludCBpbl9idXR0b24gOiAxOwogIGd1aW50IGJ1dHRvbl9kb3duIDogMTsKICBn
dWludCByZWxpZWYgOiAyOwp9OwoKc3RydWN0IF9HdGtCdXR0b25DbGFzcwp7CiAgR3RrQmluQ2xh
c3MgICAgICAgIHBhcmVudF9jbGFzczsKICAKICB2b2lkICgqIHByZXNzZWQpICAoR3RrQnV0dG9u
ICpidXR0b24pOwogIHZvaWQgKCogcmVsZWFzZWQpIChHdGtCdXR0b24gKmJ1dHRvbik7CiAgdm9p
ZCAoKiBjbGlja2VkKSAgKEd0a0J1dHRvbiAqYnV0dG9uKTsKICB2b2lkICgqIGVudGVyKSAgICAo
R3RrQnV0dG9uICpidXR0b24pOwogIHZvaWQgKCogbGVhdmUpICAgIChHdGtCdXR0b24gKmJ1dHRv
bik7Cn07CgoKR3RrVHlwZSAgICAgICAgZ3RrX2J1dHRvbl9nZXRfdHlwZSAgICAgICAodm9pZCk7
Ckd0a1dpZGdldCogICAgIGd0a19idXR0b25fbmV3ICAgICAgICAgICAgKHZvaWQpOwpHdGtXaWRn
ZXQqICAgICBndGtfYnV0dG9uX25ld193aXRoX2xhYmVsIChjb25zdCBnY2hhciAqbGFiZWwpOwp2
b2lkICAgICAgICAgICBndGtfYnV0dG9uX3ByZXNzZWQgICAgICAgIChHdGtCdXR0b24gKmJ1dHRv
bik7CnZvaWQgICAgICAgICAgIGd0a19idXR0b25fcmVsZWFzZWQgICAgICAgKEd0a0J1dHRvbiAq
YnV0dG9uKTsKdm9pZCAgICAgICAgICAgZ3RrX2J1dHRvbl9jbGlja2VkICAgICAgICAoR3RrQnV0
dG9uICpidXR0b24pOwp2b2lkICAgICAgICAgICBndGtfYnV0dG9uX2VudGVyICAgICAgICAgIChH
dGtCdXR0b24gKmJ1dHRvbik7CnZvaWQgICAgICAgICAgIGd0a19idXR0b25fbGVhdmUgICAgICAg
ICAgKEd0a0J1dHRvbiAqYnV0dG9uKTsKdm9pZCAgICAgICAgICAgZ3RrX2J1dHRvbl9zZXRfcmVs
aWVmICAgICAoR3RrQnV0dG9uICpidXR0b24sCgkJCQkJICBHdGtSZWxpZWZTdHlsZSBuZXdzdHls
ZSk7Ckd0a1JlbGllZlN0eWxlIGd0a19idXR0b25fZ2V0X3JlbGllZiAgICAgIChHdGtCdXR0b24g
KmJ1dHRvbik7CgoKCn0KCgoKCiMgNDMgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKIyAx
ICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2NhbGVuZGFyLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3NpZ25hbC5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3Rr
bWFyc2hhbC5oIiAxIDMKCgoKCgoKCmV4dGVybiAiQyIKewoKCgoKICB2b2lkIGd0a19tYXJzaGFs
X0JPT0xfX05PTkUgKEd0a09iamVjdCAqIG9iamVjdCwKCQkJICAgICAgIEd0a1NpZ25hbEZ1bmMg
ZnVuYywKCQkJICAgICAgIGdwb2ludGVyIGZ1bmNfZGF0YSwgR3RrQXJnICogYXJncyk7CgogIHZv
aWQgZ3RrX21hcnNoYWxfQk9PTF9fUE9JTlRFUiAoR3RrT2JqZWN0ICogb2JqZWN0LAoJCQkJICBH
dGtTaWduYWxGdW5jIGZ1bmMsCgkJCQkgIGdwb2ludGVyIGZ1bmNfZGF0YSwgR3RrQXJnICogYXJn
cyk7CgogIHZvaWQgZ3RrX21hcnNoYWxfQk9PTF9fUE9JTlRFUl9QT0lOVEVSX0lOVF9JTlQgKEd0
a09iamVjdCAqIG9iamVjdCwKCQkJCQkJICBHdGtTaWduYWxGdW5jIGZ1bmMsCgkJCQkJCSAgZ3Bv
aW50ZXIgZnVuY19kYXRhLAoJCQkJCQkgIEd0a0FyZyAqIGFyZ3MpOwoKICB2b2lkIGd0a19tYXJz
aGFsX0JPT0xfX1BPSU5URVJfSU5UX0lOVCAoR3RrT2JqZWN0ICogb2JqZWN0LAoJCQkJCSAgR3Rr
U2lnbmFsRnVuYyBmdW5jLAoJCQkJCSAgZ3BvaW50ZXIgZnVuY19kYXRhLCBHdGtBcmcgKiBhcmdz
KTsKCgoKICB2b2lkIGd0a19tYXJzaGFsX0JPT0xfX1BPSU5URVJfSU5UX0lOVF9JTlQgKEd0a09i
amVjdCAqIG9iamVjdCwKCQkJCQkgICAgICBHdGtTaWduYWxGdW5jIGZ1bmMsCgkJCQkJICAgICAg
Z3BvaW50ZXIgZnVuY19kYXRhLAoJCQkJCSAgICAgIEd0a0FyZyAqIGFyZ3MpOwoKCgogIHZvaWQg
Z3RrX21hcnNoYWxfQk9PTF9fUE9JTlRFUl9QT0lOVEVSX1BPSU5URVJfUE9JTlRFUiAoR3RrT2Jq
ZWN0ICogb2JqZWN0LAoJCQkJCQkJICBHdGtTaWduYWxGdW5jIGZ1bmMsCgkJCQkJCQkgIGdwb2lu
dGVyIGZ1bmNfZGF0YSwKCQkJCQkJCSAgR3RrQXJnICogYXJncyk7CgoKCiAgdm9pZCBndGtfbWFy
c2hhbF9JTlRfX0lOVCAoR3RrT2JqZWN0ICogb2JqZWN0LAoJCQkgICAgIEd0a1NpZ25hbEZ1bmMg
ZnVuYywKCQkJICAgICBncG9pbnRlciBmdW5jX2RhdGEsIEd0a0FyZyAqIGFyZ3MpOwoKICB2b2lk
IGd0a19tYXJzaGFsX0lOVF9fUE9JTlRFUiAoR3RrT2JqZWN0ICogb2JqZWN0LAoJCQkJIEd0a1Np
Z25hbEZ1bmMgZnVuYywKCQkJCSBncG9pbnRlciBmdW5jX2RhdGEsIEd0a0FyZyAqIGFyZ3MpOwoK
ICB2b2lkIGd0a19tYXJzaGFsX0lOVF9fUE9JTlRFUl9DSEFSX0NIQVIgKEd0a09iamVjdCAqIG9i
amVjdCwKCQkJCQkgICBHdGtTaWduYWxGdW5jIGZ1bmMsCgkJCQkJICAgZ3BvaW50ZXIgZnVuY19k
YXRhLCBHdGtBcmcgKiBhcmdzKTsKCiAgdm9pZCBndGtfbWFyc2hhbF9OT05FX19CT09MIChHdGtP
YmplY3QgKiBvYmplY3QsCgkJCSAgICAgICBHdGtTaWduYWxGdW5jIGZ1bmMsCgkJCSAgICAgICBn
cG9pbnRlciBmdW5jX2RhdGEsIEd0a0FyZyAqIGFyZ3MpOwoKCgogIHZvaWQgZ3RrX21hcnNoYWxf
Tk9ORV9fUE9JTlRFUiAoR3RrT2JqZWN0ICogb2JqZWN0LAoJCQkJICBHdGtTaWduYWxGdW5jIGZ1
bmMsCgkJCQkgIGdwb2ludGVyIGZ1bmNfZGF0YSwgR3RrQXJnICogYXJncyk7CgogIHZvaWQgZ3Rr
X21hcnNoYWxfTk9ORV9fQ19DQUxMQkFDSyAoR3RrT2JqZWN0ICogb2JqZWN0LAoJCQkJICAgICBH
dGtTaWduYWxGdW5jIGZ1bmMsCgkJCQkgICAgIGdwb2ludGVyIGZ1bmNfZGF0YSwgR3RrQXJnICog
YXJncyk7CgogIHZvaWQgZ3RrX21hcnNoYWxfTk9ORV9fQ19DQUxMQkFDS19DX0NBTExCQUNLIChH
dGtPYmplY3QgKiBvYmplY3QsCgkJCQkJCUd0a1NpZ25hbEZ1bmMgZnVuYywKCQkJCQkJZ3BvaW50
ZXIgZnVuY19kYXRhLAoJCQkJCQlHdGtBcmcgKiBhcmdzKTsKCgoKICB2b2lkIGd0a19tYXJzaGFs
X05PTkVfX0lOVCAoR3RrT2JqZWN0ICogb2JqZWN0LAoJCQkgICAgICBHdGtTaWduYWxGdW5jIGZ1
bmMsCgkJCSAgICAgIGdwb2ludGVyIGZ1bmNfZGF0YSwgR3RrQXJnICogYXJncyk7CgoKCiAgdm9p
ZCBndGtfbWFyc2hhbF9OT05FX19JTlRfRkxPQVQgKEd0a09iamVjdCAqIG9iamVjdCwKCQkJCSAg
ICBHdGtTaWduYWxGdW5jIGZ1bmMsCgkJCQkgICAgZ3BvaW50ZXIgZnVuY19kYXRhLCBHdGtBcmcg
KiBhcmdzKTsKCgoKICB2b2lkIGd0a19tYXJzaGFsX05PTkVfX0lOVF9GTE9BVF9CT09MIChHdGtP
YmplY3QgKiBvYmplY3QsCgkJCQkJIEd0a1NpZ25hbEZ1bmMgZnVuYywKCQkJCQkgZ3BvaW50ZXIg
ZnVuY19kYXRhLCBHdGtBcmcgKiBhcmdzKTsKCiAgdm9pZCBndGtfbWFyc2hhbF9OT05FX19JTlRf
SU5UIChHdGtPYmplY3QgKiBvYmplY3QsCgkJCQkgIEd0a1NpZ25hbEZ1bmMgZnVuYywKCQkJCSAg
Z3BvaW50ZXIgZnVuY19kYXRhLCBHdGtBcmcgKiBhcmdzKTsKCiAgdm9pZCBndGtfbWFyc2hhbF9O
T05FX19JTlRfSU5UX1BPSU5URVIgKEd0a09iamVjdCAqIG9iamVjdCwKCQkJCQkgIEd0a1NpZ25h
bEZ1bmMgZnVuYywKCQkJCQkgIGdwb2ludGVyIGZ1bmNfZGF0YSwgR3RrQXJnICogYXJncyk7Cgog
IHZvaWQgZ3RrX21hcnNoYWxfTk9ORV9fTk9ORSAoR3RrT2JqZWN0ICogb2JqZWN0LAoJCQkgICAg
ICAgR3RrU2lnbmFsRnVuYyBmdW5jLAoJCQkgICAgICAgZ3BvaW50ZXIgZnVuY19kYXRhLCBHdGtB
cmcgKiBhcmdzKTsKCgoKICB2b2lkIGd0a19tYXJzaGFsX05PTkVfX1BPSU5URVJfSU5UIChHdGtP
YmplY3QgKiBvYmplY3QsCgkJCQkgICAgICBHdGtTaWduYWxGdW5jIGZ1bmMsCgkJCQkgICAgICBn
cG9pbnRlciBmdW5jX2RhdGEsIEd0a0FyZyAqIGFyZ3MpOwoKICB2b2lkIGd0a19tYXJzaGFsX05P
TkVfX1BPSU5URVJfUE9JTlRFUiAoR3RrT2JqZWN0ICogb2JqZWN0LAoJCQkJCSAgR3RrU2lnbmFs
RnVuYyBmdW5jLAoJCQkJCSAgZ3BvaW50ZXIgZnVuY19kYXRhLCBHdGtBcmcgKiBhcmdzKTsKCiAg
dm9pZCBndGtfbWFyc2hhbF9OT05FX19QT0lOVEVSX1BPSU5URVJfUE9JTlRFUiAoR3RrT2JqZWN0
ICogb2JqZWN0LAoJCQkJCQkgIEd0a1NpZ25hbEZ1bmMgZnVuYywKCQkJCQkJICBncG9pbnRlciBm
dW5jX2RhdGEsCgkJCQkJCSAgR3RrQXJnICogYXJncyk7CgoKCgoKCgogIHZvaWQgZ3RrX21hcnNo
YWxfTk9ORV9fUE9JTlRFUl9JTlRfSU5UIChHdGtPYmplY3QgKiBvYmplY3QsCgkJCQkJICBHdGtT
aWduYWxGdW5jIGZ1bmMsCgkJCQkJICBncG9pbnRlciBmdW5jX2RhdGEsIEd0a0FyZyAqIGFyZ3Mp
OwoKCgogIHZvaWQgZ3RrX21hcnNoYWxfTk9ORV9fUE9JTlRFUl9QT0lOVEVSX0lOVF9JTlQgKEd0
a09iamVjdCAqIG9iamVjdCwKCQkJCQkJICBHdGtTaWduYWxGdW5jIGZ1bmMsCgkJCQkJCSAgZ3Bv
aW50ZXIgZnVuY19kYXRhLAoJCQkJCQkgIEd0a0FyZyAqIGFyZ3MpOwoKCgogIHZvaWQgZ3RrX21h
cnNoYWxfTk9ORV9fUE9JTlRFUl9JTlRfSU5UX1BPSU5URVJfSU5UX0lOVCAoR3RrT2JqZWN0ICog
b2JqZWN0LAoJCQkJCQkJICBHdGtTaWduYWxGdW5jIGZ1bmMsCgkJCQkJCQkgIGdwb2ludGVyIGZ1
bmNfZGF0YSwKCQkJCQkJCSAgR3RrQXJnICogYXJncyk7CgoKCgoKCgogIHZvaWQgZ3RrX21hcnNo
YWxfTk9ORV9fUE9JTlRFUl9JTlRfUE9JTlRFUiAoR3RrT2JqZWN0ICogb2JqZWN0LAoJCQkJCSAg
ICAgIEd0a1NpZ25hbEZ1bmMgZnVuYywKCQkJCQkgICAgICBncG9pbnRlciBmdW5jX2RhdGEsCgkJ
CQkJICAgICAgR3RrQXJnICogYXJncyk7CgoKCgoKICB2b2lkIGd0a19tYXJzaGFsX05PTkVfX0lO
VF9QT0lOVEVSX0lOVF9JTlRfSU5UX1BPSU5URVIgKEd0a09iamVjdCAqIG9iamVjdCwKCQkJCQkJ
CSAgR3RrU2lnbmFsRnVuYyBmdW5jLAoJCQkJCQkJICBncG9pbnRlciBmdW5jX2RhdGEsCgkJCQkJ
CQkgIEd0a0FyZyAqIGFyZ3MpOwoKCgogIHZvaWQgZ3RrX21hcnNoYWxfTk9ORV9fSU5UX1BPSU5U
RVJfSU5UX0lOVF9JTlQgKEd0a09iamVjdCAqIG9iamVjdCwKCQkJCQkJICBHdGtTaWduYWxGdW5j
IGZ1bmMsCgkJCQkJCSAgZ3BvaW50ZXIgZnVuY19kYXRhLAoJCQkJCQkgIEd0a0FyZyAqIGFyZ3Mp
OwoKCgogIHZvaWQgZ3RrX21hcnNoYWxfTk9ORV9fSU5UX1BPSU5URVIgKEd0a09iamVjdCAqIG9i
amVjdCwKCQkJCSAgICAgIEd0a1NpZ25hbEZ1bmMgZnVuYywKCQkJCSAgICAgIGdwb2ludGVyIGZ1
bmNfZGF0YSwgR3RrQXJnICogYXJncyk7CgoKCn0KCgoKIyAzNCAiL3Vzci9pbmNsdWRlL2d0ay9n
dGtzaWduYWwuaCIgMiAzCgoKCmV4dGVybiAiQyIgewoKCiAgCgogIAogIAp0eXBlZGVmIHZvaWQg
ICAgKCpHdGtTaWduYWxNYXJzaGFsKSAoR3RrT2JqZWN0CSAgICAqb2JqZWN0LAoJCQkJICAgICBn
cG9pbnRlcgkgICAgIGRhdGEsCgkJCQkgICAgIGd1aW50CSAgICAgbnBhcmFtcywKCQkJCSAgICAg
R3RrQXJnCSAgICAqYXJncywKCQkJCSAgICAgR3RrVHlwZQkgICAgKmFyZ190eXBlcywKCQkJCSAg
ICAgR3RrVHlwZQkgICAgIHJldHVybl90eXBlKTsKdHlwZWRlZiB2b2lkICAgICgqR3RrU2lnbmFs
RGVzdHJveSkgKGdwb2ludGVyCSAgICAgZGF0YSk7CnR5cGVkZWYgZ2Jvb2xlYW4gKCpHdGtFbWlz
c2lvbkhvb2spIChHdGtPYmplY3QJICAgICpvYmplY3QsCgkJCQkgICAgIGd1aW50ICAgICAgICAg
ICBzaWduYWxfaWQsCgkJCQkgICAgIGd1aW50CSAgICAgbl9wYXJhbXMsCgkJCQkgICAgIEd0a0Fy
ZwkgICAgKnBhcmFtcywKCQkJCSAgICAgZ3BvaW50ZXIgICAgICAgIGRhdGEpOwoKdHlwZWRlZiBz
dHJ1Y3QgX0d0a1NpZ25hbFF1ZXJ5CQlHdGtTaWduYWxRdWVyeTsKCnN0cnVjdAlfR3RrU2lnbmFs
UXVlcnkKewogIEd0a1R5cGUJICAgb2JqZWN0X3R5cGU7CiAgZ3VpbnQJCSAgIHNpZ25hbF9pZDsK
ICBjb25zdCBnY2hhcgkgICpzaWduYWxfbmFtZTsKICBndWludAkJICAgaXNfdXNlcl9zaWduYWwg
OiAxOwogIEd0a1NpZ25hbFJ1blR5cGUgc2lnbmFsX2ZsYWdzOwogIEd0a1R5cGUJICAgcmV0dXJu
X3ZhbDsKICBndWludAkJICAgbnBhcmFtczsKICBjb25zdCBHdGtUeXBlCSAgKnBhcmFtczsKfTsK
CgogCmd1aW50ICBndGtfc2lnbmFsX2xvb2t1cAkJICAoY29uc3QgZ2NoYXIJICAgICAgICpuYW1l
LAoJCQkJCSAgIEd0a1R5cGUJCW9iamVjdF90eXBlKTsKZ2NoYXIqIGd0a19zaWduYWxfbmFtZQkJ
CSAgKGd1aW50CQlzaWduYWxfaWQpOwpndWludCAgZ3RrX3NpZ25hbF9uX2VtaXNzaW9ucwkJICAo
R3RrT2JqZWN0ICAgCSAgICAgICAqb2JqZWN0LAoJCQkJCSAgIGd1aW50ICAgICAgICAgICAgICAg
IHNpZ25hbF9pZCk7Cmd1aW50ICBndGtfc2lnbmFsX25fZW1pc3Npb25zX2J5X25hbWUJICAoR3Rr
T2JqZWN0ICAgCSAgICAgICAqb2JqZWN0LAoJCQkJCSAgIGNvbnN0IGdjaGFyICAgICAgICAgKm5h
bWUpOwp2b2lkICAgZ3RrX3NpZ25hbF9lbWl0X3N0b3AJCSAgKEd0a09iamVjdAkgICAgICAgKm9i
amVjdCwKCQkJCQkgICBndWludAkJc2lnbmFsX2lkKTsKdm9pZCAgIGd0a19zaWduYWxfZW1pdF9z
dG9wX2J5X25hbWUJICAoR3RrT2JqZWN0CSAgICAgICAqb2JqZWN0LAoJCQkJCSAgIGNvbnN0IGdj
aGFyCSAgICAgICAqbmFtZSk7Cmd1aW50ICBndGtfc2lnbmFsX2Nvbm5lY3QJCSAgKEd0a09iamVj
dAkgICAgICAgKm9iamVjdCwKCQkJCQkgICBjb25zdCBnY2hhcgkgICAgICAgKm5hbWUsCgkJCQkJ
ICAgR3RrU2lnbmFsRnVuYwlmdW5jLAoJCQkJCSAgIGdwb2ludGVyCQlmdW5jX2RhdGEpOwpndWlu
dCAgZ3RrX3NpZ25hbF9jb25uZWN0X2FmdGVyCQkgIChHdGtPYmplY3QJICAgICAgICpvYmplY3Qs
CgkJCQkJICAgY29uc3QgZ2NoYXIJICAgICAgICpuYW1lLAoJCQkJCSAgIEd0a1NpZ25hbEZ1bmMJ
ZnVuYywKCQkJCQkgICBncG9pbnRlcgkJZnVuY19kYXRhKTsKZ3VpbnQgIGd0a19zaWduYWxfY29u
bmVjdF9vYmplY3QJICAoR3RrT2JqZWN0CSAgICAgICAqb2JqZWN0LAoJCQkJCSAgIGNvbnN0IGdj
aGFyCSAgICAgICAqbmFtZSwKCQkJCQkgICBHdGtTaWduYWxGdW5jCWZ1bmMsCgkJCQkJICAgR3Rr
T2JqZWN0CSAgICAgICAqc2xvdF9vYmplY3QpOwpndWludCAgZ3RrX3NpZ25hbF9jb25uZWN0X29i
amVjdF9hZnRlcgkgIChHdGtPYmplY3QJICAgICAgICpvYmplY3QsCgkJCQkJICAgY29uc3QgZ2No
YXIJICAgICAgICpuYW1lLAoJCQkJCSAgIEd0a1NpZ25hbEZ1bmMJZnVuYywKCQkJCQkgICBHdGtP
YmplY3QJICAgICAgICpzbG90X29iamVjdCk7Cmd1aW50ICBndGtfc2lnbmFsX2Nvbm5lY3RfZnVs
bAkJICAoR3RrT2JqZWN0CSAgICAgICAqb2JqZWN0LAoJCQkJCSAgIGNvbnN0IGdjaGFyCSAgICAg
ICAqbmFtZSwKCQkJCQkgICBHdGtTaWduYWxGdW5jCWZ1bmMsCgkJCQkJICAgR3RrQ2FsbGJhY2tN
YXJzaGFsCW1hcnNoYWwsCgkJCQkJICAgZ3BvaW50ZXIJCWRhdGEsCgkJCQkJICAgR3RrRGVzdHJv
eU5vdGlmeQlkZXN0cm95X2Z1bmMsCgkJCQkJICAgZ2ludAkJCW9iamVjdF9zaWduYWwsCgkJCQkJ
ICAgZ2ludAkJCWFmdGVyKTsKCnZvaWQgICBndGtfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0X3doaWxl
X2FsaXZlIChHdGtPYmplY3QJICAgICAgICpvYmplY3QsCgkJCQkJICAgICAgY29uc3QgZ2NoYXIg
ICAgICAqc2lnbmFsLAoJCQkJCSAgICAgIEd0a1NpZ25hbEZ1bmMJZnVuYywKCQkJCQkgICAgICBH
dGtPYmplY3QJICAgICAgICphbGl2ZV9vYmplY3QpOwp2b2lkICAgZ3RrX3NpZ25hbF9jb25uZWN0
X3doaWxlX2FsaXZlCSAgICAgKEd0a09iamVjdAkgICAgICAgKm9iamVjdCwKCQkJCQkgICAgICBj
b25zdCBnY2hhciAgICAgICpzaWduYWwsCgkJCQkJICAgICAgR3RrU2lnbmFsRnVuYwlmdW5jLAoJ
CQkJCSAgICAgIGdwb2ludGVyCQlmdW5jX2RhdGEsCgkJCQkJICAgICAgR3RrT2JqZWN0CSAgICAg
ICAqYWxpdmVfb2JqZWN0KTsKCnZvaWQgICBndGtfc2lnbmFsX2Rpc2Nvbm5lY3QJCSAgKEd0a09i
amVjdAkgICAgICAgKm9iamVjdCwKCQkJCQkgICBndWludAkJaGFuZGxlcl9pZCk7CnZvaWQgICBn
dGtfc2lnbmFsX2Rpc2Nvbm5lY3RfYnlfZnVuYwkgIChHdGtPYmplY3QJICAgICAgICpvYmplY3Qs
CgkJCQkJICAgR3RrU2lnbmFsRnVuYwlmdW5jLAoJCQkJCSAgIGdwb2ludGVyCQlkYXRhKTsKdm9p
ZCAgIGd0a19zaWduYWxfZGlzY29ubmVjdF9ieV9kYXRhCSAgKEd0a09iamVjdAkgICAgICAgKm9i
amVjdCwKCQkJCQkgICBncG9pbnRlcgkJZGF0YSk7CnZvaWQgICBndGtfc2lnbmFsX2hhbmRsZXJf
YmxvY2sJCSAgKEd0a09iamVjdAkgICAgICAgKm9iamVjdCwKCQkJCQkgICBndWludAkJaGFuZGxl
cl9pZCk7CnZvaWQgICBndGtfc2lnbmFsX2hhbmRsZXJfYmxvY2tfYnlfZnVuYwkgIChHdGtPYmpl
Y3QJICAgICAgICpvYmplY3QsCgkJCQkJICAgR3RrU2lnbmFsRnVuYwlmdW5jLAoJCQkJCSAgIGdw
b2ludGVyCQlkYXRhKTsKdm9pZCAgIGd0a19zaWduYWxfaGFuZGxlcl9ibG9ja19ieV9kYXRhCSAg
KEd0a09iamVjdAkgICAgICAgKm9iamVjdCwKCQkJCQkgICBncG9pbnRlcgkJZGF0YSk7CnZvaWQg
ICBndGtfc2lnbmFsX2hhbmRsZXJfdW5ibG9jawkgIChHdGtPYmplY3QJICAgICAgICpvYmplY3Qs
CgkJCQkJICAgZ3VpbnQJCWhhbmRsZXJfaWQpOwp2b2lkICAgZ3RrX3NpZ25hbF9oYW5kbGVyX3Vu
YmxvY2tfYnlfZnVuYyAoR3RrT2JqZWN0CSAgICAgICAqb2JqZWN0LAoJCQkJCSAgIEd0a1NpZ25h
bEZ1bmMJZnVuYywKCQkJCQkgICBncG9pbnRlcgkJZGF0YSk7CnZvaWQgICBndGtfc2lnbmFsX2hh
bmRsZXJfdW5ibG9ja19ieV9kYXRhIChHdGtPYmplY3QJICAgICAgICpvYmplY3QsCgkJCQkJICAg
Z3BvaW50ZXIJCWRhdGEpOwpndWludCAgZ3RrX3NpZ25hbF9oYW5kbGVyX3BlbmRpbmcJICAoR3Rr
T2JqZWN0CSAgICAgICAqb2JqZWN0LAoJCQkJCSAgIGd1aW50CQlzaWduYWxfaWQsCgkJCQkJICAg
Z2Jvb2xlYW4JCW1heV9iZV9ibG9ja2VkKTsKZ3VpbnQgIGd0a19zaWduYWxfaGFuZGxlcl9wZW5k
aW5nX2J5X2Z1bmMgKEd0a09iamVjdAkgICAgICAgKm9iamVjdCwKCQkJCQkgICBndWludAkJc2ln
bmFsX2lkLAoJCQkJCSAgIGdib29sZWFuCQltYXlfYmVfYmxvY2tlZCwKCQkJCQkgICBHdGtTaWdu
YWxGdW5jCWZ1bmMsCgkJCQkJICAgZ3BvaW50ZXIJCWRhdGEpOwpnaW50ICAgZ3RrX3NpZ25hbF9o
YW5kbGVyX3BlbmRpbmdfYnlfaWQgICAoR3RrT2JqZWN0CSAgICAgICAqb2JqZWN0LAoJCQkJCSAg
IGd1aW50CQloYW5kbGVyX2lkLAoJCQkJCSAgIGdib29sZWFuCQltYXlfYmVfYmxvY2tlZCk7Cmd1
aW50ICBndGtfc2lnbmFsX2FkZF9lbWlzc2lvbl9ob29rCSAgKGd1aW50CQlzaWduYWxfaWQsCgkJ
CQkJICAgR3RrRW1pc3Npb25Ib29rCWhvb2tfZnVuYywKCQkJCQkgICBncG9pbnRlciAgICAgICAJ
ZGF0YSk7Cmd1aW50ICBndGtfc2lnbmFsX2FkZF9lbWlzc2lvbl9ob29rX2Z1bGwgIChndWludAkJ
c2lnbmFsX2lkLAoJCQkJCSAgIEd0a0VtaXNzaW9uSG9vawlob29rX2Z1bmMsCgkJCQkJICAgZ3Bv
aW50ZXIgICAgICAgCWRhdGEsCgkJCQkJICAgR0Rlc3Ryb3lOb3RpZnkJZGVzdHJveSk7CnZvaWQg
ICBndGtfc2lnbmFsX3JlbW92ZV9lbWlzc2lvbl9ob29rCSAgKGd1aW50CQlzaWduYWxfaWQsCgkJ
CQkJICAgZ3VpbnQJCWhvb2tfaWQpOwoKIAoKCgpHdGtTaWduYWxRdWVyeSogZ3RrX3NpZ25hbF9x
dWVyeQkgIChndWludAkJc2lnbmFsX2lkKTsKCgogCnZvaWQgICBndGtfc2lnbmFsX2luaXQJCQkg
ICh2b2lkKTsKZ3VpbnQgIGd0a19zaWduYWxfbmV3CQkJICAoY29uc3QgZ2NoYXIJICAgICAgICpu
YW1lLAoJCQkJCSAgIEd0a1NpZ25hbFJ1blR5cGUJc2lnbmFsX2ZsYWdzLAoJCQkJCSAgIEd0a1R5
cGUJCW9iamVjdF90eXBlLAoJCQkJCSAgIGd1aW50CQlmdW5jdGlvbl9vZmZzZXQsCgkJCQkJICAg
R3RrU2lnbmFsTWFyc2hhbGxlcgltYXJzaGFsbGVyLAoJCQkJCSAgIEd0a1R5cGUJCXJldHVybl92
YWwsCgkJCQkJICAgZ3VpbnQJCW5wYXJhbXMsCgkJCQkJICAgLi4uKTsKZ3VpbnQgIGd0a19zaWdu
YWxfbmV3dgkJCSAgKGNvbnN0IGdjaGFyCSAgICAgICAqbmFtZSwKCQkJCQkgICBHdGtTaWduYWxS
dW5UeXBlCXNpZ25hbF9mbGFncywKCQkJCQkgICBHdGtUeXBlCQlvYmplY3RfdHlwZSwKCQkJCQkg
ICBndWludAkJZnVuY3Rpb25fb2Zmc2V0LAoJCQkJCSAgIEd0a1NpZ25hbE1hcnNoYWxsZXIJbWFy
c2hhbGxlciwKCQkJCQkgICBHdGtUeXBlCQlyZXR1cm5fdmFsLAoJCQkJCSAgIGd1aW50CQlucGFy
YW1zLAoJCQkJCSAgIEd0a1R5cGUJICAgICAgICpwYXJhbXMpOwp2b2lkICAgZ3RrX3NpZ25hbF9l
bWl0CQkJICAoR3RrT2JqZWN0CSAgICAgICAqb2JqZWN0LAoJCQkJCSAgIGd1aW50CQlzaWduYWxf
aWQsCgkJCQkJICAgLi4uKTsKdm9pZCAgIGd0a19zaWduYWxfZW1pdF9ieV9uYW1lCQkgIChHdGtP
YmplY3QJICAgICAgICpvYmplY3QsCgkJCQkJICAgY29uc3QgZ2NoYXIJICAgICAgICpuYW1lLAoJ
CQkJCSAgIC4uLik7CnZvaWQgICBndGtfc2lnbmFsX2VtaXR2CQkJICAoR3RrT2JqZWN0ICAgICAg
ICAgICAqb2JqZWN0LAoJCQkJCSAgIGd1aW50ICAgICAgICAgICAgICAgIHNpZ25hbF9pZCwKCQkJ
CQkgICBHdGtBcmcgICAgICAgICAgICAgICpwYXJhbXMpOwp2b2lkICAgZ3RrX3NpZ25hbF9lbWl0
dl9ieV9uYW1lCQkgIChHdGtPYmplY3QgICAgICAgICAgICpvYmplY3QsCgkJCQkJICAgY29uc3Qg
Z2NoYXIJICAgICAgICpuYW1lLAoJCQkJCSAgIEd0a0FyZyAgICAgICAgICAgICAgKnBhcmFtcyk7
CiAKdm9pZCAgIGd0a19zaWduYWxfaGFuZGxlcnNfZGVzdHJveQkgIChHdGtPYmplY3QJICAgICAg
ICpvYmplY3QpOwp2b2lkICAgZ3RrX3NpZ25hbF9zZXRfZnVuY3MJCSAgKEd0a1NpZ25hbE1hcnNo
YWwJbWFyc2hhbF9mdW5jLAoJCQkJCSAgIEd0a1NpZ25hbERlc3Ryb3kJZGVzdHJveV9mdW5jKTsK
ICAgICAgIAoKCgp9CgoKCgojIDMzICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2NhbGVuZGFyLmgiIDIg
MwoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a0NhbGVuZGFy
CSAgICAgICBHdGtDYWxlbmRhcjsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0NhbGVuZGFyQ2xhc3MgICAg
ICAgR3RrQ2FsZW5kYXJDbGFzczsKCnR5cGVkZWYgZW51bQp7CiAgR1RLX0NBTEVOREFSX1NIT1df
SEVBRElORwkJPSAxIDw8IDAsCiAgR1RLX0NBTEVOREFSX1NIT1dfREFZX05BTUVTCQk9IDEgPDwg
MSwKICBHVEtfQ0FMRU5EQVJfTk9fTU9OVEhfQ0hBTkdFCQk9IDEgPDwgMiwKICBHVEtfQ0FMRU5E
QVJfU0hPV19XRUVLX05VTUJFUlMJPSAxIDw8IDMsCiAgR1RLX0NBTEVOREFSX1dFRUtfU1RBUlRf
TU9OREFZCT0gMSA8PCA0Cn0gR3RrQ2FsZW5kYXJEaXNwbGF5T3B0aW9uczsKCnN0cnVjdCBfR3Rr
Q2FsZW5kYXIKewogIEd0a1dpZGdldCB3aWRnZXQ7CiAgCiAgR3RrU3R5bGUgICpoZWFkZXJfc3R5
bGU7CiAgR3RrU3R5bGUgICpsYWJlbF9zdHlsZTsKICAKICBnaW50IG1vbnRoOwogIGdpbnQgeWVh
cjsKICBnaW50IHNlbGVjdGVkX2RheTsKICAKICBnaW50IGRheV9tb250aFs2XVs3XTsKICBnaW50
IGRheVs2XVs3XTsKICAKICBnaW50IG51bV9tYXJrZWRfZGF0ZXM7CiAgZ2ludCBtYXJrZWRfZGF0
ZVszMV07CiAgR3RrQ2FsZW5kYXJEaXNwbGF5T3B0aW9ucyAgZGlzcGxheV9mbGFnczsKICBHZGtD
b2xvciBtYXJrZWRfZGF0ZV9jb2xvclszMV07CiAgCiAgR2RrR0MgKmdjOwogIEdka0dDICp4b3Jf
Z2M7CgogIGdpbnQgZm9jdXNfcm93OwogIGdpbnQgZm9jdXNfY29sOwoKICBnaW50IGhpZ2hsaWdo
dF9yb3c7CiAgZ2ludCBoaWdobGlnaHRfY29sOwogIAogIGdwb2ludGVyIHByaXZhdGVfZGF0YTsK
ICBnY2hhciBncm93X3NwYWNlIFszMl07Cn07CgpzdHJ1Y3QgX0d0a0NhbGVuZGFyQ2xhc3MKewog
IEd0a1dpZGdldENsYXNzIHBhcmVudF9jbGFzczsKICAKICAgCiAgdm9pZCAoKiBtb250aF9jaGFu
Z2VkKQkJKEd0a0NhbGVuZGFyICpjYWxlbmRhcik7CiAgdm9pZCAoKiBkYXlfc2VsZWN0ZWQpCQkJ
KEd0a0NhbGVuZGFyICpjYWxlbmRhcik7CiAgdm9pZCAoKiBkYXlfc2VsZWN0ZWRfZG91YmxlX2Ns
aWNrKQkoR3RrQ2FsZW5kYXIgKmNhbGVuZGFyKTsKICB2b2lkICgqIHByZXZfbW9udGgpCQkJKEd0
a0NhbGVuZGFyICpjYWxlbmRhcik7CiAgdm9pZCAoKiBuZXh0X21vbnRoKQkJCShHdGtDYWxlbmRh
ciAqY2FsZW5kYXIpOwogIHZvaWQgKCogcHJldl95ZWFyKQkJCShHdGtDYWxlbmRhciAqY2FsZW5k
YXIpOwogIHZvaWQgKCogbmV4dF95ZWFyKQkJCShHdGtDYWxlbmRhciAqY2FsZW5kYXIpOwogIAp9
OwoKCkd0a1R5cGUJICAgZ3RrX2NhbGVuZGFyX2dldF90eXBlCSh2b2lkKTsKR3RrV2lkZ2V0KiBn
dGtfY2FsZW5kYXJfbmV3CQkodm9pZCk7CgpnaW50CSAgIGd0a19jYWxlbmRhcl9zZWxlY3RfbW9u
dGgJKEd0a0NhbGVuZGFyICpjYWxlbmRhciwgCgkJCQkJIGd1aW50CSAgICAgIG1vbnRoLAoJCQkJ
CSBndWludAkgICAgICB5ZWFyKTsKdm9pZAkgICBndGtfY2FsZW5kYXJfc2VsZWN0X2RheQkoR3Rr
Q2FsZW5kYXIgKmNhbGVuZGFyLAoJCQkJCSBndWludAkgICAgICBkYXkpOwoKZ2ludAkgICBndGtf
Y2FsZW5kYXJfbWFya19kYXkJKEd0a0NhbGVuZGFyICpjYWxlbmRhciwKCQkJCQkgZ3VpbnQJICAg
ICAgZGF5KTsKZ2ludAkgICBndGtfY2FsZW5kYXJfdW5tYXJrX2RheQkoR3RrQ2FsZW5kYXIgKmNh
bGVuZGFyLAoJCQkJCSBndWludAkgICAgICBkYXkpOwp2b2lkCSAgIGd0a19jYWxlbmRhcl9jbGVh
cl9tYXJrcwkoR3RrQ2FsZW5kYXIgKmNhbGVuZGFyKTsKCgp2b2lkCSAgIGd0a19jYWxlbmRhcl9k
aXNwbGF5X29wdGlvbnMgKEd0a0NhbGVuZGFyCQkgICpjYWxlbmRhciwKCQkJCQkgR3RrQ2FsZW5k
YXJEaXNwbGF5T3B0aW9ucyBmbGFncyk7Cgp2b2lkCSAgIGd0a19jYWxlbmRhcl9nZXRfZGF0ZQko
R3RrQ2FsZW5kYXIgKmNhbGVuZGFyLCAKCQkJCQkgZ3VpbnQJICAgICAqeWVhciwKCQkJCQkgZ3Vp
bnQJICAgICAqbW9udGgsCgkJCQkJIGd1aW50CSAgICAgKmRheSk7CnZvaWQJICAgZ3RrX2NhbGVu
ZGFyX2ZyZWV6ZQkJKEd0a0NhbGVuZGFyICpjYWxlbmRhcik7CnZvaWQJICAgZ3RrX2NhbGVuZGFy
X3RoYXcJCShHdGtDYWxlbmRhciAqY2FsZW5kYXIpOwoKCgoKCn0KCgoKIyA0NCAiL3Vzci9pbmNs
dWRlL2d0ay9ndGsuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrY2hlY2tidXR0b24u
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L2d0ay9ndGt0b2dnbGVidXR0b24uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtUb2dnbGVC
dXR0b24gICAgICAgR3RrVG9nZ2xlQnV0dG9uOwp0eXBlZGVmIHN0cnVjdCBfR3RrVG9nZ2xlQnV0
dG9uQ2xhc3MgIEd0a1RvZ2dsZUJ1dHRvbkNsYXNzOwoKc3RydWN0IF9HdGtUb2dnbGVCdXR0b24K
ewogIEd0a0J1dHRvbiBidXR0b247CgogIGd1aW50IGFjdGl2ZSA6IDE7CiAgZ3VpbnQgZHJhd19p
bmRpY2F0b3IgOiAxOwogIAogIEdka1dpbmRvdyAqZXZlbnRfd2luZG93Owp9OwoKc3RydWN0IF9H
dGtUb2dnbGVCdXR0b25DbGFzcwp7CiAgR3RrQnV0dG9uQ2xhc3MgcGFyZW50X2NsYXNzOwoKICB2
b2lkICgqIHRvZ2dsZWQpIChHdGtUb2dnbGVCdXR0b24gKnRvZ2dsZV9idXR0b24pOwp9OwoKCkd0
a1R5cGUgICAgZ3RrX3RvZ2dsZV9idXR0b25fZ2V0X3R5cGUgICAgICAgKHZvaWQpOwpHdGtXaWRn
ZXQqIGd0a190b2dnbGVfYnV0dG9uX25ldyAgICAgICAgICAgICh2b2lkKTsKR3RrV2lkZ2V0KiBn
dGtfdG9nZ2xlX2J1dHRvbl9uZXdfd2l0aF9sYWJlbCAoY29uc3QgZ2NoYXIgICAgICpsYWJlbCk7
CnZvaWQgICAgICAgZ3RrX3RvZ2dsZV9idXR0b25fc2V0X21vZGUgICAgICAgKEd0a1RvZ2dsZUJ1
dHRvbiAqdG9nZ2xlX2J1dHRvbiwKCQkJCQkgICAgIGdib29sZWFuICAgICAgICAgZHJhd19pbmRp
Y2F0b3IpOwp2b2lkICAgICAgIGd0a190b2dnbGVfYnV0dG9uX3NldF9hY3RpdmUgICAgIChHdGtU
b2dnbGVCdXR0b24gKnRvZ2dsZV9idXR0b24sCgkJCQkJICAgICBnYm9vbGVhbiAgICAgICAgIGlz
X2FjdGl2ZSk7Cmdib29sZWFuICAgZ3RrX3RvZ2dsZV9idXR0b25fZ2V0X2FjdGl2ZQkgICAgKEd0
a1RvZ2dsZUJ1dHRvbiAqdG9nZ2xlX2J1dHRvbik7CnZvaWQgICAgICAgZ3RrX3RvZ2dsZV9idXR0
b25fdG9nZ2xlZCAgICAgICAgKEd0a1RvZ2dsZUJ1dHRvbiAqdG9nZ2xlX2J1dHRvbik7CgoKCn0K
CgoKCiMgMzIgIi91c3IvaW5jbHVkZS9ndGsvZ3RrY2hlY2tidXR0b24uaCIgMiAzCgoKCgpleHRl
cm4gIkMiIHsKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtDaGVja0J1dHRvbiAgICAgICBH
dGtDaGVja0J1dHRvbjsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0NoZWNrQnV0dG9uQ2xhc3MgIEd0a0No
ZWNrQnV0dG9uQ2xhc3M7CgpzdHJ1Y3QgX0d0a0NoZWNrQnV0dG9uCnsKICBHdGtUb2dnbGVCdXR0
b24gdG9nZ2xlX2J1dHRvbjsKfTsKCnN0cnVjdCBfR3RrQ2hlY2tCdXR0b25DbGFzcwp7CiAgR3Rr
VG9nZ2xlQnV0dG9uQ2xhc3MgcGFyZW50X2NsYXNzOwoKICBndWludDE2IGluZGljYXRvcl9zaXpl
OwogIGd1aW50MTYgaW5kaWNhdG9yX3NwYWNpbmc7CgogIHZvaWQgKCogZHJhd19pbmRpY2F0b3Ip
IChHdGtDaGVja0J1dHRvbiAqY2hlY2tfYnV0dG9uLAoJCQkgICBHZGtSZWN0YW5nbGUgICAqYXJl
YSk7Cn07CgoKR3RrVHlwZSAgICBndGtfY2hlY2tfYnV0dG9uX2dldF90eXBlICAgICAgICh2b2lk
KTsKR3RrV2lkZ2V0KiBndGtfY2hlY2tfYnV0dG9uX25ldyAgICAgICAgICAgICh2b2lkKTsKR3Rr
V2lkZ2V0KiBndGtfY2hlY2tfYnV0dG9uX25ld193aXRoX2xhYmVsIChjb25zdCBnY2hhciAqbGFi
ZWwpOwoKCgp9CgoKCgojIDQ1ICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMKCiMgMSAiL3Vz
ci9pbmNsdWRlL2d0ay9ndGtjaGVja21lbnVpdGVtLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrbWVudWl0ZW0uaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtp
dGVtLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJD
IiB7CgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrSXRlbSAgICAgICBHdGtJdGVtOwp0eXBl
ZGVmIHN0cnVjdCBfR3RrSXRlbUNsYXNzICBHdGtJdGVtQ2xhc3M7CgpzdHJ1Y3QgX0d0a0l0ZW0K
ewogIEd0a0JpbiBiaW47Cn07CgpzdHJ1Y3QgX0d0a0l0ZW1DbGFzcwp7CiAgR3RrQmluQ2xhc3Mg
cGFyZW50X2NsYXNzOwoKICB2b2lkICgqIHNlbGVjdCkgICAoR3RrSXRlbSAqaXRlbSk7CiAgdm9p
ZCAoKiBkZXNlbGVjdCkgKEd0a0l0ZW0gKml0ZW0pOwogIHZvaWQgKCogdG9nZ2xlKSAgIChHdGtJ
dGVtICppdGVtKTsKfTsKCgpHdGtUeXBlIGd0a19pdGVtX2dldF90eXBlICh2b2lkKTsKdm9pZCAg
ICBndGtfaXRlbV9zZWxlY3QgICAoR3RrSXRlbSAqaXRlbSk7CnZvaWQgICAgZ3RrX2l0ZW1fZGVz
ZWxlY3QgKEd0a0l0ZW0gKml0ZW0pOwp2b2lkICAgIGd0a19pdGVtX3RvZ2dsZSAgIChHdGtJdGVt
ICppdGVtKTsKCgoKfQoKCgoKIyAzMiAiL3Vzci9pbmNsdWRlL2d0ay9ndGttZW51aXRlbS5oIiAy
IDMKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a01lbnVJdGVt
CSAgR3RrTWVudUl0ZW07CnR5cGVkZWYgc3RydWN0IF9HdGtNZW51SXRlbUNsYXNzICBHdGtNZW51
SXRlbUNsYXNzOwoKc3RydWN0IF9HdGtNZW51SXRlbQp7CiAgR3RrSXRlbSBpdGVtOwogIAogIEd0
a1dpZGdldCAqc3VibWVudTsKICAKICBndWludAkgIGFjY2VsZXJhdG9yX3NpZ25hbDsKICBndWlu
dDE2IHRvZ2dsZV9zaXplOwogIGd1aW50MTYgYWNjZWxlcmF0b3Jfd2lkdGg7CiAgCiAgZ3VpbnQg
c2hvd190b2dnbGVfaW5kaWNhdG9yIDogMTsKICBndWludCBzaG93X3N1Ym1lbnVfaW5kaWNhdG9y
IDogMTsKICBndWludCBzdWJtZW51X3BsYWNlbWVudCA6IDE7CiAgZ3VpbnQgc3VibWVudV9kaXJl
Y3Rpb24gOiAxOwogIGd1aW50IHJpZ2h0X2p1c3RpZnk6IDE7CiAgZ3VpbnQgdGltZXI7Cn07Cgpz
dHJ1Y3QgX0d0a01lbnVJdGVtQ2xhc3MKewogIEd0a0l0ZW1DbGFzcyBwYXJlbnRfY2xhc3M7CiAg
CiAgZ3VpbnQgdG9nZ2xlX3NpemU7CiAgIAoKCgoKCiAgZ3VpbnQgaGlkZV9vbl9hY3RpdmF0ZSA6
IDE7CiAgCiAgdm9pZCAoKiBhY3RpdmF0ZSkgICAgICAoR3RrTWVudUl0ZW0gKm1lbnVfaXRlbSk7
CiAgdm9pZCAoKiBhY3RpdmF0ZV9pdGVtKSAoR3RrTWVudUl0ZW0gKm1lbnVfaXRlbSk7Cn07CgoK
R3RrVHlwZQkgICBndGtfbWVudV9pdGVtX2dldF90eXBlCSAgKHZvaWQpOwpHdGtXaWRnZXQqIGd0
a19tZW51X2l0ZW1fbmV3CQkgICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfbWVudV9pdGVtX25ld193
aXRoX2xhYmVsCSAgKGNvbnN0IGdjaGFyCSAgICAgICAqbGFiZWwpOwp2b2lkCSAgIGd0a19tZW51
X2l0ZW1fc2V0X3N1Ym1lbnUJICAoR3RrTWVudUl0ZW0JICAgICAgICptZW51X2l0ZW0sCgkJCQkJ
ICAgR3RrV2lkZ2V0CSAgICAgICAqc3VibWVudSk7CnZvaWQJICAgZ3RrX21lbnVfaXRlbV9yZW1v
dmVfc3VibWVudQkgIChHdGtNZW51SXRlbQkgICAgICAgKm1lbnVfaXRlbSk7CnZvaWQJICAgZ3Rr
X21lbnVfaXRlbV9zZXRfcGxhY2VtZW50CSAgKEd0a01lbnVJdGVtCSAgICAgICAqbWVudV9pdGVt
LAoJCQkJCSAgIEd0a1N1Ym1lbnVQbGFjZW1lbnQJcGxhY2VtZW50KTsKdm9pZAkgICBndGtfbWVu
dV9pdGVtX2NvbmZpZ3VyZQkgIChHdGtNZW51SXRlbQkgICAgICAgKm1lbnVfaXRlbSwKCQkJCQkg
ICBnaW50CQkJc2hvd190b2dnbGVfaW5kaWNhdG9yLAoJCQkJCSAgIGdpbnQJCQlzaG93X3N1Ym1l
bnVfaW5kaWNhdG9yKTsKdm9pZAkgICBndGtfbWVudV9pdGVtX3NlbGVjdAkJICAoR3RrTWVudUl0
ZW0JICAgICAgICptZW51X2l0ZW0pOwp2b2lkCSAgIGd0a19tZW51X2l0ZW1fZGVzZWxlY3QJICAo
R3RrTWVudUl0ZW0JICAgICAgICptZW51X2l0ZW0pOwp2b2lkCSAgIGd0a19tZW51X2l0ZW1fYWN0
aXZhdGUJICAoR3RrTWVudUl0ZW0JICAgICAgICptZW51X2l0ZW0pOwp2b2lkCSAgIGd0a19tZW51
X2l0ZW1fcmlnaHRfanVzdGlmeQkgIChHdGtNZW51SXRlbQkgICAgICAgKm1lbnVfaXRlbSk7CgoK
Cn0KCgoKCiMgMzIgIi91c3IvaW5jbHVkZS9ndGsvZ3RrY2hlY2ttZW51aXRlbS5oIiAyIDMKCgoK
CmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a0NoZWNrTWVudUl0ZW0g
ICAgICAgR3RrQ2hlY2tNZW51SXRlbTsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0NoZWNrTWVudUl0ZW1D
bGFzcyAgR3RrQ2hlY2tNZW51SXRlbUNsYXNzOwoKc3RydWN0IF9HdGtDaGVja01lbnVJdGVtCnsK
ICBHdGtNZW51SXRlbSBtZW51X2l0ZW07CiAgCiAgZ3VpbnQgYWN0aXZlIDogMTsKICBndWludCBh
bHdheXNfc2hvd190b2dnbGUgOiAxOwp9OwoKc3RydWN0IF9HdGtDaGVja01lbnVJdGVtQ2xhc3MK
ewogIEd0a01lbnVJdGVtQ2xhc3MgcGFyZW50X2NsYXNzOwogIAogIHZvaWQgKCogdG9nZ2xlZCkJ
ICAoR3RrQ2hlY2tNZW51SXRlbSAqY2hlY2tfbWVudV9pdGVtKTsKICB2b2lkICgqIGRyYXdfaW5k
aWNhdG9yKSAoR3RrQ2hlY2tNZW51SXRlbSAqY2hlY2tfbWVudV9pdGVtLAoJCQkgICBHZGtSZWN0
YW5nbGUJICAgICphcmVhKTsKfTsKCgpHdGtUeXBlCSAgIGd0a19jaGVja19tZW51X2l0ZW1fZ2V0
X3R5cGUJICAgICAgICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfY2hlY2tfbWVudV9pdGVtX25ldwkg
ICAgICAgKHZvaWQpOwpHdGtXaWRnZXQqIGd0a19jaGVja19tZW51X2l0ZW1fbmV3X3dpdGhfbGFi
ZWwgIChjb25zdCBnY2hhcgkgKmxhYmVsKTsKdm9pZAkgICBndGtfY2hlY2tfbWVudV9pdGVtX3Nl
dF9hY3RpdmUgICAgICAoR3RrQ2hlY2tNZW51SXRlbSAqY2hlY2tfbWVudV9pdGVtLAoJCQkJCQln
Ym9vbGVhbgkgIGlzX2FjdGl2ZSk7CnZvaWQJICAgZ3RrX2NoZWNrX21lbnVfaXRlbV9zZXRfc2hv
d190b2dnbGUgKEd0a0NoZWNrTWVudUl0ZW0gKm1lbnVfaXRlbSwKCQkJCQkJZ2Jvb2xlYW4JICBh
bHdheXMpOwp2b2lkCSAgIGd0a19jaGVja19tZW51X2l0ZW1fdG9nZ2xlZAkgICAgICAgKEd0a0No
ZWNrTWVudUl0ZW0gKmNoZWNrX21lbnVfaXRlbSk7CgoKCn0KCgoKCiMgNDYgIi91c3IvaW5jbHVk
ZS9ndGsvZ3RrLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2NsaXN0LmgiIDEgMwog
CgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3Rr
L2d0a2hzY3JvbGxiYXIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtzY3JvbGxiYXIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtyYW5nZS5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoK
CnR5cGVkZWYgc3RydWN0IF9HdGtSYW5nZSAgICAgICAgR3RrUmFuZ2U7CnR5cGVkZWYgc3RydWN0
IF9HdGtSYW5nZUNsYXNzICAgR3RrUmFuZ2VDbGFzczsKCnN0cnVjdCBfR3RrUmFuZ2UKewogIEd0
a1dpZGdldCB3aWRnZXQ7CgogIEdka1dpbmRvdyAqdHJvdWdoOwogIEdka1dpbmRvdyAqc2xpZGVy
OwogIEdka1dpbmRvdyAqc3RlcF9mb3J3OwogIEdka1dpbmRvdyAqc3RlcF9iYWNrOwoKICBnaW50
MTYgeF9jbGlja19wb2ludDsKICBnaW50MTYgeV9jbGlja19wb2ludDsKCiAgZ3VpbnQ4IGJ1dHRv
bjsKICBnaW50OCBkaWdpdHM7CiAgZ3VpbnQgcG9saWN5IDogMjsKICBndWludCBzY3JvbGxfdHlw
ZSA6IDM7CiAgZ3VpbnQgaW5fY2hpbGQgOiAzOwogIGd1aW50IGNsaWNrX2NoaWxkIDogMzsKICBn
dWludCBuZWVkX3RpbWVyIDogMTsKCiAgZ3VpbnQzMiB0aW1lcjsKCiAgZ2Zsb2F0IG9sZF92YWx1
ZTsKICBnZmxvYXQgb2xkX2xvd2VyOwogIGdmbG9hdCBvbGRfdXBwZXI7CiAgZ2Zsb2F0IG9sZF9w
YWdlX3NpemU7CgogIEd0a0FkanVzdG1lbnQgKmFkanVzdG1lbnQ7Cn07CgpzdHJ1Y3QgX0d0a1Jh
bmdlQ2xhc3MKewogIEd0a1dpZGdldENsYXNzIHBhcmVudF9jbGFzczsKCiAgZ2ludCBzbGlkZXJf
d2lkdGg7CiAgZ2ludCBzdGVwcGVyX3NpemU7CiAgZ2ludCBzdGVwcGVyX3NsaWRlcl9zcGFjaW5n
OwogIGdpbnQgbWluX3NsaWRlcl9zaXplOwoKICBndWludDggdHJvdWdoOwogIGd1aW50OCBzbGlk
ZXI7CiAgZ3VpbnQ4IHN0ZXBfZm9ydzsKICBndWludDggc3RlcF9iYWNrOwoKICB2b2lkICgqIGRy
YXdfYmFja2dyb3VuZCkgIChHdGtSYW5nZSAqcmFuZ2UpOwogIHZvaWQgKCogY2xlYXJfYmFja2dy
b3VuZCkgKEd0a1JhbmdlICpyYW5nZSk7CiAgdm9pZCAoKiBkcmF3X3Ryb3VnaCkgICAgIChHdGtS
YW5nZSAqcmFuZ2UpOwogIHZvaWQgKCogZHJhd19zbGlkZXIpICAgICAoR3RrUmFuZ2UgKnJhbmdl
KTsKICB2b2lkICgqIGRyYXdfc3RlcF9mb3J3KSAgKEd0a1JhbmdlICpyYW5nZSk7CiAgdm9pZCAo
KiBkcmF3X3N0ZXBfYmFjaykgIChHdGtSYW5nZSAqcmFuZ2UpOwogIHZvaWQgKCogc2xpZGVyX3Vw
ZGF0ZSkgICAoR3RrUmFuZ2UgKnJhbmdlKTsKICBnaW50ICgqIHRyb3VnaF9jbGljaykgICAgKEd0
a1JhbmdlICpyYW5nZSwKCQkJICAgIGdpbnQgICAgICB4LAoJCQkgICAgZ2ludCAgICAgIHksCgkJ
CSAgICBnZmxvYXQgICAqanVtcF9wZXJjKTsKICBnaW50ICgqIHRyb3VnaF9rZXlzKSAgICAgKEd0
a1JhbmdlICpyYW5nZSwKCQkJICAgIEdka0V2ZW50S2V5ICprZXksCgkJCSAgICBHdGtTY3JvbGxU
eXBlICpzY3JvbGwsCgkJCSAgICBHdGtUcm91Z2hUeXBlICp0cm91Z2gpOwogIHZvaWQgKCogbW90
aW9uKSAgICAgICAgICAoR3RrUmFuZ2UgKnJhbmdlLAoJCQkgICAgZ2ludCAgICAgIHhkZWx0YSwK
CQkJICAgIGdpbnQgICAgICB5ZGVsdGEpOwogIGdpbnQgKCogdGltZXIpICAgICAgICAgICAoR3Rr
UmFuZ2UgKnJhbmdlKTsKfTsKCgpHdGtUeXBlICAgICAgICBndGtfcmFuZ2VfZ2V0X3R5cGUgICAg
ICAgICAgICAgICAodm9pZCk7Ckd0a0FkanVzdG1lbnQqIGd0a19yYW5nZV9nZXRfYWRqdXN0bWVu
dCAgICAgICAgIChHdGtSYW5nZSAgICAgICpyYW5nZSk7CnZvaWQgICAgICAgICAgIGd0a19yYW5n
ZV9zZXRfdXBkYXRlX3BvbGljeSAgICAgIChHdGtSYW5nZSAgICAgICpyYW5nZSwKCQkJCQkJIEd0
a1VwZGF0ZVR5cGUgIHBvbGljeSk7CnZvaWQgICAgICAgICAgIGd0a19yYW5nZV9zZXRfYWRqdXN0
bWVudCAgICAgICAgIChHdGtSYW5nZSAgICAgICpyYW5nZSwKCQkJCQkJIEd0a0FkanVzdG1lbnQg
KmFkanVzdG1lbnQpOwoKdm9pZCAgICAgICAgICAgZ3RrX3JhbmdlX2RyYXdfYmFja2dyb3VuZCAg
ICAgICAgKEd0a1JhbmdlICAgICAgKnJhbmdlKTsKdm9pZCAgICAgICAgICAgZ3RrX3JhbmdlX2Ns
ZWFyX2JhY2tncm91bmQgICAgICAgIChHdGtSYW5nZSAgICAgICpyYW5nZSk7CnZvaWQgICAgICAg
ICAgIGd0a19yYW5nZV9kcmF3X3Ryb3VnaCAgICAgICAgICAgIChHdGtSYW5nZSAgICAgICpyYW5n
ZSk7CnZvaWQgICAgICAgICAgIGd0a19yYW5nZV9kcmF3X3NsaWRlciAgICAgICAgICAgIChHdGtS
YW5nZSAgICAgICpyYW5nZSk7CnZvaWQgICAgICAgICAgIGd0a19yYW5nZV9kcmF3X3N0ZXBfZm9y
dyAgICAgICAgIChHdGtSYW5nZSAgICAgICpyYW5nZSk7CnZvaWQgICAgICAgICAgIGd0a19yYW5n
ZV9kcmF3X3N0ZXBfYmFjayAgICAgICAgIChHdGtSYW5nZSAgICAgICpyYW5nZSk7CnZvaWQgICAg
ICAgICAgIGd0a19yYW5nZV9zbGlkZXJfdXBkYXRlICAgICAgICAgIChHdGtSYW5nZSAgICAgICpy
YW5nZSk7CmdpbnQgICAgICAgICAgIGd0a19yYW5nZV90cm91Z2hfY2xpY2sgICAgICAgICAgIChH
dGtSYW5nZSAgICAgICpyYW5nZSwKCQkJCQkJIGdpbnQgICAgICAgICAgIHgsCgkJCQkJCSBnaW50
ICAgICAgICAgICB5LAoJCQkJCQkgZ2Zsb2F0CSAgICAgICAqanVtcF9wZXJjKTsKCnZvaWQgICAg
ICAgICAgIGd0a19yYW5nZV9kZWZhdWx0X2hzbGlkZXJfdXBkYXRlIChHdGtSYW5nZSAgICAgICpy
YW5nZSk7CnZvaWQgICAgICAgICAgIGd0a19yYW5nZV9kZWZhdWx0X3ZzbGlkZXJfdXBkYXRlIChH
dGtSYW5nZSAgICAgICpyYW5nZSk7CmdpbnQgICAgICAgICAgIGd0a19yYW5nZV9kZWZhdWx0X2h0
cm91Z2hfY2xpY2sgIChHdGtSYW5nZSAgICAgICpyYW5nZSwKCQkJCQkJIGdpbnQgICAgICAgICAg
IHgsCgkJCQkJCSBnaW50ICAgICAgICAgICB5LAoJCQkJCQkgZ2Zsb2F0CSAgICAgICAqanVtcF9w
ZXJjKTsKZ2ludCAgICAgICAgICAgZ3RrX3JhbmdlX2RlZmF1bHRfdnRyb3VnaF9jbGljayAgKEd0
a1JhbmdlICAgICAgKnJhbmdlLAoJCQkJCQkgZ2ludCAgICAgICAgICAgeCwKCQkJCQkJIGdpbnQg
ICAgICAgICAgIHksCgkJCQkJCSBnZmxvYXQJICAgICAgICpqdW1wX3BlcmMpOwp2b2lkICAgICAg
ICAgICBndGtfcmFuZ2VfZGVmYXVsdF9obW90aW9uICAgICAgICAoR3RrUmFuZ2UgICAgICAqcmFu
Z2UsCgkJCQkJCSBnaW50ICAgICAgICAgICB4ZGVsdGEsCgkJCQkJCSBnaW50ICAgICAgICAgICB5
ZGVsdGEpOwp2b2lkICAgICAgICAgICBndGtfcmFuZ2VfZGVmYXVsdF92bW90aW9uICAgICAgICAo
R3RrUmFuZ2UgICAgICAqcmFuZ2UsCgkJCQkJCSBnaW50ICAgICAgICAgICB4ZGVsdGEsCgkJCQkJ
CSBnaW50ICAgICAgICAgICB5ZGVsdGEpOwoKCgp9CgoKCgojIDMyICIvdXNyL2luY2x1ZGUvZ3Rr
L2d0a3Njcm9sbGJhci5oIiAyIDMKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgX0d0a1Njcm9sbGJhciAgICAgICAgR3RrU2Nyb2xsYmFyOwp0eXBlZGVmIHN0cnVjdCBf
R3RrU2Nyb2xsYmFyQ2xhc3MgICBHdGtTY3JvbGxiYXJDbGFzczsKCnN0cnVjdCBfR3RrU2Nyb2xs
YmFyCnsKICBHdGtSYW5nZSByYW5nZTsKfTsKCnN0cnVjdCBfR3RrU2Nyb2xsYmFyQ2xhc3MKewog
IEd0a1JhbmdlQ2xhc3MgcGFyZW50X2NsYXNzOwp9OwoKCkd0a1R5cGUgZ3RrX3Njcm9sbGJhcl9n
ZXRfdHlwZSAodm9pZCk7CgoKCn0KCgoKCiMgMzIgIi91c3IvaW5jbHVkZS9ndGsvZ3RraHNjcm9s
bGJhci5oIiAyIDMKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0
a0hTY3JvbGxiYXIgICAgICAgR3RrSFNjcm9sbGJhcjsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0hTY3Jv
bGxiYXJDbGFzcyAgR3RrSFNjcm9sbGJhckNsYXNzOwoKc3RydWN0IF9HdGtIU2Nyb2xsYmFyCnsK
ICBHdGtTY3JvbGxiYXIgc2Nyb2xsYmFyOwp9OwoKc3RydWN0IF9HdGtIU2Nyb2xsYmFyQ2xhc3MK
ewogIEd0a1Njcm9sbGJhckNsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtUeXBlICAgIGd0a19o
c2Nyb2xsYmFyX2dldF90eXBlICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfaHNjcm9sbGJhcl9uZXcg
ICAgICAoR3RrQWRqdXN0bWVudCAqYWRqdXN0bWVudCk7CgoKCn0KCgoKCiMgMzYgIi91c3IvaW5j
bHVkZS9ndGsvZ3RrY2xpc3QuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrdnNjcm9s
bGJhci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5
cGVkZWYgc3RydWN0IF9HdGtWU2Nyb2xsYmFyICAgICAgIEd0a1ZTY3JvbGxiYXI7CnR5cGVkZWYg
c3RydWN0IF9HdGtWU2Nyb2xsYmFyQ2xhc3MgIEd0a1ZTY3JvbGxiYXJDbGFzczsKCnN0cnVjdCBf
R3RrVlNjcm9sbGJhcgp7CiAgR3RrU2Nyb2xsYmFyIHNjcm9sbGJhcjsKfTsKCnN0cnVjdCBfR3Rr
VlNjcm9sbGJhckNsYXNzCnsKICBHdGtTY3JvbGxiYXJDbGFzcyBwYXJlbnRfY2xhc3M7Cn07CgoK
CmV4dGVybiAiQyIgewoKCgpHdGtUeXBlICAgIGd0a192c2Nyb2xsYmFyX2dldF90eXBlICh2b2lk
KTsKR3RrV2lkZ2V0KiBndGtfdnNjcm9sbGJhcl9uZXcgICAgICAoR3RrQWRqdXN0bWVudCAqYWRq
dXN0bWVudCk7CgoKCn0KCgoKCiMgMzcgIi91c3IvaW5jbHVkZS9ndGsvZ3RrY2xpc3QuaCIgMiAz
CgoKCgpleHRlcm4gIkMiIHsKCgogCmVudW0gewogIEdUS19DTElTVF9JTl9EUkFHICAgICAgICAg
ICAgID0gMSA8PCAgMCwKICBHVEtfQ0xJU1RfUk9XX0hFSUdIVF9TRVQgICAgICA9IDEgPDwgIDEs
CiAgR1RLX0NMSVNUX1NIT1dfVElUTEVTICAgICAgICAgPSAxIDw8ICAyLAogIEdUS19DTElTVF9D
SElMRF9IQVNfRk9DVVMgICAgID0gMSA8PCAgMywKICBHVEtfQ0xJU1RfQUREX01PREUgICAgICAg
ICAgICA9IDEgPDwgIDQsCiAgR1RLX0NMSVNUX0FVVE9fU09SVCAgICAgICAgICAgPSAxIDw8ICA1
LAogIEdUS19DTElTVF9BVVRPX1JFU0laRV9CTE9DS0VEID0gMSA8PCAgNiwKICBHVEtfQ0xJU1Rf
UkVPUkRFUkFCTEUgICAgICAgICA9IDEgPDwgIDcsCiAgR1RLX0NMSVNUX1VTRV9EUkFHX0lDT05T
ICAgICAgPSAxIDw8ICA4LAogIEdUS19DTElTVF9EUkFXX0RSQUdfTElORSAgICAgID0gMSA8PCAg
OSwKICBHVEtfQ0xJU1RfRFJBV19EUkFHX1JFQ1QgICAgICA9IDEgPDwgMTAKfTsgCgogCnR5cGVk
ZWYgZW51bQp7CiAgR1RLX0NFTExfRU1QVFksCiAgR1RLX0NFTExfVEVYVCwKICBHVEtfQ0VMTF9Q
SVhNQVAsCiAgR1RLX0NFTExfUElYVEVYVCwKICBHVEtfQ0VMTF9XSURHRVQKfSBHdGtDZWxsVHlw
ZTsKCnR5cGVkZWYgZW51bQp7CiAgR1RLX0NMSVNUX0RSQUdfTk9ORSwKICBHVEtfQ0xJU1RfRFJB
R19CRUZPUkUsCiAgR1RLX0NMSVNUX0RSQUdfSU5UTywKICBHVEtfQ0xJU1RfRFJBR19BRlRFUgp9
IEd0a0NMaXN0RHJhZ1BvczsKCnR5cGVkZWYgZW51bQp7CiAgR1RLX0JVVFRPTl9JR05PUkVEID0g
MCwKICBHVEtfQlVUVE9OX1NFTEVDVFMgPSAxIDw8IDAsCiAgR1RLX0JVVFRPTl9EUkFHUyAgID0g
MSA8PCAxLAogIEdUS19CVVRUT05fRVhQQU5EUyA9IDEgPDwgMgp9IEd0a0J1dHRvbkFjdGlvbjsK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrQ0xpc3Qg
R3RrQ0xpc3Q7CnR5cGVkZWYgc3RydWN0IF9HdGtDTGlzdENsYXNzIEd0a0NMaXN0Q2xhc3M7CnR5
cGVkZWYgc3RydWN0IF9HdGtDTGlzdENvbHVtbiBHdGtDTGlzdENvbHVtbjsKdHlwZWRlZiBzdHJ1
Y3QgX0d0a0NMaXN0Um93IEd0a0NMaXN0Um93OwoKdHlwZWRlZiBzdHJ1Y3QgX0d0a0NlbGwgR3Rr
Q2VsbDsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0NlbGxUZXh0IEd0a0NlbGxUZXh0Owp0eXBlZGVmIHN0
cnVjdCBfR3RrQ2VsbFBpeG1hcCBHdGtDZWxsUGl4bWFwOwp0eXBlZGVmIHN0cnVjdCBfR3RrQ2Vs
bFBpeFRleHQgR3RrQ2VsbFBpeFRleHQ7CnR5cGVkZWYgc3RydWN0IF9HdGtDZWxsV2lkZ2V0IEd0
a0NlbGxXaWRnZXQ7Cgp0eXBlZGVmIGdpbnQgKCpHdGtDTGlzdENvbXBhcmVGdW5jKSAoR3RrQ0xp
c3QgICAgICpjbGlzdCwKCQkJCSAgICAgZ2NvbnN0cG9pbnRlciBwdHIxLAoJCQkJICAgICBnY29u
c3Rwb2ludGVyIHB0cjIpOwoKdHlwZWRlZiBzdHJ1Y3QgX0d0a0NMaXN0Q2VsbEluZm8gR3RrQ0xp
c3RDZWxsSW5mbzsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0NMaXN0RGVzdEluZm8gR3RrQ0xpc3REZXN0
SW5mbzsKCnN0cnVjdCBfR3RrQ0xpc3RDZWxsSW5mbwp7CiAgZ2ludCByb3c7CiAgZ2ludCBjb2x1
bW47Cn07CgpzdHJ1Y3QgX0d0a0NMaXN0RGVzdEluZm8KewogIEd0a0NMaXN0Q2VsbEluZm8gY2Vs
bDsKICBHdGtDTGlzdERyYWdQb3MgIGluc2VydF9wb3M7Cn07CgpzdHJ1Y3QgX0d0a0NMaXN0CnsK
ICBHdGtDb250YWluZXIgY29udGFpbmVyOwogIAogIGd1aW50MTYgZmxhZ3M7CiAgCiAgIAogIEdN
ZW1DaHVuayAqcm93X21lbV9jaHVuazsKICBHTWVtQ2h1bmsgKmNlbGxfbWVtX2NodW5rOwoKICBn
dWludCBmcmVlemVfY291bnQ7CiAgCiAgIAoKICBHZGtSZWN0YW5nbGUgaW50ZXJuYWxfYWxsb2Nh
dGlvbjsKICAKICAgCiAgZ2ludCByb3dzOwogIGdpbnQgcm93X2NlbnRlcl9vZmZzZXQ7CiAgZ2lu
dCByb3dfaGVpZ2h0OwogIEdMaXN0ICpyb3dfbGlzdDsKICBHTGlzdCAqcm93X2xpc3RfZW5kOwog
IAogICAKICBnaW50IGNvbHVtbnM7CiAgR2RrUmVjdGFuZ2xlIGNvbHVtbl90aXRsZV9hcmVhOwog
IEdka1dpbmRvdyAqdGl0bGVfd2luZG93OwogIAogICAKICBHdGtDTGlzdENvbHVtbiAqY29sdW1u
OwogIAogICAKCiAgR2RrV2luZG93ICpjbGlzdF93aW5kb3c7CiAgZ2ludCBjbGlzdF93aW5kb3df
d2lkdGg7CiAgZ2ludCBjbGlzdF93aW5kb3dfaGVpZ2h0OwogIAogICAKICBnaW50IGhvZmZzZXQ7
CiAgZ2ludCB2b2Zmc2V0OwogIAogICAKICBHdGtTaGFkb3dUeXBlIHNoYWRvd190eXBlOwogIAog
ICAKICBHdGtTZWxlY3Rpb25Nb2RlIHNlbGVjdGlvbl9tb2RlOwogIAogICAKICBHTGlzdCAqc2Vs
ZWN0aW9uOwogIEdMaXN0ICpzZWxlY3Rpb25fZW5kOwogIAogIEdMaXN0ICp1bmRvX3NlbGVjdGlv
bjsKICBHTGlzdCAqdW5kb191bnNlbGVjdGlvbjsKICBnaW50IHVuZG9fYW5jaG9yOwogIAogICAK
ICBndWludDggYnV0dG9uX2FjdGlvbnNbNV07CgogIGd1aW50OCBkcmFnX2J1dHRvbjsKCiAgIAog
IEd0a0NMaXN0Q2VsbEluZm8gY2xpY2tfY2VsbDsKCiAgIAogIEd0a0FkanVzdG1lbnQgKmhhZGp1
c3RtZW50OwogIEd0a0FkanVzdG1lbnQgKnZhZGp1c3RtZW50OwogIAogICAKICBHZGtHQyAqeG9y
X2djOwogIAogICAKICBHZGtHQyAqZmdfZ2M7CiAgR2RrR0MgKmJnX2djOwogIAogICAKICBHZGtD
dXJzb3IgKmN1cnNvcl9kcmFnOwogIAogICAKICBnaW50IHhfZHJhZzsKICAKICAgCiAgZ2ludCBm
b2N1c19yb3c7CiAgCiAgIAogIGdpbnQgYW5jaG9yOwogIEd0a1N0YXRlVHlwZSBhbmNob3Jfc3Rh
dGU7CiAgZ2ludCBkcmFnX3BvczsKICBnaW50IGh0aW1lcjsKICBnaW50IHZ0aW1lcjsKICAKICBH
dGtTb3J0VHlwZSBzb3J0X3R5cGU7CiAgR3RrQ0xpc3RDb21wYXJlRnVuYyBjb21wYXJlOwogIGdp
bnQgc29ydF9jb2x1bW47Cn07CgpzdHJ1Y3QgX0d0a0NMaXN0Q2xhc3MKewogIEd0a0NvbnRhaW5l
ckNsYXNzIHBhcmVudF9jbGFzczsKICAKICB2b2lkICAoKnNldF9zY3JvbGxfYWRqdXN0bWVudHMp
IChHdGtDTGlzdCAgICAgICAqY2xpc3QsCgkJCQkgICBHdGtBZGp1c3RtZW50ICAqaGFkanVzdG1l
bnQsCgkJCQkgICBHdGtBZGp1c3RtZW50ICAqdmFkanVzdG1lbnQpOwogIHZvaWQgICAoKnJlZnJl
c2gpICAgICAgICAgICAgIChHdGtDTGlzdCAgICAgICAqY2xpc3QpOwogIHZvaWQgICAoKnNlbGVj
dF9yb3cpICAgICAgICAgIChHdGtDTGlzdCAgICAgICAqY2xpc3QsCgkJCQkgZ2ludCAgICAgICAg
ICAgIHJvdywKCQkJCSBnaW50ICAgICAgICAgICAgY29sdW1uLAoJCQkJIEdka0V2ZW50ICAgICAg
ICpldmVudCk7CiAgdm9pZCAgICgqdW5zZWxlY3Rfcm93KSAgICAgICAgKEd0a0NMaXN0ICAgICAg
ICpjbGlzdCwKCQkJCSBnaW50ICAgICAgICAgICAgcm93LAoJCQkJIGdpbnQgICAgICAgICAgICBj
b2x1bW4sCgkJCQkgR2RrRXZlbnQgICAgICAgKmV2ZW50KTsKICB2b2lkICAgKCpyb3dfbW92ZSkg
ICAgICAgICAgICAoR3RrQ0xpc3QgICAgICAgKmNsaXN0LAoJCQkJIGdpbnQgICAgICAgICAgICBz
b3VyY2Vfcm93LAoJCQkJIGdpbnQgICAgICAgICAgICBkZXN0X3Jvdyk7CiAgdm9pZCAgICgqY2xp
Y2tfY29sdW1uKSAgICAgICAgKEd0a0NMaXN0ICAgICAgICpjbGlzdCwKCQkJCSBnaW50ICAgICAg
ICAgICAgY29sdW1uKTsKICB2b2lkICAgKCpyZXNpemVfY29sdW1uKSAgICAgICAoR3RrQ0xpc3Qg
ICAgICAgKmNsaXN0LAoJCQkJIGdpbnQgICAgICAgICAgICBjb2x1bW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICB3aWR0aCk7CiAgdm9pZCAgICgqdG9n
Z2xlX2ZvY3VzX3JvdykgICAgKEd0a0NMaXN0ICAgICAgICpjbGlzdCk7CiAgdm9pZCAgICgqc2Vs
ZWN0X2FsbCkgICAgICAgICAgKEd0a0NMaXN0ICAgICAgICpjbGlzdCk7CiAgdm9pZCAgICgqdW5z
ZWxlY3RfYWxsKSAgICAgICAgKEd0a0NMaXN0ICAgICAgICpjbGlzdCk7CiAgdm9pZCAgICgqdW5k
b19zZWxlY3Rpb24pICAgICAgKEd0a0NMaXN0ICAgICAgICpjbGlzdCk7CiAgdm9pZCAgICgqc3Rh
cnRfc2VsZWN0aW9uKSAgICAgKEd0a0NMaXN0ICAgICAgICpjbGlzdCk7CiAgdm9pZCAgICgqZW5k
X3NlbGVjdGlvbikgICAgICAgKEd0a0NMaXN0ICAgICAgICpjbGlzdCk7CiAgdm9pZCAgICgqZXh0
ZW5kX3NlbGVjdGlvbikgICAgKEd0a0NMaXN0ICAgICAgICpjbGlzdCwKCQkJCSBHdGtTY3JvbGxU
eXBlICAgc2Nyb2xsX3R5cGUsCgkJCQkgZ2Zsb2F0ICAgICAgICAgIHBvc2l0aW9uLAoJCQkJIGdi
b29sZWFuICAgICAgICBhdXRvX3N0YXJ0X3NlbGVjdGlvbik7CiAgdm9pZCAgICgqc2Nyb2xsX2hv
cml6b250YWwpICAgKEd0a0NMaXN0ICAgICAgICpjbGlzdCwKCQkJCSBHdGtTY3JvbGxUeXBlICAg
c2Nyb2xsX3R5cGUsCgkJCQkgZ2Zsb2F0ICAgICAgICAgIHBvc2l0aW9uKTsKICB2b2lkICAgKCpz
Y3JvbGxfdmVydGljYWwpICAgICAoR3RrQ0xpc3QgICAgICAgKmNsaXN0LAoJCQkJIEd0a1Njcm9s
bFR5cGUgICBzY3JvbGxfdHlwZSwKCQkJCSBnZmxvYXQgICAgICAgICAgcG9zaXRpb24pOwogIHZv
aWQgICAoKnRvZ2dsZV9hZGRfbW9kZSkgICAgIChHdGtDTGlzdCAgICAgICAqY2xpc3QpOwogIHZv
aWQgICAoKmFib3J0X2NvbHVtbl9yZXNpemUpIChHdGtDTGlzdCAgICAgICAqY2xpc3QpOwogIHZv
aWQgICAoKnJlc3luY19zZWxlY3Rpb24pICAgIChHdGtDTGlzdCAgICAgICAqY2xpc3QsCgkJCQkg
R2RrRXZlbnQgICAgICAgKmV2ZW50KTsKICBHTGlzdCogKCpzZWxlY3Rpb25fZmluZCkgICAgICAo
R3RrQ0xpc3QgICAgICAgKmNsaXN0LAoJCQkJIGdpbnQgICAgICAgICAgICByb3dfbnVtYmVyLAoJ
CQkJIEdMaXN0ICAgICAgICAgICpyb3dfbGlzdF9lbGVtZW50KTsKICB2b2lkICAgKCpkcmF3X3Jv
dykgICAgICAgICAgICAoR3RrQ0xpc3QgICAgICAgKmNsaXN0LAoJCQkJIEdka1JlY3RhbmdsZSAg
ICphcmVhLAoJCQkJIGdpbnQgICAgICAgICAgICByb3csCgkJCQkgR3RrQ0xpc3RSb3cgICAgKmNs
aXN0X3Jvdyk7CiAgdm9pZCAgICgqZHJhd19kcmFnX2hpZ2hsaWdodCkgKEd0a0NMaXN0ICAgICAg
ICAqY2xpc3QsCgkJCQkgR3RrQ0xpc3RSb3cgICAgICp0YXJnZXRfcm93LAoJCQkJIGdpbnQgICAg
ICAgICAgICAgdGFyZ2V0X3Jvd19udW1iZXIsCgkJCQkgR3RrQ0xpc3REcmFnUG9zICBkcmFnX3Bv
cyk7CiAgdm9pZCAgICgqY2xlYXIpICAgICAgICAgICAgICAgKEd0a0NMaXN0ICAgICAgICpjbGlz
dCk7CiAgdm9pZCAgICgqZmFrZV91bnNlbGVjdF9hbGwpICAgKEd0a0NMaXN0ICAgICAgICpjbGlz
dCwKCQkJCSBnaW50ICAgICAgICAgICAgcm93KTsKICB2b2lkICAgKCpzb3J0X2xpc3QpICAgICAg
ICAgICAoR3RrQ0xpc3QgICAgICAgKmNsaXN0KTsKICBnaW50ICAgKCppbnNlcnRfcm93KSAgICAg
ICAgICAoR3RrQ0xpc3QgICAgICAgKmNsaXN0LAoJCQkJIGdpbnQgICAgICAgICAgICByb3csCgkJ
CQkgZ2NoYXIgICAgICAgICAgKnRleHRbXSk7CiAgdm9pZCAgICgqcmVtb3ZlX3JvdykgICAgICAg
ICAgKEd0a0NMaXN0ICAgICAgICpjbGlzdCwKCQkJCSBnaW50ICAgICAgICAgICAgcm93KTsKICB2
b2lkICAgKCpzZXRfY2VsbF9jb250ZW50cykgICAoR3RrQ0xpc3QgICAgICAgKmNsaXN0LAoJCQkJ
IEd0a0NMaXN0Um93ICAgICpjbGlzdF9yb3csCgkJCQkgZ2ludCAgICAgICAgICAgIGNvbHVtbiwK
CQkJCSBHdGtDZWxsVHlwZSAgICAgdHlwZSwKCQkJCSBjb25zdCBnY2hhciAgICAqdGV4dCwKCQkJ
CSBndWludDggICAgICAgICAgc3BhY2luZywKCQkJCSBHZGtQaXhtYXAgICAgICAqcGl4bWFwLAoJ
CQkJIEdka0JpdG1hcCAgICAgICptYXNrKTsKICB2b2lkICAgKCpjZWxsX3NpemVfcmVxdWVzdCkg
ICAoR3RrQ0xpc3QgICAgICAgKmNsaXN0LAoJCQkJIEd0a0NMaXN0Um93ICAgICpjbGlzdF9yb3cs
CgkJCQkgZ2ludCAgICAgICAgICAgIGNvbHVtbiwKCQkJCSBHdGtSZXF1aXNpdGlvbiAqcmVxdWlz
aXRpb24pOwoKfTsKCnN0cnVjdCBfR3RrQ0xpc3RDb2x1bW4KewogIGdjaGFyICp0aXRsZTsKICBH
ZGtSZWN0YW5nbGUgYXJlYTsKICAKICBHdGtXaWRnZXQgKmJ1dHRvbjsKICBHZGtXaW5kb3cgKndp
bmRvdzsKICAKICBnaW50IHdpZHRoOwogIGdpbnQgbWluX3dpZHRoOwogIGdpbnQgbWF4X3dpZHRo
OwogIEd0a0p1c3RpZmljYXRpb24ganVzdGlmaWNhdGlvbjsKICAKICBndWludCB2aXNpYmxlICAg
ICAgICA6IDE7ICAKICBndWludCB3aWR0aF9zZXQgICAgICA6IDE7CiAgZ3VpbnQgcmVzaXplYWJs
ZSAgICAgOiAxOwogIGd1aW50IGF1dG9fcmVzaXplICAgIDogMTsKICBndWludCBidXR0b25fcGFz
c2l2ZSA6IDE7Cn07CgpzdHJ1Y3QgX0d0a0NMaXN0Um93CnsKICBHdGtDZWxsICpjZWxsOwogIEd0
a1N0YXRlVHlwZSBzdGF0ZTsKICAKICBHZGtDb2xvciBmb3JlZ3JvdW5kOwogIEdka0NvbG9yIGJh
Y2tncm91bmQ7CiAgCiAgR3RrU3R5bGUgKnN0eWxlOwoKICBncG9pbnRlciBkYXRhOwogIEd0a0Rl
c3Ryb3lOb3RpZnkgZGVzdHJveTsKICAKICBndWludCBmZ19zZXQgICAgIDogMTsKICBndWludCBi
Z19zZXQgICAgIDogMTsKICBndWludCBzZWxlY3RhYmxlIDogMTsKfTsKCiAKc3RydWN0IF9HdGtD
ZWxsVGV4dAp7CiAgR3RrQ2VsbFR5cGUgdHlwZTsKICAKICBnaW50MTYgdmVydGljYWw7CiAgZ2lu
dDE2IGhvcml6b250YWw7CiAgCiAgR3RrU3R5bGUgKnN0eWxlOwoKICBnY2hhciAqdGV4dDsKfTsK
CnN0cnVjdCBfR3RrQ2VsbFBpeG1hcAp7CiAgR3RrQ2VsbFR5cGUgdHlwZTsKICAKICBnaW50MTYg
dmVydGljYWw7CiAgZ2ludDE2IGhvcml6b250YWw7CiAgCiAgR3RrU3R5bGUgKnN0eWxlOwoKICBH
ZGtQaXhtYXAgKnBpeG1hcDsKICBHZGtCaXRtYXAgKm1hc2s7Cn07CgpzdHJ1Y3QgX0d0a0NlbGxQ
aXhUZXh0CnsKICBHdGtDZWxsVHlwZSB0eXBlOwogIAogIGdpbnQxNiB2ZXJ0aWNhbDsKICBnaW50
MTYgaG9yaXpvbnRhbDsKICAKICBHdGtTdHlsZSAqc3R5bGU7CgogIGdjaGFyICp0ZXh0OwogIGd1
aW50OCBzcGFjaW5nOwogIEdka1BpeG1hcCAqcGl4bWFwOwogIEdka0JpdG1hcCAqbWFzazsKfTsK
CnN0cnVjdCBfR3RrQ2VsbFdpZGdldAp7CiAgR3RrQ2VsbFR5cGUgdHlwZTsKICAKICBnaW50MTYg
dmVydGljYWw7CiAgZ2ludDE2IGhvcml6b250YWw7CiAgCiAgR3RrU3R5bGUgKnN0eWxlOwoKICBH
dGtXaWRnZXQgKndpZGdldDsKfTsKCnN0cnVjdCBfR3RrQ2VsbAp7CiAgR3RrQ2VsbFR5cGUgdHlw
ZTsKICAKICBnaW50MTYgdmVydGljYWw7CiAgZ2ludDE2IGhvcml6b250YWw7CiAgCiAgR3RrU3R5
bGUgKnN0eWxlOwoKICB1bmlvbiB7CiAgICBnY2hhciAqdGV4dDsKICAgIAogICAgc3RydWN0IHsK
ICAgICAgR2RrUGl4bWFwICpwaXhtYXA7CiAgICAgIEdka0JpdG1hcCAqbWFzazsKICAgIH0gcG07
CiAgICAKICAgIHN0cnVjdCB7CiAgICAgIGdjaGFyICp0ZXh0OwogICAgICBndWludDggc3BhY2lu
ZzsKICAgICAgR2RrUGl4bWFwICpwaXhtYXA7CiAgICAgIEdka0JpdG1hcCAqbWFzazsKICAgIH0g
cHQ7CiAgICAKICAgIEd0a1dpZGdldCAqd2lkZ2V0OwogIH0gdTsKfTsKCkd0a1R5cGUgZ3RrX2Ns
aXN0X2dldF90eXBlICh2b2lkKTsKCiAKdm9pZCBndGtfY2xpc3RfY29uc3RydWN0IChHdGtDTGlz
dCAqY2xpc3QsCgkJCSAgZ2ludCAgICAgIGNvbHVtbnMsCgkJCSAgZ2NoYXIgICAgKnRpdGxlc1td
KTsKCiAKR3RrV2lkZ2V0KiBndGtfY2xpc3RfbmV3ICAgICAgICAgICAgIChnaW50ICAgY29sdW1u
cyk7Ckd0a1dpZGdldCogZ3RrX2NsaXN0X25ld193aXRoX3RpdGxlcyAoZ2ludCAgIGNvbHVtbnMs
CgkJCQkgICAgICBnY2hhciAqdGl0bGVzW10pOwoKIAp2b2lkIGd0a19jbGlzdF9zZXRfaGFkanVz
dG1lbnQgKEd0a0NMaXN0ICAgICAgKmNsaXN0LAoJCQkJR3RrQWRqdXN0bWVudCAqYWRqdXN0bWVu
dCk7CnZvaWQgZ3RrX2NsaXN0X3NldF92YWRqdXN0bWVudCAoR3RrQ0xpc3QgICAgICAqY2xpc3Qs
CgkJCQlHdGtBZGp1c3RtZW50ICphZGp1c3RtZW50KTsKCiAKR3RrQWRqdXN0bWVudCogZ3RrX2Ns
aXN0X2dldF9oYWRqdXN0bWVudCAoR3RrQ0xpc3QgKmNsaXN0KTsKR3RrQWRqdXN0bWVudCogZ3Rr
X2NsaXN0X2dldF92YWRqdXN0bWVudCAoR3RrQ0xpc3QgKmNsaXN0KTsKCiAKdm9pZCBndGtfY2xp
c3Rfc2V0X3NoYWRvd190eXBlIChHdGtDTGlzdCAgICAgICpjbGlzdCwKCQkJCUd0a1NoYWRvd1R5
cGUgIHR5cGUpOwoKIAp2b2lkIGd0a19jbGlzdF9zZXRfc2VsZWN0aW9uX21vZGUgKEd0a0NMaXN0
ICAgICAgICAgKmNsaXN0LAoJCQkJICAgR3RrU2VsZWN0aW9uTW9kZSAgbW9kZSk7CgogCnZvaWQg
Z3RrX2NsaXN0X3NldF9yZW9yZGVyYWJsZSAoR3RrQ0xpc3QgKmNsaXN0LAoJCQkJZ2Jvb2xlYW4g
IHJlb3JkZXJhYmxlKTsKdm9pZCBndGtfY2xpc3Rfc2V0X3VzZV9kcmFnX2ljb25zIChHdGtDTGlz
dCAqY2xpc3QsCgkJCQkgICBnYm9vbGVhbiAgdXNlX2ljb25zKTsKdm9pZCBndGtfY2xpc3Rfc2V0
X2J1dHRvbl9hY3Rpb25zIChHdGtDTGlzdCAqY2xpc3QsCgkJCQkgICBndWludCAgICAgYnV0dG9u
LAoJCQkJICAgZ3VpbnQ4ICAgIGJ1dHRvbl9hY3Rpb25zKTsKCiAKCgoKdm9pZCBndGtfY2xpc3Rf
ZnJlZXplIChHdGtDTGlzdCAqY2xpc3QpOwp2b2lkIGd0a19jbGlzdF90aGF3ICAgKEd0a0NMaXN0
ICpjbGlzdCk7CgogCnZvaWQgZ3RrX2NsaXN0X2NvbHVtbl90aXRsZXNfc2hvdyAoR3RrQ0xpc3Qg
KmNsaXN0KTsKdm9pZCBndGtfY2xpc3RfY29sdW1uX3RpdGxlc19oaWRlIChHdGtDTGlzdCAqY2xp
c3QpOwoKIAoKCgp2b2lkIGd0a19jbGlzdF9jb2x1bW5fdGl0bGVfYWN0aXZlICAgKEd0a0NMaXN0
ICpjbGlzdCwKCQkJCSAgICAgIGdpbnQgICAgICBjb2x1bW4pOwp2b2lkIGd0a19jbGlzdF9jb2x1
bW5fdGl0bGVfcGFzc2l2ZSAgKEd0a0NMaXN0ICpjbGlzdCwKCQkJCSAgICAgIGdpbnQgICAgICBj
b2x1bW4pOwp2b2lkIGd0a19jbGlzdF9jb2x1bW5fdGl0bGVzX2FjdGl2ZSAgKEd0a0NMaXN0ICpj
bGlzdCk7CnZvaWQgZ3RrX2NsaXN0X2NvbHVtbl90aXRsZXNfcGFzc2l2ZSAoR3RrQ0xpc3QgKmNs
aXN0KTsKCiAKdm9pZCBndGtfY2xpc3Rfc2V0X2NvbHVtbl90aXRsZSAoR3RrQ0xpc3QgICAgKmNs
aXN0LAoJCQkJIGdpbnQgICAgICAgICBjb2x1bW4sCgkJCQkgY29uc3QgZ2NoYXIgKnRpdGxlKTsK
CiAKZ2NoYXIgKiBndGtfY2xpc3RfZ2V0X2NvbHVtbl90aXRsZSAoR3RrQ0xpc3QgKmNsaXN0LAoJ
CQkJICAgIGdpbnQgICAgICBjb2x1bW4pOwoKIAp2b2lkIGd0a19jbGlzdF9zZXRfY29sdW1uX3dp
ZGdldCAoR3RrQ0xpc3QgICpjbGlzdCwKCQkJCSAgZ2ludCAgICAgICBjb2x1bW4sCgkJCQkgIEd0
a1dpZGdldCAqd2lkZ2V0KTsKCiAKR3RrV2lkZ2V0ICogZ3RrX2NsaXN0X2dldF9jb2x1bW5fd2lk
Z2V0IChHdGtDTGlzdCAqY2xpc3QsCgkJCQkJIGdpbnQgICAgICBjb2x1bW4pOwoKIAp2b2lkIGd0
a19jbGlzdF9zZXRfY29sdW1uX2p1c3RpZmljYXRpb24gKEd0a0NMaXN0ICAgICAgICAgKmNsaXN0
LAoJCQkJCSBnaW50ICAgICAgICAgICAgICBjb2x1bW4sCgkJCQkJIEd0a0p1c3RpZmljYXRpb24g
IGp1c3RpZmljYXRpb24pOwoKIAp2b2lkIGd0a19jbGlzdF9zZXRfY29sdW1uX3Zpc2liaWxpdHkg
KEd0a0NMaXN0ICpjbGlzdCwKCQkJCSAgICAgIGdpbnQgICAgICBjb2x1bW4sCgkJCQkgICAgICBn
Ym9vbGVhbiAgdmlzaWJsZSk7CgogCnZvaWQgZ3RrX2NsaXN0X3NldF9jb2x1bW5fcmVzaXplYWJs
ZSAoR3RrQ0xpc3QgKmNsaXN0LAoJCQkJICAgICAgZ2ludCAgICAgIGNvbHVtbiwKCQkJCSAgICAg
IGdib29sZWFuICByZXNpemVhYmxlKTsKCiAKdm9pZCBndGtfY2xpc3Rfc2V0X2NvbHVtbl9hdXRv
X3Jlc2l6ZSAoR3RrQ0xpc3QgKmNsaXN0LAoJCQkJICAgICAgIGdpbnQgICAgICBjb2x1bW4sCgkJ
CQkgICAgICAgZ2Jvb2xlYW4gIGF1dG9fcmVzaXplKTsKCmdpbnQgZ3RrX2NsaXN0X2NvbHVtbnNf
YXV0b3NpemUgKEd0a0NMaXN0ICpjbGlzdCk7CgogCmdpbnQgZ3RrX2NsaXN0X29wdGltYWxfY29s
dW1uX3dpZHRoIChHdGtDTGlzdCAqY2xpc3QsCgkJCQkgICAgIGdpbnQgICAgICBjb2x1bW4pOwoK
IAoKCgp2b2lkIGd0a19jbGlzdF9zZXRfY29sdW1uX3dpZHRoIChHdGtDTGlzdCAqY2xpc3QsCgkJ
CQkgZ2ludCAgICAgIGNvbHVtbiwKCQkJCSBnaW50ICAgICAgd2lkdGgpOwoKIAp2b2lkIGd0a19j
bGlzdF9zZXRfY29sdW1uX21pbl93aWR0aCAoR3RrQ0xpc3QgKmNsaXN0LAoJCQkJICAgICBnaW50
ICAgICAgY29sdW1uLAoJCQkJICAgICBnaW50ICAgICAgbWluX3dpZHRoKTsKdm9pZCBndGtfY2xp
c3Rfc2V0X2NvbHVtbl9tYXhfd2lkdGggKEd0a0NMaXN0ICpjbGlzdCwKCQkJCSAgICAgZ2ludCAg
ICAgIGNvbHVtbiwKCQkJCSAgICAgZ2ludCAgICAgIG1heF93aWR0aCk7CgogCgoKdm9pZCBndGtf
Y2xpc3Rfc2V0X3Jvd19oZWlnaHQgKEd0a0NMaXN0ICpjbGlzdCwKCQkJICAgICAgIGd1aW50ICAg
ICBoZWlnaHQpOwoKIAoKCgoKdm9pZCBndGtfY2xpc3RfbW92ZXRvIChHdGtDTGlzdCAqY2xpc3Qs
CgkJICAgICAgIGdpbnQgICAgICByb3csCgkJICAgICAgIGdpbnQgICAgICBjb2x1bW4sCgkJICAg
ICAgIGdmbG9hdCAgICByb3dfYWxpZ24sCgkJICAgICAgIGdmbG9hdCAgICBjb2xfYWxpZ24pOwoK
IApHdGtWaXNpYmlsaXR5IGd0a19jbGlzdF9yb3dfaXNfdmlzaWJsZSAoR3RrQ0xpc3QgKmNsaXN0
LAoJCQkJCWdpbnQgICAgICByb3cpOwoKIApHdGtDZWxsVHlwZSBndGtfY2xpc3RfZ2V0X2NlbGxf
dHlwZSAoR3RrQ0xpc3QgKmNsaXN0LAoJCQkJICAgICBnaW50ICAgICAgcm93LAoJCQkJICAgICBn
aW50ICAgICAgY29sdW1uKTsKCiAKdm9pZCBndGtfY2xpc3Rfc2V0X3RleHQgKEd0a0NMaXN0ICAg
ICpjbGlzdCwKCQkJIGdpbnQgICAgICAgICByb3csCgkJCSBnaW50ICAgICAgICAgY29sdW1uLAoJ
CQkgY29uc3QgZ2NoYXIgKnRleHQpOwoKIAoKCmdpbnQgZ3RrX2NsaXN0X2dldF90ZXh0IChHdGtD
TGlzdCAgKmNsaXN0LAoJCQkgZ2ludCAgICAgICByb3csCgkJCSBnaW50ICAgICAgIGNvbHVtbiwK
CQkJIGdjaGFyICAgICoqdGV4dCk7CgogCnZvaWQgZ3RrX2NsaXN0X3NldF9waXhtYXAgKEd0a0NM
aXN0ICAqY2xpc3QsCgkJCSAgIGdpbnQgICAgICAgcm93LAoJCQkgICBnaW50ICAgICAgIGNvbHVt
biwKCQkJICAgR2RrUGl4bWFwICpwaXhtYXAsCgkJCSAgIEdka0JpdG1hcCAqbWFzayk7CgpnaW50
IGd0a19jbGlzdF9nZXRfcGl4bWFwIChHdGtDTGlzdCAgICpjbGlzdCwKCQkJICAgZ2ludCAgICAg
ICAgcm93LAoJCQkgICBnaW50ICAgICAgICBjb2x1bW4sCgkJCSAgIEdka1BpeG1hcCAqKnBpeG1h
cCwKCQkJICAgR2RrQml0bWFwICoqbWFzayk7CgogCnZvaWQgZ3RrX2NsaXN0X3NldF9waXh0ZXh0
IChHdGtDTGlzdCAgICAqY2xpc3QsCgkJCSAgICBnaW50ICAgICAgICAgcm93LAoJCQkgICAgZ2lu
dCAgICAgICAgIGNvbHVtbiwKCQkJICAgIGNvbnN0IGdjaGFyICp0ZXh0LAoJCQkgICAgZ3VpbnQ4
ICAgICAgIHNwYWNpbmcsCgkJCSAgICBHZGtQaXhtYXAgICAqcGl4bWFwLAoJCQkgICAgR2RrQml0
bWFwICAgKm1hc2spOwoKZ2ludCBndGtfY2xpc3RfZ2V0X3BpeHRleHQgKEd0a0NMaXN0ICAgKmNs
aXN0LAoJCQkgICAgZ2ludCAgICAgICAgcm93LAoJCQkgICAgZ2ludCAgICAgICAgY29sdW1uLAoJ
CQkgICAgZ2NoYXIgICAgICoqdGV4dCwKCQkJICAgIGd1aW50OCAgICAgKnNwYWNpbmcsCgkJCSAg
ICBHZGtQaXhtYXAgKipwaXhtYXAsCgkJCSAgICBHZGtCaXRtYXAgKiptYXNrKTsKCiAKCgp2b2lk
IGd0a19jbGlzdF9zZXRfZm9yZWdyb3VuZCAoR3RrQ0xpc3QgKmNsaXN0LAoJCQkgICAgICAgZ2lu
dCAgICAgIHJvdywKCQkJICAgICAgIEdka0NvbG9yICpjb2xvcik7CgogCgoKdm9pZCBndGtfY2xp
c3Rfc2V0X2JhY2tncm91bmQgKEd0a0NMaXN0ICpjbGlzdCwKCQkJICAgICAgIGdpbnQgICAgICBy
b3csCgkJCSAgICAgICBHZGtDb2xvciAqY29sb3IpOwoKIAp2b2lkIGd0a19jbGlzdF9zZXRfY2Vs
bF9zdHlsZSAoR3RrQ0xpc3QgKmNsaXN0LAoJCQkgICAgICAgZ2ludCAgICAgIHJvdywKCQkJICAg
ICAgIGdpbnQgICAgICBjb2x1bW4sCgkJCSAgICAgICBHdGtTdHlsZSAqc3R5bGUpOwoKR3RrU3R5
bGUgKmd0a19jbGlzdF9nZXRfY2VsbF9zdHlsZSAoR3RrQ0xpc3QgKmNsaXN0LAoJCQkJICAgIGdp
bnQgICAgICByb3csCgkJCQkgICAgZ2ludCAgICAgIGNvbHVtbik7Cgp2b2lkIGd0a19jbGlzdF9z
ZXRfcm93X3N0eWxlIChHdGtDTGlzdCAqY2xpc3QsCgkJCSAgICAgIGdpbnQgICAgICByb3csCgkJ
CSAgICAgIEd0a1N0eWxlICpzdHlsZSk7CgpHdGtTdHlsZSAqZ3RrX2NsaXN0X2dldF9yb3dfc3R5
bGUgKEd0a0NMaXN0ICpjbGlzdCwKCQkJCSAgIGdpbnQgICAgICByb3cpOwoKIAoKCgp2b2lkIGd0
a19jbGlzdF9zZXRfc2hpZnQgKEd0a0NMaXN0ICpjbGlzdCwKCQkJICBnaW50ICAgICAgcm93LAoJ
CQkgIGdpbnQgICAgICBjb2x1bW4sCgkJCSAgZ2ludCAgICAgIHZlcnRpY2FsLAoJCQkgIGdpbnQg
ICAgICBob3Jpem9udGFsKTsKCiAKdm9pZCBndGtfY2xpc3Rfc2V0X3NlbGVjdGFibGUgKEd0a0NM
aXN0ICpjbGlzdCwKCQkJICAgICAgIGdpbnQgICAgICByb3csCgkJCSAgICAgICBnYm9vbGVhbiAg
c2VsZWN0YWJsZSk7Cmdib29sZWFuIGd0a19jbGlzdF9nZXRfc2VsZWN0YWJsZSAoR3RrQ0xpc3Qg
KmNsaXN0LAoJCQkJICAgZ2ludCAgICAgIHJvdyk7CgogCgoKZ2ludCBndGtfY2xpc3RfcHJlcGVu
ZCAoR3RrQ0xpc3QgICAgKmNsaXN0LAoJCSAgICAgICAgZ2NoYXIgICAgICAgKnRleHRbXSk7Cmdp
bnQgZ3RrX2NsaXN0X2FwcGVuZCAgKEd0a0NMaXN0ICAgICpjbGlzdCwKCQkJZ2NoYXIgICAgICAg
KnRleHRbXSk7CgogCgoKZ2ludCBndGtfY2xpc3RfaW5zZXJ0IChHdGtDTGlzdCAgICAqY2xpc3Qs
CgkJICAgICAgIGdpbnQgICAgICAgICByb3csCgkJICAgICAgIGdjaGFyICAgICAgICp0ZXh0W10p
OwoKIAp2b2lkIGd0a19jbGlzdF9yZW1vdmUgKEd0a0NMaXN0ICpjbGlzdCwKCQkgICAgICAgZ2lu
dCAgICAgIHJvdyk7CgogCnZvaWQgZ3RrX2NsaXN0X3NldF9yb3dfZGF0YSAoR3RrQ0xpc3QgKmNs
aXN0LAoJCQkgICAgIGdpbnQgICAgICByb3csCgkJCSAgICAgZ3BvaW50ZXIgIGRhdGEpOwoKIAp2
b2lkIGd0a19jbGlzdF9zZXRfcm93X2RhdGFfZnVsbCAoR3RrQ0xpc3QgICAgICAgICAqY2xpc3Qs
CgkJCSAgICAgICAgICBnaW50ICAgICAgICAgICAgICByb3csCgkJCSAgICAgICAgICBncG9pbnRl
ciAgICAgICAgICBkYXRhLAoJCQkJICBHdGtEZXN0cm95Tm90aWZ5ICBkZXN0cm95KTsKCiAKZ3Bv
aW50ZXIgZ3RrX2NsaXN0X2dldF9yb3dfZGF0YSAoR3RrQ0xpc3QgKmNsaXN0LAoJCQkJIGdpbnQg
ICAgICByb3cpOwoKIAoKCmdpbnQgZ3RrX2NsaXN0X2ZpbmRfcm93X2Zyb21fZGF0YSAoR3RrQ0xp
c3QgKmNsaXN0LAoJCQkJICAgZ3BvaW50ZXIgIGRhdGEpOwoKIAp2b2lkIGd0a19jbGlzdF9zZWxl
Y3Rfcm93IChHdGtDTGlzdCAqY2xpc3QsCgkJCSAgIGdpbnQgICAgICByb3csCgkJCSAgIGdpbnQg
ICAgICBjb2x1bW4pOwoKIAp2b2lkIGd0a19jbGlzdF91bnNlbGVjdF9yb3cgKEd0a0NMaXN0ICpj
bGlzdCwKCQkJICAgICBnaW50ICAgICAgcm93LAoJCQkgICAgIGdpbnQgICAgICBjb2x1bW4pOwoK
IAp2b2lkIGd0a19jbGlzdF91bmRvX3NlbGVjdGlvbiAoR3RrQ0xpc3QgKmNsaXN0KTsKCiAKCgp2
b2lkIGd0a19jbGlzdF9jbGVhciAoR3RrQ0xpc3QgKmNsaXN0KTsKCiAKCgoKZ2ludCBndGtfY2xp
c3RfZ2V0X3NlbGVjdGlvbl9pbmZvIChHdGtDTGlzdCAqY2xpc3QsCgkJCSAgICAgCSAgIGdpbnQg
ICAgICB4LAoJCQkgICAgIAkgICBnaW50ICAgICAgeSwKCQkJICAgICAJICAgZ2ludCAgICAgKnJv
dywKCQkJICAgICAJICAgZ2ludCAgICAgKmNvbHVtbik7CgogCnZvaWQgZ3RrX2NsaXN0X3NlbGVj
dF9hbGwgKEd0a0NMaXN0ICpjbGlzdCk7CgogCnZvaWQgZ3RrX2NsaXN0X3Vuc2VsZWN0X2FsbCAo
R3RrQ0xpc3QgKmNsaXN0KTsKCiAKdm9pZCBndGtfY2xpc3Rfc3dhcF9yb3dzIChHdGtDTGlzdCAq
Y2xpc3QsCgkJCSAgZ2ludCAgICAgIHJvdzEsCgkJCSAgZ2ludCAgICAgIHJvdzIpOwoKIAp2b2lk
IGd0a19jbGlzdF9yb3dfbW92ZSAoR3RrQ0xpc3QgKmNsaXN0LAoJCQkgZ2ludCAgICAgIHNvdXJj
ZV9yb3csCgkJCSBnaW50ICAgICAgZGVzdF9yb3cpOwoKIAp2b2lkIGd0a19jbGlzdF9zZXRfY29t
cGFyZV9mdW5jIChHdGtDTGlzdCAgICAgICAgICAgICpjbGlzdCwKCQkJCSBHdGtDTGlzdENvbXBh
cmVGdW5jICBjbXBfZnVuYyk7CgogCnZvaWQgZ3RrX2NsaXN0X3NldF9zb3J0X2NvbHVtbiAoR3Rr
Q0xpc3QgKmNsaXN0LAoJCQkJZ2ludCAgICAgIGNvbHVtbik7CgogCnZvaWQgZ3RrX2NsaXN0X3Nl
dF9zb3J0X3R5cGUgKEd0a0NMaXN0ICAgICpjbGlzdCwKCQkJICAgICAgR3RrU29ydFR5cGUgIHNv
cnRfdHlwZSk7CgogCnZvaWQgZ3RrX2NsaXN0X3NvcnQgKEd0a0NMaXN0ICpjbGlzdCk7CgogCnZv
aWQgZ3RrX2NsaXN0X3NldF9hdXRvX3NvcnQgKEd0a0NMaXN0ICpjbGlzdCwKCQkJICAgICAgZ2Jv
b2xlYW4gIGF1dG9fc29ydCk7CgoKCn0KCgoKIyA0NyAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIg
MiAzCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrY29sb3JzZWwuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3Rrd2luZG93LmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoK
CgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtXaW5kb3cgICAgICAgR3RrV2luZG93Owp0eXBlZGVm
IHN0cnVjdCBfR3RrV2luZG93Q2xhc3MgIEd0a1dpbmRvd0NsYXNzOwoKc3RydWN0IF9HdGtXaW5k
b3cKewogIEd0a0JpbiBiaW47CgogIGdjaGFyICp0aXRsZTsKICBnY2hhciAqd21jbGFzc19uYW1l
OwogIGdjaGFyICp3bWNsYXNzX2NsYXNzOwogIEd0a1dpbmRvd1R5cGUgdHlwZTsKCiAgR3RrV2lk
Z2V0ICpmb2N1c193aWRnZXQ7CiAgR3RrV2lkZ2V0ICpkZWZhdWx0X3dpZGdldDsKICBHdGtXaW5k
b3cgKnRyYW5zaWVudF9wYXJlbnQ7CgogIGd1c2hvcnQgcmVzaXplX2NvdW50OwogIGd1aW50IGFs
bG93X3NocmluayA6IDE7CiAgZ3VpbnQgYWxsb3dfZ3JvdyA6IDE7CiAgZ3VpbnQgYXV0b19zaHJp
bmsgOiAxOwogIGd1aW50IGhhbmRsaW5nX3Jlc2l6ZSA6IDE7CiAgZ3VpbnQgcG9zaXRpb24gOiAy
OwoKICAgCgoKCgoKICBndWludCB1c2VfdXBvc2l0aW9uIDogMTsKICBndWludCBtb2RhbCA6IDE7
Cn07CgpzdHJ1Y3QgX0d0a1dpbmRvd0NsYXNzCnsKICBHdGtCaW5DbGFzcyBwYXJlbnRfY2xhc3M7
CgogIHZvaWQgKCogc2V0X2ZvY3VzKSAgIChHdGtXaW5kb3cgKndpbmRvdywKCQkJR3RrV2lkZ2V0
ICpmb2N1cyk7Cn07CgoKR3RrVHlwZSAgICBndGtfd2luZG93X2dldF90eXBlICAgICAgICAgICAg
ICAgICAodm9pZCk7Ckd0a1dpZGdldCogZ3RrX3dpbmRvd19uZXcgICAgICAgICAgICAgICAgICAg
ICAgKEd0a1dpbmRvd1R5cGUgICAgICAgIHR5cGUpOwp2b2lkICAgICAgIGd0a193aW5kb3dfc2V0
X3RpdGxlICAgICAgICAgICAgICAgIChHdGtXaW5kb3cgICAgICAgICAgICp3aW5kb3csCgkJCQkJ
CWNvbnN0IGdjaGFyICAgICAgICAgKnRpdGxlKTsKdm9pZCAgICAgICBndGtfd2luZG93X3NldF93
bWNsYXNzICAgICAgICAgICAgICAoR3RrV2luZG93ICAgICAgICAgICAqd2luZG93LAoJCQkJCQlj
b25zdCBnY2hhciAgICAgICAgICp3bWNsYXNzX25hbWUsCgkJCQkJCWNvbnN0IGdjaGFyICAgICAg
ICAgKndtY2xhc3NfY2xhc3MpOwp2b2lkICAgICAgIGd0a193aW5kb3dfc2V0X3BvbGljeSAgICAg
ICAgICAgICAgIChHdGtXaW5kb3cgICAgICAgICAgICp3aW5kb3csCgkJCQkJCWdpbnQgICAgICAg
ICAgICAgICAgIGFsbG93X3NocmluaywKCQkJCQkJZ2ludCAgICAgICAgICAgICAgICAgYWxsb3df
Z3JvdywKCQkJCQkJZ2ludCAgICAgICAgICAgICAgICAgYXV0b19zaHJpbmspOwp2b2lkICAgICAg
IGd0a193aW5kb3dfYWRkX2FjY2VsX2dyb3VwICAgICAgICAgIChHdGtXaW5kb3cgICAgICAgICAg
ICp3aW5kb3csCgkJCQkJCUd0a0FjY2VsR3JvdXAJICAgICphY2NlbF9ncm91cCk7CnZvaWQgICAg
ICAgZ3RrX3dpbmRvd19yZW1vdmVfYWNjZWxfZ3JvdXAgICAgICAgKEd0a1dpbmRvdyAgICAgICAg
ICAgKndpbmRvdywKCQkJCQkJR3RrQWNjZWxHcm91cAkgICAgKmFjY2VsX2dyb3VwKTsKdm9pZCAg
ICAgICBndGtfd2luZG93X3NldF9wb3NpdGlvbiAgICAgICAgICAgICAoR3RrV2luZG93ICAgICAg
ICAgICAqd2luZG93LAoJCQkJCQlHdGtXaW5kb3dQb3NpdGlvbiAgICBwb3NpdGlvbik7CmdpbnQJ
ICAgZ3RrX3dpbmRvd19hY3RpdmF0ZV9mb2N1cwkgICAgICAgKEd0a1dpbmRvdyAgICAgICAgICAg
KndpbmRvdyk7CmdpbnQJICAgZ3RrX3dpbmRvd19hY3RpdmF0ZV9kZWZhdWx0CSAgICAgICAoR3Rr
V2luZG93ICAgICAgICAgICAqd2luZG93KTsKCnZvaWQgICAgICAgZ3RrX3dpbmRvd19zZXRfdHJh
bnNpZW50X2ZvciAgICAgICAgKEd0a1dpbmRvdyAgICAgICAgICAgKndpbmRvdywgCgkJCQkJCUd0
a1dpbmRvdyAgICAgICAgICAgKnBhcmVudCk7CnZvaWQgICAgICAgZ3RrX3dpbmRvd19zZXRfZ2Vv
bWV0cnlfaGludHMgICAgICAgKEd0a1dpbmRvdyAgICAgICAgICAgKndpbmRvdywKCQkJCQkJR3Rr
V2lkZ2V0ICAgICAgICAgICAqZ2VvbWV0cnlfd2lkZ2V0LAoJCQkJCQlHZGtHZW9tZXRyeSAgICAg
ICAgICpnZW9tZXRyeSwKCQkJCQkJR2RrV2luZG93SGludHMgICAgICAgZ2VvbV9tYXNrKTsKIAoK
Cgp2b2lkICAgICAgIGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZSAgICAgICAgIChHdGtXaW5k
b3cgICAgICAgICAgICp3aW5kb3csCgkJCQkJCWdpbnQgICAgICAgICAgICAgICAgIHdpZHRoLAoJ
CQkJCQlnaW50ICAgICAgICAgICAgICAgICBoZWlnaHQpOwoKIAp2b2lkICAgICAgIGd0a193aW5k
b3dfc2V0X21vZGFsICAgICAgICAgICAgICAgIChHdGtXaW5kb3cgICAgICAgICAgICp3aW5kb3cs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFu
ICAgICAgICAgICAgIG1vZGFsKTsKCiAKdm9pZCAgICAgICBndGtfd2luZG93X3NldF9mb2N1cyAg
ICAgICAgICAgICAgICAoR3RrV2luZG93ICAgICAgICAgICAqd2luZG93LAoJCQkJCQlHdGtXaWRn
ZXQgICAgICAgICAgICpmb2N1cyk7CnZvaWQgICAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdCAg
ICAgICAgICAgICAgKEd0a1dpbmRvdyAgICAgICAgICAgKndpbmRvdywKCQkJCQkJR3RrV2lkZ2V0
ICAgICAgICAgICAqZGVmYXVsdHcpOwp2b2lkICAgICAgIGd0a193aW5kb3dfcmVtb3ZlX2VtYmVk
ZGVkX3hpZCAgICAgIChHdGtXaW5kb3cgICAgICAgICAgICp3aW5kb3csCgkJCQkgICAgICAgICAg
ICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgeGlkKTsKdm9pZCAgICAgICBndGtfd2luZG93X2Fk
ZF9lbWJlZGRlZF94aWQgICAgICAgICAoR3RrV2luZG93ICAgICAgICAgICAqd2luZG93LAoJCQkJ
CQlndWludCAgICAgICAgICAgICAgICB4aWQpOwp2b2lkICAgICAgIGd0a193aW5kb3dfcmVwb3Np
dGlvbiAgICAgICAgICAgICAgIChHdGtXaW5kb3cgICAgICAgICAgICp3aW5kb3csCgkJCQkJCWdp
bnQgICAgICAgICAgICAgICAgIHgsCgkJCQkJCWdpbnQgICAgICAgICAgICAgICAgIHkpOwoKCn0K
CgoKCiMgMzAgIi91c3IvaW5jbHVkZS9ndGsvZ3RrY29sb3JzZWwuaCIgMiAzCgojIDEgIi91c3Iv
aW5jbHVkZS9ndGsvZ3RrdmJveC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a1ZCb3gJICAg
ICAgR3RrVkJveDsKdHlwZWRlZiBzdHJ1Y3QgX0d0a1ZCb3hDbGFzcyAgR3RrVkJveENsYXNzOwoK
c3RydWN0IF9HdGtWQm94CnsKICBHdGtCb3ggYm94Owp9OwoKc3RydWN0IF9HdGtWQm94Q2xhc3MK
ewogIEd0a0JveENsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtUeXBlCSAgIGd0a192Ym94X2dl
dF90eXBlICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfdmJveF9uZXcJICAgICAoZ2Jvb2xlYW4gaG9t
b2dlbmVvdXMsCgkJCSAgICAgIGdpbnQgc3BhY2luZyk7CgoKCn0KCgoKCiMgMzEgIi91c3IvaW5j
bHVkZS9ndGsvZ3RrY29sb3JzZWwuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3By
ZXZpZXcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCmV4dGVybiAi
QyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a1ByZXZpZXcgICAgICAgR3RrUHJldmll
dzsKdHlwZWRlZiBzdHJ1Y3QgX0d0a1ByZXZpZXdJbmZvICAgR3RrUHJldmlld0luZm87CnR5cGVk
ZWYgdW5pb24gIF9HdGtEaXRoZXJJbmZvICAgIEd0a0RpdGhlckluZm87CnR5cGVkZWYgc3RydWN0
IF9HdGtQcmV2aWV3Q2xhc3MgIEd0a1ByZXZpZXdDbGFzczsKCnN0cnVjdCBfR3RrUHJldmlldwp7
CiAgR3RrV2lkZ2V0IHdpZGdldDsKCiAgZ3VjaGFyICpidWZmZXI7CiAgZ3VpbnQxNiBidWZmZXJf
d2lkdGg7CiAgZ3VpbnQxNiBidWZmZXJfaGVpZ2h0OwoKICBndWludDE2IGJwcDsKICBndWludDE2
IHJvd3N0cmlkZTsKCiAgR2RrUmdiRGl0aGVyIGRpdGhlcjsKCiAgZ3VpbnQgdHlwZSA6IDE7CiAg
Z3VpbnQgZXhwYW5kIDogMTsKfTsKCnN0cnVjdCBfR3RrUHJldmlld0luZm8KewogIEdka1Zpc3Vh
bCAqdmlzdWFsOwogIEdka0NvbG9ybWFwICpjbWFwOwoKICBndWNoYXIgKmxvb2t1cDsKCiAgZ2Rv
dWJsZSBnYW1tYTsKfTsKCnVuaW9uIF9HdGtEaXRoZXJJbmZvCnsKICBndXNob3J0IHNbMl07CiAg
Z3VjaGFyIGNbNF07Cn07CgpzdHJ1Y3QgX0d0a1ByZXZpZXdDbGFzcwp7CiAgR3RrV2lkZ2V0Q2xh
c3MgcGFyZW50X2NsYXNzOwoKICBHdGtQcmV2aWV3SW5mbyBpbmZvOwoKfTsKCgpHdGtUeXBlICAg
ICAgICAgZ3RrX3ByZXZpZXdfZ2V0X3R5cGUgICAgICAgICAgICh2b2lkKTsKdm9pZCAgICAgICAg
ICAgIGd0a19wcmV2aWV3X3VuaW5pdCAgICAgICAgICAgICAodm9pZCk7Ckd0a1dpZGdldCogICAg
ICBndGtfcHJldmlld19uZXcgICAgICAgICAgICAgICAgKEd0a1ByZXZpZXdUeXBlICAgdHlwZSk7
CnZvaWQgICAgICAgICAgICBndGtfcHJldmlld19zaXplICAgICAgICAgICAgICAgKEd0a1ByZXZp
ZXcgICAgICAqcHJldmlldywKCQkJCQkJZ2ludCAgICAgICAgICAgICB3aWR0aCwKCQkJCQkJZ2lu
dCAgICAgICAgICAgICBoZWlnaHQpOwp2b2lkICAgICAgICAgICAgZ3RrX3ByZXZpZXdfcHV0ICAg
ICAgICAgICAgICAgIChHdGtQcmV2aWV3ICAgICAgKnByZXZpZXcsCgkJCQkJCUdka1dpbmRvdyAg
ICAgICAqd2luZG93LAoJCQkJCQlHZGtHQyAgICAgICAgICAgKmdjLAoJCQkJCQlnaW50ICAgICAg
ICAgICAgIHNyY3gsCgkJCQkJCWdpbnQgICAgICAgICAgICAgc3JjeSwKCQkJCQkJZ2ludCAgICAg
ICAgICAgICBkZXN0eCwKCQkJCQkJZ2ludCAgICAgICAgICAgICBkZXN0eSwKCQkJCQkJZ2ludCAg
ICAgICAgICAgICB3aWR0aCwKCQkJCQkJZ2ludCAgICAgICAgICAgICBoZWlnaHQpOwp2b2lkICAg
ICAgICAgICAgZ3RrX3ByZXZpZXdfZHJhd19yb3cgICAgICAgICAgIChHdGtQcmV2aWV3ICAgICAg
KnByZXZpZXcsCgkJCQkJCWd1Y2hhciAgICAgICAgICAqZGF0YSwKCQkJCQkJZ2ludCAgICAgICAg
ICAgICB4LAoJCQkJCQlnaW50ICAgICAgICAgICAgIHksCgkJCQkJCWdpbnQgICAgICAgICAgICAg
dyk7CnZvaWQgICAgICAgICAgICBndGtfcHJldmlld19zZXRfZXhwYW5kICAgICAgICAgKEd0a1By
ZXZpZXcgICAgICAqcHJldmlldywKCQkJCQkJZ2Jvb2xlYW4gICAgICAgICBleHBhbmQpOwoKdm9p
ZCAgICAgICAgICAgIGd0a19wcmV2aWV3X3NldF9nYW1tYSAgICAgICAgICAoZG91YmxlICAgICAg
ICAgICBnYW1tYSk7CnZvaWQgICAgICAgICAgICBndGtfcHJldmlld19zZXRfY29sb3JfY3ViZSAg
ICAgKGd1aW50ICAgICAgICAgICAgbnJlZF9zaGFkZXMsCgkJCQkJCWd1aW50ICAgICAgICAgICAg
bmdyZWVuX3NoYWRlcywKCQkJCQkJZ3VpbnQgICAgICAgICAgICBuYmx1ZV9zaGFkZXMsCgkJCQkJ
CWd1aW50ICAgICAgICAgICAgbmdyYXlfc2hhZGVzKTsKdm9pZCAgICAgICAgICAgIGd0a19wcmV2
aWV3X3NldF9pbnN0YWxsX2NtYXAgICAoZ2ludCAgICAgICAgICAgICBpbnN0YWxsX2NtYXApOwp2
b2lkICAgICAgICAgICAgZ3RrX3ByZXZpZXdfc2V0X3Jlc2VydmVkICAgICAgIChnaW50ICAgICAg
ICAgICAgIG5yZXNlcnZlZCk7CnZvaWQgICAgICAgICAgICBndGtfcHJldmlld19zZXRfZGl0aGVy
ICAgICAgICAgKEd0a1ByZXZpZXcgICAgICAqcHJldmlldywKCQkJCQkJR2RrUmdiRGl0aGVyICAg
ICBkaXRoZXIpOwpHZGtWaXN1YWwqICAgICAgZ3RrX3ByZXZpZXdfZ2V0X3Zpc3VhbCAgICAgICAg
ICh2b2lkKTsKR2RrQ29sb3JtYXAqICAgIGd0a19wcmV2aWV3X2dldF9jbWFwICAgICAgICAgICAo
dm9pZCk7Ckd0a1ByZXZpZXdJbmZvKiBndGtfcHJldmlld19nZXRfaW5mbyAgICAgICAgICAgKHZv
aWQpOwoKIAoKCgoKdm9pZCAgICAgICAgICAgIGd0a19wcmV2aWV3X3Jlc2V0ICAgICAgICAgICAg
ICAodm9pZCk7CgoKCn0KCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9ndGsvZ3RrY29sb3JzZWwuaCIg
MiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2VudHJ5LmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrZWRpdGFibGUuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoK
CgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtFZGl0YWJsZSAgICAgICBHdGtFZGl0YWJsZTsKdHlw
ZWRlZiBzdHJ1Y3QgX0d0a0VkaXRhYmxlQ2xhc3MgIEd0a0VkaXRhYmxlQ2xhc3M7Cgp0eXBlZGVm
IHZvaWQgKCpHdGtUZXh0RnVuY3Rpb24pIChHdGtFZGl0YWJsZSAgKmVkaXRhYmxlLCBndWludDMy
IHRpbWUpOwoKc3RydWN0IF9HdGtFZGl0YWJsZQp7CiAgR3RrV2lkZ2V0IHdpZGdldDsKCiAgIAog
IGd1aW50ICAgICAgY3VycmVudF9wb3M7CgogIGd1aW50ICAgICAgc2VsZWN0aW9uX3N0YXJ0X3Bv
czsKICBndWludCAgICAgIHNlbGVjdGlvbl9lbmRfcG9zOwogIGd1aW50ICAgICAgaGFzX3NlbGVj
dGlvbiA6IDE7CgogICAKICBndWludCAgICAgIGVkaXRhYmxlIDogMTsKICBndWludCAgICAgIHZp
c2libGUgOiAxOwogIEdka0lDICAgICAqaWM7CiAgR2RrSUNBdHRyICppY19hdHRyOwogIAogIGdj
aGFyICpjbGlwYm9hcmRfdGV4dDsKfTsKCnN0cnVjdCBfR3RrRWRpdGFibGVDbGFzcwp7CiAgR3Rr
V2lkZ2V0Q2xhc3MgcGFyZW50X2NsYXNzOwogIAogICAKICB2b2lkICgqIGNoYW5nZWQpICAgICAg
KEd0a0VkaXRhYmxlICAgICplZGl0YWJsZSk7CiAgdm9pZCAoKiBpbnNlcnRfdGV4dCkgIChHdGtF
ZGl0YWJsZSAgICAqZWRpdGFibGUsCgkJCSBjb25zdCBnY2hhciAgICAqdGV4dCwKCQkJIGdpbnQg
ICAgICAgICAgICBsZW5ndGgsCgkJCSBnaW50ICAgICAgICAgICAqcG9zaXRpb24pOwogIHZvaWQg
KCogZGVsZXRlX3RleHQpICAoR3RrRWRpdGFibGUgICAgKmVkaXRhYmxlLAoJCQkgZ2ludCAgICAg
ICAgICAgIHN0YXJ0X3BvcywKCQkJIGdpbnQgICAgICAgICAgICBlbmRfcG9zKTsKCiAgIAogIHZv
aWQgKCogYWN0aXZhdGUpICAgICAgICAoR3RrRWRpdGFibGUgKmVkaXRhYmxlKTsKICB2b2lkICgq
IHNldF9lZGl0YWJsZSkgICAgKEd0a0VkaXRhYmxlICplZGl0YWJsZSwKCQkJICAgIGdib29sZWFu
CSBpc19lZGl0YWJsZSk7CiAgdm9pZCAoKiBtb3ZlX2N1cnNvcikgICAgIChHdGtFZGl0YWJsZSAq
ZWRpdGFibGUsCgkJCSAgICBnaW50ICAgICAgICAgeCwKCQkJICAgIGdpbnQgICAgICAgICB5KTsK
ICB2b2lkICgqIG1vdmVfd29yZCkgICAgICAgKEd0a0VkaXRhYmxlICplZGl0YWJsZSwKCQkJICAg
IGdpbnQgICAgICAgICBuKTsKICB2b2lkICgqIG1vdmVfcGFnZSkgICAgICAgKEd0a0VkaXRhYmxl
ICplZGl0YWJsZSwKCQkJICAgIGdpbnQgICAgICAgICB4LAoJCQkgICAgZ2ludCAgICAgICAgIHkp
OwogIHZvaWQgKCogbW92ZV90b19yb3cpICAgICAoR3RrRWRpdGFibGUgKmVkaXRhYmxlLAoJCQkg
ICAgZ2ludCAgICAgICAgIHJvdyk7CiAgdm9pZCAoKiBtb3ZlX3RvX2NvbHVtbikgIChHdGtFZGl0
YWJsZSAqZWRpdGFibGUsCgkJCSAgICBnaW50ICAgICAgICAgcm93KTsKICB2b2lkICgqIGtpbGxf
Y2hhcikgICAgICAgKEd0a0VkaXRhYmxlICplZGl0YWJsZSwKCQkJICAgIGdpbnQgICAgICAgICBk
aXJlY3Rpb24pOwogIHZvaWQgKCoga2lsbF93b3JkKSAgICAgICAoR3RrRWRpdGFibGUgKmVkaXRh
YmxlLAoJCQkgICAgZ2ludCAgICAgICAgIGRpcmVjdGlvbik7CiAgdm9pZCAoKiBraWxsX2xpbmUp
ICAgICAgIChHdGtFZGl0YWJsZSAqZWRpdGFibGUsCgkJCSAgICBnaW50ICAgICAgICAgZGlyZWN0
aW9uKTsKICB2b2lkICgqIGN1dF9jbGlwYm9hcmQpICAgKEd0a0VkaXRhYmxlICplZGl0YWJsZSk7
CiAgdm9pZCAoKiBjb3B5X2NsaXBib2FyZCkgIChHdGtFZGl0YWJsZSAqZWRpdGFibGUpOwogIHZv
aWQgKCogcGFzdGVfY2xpcGJvYXJkKSAoR3RrRWRpdGFibGUgKmVkaXRhYmxlKTsKCiAgIAoKCgoK
ICB2b2lkICgqIHVwZGF0ZV90ZXh0KSAgKEd0a0VkaXRhYmxlICAgICplZGl0YWJsZSwKCQkJIGdp
bnQgICAgICAgICAgICBzdGFydF9wb3MsCgkJCSBnaW50ICAgICAgICAgICAgZW5kX3Bvcyk7CiAg
Z2NoYXIqICgqIGdldF9jaGFycykgIChHdGtFZGl0YWJsZSAgICAqZWRpdGFibGUsCgkJCSBnaW50
ICAgICAgICAgICAgc3RhcnRfcG9zLAoJCQkgZ2ludCAgICAgICAgICAgIGVuZF9wb3MpOwogIHZv
aWQgKCogc2V0X3NlbGVjdGlvbikoR3RrRWRpdGFibGUgICAgKmVkaXRhYmxlLAoJCQkgZ2ludCAg
ICAgICAgICAgIHN0YXJ0X3BvcywKCQkJIGdpbnQgICAgICAgICAgICBlbmRfcG9zKTsKICB2b2lk
ICgqIHNldF9wb3NpdGlvbikgKEd0a0VkaXRhYmxlICAgICplZGl0YWJsZSwKCQkJIGdpbnQgICAg
ICAgICAgICBwb3NpdGlvbik7Cn07CgpHdGtUeXBlICAgIGd0a19lZGl0YWJsZV9nZXRfdHlwZSAg
ICAgICAodm9pZCk7CnZvaWQgICAgICAgZ3RrX2VkaXRhYmxlX3NlbGVjdF9yZWdpb24gIChHdGtF
ZGl0YWJsZSAgICAgICplZGl0YWJsZSwKCQkJCQlnaW50ICAgICAgICAgICAgICBzdGFydCwKCQkJ
CQlnaW50ICAgICAgICAgICAgICBlbmQpOwp2b2lkICAgICAgIGd0a19lZGl0YWJsZV9pbnNlcnRf
dGV4dCAgIChHdGtFZGl0YWJsZSAgICAgICAqZWRpdGFibGUsCgkJCQkJY29uc3QgZ2NoYXIgICAg
ICAqbmV3X3RleHQsCgkJCQkJZ2ludCAgICAgICAgICAgICAgbmV3X3RleHRfbGVuZ3RoLAoJCQkJ
CWdpbnQgICAgICAgICAgICAgKnBvc2l0aW9uKTsKdm9pZCAgICAgICBndGtfZWRpdGFibGVfZGVs
ZXRlX3RleHQgICAgKEd0a0VkaXRhYmxlICAgICAgKmVkaXRhYmxlLAoJCQkJCWdpbnQgICAgICAg
ICAgICAgIHN0YXJ0X3BvcywKCQkJCQlnaW50ICAgICAgICAgICAgICBlbmRfcG9zKTsKZ2NoYXIq
ICAgICBndGtfZWRpdGFibGVfZ2V0X2NoYXJzICAgICAgKEd0a0VkaXRhYmxlICAgICAgKmVkaXRh
YmxlLAoJCQkJCWdpbnQgICAgICAgICAgICAgIHN0YXJ0X3BvcywKCQkJCQlnaW50ICAgICAgICAg
ICAgICBlbmRfcG9zKTsKdm9pZCAgICAgICBndGtfZWRpdGFibGVfY3V0X2NsaXBib2FyZCAgKEd0
a0VkaXRhYmxlICAgICAgKmVkaXRhYmxlKTsKdm9pZCAgICAgICBndGtfZWRpdGFibGVfY29weV9j
bGlwYm9hcmQgKEd0a0VkaXRhYmxlICAgICAgKmVkaXRhYmxlKTsKdm9pZCAgICAgICBndGtfZWRp
dGFibGVfcGFzdGVfY2xpcGJvYXJkIChHdGtFZGl0YWJsZSAgICAgKmVkaXRhYmxlKTsKdm9pZCAg
ICAgICBndGtfZWRpdGFibGVfY2xhaW1fc2VsZWN0aW9uIChHdGtFZGl0YWJsZSAgICAgKmVkaXRh
YmxlLCAKCQkJCQkgZ2Jvb2xlYW4gICAgICAgICBjbGFpbSwgCgkJCQkJIGd1aW50MzIgICAgICAg
ICAgdGltZSk7CnZvaWQgICAgICAgZ3RrX2VkaXRhYmxlX2RlbGV0ZV9zZWxlY3Rpb24gKEd0a0Vk
aXRhYmxlICAgICplZGl0YWJsZSk7Cgp2b2lkICAgICAgIGd0a19lZGl0YWJsZV9jaGFuZ2VkICAg
ICAgICAgKEd0a0VkaXRhYmxlICAgICplZGl0YWJsZSk7CnZvaWQgICAgICAgZ3RrX2VkaXRhYmxl
X3NldF9wb3NpdGlvbiAgICAoR3RrRWRpdGFibGUgICAgKmVkaXRhYmxlLAoJCQkJCSBnaW50ICAg
ICAgICAgICAgcG9zaXRpb24pOwpnaW50ICAgICAgIGd0a19lZGl0YWJsZV9nZXRfcG9zaXRpb24g
ICAgKEd0a0VkaXRhYmxlICAgICplZGl0YWJsZSk7CnZvaWQgICAgICAgZ3RrX2VkaXRhYmxlX3Nl
dF9lZGl0YWJsZSAgICAoR3RrRWRpdGFibGUgICAgKmVkaXRhYmxlLAoJCQkJCSBnYm9vbGVhbiAg
ICAgICAgaXNfZWRpdGFibGUpOwoKCgp9CgoKCgojIDMyICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2Vu
dHJ5LmgiIDIgMwoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3Rr
RW50cnkgICAgICAgR3RrRW50cnk7CnR5cGVkZWYgc3RydWN0IF9HdGtFbnRyeUNsYXNzICBHdGtF
bnRyeUNsYXNzOwoKc3RydWN0IF9HdGtFbnRyeQp7CiAgR3RrRWRpdGFibGUgZWRpdGFibGU7Cgog
IEdka1dpbmRvdyAqdGV4dF9hcmVhOwogIEdka1BpeG1hcCAqYmFja2luZ19waXhtYXA7CiAgR2Rr
Q3Vyc29yICpjdXJzb3I7CiAgR2RrV0NoYXIgICp0ZXh0OwoKICBndWludDE2IHRleHRfc2l6ZTsJ
IAogIGd1aW50MTYgdGV4dF9sZW5ndGg7CSAKICBndWludDE2IHRleHRfbWF4X2xlbmd0aDsKICBn
aW50ICAgIHNjcm9sbF9vZmZzZXQ7CiAgZ3VpbnQgICB2aXNpYmxlIDogMTsJIAogIGd1aW50MzIg
dGltZXI7CiAgZ3VpbnQgICBidXR0b247CgogICAKCiAgZ2ludCAgICpjaGFyX29mZnNldDsKCiAg
IAogIGdjaGFyICAqdGV4dF9tYjsKICAgCiAgZ3VpbnQgICB0ZXh0X21iX2RpcnR5IDogMTsKICAg
CgogIGd1aW50ICAgdXNlX3djaGFyIDogMTsKfTsKCnN0cnVjdCBfR3RrRW50cnlDbGFzcwp7CiAg
R3RrRWRpdGFibGVDbGFzcyBwYXJlbnRfY2xhc3M7Cn07CgpHdGtUeXBlICAgIGd0a19lbnRyeV9n
ZXRfdHlwZSAgICAgICAJCSh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfZW50cnlfbmV3ICAgICAgICAg
ICAgCQkodm9pZCk7Ckd0a1dpZGdldCogZ3RrX2VudHJ5X25ld193aXRoX21heF9sZW5ndGgJKGd1
aW50MTYgICAgICAgbWF4KTsKdm9pZCAgICAgICBndGtfZW50cnlfc2V0X3RleHQgICAgICAgCQko
R3RrRW50cnkgICAgICAqZW50cnksCgkJCQkJCSBjb25zdCBnY2hhciAgICp0ZXh0KTsKdm9pZCAg
ICAgICBndGtfZW50cnlfYXBwZW5kX3RleHQgICAgCQkoR3RrRW50cnkgICAgICAqZW50cnksCgkJ
CQkJCSBjb25zdCBnY2hhciAgICp0ZXh0KTsKdm9pZCAgICAgICBndGtfZW50cnlfcHJlcGVuZF90
ZXh0ICAgCQkoR3RrRW50cnkgICAgICAqZW50cnksCgkJCQkJCSBjb25zdCBnY2hhciAgICp0ZXh0
KTsKdm9pZCAgICAgICBndGtfZW50cnlfc2V0X3Bvc2l0aW9uICAgCQkoR3RrRW50cnkgICAgICAq
ZW50cnksCgkJCQkJCSBnaW50ICAgICAgICAgICBwb3NpdGlvbik7CiAKZ2NoYXIqICAgICBndGtf
ZW50cnlfZ2V0X3RleHQgICAgICAgCQkoR3RrRW50cnkgICAgICAqZW50cnkpOwp2b2lkICAgICAg
IGd0a19lbnRyeV9zZWxlY3RfcmVnaW9uICAJCShHdGtFbnRyeSAgICAgICplbnRyeSwKCQkJCQkJ
IGdpbnQgICAgICAgICAgIHN0YXJ0LAoJCQkJCQkgZ2ludCAgICAgICAgICAgZW5kKTsKdm9pZCAg
ICAgICBndGtfZW50cnlfc2V0X3Zpc2liaWxpdHkgCQkoR3RrRW50cnkgICAgICAqZW50cnksCgkJ
CQkJCSBnYm9vbGVhbiAgICAgICB2aXNpYmxlKTsKdm9pZCAgICAgICBndGtfZW50cnlfc2V0X2Vk
aXRhYmxlICAgCQkoR3RrRW50cnkgICAgICAqZW50cnksCgkJCQkJCSBnYm9vbGVhbiAgICAgICBl
ZGl0YWJsZSk7CiAKdm9pZCAgICAgICBndGtfZW50cnlfc2V0X21heF9sZW5ndGggCQkoR3RrRW50
cnkgICAgICAqZW50cnksCgkJCQkJCSBndWludDE2ICAgICAgICBtYXgpOwoKCn0KCgoKCiMgMzUg
Ii91c3IvaW5jbHVkZS9ndGsvZ3RrY29sb3JzZWwuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9n
dGsvZ3RraGJveC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4
dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a0hCb3gJICAgICAgR3RrSEJv
eDsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0hCb3hDbGFzcyAgR3RrSEJveENsYXNzOwoKc3RydWN0IF9H
dGtIQm94CnsKICBHdGtCb3ggYm94Owp9OwoKc3RydWN0IF9HdGtIQm94Q2xhc3MKewogIEd0a0Jv
eENsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtUeXBlCSAgIGd0a19oYm94X2dldF90eXBlICh2
b2lkKTsKR3RrV2lkZ2V0KiBndGtfaGJveF9uZXcJICAgICAoZ2Jvb2xlYW4gaG9tb2dlbmVvdXMs
CgkJCSAgICAgIGdpbnQgc3BhY2luZyk7CgoKCn0KCgoKCiMgMzYgIi91c3IvaW5jbHVkZS9ndGsv
Z3RrY29sb3JzZWwuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a21haW4uaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgogCgoK
CgogCgoKCgoKCnR5cGVkZWYgdm9pZAkoKkd0a01vZHVsZUluaXRGdW5jKQkoZ2ludAkJKmFyZ2Ms
CgkJCQkJIGdjaGFyCSAgICAgICoqKmFyZ3YpOwp0eXBlZGVmIGdpbnQJKCpHdGtLZXlTbm9vcEZ1
bmMpCShHdGtXaWRnZXQJKmdyYWJfd2lkZ2V0LAoJCQkJCSBHZGtFdmVudEtleQkqZXZlbnQsCgkJ
CQkJIGdwb2ludGVyCSBmdW5jX2RhdGEpOwoKIAoKZXh0ZXJuIGNvbnN0IGd1aW50IGd0a19tYWpv
cl92ZXJzaW9uOwpleHRlcm4gY29uc3QgZ3VpbnQgZ3RrX21pbm9yX3ZlcnNpb247CmV4dGVybiBj
b25zdCBndWludCBndGtfbWljcm9fdmVyc2lvbjsKZXh0ZXJuIGNvbnN0IGd1aW50IGd0a19iaW5h
cnlfYWdlOwpleHRlcm4gY29uc3QgZ3VpbnQgZ3RrX2ludGVyZmFjZV9hZ2U7CmdjaGFyKiBndGtf
Y2hlY2tfdmVyc2lvbiAoZ3VpbnQJcmVxdWlyZWRfbWFqb3IsCgkJCSAgZ3VpbnQJcmVxdWlyZWRf
bWlub3IsCgkJCSAgZ3VpbnQJcmVxdWlyZWRfbWljcm8pOwoKCiAKCnZvaWQJICAgZ3RrX2luaXQJ
CSAoaW50CSAgICAgICAqYXJnYywKCQkJCSAgY2hhcgkgICAgICoqKmFyZ3YpOwpnYm9vbGVhbiAg
IGd0a19pbml0X2NoZWNrICAgICAgICAoaW50CSAgICAgICAqYXJnYywKCQkJCSAgY2hhcgkgICAg
ICoqKmFyZ3YpOwp2b2lkCSAgIGd0a19leGl0CQkgKGdpbnQJCWVycm9yX2NvZGUpOwpnY2hhcioJ
ICAgZ3RrX3NldF9sb2NhbGUJICh2b2lkKTsKZ2ludAkgICBndGtfZXZlbnRzX3BlbmRpbmcJICh2
b2lkKTsKCiAKCgoKdm9pZCAgZ3RrX21haW5fZG9fZXZlbnQgICAgICAgICAgKEdka0V2ZW50ICAg
ICAgICAgICAqZXZlbnQpOwoKdm9pZAkgICBndGtfbWFpbgkJICh2b2lkKTsKZ3VpbnQJICAgZ3Rr
X21haW5fbGV2ZWwJICh2b2lkKTsKdm9pZAkgICBndGtfbWFpbl9xdWl0CSAodm9pZCk7CmdpbnQJ
ICAgZ3RrX21haW5faXRlcmF0aW9uCSAodm9pZCk7CiAKZ2ludAkgICBndGtfbWFpbl9pdGVyYXRp
b25fZG8gKGdib29sZWFuIGJsb2NraW5nKTsKCmdpbnQJICAgZ3RrX3RydWUJCSAgICh2b2lkKTsK
Z2ludAkgICBndGtfZmFsc2UJCSAgICh2b2lkKTsKCnZvaWQJICAgZ3RrX2dyYWJfYWRkCQkgICAo
R3RrV2lkZ2V0CSAgICAgICAqd2lkZ2V0KTsKR3RrV2lkZ2V0KiBndGtfZ3JhYl9nZXRfY3VycmVu
dAkgICAodm9pZCk7CnZvaWQJICAgZ3RrX2dyYWJfcmVtb3ZlCSAgIChHdGtXaWRnZXQJICAgICAg
ICp3aWRnZXQpOwoKdm9pZAkgICBndGtfaW5pdF9hZGQJCSAgIChHdGtGdW5jdGlvbgkgICAgICAg
ZnVuY3Rpb24sCgkJCQkgICAgZ3BvaW50ZXIJICAgICAgIGRhdGEpOwp2b2lkCSAgIGd0a19xdWl0
X2FkZF9kZXN0cm95CSAgIChndWludAkgICAgICAgbWFpbl9sZXZlbCwKCQkJCSAgICBHdGtPYmpl
Y3QJICAgICAgKm9iamVjdCk7Cmd1aW50CSAgIGd0a19xdWl0X2FkZAkJICAgKGd1aW50CSAgICAg
ICBtYWluX2xldmVsLAoJCQkJICAgIEd0a0Z1bmN0aW9uCSAgICAgICBmdW5jdGlvbiwKCQkJCSAg
ICBncG9pbnRlcgkgICAgICAgZGF0YSk7Cmd1aW50CSAgIGd0a19xdWl0X2FkZF9mdWxsCSAgIChn
dWludAkgICAgICAgbWFpbl9sZXZlbCwKCQkJCSAgICBHdGtGdW5jdGlvbgkgICAgICAgZnVuY3Rp
b24sCgkJCQkgICAgR3RrQ2FsbGJhY2tNYXJzaGFsIG1hcnNoYWwsCgkJCQkgICAgZ3BvaW50ZXIJ
ICAgICAgIGRhdGEsCgkJCQkgICAgR3RrRGVzdHJveU5vdGlmeSAgIGRlc3Ryb3kpOwp2b2lkCSAg
IGd0a19xdWl0X3JlbW92ZQkgICAoZ3VpbnQJICAgICAgIHF1aXRfaGFuZGxlcl9pZCk7CnZvaWQJ
ICAgZ3RrX3F1aXRfcmVtb3ZlX2J5X2RhdGEgKGdwb2ludGVyCSAgICAgICBkYXRhKTsKZ3VpbnQJ
ICAgZ3RrX3RpbWVvdXRfYWRkCSAgIChndWludDMyCSAgICAgICBpbnRlcnZhbCwKCQkJCSAgICBH
dGtGdW5jdGlvbgkgICAgICAgZnVuY3Rpb24sCgkJCQkgICAgZ3BvaW50ZXIJICAgICAgIGRhdGEp
OwpndWludAkgICBndGtfdGltZW91dF9hZGRfZnVsbAkgICAoZ3VpbnQzMgkgICAgICAgaW50ZXJ2
YWwsCgkJCQkgICAgR3RrRnVuY3Rpb24JICAgICAgIGZ1bmN0aW9uLAoJCQkJICAgIEd0a0NhbGxi
YWNrTWFyc2hhbCBtYXJzaGFsLAoJCQkJICAgIGdwb2ludGVyCSAgICAgICBkYXRhLAoJCQkJICAg
IEd0a0Rlc3Ryb3lOb3RpZnkgICBkZXN0cm95KTsKdm9pZAkgICBndGtfdGltZW91dF9yZW1vdmUJ
ICAgKGd1aW50CSAgICAgICB0aW1lb3V0X2hhbmRsZXJfaWQpOwoKZ3VpbnQJICAgZ3RrX2lkbGVf
YWRkCQkgICAoR3RrRnVuY3Rpb24JICAgICAgIGZ1bmN0aW9uLAoJCQkJICAgIGdwb2ludGVyCSAg
ICAgICBkYXRhKTsKZ3VpbnQJICAgZ3RrX2lkbGVfYWRkX3ByaW9yaXR5ICAgKGdpbnQJICAgICAg
IHByaW9yaXR5LAoJCQkJICAgIEd0a0Z1bmN0aW9uCSAgICAgICBmdW5jdGlvbiwKCQkJCSAgICBn
cG9pbnRlcgkgICAgICAgZGF0YSk7Cmd1aW50CSAgIGd0a19pZGxlX2FkZF9mdWxsCSAgIChnaW50
CSAgICAgICBwcmlvcml0eSwKCQkJCSAgICBHdGtGdW5jdGlvbgkgICAgICAgZnVuY3Rpb24sCgkJ
CQkgICAgR3RrQ2FsbGJhY2tNYXJzaGFsIG1hcnNoYWwsCgkJCQkgICAgZ3BvaW50ZXIJICAgICAg
IGRhdGEsCgkJCQkgICAgR3RrRGVzdHJveU5vdGlmeSAgIGRlc3Ryb3kpOwp2b2lkCSAgIGd0a19p
ZGxlX3JlbW92ZQkgICAoZ3VpbnQJICAgICAgIGlkbGVfaGFuZGxlcl9pZCk7CnZvaWQJICAgZ3Rr
X2lkbGVfcmVtb3ZlX2J5X2RhdGEgKGdwb2ludGVyCSAgICAgICBkYXRhKTsKZ3VpbnQJICAgZ3Rr
X2lucHV0X2FkZF9mdWxsCSAgIChnaW50CSAgICAgICBzb3VyY2UsCgkJCQkgICAgR2RrSW5wdXRD
b25kaXRpb24gIGNvbmRpdGlvbiwKCQkJCSAgICBHZGtJbnB1dEZ1bmN0aW9uICAgZnVuY3Rpb24s
CgkJCQkgICAgR3RrQ2FsbGJhY2tNYXJzaGFsIG1hcnNoYWwsCgkJCQkgICAgZ3BvaW50ZXIJICAg
ICAgIGRhdGEsCgkJCQkgICAgR3RrRGVzdHJveU5vdGlmeSAgIGRlc3Ryb3kpOwp2b2lkCSAgIGd0
a19pbnB1dF9yZW1vdmUJICAgKGd1aW50CSAgICAgICBpbnB1dF9oYW5kbGVyX2lkKTsKCgpndWlu
dAkgICBndGtfa2V5X3Nub29wZXJfaW5zdGFsbCAoR3RrS2V5U25vb3BGdW5jIHNub29wZXIsCgkJ
CQkgICAgZ3BvaW50ZXIJICAgIGZ1bmNfZGF0YSk7CnZvaWQJICAgZ3RrX2tleV9zbm9vcGVyX3Jl
bW92ZSAgKGd1aW50CSAgICBzbm9vcGVyX2hhbmRsZXJfaWQpOwogIApHZGtFdmVudCogIGd0a19n
ZXRfY3VycmVudF9ldmVudCAgICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfZ2V0X2V2ZW50X3dpZGdl
dAkgICAoR2RrRXZlbnQJICAgKmV2ZW50KTsKCgogCgp2b2lkICAgICAgIGd0a19wcm9wYWdhdGVf
ZXZlbnQgICAgIChHdGtXaWRnZXQgICAgICAgICAqd2lkZ2V0LAoJCQkJICAgIEdka0V2ZW50ICAg
ICAgICAgICpldmVudCk7CgoKfQoKCgoKIyAzOCAiL3Vzci9pbmNsdWRlL2d0ay9ndGtjb2xvcnNl
bC5oIiAyIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtzY2FsZS5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgX0d0a1NjYWxlICAgICAgICBHdGtTY2FsZTsKdHlwZWRlZiBzdHJ1Y3QgX0d0
a1NjYWxlQ2xhc3MgICBHdGtTY2FsZUNsYXNzOwoKc3RydWN0IF9HdGtTY2FsZQp7CiAgR3RrUmFu
Z2UgcmFuZ2U7CgogIGd1aW50IGRyYXdfdmFsdWUgOiAxOwogIGd1aW50IHZhbHVlX3BvcyA6IDI7
Cn07CgpzdHJ1Y3QgX0d0a1NjYWxlQ2xhc3MKewogIEd0a1JhbmdlQ2xhc3MgcGFyZW50X2NsYXNz
OwoKICBnaW50IHNsaWRlcl9sZW5ndGg7CiAgZ2ludCB2YWx1ZV9zcGFjaW5nOwogIAogIHZvaWQg
KCogZHJhd192YWx1ZSkgKEd0a1NjYWxlICpzY2FsZSk7Cn07CgoKR3RrVHlwZSBndGtfc2NhbGVf
Z2V0X3R5cGUgICAgICAgICh2b2lkKTsKdm9pZCAgICBndGtfc2NhbGVfc2V0X2RpZ2l0cyAgICAg
IChHdGtTY2FsZSAgICAgICAgKnNjYWxlLAoJCQkJICAgZ2ludCAgICAgICAgICAgICBkaWdpdHMp
Owp2b2lkICAgIGd0a19zY2FsZV9zZXRfZHJhd192YWx1ZSAgKEd0a1NjYWxlICAgICAgICAqc2Nh
bGUsCgkJCQkgICBnYm9vbGVhbiAgICAgICAgIGRyYXdfdmFsdWUpOwp2b2lkICAgIGd0a19zY2Fs
ZV9zZXRfdmFsdWVfcG9zICAgKEd0a1NjYWxlICAgICAgICAqc2NhbGUsCgkJCQkgICBHdGtQb3Np
dGlvblR5cGUgIHBvcyk7CmdpbnQgICAgZ3RrX3NjYWxlX2dldF92YWx1ZV93aWR0aCAoR3RrU2Nh
bGUgICAgICAgICpzY2FsZSk7Cgp2b2lkICAgIGd0a19zY2FsZV9kcmF3X3ZhbHVlICAgICAgKEd0
a1NjYWxlICAgICAgICAqc2NhbGUpOwoKCgp9CgoKCgojIDQyICIvdXNyL2luY2x1ZGUvZ3RrL2d0
a2NvbG9yc2VsLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2hzY2FsZS5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoK
CgoKCnR5cGVkZWYgc3RydWN0IF9HdGtIU2NhbGUgICAgICAgR3RrSFNjYWxlOwp0eXBlZGVmIHN0
cnVjdCBfR3RrSFNjYWxlQ2xhc3MgIEd0a0hTY2FsZUNsYXNzOwoKc3RydWN0IF9HdGtIU2NhbGUK
ewogIEd0a1NjYWxlIHNjYWxlOwp9OwoKc3RydWN0IF9HdGtIU2NhbGVDbGFzcwp7CiAgR3RrU2Nh
bGVDbGFzcyBwYXJlbnRfY2xhc3M7Cn07CgoKR3RrVHlwZSAgICBndGtfaHNjYWxlX2dldF90eXBl
ICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfaHNjYWxlX25ldyAgICAgIChHdGtBZGp1c3RtZW50ICph
ZGp1c3RtZW50KTsKCgoKfQoKCgoKIyA0MyAiL3Vzci9pbmNsdWRlL2d0ay9ndGtjb2xvcnNlbC5o
IiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGt0YWJsZS5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgX0d0a1RhYmxlCUd0a1RhYmxlOwp0eXBlZGVmIHN0cnVjdCBfR3RrVGFibGVDbGFzcwlH
dGtUYWJsZUNsYXNzOwp0eXBlZGVmIHN0cnVjdCBfR3RrVGFibGVDaGlsZAlHdGtUYWJsZUNoaWxk
Owp0eXBlZGVmIHN0cnVjdCBfR3RrVGFibGVSb3dDb2wJR3RrVGFibGVSb3dDb2w7CgpzdHJ1Y3Qg
X0d0a1RhYmxlCnsKICBHdGtDb250YWluZXIgY29udGFpbmVyOwogIAogIEdMaXN0ICpjaGlsZHJl
bjsKICBHdGtUYWJsZVJvd0NvbCAqcm93czsKICBHdGtUYWJsZVJvd0NvbCAqY29sczsKICBndWlu
dDE2IG5yb3dzOwogIGd1aW50MTYgbmNvbHM7CiAgZ3VpbnQxNiBjb2x1bW5fc3BhY2luZzsKICBn
dWludDE2IHJvd19zcGFjaW5nOwogIGd1aW50IGhvbW9nZW5lb3VzIDogMTsKfTsKCnN0cnVjdCBf
R3RrVGFibGVDbGFzcwp7CiAgR3RrQ29udGFpbmVyQ2xhc3MgcGFyZW50X2NsYXNzOwp9OwoKc3Ry
dWN0IF9HdGtUYWJsZUNoaWxkCnsKICBHdGtXaWRnZXQgKndpZGdldDsKICBndWludDE2IGxlZnRf
YXR0YWNoOwogIGd1aW50MTYgcmlnaHRfYXR0YWNoOwogIGd1aW50MTYgdG9wX2F0dGFjaDsKICBn
dWludDE2IGJvdHRvbV9hdHRhY2g7CiAgZ3VpbnQxNiB4cGFkZGluZzsKICBndWludDE2IHlwYWRk
aW5nOwogIGd1aW50IHhleHBhbmQgOiAxOwogIGd1aW50IHlleHBhbmQgOiAxOwogIGd1aW50IHhz
aHJpbmsgOiAxOwogIGd1aW50IHlzaHJpbmsgOiAxOwogIGd1aW50IHhmaWxsIDogMTsKICBndWlu
dCB5ZmlsbCA6IDE7Cn07CgpzdHJ1Y3QgX0d0a1RhYmxlUm93Q29sCnsKICBndWludDE2IHJlcXVp
c2l0aW9uOwogIGd1aW50MTYgYWxsb2NhdGlvbjsKICBndWludDE2IHNwYWNpbmc7CiAgZ3VpbnQg
bmVlZF9leHBhbmQgOiAxOwogIGd1aW50IG5lZWRfc2hyaW5rIDogMTsKICBndWludCBleHBhbmQg
OiAxOwogIGd1aW50IHNocmluayA6IDE7CiAgZ3VpbnQgZW1wdHkgOiAxOwp9OwoKCkd0a1R5cGUJ
ICAgZ3RrX3RhYmxlX2dldF90eXBlCSAgICAgICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfdGFibGVf
bmV3CSAgICAgIChndWludAkJcm93cywKCQkJCSAgICAgICBndWludAkJY29sdW1ucywKCQkJCSAg
ICAgICBnYm9vbGVhbgkJaG9tb2dlbmVvdXMpOwp2b2lkCSAgIGd0a190YWJsZV9yZXNpemUJICAg
ICAgKEd0a1RhYmxlCSAgICAgICAqdGFibGUsCgkJCQkgICAgICAgZ3VpbnQgICAgICAgICAgICBy
b3dzLAoJCQkJICAgICAgIGd1aW50ICAgICAgICAgICAgY29sdW1ucyk7CnZvaWQJICAgZ3RrX3Rh
YmxlX2F0dGFjaAkgICAgICAoR3RrVGFibGUJICAgICAgICp0YWJsZSwKCQkJCSAgICAgICBHdGtX
aWRnZXQgICAgICAgKmNoaWxkLAoJCQkJICAgICAgIGd1aW50CQlsZWZ0X2F0dGFjaCwKCQkJCSAg
ICAgICBndWludAkJcmlnaHRfYXR0YWNoLAoJCQkJICAgICAgIGd1aW50CQl0b3BfYXR0YWNoLAoJ
CQkJICAgICAgIGd1aW50CQlib3R0b21fYXR0YWNoLAoJCQkJICAgICAgIEd0a0F0dGFjaE9wdGlv
bnMgeG9wdGlvbnMsCgkJCQkgICAgICAgR3RrQXR0YWNoT3B0aW9ucyB5b3B0aW9ucywKCQkJCSAg
ICAgICBndWludAkJeHBhZGRpbmcsCgkJCQkgICAgICAgZ3VpbnQJCXlwYWRkaW5nKTsKdm9pZAkg
ICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzICAoR3RrVGFibGUJICAgICAgICp0YWJsZSwKCQkJ
CSAgICAgICBHdGtXaWRnZXQgICAgICAgKndpZGdldCwKCQkJCSAgICAgICBndWludAkJbGVmdF9h
dHRhY2gsCgkJCQkgICAgICAgZ3VpbnQJCXJpZ2h0X2F0dGFjaCwKCQkJCSAgICAgICBndWludAkJ
dG9wX2F0dGFjaCwKCQkJCSAgICAgICBndWludAkJYm90dG9tX2F0dGFjaCk7CnZvaWQJICAgZ3Rr
X3RhYmxlX3NldF9yb3dfc3BhY2luZyAgKEd0a1RhYmxlCSAgICAgICAqdGFibGUsCgkJCQkgICAg
ICAgZ3VpbnQJCXJvdywKCQkJCSAgICAgICBndWludAkJc3BhY2luZyk7CnZvaWQJICAgZ3RrX3Rh
YmxlX3NldF9jb2xfc3BhY2luZyAgKEd0a1RhYmxlCSAgICAgICAqdGFibGUsCgkJCQkgICAgICAg
Z3VpbnQJCWNvbHVtbiwKCQkJCSAgICAgICBndWludAkJc3BhY2luZyk7CnZvaWQJICAgZ3RrX3Rh
YmxlX3NldF9yb3dfc3BhY2luZ3MgKEd0a1RhYmxlCSAgICAgICAqdGFibGUsCgkJCQkgICAgICAg
Z3VpbnQJCXNwYWNpbmcpOwp2b2lkCSAgIGd0a190YWJsZV9zZXRfY29sX3NwYWNpbmdzIChHdGtU
YWJsZQkgICAgICAgKnRhYmxlLAoJCQkJICAgICAgIGd1aW50CQlzcGFjaW5nKTsKdm9pZAkgICBn
dGtfdGFibGVfc2V0X2hvbW9nZW5lb3VzICAoR3RrVGFibGUJICAgICAgICp0YWJsZSwKCQkJCSAg
ICAgICBnYm9vbGVhbgkJaG9tb2dlbmVvdXMpOwoKCgp9CgoKCgojIDQ0ICIvdXNyL2luY2x1ZGUv
Z3RrL2d0a2NvbG9yc2VsLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2V2ZW50Ym94
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7
CgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrRXZlbnRCb3gJICBHdGtFdmVudEJveDsKdHlw
ZWRlZiBzdHJ1Y3QgX0d0a0V2ZW50Qm94Q2xhc3MgIEd0a0V2ZW50Qm94Q2xhc3M7CgpzdHJ1Y3Qg
X0d0a0V2ZW50Qm94CnsKICBHdGtCaW4gYmluOwp9OwoKc3RydWN0IF9HdGtFdmVudEJveENsYXNz
CnsKICBHdGtCaW5DbGFzcyBwYXJlbnRfY2xhc3M7Cn07CgpHdGtUeXBlCSAgICAgICBndGtfZXZl
bnRfYm94X2dldF90eXBlCSAgICAgKHZvaWQpOwpHdGtXaWRnZXQqICAgICBndGtfZXZlbnRfYm94
X25ldwkgICAgICh2b2lkKTsKCgp9CgoKCgojIDQ1ICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2NvbG9y
c2VsLmgiIDIgMwoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0
IF9HdGtDb2xvclNlbGVjdGlvbiAgICAgICAgICAgICBHdGtDb2xvclNlbGVjdGlvbjsKdHlwZWRl
ZiBzdHJ1Y3QgX0d0a0NvbG9yU2VsZWN0aW9uQ2xhc3MgICAgICAgIEd0a0NvbG9yU2VsZWN0aW9u
Q2xhc3M7Cgp0eXBlZGVmIHN0cnVjdCBfR3RrQ29sb3JTZWxlY3Rpb25EaWFsb2cgICAgICAgR3Rr
Q29sb3JTZWxlY3Rpb25EaWFsb2c7CnR5cGVkZWYgc3RydWN0IF9HdGtDb2xvclNlbGVjdGlvbkRp
YWxvZ0NsYXNzICBHdGtDb2xvclNlbGVjdGlvbkRpYWxvZ0NsYXNzOwoKCnN0cnVjdCBfR3RrQ29s
b3JTZWxlY3Rpb24KewogIEd0a1ZCb3ggdmJveDsKCiAgR3RrV2lkZ2V0ICp3aGVlbF9hcmVhOwog
IEd0a1dpZGdldCAqdmFsdWVfYXJlYTsKICBHdGtXaWRnZXQgKnNhbXBsZV9hcmVhOwogIEd0a1dp
ZGdldCAqc2FtcGxlX2FyZWFfZWI7CgogIEd0a1dpZGdldCAqc2NhbGVzWzhdOwogIEd0a1dpZGdl
dCAqZW50cmllc1s4XTsKICBHdGtXaWRnZXQgKm9wYWNpdHlfbGFiZWw7CgogIEdka0dDICp3aGVl
bF9nYzsKICBHZGtHQyAqdmFsdWVfZ2M7CiAgR2RrR0MgKnNhbXBsZV9nYzsKCiAgR3RrVXBkYXRl
VHlwZSBwb2xpY3k7CiAgZ2ludCB1c2Vfb3BhY2l0eTsKICBnaW50IHRpbWVyX2FjdGl2ZTsKICBn
aW50IHRpbWVyX3RhZzsKICBnZG91YmxlIHZhbHVlc1s4XTsKICBnZG91YmxlIG9sZF92YWx1ZXNb
OF07CgogIGd1Y2hhciAqd2hlZWxfYnVmOwogIGd1Y2hhciAqdmFsdWVfYnVmOwogIGd1Y2hhciAq
c2FtcGxlX2J1ZjsKfTsKCnN0cnVjdCBfR3RrQ29sb3JTZWxlY3Rpb25DbGFzcwp7CiAgR3RrVkJv
eENsYXNzIHBhcmVudF9jbGFzczsKCiAgdm9pZCAoKiBjb2xvcl9jaGFuZ2VkKSAoR3RrQ29sb3JT
ZWxlY3Rpb24gKmNvbG9yc2VsKTsKfTsKCnN0cnVjdCBfR3RrQ29sb3JTZWxlY3Rpb25EaWFsb2cK
ewogIEd0a1dpbmRvdyB3aW5kb3c7CgogIEd0a1dpZGdldCAqY29sb3JzZWw7CiAgR3RrV2lkZ2V0
ICptYWluX3Zib3g7CiAgR3RrV2lkZ2V0ICpva19idXR0b247CiAgR3RrV2lkZ2V0ICpyZXNldF9i
dXR0b247CiAgR3RrV2lkZ2V0ICpjYW5jZWxfYnV0dG9uOwogIEd0a1dpZGdldCAqaGVscF9idXR0
b247Cn07CgpzdHJ1Y3QgX0d0a0NvbG9yU2VsZWN0aW9uRGlhbG9nQ2xhc3MKewogIEd0a1dpbmRv
d0NsYXNzIHBhcmVudF9jbGFzczsKfTsKCgogCgpHdGtUeXBlICAgIGd0a19jb2xvcl9zZWxlY3Rp
b25fZ2V0X3R5cGUgICAgICAgICAgKHZvaWQpOwoKR3RrV2lkZ2V0KiBndGtfY29sb3Jfc2VsZWN0
aW9uX25ldyAgICAgICAgICAgICAgICh2b2lkKTsKCnZvaWQgICAgICAgZ3RrX2NvbG9yX3NlbGVj
dGlvbl9zZXRfdXBkYXRlX3BvbGljeSAoR3RrQ29sb3JTZWxlY3Rpb24gICAgICpjb2xvcnNlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtVcGRh
dGVUeXBlICAgICAgICAgIHBvbGljeSk7Cgp2b2lkICAgICAgIGd0a19jb2xvcl9zZWxlY3Rpb25f
c2V0X29wYWNpdHkgICAgICAgKEd0a0NvbG9yU2VsZWN0aW9uICAgICAqY29sb3JzZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAg
ICAgICAgICAgICB1c2Vfb3BhY2l0eSk7Cgp2b2lkICAgICAgIGd0a19jb2xvcl9zZWxlY3Rpb25f
c2V0X2NvbG9yICAgICAgICAgKEd0a0NvbG9yU2VsZWN0aW9uICAgICAqY29sb3JzZWwsCgkJCQkJ
ICAgICAgICAgIGdkb3VibGUgICAgICAgICAgICAgICAqY29sb3IpOwoKdm9pZCAgICAgICBndGtf
Y29sb3Jfc2VsZWN0aW9uX2dldF9jb2xvciAgICAgICAgIChHdGtDb2xvclNlbGVjdGlvbiAgICAg
KmNvbG9yc2VsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdkb3VibGUgICAgICAgICAgICAgICAqY29sb3IpOwoKIAoKR3RrVHlwZSAgICBndGtfY29s
b3Jfc2VsZWN0aW9uX2RpYWxvZ19nZXRfdHlwZSAgICh2b2lkKTsKCkd0a1dpZGdldCogZ3RrX2Nv
bG9yX3NlbGVjdGlvbl9kaWFsb2dfbmV3ICAgICAgICAoY29uc3QgZ2NoYXIgKnRpdGxlKTsKCgoK
fQoKCgoKIyA0OCAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVk
ZS9ndGsvZ3RrY29tYm8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
ZXh0ZXJuICJDIiB7CgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtDb21ibwkJR3RrQ29tYm87CnR5
cGVkZWYgc3RydWN0IF9HdGtDb21ib0NsYXNzCUd0a0NvbWJvQ2xhc3M7CgogCnN0cnVjdCBfR3Rr
Q29tYm8gewoJR3RrSEJveCBoYm94OwoJR3RrV2lkZ2V0ICplbnRyeTsKCUd0a1dpZGdldCAqYnV0
dG9uOwoJR3RrV2lkZ2V0ICpwb3B1cDsKCUd0a1dpZGdldCAqcG9wd2luOwoJR3RrV2lkZ2V0ICps
aXN0OwoKCWd1aW50IGVudHJ5X2NoYW5nZV9pZDsKCWd1aW50IGxpc3RfY2hhbmdlX2lkOwoKCWd1
aW50IHZhbHVlX2luX2xpc3Q6MTsKCWd1aW50IG9rX2lmX2VtcHR5OjE7CglndWludCBjYXNlX3Nl
bnNpdGl2ZToxOwoJZ3VpbnQgdXNlX2Fycm93czoxOwoJZ3VpbnQgdXNlX2Fycm93c19hbHdheXM6
MTsKCiAgICAgICAgZ3VpbnQxNiBjdXJyZW50X2J1dHRvbjsKCWd1aW50IGFjdGl2YXRlX2lkOwp9
OwoKc3RydWN0IF9HdGtDb21ib0NsYXNzIHsKCUd0a0hCb3hDbGFzcyBwYXJlbnRfY2xhc3M7Cn07
CgpndWludCAgICAgIGd0a19jb21ib19nZXRfdHlwZSAgICAgICAgICAgICAgKHZvaWQpOwoKR3Rr
V2lkZ2V0ICpndGtfY29tYm9fbmV3ICAgICAgICAgICAgICAgICAgICh2b2lkKTsKIAp2b2lkICAg
ICAgIGd0a19jb21ib19zZXRfdmFsdWVfaW5fbGlzdCAgICAgKEd0a0NvbWJvKiAgICBjb21ibywg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAg
IHZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAg
ICAgICAgb2tfaWZfZW1wdHkpOwogCnZvaWQgICAgICAgZ3RrX2NvbWJvX3NldF91c2VfYXJyb3dz
ICAgICAgICAoR3RrQ29tYm8qICAgIGNvbWJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgdmFsKTsKIAp2b2lkICAgICAgIGd0a19jb21i
b19zZXRfdXNlX2Fycm93c19hbHdheXMgKEd0a0NvbWJvKiAgICBjb21ibywgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgIHZhbCk7CiAKdm9p
ZCAgICAgICBndGtfY29tYm9fc2V0X2Nhc2Vfc2Vuc2l0aXZlICAgIChHdGtDb21ibyogICAgY29t
Ym8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAg
ICAgICB2YWwpOwogCgp2b2lkICAgICAgIGd0a19jb21ib19zZXRfaXRlbV9zdHJpbmcgICAgICAg
KEd0a0NvbWJvKiAgICBjb21ibywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHdGtJdGVtKiAgICAgaXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnY2hhciogaXRlbV92YWx1ZSk7CiAKdm9pZCAgICAgICBndGtf
Y29tYm9fc2V0X3BvcGRvd25fc3RyaW5ncyAgIChHdGtDb21ibyogICAgY29tYm8sIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaXN0ICAgICAgICAqc3RyaW5n
cyk7Cgp2b2lkICAgICAgIGd0a19jb21ib19kaXNhYmxlX2FjdGl2YXRlICAgICAgKEd0a0NvbWJv
KiAgICBjb21ibyk7CgoKfQoKCgoKCiMgNDkgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoK
IyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2NvbXBhdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
Cn0KCgoKCiMgNTAgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNs
dWRlL2d0ay9ndGtjdHJlZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGVudW0KewogIEdUS19DVFJF
RV9QT1NfQkVGT1JFLAogIEdUS19DVFJFRV9QT1NfQVNfQ0hJTEQsCiAgR1RLX0NUUkVFX1BPU19B
RlRFUgp9IEd0a0NUcmVlUG9zOwoKdHlwZWRlZiBlbnVtCnsKICBHVEtfQ1RSRUVfTElORVNfTk9O
RSwKICBHVEtfQ1RSRUVfTElORVNfU09MSUQsCiAgR1RLX0NUUkVFX0xJTkVTX0RPVFRFRCwKICBH
VEtfQ1RSRUVfTElORVNfVEFCQkVECn0gR3RrQ1RyZWVMaW5lU3R5bGU7Cgp0eXBlZGVmIGVudW0K
ewogIEdUS19DVFJFRV9FWFBBTkRFUl9OT05FLAogIEdUS19DVFJFRV9FWFBBTkRFUl9TUVVBUkUs
CiAgR1RLX0NUUkVFX0VYUEFOREVSX1RSSUFOR0xFLAogIEdUS19DVFJFRV9FWFBBTkRFUl9DSVJD
VUxBUgp9IEd0a0NUcmVlRXhwYW5kZXJTdHlsZTsKCnR5cGVkZWYgZW51bQp7CiAgR1RLX0NUUkVF
X0VYUEFOU0lPTl9FWFBBTkQsCiAgR1RLX0NUUkVFX0VYUEFOU0lPTl9FWFBBTkRfUkVDVVJTSVZF
LAogIEdUS19DVFJFRV9FWFBBTlNJT05fQ09MTEFQU0UsCiAgR1RLX0NUUkVFX0VYUEFOU0lPTl9D
T0xMQVBTRV9SRUNVUlNJVkUsCiAgR1RLX0NUUkVFX0VYUEFOU0lPTl9UT0dHTEUsCiAgR1RLX0NU
UkVFX0VYUEFOU0lPTl9UT0dHTEVfUkVDVVJTSVZFCn0gR3RrQ1RyZWVFeHBhbnNpb25UeXBlOwoK
dHlwZWRlZiBzdHJ1Y3QgX0d0a0NUcmVlICAgICAgR3RrQ1RyZWU7CnR5cGVkZWYgc3RydWN0IF9H
dGtDVHJlZUNsYXNzIEd0a0NUcmVlQ2xhc3M7CnR5cGVkZWYgc3RydWN0IF9HdGtDVHJlZVJvdyAg
IEd0a0NUcmVlUm93Owp0eXBlZGVmIHN0cnVjdCBfR3RrQ1RyZWVOb2RlICBHdGtDVHJlZU5vZGU7
Cgp0eXBlZGVmIHZvaWQgKCpHdGtDVHJlZUZ1bmMpIChHdGtDVHJlZSAgICAgKmN0cmVlLAoJCQkg
ICAgICBHdGtDVHJlZU5vZGUgKm5vZGUsCgkJCSAgICAgIGdwb2ludGVyICAgICAgZGF0YSk7Cgp0
eXBlZGVmIGdib29sZWFuICgqR3RrQ1RyZWVHTm9kZUZ1bmMpIChHdGtDVHJlZSAgICAgKmN0cmVl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgIGRl
cHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTm9kZSAgICAgICAg
Kmdub2RlLAoJCQkJICAgICAgIEd0a0NUcmVlTm9kZSAqY25vZGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgZGF0YSk7Cgp0eXBlZGVmIGdib29s
ZWFuICgqR3RrQ1RyZWVDb21wYXJlRHJhZ0Z1bmMpIChHdGtDVHJlZSAgICAgKmN0cmVlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtDVHJlZU5vZGUgKnNv
dXJjZV9ub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
dGtDVHJlZU5vZGUgKm5ld19wYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEd0a0NUcmVlTm9kZSAqbmV3X3NpYmxpbmcpOwoKc3RydWN0IF9HdGtDVHJl
ZQp7CiAgR3RrQ0xpc3QgY2xpc3Q7CiAgCiAgR2RrR0MgKmxpbmVzX2djOwogIAogIGdpbnQgdHJl
ZV9pbmRlbnQ7CiAgZ2ludCB0cmVlX3NwYWNpbmc7CiAgZ2ludCB0cmVlX2NvbHVtbjsKCiAgZ3Vp
bnQgbGluZV9zdHlsZSAgICAgOiAyOwogIGd1aW50IGV4cGFuZGVyX3N0eWxlIDogMjsKICBndWlu
dCBzaG93X3N0dWIgICAgICA6IDE7CgogIEd0a0NUcmVlQ29tcGFyZURyYWdGdW5jIGRyYWdfY29t
cGFyZTsKfTsKCnN0cnVjdCBfR3RrQ1RyZWVDbGFzcwp7CiAgR3RrQ0xpc3RDbGFzcyBwYXJlbnRf
Y2xhc3M7CiAgCiAgdm9pZCAoKnRyZWVfc2VsZWN0X3JvdykgICAoR3RrQ1RyZWUgICAgICpjdHJl
ZSwKCQkJICAgICBHdGtDVHJlZU5vZGUgKnJvdywKCQkJICAgICBnaW50ICAgICAgICAgIGNvbHVt
bik7CiAgdm9pZCAoKnRyZWVfdW5zZWxlY3Rfcm93KSAoR3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJ
ICAgICBHdGtDVHJlZU5vZGUgKnJvdywKCQkJICAgICBnaW50ICAgICAgICAgIGNvbHVtbik7CiAg
dm9pZCAoKnRyZWVfZXhwYW5kKSAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJICAgICBH
dGtDVHJlZU5vZGUgKm5vZGUpOwogIHZvaWQgKCp0cmVlX2NvbGxhcHNlKSAgICAgKEd0a0NUcmVl
ICAgICAqY3RyZWUsCgkJCSAgICAgR3RrQ1RyZWVOb2RlICpub2RlKTsKICB2b2lkICgqdHJlZV9t
b3ZlKSAgICAgICAgIChHdGtDVHJlZSAgICAgKmN0cmVlLAoJCQkgICAgIEd0a0NUcmVlTm9kZSAq
bm9kZSwKCQkJICAgICBHdGtDVHJlZU5vZGUgKm5ld19wYXJlbnQsCgkJCSAgICAgR3RrQ1RyZWVO
b2RlICpuZXdfc2libGluZyk7CiAgdm9pZCAoKmNoYW5nZV9mb2N1c19yb3dfZXhwYW5zaW9uKSAo
R3RrQ1RyZWUgKmN0cmVlLAoJCQkJICAgICAgR3RrQ1RyZWVFeHBhbnNpb25UeXBlIGFjdGlvbik7
Cn07CgpzdHJ1Y3QgX0d0a0NUcmVlUm93CnsKICBHdGtDTGlzdFJvdyByb3c7CiAgCiAgR3RrQ1Ry
ZWVOb2RlICpwYXJlbnQ7CiAgR3RrQ1RyZWVOb2RlICpzaWJsaW5nOwogIEd0a0NUcmVlTm9kZSAq
Y2hpbGRyZW47CiAgCiAgR2RrUGl4bWFwICpwaXhtYXBfY2xvc2VkOwogIEdka0JpdG1hcCAqbWFz
a19jbG9zZWQ7CiAgR2RrUGl4bWFwICpwaXhtYXBfb3BlbmVkOwogIEdka0JpdG1hcCAqbWFza19v
cGVuZWQ7CiAgCiAgZ3VpbnQxNiBsZXZlbDsKICAKICBndWludCBpc19sZWFmICA6IDE7CiAgZ3Vp
bnQgZXhwYW5kZWQgOiAxOwp9OwoKc3RydWN0IF9HdGtDVHJlZU5vZGUgewogIEdMaXN0IGxpc3Q7
Cn07CgoKIAoKCgpHdGtUeXBlIGd0a19jdHJlZV9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAg
ICAgKHZvaWQpOwp2b2lkIGd0a19jdHJlZV9jb25zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAg
ICAgKEd0a0NUcmVlICAgICAqY3RyZWUsCgkJCQkJCSAgZ2ludCAgICAgICAgICBjb2x1bW5zLCAK
CQkJCQkJICBnaW50ICAgICAgICAgIHRyZWVfY29sdW1uLAoJCQkJCQkgIGdjaGFyICAgICAgICAq
dGl0bGVzW10pOwpHdGtXaWRnZXQgKiBndGtfY3RyZWVfbmV3X3dpdGhfdGl0bGVzICAgICAgICAg
ICAgKGdpbnQgICAgICAgICAgY29sdW1ucywgCgkJCQkJCSAgZ2ludCAgICAgICAgICB0cmVlX2Nv
bHVtbiwKCQkJCQkJICBnY2hhciAgICAgICAgKnRpdGxlc1tdKTsKR3RrV2lkZ2V0ICogZ3RrX2N0
cmVlX25ldyAgICAgICAgICAgICAgICAgICAgICAgIChnaW50ICAgICAgICAgIGNvbHVtbnMsIAoJ
CQkJCQkgIGdpbnQgICAgICAgICAgdHJlZV9jb2x1bW4pOwpHdGtDVHJlZU5vZGUgKiBndGtfY3Ry
ZWVfaW5zZXJ0X25vZGUgICAgICAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsCgkJCQkJCSAg
R3RrQ1RyZWVOb2RlICpwYXJlbnQsIAoJCQkJCQkgIEd0a0NUcmVlTm9kZSAqc2libGluZywKCQkJ
CQkJICBnY2hhciAgICAgICAgKnRleHRbXSwKCQkJCQkJICBndWludDggICAgICAgIHNwYWNpbmcs
CgkJCQkJCSAgR2RrUGl4bWFwICAgICpwaXhtYXBfY2xvc2VkLAoJCQkJCQkgIEdka0JpdG1hcCAg
ICAqbWFza19jbG9zZWQsCgkJCQkJCSAgR2RrUGl4bWFwICAgICpwaXhtYXBfb3BlbmVkLAoJCQkJ
CQkgIEdka0JpdG1hcCAgICAqbWFza19vcGVuZWQsCgkJCQkJCSAgZ2Jvb2xlYW4gICAgICBpc19s
ZWFmLAoJCQkJCQkgIGdib29sZWFuICAgICAgZXhwYW5kZWQpOwp2b2lkIGd0a19jdHJlZV9yZW1v
dmVfbm9kZSAgICAgICAgICAgICAgICAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsIAoJCQkJ
CQkgIEd0a0NUcmVlTm9kZSAqbm9kZSk7Ckd0a0NUcmVlTm9kZSAqIGd0a19jdHJlZV9pbnNlcnRf
Z25vZGUgICAgICAgICAgICAoR3RrQ1RyZWUgICAgICAgICAgKmN0cmVlLAoJCQkJCQkgIEd0a0NU
cmVlTm9kZSAgICAgICpwYXJlbnQsCgkJCQkJCSAgR3RrQ1RyZWVOb2RlICAgICAgKnNpYmxpbmcs
CgkJCQkJCSAgR05vZGUgICAgICAgICAgICAgKmdub2RlLAoJCQkJCQkgIEd0a0NUcmVlR05vZGVG
dW5jICBmdW5jLAoJCQkJCQkgIGdwb2ludGVyICAgICAgICAgICBkYXRhKTsKR05vZGUgKiBndGtf
Y3RyZWVfZXhwb3J0X3RvX2dub2RlICAgICAgICAgICAgICAgIChHdGtDVHJlZSAgICAgICAgICAq
Y3RyZWUsCgkJCQkJCSAgR05vZGUgICAgICAgICAgICAgKnBhcmVudCwKCQkJCQkJICBHTm9kZSAg
ICAgICAgICAgICAqc2libGluZywKCQkJCQkJICBHdGtDVHJlZU5vZGUgICAgICAqbm9kZSwKCQkJ
CQkJICBHdGtDVHJlZUdOb2RlRnVuYyAgZnVuYywKCQkJCQkJICBncG9pbnRlciAgICAgICAgICAg
ZGF0YSk7CgogCgoKCgp2b2lkIGd0a19jdHJlZV9wb3N0X3JlY3Vyc2l2ZSAgICAgICAgICAgICAg
ICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsIAoJCQkJCQkgIEd0a0NUcmVlTm9kZSAqbm9kZSwK
CQkJCQkJICBHdGtDVHJlZUZ1bmMgIGZ1bmMsCgkJCQkJCSAgZ3BvaW50ZXIgICAgICBkYXRhKTsK
dm9pZCBndGtfY3RyZWVfcG9zdF9yZWN1cnNpdmVfdG9fZGVwdGggICAgICAgICAgIChHdGtDVHJl
ZSAgICAgKmN0cmVlLCAKCQkJCQkJICBHdGtDVHJlZU5vZGUgKm5vZGUsCgkJCQkJCSAgZ2ludCAg
ICAgICAgICBkZXB0aCwKCQkJCQkJICBHdGtDVHJlZUZ1bmMgIGZ1bmMsCgkJCQkJCSAgZ3BvaW50
ZXIgICAgICBkYXRhKTsKdm9pZCBndGtfY3RyZWVfcHJlX3JlY3Vyc2l2ZSAgICAgICAgICAgICAg
ICAgICAgIChHdGtDVHJlZSAgICAgKmN0cmVlLCAKCQkJCQkJICBHdGtDVHJlZU5vZGUgKm5vZGUs
CgkJCQkJCSAgR3RrQ1RyZWVGdW5jICBmdW5jLAoJCQkJCQkgIGdwb2ludGVyICAgICAgZGF0YSk7
CnZvaWQgZ3RrX2N0cmVlX3ByZV9yZWN1cnNpdmVfdG9fZGVwdGggICAgICAgICAgICAoR3RrQ1Ry
ZWUgICAgICpjdHJlZSwgCgkJCQkJCSAgR3RrQ1RyZWVOb2RlICpub2RlLAoJCQkJCQkgIGdpbnQg
ICAgICAgICAgZGVwdGgsCgkJCQkJCSAgR3RrQ1RyZWVGdW5jICBmdW5jLAoJCQkJCQkgIGdwb2lu
dGVyICAgICAgZGF0YSk7Cmdib29sZWFuIGd0a19jdHJlZV9pc192aWV3YWJsZSAgICAgICAgICAg
ICAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJlZSwgCgkJCQkJICAgICAgICAgIEd0a0NUcmVlTm9k
ZSAqbm9kZSk7Ckd0a0NUcmVlTm9kZSAqIGd0a19jdHJlZV9sYXN0ICAgICAgICAgICAgICAgICAg
ICAoR3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJCQkgICAgICAgICAgR3RrQ1RyZWVOb2RlICpub2Rl
KTsKR3RrQ1RyZWVOb2RlICogZ3RrX2N0cmVlX2ZpbmRfbm9kZV9wdHIgICAgICAgICAgIChHdGtD
VHJlZSAgICAgKmN0cmVlLAoJCQkJCSAgICAgICAgICBHdGtDVHJlZVJvdyAgKmN0cmVlX3Jvdyk7
Ckd0a0NUcmVlTm9kZSAqIGd0a19jdHJlZV9ub2RlX250aCAgICAgICAgICAgICAgICAoR3RrQ1Ry
ZWUgICAgICpjdHJlZSwKCQkJCQkJICBndWludCAgICAgICAgIHJvdyk7Cmdib29sZWFuIGd0a19j
dHJlZV9maW5kICAgICAgICAgICAgICAgICAgICAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJlZSwK
CQkJCQkgICAgICAgICAgR3RrQ1RyZWVOb2RlICpub2RlLAoJCQkJCSAgICAgICAgICBHdGtDVHJl
ZU5vZGUgKmNoaWxkKTsKZ2Jvb2xlYW4gZ3RrX2N0cmVlX2lzX2FuY2VzdG9yICAgICAgICAgICAg
ICAgICAgIChHdGtDVHJlZSAgICAgKmN0cmVlLAoJCQkJCSAgICAgICAgICBHdGtDVHJlZU5vZGUg
Km5vZGUsCgkJCQkJICAgICAgICAgIEd0a0NUcmVlTm9kZSAqY2hpbGQpOwpHdGtDVHJlZU5vZGUg
KiBndGtfY3RyZWVfZmluZF9ieV9yb3dfZGF0YSAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUs
CgkJCQkJICAgICAgICAgIEd0a0NUcmVlTm9kZSAqbm9kZSwKCQkJCQkgICAgICAgICAgZ3BvaW50
ZXIgICAgICBkYXRhKTsKIApHTGlzdCAqIGd0a19jdHJlZV9maW5kX2FsbF9ieV9yb3dfZGF0YSAg
ICAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsCgkJCQkJCSAgR3RrQ1RyZWVOb2RlICpub2Rl
LAoJCQkJCQkgIGdwb2ludGVyICAgICAgZGF0YSk7Ckd0a0NUcmVlTm9kZSAqIGd0a19jdHJlZV9m
aW5kX2J5X3Jvd19kYXRhX2N1c3RvbSAoR3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJCQkJICBHdGtD
VHJlZU5vZGUgKm5vZGUsCgkJCQkJCSAgZ3BvaW50ZXIgICAgICBkYXRhLAoJCQkJCQkgIEdDb21w
YXJlRnVuYyAgZnVuYyk7CiAKR0xpc3QgKiBndGtfY3RyZWVfZmluZF9hbGxfYnlfcm93X2RhdGFf
Y3VzdG9tICAgIChHdGtDVHJlZSAgICAgKmN0cmVlLAoJCQkJCQkgIEd0a0NUcmVlTm9kZSAqbm9k
ZSwKCQkJCQkJICBncG9pbnRlciAgICAgIGRhdGEsCgkJCQkJCSAgR0NvbXBhcmVGdW5jICBmdW5j
KTsKZ2Jvb2xlYW4gZ3RrX2N0cmVlX2lzX2hvdF9zcG90ICAgICAgICAgICAgICAgICAgIChHdGtD
VHJlZSAgICAgKmN0cmVlLAoJCQkJCSAgICAgICAgICBnaW50ICAgICAgICAgIHgsCgkJCQkJICAg
ICAgICAgIGdpbnQgICAgICAgICAgeSk7CgogCgoKCnZvaWQgZ3RrX2N0cmVlX21vdmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJCQkJICBHdGtD
VHJlZU5vZGUgKm5vZGUsCgkJCQkJCSAgR3RrQ1RyZWVOb2RlICpuZXdfcGFyZW50LCAKCQkJCQkJ
ICBHdGtDVHJlZU5vZGUgKm5ld19zaWJsaW5nKTsKdm9pZCBndGtfY3RyZWVfZXhwYW5kICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChHdGtDVHJlZSAgICAgKmN0cmVlLAoJCQkJCQkgIEd0a0NU
cmVlTm9kZSAqbm9kZSk7CnZvaWQgZ3RrX2N0cmVlX2V4cGFuZF9yZWN1cnNpdmUgICAgICAgICAg
ICAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJCQkJICBHdGtDVHJlZU5vZGUgKm5vZGUp
Owp2b2lkIGd0a19jdHJlZV9leHBhbmRfdG9fZGVwdGggICAgICAgICAgICAgICAgICAgKEd0a0NU
cmVlICAgICAqY3RyZWUsCgkJCQkJCSAgR3RrQ1RyZWVOb2RlICpub2RlLAoJCQkJCQkgIGdpbnQg
ICAgICAgICAgZGVwdGgpOwp2b2lkIGd0a19jdHJlZV9jb2xsYXBzZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsCgkJCQkJCSAgR3RrQ1RyZWVOb2RlICpub2Rl
KTsKdm9pZCBndGtfY3RyZWVfY29sbGFwc2VfcmVjdXJzaXZlICAgICAgICAgICAgICAgIChHdGtD
VHJlZSAgICAgKmN0cmVlLAoJCQkJCQkgIEd0a0NUcmVlTm9kZSAqbm9kZSk7CnZvaWQgZ3RrX2N0
cmVlX2NvbGxhcHNlX3RvX2RlcHRoICAgICAgICAgICAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJl
ZSwKCQkJCQkJICBHdGtDVHJlZU5vZGUgKm5vZGUsCgkJCQkJCSAgZ2ludCAgICAgICAgICBkZXB0
aCk7CnZvaWQgZ3RrX2N0cmVlX3RvZ2dsZV9leHBhbnNpb24gICAgICAgICAgICAgICAgICAoR3Rr
Q1RyZWUgICAgICpjdHJlZSwKCQkJCQkJICBHdGtDVHJlZU5vZGUgKm5vZGUpOwp2b2lkIGd0a19j
dHJlZV90b2dnbGVfZXhwYW5zaW9uX3JlY3Vyc2l2ZSAgICAgICAgKEd0a0NUcmVlICAgICAqY3Ry
ZWUsCgkJCQkJCSAgR3RrQ1RyZWVOb2RlICpub2RlKTsKdm9pZCBndGtfY3RyZWVfc2VsZWN0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChHdGtDVHJlZSAgICAgKmN0cmVlLCAKCQkJCQkJICBH
dGtDVHJlZU5vZGUgKm5vZGUpOwp2b2lkIGd0a19jdHJlZV9zZWxlY3RfcmVjdXJzaXZlICAgICAg
ICAgICAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsIAoJCQkJCQkgIEd0a0NUcmVlTm9kZSAq
bm9kZSk7CnZvaWQgZ3RrX2N0cmVlX3Vuc2VsZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAo
R3RrQ1RyZWUgICAgICpjdHJlZSwgCgkJCQkJCSAgR3RrQ1RyZWVOb2RlICpub2RlKTsKdm9pZCBn
dGtfY3RyZWVfdW5zZWxlY3RfcmVjdXJzaXZlICAgICAgICAgICAgICAgIChHdGtDVHJlZSAgICAg
KmN0cmVlLCAKCQkJCQkJICBHdGtDVHJlZU5vZGUgKm5vZGUpOwp2b2lkIGd0a19jdHJlZV9yZWFs
X3NlbGVjdF9yZWN1cnNpdmUgICAgICAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsIAoJCQkJ
CQkgIEd0a0NUcmVlTm9kZSAqbm9kZSwgCgkJCQkJCSAgZ2ludCAgICAgICAgICBzdGF0ZSk7Cgog
CgoKCnZvaWQgZ3RrX2N0cmVlX25vZGVfc2V0X3RleHQgICAgICAgICAgICAgICAgICAgICAoR3Rr
Q1RyZWUgICAgICpjdHJlZSwKCQkJCQkJICBHdGtDVHJlZU5vZGUgKm5vZGUsCgkJCQkJCSAgZ2lu
dCAgICAgICAgICBjb2x1bW4sCgkJCQkJCSAgY29uc3QgZ2NoYXIgICp0ZXh0KTsKdm9pZCBndGtf
Y3RyZWVfbm9kZV9zZXRfcGl4bWFwICAgICAgICAgICAgICAgICAgIChHdGtDVHJlZSAgICAgKmN0
cmVlLAoJCQkJCQkgIEd0a0NUcmVlTm9kZSAqbm9kZSwKCQkJCQkJICBnaW50ICAgICAgICAgIGNv
bHVtbiwKCQkJCQkJICBHZGtQaXhtYXAgICAgKnBpeG1hcCwKCQkJCQkJICBHZGtCaXRtYXAgICAg
Km1hc2spOwp2b2lkIGd0a19jdHJlZV9ub2RlX3NldF9waXh0ZXh0ICAgICAgICAgICAgICAgICAg
KEd0a0NUcmVlICAgICAqY3RyZWUsCgkJCQkJCSAgR3RrQ1RyZWVOb2RlICpub2RlLAoJCQkJCQkg
IGdpbnQgICAgICAgICAgY29sdW1uLAoJCQkJCQkgIGNvbnN0IGdjaGFyICAqdGV4dCwKCQkJCQkJ
ICBndWludDggICAgICAgIHNwYWNpbmcsCgkJCQkJCSAgR2RrUGl4bWFwICAgICpwaXhtYXAsCgkJ
CQkJCSAgR2RrQml0bWFwICAgICptYXNrKTsKdm9pZCBndGtfY3RyZWVfc2V0X25vZGVfaW5mbyAg
ICAgICAgICAgICAgICAgICAgIChHdGtDVHJlZSAgICAgKmN0cmVlLAoJCQkJCQkgIEd0a0NUcmVl
Tm9kZSAqbm9kZSwKCQkJCQkJICBjb25zdCBnY2hhciAgKnRleHQsCgkJCQkJCSAgZ3VpbnQ4ICAg
ICAgICBzcGFjaW5nLAoJCQkJCQkgIEdka1BpeG1hcCAgICAqcGl4bWFwX2Nsb3NlZCwKCQkJCQkJ
ICBHZGtCaXRtYXAgICAgKm1hc2tfY2xvc2VkLAoJCQkJCQkgIEdka1BpeG1hcCAgICAqcGl4bWFw
X29wZW5lZCwKCQkJCQkJICBHZGtCaXRtYXAgICAgKm1hc2tfb3BlbmVkLAoJCQkJCQkgIGdib29s
ZWFuICAgICAgaXNfbGVhZiwKCQkJCQkJICBnYm9vbGVhbiAgICAgIGV4cGFuZGVkKTsKdm9pZCBn
dGtfY3RyZWVfbm9kZV9zZXRfc2hpZnQgICAgICAgICAgICAgICAgICAgIChHdGtDVHJlZSAgICAg
KmN0cmVlLAoJCQkJCQkgIEd0a0NUcmVlTm9kZSAqbm9kZSwKCQkJCQkJICBnaW50ICAgICAgICAg
IGNvbHVtbiwKCQkJCQkJICBnaW50ICAgICAgICAgIHZlcnRpY2FsLAoJCQkJCQkgIGdpbnQgICAg
ICAgICAgaG9yaXpvbnRhbCk7CnZvaWQgZ3RrX2N0cmVlX25vZGVfc2V0X3NlbGVjdGFibGUgICAg
ICAgICAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJCQkJICBHdGtDVHJlZU5vZGUgKm5v
ZGUsCgkJCQkJCSAgZ2Jvb2xlYW4gICAgICBzZWxlY3RhYmxlKTsKZ2Jvb2xlYW4gZ3RrX2N0cmVl
X25vZGVfZ2V0X3NlbGVjdGFibGUgICAgICAgICAgIChHdGtDVHJlZSAgICAgKmN0cmVlLAoJCQkJ
CQkgIEd0a0NUcmVlTm9kZSAqbm9kZSk7Ckd0a0NlbGxUeXBlIGd0a19jdHJlZV9ub2RlX2dldF9j
ZWxsX3R5cGUgICAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJCQkJICBHdGtDVHJlZU5v
ZGUgKm5vZGUsCgkJCQkJCSAgZ2ludCAgICAgICAgICBjb2x1bW4pOwpnaW50IGd0a19jdHJlZV9u
b2RlX2dldF90ZXh0ICAgICAgICAgICAgICAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsCgkJ
CQkJCSAgR3RrQ1RyZWVOb2RlICpub2RlLAoJCQkJCQkgIGdpbnQgICAgICAgICAgY29sdW1uLAoJ
CQkJCQkgIGdjaGFyICAgICAgICoqdGV4dCk7CmdpbnQgZ3RrX2N0cmVlX25vZGVfZ2V0X3BpeG1h
cCAgICAgICAgICAgICAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJCQkJICBHdGtDVHJl
ZU5vZGUgKm5vZGUsCgkJCQkJCSAgZ2ludCAgICAgICAgICBjb2x1bW4sCgkJCQkJCSAgR2RrUGl4
bWFwICAgKipwaXhtYXAsCgkJCQkJCSAgR2RrQml0bWFwICAgKiptYXNrKTsKZ2ludCBndGtfY3Ry
ZWVfbm9kZV9nZXRfcGl4dGV4dCAgICAgICAgICAgICAgICAgIChHdGtDVHJlZSAgICAgKmN0cmVl
LAoJCQkJCQkgIEd0a0NUcmVlTm9kZSAqbm9kZSwKCQkJCQkJICBnaW50ICAgICAgICAgIGNvbHVt
biwKCQkJCQkJICBnY2hhciAgICAgICAqKnRleHQsCgkJCQkJCSAgZ3VpbnQ4ICAgICAgICpzcGFj
aW5nLAoJCQkJCQkgIEdka1BpeG1hcCAgICoqcGl4bWFwLAoJCQkJCQkgIEdka0JpdG1hcCAgICoq
bWFzayk7CmdpbnQgZ3RrX2N0cmVlX2dldF9ub2RlX2luZm8gICAgICAgICAgICAgICAgICAgICAo
R3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJCQkJICBHdGtDVHJlZU5vZGUgKm5vZGUsCgkJCQkJCSAg
Z2NoYXIgICAgICAgKip0ZXh0LAoJCQkJCQkgIGd1aW50OCAgICAgICAqc3BhY2luZywKCQkJCQkJ
ICBHZGtQaXhtYXAgICAqKnBpeG1hcF9jbG9zZWQsCgkJCQkJCSAgR2RrQml0bWFwICAgKiptYXNr
X2Nsb3NlZCwKCQkJCQkJICBHZGtQaXhtYXAgICAqKnBpeG1hcF9vcGVuZWQsCgkJCQkJCSAgR2Rr
Qml0bWFwICAgKiptYXNrX29wZW5lZCwKCQkJCQkJICBnYm9vbGVhbiAgICAgKmlzX2xlYWYsCgkJ
CQkJCSAgZ2Jvb2xlYW4gICAgICpleHBhbmRlZCk7CnZvaWQgZ3RrX2N0cmVlX25vZGVfc2V0X3Jv
d19zdHlsZSAgICAgICAgICAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJCQkJICBHdGtD
VHJlZU5vZGUgKm5vZGUsCgkJCQkJCSAgR3RrU3R5bGUgICAgICpzdHlsZSk7Ckd0a1N0eWxlICog
Z3RrX2N0cmVlX25vZGVfZ2V0X3Jvd19zdHlsZSAgICAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJl
ZSwKCQkJCQkJICBHdGtDVHJlZU5vZGUgKm5vZGUpOwp2b2lkIGd0a19jdHJlZV9ub2RlX3NldF9j
ZWxsX3N0eWxlICAgICAgICAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsCgkJCQkJCSAgR3Rr
Q1RyZWVOb2RlICpub2RlLAoJCQkJCQkgIGdpbnQgICAgICAgICAgY29sdW1uLAoJCQkJCQkgIEd0
a1N0eWxlICAgICAqc3R5bGUpOwpHdGtTdHlsZSAqIGd0a19jdHJlZV9ub2RlX2dldF9jZWxsX3N0
eWxlICAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsCgkJCQkJCSAgR3RrQ1RyZWVOb2RlICpu
b2RlLAoJCQkJCQkgIGdpbnQgICAgICAgICAgY29sdW1uKTsKdm9pZCBndGtfY3RyZWVfbm9kZV9z
ZXRfZm9yZWdyb3VuZCAgICAgICAgICAgICAgIChHdGtDVHJlZSAgICAgKmN0cmVlLAoJCQkJCQkg
IEd0a0NUcmVlTm9kZSAqbm9kZSwKCQkJCQkJICBHZGtDb2xvciAgICAgKmNvbG9yKTsKdm9pZCBn
dGtfY3RyZWVfbm9kZV9zZXRfYmFja2dyb3VuZCAgICAgICAgICAgICAgIChHdGtDVHJlZSAgICAg
KmN0cmVlLAoJCQkJCQkgIEd0a0NUcmVlTm9kZSAqbm9kZSwKCQkJCQkJICBHZGtDb2xvciAgICAg
KmNvbG9yKTsKdm9pZCBndGtfY3RyZWVfbm9kZV9zZXRfcm93X2RhdGEgICAgICAgICAgICAgICAg
IChHdGtDVHJlZSAgICAgKmN0cmVlLAoJCQkJCQkgIEd0a0NUcmVlTm9kZSAqbm9kZSwKCQkJCQkJ
ICBncG9pbnRlciAgICAgIGRhdGEpOwp2b2lkIGd0a19jdHJlZV9ub2RlX3NldF9yb3dfZGF0YV9m
dWxsICAgICAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsCgkJCQkJCSAgR3RrQ1RyZWVOb2Rl
ICpub2RlLAoJCQkJCQkgIGdwb2ludGVyICAgICAgZGF0YSwKCQkJCQkJICBHdGtEZXN0cm95Tm90
aWZ5IGRlc3Ryb3kpOwpncG9pbnRlciBndGtfY3RyZWVfbm9kZV9nZXRfcm93X2RhdGEgICAgICAg
ICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsCgkJCQkJCSAgR3RrQ1RyZWVOb2RlICpub2RlKTsK
dm9pZCBndGtfY3RyZWVfbm9kZV9tb3ZldG8gICAgICAgICAgICAgICAgICAgICAgIChHdGtDVHJl
ZSAgICAgKmN0cmVlLAoJCQkJCQkgIEd0a0NUcmVlTm9kZSAqbm9kZSwKCQkJCQkJICBnaW50ICAg
ICAgICAgIGNvbHVtbiwKCQkJCQkJICBnZmxvYXQgICAgICAgIHJvd19hbGlnbiwKCQkJCQkJICBn
ZmxvYXQgICAgICAgIGNvbF9hbGlnbik7Ckd0a1Zpc2liaWxpdHkgZ3RrX2N0cmVlX25vZGVfaXNf
dmlzaWJsZSAgICAgICAgICAoR3RrQ1RyZWUgICAgICpjdHJlZSwKCQkJCQkJICBHdGtDVHJlZU5v
ZGUgKm5vZGUpOwoKIAoKCgp2b2lkIGd0a19jdHJlZV9zZXRfaW5kZW50ICAgICAgICAgICAgKEd0
a0NUcmVlICAgICAgICAgICAgICAgICpjdHJlZSwgCgkJCQkgICAgICBnaW50ICAgICAgICAgICAg
ICAgICAgICAgaW5kZW50KTsKdm9pZCBndGtfY3RyZWVfc2V0X3NwYWNpbmcgICAgICAgICAgIChH
dGtDVHJlZSAgICAgICAgICAgICAgICAqY3RyZWUsIAoJCQkJICAgICAgZ2ludCAgICAgICAgICAg
ICAgICAgICAgIHNwYWNpbmcpOwp2b2lkIGd0a19jdHJlZV9zZXRfc2hvd19zdHViICAgICAgICAg
KEd0a0NUcmVlICAgICAgICAgICAgICAgICpjdHJlZSwgCgkJCQkgICAgICBnYm9vbGVhbiAgICAg
ICAgICAgICAgICAgc2hvd19zdHViKTsKdm9pZCBndGtfY3RyZWVfc2V0X2xpbmVfc3R5bGUgICAg
ICAgIChHdGtDVHJlZSAgICAgICAgICAgICAgICAqY3RyZWUsIAoJCQkJICAgICAgR3RrQ1RyZWVM
aW5lU3R5bGUgICAgICAgIGxpbmVfc3R5bGUpOwp2b2lkIGd0a19jdHJlZV9zZXRfZXhwYW5kZXJf
c3R5bGUgICAgKEd0a0NUcmVlICAgICAgICAgICAgICAgICpjdHJlZSwgCgkJCQkgICAgICBHdGtD
VHJlZUV4cGFuZGVyU3R5bGUgICAgZXhwYW5kZXJfc3R5bGUpOwp2b2lkIGd0a19jdHJlZV9zZXRf
ZHJhZ19jb21wYXJlX2Z1bmMgKEd0a0NUcmVlICAgICAJICAgICAgKmN0cmVlLAoJCQkJICAgICAg
R3RrQ1RyZWVDb21wYXJlRHJhZ0Z1bmMgIGNtcF9mdW5jKTsKCiAKCgoKdm9pZCBndGtfY3RyZWVf
c29ydF9ub2RlICAgICAgICAgICAgICAgICAgICAgICAgIChHdGtDVHJlZSAgICAgKmN0cmVlLCAK
CQkJCQkJICBHdGtDVHJlZU5vZGUgKm5vZGUpOwp2b2lkIGd0a19jdHJlZV9zb3J0X3JlY3Vyc2l2
ZSAgICAgICAgICAgICAgICAgICAgKEd0a0NUcmVlICAgICAqY3RyZWUsIAoJCQkJCQkgIEd0a0NU
cmVlTm9kZSAqbm9kZSk7CgoKCgp9CgoKCiMgNTIgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIg
MwoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2N1cnZlLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrZHJhd2luZ2FyZWEuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoK
CgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtEcmF3aW5nQXJlYSAgICAgICBHdGtEcmF3aW5nQXJl
YTsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0RyYXdpbmdBcmVhQ2xhc3MgIEd0a0RyYXdpbmdBcmVhQ2xh
c3M7CgpzdHJ1Y3QgX0d0a0RyYXdpbmdBcmVhCnsKICBHdGtXaWRnZXQgd2lkZ2V0OwoKICBncG9p
bnRlciBkcmF3X2RhdGE7Cn07CgpzdHJ1Y3QgX0d0a0RyYXdpbmdBcmVhQ2xhc3MKewogIEd0a1dp
ZGdldENsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtUeXBlICAgIGd0a19kcmF3aW5nX2FyZWFf
Z2V0X3R5cGUgICAodm9pZCk7Ckd0a1dpZGdldCogZ3RrX2RyYXdpbmdfYXJlYV9uZXcgICAgICAg
ICh2b2lkKTsKdm9pZCAgICAgICBndGtfZHJhd2luZ19hcmVhX3NpemUgICAgICAgKEd0a0RyYXdp
bmdBcmVhICAgICAgKmRhcmVhLAoJCQkJCWdpbnQgICAgICAgICAgICAgICAgIHdpZHRoLAoJCQkJ
CWdpbnQgICAgICAgICAgICAgICAgIGhlaWdodCk7CgoKCn0KCgoKCiMgMzIgIi91c3IvaW5jbHVk
ZS9ndGsvZ3RrY3VydmUuaCIgMiAzCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgX0d0a0N1cnZlCUd0a0N1cnZlOwp0eXBlZGVmIHN0cnVjdCBfR3RrQ3VydmVDbGFzcwlH
dGtDdXJ2ZUNsYXNzOwoKCnN0cnVjdCBfR3RrQ3VydmUKewogIEd0a0RyYXdpbmdBcmVhIGdyYXBo
OwoKICBnaW50IGN1cnNvcl90eXBlOwogIGdmbG9hdCBtaW5feDsKICBnZmxvYXQgbWF4X3g7CiAg
Z2Zsb2F0IG1pbl95OwogIGdmbG9hdCBtYXhfeTsKICBHZGtQaXhtYXAgKnBpeG1hcDsKICBHdGtD
dXJ2ZVR5cGUgY3VydmVfdHlwZTsKICBnaW50IGhlaWdodDsgICAgICAgICAgICAgICAgICAgCiAg
Z2ludCBncmFiX3BvaW50OyAgICAgICAgICAgICAgIAogIGdpbnQgbGFzdDsKCiAgIAogIGdpbnQg
bnVtX3BvaW50czsKICBHZGtQb2ludCAqcG9pbnQ7CgogICAKICBnaW50IG51bV9jdGxwb2ludHM7
ICAgICAgICAgICAgCiAgZ2Zsb2F0ICgqY3RscG9pbnQpWzJdOyAgICAgICAgIAp9OwoKc3RydWN0
IF9HdGtDdXJ2ZUNsYXNzCnsKICBHdGtEcmF3aW5nQXJlYUNsYXNzIHBhcmVudF9jbGFzczsKCiAg
dm9pZCAoKiBjdXJ2ZV90eXBlX2NoYW5nZWQpIChHdGtDdXJ2ZSAqY3VydmUpOwp9OwoKCkd0a1R5
cGUJCWd0a19jdXJ2ZV9nZXRfdHlwZQkodm9pZCk7Ckd0a1dpZGdldCoJZ3RrX2N1cnZlX25ldwkJ
KHZvaWQpOwp2b2lkCQlndGtfY3VydmVfcmVzZXQJCShHdGtDdXJ2ZSAqY3VydmUpOwp2b2lkCQln
dGtfY3VydmVfc2V0X2dhbW1hCShHdGtDdXJ2ZSAqY3VydmUsIGdmbG9hdCBnYW1tYSk7CnZvaWQJ
CWd0a19jdXJ2ZV9zZXRfcmFuZ2UJKEd0a0N1cnZlICpjdXJ2ZSwKCQkJCQkgZ2Zsb2F0IG1pbl94
LCBnZmxvYXQgbWF4X3gsCgkJCQkJIGdmbG9hdCBtaW5feSwgZ2Zsb2F0IG1heF95KTsKdm9pZAkJ
Z3RrX2N1cnZlX2dldF92ZWN0b3IJKEd0a0N1cnZlICpjdXJ2ZSwKCQkJCQkgaW50IHZlY2xlbiwg
Z2Zsb2F0IHZlY3RvcltdKTsKdm9pZAkJZ3RrX2N1cnZlX3NldF92ZWN0b3IJKEd0a0N1cnZlICpj
dXJ2ZSwKCQkJCQkgaW50IHZlY2xlbiwgZ2Zsb2F0IHZlY3RvcltdKTsKdm9pZAkJZ3RrX2N1cnZl
X3NldF9jdXJ2ZV90eXBlIChHdGtDdXJ2ZSAqY3VydmUsIEd0a0N1cnZlVHlwZSB0eXBlKTsKCgoK
fQoKCgoKIyA1MyAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1
ZGUvZ3RrL2d0a2RpYWxvZy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a0RpYWxvZyAgICAg
ICAgR3RrRGlhbG9nOwp0eXBlZGVmIHN0cnVjdCBfR3RrRGlhbG9nQ2xhc3MgICBHdGtEaWFsb2dD
bGFzczsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0RpYWxvZ0J1dHRvbiAgR3RrRGlhbG9nQnV0dG9uOwoK
CnN0cnVjdCBfR3RrRGlhbG9nCnsKICBHdGtXaW5kb3cgd2luZG93OwoKICBHdGtXaWRnZXQgKnZi
b3g7CiAgR3RrV2lkZ2V0ICphY3Rpb25fYXJlYTsKfTsKCnN0cnVjdCBfR3RrRGlhbG9nQ2xhc3MK
ewogIEd0a1dpbmRvd0NsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtUeXBlICAgIGd0a19kaWFs
b2dfZ2V0X3R5cGUgKHZvaWQpOwpHdGtXaWRnZXQqIGd0a19kaWFsb2dfbmV3ICAgICAgKHZvaWQp
OwoKCgp9CgoKCgojIDU1ICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMKCiMgMSAiL3Vzci9p
bmNsdWRlL2d0ay9ndGtkbmQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3Rrc2VsZWN0aW9uLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKdHlwZWRlZiBzdHJ1Y3QgX0d0
a1NlbGVjdGlvbkRhdGEgR3RrU2VsZWN0aW9EYXRhOwp0eXBlZGVmIHN0cnVjdCBfR3RrVGFyZ2V0
TGlzdCAgICBHdGtUYXJnZXRMaXN0Owp0eXBlZGVmIHN0cnVjdCBfR3RrVGFyZ2V0RW50cnkgICBH
dGtUYXJnZXRFbnRyeTsKCnN0cnVjdCBfR3RrVGFyZ2V0RW50cnkgewogIGdjaGFyICp0YXJnZXQ7
CiAgZ3VpbnQgIGZsYWdzOwogIGd1aW50ICBpbmZvOwp9OwoKIAoKCgp0eXBlZGVmIHN0cnVjdCBf
R3RrVGFyZ2V0UGFpciBHdGtUYXJnZXRQYWlyOwoKIApzdHJ1Y3QgX0d0a1RhcmdldExpc3Qgewog
IEdMaXN0ICpsaXN0OwogIGd1aW50IHJlZl9jb3VudDsKfTsKCnN0cnVjdCBfR3RrVGFyZ2V0UGFp
ciB7CiAgR2RrQXRvbSAgIHRhcmdldDsKICBndWludCAgICAgZmxhZ3M7CiAgZ3VpbnQgICAgIGlu
Zm87Cn07CgpHdGtUYXJnZXRMaXN0ICpndGtfdGFyZ2V0X2xpc3RfbmV3ICAgICAgIChjb25zdCBH
dGtUYXJnZXRFbnRyeSAqdGFyZ2V0cywKCQkJCQkgIGd1aW50ICAgICAgICAgICAgICAgICBudGFy
Z2V0cyk7CnZvaWQgICAgICAgICAgIGd0a190YXJnZXRfbGlzdF9yZWYgICAgICAgKEd0a1Rhcmdl
dExpc3QgICpsaXN0KTsKdm9pZCAgICAgICAgICAgZ3RrX3RhcmdldF9saXN0X3VucmVmICAgICAo
R3RrVGFyZ2V0TGlzdCAgKmxpc3QpOwp2b2lkICAgICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRk
ICAgICAgIChHdGtUYXJnZXRMaXN0ICAqbGlzdCwKCQkJCSAgCSAgR2RrQXRvbSAgICAgICAgIHRh
cmdldCwKCQkJCQkgIGd1aW50ICAgICAgICAgICBmbGFncywKCQkJCQkgIGd1aW50ICAgICAgICAg
ICBpbmZvKTsKdm9pZCAgICAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF90YWJsZSAoR3RrVGFy
Z2V0TGlzdCAgICAgICAgKmxpc3QsCgkJCQkJICBjb25zdCBHdGtUYXJnZXRFbnRyeSAqdGFyZ2V0
cywKCQkJCQkgIGd1aW50ICAgICAgICAgICAgICAgICBudGFyZ2V0cyk7CnZvaWQgICAgICAgICAg
IGd0a190YXJnZXRfbGlzdF9yZW1vdmUgICAgKEd0a1RhcmdldExpc3QgICpsaXN0LAoJCQkJCSAg
R2RrQXRvbSAgICAgICAgIHRhcmdldCk7Cmdib29sZWFuICAgICAgIGd0a190YXJnZXRfbGlzdF9m
aW5kICAgICAgKEd0a1RhcmdldExpc3QgICpsaXN0LAoJCQkJCSAgR2RrQXRvbSAgICAgICAgIHRh
cmdldCwKCQkJCQkgIGd1aW50ICAgICAgICAgICppbmZvKTsKCiAKCmdpbnQgZ3RrX3NlbGVjdGlv
bl9vd25lcl9zZXQgKEd0a1dpZGdldCAJICAqd2lkZ2V0LAoJCQkgICAgICBHZGtBdG9tICAgIAkg
ICBzZWxlY3Rpb24sCgkJCSAgICAgIGd1aW50MzIgICAgCSAgIHRpbWUpOwp2b2lkIGd0a19zZWxl
Y3Rpb25fYWRkX3RhcmdldCAoR3RrV2lkZ2V0ICAgICAgICAgICAqd2lkZ2V0LCAKCQkJICAgICAg
IEdka0F0b20gICAgICAgICAgICAgIHNlbGVjdGlvbiwKCQkJICAgICAgIEdka0F0b20gICAgICAg
ICAgICAgIHRhcmdldCwKCQkJICAgICAgIGd1aW50ICAgICAgICAgICAgICAgIGluZm8pOwp2b2lk
IGd0a19zZWxlY3Rpb25fYWRkX3RhcmdldHMgKEd0a1dpZGdldCAgICAgICAgICAgICp3aWRnZXQs
IAoJCQkJR2RrQXRvbSAgICAgICAgICAgICAgIHNlbGVjdGlvbiwKCQkJCWNvbnN0IEd0a1Rhcmdl
dEVudHJ5ICp0YXJnZXRzLAoJCQkJZ3VpbnQgICAgICAgICAgICAgICAgIG50YXJnZXRzKTsKZ2lu
dCBndGtfc2VsZWN0aW9uX2NvbnZlcnQgICAoR3RrV2lkZ2V0IAkgICp3aWRnZXQsIAoJCQkgICAg
ICBHZGtBdG9tICAgIAkgICBzZWxlY3Rpb24sIAoJCQkgICAgICBHZGtBdG9tICAgIAkgICB0YXJn
ZXQsCgkJCSAgICAgIGd1aW50MzIgICAgCSAgIHRpbWUpOwoKCnZvaWQgZ3RrX3NlbGVjdGlvbl9k
YXRhX3NldCAoR3RrU2VsZWN0aW9uRGF0YSAqc2VsZWN0aW9uX2RhdGEsCgkJCSAgICAgR2RrQXRv
bSAgICAgICAgICAgdHlwZSwKCQkJICAgICBnaW50ICAgICAgICAgICAgICBmb3JtYXQsCgkJCSAg
ICAgY29uc3QgZ3VjaGFyICAgICAqZGF0YSwKCQkJICAgICBnaW50ICAgICAgICAgICAgICBsZW5n
dGgpOwoKIAoKdm9pZCBndGtfc2VsZWN0aW9uX3JlbW92ZV9hbGwgICAgICAoR3RrV2lkZ2V0ICp3
aWRnZXQpOwoKIAoKZ2ludCBndGtfc2VsZWN0aW9uX2NsZWFyICAgICAgICAgICAoR3RrV2lkZ2V0
IAkgICAgICAqd2lkZ2V0LAoJCQkJICAgIEdka0V2ZW50U2VsZWN0aW9uICpldmVudCk7CmdpbnQg
Z3RrX3NlbGVjdGlvbl9yZXF1ZXN0ICAgICAgICAgKEd0a1dpZGdldCAgCSAgICAgICp3aWRnZXQs
CgkJCQkgICAgR2RrRXZlbnRTZWxlY3Rpb24gKmV2ZW50KTsKZ2ludCBndGtfc2VsZWN0aW9uX2lu
Y3JfZXZlbnQgICAgICAoR2RrV2luZG93ICAgICAgICAgKndpbmRvdywKCQkJCSAgICBHZGtFdmVu
dFByb3BlcnR5ICAqZXZlbnQpOwpnaW50IGd0a19zZWxlY3Rpb25fbm90aWZ5ICAgICAgICAgIChH
dGtXaWRnZXQgICAgICAgICAqd2lkZ2V0LAoJCQkJICAgIEdka0V2ZW50U2VsZWN0aW9uICpldmVu
dCk7CmdpbnQgZ3RrX3NlbGVjdGlvbl9wcm9wZXJ0eV9ub3RpZnkgKEd0a1dpZGdldCAgICAgICAg
ICp3aWRnZXQsCgkJCQkgICAgR2RrRXZlbnRQcm9wZXJ0eSAgKmV2ZW50KTsKR3RrU2VsZWN0aW9E
YXRhICpndGtfc2VsZWN0aW9uX2RhdGFfY29weSAoR3RrU2VsZWN0aW9uRGF0YSAqZGF0YSk7CnZv
aWQJCSBndGtfc2VsZWN0aW9uX2RhdGFfZnJlZSAoR3RrU2VsZWN0aW9uRGF0YSAqZGF0YSk7CgoK
Cgp9CgoKCgojIDMzICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2RuZC5oIiAyIDMKCgoKZXh0ZXJuICJD
IiB7CgoKdHlwZWRlZiBlbnVtIHsKICBHVEtfREVTVF9ERUZBVUxUX01PVElPTiAgICAgPSAxIDw8
IDAsICAKICBHVEtfREVTVF9ERUZBVUxUX0hJR0hMSUdIVCAgPSAxIDw8IDEsICAKICBHVEtfREVT
VF9ERUZBVUxUX0RST1AgICAgICAgPSAxIDw8IDIsICAKICBHVEtfREVTVF9ERUZBVUxUX0FMTCAg
ICAgICAgPSAweDA3Cn0gR3RrRGVzdERlZmF1bHRzOwoKIAoKdHlwZWRlZiBlbnVtIHsKICBHVEtf
VEFSR0VUX1NBTUVfQVBQID0gMSA8PCAwLCAgICAgCiAgR1RLX1RBUkdFVF9TQU1FX1dJREdFVCA9
IDEgPDwgMSAgIAp9IEd0a1RhcmdldEZsYWdzOwoKIAoKdm9pZCBndGtfZHJhZ19nZXRfZGF0YSAo
R3RrV2lkZ2V0ICAgICAgKndpZGdldCwKCQkJR2RrRHJhZ0NvbnRleHQgKmNvbnRleHQsCgkJCUdk
a0F0b20gICAgICAgICB0YXJnZXQsCgkJCWd1aW50MzIgICAgICAgICB0aW1lKTsKdm9pZCBndGtf
ZHJhZ19maW5pc2ggICAoR2RrRHJhZ0NvbnRleHQgKmNvbnRleHQsCgkJCWdib29sZWFuICAgICAg
ICBzdWNjZXNzLAoJCQlnYm9vbGVhbiAgICAgICAgZGVsLAoJCQlndWludDMyICAgICAgICAgdGlt
ZSk7CgpHdGtXaWRnZXQgKmd0a19kcmFnX2dldF9zb3VyY2Vfd2lkZ2V0IChHZGtEcmFnQ29udGV4
dCAqY29udGV4dCk7Cgp2b2lkIGd0a19kcmFnX2hpZ2hsaWdodCAgIChHdGtXaWRnZXQgICp3aWRn
ZXQpOwp2b2lkIGd0a19kcmFnX3VuaGlnaGxpZ2h0IChHdGtXaWRnZXQgICp3aWRnZXQpOwoKdm9p
ZCBndGtfZHJhZ19kZXN0X3NldCAgIChHdGtXaWRnZXQgICAgICAgICAgICAqd2lkZ2V0LAoJCQkg
IEd0a0Rlc3REZWZhdWx0cyAgICAgICBmbGFncywKICAJCSAgICAgICAgICBjb25zdCBHdGtUYXJn
ZXRFbnRyeSAqdGFyZ2V0cywKCQkJICBnaW50ICAgICAgICAgICAgICAgICAgbl90YXJnZXRzLAoJ
CQkgIEdka0RyYWdBY3Rpb24gICAgICAgICBhY3Rpb25zKTsKCnZvaWQgZ3RrX2RyYWdfZGVzdF9z
ZXRfcHJveHkgKEd0a1dpZGdldCAgICAgICp3aWRnZXQsCgkJCSAgICAgIEdka1dpbmRvdyAgICAg
ICpwcm94eV93aW5kb3csCgkJCSAgICAgIEdka0RyYWdQcm90b2NvbCBwcm90b2NvbCwKCQkJICAg
ICAgZ2Jvb2xlYW4gICAgICAgIHVzZV9jb29yZGluYXRlcyk7CgogCgoKCnZvaWQgZ3RrX2RyYWdf
ZGVzdF91bnNldCAoR3RrV2lkZ2V0ICAgICAgICAgICp3aWRnZXQpOwoKIAoKdm9pZCBndGtfZHJh
Z19zb3VyY2Vfc2V0ICAoR3RrV2lkZ2V0ICAgICAgICAgICAgKndpZGdldCwKCQkJICAgR2RrTW9k
aWZpZXJUeXBlICAgICAgIHN0YXJ0X2J1dHRvbl9tYXNrLAoJCQkgICBjb25zdCBHdGtUYXJnZXRF
bnRyeSAqdGFyZ2V0cywKCQkJICAgZ2ludCAgICAgICAgICAgICAgICAgIG5fdGFyZ2V0cywKCQkJ
ICAgR2RrRHJhZ0FjdGlvbiAgICAgICAgIGFjdGlvbnMpOwoKdm9pZCBndGtfZHJhZ19zb3VyY2Vf
dW5zZXQgKEd0a1dpZGdldCAgICAgICAgKndpZGdldCk7Cgp2b2lkIGd0a19kcmFnX3NvdXJjZV9z
ZXRfaWNvbiAoR3RrV2lkZ2V0ICAgICAqd2lkZ2V0LAoJCQkgICAgICAgR2RrQ29sb3JtYXAgICAq
Y29sb3JtYXAsCgkJCSAgICAgICBHZGtQaXhtYXAgICAgICpwaXhtYXAsCgkJCSAgICAgICBHZGtC
aXRtYXAgICAgICptYXNrKTsKCiAKCgoKR2RrRHJhZ0NvbnRleHQgKmd0a19kcmFnX2JlZ2luIChH
dGtXaWRnZXQgICAgICAgICAqd2lkZ2V0LAoJCQkJR3RrVGFyZ2V0TGlzdCAgICAgKnRhcmdldHMs
CgkJCQlHZGtEcmFnQWN0aW9uICAgICAgYWN0aW9ucywKCQkJCWdpbnQgICAgICAgICAgICAgICBi
dXR0b24sCgkJCQlHZGtFdmVudCAgICAgICAgICAqZXZlbnQpOwoKIAoKdm9pZCBndGtfZHJhZ19z
ZXRfaWNvbl93aWRnZXQgIChHZGtEcmFnQ29udGV4dCAgICAqY29udGV4dCwKCQkJCUd0a1dpZGdl
dCAgICAgICAgICp3aWRnZXQsCgkJCQlnaW50ICAgICAgICAgICAgICAgaG90X3gsCgkJCQlnaW50
ICAgICAgICAgICAgICAgaG90X3kpOwoKdm9pZCBndGtfZHJhZ19zZXRfaWNvbl9waXhtYXAgIChH
ZGtEcmFnQ29udGV4dCAgICAqY29udGV4dCwKCQkJCUdka0NvbG9ybWFwICAgICAgICpjb2xvcm1h
cCwKCQkJCUdka1BpeG1hcCAgICAgICAgICpwaXhtYXAsCgkJCQlHZGtCaXRtYXAgICAgICAgICAq
bWFzaywKCQkJCWdpbnQgICAgICAgICAgICAgICBob3RfeCwKCQkJCWdpbnQgICAgICAgICAgICAg
ICBob3RfeSk7Cgp2b2lkIGd0a19kcmFnX3NldF9pY29uX2RlZmF1bHQgKEdka0RyYWdDb250ZXh0
ICAgICpjb250ZXh0KTsKCnZvaWQgZ3RrX2RyYWdfc2V0X2RlZmF1bHRfaWNvbiAoR2RrQ29sb3Jt
YXAgICAqY29sb3JtYXAsCgkJCQlHZGtQaXhtYXAgICAgICpwaXhtYXAsCgkJCQlHZGtCaXRtYXAg
ICAgICptYXNrLAoJCQkgICAgICAgIGdpbnQgICAgICAgICAgIGhvdF94LAoJCQkgICAgICAgIGdp
bnQgICAgICAgICAgIGhvdF95KTsKCgogCnZvaWQgZ3RrX2RyYWdfc291cmNlX2hhbmRsZV9ldmVu
dCAoR3RrV2lkZ2V0ICp3aWRnZXQsCgkJCQkgICBHZGtFdmVudCAgKmV2ZW50KTsKdm9pZCBndGtf
ZHJhZ19kZXN0X2hhbmRsZV9ldmVudCAoR3RrV2lkZ2V0ICp0b3BsZXZlbCwKCQkJCSBHZGtFdmVu
dCAgKmV2ZW50KTsKCgp9CgoKCgoKCiMgNTYgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoK
CgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrZmVhdHVyZXMuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgogCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgog
IAogCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCiAKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoK
CiAKCgoKIAoKCgogCgoKCgogCgoKCgoKfQoKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL2d0ay9ndGsu
aCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrZmlsZXNlbC5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX0d0a0ZpbGVTZWxlY3Rpb24gICAgICAgR3RrRmlsZVNlbGVjdGlvbjsKdHlwZWRl
ZiBzdHJ1Y3QgX0d0a0ZpbGVTZWxlY3Rpb25DbGFzcyAgR3RrRmlsZVNlbGVjdGlvbkNsYXNzOwoK
c3RydWN0IF9HdGtGaWxlU2VsZWN0aW9uCnsKICBHdGtXaW5kb3cgd2luZG93OwoKICBHdGtXaWRn
ZXQgKmRpcl9saXN0OwogIEd0a1dpZGdldCAqZmlsZV9saXN0OwogIEd0a1dpZGdldCAqc2VsZWN0
aW9uX2VudHJ5OwogIEd0a1dpZGdldCAqc2VsZWN0aW9uX3RleHQ7CiAgR3RrV2lkZ2V0ICptYWlu
X3Zib3g7CiAgR3RrV2lkZ2V0ICpva19idXR0b247CiAgR3RrV2lkZ2V0ICpjYW5jZWxfYnV0dG9u
OwogIEd0a1dpZGdldCAqaGVscF9idXR0b247CiAgR3RrV2lkZ2V0ICpoaXN0b3J5X3B1bGxkb3du
OwogIEd0a1dpZGdldCAqaGlzdG9yeV9tZW51OwogIEdMaXN0ICAgICAqaGlzdG9yeV9saXN0Owog
IEd0a1dpZGdldCAqZmlsZW9wX2RpYWxvZzsKICBHdGtXaWRnZXQgKmZpbGVvcF9lbnRyeTsKICBn
Y2hhciAgICAgKmZpbGVvcF9maWxlOwogIGdwb2ludGVyICAgY21wbF9zdGF0ZTsKICAKICBHdGtX
aWRnZXQgKmZpbGVvcF9jX2RpcjsKICBHdGtXaWRnZXQgKmZpbGVvcF9kZWxfZmlsZTsKICBHdGtX
aWRnZXQgKmZpbGVvcF9yZW5fZmlsZTsKICAKICBHdGtXaWRnZXQgKmJ1dHRvbl9hcmVhOwogIEd0
a1dpZGdldCAqYWN0aW9uX2FyZWE7CiAgCn07CgpzdHJ1Y3QgX0d0a0ZpbGVTZWxlY3Rpb25DbGFz
cwp7CiAgR3RrV2luZG93Q2xhc3MgcGFyZW50X2NsYXNzOwp9OwoKCkd0a1R5cGUgICAgZ3RrX2Zp
bGVfc2VsZWN0aW9uX2dldF90eXBlICAgICAgICAgICAgKHZvaWQpOwpHdGtXaWRnZXQqIGd0a19m
aWxlX3NlbGVjdGlvbl9uZXcgICAgICAgICAgICAgICAgIChjb25zdCBnY2hhciAgICAgICp0aXRs
ZSk7CnZvaWQgICAgICAgZ3RrX2ZpbGVfc2VsZWN0aW9uX3NldF9maWxlbmFtZSAgICAgICAgKEd0
a0ZpbGVTZWxlY3Rpb24gKmZpbGVzZWwsCgkJCQkJCSAgIGNvbnN0IGdjaGFyICAgICAgKmZpbGVu
YW1lKTsKZ2NoYXIqICAgICBndGtfZmlsZV9zZWxlY3Rpb25fZ2V0X2ZpbGVuYW1lICAgICAgICAo
R3RrRmlsZVNlbGVjdGlvbiAqZmlsZXNlbCk7CnZvaWQJICAgZ3RrX2ZpbGVfc2VsZWN0aW9uX2Nv
bXBsZXRlCQkgIChHdGtGaWxlU2VsZWN0aW9uICpmaWxlc2VsLAoJCQkJCQkgICBjb25zdCBnY2hh
cgkgICAgKnBhdHRlcm4pOwp2b2lkICAgICAgIGd0a19maWxlX3NlbGVjdGlvbl9zaG93X2ZpbGVv
cF9idXR0b25zIChHdGtGaWxlU2VsZWN0aW9uICpmaWxlc2VsKTsKdm9pZCAgICAgICBndGtfZmls
ZV9zZWxlY3Rpb25faGlkZV9maWxlb3BfYnV0dG9ucyAoR3RrRmlsZVNlbGVjdGlvbiAqZmlsZXNl
bCk7CgoKCn0KCgoKCgoKCgoKCgoKCgojIDYzICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMK
CiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtmaXhlZC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qg
X0d0a0ZpeGVkICAgICAgICBHdGtGaXhlZDsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0ZpeGVkQ2xhc3Mg
ICBHdGtGaXhlZENsYXNzOwp0eXBlZGVmIHN0cnVjdCBfR3RrRml4ZWRDaGlsZCAgIEd0a0ZpeGVk
Q2hpbGQ7CgpzdHJ1Y3QgX0d0a0ZpeGVkCnsKICBHdGtDb250YWluZXIgY29udGFpbmVyOwoKICBH
TGlzdCAqY2hpbGRyZW47Cn07CgpzdHJ1Y3QgX0d0a0ZpeGVkQ2xhc3MKewogIEd0a0NvbnRhaW5l
ckNsYXNzIHBhcmVudF9jbGFzczsKfTsKCnN0cnVjdCBfR3RrRml4ZWRDaGlsZAp7CiAgR3RrV2lk
Z2V0ICp3aWRnZXQ7CiAgZ2ludDE2IHg7CiAgZ2ludDE2IHk7Cn07CgoKR3RrVHlwZSAgICBndGtf
Zml4ZWRfZ2V0X3R5cGUgICAgICAgICAgKHZvaWQpOwpHdGtXaWRnZXQqIGd0a19maXhlZF9uZXcg
ICAgICAgICAgICAgICAodm9pZCk7CnZvaWQgICAgICAgZ3RrX2ZpeGVkX3B1dCAgICAgICAgICAg
ICAgIChHdGtGaXhlZCAgICAgICAqZml4ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHdGtXaWRnZXQgICAgICAqd2lkZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2ludDE2ICAgICAgICAgeCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdpbnQxNiAgICAgICAgIHkpOwp2b2lkICAgICAgIGd0a19maXhl
ZF9tb3ZlICAgICAgICAgICAgICAoR3RrRml4ZWQgICAgICAgKmZpeGVkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrV2lkZ2V0ICAgICAgKndpZGdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQxNiAgICAgICAgIHgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50MTYgICAgICAgICB5KTsKCgp9
CgoKCgojIDY0ICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRl
L2d0ay9ndGtmb250c2VsLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtub3RlYm9vay5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKCgp0eXBlZGVm
IHN0cnVjdCBfR3RrTm90ZWJvb2sgICAgICAgR3RrTm90ZWJvb2s7CnR5cGVkZWYgc3RydWN0IF9H
dGtOb3RlYm9va0NsYXNzICBHdGtOb3RlYm9va0NsYXNzOwp0eXBlZGVmIHN0cnVjdCBfR3RrTm90
ZWJvb2tQYWdlICAgR3RrTm90ZWJvb2tQYWdlOwoKc3RydWN0IF9HdGtOb3RlYm9vawp7CiAgR3Rr
Q29udGFpbmVyIGNvbnRhaW5lcjsKICAKICBHdGtOb3RlYm9va1BhZ2UgKmN1cl9wYWdlOwogIEdM
aXN0ICpjaGlsZHJlbjsKICBHTGlzdCAqZmlyc3RfdGFiOwogIEdMaXN0ICpmb2N1c190YWI7CiAg
CiAgR3RrV2lkZ2V0ICptZW51OwogIEdka1dpbmRvdyAqcGFuZWw7CiAgCiAgZ3VpbnQzMiB0aW1l
cjsKICAKICBndWludDE2IHRhYl9oYm9yZGVyOwogIGd1aW50MTYgdGFiX3Zib3JkZXI7CiAgCiAg
Z3VpbnQgc2hvd190YWJzICAgICAgICAgIDogMTsKICBndWludCBob21vZ2VuZW91cyAgICAgICAg
OiAxOwogIGd1aW50IHNob3dfYm9yZGVyICAgICAgICA6IDE7CiAgZ3VpbnQgdGFiX3BvcyAgICAg
ICAgICAgIDogMjsKICBndWludCBzY3JvbGxhYmxlICAgICAgICAgOiAxOwogIGd1aW50IGluX2No
aWxkICAgICAgICAgICA6IDI7CiAgZ3VpbnQgY2xpY2tfY2hpbGQgICAgICAgIDogMjsKICBndWlu
dCBidXR0b24gICAgICAgICAgICAgOiAyOwogIGd1aW50IG5lZWRfdGltZXIgICAgICAgICA6IDE7
CiAgZ3VpbnQgY2hpbGRfaGFzX2ZvY3VzICAgIDogMTsKICBndWludCBoYXZlX3Zpc2libGVfY2hp
bGQgOiAxOwp9OwoKc3RydWN0IF9HdGtOb3RlYm9va0NsYXNzCnsKICBHdGtDb250YWluZXJDbGFz
cyBwYXJlbnRfY2xhc3M7CiAgCiAgdm9pZCAoKiBzd2l0Y2hfcGFnZSkgICAgICAgKEd0a05vdGVi
b29rICAgICAqbm90ZWJvb2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0a05vdGVi
b29rUGFnZSAqcGFnZSwKCQkJICAgICAgZ3VpbnQgICAgICAgICAgICBwYWdlX251bSk7Cn07Cgpz
dHJ1Y3QgX0d0a05vdGVib29rUGFnZQp7CiAgR3RrV2lkZ2V0ICpjaGlsZDsKICBHdGtXaWRnZXQg
KnRhYl9sYWJlbDsKICBHdGtXaWRnZXQgKm1lbnVfbGFiZWw7CgogIGd1aW50IGRlZmF1bHRfbWVu
dSA6IDE7CiAgZ3VpbnQgZGVmYXVsdF90YWIgIDogMTsKICBndWludCBleHBhbmQgICAgICAgOiAx
OwogIGd1aW50IGZpbGwgICAgICAgICA6IDE7CiAgZ3VpbnQgcGFjayAgICAgICAgIDogMTsKCiAg
R3RrUmVxdWlzaXRpb24gcmVxdWlzaXRpb247CiAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uOwp9
OwoKIAoKCgpHdGtUeXBlIGd0a19ub3RlYm9va19nZXRfdHlwZSAgICAgICAodm9pZCk7Ckd0a1dp
ZGdldCAqIGd0a19ub3RlYm9va19uZXcgICAgICAgICh2b2lkKTsKdm9pZCBndGtfbm90ZWJvb2tf
YXBwZW5kX3BhZ2UgICAgICAgKEd0a05vdGVib29rICpub3RlYm9vaywKCQkJCSAgICAgR3RrV2lk
Z2V0ICAgKmNoaWxkLAoJCQkJICAgICBHdGtXaWRnZXQgICAqdGFiX2xhYmVsKTsKdm9pZCBndGtf
bm90ZWJvb2tfYXBwZW5kX3BhZ2VfbWVudSAgKEd0a05vdGVib29rICpub3RlYm9vaywKCQkJCSAg
ICAgR3RrV2lkZ2V0ICAgKmNoaWxkLAoJCQkJICAgICBHdGtXaWRnZXQgICAqdGFiX2xhYmVsLAoJ
CQkJICAgICBHdGtXaWRnZXQgICAqbWVudV9sYWJlbCk7CnZvaWQgZ3RrX25vdGVib29rX3ByZXBl
bmRfcGFnZSAgICAgIChHdGtOb3RlYm9vayAqbm90ZWJvb2ssCgkJCQkgICAgIEd0a1dpZGdldCAg
ICpjaGlsZCwKCQkJCSAgICAgR3RrV2lkZ2V0ICAgKnRhYl9sYWJlbCk7CnZvaWQgZ3RrX25vdGVi
b29rX3ByZXBlbmRfcGFnZV9tZW51IChHdGtOb3RlYm9vayAqbm90ZWJvb2ssCgkJCQkgICAgIEd0
a1dpZGdldCAgICpjaGlsZCwKCQkJCSAgICAgR3RrV2lkZ2V0ICAgKnRhYl9sYWJlbCwKCQkJCSAg
ICAgR3RrV2lkZ2V0ICAgKm1lbnVfbGFiZWwpOwp2b2lkIGd0a19ub3RlYm9va19pbnNlcnRfcGFn
ZSAgICAgICAoR3RrTm90ZWJvb2sgKm5vdGVib29rLAoJCQkJICAgICBHdGtXaWRnZXQgICAqY2hp
bGQsCgkJCQkgICAgIEd0a1dpZGdldCAgICp0YWJfbGFiZWwsCgkJCQkgICAgIGdpbnQgICAgICAg
ICBwb3NpdGlvbik7CnZvaWQgZ3RrX25vdGVib29rX2luc2VydF9wYWdlX21lbnUgIChHdGtOb3Rl
Ym9vayAqbm90ZWJvb2ssCgkJCQkgICAgIEd0a1dpZGdldCAgICpjaGlsZCwKCQkJCSAgICAgR3Rr
V2lkZ2V0ICAgKnRhYl9sYWJlbCwKCQkJCSAgICAgR3RrV2lkZ2V0ICAgKm1lbnVfbGFiZWwsCgkJ
CQkgICAgIGdpbnQgICAgICAgICBwb3NpdGlvbik7CnZvaWQgZ3RrX25vdGVib29rX3JlbW92ZV9w
YWdlICAgICAgIChHdGtOb3RlYm9vayAqbm90ZWJvb2ssCgkJCQkgICAgIGdpbnQgICAgICAgICBw
YWdlX251bSk7CgogCgoKCmdpbnQgZ3RrX25vdGVib29rX2dldF9jdXJyZW50X3BhZ2UgICAoR3Rr
Tm90ZWJvb2sgKm5vdGVib29rKTsKR3RrV2lkZ2V0KiBndGtfbm90ZWJvb2tfZ2V0X250aF9wYWdl
IChHdGtOb3RlYm9vayAqbm90ZWJvb2ssCgkJCQkgICAgICBnaW50ICAgICAgICAgcGFnZV9udW0p
OwpnaW50IGd0a19ub3RlYm9va19wYWdlX251bSAgICAgICAgIChHdGtOb3RlYm9vayAqbm90ZWJv
b2ssCgkJCQkgICAgR3RrV2lkZ2V0ICAgKmNoaWxkKTsKdm9pZCBndGtfbm90ZWJvb2tfc2V0X3Bh
Z2UgICAgICAgICAoR3RrTm90ZWJvb2sgKm5vdGVib29rLAoJCQkJICAgIGdpbnQgICAgICAgICBw
YWdlX251bSk7CnZvaWQgZ3RrX25vdGVib29rX25leHRfcGFnZSAgICAgICAgKEd0a05vdGVib29r
ICpub3RlYm9vayk7CnZvaWQgZ3RrX25vdGVib29rX3ByZXZfcGFnZSAgICAgICAgKEd0a05vdGVi
b29rICpub3RlYm9vayk7CgogCgoKCnZvaWQgZ3RrX25vdGVib29rX3NldF9zaG93X2JvcmRlciAg
ICAgIChHdGtOb3RlYm9vayAgICAgKm5vdGVib29rLAoJCQkJCWdib29sZWFuICAgICAgICAgc2hv
d19ib3JkZXIpOwp2b2lkIGd0a19ub3RlYm9va19zZXRfc2hvd190YWJzICAgICAgICAoR3RrTm90
ZWJvb2sgICAgICpub3RlYm9vaywKCQkJCQlnYm9vbGVhbiAgICAgICAgIHNob3dfdGFicyk7CnZv
aWQgZ3RrX25vdGVib29rX3NldF90YWJfcG9zICAgICAgICAgIChHdGtOb3RlYm9vayAgICAgKm5v
dGVib29rLAoJCQkJICAgICAgICBHdGtQb3NpdGlvblR5cGUgIHBvcyk7CnZvaWQgZ3RrX25vdGVi
b29rX3NldF9ob21vZ2VuZW91c190YWJzIChHdGtOb3RlYm9vayAgICAgKm5vdGVib29rLAoJCQkJ
CWdib29sZWFuICAgICAgICAgaG9tb2dlbmVvdXMpOwp2b2lkIGd0a19ub3RlYm9va19zZXRfdGFi
X2JvcmRlciAgICAgICAoR3RrTm90ZWJvb2sgICAgICpub3RlYm9vaywKCQkJCQlndWludCAgICAg
ICAgICAgIGJvcmRlcl93aWR0aCk7CnZvaWQgZ3RrX25vdGVib29rX3NldF90YWJfaGJvcmRlciAg
ICAgIChHdGtOb3RlYm9vayAgICAgKm5vdGVib29rLAoJCQkJCWd1aW50ICAgICAgICAgICAgdGFi
X2hib3JkZXIpOwp2b2lkIGd0a19ub3RlYm9va19zZXRfdGFiX3Zib3JkZXIgICAgICAoR3RrTm90
ZWJvb2sgICAgICpub3RlYm9vaywKCQkJCQlndWludCAgICAgICAgICAgIHRhYl92Ym9yZGVyKTsK
dm9pZCBndGtfbm90ZWJvb2tfc2V0X3Njcm9sbGFibGUgICAgICAgKEd0a05vdGVib29rICAgICAq
bm90ZWJvb2ssCgkJCQkJZ2Jvb2xlYW4gICAgICAgICBzY3JvbGxhYmxlKTsKCiAKCgoKdm9pZCBn
dGtfbm90ZWJvb2tfcG9wdXBfZW5hYmxlICAoR3RrTm90ZWJvb2sgKm5vdGVib29rKTsKdm9pZCBn
dGtfbm90ZWJvb2tfcG9wdXBfZGlzYWJsZSAoR3RrTm90ZWJvb2sgKm5vdGVib29rKTsKCiAKCgoK
R3RrV2lkZ2V0ICogZ3RrX25vdGVib29rX2dldF90YWJfbGFiZWwgICAgKEd0a05vdGVib29rICpu
b3RlYm9vaywKCQkJCQkgICBHdGtXaWRnZXQgICAqY2hpbGQpOwp2b2lkIGd0a19ub3RlYm9va19z
ZXRfdGFiX2xhYmVsICAgICAgICAgICAoR3RrTm90ZWJvb2sgKm5vdGVib29rLAoJCQkJCSAgIEd0
a1dpZGdldCAgICpjaGlsZCwKCQkJCQkgICBHdGtXaWRnZXQgICAqdGFiX2xhYmVsKTsKdm9pZCBn
dGtfbm90ZWJvb2tfc2V0X3RhYl9sYWJlbF90ZXh0ICAgICAgKEd0a05vdGVib29rICpub3RlYm9v
aywKCQkJCQkgICBHdGtXaWRnZXQgICAqY2hpbGQsCgkJCQkJICAgY29uc3QgZ2NoYXIgKnRhYl90
ZXh0KTsKR3RrV2lkZ2V0ICogZ3RrX25vdGVib29rX2dldF9tZW51X2xhYmVsICAgKEd0a05vdGVi
b29rICpub3RlYm9vaywKCQkJCQkgICBHdGtXaWRnZXQgICAqY2hpbGQpOwp2b2lkIGd0a19ub3Rl
Ym9va19zZXRfbWVudV9sYWJlbCAgICAgICAgICAoR3RrTm90ZWJvb2sgKm5vdGVib29rLAoJCQkJ
CSAgIEd0a1dpZGdldCAgICpjaGlsZCwKCQkJCQkgICBHdGtXaWRnZXQgICAqbWVudV9sYWJlbCk7
CnZvaWQgZ3RrX25vdGVib29rX3NldF9tZW51X2xhYmVsX3RleHQgICAgIChHdGtOb3RlYm9vayAq
bm90ZWJvb2ssCgkJCQkJICAgR3RrV2lkZ2V0ICAgKmNoaWxkLAoJCQkJCSAgIGNvbnN0IGdjaGFy
ICptZW51X3RleHQpOwp2b2lkIGd0a19ub3RlYm9va19xdWVyeV90YWJfbGFiZWxfcGFja2luZyAo
R3RrTm90ZWJvb2sgKm5vdGVib29rLAoJCQkJCSAgIEd0a1dpZGdldCAgICpjaGlsZCwKCQkJCQkg
ICBnYm9vbGVhbiAgICAqZXhwYW5kLAoJCQkJCSAgIGdib29sZWFuICAgICpmaWxsLAoJCQkJCSAg
IEd0a1BhY2tUeXBlICpwYWNrX3R5cGUpOwp2b2lkIGd0a19ub3RlYm9va19zZXRfdGFiX2xhYmVs
X3BhY2tpbmcgICAoR3RrTm90ZWJvb2sgKm5vdGVib29rLAoJCQkJCSAgIEd0a1dpZGdldCAgICpj
aGlsZCwKCQkJCQkgICBnYm9vbGVhbiAgICAgZXhwYW5kLAoJCQkJCSAgIGdib29sZWFuICAgICBm
aWxsLAoJCQkJCSAgIEd0a1BhY2tUeXBlICBwYWNrX3R5cGUpOwp2b2lkIGd0a19ub3RlYm9va19y
ZW9yZGVyX2NoaWxkICAgICAgICAgICAoR3RrTm90ZWJvb2sgKm5vdGVib29rLAoJCQkJCSAgIEd0
a1dpZGdldCAgICpjaGlsZCwKCQkJCQkgICBnaW50ICAgICAgICAgcG9zaXRpb24pOwoKCn0KCgoK
CiMgMzcgIi91c3IvaW5jbHVkZS9ndGsvZ3RrZm9udHNlbC5oIiAyIDMKCgoKCmV4dGVybiAiQyIg
ewoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtGb250U2VsZWN0aW9uCSAgICAgR3Rr
Rm9udFNlbGVjdGlvbjsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0ZvbnRTZWxlY3Rpb25DbGFzcwkgICAg
IEd0a0ZvbnRTZWxlY3Rpb25DbGFzczsKCnR5cGVkZWYgc3RydWN0IF9HdGtGb250U2VsZWN0aW9u
RGlhbG9nCSAgICAgR3RrRm9udFNlbGVjdGlvbkRpYWxvZzsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0Zv
bnRTZWxlY3Rpb25EaWFsb2dDbGFzcyAgR3RrRm9udFNlbGVjdGlvbkRpYWxvZ0NsYXNzOwoKCgoK
IAoKCgogCgoKCgoKIAp0eXBlZGVmIGVudW0KewogIEdUS19GT05UX01FVFJJQ19QSVhFTFMsCiAg
R1RLX0ZPTlRfTUVUUklDX1BPSU5UUwp9IEd0a0ZvbnRNZXRyaWNUeXBlOwoKIAoKdHlwZWRlZiBl
bnVtCnsKICBHVEtfRk9OVF9CSVRNQVAJCT0gMSA8PCAwLAogIEdUS19GT05UX1NDQUxBQkxFCQk9
IDEgPDwgMSwKICBHVEtfRk9OVF9TQ0FMQUJMRV9CSVRNQVAJPSAxIDw8IDIsCgogIEdUS19GT05U
X0FMTAkJCT0gMHgwNwp9IEd0a0ZvbnRUeXBlOwoKIAoKCnR5cGVkZWYgZW51bQp7CiAgR1RLX0ZP
TlRfRklMVEVSX0JBU0UsCiAgR1RLX0ZPTlRfRklMVEVSX1VTRVIKfSBHdGtGb250RmlsdGVyVHlw
ZTsKCiAKCgp0eXBlZGVmIHN0cnVjdCBfR3RrRm9udEZpbHRlcglHdGtGb250RmlsdGVyOwpzdHJ1
Y3QgX0d0a0ZvbnRGaWx0ZXIKewogIGdpbnQgZm9udF90eXBlOwogIGd1aW50MTYgKnByb3BlcnR5
X2ZpbHRlcnNbNiBdOwogIGd1aW50MTYgcHJvcGVydHlfbmZpbHRlcnNbNiBdOwp9OwoKCnN0cnVj
dCBfR3RrRm9udFNlbGVjdGlvbgp7CiAgR3RrTm90ZWJvb2sgbm90ZWJvb2s7CiAgCiAgIAogIEd0
a1dpZGdldCAqbWFpbl92Ym94OwogIEd0a1dpZGdldCAqZm9udF9sYWJlbDsKICBHdGtXaWRnZXQg
KmZvbnRfZW50cnk7CiAgR3RrV2lkZ2V0ICpmb250X2NsaXN0OwogIEd0a1dpZGdldCAqZm9udF9z
dHlsZV9lbnRyeTsKICBHdGtXaWRnZXQgKmZvbnRfc3R5bGVfY2xpc3Q7CiAgR3RrV2lkZ2V0ICpz
aXplX2VudHJ5OwogIEd0a1dpZGdldCAqc2l6ZV9jbGlzdDsKICBHdGtXaWRnZXQgKnBpeGVsc19i
dXR0b247CiAgR3RrV2lkZ2V0ICpwb2ludHNfYnV0dG9uOwogIEd0a1dpZGdldCAqZmlsdGVyX2J1
dHRvbjsKICBHdGtXaWRnZXQgKnByZXZpZXdfZW50cnk7CiAgR3RrV2lkZ2V0ICptZXNzYWdlX2xh
YmVsOwogIAogICAKICBHdGtXaWRnZXQgKmluZm9fdmJveDsKICBHdGtXaWRnZXQgKmluZm9fY2xp
c3Q7CiAgR3RrV2lkZ2V0ICpyZXF1ZXN0ZWRfZm9udF9uYW1lOwogIEd0a1dpZGdldCAqYWN0dWFs
X2ZvbnRfbmFtZTsKICAKICAgCiAgR3RrV2lkZ2V0ICpmaWx0ZXJfdmJveDsKICBHdGtXaWRnZXQg
KnR5cGVfYml0bWFwc19idXR0b247CiAgR3RrV2lkZ2V0ICp0eXBlX3NjYWxhYmxlX2J1dHRvbjsK
ICBHdGtXaWRnZXQgKnR5cGVfc2NhbGVkX2JpdG1hcHNfYnV0dG9uOwogIEd0a1dpZGdldCAqZmls
dGVyX2NsaXN0c1s2IF07CiAgCiAgR2RrRm9udCAqZm9udDsKICBnaW50IGZvbnRfaW5kZXg7CiAg
Z2ludCBzdHlsZTsKICBHdGtGb250TWV0cmljVHlwZSBtZXRyaWM7CiAgIAogIGdpbnQgc2l6ZTsK
ICAKICAgCgogIGdpbnQgc2VsZWN0ZWRfc2l6ZTsKICAKICAgCgogIGd1aW50MTYgcHJvcGVydHlf
dmFsdWVzWzUgXTsKICAKICAgCiAgR3RrRm9udEZpbHRlciBmaWx0ZXJzWzIgXTsKfTsKCgpzdHJ1
Y3QgX0d0a0ZvbnRTZWxlY3Rpb25DbGFzcwp7CiAgR3RrTm90ZWJvb2tDbGFzcyBwYXJlbnRfY2xh
c3M7Cn07CgoKc3RydWN0IF9HdGtGb250U2VsZWN0aW9uRGlhbG9nCnsKICBHdGtXaW5kb3cgd2lu
ZG93OwogIAogIEd0a1dpZGdldCAqZm9udHNlbDsKICAKICBHdGtXaWRnZXQgKm1haW5fdmJveDsK
ICBHdGtXaWRnZXQgKmFjdGlvbl9hcmVhOwogIEd0a1dpZGdldCAqb2tfYnV0dG9uOwogICAKICBH
dGtXaWRnZXQgKmFwcGx5X2J1dHRvbjsKICBHdGtXaWRnZXQgKmNhbmNlbF9idXR0b247CiAgCiAg
IAogIGdpbnQgZGlhbG9nX3dpZHRoOwogIGdib29sZWFuIGF1dG9fcmVzaXplOwp9OwoKc3RydWN0
IF9HdGtGb250U2VsZWN0aW9uRGlhbG9nQ2xhc3MKewogIEd0a1dpbmRvd0NsYXNzIHBhcmVudF9j
bGFzczsKfTsKCgoKIAoKCgoKR3RrVHlwZQkgICBndGtfZm9udF9zZWxlY3Rpb25fZ2V0X3R5cGUJ
CSh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfZm9udF9zZWxlY3Rpb25fbmV3CQkodm9pZCk7CmdjaGFy
KgkgICBndGtfZm9udF9zZWxlY3Rpb25fZ2V0X2ZvbnRfbmFtZQkoR3RrRm9udFNlbGVjdGlvbiAq
Zm9udHNlbCk7Ckdka0ZvbnQqICAgZ3RrX2ZvbnRfc2VsZWN0aW9uX2dldF9mb250CQkoR3RrRm9u
dFNlbGVjdGlvbiAqZm9udHNlbCk7Cmdib29sZWFuICAgZ3RrX2ZvbnRfc2VsZWN0aW9uX3NldF9m
b250X25hbWUJKEd0a0ZvbnRTZWxlY3Rpb24gKmZvbnRzZWwsCgkJCQkJCSBjb25zdCBnY2hhcgkg
ICpmb250bmFtZSk7CnZvaWQJICAgZ3RrX2ZvbnRfc2VsZWN0aW9uX3NldF9maWx0ZXIJKEd0a0Zv
bnRTZWxlY3Rpb24gKmZvbnRzZWwsCgkJCQkJCSBHdGtGb250RmlsdGVyVHlwZSBmaWx0ZXJfdHlw
ZSwKCQkJCQkJIEd0a0ZvbnRUeXBlCSAgIGZvbnRfdHlwZSwKCQkJCQkJIGdjaGFyCQkgKipmb3Vu
ZHJpZXMsCgkJCQkJCSBnY2hhcgkJICoqd2VpZ2h0cywKCQkJCQkJIGdjaGFyCQkgKipzbGFudHMs
CgkJCQkJCSBnY2hhcgkJICoqc2V0d2lkdGhzLAoJCQkJCQkgZ2NoYXIJCSAqKnNwYWNpbmdzLAoJ
CQkJCQkgZ2NoYXIJCSAqKmNoYXJzZXRzKTsKZ2NoYXIqCSAgIGd0a19mb250X3NlbGVjdGlvbl9n
ZXRfcHJldmlld190ZXh0CShHdGtGb250U2VsZWN0aW9uICpmb250c2VsKTsKdm9pZAkgICBndGtf
Zm9udF9zZWxlY3Rpb25fc2V0X3ByZXZpZXdfdGV4dAkoR3RrRm9udFNlbGVjdGlvbiAqZm9udHNl
bCwKCQkJCQkJIGNvbnN0IGdjaGFyCSAgKnRleHQpOwoKCgogCgoKCgoKR3RrVHlwZQkgICBndGtf
Zm9udF9zZWxlY3Rpb25fZGlhbG9nX2dldF90eXBlCSh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfZm9u
dF9zZWxlY3Rpb25fZGlhbG9nX25ldwkoY29uc3QgZ2NoYXIJICAqdGl0bGUpOwoKIAoKCgoKZ2No
YXIqCSBndGtfZm9udF9zZWxlY3Rpb25fZGlhbG9nX2dldF9mb250X25hbWUgICAgKEd0a0ZvbnRT
ZWxlY3Rpb25EaWFsb2cgKmZzZCk7CgogCgoKR2RrRm9udCogZ3RrX2ZvbnRfc2VsZWN0aW9uX2Rp
YWxvZ19nZXRfZm9udAkgICAgKEd0a0ZvbnRTZWxlY3Rpb25EaWFsb2cgKmZzZCk7CgogCgoKCmdi
b29sZWFuIGd0a19mb250X3NlbGVjdGlvbl9kaWFsb2dfc2V0X2ZvbnRfbmFtZSAgICAoR3RrRm9u
dFNlbGVjdGlvbkRpYWxvZyAqZnNkLAoJCQkJCQkgICAgIGNvbnN0IGdjaGFyCSpmb250bmFtZSk7
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnZvaWQJICAgZ3RrX2ZvbnRfc2VsZWN0aW9uX2RpYWxv
Z19zZXRfZmlsdGVyCShHdGtGb250U2VsZWN0aW9uRGlhbG9nICpmc2QsCgkJCQkJCSBHdGtGb250
RmlsdGVyVHlwZSBmaWx0ZXJfdHlwZSwKCQkJCQkJIEd0a0ZvbnRUeXBlCSAgIGZvbnRfdHlwZSwK
CQkJCQkJIGdjaGFyCQkgKipmb3VuZHJpZXMsCgkJCQkJCSBnY2hhcgkJICoqd2VpZ2h0cywKCQkJ
CQkJIGdjaGFyCQkgKipzbGFudHMsCgkJCQkJCSBnY2hhcgkJICoqc2V0d2lkdGhzLAoJCQkJCQkg
Z2NoYXIJCSAqKnNwYWNpbmdzLAoJCQkJCQkgZ2NoYXIJCSAqKmNoYXJzZXRzKTsKCiAKCmdjaGFy
KgkgZ3RrX2ZvbnRfc2VsZWN0aW9uX2RpYWxvZ19nZXRfcHJldmlld190ZXh0IChHdGtGb250U2Vs
ZWN0aW9uRGlhbG9nICpmc2QpOwoKIAoKdm9pZAkgZ3RrX2ZvbnRfc2VsZWN0aW9uX2RpYWxvZ19z
ZXRfcHJldmlld190ZXh0IChHdGtGb250U2VsZWN0aW9uRGlhbG9nICpmc2QsCgkJCQkJCSAgICAg
Y29uc3QgZ2NoYXIJICAgICp0ZXh0KTsKCgoKfQoKCgoKIyA2NSAiL3Vzci9pbmNsdWRlL2d0ay9n
dGsuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2dhbW1hLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgX0d0a0dhbW1hQ3VydmUJCUd0a0dhbW1hQ3VydmU7CnR5cGVkZWYgc3RydWN0
IF9HdGtHYW1tYUN1cnZlQ2xhc3MJR3RrR2FtbWFDdXJ2ZUNsYXNzOwoKCnN0cnVjdCBfR3RrR2Ft
bWFDdXJ2ZQp7CiAgR3RrVkJveCB2Ym94OwoKICBHdGtXaWRnZXQgKnRhYmxlOwogIEd0a1dpZGdl
dCAqY3VydmU7CiAgR3RrV2lkZ2V0ICpidXR0b25bNV07CSAKCiAgZ2Zsb2F0IGdhbW1hOwogIEd0
a1dpZGdldCAqZ2FtbWFfZGlhbG9nOwogIEd0a1dpZGdldCAqZ2FtbWFfdGV4dDsKfTsKCnN0cnVj
dCBfR3RrR2FtbWFDdXJ2ZUNsYXNzCnsKICBHdGtWQm94Q2xhc3MgcGFyZW50X2NsYXNzOwp9OwoK
Cmd1aW50ICAgICAgZ3RrX2dhbW1hX2N1cnZlX2dldF90eXBlICh2b2lkKTsKR3RrV2lkZ2V0KiBn
dGtfZ2FtbWFfY3VydmVfbmV3ICAgICAgKHZvaWQpOwoKCgp9CgoKCgojIDY3ICIvdXNyL2luY2x1
ZGUvZ3RrL2d0ay5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtnYy5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCkdka0dDKiBn
dGtfZ2NfZ2V0ICAgICAoZ2ludCAgICAgICAgICAgICBkZXB0aCwKCQkgICAgICAgR2RrQ29sb3Jt
YXAgICAgICpjb2xvcm1hcCwKCQkgICAgICAgR2RrR0NWYWx1ZXMgICAgICp2YWx1ZXMsCgkJICAg
ICAgIEdka0dDVmFsdWVzTWFzayAgdmFsdWVzX21hc2spOwp2b2lkICAgZ3RrX2djX3JlbGVhc2Ug
KEdka0dDICAgICAgICAgICAqZ2MpOwoKCgp9CgoKCgojIDY4ICIvdXNyL2luY2x1ZGUvZ3RrL2d0
ay5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtoYW5kbGVib3guaCIgMSAzCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoK
CgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrSGFuZGxlQm94ICAgICAgIEd0a0hhbmRsZUJveDsKdHlw
ZWRlZiBzdHJ1Y3QgX0d0a0hhbmRsZUJveENsYXNzICBHdGtIYW5kbGVCb3hDbGFzczsKCnN0cnVj
dCBfR3RrSGFuZGxlQm94CnsKICBHdGtCaW4gYmluOwoKICBHZGtXaW5kb3cgICAgICAqYmluX3dp
bmRvdzsJIAogIEdka1dpbmRvdyAgICAgICpmbG9hdF93aW5kb3c7CiAgR3RrU2hhZG93VHlwZSAg
IHNoYWRvd190eXBlOwogIGd1aW50CQkgIGhhbmRsZV9wb3NpdGlvbiA6IDI7CiAgZ3VpbnQJCSAg
ZmxvYXRfd2luZG93X21hcHBlZCA6IDE7CiAgZ3VpbnQJCSAgY2hpbGRfZGV0YWNoZWQgOiAxOwog
IGd1aW50CQkgIGluX2RyYWcgOiAxOwogIGd1aW50CQkgIHNocmlua19vbl9kZXRhY2ggOiAxOwoK
ICBnaW50ICAgICAgICAgICAgc25hcF9lZGdlIDogMzsgIAogIAogICAKCiAgZ2ludCBkZXNrb2Zm
X3gsIGRlc2tvZmZfeTsgIAoKICBHdGtBbGxvY2F0aW9uICAgYXR0YWNoX2FsbG9jYXRpb247CiAg
R3RrQWxsb2NhdGlvbiAgIGZsb2F0X2FsbG9jYXRpb247Cn07CgpzdHJ1Y3QgX0d0a0hhbmRsZUJv
eENsYXNzCnsKICBHdGtCaW5DbGFzcyBwYXJlbnRfY2xhc3M7CgogIHZvaWQJKCpjaGlsZF9hdHRh
Y2hlZCkJKEd0a0hhbmRsZUJveAkqaGFuZGxlX2JveCwKCQkJCSBHdGtXaWRnZXQJKmNoaWxkKTsK
ICB2b2lkCSgqY2hpbGRfZGV0YWNoZWQpCShHdGtIYW5kbGVCb3gJKmhhbmRsZV9ib3gsCgkJCQkg
R3RrV2lkZ2V0CSpjaGlsZCk7Cn07CgoKR3RrVHlwZSAgICAgZ3RrX2hhbmRsZV9ib3hfZ2V0X3R5
cGUgICAgICAgICAgICAgKHZvaWQpOwpHdGtXaWRnZXQqICBndGtfaGFuZGxlX2JveF9uZXcgICAg
ICAgICAgICAgICAgICAodm9pZCk7CnZvaWQgICAgICAgIGd0a19oYW5kbGVfYm94X3NldF9zaGFk
b3dfdHlwZSAgICAgIChHdGtIYW5kbGVCb3ggICAgKmhhbmRsZV9ib3gsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtTaGFkb3dUeXBlICAgIHR5cGUp
Owp2b2lkICAgICAgICBndGtfaGFuZGxlX2JveF9zZXRfaGFuZGxlX3Bvc2l0aW9uICAoR3RrSGFu
ZGxlQm94ICAgICpoYW5kbGVfYm94LAoJCQkJCSAgICAgICAgIEd0a1Bvc2l0aW9uVHlwZSAgcG9z
aXRpb24pOwp2b2lkICAgICAgICBndGtfaGFuZGxlX2JveF9zZXRfc25hcF9lZGdlICAgICAgICAo
R3RrSGFuZGxlQm94ICAgICpoYW5kbGVfYm94LAoJCQkJCQkgR3RrUG9zaXRpb25UeXBlICBlZGdl
KTsKCgoKCn0KCgoKIyA2OSAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKIyAxICIvdXNy
L2luY2x1ZGUvZ3RrL2d0a2hiYm94LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrSEJ1dHRvbkJv
eCAgICAgICBHdGtIQnV0dG9uQm94Owp0eXBlZGVmIHN0cnVjdCBfR3RrSEJ1dHRvbkJveENsYXNz
ICBHdGtIQnV0dG9uQm94Q2xhc3M7CgpzdHJ1Y3QgX0d0a0hCdXR0b25Cb3gKewogIEd0a0J1dHRv
bkJveCBidXR0b25fYm94Owp9OwoKc3RydWN0IF9HdGtIQnV0dG9uQm94Q2xhc3MKewogIEd0a0J1
dHRvbkJveENsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpndWludCAgICAgIGd0a19oYnV0dG9uX2Jv
eF9nZXRfdHlwZSAodm9pZCk7Ckd0a1dpZGdldCAqZ3RrX2hidXR0b25fYm94X25ldyAgICAgICh2
b2lkKTsKCiAKCmdpbnQgZ3RrX2hidXR0b25fYm94X2dldF9zcGFjaW5nX2RlZmF1bHQgKHZvaWQp
OwpHdGtCdXR0b25Cb3hTdHlsZSBndGtfaGJ1dHRvbl9ib3hfZ2V0X2xheW91dF9kZWZhdWx0ICh2
b2lkKTsKCnZvaWQgZ3RrX2hidXR0b25fYm94X3NldF9zcGFjaW5nX2RlZmF1bHQgKGdpbnQgc3Bh
Y2luZyk7CnZvaWQgZ3RrX2hidXR0b25fYm94X3NldF9sYXlvdXRfZGVmYXVsdCAoR3RrQnV0dG9u
Qm94U3R5bGUgbGF5b3V0KTsKCgoKfQoKCgoKIyA3MSAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIg
MiAzCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RraHBhbmVkLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrcGFuZWQuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoK
CgoKCnR5cGVkZWYgc3RydWN0IF9HdGtQYW5lZCAgICAgICBHdGtQYW5lZDsKdHlwZWRlZiBzdHJ1
Y3QgX0d0a1BhbmVkQ2xhc3MgIEd0a1BhbmVkQ2xhc3M7CgpzdHJ1Y3QgX0d0a1BhbmVkCnsKICBH
dGtDb250YWluZXIgY29udGFpbmVyOwogIAogIEd0a1dpZGdldCAqY2hpbGQxOwogIEd0a1dpZGdl
dCAqY2hpbGQyOwogIAogIEdka1dpbmRvdyAqaGFuZGxlOwogIEdka1JlY3RhbmdsZSBncm9vdmVf
cmVjdGFuZ2xlOwogIEdka0dDICp4b3JfZ2M7CgogICAKICBndWludDE2IGhhbmRsZV9zaXplOwog
IGd1aW50MTYgZ3V0dGVyX3NpemU7CgogICAKICBnaW50IGNoaWxkMV9zaXplOwogIGdpbnQgbGFz
dF9hbGxvY2F0aW9uOwogIGdpbnQgbWluX3Bvc2l0aW9uOwogIGdpbnQgbWF4X3Bvc2l0aW9uOwog
IAogIGd1aW50IHBvc2l0aW9uX3NldCA6IDE7CiAgZ3VpbnQgaW5fZHJhZyA6IDE7CiAgZ3VpbnQg
Y2hpbGQxX3NocmluayA6IDE7CiAgZ3VpbnQgY2hpbGQxX3Jlc2l6ZSA6IDE7CiAgZ3VpbnQgY2hp
bGQyX3NocmluayA6IDE7CiAgZ3VpbnQgY2hpbGQyX3Jlc2l6ZSA6IDE7CiAgCiAgZ2ludDE2IGhh
bmRsZV94cG9zOwogIGdpbnQxNiBoYW5kbGVfeXBvczsKfTsKCnN0cnVjdCBfR3RrUGFuZWRDbGFz
cwp7CiAgR3RrQ29udGFpbmVyQ2xhc3MgcGFyZW50X2NsYXNzOwp9OwoKCkd0a1R5cGUgZ3RrX3Bh
bmVkX2dldF90eXBlICAgICAgICAodm9pZCk7CnZvaWQgICAgZ3RrX3BhbmVkX2FkZDEgICAgICAg
ICAgICAoR3RrUGFuZWQgICpwYW5lZCwKCQkJCSAgIEd0a1dpZGdldCAqY2hpbGQpOwp2b2lkICAg
IGd0a19wYW5lZF9hZGQyICAgICAgICAgICAgKEd0a1BhbmVkICAqcGFuZWQsCgkJCQkgICBHdGtX
aWRnZXQgKmNoaWxkKTsKdm9pZCAgICBndGtfcGFuZWRfcGFjazEgICAgICAgICAgIChHdGtQYW5l
ZCAgKnBhbmVkLAoJCQkJICAgR3RrV2lkZ2V0ICpjaGlsZCwKCQkJCSAgIGdib29sZWFuICAgcmVz
aXplLAoJCQkJICAgZ2Jvb2xlYW4gICBzaHJpbmspOwp2b2lkICAgIGd0a19wYW5lZF9wYWNrMiAg
ICAgICAgICAgKEd0a1BhbmVkICAqcGFuZWQsCgkJCQkgICBHdGtXaWRnZXQgKmNoaWxkLAoJCQkJ
ICAgZ2Jvb2xlYW4gICByZXNpemUsCgkJCQkgICBnYm9vbGVhbiAgIHNocmluayk7CnZvaWQgICAg
Z3RrX3BhbmVkX3NldF9wb3NpdGlvbiAgICAoR3RrUGFuZWQgICpwYW5lZCwKCQkJCSAgIGdpbnQg
ICAgICAgcG9zaXRpb24pOwp2b2lkICAgIGd0a19wYW5lZF9zZXRfaGFuZGxlX3NpemUgKEd0a1Bh
bmVkICpwYW5lZCwKCQkJCSAgIGd1aW50MTYgICBzaXplKTsKdm9pZCAgICBndGtfcGFuZWRfc2V0
X2d1dHRlcl9zaXplIChHdGtQYW5lZCAqcGFuZWQsCgkJCQkgICBndWludDE2ICAgc2l6ZSk7Cgog
CnZvaWQgICAgZ3RrX3BhbmVkX2NvbXB1dGVfcG9zaXRpb24gKEd0a1BhbmVkICpwYW5lZCwKCQkJ
CSAgICBnaW50ICAgICAgYWxsb2NhdGlvbiwKCQkJCSAgICBnaW50ICAgICAgY2hpbGQxX3JlcSwK
CQkJCSAgICBnaW50ICAgICAgY2hpbGQyX3JlcSk7CgoKfQoKCgoKIyAzMiAiL3Vzci9pbmNsdWRl
L2d0ay9ndGtocGFuZWQuaCIgMiAzCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgp0eXBlZGVmIHN0
cnVjdCBfR3RrSFBhbmVkICAgICAgIEd0a0hQYW5lZDsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0hQYW5l
ZENsYXNzICBHdGtIUGFuZWRDbGFzczsKCnN0cnVjdCBfR3RrSFBhbmVkCnsKICBHdGtQYW5lZCBw
YW5lZDsKfTsKCnN0cnVjdCBfR3RrSFBhbmVkQ2xhc3MKewogIEd0a1BhbmVkQ2xhc3MgcGFyZW50
X2NsYXNzOwp9OwoKCmd1aW50ICAgICAgZ3RrX2hwYW5lZF9nZXRfdHlwZSAodm9pZCk7Ckd0a1dp
ZGdldCogZ3RrX2hwYW5lZF9uZXcgICAgICAodm9pZCk7CgoKCn0KCgoKCiMgNzIgIi91c3IvaW5j
bHVkZS9ndGsvZ3RrLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2hydWxlci5oIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3Rr
L2d0a3J1bGVyLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0
ZXJuICJDIiB7CgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtSdWxlciAgICAgICAgR3RrUnVs
ZXI7CnR5cGVkZWYgc3RydWN0IF9HdGtSdWxlckNsYXNzICAgR3RrUnVsZXJDbGFzczsKdHlwZWRl
ZiBzdHJ1Y3QgX0d0a1J1bGVyTWV0cmljICBHdGtSdWxlck1ldHJpYzsKCiAKCgpzdHJ1Y3QgX0d0
a1J1bGVyCnsKICBHdGtXaWRnZXQgd2lkZ2V0OwoKICBHZGtQaXhtYXAgKmJhY2tpbmdfc3RvcmU7
CiAgR2RrR0MgKm5vbl9ncl9leHBfZ2M7CiAgR3RrUnVsZXJNZXRyaWMgKm1ldHJpYzsKICBnaW50
IHhzcmMsIHlzcmM7CiAgZ2ludCBzbGlkZXJfc2l6ZTsKCiAgIAogIGdmbG9hdCBsb3dlcjsKICAg
CiAgZ2Zsb2F0IHVwcGVyOwogICAKICBnZmxvYXQgcG9zaXRpb247CiAgIAogIGdmbG9hdCBtYXhf
c2l6ZTsKfTsKCnN0cnVjdCBfR3RrUnVsZXJDbGFzcwp7CiAgR3RrV2lkZ2V0Q2xhc3MgcGFyZW50
X2NsYXNzOwoKICB2b2lkICgqIGRyYXdfdGlja3MpIChHdGtSdWxlciAqcnVsZXIpOwogIHZvaWQg
KCogZHJhd19wb3MpICAgKEd0a1J1bGVyICpydWxlcik7Cn07CgpzdHJ1Y3QgX0d0a1J1bGVyTWV0
cmljCnsKICBnY2hhciAqbWV0cmljX25hbWU7CiAgZ2NoYXIgKmFiYnJldjsKICAgCgogIGdmbG9h
dCBwaXhlbHNfcGVyX3VuaXQ7CiAgZ2Zsb2F0IHJ1bGVyX3NjYWxlWzEwXTsKICBnaW50IHN1YmRp
dmlkZVs1XTsgICAgICAgICAKfTsKCgpHdGtUeXBlIGd0a19ydWxlcl9nZXRfdHlwZSAgICh2b2lk
KTsKdm9pZCAgICBndGtfcnVsZXJfc2V0X21ldHJpYyAoR3RrUnVsZXIgICAgICAgKnJ1bGVyLAoJ
CQkgICAgICBHdGtNZXRyaWNUeXBlICAgbWV0cmljKTsKdm9pZCAgICBndGtfcnVsZXJfc2V0X3Jh
bmdlICAoR3RrUnVsZXIgICAgICAgKnJ1bGVyLAoJCQkgICAgICBnZmxvYXQgICAgICAgICAgbG93
ZXIsCgkJCSAgICAgIGdmbG9hdCAgICAgICAgICB1cHBlciwKCQkJICAgICAgZ2Zsb2F0ICAgICAg
ICAgIHBvc2l0aW9uLAoJCQkgICAgICBnZmxvYXQgICAgICAgICAgbWF4X3NpemUpOwp2b2lkICAg
IGd0a19ydWxlcl9kcmF3X3RpY2tzIChHdGtSdWxlciAgICAgICAqcnVsZXIpOwp2b2lkICAgIGd0
a19ydWxlcl9kcmF3X3BvcyAgIChHdGtSdWxlciAgICAgICAqcnVsZXIpOwoKCgp9CgoKCgojIDMy
ICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2hydWxlci5oIiAyIDMKCgoKCmV4dGVybiAiQyIgewoKCgoK
CgoKCnR5cGVkZWYgc3RydWN0IF9HdGtIUnVsZXIgICAgICAgR3RrSFJ1bGVyOwp0eXBlZGVmIHN0
cnVjdCBfR3RrSFJ1bGVyQ2xhc3MgIEd0a0hSdWxlckNsYXNzOwoKc3RydWN0IF9HdGtIUnVsZXIK
ewogIEd0a1J1bGVyIHJ1bGVyOwp9OwoKc3RydWN0IF9HdGtIUnVsZXJDbGFzcwp7CiAgR3RrUnVs
ZXJDbGFzcyBwYXJlbnRfY2xhc3M7Cn07CgoKZ3VpbnQgICAgICBndGtfaHJ1bGVyX2dldF90eXBl
ICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfaHJ1bGVyX25ldyAgICAgICh2b2lkKTsKCgoKfQoKCgoK
IyA3MyAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2d0
ay9ndGtoc2VwYXJhdG9yLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoj
IDEgIi91c3IvaW5jbHVkZS9ndGsvZ3Rrc2VwYXJhdG9yLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVj
dCBfR3RrU2VwYXJhdG9yICAgICAgIEd0a1NlcGFyYXRvcjsKdHlwZWRlZiBzdHJ1Y3QgX0d0a1Nl
cGFyYXRvckNsYXNzICBHdGtTZXBhcmF0b3JDbGFzczsKCnN0cnVjdCBfR3RrU2VwYXJhdG9yCnsK
ICBHdGtXaWRnZXQgd2lkZ2V0Owp9OwoKc3RydWN0IF9HdGtTZXBhcmF0b3JDbGFzcwp7CiAgR3Rr
V2lkZ2V0Q2xhc3MgcGFyZW50X2NsYXNzOwp9OwoKCkd0a1R5cGUgIGd0a19zZXBhcmF0b3JfZ2V0
X3R5cGUgKHZvaWQpOwoKCgp9CgoKCiMgMzIgIi91c3IvaW5jbHVkZS9ndGsvZ3RraHNlcGFyYXRv
ci5oIiAyIDMKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a0hT
ZXBhcmF0b3IgICAgICAgR3RrSFNlcGFyYXRvcjsKdHlwZWRlZiBzdHJ1Y3QgX0d0a0hTZXBhcmF0
b3JDbGFzcyAgR3RrSFNlcGFyYXRvckNsYXNzOwoKc3RydWN0IF9HdGtIU2VwYXJhdG9yCnsKICBH
dGtTZXBhcmF0b3Igc2VwYXJhdG9yOwp9OwoKc3RydWN0IF9HdGtIU2VwYXJhdG9yQ2xhc3MKewog
IEd0a1NlcGFyYXRvckNsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtUeXBlICAgIGd0a19oc2Vw
YXJhdG9yX2dldF90eXBlICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfaHNlcGFyYXRvcl9uZXcgICAg
ICAodm9pZCk7CgoKCgp9CgoKCiMgNzYgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKIyAx
ICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2ltYWdlLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3Rr
SW1hZ2UgICAgICAgR3RrSW1hZ2U7CnR5cGVkZWYgc3RydWN0IF9HdGtJbWFnZUNsYXNzICBHdGtJ
bWFnZUNsYXNzOwoKc3RydWN0IF9HdGtJbWFnZQp7CiAgR3RrTWlzYyBtaXNjOwoKICBHZGtJbWFn
ZSAqaW1hZ2U7CiAgR2RrQml0bWFwICptYXNrOwp9OwoKc3RydWN0IF9HdGtJbWFnZUNsYXNzCnsK
ICBHdGtNaXNjQ2xhc3MgcGFyZW50X2NsYXNzOwp9OwoKCkd0a1R5cGUgICAgZ3RrX2ltYWdlX2dl
dF90eXBlICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfaW1hZ2VfbmV3ICAgICAgKEdka0ltYWdlICAg
KnZhbCwKCQkJICAgICAgIEdka0JpdG1hcCAgKm1hc2spOwp2b2lkICAgICAgIGd0a19pbWFnZV9z
ZXQgICAgICAoR3RrSW1hZ2UgICAqaW1hZ2UsCgkJCSAgICAgICBHZGtJbWFnZSAgICp2YWwsCgkJ
CSAgICAgICBHZGtCaXRtYXAgICptYXNrKTsKdm9pZCAgICAgICBndGtfaW1hZ2VfZ2V0ICAgICAg
KEd0a0ltYWdlICAgKmltYWdlLAoJCQkgICAgICAgR2RrSW1hZ2UgICoqdmFsLAoJCQkgICAgICAg
R2RrQml0bWFwICoqbWFzayk7CgoKCn0KCgoKCiMgNzcgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgi
IDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2lucHV0ZGlhbG9nLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgp0eXBl
ZGVmIHN0cnVjdCBfR3RrSW5wdXREaWFsb2cgICAgICAgR3RrSW5wdXREaWFsb2c7CnR5cGVkZWYg
c3RydWN0IF9HdGtJbnB1dERpYWxvZ0NsYXNzICBHdGtJbnB1dERpYWxvZ0NsYXNzOwoKc3RydWN0
IF9HdGtJbnB1dERpYWxvZwp7CiAgR3RrRGlhbG9nIGRpYWxvZzsKCiAgR3RrV2lkZ2V0ICpheGlz
X2xpc3Q7CiAgR3RrV2lkZ2V0ICpheGlzX2xpc3Rib3g7CiAgR3RrV2lkZ2V0ICptb2RlX29wdGlv
bm1lbnU7CgogIEd0a1dpZGdldCAqY2xvc2VfYnV0dG9uOwogIEd0a1dpZGdldCAqc2F2ZV9idXR0
b247CiAgCiAgR3RrV2lkZ2V0ICpheGlzX2l0ZW1zW0dES19BWElTX0xBU1RdOwogIGd1aW50MzIg
ICAgY3VycmVudF9kZXZpY2U7CgogIEd0a1dpZGdldCAqa2V5c19saXN0OwogIEd0a1dpZGdldCAq
a2V5c19saXN0Ym94Owp9OwoKc3RydWN0IF9HdGtJbnB1dERpYWxvZ0NsYXNzCnsKICBHdGtXaW5k
b3dDbGFzcyBwYXJlbnRfY2xhc3M7CgogIHZvaWQgKCogZW5hYmxlX2RldmljZSkgICAgICAgICAg
ICAgICAoR3RrSW5wdXREaWFsb2cgICAgKmlucHV0ZCwKCQkJCQlndWludDMyICAgICAgICAgICAg
ZGV2aWQpOwogIHZvaWQgKCogZGlzYWJsZV9kZXZpY2UpICAgICAgICAgICAgICAoR3RrSW5wdXRE
aWFsb2cgICAgKmlucHV0ZCwKCQkJCQlndWludDMyICAgICAgICAgICAgZGV2aWQpOwp9OwoKCkd0
a1R5cGUgICAgZ3RrX2lucHV0X2RpYWxvZ19nZXRfdHlwZSAgICAgKHZvaWQpOwpHdGtXaWRnZXQq
IGd0a19pbnB1dF9kaWFsb2dfbmV3ICAgICAgICAgICh2b2lkKTsKCgoKfQoKCgoKIyA3OCAiL3Vz
ci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2l0ZW1m
YWN0b3J5LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDEgIi91
c3IvaW5jbHVkZS9ndGsvZ3RrbWVudWZhY3RvcnkuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrTWVudUVu
dHJ5CUd0a01lbnVFbnRyeTsKdHlwZWRlZiBzdHJ1Y3QgX0d0a01lbnVQYXRoCUd0a01lbnVQYXRo
Owp0eXBlZGVmIHN0cnVjdCBfR3RrTWVudUZhY3RvcnkJR3RrTWVudUZhY3Rvcnk7Cgp0eXBlZGVm
IHZvaWQgKCpHdGtNZW51Q2FsbGJhY2spIChHdGtXaWRnZXQgKndpZGdldCwKCQkJCSBncG9pbnRl
ciAgIHVzZXJfZGF0YSk7CgpzdHJ1Y3QgX0d0a01lbnVFbnRyeQp7CiAgZ2NoYXIgKnBhdGg7CiAg
Z2NoYXIgKmFjY2VsZXJhdG9yOwogIEd0a01lbnVDYWxsYmFjayBjYWxsYmFjazsKICBncG9pbnRl
ciBjYWxsYmFja19kYXRhOwogIEd0a1dpZGdldCAqd2lkZ2V0Owp9OwoKc3RydWN0IF9HdGtNZW51
UGF0aAp7CiAgY2hhciAqcGF0aDsKICBHdGtXaWRnZXQgKndpZGdldDsKfTsKCnN0cnVjdCBfR3Rr
TWVudUZhY3RvcnkKewogIGdjaGFyICpwYXRoOwogIEd0a01lbnVGYWN0b3J5VHlwZSB0eXBlOwog
IEd0a0FjY2VsR3JvdXAgKmFjY2VsX2dyb3VwOwogIEd0a1dpZGdldCAqd2lkZ2V0OwogIEdMaXN0
ICpzdWJmYWN0b3JpZXM7Cn07CgogCgoKCgoKR3RrTWVudUZhY3RvcnkqIGd0a19tZW51X2ZhY3Rv
cnlfbmV3CQkgICAoR3RrTWVudUZhY3RvcnlUeXBlCXR5cGUpOwp2b2lkCQlndGtfbWVudV9mYWN0
b3J5X2Rlc3Ryb3kJICAgKEd0a01lbnVGYWN0b3J5ICAgICAqZmFjdG9yeSk7CnZvaWQJCWd0a19t
ZW51X2ZhY3RvcnlfYWRkX2VudHJpZXMJICAgKEd0a01lbnVGYWN0b3J5ICAgICAqZmFjdG9yeSwK
CQkJCQkJICAgIEd0a01lbnVFbnRyeSAgICAgICAqZW50cmllcywKCQkJCQkJICAgIGludAkJCW5l
bnRyaWVzKTsKdm9pZAkJZ3RrX21lbnVfZmFjdG9yeV9hZGRfc3ViZmFjdG9yeQkgICAoR3RrTWVu
dUZhY3RvcnkgICAgICpmYWN0b3J5LAoJCQkJCQkgICAgR3RrTWVudUZhY3RvcnkgICAgICpzdWJm
YWN0b3J5LAoJCQkJCQkgICAgY29uc3QgY2hhcgkgICAgICAgKnBhdGgpOwp2b2lkCQlndGtfbWVu
dV9mYWN0b3J5X3JlbW92ZV9wYXRocwkgICAoR3RrTWVudUZhY3RvcnkgICAgICpmYWN0b3J5LAoJ
CQkJCQkgICAgY2hhcgkgICAgICAqKnBhdGhzLAoJCQkJCQkgICAgaW50CQkJbnBhdGhzKTsKdm9p
ZAkJZ3RrX21lbnVfZmFjdG9yeV9yZW1vdmVfZW50cmllcwkgICAoR3RrTWVudUZhY3RvcnkgICAg
ICpmYWN0b3J5LAoJCQkJCQkgICAgR3RrTWVudUVudHJ5ICAgICAgICplbnRyaWVzLAoJCQkJCQkg
ICAgaW50CQkJbmVudHJpZXMpOwp2b2lkCQlndGtfbWVudV9mYWN0b3J5X3JlbW92ZV9zdWJmYWN0
b3J5IChHdGtNZW51RmFjdG9yeSAgICAgKmZhY3RvcnksCgkJCQkJCSAgICBHdGtNZW51RmFjdG9y
eSAgICAgKnN1YmZhY3RvcnksCgkJCQkJCSAgICBjb25zdCBjaGFyCSAgICAgICAqcGF0aCk7Ckd0
a01lbnVQYXRoKglndGtfbWVudV9mYWN0b3J5X2ZpbmQJCSAgIChHdGtNZW51RmFjdG9yeSAgICAg
KmZhY3RvcnksCgkJCQkJCSAgICBjb25zdCBjaGFyCSAgICAgICAqcGF0aCk7CgoKCn0KCgoKCiMg
MzUgIi91c3IvaW5jbHVkZS9ndGsvZ3RraXRlbWZhY3RvcnkuaCIgMiAzCgoKCgoKZXh0ZXJuICJD
IiB7CgoKCnR5cGVkZWYgdm9pZAkoKkd0a1ByaW50RnVuYykJCSAgIChncG9pbnRlcgkJIGZ1bmNf
ZGF0YSwKCQkJCQkgICAgZ2NoYXIJCSpzdHIpOwp0eXBlZGVmIGdjaGFyICogKCpHdGtUcmFuc2xh
dGVGdW5jKQkgICAoY29uc3QgZ2NoYXIJCSpwYXRoLAoJCQkJCSAgICBncG9pbnRlciAgICAgICAg
ICAgICBmdW5jX2RhdGEpOwp0eXBlZGVmCXZvaWQJKCpHdGtJdGVtRmFjdG9yeUNhbGxiYWNrKSAg
KCk7CnR5cGVkZWYJdm9pZAkoKkd0a0l0ZW1GYWN0b3J5Q2FsbGJhY2sxKSAoZ3BvaW50ZXIJCSBj
YWxsYmFja19kYXRhLAoJCQkJCSAgICBndWludAkJIGNhbGxiYWNrX2FjdGlvbiwKCQkJCQkgICAg
R3RrV2lkZ2V0CQkqd2lkZ2V0KTsKCgoKCgoKCgp0eXBlZGVmCXN0cnVjdAlfR3RrSXRlbUZhY3Rv
cnkJCQlHdGtJdGVtRmFjdG9yeTsKdHlwZWRlZglzdHJ1Y3QJX0d0a0l0ZW1GYWN0b3J5Q2xhc3MJ
CUd0a0l0ZW1GYWN0b3J5Q2xhc3M7CnR5cGVkZWYJc3RydWN0CV9HdGtJdGVtRmFjdG9yeUVudHJ5
CQlHdGtJdGVtRmFjdG9yeUVudHJ5Owp0eXBlZGVmCXN0cnVjdAlfR3RrSXRlbUZhY3RvcnlJdGVt
CQlHdGtJdGVtRmFjdG9yeUl0ZW07CgpzdHJ1Y3QgX0d0a0l0ZW1GYWN0b3J5CnsKICBHdGtPYmpl
Y3QJCSBvYmplY3Q7CgogIGdjaGFyCQkJKnBhdGg7CiAgR3RrQWNjZWxHcm91cAkJKmFjY2VsX2dy
b3VwOwogIEd0a1dpZGdldAkJKndpZGdldDsKICBHU0xpc3QJCSppdGVtczsKCiAgR3RrVHJhbnNs
YXRlRnVuYyAgICAgICB0cmFuc2xhdGVfZnVuYzsKICBncG9pbnRlciAgICAgICAgICAgICAgIHRy
YW5zbGF0ZV9kYXRhOwogIEd0a0Rlc3Ryb3lOb3RpZnkgICAgICAgdHJhbnNsYXRlX25vdGlmeTsg
ICAKfTsKCnN0cnVjdCBfR3RrSXRlbUZhY3RvcnlDbGFzcwp7CiAgR3RrT2JqZWN0Q2xhc3MJIG9i
amVjdF9jbGFzczsKCiAgZ2NoYXIJCQkqY3BhaXJfY29tbWVudF9zaW5nbGU7CgogIEdIYXNoVGFi
bGUJCSppdGVtX2h0OwoKICBncG9pbnRlciAgICAgICAgICAgICAgIGR1bW15Owp9OwoKc3RydWN0
IF9HdGtJdGVtRmFjdG9yeUVudHJ5CnsKICBnY2hhciAqcGF0aDsKICBnY2hhciAqYWNjZWxlcmF0
b3I7CgogIEd0a0l0ZW1GYWN0b3J5Q2FsbGJhY2sgY2FsbGJhY2s7CiAgZ3VpbnQJCQkgY2FsbGJh
Y2tfYWN0aW9uOwoKICAgCgoKCgoKCgoKCgoKCiAgZ2NoYXIJCSAqaXRlbV90eXBlOwp9OwoKc3Ry
dWN0IF9HdGtJdGVtRmFjdG9yeUl0ZW0KewogIGdjaGFyICpwYXRoOwogIGd1aW50ICBhY2NlbGVy
YXRvcl9rZXk7CiAgZ3VpbnQgIGFjY2VsZXJhdG9yX21vZHM7CiAgZ3VpbnQJIG1vZGlmaWVkIDog
MTsKICBndWludCAgaW5fcHJvcGFnYXRpb24gOiAxOwogIGdjaGFyICpkdW1teTsKCiAgR1NMaXN0
ICp3aWRnZXRzOwp9OwoKCkd0a1R5cGUJCWd0a19pdGVtX2ZhY3RvcnlfZ2V0X3R5cGUJICAgICh2
b2lkKTsKCiAKCgpHdGtJdGVtRmFjdG9yeSoJZ3RrX2l0ZW1fZmFjdG9yeV9uZXcJICAgKEd0a1R5
cGUJCSBjb250YWluZXJfdHlwZSwKCQkJCQkgICAgY29uc3QgZ2NoYXIJCSpwYXRoLAoJCQkJCSAg
ICBHdGtBY2NlbEdyb3VwICAgICAgICphY2NlbF9ncm91cCk7CnZvaWQJCWd0a19pdGVtX2ZhY3Rv
cnlfY29uc3RydWN0IChHdGtJdGVtRmFjdG9yeQkqaWZhY3RvcnksCgkJCQkJICAgIEd0a1R5cGUJ
CSBjb250YWluZXJfdHlwZSwKCQkJCQkgICAgY29uc3QgZ2NoYXIJCSpwYXRoLAoJCQkJCSAgICBH
dGtBY2NlbEdyb3VwICAgICAgICphY2NlbF9ncm91cCk7CiAgICAgCiAKCnZvaWQJCWd0a19pdGVt
X2ZhY3RvcnlfcGFyc2VfcmMJICAgIChjb25zdCBnY2hhciAgICAqZmlsZV9uYW1lKTsKdm9pZAkJ
Z3RrX2l0ZW1fZmFjdG9yeV9wYXJzZV9yY19zdHJpbmcgICAgKGNvbnN0IGdjaGFyICAgICpyY19z
dHJpbmcpOwp2b2lkCQlndGtfaXRlbV9mYWN0b3J5X3BhcnNlX3JjX3NjYW5uZXIgICAoR1NjYW5u
ZXIJICAgICpzY2FubmVyKTsKdm9pZAkJZ3RrX2l0ZW1fZmFjdG9yeV9hZGRfZm9yZWlnbiAgICAg
ICAgKEd0a1dpZGdldAkgICAgKmFjY2VsX3dpZGdldCwKCQkJCQkJICAgICBjb25zdCBnY2hhciAg
ICAqZnVsbF9wYXRoLAoJCQkJCQkgICAgIEd0a0FjY2VsR3JvdXAgICphY2NlbF9ncm91cCwKCQkJ
CQkJICAgICBndWludAkgICAgIGtleXZhbCwKCQkJCQkJICAgICBHZGtNb2RpZmllclR5cGUgbW9k
aWZpZXJzKTsKICAgICAKR3RrSXRlbUZhY3RvcnkqCWd0a19pdGVtX2ZhY3RvcnlfZnJvbV93aWRn
ZXQJICAgIChHdGtXaWRnZXQJICAgICAgKndpZGdldCk7CmdjaGFyKgkJZ3RrX2l0ZW1fZmFjdG9y
eV9wYXRoX2Zyb21fd2lkZ2V0ICAgKEd0a1dpZGdldAkgICAgICAqd2lkZ2V0KTsKCkd0a1dpZGdl
dCoJZ3RrX2l0ZW1fZmFjdG9yeV9nZXRfaXRlbQkgICAgICAoR3RrSXRlbUZhY3RvcnkgKmlmYWN0
b3J5LAoJCQkJCQkgICAgICAgY29uc3QgZ2NoYXIgICAgKnBhdGgpOwpHdGtXaWRnZXQqCWd0a19p
dGVtX2ZhY3RvcnlfZ2V0X3dpZGdldAkgICAgICAoR3RrSXRlbUZhY3RvcnkgKmlmYWN0b3J5LAoJ
CQkJCQkgICAgICAgY29uc3QgZ2NoYXIgICAgKnBhdGgpOwpHdGtXaWRnZXQqCWd0a19pdGVtX2Zh
Y3RvcnlfZ2V0X3dpZGdldF9ieV9hY3Rpb24gKEd0a0l0ZW1GYWN0b3J5ICppZmFjdG9yeSwKCQkJ
CQkJICAgICAgIGd1aW50CSAgICAgICBhY3Rpb24pOwpHdGtXaWRnZXQqCWd0a19pdGVtX2ZhY3Rv
cnlfZ2V0X2l0ZW1fYnlfYWN0aW9uICAgKEd0a0l0ZW1GYWN0b3J5ICppZmFjdG9yeSwKCQkJCQkJ
ICAgICAgIGd1aW50CSAgICAgICBhY3Rpb24pOwoKIAoKCgp2b2lkCWd0a19pdGVtX2ZhY3Rvcnlf
ZHVtcF9pdGVtcwkoR3RrUGF0dGVyblNwZWMJCSpwYXRoX3BzcGVjLAoJCQkJCSBnYm9vbGVhbgkJ
IG1vZGlmaWVkX29ubHksCgkJCQkJIEd0a1ByaW50RnVuYwkJIHByaW50X2Z1bmMsCgkJCQkJIGdw
b2ludGVyCQkgZnVuY19kYXRhKTsKdm9pZAlndGtfaXRlbV9mYWN0b3J5X2R1bXBfcmMJKGNvbnN0
IGdjaGFyCQkqZmlsZV9uYW1lLAoJCQkJCSBHdGtQYXR0ZXJuU3BlYwkJKnBhdGhfcHNwZWMsCgkJ
CQkJIGdib29sZWFuCQkgbW9kaWZpZWRfb25seSk7CnZvaWQJZ3RrX2l0ZW1fZmFjdG9yeV9wcmlu
dF9mdW5jCShncG9pbnRlcgkJIEZJTEVfcG9pbnRlciwKCQkJCQkgZ2NoYXIJCQkqc3RyaW5nKTsK
dm9pZAlndGtfaXRlbV9mYWN0b3J5X2NyZWF0ZV9pdGVtCShHdGtJdGVtRmFjdG9yeQkJKmlmYWN0
b3J5LAoJCQkJCSBHdGtJdGVtRmFjdG9yeUVudHJ5CSplbnRyeSwKCQkJCQkgZ3BvaW50ZXIJCSBj
YWxsYmFja19kYXRhLAoJCQkJCSBndWludAkJCSBjYWxsYmFja190eXBlKTsKdm9pZAlndGtfaXRl
bV9mYWN0b3J5X2NyZWF0ZV9pdGVtcwkoR3RrSXRlbUZhY3RvcnkJCSppZmFjdG9yeSwKCQkJCQkg
Z3VpbnQJCQkgbl9lbnRyaWVzLAoJCQkJCSBHdGtJdGVtRmFjdG9yeUVudHJ5CSplbnRyaWVzLAoJ
CQkJCSBncG9pbnRlcgkJIGNhbGxiYWNrX2RhdGEpOwp2b2lkCWd0a19pdGVtX2ZhY3RvcnlfZGVs
ZXRlX2l0ZW0JKEd0a0l0ZW1GYWN0b3J5CQkqaWZhY3RvcnksCgkJCQkJIGNvbnN0IGdjaGFyCQkq
cGF0aCk7CnZvaWQJZ3RrX2l0ZW1fZmFjdG9yeV9kZWxldGVfZW50cnkJKEd0a0l0ZW1GYWN0b3J5
CQkqaWZhY3RvcnksCgkJCQkJIEd0a0l0ZW1GYWN0b3J5RW50cnkJKmVudHJ5KTsKdm9pZAlndGtf
aXRlbV9mYWN0b3J5X2RlbGV0ZV9lbnRyaWVzCShHdGtJdGVtRmFjdG9yeQkJKmlmYWN0b3J5LAoJ
CQkJCSBndWludAkJCSBuX2VudHJpZXMsCgkJCQkJIEd0a0l0ZW1GYWN0b3J5RW50cnkJKmVudHJp
ZXMpOwp2b2lkCWd0a19pdGVtX2ZhY3RvcnlfcG9wdXAJCShHdGtJdGVtRmFjdG9yeQkJKmlmYWN0
b3J5LAoJCQkJCSBndWludAkJCSB4LAoJCQkJCSBndWludAkJCSB5LAoJCQkJCSBndWludAkJCSBt
b3VzZV9idXR0b24sCgkJCQkJIGd1aW50MzIJCSB0aW1lKTsKdm9pZAlndGtfaXRlbV9mYWN0b3J5
X3BvcHVwX3dpdGhfZGF0YShHdGtJdGVtRmFjdG9yeQkJKmlmYWN0b3J5LAoJCQkJCSBncG9pbnRl
cgkJIHBvcHVwX2RhdGEsCgkJCQkJIEd0a0Rlc3Ryb3lOb3RpZnkJIGRlc3Ryb3ksCgkJCQkJIGd1
aW50CQkJIHgsCgkJCQkJIGd1aW50CQkJIHksCgkJCQkJIGd1aW50CQkJIG1vdXNlX2J1dHRvbiwK
CQkJCQkgZ3VpbnQzMgkJIHRpbWUpOwpncG9pbnRlciBndGtfaXRlbV9mYWN0b3J5X3BvcHVwX2Rh
dGEJKEd0a0l0ZW1GYWN0b3J5CQkqaWZhY3RvcnkpOwpncG9pbnRlciBndGtfaXRlbV9mYWN0b3J5
X3BvcHVwX2RhdGFfZnJvbV93aWRnZXQgKEd0a1dpZGdldAkqd2lkZ2V0KTsKdm9pZCAgIGd0a19p
dGVtX2ZhY3Rvcnlfc2V0X3RyYW5zbGF0ZV9mdW5jIChHdGtJdGVtRmFjdG9yeSAgICAgICppZmFj
dG9yeSwKCQkJCQkgICAgR3RrVHJhbnNsYXRlRnVuYyAgICAgZnVuYywKCQkJCQkgICAgZ3BvaW50
ZXIgICAgICAgICAgICAgZGF0YSwKCQkJCQkgICAgR3RrRGVzdHJveU5vdGlmeSAgICAgbm90aWZ5
KTsKCiAKCkd0a0l0ZW1GYWN0b3J5KglndGtfaXRlbV9mYWN0b3J5X2Zyb21fcGF0aCAgIChjb25z
dCBnY2hhciAgICAgICAqcGF0aCk7CnZvaWQJZ3RrX2l0ZW1fZmFjdG9yeV9jcmVhdGVfbWVudV9l
bnRyaWVzIChndWludAkJIG5fZW50cmllcywKCQkJCQkgICAgICBHdGtNZW51RW50cnkgICAgICAq
ZW50cmllcyk7CnZvaWQJZ3RrX2l0ZW1fZmFjdG9yaWVzX3BhdGhfZGVsZXRlCSAgIChjb25zdCBn
Y2hhcgkJKmlmYWN0b3J5X3BhdGgsCgkJCQkJICAgIGNvbnN0IGdjaGFyCQkqcGF0aCk7CnR5cGVk
ZWYJdm9pZAkoKkd0a0l0ZW1GYWN0b3J5Q2FsbGJhY2syKSAoR3RrV2lkZ2V0CQkqd2lkZ2V0LAoJ
CQkJCSAgICBncG9pbnRlcgkJIGNhbGxiYWNrX2RhdGEsCgkJCQkJICAgIGd1aW50CQkgY2FsbGJh
Y2tfYWN0aW9uKTsKdm9pZAlndGtfaXRlbV9mYWN0b3J5X2NyZWF0ZV9pdGVtc19hYyAoR3RrSXRl
bUZhY3RvcnkJKmlmYWN0b3J5LAoJCQkJCSAgZ3VpbnQJCQkgbl9lbnRyaWVzLAoJCQkJCSAgR3Rr
SXRlbUZhY3RvcnlFbnRyeQkqZW50cmllcywKCQkJCQkgIGdwb2ludGVyCQkgY2FsbGJhY2tfZGF0
YSwKCQkJCQkgIGd1aW50CQkJIGNhbGxiYWNrX3R5cGUpOwoKCgoKfQoKCgoKIyA4MCAiL3Vzci9p
bmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a2xheW91dC5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIg
ewoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtMYXlvdXQgICAgICAgIEd0a0xheW91dDsKdHlw
ZWRlZiBzdHJ1Y3QgX0d0a0xheW91dENsYXNzICAgR3RrTGF5b3V0Q2xhc3M7CgpzdHJ1Y3QgX0d0
a0xheW91dCB7CiAgR3RrQ29udGFpbmVyIGNvbnRhaW5lcjsKCiAgR0xpc3QgKmNoaWxkcmVuOwoK
ICBndWludCB3aWR0aDsKICBndWludCBoZWlnaHQ7CgogIGd1aW50IHhvZmZzZXQ7CiAgZ3VpbnQg
eW9mZnNldDsKCiAgR3RrQWRqdXN0bWVudCAqaGFkanVzdG1lbnQ7CiAgR3RrQWRqdXN0bWVudCAq
dmFkanVzdG1lbnQ7CiAgCiAgR2RrV2luZG93ICpiaW5fd2luZG93OwoKICBHZGtWaXNpYmlsaXR5
U3RhdGUgdmlzaWJpbGl0eTsKICBndWxvbmcgY29uZmlndXJlX3NlcmlhbDsKICBnaW50IHNjcm9s
bF94OwogIGdpbnQgc2Nyb2xsX3k7CgogIGd1aW50IGZyZWV6ZV9jb3VudDsKfTsKCnN0cnVjdCBf
R3RrTGF5b3V0Q2xhc3MgewogIEd0a0NvbnRhaW5lckNsYXNzIHBhcmVudF9jbGFzczsKCiAgdm9p
ZCAgKCpzZXRfc2Nyb2xsX2FkanVzdG1lbnRzKSAgIChHdGtMYXlvdXQJICAgICpsYXlvdXQsCgkJ
CQkgICAgIEd0a0FkanVzdG1lbnQgICpoYWRqdXN0bWVudCwKCQkJCSAgICAgR3RrQWRqdXN0bWVu
dCAgKnZhZGp1c3RtZW50KTsKfTsKCkd0a1R5cGUgICAgICAgIGd0a19sYXlvdXRfZ2V0X3R5cGUg
ICAgICAgICh2b2lkKTsKR3RrV2lkZ2V0KiAgICAgZ3RrX2xheW91dF9uZXcgICAgICAgICAgICAg
KEd0a0FkanVzdG1lbnQgKmhhZGp1c3RtZW50LAoJCQkJICAgICAgICAgICBHdGtBZGp1c3RtZW50
ICp2YWRqdXN0bWVudCk7CnZvaWQgICAgICAgICAgIGd0a19sYXlvdXRfcHV0ICAgICAgICAgICAg
IChHdGtMYXlvdXQgICAgICpsYXlvdXQsIAoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0
a1dpZGdldCAgICAgKndpZGdldCwgCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAg
ICAgICAgICAgeCwgCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAg
eSk7CiAgCnZvaWQgICAgICAgICAgIGd0a19sYXlvdXRfbW92ZSAgICAgICAgICAgIChHdGtMYXlv
dXQgICAgICpsYXlvdXQsIAoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0a1dpZGdldCAg
ICAgKndpZGdldCwgCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAg
eCwgCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgeSk7CiAgCnZv
aWQgICAgICAgICAgIGd0a19sYXlvdXRfc2V0X3NpemUgICAgICAgIChHdGtMYXlvdXQgICAgICps
YXlvdXQsIAoJCQkgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgd2lkdGgsCgkJCSAg
ICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICBoZWlnaHQpOwoKR3RrQWRqdXN0bWVudCog
Z3RrX2xheW91dF9nZXRfaGFkanVzdG1lbnQgKEd0a0xheW91dCAgICAgKmxheW91dCk7Ckd0a0Fk
anVzdG1lbnQqIGd0a19sYXlvdXRfZ2V0X3ZhZGp1c3RtZW50IChHdGtMYXlvdXQgICAgICpsYXlv
dXQpOwp2b2lkICAgICAgICAgICBndGtfbGF5b3V0X3NldF9oYWRqdXN0bWVudCAoR3RrTGF5b3V0
ICAgICAqbGF5b3V0LAoJCQkJCSAgIEd0a0FkanVzdG1lbnQgKmFkanVzdG1lbnQpOwp2b2lkICAg
ICAgICAgICBndGtfbGF5b3V0X3NldF92YWRqdXN0bWVudCAoR3RrTGF5b3V0ICAgICAqbGF5b3V0
LAoJCQkJCSAgIEd0a0FkanVzdG1lbnQgKmFkanVzdG1lbnQpOwoKIAoKCgoKCgoKdm9pZCAgICAg
ICAgICAgZ3RrX2xheW91dF9mcmVlemUgICAgICAgICAgKEd0a0xheW91dCAgICAgKmxheW91dCk7
CnZvaWQgICAgICAgICAgIGd0a19sYXlvdXRfdGhhdyAgICAgICAgICAgIChHdGtMYXlvdXQgICAg
ICpsYXlvdXQpOwoKCn0KCgoKIyA4MiAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgojIDEg
Ii91c3IvaW5jbHVkZS9ndGsvZ3RrbGlzdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrbGlzdGl0ZW0uaCIgMSAzCiAKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoKCnR5
cGVkZWYgc3RydWN0IF9HdGtMaXN0SXRlbSAgICAgICBHdGtMaXN0SXRlbTsKdHlwZWRlZiBzdHJ1
Y3QgX0d0a0xpc3RJdGVtQ2xhc3MgIEd0a0xpc3RJdGVtQ2xhc3M7CgpzdHJ1Y3QgX0d0a0xpc3RJ
dGVtCnsKICBHdGtJdGVtIGl0ZW07Cn07CgpzdHJ1Y3QgX0d0a0xpc3RJdGVtQ2xhc3MKewogIEd0
a0l0ZW1DbGFzcyBwYXJlbnRfY2xhc3M7CgogIHZvaWQgKCp0b2dnbGVfZm9jdXNfcm93KSAgKEd0
a0xpc3RJdGVtICAgKmxpc3RfaXRlbSk7CiAgdm9pZCAoKnNlbGVjdF9hbGwpICAgICAgICAoR3Rr
TGlzdEl0ZW0gICAqbGlzdF9pdGVtKTsKICB2b2lkICgqdW5zZWxlY3RfYWxsKSAgICAgIChHdGtM
aXN0SXRlbSAgICpsaXN0X2l0ZW0pOwogIHZvaWQgKCp1bmRvX3NlbGVjdGlvbikgICAgKEd0a0xp
c3RJdGVtICAgKmxpc3RfaXRlbSk7CiAgdm9pZCAoKnN0YXJ0X3NlbGVjdGlvbikgICAoR3RrTGlz
dEl0ZW0gICAqbGlzdF9pdGVtKTsKICB2b2lkICgqZW5kX3NlbGVjdGlvbikgICAgIChHdGtMaXN0
SXRlbSAgICpsaXN0X2l0ZW0pOwogIHZvaWQgKCpleHRlbmRfc2VsZWN0aW9uKSAgKEd0a0xpc3RJ
dGVtICAgKmxpc3RfaXRlbSwKCQkJICAgICBHdGtTY3JvbGxUeXBlICBzY3JvbGxfdHlwZSwKCQkJ
ICAgICBnZmxvYXQgICAgICAgICBwb3NpdGlvbiwKCQkJICAgICBnYm9vbGVhbiAgICAgICBhdXRv
X3N0YXJ0X3NlbGVjdGlvbik7CiAgdm9pZCAoKnNjcm9sbF9ob3Jpem9udGFsKSAoR3RrTGlzdEl0
ZW0gICAqbGlzdF9pdGVtLAoJCQkgICAgIEd0a1Njcm9sbFR5cGUgIHNjcm9sbF90eXBlLAoJCQkg
ICAgIGdmbG9hdCAgICAgICAgIHBvc2l0aW9uKTsKICB2b2lkICgqc2Nyb2xsX3ZlcnRpY2FsKSAg
IChHdGtMaXN0SXRlbSAgICpsaXN0X2l0ZW0sCgkJCSAgICAgR3RrU2Nyb2xsVHlwZSAgc2Nyb2xs
X3R5cGUsCgkJCSAgICAgZ2Zsb2F0ICAgICAgICAgcG9zaXRpb24pOwogIHZvaWQgKCp0b2dnbGVf
YWRkX21vZGUpICAgKEd0a0xpc3RJdGVtICAgKmxpc3RfaXRlbSk7Cn07CgoKR3RrVHlwZSAgICBn
dGtfbGlzdF9pdGVtX2dldF90eXBlICAgICAgICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfbGlzdF9p
dGVtX25ldyAgICAgICAgICAgICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfbGlzdF9pdGVtX25ld193
aXRoX2xhYmVsIChjb25zdCBnY2hhciAgICAgICpsYWJlbCk7CnZvaWQgICAgICAgZ3RrX2xpc3Rf
aXRlbV9zZWxlY3QgICAgICAgICAoR3RrTGlzdEl0ZW0gICAgICAqbGlzdF9pdGVtKTsKdm9pZCAg
ICAgICBndGtfbGlzdF9pdGVtX2Rlc2VsZWN0ICAgICAgIChHdGtMaXN0SXRlbSAgICAgICpsaXN0
X2l0ZW0pOwoKCgoKCn0KCgoKCiMgMzQgIi91c3IvaW5jbHVkZS9ndGsvZ3RrbGlzdC5oIiAyIDMK
CgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrTGlzdAkgICAgICBH
dGtMaXN0Owp0eXBlZGVmIHN0cnVjdCBfR3RrTGlzdENsYXNzICBHdGtMaXN0Q2xhc3M7CgpzdHJ1
Y3QgX0d0a0xpc3QKewogIEd0a0NvbnRhaW5lciBjb250YWluZXI7CgogIEdMaXN0ICpjaGlsZHJl
bjsKICBHTGlzdCAqc2VsZWN0aW9uOwoKICBHTGlzdCAqdW5kb19zZWxlY3Rpb247CiAgR0xpc3Qg
KnVuZG9fdW5zZWxlY3Rpb247CgogIEd0a1dpZGdldCAqbGFzdF9mb2N1c19jaGlsZDsKICBHdGtX
aWRnZXQgKnVuZG9fZm9jdXNfY2hpbGQ7CgogIGd1aW50IGh0aW1lcjsKICBndWludCB2dGltZXI7
CgogIGdpbnQgYW5jaG9yOwogIGdpbnQgZHJhZ19wb3M7CiAgR3RrU3RhdGVUeXBlIGFuY2hvcl9z
dGF0ZTsKCiAgZ3VpbnQgc2VsZWN0aW9uX21vZGUgOiAyOwogIGd1aW50IGRyYWdfc2VsZWN0aW9u
OjE7CiAgZ3VpbnQgYWRkX21vZGU6MTsKfTsKCnN0cnVjdCBfR3RrTGlzdENsYXNzCnsKICBHdGtD
b250YWluZXJDbGFzcyBwYXJlbnRfY2xhc3M7CgogIHZvaWQgKCogc2VsZWN0aW9uX2NoYW5nZWQp
IChHdGtMaXN0CSpsaXN0KTsKICB2b2lkICgqIHNlbGVjdF9jaGlsZCkJICAgICAoR3RrTGlzdAkq
bGlzdCwKCQkJICAgICAgR3RrV2lkZ2V0ICpjaGlsZCk7CiAgdm9pZCAoKiB1bnNlbGVjdF9jaGls
ZCkgICAgKEd0a0xpc3QJKmxpc3QsCgkJCSAgICAgIEd0a1dpZGdldCAqY2hpbGQpOwp9OwoKCkd0
a1R5cGUJICAgZ3RrX2xpc3RfZ2V0X3R5cGUJCSAgKHZvaWQpOwpHdGtXaWRnZXQqIGd0a19saXN0
X25ldwkJCSAgKHZvaWQpOwp2b2lkCSAgIGd0a19saXN0X2luc2VydF9pdGVtcwkgIChHdGtMaXN0
CSAgICAqbGlzdCwKCQkJCQkgICBHTGlzdAkgICAgKml0ZW1zLAoJCQkJCSAgIGdpbnQJCSAgICAg
cG9zaXRpb24pOwp2b2lkCSAgIGd0a19saXN0X2FwcGVuZF9pdGVtcwkgIChHdGtMaXN0CSAgICAq
bGlzdCwKCQkJCQkgICBHTGlzdAkgICAgKml0ZW1zKTsKdm9pZAkgICBndGtfbGlzdF9wcmVwZW5k
X2l0ZW1zCSAgKEd0a0xpc3QJICAgICpsaXN0LAoJCQkJCSAgIEdMaXN0CSAgICAqaXRlbXMpOwp2
b2lkCSAgIGd0a19saXN0X3JlbW92ZV9pdGVtcwkgIChHdGtMaXN0CSAgICAqbGlzdCwKCQkJCQkg
ICBHTGlzdAkgICAgKml0ZW1zKTsKdm9pZAkgICBndGtfbGlzdF9yZW1vdmVfaXRlbXNfbm9fdW5y
ZWYgKEd0a0xpc3QJICAgICpsaXN0LAoJCQkJCSAgIEdMaXN0CSAgICAqaXRlbXMpOwp2b2lkCSAg
IGd0a19saXN0X2NsZWFyX2l0ZW1zCQkgIChHdGtMaXN0CSAgICAqbGlzdCwKCQkJCQkgICBnaW50
CQkgICAgIHN0YXJ0LAoJCQkJCSAgIGdpbnQJCSAgICAgZW5kKTsKdm9pZAkgICBndGtfbGlzdF9z
ZWxlY3RfaXRlbQkJICAoR3RrTGlzdAkgICAgKmxpc3QsCgkJCQkJICAgZ2ludAkJICAgICBpdGVt
KTsKdm9pZAkgICBndGtfbGlzdF91bnNlbGVjdF9pdGVtCSAgKEd0a0xpc3QJICAgICpsaXN0LAoJ
CQkJCSAgIGdpbnQJCSAgICAgaXRlbSk7CnZvaWQJICAgZ3RrX2xpc3Rfc2VsZWN0X2NoaWxkCSAg
KEd0a0xpc3QJICAgICpsaXN0LAoJCQkJCSAgIEd0a1dpZGdldAkgICAgKmNoaWxkKTsKdm9pZAkg
ICBndGtfbGlzdF91bnNlbGVjdF9jaGlsZAkgIChHdGtMaXN0CSAgICAqbGlzdCwKCQkJCQkgICBH
dGtXaWRnZXQJICAgICpjaGlsZCk7CmdpbnQJICAgZ3RrX2xpc3RfY2hpbGRfcG9zaXRpb24JICAo
R3RrTGlzdAkgICAgKmxpc3QsCgkJCQkJICAgR3RrV2lkZ2V0CSAgICAqY2hpbGQpOwp2b2lkCSAg
IGd0a19saXN0X3NldF9zZWxlY3Rpb25fbW9kZQkgIChHdGtMaXN0CSAgICAqbGlzdCwKCQkJCQkg
ICBHdGtTZWxlY3Rpb25Nb2RlICBtb2RlKTsKCnZvaWQgICAgICAgZ3RrX2xpc3RfZXh0ZW5kX3Nl
bGVjdGlvbiAgICAgIChHdGtMaXN0ICAgICAgICAgICpsaXN0LAoJCQkJCSAgIEd0a1Njcm9sbFR5
cGUgICAgIHNjcm9sbF90eXBlLAoJCQkJCSAgIGdmbG9hdCAgICAgICAgICAgIHBvc2l0aW9uLAoJ
CQkJCSAgIGdib29sZWFuICAgICAgICAgIGF1dG9fc3RhcnRfc2VsZWN0aW9uKTsKdm9pZCAgICAg
ICBndGtfbGlzdF9zdGFydF9zZWxlY3Rpb24gICAgICAgKEd0a0xpc3QgICAgICAgICAgKmxpc3Qp
Owp2b2lkICAgICAgIGd0a19saXN0X2VuZF9zZWxlY3Rpb24gICAgICAgICAoR3RrTGlzdCAgICAg
ICAgICAqbGlzdCk7CnZvaWQgICAgICAgZ3RrX2xpc3Rfc2VsZWN0X2FsbCAgICAgICAgICAgIChH
dGtMaXN0ICAgICAgICAgICpsaXN0KTsKdm9pZCAgICAgICBndGtfbGlzdF91bnNlbGVjdF9hbGwg
ICAgICAgICAgKEd0a0xpc3QgICAgICAgICAgKmxpc3QpOwp2b2lkICAgICAgIGd0a19saXN0X3Nj
cm9sbF9ob3Jpem9udGFsICAgICAoR3RrTGlzdCAgICAgICAgICAqbGlzdCwKCQkJCQkgICBHdGtT
Y3JvbGxUeXBlICAgICBzY3JvbGxfdHlwZSwKCQkJCQkgICBnZmxvYXQgICAgICAgICAgICBwb3Np
dGlvbik7CnZvaWQgICAgICAgZ3RrX2xpc3Rfc2Nyb2xsX3ZlcnRpY2FsICAgICAgIChHdGtMaXN0
ICAgICAgICAgICpsaXN0LAoJCQkJCSAgIEd0a1Njcm9sbFR5cGUgICAgIHNjcm9sbF90eXBlLAoJ
CQkJCSAgIGdmbG9hdCAgICAgICAgICAgIHBvc2l0aW9uKTsKdm9pZCAgICAgICBndGtfbGlzdF90
b2dnbGVfYWRkX21vZGUgICAgICAgKEd0a0xpc3QgICAgICAgICAgKmxpc3QpOwp2b2lkICAgICAg
IGd0a19saXN0X3RvZ2dsZV9mb2N1c19yb3cgICAgICAoR3RrTGlzdCAgICAgICAgICAqbGlzdCk7
CnZvaWQgICAgICAgZ3RrX2xpc3RfdG9nZ2xlX3JvdyAgICAgICAgICAgIChHdGtMaXN0ICAgICAg
ICAgICpsaXN0LAoJCQkJCSAgIEd0a1dpZGdldCAgICAgICAgKml0ZW0pOwp2b2lkICAgICAgIGd0
a19saXN0X3VuZG9fc2VsZWN0aW9uICAgICAgICAoR3RrTGlzdCAgICAgICAgICAqbGlzdCk7CnZv
aWQgICAgICAgZ3RrX2xpc3RfZW5kX2RyYWdfc2VsZWN0aW9uICAgIChHdGtMaXN0ICAgICAgICAg
ICpsaXN0KTsKCgp9CgoKCgojIDgzICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvZ3RrL2d0a21lbnUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrbWVudXNoZWxsLmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgp0
eXBlZGVmIHN0cnVjdCBfR3RrTWVudVNoZWxsCSAgIEd0a01lbnVTaGVsbDsKdHlwZWRlZiBzdHJ1
Y3QgX0d0a01lbnVTaGVsbENsYXNzICBHdGtNZW51U2hlbGxDbGFzczsKCnN0cnVjdCBfR3RrTWVu
dVNoZWxsCnsKICBHdGtDb250YWluZXIgY29udGFpbmVyOwogIAogIEdMaXN0ICpjaGlsZHJlbjsK
ICBHdGtXaWRnZXQgKmFjdGl2ZV9tZW51X2l0ZW07CiAgR3RrV2lkZ2V0ICpwYXJlbnRfbWVudV9z
aGVsbDsKICAKICBndWludCBhY3RpdmUgOiAxOwogIGd1aW50IGhhdmVfZ3JhYiA6IDE7CiAgZ3Vp
bnQgaGF2ZV94Z3JhYiA6IDE7CiAgZ3VpbnQgYnV0dG9uIDogMjsKICBndWludCBpZ25vcmVfbGVh
dmUgOiAxOwogIGd1aW50IG1lbnVfZmxhZyA6IDE7CiAgZ3VpbnQgaWdub3JlX2VudGVyIDogMTsK
ICAKICBndWludDMyIGFjdGl2YXRlX3RpbWU7Cn07CgpzdHJ1Y3QgX0d0a01lbnVTaGVsbENsYXNz
CnsKICBHdGtDb250YWluZXJDbGFzcyBwYXJlbnRfY2xhc3M7CiAgCiAgZ3VpbnQgc3VibWVudV9w
bGFjZW1lbnQgOiAxOwogIAogIHZvaWQgKCpkZWFjdGl2YXRlKSAgICAgKEd0a01lbnVTaGVsbCAq
bWVudV9zaGVsbCk7CiAgdm9pZCAoKnNlbGVjdGlvbl9kb25lKSAoR3RrTWVudVNoZWxsICptZW51
X3NoZWxsKTsKCiAgdm9pZCAoKm1vdmVfY3VycmVudCkgICAgIChHdGtNZW51U2hlbGwgICAgICAg
ICptZW51X3NoZWxsLAoJCQkgICAgR3RrTWVudURpcmVjdGlvblR5cGUgZGlyZWN0aW9uKTsKICB2
b2lkICgqYWN0aXZhdGVfY3VycmVudCkgKEd0a01lbnVTaGVsbCAqbWVudV9zaGVsbCwKCQkJICAg
IGdib29sZWFuICAgICAgZm9yY2VfaGlkZSk7CiAgdm9pZCAoKmNhbmNlbCkgICAgICAgICAgIChH
dGtNZW51U2hlbGwgKm1lbnVfc2hlbGwpOwp9OwoKCkd0a1R5cGUgZ3RrX21lbnVfc2hlbGxfZ2V0
X3R5cGUJICAodm9pZCk7CnZvaWQJZ3RrX21lbnVfc2hlbGxfYXBwZW5kCSAgKEd0a01lbnVTaGVs
bCAqbWVudV9zaGVsbCwKCQkJCSAgIEd0a1dpZGdldAkqY2hpbGQpOwp2b2lkCWd0a19tZW51X3No
ZWxsX3ByZXBlbmQJICAoR3RrTWVudVNoZWxsICptZW51X3NoZWxsLAoJCQkJICAgR3RrV2lkZ2V0
CSpjaGlsZCk7CnZvaWQJZ3RrX21lbnVfc2hlbGxfaW5zZXJ0CSAgKEd0a01lbnVTaGVsbCAqbWVu
dV9zaGVsbCwKCQkJCSAgIEd0a1dpZGdldAkqY2hpbGQsCgkJCQkgICBnaW50CQkgcG9zaXRpb24p
Owp2b2lkCWd0a19tZW51X3NoZWxsX2RlYWN0aXZhdGUgKEd0a01lbnVTaGVsbCAqbWVudV9zaGVs
bCk7CnZvaWQgICAgZ3RrX21lbnVfc2hlbGxfc2VsZWN0X2l0ZW0gKEd0a01lbnVTaGVsbCAgICAg
ICptZW51X3NoZWxsLAoJCQkJICAgIEd0a1dpZGdldCAgICAgICAgICptZW51X2l0ZW0pOwp2b2lk
ICAgIGd0a19tZW51X3NoZWxsX2Rlc2VsZWN0ICAgIChHdGtNZW51U2hlbGwgICAgICAqbWVudV9z
aGVsbCk7CnZvaWQgICAgZ3RrX21lbnVfc2hlbGxfYWN0aXZhdGVfaXRlbSAgKEd0a01lbnVTaGVs
bCAgICAgICptZW51X3NoZWxsLAoJCQkJICAgICAgIEd0a1dpZGdldCAgICAgICAgICptZW51X2l0
ZW0sCgkJCQkgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgIGZvcmNlX2RlYWN0aXZhdGUpOwoKCgp9
CgoKCgojIDMzICIvdXNyL2luY2x1ZGUvZ3RrL2d0a21lbnUuaCIgMiAzCgoKCgpleHRlcm4gIkMi
IHsKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtNZW51CSAgICAgIEd0a01lbnU7CnR5cGVk
ZWYgc3RydWN0IF9HdGtNZW51Q2xhc3MgIEd0a01lbnVDbGFzczsKCnR5cGVkZWYgdm9pZCAoKkd0
a01lbnVQb3NpdGlvbkZ1bmMpIChHdGtNZW51ICAgKm1lbnUsCgkJCQkgICAgIGdpbnQgICAgICAq
eCwKCQkJCSAgICAgZ2ludCAgICAgICp5LAoJCQkJICAgICBncG9pbnRlcgl1c2VyX2RhdGEpOwp0
eXBlZGVmIHZvaWQgKCpHdGtNZW51RGV0YWNoRnVuYykgICAoR3RrV2lkZ2V0ICphdHRhY2hfd2lk
Z2V0LAoJCQkJICAgICBHdGtNZW51ICAgKm1lbnUpOwoKc3RydWN0IF9HdGtNZW51CnsKICBHdGtN
ZW51U2hlbGwgbWVudV9zaGVsbDsKICAKICBHdGtXaWRnZXQgKnBhcmVudF9tZW51X2l0ZW07CiAg
R3RrV2lkZ2V0ICpvbGRfYWN0aXZlX21lbnVfaXRlbTsKICAKICBHdGtBY2NlbEdyb3VwICphY2Nl
bF9ncm91cDsKICBHdGtNZW51UG9zaXRpb25GdW5jIHBvc2l0aW9uX2Z1bmM7CiAgZ3BvaW50ZXIg
cG9zaXRpb25fZnVuY19kYXRhOwoKICAgCgoKCiAgR3RrV2lkZ2V0ICp0b3BsZXZlbDsKICBHdGtX
aWRnZXQgKnRlYXJvZmZfd2luZG93OwoKICBndWludCB0b3JuX29mZiA6IDE7Cn07CgpzdHJ1Y3Qg
X0d0a01lbnVDbGFzcwp7CiAgR3RrTWVudVNoZWxsQ2xhc3MgcGFyZW50X2NsYXNzOwp9OwoKCkd0
a1R5cGUJICAgZ3RrX21lbnVfZ2V0X3R5cGUJCSAgKHZvaWQpOwpHdGtXaWRnZXQqIGd0a19tZW51
X25ldwkJCSAgKHZvaWQpOwoKIAp2b2lkCSAgIGd0a19tZW51X2FwcGVuZAkJICAoR3RrTWVudQkg
ICAgICAgKm1lbnUsCgkJCQkJICAgR3RrV2lkZ2V0CSAgICAgICAqY2hpbGQpOwp2b2lkCSAgIGd0
a19tZW51X3ByZXBlbmQJCSAgKEd0a01lbnUJICAgICAgICptZW51LAoJCQkJCSAgIEd0a1dpZGdl
dAkgICAgICAgKmNoaWxkKTsKdm9pZAkgICBndGtfbWVudV9pbnNlcnQJCSAgKEd0a01lbnUJICAg
ICAgICptZW51LAoJCQkJCSAgIEd0a1dpZGdldAkgICAgICAgKmNoaWxkLAoJCQkJCSAgIGdpbnQJ
CQlwb3NpdGlvbik7CgogCnZvaWQJICAgZ3RrX21lbnVfcG9wdXAJCSAgKEd0a01lbnUJICAgICAg
ICptZW51LAoJCQkJCSAgIEd0a1dpZGdldAkgICAgICAgKnBhcmVudF9tZW51X3NoZWxsLAoJCQkJ
CSAgIEd0a1dpZGdldAkgICAgICAgKnBhcmVudF9tZW51X2l0ZW0sCgkJCQkJICAgR3RrTWVudVBv
c2l0aW9uRnVuYwlmdW5jLAoJCQkJCSAgIGdwb2ludGVyCQlkYXRhLAoJCQkJCSAgIGd1aW50CQli
dXR0b24sCgkJCQkJICAgZ3VpbnQzMgkJYWN0aXZhdGVfdGltZSk7CgogCgoKdm9pZAkgICBndGtf
bWVudV9yZXBvc2l0aW9uCQkgIChHdGtNZW51CSAgICAgICAqbWVudSk7Cgp2b2lkCSAgIGd0a19t
ZW51X3BvcGRvd24JCSAgKEd0a01lbnUJICAgICAgICptZW51KTsKCiAKCgpHdGtXaWRnZXQqIGd0
a19tZW51X2dldF9hY3RpdmUJCSAgKEd0a01lbnUJICAgICAgICptZW51KTsKdm9pZAkgICBndGtf
bWVudV9zZXRfYWN0aXZlCQkgIChHdGtNZW51CSAgICAgICAqbWVudSwKCQkJCQkgICBndWludAkJ
aW5kZXgpOwoKIAoKCnZvaWQJICAgICAgIGd0a19tZW51X3NldF9hY2NlbF9ncm91cAkgIChHdGtN
ZW51CSAgICAgICAqbWVudSwKCQkJCQkgICBHdGtBY2NlbEdyb3VwICAgICAgICphY2NlbF9ncm91
cCk7Ckd0a0FjY2VsR3JvdXAqIGd0a19tZW51X2dldF9hY2NlbF9ncm91cAkgIChHdGtNZW51CSAg
ICAgICAqbWVudSk7CgogCgoKR3RrQWNjZWxHcm91cCogZ3RrX21lbnVfZ2V0X3VsaW5lX2FjY2Vs
X2dyb3VwICAgIChHdGtNZW51ICAgICAgICAgKm1lbnUpOwpHdGtBY2NlbEdyb3VwKiBndGtfbWVu
dV9lbnN1cmVfdWxpbmVfYWNjZWxfZ3JvdXAgKEd0a01lbnUgICAgICAgICAqbWVudSk7CgoKIAoK
Cgp2b2lkCSAgIGd0a19tZW51X2F0dGFjaF90b193aWRnZXQJICAoR3RrTWVudQkgICAgICAgKm1l
bnUsCgkJCQkJICAgR3RrV2lkZ2V0CSAgICAgICAqYXR0YWNoX3dpZGdldCwKCQkJCQkgICBHdGtN
ZW51RGV0YWNoRnVuYwlkZXRhY2hlcik7CnZvaWQJICAgZ3RrX21lbnVfZGV0YWNoCQkgIChHdGtN
ZW51CSAgICAgICAqbWVudSk7CgogCgoKCkd0a1dpZGdldCogZ3RrX21lbnVfZ2V0X2F0dGFjaF93
aWRnZXQJICAoR3RrTWVudQkgICAgICAgKm1lbnUpOwoKdm9pZCAgICAgICBndGtfbWVudV9zZXRf
dGVhcm9mZl9zdGF0ZSAgICAgKEd0a01lbnUgICAgICAgICAgICAgKm1lbnUsCgkJCQkJICAgZ2Jv
b2xlYW4gICAgICAgICAgICAgdG9ybl9vZmYpOwoKIAoKCnZvaWQgICAgICAgZ3RrX21lbnVfc2V0
X3RpdGxlICAgICAgICAgICAgIChHdGtNZW51ICAgICAgICAgICAgICptZW51LAoJCQkJCSAgIGNv
bnN0IGdjaGFyICAgICAgICAgKnRpdGxlKTsKCnZvaWQgICAgICAgZ3RrX21lbnVfcmVvcmRlcl9j
aGlsZCAgICAgICAgIChHdGtNZW51ICAgICAgICAgICAgICptZW51LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrV2lkZ2V0ICAgICAgICAgICAqY2hpbGQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAg
ICAgIHBvc2l0aW9uKTsKCgp9CgoKCgojIDg2ICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMK
CiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGttZW51YmFyLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0
IF9HdGtNZW51QmFyICAgICAgIEd0a01lbnVCYXI7CnR5cGVkZWYgc3RydWN0IF9HdGtNZW51QmFy
Q2xhc3MgIEd0a01lbnVCYXJDbGFzczsKCnN0cnVjdCBfR3RrTWVudUJhcgp7CiAgR3RrTWVudVNo
ZWxsIG1lbnVfc2hlbGw7CgogIEd0a1NoYWRvd1R5cGUgc2hhZG93X3R5cGU7Cn07CgpzdHJ1Y3Qg
X0d0a01lbnVCYXJDbGFzcwp7CiAgR3RrTWVudVNoZWxsQ2xhc3MgcGFyZW50X2NsYXNzOwp9OwoK
Ckd0a1R5cGUgICAgZ3RrX21lbnVfYmFyX2dldF90eXBlICAgICAgICAodm9pZCk7Ckd0a1dpZGdl
dCogZ3RrX21lbnVfYmFyX25ldyAgICAgICAgICAgICAodm9pZCk7CnZvaWQgICAgICAgZ3RrX21l
bnVfYmFyX2FwcGVuZCAgICAgICAgICAoR3RrTWVudUJhciAgICAqbWVudV9iYXIsCgkJCQkJIEd0
a1dpZGdldCAgICAgKmNoaWxkKTsKdm9pZCAgICAgICBndGtfbWVudV9iYXJfcHJlcGVuZCAgICAg
ICAgIChHdGtNZW51QmFyICAgICptZW51X2JhciwKCQkJCQkgR3RrV2lkZ2V0ICAgICAqY2hpbGQp
Owp2b2lkICAgICAgIGd0a19tZW51X2Jhcl9pbnNlcnQgICAgICAgICAgKEd0a01lbnVCYXIgICAg
Km1lbnVfYmFyLAoJCQkJCSBHdGtXaWRnZXQgICAgICpjaGlsZCwKCQkJCQkgZ2ludCAgICAgICAg
ICAgcG9zaXRpb24pOwp2b2lkICAgICAgIGd0a19tZW51X2Jhcl9zZXRfc2hhZG93X3R5cGUgKEd0
a01lbnVCYXIgICAgKm1lbnVfYmFyLAoJCQkJCSBHdGtTaGFkb3dUeXBlICB0eXBlKTsKCgoKfQoK
CgoKIyA4NyAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKCgoKCgojIDEgIi91c3IvaW5j
bHVkZS9ndGsvZ3Rrb3B0aW9ubWVudS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a09wdGlv
bk1lbnUgICAgICAgR3RrT3B0aW9uTWVudTsKdHlwZWRlZiBzdHJ1Y3QgX0d0a09wdGlvbk1lbnVD
bGFzcyAgR3RrT3B0aW9uTWVudUNsYXNzOwoKc3RydWN0IF9HdGtPcHRpb25NZW51CnsKICBHdGtC
dXR0b24gYnV0dG9uOwogIAogIEd0a1dpZGdldCAqbWVudTsKICBHdGtXaWRnZXQgKm1lbnVfaXRl
bTsKICAKICBndWludDE2IHdpZHRoOwogIGd1aW50MTYgaGVpZ2h0Owp9OwoKc3RydWN0IF9HdGtP
cHRpb25NZW51Q2xhc3MKewogIEd0a0J1dHRvbkNsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtU
eXBlICAgIGd0a19vcHRpb25fbWVudV9nZXRfdHlwZSAgICAodm9pZCk7Ckd0a1dpZGdldCogZ3Rr
X29wdGlvbl9tZW51X25ldyAgICAgICAgICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfb3B0aW9uX21l
bnVfZ2V0X21lbnUgICAgKEd0a09wdGlvbk1lbnUgKm9wdGlvbl9tZW51KTsKdm9pZCAgICAgICBn
dGtfb3B0aW9uX21lbnVfc2V0X21lbnUgICAgKEd0a09wdGlvbk1lbnUgKm9wdGlvbl9tZW51LAoJ
CQkJCUd0a1dpZGdldCAgICAgKm1lbnUpOwp2b2lkICAgICAgIGd0a19vcHRpb25fbWVudV9yZW1v
dmVfbWVudSAoR3RrT3B0aW9uTWVudSAqb3B0aW9uX21lbnUpOwp2b2lkICAgICAgIGd0a19vcHRp
b25fbWVudV9zZXRfaGlzdG9yeSAoR3RrT3B0aW9uTWVudSAqb3B0aW9uX21lbnUsCgkJCQkJZ3Vp
bnQgICAgICAgICAgaW5kZXgpOwoKCgp9CgoKCgojIDk0ICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5o
IiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtwYWNrZXIuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoKCgp0eXBlZGVm
IHN0cnVjdCBfR3RrUGFja2VyICAgICAgICAgICBHdGtQYWNrZXI7CnR5cGVkZWYgc3RydWN0IF9H
dGtQYWNrZXJDbGFzcyAgICAgIEd0a1BhY2tlckNsYXNzOwp0eXBlZGVmIHN0cnVjdCBfR3RrUGFj
a2VyQ2hpbGQgICAgICBHdGtQYWNrZXJDaGlsZDsKCnR5cGVkZWYgZW51bQp7CiAgICBHVEtfUEFD
S19FWFBBTkQgICA9IDEgPDwgMCwJIAogICAgR1RLX0ZJTExfWCAgICAgICAgPSAxIDw8IDEsCiAg
ICBHVEtfRklMTF9ZICAgICAgICA9IDEgPDwgMgp9IEd0a1BhY2tlck9wdGlvbnM7Cgp0eXBlZGVm
IGVudW0KewogICAgR1RLX1NJREVfVE9QLAogICAgR1RLX1NJREVfQk9UVE9NLAogICAgR1RLX1NJ
REVfTEVGVCwKICAgIEdUS19TSURFX1JJR0hUCn0gR3RrU2lkZVR5cGU7Cgp0eXBlZGVmIGVudW0K
ewogIEdUS19BTkNIT1JfQ0VOVEVSLAogIEdUS19BTkNIT1JfTk9SVEgsCiAgR1RLX0FOQ0hPUl9O
T1JUSF9XRVNULAogIEdUS19BTkNIT1JfTk9SVEhfRUFTVCwKICBHVEtfQU5DSE9SX1NPVVRILAog
IEdUS19BTkNIT1JfU09VVEhfV0VTVCwKICBHVEtfQU5DSE9SX1NPVVRIX0VBU1QsCiAgR1RLX0FO
Q0hPUl9XRVNULAogIEdUS19BTkNIT1JfRUFTVCwKICBHVEtfQU5DSE9SX04JPQlHVEtfQU5DSE9S
X05PUlRILAogIEdUS19BTkNIT1JfTlcJPQlHVEtfQU5DSE9SX05PUlRIX1dFU1QsCiAgR1RLX0FO
Q0hPUl9ORQk9CUdUS19BTkNIT1JfTk9SVEhfRUFTVCwKICBHVEtfQU5DSE9SX1MJPQlHVEtfQU5D
SE9SX1NPVVRILAogIEdUS19BTkNIT1JfU1cJPQlHVEtfQU5DSE9SX1NPVVRIX1dFU1QsCiAgR1RL
X0FOQ0hPUl9TRQk9CUdUS19BTkNIT1JfU09VVEhfRUFTVCwKICBHVEtfQU5DSE9SX1cJPQlHVEtf
QU5DSE9SX1dFU1QsCiAgR1RLX0FOQ0hPUl9FCT0JR1RLX0FOQ0hPUl9FQVNUCn0gR3RrQW5jaG9y
VHlwZTsKCnN0cnVjdCBfR3RrUGFja2VyQ2hpbGQKewogIEd0a1dpZGdldCAqd2lkZ2V0OwogIAog
IEd0a0FuY2hvclR5cGUgYW5jaG9yOwogIEd0a1NpZGVUeXBlIHNpZGU7CiAgR3RrUGFja2VyT3B0
aW9ucyBvcHRpb25zOwogIAogIGd1aW50IHVzZV9kZWZhdWx0IDogMTsKICAKICBndWludCBib3Jk
ZXJfd2lkdGggOiAxNjsKICBndWludCBwYWRfeCA6IDE2OwogIGd1aW50IHBhZF95IDogMTY7CiAg
Z3VpbnQgaV9wYWRfeCA6IDE2OwogIGd1aW50IGlfcGFkX3kgOiAxNjsKfTsKCnN0cnVjdCBfR3Rr
UGFja2VyCnsKICBHdGtDb250YWluZXIgcGFyZW50OwogIAogIEdMaXN0ICpjaGlsZHJlbjsKICAK
ICBndWludCBzcGFjaW5nOwogIAogIGd1aW50IGRlZmF1bHRfYm9yZGVyX3dpZHRoIDogMTY7CiAg
Z3VpbnQgZGVmYXVsdF9wYWRfeCA6IDE2OwogIGd1aW50IGRlZmF1bHRfcGFkX3kgOiAxNjsKICBn
dWludCBkZWZhdWx0X2lfcGFkX3ggOiAxNjsKICBndWludCBkZWZhdWx0X2lfcGFkX3kgOiAxNjsK
fTsKCnN0cnVjdCBfR3RrUGFja2VyQ2xhc3MKewogIEd0a0NvbnRhaW5lckNsYXNzIHBhcmVudF9j
bGFzczsKfTsKCgpHdGtUeXBlICAgIGd0a19wYWNrZXJfZ2V0X3R5cGUJCSAgICAgICAodm9pZCk7
Ckd0a1dpZGdldCogZ3RrX3BhY2tlcl9uZXcgICAgICAgIAkgICAgICAgKHZvaWQpOwp2b2lkICAg
ICAgIGd0a19wYWNrZXJfYWRkX2RlZmF1bHRzCSAgICAgICAoR3RrUGFja2VyICAgICAgICpwYWNr
ZXIsIAoJCQkJCQlHdGtXaWRnZXQgICAgICAgKmNoaWxkLAoJCQkJCQlHdGtTaWRlVHlwZSAgICAg
IHNpZGUsCgkJCQkJCUd0a0FuY2hvclR5cGUgICAgYW5jaG9yLAoJCQkJCQlHdGtQYWNrZXJPcHRp
b25zIG9wdGlvbnMpOwp2b2lkICAgICAgIGd0a19wYWNrZXJfYWRkCQkgICAgICAgKEd0a1BhY2tl
ciAgICAgICAqcGFja2VyLCAKCQkJCQkJR3RrV2lkZ2V0ICAgICAgICpjaGlsZCwKCQkJCQkJR3Rr
U2lkZVR5cGUgICAgICBzaWRlLAoJCQkJCQlHdGtBbmNob3JUeXBlICAgIGFuY2hvciwKCQkJCQkJ
R3RrUGFja2VyT3B0aW9ucyBvcHRpb25zLAoJCQkJCQlndWludAkJIGJvcmRlcl93aWR0aCwgCgkJ
CQkJCWd1aW50CQkgcGFkX3gsIAoJCQkJCQlndWludAkJIHBhZF95LAoJCQkJCQlndWludAkJIGlf
cGFkX3gsCgkJCQkJCWd1aW50CQkgaV9wYWRfeSk7CnZvaWQgICAgICAgZ3RrX3BhY2tlcl9zZXRf
Y2hpbGRfcGFja2luZwkgICAgICAgKEd0a1BhY2tlcgkqcGFja2VyLCAKCQkJCQkJR3RrV2lkZ2V0
ICAgICAgICpjaGlsZCwKCQkJCQkJR3RrU2lkZVR5cGUgICAgICBzaWRlLAoJCQkJCQlHdGtBbmNo
b3JUeXBlICAgIGFuY2hvciwKCQkJCQkJR3RrUGFja2VyT3B0aW9ucyBvcHRpb25zLAoJCQkJCQln
dWludAkJIGJvcmRlcl93aWR0aCwgCgkJCQkJCWd1aW50CQkgcGFkX3gsIAoJCQkJCQlndWludAkJ
IHBhZF95LAoJCQkJCQlndWludAkJIGlfcGFkX3gsCgkJCQkJCWd1aW50CQkgaV9wYWRfeSk7CnZv
aWQJICAgZ3RrX3BhY2tlcl9yZW9yZGVyX2NoaWxkCSAgICAgICAoR3RrUGFja2VyCSpwYWNrZXIs
CgkJCQkJCUd0a1dpZGdldAkqY2hpbGQsCgkJCQkJCWdpbnQgICAgICAgICAgICAgcG9zaXRpb24p
Owp2b2lkICAgICAgIGd0a19wYWNrZXJfc2V0X3NwYWNpbmcJICAgICAgIChHdGtQYWNrZXIJKnBh
Y2tlciwKCQkJCQkJZ3VpbnQJCSBzcGFjaW5nKTsKdm9pZCAgICAgICBndGtfcGFja2VyX3NldF9k
ZWZhdWx0X2JvcmRlcl93aWR0aCAoR3RrUGFja2VyCSpwYWNrZXIsCgkJCQkJCWd1aW50CQkgYm9y
ZGVyKTsKdm9pZCAgICAgICBndGtfcGFja2VyX3NldF9kZWZhdWx0X3BhZAkgICAgICAgKEd0a1Bh
Y2tlcgkqcGFja2VyLAoJCQkJCQlndWludCAgICAgICAgICAgICBwYWRfeCwKCQkJCQkJZ3VpbnQg
ICAgICAgICAgICAgcGFkX3kpOwp2b2lkICAgICAgIGd0a19wYWNrZXJfc2V0X2RlZmF1bHRfaXBh
ZAkgICAgICAgKEd0a1BhY2tlcgkqcGFja2VyLAoJCQkJCQlndWludCAgICAgICAgICAgIGlfcGFk
X3gsCgkJCQkJCWd1aW50ICAgICAgICAgICAgaV9wYWRfeSk7CgoKCn0KCgoKCiMgOTUgIi91c3Iv
aW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtwaXhtYXAu
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsK
CgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtQaXhtYXAJR3RrUGl4bWFwOwp0eXBlZGVmIHN0
cnVjdCBfR3RrUGl4bWFwQ2xhc3MJR3RrUGl4bWFwQ2xhc3M7CgpzdHJ1Y3QgX0d0a1BpeG1hcAp7
CiAgR3RrTWlzYyBtaXNjOwogIAogIEdka1BpeG1hcCAqcGl4bWFwOwogIEdka0JpdG1hcCAqbWFz
azsKCiAgR2RrUGl4bWFwICpwaXhtYXBfaW5zZW5zaXRpdmU7CiAgZ3VpbnQgYnVpbGRfaW5zZW5z
aXRpdmUgOiAxOwp9OwoKc3RydWN0IF9HdGtQaXhtYXBDbGFzcwp7CiAgR3RrTWlzY0NsYXNzIHBh
cmVudF9jbGFzczsKfTsKCgpHdGtUeXBlCSAgIGd0a19waXhtYXBfZ2V0X3R5cGUJICh2b2lkKTsK
R3RrV2lkZ2V0KiBndGtfcGl4bWFwX25ldwkgKEdka1BpeG1hcCAgKnBpeG1hcCwKCQkJCSAgR2Rr
Qml0bWFwICAqbWFzayk7CnZvaWQJICAgZ3RrX3BpeG1hcF9zZXQJIChHdGtQaXhtYXAgICpwaXht
YXAsCgkJCQkgIEdka1BpeG1hcCAgKnZhbCwKCQkJCSAgR2RrQml0bWFwICAqbWFzayk7CnZvaWQJ
ICAgZ3RrX3BpeG1hcF9nZXQJIChHdGtQaXhtYXAgICpwaXhtYXAsCgkJCQkgIEdka1BpeG1hcCAq
KnZhbCwKCQkJCSAgR2RrQml0bWFwICoqbWFzayk7Cgp2b2lkICAgICAgIGd0a19waXhtYXBfc2V0
X2J1aWxkX2luc2Vuc2l0aXZlIChHdGtQaXhtYXAgKnBpeG1hcCwKCQkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGd1aW50IGJ1aWxkKTsKCgoKfQoKCgoKIyA5NyAiL3Vzci9pbmNsdWRlL2d0
ay9ndGsuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrcGx1Zy5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX0d0a1BsdWcgICAgICAgIEd0a1BsdWc7CnR5cGVkZWYgc3RydWN0IF9HdGtQbHVn
Q2xhc3MgICBHdGtQbHVnQ2xhc3M7CgoKc3RydWN0IF9HdGtQbHVnCnsKICBHdGtXaW5kb3cgd2lu
ZG93OwoKICBHZGtXaW5kb3cgKnNvY2tldF93aW5kb3c7CiAgZ2ludCBzYW1lX2FwcDsKfTsKCnN0
cnVjdCBfR3RrUGx1Z0NsYXNzCnsKICBHdGtXaW5kb3dDbGFzcyBwYXJlbnRfY2xhc3M7Cn07CgoK
Z3VpbnQgICAgICBndGtfcGx1Z19nZXRfdHlwZSAgKHZvaWQpOwp2b2lkICAgICAgIGd0a19wbHVn
X2NvbnN0cnVjdCAoR3RrUGx1ZyAqcGx1ZywgZ3VpbnQzMiBzb2NrZXRfaWQpOwpHdGtXaWRnZXQq
IGd0a19wbHVnX25ldyAgICAgICAoZ3VpbnQzMiBzb2NrZXRfaWQpOwoKCgp9CgoKCgojIDk4ICIv
dXNyL2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrcHJv
Z3Jlc3MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJu
ICJDIiB7CgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrUHJvZ3Jlc3MgICAgICAgR3RrUHJv
Z3Jlc3M7CnR5cGVkZWYgc3RydWN0IF9HdGtQcm9ncmVzc0NsYXNzICBHdGtQcm9ncmVzc0NsYXNz
OwoKCnN0cnVjdCBfR3RrUHJvZ3Jlc3MKewogIEd0a1dpZGdldCB3aWRnZXQ7CgogIEd0a0FkanVz
dG1lbnQgKmFkanVzdG1lbnQ7CiAgR2RrUGl4bWFwICAgICAqb2Zmc2NyZWVuX3BpeG1hcDsKICBn
Y2hhciAgICAgICAgICpmb3JtYXQ7CiAgZ2Zsb2F0ICAgICAgICAgeF9hbGlnbjsKICBnZmxvYXQg
ICAgICAgICB5X2FsaWduOwoKICBndWludCAgICAgICAgICBzaG93X3RleHQgOiAxOwogIGd1aW50
ICAgICAgICAgIGFjdGl2aXR5X21vZGUgOiAxOwp9OwoKc3RydWN0IF9HdGtQcm9ncmVzc0NsYXNz
CnsKICBHdGtXaWRnZXRDbGFzcyBwYXJlbnRfY2xhc3M7CgogIHZvaWQgKCogcGFpbnQpICAgICAg
ICAgICAgKEd0a1Byb2dyZXNzICpwcm9ncmVzcyk7CiAgdm9pZCAoKiB1cGRhdGUpICAgICAgICAg
ICAoR3RrUHJvZ3Jlc3MgKnByb2dyZXNzKTsKICB2b2lkICgqIGFjdF9tb2RlX2VudGVyKSAgIChH
dGtQcm9ncmVzcyAqcHJvZ3Jlc3MpOwp9OwoKCkd0a1R5cGUgICAgZ3RrX3Byb2dyZXNzX2dldF90
eXBlICAgICAgICAgICAgKHZvaWQpOwp2b2lkICAgICAgIGd0a19wcm9ncmVzc19zZXRfc2hvd190
ZXh0ICAgICAgIChHdGtQcm9ncmVzcyAgICpwcm9ncmVzcywKCQkJCQkgICAgIGdpbnQgICAgICAg
ICAgIHNob3dfdGV4dCk7CnZvaWQgICAgICAgZ3RrX3Byb2dyZXNzX3NldF90ZXh0X2FsaWdubWVu
dCAgKEd0a1Byb2dyZXNzICAgKnByb2dyZXNzLAoJCQkJCSAgICAgZ2Zsb2F0ICAgICAgICAgeF9h
bGlnbiwKCQkJCQkgICAgIGdmbG9hdCAgICAgICAgIHlfYWxpZ24pOwp2b2lkICAgICAgIGd0a19w
cm9ncmVzc19zZXRfZm9ybWF0X3N0cmluZyAgIChHdGtQcm9ncmVzcyAgICpwcm9ncmVzcywKCQkJ
CQkgICAgIGNvbnN0IGdjaGFyICAgKmZvcm1hdCk7CnZvaWQgICAgICAgZ3RrX3Byb2dyZXNzX3Nl
dF9hZGp1c3RtZW50ICAgICAgKEd0a1Byb2dyZXNzICAgKnByb2dyZXNzLAoJCQkJCSAgICAgR3Rr
QWRqdXN0bWVudCAqYWRqdXN0bWVudCk7CnZvaWQgICAgICAgZ3RrX3Byb2dyZXNzX2NvbmZpZ3Vy
ZSAgICAgICAgICAgKEd0a1Byb2dyZXNzICAgKnByb2dyZXNzLAoJCQkJCSAgICAgZ2Zsb2F0ICAg
ICAgICAgdmFsdWUsCgkJCQkJICAgICBnZmxvYXQgICAgICAgICBtaW4sCgkJCQkJICAgICBnZmxv
YXQgICAgICAgICBtYXgpOwp2b2lkICAgICAgIGd0a19wcm9ncmVzc19zZXRfcGVyY2VudGFnZSAg
ICAgIChHdGtQcm9ncmVzcyAgICpwcm9ncmVzcywKCQkJCQkgICAgIGdmbG9hdCAgICAgICAgIHBl
cmNlbnRhZ2UpOwp2b2lkICAgICAgIGd0a19wcm9ncmVzc19zZXRfdmFsdWUgICAgICAgICAgIChH
dGtQcm9ncmVzcyAgICpwcm9ncmVzcywKCQkJCQkgICAgIGdmbG9hdCAgICAgICAgIHZhbHVlKTsK
Z2Zsb2F0ICAgICBndGtfcHJvZ3Jlc3NfZ2V0X3ZhbHVlICAgICAgICAgICAoR3RrUHJvZ3Jlc3Mg
ICAqcHJvZ3Jlc3MpOwp2b2lkICAgICAgIGd0a19wcm9ncmVzc19zZXRfYWN0aXZpdHlfbW9kZSAg
IChHdGtQcm9ncmVzcyAgICpwcm9ncmVzcywKCQkJCQkgICAgIGd1aW50ICAgICAgICAgIGFjdGl2
aXR5X21vZGUpOwpnY2hhciogICAgIGd0a19wcm9ncmVzc19nZXRfY3VycmVudF90ZXh0ICAgIChH
dGtQcm9ncmVzcyAgICpwcm9ncmVzcyk7CmdjaGFyKiAgICAgZ3RrX3Byb2dyZXNzX2dldF90ZXh0
X2Zyb21fdmFsdWUgKEd0a1Byb2dyZXNzICAgKnByb2dyZXNzLAoJCQkJCSAgICAgZ2Zsb2F0ICAg
ICAgICAgdmFsdWUpOwpnZmxvYXQgICAgIGd0a19wcm9ncmVzc19nZXRfY3VycmVudF9wZXJjZW50
YWdlIChHdGtQcm9ncmVzcyAqcHJvZ3Jlc3MpOwpnZmxvYXQgICAgIGd0a19wcm9ncmVzc19nZXRf
cGVyY2VudGFnZV9mcm9tX3ZhbHVlIChHdGtQcm9ncmVzcyAqcHJvZ3Jlc3MsCgkJCQkJCSAgIGdm
bG9hdCAgICAgICB2YWx1ZSk7CgoKCn0KCgoKCiMgMTAwICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5o
IiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtwcm9ncmVzc2Jhci5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgX0d0a1Byb2dyZXNzQmFyICAgICAgIEd0a1Byb2dyZXNzQmFyOwp0eXBlZGVm
IHN0cnVjdCBfR3RrUHJvZ3Jlc3NCYXJDbGFzcyAgR3RrUHJvZ3Jlc3NCYXJDbGFzczsKCnR5cGVk
ZWYgZW51bQp7CiAgR1RLX1BST0dSRVNTX0NPTlRJTlVPVVMsCiAgR1RLX1BST0dSRVNTX0RJU0NS
RVRFCn0gR3RrUHJvZ3Jlc3NCYXJTdHlsZTsKCnR5cGVkZWYgZW51bQp7CiAgR1RLX1BST0dSRVNT
X0xFRlRfVE9fUklHSFQsCiAgR1RLX1BST0dSRVNTX1JJR0hUX1RPX0xFRlQsCiAgR1RLX1BST0dS
RVNTX0JPVFRPTV9UT19UT1AsCiAgR1RLX1BST0dSRVNTX1RPUF9UT19CT1RUT00KfSBHdGtQcm9n
cmVzc0Jhck9yaWVudGF0aW9uOwoKc3RydWN0IF9HdGtQcm9ncmVzc0Jhcgp7CiAgR3RrUHJvZ3Jl
c3MgcHJvZ3Jlc3M7CgogIEd0a1Byb2dyZXNzQmFyU3R5bGUgYmFyX3N0eWxlOwogIEd0a1Byb2dy
ZXNzQmFyT3JpZW50YXRpb24gb3JpZW50YXRpb247CgogIGd1aW50IGJsb2NrczsKICBnaW50ICBp
bl9ibG9jazsKCiAgZ2ludCAgYWN0aXZpdHlfcG9zOwogIGd1aW50IGFjdGl2aXR5X3N0ZXA7CiAg
Z3VpbnQgYWN0aXZpdHlfYmxvY2tzOwogIGd1aW50IGFjdGl2aXR5X2RpciA6IDE7Cn07CgpzdHJ1
Y3QgX0d0a1Byb2dyZXNzQmFyQ2xhc3MKewogIEd0a1Byb2dyZXNzQ2xhc3MgcGFyZW50X2NsYXNz
Owp9OwoKCkd0a1R5cGUgICAgZ3RrX3Byb2dyZXNzX2Jhcl9nZXRfdHlwZSAgICAgICAgICAgICAo
dm9pZCk7Ckd0a1dpZGdldCogZ3RrX3Byb2dyZXNzX2Jhcl9uZXcgICAgICAgICAgICAgICAgICAo
dm9pZCk7Ckd0a1dpZGdldCogZ3RrX3Byb2dyZXNzX2Jhcl9uZXdfd2l0aF9hZGp1c3RtZW50ICAo
R3RrQWRqdXN0bWVudCAgKmFkanVzdG1lbnQpOwp2b2lkICAgICAgIGd0a19wcm9ncmVzc19iYXJf
c2V0X2Jhcl9zdHlsZSAgICAgICAgKEd0a1Byb2dyZXNzQmFyICpwYmFyLAoJCQkJCQkgIEd0a1By
b2dyZXNzQmFyU3R5bGUgc3R5bGUpOwp2b2lkICAgICAgIGd0a19wcm9ncmVzc19iYXJfc2V0X2Rp
c2NyZXRlX2Jsb2NrcyAgKEd0a1Byb2dyZXNzQmFyICpwYmFyLAoJCQkJCQkgIGd1aW50ICAgICAg
ICAgICBibG9ja3MpOwp2b2lkICAgICAgIGd0a19wcm9ncmVzc19iYXJfc2V0X2FjdGl2aXR5X3N0
ZXAgICAgKEd0a1Byb2dyZXNzQmFyICpwYmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICBzdGVwKTsKdm9pZCAgICAgICBn
dGtfcHJvZ3Jlc3NfYmFyX3NldF9hY3Rpdml0eV9ibG9ja3MgIChHdGtQcm9ncmVzc0JhciAqcGJh
ciwKCQkJCQkJICBndWludCAgICAgICAgICAgYmxvY2tzKTsKdm9pZCAgICAgICBndGtfcHJvZ3Jl
c3NfYmFyX3NldF9vcmllbnRhdGlvbiAgICAgIChHdGtQcm9ncmVzc0JhciAqcGJhciwKCQkJCQkJ
ICBHdGtQcm9ncmVzc0Jhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKTsKdm9pZCAgICAgICBndGtf
cHJvZ3Jlc3NfYmFyX3VwZGF0ZSAgICAgICAgICAgICAgIChHdGtQcm9ncmVzc0JhciAqcGJhciwK
CQkJCQkJICBnZmxvYXQgICAgICAgICAgcGVyY2VudGFnZSk7CgoKCn0KCgoKCiMgMTAxICIvdXNy
L2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtyYWRpb2J1
dHRvbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAi
QyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a1JhZGlvQnV0dG9uCSAgICAgR3RrUmFk
aW9CdXR0b247CnR5cGVkZWYgc3RydWN0IF9HdGtSYWRpb0J1dHRvbkNsYXNzICBHdGtSYWRpb0J1
dHRvbkNsYXNzOwoKc3RydWN0IF9HdGtSYWRpb0J1dHRvbgp7CiAgR3RrQ2hlY2tCdXR0b24gY2hl
Y2tfYnV0dG9uOwogIAogIEdTTGlzdCAqZ3JvdXA7Cn07CgpzdHJ1Y3QgX0d0a1JhZGlvQnV0dG9u
Q2xhc3MKewogIEd0a0NoZWNrQnV0dG9uQ2xhc3MgcGFyZW50X2NsYXNzOwp9OwoKCkd0a1R5cGUJ
ICAgIGd0a19yYWRpb19idXR0b25fZ2V0X3R5cGUJICAgICAodm9pZCk7Ckd0a1dpZGdldCogIGd0
a19yYWRpb19idXR0b25fbmV3CSAgICAgKEdTTGlzdAkgICAgICpncm91cCk7Ckd0a1dpZGdldCog
IGd0a19yYWRpb19idXR0b25fbmV3X2Zyb21fd2lkZ2V0IChHdGtSYWRpb0J1dHRvbiAqZ3JvdXAp
OwpHdGtXaWRnZXQqICBndGtfcmFkaW9fYnV0dG9uX25ld193aXRoX2xhYmVsICAoR1NMaXN0CSAg
ICAgKmdyb3VwLAoJCQkJCSAgICAgIGNvbnN0IGdjaGFyICAgICpsYWJlbCk7Ckd0a1dpZGdldCog
IGd0a19yYWRpb19idXR0b25fbmV3X3dpdGhfbGFiZWxfZnJvbV93aWRnZXQgKEd0a1JhZGlvQnV0
dG9uICpncm91cCwKCQkJCQkJCSBjb25zdCBnY2hhcgkqbGFiZWwpOwpHU0xpc3QqCSAgICBndGtf
cmFkaW9fYnV0dG9uX2dyb3VwCSAgICAgKEd0a1JhZGlvQnV0dG9uICpyYWRpb19idXR0b24pOwp2
b2lkCSAgICBndGtfcmFkaW9fYnV0dG9uX3NldF9ncm91cAkgICAgIChHdGtSYWRpb0J1dHRvbiAq
cmFkaW9fYnV0dG9uLAoJCQkJCSAgICAgIEdTTGlzdAkgICAgICpncm91cCk7CgoKCn0KCgoKCiMg
MTAyICIvdXNyL2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9n
dGtyYWRpb21lbnVpdGVtLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrUmFkaW9NZW51SXRl
bSAgICAgICBHdGtSYWRpb01lbnVJdGVtOwp0eXBlZGVmIHN0cnVjdCBfR3RrUmFkaW9NZW51SXRl
bUNsYXNzICBHdGtSYWRpb01lbnVJdGVtQ2xhc3M7CgpzdHJ1Y3QgX0d0a1JhZGlvTWVudUl0ZW0K
ewogIEd0a0NoZWNrTWVudUl0ZW0gY2hlY2tfbWVudV9pdGVtOwogIAogIEdTTGlzdCAqZ3JvdXA7
Cn07CgpzdHJ1Y3QgX0d0a1JhZGlvTWVudUl0ZW1DbGFzcwp7CiAgR3RrQ2hlY2tNZW51SXRlbUNs
YXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtUeXBlICAgIGd0a19yYWRpb19tZW51X2l0ZW1fZ2V0
X3R5cGUJICAgICAgKHZvaWQpOwpHdGtXaWRnZXQqIGd0a19yYWRpb19tZW51X2l0ZW1fbmV3CSAg
ICAgIChHU0xpc3QJCSpncm91cCk7Ckd0a1dpZGdldCogZ3RrX3JhZGlvX21lbnVfaXRlbV9uZXdf
d2l0aF9sYWJlbCAoR1NMaXN0CQkqZ3JvdXAsCgkJCQkJICAgICAgIGNvbnN0IGdjaGFyCSpsYWJl
bCk7CkdTTGlzdCoJICAgZ3RrX3JhZGlvX21lbnVfaXRlbV9ncm91cAkgICAgICAoR3RrUmFkaW9N
ZW51SXRlbSAqcmFkaW9fbWVudV9pdGVtKTsKdm9pZAkgICBndGtfcmFkaW9fbWVudV9pdGVtX3Nl
dF9ncm91cCAgICAgIChHdGtSYWRpb01lbnVJdGVtICpyYWRpb19tZW51X2l0ZW0sCgkJCQkJICAg
ICAgIEdTTGlzdAkJKmdyb3VwKTsKCgoKfQoKCgoKIyAxMDMgIi91c3IvaW5jbHVkZS9ndGsvZ3Rr
LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtyYy5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCnR5cGVkZWYgZW51bSB7CiAg
R1RLX1JDX0ZHICAgPSAxIDw8IDAsCiAgR1RLX1JDX0JHICAgPSAxIDw8IDEsCiAgR1RLX1JDX1RF
WFQgPSAxIDw8IDIsCiAgR1RLX1JDX0JBU0UgPSAxIDw8IDMKfSBHdGtSY0ZsYWdzOwoKc3RydWN0
IF9HdGtSY1N0eWxlCnsKICBnY2hhciAqbmFtZTsKICBnY2hhciAqZm9udF9uYW1lOwogIGdjaGFy
ICpmb250c2V0X25hbWU7CiAgZ2NoYXIgKmJnX3BpeG1hcF9uYW1lWzVdOwoKICBHdGtSY0ZsYWdz
IGNvbG9yX2ZsYWdzWzVdOwogIEdka0NvbG9yICAgZmdbNV07CiAgR2RrQ29sb3IgICBiZ1s1XTsK
ICBHZGtDb2xvciAgIHRleHRbNV07CiAgR2RrQ29sb3IgICBiYXNlWzVdOwoKICBHdGtUaGVtZUVu
Z2luZSAqZW5naW5lOwogIGdwb2ludGVyICAgICAgICBlbmdpbmVfZGF0YTsKfTsKCnZvaWQJICBn
dGtfcmNfaW5pdAkJCSh2b2lkKTsKdm9pZCAgICAgIGd0a19yY19hZGRfZGVmYXVsdF9maWxlICAg
IChjb25zdCBnY2hhciAqZmlsZW5hbWUpOwp2b2lkICAgICAgZ3RrX3JjX3NldF9kZWZhdWx0X2Zp
bGVzICAgICAgKGdjaGFyICoqZmlsZW5hbWVzKTsKZ2NoYXIqKiAgIGd0a19yY19nZXRfZGVmYXVs
dF9maWxlcyAgICAgICh2b2lkKTsKdm9pZAkgIGd0a19yY19wYXJzZQkJCShjb25zdCBnY2hhciAq
ZmlsZW5hbWUpOwp2b2lkCSAgZ3RrX3JjX3BhcnNlX3N0cmluZwkJKGNvbnN0IGdjaGFyICpyY19z
dHJpbmcpOwpnYm9vbGVhbiAgZ3RrX3JjX3JlcGFyc2VfYWxsCQkodm9pZCk7Ckd0a1N0eWxlKiBn
dGtfcmNfZ2V0X3N0eWxlCQkoR3RrV2lkZ2V0ICAgKndpZGdldCk7CnZvaWQJICBndGtfcmNfYWRk
X3dpZGdldF9uYW1lX3N0eWxlCShHdGtSY1N0eWxlICAqcmNfc3R5bGUsCgkJCQkJIGNvbnN0IGdj
aGFyICpwYXR0ZXJuKTsKdm9pZAkgIGd0a19yY19hZGRfd2lkZ2V0X2NsYXNzX3N0eWxlIChHdGtS
Y1N0eWxlICAqcmNfc3R5bGUsCgkJCQkJIGNvbnN0IGdjaGFyICpwYXR0ZXJuKTsKdm9pZAkgIGd0
a19yY19hZGRfY2xhc3Nfc3R5bGUJKEd0a1JjU3R5bGUgICpyY19zdHlsZSwKCQkJCQkgY29uc3Qg
Z2NoYXIgKnBhdHRlcm4pOwoKR3RrUmNTdHlsZSogZ3RrX3JjX3N0eWxlX25ldyAgICAgICAgICAg
ICAgKHZvaWQpOwp2b2lkICAgICAgICBndGtfcmNfc3R5bGVfcmVmICAgICAgICAgICAgICAoR3Rr
UmNTdHlsZSAgKnJjX3N0eWxlKTsKdm9pZCAgICAgICAgZ3RrX3JjX3N0eWxlX3VucmVmICAgICAg
ICAgICAgKEd0a1JjU3R5bGUgICpyY19zdHlsZSk7CgogCgoKdHlwZWRlZglHZGtQaXhtYXAqICAo
Kkd0a0ltYWdlTG9hZGVyKSAJCShHZGtXaW5kb3cgICAJKndpbmRvdywKCQkJCQkJIEdka0NvbG9y
bWFwIAkqY29sb3JtYXAsCgkJCQkJCSBHZGtCaXRtYXAgICAgICoqbWFzaywKCQkJCQkJIEdka0Nv
bG9yICAgIAkqdHJhbnNwYXJlbnRfY29sb3IsCgkJCQkJCSBjb25zdCBnY2hhciAJKmZpbGVuYW1l
KTsKdm9pZAkJZ3RrX3JjX3NldF9pbWFnZV9sb2FkZXIgICAgICAJKEd0a0ltYWdlTG9hZGVyCSBs
b2FkZXIpOwoKR2RrUGl4bWFwKglndGtfcmNfbG9hZF9pbWFnZQkJKEdka0NvbG9ybWFwIAkqY29s
b3JtYXAsCgkJCQkJCSBHZGtDb2xvciAgICAJKnRyYW5zcGFyZW50X2NvbG9yLAoJCQkJCQkgY29u
c3QgZ2NoYXIgCSpmaWxlbmFtZSk7CmdjaGFyKgkJZ3RrX3JjX2ZpbmRfcGl4bWFwX2luX3BhdGgJ
KEdTY2FubmVyICAgIAkqc2Nhbm5lciwKCQkJCQkJIGNvbnN0IGdjaGFyCSpwaXhtYXBfZmlsZSk7
CmdjaGFyKgkJZ3RrX3JjX2ZpbmRfbW9kdWxlX2luX3BhdGgJKGNvbnN0IGdjaGFyIAkqbW9kdWxl
X2ZpbGUpOwpnY2hhcioJCWd0a19yY19nZXRfdGhlbWVfZGlyCQkodm9pZCk7CmdjaGFyKgkJZ3Rr
X3JjX2dldF9tb2R1bGVfZGlyCQkodm9pZCk7CgogCnR5cGVkZWYgZW51bSB7CiAgR1RLX1JDX1RP
S0VOX0lOVkFMSUQgPSBHX1RPS0VOX0xBU1QsCiAgR1RLX1JDX1RPS0VOX0lOQ0xVREUsCiAgR1RL
X1JDX1RPS0VOX05PUk1BTCwKICBHVEtfUkNfVE9LRU5fQUNUSVZFLAogIEdUS19SQ19UT0tFTl9Q
UkVMSUdIVCwKICBHVEtfUkNfVE9LRU5fU0VMRUNURUQsCiAgR1RLX1JDX1RPS0VOX0lOU0VOU0lU
SVZFLAogIEdUS19SQ19UT0tFTl9GRywKICBHVEtfUkNfVE9LRU5fQkcsCiAgR1RLX1JDX1RPS0VO
X0JBU0UsCiAgR1RLX1JDX1RPS0VOX1RFWFQsCiAgR1RLX1JDX1RPS0VOX0ZPTlQsCiAgR1RLX1JD
X1RPS0VOX0ZPTlRTRVQsCiAgR1RLX1JDX1RPS0VOX0JHX1BJWE1BUCwKICBHVEtfUkNfVE9LRU5f
UElYTUFQX1BBVEgsCiAgR1RLX1JDX1RPS0VOX1NUWUxFLAogIEdUS19SQ19UT0tFTl9CSU5ESU5H
LAogIEdUS19SQ19UT0tFTl9CSU5ELAogIEdUS19SQ19UT0tFTl9XSURHRVQsCiAgR1RLX1JDX1RP
S0VOX1dJREdFVF9DTEFTUywKICBHVEtfUkNfVE9LRU5fQ0xBU1MsCiAgR1RLX1JDX1RPS0VOX0xP
V0VTVCwKICBHVEtfUkNfVE9LRU5fR1RLLAogIEdUS19SQ19UT0tFTl9BUFBMSUNBVElPTiwKICBH
VEtfUkNfVE9LRU5fUkMsCiAgR1RLX1JDX1RPS0VOX0hJR0hFU1QsCiAgR1RLX1JDX1RPS0VOX0VO
R0lORSwKICBHVEtfUkNfVE9LRU5fTU9EVUxFX1BBVEgsCiAgR1RLX1JDX1RPS0VOX0xBU1QKfSBH
dGtSY1Rva2VuVHlwZTsKCmd1aW50CWd0a19yY19wYXJzZV9jb2xvcgkoR1NjYW5uZXIJICAgICAq
c2Nhbm5lciwKCQkJCSBHZGtDb2xvcgkgICAgICpjb2xvcik7Cmd1aW50CWd0a19yY19wYXJzZV9z
dGF0ZQkoR1NjYW5uZXIJICAgICAqc2Nhbm5lciwKCQkJCSBHdGtTdGF0ZVR5cGUJICAgICAqc3Rh
dGUpOwpndWludAlndGtfcmNfcGFyc2VfcHJpb3JpdHkJKEdTY2FubmVyCSAgICAgKnNjYW5uZXIs
CgkJCQkgR3RrUGF0aFByaW9yaXR5VHlwZSAqcHJpb3JpdHkpOwogICAgIAoKCgp9CgoKCgojIDEw
NSAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKCgojIDEgIi91c3IvaW5jbHVkZS9ndGsv
Z3Rrc2Nyb2xsZWR3aW5kb3cuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3ZpZXdwb3J0LmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgX0d0a1ZpZXdwb3J0ICAgICAgIEd0a1ZpZXdwb3J0Owp0eXBlZGVmIHN0cnVjdCBfR3Rr
Vmlld3BvcnRDbGFzcyAgR3RrVmlld3BvcnRDbGFzczsKCnN0cnVjdCBfR3RrVmlld3BvcnQKewog
IEd0a0JpbiBiaW47CgogIEd0a1NoYWRvd1R5cGUgc2hhZG93X3R5cGU7CiAgR2RrV2luZG93ICp2
aWV3X3dpbmRvdzsKICBHZGtXaW5kb3cgKmJpbl93aW5kb3c7CiAgR3RrQWRqdXN0bWVudCAqaGFk
anVzdG1lbnQ7CiAgR3RrQWRqdXN0bWVudCAqdmFkanVzdG1lbnQ7Cn07CgpzdHJ1Y3QgX0d0a1Zp
ZXdwb3J0Q2xhc3MKewogIEd0a0JpbkNsYXNzIHBhcmVudF9jbGFzczsKCiAgdm9pZAkoKnNldF9z
Y3JvbGxfYWRqdXN0bWVudHMpCShHdGtWaWV3cG9ydAkqdmlld3BvcnQsCgkJCQkJIEd0a0FkanVz
dG1lbnQJKmhhZGp1c3RtZW50LAoJCQkJCSBHdGtBZGp1c3RtZW50CSp2YWRqdXN0bWVudCk7Cn07
CgoKR3RrVHlwZSAgICAgICAgZ3RrX3ZpZXdwb3J0X2dldF90eXBlICAgICAgICAodm9pZCk7Ckd0
a1dpZGdldCogICAgIGd0a192aWV3cG9ydF9uZXcgICAgICAgICAgICAgKEd0a0FkanVzdG1lbnQg
KmhhZGp1c3RtZW50LAoJCQkJCSAgICAgR3RrQWRqdXN0bWVudCAqdmFkanVzdG1lbnQpOwpHdGtB
ZGp1c3RtZW50KiBndGtfdmlld3BvcnRfZ2V0X2hhZGp1c3RtZW50IChHdGtWaWV3cG9ydCAgICp2
aWV3cG9ydCk7Ckd0a0FkanVzdG1lbnQqIGd0a192aWV3cG9ydF9nZXRfdmFkanVzdG1lbnQgKEd0
a1ZpZXdwb3J0ICAgKnZpZXdwb3J0KTsKdm9pZCAgICAgICAgICAgZ3RrX3ZpZXdwb3J0X3NldF9o
YWRqdXN0bWVudCAoR3RrVmlld3BvcnQgICAqdmlld3BvcnQsCgkJCQkJICAgICBHdGtBZGp1c3Rt
ZW50ICphZGp1c3RtZW50KTsKdm9pZCAgICAgICAgICAgZ3RrX3ZpZXdwb3J0X3NldF92YWRqdXN0
bWVudCAoR3RrVmlld3BvcnQgICAqdmlld3BvcnQsCgkJCQkJICAgICBHdGtBZGp1c3RtZW50ICph
ZGp1c3RtZW50KTsKdm9pZCAgICAgICAgICAgZ3RrX3ZpZXdwb3J0X3NldF9zaGFkb3dfdHlwZSAo
R3RrVmlld3BvcnQgICAqdmlld3BvcnQsCgkJCQkJICAgICBHdGtTaGFkb3dUeXBlICB0eXBlKTsK
CgoKfQoKCgoKIyAzNCAiL3Vzci9pbmNsdWRlL2d0ay9ndGtzY3JvbGxlZHdpbmRvdy5oIiAyIDMK
CgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a1Njcm9sbGVkV2lu
ZG93ICAgICAgIEd0a1Njcm9sbGVkV2luZG93Owp0eXBlZGVmIHN0cnVjdCBfR3RrU2Nyb2xsZWRX
aW5kb3dDbGFzcyAgR3RrU2Nyb2xsZWRXaW5kb3dDbGFzczsKCnN0cnVjdCBfR3RrU2Nyb2xsZWRX
aW5kb3cKewogIEd0a0JpbiBjb250YWluZXI7CgogIEd0a1dpZGdldCAqaHNjcm9sbGJhcjsKICBH
dGtXaWRnZXQgKnZzY3JvbGxiYXI7CgogIGd1aW50IGhzY3JvbGxiYXJfcG9saWN5ICAgICAgOiAy
OwogIGd1aW50IHZzY3JvbGxiYXJfcG9saWN5ICAgICAgOiAyOwogIGd1aW50IGhzY3JvbGxiYXJf
dmlzaWJsZSAgICAgOiAxOwogIGd1aW50IHZzY3JvbGxiYXJfdmlzaWJsZSAgICAgOiAxOwogIGd1
aW50IHdpbmRvd19wbGFjZW1lbnQgICAgICAgOiAyOwp9OwoKc3RydWN0IF9HdGtTY3JvbGxlZFdp
bmRvd0NsYXNzCnsKICBHdGtCaW5DbGFzcyBwYXJlbnRfY2xhc3M7CiAgCiAgZ2ludCBzY3JvbGxi
YXJfc3BhY2luZzsKfTsKCgpHdGtUeXBlICAgICAgICBndGtfc2Nyb2xsZWRfd2luZG93X2dldF90
eXBlICAgICAgICAgICh2b2lkKTsKR3RrV2lkZ2V0KiAgICAgZ3RrX3Njcm9sbGVkX3dpbmRvd19u
ZXcgICAgICAgICAgICAgICAoR3RrQWRqdXN0bWVudCAgICAgKmhhZGp1c3RtZW50LAoJCQkJCQkg
ICAgICBHdGtBZGp1c3RtZW50ICAgICAqdmFkanVzdG1lbnQpOwp2b2lkICAgICAgICAgICBndGtf
c2Nyb2xsZWRfd2luZG93X3NldF9oYWRqdXN0bWVudCAgIChHdGtTY3JvbGxlZFdpbmRvdyAqc2Ny
b2xsZWRfd2luZG93LAoJCQkJCQkgICAgICBHdGtBZGp1c3RtZW50ICAgICAqaGFkanVzdG1lbnQp
Owp2b2lkICAgICAgICAgICBndGtfc2Nyb2xsZWRfd2luZG93X3NldF92YWRqdXN0bWVudCAgIChH
dGtTY3JvbGxlZFdpbmRvdyAqc2Nyb2xsZWRfd2luZG93LAoJCQkJCQkgICAgICBHdGtBZGp1c3Rt
ZW50ICAgICAqaGFkanVzdG1lbnQpOwpHdGtBZGp1c3RtZW50KiBndGtfc2Nyb2xsZWRfd2luZG93
X2dldF9oYWRqdXN0bWVudCAgIChHdGtTY3JvbGxlZFdpbmRvdyAqc2Nyb2xsZWRfd2luZG93KTsK
R3RrQWRqdXN0bWVudCogZ3RrX3Njcm9sbGVkX3dpbmRvd19nZXRfdmFkanVzdG1lbnQgICAoR3Rr
U2Nyb2xsZWRXaW5kb3cgKnNjcm9sbGVkX3dpbmRvdyk7CnZvaWQgICAgICAgICAgIGd0a19zY3Jv
bGxlZF93aW5kb3dfc2V0X3BvbGljeSAgICAgICAgKEd0a1Njcm9sbGVkV2luZG93ICpzY3JvbGxl
ZF93aW5kb3csCgkJCQkJCSAgICAgIEd0a1BvbGljeVR5cGUgICAgICBoc2Nyb2xsYmFyX3BvbGlj
eSwKCQkJCQkJICAgICAgR3RrUG9saWN5VHlwZSAgICAgIHZzY3JvbGxiYXJfcG9saWN5KTsKdm9p
ZCAgICAgICAgICAgZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcGxhY2VtZW50ICAgICAoR3RrU2Ny
b2xsZWRXaW5kb3cgKnNjcm9sbGVkX3dpbmRvdywKCQkJCQkJICAgICAgR3RrQ29ybmVyVHlwZSAg
ICAgIHdpbmRvd19wbGFjZW1lbnQpOwp2b2lkCSAgICAgICBndGtfc2Nyb2xsZWRfd2luZG93X2Fk
ZF93aXRoX3ZpZXdwb3J0IChHdGtTY3JvbGxlZFdpbmRvdyAqc2Nyb2xsZWRfd2luZG93LAoJCQkJ
CQkgICAgICBHdGtXaWRnZXQJCSpjaGlsZCk7CgoKCn0KCgoKCiMgMTA5ICIvdXNyL2luY2x1ZGUv
Z3RrL2d0ay5oIiAyIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGtzb2NrZXQuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCnR5
cGVkZWYgc3RydWN0IF9HdGtTb2NrZXQgICAgICAgIEd0a1NvY2tldDsKdHlwZWRlZiBzdHJ1Y3Qg
X0d0a1NvY2tldENsYXNzICAgR3RrU29ja2V0Q2xhc3M7CgpzdHJ1Y3QgX0d0a1NvY2tldAp7CiAg
R3RrQ29udGFpbmVyIGNvbnRhaW5lcjsKCiAgZ3VpbnQxNiByZXF1ZXN0X3dpZHRoOwogIGd1aW50
MTYgcmVxdWVzdF9oZWlnaHQ7CiAgZ3VpbnQxNiBjdXJyZW50X3dpZHRoOwogIGd1aW50MTYgY3Vy
cmVudF9oZWlnaHQ7CiAgCiAgR2RrV2luZG93ICpwbHVnX3dpbmRvdzsKICBndWludCBzYW1lX2Fw
cCA6IDE7CiAgZ3VpbnQgZm9jdXNfaW4gOiAxOwogIGd1aW50IGhhdmVfc2l6ZSA6IDE7CiAgZ3Vp
bnQgbmVlZF9tYXAgOiAxOwp9OwoKc3RydWN0IF9HdGtTb2NrZXRDbGFzcwp7CiAgR3RrQ29udGFp
bmVyQ2xhc3MgcGFyZW50X2NsYXNzOwp9OwoKCkd0a1dpZGdldCogICAgIGd0a19zb2NrZXRfbmV3
ICAgICAgKHZvaWQpOwpndWludCAgICAgICAgICBndGtfc29ja2V0X2dldF90eXBlICh2b2lkICk7
CnZvaWQgICAgICAgICAgIGd0a19zb2NrZXRfc3RlYWwgICAgKEd0a1NvY2tldCAqc29ja2V0LAoJ
CQkJICAgIGd1aW50MzIgd2lkKTsKCgp9CgoKCgojIDExMyAiL3Vzci9pbmNsdWRlL2d0ay9ndGsu
aCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9ndGsvZ3Rrc3BpbmJ1dHRvbi5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoK
CnR5cGVkZWYgZW51bQp7CiAgR1RLX1VQREFURV9BTFdBWVMsCiAgR1RLX1VQREFURV9JRl9WQUxJ
RAp9IEd0a1NwaW5CdXR0b25VcGRhdGVQb2xpY3k7Cgp0eXBlZGVmIGVudW0KewogIEdUS19TUElO
X1NURVBfRk9SV0FSRCwKICBHVEtfU1BJTl9TVEVQX0JBQ0tXQVJELAogIEdUS19TUElOX1BBR0Vf
Rk9SV0FSRCwKICBHVEtfU1BJTl9QQUdFX0JBQ0tXQVJELAogIEdUS19TUElOX0hPTUUsCiAgR1RL
X1NQSU5fRU5ELAogIEdUS19TUElOX1VTRVJfREVGSU5FRAp9IEd0a1NwaW5UeXBlOwoKCnR5cGVk
ZWYgc3RydWN0IF9HdGtTcGluQnV0dG9uCSAgICBHdGtTcGluQnV0dG9uOwp0eXBlZGVmIHN0cnVj
dCBfR3RrU3BpbkJ1dHRvbkNsYXNzICBHdGtTcGluQnV0dG9uQ2xhc3M7CgoKc3RydWN0IF9HdGtT
cGluQnV0dG9uCnsKICBHdGtFbnRyeSBlbnRyeTsKICAKICBHdGtBZGp1c3RtZW50ICphZGp1c3Rt
ZW50OwogIAogIEdka1dpbmRvdyAqcGFuZWw7CiAgR3RrU2hhZG93VHlwZSBzaGFkb3dfdHlwZTsK
ICAKICBndWludDMyIHRpbWVyOwogIGd1aW50MzIgZXZfdGltZTsKICAKICBnZmxvYXQgY2xpbWJf
cmF0ZTsKICBnZmxvYXQgdGltZXJfc3RlcDsKICAKICBHdGtTcGluQnV0dG9uVXBkYXRlUG9saWN5
IHVwZGF0ZV9wb2xpY3k7CiAgCiAgZ3VpbnQgaW5fY2hpbGQgOiAyOwogIGd1aW50IGNsaWNrX2No
aWxkIDogMjsKICBndWludCBidXR0b24gOiAyOwogIGd1aW50IG5lZWRfdGltZXIgOiAxOwogIGd1
aW50IHRpbWVyX2NhbGxzIDogMzsKICBndWludCBkaWdpdHMgOiAzOwogIGd1aW50IG51bWVyaWMg
OiAxOwogIGd1aW50IHdyYXAgOiAxOwogIGd1aW50IHNuYXBfdG9fdGlja3MgOiAxOwp9OwoKc3Ry
dWN0IF9HdGtTcGluQnV0dG9uQ2xhc3MKewogIEd0a0VudHJ5Q2xhc3MgcGFyZW50X2NsYXNzOwp9
OwoKCkd0a1R5cGUJCWd0a19zcGluX2J1dHRvbl9nZXRfdHlwZQkgICAodm9pZCk7Cgp2b2lkCQln
dGtfc3Bpbl9idXR0b25fY29uZmlndXJlCSAgIChHdGtTcGluQnV0dG9uICAqc3Bpbl9idXR0b24s
CgkJCQkJCSAgICBHdGtBZGp1c3RtZW50ICAqYWRqdXN0bWVudCwKCQkJCQkJICAgIGdmbG9hdAkg
ICAgY2xpbWJfcmF0ZSwKCQkJCQkJICAgIGd1aW50CSAgICBkaWdpdHMpOwoKR3RrV2lkZ2V0Kgln
dGtfc3Bpbl9idXR0b25fbmV3CQkgICAoR3RrQWRqdXN0bWVudCAgKmFkanVzdG1lbnQsCgkJCQkJ
CSAgICBnZmxvYXQJICAgIGNsaW1iX3JhdGUsCgkJCQkJCSAgICBndWludAkgICAgZGlnaXRzKTsK
CnZvaWQJCWd0a19zcGluX2J1dHRvbl9zZXRfYWRqdXN0bWVudAkgICAoR3RrU3BpbkJ1dHRvbiAg
KnNwaW5fYnV0dG9uLAoJCQkJCQkgICAgR3RrQWRqdXN0bWVudCAgKmFkanVzdG1lbnQpOwoKR3Rr
QWRqdXN0bWVudCoJZ3RrX3NwaW5fYnV0dG9uX2dldF9hZGp1c3RtZW50CSAgIChHdGtTcGluQnV0
dG9uICAqc3Bpbl9idXR0b24pOwoKdm9pZAkJZ3RrX3NwaW5fYnV0dG9uX3NldF9kaWdpdHMJICAg
KEd0a1NwaW5CdXR0b24gICpzcGluX2J1dHRvbiwKCQkJCQkJICAgIGd1aW50CSAgICBkaWdpdHMp
OwoKZ2Zsb2F0CQlndGtfc3Bpbl9idXR0b25fZ2V0X3ZhbHVlX2FzX2Zsb2F0IChHdGtTcGluQnV0
dG9uICAqc3Bpbl9idXR0b24pOwoKZ2ludAkJZ3RrX3NwaW5fYnV0dG9uX2dldF92YWx1ZV9hc19p
bnQgICAoR3RrU3BpbkJ1dHRvbiAgKnNwaW5fYnV0dG9uKTsKCnZvaWQJCWd0a19zcGluX2J1dHRv
bl9zZXRfdmFsdWUJICAgKEd0a1NwaW5CdXR0b24gICpzcGluX2J1dHRvbiwgCgkJCQkJCSAgICBn
ZmxvYXQJICAgIHZhbHVlKTsKCnZvaWQJCWd0a19zcGluX2J1dHRvbl9zZXRfdXBkYXRlX3BvbGlj
eSAgKEd0a1NwaW5CdXR0b24gICpzcGluX2J1dHRvbiwKCQkJCQkJICAgIEd0a1NwaW5CdXR0b25V
cGRhdGVQb2xpY3kgIHBvbGljeSk7Cgp2b2lkCQlndGtfc3Bpbl9idXR0b25fc2V0X251bWVyaWMJ
ICAgKEd0a1NwaW5CdXR0b24gICpzcGluX2J1dHRvbiwKCQkJCQkJICAgIGdib29sZWFuCSAgICBu
dW1lcmljKTsKCnZvaWQJCWd0a19zcGluX2J1dHRvbl9zcGluCQkgICAoR3RrU3BpbkJ1dHRvbiAg
KnNwaW5fYnV0dG9uLAoJCQkJCQkgICAgR3RrU3BpblR5cGUgICAgIGRpcmVjdGlvbiwKCQkJCQkJ
ICAgIGdmbG9hdAkgICAgaW5jcmVtZW50KTsKCnZvaWQJCWd0a19zcGluX2J1dHRvbl9zZXRfd3Jh
cAkgICAoR3RrU3BpbkJ1dHRvbiAgKnNwaW5fYnV0dG9uLAoJCQkJCQkgICAgZ2Jvb2xlYW4JICAg
IHdyYXApOwoKdm9pZAkJZ3RrX3NwaW5fYnV0dG9uX3NldF9zaGFkb3dfdHlwZQkgICAoR3RrU3Bp
bkJ1dHRvbiAgKnNwaW5fYnV0dG9uLAoJCQkJCQkgICAgR3RrU2hhZG93VHlwZSAgIHNoYWRvd190
eXBlKTsKCnZvaWQJCWd0a19zcGluX2J1dHRvbl9zZXRfc25hcF90b190aWNrcyAgKEd0a1NwaW5C
dXR0b24gICpzcGluX2J1dHRvbiwKCQkJCQkJICAgIGdib29sZWFuCSAgICBzbmFwX3RvX3RpY2tz
KTsKdm9pZCAgICAgICAgICAgIGd0a19zcGluX2J1dHRvbl91cGRhdGUgICAgICAgICAgICAgKEd0
a1NwaW5CdXR0b24gICpzcGluX2J1dHRvbik7CgoKCgp9CgoKCgojIDExNCAiL3Vzci9pbmNsdWRl
L2d0ay9ndGsuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3N0YXR1c2Jhci5oIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoK
dHlwZWRlZiBzdHJ1Y3QgX0d0a1N0YXR1c2JhciAgICAgIEd0a1N0YXR1c2JhcjsKdHlwZWRlZiBz
dHJ1Y3QgX0d0a1N0YXR1c2JhckNsYXNzIEd0a1N0YXR1c2JhckNsYXNzOwp0eXBlZGVmIHN0cnVj
dCBfR3RrU3RhdHVzYmFyTXNnIEd0a1N0YXR1c2Jhck1zZzsKCnN0cnVjdCBfR3RrU3RhdHVzYmFy
CnsKICBHdGtIQm94IHBhcmVudF93aWRnZXQ7CgogIEd0a1dpZGdldCAqZnJhbWU7CiAgR3RrV2lk
Z2V0ICpsYWJlbDsKCiAgR1NMaXN0ICptZXNzYWdlczsKICBHU0xpc3QgKmtleXM7CgogIGd1aW50
IHNlcV9jb250ZXh0X2lkOwogIGd1aW50IHNlcV9tZXNzYWdlX2lkOwp9OwoKc3RydWN0IF9HdGtT
dGF0dXNiYXJDbGFzcwp7CiAgR3RrSEJveENsYXNzIHBhcmVudF9jbGFzczsKCiAgR01lbUNodW5r
ICptZXNzYWdlc19tZW1fY2h1bms7CgogIHZvaWQJKCp0ZXh0X3B1c2hlZCkJKEd0a1N0YXR1c2Jh
cgkqc3RhdHVzYmFyLAoJCQkgZ3VpbnQJCSBjb250ZXh0X2lkLAoJCQkgY29uc3QgZ2NoYXIJKnRl
eHQpOwogIHZvaWQJKCp0ZXh0X3BvcHBlZCkJKEd0a1N0YXR1c2Jhcgkqc3RhdHVzYmFyLAoJCQkg
Z3VpbnQJCSBjb250ZXh0X2lkLAoJCQkgY29uc3QgZ2NoYXIJKnRleHQpOwp9OwoKc3RydWN0IF9H
dGtTdGF0dXNiYXJNc2cKewogIGdjaGFyICp0ZXh0OwogIGd1aW50IGNvbnRleHRfaWQ7CiAgZ3Vp
bnQgbWVzc2FnZV9pZDsKfTsKCmd1aW50ICAgICAgZ3RrX3N0YXR1c2Jhcl9nZXRfdHlwZSAgICAg
CSh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfc3RhdHVzYmFyX25ldyAgICAgICAgICAJKHZvaWQpOwpn
dWludAkgICBndGtfc3RhdHVzYmFyX2dldF9jb250ZXh0X2lkCShHdGtTdGF0dXNiYXIgKnN0YXR1
c2JhciwKCQkJCQkgY29uc3QgZ2NoYXIgICpjb250ZXh0X2Rlc2NyaXB0aW9uKTsKIApndWludCAg
ICAgIGd0a19zdGF0dXNiYXJfcHVzaCAgICAgICAgICAJKEd0a1N0YXR1c2JhciAqc3RhdHVzYmFy
LAoJCQkJCSBndWludAkgICAgICAgY29udGV4dF9pZCwKCQkJCQkgY29uc3QgZ2NoYXIgICp0ZXh0
KTsKdm9pZCAgICAgICBndGtfc3RhdHVzYmFyX3BvcCAgICAgICAgICAJKEd0a1N0YXR1c2JhciAq
c3RhdHVzYmFyLAoJCQkJCSBndWludAkgICAgICAgY29udGV4dF9pZCk7CnZvaWQgICAgICAgZ3Rr
X3N0YXR1c2Jhcl9yZW1vdmUgICAgICAgIAkoR3RrU3RhdHVzYmFyICpzdGF0dXNiYXIsCgkJCQkJ
IGd1aW50CSAgICAgICBjb250ZXh0X2lkLAoJCQkJCSBndWludCAgICAgICAgIG1lc3NhZ2VfaWQp
OwoKCgoKfSAKCgojIDExNiAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKIyAxICIvdXNy
L2luY2x1ZGUvZ3RrL2d0a3RlYXJvZmZtZW51aXRlbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qg
X0d0a1RlYXJvZmZNZW51SXRlbSAgICAgICBHdGtUZWFyb2ZmTWVudUl0ZW07CnR5cGVkZWYgc3Ry
dWN0IF9HdGtUZWFyb2ZmTWVudUl0ZW1DbGFzcyAgR3RrVGVhcm9mZk1lbnVJdGVtQ2xhc3M7Cgpz
dHJ1Y3QgX0d0a1RlYXJvZmZNZW51SXRlbQp7CiAgR3RrTWVudUl0ZW0gbWVudV9pdGVtOwoKICBn
dWludCB0b3JuX29mZiA6IDE7Cn07CgpzdHJ1Y3QgX0d0a1RlYXJvZmZNZW51SXRlbUNsYXNzCnsK
ICBHdGtNZW51SXRlbUNsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtUeXBlCSAgIGd0a190ZWFy
b2ZmX21lbnVfaXRlbV9nZXRfdHlwZSAgICAgKHZvaWQpOwpHdGtXaWRnZXQqIGd0a190ZWFyb2Zm
X21lbnVfaXRlbV9uZXcJICAgICAgKHZvaWQpOwoKCn0KCgoKCiMgMTE4ICIvdXNyL2luY2x1ZGUv
Z3RrL2d0ay5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGt0ZXh0LmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCnR5
cGVkZWYgc3RydWN0IF9HdGtUZXh0Rm9udCAgICAgICBHdGtUZXh0Rm9udDsKdHlwZWRlZiBzdHJ1
Y3QgX0d0a1Byb3BlcnR5TWFyayAgIEd0a1Byb3BlcnR5TWFyazsKdHlwZWRlZiBzdHJ1Y3QgX0d0
a1RleHQgICAgICAgICAgIEd0a1RleHQ7CnR5cGVkZWYgc3RydWN0IF9HdGtUZXh0Q2xhc3MgICAg
ICBHdGtUZXh0Q2xhc3M7CgpzdHJ1Y3QgX0d0a1Byb3BlcnR5TWFyawp7CiAgIAogIEdMaXN0KiBw
cm9wZXJ0eTsKCiAgIAogIGd1aW50IG9mZnNldDsKCiAgIAogIGd1aW50IGluZGV4Owp9OwoKc3Ry
dWN0IF9HdGtUZXh0CnsKICBHdGtFZGl0YWJsZSBlZGl0YWJsZTsKCiAgR2RrV2luZG93ICp0ZXh0
X2FyZWE7CgogIEd0a0FkanVzdG1lbnQgKmhhZGo7CiAgR3RrQWRqdXN0bWVudCAqdmFkajsKCiAg
R2RrR0MgKmdjOwoKICBHZGtQaXhtYXAqIGxpbmVfd3JhcF9iaXRtYXA7CiAgR2RrUGl4bWFwKiBs
aW5lX2Fycm93X2JpdG1hcDsKCgkJICAgICAgIAoKICAgCgogIHVuaW9uIHsgR2RrV0NoYXIgKndj
OyBndWNoYXIgICpjaDsgfSB0ZXh0OwogICAKICBndWludCB0ZXh0X2xlbjsKICAgCgogIGd1aW50
IGdhcF9wb3NpdGlvbjsKICAgCgogIGd1aW50IGdhcF9zaXplOwogICAKCgogIGd1aW50IHRleHRf
ZW5kOwoJCQkgCgogICAKICBHTGlzdCAqbGluZV9zdGFydF9jYWNoZTsKICAgCiAgZ3VpbnQgZmly
c3RfbGluZV9zdGFydF9pbmRleDsKICAgCiAgZ3VpbnQgZmlyc3RfY3V0X3BpeGVsczsKICAgCiAg
Z3VpbnQgZmlyc3Rfb25zY3JlZW5faG9yX3BpeGVsOwogICAKICBndWludCBmaXJzdF9vbnNjcmVl
bl92ZXJfcGl4ZWw7CgoJCQkgICAgICAKCiAgIAoKICBndWludCBsaW5lX3dyYXAgOiAxOwogIGd1
aW50IHdvcmRfd3JhcCA6IDE7CiAgCgogIGd1aW50IHVzZV93Y2hhciA6IDE7CgogICAKICBndWlu
dCBmcmVlemVfY291bnQ7CgkJCSAKCiAgIAogIEdMaXN0ICp0ZXh0X3Byb3BlcnRpZXM7CiAgIAog
IEdMaXN0ICp0ZXh0X3Byb3BlcnRpZXNfZW5kOwogICAKCgoKICBHdGtQcm9wZXJ0eU1hcmsgcG9p
bnQ7CgoJCQkgICAKCiAgdW5pb24geyBHZGtXQ2hhciAqd2M7IGd1Y2hhciAqY2g7IH0gc2NyYXRj
aF9idWZmZXI7CiAgZ3VpbnQgICBzY3JhdGNoX2J1ZmZlcl9sZW47CgoJCQkgICAgCgogIGdpbnQg
bGFzdF92ZXJfdmFsdWU7CgoJCQkgICAgICAKCiAgZ2ludCAgICAgICAgICAgIGN1cnNvcl9wb3Nf
eDsgICAgICAgIAogIGdpbnQgICAgICAgICAgICBjdXJzb3JfcG9zX3k7ICAgICAgICAKICBHdGtQ
cm9wZXJ0eU1hcmsgY3Vyc29yX21hcms7ICAgICAgICAgCiAgR2RrV0NoYXIgICAgICAgIGN1cnNv
cl9jaGFyOyAgICAgICAgIAogIGdjaGFyICAgICAgICAgICBjdXJzb3JfY2hhcl9vZmZzZXQ7ICAK
ICBnaW50ICAgICAgICAgICAgY3Vyc29yX3ZpcnR1YWxfeDsgICAgCiAgZ2ludCAgICAgICAgICAg
IGN1cnNvcl9kcmF3bl9sZXZlbDsgIAoKCQkJICAgCgogIEdMaXN0ICpjdXJyZW50X2xpbmU7CgoJ
CQkgICAgCgogIEdMaXN0ICp0YWJfc3RvcHM7CiAgZ2ludCBkZWZhdWx0X3RhYl93aWR0aDsKCiAg
R3RrVGV4dEZvbnQgKmN1cnJlbnRfZm9udDsJIAoKICAgCiAgZ2ludCB0aW1lcjsKICAKICBndWlu
dCBidXR0b247CQkJIAogIEdka0dDICpiZ19nYzsJCQkgCn07CgpzdHJ1Y3QgX0d0a1RleHRDbGFz
cwp7CiAgR3RrRWRpdGFibGVDbGFzcyBwYXJlbnRfY2xhc3M7CgogIHZvaWQgICgqc2V0X3Njcm9s
bF9hZGp1c3RtZW50cykgICAoR3RrVGV4dAkgICAgKnRleHQsCgkJCQkgICAgIEd0a0FkanVzdG1l
bnQgICpoYWRqdXN0bWVudCwKCQkJCSAgICAgR3RrQWRqdXN0bWVudCAgKnZhZGp1c3RtZW50KTsK
fTsKCgpHdGtUeXBlICAgIGd0a190ZXh0X2dldF90eXBlICAgICAgICAodm9pZCk7Ckd0a1dpZGdl
dCogZ3RrX3RleHRfbmV3ICAgICAgICAgICAgIChHdGtBZGp1c3RtZW50ICpoYWRqLAoJCQkJICAg
ICBHdGtBZGp1c3RtZW50ICp2YWRqKTsKdm9pZCAgICAgICBndGtfdGV4dF9zZXRfZWRpdGFibGUg
ICAgKEd0a1RleHQgICAgICAgKnRleHQsCgkJCQkgICAgIGdib29sZWFuICAgICAgIGVkaXRhYmxl
KTsKdm9pZCAgICAgICBndGtfdGV4dF9zZXRfd29yZF93cmFwICAgKEd0a1RleHQgICAgICAgKnRl
eHQsCgkJCQkgICAgIGdpbnQgICAgICAgICAgIHdvcmRfd3JhcCk7CnZvaWQgICAgICAgZ3RrX3Rl
eHRfc2V0X2xpbmVfd3JhcCAgIChHdGtUZXh0ICAgICAgICp0ZXh0LAoJCQkJICAgICBnaW50ICAg
ICAgICAgICBsaW5lX3dyYXApOwp2b2lkICAgICAgIGd0a190ZXh0X3NldF9hZGp1c3RtZW50cyAo
R3RrVGV4dCAgICAgICAqdGV4dCwKCQkJCSAgICAgR3RrQWRqdXN0bWVudCAqaGFkaiwKCQkJCSAg
ICAgR3RrQWRqdXN0bWVudCAqdmFkaik7CnZvaWQgICAgICAgZ3RrX3RleHRfc2V0X3BvaW50ICAg
ICAgIChHdGtUZXh0ICAgICAgICp0ZXh0LAoJCQkJICAgICBndWludCAgICAgICAgICBpbmRleCk7
Cmd1aW50ICAgICAgZ3RrX3RleHRfZ2V0X3BvaW50ICAgICAgIChHdGtUZXh0ICAgICAgICp0ZXh0
KTsKZ3VpbnQgICAgICBndGtfdGV4dF9nZXRfbGVuZ3RoICAgICAgKEd0a1RleHQgICAgICAgKnRl
eHQpOwp2b2lkICAgICAgIGd0a190ZXh0X2ZyZWV6ZSAgICAgICAgICAoR3RrVGV4dCAgICAgICAq
dGV4dCk7CnZvaWQgICAgICAgZ3RrX3RleHRfdGhhdyAgICAgICAgICAgIChHdGtUZXh0ICAgICAg
ICp0ZXh0KTsKdm9pZCAgICAgICBndGtfdGV4dF9pbnNlcnQgICAgICAgICAgKEd0a1RleHQgICAg
ICAgKnRleHQsCgkJCQkgICAgIEdka0ZvbnQgICAgICAgKmZvbnQsCgkJCQkgICAgIEdka0NvbG9y
ICAgICAgKmZvcmUsCgkJCQkgICAgIEdka0NvbG9yICAgICAgKmJhY2ssCgkJCQkgICAgIGNvbnN0
IGNoYXIgICAgKmNoYXJzLAoJCQkJICAgICBnaW50ICAgICAgICAgICBsZW5ndGgpOwpnaW50ICAg
ICAgIGd0a190ZXh0X2JhY2t3YXJkX2RlbGV0ZSAoR3RrVGV4dCAgICAgICAqdGV4dCwKCQkJCSAg
ICAgZ3VpbnQgICAgICAgICAgbmNoYXJzKTsKZ2ludCAgICAgICBndGtfdGV4dF9mb3J3YXJkX2Rl
bGV0ZSAgKEd0a1RleHQgICAgICAgKnRleHQsCgkJCQkgICAgIGd1aW50ICAgICAgICAgIG5jaGFy
cyk7CgoKCgoKCgoKfQoKCgoKIyAxMTkgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKIyAx
ICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3RoZW1lcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKc3RydWN0IF9HdGtUaGVtZUVuZ2luZSB7CiAgIAoKCgogIGd1aW50ICgq
cGFyc2VfcmNfc3R5bGUpICAgIChHU2Nhbm5lciAqc2Nhbm5lciwgR3RrUmNTdHlsZSAqcmNfc3R5
bGUpOwogIAogICAKCgoKICB2b2lkICgqbWVyZ2VfcmNfc3R5bGUpICAgIChHdGtSY1N0eWxlICpk
ZXN0LCAgICAgR3RrUmNTdHlsZSAqc3JjKTsKCiAgIAogIHZvaWQgKCpyY19zdHlsZV90b19zdHls
ZSkgKEd0a1N0eWxlICAgKnN0eWxlLCBHdGtSY1N0eWxlICpyY19zdHlsZSk7CgogICAKCgoKICB2
b2lkICgqZHVwbGljYXRlX3N0eWxlKSAgIChHdGtTdHlsZSAqZGVzdCwgICAgICAgR3RrU3R5bGUg
KnNyYyk7CgogICAKCgoKCiAgdm9pZCAoKnJlYWxpemVfc3R5bGUpIChHdGtTdHlsZSAgICpuZXdf
c3R5bGUpOwoKICAgCgoKICB2b2lkICgqdW5yZWFsaXplX3N0eWxlKSAoR3RrU3R5bGUgICAqbmV3
X3N0eWxlKTsKCiAgIAogIHZvaWQgKCpkZXN0cm95X3JjX3N0eWxlKSAgKEd0a1JjU3R5bGUgKnJj
X3N0eWxlKTsKCiAgIAogIHZvaWQgKCpkZXN0cm95X3N0eWxlKSAgICAgKEd0a1N0eWxlICAgKnN0
eWxlKTsKCiAgdm9pZCAoKnNldF9iYWNrZ3JvdW5kKSAoR3RrU3R5bGUgICAgICpzdHlsZSwKCQkJ
ICBHZGtXaW5kb3cgICAgKndpbmRvdywKCQkJICBHdGtTdGF0ZVR5cGUgIHN0YXRlX3R5cGUpOwp9
OwoKR3RrVGhlbWVFbmdpbmUgKmd0a190aGVtZV9lbmdpbmVfZ2V0ICAgKGNvbnN0IGdjaGFyICAg
ICpuYW1lKTsKdm9pZCAgICAgICAgICAgIGd0a190aGVtZV9lbmdpbmVfcmVmICAgKEd0a1RoZW1l
RW5naW5lICplbmdpbmUpOwp2b2lkICAgICAgICAgICAgZ3RrX3RoZW1lX2VuZ2luZV91bnJlZiAo
R3RrVGhlbWVFbmdpbmUgKmVuZ2luZSk7CgoKZXh0ZXJuICJDIiB7CgoKIAoKdm9pZAkgICBndGtf
dGhlbWVzX2luaXQJIChpbnQJICAgICAgICphcmdjLAoJCQkJICBjaGFyCSAgICAgKioqYXJndik7
CnZvaWQJICAgZ3RrX3RoZW1lc19leGl0CSAoZ2ludAkJZXJyb3JfY29kZSk7CgoKfQoKCgoKIyAx
MjAgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0
a3RpcHNxdWVyeS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
ZXh0ZXJuICJDIiB7CgoKCiAKCgoKCgoKCiAKdHlwZWRlZglzdHJ1Y3QJX0d0a1RpcHNRdWVyeQkJ
R3RrVGlwc1F1ZXJ5Owp0eXBlZGVmCXN0cnVjdAlfR3RrVGlwc1F1ZXJ5Q2xhc3MJR3RrVGlwc1F1
ZXJ5Q2xhc3M7CgoKIApzdHJ1Y3QJX0d0a1RpcHNRdWVyeQp7CiAgR3RrTGFiZWwJbGFiZWw7Cgog
IGd1aW50CQllbWl0X2Fsd2F5cyA6IDE7CiAgZ3VpbnQJCWluX3F1ZXJ5IDogMTsKICBnY2hhcgkJ
KmxhYmVsX2luYWN0aXZlOwogIGdjaGFyCQkqbGFiZWxfbm9fdGlwOwoKICBHdGtXaWRnZXQJKmNh
bGxlcjsKICBHdGtXaWRnZXQJKmxhc3RfY3Jvc3NlZDsKCiAgR2RrQ3Vyc29yCSpxdWVyeV9jdXJz
b3I7Cn07CgpzdHJ1Y3QJX0d0a1RpcHNRdWVyeUNsYXNzCnsKICBHdGtMYWJlbENsYXNzCQkJcGFy
ZW50X2NsYXNzOwoKICB2b2lkCSgqc3RhcnRfcXVlcnkpCQkoR3RrVGlwc1F1ZXJ5CSp0aXBzX3F1
ZXJ5KTsKICB2b2lkCSgqc3RvcF9xdWVyeSkJCShHdGtUaXBzUXVlcnkJKnRpcHNfcXVlcnkpOwog
IHZvaWQJKCp3aWRnZXRfZW50ZXJlZCkJKEd0a1RpcHNRdWVyeQkqdGlwc19xdWVyeSwKCQkJCSBH
dGtXaWRnZXQJKndpZGdldCwKCQkJCSBjb25zdCBnY2hhcgkqdGlwX3RleHQsCgkJCQkgY29uc3Qg
Z2NoYXIJKnRpcF9wcml2YXRlKTsKICBnaW50CSgqd2lkZ2V0X3NlbGVjdGVkKQkoR3RrVGlwc1F1
ZXJ5CSp0aXBzX3F1ZXJ5LAoJCQkJIEd0a1dpZGdldAkqd2lkZ2V0LAoJCQkJIGNvbnN0IGdjaGFy
CSp0aXBfdGV4dCwKCQkJCSBjb25zdCBnY2hhcgkqdGlwX3ByaXZhdGUsCgkJCQkgR2RrRXZlbnRC
dXR0b24JKmV2ZW50KTsKfTsKCgogCkd0a1R5cGUJCWd0a190aXBzX3F1ZXJ5X2dldF90eXBlCQko
dm9pZCk7Ckd0a1dpZGdldCoJZ3RrX3RpcHNfcXVlcnlfbmV3CQkodm9pZCk7CnZvaWQJCWd0a190
aXBzX3F1ZXJ5X3N0YXJ0X3F1ZXJ5CShHdGtUaXBzUXVlcnkJKnRpcHNfcXVlcnkpOwp2b2lkCQln
dGtfdGlwc19xdWVyeV9zdG9wX3F1ZXJ5CShHdGtUaXBzUXVlcnkJKnRpcHNfcXVlcnkpOwp2b2lk
CQlndGtfdGlwc19xdWVyeV9zZXRfY2FsbGVyCShHdGtUaXBzUXVlcnkJKnRpcHNfcXVlcnksCgkJ
CQkJCSBHdGtXaWRnZXQJKmNhbGxlcik7CnZvaWQJCWd0a190aXBzX3F1ZXJ5X3NldF9sYWJlbHMg
CShHdGtUaXBzUXVlcnkgICAqdGlwc19xdWVyeSwKCQkJCQkJIGNvbnN0IGdjaGFyICAgICpsYWJl
bF9pbmFjdGl2ZSwKCQkJCQkJIGNvbnN0IGdjaGFyICAgICpsYWJlbF9ub190aXApOwogICAgIAoK
Cgp9CgoKCgojIDEyMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvZ3RrL2d0a3Rvb2xiYXIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3Rvb2x0aXBzLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgp0eXBlZGVm
IHN0cnVjdCBfR3RrVG9vbHRpcHMJIEd0a1Rvb2x0aXBzOwp0eXBlZGVmIHN0cnVjdCBfR3RrVG9v
bHRpcHNDbGFzcyBHdGtUb29sdGlwc0NsYXNzOwp0eXBlZGVmIHN0cnVjdCBfR3RrVG9vbHRpcHNE
YXRhCSBHdGtUb29sdGlwc0RhdGE7CgpzdHJ1Y3QgX0d0a1Rvb2x0aXBzRGF0YQp7CiAgR3RrVG9v
bHRpcHMgKnRvb2x0aXBzOwogIEd0a1dpZGdldCAqd2lkZ2V0OwogIGdjaGFyICp0aXBfdGV4dDsK
ICBnY2hhciAqdGlwX3ByaXZhdGU7CiAgR2RrRm9udCAqZm9udDsKICBnaW50IHdpZHRoOwogIEdM
aXN0ICpyb3c7Cn07CgpzdHJ1Y3QgX0d0a1Rvb2x0aXBzCnsKICBHdGtEYXRhIGRhdGE7CgogIEd0
a1dpZGdldCAqdGlwX3dpbmRvdzsKICBHdGtUb29sdGlwc0RhdGEgKmFjdGl2ZV90aXBzX2RhdGE7
CiAgR0xpc3QgKnRpcHNfZGF0YV9saXN0OwoKICBHZGtHQyAqZ2M7CiAgR2RrQ29sb3IgKmZvcmVn
cm91bmQ7CiAgR2RrQ29sb3IgKmJhY2tncm91bmQ7CgogIGd1aW50ICAgZGVsYXkgOiAzMDsKICBn
dWludAkgIGVuYWJsZWQgOiAxOwogIGdpbnQJICB0aW1lcl90YWc7Cn07CgpzdHJ1Y3QgX0d0a1Rv
b2x0aXBzQ2xhc3MKewogIEd0a0RhdGFDbGFzcyBwYXJlbnRfY2xhc3M7Cn07CgpHdGtUeXBlCQkg
Z3RrX3Rvb2x0aXBzX2dldF90eXBlCSAgICh2b2lkKTsKR3RrVG9vbHRpcHMqCSBndGtfdG9vbHRp
cHNfbmV3CSAgICh2b2lkKTsKCnZvaWQJCSBndGtfdG9vbHRpcHNfZW5hYmxlCSAgIChHdGtUb29s
dGlwcyAgICp0b29sdGlwcyk7CnZvaWQJCSBndGtfdG9vbHRpcHNfZGlzYWJsZQkgICAoR3RrVG9v
bHRpcHMgICAqdG9vbHRpcHMpOwp2b2lkCQkgZ3RrX3Rvb2x0aXBzX3NldF9kZWxheQkgICAoR3Rr
VG9vbHRpcHMgICAqdG9vbHRpcHMsCgkJCQkJICAgIGd1aW50CSAgIGRlbGF5KTsKdm9pZAkJIGd0
a190b29sdGlwc19zZXRfdGlwCSAgIChHdGtUb29sdGlwcyAgICp0b29sdGlwcywKCQkJCQkgICAg
R3RrV2lkZ2V0CSAgKndpZGdldCwKCQkJCQkgICAgY29uc3QgZ2NoYXIgICAqdGlwX3RleHQsCgkJ
CQkJICAgIGNvbnN0IGdjaGFyICAgKnRpcF9wcml2YXRlKTsKdm9pZAkJIGd0a190b29sdGlwc19z
ZXRfY29sb3JzICAgKEd0a1Rvb2x0aXBzICAgKnRvb2x0aXBzLAoJCQkJCSAgICBHZGtDb2xvcgkg
ICpiYWNrZ3JvdW5kLAoJCQkJCSAgICBHZGtDb2xvcgkgICpmb3JlZ3JvdW5kKTsKR3RrVG9vbHRp
cHNEYXRhKiBndGtfdG9vbHRpcHNfZGF0YV9nZXQJICAgKEd0a1dpZGdldAkgICp3aWRnZXQpOwp2
b2lkICAgICAgICAgICAgIGd0a190b29sdGlwc19mb3JjZV93aW5kb3cgKEd0a1Rvb2x0aXBzICAg
KnRvb2x0aXBzKTsKCgoKCn0KCgoKCiMgMzcgIi91c3IvaW5jbHVkZS9ndGsvZ3RrdG9vbGJhci5o
IiAyIDMKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgp0eXBlZGVmIGVudW0KewogIEdUS19UT09M
QkFSX0NISUxEX1NQQUNFLAogIEdUS19UT09MQkFSX0NISUxEX0JVVFRPTiwKICBHVEtfVE9PTEJB
Ul9DSElMRF9UT0dHTEVCVVRUT04sCiAgR1RLX1RPT0xCQVJfQ0hJTERfUkFESU9CVVRUT04sCiAg
R1RLX1RPT0xCQVJfQ0hJTERfV0lER0VUCn0gR3RrVG9vbGJhckNoaWxkVHlwZTsKCnR5cGVkZWYg
ZW51bQp7CiAgR1RLX1RPT0xCQVJfU1BBQ0VfRU1QVFksCiAgR1RLX1RPT0xCQVJfU1BBQ0VfTElO
RQp9IEd0a1Rvb2xiYXJTcGFjZVN0eWxlOwoKdHlwZWRlZiBzdHJ1Y3QgX0d0a1Rvb2xiYXJDaGls
ZCAgICAgIEd0a1Rvb2xiYXJDaGlsZDsKdHlwZWRlZiBzdHJ1Y3QgX0d0a1Rvb2xiYXIgICAgICAg
ICAgIEd0a1Rvb2xiYXI7CnR5cGVkZWYgc3RydWN0IF9HdGtUb29sYmFyQ2xhc3MgICAgICBHdGtU
b29sYmFyQ2xhc3M7CgpzdHJ1Y3QgX0d0a1Rvb2xiYXJDaGlsZAp7CiAgR3RrVG9vbGJhckNoaWxk
VHlwZSB0eXBlOwogIEd0a1dpZGdldCAqd2lkZ2V0OwogIEd0a1dpZGdldCAqaWNvbjsKICBHdGtX
aWRnZXQgKmxhYmVsOwp9OwoKc3RydWN0IF9HdGtUb29sYmFyCnsKICBHdGtDb250YWluZXIgY29u
dGFpbmVyOwoKICBnaW50ICAgICAgICAgICAgIG51bV9jaGlsZHJlbjsKICBHTGlzdCAgICAgICAg
ICAgKmNoaWxkcmVuOwogIEd0a09yaWVudGF0aW9uICAgb3JpZW50YXRpb247CiAgR3RrVG9vbGJh
clN0eWxlICBzdHlsZTsKICBnaW50ICAgICAgICAgICAgIHNwYWNlX3NpemU7ICAKICBHdGtUb29s
YmFyU3BhY2VTdHlsZSBzcGFjZV9zdHlsZTsKCiAgR3RrVG9vbHRpcHMgICAgICp0b29sdGlwczsK
CiAgZ2ludCAgICAgICAgICAgICBidXR0b25fbWF4dzsKICBnaW50ICAgICAgICAgICAgIGJ1dHRv
bl9tYXhoOwogIEd0a1JlbGllZlN0eWxlICAgcmVsaWVmOwp9OwoKc3RydWN0IF9HdGtUb29sYmFy
Q2xhc3MKewogIEd0a0NvbnRhaW5lckNsYXNzIHBhcmVudF9jbGFzczsKCiAgdm9pZCAoKiBvcmll
bnRhdGlvbl9jaGFuZ2VkKSAoR3RrVG9vbGJhciAgICAgICp0b29sYmFyLAoJCQkJR3RrT3JpZW50
YXRpb24gICBvcmllbnRhdGlvbik7CiAgdm9pZCAoKiBzdHlsZV9jaGFuZ2VkKSAgICAgICAoR3Rr
VG9vbGJhciAgICAgICp0b29sYmFyLAoJCQkJR3RrVG9vbGJhclN0eWxlICBzdHlsZSk7Cn07CgoK
R3RrVHlwZSAgICBndGtfdG9vbGJhcl9nZXRfdHlwZSAgICAgICAgKHZvaWQpOwpHdGtXaWRnZXQq
IGd0a190b29sYmFyX25ldyAgICAgICAgICAgICAoR3RrT3JpZW50YXRpb24gICBvcmllbnRhdGlv
biwKCQkJCQlHdGtUb29sYmFyU3R5bGUgIHN0eWxlKTsKCiAKR3RrV2lkZ2V0KiBndGtfdG9vbGJh
cl9hcHBlbmRfaXRlbSAgICAgKEd0a1Rvb2xiYXIgICAgICAqdG9vbGJhciwKCQkJCQljb25zdCBj
aGFyICAgICAgKnRleHQsCgkJCQkJY29uc3QgY2hhciAgICAgICp0b29sdGlwX3RleHQsCgkJCQkJ
Y29uc3QgY2hhciAgICAgICp0b29sdGlwX3ByaXZhdGVfdGV4dCwKCQkJCQlHdGtXaWRnZXQgICAg
ICAgKmljb24sCgkJCQkJR3RrU2lnbmFsRnVuYyAgICBjYWxsYmFjaywKCQkJCQlncG9pbnRlciAg
ICAgICAgIHVzZXJfZGF0YSk7Ckd0a1dpZGdldCogZ3RrX3Rvb2xiYXJfcHJlcGVuZF9pdGVtICAg
IChHdGtUb29sYmFyICAgICAgKnRvb2xiYXIsCgkJCQkJY29uc3QgY2hhciAgICAgICp0ZXh0LAoJ
CQkJCWNvbnN0IGNoYXIgICAgICAqdG9vbHRpcF90ZXh0LAoJCQkJCWNvbnN0IGNoYXIgICAgICAq
dG9vbHRpcF9wcml2YXRlX3RleHQsCgkJCQkJR3RrV2lkZ2V0ICAgICAgICppY29uLAoJCQkJCUd0
a1NpZ25hbEZ1bmMgICAgY2FsbGJhY2ssCgkJCQkJZ3BvaW50ZXIgICAgICAgICB1c2VyX2RhdGEp
OwpHdGtXaWRnZXQqIGd0a190b29sYmFyX2luc2VydF9pdGVtICAgICAoR3RrVG9vbGJhciAgICAg
ICp0b29sYmFyLAoJCQkJCWNvbnN0IGNoYXIgICAgICAqdGV4dCwKCQkJCQljb25zdCBjaGFyICAg
ICAgKnRvb2x0aXBfdGV4dCwKCQkJCQljb25zdCBjaGFyICAgICAgKnRvb2x0aXBfcHJpdmF0ZV90
ZXh0LAoJCQkJCUd0a1dpZGdldCAgICAgICAqaWNvbiwKCQkJCQlHdGtTaWduYWxGdW5jICAgIGNh
bGxiYWNrLAoJCQkJCWdwb2ludGVyICAgICAgICAgdXNlcl9kYXRhLAoJCQkJCWdpbnQgICAgICAg
ICAgICAgcG9zaXRpb24pOwoKIAp2b2lkICAgICAgIGd0a190b29sYmFyX2FwcGVuZF9zcGFjZSAg
ICAoR3RrVG9vbGJhciAgICAgICp0b29sYmFyKTsKdm9pZCAgICAgICBndGtfdG9vbGJhcl9wcmVw
ZW5kX3NwYWNlICAgKEd0a1Rvb2xiYXIgICAgICAqdG9vbGJhcik7CnZvaWQgICAgICAgZ3RrX3Rv
b2xiYXJfaW5zZXJ0X3NwYWNlICAgIChHdGtUb29sYmFyICAgICAgKnRvb2xiYXIsCgkJCQkJZ2lu
dCAgICAgICAgICAgICBwb3NpdGlvbik7CgogCkd0a1dpZGdldCogZ3RrX3Rvb2xiYXJfYXBwZW5k
X2VsZW1lbnQgIChHdGtUb29sYmFyICAgICAgKnRvb2xiYXIsCgkJCQkJR3RrVG9vbGJhckNoaWxk
VHlwZSB0eXBlLAoJCQkJCUd0a1dpZGdldCAgICAgICAqd2lkZ2V0LAoJCQkJCWNvbnN0IGNoYXIg
ICAgICAqdGV4dCwKCQkJCQljb25zdCBjaGFyICAgICAgKnRvb2x0aXBfdGV4dCwKCQkJCQljb25z
dCBjaGFyICAgICAgKnRvb2x0aXBfcHJpdmF0ZV90ZXh0LAoJCQkJCUd0a1dpZGdldCAgICAgICAq
aWNvbiwKCQkJCQlHdGtTaWduYWxGdW5jICAgIGNhbGxiYWNrLAoJCQkJCWdwb2ludGVyICAgICAg
ICAgdXNlcl9kYXRhKTsKCkd0a1dpZGdldCogZ3RrX3Rvb2xiYXJfcHJlcGVuZF9lbGVtZW50IChH
dGtUb29sYmFyICAgICAgKnRvb2xiYXIsCgkJCQkJR3RrVG9vbGJhckNoaWxkVHlwZSB0eXBlLAoJ
CQkJCUd0a1dpZGdldCAgICAgICAqd2lkZ2V0LAoJCQkJCWNvbnN0IGNoYXIgICAgICAqdGV4dCwK
CQkJCQljb25zdCBjaGFyICAgICAgKnRvb2x0aXBfdGV4dCwKCQkJCQljb25zdCBjaGFyICAgICAg
KnRvb2x0aXBfcHJpdmF0ZV90ZXh0LAoJCQkJCUd0a1dpZGdldCAgICAgICAqaWNvbiwKCQkJCQlH
dGtTaWduYWxGdW5jICAgIGNhbGxiYWNrLAoJCQkJCWdwb2ludGVyICAgICAgICAgdXNlcl9kYXRh
KTsKCkd0a1dpZGdldCogZ3RrX3Rvb2xiYXJfaW5zZXJ0X2VsZW1lbnQgIChHdGtUb29sYmFyICAg
ICAgKnRvb2xiYXIsCgkJCQkJR3RrVG9vbGJhckNoaWxkVHlwZSB0eXBlLAoJCQkJCUd0a1dpZGdl
dCAgICAgICAqd2lkZ2V0LAoJCQkJCWNvbnN0IGNoYXIgICAgICAqdGV4dCwKCQkJCQljb25zdCBj
aGFyICAgICAgKnRvb2x0aXBfdGV4dCwKCQkJCQljb25zdCBjaGFyICAgICAgKnRvb2x0aXBfcHJp
dmF0ZV90ZXh0LAoJCQkJCUd0a1dpZGdldCAgICAgICAqaWNvbiwKCQkJCQlHdGtTaWduYWxGdW5j
ICAgIGNhbGxiYWNrLAoJCQkJCWdwb2ludGVyICAgICAgICAgdXNlcl9kYXRhLAoJCQkJCWdpbnQg
ICAgICAgICAgICAgcG9zaXRpb24pOwoKIAp2b2lkICAgICAgIGd0a190b29sYmFyX2FwcGVuZF93
aWRnZXQgICAoR3RrVG9vbGJhciAgICAgICp0b29sYmFyLAoJCQkJCUd0a1dpZGdldCAgICAgICAq
d2lkZ2V0LAoJCQkJCWNvbnN0IGNoYXIgICAgICAqdG9vbHRpcF90ZXh0LAoJCQkJCWNvbnN0IGNo
YXIgICAgICAqdG9vbHRpcF9wcml2YXRlX3RleHQpOwp2b2lkICAgICAgIGd0a190b29sYmFyX3By
ZXBlbmRfd2lkZ2V0ICAoR3RrVG9vbGJhciAgICAgICp0b29sYmFyLAoJCQkJCUd0a1dpZGdldCAg
ICAgICAqd2lkZ2V0LAoJCQkJCWNvbnN0IGNoYXIgICAgICAqdG9vbHRpcF90ZXh0LAoJCQkJCWNv
bnN0IGNoYXIJKnRvb2x0aXBfcHJpdmF0ZV90ZXh0KTsKdm9pZCAgICAgICBndGtfdG9vbGJhcl9p
bnNlcnRfd2lkZ2V0ICAgKEd0a1Rvb2xiYXIgICAgICAqdG9vbGJhciwKCQkJCQlHdGtXaWRnZXQg
ICAgICAgKndpZGdldCwKCQkJCQljb25zdCBjaGFyICAgICAgKnRvb2x0aXBfdGV4dCwKCQkJCQlj
b25zdCBjaGFyICAgICAgKnRvb2x0aXBfcHJpdmF0ZV90ZXh0LAoJCQkJCWdpbnQgICAgICAgICAg
ICAgcG9zaXRpb24pOwoKIAp2b2lkICAgICAgIGd0a190b29sYmFyX3NldF9vcmllbnRhdGlvbiAg
ICAgICAoR3RrVG9vbGJhciAgICAgICAgICAgKnRvb2xiYXIsCgkJCQkJICAgICAgR3RrT3JpZW50
YXRpb24gICAgICAgIG9yaWVudGF0aW9uKTsKdm9pZCAgICAgICBndGtfdG9vbGJhcl9zZXRfc3R5
bGUgICAgICAgICAgICAgKEd0a1Rvb2xiYXIgICAgICAgICAgICp0b29sYmFyLAoJCQkJCSAgICAg
IEd0a1Rvb2xiYXJTdHlsZSAgICAgICBzdHlsZSk7CnZvaWQgICAgICAgZ3RrX3Rvb2xiYXJfc2V0
X3NwYWNlX3NpemUgICAgICAgIChHdGtUb29sYmFyICAgICAgICAgICAqdG9vbGJhciwKCQkJCQkg
ICAgICBnaW50ICAgICAgICAgICAgICAgICAgc3BhY2Vfc2l6ZSk7CnZvaWQgICAgICAgZ3RrX3Rv
b2xiYXJfc2V0X3NwYWNlX3N0eWxlICAgICAgIChHdGtUb29sYmFyICAgICAgICAgICAqdG9vbGJh
ciwKCQkJCQkgICAgICBHdGtUb29sYmFyU3BhY2VTdHlsZSAgc3BhY2Vfc3R5bGUpOwp2b2lkICAg
ICAgIGd0a190b29sYmFyX3NldF90b29sdGlwcyAgICAgICAgICAoR3RrVG9vbGJhciAgICAgICAg
ICAgKnRvb2xiYXIsCgkJCQkJICAgICAgZ2ludCAgICAgICAgICAgICAgICAgIGVuYWJsZSk7CnZv
aWQgICAgICAgZ3RrX3Rvb2xiYXJfc2V0X2J1dHRvbl9yZWxpZWYgICAgIChHdGtUb29sYmFyICAg
ICAgICAgICAqdG9vbGJhciwKCQkJCQkgICAgICBHdGtSZWxpZWZTdHlsZSAgICAgICAgcmVsaWVm
KTsKR3RrUmVsaWVmU3R5bGUgZ3RrX3Rvb2xiYXJfZ2V0X2J1dHRvbl9yZWxpZWYgKEd0a1Rvb2xi
YXIgICAgICAgICAgICp0b29sYmFyKTsKCgoKfQoKCgojIDEyMyAiL3Vzci9pbmNsdWRlL2d0ay9n
dGsuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3RyZWUuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCiAKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgoK
Cgp0eXBlZGVmIGVudW0gCnsKICBHVEtfVFJFRV9WSUVXX0xJTkUsICAgCiAgR1RLX1RSRUVfVklF
V19JVEVNCn0gR3RrVHJlZVZpZXdNb2RlOwoKdHlwZWRlZiBzdHJ1Y3QgX0d0a1RyZWUgICAgICAg
R3RrVHJlZTsKdHlwZWRlZiBzdHJ1Y3QgX0d0a1RyZWVDbGFzcyAgR3RrVHJlZUNsYXNzOwoKc3Ry
dWN0IF9HdGtUcmVlCnsKICBHdGtDb250YWluZXIgY29udGFpbmVyOwogIAogIEdMaXN0ICpjaGls
ZHJlbjsKICAKICBHdGtUcmVlKiByb290X3RyZWU7ICAKICBHdGtXaWRnZXQqIHRyZWVfb3duZXI7
CiAgR0xpc3QgKnNlbGVjdGlvbjsKICBndWludCBsZXZlbDsKICBndWludCBpbmRlbnRfdmFsdWU7
CiAgZ3VpbnQgY3VycmVudF9pbmRlbnQ7CiAgZ3VpbnQgc2VsZWN0aW9uX21vZGUgOiAyOwogIGd1
aW50IHZpZXdfbW9kZSA6IDE7CiAgZ3VpbnQgdmlld19saW5lIDogMTsKfTsKCnN0cnVjdCBfR3Rr
VHJlZUNsYXNzCnsKICBHdGtDb250YWluZXJDbGFzcyBwYXJlbnRfY2xhc3M7CiAgCiAgdm9pZCAo
KiBzZWxlY3Rpb25fY2hhbmdlZCkgKEd0a1RyZWUgICAqdHJlZSk7CiAgdm9pZCAoKiBzZWxlY3Rf
Y2hpbGQpICAgICAgKEd0a1RyZWUgICAqdHJlZSwKCQkJICAgICAgR3RrV2lkZ2V0ICpjaGlsZCk7
CiAgdm9pZCAoKiB1bnNlbGVjdF9jaGlsZCkgICAgKEd0a1RyZWUgICAqdHJlZSwKCQkJICAgICAg
R3RrV2lkZ2V0ICpjaGlsZCk7Cn07CgoKR3RrVHlwZSAgICBndGtfdHJlZV9nZXRfdHlwZSAgICAg
ICAgICAgKHZvaWQpOwpHdGtXaWRnZXQqIGd0a190cmVlX25ldyAgICAgICAgICAgICAgICAodm9p
ZCk7CnZvaWQgICAgICAgZ3RrX3RyZWVfYXBwZW5kICAgICAgICAgICAgIChHdGtUcmVlICAgICAg
ICAgICp0cmVlLAoJCQkJICAgICAgICBHdGtXaWRnZXQgICAgICAgICp0cmVlX2l0ZW0pOwp2b2lk
ICAgICAgIGd0a190cmVlX3ByZXBlbmQgICAgICAgICAgICAoR3RrVHJlZSAgICAgICAgICAqdHJl
ZSwKCQkJCSAgICAgICAgR3RrV2lkZ2V0ICAgICAgICAqdHJlZV9pdGVtKTsKdm9pZCAgICAgICBn
dGtfdHJlZV9pbnNlcnQgICAgICAgICAgICAgKEd0a1RyZWUgICAgICAgICAgKnRyZWUsCgkJCQkg
ICAgICAgIEd0a1dpZGdldCAgICAgICAgKnRyZWVfaXRlbSwKCQkJCSAgICAgICAgZ2ludCAgICAg
ICAgICAgICAgcG9zaXRpb24pOwp2b2lkICAgICAgIGd0a190cmVlX3JlbW92ZV9pdGVtcyAgICAg
ICAoR3RrVHJlZSAgICAgICAgICAqdHJlZSwKCQkJCSAgICAgICAgR0xpc3QgICAgICAgICAgICAq
aXRlbXMpOwp2b2lkICAgICAgIGd0a190cmVlX2NsZWFyX2l0ZW1zICAgICAgICAoR3RrVHJlZSAg
ICAgICAgICAqdHJlZSwKCQkJCSAgICAgICAgZ2ludCAgICAgICAgICAgICAgc3RhcnQsCgkJCQkg
ICAgICAgIGdpbnQgICAgICAgICAgICAgIGVuZCk7CnZvaWQgICAgICAgZ3RrX3RyZWVfc2VsZWN0
X2l0ZW0gICAgICAgIChHdGtUcmVlICAgICAgICAgICp0cmVlLAoJCQkJICAgICAgICBnaW50ICAg
ICAgICAgICAgICBpdGVtKTsKdm9pZCAgICAgICBndGtfdHJlZV91bnNlbGVjdF9pdGVtICAgICAg
KEd0a1RyZWUgICAgICAgICAgKnRyZWUsCgkJCQkgICAgICAgIGdpbnQgICAgICAgICAgICAgIGl0
ZW0pOwp2b2lkICAgICAgIGd0a190cmVlX3NlbGVjdF9jaGlsZCAgICAgICAoR3RrVHJlZSAgICAg
ICAgICAqdHJlZSwKCQkJCSAgICAgICAgR3RrV2lkZ2V0ICAgICAgICAqdHJlZV9pdGVtKTsKdm9p
ZCAgICAgICBndGtfdHJlZV91bnNlbGVjdF9jaGlsZCAgICAgKEd0a1RyZWUgICAgICAgICAgKnRy
ZWUsCgkJCQkgICAgICAgIEd0a1dpZGdldCAgICAgICAgKnRyZWVfaXRlbSk7CmdpbnQgICAgICAg
Z3RrX3RyZWVfY2hpbGRfcG9zaXRpb24gICAgIChHdGtUcmVlICAgICAgICAgICp0cmVlLAoJCQkJ
ICAgICAgICBHdGtXaWRnZXQgICAgICAgICpjaGlsZCk7CnZvaWQgICAgICAgZ3RrX3RyZWVfc2V0
X3NlbGVjdGlvbl9tb2RlIChHdGtUcmVlICAgICAgICAgICp0cmVlLAoJCQkJICAgICAgICBHdGtT
ZWxlY3Rpb25Nb2RlICBtb2RlKTsKdm9pZCAgICAgICBndGtfdHJlZV9zZXRfdmlld19tb2RlICAg
ICAgKEd0a1RyZWUgICAgICAgICAgKnRyZWUsCgkJCQkgICAgICAgIEd0a1RyZWVWaWV3TW9kZSAg
IG1vZGUpOyAKdm9pZCAgICAgICBndGtfdHJlZV9zZXRfdmlld19saW5lcyAgICAgKEd0a1RyZWUg
ICAgICAgICAgKnRyZWUsCgkJCQkJZ3VpbnQgICAgICAgICAgICBmbGFnKTsKCiAKCnZvaWQgICAg
ICAgZ3RrX3RyZWVfcmVtb3ZlX2l0ZW0gICAgICAgIChHdGtUcmVlICAgICAgICAgICp0cmVlLAoJ
CQkJICAgICAgICBHdGtXaWRnZXQgICAgICAgICpjaGlsZCk7CgoKCn0KCgoKCiMgMTI1ICIvdXNy
L2luY2x1ZGUvZ3RrL2d0ay5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2d0ay9ndGt0cmVlaXRl
bS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIg
ewoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR3RrVHJlZUl0ZW0gICAgICAgR3RrVHJlZUl0
ZW07CnR5cGVkZWYgc3RydWN0IF9HdGtUcmVlSXRlbUNsYXNzICBHdGtUcmVlSXRlbUNsYXNzOwoK
c3RydWN0IF9HdGtUcmVlSXRlbQp7CiAgR3RrSXRlbSBpdGVtOwoKICBHdGtXaWRnZXQgKnN1YnRy
ZWU7CiAgR3RrV2lkZ2V0ICpwaXhtYXBzX2JveDsKICBHdGtXaWRnZXQgKnBsdXNfcGl4X3dpZGdl
dCwgKm1pbnVzX3BpeF93aWRnZXQ7CgogIEdMaXN0ICpwaXhtYXBzOwkJIAoKICBndWludCBleHBh
bmRlZCA6IDE7Cn07CgpzdHJ1Y3QgX0d0a1RyZWVJdGVtQ2xhc3MKewogIEd0a0l0ZW1DbGFzcyBw
YXJlbnRfY2xhc3M7CgogIHZvaWQgKCogZXhwYW5kKSAgIChHdGtUcmVlSXRlbSAqdHJlZV9pdGVt
KTsKICB2b2lkICgqIGNvbGxhcHNlKSAoR3RrVHJlZUl0ZW0gKnRyZWVfaXRlbSk7Cn07CgoKR3Rr
VHlwZSAgICBndGtfdHJlZV9pdGVtX2dldF90eXBlICAgICAgICh2b2lkKTsKR3RrV2lkZ2V0KiBn
dGtfdHJlZV9pdGVtX25ldyAgICAgICAgICAgICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfdHJlZV9p
dGVtX25ld193aXRoX2xhYmVsIChjb25zdCBnY2hhciAqbGFiZWwpOwp2b2lkICAgICAgIGd0a190
cmVlX2l0ZW1fc2V0X3N1YnRyZWUgICAgKEd0a1RyZWVJdGVtICp0cmVlX2l0ZW0sCgkJCQkJIEd0
a1dpZGdldCAgICpzdWJ0cmVlKTsKdm9pZCAgICAgICBndGtfdHJlZV9pdGVtX3JlbW92ZV9zdWJ0
cmVlIChHdGtUcmVlSXRlbSAqdHJlZV9pdGVtKTsKdm9pZCAgICAgICBndGtfdHJlZV9pdGVtX3Nl
bGVjdCAgICAgICAgIChHdGtUcmVlSXRlbSAqdHJlZV9pdGVtKTsKdm9pZCAgICAgICBndGtfdHJl
ZV9pdGVtX2Rlc2VsZWN0ICAgICAgIChHdGtUcmVlSXRlbSAqdHJlZV9pdGVtKTsKdm9pZCAgICAg
ICBndGtfdHJlZV9pdGVtX2V4cGFuZCAgICAgICAgIChHdGtUcmVlSXRlbSAqdHJlZV9pdGVtKTsK
dm9pZCAgICAgICBndGtfdHJlZV9pdGVtX2NvbGxhcHNlICAgICAgIChHdGtUcmVlSXRlbSAqdHJl
ZV9pdGVtKTsKCgoKfQoKCgoKIyAxMjYgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKCgoj
IDEgIi91c3IvaW5jbHVkZS9ndGsvZ3RrdmJib3guaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtW
QnV0dG9uQm94ICAgICAgIEd0a1ZCdXR0b25Cb3g7CnR5cGVkZWYgc3RydWN0IF9HdGtWQnV0dG9u
Qm94Q2xhc3MgIEd0a1ZCdXR0b25Cb3hDbGFzczsKCnN0cnVjdCBfR3RrVkJ1dHRvbkJveAp7CiAg
R3RrQnV0dG9uQm94IGJ1dHRvbl9ib3g7Cn07CgpzdHJ1Y3QgX0d0a1ZCdXR0b25Cb3hDbGFzcwp7
CiAgR3RrQnV0dG9uQm94Q2xhc3MgcGFyZW50X2NsYXNzOwp9OwoKCmd1aW50ICAgICAgZ3RrX3Zi
dXR0b25fYm94X2dldF90eXBlICh2b2lkKTsKR3RrV2lkZ2V0ICpndGtfdmJ1dHRvbl9ib3hfbmV3
ICAgICAgKHZvaWQpOwoKIAoKZ2ludCBndGtfdmJ1dHRvbl9ib3hfZ2V0X3NwYWNpbmdfZGVmYXVs
dCAodm9pZCk7CnZvaWQgZ3RrX3ZidXR0b25fYm94X3NldF9zcGFjaW5nX2RlZmF1bHQgKGdpbnQg
c3BhY2luZyk7CgpHdGtCdXR0b25Cb3hTdHlsZSBndGtfdmJ1dHRvbl9ib3hfZ2V0X2xheW91dF9k
ZWZhdWx0ICh2b2lkKTsKdm9pZCBndGtfdmJ1dHRvbl9ib3hfc2V0X2xheW91dF9kZWZhdWx0IChH
dGtCdXR0b25Cb3hTdHlsZSBsYXlvdXQpOwoKCgp9CgoKCgojIDEyOSAiL3Vzci9pbmNsdWRlL2d0
ay9ndGsuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3ZwYW5lZC5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCnR5
cGVkZWYgc3RydWN0IF9HdGtWUGFuZWQgICAgICAgR3RrVlBhbmVkOwp0eXBlZGVmIHN0cnVjdCBf
R3RrVlBhbmVkQ2xhc3MgIEd0a1ZQYW5lZENsYXNzOwoKc3RydWN0IF9HdGtWUGFuZWQKewogIEd0
a1BhbmVkIHBhbmVkOwp9OwoKc3RydWN0IF9HdGtWUGFuZWRDbGFzcwp7CiAgR3RrUGFuZWRDbGFz
cyBwYXJlbnRfY2xhc3M7Cn07CgoKZ3VpbnQgICAgICBndGtfdnBhbmVkX2dldF90eXBlICh2b2lk
KTsKR3RrV2lkZ2V0KiBndGtfdnBhbmVkX25ldyAgICAgICh2b2lkKTsKCgoKfQoKCgoKIyAxMzEg
Ii91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3Zy
dWxlci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAi
QyIgewoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtWUnVsZXIgICAgICAgR3RrVlJ1bGVyOwp0
eXBlZGVmIHN0cnVjdCBfR3RrVlJ1bGVyQ2xhc3MgIEd0a1ZSdWxlckNsYXNzOwoKc3RydWN0IF9H
dGtWUnVsZXIKewogIEd0a1J1bGVyIHJ1bGVyOwp9OwoKc3RydWN0IF9HdGtWUnVsZXJDbGFzcwp7
CiAgR3RrUnVsZXJDbGFzcyBwYXJlbnRfY2xhc3M7Cn07CgoKZ3VpbnQgICAgICBndGtfdnJ1bGVy
X2dldF90eXBlICh2b2lkKTsKR3RrV2lkZ2V0KiBndGtfdnJ1bGVyX25ldyAgICAgICh2b2lkKTsK
CgoKfQoKCgoKIyAxMzIgIi91c3IvaW5jbHVkZS9ndGsvZ3RrLmgiIDIgMwoKIyAxICIvdXNyL2lu
Y2x1ZGUvZ3RrL2d0a3ZzY2FsZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0d0a1ZTY2FsZSAg
ICAgICBHdGtWU2NhbGU7CnR5cGVkZWYgc3RydWN0IF9HdGtWU2NhbGVDbGFzcyAgR3RrVlNjYWxl
Q2xhc3M7CgpzdHJ1Y3QgX0d0a1ZTY2FsZQp7CiAgR3RrU2NhbGUgc2NhbGU7Cn07CgpzdHJ1Y3Qg
X0d0a1ZTY2FsZUNsYXNzCnsKICBHdGtTY2FsZUNsYXNzIHBhcmVudF9jbGFzczsKfTsKCgpHdGtU
eXBlICAgIGd0a192c2NhbGVfZ2V0X3R5cGUgKHZvaWQpOwpHdGtXaWRnZXQqIGd0a192c2NhbGVf
bmV3ICAgICAgKEd0a0FkanVzdG1lbnQgKmFkanVzdG1lbnQpOwoKCgp9CgoKCgojIDEzMyAiL3Vz
ci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZ3RrL2d0a3ZzZXBh
cmF0b3IuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4g
IkMiIHsKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HdGtWU2VwYXJhdG9yICAgICAgIEd0a1ZT
ZXBhcmF0b3I7CnR5cGVkZWYgc3RydWN0IF9HdGtWU2VwYXJhdG9yQ2xhc3MgIEd0a1ZTZXBhcmF0
b3JDbGFzczsKCnN0cnVjdCBfR3RrVlNlcGFyYXRvcgp7CiAgR3RrU2VwYXJhdG9yIHNlcGFyYXRv
cjsKfTsKCnN0cnVjdCBfR3RrVlNlcGFyYXRvckNsYXNzCnsKICBHdGtTZXBhcmF0b3JDbGFzcyBw
YXJlbnRfY2xhc3M7Cn07CgoKR3RrVHlwZSAgICBndGtfdnNlcGFyYXRvcl9nZXRfdHlwZSAodm9p
ZCk7Ckd0a1dpZGdldCogZ3RrX3ZzZXBhcmF0b3JfbmV3ICAgICAgKHZvaWQpOwoKCgoKfQoKCgoj
IDEzNSAiL3Vzci9pbmNsdWRlL2d0ay9ndGsuaCIgMiAzCgoKCgoKCiMgMyAic2hvdy5jcHAiIDIK
CgoKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKZXh0ZXJuICJDIiB7IAoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKIyA2OCAi
L3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMwoKIyAzMyAiL3Vzci9pbmNsdWRlL21hdGgu
aCIgMiAzCgoKIAoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGRlZi5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDQ1ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoZGVmLmgiIDMK
CiMgNDAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGFjb3MgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9fYWNvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwogCmV4dGVybiAgIGRv
dWJsZSAgICAgICAgICBhc2luICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2FzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgYXRhbiAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19hdGFuICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7
CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW4yICAgICAgICAgIChkb3VibGUgIF9feSwg
ZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19hdGFuMiAgICAgICAg
ICAoZG91YmxlICBfX3ksIGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGNvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgX19jb3MgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3Vi
bGUgICAgICAgICAgc2luICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3Vi
bGUgICAgICAgICBfX3NpbiAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwogCmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICB0YW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAg
IGRvdWJsZSAgICAgICAgIF9fdGFuICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKCgoK
CgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjb3NoICAgICAgICAgIChkb3VibGUgIF9f
eCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Nvc2ggICAgICAgICAgKGRvdWJsZSAg
X194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc2luaCAgICAgICAgICAoZG91
YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19zaW5oICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRhbmggICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fdGFuaCAgICAg
ICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFj
b3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X2Fjb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGFzaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUg
ICAgICAgICBfX2FzaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgIGF0YW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX2F0YW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoK
IAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZXhwICAgICAgICAgIChkb3VibGUgIF9feCkg
ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2V4cCAgICAgICAgICAoZG91YmxlICBfX3gp
ICAgICAgOwoKCgoKCgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGZyZXhwICAgICAgICAg
IChkb3VibGUgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9fZnJleHAgICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQgKl9fZXhwb25lbnQpICAgICAg
OwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbGRleHAgICAgICAgICAgKGRvdWJsZSAgX194
LCBpbnQgX19leHBvbmVudCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xkZXhwICAg
ICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fZXhwb25lbnQpICAgICAgOwoKIApleHRlcm4gICBk
b3VibGUgICAgICAgICAgbG9nICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2xvZyAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgbG9nMTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4
dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9nMTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAg
IDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIG1vZGYgICAgICAgICAgKGRvdWJsZSAgX194
LCBkb3VibGUgICpfX2lwdHIpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19tb2RmICAg
ICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICAqX19pcHRyKSAgICAgIDsKCgogCmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICBleHBtMSAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX19leHBtMSAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoK
IApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nMXAgICAgICAgICAgKGRvdWJsZSAgX194KSAg
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9nMXAgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxvZ2IgICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9nYiAgICAgICAgICAoZG91
YmxlICBfX3gpICAgICAgOwoKCgoKCgoKCgoKCiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IHBvdyAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICA7IGV4dGVybiAgIGRv
dWJsZSAgICAgICAgIF9fcG93ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAg
ICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc3FydCAgICAgICAgICAoZG91YmxlICBf
X3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19zcXJ0ICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgaHlwb3QgICAgICAgICAg
KGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X2h5cG90ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCgogCmV4
dGVybiAgIGRvdWJsZSAgICAgICAgICBjYnJ0ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBl
eHRlcm4gICBkb3VibGUgICAgICAgICBfX2NicnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAg
IDsKCgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgY2VpbCAgICAgICAgICAoZG91Ymxl
ICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19jZWlsICAgICAgICAgIChkb3Vi
bGUgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmYWJzICAgICAgICAg
IChkb3VibGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19mYWJzICAgICAgICAgIChkb3VibGUgIF9feCkgICAgIF9f
YXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKIApleHRlcm4gICBkb3VibGUgICAg
ICAgICAgZmxvb3IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9fZmxvb3IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgIGZtb2QgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkg
ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Ztb2QgICAgICAgICAgKGRvdWJsZSAgX194
LCBkb3VibGUgIF9feSkgICAgICA7CgoKIAoKZXh0ZXJuICBpbnQgICAgIF9faXNpbmYgICAgICAo
ZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCgpleHRl
cm4gIGludCAgICAgaXNpbmYgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICAgaW50ICAgICAgICBmaW5pdGUgICAgICAgIChkb3Vi
bGUgIF9fdmFsdWUpICAgIF9fYXR0cmlidXRlX18gKCAgKF9fY29uc3RfXykgKTsgZXh0ZXJuICAg
aW50ICAgICAgICBfX2Zpbml0ZSAgICAgICAgKGRvdWJsZSAgX192YWx1ZSkgICAgX19hdHRyaWJ1
dGVfXyAoICAoX19jb25zdF9fKSApIDsKCiAKCgoKCgpleHRlcm4gICBkb3VibGUgICAgICAgICAg
aW5mbmFuICAgICAgICAgIChpbnQgX19lcnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19j
b25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19pbmZuYW4gICAgICAgICAgKGlu
dCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4
dGVybiAgIGRvdWJsZSAgICAgICAgICBkcmVtICAgICAgICAgIChkb3VibGUgIF9feCwgZG91Ymxl
ICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19kcmVtICAgICAgICAgIChkb3Vi
bGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IHNpZ25pZmljYW5kICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUg
ICAgICAgICBfX3NpZ25pZmljYW5kICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKCiAK
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvcHlzaWduICAgICAgICAgIChkb3VibGUgIF9feCwg
ZG91YmxlICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVy
biAgIGRvdWJsZSAgICAgICAgIF9fY29weXNpZ24gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3Vi
bGUgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKCgoKCgoK
CiAKZXh0ZXJuICAgaW50ICAgICAgICBfX2lzbmFuICAgICAgICAoZG91YmxlICBfX3ZhbHVlKSAg
ICBfX2F0dHJpYnV0ZV9fICggIChfX2NvbnN0X18pICk7IGV4dGVybiAgIGludCAgICAgICAgX19f
X2lzbmFuICAgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgICBfX2F0dHJpYnV0ZV9fICggIChfX2Nv
bnN0X18pICkgOwoKCiAKZXh0ZXJuICAgaW50ICAgICAgICBpc25hbiAgICAgICAgKGRvdWJsZSAg
X192YWx1ZSkgICAgX19hdHRyaWJ1dGVfXyAoICAoX19jb25zdF9fKSApOyBleHRlcm4gICBpbnQg
ICAgICAgIF9faXNuYW4gICAgICAgIChkb3VibGUgIF9fdmFsdWUpICAgIF9fYXR0cmlidXRlX18g
KCAgKF9fY29uc3RfXykgKSA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBqMCAgICAgICAg
ICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2owICAgICAgICAgIChk
b3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGoxICAgICAgICAgIChkb3Vi
bGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fajEgICAgICAgICAgKGRvdWJsZSAp
ICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgam4gICAgICAgICAgKGludCwgZG91Ymxl
ICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2puICAgICAgICAgIChpbnQsIGRvdWJs
ZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgeTAgICAgICAgICAgKGRvdWJsZSAp
ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX195MCAgICAgICAgICAoZG91YmxlICkgICAg
ICA7CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICB5MSAgICAgICAgICAoZG91YmxlICkgICAgOyBl
eHRlcm4gICBkb3VibGUgICAgICAgICBfX3kxICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0
ZXJuICAgZG91YmxlICAgICAgICAgIHluICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX195biAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICAgIDsK
CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGVyZiAgICAgICAgICAoZG91YmxlICkgICAg
OyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2VyZiAgICAgICAgICAoZG91YmxlICkgICAgICA7
CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBlcmZjICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4
dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZXJmYyAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4
dGVybiAgIGRvdWJsZSAgICAgICAgICBsZ2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19sZ2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpl
eHRlcm4gICBkb3VibGUgICAgICAgICAgdGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4
dGVybiAgIGRvdWJsZSAgICAgICAgIF9fdGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICAgIDsK
CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZ2FtbWEgICAgICAgICAgKGRvdWJsZSApICAg
IDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19nYW1tYSAgICAgICAgICAoZG91YmxlICkgICAg
ICA7CgoKCiAKCgpleHRlcm4gICBkb3VibGUgICAgICAgICAgbGdhbW1hX3IgICAgICAgICAgICAg
IChkb3VibGUgLCBpbnQgKl9fc2lnbmdhbXApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg
X19sZ2FtbWFfciAgICAgICAgICAgICAgKGRvdWJsZSAsIGludCAqX19zaWduZ2FtcCkgICAgICA7
CgoKCgogCgpleHRlcm4gICBkb3VibGUgICAgICAgICAgcmludCAgICAgICAgICAoZG91YmxlICBf
X3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yaW50ICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBuZXh0YWZ0ZXIgICAgICAg
ICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19j
b25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19uZXh0YWZ0ZXIgICAgICAgICAg
KGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25z
dF9fKSAgKSAgOwoKCgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgcmVtYWluZGVyICAgICAg
ICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19yZW1haW5kZXIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7
CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc2NhbGIgICAgICAgICAgKGRvdWJsZSAgX194
LCBkb3VibGUgIF9fbikgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NjYWxiICAgICAg
ICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX24pICAgICAgOwoKCiAKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIHNjYWxibiAgICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX24pICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19zY2FsYm4gICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQg
X19uKSAgICAgIDsKCiAKZXh0ZXJuICAgaW50ICAgICAgICBpbG9nYiAgICAgICAgKGRvdWJsZSAg
X194KSAgIDsgZXh0ZXJuICAgaW50ICAgICAgICBfX2lsb2diICAgICAgICAoZG91YmxlICBfX3gp
ICAgIDsKCgojIDMzMyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKCiMgNjMgIi91
c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBhY29zZiAg
ICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYWNvc2Yg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGFz
aW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19h
c2luZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAg
ICAgYXRhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAg
ICBfX2F0YW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAg
ICAgICAgICBhdGFuMmYgICAgICAgICAoZmxvYXQgICBfX3ksIGZsb2F0ICAgX194KSAgICA7IGV4
dGVybiAgIGZsb2F0ICAgICAgICAgX19hdGFuMmYgICAgICAgICAoZmxvYXQgICBfX3ksIGZsb2F0
ICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgY29zZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY29zZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2luZiAgICAgICAg
IChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2luZiAgICAgICAg
IChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgdGFuZiAgICAg
ICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fdGFuZiAgICAg
ICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKCgoKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGNvc2hmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAg
ICAgX19jb3NoZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQg
ICAgICAgICAgc2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX3NpbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICB0YW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBm
bG9hdCAgICAgICAgIF9fdGFuaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCiAKZXh0
ZXJuICAgZmxvYXQgICAgICAgICAgYWNvc2hmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4
dGVybiAgIGZsb2F0ICAgICAgICAgX19hY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAg
OwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGFzaW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXNpbmhmICAgICAgICAgKGZsb2F0ICAgX194
KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBhdGFuaGYgICAgICAgICAoZmxvYXQg
ICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2F0YW5oZiAgICAgICAgIChmbG9h
dCAgIF9feCkgICAgICA7CgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBleHBmICAgICAg
ICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19leHBmICAgICAg
ICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgoKCgoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg
IGZyZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19mcmV4cGYgICAgICAgICAoZmxvYXQgICBfX3gsIGludCAqX19l
eHBvbmVudCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxkZXhwZiAgICAgICAg
IChmbG9hdCAgIF9feCwgaW50IF9fZXhwb25lbnQpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAg
ICBfX2xkZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fZXhwb25lbnQpICAgICAgOwoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBsb2dmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7
IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sb2dmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAg
IDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbG9nMTBmICAgICAgICAgKGZsb2F0ICAgX194
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sb2cxMGYgICAgICAgICAoZmxvYXQgICBf
X3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBtb2RmZiAgICAgICAgIChmbG9h
dCAgIF9feCwgZmxvYXQgICAqX19pcHRyKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19t
b2RmZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICAqX19pcHRyKSAgICAgIDsKCgogCmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIGV4cG0xZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBl
eHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXhwbTFmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAg
IDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbG9nMXBmICAgICAgICAgKGZsb2F0ICAgX194
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sb2cxcGYgICAgICAgICAoZmxvYXQgICBf
X3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBsb2diZiAgICAgICAgIChmbG9h
dCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbG9nYmYgICAgICAgICAoZmxv
YXQgICBfX3gpICAgICAgOwoKCgoKCgoKCgoKCiAKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAg
cG93ZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX3Bvd2YgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAg
IDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc3FydGYgICAgICAgICAoZmxvYXQgICBfX3gp
ICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NxcnRmICAgICAgICAgKGZsb2F0ICAgX194
KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGh5cG90ZiAgICAgICAgIChmbG9h
dCAgIF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2h5cG90
ZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAgOwoKCgogCmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIGNicnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAg
IGZsb2F0ICAgICAgICAgX19jYnJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKCiAK
CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgY2VpbGYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
IDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2NlaWxmICAgICAgICAgKGZsb2F0ICAgX194KSAg
ICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZmFic2YgICAgICAgICAoZmxvYXQgICBf
X3gpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX19mYWJzZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgIF9fYXR0cmlidXRlX18g
KCAgICAoX19jb25zdF9fKSAgKSAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmbG9vcmYg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2Zsb29y
ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg
IGZtb2RmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgOyBleHRlcm4gICBm
bG9hdCAgICAgICAgIF9fZm1vZGYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAg
ICAgIDsKCgogCgpleHRlcm4gIGludCAgICBfX2lzaW5mZiAgICAgKGZsb2F0ICAgX192YWx1ZSkg
ICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIAoKZXh0ZXJuICBpbnQgICAgaXNpbmZm
ICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAK
ZXh0ZXJuICAgaW50ICAgICAgIGZpbml0ZWYgICAgICAgKGZsb2F0ICAgX192YWx1ZSkgICAgX19h
dHRyaWJ1dGVfXyAoICAoX19jb25zdF9fKSApOyBleHRlcm4gICBpbnQgICAgICAgX19maW5pdGVm
ICAgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgIF9fYXR0cmlidXRlX18gKCAgKF9fY29uc3RfXykg
KSA7CgogCgoKCgoKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgaW5mbmFuZiAgICAgICAgIChpbnQg
X19lcnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX2luZm5hbmYgICAgICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJp
YnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAg
ZHJlbWYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZs
b2F0ICAgICAgICAgX19kcmVtZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAg
ICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2lnbmlmaWNhbmRmICAgICAgICAgKGZs
b2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19zaWduaWZpY2FuZGYgICAg
ICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNv
cHlzaWduZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICBfX2F0dHJpYnV0
ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19jb3B5c2ln
bmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAo
ICAgIChfX2NvbnN0X18pICApICA7CgoKCgoKCgoKIApleHRlcm4gICBpbnQgICAgICAgX19pc25h
bmYgICAgICAgKGZsb2F0ICAgX192YWx1ZSkgICAgX19hdHRyaWJ1dGVfXyAoICAoX19jb25zdF9f
KSApOyBleHRlcm4gICBpbnQgICAgICAgX19fX2lzbmFuZiAgICAgICAoZmxvYXQgICBfX3ZhbHVl
KSAgICBfX2F0dHJpYnV0ZV9fICggIChfX2NvbnN0X18pICkgOwoKCiAKZXh0ZXJuICAgaW50ICAg
ICAgIGlzbmFuZiAgICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgICBfX2F0dHJpYnV0ZV9fICggIChf
X2NvbnN0X18pICk7IGV4dGVybiAgIGludCAgICAgICBfX2lzbmFuZiAgICAgICAoZmxvYXQgICBf
X3ZhbHVlKSAgICBfX2F0dHJpYnV0ZV9fICggIChfX2NvbnN0X18pICkgOwoKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICBqMGYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fajBmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAg
ICAgICBqMWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9f
ajFmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICBqbmYg
ICAgICAgICAoaW50LCBmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19qbmYg
ICAgICAgICAoaW50LCBmbG9hdCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgeTBm
ICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3kwZiAgICAg
ICAgIChmbG9hdCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgeTFmICAgICAgICAg
KGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3kxZiAgICAgICAgIChmbG9h
dCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgeW5mICAgICAgICAgKGludCwgZmxv
YXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9feW5mICAgICAgICAgKGludCwgZmxv
YXQgICkgICAgICA7CgoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGVyZmYgICAgICAgICAo
ZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXJmZiAgICAgICAgIChmbG9h
dCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZXJmY2YgICAgICAgICAoZmxvYXQg
ICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXJmY2YgICAgICAgICAoZmxvYXQgICkg
ICAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxnYW1tYWYgICAgICAgICAoZmxvYXQgICkg
ICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAg
ICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgdGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAg
ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX190Z2FtbWFmICAgICAgICAgKGZsb2F0ICApICAg
ICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGdhbW1hZiAgICAgICAgIChmbG9hdCAg
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19nYW1tYWYgICAgICAgICAoZmxvYXQgICkg
ICAgICA7CgoKCiAKCgpleHRlcm4gICBmbG9hdCAgICAgICAgICBsZ2FtbWFmX3IgICAgICAgICAg
ICAoZmxvYXQgICwgaW50ICpfX3NpZ25nYW1wKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAg
X19sZ2FtbWFmX3IgICAgICAgICAgICAoZmxvYXQgICwgaW50ICpfX3NpZ25nYW1wKSAgICAgIDsK
CgoKCiAKCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHJpbnRmICAgICAgICAgKGZsb2F0ICAgX194
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19yaW50ZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIG5leHRhZnRlcmYgICAgICAgICAo
ZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0
X18pICApOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbmV4dGFmdGVyZiAgICAgICAgIChmbG9h
dCAgIF9feCwgZmxvYXQgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykg
ICkgIDsKCgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgcmVtYWluZGVyZiAgICAgICAgIChm
bG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3Jl
bWFpbmRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIHNjYWxiZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQg
ICBfX24pICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NjYWxiZiAgICAgICAgIChmbG9h
dCAgIF9feCwgZmxvYXQgICBfX24pICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAg
c2NhbGJuZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fbikgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fc2NhbGJuZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fbikgICAgICA7
CgogCmV4dGVybiAgIGludCAgICAgICBpbG9nYmYgICAgICAgKGZsb2F0ICAgX194KSAgIDsgZXh0
ZXJuICAgaW50ICAgICAgIF9faWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkgICAgOwoKCiMgMzMz
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwoKIyA4MiAiL3Vzci9pbmNsdWRlL21h
dGguaCIgMiAzCgoKCgoKIAoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNh
bGxzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhY29zbCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fYWNv
c2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgIGFzaW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19hc2lubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f
eCkgICAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgYXRhbmwgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2F0
YW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgICBhdGFuMmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3ksIGxvbmcgZG91
YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19hdGFuMmwgICAg
ICAgICAobG9uZyBkb3VibGUgICBfX3ksIGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCiAKZXh0
ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY29zbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f
eCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fY29zbCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgc2lu
bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAg
ICAgICAgIF9fc2lubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CiAKZXh0ZXJu
ICAgbG9uZyBkb3VibGUgICAgICAgICAgdGFubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkg
ICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fdGFubCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feCkgICAgICA7CgoKCgoKCgogCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIGNvc2hsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcg
ZG91YmxlICAgICAgICAgX19jb3NobCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7
CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgc2luaGwgICAgICAgICAobG9uZyBkb3Vi
bGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3NpbmhsICAgICAg
ICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAg
ICAgICB0YW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25n
IGRvdWJsZSAgICAgICAgIF9fdGFuaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAg
OwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgYWNvc2hsICAgICAgICAgKGxvbmcg
ZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19hY29zaGwg
ICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgIGFzaW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgIF9fYXNpbmhsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
KSAgICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhdGFuaGwgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2F0
YW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgoKIAoKIApleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICBleHBsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7
IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19leHBsICAgICAgICAgKGxvbmcgZG91Ymxl
ICAgX194KSAgICAgIDsKCgoKCgoKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGZy
ZXhwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICA7IGV4
dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19mcmV4cGwgICAgICAgICAobG9uZyBkb3VibGUg
ICBfX3gsIGludCAqX19leHBvbmVudCkgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgIGxkZXhwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50IF9fZXhwb25lbnQp
ICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xkZXhwbCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCwgaW50IF9fZXhwb25lbnQpICAgICAgOwoKIApleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgICBsb2dsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19sb2dsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
KSAgICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgbG9nMTBsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19s
b2cxMGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBsb25n
IGRvdWJsZSAgICAgICAgICBtb2RmbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBk
b3VibGUgICAqX19pcHRyKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19tb2Rm
bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICAqX19pcHRyKSAgICAg
IDsKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGV4cG0xbCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZXhwbTFs
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICAgbG9nMXBsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19sb2cxcGwgICAgICAgICAobG9uZyBkb3VibGUgICBf
X3gpICAgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsb2dibCAgICAgICAg
IChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9f
bG9nYmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKCgoKCgoKCgoKCiAKCiAK
ZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgcG93bCAgICAgICAgIChsb25nIGRvdWJsZSAg
IF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICBfX3Bvd2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAg
ICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgc3FydGwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3NxcnRs
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCgogCmV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgIGh5cG90bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3Vi
bGUgICBfX3kpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2h5cG90bCAgICAg
ICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICAgOwoKCgogCmV4
dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGNicnRsICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19jYnJ0bCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCkgICAgICA7CgoKCiAKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg
ICAgICAgY2VpbGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICBfX2NlaWxsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAg
IDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZmFic2wgICAgICAgICAobG9uZyBk
b3VibGUgICBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19mYWJzbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f
eCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKIApleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICBmbG9vcmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAg
IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Zsb29ybCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGZtb2Rs
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgOyBleHRl
cm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZm1vZGwgICAgICAgICAobG9uZyBkb3VibGUgICBf
X3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgIDsKCgogCgpleHRlcm4gIGludCAgICBfX2lzaW5m
bCAgICAgKGxvbmcgZG91YmxlICAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKIAoKZXh0ZXJuICBpbnQgICAgaXNpbmZsICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVl
KSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICAgaW50ICAgICAgIGZp
bml0ZWwgICAgICAgKGxvbmcgZG91YmxlICAgX192YWx1ZSkgICAgX19hdHRyaWJ1dGVfXyAoICAo
X19jb25zdF9fKSApOyBleHRlcm4gICBpbnQgICAgICAgX19maW5pdGVsICAgICAgIChsb25nIGRv
dWJsZSAgIF9fdmFsdWUpICAgIF9fYXR0cmlidXRlX18gKCAgKF9fY29uc3RfXykgKSA7CgogCgoK
CgoKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgaW5mbmFubCAgICAgICAgIChpbnQgX19l
cnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICBfX2luZm5hbmwgICAgICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0
dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUg
ICAgICAgICAgZHJlbWwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAg
X195KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19kcmVtbCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAg
bG9uZyBkb3VibGUgICAgICAgICAgc2lnbmlmaWNhbmRsICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19zaWduaWZpY2FuZGwgICAg
ICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKCgogCmV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgIGNvcHlzaWdubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3Vi
bGUgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19jb3B5c2lnbmwgICAgICAgICAobG9uZyBkb3VibGUgICBf
X3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18p
ICApICA7CgoKCgoKCgoKIApleHRlcm4gICBpbnQgICAgICAgX19pc25hbmwgICAgICAgKGxvbmcg
ZG91YmxlICAgX192YWx1ZSkgICAgX19hdHRyaWJ1dGVfXyAoICAoX19jb25zdF9fKSApOyBleHRl
cm4gICBpbnQgICAgICAgX19fX2lzbmFubCAgICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAg
ICBfX2F0dHJpYnV0ZV9fICggIChfX2NvbnN0X18pICkgOwoKCiAKZXh0ZXJuICAgaW50ICAgICAg
IGlzbmFubCAgICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgICBfX2F0dHJpYnV0ZV9fICgg
IChfX2NvbnN0X18pICk7IGV4dGVybiAgIGludCAgICAgICBfX2lzbmFubCAgICAgICAobG9uZyBk
b3VibGUgICBfX3ZhbHVlKSAgICBfX2F0dHJpYnV0ZV9fICggIChfX2NvbnN0X18pICkgOwoKIApl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBqMGwgICAgICAgICAobG9uZyBkb3VibGUgICkg
ICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fajBsICAgICAgICAgKGxvbmcgZG91
YmxlICApICAgICAgOwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBqMWwgICAgICAgICAo
bG9uZyBkb3VibGUgICkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fajFsICAg
ICAgICAgKGxvbmcgZG91YmxlICApICAgICAgOwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAg
ICBqbmwgICAgICAgICAoaW50LCBsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgX19qbmwgICAgICAgICAoaW50LCBsb25nIGRvdWJsZSAgKSAgICAgIDsKZXh0
ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgeTBsICAgICAgICAgKGxvbmcgZG91YmxlICApICAg
IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3kwbCAgICAgICAgIChsb25nIGRvdWJs
ZSAgKSAgICAgIDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgeTFsICAgICAgICAgKGxv
bmcgZG91YmxlICApICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3kxbCAgICAg
ICAgIChsb25nIGRvdWJsZSAgKSAgICAgIDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg
eW5sICAgICAgICAgKGludCwgbG9uZyBkb3VibGUgICkgICAgOyBleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgIF9feW5sICAgICAgICAgKGludCwgbG9uZyBkb3VibGUgICkgICAgICA7CgoKCgog
CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGVyZmwgICAgICAgICAobG9uZyBkb3VibGUg
ICkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZXJmbCAgICAgICAgIChsb25n
IGRvdWJsZSAgKSAgICAgIDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZXJmY2wgICAg
ICAgICAobG9uZyBkb3VibGUgICkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9f
ZXJmY2wgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICA7CmV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgIGxnYW1tYWwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgOyBleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgIF9fbGdhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICAg
IDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgdGdhbW1hbCAgICAgICAgIChsb25nIGRv
dWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX190Z2FtbWFsICAgICAg
ICAgKGxvbmcgZG91YmxlICApICAgICAgOwoKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIGdhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgX19nYW1tYWwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICA7CgoKCiAK
CgpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsZ2FtbWFsX3IgICAgICAgICAgICAobG9u
ZyBkb3VibGUgICwgaW50ICpfX3NpZ25nYW1wKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgX19sZ2FtbWFsX3IgICAgICAgICAgICAobG9uZyBkb3VibGUgICwgaW50ICpfX3NpZ25n
YW1wKSAgICAgIDsKCgoKCiAKCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHJpbnRsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgX19yaW50bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgogCmV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgIG5leHRhZnRlcmwgICAgICAgICAobG9uZyBkb3VibGUgICBf
X3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18p
ICApOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fbmV4dGFmdGVybCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICgg
ICAgKF9fY29uc3RfXykgICkgIDsKCgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg
cmVtYWluZGVybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kp
ICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3JlbWFpbmRlcmwgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgIDsKCgogCmV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgIHNjYWxibCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwg
bG9uZyBkb3VibGUgICBfX24pICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3Nj
YWxibCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX24pICAgICAg
OwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgc2NhbGJubCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCwgaW50IF9fbikgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAg
IF9fc2NhbGJubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50IF9fbikgICAgICA7Cgog
CmV4dGVybiAgIGludCAgICAgICBpbG9nYmwgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgIDsg
ZXh0ZXJuICAgaW50ICAgICAgIF9faWxvZ2JsICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAg
OwoKCiMgMzMzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwoKIyA5OSAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMiAzCgoKCgoKCgoKCgoKCgogCmV4dGVybiBpbnQgc2lnbmdhbTsKCgoK
IAojIDIzMiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCgogCnR5cGVkZWYgZW51bQp7CiAgX0lF
RUVfID0gLTEsCSAKICBfU1ZJRF8sCSAKICBfWE9QRU5fLAkgCiAgX1BPU0lYXywKICBfSVNPQ18J
IAp9IF9MSUJfVkVSU0lPTl9UWVBFOwoKIAoKCmV4dGVybiBfTElCX1ZFUlNJT05fVFlQRSBfTElC
X1ZFUlNJT047CgoKCgogCgoKCgoKc3RydWN0IF9fZXhjZXB0aW9uCgoKCiAgewogICAgaW50IHR5
cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3VibGUgYXJnMjsKICAg
IGRvdWJsZSByZXR2YWw7CiAgfTsKCgpleHRlcm4gaW50IG1hdGhlcnIgIChzdHJ1Y3QgX19leGNl
cHRpb24gKl9fZXhjKSAgdGhyb3cgKCkgIDsKCgoKCgoKIAoKCgoKCgoKIAoKCgojIDI5OSAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMwoKCgogCgoKCgoKCgoKCgoKCgoKCgogCgoKIyAzMzYgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDMKCgoKIAoKCgoKCgogCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21h
dGhpbmxpbmUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxMzYgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwoKCgogCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCl9faW5saW5lICAgZG91YmxlICAgICBfX3NnbiAgICggZG91Ymxl
ICk7CV9faW5saW5lICAgZG91YmxlICAgICBfX3NnbiAgICggZG91YmxlICAgICAgX194ICApCXsJ
ICAgICAgcmV0dXJuIF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEuMCkg
IDsJfSAJX19pbmxpbmUgICBmbG9hdCAgICAgIF9fc2duZiAgICAoIGZsb2F0ICk7CV9faW5saW5l
ICAgZmxvYXQgICAgICBfX3NnbmYgICAgKCBmbG9hdCAgICAgIF9feCAgKQl7CSAgICAgIHJldHVy
biBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApICA7CX0gCV9faW5s
aW5lICAgbG9uZyBkb3VibGUgICAgICBfX3NnbmwgICAgKCBsb25nIGRvdWJsZSApOwlfX2lubGlu
ZSAgIGxvbmcgZG91YmxlICAgICAgX19zZ25sICAgICggbG9uZyBkb3VibGUgICAgICBfX3ggICkJ
ewkgICAgICByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4w
KSAgOwl9ICAKCgpfX2lubGluZSAgIGRvdWJsZSAgICAgX19wb3cyICAgKCBkb3VibGUgKTsJX19p
bmxpbmUgICBkb3VibGUgICAgIF9fcG93MiAgICggZG91YmxlICAgICAgX194ICApCXsJICAgICAg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJCQkJCQkgICAgICAgIHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fZXhwb25lbnQ7CQkJCQkgICAgICAgIF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGlu
dCBfX3AgPSAobG9uZyBsb25nIGludCkgX194OwkJICAgICAgICBpZiAoX194ID09IChsb25nIGRv
dWJsZSkgX19wKQkJCQkJCSAgICAgICAgICB7CQkJCQkJCQkJICAgICAgICAgICAgX19hc20gX192
b2xhdGlsZV9fCQkJCQkJICAgICAgCSgiZnNjYWxlIgkJCQkJCQkgICAgICAJIDogIj10IiAoX192
YWx1ZSkgOiAiMCIgKDEuMCksICJ1IiAoX194KSk7CQkJICAgICAgICAgICAgcmV0dXJuIF9fdmFs
dWU7CQkJCQkJCSAgICAgICAgICB9CQkJCQkJCQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlX18J
CQkJCQkJICAgICAgICAgICgiZmxkCSUlc3QoMClcblx0IgkJCQkJCSAgICAgICAgICAgImZybmRp
bnQJCQkjIGludCh4KVxuXHQiCQkJCSAgICAgICAgICAgImZ4Y2hcblx0IgkJCQkJCQkJICAgICAg
ICAgICAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHgpXG5cdCIJCQkJICAgICAgICAgICAiZjJ4bTEJ
CQkjIDJeKGZyYWN0KHgpKSAtIDFcblx0IgkJCSAgICAgICAgICAgOiAiPXQiIChfX3ZhbHVlKSwg
Ij11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOwkJCSAgICAgICAgX192YWx1ZSArPSAxLjA7
CQkJCQkJCSAgICAgICAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAgICAoImZzY2Fs
ZSIJCQkJCQkJCSAgICAgICAgICAgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1
IiAoX19leHBvbmVudCkpOwkJICAgICAgICByZXR1cm4gX192YWx1ZSAgOwl9IAlfX2lubGluZSAg
IGZsb2F0ICAgICAgX19wb3cyZiAgICAoIGZsb2F0ICk7CV9faW5saW5lICAgZmxvYXQgICAgICBf
X3BvdzJmICAgICggZmxvYXQgICAgICBfX3ggICkJewkgICAgICByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsJ
CQkJCSAgICAgICAgX19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcg
aW50KSBfX3g7CQkgICAgICAgIGlmIChfX3ggPT0gKGxvbmcgZG91YmxlKSBfX3ApCQkJCQkJICAg
ICAgICAgIHsJCQkJCQkJCQkgICAgICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlX18JCQkJCQkgICAg
ICAJKCJmc2NhbGUiCQkJCQkJCSAgICAgIAkgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoMS4wKSwg
InUiIChfX3gpKTsJCQkgICAgICAgICAgICByZXR1cm4gX192YWx1ZTsJCQkJCQkJICAgICAgICAg
IH0JCQkJCQkJCQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAgICAgICAgKCJm
bGQJJSVzdCgwKVxuXHQiCQkJCQkJICAgICAgICAgICAiZnJuZGludAkJCSMgaW50KHgpXG5cdCIJ
CQkJICAgICAgICAgICAiZnhjaFxuXHQiCQkJCQkJCQkgICAgICAgICAgICJmc3ViCSUlc3QoMSkJ
CSMgZnJhY3QoeClcblx0IgkJCQkgICAgICAgICAgICJmMnhtMQkJCSMgMl4oZnJhY3QoeCkpIC0g
MVxuXHQiCQkJICAgICAgICAgICA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6
ICIwIiAoX194KSk7CQkJICAgICAgICBfX3ZhbHVlICs9IDEuMDsJCQkJCQkJICAgICAgICBfX2Fz
bSBfX3ZvbGF0aWxlX18JCQkJCQkJICAgICAgICAgICgiZnNjYWxlIgkJCQkJCQkJICAgICAgICAg
ICA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7CQkg
ICAgICAgIHJldHVybiBfX3ZhbHVlICA7CX0gCV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBf
X3BvdzJsICAgICggbG9uZyBkb3VibGUgKTsJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAgIF9f
cG93MmwgICAgKCBsb25nIGRvdWJsZSAgICAgIF9feCAgKQl7CSAgICAgIHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgICByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9u
ZW50OwkJCQkJICAgICAgICBfX2V4dGVuc2lvbl9fIGxvbmcgbG9uZyBpbnQgX19wID0gKGxvbmcg
bG9uZyBpbnQpIF9feDsJCSAgICAgICAgaWYgKF9feCA9PSAobG9uZyBkb3VibGUpIF9fcCkJCQkJ
CQkgICAgICAgICAgewkJCQkJCQkJCSAgICAgICAgICAgIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJ
CSAgICAgIAkoImZzY2FsZSIJCQkJCQkJICAgICAgCSA6ICI9dCIgKF9fdmFsdWUpIDogIjAiICgx
LjApLCAidSIgKF9feCkpOwkJCSAgICAgICAgICAgIHJldHVybiBfX3ZhbHVlOwkJCQkJCQkgICAg
ICAgICAgfQkJCQkJCQkJCSAgICAgICAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAg
ICAoImZsZAklJXN0KDApXG5cdCIJCQkJCQkgICAgICAgICAgICJmcm5kaW50CQkJIyBpbnQoeClc
blx0IgkJCQkgICAgICAgICAgICJmeGNoXG5cdCIJCQkJCQkJCSAgICAgICAgICAgImZzdWIJJSVz
dCgxKQkJIyBmcmFjdCh4KVxuXHQiCQkJCSAgICAgICAgICAgImYyeG0xCQkJIyAyXihmcmFjdCh4
KSkgLSAxXG5cdCIJCQkgICAgICAgICAgIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25l
bnQpIDogIjAiIChfX3gpKTsJCQkgICAgICAgIF9fdmFsdWUgKz0gMS4wOwkJCQkJCQkgICAgICAg
IF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAgICAgICAgKCJmc2NhbGUiCQkJCQkJCQkgICAg
ICAgICAgIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQp
KTsJCSAgICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAgCiMgMjYwICIvdXNyL2luY2x1ZGUvYml0
cy9tYXRoaW5saW5lLmgiIDMKCgojIDI4MiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5o
IiAzCgpfX2lubGluZSAgdm9pZCBfX3NpbmNvcyAoZG91YmxlIF9feCwgZG91YmxlICpfX3Npbngs
IGRvdWJsZSAqX19jb3N4KTsKX19pbmxpbmUgIHZvaWQKX19zaW5jb3MgKGRvdWJsZSBfX3gsIGRv
dWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
Y29zcjsJcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19zaW5yOwlfX2FzbSBfX3ZvbGF0aWxlX18JKCJm
c2luY29zXG5cdCIJImZuc3RzdwklJWF4XG5cdCIJInRlc3RsCSQweDQwMCwgJSVlYXhcblx0Igki
anoJMWZcblx0IgkiZmxkcGlcblx0IgkiZmFkZAklJXN0KDApXG5cdCIJImZ4Y2gJJSVzdCgxKVxu
XHQiCSIyOiBmcHJlbTFcblx0IgkiZm5zdHN3CSUlYXhcblx0IgkidGVzdGwJJDB4NDAwLCAlJWVh
eFxuXHQiCSJqbnoJMmJcblx0IgkiZnN0cAklJXN0KDEpXG5cdCIJImZzaW5jb3Ncblx0IgkiMToi
CTogIj10IiAoX19jb3NyKSwgIj11IiAoX19zaW5yKSA6ICIwIiAoX194KSk7CSpfX3NpbnggPSBf
X3NpbnI7CSpfX2Nvc3ggPSBfX2Nvc3IgOwp9CgpfX2lubGluZSAgdm9pZCBfX3NpbmNvc2YgKGZs
b2F0IF9feCwgZmxvYXQgKl9fc2lueCwgZmxvYXQgKl9fY29zeCk7Cl9faW5saW5lICB2b2lkCl9f
c2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBmbG9hdCAqX19jb3N4KQp7CiAgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX19jb3NyOwlyZWdpc3RlciBsb25nIGRvdWJsZSBfX3NpbnI7CV9f
YXNtIF9fdm9sYXRpbGVfXwkoImZzaW5jb3Ncblx0IgkiZm5zdHN3CSUlYXhcblx0IgkidGVzdGwJ
JDB4NDAwLCAlJWVheFxuXHQiCSJqegkxZlxuXHQiCSJmbGRwaVxuXHQiCSJmYWRkCSUlc3QoMClc
blx0IgkiZnhjaAklJXN0KDEpXG5cdCIJIjI6IGZwcmVtMVxuXHQiCSJmbnN0c3cJJSVheFxuXHQi
CSJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIJImpuegkyYlxuXHQiCSJmc3RwCSUlc3QoMSlcblx0
IgkiZnNpbmNvc1xuXHQiCSIxOiIJOiAiPXQiIChfX2Nvc3IpLCAiPXUiIChfX3NpbnIpIDogIjAi
IChfX3gpKTsJKl9fc2lueCA9IF9fc2lucjsJKl9fY29zeCA9IF9fY29zciA7Cn0KCl9faW5saW5l
ICB2b2lkIF9fc2luY29zbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54LAoJ
CQkgICAgICBsb25nIGRvdWJsZSAqX19jb3N4KTsKX19pbmxpbmUgIHZvaWQKX19zaW5jb3NsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX3NpbngsIGxvbmcgZG91YmxlICpfX2Nvc3gp
CnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX2Nvc3I7CXJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
c2lucjsJX19hc20gX192b2xhdGlsZV9fCSgiZnNpbmNvc1xuXHQiCSJmbnN0c3cJJSVheFxuXHQi
CSJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIJImp6CTFmXG5cdCIJImZsZHBpXG5cdCIJImZhZGQJ
JSVzdCgwKVxuXHQiCSJmeGNoCSUlc3QoMSlcblx0IgkiMjogZnByZW0xXG5cdCIJImZuc3Rzdwkl
JWF4XG5cdCIJInRlc3RsCSQweDQwMCwgJSVlYXhcblx0Igkiam56CTJiXG5cdCIJImZzdHAJJSVz
dCgxKVxuXHQiCSJmc2luY29zXG5cdCIJIjE6Igk6ICI9dCIgKF9fY29zciksICI9dSIgKF9fc2lu
cikgOiAiMCIgKF9feCkpOwkqX19zaW54ID0gX19zaW5yOwkqX19jb3N4ID0gX19jb3NyIDsKfQoK
CiAKCgoKIyAzMjggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSAg
IGxvbmcgZG91YmxlICAgIF9fZXhwbTFsICAoIGxvbmcgZG91YmxlICk7CV9faW5saW5lICAgbG9u
ZyBkb3VibGUgICAgX19leHBtMWwgICggbG9uZyBkb3VibGUgICAgX194ICkJewkgIHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fdmFsdWU7CXJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7CXJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdGVtcDsJX19hc20gX192b2xhdGlsZV9fCSgiZmxkbDJlCQkJ
IyBlXnggLSAxID0gMl4oeCAqIGxvZzIoZSkpIC0gMVxuXHQiCSJmbXVsCSUlc3QoMSkJCSMgeCAq
IGxvZzIoZSlcblx0IgkiZnN0CSUlc3QoMSlcblx0IgkiZnJuZGludAkJCSMgaW50KHggKiBsb2cy
KGUpKVxuXHQiCSJmeGNoXG5cdCIJImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlc
blx0IgkiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIJImZzY2FsZQkJ
CSMgMl4oeCAqIGxvZzIoZSkpIC0gMl4oaW50KHggKiBsb2cyKGUpKSlcblx0IiA6ICI9dCIgKF9f
dmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7CV9fYXNtIF9fdm9sYXRpbGVf
XwkoImZzY2FsZQkJCSMgMl5pbnQoeCAqIGxvZzIoZSkpXG5cdCIJOiAiPXQiIChfX3RlbXApIDog
IjAiICgxLjApLCAidSIgKF9fZXhwb25lbnQpKTsJX190ZW1wIC09IDEuMDsJcmV0dXJuIF9fdGVt
cCArIF9fdmFsdWUgIDsJfSAKCgoKIyAzNDggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUu
aCIgMwpfX2lubGluZSAgIGRvdWJsZSAgICAgZXhwICAgKCBkb3VibGUgKTsJX19pbmxpbmUgICBk
b3VibGUgICAgIGV4cCAgICggZG91YmxlICAgICAgX194ICApCXsJICAgIHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7CXJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7CV9fYXNtIF9f
dm9sYXRpbGVfXwkoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkpXG5cdCIJImZtdWwJ
JSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiCSJmc3QJJSVzdCgxKVxuXHQiCSJmcm5kaW50CQkJ
IyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIJImZ4Y2hcblx0IgkiZnN1YgklJXN0KDEpCQkjIGZyYWN0
KHggKiBsb2cyKGUpKVxuXHQiCSJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFc
blx0Igk6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7CV9f
dmFsdWUgKz0gMS4wOwlfX2FzbSBfX3ZvbGF0aWxlX18JKCJmc2NhbGUiCTogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsJcmV0dXJuIF9fdmFsdWUgICA7
CX0gCV9faW5saW5lICAgZmxvYXQgICAgICBleHBmICAgICggZmxvYXQgKTsJX19pbmxpbmUgICBm
bG9hdCAgICAgIGV4cGYgICAgKCBmbG9hdCAgICAgIF9feCAgKQl7CSAgICByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOwlyZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OwlfX2FzbSBf
X3ZvbGF0aWxlX18JKCJmbGRsMmUJCQkjIGVeeCA9IDJeKHggKiBsb2cyKGUpKVxuXHQiCSJmbXVs
CSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IgkiZnN0CSUlc3QoMSlcblx0IgkiZnJuZGludAkJ
CSMgaW50KHggKiBsb2cyKGUpKVxuXHQiCSJmeGNoXG5cdCIJImZzdWIJJSVzdCgxKQkJIyBmcmFj
dCh4ICogbG9nMihlKSlcblx0IgkiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAx
XG5cdCIJOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOwlf
X3ZhbHVlICs9IDEuMDsJX19hc20gX192b2xhdGlsZV9fCSgiZnNjYWxlIgk6ICI9dCIgKF9fdmFs
dWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7CXJldHVybiBfX3ZhbHVlICAg
Owl9IAlfX2lubGluZSAgIGxvbmcgZG91YmxlICAgICAgZXhwbCAgICAoIGxvbmcgZG91YmxlICk7
CV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBleHBsICAgICggbG9uZyBkb3VibGUgICAgICBf
X3ggICkJewkgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX19leHBvbmVudDsJX19hc20gX192b2xhdGlsZV9fCSgiZmxkbDJlCQkJIyBlXnggPSAy
Xih4ICogbG9nMihlKSlcblx0IgkiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIJImZz
dAklJXN0KDEpXG5cdCIJImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0IgkiZnhjaFxu
XHQiCSJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIJImYyeG0xCQkJIyAy
XihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiCTogIj10IiAoX192YWx1ZSksICI9dSIgKF9f
ZXhwb25lbnQpIDogIjAiIChfX3gpKTsJX192YWx1ZSArPSAxLjA7CV9fYXNtIF9fdm9sYXRpbGVf
XwkoImZzY2FsZSIJOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1IiAoX19leHBv
bmVudCkpOwlyZXR1cm4gX192YWx1ZSAgIDsJfSAgCl9faW5saW5lICAgbG9uZyBkb3VibGUgICAg
X19leHBsICAoIGxvbmcgZG91YmxlICk7CV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgX19leHBs
ICAoIGxvbmcgZG91YmxlICAgIF9feCApCXsJICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl
OwlyZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OwlfX2FzbSBfX3ZvbGF0aWxlX18JKCJm
bGRsMmUJCQkjIGVeeCA9IDJeKHggKiBsb2cyKGUpKVxuXHQiCSJmbXVsCSUlc3QoMSkJCSMgeCAq
IGxvZzIoZSlcblx0IgkiZnN0CSUlc3QoMSlcblx0IgkiZnJuZGludAkJCSMgaW50KHggKiBsb2cy
KGUpKVxuXHQiCSJmeGNoXG5cdCIJImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlc
blx0IgkiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIJOiAiPXQiIChf
X3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOwlfX3ZhbHVlICs9IDEuMDsJ
X19hc20gX192b2xhdGlsZV9fCSgiZnNjYWxlIgk6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3Zh
bHVlKSwgInUiIChfX2V4cG9uZW50KSk7CXJldHVybiBfX3ZhbHVlICA7CX0gCgoKX19pbmxpbmUg
ICBkb3VibGUgICAgIHRhbiAgICggZG91YmxlICk7CV9faW5saW5lICAgZG91YmxlICAgICB0YW4g
ICAoIGRvdWJsZSAgICAgIF9feCAgKQl7CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7CQkJCQkJICAgICAgICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlMiBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlX18JCQkJCQkJICAg
ICAgICAgICgiZnB0YW4iCQkJCQkJCQkgICAgICAgICAgIDogIj10IiAoX192YWx1ZTIpLCAiPXUi
IChfX3ZhbHVlKSA6ICIwIiAoX194KSk7CQkJICAgICAgICByZXR1cm4gX192YWx1ZSAgOwl9IAlf
X2lubGluZSAgIGZsb2F0ICAgICAgdGFuZiAgICAoIGZsb2F0ICk7CV9faW5saW5lICAgZmxvYXQg
ICAgICB0YW5mICAgICggZmxvYXQgICAgICBfX3ggICkJewkgICAgICByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTIg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsJCSAgICAgICAgX19hc20gX192b2xhdGlsZV9f
CQkJCQkJCSAgICAgICAgICAoImZwdGFuIgkJCQkJCQkJICAgICAgICAgICA6ICI9dCIgKF9fdmFs
dWUyKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOwkJCSAgICAgICAgcmV0dXJuIF9fdmFs
dWUgIDsJfSAJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAgIHRhbmwgICAgKCBsb25nIGRvdWJs
ZSApOwlfX2lubGluZSAgIGxvbmcgZG91YmxlICAgICAgdGFubCAgICAoIGxvbmcgZG91YmxlICAg
ICAgX194ICApCXsJICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJCQkJCQkgICAg
ICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAgICAgICAgKCJmcHRh
biIJCQkJCQkJCSAgICAgICAgICAgOiAiPXQiIChfX3ZhbHVlMiksICI9dSIgKF9fdmFsdWUpIDog
IjAiIChfX3gpKTsJCQkgICAgICAgIHJldHVybiBfX3ZhbHVlICA7CX0gIAoKCgoKCgoKCgoKCgoK
Cl9faW5saW5lICAgZG91YmxlICAgICBhdGFuMiAgICggZG91YmxlICwgIGRvdWJsZSApOwlfX2lu
bGluZSAgIGRvdWJsZSAgICAgYXRhbjIgICAoIGRvdWJsZSAgICAgIF9feSAgLCAgZG91YmxlICAg
ICAgX194ICApCXsJICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CV9fYXNtIF9fdm9s
YXRpbGVfXwkoImZwYXRhblxuXHQiCTogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAo
X195KSA6ICJzdCgxKSIpOwlyZXR1cm4gX192YWx1ZSAgIDsJfSAJX19pbmxpbmUgICBmbG9hdCAg
ICAgIGF0YW4yZiAgICAoIGZsb2F0ICwgIGZsb2F0ICk7CV9faW5saW5lICAgZmxvYXQgICAgICBh
dGFuMmYgICAgKCBmbG9hdCAgICAgIF9feSAgLCAgZmxvYXQgICAgICBfX3ggICkJewkgICAgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJX19hc20gX192b2xhdGlsZV9fCSgiZnBhdGFuXG5c
dCIJOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7CXJl
dHVybiBfX3ZhbHVlICAgOwl9IAlfX2lubGluZSAgIGxvbmcgZG91YmxlICAgICAgYXRhbjJsICAg
ICggbG9uZyBkb3VibGUgLCAgbG9uZyBkb3VibGUgKTsJX19pbmxpbmUgICBsb25nIGRvdWJsZSAg
ICAgIGF0YW4ybCAgICAoIGxvbmcgZG91YmxlICAgICAgX195ICAsICBsb25nIGRvdWJsZSAgICAg
IF9feCAgKQl7CSAgICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOwlfX2FzbSBfX3ZvbGF0
aWxlX18JKCJmcGF0YW5cblx0Igk6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9f
eSkgOiAic3QoMSkiKTsJcmV0dXJuIF9fdmFsdWUgICA7CX0gIApfX2lubGluZSAgIGxvbmcgZG91
YmxlICAgIF9fYXRhbjJsICAoIGxvbmcgZG91YmxlICwgIGxvbmcgZG91YmxlICk7CV9faW5saW5l
ICAgbG9uZyBkb3VibGUgICAgX19hdGFuMmwgICggbG9uZyBkb3VibGUgICAgX195ICwgIGxvbmcg
ZG91YmxlICAgIF9feCApCXsJICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOwlfX2FzbSBf
X3ZvbGF0aWxlX18JKCJmcGF0YW5cblx0Igk6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAi
dSIgKF9feSkgOiAic3QoMSkiKTsJcmV0dXJuIF9fdmFsdWUgIDsJfSAKCgpfX2lubGluZSAgIGRv
dWJsZSAgICAgZm1vZCAgICggZG91YmxlICwgIGRvdWJsZSApOwlfX2lubGluZSAgIGRvdWJsZSAg
ICAgZm1vZCAgICggZG91YmxlICAgICAgX194ICAsICBkb3VibGUgICAgICBfX3kgICkJewkgICAg
ICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgX19hc20gX192b2xh
dGlsZV9fCQkJCQkJCSAgICAgICAgICAoIjE6CWZwcmVtXG5cdCIJCQkJCQkgICAgICAgICAgICJm
bnN0c3cJJSVheFxuXHQiCQkJCQkJICAgICAgICAgICAic2FoZlxuXHQiCQkJCQkJCQkgICAgICAg
ICAgICJqcAkxYiIJCQkJCQkJICAgICAgICAgICA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gp
LCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsJCSAgICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAJ
X19pbmxpbmUgICBmbG9hdCAgICAgIGZtb2RmICAgICggZmxvYXQgLCAgZmxvYXQgKTsJX19pbmxp
bmUgICBmbG9hdCAgICAgIGZtb2RmICAgICggZmxvYXQgICAgICBfX3ggICwgIGZsb2F0ICAgICAg
X195ICApCXsJICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJCQkJCQkgICAgICAg
IF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAgICAgICAgKCIxOglmcHJlbVxuXHQiCQkJCQkJ
ICAgICAgICAgICAiZm5zdHN3CSUlYXhcblx0IgkJCQkJCSAgICAgICAgICAgInNhaGZcblx0IgkJ
CQkJCQkJICAgICAgICAgICAianAJMWIiCQkJCQkJCSAgICAgICAgICAgOiAiPXQiIChfX3ZhbHVl
KSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImF4IiwgImNjIik7CQkgICAgICAgIHJldHVybiBf
X3ZhbHVlICA7CX0gCV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBmbW9kbCAgICAoIGxvbmcg
ZG91YmxlICwgIGxvbmcgZG91YmxlICk7CV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBmbW9k
bCAgICAoIGxvbmcgZG91YmxlICAgICAgX194ICAsICBsb25nIGRvdWJsZSAgICAgIF9feSAgKQl7
CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgICBfX2FzbSBf
X3ZvbGF0aWxlX18JCQkJCQkJICAgICAgICAgICgiMToJZnByZW1cblx0IgkJCQkJCSAgICAgICAg
ICAgImZuc3RzdwklJWF4XG5cdCIJCQkJCQkgICAgICAgICAgICJzYWhmXG5cdCIJCQkJCQkJCSAg
ICAgICAgICAgImpwCTFiIgkJCQkJCQkgICAgICAgICAgIDogIj10IiAoX192YWx1ZSkgOiAiMCIg
KF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOwkJICAgICAgICByZXR1cm4gX192YWx1ZSAg
Owl9ICAKIyAzODAgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwoKCl9faW5saW5l
ICAgZG91YmxlICAgICBwb3cgICAoIGRvdWJsZSAsICBkb3VibGUgKTsJX19pbmxpbmUgICBkb3Vi
bGUgICAgIHBvdyAgICggZG91YmxlICAgICAgX194ICAsICBkb3VibGUgICAgICBfX3kgICkJewkg
ICAgICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19leHBvbmVudDsJCQkJCSAgICAgICAgX19leHRlbnNpb25fXyBsb25nIGxv
bmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3k7CQkgICAgICAgIGlmIChfX3ggPT0gMC4w
ICYmIF9feSA+IDAuMCkJCQkJCQkgICAgICAgICAgcmV0dXJuIDAuMDsJCQkJCQkJCSAgICAgICAg
aWYgKF9feSA9PSAoZG91YmxlKSBfX3ApCQkJCQkJICAgICAgICAgIHsJCQkJCQkJCQkgICAgICAg
ICAgICBsb25nIGRvdWJsZSBfX3IgPSAxLjA7CQkJCQkJICAgICAgICAgICAgaWYgKF9fcCA9PSAw
KQkJCQkJCQkgICAgICAJcmV0dXJuIDEuMDsJCQkJCQkJICAgICAgICAgICAgaWYgKF9fcCA8IDAp
CQkJCQkJCSAgICAgIAl7CQkJCQkJCQkgICAgICAJICBfX3AgPSAtX19wOwkJCQkJCQkgICAgICAJ
ICBfX3ggPSAxLjAgLyBfX3g7CQkJCQkJICAgICAgCX0JCQkJCQkJCSAgICAgICAgICAgIHdoaWxl
ICgxKQkJCQkJCQkJICAgICAgCXsJCQkJCQkJCSAgICAgIAkgIGlmIChfX3AgJiAxKQkJCQkJCQkg
ICAgICAJICAgIF9fciAqPSBfX3g7CQkJCQkJCSAgICAgIAkgIF9fcCA+Pj0gMTsJCQkJCQkJICAg
ICAgCSAgaWYgKF9fcCA9PSAwKQkJCQkJCQkgICAgICAJICAgIHJldHVybiBfX3I7CQkJCQkJCSAg
ICAgIAkgIF9feCAqPSBfX3g7CQkJCQkJCSAgICAgIAl9CQkJCQkJCQkgICAgICAgICAgICAgCQkJ
CQkJCSAgICAgICAgICB9CQkJCQkJCQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlX18JCQkJCQkJ
ICAgICAgICAgICgiZnlsMngiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoMS4w
KSA6ICJzdCgxKSIpOwkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAgICAgICAg
KCJmbXVsCSUlc3QoMSkJCSMgeSAqIGxvZzIoeClcblx0IgkJCSAgICAgICAgICAgImZzdAklJXN0
KDEpXG5cdCIJCQkJCQkgICAgICAgICAgICJmcm5kaW50CQkJIyBpbnQoeSAqIGxvZzIoeCkpXG5c
dCIJCQkgICAgICAgICAgICJmeGNoXG5cdCIJCQkJCQkJCSAgICAgICAgICAgImZzdWIJJSVzdCgx
KQkJIyBmcmFjdCh5ICogbG9nMih4KSlcblx0IgkJICAgICAgICAgICAiZjJ4bTEJCQkjIDJeKGZy
YWN0KHkgKiBsb2cyKHgpKSkgLSAxXG5cdCIJICAgICAgICAgICA6ICI9dCIgKF9fdmFsdWUpLCAi
PXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX195KSwgIjEiIChfX3ZhbHVlKSk7CSAgICAgICAgX192
YWx1ZSArPSAxLjA7CQkJCQkJCSAgICAgICAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAg
ICAgICAoImZzY2FsZSIJCQkJCQkJCSAgICAgICAgICAgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAo
X192YWx1ZSksICJ1IiAoX19leHBvbmVudCkpOwkJICAgICAgICByZXR1cm4gX192YWx1ZSAgOwl9
IAlfX2lubGluZSAgIGZsb2F0ICAgICAgcG93ZiAgICAoIGZsb2F0ICwgIGZsb2F0ICk7CV9faW5s
aW5lICAgZmxvYXQgICAgICBwb3dmICAgICggZmxvYXQgICAgICBfX3ggICwgIGZsb2F0ICAgICAg
X195ICApCXsJICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJCQkJCQkgICAgICAg
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7CQkJCQkgICAgICAgIF9fZXh0ZW5zaW9u
X18gbG9uZyBsb25nIGludCBfX3AgPSAobG9uZyBsb25nIGludCkgX195OwkJICAgICAgICBpZiAo
X194ID09IDAuMCAmJiBfX3kgPiAwLjApCQkJCQkJICAgICAgICAgIHJldHVybiAwLjA7CQkJCQkJ
CQkgICAgICAgIGlmIChfX3kgPT0gKGRvdWJsZSkgX19wKQkJCQkJCSAgICAgICAgICB7CQkJCQkJ
CQkJICAgICAgICAgICAgbG9uZyBkb3VibGUgX19yID0gMS4wOwkJCQkJCSAgICAgICAgICAgIGlm
IChfX3AgPT0gMCkJCQkJCQkJICAgICAgCXJldHVybiAxLjA7CQkJCQkJCSAgICAgICAgICAgIGlm
IChfX3AgPCAwKQkJCQkJCQkgICAgICAJewkJCQkJCQkJICAgICAgCSAgX19wID0gLV9fcDsJCQkJ
CQkJICAgICAgCSAgX194ID0gMS4wIC8gX194OwkJCQkJCSAgICAgIAl9CQkJCQkJCQkgICAgICAg
ICAgICB3aGlsZSAoMSkJCQkJCQkJCSAgICAgIAl7CQkJCQkJCQkgICAgICAJICBpZiAoX19wICYg
MSkJCQkJCQkJICAgICAgCSAgICBfX3IgKj0gX194OwkJCQkJCQkgICAgICAJICBfX3AgPj49IDE7
CQkJCQkJCSAgICAgIAkgIGlmIChfX3AgPT0gMCkJCQkJCQkJICAgICAgCSAgICByZXR1cm4gX19y
OwkJCQkJCQkgICAgICAJICBfX3ggKj0gX194OwkJCQkJCQkgICAgICAJfQkJCQkJCQkJICAgICAg
ICAgICAgIAkJCQkJCQkgICAgICAgICAgfQkJCQkJCQkJCSAgICAgICAgX19hc20gX192b2xhdGls
ZV9fCQkJCQkJCSAgICAgICAgICAoImZ5bDJ4IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gp
LCAidSIgKDEuMCkgOiAic3QoMSkiKTsJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlX18JCQkJCQkJ
ICAgICAgICAgICgiZm11bAklJXN0KDEpCQkjIHkgKiBsb2cyKHgpXG5cdCIJCQkgICAgICAgICAg
ICJmc3QJJSVzdCgxKVxuXHQiCQkJCQkJICAgICAgICAgICAiZnJuZGludAkJCSMgaW50KHkgKiBs
b2cyKHgpKVxuXHQiCQkJICAgICAgICAgICAiZnhjaFxuXHQiCQkJCQkJCQkgICAgICAgICAgICJm
c3ViCSUlc3QoMSkJCSMgZnJhY3QoeSAqIGxvZzIoeCkpXG5cdCIJCSAgICAgICAgICAgImYyeG0x
CQkJIyAyXihmcmFjdCh5ICogbG9nMih4KSkpIC0gMVxuXHQiCSAgICAgICAgICAgOiAiPXQiIChf
X3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feSksICIxIiAoX192YWx1ZSkpOwkg
ICAgICAgIF9fdmFsdWUgKz0gMS4wOwkJCQkJCQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGVfXwkJ
CQkJCQkgICAgICAgICAgKCJmc2NhbGUiCQkJCQkJCQkgICAgICAgICAgIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsJCSAgICAgICAgcmV0dXJuIF9f
dmFsdWUgIDsJfSAJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAgIHBvd2wgICAgKCBsb25nIGRv
dWJsZSAsICBsb25nIGRvdWJsZSApOwlfX2lubGluZSAgIGxvbmcgZG91YmxlICAgICAgcG93bCAg
ICAoIGxvbmcgZG91YmxlICAgICAgX194ICAsICBsb25nIGRvdWJsZSAgICAgIF9feSAgKQl7CSAg
ICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgICByZWdpc3RlciBs
b25nIGRvdWJsZSBfX2V4cG9uZW50OwkJCQkJICAgICAgICBfX2V4dGVuc2lvbl9fIGxvbmcgbG9u
ZyBpbnQgX19wID0gKGxvbmcgbG9uZyBpbnQpIF9feTsJCSAgICAgICAgaWYgKF9feCA9PSAwLjAg
JiYgX195ID4gMC4wKQkJCQkJCSAgICAgICAgICByZXR1cm4gMC4wOwkJCQkJCQkJICAgICAgICBp
ZiAoX195ID09IChkb3VibGUpIF9fcCkJCQkJCQkgICAgICAgICAgewkJCQkJCQkJCSAgICAgICAg
ICAgIGxvbmcgZG91YmxlIF9fciA9IDEuMDsJCQkJCQkgICAgICAgICAgICBpZiAoX19wID09IDAp
CQkJCQkJCSAgICAgIAlyZXR1cm4gMS4wOwkJCQkJCQkgICAgICAgICAgICBpZiAoX19wIDwgMCkJ
CQkJCQkJICAgICAgCXsJCQkJCQkJCSAgICAgIAkgIF9fcCA9IC1fX3A7CQkJCQkJCSAgICAgIAkg
IF9feCA9IDEuMCAvIF9feDsJCQkJCQkgICAgICAJfQkJCQkJCQkJICAgICAgICAgICAgd2hpbGUg
KDEpCQkJCQkJCQkgICAgICAJewkJCQkJCQkJICAgICAgCSAgaWYgKF9fcCAmIDEpCQkJCQkJCSAg
ICAgIAkgICAgX19yICo9IF9feDsJCQkJCQkJICAgICAgCSAgX19wID4+PSAxOwkJCQkJCQkgICAg
ICAJICBpZiAoX19wID09IDApCQkJCQkJCSAgICAgIAkgICAgcmV0dXJuIF9fcjsJCQkJCQkJICAg
ICAgCSAgX194ICo9IF9feDsJCQkJCQkJICAgICAgCX0JCQkJCQkJCSAgICAgICAgICAgICAJCQkJ
CQkJICAgICAgICAgIH0JCQkJCQkJCQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkg
ICAgICAgICAgKCJmeWwyeCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgxLjAp
IDogInN0KDEpIik7CSAgICAgICAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAgICAo
ImZtdWwJJSVzdCgxKQkJIyB5ICogbG9nMih4KVxuXHQiCQkJICAgICAgICAgICAiZnN0CSUlc3Qo
MSlcblx0IgkJCQkJCSAgICAgICAgICAgImZybmRpbnQJCQkjIGludCh5ICogbG9nMih4KSlcblx0
IgkJCSAgICAgICAgICAgImZ4Y2hcblx0IgkJCQkJCQkJICAgICAgICAgICAiZnN1YgklJXN0KDEp
CQkjIGZyYWN0KHkgKiBsb2cyKHgpKVxuXHQiCQkgICAgICAgICAgICJmMnhtMQkJCSMgMl4oZnJh
Y3QoeSAqIGxvZzIoeCkpKSAtIDFcblx0IgkgICAgICAgICAgIDogIj10IiAoX192YWx1ZSksICI9
dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3kpLCAiMSIgKF9fdmFsdWUpKTsJICAgICAgICBfX3Zh
bHVlICs9IDEuMDsJCQkJCQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlX18JCQkJCQkJICAgICAg
ICAgICgiZnNjYWxlIgkJCQkJCQkJICAgICAgICAgICA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChf
X3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7CQkgICAgICAgIHJldHVybiBfX3ZhbHVlICA7CX0g
IAojIDQyNCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCgoKX19pbmxpbmUgICAg
ZG91YmxlICAgICAgICBzcXJ0ICAgICggIGRvdWJsZSAgKTsJX19pbmxpbmUgICAgZG91YmxlICAg
ICAgICBzcXJ0ICAgICggIGRvdWJsZSAgIF9feCkJewlyZWdpc3RlciAgIGRvdWJsZSAgIF9fcmVz
dWx0OwlfX2FzbSBfX3ZvbGF0aWxlX18gKCAgICAgICJmc3FydCIgICAgOiAiPXQiIChfX3Jlc3Vs
dCkgOiAgICIwIiAoX194KSApOwlyZXR1cm4gX19yZXN1bHQ7CX0gIAlfX2lubGluZSAgICBmbG9h
dCAgICAgICAgIHNxcnRmICAgICAoICBmbG9hdCAgKTsJX19pbmxpbmUgICAgZmxvYXQgICAgICAg
ICBzcXJ0ZiAgICAgKCAgZmxvYXQgICBfX3gpCXsJcmVnaXN0ZXIgICBmbG9hdCAgIF9fcmVzdWx0
OwlfX2FzbSBfX3ZvbGF0aWxlX18gKCAgICAgICJmc3FydCIgICAgOiAiPXQiIChfX3Jlc3VsdCkg
OiAgICIwIiAoX194KSApOwlyZXR1cm4gX19yZXN1bHQ7CX0gIAlfX2lubGluZSAgICBsb25nIGRv
dWJsZSAgICAgICAgIHNxcnRsICAgICAoICBsb25nIGRvdWJsZSAgKTsJX19pbmxpbmUgICAgbG9u
ZyBkb3VibGUgICAgICAgICBzcXJ0bCAgICAgKCAgbG9uZyBkb3VibGUgICBfX3gpCXsJcmVnaXN0
ZXIgICBsb25nIGRvdWJsZSAgIF9fcmVzdWx0OwlfX2FzbSBfX3ZvbGF0aWxlX18gKCAgICAgICJm
c3FydCIgICAgOiAiPXQiIChfX3Jlc3VsdCkgOiAgICIwIiAoX194KSApOwlyZXR1cm4gX19yZXN1
bHQ7CX0gICAKX19pbmxpbmUgICAgbG9uZyBkb3VibGUgICAgICAgX19zcXJ0bCAgICggIGxvbmcg
ZG91YmxlICApOwlfX2lubGluZSAgICBsb25nIGRvdWJsZSAgICAgICBfX3NxcnRsICAgKCAgbG9u
ZyBkb3VibGUgICBfX3gpCXsJcmVnaXN0ZXIgICBsb25nIGRvdWJsZSAgIF9fcmVzdWx0OwlfX2Fz
bSBfX3ZvbGF0aWxlX18gKCAgICAiZnNxcnQiICAgOiAiPXQiIChfX3Jlc3VsdCkgOiAgICIwIiAo
X194KSApOwlyZXR1cm4gX19yZXN1bHQ7CX0gIAoKCl9faW5saW5lICAgZG91YmxlICAgIGZhYnMg
ICggZG91YmxlICk7CV9faW5saW5lICAgZG91YmxlICAgIGZhYnMgICggZG91YmxlICAgIF9feCAp
CXsJICByZXR1cm4gX19idWlsdGluX2ZhYnMgKF9feCkgOwl9IApfX2lubGluZSAgIGZsb2F0ICAg
IGZhYnNmICAoIGZsb2F0ICk7CV9faW5saW5lICAgZmxvYXQgICAgZmFic2YgICggZmxvYXQgICAg
X194ICkJewkgIHJldHVybiBfX2J1aWx0aW5fZmFic2YgKF9feCkgOwl9IApfX2lubGluZSAgIGxv
bmcgZG91YmxlICAgIGZhYnNsICAoIGxvbmcgZG91YmxlICk7CV9faW5saW5lICAgbG9uZyBkb3Vi
bGUgICAgZmFic2wgICggbG9uZyBkb3VibGUgICAgX194ICkJewkgIHJldHVybiBfX2J1aWx0aW5f
ZmFic2wgKF9feCkgOwl9IApfX2lubGluZSAgIGxvbmcgZG91YmxlICAgIF9fZmFic2wgICggbG9u
ZyBkb3VibGUgKTsJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICBfX2ZhYnNsICAoIGxvbmcgZG91
YmxlICAgIF9feCApCXsJICByZXR1cm4gX19idWlsdGluX2ZhYnNsIChfX3gpIDsJfSAKCgoKCgog
Cl9faW5saW5lICAgIGRvdWJsZSAgICAgICAgc2luICAgICggIGRvdWJsZSAgKTsJX19pbmxpbmUg
ICAgZG91YmxlICAgICAgICBzaW4gICAgKCAgZG91YmxlICAgX194KQl7CXJlZ2lzdGVyICAgZG91
YmxlICAgX19yZXN1bHQ7CV9fYXNtIF9fdm9sYXRpbGVfXyAoICAgICAgImZzaW4iICAgIDogIj10
IiAoX19yZXN1bHQpIDogICAiMCIgKF9feCkgKTsJcmV0dXJuIF9fcmVzdWx0Owl9ICAJX19pbmxp
bmUgICAgZmxvYXQgICAgICAgICBzaW5mICAgICAoICBmbG9hdCAgKTsJX19pbmxpbmUgICAgZmxv
YXQgICAgICAgICBzaW5mICAgICAoICBmbG9hdCAgIF9feCkJewlyZWdpc3RlciAgIGZsb2F0ICAg
X19yZXN1bHQ7CV9fYXNtIF9fdm9sYXRpbGVfXyAoICAgICAgImZzaW4iICAgIDogIj10IiAoX19y
ZXN1bHQpIDogICAiMCIgKF9feCkgKTsJcmV0dXJuIF9fcmVzdWx0Owl9ICAJX19pbmxpbmUgICAg
bG9uZyBkb3VibGUgICAgICAgICBzaW5sICAgICAoICBsb25nIGRvdWJsZSAgKTsJX19pbmxpbmUg
ICAgbG9uZyBkb3VibGUgICAgICAgICBzaW5sICAgICAoICBsb25nIGRvdWJsZSAgIF9feCkJewly
ZWdpc3RlciAgIGxvbmcgZG91YmxlICAgX19yZXN1bHQ7CV9fYXNtIF9fdm9sYXRpbGVfXyAoICAg
ICAgImZzaW4iICAgIDogIj10IiAoX19yZXN1bHQpIDogICAiMCIgKF9feCkgKTsJcmV0dXJuIF9f
cmVzdWx0Owl9ICAgCiAKX19pbmxpbmUgICAgZG91YmxlICAgICAgICBjb3MgICAgKCAgZG91Ymxl
ICApOwlfX2lubGluZSAgICBkb3VibGUgICAgICAgIGNvcyAgICAoICBkb3VibGUgICBfX3gpCXsJ
cmVnaXN0ZXIgICBkb3VibGUgICBfX3Jlc3VsdDsJX19hc20gX192b2xhdGlsZV9fICggICAgICAi
ZmNvcyIgICAgOiAiPXQiIChfX3Jlc3VsdCkgOiAgICIwIiAoX194KSApOwlyZXR1cm4gX19yZXN1
bHQ7CX0gIAlfX2lubGluZSAgICBmbG9hdCAgICAgICAgIGNvc2YgICAgICggIGZsb2F0ICApOwlf
X2lubGluZSAgICBmbG9hdCAgICAgICAgIGNvc2YgICAgICggIGZsb2F0ICAgX194KQl7CXJlZ2lz
dGVyICAgZmxvYXQgICBfX3Jlc3VsdDsJX19hc20gX192b2xhdGlsZV9fICggICAgICAiZmNvcyIg
ICAgOiAiPXQiIChfX3Jlc3VsdCkgOiAgICIwIiAoX194KSApOwlyZXR1cm4gX19yZXN1bHQ7CX0g
IAlfX2lubGluZSAgICBsb25nIGRvdWJsZSAgICAgICAgIGNvc2wgICAgICggIGxvbmcgZG91Ymxl
ICApOwlfX2lubGluZSAgICBsb25nIGRvdWJsZSAgICAgICAgIGNvc2wgICAgICggIGxvbmcgZG91
YmxlICAgX194KQl7CXJlZ2lzdGVyICAgbG9uZyBkb3VibGUgICBfX3Jlc3VsdDsJX19hc20gX192
b2xhdGlsZV9fICggICAgICAiZmNvcyIgICAgOiAiPXQiIChfX3Jlc3VsdCkgOiAgICIwIiAoX194
KSApOwlyZXR1cm4gX19yZXN1bHQ7CX0gICAKCl9faW5saW5lICAgIGRvdWJsZSAgICAgICAgYXRh
biAgICAoICBkb3VibGUgICk7CV9faW5saW5lICAgIGRvdWJsZSAgICAgICAgYXRhbiAgICAoICBk
b3VibGUgICBfX3gpCXsJcmVnaXN0ZXIgICBkb3VibGUgICBfX3Jlc3VsdDsJX19hc20gX192b2xh
dGlsZV9fICggICAgICAiZmxkMTsgZnBhdGFuIiAgICA6ICI9dCIgKF9fcmVzdWx0KSA6ICAgIjAi
IChfX3gpICk7CXJldHVybiBfX3Jlc3VsdDsJfSAgCV9faW5saW5lICAgIGZsb2F0ICAgICAgICAg
YXRhbmYgICAgICggIGZsb2F0ICApOwlfX2lubGluZSAgICBmbG9hdCAgICAgICAgIGF0YW5mICAg
ICAoICBmbG9hdCAgIF9feCkJewlyZWdpc3RlciAgIGZsb2F0ICAgX19yZXN1bHQ7CV9fYXNtIF9f
dm9sYXRpbGVfXyAoICAgICAgImZsZDE7IGZwYXRhbiIgICAgOiAiPXQiIChfX3Jlc3VsdCkgOiAg
ICIwIiAoX194KSApOwlyZXR1cm4gX19yZXN1bHQ7CX0gIAlfX2lubGluZSAgICBsb25nIGRvdWJs
ZSAgICAgICAgIGF0YW5sICAgICAoICBsb25nIGRvdWJsZSAgKTsJX19pbmxpbmUgICAgbG9uZyBk
b3VibGUgICAgICAgICBhdGFubCAgICAgKCAgbG9uZyBkb3VibGUgICBfX3gpCXsJcmVnaXN0ZXIg
ICBsb25nIGRvdWJsZSAgIF9fcmVzdWx0OwlfX2FzbSBfX3ZvbGF0aWxlX18gKCAgICAgICJmbGQx
OyBmcGF0YW4iICAgIDogIj10IiAoX19yZXN1bHQpIDogICAiMCIgKF9feCkgKTsJcmV0dXJuIF9f
cmVzdWx0Owl9ICAgCl9faW5saW5lICAgIGRvdWJsZSAgICAgICAgbG9nICAgICggIGRvdWJsZSAg
KTsJX19pbmxpbmUgICAgZG91YmxlICAgICAgICBsb2cgICAgKCAgZG91YmxlICAgX194KQl7CXJl
Z2lzdGVyICAgZG91YmxlICAgX19yZXN1bHQ7CV9fYXNtIF9fdm9sYXRpbGVfXyAoICAgICAgImZs
ZGxuMjsgZnhjaDsgZnlsMngiICAgIDogIj10IiAoX19yZXN1bHQpIDogICAiMCIgKF9feCkgKTsJ
cmV0dXJuIF9fcmVzdWx0Owl9ICAJX19pbmxpbmUgICAgZmxvYXQgICAgICAgICBsb2dmICAgICAo
ICBmbG9hdCAgKTsJX19pbmxpbmUgICAgZmxvYXQgICAgICAgICBsb2dmICAgICAoICBmbG9hdCAg
IF9feCkJewlyZWdpc3RlciAgIGZsb2F0ICAgX19yZXN1bHQ7CV9fYXNtIF9fdm9sYXRpbGVfXyAo
ICAgICAgImZsZGxuMjsgZnhjaDsgZnlsMngiICAgIDogIj10IiAoX19yZXN1bHQpIDogICAiMCIg
KF9feCkgKTsJcmV0dXJuIF9fcmVzdWx0Owl9ICAJX19pbmxpbmUgICAgbG9uZyBkb3VibGUgICAg
ICAgICBsb2dsICAgICAoICBsb25nIGRvdWJsZSAgKTsJX19pbmxpbmUgICAgbG9uZyBkb3VibGUg
ICAgICAgICBsb2dsICAgICAoICBsb25nIGRvdWJsZSAgIF9feCkJewlyZWdpc3RlciAgIGxvbmcg
ZG91YmxlICAgX19yZXN1bHQ7CV9fYXNtIF9fdm9sYXRpbGVfXyAoICAgICAgImZsZGxuMjsgZnhj
aDsgZnlsMngiICAgIDogIj10IiAoX19yZXN1bHQpIDogICAiMCIgKF9feCkgKTsJcmV0dXJuIF9f
cmVzdWx0Owl9ICAgCl9faW5saW5lICAgIGRvdWJsZSAgICAgICAgbG9nMTAgICAgKCAgZG91Ymxl
ICApOwlfX2lubGluZSAgICBkb3VibGUgICAgICAgIGxvZzEwICAgICggIGRvdWJsZSAgIF9feCkJ
ewlyZWdpc3RlciAgIGRvdWJsZSAgIF9fcmVzdWx0OwlfX2FzbSBfX3ZvbGF0aWxlX18gKCAgICAg
ICJmbGRsZzI7IGZ4Y2g7IGZ5bDJ4IiAgICA6ICI9dCIgKF9fcmVzdWx0KSA6ICAgIjAiIChfX3gp
ICk7CXJldHVybiBfX3Jlc3VsdDsJfSAgCV9faW5saW5lICAgIGZsb2F0ICAgICAgICAgbG9nMTBm
ICAgICAoICBmbG9hdCAgKTsJX19pbmxpbmUgICAgZmxvYXQgICAgICAgICBsb2cxMGYgICAgICgg
IGZsb2F0ICAgX194KQl7CXJlZ2lzdGVyICAgZmxvYXQgICBfX3Jlc3VsdDsJX19hc20gX192b2xh
dGlsZV9fICggICAgICAiZmxkbGcyOyBmeGNoOyBmeWwyeCIgICAgOiAiPXQiIChfX3Jlc3VsdCkg
OiAgICIwIiAoX194KSApOwlyZXR1cm4gX19yZXN1bHQ7CX0gIAlfX2lubGluZSAgICBsb25nIGRv
dWJsZSAgICAgICAgIGxvZzEwbCAgICAgKCAgbG9uZyBkb3VibGUgICk7CV9faW5saW5lICAgIGxv
bmcgZG91YmxlICAgICAgICAgbG9nMTBsICAgICAoICBsb25nIGRvdWJsZSAgIF9feCkJewlyZWdp
c3RlciAgIGxvbmcgZG91YmxlICAgX19yZXN1bHQ7CV9fYXNtIF9fdm9sYXRpbGVfXyAoICAgICAg
ImZsZGxnMjsgZnhjaDsgZnlsMngiICAgIDogIj10IiAoX19yZXN1bHQpIDogICAiMCIgKF9feCkg
KTsJcmV0dXJuIF9fcmVzdWx0Owl9ICAgCgpfX2lubGluZSAgIGRvdWJsZSAgICAgYXNpbiAgICgg
ZG91YmxlICk7CV9faW5saW5lICAgZG91YmxlICAgICBhc2luICAgKCBkb3VibGUgICAgICBfX3gg
ICkJewkgICAgcmV0dXJuIF9fYXRhbjJsIChfX3gsIF9fc3FydGwgKDEuMCAtIF9feCAqIF9feCkp
ICA7CX0gCV9faW5saW5lICAgZmxvYXQgICAgICBhc2luZiAgICAoIGZsb2F0ICk7CV9faW5saW5l
ICAgZmxvYXQgICAgICBhc2luZiAgICAoIGZsb2F0ICAgICAgX194ICApCXsJICAgIHJldHVybiBf
X2F0YW4ybCAoX194LCBfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpKSAgOwl9IAlfX2lubGluZSAg
IGxvbmcgZG91YmxlICAgICAgYXNpbmwgICAgKCBsb25nIGRvdWJsZSApOwlfX2lubGluZSAgIGxv
bmcgZG91YmxlICAgICAgYXNpbmwgICAgKCBsb25nIGRvdWJsZSAgICAgIF9feCAgKQl7CSAgICBy
ZXR1cm4gX19hdGFuMmwgKF9feCwgX19zcXJ0bCAoMS4wIC0gX194ICogX194KSkgIDsJfSAgCl9f
aW5saW5lICAgZG91YmxlICAgICBhY29zICAgKCBkb3VibGUgKTsJX19pbmxpbmUgICBkb3VibGUg
ICAgIGFjb3MgICAoIGRvdWJsZSAgICAgIF9feCAgKQl7CSAgICByZXR1cm4gX19hdGFuMmwgKF9f
c3FydGwgKDEuMCAtIF9feCAqIF9feCksIF9feCkgIDsJfSAJX19pbmxpbmUgICBmbG9hdCAgICAg
IGFjb3NmICAgICggZmxvYXQgKTsJX19pbmxpbmUgICBmbG9hdCAgICAgIGFjb3NmICAgICggZmxv
YXQgICAgICBfX3ggICkJewkgICAgcmV0dXJuIF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3gg
KiBfX3gpLCBfX3gpICA7CX0gCV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBhY29zbCAgICAo
IGxvbmcgZG91YmxlICk7CV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBhY29zbCAgICAoIGxv
bmcgZG91YmxlICAgICAgX194ICApCXsJICAgIHJldHVybiBfX2F0YW4ybCAoX19zcXJ0bCAoMS4w
IC0gX194ICogX194KSwgX194KSAgOwl9ICAKCl9faW5saW5lICAgbG9uZyBkb3VibGUgICAgX19z
Z24xbCAgKCBsb25nIGRvdWJsZSApOwlfX2lubGluZSAgIGxvbmcgZG91YmxlICAgIF9fc2duMWwg
ICggbG9uZyBkb3VibGUgICAgX194ICkJewkgIHJldHVybiBfX3ggPj0gMC4wID8gMS4wIDogLTEu
MCA7CX0gCgoKIApfX2lubGluZSAgIGRvdWJsZSAgICAgc2luaCAgICggZG91YmxlICk7CV9faW5s
aW5lICAgZG91YmxlICAgICBzaW5oICAgKCBkb3VibGUgICAgICBfX3ggICkJewkgICAgICByZWdp
c3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7CQkgICAg
ICAgIHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkgKyBfX2V4bTEpICogX19z
Z24xbCAoX194KSAgOwl9IAlfX2lubGluZSAgIGZsb2F0ICAgICAgc2luaGYgICAgKCBmbG9hdCAp
OwlfX2lubGluZSAgIGZsb2F0ICAgICAgc2luaGYgICAgKCBmbG9hdCAgICAgIF9feCAgKQl7CSAg
ICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gp
KTsJCSAgICAgICAgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0xICsgMS4wKSArIF9fZXht
MSkgKiBfX3NnbjFsIChfX3gpICA7CX0gCV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBzaW5o
bCAgICAoIGxvbmcgZG91YmxlICk7CV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBzaW5obCAg
ICAoIGxvbmcgZG91YmxlICAgICAgX194ICApCXsJICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X19leG0xID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOwkJICAgICAgICByZXR1cm4gMC41ICog
KF9fZXhtMSAvIChfX2V4bTEgKyAxLjApICsgX19leG0xKSAqIF9fc2duMWwgKF9feCkgIDsJfSAg
CgoKCl9faW5saW5lICAgZG91YmxlICAgICBjb3NoICAgKCBkb3VibGUgKTsJX19pbmxpbmUgICBk
b3VibGUgICAgIGNvc2ggICAoIGRvdWJsZSAgICAgIF9feCAgKQl7CSAgICAgIHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fZXggPSBfX2V4cGwgKF9feCk7CQkJCSAgICAgICAgcmV0dXJuIDAuNSAqIChf
X2V4ICsgMS4wIC8gX19leCkgIDsJfSAJX19pbmxpbmUgICBmbG9hdCAgICAgIGNvc2hmICAgICgg
ZmxvYXQgKTsJX19pbmxpbmUgICBmbG9hdCAgICAgIGNvc2hmICAgICggZmxvYXQgICAgICBfX3gg
ICkJewkgICAgICByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4ID0gX19leHBsIChfX3gpOwkJCQkg
ICAgICAgIHJldHVybiAwLjUgKiAoX19leCArIDEuMCAvIF9fZXgpICA7CX0gCV9faW5saW5lICAg
bG9uZyBkb3VibGUgICAgICBjb3NobCAgICAoIGxvbmcgZG91YmxlICk7CV9faW5saW5lICAgbG9u
ZyBkb3VibGUgICAgICBjb3NobCAgICAoIGxvbmcgZG91YmxlICAgICAgX194ICApCXsJICAgICAg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leCA9IF9fZXhwbCAoX194KTsJCQkJICAgICAgICByZXR1
cm4gMC41ICogKF9fZXggKyAxLjAgLyBfX2V4KSAgOwl9ICAKCgoKX19pbmxpbmUgICBkb3VibGUg
ICAgIHRhbmggICAoIGRvdWJsZSApOwlfX2lubGluZSAgIGRvdWJsZSAgICAgdGFuaCAgICggZG91
YmxlICAgICAgX194ICApCXsJICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19l
eHBtMWwgKC1fX2ZhYnNsIChfX3ggKyBfX3gpKTsJICAgICAgICByZXR1cm4gX19leG0xIC8gKF9f
ZXhtMSArIDIuMCkgKiBfX3NnbjFsICgtX194KSAgOwl9IAlfX2lubGluZSAgIGZsb2F0ICAgICAg
dGFuaGYgICAgKCBmbG9hdCApOwlfX2lubGluZSAgIGZsb2F0ICAgICAgdGFuaGYgICAgKCBmbG9h
dCAgICAgIF9feCAgKQl7CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhw
bTFsICgtX19mYWJzbCAoX194ICsgX194KSk7CSAgICAgICAgcmV0dXJuIF9fZXhtMSAvIChfX2V4
bTEgKyAyLjApICogX19zZ24xbCAoLV9feCkgIDsJfSAJX19pbmxpbmUgICBsb25nIGRvdWJsZSAg
ICAgIHRhbmhsICAgICggbG9uZyBkb3VibGUgKTsJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAg
IHRhbmhsICAgICggbG9uZyBkb3VibGUgICAgICBfX3ggICkJewkgICAgICByZWdpc3RlciBsb25n
IGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoLV9fZmFic2wgKF9feCArIF9feCkpOwkgICAgICAg
IHJldHVybiBfX2V4bTEgLyAoX19leG0xICsgMi4wKSAqIF9fc2duMWwgKC1fX3gpICA7CX0gIAoK
CgoKX19pbmxpbmUgICBkb3VibGUgICAgIGZsb29yICAgKCBkb3VibGUgKTsJX19pbmxpbmUgICBk
b3VibGUgICAgIGZsb29yICAgKCBkb3VibGUgICAgICBfX3ggICkJewkgICAgICByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9y
dCBpbnQgX19jdzsJCQkJCSAgICAgICAgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19j
d3RtcDsJCQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9f
Y3cpKTsJCQkJICAgICAgICBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyAgCQkg
ICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOwkJ
CSAgICAgICAgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKF9feCkpOwkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIg
KF9fY3cpKTsJCQkJICAgICAgICByZXR1cm4gX192YWx1ZSAgOwl9IAlfX2lubGluZSAgIGZsb2F0
ICAgICAgZmxvb3JmICAgICggZmxvYXQgKTsJX19pbmxpbmUgICBmbG9hdCAgICAgIGZsb29yZiAg
ICAoIGZsb2F0ICAgICAgX194ICApCXsJICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTsJCQkJCQkgICAgICAgIF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7CQkJCQkg
ICAgICAgIF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7CQkJCSAgICAgICAg
X19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7CQkJCSAgICAgICAg
X19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDQwMDsgIAkJICAgICAgICBfX2FzbSBfX3Zv
bGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsJCQkgICAgICAgIF9fYXNtIF9f
dm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsJCSAgICAg
ICAgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7CQkJCSAgICAg
ICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAgIGZsb29y
bCAgICAoIGxvbmcgZG91YmxlICk7CV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBmbG9vcmwg
ICAgKCBsb25nIGRvdWJsZSAgICAgIF9feCAgKQl7CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7CQkJCQkJICAgICAgICBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3
OwkJCQkJICAgICAgICBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOwkJCQkg
ICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOwkJCQkg
ICAgICAgIF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7ICAJCSAgICAgICAgX19h
c20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7CQkJICAgICAgICBf
X2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7
CQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOwkJ
CQkgICAgICAgIHJldHVybiBfX3ZhbHVlICA7CX0gIAojIDQ3OCAiL3Vzci9pbmNsdWRlL2JpdHMv
bWF0aGlubGluZS5oIiAzCgpfX2lubGluZSAgIGRvdWJsZSAgICAgY2VpbCAgICggZG91YmxlICk7
CV9faW5saW5lICAgZG91YmxlICAgICBjZWlsICAgKCBkb3VibGUgICAgICBfX3ggICkJewkgICAg
ICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgX192b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsJCQkJCSAgICAgICAgX192b2xhdGlsZSB1bnNpZ25lZCBz
aG9ydCBpbnQgX19jd3RtcDsJCQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUw
IiA6ICI9bSIgKF9fY3cpKTsJCQkJICAgICAgICBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwg
MHgwODAwOyAgCQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIg
KF9fY3d0bXApKTsJCQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIg
KF9fdmFsdWUpIDogIjAiIChfX3gpKTsJCSAgICAgICAgX19hc20gX192b2xhdGlsZSAoImZsZGN3
ICUwIiA6IDogIm0iIChfX2N3KSk7CQkJCSAgICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAJX19p
bmxpbmUgICBmbG9hdCAgICAgIGNlaWxmICAgICggZmxvYXQgKTsJX19pbmxpbmUgICBmbG9hdCAg
ICAgIGNlaWxmICAgICggZmxvYXQgICAgICBfX3ggICkJewkgICAgICByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQg
X19jdzsJCQkJCSAgICAgICAgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsJ
CQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsJ
CQkJICAgICAgICBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyAgCQkJICAgICAg
ICBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsJCQkgICAg
ICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChf
X3gpKTsJCSAgICAgICAgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3
KSk7CQkJCSAgICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAJX19pbmxpbmUgICBsb25nIGRvdWJs
ZSAgICAgIGNlaWxsICAgICggbG9uZyBkb3VibGUgKTsJX19pbmxpbmUgICBsb25nIGRvdWJsZSAg
ICAgIGNlaWxsICAgICggbG9uZyBkb3VibGUgICAgICBfX3ggICkJewkgICAgICByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9y
dCBpbnQgX19jdzsJCQkJCSAgICAgICAgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19j
d3RtcDsJCQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9f
Y3cpKTsJCQkJICAgICAgICBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyAgCQkJ
ICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsJ
CQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDog
IjAiIChfX3gpKTsJCSAgICAgICAgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0i
IChfX2N3KSk7CQkJCSAgICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAgCiMgNDg5ICIvdXNyL2lu
Y2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKCgoKCgoKCgpfX2lubGluZSAgZG91YmxlIGxkZXhw
IChkb3VibGUgX194LCBpbnQgX195KTsKX19pbmxpbmUgIGRvdWJsZQpsZGV4cCAoZG91YmxlIF9f
eCwgaW50IF9feSkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CV9fYXNtIF9fdm9s
YXRpbGVfXwkoImZzY2FsZSIJOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgobG9u
ZyBkb3VibGUpIF9feSkpOwlyZXR1cm4gX192YWx1ZSA7Cn0KCgogCgoKX19pbmxpbmUgICBkb3Vi
bGUgICAgIGV4cG0xICAgKCBkb3VibGUgKTsJX19pbmxpbmUgICBkb3VibGUgICAgIGV4cG0xICAg
KCBkb3VibGUgICAgICBfX3ggICkJewkgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJ
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsJcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190
ZW1wOwlfX2FzbSBfX3ZvbGF0aWxlX18JKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9n
MihlKSkgLSAxXG5cdCIJImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiCSJmc3QJJSVz
dCgxKVxuXHQiCSJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIJImZ4Y2hcblx0Igki
ZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiCSJmMnhtMQkJCSMgMl4oZnJh
Y3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0IgkiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAy
XihpbnQoeCAqIGxvZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25l
bnQpIDogIjAiIChfX3gpKTsJX19hc20gX192b2xhdGlsZV9fCSgiZnNjYWxlCQkJIyAyXmludCh4
ICogbG9nMihlKSlcblx0Igk6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBv
bmVudCkpOwlfX3RlbXAgLT0gMS4wOwlyZXR1cm4gX190ZW1wICsgX192YWx1ZSAgIDsJfSAJX19p
bmxpbmUgICBmbG9hdCAgICAgIGV4cG0xZiAgICAoIGZsb2F0ICk7CV9faW5saW5lICAgZmxvYXQg
ICAgICBleHBtMWYgICAgKCBmbG9hdCAgICAgIF9feCAgKQl7CSAgICByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOwlyZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OwlyZWdpc3RlciBs
b25nIGRvdWJsZSBfX3RlbXA7CV9fYXNtIF9fdm9sYXRpbGVfXwkoImZsZGwyZQkJCSMgZV54IC0g
MSA9IDJeKHggKiBsb2cyKGUpKSAtIDFcblx0IgkiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUp
XG5cdCIJImZzdAklJXN0KDEpXG5cdCIJImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0
IgkiZnhjaFxuXHQiCSJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIJImYy
eG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiCSJmc2NhbGUJCQkjIDJeKHgg
KiBsb2cyKGUpKSAtIDJeKGludCh4ICogbG9nMihlKSkpXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwg
Ij11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOwlfX2FzbSBfX3ZvbGF0aWxlX18JKCJmc2Nh
bGUJCQkjIDJeaW50KHggKiBsb2cyKGUpKVxuXHQiCTogIj10IiAoX190ZW1wKSA6ICIwIiAoMS4w
KSwgInUiIChfX2V4cG9uZW50KSk7CV9fdGVtcCAtPSAxLjA7CXJldHVybiBfX3RlbXAgKyBfX3Zh
bHVlICAgOwl9IAlfX2lubGluZSAgIGxvbmcgZG91YmxlICAgICAgZXhwbTFsICAgICggbG9uZyBk
b3VibGUgKTsJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAgIGV4cG0xbCAgICAoIGxvbmcgZG91
YmxlICAgICAgX194ICApCXsJICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CXJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7CXJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdGVtcDsJ
X19hc20gX192b2xhdGlsZV9fCSgiZmxkbDJlCQkJIyBlXnggLSAxID0gMl4oeCAqIGxvZzIoZSkp
IC0gMVxuXHQiCSJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IgkiZnN0CSUlc3QoMSlc
blx0IgkiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiCSJmeGNoXG5cdCIJImZzdWIJ
JSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IgkiZjJ4bTEJCQkjIDJeKGZyYWN0KHgg
KiBsb2cyKGUpKSkgLSAxXG5cdCIJImZzY2FsZQkJCSMgMl4oeCAqIGxvZzIoZSkpIC0gMl4oaW50
KHggKiBsb2cyKGUpKSlcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6
ICIwIiAoX194KSk7CV9fYXNtIF9fdm9sYXRpbGVfXwkoImZzY2FsZQkJCSMgMl5pbnQoeCAqIGxv
ZzIoZSkpXG5cdCIJOiAiPXQiIChfX3RlbXApIDogIjAiICgxLjApLCAidSIgKF9fZXhwb25lbnQp
KTsJX190ZW1wIC09IDEuMDsJcmV0dXJuIF9fdGVtcCArIF9fdmFsdWUgICA7CX0gIAoKIAoKCgpf
X2lubGluZSAgIGRvdWJsZSAgICAgbG9nMXAgICAoIGRvdWJsZSApOwlfX2lubGluZSAgIGRvdWJs
ZSAgICAgbG9nMXAgICAoIGRvdWJsZSAgICAgIF9feCAgKQl7CSAgICAgIHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgICBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAw
LjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCApCQkJCSAgICAgICAgICBfX3ZhbHVlID0gbG9n
bCAoMS4wICsgX194KTsJCQkJCQkgICAgICAgIGVsc2UJCQkJCQkJCQkgICAgICAgICAgX19hc20g
X192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAgICAgICgiZmxkbG4yXG5cdCIJCQkJCQkJICAgICAg
ICAgICAgICJmeGNoXG5cdCIJCQkJCQkJICAgICAgICAgICAgICJmeWwyeHAxIgkJCQkJCQkgICAg
ICAgICAgICAgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7CQkJCQkgICAgICAgIHJldHVy
biBfX3ZhbHVlICA7CX0gCV9faW5saW5lICAgZmxvYXQgICAgICBsb2cxcGYgICAgKCBmbG9hdCAp
OwlfX2lubGluZSAgIGZsb2F0ICAgICAgbG9nMXBmICAgICggZmxvYXQgICAgICBfX3ggICkJewkg
ICAgICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgaWYgKF9fZmFi
c2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQyMTM1NjIzNzMwOTUwNDg4MEwgKQkJCQkgICAg
ICAgICAgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7CQkJCQkJICAgICAgICBlbHNlCQkJCQkJ
CQkJICAgICAgICAgIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAgICAgICAgICAoImZsZGxu
MlxuXHQiCQkJCQkJCSAgICAgICAgICAgICAiZnhjaFxuXHQiCQkJCQkJCSAgICAgICAgICAgICAi
ZnlsMnhwMSIJCQkJCQkJICAgICAgICAgICAgIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkp
OwkJCQkJICAgICAgICByZXR1cm4gX192YWx1ZSAgOwl9IAlfX2lubGluZSAgIGxvbmcgZG91Ymxl
ICAgICAgbG9nMXBsICAgICggbG9uZyBkb3VibGUgKTsJX19pbmxpbmUgICBsb25nIGRvdWJsZSAg
ICAgIGxvZzFwbCAgICAoIGxvbmcgZG91YmxlICAgICAgX194ICApCXsJICAgICAgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX192YWx1ZTsJCQkJCQkgICAgICAgIGlmIChfX2ZhYnNsIChfX3gpID49IDEu
MCAtIDAuNSAqIDEuNDE0MjEzNTYyMzczMDk1MDQ4ODBMICkJCQkJICAgICAgICAgIF9fdmFsdWUg
PSBsb2dsICgxLjAgKyBfX3gpOwkJCQkJCSAgICAgICAgZWxzZQkJCQkJCQkJCSAgICAgICAgICBf
X2FzbSBfX3ZvbGF0aWxlX18JCQkJCQkJICAgICAgICAgICAgKCJmbGRsbjJcblx0IgkJCQkJCQkg
ICAgICAgICAgICAgImZ4Y2hcblx0IgkJCQkJCQkgICAgICAgICAgICAgImZ5bDJ4cDEiCQkJCQkJ
CSAgICAgICAgICAgICA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsJCQkJCSAgICAgICAg
cmV0dXJuIF9fdmFsdWUgIDsJfSAgCiMgNTI1ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5l
LmgiIDMKCgogCl9faW5saW5lICAgZG91YmxlICAgICBhc2luaCAgICggZG91YmxlICk7CV9faW5s
aW5lICAgZG91YmxlICAgICBhc2luaCAgICggZG91YmxlICAgICAgX194ICApCXsJICAgICAgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgIF9feSA9IF9fZmFic2wgKF9feCk7CQkJCSAgICAgICAgcmV0dXJu
IChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kgKyAxLjApICsgMS4wKSAr
IF9feSkJICAgICAgCSAgKiBfX3NnbjFsIChfX3gpKSAgOwl9IAlfX2lubGluZSAgIGZsb2F0ICAg
ICAgYXNpbmhmICAgICggZmxvYXQgKTsJX19pbmxpbmUgICBmbG9hdCAgICAgIGFzaW5oZiAgICAo
IGZsb2F0ICAgICAgX194ICApCXsJICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgIF9feSA9IF9f
ZmFic2wgKF9feCk7CQkJCSAgICAgICAgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3Nx
cnRsIChfX3kgKiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkJICAgICAgCSAgKiBfX3NnbjFsIChf
X3gpKSAgOwl9IAlfX2lubGluZSAgIGxvbmcgZG91YmxlICAgICAgYXNpbmhsICAgICggbG9uZyBk
b3VibGUgKTsJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAgIGFzaW5obCAgICAoIGxvbmcgZG91
YmxlICAgICAgX194ICApCXsJICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgIF9feSA9IF9fZmFi
c2wgKF9feCk7CQkJCSAgICAgICAgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRs
IChfX3kgKiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkJICAgICAgCSAgKiBfX3NnbjFsIChfX3gp
KSAgOwl9ICAKCgoKCl9faW5saW5lICAgZG91YmxlICAgICBhY29zaCAgICggZG91YmxlICk7CV9f
aW5saW5lICAgZG91YmxlICAgICBhY29zaCAgICggZG91YmxlICAgICAgX194ICApCXsJICAgICAg
cmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBfX3NxcnRsIChfX3ggKyAx
LjApKSAgOwl9IAlfX2lubGluZSAgIGZsb2F0ICAgICAgYWNvc2hmICAgICggZmxvYXQgKTsJX19p
bmxpbmUgICBmbG9hdCAgICAgIGFjb3NoZiAgICAoIGZsb2F0ICAgICAgX194ICApCXsJICAgICAg
cmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBfX3NxcnRsIChfX3ggKyAx
LjApKSAgOwl9IAlfX2lubGluZSAgIGxvbmcgZG91YmxlICAgICAgYWNvc2hsICAgICggbG9uZyBk
b3VibGUgKTsJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAgIGFjb3NobCAgICAoIGxvbmcgZG91
YmxlICAgICAgX194ICApCXsJICAgICAgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAt
IDEuMCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKSAgOwl9ICAKCgpfX2lubGluZSAgIGRvdWJsZSAg
ICAgYXRhbmggICAoIGRvdWJsZSApOwlfX2lubGluZSAgIGRvdWJsZSAgICAgYXRhbmggICAoIGRv
dWJsZSAgICAgIF9feCAgKQl7CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFi
c2wgKF9feCk7CQkJCSAgICAgICAgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAv
ICgxLjAgKyBfX3kpKSAqIF9fc2duMWwgKF9feCkgIDsJfSAJX19pbmxpbmUgICBmbG9hdCAgICAg
IGF0YW5oZiAgICAoIGZsb2F0ICk7CV9faW5saW5lICAgZmxvYXQgICAgICBhdGFuaGYgICAgKCBm
bG9hdCAgICAgIF9feCAgKQl7CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFi
c2wgKF9feCk7CQkJCSAgICAgICAgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAv
ICgxLjAgKyBfX3kpKSAqIF9fc2duMWwgKF9feCkgIDsJfSAJX19pbmxpbmUgICBsb25nIGRvdWJs
ZSAgICAgIGF0YW5obCAgICAoIGxvbmcgZG91YmxlICk7CV9faW5saW5lICAgbG9uZyBkb3VibGUg
ICAgICBhdGFuaGwgICAgKCBsb25nIGRvdWJsZSAgICAgIF9feCAgKQl7CSAgICAgIHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7CQkJCSAgICAgICAgcmV0dXJuIC0wLjUg
KiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAgKyBfX3kpKSAqIF9fc2duMWwgKF9feCkgIDsJ
fSAgCgoKCiAKX19pbmxpbmUgICBkb3VibGUgICAgIGh5cG90ICAgKCBkb3VibGUgLCAgZG91Ymxl
ICk7CV9faW5saW5lICAgZG91YmxlICAgICBoeXBvdCAgICggZG91YmxlICAgICAgX194ICAsICBk
b3VibGUgICAgICBfX3kgICkJewkgICAgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAq
IF9feSkgIDsJfSAJX19pbmxpbmUgICBmbG9hdCAgICAgIGh5cG90ZiAgICAoIGZsb2F0ICwgIGZs
b2F0ICk7CV9faW5saW5lICAgZmxvYXQgICAgICBoeXBvdGYgICAgKCBmbG9hdCAgICAgIF9feCAg
LCAgZmxvYXQgICAgICBfX3kgICkJewkgICAgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9f
eSAqIF9feSkgIDsJfSAJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAgIGh5cG90bCAgICAoIGxv
bmcgZG91YmxlICwgIGxvbmcgZG91YmxlICk7CV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBo
eXBvdGwgICAgKCBsb25nIGRvdWJsZSAgICAgIF9feCAgLCAgbG9uZyBkb3VibGUgICAgICBfX3kg
ICkJewkgICAgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSkgIDsJfSAgCgpf
X2lubGluZSAgIGRvdWJsZSAgICAgbG9nYiAgICggZG91YmxlICk7CV9faW5saW5lICAgZG91Ymxl
ICAgICBsb2diICAgKCBkb3VibGUgICAgICBfX3ggICkJewkgICAgICByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOwkJ
CQkJCSAgICAgICAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAgICAoImZ4dHJhY3Rc
blx0IgkJCQkJCQkgICAgICAgICAgIDogIj10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAi
MCIgKF9feCkpOwkJCSAgICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAJX19pbmxpbmUgICBmbG9h
dCAgICAgIGxvZ2JmICAgICggZmxvYXQgKTsJX19pbmxpbmUgICBmbG9hdCAgICAgIGxvZ2JmICAg
ICggZmxvYXQgICAgICBfX3ggICkJewkgICAgICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl
OwkJCQkJCSAgICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOwkJCQkJCSAgICAgICAg
X19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAgICAoImZ4dHJhY3Rcblx0IgkJCQkJCQkg
ICAgICAgICAgIDogIj10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOwkJ
CSAgICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAg
IGxvZ2JsICAgICggbG9uZyBkb3VibGUgKTsJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAgIGxv
Z2JsICAgICggbG9uZyBkb3VibGUgICAgICBfX3ggICkJewkgICAgICByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOwkJ
CQkJCSAgICAgICAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAgICAoImZ4dHJhY3Rc
blx0IgkJCQkJCQkgICAgICAgICAgIDogIj10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAi
MCIgKF9feCkpOwkJCSAgICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAgCgoKCgoKCgoKCiMgNjIw
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKCgoKCgpfX2lubGluZSAgIGRvdWJs
ZSAgICAgZHJlbSAgICggZG91YmxlICwgIGRvdWJsZSApOwlfX2lubGluZSAgIGRvdWJsZSAgICAg
ZHJlbSAgICggZG91YmxlICAgICAgX194ICAsICBkb3VibGUgICAgICBfX3kgICkJewkgICAgICBy
ZWdpc3RlciBkb3VibGUgX192YWx1ZTsJCQkJCQkgICAgICAgIHJlZ2lzdGVyIGludCBfX2Nsb2Ji
ZXJlZDsJCQkJCQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAgICAgICAgKCIx
OglmcHJlbTFcblx0IgkJCQkJCSAgICAgICAgICAgImZzdHN3CSUlYXhcblx0IgkJCQkJCSAgICAg
ICAgICAgInNhaGZcblx0IgkJCQkJCQkJICAgICAgICAgICAianAJMWIiCQkJCQkJCSAgICAgICAg
ICAgOiAiPXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUi
IChfX3kpIDogImNjIik7ICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAJX19pbmxpbmUgICBmbG9h
dCAgICAgIGRyZW1mICAgICggZmxvYXQgLCAgZmxvYXQgKTsJX19pbmxpbmUgICBmbG9hdCAgICAg
IGRyZW1mICAgICggZmxvYXQgICAgICBfX3ggICwgIGZsb2F0ICAgICAgX195ICApCXsJICAgICAg
cmVnaXN0ZXIgZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgICByZWdpc3RlciBpbnQgX19jbG9i
YmVyZWQ7CQkJCQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlX18JCQkJCQkJICAgICAgICAgICgi
MToJZnByZW0xXG5cdCIJCQkJCQkgICAgICAgICAgICJmc3RzdwklJWF4XG5cdCIJCQkJCQkgICAg
ICAgICAgICJzYWhmXG5cdCIJCQkJCQkJCSAgICAgICAgICAgImpwCTFiIgkJCQkJCQkgICAgICAg
ICAgIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1
IiAoX195KSA6ICJjYyIpOyAgICAgIHJldHVybiBfX3ZhbHVlICA7CX0gCV9faW5saW5lICAgbG9u
ZyBkb3VibGUgICAgICBkcmVtbCAgICAoIGxvbmcgZG91YmxlICwgIGxvbmcgZG91YmxlICk7CV9f
aW5saW5lICAgbG9uZyBkb3VibGUgICAgICBkcmVtbCAgICAoIGxvbmcgZG91YmxlICAgICAgX194
ICAsICBsb25nIGRvdWJsZSAgICAgIF9feSAgKQl7CSAgICAgIHJlZ2lzdGVyIGRvdWJsZSBfX3Zh
bHVlOwkJCQkJCSAgICAgICAgcmVnaXN0ZXIgaW50IF9fY2xvYmJlcmVkOwkJCQkJCSAgICAgICAg
X19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAgICAoIjE6CWZwcmVtMVxuXHQiCQkJCQkJ
ICAgICAgICAgICAiZnN0c3cJJSVheFxuXHQiCQkJCQkJICAgICAgICAgICAic2FoZlxuXHQiCQkJ
CQkJCQkgICAgICAgICAgICJqcAkxYiIJCQkJCQkJICAgICAgICAgICA6ICI9dCIgKF9fdmFsdWUp
LCAiPSZhIiAoX19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgICAg
ICByZXR1cm4gX192YWx1ZSAgOwl9ICAKIyA2MzUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxp
bmUuaCIgMwoKCiAKX19pbmxpbmUgIGludCBfX2Zpbml0ZSAoZG91YmxlIF9feCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwpfX2lubGluZSAgaW50Cl9fZmluaXRlIChkb3VibGUgX194KQp7
CiAgcmV0dXJuIChfX2V4dGVuc2lvbl9fCgkgICgoKCgodW5pb24geyBkb3VibGUgX19kOyBpbnQg
X19pWzJdOyB9KSB7X19kOiBfX3h9KS5fX2lbMV0KCSAgICAgfCAweDgwMGZmZmZmdSkgKyAxKSA+
PiAzMSkpOwp9CgogCgpfX2lubGluZSAgIGRvdWJsZSAgICAgX19jb3NobTEgICAoIGRvdWJsZSAp
OwlfX2lubGluZSAgIGRvdWJsZSAgICAgX19jb3NobTEgICAoIGRvdWJsZSAgICAgIF9feCAgKQl7
CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChf
X3gpKTsJCSAgICAgICAgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0xICsgMS4wKSkgKiBf
X2V4bTEgIDsJfSAJX19pbmxpbmUgICBmbG9hdCAgICAgIF9fY29zaG0xZiAgICAoIGZsb2F0ICk7
CV9faW5saW5lICAgZmxvYXQgICAgICBfX2Nvc2htMWYgICAgKCBmbG9hdCAgICAgIF9feCAgKQl7
CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChf
X3gpKTsJCSAgICAgICAgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0xICsgMS4wKSkgKiBf
X2V4bTEgIDsJfSAJX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAgIF9fY29zaG0xbCAgICAoIGxv
bmcgZG91YmxlICk7CV9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBfX2Nvc2htMWwgICAgKCBs
b25nIGRvdWJsZSAgICAgIF9feCAgKQl7CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXht
MSA9IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsJCSAgICAgICAgcmV0dXJuIDAuNSAqIChfX2V4
bTEgLyAoX19leG0xICsgMS4wKSkgKiBfX2V4bTEgIDsJfSAgCgoKCl9faW5saW5lICAgZG91Ymxl
ICAgICBfX2Fjb3NoMXAgICAoIGRvdWJsZSApOwlfX2lubGluZSAgIGRvdWJsZSAgICAgX19hY29z
aDFwICAgKCBkb3VibGUgICAgICBfX3ggICkJewkgICAgICByZXR1cm4gbG9nMXBsIChfX3ggKyBf
X3NxcnRsIChfX3gpICogX19zcXJ0bCAoX194ICsgMi4wKSkgIDsJfSAJX19pbmxpbmUgICBmbG9h
dCAgICAgIF9fYWNvc2gxcGYgICAgKCBmbG9hdCApOwlfX2lubGluZSAgIGZsb2F0ICAgICAgX19h
Y29zaDFwZiAgICAoIGZsb2F0ICAgICAgX194ICApCXsJICAgICAgcmV0dXJuIGxvZzFwbCAoX194
ICsgX19zcXJ0bCAoX194KSAqIF9fc3FydGwgKF9feCArIDIuMCkpICA7CX0gCV9faW5saW5lICAg
bG9uZyBkb3VibGUgICAgICBfX2Fjb3NoMXBsICAgICggbG9uZyBkb3VibGUgKTsJX19pbmxpbmUg
ICBsb25nIGRvdWJsZSAgICAgIF9fYWNvc2gxcGwgICAgKCBsb25nIGRvdWJsZSAgICAgIF9feCAg
KQl7CSAgICAgIHJldHVybiBsb2cxcGwgKF9feCArIF9fc3FydGwgKF9feCkgKiBfX3NxcnRsIChf
X3ggKyAyLjApKSAgOwl9ICAKCgoKCiAKCgoKCgoKCgogCiMgNjc2ICIvdXNyL2luY2x1ZGUvYml0
cy9tYXRoaW5saW5lLmgiIDMKCgoKIyAzNDggIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgoK
IyA0MDcgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKCgp9IAoKCgojIDYgInNob3cuY3BwIiAyCgoK
IyAxICIuLi9vcGVyYXRpb25zL3NlcXVlbnRpYWxpbnRlcmZhY2UuaCIgMQoKCgogCiAKIAogCiAK
CiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4v
Li4vaW5jbHVkZS9nKystMy9saXN0IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8u
Li9pbmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8y
Ljk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoK
CiAKIAogCiAKIAogCiAKIAogCiAKIAoKCiAKCiAKIAogCiAKIAogCiAKCgoKCgoKCgojIDE0OCAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5j
bHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgICAgCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDIzNCAiL3Vzci9saWIvZ2Nj
LWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z
dGxfY29uZmlnLmgiIDMKCgojIDI0OCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51
eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCgoKCgoKCgoKCgoKCgoKCgoKCiAK
IAojIDMxNiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4v
Li4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCiAKIAojIDM2ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0
LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAy
IDMKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9yZWxvcHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKIAoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIHsKICByZXR1cm4gIShfX3gg
PT0gX195KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNv
bnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgewogIHJldHVybiBfX3kgPCBfX3g7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgX1RwJiBfX3gs
IGNvbnN0IF9UcCYgX195KSB7CiAgcmV0dXJuICEoX195IDwgX194KTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9UcD4KaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBfVHAmIF9feCwgY29uc3QgX1Rw
JiBfX3kpIHsKICByZXR1cm4gIShfX3ggPCBfX3kpOwp9CgogCgoKCiAKIAogCiMgMzkgIi91c3Iv
bGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUv
ZysrLTMvc3RsX2FsZ29iYXNlLmgiIDIgMwoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1y
ZWRoYXQtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3BhaXIuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKdGVtcGxhdGUgPGNsYXNz
IF9UMSwgY2xhc3MgX1QyPgpzdHJ1Y3QgcGFpciB7CiAgdHlwZWRlZiBfVDEgZmlyc3RfdHlwZTsK
ICB0eXBlZGVmIF9UMiBzZWNvbmRfdHlwZTsKCiAgX1QxIGZpcnN0OwogIF9UMiBzZWNvbmQ7CiAg
cGFpcigpIDogZmlyc3QoX1QxKCkpLCBzZWNvbmQoX1QyKCkpIHt9CiAgcGFpcihjb25zdCBfVDEm
IF9fYSwgY29uc3QgX1QyJiBfX2IpIDogZmlyc3QoX19hKSwgc2Vjb25kKF9fYikge30KCgogIHRl
bXBsYXRlIDxjbGFzcyBfVTEsIGNsYXNzIF9VMj4KICBwYWlyKGNvbnN0IHBhaXI8X1UxLCBfVTI+
JiBfX3ApIDogZmlyc3QoX19wLmZpcnN0KSwgc2Vjb25kKF9fcC5zZWNvbmQpIHt9Cgp9OwoKdGVt
cGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCnsgCiAgcmV0
dXJuIF9feC5maXJzdCA9PSBfX3kuZmlyc3QgJiYgX194LnNlY29uZCA9PSBfX3kuc2Vjb25kOyAK
fQoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxpbmUgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkKeyAK
ICByZXR1cm4gX194LmZpcnN0IDwgX195LmZpcnN0IHx8IAogICAgICAgICAoIShfX3kuZmlyc3Qg
PCBfX3guZmlyc3QpICYmIF9feC5zZWNvbmQgPCBfX3kuc2Vjb25kKTsgCn0KCnRlbXBsYXRlIDxj
bGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIHBhaXI8X1QxLCBfVDI+IG1ha2VfcGFpcihjb25z
dCBfVDEmIF9feCwgY29uc3QgX1QyJiBfX3kpCnsKICByZXR1cm4gcGFpcjxfVDEsIF9UMj4oX194
LCBfX3kpOwp9CgogCgoKCiAKIAogCiMgNDIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQt
bGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsZ29iYXNlLmgiIDIg
MwoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvdHlwZV90cmFpdHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKc3RydWN0IF9fdHJ1ZV90eXBl
IHsKfTsKCnN0cnVjdCBfX2ZhbHNlX3R5cGUgewp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3Ry
dWN0IF9fdHlwZV90cmFpdHMgeyAKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICAgdGhpc19kdW1t
eV9tZW1iZXJfbXVzdF9iZV9maXJzdDsKICAgICAgICAgICAgICAgICAgICAKCgoKCgogICAgCgoK
CgoKCgoKIAoKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9j
b25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9j
b25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdu
bWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07CgoKCiAK
IAogCgoKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGJvb2w+IHsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBl
X3RyYWl0czxjaGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVm
YXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9j
b3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fz
c2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxf
ZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRl
bXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHNpZ25lZCBjaGFyPiB7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJh
aXRzPHVuc2lnbmVkIGNoYXI+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlh
bF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2
aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZp
YWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJp
dmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9
OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czx3Y2hhcl90PiB7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlw
ZV90cmFpdHM8c2hvcnQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9k
ZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFs
X2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxf
YXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlh
bF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoK
dGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQgc2hvcnQ+IHsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0
eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAg
dHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlw
ZV90cmFpdHM8aW50PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVm
YXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9j
b3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fz
c2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxf
ZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRl
bXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHVuc2lnbmVkIGludD4gewogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3Ry
YWl0czxsb25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVs
dF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5
X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2ln
bm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBs
YXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHVuc2lnbmVkIGxvbmc+IHsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3Ry
YWl0czxsb25nIGxvbmc+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9k
ZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFs
X2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxf
YXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlh
bF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoK
dGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQgbG9uZyBsb25nPiB7CiAg
IHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsK
ICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwog
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0
IF9fdHlwZV90cmFpdHM8ZmxvYXQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJp
dmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190
cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3Ry
aXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBl
Owp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8ZG91YmxlPiB7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVf
dHJhaXRzPGxvbmcgZG91YmxlPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZp
YWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJp
dmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2
aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3Ry
aXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsK
fTsKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IF9fdHlwZV90cmFpdHM8X1RwKj4gewog
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsK
ICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9y
OwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07CgojIDI5NSAiL3Vzci9saWIvZ2Nj
LWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy90
eXBlX3RyYWl0cy5oIiAzCgoKCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9UcD4gc3RydWN0IF9Jc19p
bnRlZ2VyIHsKICB0eXBlZGVmIF9fZmFsc2VfdHlwZSBfSW50ZWdyYWw7Cn07CgoKCnRlbXBsYXRl
PD4gIHN0cnVjdCBfSXNfaW50ZWdlcjxib29sPiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50
ZWdyYWw7Cn07CgoKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjxjaGFyPiB7CiAgdHlw
ZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2lu
dGVnZXI8c2lnbmVkIGNoYXI+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsK
CnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjx1bnNpZ25lZCBjaGFyPiB7CiAgdHlwZWRl
ZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07CgoKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50
ZWdlcjx3Y2hhcl90PiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07CgoKCnRl
bXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjxzaG9ydD4gewogIHR5cGVkZWYgX190cnVlX3R5
cGUgX0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPHVuc2lnbmVk
IHNob3J0PiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+
ICBzdHJ1Y3QgX0lzX2ludGVnZXI8aW50PiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdy
YWw7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8dW5zaWduZWQgaW50PiB7CiAg
dHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lz
X2ludGVnZXI8bG9uZz4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVt
cGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPHVuc2lnbmVkIGxvbmc+IHsKICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2Vy
PGxvbmcgbG9uZz4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVtcGxh
dGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPHVuc2lnbmVkIGxvbmcgbG9uZz4gewogIHR5cGVkZWYg
X190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKCgoKCiAKIAogCiMgNDUgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Rs
X2FsZ29iYXNlLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiAKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKZXh0ZXJuICJDIiB7IAoKIAoKCiMgMSAiL3Vzci9saWIv
Z2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoK
CgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAx
ODggIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhh
dC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoK
IyAzMTcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRl
L3N0cmluZy5oIiAyIDMKCgoKIApleHRlcm4gdm9pZCAqICBtZW1jcHkgICh2b2lkICogIF9fcmVz
dHJpY3QgX19kZXN0LAoJCQkgICAgX19jb25zdCB2b2lkICogIF9fcmVzdHJpY3QgX19zcmMsIHNp
emVfdCBfX24pICB0aHJvdyAoKSAgOwogCgpleHRlcm4gdm9pZCAqICBtZW1tb3ZlICAodm9pZCAq
ICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBzaXplX3QgX19uKSAgdGhy
b3cgKCkgIDsKCiAKCgoKZXh0ZXJuIHZvaWQgKiAgbWVtY2NweSAgKHZvaWQgKiAgX19kZXN0LCBf
X2NvbnN0IHZvaWQgKiAgX19zcmMsCgkJCSAgICAgaW50IF9fYywgc2l6ZV90IF9fbikgIHRocm93
ICgpICA7CgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtc2V0ICAodm9pZCAqICBfX3MsIGludCBfX2Ms
IHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IG1lbWNtcCAgKF9fY29uc3Qg
dm9pZCAqICBfX3MxLCBfX2NvbnN0IHZvaWQgKiAgX19zMiwKCQkJc2l6ZV90IF9fbikgIHRocm93
ICgpICA7CgogCmV4dGVybiB2b2lkICogIG1lbWNociAgKF9fY29uc3Qgdm9pZCAqICBfX3MsIGlu
dCBfX2MsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0
cmNweSAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3NyYykgIHRocm93ICgpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgIChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBz
aXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0cmNhdCAgKGNoYXIgKl9f
cmVzdHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykgIHRo
cm93ICgpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz
dCwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzdHJjbXAgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u
c3QgY2hhciAqX19zMikgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBzdHJuY21wICAoX19jb25z
dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pICB0aHJvdyAoKSAg
OwoKIApleHRlcm4gaW50IHN0cmNvbGwgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hh
ciAqX19zMikgIHRocm93ICgpICA7CiAKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtICAoY2hhciAqX19y
ZXN0cmljdCBfX2Rlc3QsCgkJCSAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNp
emVfdCBfX24pICB0aHJvdyAoKSAgOwoKIyAxMDcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoK
CgogCmV4dGVybiBjaGFyICpfX3N0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkg
IDsKZXh0ZXJuIGNoYXIgKnN0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsK
CgogCgoKCgoKCiMgMTQzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgogCmV4dGVybiBjaGFy
ICpzdHJjaHIgIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7CiAKZXh0
ZXJuIGNoYXIgKnN0cnJjaHIgIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgp
ICA7CgoKCgoKCgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9fcywg
X19jb25zdCBjaGFyICpfX3JlamVjdCkgIHRocm93ICgpICA7CiAKCmV4dGVybiBzaXplX3Qgc3Ry
c3BuICAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpICB0aHJvdyAo
KSAgOwogCmV4dGVybiBjaGFyICpzdHJwYnJrICAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3Qg
Y2hhciAqX19hY2NlcHQpICB0aHJvdyAoKSAgOwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2Nv
bnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpICB0aHJvdyAoKSAg
OwoKCgoKCgoKCgogCmV4dGVybiBjaGFyICpzdHJ0b2sgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywK
CQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkgIHRocm93ICgpICA7CgogCgpl
eHRlcm4gY2hhciAqX19zdHJ0b2tfciAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJCQkgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKCQkJICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19zYXZlX3B0cikgIHRocm93ICgpICA7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGlt
LAoJCQkgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgIHRocm93ICgpICA7CgoKIyAy
MDMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgogCmV4dGVybiBzaXplX3Qgc3RybGVuICAo
X19jb25zdCBjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0
cmVycm9yICAoaW50IF9fZXJybnVtKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0
cmVycm9yX3IgIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICB0
aHJvdyAoKSAgOwpleHRlcm4gY2hhciAqc3RyZXJyb3JfciAgKGludCBfX2Vycm51bSwgY2hhciAq
X19idWYsIHNpemVfdCBfX2J1ZmxlbikgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIHZvaWQgX19i
emVybyAgKHZvaWQgKiAgX19zLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiB2
b2lkIGJjb3B5ICAoX19jb25zdCB2b2lkICogIF9fc3JjLCB2b2lkICogIF9fZGVzdCwgc2l6ZV90
IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lkIGJ6ZXJvICAodm9pZCAqICBfX3MsIHNp
emVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IGJjbXAgIChfX2NvbnN0IHZvaWQg
KiAgX19zMSwgX19jb25zdCB2b2lkICogIF9fczIsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoK
IApleHRlcm4gY2hhciAqaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93
ICgpICA7CgogCmV4dGVybiBjaGFyICpyaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f
YykgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IF9fZmZzICAoaW50IF9faSkgIHRocm93ICgp
ICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CmV4dGVybiBpbnQgZmZzICAoaW50IF9faSkgIHRo
cm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgogCgoKCgoKCgoKCiAKZXh0ZXJuIGlu
dCBfX3N0cmNhc2VjbXAgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikg
IHRocm93ICgpICA7CmV4dGVybiBpbnQgc3RyY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwg
X19jb25zdCBjaGFyICpfX3MyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzdHJuY2FzZWNt
cCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAoJCQkgICAgIHNpemVf
dCBfX24pICB0aHJvdyAoKSAgOwoKCiMgMjc3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoK
IAoKZXh0ZXJuIGNoYXIgKnN0cnNlcCAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKCQkJ
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkgIHRocm93ICgpICA7CgoKIyAzMTkg
Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgoKIyAzNDcgIi91c3IvaW5jbHVkZS9zdHJpbmcu
aCIgMwoKCgp9IAoKCiMgNDggIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45
NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsZ29iYXNlLmgiIDIgMwoKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL2xpbWl0cy5o
IiAxIDMKIAoKCiAKCiMgMTE0ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIu
OTUuMi9pbmNsdWRlL2xpbWl0cy5oIiAzCgoKCgoKCgojIDQ5ICIvdXNyL2xpYi9nY2MtbGliL2kz
ODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGdv
YmFzZS5oIiAyIDMKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKCgoKCgogCgogCgoKCgogCgoKIAoK
CgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwoKCgoKCgoKCgog
CgoKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoK
CgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4
LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoj
IDUxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8u
Li9pbmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAyIDMKCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9uZXcuaCIgMSAzCiAKCgoKCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9uZXciIDEg
MwogCiAKCgoKCiNwcmFnbWEgaW50ZXJmYWNlICJuZXciCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQyICIvdXNy
L2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgojIDggIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUv
bmV3IiAyIDMKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIv
aW5jbHVkZS9leGNlcHRpb24iIDEgMwogCiAKCgoKCiNwcmFnbWEgaW50ZXJmYWNlICJleGNlcHRp
b24iCgpleHRlcm4gIkMrKyIgewoKbmFtZXNwYWNlIHN0ZCB7CgpjbGFzcyBleGNlcHRpb24gewpw
dWJsaWM6CiAgZXhjZXB0aW9uICgpIHsgfQogIHZpcnR1YWwgfmV4Y2VwdGlvbiAoKSB7IH0KICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQgKCkgY29uc3Q7Cn07CgpjbGFzcyBiYWRfZXhjZXB0aW9u
IDogcHVibGljIGV4Y2VwdGlvbiB7CnB1YmxpYzoKICBiYWRfZXhjZXB0aW9uICgpIHsgfQogIHZp
cnR1YWwgfmJhZF9leGNlcHRpb24gKCkgeyB9Cn07Cgp0eXBlZGVmIHZvaWQgKCp0ZXJtaW5hdGVf
aGFuZGxlcikgKCk7CnR5cGVkZWYgdm9pZCAoKnVuZXhwZWN0ZWRfaGFuZGxlcikgKCk7Cgp0ZXJt
aW5hdGVfaGFuZGxlciBzZXRfdGVybWluYXRlICh0ZXJtaW5hdGVfaGFuZGxlcik7CnZvaWQgdGVy
bWluYXRlICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKdW5leHBlY3RlZF9oYW5k
bGVyIHNldF91bmV4cGVjdGVkICh1bmV4cGVjdGVkX2hhbmRsZXIpOwp2b2lkIHVuZXhwZWN0ZWQg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwpib29sIHVuY2F1Z2h0X2V4Y2VwdGlv
biAoKTsKCn0gIAoKfSAgCgoKIyA5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4
LzIuOTUuMi9pbmNsdWRlL25ldyIgMiAzCgoKZXh0ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBzdGQg
ewoKICBjbGFzcyBiYWRfYWxsb2MgOiBwdWJsaWMgZXhjZXB0aW9uIHsKICBwdWJsaWM6CiAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICJiYWRfYWxs
b2MiOyB9CiAgfTsKCiAgc3RydWN0IG5vdGhyb3dfdCB7fTsKICBleHRlcm4gY29uc3Qgbm90aHJv
d190IG5vdGhyb3c7CiAgdHlwZWRlZiB2b2lkICgqbmV3X2hhbmRsZXIpKCk7CiAgbmV3X2hhbmRs
ZXIgc2V0X25ld19oYW5kbGVyIChuZXdfaGFuZGxlcik7Cgp9ICAKCiAKdm9pZCAqb3BlcmF0b3Ig
bmV3IChzaXplX3QpIHRocm93IChzdGQ6OmJhZF9hbGxvYyk7CnZvaWQgKm9wZXJhdG9yIG5ld1td
IChzaXplX3QpIHRocm93IChzdGQ6OmJhZF9hbGxvYyk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlICh2
b2lkICopIHRocm93KCk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQgKikgdGhyb3coKTsK
dm9pZCAqb3BlcmF0b3IgbmV3IChzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3co
KTsKdm9pZCAqb3BlcmF0b3IgbmV3W10gKHNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0
aHJvdygpOwp2b2lkIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqLCBjb25zdCBzdGQ6Om5vdGhyb3df
dCYpIHRocm93KCk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQgKiwgY29uc3Qgc3RkOjpu
b3Rocm93X3QmKSB0aHJvdygpOwoKIAppbmxpbmUgdm9pZCAqb3BlcmF0b3IgbmV3KHNpemVfdCwg
dm9pZCAqcGxhY2UpIHRocm93KCkgeyByZXR1cm4gcGxhY2U7IH0KaW5saW5lIHZvaWQgKm9wZXJh
dG9yIG5ld1tdKHNpemVfdCwgdm9pZCAqcGxhY2UpIHRocm93KCkgeyByZXR1cm4gcGxhY2U7IH0K
fSAgCgoKIyA2ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNs
dWRlL25ldy5oIiAyIDMKCgp1c2luZyBzdGQ6Om5ld19oYW5kbGVyOwp1c2luZyBzdGQ6OnNldF9u
ZXdfaGFuZGxlcjsKCgojIDUyICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIu
OTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAyIDMKCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5j
bHVkZS9nKystMy9pb3N0cmVhbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI3By
YWdtYSBpbnRlcmZhY2UKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4
LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgoKICAgCgoKCmV4dGVybiAi
QyIgewoKfQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDKysiIHsKY2xhc3Mg
aXN0cmVhbTsgIApjbGFzcyBvc3RyZWFtOyBjbGFzcyBzdHJlYW1idWY7CgogCgoKCgp0eXBlZGVm
IF9fb2ZmNjRfdCAgIHN0cmVhbW9mZjsKdHlwZWRlZiBfX29mZjY0X3QgICBzdHJlYW1wb3M7CgoK
Cgp0eXBlZGVmIF9fc3NpemVfdCAgIHN0cmVhbXNpemU7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
X19mbXRmbGFnczsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9faW9zdGF0ZTsKCnN0cnVjdCBfaW9z
X2ZpZWxkcwp7ICAKICAgIHN0cmVhbWJ1ZiAqX3N0cmJ1ZjsKICAgIG9zdHJlYW0qIF90aWU7CiAg
ICBpbnQgX3dpZHRoOwogICAgX19mbXRmbGFncyBfZmxhZ3M7CiAgICB3Y2hhcl90ICAgX2ZpbGw7
CiAgICBfX2lvc3RhdGUgX3N0YXRlOwogICAgX19pb3N0YXRlIF9leGNlcHRpb25zOwogICAgaW50
IF9wcmVjaXNpb247CgogICAgdm9pZCAqX2FycmF5czsgIAp9OwoKCgoKCgoKCgoKCgoKCgojIDEy
NCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdHJlYW1idWYuaCIgMwoKCmNsYXNzIGlvcyA6IHB1YmxpYyBfaW9zX2Zp
ZWxkcyB7CiAgaW9zJiBvcGVyYXRvcj0oaW9zJik7ICAgCiAgaW9zIChjb25zdCBpb3MmKTsgIAog
IHB1YmxpYzoKICAgIHR5cGVkZWYgX19mbXRmbGFncyBmbXRmbGFnczsKICAgIHR5cGVkZWYgaW50
IGlvc3RhdGU7CiAgICB0eXBlZGVmIGludCBvcGVubW9kZTsKICAgIHR5cGVkZWYgX19zc2l6ZV90
ICAgc3RyZWFtc2l6ZTsKICAgIGVudW0gaW9fc3RhdGUgewoJZ29vZGJpdCA9IDAgLAoJZW9mYml0
ID0gMSAsCglmYWlsYml0ID0gMiAsCgliYWRiaXQgPSA0ICB9OwogICAgZW51bSBvcGVuX21vZGUg
ewoJaW4gPSAxICwKCW91dCA9IDIgLAoJYXRlID0gNCAsCglhcHAgPSA4ICwKCXRydW5jID0gMTYg
LAoJbm9jcmVhdGUgPSAzMiAsCglub3JlcGxhY2UgPSA2NCAsCgliaW4gPSAxMjggLCAgCgliaW5h
cnkgPSAxMjggIH07CiAgICBlbnVtIHNlZWtfZGlyIHsgYmVnLCBjdXIsIGVuZH07CiAgICB0eXBl
ZGVmIGVudW0gc2Vla19kaXIgc2Vla2RpcjsKICAgICAKICAgIGVudW0geyBza2lwd3M9IDAxICwK
CSAgIGxlZnQ9IDAyICwgcmlnaHQ9IDA0ICwgaW50ZXJuYWw9IDAxMCAsCgkgICBkZWM9IDAyMCAs
IG9jdD0gMDQwICwgaGV4PSAwMTAwICwKCSAgIHNob3diYXNlPSAwMjAwICwgc2hvd3BvaW50PSAw
NDAwICwKCSAgIHVwcGVyY2FzZT0gMDEwMDAgLCBzaG93cG9zPSAwMjAwMCAsCgkgICBzY2llbnRp
ZmljPSAwNDAwMCAsIGZpeGVkPSAwMTAwMDAgLAoJICAgdW5pdGJ1Zj0gMDIwMDAwICwgc3RkaW89
IDA0MDAwMCAKCgoKCSAgIH07CiAgICBlbnVtIHsgIAoJYmFzZWZpZWxkPWRlYytvY3QraGV4LAoJ
ZmxvYXRmaWVsZCA9IHNjaWVudGlmaWMrZml4ZWQsCglhZGp1c3RmaWVsZCA9IGxlZnQrcmlnaHQr
aW50ZXJuYWwKICAgIH07CgojIDE3NyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51
eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJlYW1idWYuaCIgMwoKCiAgICBv
c3RyZWFtKiB0aWUoKSBjb25zdCB7IHJldHVybiBfdGllOyB9CiAgICBvc3RyZWFtKiB0aWUob3N0
cmVhbSogdmFsKSB7IG9zdHJlYW0qIHNhdmU9X3RpZTsgX3RpZT12YWw7IHJldHVybiBzYXZlOyB9
CgogICAgIAogICAgd2NoYXJfdCAgIGZpbGwoKSBjb25zdCB7IHJldHVybiBfZmlsbDsgfQogICAg
d2NoYXJfdCAgIGZpbGwod2NoYXJfdCAgIG5ld2YpCgl7d2NoYXJfdCAgIG9sZGYgPSBfZmlsbDsg
X2ZpbGwgPSBuZXdmOyByZXR1cm4gb2xkZjt9CiAgICBmbXRmbGFncyBmbGFncygpIGNvbnN0IHsg
cmV0dXJuIF9mbGFnczsgfQogICAgZm10ZmxhZ3MgZmxhZ3MoZm10ZmxhZ3MgbmV3X3ZhbCkgewoJ
Zm10ZmxhZ3Mgb2xkX3ZhbCA9IF9mbGFnczsgX2ZsYWdzID0gbmV3X3ZhbDsgcmV0dXJuIG9sZF92
YWw7IH0KICAgIGludCBwcmVjaXNpb24oKSBjb25zdCB7IHJldHVybiBfcHJlY2lzaW9uOyB9CiAg
ICBpbnQgcHJlY2lzaW9uKGludCBuZXdwKSB7Cgl1bnNpZ25lZCBzaG9ydCBvbGRwID0gX3ByZWNp
c2lvbjsgX3ByZWNpc2lvbiA9ICh1bnNpZ25lZCBzaG9ydCluZXdwOwoJcmV0dXJuIG9sZHA7IH0K
ICAgIGZtdGZsYWdzIHNldGYoZm10ZmxhZ3MgdmFsKSB7CglmbXRmbGFncyBvbGRiaXRzID0gX2Zs
YWdzOwoJX2ZsYWdzIHw9IHZhbDsgcmV0dXJuIG9sZGJpdHM7IH0KICAgIGZtdGZsYWdzIHNldGYo
Zm10ZmxhZ3MgdmFsLCBmbXRmbGFncyBtYXNrKSB7CglmbXRmbGFncyBvbGRiaXRzID0gX2ZsYWdz
OwoJX2ZsYWdzID0gKF9mbGFncyAmIH5tYXNrKSB8ICh2YWwgJiBtYXNrKTsgcmV0dXJuIG9sZGJp
dHM7IH0KICAgIGZtdGZsYWdzIHVuc2V0ZihmbXRmbGFncyBtYXNrKSB7CglmbXRmbGFncyBvbGRi
aXRzID0gX2ZsYWdzOwoJX2ZsYWdzICY9IH5tYXNrOyByZXR1cm4gb2xkYml0czsgfQogICAgaW50
IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gX3dpZHRoOyB9CiAgICBpbnQgd2lkdGgoaW50IHZhbCkg
eyBpbnQgc2F2ZSA9IF93aWR0aDsgX3dpZHRoID0gdmFsOyByZXR1cm4gc2F2ZTsgfQoKCgoKICAg
IHZvaWQgX3Rocm93X2ZhaWx1cmUoKSBjb25zdCB7IH0KCiAgICB2b2lkIGNsZWFyKGlvc3RhdGUg
c3RhdGUgPSAwKSB7Cglfc3RhdGUgPSBfc3RyYnVmID8gc3RhdGUgOiBzdGF0ZXxiYWRiaXQ7Cglp
ZiAoX3N0YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19mYWlsdXJlKCk7IH0KICAgIHZvaWQgc2V0
KGlvc3RhdGUgZmxhZykgeyBfc3RhdGUgfD0gZmxhZzsKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9u
cykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgdm9pZCBzZXRzdGF0ZShpb3N0YXRlIGZsYWcpIHsg
X3N0YXRlIHw9IGZsYWc7ICAKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1
cmUoKTsgfQogICAgaW50IGdvb2QoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgPT0gMDsgfQogICAg
aW50IGVvZigpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAmIGlvczo6ZW9mYml0OyB9CiAgICBpbnQg
ZmFpbCgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAmIChpb3M6OmJhZGJpdHxpb3M6OmZhaWxiaXQp
OyB9CiAgICBpbnQgYmFkKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlICYgaW9zOjpiYWRiaXQ7IH0K
ICAgIGlvc3RhdGUgcmRzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZTsgfQogICAgb3BlcmF0
b3Igdm9pZCooKSBjb25zdCB7IHJldHVybiBmYWlsKCkgPyAodm9pZCopMCA6ICh2b2lkKikoLTEp
OyB9CiAgICBpbnQgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gZmFpbCgpOyB9CiAgICBpb3N0
YXRlIGV4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBfZXhjZXB0aW9uczsgfQogICAgdm9pZCBl
eGNlcHRpb25zKGlvc3RhdGUgZW5hYmxlKSB7CglfZXhjZXB0aW9ucyA9IGVuYWJsZTsKCWlmIChf
c3RhdGUgJiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQoKICAgIHN0cmVhbWJ1Ziog
cmRidWYoKSBjb25zdCB7IHJldHVybiBfc3RyYnVmOyB9CiAgICBzdHJlYW1idWYqIHJkYnVmKHN0
cmVhbWJ1ZiAqX3MpIHsKICAgICAgc3RyZWFtYnVmICpfb2xkID0gX3N0cmJ1ZjsgX3N0cmJ1ZiA9
IF9zOyBjbGVhciAoKTsgcmV0dXJuIF9vbGQ7IH0KCiAgICBzdGF0aWMgaW50IHN5bmNfd2l0aF9z
dGRpbyhpbnQgb24pOwogICAgc3RhdGljIHZvaWQgc3luY193aXRoX3N0ZGlvKCkgeyBzeW5jX3dp
dGhfc3RkaW8oMSk7IH0KICAgIHN0YXRpYyBmbXRmbGFncyBiaXRhbGxvYygpOwogICAgc3RhdGlj
IGludCB4YWxsb2MoKTsKICAgIHZvaWQqJiBwd29yZChpbnQpOwogICAgdm9pZCogcHdvcmQoaW50
KSBjb25zdDsKICAgIGxvbmcmIGl3b3JkKGludCk7CiAgICBsb25nIGl3b3JkKGludCkgY29uc3Q7
CgoKCgoKCgoKCiAgICAgCiAgICBjbGFzcyBJbml0IHsKICAgIHB1YmxpYzoKICAgICAgSW5pdCAo
KSB7IH0KICAgIH07CgogIHByb3RlY3RlZDoKICAgIGlubGluZSBpb3Moc3RyZWFtYnVmKiBzYiA9
IDAsIG9zdHJlYW0qIHRpZV90byA9IDApOwogICAgaW5saW5lIHZpcnR1YWwgfmlvcygpOwogICAg
aW5saW5lIHZvaWQgaW5pdChzdHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWUgPSAwKTsKfTsKCgoK
CnR5cGVkZWYgaW9zOjpzZWVrX2RpciBfc2Vla19kaXI7CgoKIAogCiAKIAogCgogCiAKY2xhc3Mg
c3RyZWFtbWFya2VyIDogcHJpdmF0ZSBfSU9fbWFya2VyIHsKICAgIGZyaWVuZCBjbGFzcyBzdHJl
YW1idWY7CiAgICB2b2lkIHNldF9vZmZzZXQoaW50IG9mZnNldCkgeyBfcG9zID0gb2Zmc2V0OyB9
CiAgcHVibGljOgogICAgc3RyZWFtbWFya2VyKHN0cmVhbWJ1ZiAqc2IpOwogICAgfnN0cmVhbW1h
cmtlcigpOwogICAgaW50IHNhdmluZygpIHsgcmV0dXJuICAxOyB9CiAgICBpbnQgZGVsdGEoc3Ry
ZWFtbWFya2VyJik7CiAgICBpbnQgZGVsdGEoKTsKfTsKCnN0cnVjdCBzdHJlYW1idWYgOiBwdWJs
aWMgX0lPX0ZJTEUgeyAgCiAgICBmcmllbmQgY2xhc3MgaW9zOwogICAgZnJpZW5kIGNsYXNzIGlz
dHJlYW07CiAgICBmcmllbmQgY2xhc3Mgb3N0cmVhbTsKICAgIGZyaWVuZCBjbGFzcyBzdHJlYW1t
YXJrZXI7CiAgICBjb25zdCB2b2lkIComX3Z0YWJsZSgpIHsgcmV0dXJuICooY29uc3Qgdm9pZCoq
KSgoX0lPX0ZJTEUqKXRoaXMgKyAxKTsgfQogIHByb3RlY3RlZDoKICAgIHN0YXRpYyBzdHJlYW1i
dWYqIF9saXN0X2FsbDsgIAogICAgX0lPX0ZJTEUqJiB4Y2hhaW4oKSB7IHJldHVybiBfY2hhaW47
IH0KICAgIHZvaWQgX3VuX2xpbmsoKTsKICAgIHZvaWQgX2xpbmtfaW4oKTsKICAgIGNoYXIqIGdw
dHIoKSBjb25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgxMDAgID8gX0lPX3NhdmVfYmFz
ZSA6IF9JT19yZWFkX3B0cjsgfQogICAgY2hhciogcHB0cigpIGNvbnN0IHsgcmV0dXJuIF9JT193
cml0ZV9wdHI7IH0KICAgIGNoYXIqIGVncHRyKCkgY29uc3QKICAgICAgeyByZXR1cm4gX2ZsYWdz
ICAmIDB4MTAwICA/IF9JT19zYXZlX2VuZCA6IF9JT19yZWFkX2VuZDsgfQogICAgY2hhciogZXBw
dHIoKSBjb25zdCB7IHJldHVybiBfSU9fd3JpdGVfZW5kOyB9CiAgICBjaGFyKiBwYmFzZSgpIGNv
bnN0IHsgcmV0dXJuIF9JT193cml0ZV9iYXNlOyB9CiAgICBjaGFyKiBlYmFjaygpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9iYXNlIDogX0lPX3JlYWRf
YmFzZTt9CiAgICBjaGFyKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9iYXNlOyB9CiAg
ICBjaGFyKiBlYnVmKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9lbmQ7IH0KICAgIGludCBibGVu
KCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9lbmQgLSBfSU9fYnVmX2Jhc2U7IH0KICAgIHZvaWQg
eHB1dF9jaGFyKGNoYXIgYykgeyAqX0lPX3dyaXRlX3B0cisrID0gYzsgfQogICAgaW50IHhmbGFn
cygpIHsgcmV0dXJuIF9mbGFncyA7IH0KICAgIGludCB4ZmxhZ3MoaW50IGYpIHtpbnQgZmwgPSBf
ZmxhZ3MgOyBfZmxhZ3MgID0gZjsgcmV0dXJuIGZsO30KICAgIHZvaWQgeHNldGZsYWdzKGludCBm
KSB7IF9mbGFncyAgfD0gZjsgfQogICAgdm9pZCB4c2V0ZmxhZ3MoaW50IGYsIGludCBtYXNrKQog
ICAgICB7IF9mbGFncyAgPSAoX2ZsYWdzICAmIH5tYXNrKSB8IChmICYgbWFzayk7IH0KICAgIHZv
aWQgZ2J1bXAoaW50IG4pCiAgICAgIHsgX2ZsYWdzICAmIDB4MTAwICA/IChfSU9fc2F2ZV9iYXNl
Kz1uKTooX0lPX3JlYWRfcHRyKz1uKTt9CiAgICB2b2lkIHBidW1wKGludCBuKSB7IF9JT193cml0
ZV9wdHIgKz0gbjsgfQogICAgdm9pZCBzZXRiKGNoYXIqIGIsIGNoYXIqIGViLCBpbnQgYT0wKTsK
ICAgIHZvaWQgc2V0cChjaGFyKiBwLCBjaGFyKiBlcCkKICAgICAgeyBfSU9fd3JpdGVfYmFzZT1f
SU9fd3JpdGVfcHRyPXA7IF9JT193cml0ZV9lbmQ9ZXA7IH0KICAgIHZvaWQgc2V0ZyhjaGFyKiBl
YiwgY2hhciogZywgY2hhciAqZWcpIHsKICAgICAgaWYgKF9mbGFncyAgJiAweDEwMCApIF9JT19m
cmVlX2JhY2t1cF9hcmVhKHRoaXMpOyAKICAgICAgX0lPX3JlYWRfYmFzZSA9IGViOyBfSU9fcmVh
ZF9wdHIgPSBnOyBfSU9fcmVhZF9lbmQgPSBlZzsgfQogICAgY2hhciAqc2hvcnRidWYoKSB7IHJl
dHVybiBfc2hvcnRidWY7IH0KCiAgICBpbnQgaW5fYmFja3VwKCkgeyByZXR1cm4gX2ZsYWdzICYg
MHgxMDAgOyB9CiAgICAgCiAgICBjaGFyICpHYmFzZSgpIHsgcmV0dXJuIGluX2JhY2t1cCgpID8g
X0lPX3NhdmVfYmFzZSA6IF9JT19yZWFkX2Jhc2U7IH0KICAgICAKICAgIGNoYXIgKmVHcHRyKCkg
eyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9lbmQgOiBfSU9fcmVhZF9lbmQ7IH0KICAg
ICAKICAgIGNoYXIgKkJiYXNlKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fcmVhZF9iYXNl
IDogX0lPX3NhdmVfYmFzZTsgfQogICAgY2hhciAqQnB0cigpIHsgcmV0dXJuIF9JT19iYWNrdXBf
YmFzZTsgfQogICAgIAogICAgY2hhciAqZUJwdHIoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9J
T19yZWFkX2VuZCA6IF9JT19zYXZlX2VuZDsgfQogICAgY2hhciAqTmJhc2UoKSB7IHJldHVybiBf
SU9fc2F2ZV9iYXNlOyB9CiAgICBjaGFyICplTnB0cigpIHsgcmV0dXJuIF9JT19zYXZlX2VuZDsg
fQogICAgaW50IGhhdmVfYmFja3VwKCkgeyByZXR1cm4gX0lPX3NhdmVfYmFzZSAhPSBfX251bGwg
OyB9CiAgICBpbnQgaGF2ZV9tYXJrZXJzKCkgeyByZXR1cm4gX21hcmtlcnMgIT0gX19udWxsIDsg
fQogICAgdm9pZCBmcmVlX2JhY2t1cF9hcmVhKCk7CiAgICB2b2lkIHVuc2F2ZV9tYXJrZXJzKCk7
ICAKICAgIGludCBwdXRfbW9kZSgpIHsgcmV0dXJuIF9mbGFncyAmIDB4ODAwIDsgfQogICAgaW50
IHN3aXRjaF90b19nZXRfbW9kZSgpOwogICAgCiAgICBzdHJlYW1idWYoaW50IGZsYWdzPTApOwog
IHB1YmxpYzoKICAgIHN0YXRpYyBpbnQgZmx1c2hfYWxsKCk7CiAgICBzdGF0aWMgdm9pZCBmbHVz
aF9hbGxfbGluZWJ1ZmZlcmVkKCk7ICAKICAgIHZpcnR1YWwgfnN0cmVhbWJ1ZigpOwogICAgdmly
dHVhbCBpbnQgb3ZlcmZsb3coaW50IGMgPSAoLTEpICk7ICAKICAgIHZpcnR1YWwgaW50IHVuZGVy
ZmxvdygpOyAgCiAgICB2aXJ0dWFsIGludCB1ZmxvdygpOyAgCiAgICB2aXJ0dWFsIGludCBwYmFj
a2ZhaWwoaW50IGMpOwogCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXIq
IHMsIHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgeHNnZXRuKGNoYXIqIHMs
IHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzZWVrb2ZmKHN0cmVhbW9mZiwg
X3NlZWtfZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHZpcnR1YWwgc3RyZWFt
cG9zIHNlZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUgPSBpb3M6OmlufGlvczo6b3V0KTsK
CiAgICBzdHJlYW1wb3MgcHVic2Vla29mZihzdHJlYW1vZmYgbywgX3NlZWtfZGlyIGQsIGludCBt
b2RlPWlvczo6aW58aW9zOjpvdXQpCiAgICAgIHsgcmV0dXJuIF9JT19zZWVrb2ZmICh0aGlzLCBv
LCBkLCBtb2RlKTsgfQogICAgc3RyZWFtcG9zIHB1YnNlZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50
IG1vZGUgPSBpb3M6OmlufGlvczo6b3V0KQogICAgICB7IHJldHVybiBfSU9fc2Vla3BvcyAodGhp
cywgcG9zLCBtb2RlKTsgfQogICAgc3RyZWFtcG9zIHNzZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtf
ZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHN0cmVhbXBvcyBzc2Vla3Bvcyhz
dHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBz
dHJlYW1idWYqIHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVuKTsKICAgIHZpcnR1YWwgaW50IHN5bmMo
KTsKICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUoKTsKCiAgICBpbnQgc2Vla21hcmsoc3RyZWFt
bWFya2VyJiBtYXJrLCBpbnQgZGVsdGEgPSAwKTsKICAgIGludCBzcHV0YmFja2MoY2hhciBjKTsK
ICAgIGludCBzdW5nZXRjKCk7CiAgICBpbnQgdW5idWZmZXJlZCgpIHsgcmV0dXJuIF9mbGFncyAm
IDIgID8gMSA6IDA7IH0KICAgIGludCBsaW5lYnVmZmVyZWQoKSB7IHJldHVybiBfZmxhZ3MgJiAw
eDIwMCAgPyAxIDogMDsgfQogICAgdm9pZCB1bmJ1ZmZlcmVkKGludCBpKQoJeyBpZiAoaSkgX2Zs
YWdzIHw9IDIgOyBlbHNlIF9mbGFncyAmPSB+MiA7IH0KICAgIHZvaWQgbGluZWJ1ZmZlcmVkKGlu
dCBpKQoJeyBpZiAoaSkgX2ZsYWdzIHw9IDB4MjAwIDsgZWxzZSBfZmxhZ3MgJj0gfjB4MjAwIDsg
fQogICAgaW50IGFsbG9jYXRlKCkgeyAgCglpZiAoYmFzZSgpIHx8IHVuYnVmZmVyZWQoKSkgcmV0
dXJuIDA7CgllbHNlIHJldHVybiBkb2FsbG9jYXRlKCk7IH0KICAgICAKICAgIHZvaWQgYWxsb2Ni
dWYoKSB7IGlmIChiYXNlKCkgPT0gX19udWxsICkgZG9hbGxvY2J1ZigpOyB9CiAgICB2b2lkIGRv
YWxsb2NidWYoKTsKICAgIGludCBpbl9hdmFpbCgpIHsgcmV0dXJuIF9JT19yZWFkX2VuZCAtIF9J
T19yZWFkX3B0cjsgfQogICAgaW50IG91dF93YWl0aW5nKCkgeyByZXR1cm4gX0lPX3dyaXRlX3B0
ciAtIF9JT193cml0ZV9iYXNlOyB9CiAgICBzdHJlYW1zaXplIHNwdXRuKGNvbnN0IGNoYXIqIHMs
IHN0cmVhbXNpemUgbikgeyByZXR1cm4geHNwdXRuKHMsIG4pOyB9CiAgICBzdHJlYW1zaXplIHBh
ZG4oY2hhciBwYWQsIHN0cmVhbXNpemUgbikgeyByZXR1cm4gX0lPX3BhZG4odGhpcywgcGFkLCBu
KTsgfQogICAgc3RyZWFtc2l6ZSBzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4pIHsgcmV0dXJu
IF9JT19zZ2V0bih0aGlzLCBzLCBuKTsgfQogICAgaW50IGlnbm9yZShpbnQpOwogICAgaW50IGdl
dF9jb2x1bW4oKTsKICAgIGludCBzZXRfY29sdW1uKGludCk7CiAgICBsb25nIHNnZXRsaW5lKGNo
YXIqIGJ1Ziwgc2l6ZV90ICAgbiwgY2hhciBkZWxpbSwgaW50IHB1dGJhY2tfZGVsaW0pOwogICAg
aW50IHNwdXRjKGludCBjKSB7IHJldHVybiBfSU9fcHV0YyhjLCB0aGlzKTsgfQogICAgaW50IHNi
dW1wYygpIHsgcmV0dXJuIF9JT19nZXRjKHRoaXMpOyB9CiAgICBpbnQgc2dldGMoKSB7IHJldHVy
biAoKCAgdGhpcyAgKS0+X0lPX3JlYWRfcHRyID49ICggIHRoaXMgICktPl9JT19yZWFkX2VuZCAm
JiBfX3VuZGVyZmxvdyAoICB0aGlzICApID09ICgtMSkgID8gKC0xKSAgOiAqKHVuc2lnbmVkIGNo
YXIgKikgKCAgdGhpcyAgKS0+X0lPX3JlYWRfcHRyKSAgOyB9CiAgICBpbnQgc25leHRjKCkgewoJ
aWYgKF9JT19yZWFkX3B0ciA+PSBfSU9fcmVhZF9lbmQgJiYgX191bmRlcmZsb3codGhpcykgPT0g
KC0xKSApCgkgIHJldHVybiAoLTEpIDsKCWVsc2UgcmV0dXJuIF9JT19yZWFkX3B0cisrLCBzZ2V0
YygpOyB9CiAgICB2b2lkIHN0b3NzYygpIHsgaWYgKF9JT19yZWFkX3B0ciA8IF9JT19yZWFkX2Vu
ZCkgX0lPX3JlYWRfcHRyKys7IH0KICAgIGludCB2c2NhbihjaGFyIGNvbnN0ICpmbXQwLCBfX2du
dWNfdmFfbGlzdCAgYXAsIGlvcyogc3RyZWFtID0gX19udWxsICk7CiAgICBpbnQgc2NhbihjaGFy
IGNvbnN0ICpmbXQwIC4uLik7CiAgICBpbnQgdmZvcm0oY2hhciBjb25zdCAqZm10MCwgX19nbnVj
X3ZhX2xpc3QgIGFwKTsKICAgIGludCBmb3JtKGNoYXIgY29uc3QgKmZtdDAgLi4uKTsKCgoKCiAg
ICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3JlYWQoY2hhciogYnVmLCBzdHJlYW1zaXplIHNpemUp
OwogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c193cml0ZShjb25zdCBjaGFyKiwgc3RyZWFtc2l6
ZSk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzeXNfc2VlayhzdHJlYW1vZmYsIF9zZWVrX2Rpcik7
CiAgICB2aXJ0dWFsIGludCBzeXNfY2xvc2UoKTsKICAgIHZpcnR1YWwgaW50IHN5c19zdGF0KHZv
aWQqKTsgIAoKICAgIHZpcnR1YWwgaW50IHNob3dtYW55YygpOwogICAgdmlydHVhbCB2b2lkIGlt
YnVlKHZvaWQgKik7Cgp9OwoKIAogCgpjbGFzcyBmaWxlYnVmIDogcHVibGljIHN0cmVhbWJ1ZiB7
CiAgcHJvdGVjdGVkOgogICAgdm9pZCBpbml0KCk7CiAgcHVibGljOgogICAgc3RhdGljIGNvbnN0
IGludCBvcGVucHJvdDsgIAogICAgZmlsZWJ1ZigpOwogICAgZmlsZWJ1ZihpbnQgZmQpOwogICAg
ZmlsZWJ1ZihpbnQgZmQsIGNoYXIqIHAsIGludCBsZW4pOwoKCgogICAgfmZpbGVidWYoKTsKICAg
IGZpbGVidWYqIGF0dGFjaChpbnQgZmQpOwogICAgZmlsZWJ1Ziogb3Blbihjb25zdCBjaGFyICpm
aWxlbmFtZSwgY29uc3QgY2hhciAqbW9kZSk7CiAgICBmaWxlYnVmKiBvcGVuKGNvbnN0IGNoYXIg
KmZpbGVuYW1lLCBpb3M6Om9wZW5tb2RlIG1vZGUsIGludCBwcm90ID0gMDY2NCk7CiAgICB2aXJ0
dWFsIGludCB1bmRlcmZsb3coKTsKICAgIHZpcnR1YWwgaW50IG92ZXJmbG93KGludCBjID0gKC0x
KSApOwogICAgaW50IGlzX29wZW4oKSBjb25zdCB7IHJldHVybiBfZmlsZW5vID49IDA7IH0KICAg
IGludCBmZCgpIGNvbnN0IHsgcmV0dXJuIGlzX29wZW4oKSA/IF9maWxlbm8gOiAoLTEpIDsgfQog
ICAgZmlsZWJ1ZiogY2xvc2UoKTsKICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUoKTsKICAgIHZp
cnR1YWwgc3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGludCBtb2RlPWlv
czo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1idWYqIHNldGJ1ZihjaGFyKiBwLCBp
bnQgbGVuKTsKICAgIHN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVhbXNpemUg
bik7CiAgICBzdHJlYW1zaXplIHhzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgdmly
dHVhbCBpbnQgc3luYygpOwogIHByb3RlY3RlZDogIAogCiAgICBpbnQgaXNfcmVhZGluZygpIHsg
cmV0dXJuIGViYWNrKCkgIT0gZWdwdHIoKTsgfQogICAgY2hhciogY3VyX3B0cigpIHsgcmV0dXJu
IGlzX3JlYWRpbmcoKSA/ICBncHRyKCkgOiBwcHRyKCk7IH0KICAgICAKICAgIGNoYXIqIGZpbGVf
cHRyKCkgeyByZXR1cm4gZUdwdHIoKTsgfQogICAgIAogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5
c19yZWFkKGNoYXIqIGJ1Ziwgc3RyZWFtc2l6ZSBzaXplKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9z
IHN5c19zZWVrKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBz
eXNfd3JpdGUoY29uc3QgY2hhciosIHN0cmVhbXNpemUpOwogICAgdmlydHVhbCBpbnQgc3lzX3N0
YXQodm9pZCopOyAgCiAgICB2aXJ0dWFsIGludCBzeXNfY2xvc2UoKTsKCgoKCn07CgppbmxpbmUg
dm9pZCBpb3M6OmluaXQoc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllX3RvKSB7CgkJX3N0YXRl
ID0gc2IgPyBpb3M6Omdvb2RiaXQgOiBpb3M6OmJhZGJpdDsgX2V4Y2VwdGlvbnM9MDsKCQlfc3Ry
YnVmPXNiOyBfdGllID0gdGllX3RvOyBfd2lkdGg9MDsgX2ZpbGw9JyAnOwoKCQlfZmxhZ3M9aW9z
Ojpza2lwd3N8aW9zOjpkZWM7CgoKCgkJX3ByZWNpc2lvbj02OyBfYXJyYXlzID0gMDsgfQoKaW5s
aW5lIGlvczo6aW9zKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZV90bykgeyBpbml0KHNiLCB0
aWVfdG8pOyB9CgppbmxpbmUgaW9zOjp+aW9zKCkgewoKCgogICAgIAogICAgIAogICAgb3BlcmF0
b3IgZGVsZXRlW10gKF9hcnJheXMpOwp9Cn0gIAoKIyAzMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9pb3N0cmVhbS5o
IiAyIDMKCgpleHRlcm4gIkMrKyIgewpjbGFzcyBpc3RyZWFtOyBjbGFzcyBvc3RyZWFtOwp0eXBl
ZGVmIGlvcyYgKCpfX21hbmlwKShpb3MmKTsKdHlwZWRlZiBpc3RyZWFtJiAoKl9faW1hbmlwKShp
c3RyZWFtJik7CnR5cGVkZWYgb3N0cmVhbSYgKCpfX29tYW5pcCkob3N0cmVhbSYpOwoKZXh0ZXJu
IGlzdHJlYW0mIHdzKGlzdHJlYW0mIGlucyk7CmV4dGVybiBvc3RyZWFtJiBmbHVzaChvc3RyZWFt
JiBvdXRzKTsKZXh0ZXJuIG9zdHJlYW0mIGVuZGwob3N0cmVhbSYgb3V0cyk7CmV4dGVybiBvc3Ry
ZWFtJiBlbmRzKG9zdHJlYW0mIG91dHMpOwoKY2xhc3Mgb3N0cmVhbSA6IHZpcnR1YWwgcHVibGlj
IGlvcwp7CiAgICAgCiAgICB2b2lkIGRvX29zZngoKTsKICBwdWJsaWM6CiAgICBvc3RyZWFtKCkg
eyB9CiAgICBvc3RyZWFtKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZWQ9IF9fbnVsbCApOwog
ICAgaW50IG9wZngoKSB7CglpZiAoIWdvb2QoKSkgcmV0dXJuIDA7CgllbHNlIHsgaWYgKF90aWUp
IF90aWUtPmZsdXNoKCk7ICA7IHJldHVybiAxO30gfQogICAgdm9pZCBvc2Z4KCkgeyAgOwoJCSAg
aWYgKGZsYWdzKCkgJiAoaW9zOjp1bml0YnVmfGlvczo6c3RkaW8pKQoJCSAgICAgIGRvX29zZngo
KTsgfQogICAgb3N0cmVhbSYgZmx1c2goKTsKICAgIG9zdHJlYW0mIHB1dChjaGFyIGMpIHsgX3N0
cmJ1Zi0+c3B1dGMoYyk7IHJldHVybiAqdGhpczsgfQoKCgoKCiAgICBvc3RyZWFtJiB3cml0ZShj
b25zdCBjaGFyICpzLCBzdHJlYW1zaXplIG4pOwogICAgb3N0cmVhbSYgd3JpdGUoY29uc3QgdW5z
aWduZWQgY2hhciAqcywgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgoY29uc3Qg
Y2hhciopcywgbik7fQogICAgb3N0cmVhbSYgd3JpdGUoY29uc3Qgc2lnbmVkIGNoYXIgKnMsIHN0
cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gd3JpdGUoKGNvbnN0IGNoYXIqKXMsIG4pO30KICAg
IG9zdHJlYW0mIHdyaXRlKGNvbnN0IHZvaWQgKnMsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1
cm4gd3JpdGUoKGNvbnN0IGNoYXIqKXMsIG4pO30KICAgIG9zdHJlYW0mIHNlZWtwKHN0cmVhbXBv
cyk7CiAgICBvc3RyZWFtJiBzZWVrcChzdHJlYW1vZmYsIF9zZWVrX2Rpcik7CiAgICBzdHJlYW1w
b3MgdGVsbHAoKTsKICAgIG9zdHJlYW0mIGZvcm0oY29uc3QgY2hhciAqZm9ybWF0IC4uLik7CiAg
ICBvc3RyZWFtJiB2Zm9ybShjb25zdCBjaGFyICpmb3JtYXQsIF9fZ251Y192YV9saXN0ICBhcmdz
KTsKCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNoYXIgYyk7CiAgICBvc3RyZWFtJiBvcGVyYXRv
cjw8KHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gKCp0aGlzKSA8PCAoY2hhciljOyB9CiAgICBv
c3RyZWFtJiBvcGVyYXRvcjw8KHNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuICgqdGhpcykgPDwgKGNo
YXIpYzsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBjaGFyICpzKTsKICAgIG9zdHJl
YW0mIG9wZXJhdG9yPDwoY29uc3QgdW5zaWduZWQgY2hhciAqcykKCXsgcmV0dXJuICgqdGhpcykg
PDwgKGNvbnN0IGNoYXIqKXM7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgc2lnbmVk
IGNoYXIgKnMpCgl7IHJldHVybiAoKnRoaXMpIDw8IChjb25zdCBjaGFyKilzOyB9CiAgICBvc3Ry
ZWFtJiBvcGVyYXRvcjw8KGNvbnN0IHZvaWQgKnApOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChp
bnQgbik7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGludCBuKTsKICAgIG9zdHJl
YW0mIG9wZXJhdG9yPDwobG9uZyBuKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQg
bG9uZyBuKTsKCiAgICBfX2V4dGVuc2lvbl9fIG9zdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBsb25n
IG4pOwogICAgX19leHRlbnNpb25fXyBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcg
bG9uZyBuKTsKCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHNob3J0IG4pIHtyZXR1cm4gb3BlcmF0
b3I8PCgoaW50KW4pO30KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgc2hvcnQgbikg
e3JldHVybiBvcGVyYXRvcjw8KCh1bnNpZ25lZCBpbnQpbik7fQoKICAgIG9zdHJlYW0mIG9wZXJh
dG9yPDwoYm9vbCBiKSB7IHJldHVybiBvcGVyYXRvcjw8KChpbnQpYik7IH0KCiAgICBvc3RyZWFt
JiBvcGVyYXRvcjw8KGRvdWJsZSBuKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoZmxvYXQgbikg
eyByZXR1cm4gb3BlcmF0b3I8PCgoZG91YmxlKW4pOyB9CgogICAgb3N0cmVhbSYgb3BlcmF0b3I8
PChsb25nIGRvdWJsZSBuKTsKCgoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoX19vbWFuaXAgZnVu
YykgeyByZXR1cm4gKCpmdW5jKSgqdGhpcyk7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoX19t
YW5pcCBmdW5jKSB7KCpmdW5jKSgqdGhpcyk7IHJldHVybiAqdGhpczt9CiAgICBvc3RyZWFtJiBv
cGVyYXRvcjw8KHN0cmVhbWJ1ZiopOwoKCgp9OwoKY2xhc3MgaXN0cmVhbSA6IHZpcnR1YWwgcHVi
bGljIGlvcwp7CiAgICAgCnByb3RlY3RlZDoKICAgIHNpemVfdCAgIF9nY291bnQ7CgogICAgaW50
IF9za2lwX3dzKCk7CiAgcHVibGljOgogICAgaXN0cmVhbSgpOiBfZ2NvdW50ICgwKSB7IH0KICAg
IGlzdHJlYW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSp0aWVkPSBfX251bGwgKTsKICAgIGlzdHJl
YW0mIGdldChjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGlzdHJl
YW0mIGdldCh1bnNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJ
eyByZXR1cm4gZ2V0KChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9CiAgICBpc3RyZWFtJiBnZXQo
Y2hhciYgYyk7CiAgICBpc3RyZWFtJiBnZXQodW5zaWduZWQgY2hhciYgYykgeyByZXR1cm4gZ2V0
KChjaGFyJiljKTsgfQogICAgaXN0cmVhbSYgZ2V0bGluZShjaGFyKiBwdHIsIGludCBsZW4sIGNo
YXIgZGVsaW0gPSAnXG4nKTsKICAgIGlzdHJlYW0mIGdldGxpbmUodW5zaWduZWQgY2hhciogcHRy
LCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJykKCXsgcmV0dXJuIGdldGxpbmUoKGNoYXIqKXB0
ciwgbGVuLCBkZWxpbSk7IH0KICAgIGlzdHJlYW0mIGdldChzaWduZWQgY2hhciYgYykgIHsgcmV0
dXJuIGdldCgoY2hhciYpYyk7IH0KICAgIGlzdHJlYW0mIGdldChzaWduZWQgY2hhciogcHRyLCBp
bnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJykKCXsgcmV0dXJuIGdldCgoY2hhciopcHRyLCBsZW4s
IGRlbGltKTsgfQogICAgaXN0cmVhbSYgZ2V0bGluZShzaWduZWQgY2hhciogcHRyLCBpbnQgbGVu
LCBjaGFyIGRlbGltID0gJ1xuJykKCXsgcmV0dXJuIGdldGxpbmUoKGNoYXIqKXB0ciwgbGVuLCBk
ZWxpbSk7IH0KICAgIGlzdHJlYW0mIHJlYWQoY2hhciAqcHRyLCBzdHJlYW1zaXplIG4pOwogICAg
aXN0cmVhbSYgcmVhZCh1bnNpZ25lZCBjaGFyICpwdHIsIHN0cmVhbXNpemUgbikKICAgICAgeyBy
ZXR1cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0cmVhbSYgcmVhZChzaWduZWQgY2hh
ciAqcHRyLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHJlYWQoKGNoYXIqKXB0ciwgbik7
IH0KICAgIGlzdHJlYW0mIHJlYWQodm9pZCAqcHRyLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0
dXJuIHJlYWQoKGNoYXIqKXB0ciwgbik7IH0KICAgIGlzdHJlYW0mIGdldChzdHJlYW1idWYmIHNi
LCBjaGFyIGRlbGltID0gJ1xuJyk7CiAgICBpc3RyZWFtJiBnZXRzKGNoYXIgKipzLCBjaGFyIGRl
bGltID0gJ1xuJyk7CiAgICBpbnQgaXBmeChpbnQgbmVlZCA9IDApIHsKCWlmICghZ29vZCgpKSB7
IHNldChpb3M6OmZhaWxiaXQpOyByZXR1cm4gMDsgfQoJZWxzZSB7CgkgICA7CgkgIGlmIChfdGll
ICYmIChuZWVkID09IDAgfHwgcmRidWYoKS0+aW5fYXZhaWwoKSA8IG5lZWQpKSBfdGllLT5mbHVz
aCgpOwoJICBpZiAoIW5lZWQgJiYgKGZsYWdzKCkgJiBpb3M6OnNraXB3cykpIHJldHVybiBfc2tp
cF93cygpOwoJICBlbHNlIHJldHVybiAxOwoJfQogICAgfQogICAgaW50IGlwZngwKCkgeyAgCglp
ZiAoIWdvb2QoKSkgeyBzZXQoaW9zOjpmYWlsYml0KTsgcmV0dXJuIDA7IH0KCWVsc2UgewoJICAg
OwoJICBpZiAoX3RpZSkgX3RpZS0+Zmx1c2goKTsKCSAgaWYgKGZsYWdzKCkgJiBpb3M6OnNraXB3
cykgcmV0dXJuIF9za2lwX3dzKCk7CgkgIGVsc2UgcmV0dXJuIDE7Cgl9CiAgICB9CiAgICBpbnQg
aXBmeDEoKSB7ICAKCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZhaWxiaXQpOyByZXR1cm4gMDsg
fQoJZWxzZSB7CgkgICA7CgkgIGlmIChfdGllICYmIHJkYnVmKCktPmluX2F2YWlsKCkgPT0gMCkg
X3RpZS0+Zmx1c2goKTsKCSAgcmV0dXJuIDE7Cgl9CiAgICB9CiAgICB2b2lkIGlzZngoKSB7ICA7
IH0KICAgIGludCBnZXQoKSB7IGlmICghaXBmeDEoKSkgcmV0dXJuICgtMSkgOwoJCWVsc2UgeyBp
bnQgY2ggPSBfc3RyYnVmLT5zYnVtcGMoKTsKCQkgICAgICAgaWYgKGNoID09ICgtMSkgKSBzZXQo
aW9zOjplb2ZiaXQpOwoJCSAgICAgICBpc2Z4KCk7CgkJICAgICAgIHJldHVybiBjaDsKCQkgICAg
IH0gfQogICAgaW50IHBlZWsoKTsKICAgIHNpemVfdCAgIGdjb3VudCgpIHsgcmV0dXJuIF9nY291
bnQ7IH0KICAgIGlzdHJlYW0mIGlnbm9yZShpbnQgbj0xLCBpbnQgZGVsaW0gPSAoLTEpICk7CiAg
ICBpbnQgc3luYyAoKTsKICAgIGlzdHJlYW0mIHNlZWtnKHN0cmVhbXBvcyk7CiAgICBpc3RyZWFt
JiBzZWVrZyhzdHJlYW1vZmYsIF9zZWVrX2Rpcik7CiAgICBzdHJlYW1wb3MgdGVsbGcoKTsKICAg
IGlzdHJlYW0mIHB1dGJhY2soY2hhciBjaCkgewoJaWYgKGdvb2QoKSAmJiBfc3RyYnVmLT5zcHV0
YmFja2MoY2gpID09ICgtMSkgKSBjbGVhcihpb3M6OmJhZGJpdCk7CglyZXR1cm4gKnRoaXM7fQog
ICAgaXN0cmVhbSYgdW5nZXQoKSB7CglpZiAoZ29vZCgpICYmIF9zdHJidWYtPnN1bmdldGMoKSA9
PSAoLTEpICkgY2xlYXIoaW9zOjpiYWRiaXQpOwoJcmV0dXJuICp0aGlzO30KICAgIGlzdHJlYW0m
IHNjYW4oY29uc3QgY2hhciAqZm9ybWF0IC4uLik7CiAgICBpc3RyZWFtJiB2c2Nhbihjb25zdCBj
aGFyICpmb3JtYXQsIF9fZ251Y192YV9saXN0ICBhcmdzKTsKCgoKCgoKICAgIGlzdHJlYW0mIG9w
ZXJhdG9yPj4oY2hhciopOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBjaGFyKiBw
KSB7IHJldHVybiBvcGVyYXRvcj4+KChjaGFyKilwKTsgfQogICAgaXN0cmVhbSYgb3BlcmF0b3I+
PihzaWduZWQgY2hhcipwKSB7IHJldHVybiBvcGVyYXRvcj4+KChjaGFyKilwKTsgfQogICAgaXN0
cmVhbSYgb3BlcmF0b3I+PihjaGFyJiBjKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWdu
ZWQgY2hhciYgYykge3JldHVybiBvcGVyYXRvcj4+KChjaGFyJiljKTt9CiAgICBpc3RyZWFtJiBv
cGVyYXRvcj4+KHNpZ25lZCBjaGFyJiBjKSB7cmV0dXJuIG9wZXJhdG9yPj4oKGNoYXImKWMpO30K
ICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oaW50Jik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGxv
bmcmKTsKCiAgICBfX2V4dGVuc2lvbl9fIGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyBsb25nJik7
CiAgICBfX2V4dGVuc2lvbl9fIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgbG9uZyBsb25n
Jik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzaG9ydCYpOwogICAgaXN0cmVhbSYgb3BlcmF0
b3I+Pih1bnNpZ25lZCBpbnQmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgbG9u
ZyYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBzaG9ydCYpOwoKICAgIGlzdHJl
YW0mIG9wZXJhdG9yPj4oYm9vbCYpOwoKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oZmxvYXQmKTsK
ICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oZG91YmxlJik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+
KGxvbmcgZG91YmxlJik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KCBfX21hbmlwIGZ1bmMpIHso
KmZ1bmMpKCp0aGlzKTsgcmV0dXJuICp0aGlzO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oX19p
bWFuaXAgZnVuYykgeyByZXR1cm4gKCpmdW5jKSgqdGhpcyk7IH0KICAgIGlzdHJlYW0mIG9wZXJh
dG9yPj4oc3RyZWFtYnVmKik7Cn07CgpjbGFzcyBpb3N0cmVhbSA6IHB1YmxpYyBpc3RyZWFtLCBw
dWJsaWMgb3N0cmVhbQp7CiAgcHVibGljOgogICAgaW9zdHJlYW0oKSB7IH0KICAgIGlvc3RyZWFt
KHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qdGllZD0gX19udWxsICk7Cn07CgpjbGFzcyBfSU9faXN0
cmVhbV93aXRoYXNzaWduIDogcHVibGljIGlzdHJlYW0gewpwdWJsaWM6CiAgX0lPX2lzdHJlYW1f
d2l0aGFzc2lnbiYgb3BlcmF0b3I9KGlzdHJlYW0mKTsKICBfSU9faXN0cmVhbV93aXRoYXNzaWdu
JiBvcGVyYXRvcj0oX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiYgcmhzKQogICAgeyByZXR1cm4gb3Bl
cmF0b3I9IChzdGF0aWNfY2FzdDxpc3RyZWFtJj4gKHJocykpOyB9Cn07CgpjbGFzcyBfSU9fb3N0
cmVhbV93aXRoYXNzaWduIDogcHVibGljIG9zdHJlYW0gewpwdWJsaWM6CiAgX0lPX29zdHJlYW1f
d2l0aGFzc2lnbiYgb3BlcmF0b3I9KG9zdHJlYW0mKTsKICBfSU9fb3N0cmVhbV93aXRoYXNzaWdu
JiBvcGVyYXRvcj0oX0lPX29zdHJlYW1fd2l0aGFzc2lnbiYgcmhzKQogICAgeyByZXR1cm4gb3Bl
cmF0b3I9IChzdGF0aWNfY2FzdDxvc3RyZWFtJj4gKHJocykpOyB9Cn07CgpleHRlcm4gX0lPX2lz
dHJlYW1fd2l0aGFzc2lnbiBjaW47CiAKZXh0ZXJuIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24gY291
dCwgY2VycjsKCmV4dGVybiBfSU9fb3N0cmVhbV93aXRoYXNzaWduIGNsb2cKCgoKOwoKZXh0ZXJu
IGlzdHJlYW0mIGxvY2soaXN0cmVhbSYgaW5zKTsKZXh0ZXJuIGlzdHJlYW0mIHVubG9jayhpc3Ry
ZWFtJiBpbnMpOwpleHRlcm4gb3N0cmVhbSYgbG9jayhvc3RyZWFtJiBvdXRzKTsKZXh0ZXJuIG9z
dHJlYW0mIHVubG9jayhvc3RyZWFtJiBvdXRzKTsKCnN0cnVjdCBJb3N0cmVhbV9pbml0IHsgfSA7
ICAgCgppbmxpbmUgaW9zJiBkZWMoaW9zJiBpKQp7IGkuc2V0Zihpb3M6OmRlYywgaW9zOjpkZWN8
aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsgfQppbmxpbmUgaW9zJiBoZXgoaW9zJiBpKQp7
IGkuc2V0Zihpb3M6OmhleCwgaW9zOjpkZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsg
fQppbmxpbmUgaW9zJiBvY3QoaW9zJiBpKQp7IGkuc2V0Zihpb3M6Om9jdCwgaW9zOjpkZWN8aW9z
OjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsgfQp9ICAKCgojIDUzICIvdXNyL2xpYi9nY2MtbGli
L2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9h
bGdvYmFzZS5oIiAyIDMKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4
LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgpzdHJ1Y3QgaW5wdXRfaXRlcmF0b3Jf
dGFnIHt9OwpzdHJ1Y3Qgb3V0cHV0X2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IGZvcndhcmRfaXRl
cmF0b3JfdGFnIDogcHVibGljIGlucHV0X2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IGJpZGlyZWN0
aW9uYWxfaXRlcmF0b3JfdGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1
Y3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgOiBwdWJsaWMgYmlkaXJlY3Rpb25hbF9pdGVy
YXRvcl90YWcge307CgogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFu
Y2U+IHN0cnVjdCBpbnB1dF9pdGVyYXRvciB7CiAgdHlwZWRlZiBpbnB1dF9pdGVyYXRvcl90YWcg
aXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAgICAgICAgICAgICAgICAgdmFsdWVfdHlw
ZTsKICB0eXBlZGVmIF9EaXN0YW5jZSAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRl
ZiBfVHAqICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIF9UcCYgICAgICAgICAgICAg
ICByZWZlcmVuY2U7Cn07CgpzdHJ1Y3Qgb3V0cHV0X2l0ZXJhdG9yIHsKICB0eXBlZGVmIG91dHB1
dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB2b2lkICAgICAgICAg
ICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIGRpZmZlcmVu
Y2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVm
IHZvaWQgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwg
Y2xhc3MgX0Rpc3RhbmNlPiBzdHJ1Y3QgZm9yd2FyZF9pdGVyYXRvciB7CiAgdHlwZWRlZiBmb3J3
YXJkX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAg
ICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFuY2UgICAgICAgICAgICBkaWZm
ZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBfVHAqICAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5
cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwp9OwoKCnRlbXBsYXRlIDxjbGFz
cyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4gc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3Igewog
IHR5cGVkZWYgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAg
dHlwZWRlZiBfVHAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYg
X0Rpc3RhbmNlICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1Rw
KiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIF9UcCYgICAgICAgICAg
ICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9E
aXN0YW5jZT4gc3RydWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3IgewogIHR5cGVkZWYgcmFuZG9t
X2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3RhbmNlICAgICAg
ICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICAgICAgICAg
ICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIF9UcCYgICAgICAgICAgICAgICAgICAgICAgIHJl
ZmVyZW5jZTsKfTsKCiMgOTggIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45
NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgiIDMKCgoKCnRlbXBs
YXRlIDxjbGFzcyBfSXRlcmF0b3I+CnN0cnVjdCBpdGVyYXRvcl90cmFpdHMgewogIHR5cGVkZWYg
dHlwZW5hbWUgX0l0ZXJhdG9yOjppdGVyYXRvcl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsK
ICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6dmFsdWVfdHlwZSAgICAgICAgdmFsdWVfdHlw
ZTsKICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6ZGlmZmVyZW5jZV90eXBlICAgZGlmZmVy
ZW5jZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjpwb2ludGVyICAgICAgICAg
ICBwb2ludGVyOwogIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjpyZWZlcmVuY2UgICAgICAg
ICByZWZlcmVuY2U7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgaXRlcmF0b3JfdHJh
aXRzPF9UcCo+IHsKICB0eXBlZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9y
X2NhdGVnb3J5OwogIHR5cGVkZWYgX1RwICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5
cGU7CiAgdHlwZWRlZiBwdHJkaWZmX3QgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBl
OwogIHR5cGVkZWYgX1RwKiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRl
ZiBfVHAmICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwp9OwoKdGVtcGxhdGUgPGNs
YXNzIF9UcD4Kc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxjb25zdCBfVHAqPiB7CiAgdHlwZWRlZiBy
YW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9U
cCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90
ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIGNvbnN0IF9UcCog
ICAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgY29uc3QgX1RwJiAgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZTsKfTsKCiAKIAogCiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4K
aW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5
Cl9faXRlcmF0b3JfY2F0ZWdvcnkoY29uc3QgX0l0ZXImKQp7CiAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeSBfQ2F0ZWdvcnk7CiAgcmV0
dXJuIF9DYXRlZ29yeSgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUqCl9fZGlzdGFuY2VfdHlw
ZShjb25zdCBfSXRlciYpCnsKICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9JdGVyPjo6ZGlmZmVyZW5jZV90eXBlKj4oMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
SXRlcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OnZhbHVlX3R5cGUq
Cl9fdmFsdWVfdHlwZShjb25zdCBfSXRlciYpCnsKICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6dmFsdWVfdHlwZSo+KDApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVy
YXRvcl9jYXRlZ29yeQppdGVyYXRvcl9jYXRlZ29yeShjb25zdCBfSXRlciYgX19pKSB7IHJldHVy
biBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9faSk7IH0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+Cmlu
bGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUqCmRp
c3RhbmNlX3R5cGUoY29uc3QgX0l0ZXImIF9faSkgeyByZXR1cm4gX19kaXN0YW5jZV90eXBlKF9f
aSk7IH0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfSXRlcj46OnZhbHVlX3R5cGUqCnZhbHVlX3R5cGUoY29uc3QgX0l0ZXImIF9faSkgeyBy
ZXR1cm4gX192YWx1ZV90eXBlKF9faSk7IH0KCgoKCgojIDI1OSAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfaXRl
cmF0b3IuaCIgMwoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwgY2xhc3MgX0Rpc3Rh
bmNlPgppbmxpbmUgdm9pZCBfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1
dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UmIF9fbiwg
aW5wdXRfaXRlcmF0b3JfdGFnKQp7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7ICsrX19m
aXJzdDsgKytfX247IH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
Y2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBfX2Rpc3RhbmNlKF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19sYXN0LCAKICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UmIF9fbiwgcmFuZG9t
X2FjY2Vzc19pdGVyYXRvcl90YWcpCnsKICBfX24gKz0gX19sYXN0IC0gX19maXJzdDsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lk
IGRpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICBf
SW5wdXRJdGVyYXRvciBfX2xhc3QsIF9EaXN0YW5jZSYgX19uKQp7CiAgX19kaXN0YW5jZShfX2Zp
cnN0LCBfX2xhc3QsIF9fbiwgaXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOwp9CgoKCnRlbXBs
YXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJh
dG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgaW5wdXRfaXRlcmF0b3JfdGFnKQp7
CiAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90
eXBlIF9fbiA9IDA7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICArK19fZmlyc3Q7
ICsrX19uOwogIH0KICByZXR1cm4gX19uOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJ
dGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgIHJhbmRv
bV9hY2Nlc3NfaXRlcmF0b3JfdGFnKSB7CiAgcmV0dXJuIF9fbGFzdCAtIF9fZmlyc3Q7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpkaXN0YW5jZShfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICB0eXBlZGVmIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IAogICAg
X0NhdGVnb3J5OwogIHJldHVybiBfX2Rpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX0NhdGVnb3J5
KCkpOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRGlzdGFuY2U+Cmlu
bGluZSB2b2lkIF9fYWR2YW5jZShfSW5wdXRJdGVyJiBfX2ksIF9EaXN0YW5jZSBfX24sIGlucHV0
X2l0ZXJhdG9yX3RhZykgewogIHdoaWxlIChfX24tLSkgKytfX2k7Cn0KCgoKCgp0ZW1wbGF0ZSA8
Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9p
ZCBfX2FkdmFuY2UoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uLCAK
ICAgICAgICAgICAgICAgICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKSB7CiAgaWYg
KF9fbiA+PSAwKQogICAgd2hpbGUgKF9fbi0tKSArK19faTsKICBlbHNlCiAgICB3aGlsZSAoX19u
KyspIC0tX19pOwp9CgoKCgoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
Y2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBfX2FkdmFuY2UoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yJiBfX2ksIF9EaXN0YW5jZSBfX24sIAogICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2Fj
Y2Vzc19pdGVyYXRvcl90YWcpIHsKICBfX2kgKz0gX19uOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
cHV0SXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgYWR2YW5jZShfSW5wdXRJ
dGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uKSB7CiAgX19hZHZhbmNlKF9faSwgX19uLCBpdGVy
YXRvcl9jYXRlZ29yeShfX2kpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CmNsYXNz
IGJhY2tfaW5zZXJ0X2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIF9Db250YWluZXIqIGNvbnRhaW5l
cjsKcHVibGljOgogIHR5cGVkZWYgX0NvbnRhaW5lciAgICAgICAgICBjb250YWluZXJfdHlwZTsK
ICB0eXBlZGVmIG91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRl
ZiB2b2lkICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAg
ICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcG9p
bnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwoKICBleHBsaWNp
dCBiYWNrX2luc2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBfX3gpIDogY29udGFpbmVyKCZfX3gp
IHt9CiAgYmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mCiAgb3BlcmF0b3I9KGNvbnN0
IHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGUmIF9fdmFsdWUpIHsgCiAgICBjb250YWlu
ZXItPnB1c2hfYmFjayhfX3ZhbHVlKTsKICAgIHJldHVybiAqdGhpczsKICB9CiAgYmFja19pbnNl
cnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CiAg
YmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAq
dGhpczsgfQogIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRvcisrKGlu
dCkgeyByZXR1cm4gKnRoaXM7IH0KfTsKCiMgMzc4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVk
aGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5o
IiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CmlubGluZSBiYWNrX2luc2VydF9pdGVy
YXRvcjxfQ29udGFpbmVyPiBiYWNrX2luc2VydGVyKF9Db250YWluZXImIF9feCkgewogIHJldHVy
biBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPihfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX0NvbnRhaW5lcj4KY2xhc3MgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgog
IF9Db250YWluZXIqIGNvbnRhaW5lcjsKcHVibGljOgogIHR5cGVkZWYgX0NvbnRhaW5lciAgICAg
ICAgICBjb250YWluZXJfdHlwZTsKICB0eXBlZGVmIG91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0
b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAg
dHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZv
aWQgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAg
cmVmZXJlbmNlOwoKICBleHBsaWNpdCBmcm9udF9pbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYg
X194KSA6IGNvbnRhaW5lcigmX194KSB7fQogIGZyb250X2luc2VydF9pdGVyYXRvcjxfQ29udGFp
bmVyPiYKICBvcGVyYXRvcj0oY29uc3QgdHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZSYg
X192YWx1ZSkgeyAKICAgIGNvbnRhaW5lci0+cHVzaF9mcm9udChfX3ZhbHVlKTsKICAgIHJldHVy
biAqdGhpczsKICB9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRv
ciooKSB7IHJldHVybiAqdGhpczsgfQogIGZyb250X2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVy
PiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9y
PF9Db250YWluZXI+JiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KfTsKCiMgNDE3
ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9p
bmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWlu
ZXI+CmlubGluZSBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4gZnJvbnRfaW5zZXJ0
ZXIoX0NvbnRhaW5lciYgX194KSB7CiAgcmV0dXJuIGZyb250X2luc2VydF9pdGVyYXRvcjxfQ29u
dGFpbmVyPihfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KY2xhc3MgaW5zZXJ0
X2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIF9Db250YWluZXIqIGNvbnRhaW5lcjsKICB0eXBlbmFt
ZSBfQ29udGFpbmVyOjppdGVyYXRvciBpdGVyOwpwdWJsaWM6CiAgdHlwZWRlZiBfQ29udGFpbmVy
ICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBp
dGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVfdHlw
ZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVk
ZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAg
ICAgICByZWZlcmVuY2U7CgogIGluc2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBfX3gsIHR5cGVu
YW1lIF9Db250YWluZXI6Oml0ZXJhdG9yIF9faSkgCiAgICA6IGNvbnRhaW5lcigmX194KSwgaXRl
cihfX2kpIHt9CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JgogIG9wZXJhdG9yPShjb25z
dCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlJiBfX3ZhbHVlKSB7IAogICAgaXRlciA9
IGNvbnRhaW5lci0+aW5zZXJ0KGl0ZXIsIF9fdmFsdWUpOwogICAgKytpdGVyOwogICAgcmV0dXJu
ICp0aGlzOwogIH0KICBpbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKigpIHsg
cmV0dXJuICp0aGlzOyB9CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRvcisr
KCkgeyByZXR1cm4gKnRoaXM7IH0KICBpbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJh
dG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQp9OwoKIyA0NTkgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1yZWRoYXQtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2l0
ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lciwgY2xhc3MgX0l0ZXJhdG9y
PgppbmxpbmUgCmluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiBpbnNlcnRlcihfQ29udGFpbmVy
JiBfX3gsIF9JdGVyYXRvciBfX2kpCnsKICB0eXBlZGVmIHR5cGVuYW1lIF9Db250YWluZXI6Oml0
ZXJhdG9yIF9faXRlcjsKICByZXR1cm4gaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+KF9feCwg
X19pdGVyKF9faSkpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3Is
IGNsYXNzIF9UcCwgY2xhc3MgX1JlZmVyZW5jZSA9IF9UcCYsIAogICAgICAgICAgY2xhc3MgX0Rp
c3RhbmNlID0gcHRyZGlmZl90PiAKCgoKCmNsYXNzIHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVy
YXRvciB7CiAgdHlwZWRlZiByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3I8X0JpZGlyZWN0
aW9uYWxJdGVyYXRvciwgX1RwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfUmVmZXJlbmNlLCBfRGlzdGFuY2U+ICBfU2VsZjsKcHJvdGVjdGVkOgogIF9CaWRpcmVj
dGlvbmFsSXRlcmF0b3IgY3VycmVudDsKcHVibGljOgogIHR5cGVkZWYgYmlkaXJlY3Rpb25hbF9p
dGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3RhbmNlICAgICAgICAgICAgICAg
ICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICAgICAgICAgICAgICAgICAg
cG9pbnRlcjsKICB0eXBlZGVmIF9SZWZlcmVuY2UgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsK
CiAgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yKCkge30KICBleHBsaWNpdCByZXZlcnNl
X2JpZGlyZWN0aW9uYWxfaXRlcmF0b3IoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX3gpCiAgICA6
IGN1cnJlbnQoX194KSB7fQogIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgYmFzZSgpIGNvbnN0IHsg
cmV0dXJuIGN1cnJlbnQ7IH0KICBfUmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsKICAgIF9C
aWRpcmVjdGlvbmFsSXRlcmF0b3IgX190bXAgPSBjdXJyZW50OwogICAgcmV0dXJuICotLV9fdG1w
OwogIH0KCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVyYXRvcioo
KSk7IH0KCiAgX1NlbGYmIG9wZXJhdG9yKysoKSB7CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1cm4g
KnRoaXM7CiAgfQogIF9TZWxmIG9wZXJhdG9yKysoaW50KSB7CiAgICBfU2VsZiBfX3RtcCA9ICp0
aGlzOwogICAgLS1jdXJyZW50OwogICAgcmV0dXJuIF9fdG1wOwogIH0KICBfU2VsZiYgb3BlcmF0
b3ItLSgpIHsKICAgICsrY3VycmVudDsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3Bl
cmF0b3ItLShpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAgICArK2N1cnJlbnQ7CiAg
ICByZXR1cm4gX190bXA7CiAgfQp9OwoKIyA1NTAgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRo
YXQtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgi
IDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfUmVmLAogICAg
ICAgICAgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KAogICAgY29uc3Qg
cmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yPF9CaUl0ZXIsIF9UcCwgX1JlZiwgX0Rpc3Rh
bmNlPiYgX194LCAKICAgIGNvbnN0IHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRvcjxfQmlJ
dGVyLCBfVHAsIF9SZWYsIF9EaXN0YW5jZT4mIF9feSkKewogIHJldHVybiBfX3guYmFzZSgpID09
IF9feS5iYXNlKCk7Cn0KCgoKIAogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgpj
bGFzcyByZXZlcnNlX2l0ZXJhdG9yIAp7CnByb3RlY3RlZDoKICBfSXRlcmF0b3IgY3VycmVudDsK
cHVibGljOgogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46Oml0
ZXJhdG9yX2NhdGVnb3J5CiAgICAgICAgICBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiAgICAgICAgICB2
YWx1ZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46
OmRpZmZlcmVuY2VfdHlwZQogICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnBvaW50ZXIKICAgICAgICAgIHBvaW50
ZXI7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cmVmZXJl
bmNlCiAgICAgICAgICByZWZlcmVuY2U7CgogIHR5cGVkZWYgX0l0ZXJhdG9yIGl0ZXJhdG9yX3R5
cGU7CiAgdHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4gX1NlbGY7CgpwdWJsaWM6
CiAgcmV2ZXJzZV9pdGVyYXRvcigpIHt9CiAgZXhwbGljaXQgcmV2ZXJzZV9pdGVyYXRvcihpdGVy
YXRvcl90eXBlIF9feCkgOiBjdXJyZW50KF9feCkge30KCiAgcmV2ZXJzZV9pdGVyYXRvcihjb25z
dCBfU2VsZiYgX194KSA6IGN1cnJlbnQoX194LmN1cnJlbnQpIHt9CgogIHRlbXBsYXRlIDxjbGFz
cyBfSXRlcj4KICByZXZlcnNlX2l0ZXJhdG9yKGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXI+
JiBfX3gpCiAgICA6IGN1cnJlbnQoX194LmJhc2UoKSkge30KCiAgICAKICBpdGVyYXRvcl90eXBl
IGJhc2UoKSBjb25zdCB7IHJldHVybiBjdXJyZW50OyB9CiAgcmVmZXJlbmNlIG9wZXJhdG9yKigp
IGNvbnN0IHsKICAgIF9JdGVyYXRvciBfX3RtcCA9IGN1cnJlbnQ7CiAgICByZXR1cm4gKi0tX190
bXA7CiAgfQoKICBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9y
KigpKTsgfQoKCiAgX1NlbGYmIG9wZXJhdG9yKysoKSB7CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1
cm4gKnRoaXM7CiAgfQogIF9TZWxmIG9wZXJhdG9yKysoaW50KSB7CiAgICBfU2VsZiBfX3RtcCA9
ICp0aGlzOwogICAgLS1jdXJyZW50OwogICAgcmV0dXJuIF9fdG1wOwogIH0KICBfU2VsZiYgb3Bl
cmF0b3ItLSgpIHsKICAgICsrY3VycmVudDsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYg
b3BlcmF0b3ItLShpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAgICArK2N1cnJlbnQ7
CiAgICByZXR1cm4gX190bXA7CiAgfQoKICBfU2VsZiBvcGVyYXRvcisoZGlmZmVyZW5jZV90eXBl
IF9fbikgY29uc3QgewogICAgcmV0dXJuIF9TZWxmKGN1cnJlbnQgLSBfX24pOwogIH0KICBfU2Vs
ZiYgb3BlcmF0b3IrPShkaWZmZXJlbmNlX3R5cGUgX19uKSB7CiAgICBjdXJyZW50IC09IF9fbjsK
ICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlwZSBf
X24pIGNvbnN0IHsKICAgIHJldHVybiBfU2VsZihjdXJyZW50ICsgX19uKTsKICB9CiAgX1NlbGYm
IG9wZXJhdG9yLT0oZGlmZmVyZW5jZV90eXBlIF9fbikgewogICAgY3VycmVudCArPSBfX247CiAg
ICByZXR1cm4gKnRoaXM7CiAgfQogIHJlZmVyZW5jZSBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlw
ZSBfX24pIGNvbnN0IHsgcmV0dXJuICooKnRoaXMgKyBfX24pOyB9ICAKfTsgCiAKdGVtcGxhdGUg
PGNsYXNzIF9JdGVyYXRvcj4KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCByZXZlcnNlX2l0
ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwgCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2
ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpIHsKICByZXR1cm4gX194LmJhc2UoKSA9PSBf
X3kuYmFzZSgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgppbmxpbmUgYm9vbCBvcGVy
YXRvcjwoY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsIAogICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpIHsKICBy
ZXR1cm4gX195LmJhc2UoKSA8IF9feC5iYXNlKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0
b3I+CmlubGluZSB0eXBlbmFtZSByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj46OmRpZmZlcmVu
Y2VfdHlwZQpvcGVyYXRvci0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gs
IAogICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpIHsKICBy
ZXR1cm4gX195LmJhc2UoKSAtIF9feC5iYXNlKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0
b3I+CmlubGluZSByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4gCm9wZXJhdG9yKyh0eXBlbmFt
ZSByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBfX24sCiAgICAg
ICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCkgewogIHJldHVybiBy
ZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4oX194LmJhc2UoKSAtIF9fbik7Cn0KCiMgODA1ICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNs
dWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAzCgoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBj
bGFzcyBfRGlzdCA9IHB0cmRpZmZfdD4gCmNsYXNzIGlzdHJlYW1faXRlcmF0b3IgewogIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0gPD4gIChjb25zdCBpc3RyZWFtX2l0ZXJhdG9yJiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc3RyZWFtX2l0ZXJh
dG9yJik7CnByb3RlY3RlZDoKICBpc3RyZWFtKiBfTV9zdHJlYW07CiAgX1RwIF9NX3ZhbHVlOwog
IGJvb2wgX01fZW5kX21hcmtlcjsKICB2b2lkIF9NX3JlYWQoKSB7CiAgICBfTV9lbmRfbWFya2Vy
ID0gKCpfTV9zdHJlYW0pID8gdHJ1ZSA6IGZhbHNlOwogICAgaWYgKF9NX2VuZF9tYXJrZXIpICpf
TV9zdHJlYW0gPj4gX01fdmFsdWU7CiAgICBfTV9lbmRfbWFya2VyID0gKCpfTV9zdHJlYW0pID8g
dHJ1ZSA6IGZhbHNlOwogIH0KcHVibGljOgogIHR5cGVkZWYgaW5wdXRfaXRlcmF0b3JfdGFnICBp
dGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgdmFsdWVfdHlw
ZTsKICB0eXBlZGVmIF9EaXN0ICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVk
ZWYgY29uc3QgX1RwKiAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgY29uc3QgX1RwJiAgICAg
ICAgICByZWZlcmVuY2U7CgogIGlzdHJlYW1faXRlcmF0b3IoKSA6IF9NX3N0cmVhbSgmY2luKSwg
X01fZW5kX21hcmtlcihmYWxzZSkge30KICBpc3RyZWFtX2l0ZXJhdG9yKGlzdHJlYW0mIF9fcykg
OiBfTV9zdHJlYW0oJl9fcykgeyBfTV9yZWFkKCk7IH0KICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkg
Y29uc3QgeyByZXR1cm4gX01fdmFsdWU7IH0KCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3Qg
eyByZXR1cm4gJihvcGVyYXRvciooKSk7IH0KCiAgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0
PiYgb3BlcmF0b3IrKygpIHsgCiAgICBfTV9yZWFkKCk7IAogICAgcmV0dXJuICp0aGlzOwogIH0K
ICBpc3RyZWFtX2l0ZXJhdG9yPF9UcCwgX0Rpc3Q+IG9wZXJhdG9yKysoaW50KSAgewogICAgaXN0
cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0PiBfX3RtcCA9ICp0aGlzOwogICAgX01fcmVhZCgpOwog
ICAgcmV0dXJuIF9fdG1wOwogIH0KfTsKCiMgODY0ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVk
aGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5o
IiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfRGlzdGFuY2U+JiBfX3gsCiAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0YW5j
ZT4mIF9feSkgewogIHJldHVybiAoX194Ll9NX3N0cmVhbSA9PSBfX3kuX01fc3RyZWFtICYmCiAg
ICAgICAgICBfX3guX01fZW5kX21hcmtlciA9PSBfX3kuX01fZW5kX21hcmtlcikgfHwKICAgICAg
ICAgX194Ll9NX2VuZF9tYXJrZXIgPT0gZmFsc2UgJiYgX195Ll9NX2VuZF9tYXJrZXIgPT0gZmFs
c2U7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmNsYXNzIG9zdHJlYW1faXRlcmF0b3Igewpwcm90
ZWN0ZWQ6CiAgb3N0cmVhbSogX01fc3RyZWFtOwogIGNvbnN0IGNoYXIqIF9NX3N0cmluZzsKcHVi
bGljOgogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0
eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAg
ICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAg
ICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICByZWZlcmVuY2U7CgogIG9z
dHJlYW1faXRlcmF0b3Iob3N0cmVhbSYgX19zKSA6IF9NX3N0cmVhbSgmX19zKSwgX01fc3RyaW5n
KDApIHt9CiAgb3N0cmVhbV9pdGVyYXRvcihvc3RyZWFtJiBfX3MsIGNvbnN0IGNoYXIqIF9fYykg
CiAgICA6IF9NX3N0cmVhbSgmX19zKSwgX01fc3RyaW5nKF9fYykgIHt9CiAgb3N0cmVhbV9pdGVy
YXRvcjxfVHA+JiBvcGVyYXRvcj0oY29uc3QgX1RwJiBfX3ZhbHVlKSB7IAogICAgKl9NX3N0cmVh
bSA8PCBfX3ZhbHVlOwogICAgaWYgKF9NX3N0cmluZykgKl9NX3N0cmVhbSA8PCBfTV9zdHJpbmc7
CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIG9zdHJlYW1faXRlcmF0b3I8X1RwPiYgb3BlcmF0b3Iq
KCkgeyByZXR1cm4gKnRoaXM7IH0KICBvc3RyZWFtX2l0ZXJhdG9yPF9UcD4mIG9wZXJhdG9yKyso
KSB7IHJldHVybiAqdGhpczsgfSAKICBvc3RyZWFtX2l0ZXJhdG9yPF9UcD4mIG9wZXJhdG9yKyso
aW50KSB7IHJldHVybiAqdGhpczsgfSAKfTsKCiMgOTA3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
cmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRv
ci5oIiAzCgoKIAoKCgogCiAKIAojIDU2ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAyIDMK
CgoKIAoKIAoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNsYXNzIF9Gb3J3YXJkSXRl
cjIsIGNsYXNzIF9UcD4KaW5saW5lIHZvaWQgX19pdGVyX3N3YXAoX0ZvcndhcmRJdGVyMSBfX2Es
IF9Gb3J3YXJkSXRlcjIgX19iLCBfVHAqKSB7CiAgX1RwIF9fdG1wID0gKl9fYTsKICAqX19hID0g
Kl9fYjsKICAqX19iID0gX190bXA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIxLCBj
bGFzcyBfRm9yd2FyZEl0ZXIyPgppbmxpbmUgdm9pZCBpdGVyX3N3YXAoX0ZvcndhcmRJdGVyMSBf
X2EsIF9Gb3J3YXJkSXRlcjIgX19iKSB7CiAgX19pdGVyX3N3YXAoX19hLCBfX2IsIF9fdmFsdWVf
dHlwZSggX19hICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIHZvaWQgc3dhcChf
VHAmIF9fYSwgX1RwJiBfX2IpIHsKICBfVHAgX190bXAgPSBfX2E7CiAgX19hID0gX19iOwogIF9f
YiA9IF9fdG1wOwp9CgogCiAKCgoKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIGNvbnN0
IF9UcCYgbWluKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikgewogIHJldHVybiBfX2Ig
PCBfX2EgPyBfX2IgOiBfX2E7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBjb25zdCBf
VHAmIG1heChjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpIHsKICByZXR1cm4gIF9fYSA8
IF9fYiA/IF9fYiA6IF9fYTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFy
ZT4KaW5saW5lIGNvbnN0IF9UcCYgbWluKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYiwg
X0NvbXBhcmUgX19jb21wKSB7CiAgcmV0dXJuIF9fY29tcChfX2IsIF9fYSkgPyBfX2IgOiBfX2E7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgY29uc3QgX1Rw
JiBtYXgoY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iLCBfQ29tcGFyZSBfX2NvbXApIHsK
ICByZXR1cm4gX19jb21wKF9fYSwgX19iKSA/IF9fYiA6IF9fYTsKfQoKIAogCgogCiAKIAogCiAK
IAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXIsIGNsYXNz
IF9EaXN0YW5jZT4KaW5saW5lIF9PdXRwdXRJdGVyIF9fY29weShfSW5wdXRJdGVyIF9fZmlyc3Qs
IF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVy
IF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3RhZywg
X0Rpc3RhbmNlKikKewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19yZXN1bHQsICsr
X19maXJzdCkKICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xh
c3MgX0Rpc3RhbmNlPgppbmxpbmUgX091dHB1dEl0ZXIKX19jb3B5KF9SYW5kb21BY2Nlc3NJdGVy
IF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgIF9PdXRwdXRJdGVyIF9f
cmVzdWx0LCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywgX0Rpc3RhbmNlKikKewogIGZvciAo
X0Rpc3RhbmNlIF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+IDA7IC0tX19uKSB7CiAgICAq
X19yZXN1bHQgPSAqX19maXJzdDsKICAgICsrX19maXJzdDsKICAgICsrX19yZXN1bHQ7CiAgfQog
IHJldHVybiBfX3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIF9UcCoKX19j
b3B5X3RyaXZpYWwoY29uc3QgX1RwKiBfX2ZpcnN0LCBjb25zdCBfVHAqIF9fbGFzdCwgX1RwKiBf
X3Jlc3VsdCkgewogIG1lbW1vdmUoX19yZXN1bHQsIF9fZmlyc3QsIHNpemVvZihfVHApICogKF9f
bGFzdCAtIF9fZmlyc3QpKTsKICByZXR1cm4gX19yZXN1bHQgKyAoX19sYXN0IC0gX19maXJzdCk7
Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFz
cyBfQm9vbFR5cGU+CnN0cnVjdCBfX2NvcHlfZGlzcGF0Y2ggewogIHN0YXRpYyBfT3V0cHV0SXRl
ciBjb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsKICAgIHR5cGVkZWYgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeSBfQ2F0ZWdv
cnk7CiAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6ZGlm
ZmVyZW5jZV90eXBlIF9EaXN0YW5jZTsKICAgIHJldHVybiBfX2NvcHkoX19maXJzdCwgX19sYXN0
LCBfX3Jlc3VsdCwgX0NhdGVnb3J5KCksIChfRGlzdGFuY2UqKSAwKTsKICB9Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgX19jb3B5X2Rpc3BhdGNoPF9UcCosIF9UcCosIF9fdHJ1ZV90
eXBlPgp7CiAgc3RhdGljIF9UcCogY29weShjb25zdCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCog
X19sYXN0LCBfVHAqIF9fcmVzdWx0KSB7CiAgICByZXR1cm4gX19jb3B5X3RyaXZpYWwoX19maXJz
dCwgX19sYXN0LCBfX3Jlc3VsdCk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0
IF9fY29weV9kaXNwYXRjaDxjb25zdCBfVHAqLCBfVHAqLCBfX3RydWVfdHlwZT4KewogIHN0YXRp
YyBfVHAqIGNvcHkoY29uc3QgX1RwKiBfX2ZpcnN0LCBjb25zdCBfVHAqIF9fbGFzdCwgX1RwKiBf
X3Jlc3VsdCkgewogICAgcmV0dXJuIF9fY29weV90cml2aWFsKF9fZmlyc3QsIF9fbGFzdCwgX19y
ZXN1bHQpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0
SXRlcj4KaW5saW5lIF9PdXRwdXRJdGVyIGNvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQp
IHsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6dmFsdWVf
dHlwZSBfVHA7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPF9UcD46Omhhc190cml2
aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3IKICAgICAgICAgIF9Ucml2aWFsOwogIHJldHVybiBfX2Nv
cHlfZGlzcGF0Y2g8X0lucHV0SXRlciwgX091dHB1dEl0ZXIsIF9Ucml2aWFsPgogICAgOjpjb3B5
KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpOwp9CgojIDIxMyAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxn
b2Jhc2UuaCIgMwoKCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjEsIGNs
YXNzIF9CaWRpcmVjdGlvbmFsSXRlcjIsIAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlPgppbmxp
bmUgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2NvcHlfYmFja3dhcmQoX0JpZGlyZWN0aW9uYWxJdGVy
MSBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9C
aWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19yZXN1bHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSopCnsK
ICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpCiAgICAqLS1fX3Jlc3VsdCA9ICotLV9fbGFzdDsK
ICByZXR1cm4gX19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwg
Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBfQmlkaXJl
Y3Rpb25hbEl0ZXIgX19jb3B5X2JhY2t3YXJkKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRl
ciBfX2xhc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UqKQp7CiAgZm9yIChfRGlzdGFuY2UgX19u
ID0gX19sYXN0IC0gX19maXJzdDsgX19uID4gMDsgLS1fX24pCiAgICAqLS1fX3Jlc3VsdCA9ICot
LV9fbGFzdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCgoKIAogCiAKIAoKdGVtcGxhdGUgPGNsYXNz
IF9CaWRpcmVjdGlvbmFsSXRlcjEsIGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjIsCiAgICAgICAg
ICBjbGFzcyBfQm9vbFR5cGU+CnN0cnVjdCBfX2NvcHlfYmFja3dhcmRfZGlzcGF0Y2gKewogIHR5
cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9CaWRpcmVjdGlvbmFsSXRlcjE+OjppdGVy
YXRvcl9jYXRlZ29yeSAKICAgICAgICAgIF9DYXQ7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X0JpZGlyZWN0aW9uYWxJdGVyMT46OmRpZmZlcmVuY2VfdHlwZQogICAgICAgICAg
X0Rpc3RhbmNlOwoKICBzdGF0aWMgX0JpZGlyZWN0aW9uYWxJdGVyMiBjb3B5KF9CaWRpcmVjdGlv
bmFsSXRlcjEgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXIxIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fcmVzdWx0KSB7CiAgICByZXR1cm4gX19jb3B5X2JhY2t3
YXJkKF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsIF9DYXQoKSwgKF9EaXN0YW5jZSopIDApOwog
IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfX2NvcHlfYmFja3dhcmRfZGlzcGF0
Y2g8X1RwKiwgX1RwKiwgX190cnVlX3R5cGU+CnsKICBzdGF0aWMgX1RwKiBjb3B5KGNvbnN0IF9U
cCogX19maXJzdCwgY29uc3QgX1RwKiBfX2xhc3QsIF9UcCogX19yZXN1bHQpIHsKICAgIGNvbnN0
IHB0cmRpZmZfdCBfTnVtID0gX19sYXN0IC0gX19maXJzdDsKICAgIG1lbW1vdmUoX19yZXN1bHQg
LSBfTnVtLCBfX2ZpcnN0LCBzaXplb2YoX1RwKSAqIF9OdW0pOwogICAgcmV0dXJuIF9fcmVzdWx0
IC0gX051bTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgX19jb3B5X2JhY2t3
YXJkX2Rpc3BhdGNoPGNvbnN0IF9UcCosIF9UcCosIF9fdHJ1ZV90eXBlPgp7CiAgc3RhdGljIF9U
cCogY29weShjb25zdCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCogX19sYXN0LCBfVHAqIF9fcmVz
dWx0KSB7CiAgICByZXR1cm4gIF9fY29weV9iYWNrd2FyZF9kaXNwYXRjaDxfVHAqLCBfVHAqLCBf
X3RydWVfdHlwZT4KICAgICAgOjpjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpOwogIH0K
fTsKCnRlbXBsYXRlIDxjbGFzcyBfQkkxLCBjbGFzcyBfQkkyPgppbmxpbmUgX0JJMiBjb3B5X2Jh
Y2t3YXJkKF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3QsIF9CSTIgX19yZXN1bHQpIHsKICB0eXBl
ZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9CSTI+
Ojp2YWx1ZV90eXBlPgogICAgICAgICAgICAgICAgICAgICAgICA6Omhhc190cml2aWFsX2Fzc2ln
bm1lbnRfb3BlcmF0b3IKICAgICAgICAgIF9Ucml2aWFsOwogIHJldHVybiBfX2NvcHlfYmFja3dh
cmRfZGlzcGF0Y2g8X0JJMSwgX0JJMiwgX1RyaXZpYWw+CiAgICAgICAgICAgICAgOjpjb3B5KF9f
Zmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpOwp9CgojIDMwMyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxnb2Jh
c2UuaCIgMwoKCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBj
bGFzcyBfT3V0cHV0SXRlcj4KcGFpcjxfSW5wdXRJdGVyLCBfT3V0cHV0SXRlcj4gX19jb3B5X24o
X0lucHV0SXRlciBfX2ZpcnN0LCBfU2l6ZSBfX2NvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKSB7CiAgZm9yICggOyBfX2Nv
dW50ID4gMDsgLS1fX2NvdW50KSB7CiAgICAqX19yZXN1bHQgPSAqX19maXJzdDsKICAgICsrX19m
aXJzdDsKICAgICsrX19yZXN1bHQ7CiAgfQogIHJldHVybiBwYWlyPF9JbnB1dEl0ZXIsIF9PdXRw
dXRJdGVyPihfX2ZpcnN0LCBfX3Jlc3VsdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUkFJdGVyLCBj
bGFzcyBfU2l6ZSwgY2xhc3MgX091dHB1dEl0ZXI+CmlubGluZSBwYWlyPF9SQUl0ZXIsIF9PdXRw
dXRJdGVyPgpfX2NvcHlfbihfUkFJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsCiAgICAgICAg
IF9PdXRwdXRJdGVyIF9fcmVzdWx0LAogICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZykgewogIF9SQUl0ZXIgX19sYXN0ID0gX19maXJzdCArIF9fY291bnQ7CiAgcmV0dXJuIHBhaXI8
X1JBSXRlciwgX091dHB1dEl0ZXI+KF9fbGFzdCwgY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVz
dWx0KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3Mg
X091dHB1dEl0ZXI+CmlubGluZSBwYWlyPF9JbnB1dEl0ZXIsIF9PdXRwdXRJdGVyPgpfX2NvcHlf
bihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsIF9PdXRwdXRJdGVyIF9fcmVzdWx0
KSB7CiAgcmV0dXJuIF9fY29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9fcmVzdWx0LAogICAgICAg
ICAgICAgICAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfT3V0cHV0SXRlcj4KaW5saW5l
IHBhaXI8X0lucHV0SXRlciwgX091dHB1dEl0ZXI+CmNvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3Qs
IF9TaXplIF9fY291bnQsIF9PdXRwdXRJdGVyIF9fcmVzdWx0KSB7CiAgcmV0dXJuIF9fY29weV9u
KF9fZmlyc3QsIF9fY291bnQsIF9fcmVzdWx0KTsKfQoKIAogCgoKdGVtcGxhdGUgPGNsYXNzIF9G
b3J3YXJkSXRlciwgY2xhc3MgX1RwPgp2b2lkIGZpbGwoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9G
b3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWx1ZSkgewogIGZvciAoIDsgX19maXJz
dCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgICpfX2ZpcnN0ID0gX192YWx1ZTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3MgX1RwPgpfT3V0cHV0SXRl
ciBmaWxsX24oX091dHB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19uLCBjb25zdCBfVHAmIF9fdmFs
dWUpIHsKICBmb3IgKCA7IF9fbiA+IDA7IC0tX19uLCArK19fZmlyc3QpCiAgICAqX19maXJzdCA9
IF9fdmFsdWU7CiAgcmV0dXJuIF9fZmlyc3Q7Cn0KCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KcGFpcjxfSW5wdXRJdGVyMSwgX0lucHV0SXRlcjI+
IG1pc21hdGNoKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyKSB7CiAgd2hpbGUgKF9fZmly
c3QxICE9IF9fbGFzdDEgJiYgKl9fZmlyc3QxID09ICpfX2ZpcnN0MikgewogICAgKytfX2ZpcnN0
MTsKICAgICsrX19maXJzdDI7CiAgfQogIHJldHVybiBwYWlyPF9JbnB1dEl0ZXIxLCBfSW5wdXRJ
dGVyMj4oX19maXJzdDEsIF9fZmlyc3QyKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIx
LCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KcGFpcjxfSW5wdXRJ
dGVyMSwgX0lucHV0SXRlcjI+IG1pc21hdGNoKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjEgX19sYXN0MSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3Qy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0
ZSBfX2JpbmFyeV9wcmVkKSB7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19iaW5h
cnlfcHJlZCgqX19maXJzdDEsICpfX2ZpcnN0MikpIHsKICAgICsrX19maXJzdDE7CiAgICArK19f
Zmlyc3QyOwogIH0KICByZXR1cm4gcGFpcjxfSW5wdXRJdGVyMSwgX0lucHV0SXRlcjI+KF9fZmly
c3QxLCBfX2ZpcnN0Mik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lu
cHV0SXRlcjI+CmlubGluZSBib29sIGVxdWFsKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJ
dGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0Mikgewog
IGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikKICAg
IGlmICgqX19maXJzdDEgIT0gKl9fZmlyc3QyKQogICAgICByZXR1cm4gZmFsc2U7CiAgcmV0dXJu
IHRydWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIs
IGNsYXNzIF9CaW5hcnlQcmVkaWNhdGU+CmlubGluZSBib29sIGVxdWFsKF9JbnB1dEl0ZXIxIF9f
Zmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICBfSW5wdXRJdGVy
MiBfX2ZpcnN0MiwgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKSB7CiAgZm9yICggOyBf
X2ZpcnN0MSAhPSBfX2xhc3QxOyArK19fZmlyc3QxLCArK19fZmlyc3QyKQogICAgaWYgKCFfX2Jp
bmFyeV9wcmVkKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAgICAgcmV0dXJuIGZhbHNlOwogIHJl
dHVybiB0cnVlOwp9CgogCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBf
SW5wdXRJdGVyMj4KYm9vbCBsZXhpY29ncmFwaGljYWxfY29tcGFyZShfSW5wdXRJdGVyMSBfX2Zp
cnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
SW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MikgewogIGZvciAoIDsgX19m
aXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyCiAgICAgICAgOyArK19fZmly
c3QxLCArK19fZmlyc3QyKSB7CiAgICBpZiAoKl9fZmlyc3QxIDwgKl9fZmlyc3QyKQogICAgICBy
ZXR1cm4gdHJ1ZTsKICAgIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpCiAgICAgIHJldHVybiBm
YWxzZTsKICB9CiAgcmV0dXJuIF9fZmlyc3QxID09IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19s
YXN0MjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwg
Y2xhc3MgX0NvbXBhcmU+CmJvb2wgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoX0lucHV0SXRlcjEg
X19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKSB7CiAgZm9yICggOyBfX2ZpcnN0MSAh
PSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIKICAgICAgICA7ICsrX19maXJzdDEsICsr
X19maXJzdDIpIHsKICAgIGlmIChfX2NvbXAoKl9fZmlyc3QxLCAqX19maXJzdDIpKQogICAgICBy
ZXR1cm4gdHJ1ZTsKICAgIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKQogICAgICBy
ZXR1cm4gZmFsc2U7CiAgfQogIHJldHVybiBfX2ZpcnN0MSA9PSBfX2xhc3QxICYmIF9fZmlyc3Qy
ICE9IF9fbGFzdDI7Cn0KCmlubGluZSBib29sIApsZXhpY29ncmFwaGljYWxfY29tcGFyZShjb25z
dCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgY2hhciogX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z
aWduZWQgY2hhciogX19maXJzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIF9fbGFzdDIpCnsKICBjb25zdCBzaXplX3QgX19sZW4xID0gX19sYXN0MSAtIF9f
Zmlyc3QxOwogIGNvbnN0IHNpemVfdCBfX2xlbjIgPSBfX2xhc3QyIC0gX19maXJzdDI7CiAgY29u
c3QgaW50IF9fcmVzdWx0ID0gbWVtY21wKF9fZmlyc3QxLCBfX2ZpcnN0MiwgbWluKF9fbGVuMSwg
X19sZW4yKSk7CiAgcmV0dXJuIF9fcmVzdWx0ICE9IDAgPyBfX3Jlc3VsdCA8IDAgOiBfX2xlbjEg
PCBfX2xlbjI7Cn0KCmlubGluZSBib29sIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKGNvbnN0IGNo
YXIqIF9fZmlyc3QxLCBjb25zdCBjaGFyKiBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBfX2ZpcnN0MiwgY29uc3QgY2hhciogX19sYXN0MikK
ewoKICByZXR1cm4gbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoKGNvbnN0IHNpZ25lZCBjaGFyKikg
X19maXJzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQg
Y2hhciopIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBz
aWduZWQgY2hhciopIF9fZmlyc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Y29uc3Qgc2lnbmVkIGNoYXIqKSBfX2xhc3QyKTsKCgoKCgoKfQoKdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KaW50IF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBh
cmVfM3dheShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0
SXRlcjIgX19sYXN0MikKewogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3Qy
ICE9IF9fbGFzdDIpIHsKICAgIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpCiAgICAgIHJldHVy
biAtMTsKICAgIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpCiAgICAgIHJldHVybiAxOwogICAg
KytfX2ZpcnN0MTsKICAgICsrX19maXJzdDI7CiAgfQogIGlmIChfX2ZpcnN0MiA9PSBfX2xhc3Qy
KSB7CiAgICByZXR1cm4gIShfX2ZpcnN0MSA9PSBfX2xhc3QxKTsKICB9CiAgZWxzZSB7CiAgICBy
ZXR1cm4gLTE7CiAgfQp9CgppbmxpbmUgaW50Cl9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dh
eShjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0MiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fbGFzdDIpCnsKICBjb25zdCBw
dHJkaWZmX3QgX19sZW4xID0gX19sYXN0MSAtIF9fZmlyc3QxOwogIGNvbnN0IHB0cmRpZmZfdCBf
X2xlbjIgPSBfX2xhc3QyIC0gX19maXJzdDI7CiAgY29uc3QgaW50IF9fcmVzdWx0ID0gbWVtY21w
KF9fZmlyc3QxLCBfX2ZpcnN0MiwgbWluKF9fbGVuMSwgX19sZW4yKSk7CiAgcmV0dXJuIF9fcmVz
dWx0ICE9IDAgPyBfX3Jlc3VsdCAKICAgICAgICAgICAgICAgICAgICAgICA6IChfX2xlbjEgPT0g
X19sZW4yID8gMCA6IChfX2xlbjEgPCBfX2xlbjIgPyAtMSA6IDEpKTsKfQoKaW5saW5lIGludCAK
X19sZXhpY29ncmFwaGljYWxfY29tcGFyZV8zd2F5KGNvbnN0IGNoYXIqIF9fZmlyc3QxLCBjb25z
dCBjaGFyKiBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogX19maXJzdDIsIGNvbnN0IGNoYXIqIF9fbGFzdDIpCnsKCiAgcmV0dXJuIF9fbGV4aWNvZ3Jh
cGhpY2FsX2NvbXBhcmVfM3dheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29u
c3Qgc2lnbmVkIGNoYXIqKSBfX2ZpcnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fZmlyc3QyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fbGFzdDIpOwoKCgoKCgp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyPgppbnQgbGV4aWNvZ3Jh
cGhpY2FsX2NvbXBhcmVfM3dheShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19s
YXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJz
dDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIpCnsKICByZXR1cm4gX19sZXhpY29ncmFwaGljYWxfY29t
cGFyZV8zd2F5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0Mik7Cn0KCiAKCgoK
IAogCiAKIyAzMCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4v
Li4vLi4vLi4vaW5jbHVkZS9nKystMy9saXN0IiAyIDMKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxs
b2MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiAKIAogCiAK
CgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQyICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVk
aGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgojIDUzICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0
bF9hbGxvYy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgojIDMyICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKCgoKCgogCgoK
CgojIDU2ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKCgpleHRlcm4gIkMiIHsgCgogCmV4dGVy
biB2b2lkIF9fYXNzZXJ0X2ZhaWwgIChfX2NvbnN0IGNoYXIgKl9fYXNzZXJ0aW9uLAoJCQkJX19j
b25zdCBjaGFyICpfX2ZpbGUsCgkJCQl1bnNpZ25lZCBpbnQgX19saW5lLAoJCQkJX19jb25zdCBj
aGFyICpfX2Z1bmN0aW9uKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0
dXJuX18pKTsKCiAKZXh0ZXJuIHZvaWQgX19hc3NlcnRfcGVycm9yX2ZhaWwgIChpbnQgX19lcnJu
dW0sCgkJCQkgICAgICAgX19jb25zdCBjaGFyICpfX2ZpbGUsCgkJCQkgICAgICAgdW5zaWduZWQg
aW50IF9fbGluZSwKCQkJCSAgICAgICBfX2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pICB0aHJvdyAo
KSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKfSAKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA1NiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhh
dC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIgMiAz
CgoKCgoKCgoKCgoKCiAgICAgCiAgICAgCiAgICAgCiMgMSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQu
aCIgMSAzCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
c2NoZWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDYyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoK
CiMgNzMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCiMgODkgIi91c3IvaW5jbHVkZS90aW1l
LmgiIDMKCgoKCiMgMjc5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgMjkgIi91c3IvaW5j
bHVkZS9zY2hlZC5oIiAyIDMKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCiAKc3RydWN0
IHNjaGVkX3BhcmFtCiAgewogICAgaW50IHNjaGVkX3ByaW9yaXR5OwogIH07CgpleHRlcm4gIkMi
IHsgCgogCgpleHRlcm4gaW50IGNsb25lICAoaW50ICgqX19mbikgKHZvaWQgKl9fYXJnKSwgdm9p
ZCAqX19jaGlsZF9zdGFjaywKCQkgICAgICAgaW50IF9fZmxhZ3MsIHZvaWQgKl9fYXJnKSAgdGhy
b3cgKCkgIDsKCgp9IAoKCgoKCgogCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IHNj
aGVkX3ByaW9yaXR5OwogIH07CgoKIyAzMiAiL3Vzci9pbmNsdWRlL3NjaGVkLmgiIDIgMwoKCmV4
dGVybiAiQyIgeyAKCiAKZXh0ZXJuIGludCBfX3NjaGVkX3NldHBhcmFtICAoX19waWRfdCBfX3Bp
ZCwKCQkJCSAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJvdyAoKSAg
OwpleHRlcm4gaW50IHNjaGVkX3NldHBhcmFtICAoX19waWRfdCBfX3BpZCwKCQkJCV9fY29uc3Qg
c3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBf
X3NjaGVkX2dldHBhcmFtICAoX19waWRfdCBfX3BpZCwgc3RydWN0IHNjaGVkX3BhcmFtICpfX3Bh
cmFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzY2hlZF9nZXRwYXJhbSAgKF9fcGlkX3QgX19w
aWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBp
bnQgX19zY2hlZF9zZXRzY2hlZHVsZXIgIChfX3BpZF90IF9fcGlkLCBpbnQgX19wb2xpY3ksCgkJ
CQkgICAgICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgpICA7
CmV4dGVybiBpbnQgc2NoZWRfc2V0c2NoZWR1bGVyICAoX19waWRfdCBfX3BpZCwgaW50IF9fcG9s
aWN5LAoJCQkJICAgIF9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVkX2dldHNjaGVkdWxlciAgKF9fcGlkX3QgX19waWQp
ICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX2dldHNjaGVkdWxlciAgKF9fcGlkX3QgX19w
aWQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fc2NoZWRfeWllbGQgICh2b2lkKSAgdGhy
b3cgKCkgIDsKZXh0ZXJuIGludCBzY2hlZF95aWVsZCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIApl
eHRlcm4gaW50IF9fc2NoZWRfZ2V0X3ByaW9yaXR5X21heCAgKGludCBfX2FsZ29yaXRobSkgIHRo
cm93ICgpICA7CmV4dGVybiBpbnQgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCAgKGludCBfX2FsZ29y
aXRobSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9nZXRfcHJpb3JpdHlfbWlu
ICAoaW50IF9fYWxnb3JpdGhtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzY2hlZF9nZXRfcHJp
b3JpdHlfbWluICAoaW50IF9fYWxnb3JpdGhtKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBf
X3NjaGVkX3JyX2dldF9pbnRlcnZhbCAgKF9fcGlkX3QgX19waWQsIHN0cnVjdCB0aW1lc3BlYyAq
X190KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwgIChfX3Bp
ZF90IF9fcGlkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fdCkgIHRocm93ICgpICA7Cgp9IAoKCiMgMjAg
Ii91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCgoKCiAKCgoj
IDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vz
ci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51
eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQt
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCiMgMzggIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCiAKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKIAoKCgoK
CiAKCgoKCgoKCiMgNTkgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMwogCiMgNDIgIi91c3Iv
aW5jbHVkZS90aW1lLmgiIDIgMwoKCiAKCgoKCgoKCgoKCgoKCgogCnR5cGVkZWYgX19jbG9ja190
IGNsb2NrX3Q7CgoKCgojIDczICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgojIDg5ICIvdXNy
L2luY2x1ZGUvdGltZS5oIiAzCgoKCgoKIApzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CQkJIAog
IGludCB0bV9taW47CQkJIAogIGludCB0bV9ob3VyOwkJCSAKICBpbnQgdG1fbWRheTsJCQkgCiAg
aW50IHRtX21vbjsJCQkgCiAgaW50IHRtX3llYXI7CQkJIAogIGludCB0bV93ZGF5OwkJCSAKICBp
bnQgdG1feWRheTsJCQkgCiAgaW50IHRtX2lzZHN0OwkJCSAKCgogIGxvbmcgaW50IHRtX2dtdG9m
ZjsJCSAKICBfX2NvbnN0IGNoYXIgKnRtX3pvbmU7CSAKCgoKCn07CgoKIAoKZXh0ZXJuIGNsb2Nr
X3QgY2xvY2sgICh2b2lkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHRpbWVfdCB0aW1lICAodGlt
ZV90ICpfX3RpbWVyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGRvdWJsZSBkaWZmdGltZSAgKHRp
bWVfdCBfX3RpbWUxLCB0aW1lX3QgX190aW1lMCkgIHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVybiB0aW1lX3QgbWt0aW1lICAoc3RydWN0IHRtICpf
X3RwKSAgdGhyb3cgKCkgIDsKCgogCgoKZXh0ZXJuIHNpemVfdCBzdHJmdGltZSAgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAoJCQkgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwKCQkJICAgICBfX2NvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBf
X3RwKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKIAoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lICAo
X19jb25zdCB0aW1lX3QgKl9fdGltZXIpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIHN0cnVjdCB0
bSAqbG9jYWx0aW1lICAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIpICB0aHJvdyAoKSAgOwoKCiAK
CmV4dGVybiBzdHJ1Y3QgdG0gKl9fZ210aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmlj
dCBfX3RpbWVyLAoJCQkJICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApICB0aHJvdyAoKSAg
OwpleHRlcm4gc3RydWN0IHRtICpnbXRpbWVfciAgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0
IF9fdGltZXIsCgkJCQkgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApICB0aHJvdyAoKSAgOwoK
IAoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0
cmljdCBfX3RpbWVyLAoJCQkJICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSAgdGhyb3cg
KCkgIDsKCgogCgpleHRlcm4gY2hhciAqYXNjdGltZSAgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Rw
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKmN0aW1lICAoX19jb25zdCB0aW1lX3QgKl9f
dGltZXIpICB0aHJvdyAoKSAgOwoKCiAKCiAKCmV4dGVybiBjaGFyICphc2N0aW1lX3IgIChfX2Nv
bnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwLAoJCQkgICAgIGNoYXIgKl9fcmVzdHJpY3Qg
X19idWYpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gY2hhciAqY3RpbWVfciAgKF9fY29uc3QgdGlt
ZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCgkJCSAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpICB0
aHJvdyAoKSAgOwoKCgogCmV4dGVybiBjaGFyICpfX3R6bmFtZVsyXTsJIApleHRlcm4gaW50IF9f
ZGF5bGlnaHQ7CQkgCmV4dGVybiBsb25nIGludCBfX3RpbWV6b25lOwkgCgoKCiAKZXh0ZXJuIGNo
YXIgKnR6bmFtZVsyXTsKCiAKCmV4dGVybiB2b2lkIHR6c2V0ICAodm9pZCkgIHRocm93ICgpICA7
CgoKCmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCB0aW1lem9uZTsKCgoKIAoK
ZXh0ZXJuIGludCBzdGltZSAgKF9fY29uc3QgdGltZV90ICpfX3doZW4pICB0aHJvdyAoKSAgOwoK
CgogCgoKCgoKCiAKCgogCmV4dGVybiB0aW1lX3QgdGltZWdtICAoc3RydWN0IHRtICpfX3RwKSAg
dGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHRpbWVfdCB0aW1lbG9jYWwgIChzdHJ1Y3QgdG0gKl9fdHAp
ICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IGR5c2l6ZSAgKGludCBfX3llYXIpICB0aHJvdyAo
KSAgOwoKCgoKIApleHRlcm4gaW50IG5hbm9zbGVlcCAgKF9fY29uc3Qgc3RydWN0IHRpbWVzcGVj
ICpfX3JlcXVlc3RlZF90aW1lLAoJCQkgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKSAg
dGhyb3cgKCkgIDsKCgoKIyAyNjQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgojIDI3NCAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMwoKCgp9IAoKCgoKIyAyMSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQu
aCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Np
Z3NldC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvYml0cy9z
aWdzZXQuaCIgMwoKCgogCgoKCgoKIyAxMjUgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAz
CgojIDMzICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMwoKCiAKCgoKCgoKCgoKCgoKCnR5cGVk
ZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKIyAzNTIgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIg
MwoKCn0gCgoKIyAyNCAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMiAzCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAxIDMKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoK
CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDYyICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzCgoKIyA3MyAiL3Vzci9p
bmNsdWRlL2JpdHMvc2NoZWQuaCIgMwoKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5
cGVzLmgiIDIgMwoKCiAKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0
YXR1czsgICAgICAgICAgICAgCiAgaW50IF9fc3BpbmxvY2s7ICAgICAgICAgICAgICAgIAp9OwoK
CiAKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsK
CgoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVk
cG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhl
cml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0
YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9
IHB0aHJlYWRfYXR0cl90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9m
YXN0bG9jayBfX2NfbG9jazsgIAogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOyAgICAgICAg
IAp9IHB0aHJlYWRfY29uZF90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9
IHB0aHJlYWRfY29uZGF0dHJfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlf
dDsKCgogCiAKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOyAgICAgICAgICAg
ICAgICAKICBpbnQgX19tX2NvdW50OyAgICAgICAgICAgICAgICAgICAKICBfcHRocmVhZF9kZXNj
ciBfX21fb3duZXI7ICAgICAgICAKICBpbnQgX19tX2tpbmQ7ICAgICAgICAgICAgICAgICAgICAK
ICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7ICAKfSBwdGhyZWFkX211dGV4X3Q7
CgoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhh
dHRyX3Q7CgoKIAp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgojIDExNiAiL3Vzci9pbmNs
dWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50
IHB0aHJlYWRfdDsKCgojIDI1ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCgoKZXh0ZXJu
ICJDIiB7IAoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKZW51bQp7CiAgUFRIUkVBRF9DUkVBVEVfSk9J
TkFCTEUsCgogIFBUSFJFQURfQ1JFQVRFX0RFVEFDSEVECgp9OwoKZW51bQp7CiAgUFRIUkVBRF9J
TkhFUklUX1NDSEVELAoKICBQVEhSRUFEX0VYUExJQ0lUX1NDSEVECgp9OwoKZW51bQp7CiAgUFRI
UkVBRF9TQ09QRV9TWVNURU0sCgogIFBUSFJFQURfU0NPUEVfUFJPQ0VTUwoKfTsKCmVudW0Kewog
IFBUSFJFQURfTVVURVhfRkFTVF9OUCwKICBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCwKICBQ
VEhSRUFEX01VVEVYX0VSUk9SQ0hFQ0tfTlAKCgoKCgoKCn07CgplbnVtCnsKICBQVEhSRUFEX1BS
T0NFU1NfUFJJVkFURSwKCiAgUFRIUkVBRF9QUk9DRVNTX1NIQVJFRAoKfTsKCgoKCgoKCgoKCgoK
IAoKc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyCnsKICB2b2lkICgqX19yb3V0aW5lKSAg
KHZvaWQgKikgIDsJICAgCiAgdm9pZCAqX19hcmc7CQkJCSAgIAogIGludCBfX2NhbmNlbHR5cGU7
CQkJICAgCiAgc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyICpfX3ByZXY7ICAKfTsKCiAK
CmVudW0KewogIFBUSFJFQURfQ0FOQ0VMX0VOQUJMRSwKCiAgUFRIUkVBRF9DQU5DRUxfRElTQUJM
RQoKfTsKZW51bQp7CiAgUFRIUkVBRF9DQU5DRUxfREVGRVJSRUQsCgogIFBUSFJFQURfQ0FOQ0VM
X0FTWU5DSFJPTk9VUwoKfTsKCgoKIAoKIAoKCmV4dGVybiBpbnQgcHRocmVhZF9jcmVhdGUgIChw
dGhyZWFkX3QgKl9fdGhyZWFkLAoJCQkJX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJ
CQkJdm9pZCAqKCpfX3N0YXJ0X3JvdXRpbmUpICh2b2lkICopLAoJCQkJdm9pZCAqX19hcmcpICB0
aHJvdyAoKSAgOwoKIApleHRlcm4gcHRocmVhZF90IHB0aHJlYWRfc2VsZiAgKHZvaWQpICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfZXF1YWwgIChwdGhyZWFkX3QgX190aHJlYWQx
LCBwdGhyZWFkX3QgX190aHJlYWQyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgcHRocmVh
ZF9leGl0ICAodm9pZCAqX19yZXR2YWwpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX25v
cmV0dXJuX18pKTsKCiAKCgpleHRlcm4gaW50IHB0aHJlYWRfam9pbiAgKHB0aHJlYWRfdCBfX3Ro
LCB2b2lkICoqX190aHJlYWRfcmV0dXJuKSAgdGhyb3cgKCkgIDsKCiAKCgoKZXh0ZXJuIGludCBw
dGhyZWFkX2RldGFjaCAgKHB0aHJlYWRfdCBfX3RoKSAgdGhyb3cgKCkgIDsKCgogCgogCgoKZXh0
ZXJuIGludCBwdGhyZWFkX2F0dHJfaW5pdCAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIpICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9kZXN0cm95ICAocHRocmVhZF9hdHRy
X3QgKl9fYXR0cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGRl
dGFjaHN0YXRlICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCQkgICAgIGludCBfX2RldGFj
aHN0YXRlKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0ZGV0YWNo
c3RhdGUgIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJICAgICBpbnQgKl9f
ZGV0YWNoc3RhdGUpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRz
Y2hlZHBhcmFtICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCSAgICAgICAgX19jb25zdCBz
dHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0
aHJlYWRfYXR0cl9nZXRzY2hlZHBhcmFtICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRy
LAoJCQkJCSAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJvdyAoKSAgOwoKIApl
eHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBvbGljeSAgKHB0aHJlYWRfYXR0cl90ICpf
X2F0dHIsCgkJCQkJICAgICBpbnQgX19wb2xpY3kpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50
IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBvbGljeSAgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9f
YXR0ciwKCQkJCQkgICAgIGludCAqX19wb2xpY3kpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50
IHB0aHJlYWRfYXR0cl9zZXRpbmhlcml0c2NoZWQgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJ
CQkJCSAgICAgIGludCBfX2luaGVyaXQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJl
YWRfYXR0cl9nZXRpbmhlcml0c2NoZWQgIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIs
CgkJCQkJICAgICAgaW50ICpfX2luaGVyaXQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0
aHJlYWRfYXR0cl9zZXRzY29wZSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsIGludCBfX3Njb3Bl
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c2NvcGUgIChfX2Nv
bnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkgICAgICAgaW50ICpfX3Njb3BlKSAgdGhy
b3cgKCkgIDsKCiMgMjIzICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCgoKIAoKCgpleHRlcm4g
aW50IHB0aHJlYWRfYXR0cl9zZXRzdGFja2FkZHIgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJ
CQkJCSAgIHZvaWQgKl9fc3RhY2thZGRyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhy
ZWFkX2F0dHJfZ2V0c3RhY2thZGRyICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJ
CQkJCSAgIHZvaWQgKipfX3N0YWNrYWRkcikgIHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGludCBw
dGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCQkg
ICBzaXplX3QgX19zdGFja3NpemUpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRf
YXR0cl9nZXRzdGFja3NpemUgIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJ
ICAgc2l6ZV90ICpfX3N0YWNrc2l6ZSkgIHRocm93ICgpICA7CgogCgogCgpleHRlcm4gaW50IHB0
aHJlYWRfc2V0c2NoZWRwYXJhbSAgKHB0aHJlYWRfdCBfX3RhcmdldF90aHJlYWQsIGludCBfX3Bv
bGljeSwKCQkJCSAgICAgICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRo
cm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9nZXRzY2hlZHBhcmFtICAocHRocmVhZF90
IF9fdGFyZ2V0X3RocmVhZCwKCQkJCSAgICAgICBpbnQgKl9fcG9saWN5LAoJCQkJICAgICAgIHN0
cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgpICA7CgoKCgoKCgoKCiAKCiAKCmV4
dGVybiBpbnQgX19wdGhyZWFkX211dGV4X2luaXQgIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgs
CgkJCQkgICBfX2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fbXV0ZXhfYXR0cikgIHRocm93
ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9pbml0ICAocHRocmVhZF9tdXRleF90ICpf
X211dGV4LAoJCQkJICAgX19jb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICpfX211dGV4X2F0dHIp
ICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fcHRocmVhZF9tdXRleF9kZXN0cm95ICAocHRo
cmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211
dGV4X2Rlc3Ryb3kgIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpICB0aHJvdyAoKSAgOwoKIApl
eHRlcm4gaW50IF9fcHRocmVhZF9tdXRleF90cnlsb2NrICAocHRocmVhZF9tdXRleF90ICpfX211
dGV4KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X3RyeWxvY2sgIChwdGhy
ZWFkX211dGV4X3QgKl9fbXV0ZXgpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fcHRocmVh
ZF9tdXRleF9sb2NrICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKZXh0
ZXJuIGludCBwdGhyZWFkX211dGV4X2xvY2sgIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpICB0
aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fcHRocmVhZF9tdXRleF91bmxvY2sgIChwdGhyZWFk
X211dGV4X3QgKl9fbXV0ZXgpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhf
dW5sb2NrICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKCgogCgogCgpl
eHRlcm4gaW50IF9fcHRocmVhZF9tdXRleGF0dHJfaW5pdCAgKHB0aHJlYWRfbXV0ZXhhdHRyX3Qg
Kl9fYXR0cikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfaW5pdCAg
KHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQg
X19wdGhyZWFkX211dGV4YXR0cl9kZXN0cm95ICAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRy
KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95ICAocHRo
cmVhZF9tdXRleGF0dHJfdCAqX19hdHRyKSAgdGhyb3cgKCkgIDsKCiMgMzE1ICIvdXNyL2luY2x1
ZGUvcHRocmVhZC5oIiAzCgoKCiAKCiAKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2luaXQgIChw
dGhyZWFkX2NvbmRfdCAqX19jb25kLAoJCQkJICAgX19jb25zdCBwdGhyZWFkX2NvbmRhdHRyX3Qg
Kl9fY29uZF9hdHRyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfZGVz
dHJveSAgKHB0aHJlYWRfY29uZF90ICpfX2NvbmQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50
IHB0aHJlYWRfY29uZF9zaWduYWwgIChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSAgdGhyb3cgKCkg
IDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0ICAocHRocmVhZF9jb25kX3Qg
Kl9fY29uZCkgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF93YWl0ICAo
cHRocmVhZF9jb25kX3QgKl9fY29uZCwKCQkJCSAgIHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkg
IHRocm93ICgpICA7CgogCgoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX3RpbWVkd2FpdCAgKHB0
aHJlYWRfY29uZF90ICpfX2NvbmQsCgkJCQkJcHRocmVhZF9tdXRleF90ICpfX211dGV4LAoJCQkJ
CV9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX2Fic3RpbWUpICB0aHJvdyAoKSAgOwoKIAoKIApl
eHRlcm4gaW50IHB0aHJlYWRfY29uZGF0dHJfaW5pdCAgKHB0aHJlYWRfY29uZGF0dHJfdCAqX19h
dHRyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2Rlc3Ryb3kg
IChwdGhyZWFkX2NvbmRhdHRyX3QgKl9fYXR0cikgIHRocm93ICgpICA7CgoKIyA0MDggIi91c3Iv
aW5jbHVkZS9wdGhyZWFkLmgiIDMKCgoKIAoKIAoKCgoKCmV4dGVybiBpbnQgX19wdGhyZWFkX2tl
eV9jcmVhdGUgIChwdGhyZWFkX2tleV90ICpfX2tleSwKCQkJCSAgICAgIHZvaWQgKCpfX2Rlc3Ry
X2Z1bmN0aW9uKSAodm9pZCAqKSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9rZXlf
Y3JlYXRlICAocHRocmVhZF9rZXlfdCAqX19rZXksCgkJCQkgICAgdm9pZCAoKl9fZGVzdHJfZnVu
Y3Rpb24pICh2b2lkICopKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2tleV9k
ZWxldGUgIChwdGhyZWFkX2tleV90IF9fa2V5KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBf
X3B0aHJlYWRfc2V0c3BlY2lmaWMgIChwdGhyZWFkX2tleV90IF9fa2V5LAoJCQkJICAgICAgIF9f
Y29uc3Qgdm9pZCAqX19wb2ludGVyKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX3Nl
dHNwZWNpZmljICAocHRocmVhZF9rZXlfdCBfX2tleSwKCQkJCSAgICAgX19jb25zdCB2b2lkICpf
X3BvaW50ZXIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9pZCAqX19wdGhyZWFkX2dldHNwZWNp
ZmljICAocHRocmVhZF9rZXlfdCBfX2tleSkgIHRocm93ICgpICA7CmV4dGVybiB2b2lkICpwdGhy
ZWFkX2dldHNwZWNpZmljICAocHRocmVhZF9rZXlfdCBfX2tleSkgIHRocm93ICgpICA7CgoKIAoK
IAoKCgpleHRlcm4gaW50IF9fcHRocmVhZF9vbmNlICAocHRocmVhZF9vbmNlX3QgKl9fb25jZV9j
b250cm9sLAoJCQkJdm9pZCAoKl9faW5pdF9yb3V0aW5lKSAodm9pZCkpICB0aHJvdyAoKSAgOwpl
eHRlcm4gaW50IHB0aHJlYWRfb25jZSAgKHB0aHJlYWRfb25jZV90ICpfX29uY2VfY29udHJvbCwK
CQkJICAgICAgdm9pZCAoKl9faW5pdF9yb3V0aW5lKSAodm9pZCkpICB0aHJvdyAoKSAgOwoKCiAK
CiAKCmV4dGVybiBpbnQgcHRocmVhZF9zZXRjYW5jZWxzdGF0ZSAgKGludCBfX3N0YXRlLCBpbnQg
Kl9fb2xkc3RhdGUpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBwdGhyZWFkX3NldGNhbmNl
bHR5cGUgIChpbnQgX190eXBlLCBpbnQgKl9fb2xkdHlwZSkgIHRocm93ICgpICA7CgogCmV4dGVy
biBpbnQgcHRocmVhZF9jYW5jZWwgIChwdGhyZWFkX3QgX190aHJlYWQpICB0aHJvdyAoKSAgOwoK
IAoKCmV4dGVybiB2b2lkIHB0aHJlYWRfdGVzdGNhbmNlbCAgKHZvaWQpICB0aHJvdyAoKSAgOwoK
CiAKCgoKCgoKCgoKCmV4dGVybiB2b2lkIF9wdGhyZWFkX2NsZWFudXBfcHVzaCAgKHN0cnVjdCBf
cHRocmVhZF9jbGVhbnVwX2J1ZmZlciAqX19idWZmZXIsCgkJCQkJdm9pZCAoKl9fcm91dGluZSkg
KHZvaWQgKiksCgkJCQkJdm9pZCAqX19hcmcpICB0aHJvdyAoKSAgOwoKIAoKCgoKCmV4dGVybiB2
b2lkIF9wdGhyZWFkX2NsZWFudXBfcG9wICAoc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVy
ICpfX2J1ZmZlciwKCQkJCSAgICAgICBpbnQgX19leGVjdXRlKSAgdGhyb3cgKCkgIDsKCiAKCgoj
IDUxNCAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9zaWd0aHJlYWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCmV4dGVy
biBpbnQgcHRocmVhZF9zaWdtYXNrICAoaW50IF9faG93LCBfX2NvbnN0IF9fc2lnc2V0X3QgKl9f
bmV3bWFzaywKCQkJCSBfX3NpZ3NldF90ICpfX29sZG1hc2spICB0aHJvdyAoKSAgOwoKIApleHRl
cm4gaW50IHB0aHJlYWRfa2lsbCAgKHB0aHJlYWRfdCBfX3RocmVhZCwgaW50IF9fc2lnbm8pICB0
aHJvdyAoKSAgOwoKCiMgNTE3ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCgoKIAoKIAoK
CgoKCgoKCgoKZXh0ZXJuIGludCBfX3B0aHJlYWRfYXRmb3JrICAodm9pZCAoKl9fcHJlcGFyZSkg
KHZvaWQpLAoJCQkJICB2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKCQkJCSAgdm9pZCAoKl9fY2hp
bGQpICh2b2lkKSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9hdGZvcmsgICh2b2lk
ICgqX19wcmVwYXJlKSAodm9pZCksCgkJCQl2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKCQkJCXZv
aWQgKCpfX2NoaWxkKSAodm9pZCkpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiB2b2lkIHB0aHJl
YWRfa2lsbF9vdGhlcl90aHJlYWRzX25wICAodm9pZCkgIHRocm93ICgpICA7CgoKIApleHRlcm4g
dm9pZCBfX3B0aHJlYWRfaW5pdGlhbGl6ZSAgKHZvaWQpICB0aHJvdyAoKSAgOwoKfSAKCgojIDcx
ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9p
bmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAyIDMKCgoKCgoKCgojIDg3ICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0
bF9hbGxvYy5oIiAzCgojIDk3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIu
OTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAzCgojIDExNSAiL3Vz
ci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdGxfYWxsb2MuaCIgMwoKCgoKCgoKCgogCgoKCgoKIAogCgoKCgoKCgoKCnRlbXBs
YXRlIDxpbnQgX19pbnN0PgpjbGFzcyBfX21hbGxvY19hbGxvY190ZW1wbGF0ZSB7Cgpwcml2YXRl
OgoKICBzdGF0aWMgdm9pZCogX1Nfb29tX21hbGxvYyhzaXplX3QpOwogIHN0YXRpYyB2b2lkKiBf
U19vb21fcmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKCgogIHN0YXRpYyB2b2lkICgqIF9fbWFsbG9j
X2FsbG9jX29vbV9oYW5kbGVyKSgpOwoKCnB1YmxpYzoKCiAgc3RhdGljIHZvaWQqIGFsbG9jYXRl
KHNpemVfdCBfX24pCiAgewogICAgdm9pZCogX19yZXN1bHQgPSBtYWxsb2MoX19uKTsKICAgIGlm
ICgwID09IF9fcmVzdWx0KSBfX3Jlc3VsdCA9IF9TX29vbV9tYWxsb2MoX19uKTsKICAgIHJldHVy
biBfX3Jlc3VsdDsKICB9CgogIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGUodm9pZCogX19wLCBzaXpl
X3QgICkKICB7CiAgICBmcmVlKF9fcCk7CiAgfQoKICBzdGF0aWMgdm9pZCogcmVhbGxvY2F0ZSh2
b2lkKiBfX3AsIHNpemVfdCAgLCBzaXplX3QgX19uZXdfc3opCiAgewogICAgdm9pZCogX19yZXN1
bHQgPSByZWFsbG9jKF9fcCwgX19uZXdfc3opOwogICAgaWYgKDAgPT0gX19yZXN1bHQpIF9fcmVz
dWx0ID0gX1Nfb29tX3JlYWxsb2MoX19wLCBfX25ld19zeik7CiAgICByZXR1cm4gX19yZXN1bHQ7
CiAgfQoKICBzdGF0aWMgdm9pZCAoKiBfX3NldF9tYWxsb2NfaGFuZGxlcih2b2lkICgqX19mKSgp
KSkoKQogIHsKICAgIHZvaWQgKCogX19vbGQpKCkgPSBfX21hbGxvY19hbGxvY19vb21faGFuZGxl
cjsKICAgIF9fbWFsbG9jX2FsbG9jX29vbV9oYW5kbGVyID0gX19mOwogICAgcmV0dXJuKF9fb2xk
KTsKICB9Cgp9OwoKIAoKCnRlbXBsYXRlIDxpbnQgX19pbnN0Pgp2b2lkICgqIF9fbWFsbG9jX2Fs
bG9jX3RlbXBsYXRlPF9faW5zdD46Ol9fbWFsbG9jX2FsbG9jX29vbV9oYW5kbGVyKSgpID0gMDsK
Cgp0ZW1wbGF0ZSA8aW50IF9faW5zdD4Kdm9pZCoKX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8X19p
bnN0Pjo6X1Nfb29tX21hbGxvYyhzaXplX3QgX19uKQp7CiAgICB2b2lkICgqIF9fbXlfbWFsbG9j
X2hhbmRsZXIpKCk7CiAgICB2b2lkKiBfX3Jlc3VsdDsKCiAgICBmb3IgKDs7KSB7CiAgICAgICAg
X19teV9tYWxsb2NfaGFuZGxlciA9IF9fbWFsbG9jX2FsbG9jX29vbV9oYW5kbGVyOwogICAgICAg
IGlmICgwID09IF9fbXlfbWFsbG9jX2hhbmRsZXIpIHsgY2VyciA8PCAib3V0IG9mIG1lbW9yeSIg
PDwgZW5kbDsgZXhpdCgxKSA7IH0KICAgICAgICAoKl9fbXlfbWFsbG9jX2hhbmRsZXIpKCk7CiAg
ICAgICAgX19yZXN1bHQgPSBtYWxsb2MoX19uKTsKICAgICAgICBpZiAoX19yZXN1bHQpIHJldHVy
bihfX3Jlc3VsdCk7CiAgICB9Cn0KCnRlbXBsYXRlIDxpbnQgX19pbnN0Pgp2b2lkKiBfX21hbGxv
Y19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+OjpfU19vb21fcmVhbGxvYyh2b2lkKiBfX3AsIHNpemVf
dCBfX24pCnsKICAgIHZvaWQgKCogX19teV9tYWxsb2NfaGFuZGxlcikoKTsKICAgIHZvaWQqIF9f
cmVzdWx0OwoKICAgIGZvciAoOzspIHsKICAgICAgICBfX215X21hbGxvY19oYW5kbGVyID0gX19t
YWxsb2NfYWxsb2Nfb29tX2hhbmRsZXI7CiAgICAgICAgaWYgKDAgPT0gX19teV9tYWxsb2NfaGFu
ZGxlcikgeyBjZXJyIDw8ICJvdXQgb2YgbWVtb3J5IiA8PCBlbmRsOyBleGl0KDEpIDsgfQogICAg
ICAgICgqX19teV9tYWxsb2NfaGFuZGxlcikoKTsKICAgICAgICBfX3Jlc3VsdCA9IHJlYWxsb2Mo
X19wLCBfX24pOwogICAgICAgIGlmIChfX3Jlc3VsdCkgcmV0dXJuKF9fcmVzdWx0KTsKICAgIH0K
fQoKdHlwZWRlZiBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTwwPiBtYWxsb2NfYWxsb2M7Cgp0ZW1w
bGF0ZTxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4KY2xhc3Mgc2ltcGxlX2FsbG9jIHsKCnB1Ymxp
YzoKICAgIHN0YXRpYyBfVHAqIGFsbG9jYXRlKHNpemVfdCBfX24pCiAgICAgIHsgcmV0dXJuIDAg
PT0gX19uID8gMCA6IChfVHAqKSBfQWxsb2M6OmFsbG9jYXRlKF9fbiAqIHNpemVvZiAoX1RwKSk7
IH0KICAgIHN0YXRpYyBfVHAqIGFsbG9jYXRlKHZvaWQpCiAgICAgIHsgcmV0dXJuIChfVHAqKSBf
QWxsb2M6OmFsbG9jYXRlKHNpemVvZiAoX1RwKSk7IH0KICAgIHN0YXRpYyB2b2lkIGRlYWxsb2Nh
dGUoX1RwKiBfX3AsIHNpemVfdCBfX24pCiAgICAgIHsgaWYgKDAgIT0gX19uKSBfQWxsb2M6OmRl
YWxsb2NhdGUoX19wLCBfX24gKiBzaXplb2YgKF9UcCkpOyB9CiAgICBzdGF0aWMgdm9pZCBkZWFs
bG9jYXRlKF9UcCogX19wKQogICAgICB7IF9BbGxvYzo6ZGVhbGxvY2F0ZShfX3AsIHNpemVvZiAo
X1RwKSk7IH0KfTsKCiAKIAogCiAKIAp0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPgpjbGFzcyBkZWJ1
Z19hbGxvYyB7Cgpwcml2YXRlOgoKICBlbnVtIHtfU19leHRyYSA9IDh9OyAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAKCnB1YmxpYzoKCiAgc3Rh
dGljIHZvaWQqIGFsbG9jYXRlKHNpemVfdCBfX24pCiAgewogICAgY2hhciogX19yZXN1bHQgPSAo
Y2hhciopX0FsbG9jOjphbGxvY2F0ZShfX24gKyBfU19leHRyYSk7CiAgICAqKHNpemVfdCopX19y
ZXN1bHQgPSBfX247CiAgICByZXR1cm4gX19yZXN1bHQgKyBfU19leHRyYTsKICB9CgogIHN0YXRp
YyB2b2lkIGRlYWxsb2NhdGUodm9pZCogX19wLCBzaXplX3QgX19uKQogIHsKICAgIGNoYXIqIF9f
cmVhbF9wID0gKGNoYXIqKV9fcCAtIF9TX2V4dHJhOwogICAgKCh2b2lkKSAoKCAqKHNpemVfdCop
X19yZWFsX3AgPT0gX19uICkgPyAwIDoJKF9fYXNzZXJ0X2ZhaWwgKCIqKHNpemVfdCopX19yZWFs
X3AgPT0gX19uIiAsCSIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8u
Li8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiwgMjYzLCBfX1BSRVRUWV9GVU5D
VElPTl9fICksIDApKSkgOwogICAgX0FsbG9jOjpkZWFsbG9jYXRlKF9fcmVhbF9wLCBfX24gKyBf
U19leHRyYSk7CiAgfQoKICBzdGF0aWMgdm9pZCogcmVhbGxvY2F0ZSh2b2lkKiBfX3AsIHNpemVf
dCBfX29sZF9zeiwgc2l6ZV90IF9fbmV3X3N6KQogIHsKICAgIGNoYXIqIF9fcmVhbF9wID0gKGNo
YXIqKV9fcCAtIF9TX2V4dHJhOwogICAgKCh2b2lkKSAoKCAqKHNpemVfdCopX19yZWFsX3AgPT0g
X19vbGRfc3ogKSA/IDAgOgkoX19hc3NlcnRfZmFpbCAoIiooc2l6ZV90KilfX3JlYWxfcCA9PSBf
X29sZF9zeiIgLAkiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4v
Li4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIsIDI3MCwgX19QUkVUVFlfRlVOQ1RJ
T05fXyApLCAwKSkpIDsKICAgIGNoYXIqIF9fcmVzdWx0ID0gKGNoYXIqKQogICAgICBfQWxsb2M6
OnJlYWxsb2NhdGUoX19yZWFsX3AsIF9fb2xkX3N6ICsgX1NfZXh0cmEsIF9fbmV3X3N6ICsgX1Nf
ZXh0cmEpOwogICAgKihzaXplX3QqKV9fcmVzdWx0ID0gX19uZXdfc3o7CiAgICByZXR1cm4gX19y
ZXN1bHQgKyBfU19leHRyYTsKICB9Cgp9OwoKCgoKCgoKCgoKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCgogCiAKIAogCiAKIAogCiAKIAoKCgoKCgoKdGVtcGxhdGUgPGJvb2wgdGhyZWFkcywg
aW50IGluc3Q+CmNsYXNzIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZSB7Cgpwcml2YXRlOgogICAK
ICAgCgogICAgZW51bSB7X0FMSUdOID0gOH07CiAgICBlbnVtIHtfTUFYX0JZVEVTID0gMTI4fTsK
ICAgIGVudW0ge19ORlJFRUxJU1RTID0gX01BWF9CWVRFUy9fQUxJR059OwoKICBzdGF0aWMgc2l6
ZV90CiAgX1Nfcm91bmRfdXAoc2l6ZV90IF9fYnl0ZXMpCiAgICB7IHJldHVybiAoKChfX2J5dGVz
KSArIF9BTElHTi0xKSAmIH4oX0FMSUdOIC0gMSkpOyB9Cgpwcml2YXRlIDoKICB1bmlvbiBfT2Jq
IHsKICAgICAgICB1bmlvbiBfT2JqKiBfTV9mcmVlX2xpc3RfbGluazsKICAgICAgICBjaGFyIF9N
X2NsaWVudF9kYXRhWzFdOyAgICAgCiAgfTsKcHJpdmF0ZToKCgoKCiAgICBzdGF0aWMgX09iaiog
dm9sYXRpbGUgIF9TX2ZyZWVfbGlzdFtfTkZSRUVMSVNUU107CgogIHN0YXRpYyAgc2l6ZV90IF9T
X2ZyZWVsaXN0X2luZGV4KHNpemVfdCBfX2J5dGVzKSB7CiAgICAgICAgcmV0dXJuICgoKF9fYnl0
ZXMpICsgX0FMSUdOLTEpL19BTElHTiAtIDEpOwogIH0KCiAgIAogIHN0YXRpYyB2b2lkKiBfU19y
ZWZpbGwoc2l6ZV90IF9fbik7CiAgIAogICAKICBzdGF0aWMgY2hhciogX1NfY2h1bmtfYWxsb2Mo
c2l6ZV90IF9fc2l6ZSwgaW50JiBfX25vYmpzKTsKCiAgIAogIHN0YXRpYyBjaGFyKiBfU19zdGFy
dF9mcmVlOwogIHN0YXRpYyBjaGFyKiBfU19lbmRfZnJlZTsKICBzdGF0aWMgc2l6ZV90IF9TX2hl
YXBfc2l6ZTsKCgoKCgoKCgogICAgc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBfU19ub2RlX2FsbG9j
YXRvcl9sb2NrOwoKCgoKCgojIDM4OSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51
eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIgMwoKCiAgICBj
bGFzcyBfTG9jayB7CiAgICAgICAgcHVibGljOgogICAgICAgICAgICBfTG9jaygpIHsgaWYgKHRo
cmVhZHMpIHB0aHJlYWRfbXV0ZXhfbG9jaygmX1Nfbm9kZV9hbGxvY2F0b3JfbG9jaykgOyB9CiAg
ICAgICAgICAgIH5fTG9jaygpIHsgaWYgKHRocmVhZHMpIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZf
U19ub2RlX2FsbG9jYXRvcl9sb2NrKSA7IH0KICAgIH07CiAgICBmcmllbmQgY2xhc3MgX0xvY2s7
CgpwdWJsaWM6CgogICAKICBzdGF0aWMgdm9pZCogYWxsb2NhdGUoc2l6ZV90IF9fbikKICB7CiAg
ICBfT2JqKiB2b2xhdGlsZSAqIF9fbXlfZnJlZV9saXN0OwogICAgX09iaiogICBfX3Jlc3VsdDsK
CiAgICBpZiAoX19uID4gKHNpemVfdCkgX01BWF9CWVRFUykgewogICAgICAgIHJldHVybihtYWxs
b2NfYWxsb2M6OmFsbG9jYXRlKF9fbikpOwogICAgfQogICAgX19teV9mcmVlX2xpc3QgPSBfU19m
cmVlX2xpc3QgKyBfU19mcmVlbGlzdF9pbmRleChfX24pOwogICAgIAogICAgIAogICAgIAoKICAg
ICAgICAgCiAgICAgICAgX0xvY2sgX19sb2NrX2luc3RhbmNlOwoKICAgIF9fcmVzdWx0ID0gKl9f
bXlfZnJlZV9saXN0OwogICAgaWYgKF9fcmVzdWx0ID09IDApIHsKICAgICAgICB2b2lkKiBfX3Ig
PSBfU19yZWZpbGwoX1Nfcm91bmRfdXAoX19uKSk7CiAgICAgICAgcmV0dXJuIF9fcjsKICAgIH0K
ICAgICpfX215X2ZyZWVfbGlzdCA9IF9fcmVzdWx0IC0+IF9NX2ZyZWVfbGlzdF9saW5rOwogICAg
cmV0dXJuIChfX3Jlc3VsdCk7CiAgfTsKCiAgIAogIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGUodm9p
ZCogX19wLCBzaXplX3QgX19uKQogIHsKICAgIF9PYmoqIF9fcSA9IChfT2JqKilfX3A7CiAgICBf
T2JqKiB2b2xhdGlsZSAqIF9fbXlfZnJlZV9saXN0OwoKICAgIGlmIChfX24gPiAoc2l6ZV90KSBf
TUFYX0JZVEVTKSB7CiAgICAgICAgbWFsbG9jX2FsbG9jOjpkZWFsbG9jYXRlKF9fcCwgX19uKTsK
ICAgICAgICByZXR1cm47CiAgICB9CiAgICBfX215X2ZyZWVfbGlzdCA9IF9TX2ZyZWVfbGlzdCAr
IF9TX2ZyZWVsaXN0X2luZGV4KF9fbik7CiAgICAgCgogICAgICAgICAKICAgICAgICBfTG9jayBf
X2xvY2tfaW5zdGFuY2U7CgogICAgX19xIC0+IF9NX2ZyZWVfbGlzdF9saW5rID0gKl9fbXlfZnJl
ZV9saXN0OwogICAgKl9fbXlfZnJlZV9saXN0ID0gX19xOwogICAgIAogIH0KCiAgc3RhdGljIHZv
aWQqIHJlYWxsb2NhdGUodm9pZCogX19wLCBzaXplX3QgX19vbGRfc3osIHNpemVfdCBfX25ld19z
eik7Cgp9IDsKCnR5cGVkZWYgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPCB0cnVlICwgMD4gYWxs
b2M7CnR5cGVkZWYgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPGZhbHNlLCAwPiBzaW5nbGVfY2xp
ZW50X2FsbG9jOwoKCgogCiAKIAogCnRlbXBsYXRlIDxib29sIF9fdGhyZWFkcywgaW50IF9faW5z
dD4KY2hhcioKX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0Pjo6X1Nf
Y2h1bmtfYWxsb2Moc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBfX25vYmpzKQp7CiAgICBjaGFyKiBf
X3Jlc3VsdDsKICAgIHNpemVfdCBfX3RvdGFsX2J5dGVzID0gX19zaXplICogX19ub2JqczsKICAg
IHNpemVfdCBfX2J5dGVzX2xlZnQgPSBfU19lbmRfZnJlZSAtIF9TX3N0YXJ0X2ZyZWU7CgogICAg
aWYgKF9fYnl0ZXNfbGVmdCA+PSBfX3RvdGFsX2J5dGVzKSB7CiAgICAgICAgX19yZXN1bHQgPSBf
U19zdGFydF9mcmVlOwogICAgICAgIF9TX3N0YXJ0X2ZyZWUgKz0gX190b3RhbF9ieXRlczsKICAg
ICAgICByZXR1cm4oX19yZXN1bHQpOwogICAgfSBlbHNlIGlmIChfX2J5dGVzX2xlZnQgPj0gX19z
aXplKSB7CiAgICAgICAgX19ub2JqcyA9IChpbnQpKF9fYnl0ZXNfbGVmdC9fX3NpemUpOwogICAg
ICAgIF9fdG90YWxfYnl0ZXMgPSBfX3NpemUgKiBfX25vYmpzOwogICAgICAgIF9fcmVzdWx0ID0g
X1Nfc3RhcnRfZnJlZTsKICAgICAgICBfU19zdGFydF9mcmVlICs9IF9fdG90YWxfYnl0ZXM7CiAg
ICAgICAgcmV0dXJuKF9fcmVzdWx0KTsKICAgIH0gZWxzZSB7CiAgICAgICAgc2l6ZV90IF9fYnl0
ZXNfdG9fZ2V0ID0KCSAgMiAqIF9fdG90YWxfYnl0ZXMgKyBfU19yb3VuZF91cChfU19oZWFwX3Np
emUgPj4gNCk7CiAgICAgICAgIAogICAgICAgIGlmIChfX2J5dGVzX2xlZnQgPiAwKSB7CiAgICAg
ICAgICAgIF9PYmoqIHZvbGF0aWxlICogX19teV9mcmVlX2xpc3QgPQogICAgICAgICAgICAgICAg
ICAgICAgICBfU19mcmVlX2xpc3QgKyBfU19mcmVlbGlzdF9pbmRleChfX2J5dGVzX2xlZnQpOwoK
ICAgICAgICAgICAgKChfT2JqKilfU19zdGFydF9mcmVlKSAtPiBfTV9mcmVlX2xpc3RfbGluayA9
ICpfX215X2ZyZWVfbGlzdDsKICAgICAgICAgICAgKl9fbXlfZnJlZV9saXN0ID0gKF9PYmoqKV9T
X3N0YXJ0X2ZyZWU7CiAgICAgICAgfQogICAgICAgIF9TX3N0YXJ0X2ZyZWUgPSAoY2hhciopbWFs
bG9jKF9fYnl0ZXNfdG9fZ2V0KTsKICAgICAgICBpZiAoMCA9PSBfU19zdGFydF9mcmVlKSB7CiAg
ICAgICAgICAgIHNpemVfdCBfX2k7CiAgICAgICAgICAgIF9PYmoqIHZvbGF0aWxlICogX19teV9m
cmVlX2xpc3Q7CgkgICAgX09iaiogX19wOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIAogICAgICAgICAgICBmb3IgKF9faSA9IF9fc2l6ZTsgX19pIDw9IF9NQVhfQllU
RVM7IF9faSArPSBfQUxJR04pIHsKICAgICAgICAgICAgICAgIF9fbXlfZnJlZV9saXN0ID0gX1Nf
ZnJlZV9saXN0ICsgX1NfZnJlZWxpc3RfaW5kZXgoX19pKTsKICAgICAgICAgICAgICAgIF9fcCA9
ICpfX215X2ZyZWVfbGlzdDsKICAgICAgICAgICAgICAgIGlmICgwICE9IF9fcCkgewogICAgICAg
ICAgICAgICAgICAgICpfX215X2ZyZWVfbGlzdCA9IF9fcCAtPiBfTV9mcmVlX2xpc3RfbGluazsK
ICAgICAgICAgICAgICAgICAgICBfU19zdGFydF9mcmVlID0gKGNoYXIqKV9fcDsKICAgICAgICAg
ICAgICAgICAgICBfU19lbmRfZnJlZSA9IF9TX3N0YXJ0X2ZyZWUgKyBfX2k7CiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuKF9TX2NodW5rX2FsbG9jKF9fc2l6ZSwgX19ub2JqcykpOwogICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgIH0KCSAgICBfU19lbmRfZnJlZSA9IDA7CSAKICAgICAgICAgICAgX1Nfc3RhcnRf
ZnJlZSA9IChjaGFyKiltYWxsb2NfYWxsb2M6OmFsbG9jYXRlKF9fYnl0ZXNfdG9fZ2V0KTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAg
X1NfaGVhcF9zaXplICs9IF9fYnl0ZXNfdG9fZ2V0OwogICAgICAgIF9TX2VuZF9mcmVlID0gX1Nf
c3RhcnRfZnJlZSArIF9fYnl0ZXNfdG9fZ2V0OwogICAgICAgIHJldHVybihfU19jaHVua19hbGxv
YyhfX3NpemUsIF9fbm9ianMpKTsKICAgIH0KfQoKCiAKIAogCnRlbXBsYXRlIDxib29sIF9fdGhy
ZWFkcywgaW50IF9faW5zdD4Kdm9pZCoKX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFk
cywgX19pbnN0Pjo6X1NfcmVmaWxsKHNpemVfdCBfX24pCnsKICAgIGludCBfX25vYmpzID0gMjA7
CiAgICBjaGFyKiBfX2NodW5rID0gX1NfY2h1bmtfYWxsb2MoX19uLCBfX25vYmpzKTsKICAgIF9P
YmoqIHZvbGF0aWxlICogX19teV9mcmVlX2xpc3Q7CiAgICBfT2JqKiBfX3Jlc3VsdDsKICAgIF9P
YmoqIF9fY3VycmVudF9vYmo7CiAgICBfT2JqKiBfX25leHRfb2JqOwogICAgaW50IF9faTsKCiAg
ICBpZiAoMSA9PSBfX25vYmpzKSByZXR1cm4oX19jaHVuayk7CiAgICBfX215X2ZyZWVfbGlzdCA9
IF9TX2ZyZWVfbGlzdCArIF9TX2ZyZWVsaXN0X2luZGV4KF9fbik7CgogICAgIAogICAgICBfX3Jl
c3VsdCA9IChfT2JqKilfX2NodW5rOwogICAgICAqX19teV9mcmVlX2xpc3QgPSBfX25leHRfb2Jq
ID0gKF9PYmoqKShfX2NodW5rICsgX19uKTsKICAgICAgZm9yIChfX2kgPSAxOyA7IF9faSsrKSB7
CiAgICAgICAgX19jdXJyZW50X29iaiA9IF9fbmV4dF9vYmo7CiAgICAgICAgX19uZXh0X29iaiA9
IChfT2JqKikoKGNoYXIqKV9fbmV4dF9vYmogKyBfX24pOwogICAgICAgIGlmIChfX25vYmpzIC0g
MSA9PSBfX2kpIHsKICAgICAgICAgICAgX19jdXJyZW50X29iaiAtPiBfTV9mcmVlX2xpc3RfbGlu
ayA9IDA7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9f
Y3VycmVudF9vYmogLT4gX01fZnJlZV9saXN0X2xpbmsgPSBfX25leHRfb2JqOwogICAgICAgIH0K
ICAgICAgfQogICAgcmV0dXJuKF9fcmVzdWx0KTsKfQoKdGVtcGxhdGUgPGJvb2wgdGhyZWFkcywg
aW50IGluc3Q+CnZvaWQqCl9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTx0aHJlYWRzLCBpbnN0Pjo6
cmVhbGxvY2F0ZSh2b2lkKiBfX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX19vbGRfc3osCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uZXdfc3opCnsKICAgIHZvaWQq
IF9fcmVzdWx0OwogICAgc2l6ZV90IF9fY29weV9zejsKCiAgICBpZiAoX19vbGRfc3ogPiAoc2l6
ZV90KSBfTUFYX0JZVEVTICYmIF9fbmV3X3N6ID4gKHNpemVfdCkgX01BWF9CWVRFUykgewogICAg
ICAgIHJldHVybihyZWFsbG9jKF9fcCwgX19uZXdfc3opKTsKICAgIH0KICAgIGlmIChfU19yb3Vu
ZF91cChfX29sZF9zeikgPT0gX1Nfcm91bmRfdXAoX19uZXdfc3opKSByZXR1cm4oX19wKTsKICAg
IF9fcmVzdWx0ID0gYWxsb2NhdGUoX19uZXdfc3opOwogICAgX19jb3B5X3N6ID0gX19uZXdfc3og
PiBfX29sZF9zej8gX19vbGRfc3ogOiBfX25ld19zejsKICAgIG1lbWNweShfX3Jlc3VsdCwgX19w
LCBfX2NvcHlfc3opOwogICAgZGVhbGxvY2F0ZShfX3AsIF9fb2xkX3N6KTsKICAgIHJldHVybihf
X3Jlc3VsdCk7Cn0KCgogICAgdGVtcGxhdGUgPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0Pgog
ICAgcHRocmVhZF9tdXRleF90CiAgICBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRz
LCBfX2luc3Q+OjpfU19ub2RlX2FsbG9jYXRvcl9sb2NrCiAgICAgICAgPSB7MCwgMCwgMCwgUFRI
UkVBRF9NVVRFWF9GQVNUX05QLCB7MCwgMH19IDsKCgoKCgoKCgoKIyA2MDIgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMv
c3RsX2FsbG9jLmgiIDMKCgojIDY4OSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51
eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIgMwoKCnRlbXBs
YXRlIDxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4KY2hhciogX19kZWZhdWx0X2FsbG9jX3Rl
bXBsYXRlPF9fdGhyZWFkcywgX19pbnN0Pjo6X1Nfc3RhcnRfZnJlZSA9IDA7Cgp0ZW1wbGF0ZSA8
Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CmNoYXIqIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0
ZTxfX3RocmVhZHMsIF9faW5zdD46Ol9TX2VuZF9mcmVlID0gMDsKCnRlbXBsYXRlIDxib29sIF9f
dGhyZWFkcywgaW50IF9faW5zdD4Kc2l6ZV90IF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3Ro
cmVhZHMsIF9faW5zdD46Ol9TX2hlYXBfc2l6ZSA9IDA7Cgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVh
ZHMsIGludCBfX2luc3Q+Cl9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5z
dD46Ol9PYmoqIHZvbGF0aWxlIApfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBf
X2luc3Q+IDo6X1NfZnJlZV9saXN0WwogICAgX05GUkVFTElTVFMKXSA9IHswLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCB9OwogCiAKIAoKCgoKCgoKCgoKIAog
CiAKIAogCiAKIAoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpjbGFzcyBhbGxvY2F0b3IgewogIHR5
cGVkZWYgYWxsb2MgX0FsbG9jOyAgICAgICAgICAgCnB1YmxpYzoKICB0eXBlZGVmIHNpemVfdCAg
ICAgc2l6ZV90eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90ICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlw
ZWRlZiBfVHAqICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBjb25zdCBfVHAqIGNvbnN0X3BvaW50
ZXI7CiAgdHlwZWRlZiBfVHAmICAgICAgIHJlZmVyZW5jZTsKICB0eXBlZGVmIGNvbnN0IF9UcCYg
Y29uc3RfcmVmZXJlbmNlOwogIHR5cGVkZWYgX1RwICAgICAgICB2YWx1ZV90eXBlOwoKICB0ZW1w
bGF0ZSA8Y2xhc3MgX1RwMT4gc3RydWN0IHJlYmluZCB7CiAgICB0eXBlZGVmIGFsbG9jYXRvcjxf
VHAxPiBvdGhlcjsKICB9OwoKICBhbGxvY2F0b3IoKSB0aHJvdygpICB7fQogIGFsbG9jYXRvcihj
b25zdCBhbGxvY2F0b3ImKSB0aHJvdygpICB7fQogIHRlbXBsYXRlIDxjbGFzcyBfVHAxPiBhbGxv
Y2F0b3IoY29uc3QgYWxsb2NhdG9yPF9UcDE+JikgdGhyb3coKSAge30KICB+YWxsb2NhdG9yKCkg
dGhyb3coKSAge30KCiAgcG9pbnRlciBhZGRyZXNzKHJlZmVyZW5jZSBfX3gpIGNvbnN0IHsgcmV0
dXJuICZfX3g7IH0KICBjb25zdF9wb2ludGVyIGFkZHJlc3MoY29uc3RfcmVmZXJlbmNlIF9feCkg
Y29uc3QgeyByZXR1cm4gJl9feDsgfQoKICAgCiAgIAogIF9UcCogYWxsb2NhdGUoc2l6ZV90eXBl
IF9fbiwgY29uc3Qgdm9pZCogPSAwKSB7CiAgICByZXR1cm4gX19uICE9IDAgPyBzdGF0aWNfY2Fz
dDxfVHAqPihfQWxsb2M6OmFsbG9jYXRlKF9fbiAqIHNpemVvZihfVHApKSkKICAgICAgICAgICAg
ICAgICAgICA6IDA7CiAgfQoKICAgCiAgdm9pZCBkZWFsbG9jYXRlKHBvaW50ZXIgX19wLCBzaXpl
X3R5cGUgX19uKQogICAgeyBfQWxsb2M6OmRlYWxsb2NhdGUoX19wLCBfX24gKiBzaXplb2YoX1Rw
KSk7IH0KCiAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgdGhyb3coKSAKICAgIHsgcmV0dXJu
IHNpemVfdCgtMSkgLyBzaXplb2YoX1RwKTsgfQoKICB2b2lkIGNvbnN0cnVjdChwb2ludGVyIF9f
cCwgY29uc3QgX1RwJiBfX3ZhbCkgeyBuZXcoX19wKSBfVHAoX192YWwpOyB9CiAgdm9pZCBkZXN0
cm95KHBvaW50ZXIgX19wKSB7IF9fcC0+fl9UcCgpOyB9Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIGFs
bG9jYXRvcjx2b2lkPiB7CiAgdHlwZWRlZiBzaXplX3QgICAgICBzaXplX3R5cGU7CiAgdHlwZWRl
ZiBwdHJkaWZmX3QgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB2b2lkKiAgICAgICBwb2lu
dGVyOwogIHR5cGVkZWYgY29uc3Qgdm9pZCogY29uc3RfcG9pbnRlcjsKICB0eXBlZGVmIHZvaWQg
ICAgICAgIHZhbHVlX3R5cGU7CgogIHRlbXBsYXRlIDxjbGFzcyBfVHAxPiBzdHJ1Y3QgcmViaW5k
IHsKICAgIHR5cGVkZWYgYWxsb2NhdG9yPF9UcDE+IG90aGVyOwogIH07Cn07CgoKdGVtcGxhdGUg
PGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGFsbG9j
YXRvcjxfVDE+JiwgY29uc3QgYWxsb2NhdG9yPF9UMj4mKQp7CiAgcmV0dXJuIHRydWU7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBhbGxvY2F0b3I8X1QxPiYsIGNvbnN0IGFsbG9jYXRvcjxfVDI+JikKewogIHJldHVybiBmYWxz
ZTsKfQoKIAogCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4Kc3Ry
dWN0IF9fYWxsb2NhdG9yIHsKICBfQWxsb2MgX191bmRlcmx5aW5nX2FsbG9jOwoKICB0eXBlZGVm
IHNpemVfdCAgICBzaXplX3R5cGU7CiAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBl
OwogIHR5cGVkZWYgX1RwKiAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgY29uc3QgX1RwKiBjb25z
dF9wb2ludGVyOwogIHR5cGVkZWYgX1RwJiAgICAgICByZWZlcmVuY2U7CiAgdHlwZWRlZiBjb25z
dCBfVHAmIGNvbnN0X3JlZmVyZW5jZTsKICB0eXBlZGVmIF9UcCAgICAgICAgdmFsdWVfdHlwZTsK
CiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+IHN0cnVjdCByZWJpbmQgewogICAgdHlwZWRlZiBfX2Fs
bG9jYXRvcjxfVHAxLCBfQWxsb2M+IG90aGVyOwogIH07CgogIF9fYWxsb2NhdG9yKCkgdGhyb3co
KSAge30KICBfX2FsbG9jYXRvcihjb25zdCBfX2FsbG9jYXRvciYgX19hKSB0aHJvdygpIAogICAg
OiBfX3VuZGVybHlpbmdfYWxsb2MoX19hLl9fdW5kZXJseWluZ19hbGxvYykge30KICB0ZW1wbGF0
ZSA8Y2xhc3MgX1RwMT4KICBfX2FsbG9jYXRvcihjb25zdCBfX2FsbG9jYXRvcjxfVHAxLCBfQWxs
b2M+JiBfX2EpIHRocm93KCkgCiAgICA6IF9fdW5kZXJseWluZ19hbGxvYyhfX2EuX191bmRlcmx5
aW5nX2FsbG9jKSB7fQogIH5fX2FsbG9jYXRvcigpIHRocm93KCkgIHt9CgogIHBvaW50ZXIgYWRk
cmVzcyhyZWZlcmVuY2UgX194KSBjb25zdCB7IHJldHVybiAmX194OyB9CiAgY29uc3RfcG9pbnRl
ciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSBfX3gpIGNvbnN0IHsgcmV0dXJuICZfX3g7IH0KCiAg
IAogIF9UcCogYWxsb2NhdGUoc2l6ZV90eXBlIF9fbiwgY29uc3Qgdm9pZCogPSAwKSB7CiAgICBy
ZXR1cm4gX19uICE9IDAKICAgICAgICA/IHN0YXRpY19jYXN0PF9UcCo+KF9fdW5kZXJseWluZ19h
bGxvYy5hbGxvY2F0ZShfX24gKiBzaXplb2YoX1RwKSkpCiAgICAgICAgOiAwOwogIH0KCiAgIAog
IHZvaWQgZGVhbGxvY2F0ZShwb2ludGVyIF9fcCwgc2l6ZV90eXBlIF9fbikKICAgIHsgX191bmRl
cmx5aW5nX2FsbG9jLmRlYWxsb2NhdGUoX19wLCBfX24gKiBzaXplb2YoX1RwKSk7IH0KCiAgc2l6
ZV90eXBlIG1heF9zaXplKCkgY29uc3QgdGhyb3coKSAKICAgIHsgcmV0dXJuIHNpemVfdCgtMSkg
LyBzaXplb2YoX1RwKTsgfQoKICB2b2lkIGNvbnN0cnVjdChwb2ludGVyIF9fcCwgY29uc3QgX1Rw
JiBfX3ZhbCkgeyBuZXcoX19wKSBfVHAoX192YWwpOyB9CiAgdm9pZCBkZXN0cm95KHBvaW50ZXIg
X19wKSB7IF9fcC0+fl9UcCgpOyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPgpjbGFzcyBf
X2FsbG9jYXRvcjx2b2lkLCBfQWxsb2M+IHsKICB0eXBlZGVmIHNpemVfdCAgICAgIHNpemVfdHlw
ZTsKICB0eXBlZGVmIHB0cmRpZmZfdCAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQq
ICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBjb25zdCB2b2lkKiBjb25zdF9wb2ludGVyOwogIHR5
cGVkZWYgdm9pZCAgICAgICAgdmFsdWVfdHlwZTsKCiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+IHN0
cnVjdCByZWJpbmQgewogICAgdHlwZWRlZiBfX2FsbG9jYXRvcjxfVHAxLCBfQWxsb2M+IG90aGVy
OwogIH07Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CmlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgX19hbGxvY2F0b3I8X1RwLCBfQWxsb2M+JiBfX2ExLAogICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IF9fYWxsb2NhdG9yPF9UcCwgX0FsbG9jPiYgX19hMikKewog
IHJldHVybiBfX2ExLl9fdW5kZXJseWluZ19hbGxvYyA9PSBfX2EyLl9fdW5kZXJseWluZ19hbGxv
YzsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBfX2FsbG9jYXRvcjxfVHAsIF9BbGxvYz4mIF9fYTEsCiAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgX19hbGxvY2F0b3I8X1RwLCBfQWxsb2M+JiBfX2EyKQp7CiAgcmV0
dXJuIF9fYTEuX191bmRlcmx5aW5nX2FsbG9jICE9IF9fYTIuX191bmRlcmx5aW5nX2FsbG9jOwp9
CgoKIAogCiAKCnRlbXBsYXRlIDxpbnQgaW5zdD4KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxpbnN0PiYsCiAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8aW5zdD4mKQp7CiAgcmV0dXJuIHRydWU7Cn0K
Cgp0ZW1wbGF0ZSA8aW50IF9faW5zdD4KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBfX21h
bGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+JiwKICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+JikKewogIHJldHVybiBmYWxzZTsKfQoK
Cgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CmlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0PiYs
CiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9f
dGhyZWFkcywgX19pbnN0PiYpCnsKICByZXR1cm4gdHJ1ZTsKfQoKCnRlbXBsYXRlIDxib29sIF9f
dGhyZWFkcywgaW50IF9faW5zdD4KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBfX2RlZmF1
bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+JiwKICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+JikK
ewogIHJldHVybiBmYWxzZTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPgppbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IGRlYnVnX2FsbG9jPF9BbGxvYz4mLAogICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGRlYnVnX2FsbG9jPF9BbGxvYz4mKSB7CiAgcmV0dXJuIHRydWU7Cn0KCgp0
ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGRlYnVn
X2FsbG9jPF9BbGxvYz4mLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlYnVnX2FsbG9j
PF9BbGxvYz4mKSB7CiAgcmV0dXJuIGZhbHNlOwp9CgoKIAogCiAKIAogCiAKCiAKIAogCiAKIAog
CgogCiAKIAogCiAKIAogCiAKIAogCiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9B
bGxvY2F0b3I+CnN0cnVjdCBfQWxsb2NfdHJhaXRzCnsKICBzdGF0aWMgY29uc3QgYm9vbCBfU19p
bnN0YW5jZWxlc3MgPSBmYWxzZTsKICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvY2F0b3I6OiAgIHJl
YmluZDxfVHA+OjpvdGhlcgogICAgICAgICAgYWxsb2NhdG9yX3R5cGU7Cn07Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2NhdG9yPgpjb25zdCBib29sIF9BbGxvY190cmFpdHM8X1Rw
LCBfQWxsb2NhdG9yPjo6X1NfaW5zdGFuY2VsZXNzOwoKIAoKdGVtcGxhdGUgPGNsYXNzIF9UcCwg
Y2xhc3MgX1RwMT4Kc3RydWN0IF9BbGxvY190cmFpdHM8X1RwLCBhbGxvY2F0b3I8X1RwMT4gPgp7
CiAgc3RhdGljIGNvbnN0IGJvb2wgX1NfaW5zdGFuY2VsZXNzID0gdHJ1ZTsKICB0eXBlZGVmIHNp
bXBsZV9hbGxvYzxfVHAsIGFsbG9jPiBfQWxsb2NfdHlwZTsKICB0eXBlZGVmIGFsbG9jYXRvcjxf
VHA+IGFsbG9jYXRvcl90eXBlOwp9OwoKIAoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgaW50IF9faW5z
dD4Kc3RydWN0IF9BbGxvY190cmFpdHM8X1RwLCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2lu
c3Q+ID4KewogIHN0YXRpYyBjb25zdCBib29sIF9TX2luc3RhbmNlbGVzcyA9IHRydWU7CiAgdHlw
ZWRlZiBzaW1wbGVfYWxsb2M8X1RwLCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4g
X0FsbG9jX3R5cGU7CiAgdHlwZWRlZiBfX2FsbG9jYXRvcjxfVHAsIF9fbWFsbG9jX2FsbG9jX3Rl
bXBsYXRlPF9faW5zdD4gPiBhbGxvY2F0b3JfdHlwZTsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
LCBib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4Kc3RydWN0IF9BbGxvY190cmFpdHM8X1RwLCBf
X2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+ID4KewogIHN0YXRpYyBj
b25zdCBib29sIF9TX2luc3RhbmNlbGVzcyA9IHRydWU7CiAgdHlwZWRlZiBzaW1wbGVfYWxsb2M8
X1RwLCBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+ID4KICAgICAg
ICAgIF9BbGxvY190eXBlOwogIHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwLCBfX2RlZmF1bHRfYWxs
b2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+ID4KICAgICAgICAgIGFsbG9jYXRvcl90eXBl
Owp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4Kc3RydWN0IF9BbGxvY190
cmFpdHM8X1RwLCBkZWJ1Z19hbGxvYzxfQWxsb2M+ID4KewogIHN0YXRpYyBjb25zdCBib29sIF9T
X2luc3RhbmNlbGVzcyA9IHRydWU7CiAgdHlwZWRlZiBzaW1wbGVfYWxsb2M8X1RwLCBkZWJ1Z19h
bGxvYzxfQWxsb2M+ID4gX0FsbG9jX3R5cGU7CiAgdHlwZWRlZiBfX2FsbG9jYXRvcjxfVHAsIGRl
YnVnX2FsbG9jPF9BbGxvYz4gPiBhbGxvY2F0b3JfdHlwZTsKfTsKCiAKIAoKdGVtcGxhdGUgPGNs
YXNzIF9UcCwgY2xhc3MgX1RwMSwgaW50IF9faW5zdD4Kc3RydWN0IF9BbGxvY190cmFpdHM8X1Rw
LAogICAgICAgICAgICAgICAgICAgICBfX2FsbG9jYXRvcjxfVHAxLCBfX21hbGxvY19hbGxvY190
ZW1wbGF0ZTxfX2luc3Q+ID4gPgp7CiAgc3RhdGljIGNvbnN0IGJvb2wgX1NfaW5zdGFuY2VsZXNz
ID0gdHJ1ZTsKICB0eXBlZGVmIHNpbXBsZV9hbGxvYzxfVHAsIF9fbWFsbG9jX2FsbG9jX3RlbXBs
YXRlPF9faW5zdD4gPiBfQWxsb2NfdHlwZTsKICB0eXBlZGVmIF9fYWxsb2NhdG9yPF9UcCwgX19t
YWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0PiA+IGFsbG9jYXRvcl90eXBlOwp9OwoKCnRlbXBs
YXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9UcDEsIGJvb2wgX190aHIsIGludCBfX2luc3Q+CnN0cnVj
dCBfQWxsb2NfdHJhaXRzPF9UcCwKICAgICAgICAgICAgICAgICAgICAgIF9fYWxsb2NhdG9yPF9U
cDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlZmF1bHRfYWxsb2NfdGVt
cGxhdGU8X190aHIsIF9faW5zdD4gPiA+CnsKICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5j
ZWxlc3MgPSB0cnVlOwogIHR5cGVkZWYgc2ltcGxlX2FsbG9jPF9UcCwgX19kZWZhdWx0X2FsbG9j
X3RlbXBsYXRlPF9fdGhyLF9faW5zdD4gPgogICAgICAgICAgX0FsbG9jX3R5cGU7CiAgdHlwZWRl
ZiBfX2FsbG9jYXRvcjxfVHAsIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocixfX2luc3Q+
ID4KICAgICAgICAgIGFsbG9jYXRvcl90eXBlOwp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNs
YXNzIF9UcDEsIGNsYXNzIF9BbGxvYz4Kc3RydWN0IF9BbGxvY190cmFpdHM8X1RwLCBfX2FsbG9j
YXRvcjxfVHAxLCBkZWJ1Z19hbGxvYzxfQWxsb2M+ID4gPgp7CiAgc3RhdGljIGNvbnN0IGJvb2wg
X1NfaW5zdGFuY2VsZXNzID0gdHJ1ZTsKICB0eXBlZGVmIHNpbXBsZV9hbGxvYzxfVHAsIGRlYnVn
X2FsbG9jPF9BbGxvYz4gPiBfQWxsb2NfdHlwZTsKICB0eXBlZGVmIF9fYWxsb2NhdG9yPF9UcCwg
ZGVidWdfYWxsb2M8X0FsbG9jPiA+IGFsbG9jYXRvcl90eXBlOwp9OwoKCgoKCgoKCiAKCgoKCgog
CiAKIAojIDMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL2xpc3QiIDIgMwoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kz
ODYtcmVkaGF0LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9jb25z
dHJ1Y3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgogCiAK
CnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSB2b2lkIGRlc3Ryb3koX1RwKiBfX3BvaW50ZXIp
IHsKICBfX3BvaW50ZXItPn5fVHAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1Qy
PgppbmxpbmUgdm9pZCBjb25zdHJ1Y3QoX1QxKiBfX3AsIGNvbnN0IF9UMiYgX192YWx1ZSkgewog
IG5ldyAoX19wKSBfVDEoX192YWx1ZSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVDE+CmlubGluZSB2
b2lkIGNvbnN0cnVjdChfVDEqIF9fcCkgewogIG5ldyAoX19wKSBfVDEoKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CmlubGluZSB2b2lkCl9fZGVzdHJveV9hdXgoX0Zvcndh
cmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwgX19mYWxzZV90eXBl
KQp7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgZGVzdHJveSgm
Kl9fZmlyc3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KaW5saW5lIHZv
aWQgX19kZXN0cm95X2F1eChfRm9yd2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJhdG9yLCBfX3Ry
dWVfdHlwZSkge30KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yLCBjbGFzcyBfVHA+
CmlubGluZSB2b2lkCl9fZGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlcmF0b3IgX19sYXN0LCBfVHAqKQp7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRz
PF9UcD46Omhhc190cml2aWFsX2Rlc3RydWN0b3IKICAgICAgICAgIF9Ucml2aWFsX2Rlc3RydWN0
b3I7CiAgX19kZXN0cm95X2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9Ucml2aWFsX2Rlc3RydWN0b3Io
KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yPgppbmxpbmUgdm9pZCBkZXN0
cm95KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpIHsK
ICBfX2Rlc3Ryb3koX19maXJzdCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSApOwp9
CgppbmxpbmUgdm9pZCBkZXN0cm95KGNoYXIqLCBjaGFyKikge30KaW5saW5lIHZvaWQgZGVzdHJv
eSh3Y2hhcl90Kiwgd2NoYXJfdCopIHt9CgogCgoKCiAKIAogCiMgMzIgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvbGlz
dCIgMiAzCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yLy4u
Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3VuaW5pdGlhbGl6ZWQuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKIAoKIAogCnRlbXBsYXRlIDxjbGFzcyBfSW5w
dXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBfRm9yd2FyZEl0ZXIgCl9fdW5pbml0
aWFsaXplZF9jb3B5X2F1eChfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgX190cnVlX3R5cGUpCnsKICByZXR1cm4gY29weShfX2ZpcnN0LCBfX2xh
c3QsIF9fcmVzdWx0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3
YXJkSXRlcj4KX0ZvcndhcmRJdGVyIApfX3VuaW5pdGlhbGl6ZWRfY29weV9hdXgoX0lucHV0SXRl
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9G
b3J3YXJkSXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fZmFsc2VfdHlw
ZSkKewogIF9Gb3J3YXJkSXRlciBfX2N1ciA9IF9fcmVzdWx0OwogIHRyeSAgewogICAgZm9yICgg
OyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0LCArK19fY3VyKQogICAgICBjb25zdHJ1Y3Qo
JipfX2N1ciwgKl9fZmlyc3QpOwogICAgcmV0dXJuIF9fY3VyOwogIH0KICBjYXRjaCguLi4pIHsg
IGRlc3Ryb3koX19yZXN1bHQsIF9fY3VyKSA7IHRocm93OyB9IDsKfQoKCnRlbXBsYXRlIDxjbGFz
cyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIF9Gb3J3
YXJkSXRlcgpfX3VuaW5pdGlhbGl6ZWRfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0
ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsIF9U
cCopCnsKICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1RwPjo6aXNfUE9EX3R5cGUg
X0lzX1BPRDsKICByZXR1cm4gX191bmluaXRpYWxpemVkX2NvcHlfYXV4KF9fZmlyc3QsIF9fbGFz
dCwgX19yZXN1bHQsIF9Jc19QT0QoKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBj
bGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBfRm9yd2FyZEl0ZXIKICB1bmluaXRpYWxpemVkX2Nv
cHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0KQp7CiAgcmV0dXJuIF9fdW5pbml0aWFsaXplZF9j
b3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdmFsdWVfdHlwZSggX19yZXN1bHQgKSApOwp9CgppbmxpbmUgY2hhciogdW5pbml0aWFs
aXplZF9jb3B5KGNvbnN0IGNoYXIqIF9fZmlyc3QsIGNvbnN0IGNoYXIqIF9fbGFzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBfX3Jlc3VsdCkgewogIG1lbW1vdmUoX19y
ZXN1bHQsIF9fZmlyc3QsIF9fbGFzdCAtIF9fZmlyc3QpOwogIHJldHVybiBfX3Jlc3VsdCArIChf
X2xhc3QgLSBfX2ZpcnN0KTsKfQoKaW5saW5lIHdjaGFyX3QqIAp1bmluaXRpYWxpemVkX2NvcHko
Y29uc3Qgd2NoYXJfdCogX19maXJzdCwgY29uc3Qgd2NoYXJfdCogX19sYXN0LAogICAgICAgICAg
ICAgICAgICAgd2NoYXJfdCogX19yZXN1bHQpCnsKICBtZW1tb3ZlKF9fcmVzdWx0LCBfX2ZpcnN0
LCBzaXplb2Yod2NoYXJfdCkgKiAoX19sYXN0IC0gX19maXJzdCkpOwogIHJldHVybiBfX3Jlc3Vs
dCArIChfX2xhc3QgLSBfX2ZpcnN0KTsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIs
IGNsYXNzIF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CnBhaXI8X0lucHV0SXRlciwgX0Zvcndh
cmRJdGVyPgpfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9JbnB1dEl0ZXIgX19maXJzdCwgX1NpemUg
X19jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKQp7CiAgX0ZvcndhcmRJdGVy
IF9fY3VyID0gX19yZXN1bHQ7CiAgdHJ5ICB7CiAgICBmb3IgKCA7IF9fY291bnQgPiAwIDsgLS1f
X2NvdW50LCArK19fZmlyc3QsICsrX19jdXIpIAogICAgICBjb25zdHJ1Y3QoJipfX2N1ciwgKl9f
Zmlyc3QpOwogICAgcmV0dXJuIHBhaXI8X0lucHV0SXRlciwgX0ZvcndhcmRJdGVyPihfX2ZpcnN0
LCBfX2N1cik7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShfX3Jlc3VsdCwgX19jdXIpIDsg
dGhyb3c7IH0gOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9T
aXplLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBwYWlyPF9SYW5kb21BY2Nlc3NJdGVyLCBf
Rm9yd2FyZEl0ZXI+Cl9fdW5pbml0aWFsaXplZF9jb3B5X24oX1JhbmRvbUFjY2Vzc0l0ZXIgX19m
aXJzdCwgX1NpemUgX19jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIg
X19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90
YWcpIHsKICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QgPSBfX2ZpcnN0ICsgX19jb3VudDsKICBy
ZXR1cm4gcGFpcjxfUmFuZG9tQWNjZXNzSXRlciwgX0ZvcndhcmRJdGVyPigKICAgICAgICAgICAg
ICAgICBfX2xhc3QsCiAgICAgICAgICAgICAgICAgdW5pbml0aWFsaXplZF9jb3B5KF9fZmlyc3Qs
IF9fbGFzdCwgX19yZXN1bHQpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNz
IF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBwYWlyPF9JbnB1dEl0ZXIsIF9Gb3J3
YXJkSXRlcj4KX191bmluaXRpYWxpemVkX2NvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXpl
IF9fY291bnQsCiAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCkgewog
IHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9fcmVzdWx0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9f
Zmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1NpemUsIGNs
YXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIHBhaXI8X0lucHV0SXRlciwgX0ZvcndhcmRJdGVyPgp1
bmluaXRpYWxpemVkX2NvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCkgewogIHJldHVybiBfX3Vu
aW5pdGlhbGl6ZWRfY29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9fcmVzdWx0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3QgKSApOwp9
CgogCiAKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgppbmxpbmUgdm9p
ZApfX3VuaW5pdGlhbGl6ZWRfZmlsbF9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlciBfX2xhc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gsIF9f
dHJ1ZV90eXBlKQp7CiAgZmlsbChfX2ZpcnN0LCBfX2xhc3QsIF9feCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4Kdm9pZApfX3VuaW5pdGlhbGl6ZWRfZmlsbF9h
dXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gsIF9fZmFsc2VfdHlwZSkKewogIF9Gb3J3YXJk
SXRlciBfX2N1ciA9IF9fZmlyc3Q7CiAgdHJ5ICB7CiAgICBmb3IgKCA7IF9fY3VyICE9IF9fbGFz
dDsgKytfX2N1cikKICAgICAgY29uc3RydWN0KCYqX19jdXIsIF9feCk7CiAgfQogIGNhdGNoKC4u
LikgeyAgZGVzdHJveShfX2ZpcnN0LCBfX2N1cikgOyB0aHJvdzsgfSA7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX1RwMT4KaW5saW5lIHZvaWQgX191
bmluaXRpYWxpemVkX2ZpbGwoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9feCwgX1Rw
MSopCnsKICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1RwMT46OmlzX1BPRF90eXBl
IF9Jc19QT0Q7CiAgX191bmluaXRpYWxpemVkX2ZpbGxfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX194
LCBfSXNfUE9EKCkpOwogICAgICAgICAgICAgICAgICAgCn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9y
d2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIHZvaWQgdW5pbml0aWFsaXplZF9maWxsKF9Gb3J3
YXJkSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJ
dGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9f
eCkKewogIF9fdW5pbml0aWFsaXplZF9maWxsKF9fZmlyc3QsIF9fbGFzdCwgX194LCBfX3ZhbHVl
X3R5cGUoIF9fZmlyc3QgKSApOwp9CgogCiAKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwg
Y2xhc3MgX1NpemUsIGNsYXNzIF9UcD4KaW5saW5lIF9Gb3J3YXJkSXRlcgpfX3VuaW5pdGlhbGl6
ZWRfZmlsbF9uX2F1eChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX1NpemUgX19uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCwgX190cnVlX3R5cGUpCnsKICByZXR1cm4g
ZmlsbF9uKF9fZmlyc3QsIF9fbiwgX194KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRl
ciwgY2xhc3MgX1NpemUsIGNsYXNzIF9UcD4KX0ZvcndhcmRJdGVyCl9fdW5pbml0aWFsaXplZF9m
aWxsX25fYXV4KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfU2l6ZSBfX24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IF9UcCYgX194LCBfX2ZhbHNlX3R5cGUpCnsKICBfRm9yd2FyZEl0
ZXIgX19jdXIgPSBfX2ZpcnN0OwogIHRyeSAgewogICAgZm9yICggOyBfX24gPiAwOyAtLV9fbiwg
KytfX2N1cikKICAgICAgY29uc3RydWN0KCYqX19jdXIsIF9feCk7CiAgICByZXR1cm4gX19jdXI7
CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShfX2ZpcnN0LCBfX2N1cikgOyB0aHJvdzsgfSA7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfVHAs
IGNsYXNzIF9UcDE+CmlubGluZSBfRm9yd2FyZEl0ZXIgCl9fdW5pbml0aWFsaXplZF9maWxsX24o
X0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9TaXplIF9fbiwgY29uc3QgX1RwJiBfX3gsIF9UcDEqKQp7
CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPF9UcDE+Ojppc19QT0RfdHlwZSBfSXNf
UE9EOwogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2F1eChfX2ZpcnN0LCBfX24sIF9f
eCwgX0lzX1BPRCgpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1Np
emUsIGNsYXNzIF9UcD4KaW5saW5lIF9Gb3J3YXJkSXRlciAKdW5pbml0aWFsaXplZF9maWxsX24o
X0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9TaXplIF9fbiwgY29uc3QgX1RwJiBfX3gpCnsKICByZXR1
cm4gX191bmluaXRpYWxpemVkX2ZpbGxfbihfX2ZpcnN0LCBfX24sIF9feCwgX192YWx1ZV90eXBl
KCBfX2ZpcnN0ICkgKTsKfQoKIAogCgogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRl
cjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBfRm9yd2Fy
ZEl0ZXIKX191bmluaXRpYWxpemVkX2NvcHlfY29weShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lu
cHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBf
X2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICBf
Rm9yd2FyZEl0ZXIgX19yZXN1bHQpCnsKICBfRm9yd2FyZEl0ZXIgX19taWQgPSB1bmluaXRpYWxp
emVkX2NvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KTsKICB0cnkgIHsKICAgIHJldHVy
biB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdDIsIF9fbGFzdDIsIF9fbWlkKTsKICB9CiAgY2F0
Y2goLi4uKSB7ICBkZXN0cm95KF9fcmVzdWx0LCBfX21pZCkgOyB0aHJvdzsgfSA7Cn0KCiAKIAog
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0lucHV0SXRl
cj4KaW5saW5lIF9Gb3J3YXJkSXRlciAKX191bmluaXRpYWxpemVkX2ZpbGxfY29weShfRm9yd2Fy
ZEl0ZXIgX19yZXN1bHQsIF9Gb3J3YXJkSXRlciBfX21pZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBfVHAmIF9feCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVy
IF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0KQp7CiAgdW5pbml0aWFsaXplZF9maWxsKF9fcmVz
dWx0LCBfX21pZCwgX194KTsKICB0cnkgIHsKICAgIHJldHVybiB1bmluaXRpYWxpemVkX2NvcHko
X19maXJzdCwgX19sYXN0LCBfX21pZCk7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShfX3Jl
c3VsdCwgX19taWQpIDsgdGhyb3c7IH0gOwp9CgogCiAKIAp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0
SXRlciwgY2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CmlubGluZSB2b2lkCl9fdW5pbml0
aWFsaXplZF9jb3B5X2ZpbGwoX0lucHV0SXRlciBfX2ZpcnN0MSwgX0lucHV0SXRlciBfX2xhc3Qx
LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2ZpcnN0MiwgX0Zvcndh
cmRJdGVyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gp
CnsKICBfRm9yd2FyZEl0ZXIgX19taWQyID0gdW5pbml0aWFsaXplZF9jb3B5KF9fZmlyc3QxLCBf
X2xhc3QxLCBfX2ZpcnN0Mik7CiAgdHJ5ICB7CiAgICB1bmluaXRpYWxpemVkX2ZpbGwoX19taWQy
LCBfX2xhc3QyLCBfX3gpOwogIH0KICBjYXRjaCguLi4pIHsgIGRlc3Ryb3koX19maXJzdDIsIF9f
bWlkMikgOyB0aHJvdzsgfSA7Cn0KCiAKCgoKIAogCiAKIyAzMyAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9saXN0IiAy
IDMKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1LjIvLi4vLi4v
Li4vLi4vaW5jbHVkZS9nKystMy9zdGxfbGlzdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgogCgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfTGlzdF9u
b2RlIHsKICB0eXBlZGVmIHZvaWQqIF9Wb2lkX3BvaW50ZXI7CiAgX1ZvaWRfcG9pbnRlciBfTV9u
ZXh0OwogIF9Wb2lkX3BvaW50ZXIgX01fcHJldjsKICBfVHAgX01fZGF0YTsKfTsKCnRlbXBsYXRl
PGNsYXNzIF9UcCwgY2xhc3MgX1JlZiwgY2xhc3MgX1B0cj4Kc3RydWN0IF9MaXN0X2l0ZXJhdG9y
IHsKICB0eXBlZGVmIF9MaXN0X2l0ZXJhdG9yPF9UcCxfVHAmLF9UcCo+ICAgICAgICAgICAgIGl0
ZXJhdG9yOwogIHR5cGVkZWYgX0xpc3RfaXRlcmF0b3I8X1RwLGNvbnN0IF9UcCYsY29uc3QgX1Rw
Kj4gY29uc3RfaXRlcmF0b3I7CiAgdHlwZWRlZiBfTGlzdF9pdGVyYXRvcjxfVHAsX1JlZixfUHRy
PiAgICAgICAgICAgICBfU2VsZjsKCiAgdHlwZWRlZiBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3Rh
ZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwogIHR5cGVkZWYg
X1B0ciBwb2ludGVyOwogIHR5cGVkZWYgX1JlZiByZWZlcmVuY2U7CiAgdHlwZWRlZiBfTGlzdF9u
b2RlPF9UcD4gX05vZGU7CiAgdHlwZWRlZiBzaXplX3Qgc2l6ZV90eXBlOwogIHR5cGVkZWYgcHRy
ZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKCiAgX05vZGUqIF9NX25vZGU7CgogIF9MaXN0X2l0ZXJh
dG9yKF9Ob2RlKiBfX3gpIDogX01fbm9kZShfX3gpIHt9CiAgX0xpc3RfaXRlcmF0b3IoKSB7fQog
IF9MaXN0X2l0ZXJhdG9yKGNvbnN0IGl0ZXJhdG9yJiBfX3gpIDogX01fbm9kZShfX3guX01fbm9k
ZSkge30KCiAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IF9TZWxmJiBfX3gpIGNvbnN0IHsgcmV0dXJu
IF9NX25vZGUgPT0gX194Ll9NX25vZGU7IH0KICBib29sIG9wZXJhdG9yIT0oY29uc3QgX1NlbGYm
IF9feCkgY29uc3QgeyByZXR1cm4gX01fbm9kZSAhPSBfX3guX01fbm9kZTsgfQogIHJlZmVyZW5j
ZSBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAoKl9NX25vZGUpLl9NX2RhdGE7IH0KCgogIHBv
aW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICYob3BlcmF0b3IqKCkpOyB9CgoKICBf
U2VsZiYgb3BlcmF0b3IrKygpIHsgCiAgICBfTV9ub2RlID0gKF9Ob2RlKikoX01fbm9kZS0+X01f
bmV4dCk7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIF9TZWxmIG9wZXJhdG9yKysoaW50KSB7IAog
ICAgX1NlbGYgX190bXAgPSAqdGhpczsKICAgICsrKnRoaXM7CiAgICByZXR1cm4gX190bXA7CiAg
fQogIF9TZWxmJiBvcGVyYXRvci0tKCkgeyAKICAgIF9NX25vZGUgPSAoX05vZGUqKShfTV9ub2Rl
LT5fTV9wcmV2KTsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3ItLShpbnQp
IHsgCiAgICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgLS0qdGhpczsKICAgIHJldHVybiBfX3Rt
cDsKICB9Cn07CgojIDEyMCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk1
LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfbGlzdC5oIiAzCgoKCiAKIAogCiAKIAog
CgoKCiAKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jYXRvciwgYm9vbCBfSXNTdGF0
aWM+CmNsYXNzIF9MaXN0X2FsbG9jX2Jhc2UgewpwdWJsaWM6CiAgdHlwZWRlZiB0eXBlbmFtZSBf
QWxsb2NfdHJhaXRzPF9UcCwgX0FsbG9jYXRvcj46OmFsbG9jYXRvcl90eXBlCiAgICAgICAgICBh
bGxvY2F0b3JfdHlwZTsKICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gX05vZGVfYWxsb2NhdG9yOyB9CgogIF9MaXN0X2FsbG9jX2Jhc2UoY29uc3QgYWxsb2Nh
dG9yX3R5cGUmIF9fYSkgOiBfTm9kZV9hbGxvY2F0b3IoX19hKSB7fQoKcHJvdGVjdGVkOgogIF9M
aXN0X25vZGU8X1RwPiogX01fZ2V0X25vZGUoKQogICB7IHJldHVybiBfTm9kZV9hbGxvY2F0b3Iu
YWxsb2NhdGUoMSk7IH0KICB2b2lkIF9NX3B1dF9ub2RlKF9MaXN0X25vZGU8X1RwPiogX19wKQog
ICAgeyBfTm9kZV9hbGxvY2F0b3IuZGVhbGxvY2F0ZShfX3AsIDEpOyB9Cgpwcm90ZWN0ZWQ6CiAg
dHlwZW5hbWUgX0FsbG9jX3RyYWl0czxfTGlzdF9ub2RlPF9UcD4sIF9BbGxvY2F0b3I+OjphbGxv
Y2F0b3JfdHlwZQogICAgICAgICAgIF9Ob2RlX2FsbG9jYXRvcjsKICBfTGlzdF9ub2RlPF9UcD4q
IF9NX25vZGU7Cn07CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2NhdG9yPgpj
bGFzcyBfTGlzdF9hbGxvY19iYXNlPF9UcCwgX0FsbG9jYXRvciwgdHJ1ZT4gewpwdWJsaWM6CiAg
dHlwZWRlZiB0eXBlbmFtZSBfQWxsb2NfdHJhaXRzPF9UcCwgX0FsbG9jYXRvcj46OmFsbG9jYXRv
cl90eXBlCiAgICAgICAgICBhbGxvY2F0b3JfdHlwZTsKICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxs
b2NhdG9yKCkgY29uc3QgeyByZXR1cm4gYWxsb2NhdG9yX3R5cGUoKTsgfQoKICBfTGlzdF9hbGxv
Y19iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJikge30KCnByb3RlY3RlZDoKICB0eXBlZGVmIHR5
cGVuYW1lIF9BbGxvY190cmFpdHM8X0xpc3Rfbm9kZTxfVHA+LCBfQWxsb2NhdG9yPjo6X0FsbG9j
X3R5cGUKICAgICAgICAgIF9BbGxvY190eXBlOwogIF9MaXN0X25vZGU8X1RwPiogX01fZ2V0X25v
ZGUoKSB7IHJldHVybiBfQWxsb2NfdHlwZTo6YWxsb2NhdGUoMSk7IH0KICB2b2lkIF9NX3B1dF9u
b2RlKF9MaXN0X25vZGU8X1RwPiogX19wKSB7IF9BbGxvY190eXBlOjpkZWFsbG9jYXRlKF9fcCwg
MSk7IH0KCnByb3RlY3RlZDoKICBfTGlzdF9ub2RlPF9UcD4qIF9NX25vZGU7Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CmNsYXNzIF9MaXN0X2Jhc2UgCiAgOiBwdWJsaWMg
X0xpc3RfYWxsb2NfYmFzZTxfVHAsIF9BbGxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9BbGxvY190cmFpdHM8X1RwLCBfQWxsb2M+OjpfU19pbnN0YW5jZWxlc3M+CnsKcHVibGljOgog
IHR5cGVkZWYgX0xpc3RfYWxsb2NfYmFzZTxfVHAsIF9BbGxvYywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX0FsbG9jX3RyYWl0czxfVHAsIF9BbGxvYz46Ol9TX2luc3RhbmNlbGVzcz4KICAg
ICAgICAgIF9CYXNlOyAKICB0eXBlZGVmIHR5cGVuYW1lIF9CYXNlOjphbGxvY2F0b3JfdHlwZSBh
bGxvY2F0b3JfdHlwZTsKCiAgX0xpc3RfYmFzZShjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hKSA6
IF9CYXNlKF9fYSkgewogICAgX01fbm9kZSA9IF9NX2dldF9ub2RlKCk7CiAgICBfTV9ub2RlLT5f
TV9uZXh0ID0gX01fbm9kZTsKICAgIF9NX25vZGUtPl9NX3ByZXYgPSBfTV9ub2RlOwogIH0KICB+
X0xpc3RfYmFzZSgpIHsKICAgIGNsZWFyKCk7CiAgICBfTV9wdXRfbm9kZShfTV9ub2RlKTsKICB9
CgogIHZvaWQgY2xlYXIoKTsKfTsKCiMgMjI5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0
LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9saXN0LmgiIDMKCgp0
ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CnZvaWQgCl9MaXN0X2Jhc2U8X1RwLF9B
bGxvYz46OmNsZWFyKCkgCnsKICBfTGlzdF9ub2RlPF9UcD4qIF9fY3VyID0gKF9MaXN0X25vZGU8
X1RwPiopIF9NX25vZGUtPl9NX25leHQ7CiAgd2hpbGUgKF9fY3VyICE9IF9NX25vZGUpIHsKICAg
IF9MaXN0X25vZGU8X1RwPiogX190bXAgPSBfX2N1cjsKICAgIF9fY3VyID0gKF9MaXN0X25vZGU8
X1RwPiopIF9fY3VyLT5fTV9uZXh0OwogICAgZGVzdHJveSgmX190bXAtPl9NX2RhdGEpOwogICAg
X01fcHV0X25vZGUoX190bXApOwogIH0KICBfTV9ub2RlLT5fTV9uZXh0ID0gX01fbm9kZTsKICBf
TV9ub2RlLT5fTV9wcmV2ID0gX01fbm9kZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3Mg
X0FsbG9jID0gYWxsb2NhdG9yPCBfVHAgPiAgPgpjbGFzcyBsaXN0IDogcHJvdGVjdGVkIF9MaXN0
X2Jhc2U8X1RwLCBfQWxsb2M+IHsKICB0eXBlZGVmIF9MaXN0X2Jhc2U8X1RwLCBfQWxsb2M+IF9C
YXNlOwpwcm90ZWN0ZWQ6CiAgdHlwZWRlZiB2b2lkKiBfVm9pZF9wb2ludGVyOwoKcHVibGljOiAg
ICAgIAogIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2YWx1ZV90eXBlKiBwb2lu
dGVyOwogIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSogY29uc3RfcG9pbnRlcjsKICB0eXBlZGVm
IHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmIGNvbnN0
X3JlZmVyZW5jZTsKICB0eXBlZGVmIF9MaXN0X25vZGU8X1RwPiBfTm9kZTsKICB0eXBlZGVmIHNp
emVfdCBzaXplX3R5cGU7CiAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwoKICB0
eXBlZGVmIHR5cGVuYW1lIF9CYXNlOjphbGxvY2F0b3JfdHlwZSBhbGxvY2F0b3JfdHlwZTsKICBh
bGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gX0Jhc2U6OmdldF9h
bGxvY2F0b3IoKTsgfQoKcHVibGljOgogIHR5cGVkZWYgX0xpc3RfaXRlcmF0b3I8X1RwLF9UcCYs
X1RwKj4gICAgICAgICAgICAgaXRlcmF0b3I7CiAgdHlwZWRlZiBfTGlzdF9pdGVyYXRvcjxfVHAs
Y29uc3QgX1RwJixjb25zdCBfVHAqPiBjb25zdF9pdGVyYXRvcjsKCgogIHR5cGVkZWYgcmV2ZXJz
ZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKICB0eXBl
ZGVmIHJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+ICAgICAgIHJldmVyc2VfaXRlcmF0b3I7CgoK
CgoKCgoKCnByb3RlY3RlZDoKCiAgdXNpbmcgX0Jhc2U6Ol9NX25vZGU7CiAgdXNpbmcgX0Jhc2U6
Ol9NX3B1dF9ub2RlOwogIHVzaW5nIF9CYXNlOjpfTV9nZXRfbm9kZTsKCgpwcm90ZWN0ZWQ6CiAg
X05vZGUqIF9NX2NyZWF0ZV9ub2RlKGNvbnN0IF9UcCYgX194KQogIHsKICAgIF9Ob2RlKiBfX3Ag
PSBfTV9nZXRfbm9kZSgpOwogICAgdHJ5ICB7CiAgICAgIGNvbnN0cnVjdCgmX19wLT5fTV9kYXRh
LCBfX3gpOwogICAgfQogICAgY2F0Y2goLi4uKSB7ICBfTV9wdXRfbm9kZShfX3ApIDsgdGhyb3c7
IH0gOwogICAgcmV0dXJuIF9fcDsKICB9CgogIF9Ob2RlKiBfTV9jcmVhdGVfbm9kZSgpCiAgewog
ICAgX05vZGUqIF9fcCA9IF9NX2dldF9ub2RlKCk7CiAgICB0cnkgIHsKICAgICAgY29uc3RydWN0
KCZfX3AtPl9NX2RhdGEpOwogICAgfQogICAgY2F0Y2goLi4uKSB7ICBfTV9wdXRfbm9kZShfX3Ap
IDsgdGhyb3c7IH0gOwogICAgcmV0dXJuIF9fcDsKICB9CgpwdWJsaWM6CiAgZXhwbGljaXQgbGlz
dChjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkgOiBfQmFzZShf
X2EpIHt9CgogIGl0ZXJhdG9yIGJlZ2luKCkgICAgICAgICAgICAgeyByZXR1cm4gKF9Ob2RlKiko
X01fbm9kZS0+X01fbmV4dCk7IH0KICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIChfTm9kZSopKF9NX25vZGUtPl9NX25leHQpOyB9CgogIGl0ZXJhdG9yIGVuZCgpICAgICAg
ICAgICAgIHsgcmV0dXJuIF9NX25vZGU7IH0KICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7
IHJldHVybiBfTV9ub2RlOyB9CgogIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgCiAgICB7IHJl
dHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQogIGNvbnN0X3JldmVyc2VfaXRlcmF0b3Ig
cmJlZ2luKCkgY29uc3QgCiAgICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgp
KTsgfQoKICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKQogICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVy
YXRvcihiZWdpbigpKTsgfQogIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0CiAg
ICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CgogIGJvb2wgZW1w
dHkoKSBjb25zdCB7IHJldHVybiBfTV9ub2RlLT5fTV9uZXh0ID09IF9NX25vZGU7IH0KICBzaXpl
X3R5cGUgc2l6ZSgpIGNvbnN0IHsKICAgIHNpemVfdHlwZSBfX3Jlc3VsdCA9IDA7CiAgICBkaXN0
YW5jZShiZWdpbigpLCBlbmQoKSwgX19yZXN1bHQpOwogICAgcmV0dXJuIF9fcmVzdWx0OwogIH0K
ICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7IHJldHVybiBzaXplX3R5cGUoLTEpOyB9Cgog
IHJlZmVyZW5jZSBmcm9udCgpIHsgcmV0dXJuICpiZWdpbigpOyB9CiAgY29uc3RfcmVmZXJlbmNl
IGZyb250KCkgY29uc3QgeyByZXR1cm4gKmJlZ2luKCk7IH0KICByZWZlcmVuY2UgYmFjaygpIHsg
cmV0dXJuICooLS1lbmQoKSk7IH0KICBjb25zdF9yZWZlcmVuY2UgYmFjaygpIGNvbnN0IHsgcmV0
dXJuICooLS1lbmQoKSk7IH0KCiAgdm9pZCBzd2FwKGxpc3Q8X1RwLCBfQWxsb2M+JiBfX3gpIHsg
IDo6c3dhcChfTV9ub2RlLCBfX3guX01fbm9kZSk7IH0KCiAgaXRlcmF0b3IgaW5zZXJ0KGl0ZXJh
dG9yIF9fcG9zaXRpb24sIGNvbnN0IF9UcCYgX194KSB7CiAgICBfTm9kZSogX190bXAgPSBfTV9j
cmVhdGVfbm9kZShfX3gpOwogICAgX190bXAtPl9NX25leHQgPSBfX3Bvc2l0aW9uLl9NX25vZGU7
CiAgICBfX3RtcC0+X01fcHJldiA9IF9fcG9zaXRpb24uX01fbm9kZS0+X01fcHJldjsKICAgICgo
X05vZGUqKSAoX19wb3NpdGlvbi5fTV9ub2RlLT5fTV9wcmV2KSktPl9NX25leHQgPSBfX3RtcDsK
ICAgIF9fcG9zaXRpb24uX01fbm9kZS0+X01fcHJldiA9IF9fdG1wOwogICAgcmV0dXJuIF9fdG1w
OwogIH0KICBpdGVyYXRvciBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbikgeyByZXR1cm4gaW5z
ZXJ0KF9fcG9zaXRpb24sIF9UcCgpKTsgfQoKICAgCgogIHRlbXBsYXRlPGNsYXNzIF9JbnRlZ2Vy
PgogIHZvaWQgX01faW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9yIF9fcG9zLCBfSW50ZWdlciBfX24s
IF9JbnRlZ2VyIF9feCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RydWVfdHlwZSkgewog
ICAgaW5zZXJ0KF9fcG9zLCAoc2l6ZV90eXBlKSBfX24sIChfVHApIF9feCk7CiAgfQoKICB0ZW1w
bGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgdm9pZCBfTV9pbnNlcnRfZGlzcGF0Y2goaXRl
cmF0b3IgX19wb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcmF0b3IgX19m
aXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9f
ZmFsc2VfdHlwZSk7CgogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIGlu
c2VydChpdGVyYXRvciBfX3BvcywgX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0
b3IgX19sYXN0KSB7CiAgICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1dEl0ZXJh
dG9yPjo6X0ludGVncmFsIF9JbnRlZ3JhbDsKICAgIF9NX2luc2VydF9kaXNwYXRjaChfX3Bvcywg
X19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7CiAgfQoKCgoKCgogIHZvaWQgaW5zZXJ0KGl0
ZXJhdG9yIF9fcG9zLCBzaXplX3R5cGUgX19uLCBjb25zdCBfVHAmIF9feCk7CiAKICB2b2lkIHB1
c2hfZnJvbnQoY29uc3QgX1RwJiBfX3gpIHsgaW5zZXJ0KGJlZ2luKCksIF9feCk7IH0KICB2b2lk
IHB1c2hfZnJvbnQoKSB7aW5zZXJ0KGJlZ2luKCkpO30KICB2b2lkIHB1c2hfYmFjayhjb25zdCBf
VHAmIF9feCkgeyBpbnNlcnQoZW5kKCksIF9feCk7IH0KICB2b2lkIHB1c2hfYmFjaygpIHtpbnNl
cnQoZW5kKCkpO30KCiAgaXRlcmF0b3IgZXJhc2UoaXRlcmF0b3IgX19wb3NpdGlvbikgewogICAg
X05vZGUqIF9fbmV4dF9ub2RlID0gKF9Ob2RlKikgKF9fcG9zaXRpb24uX01fbm9kZS0+X01fbmV4
dCk7CiAgICBfTm9kZSogX19wcmV2X25vZGUgPSAoX05vZGUqKSAoX19wb3NpdGlvbi5fTV9ub2Rl
LT5fTV9wcmV2KTsKICAgIF9fcHJldl9ub2RlLT5fTV9uZXh0ID0gX19uZXh0X25vZGU7CiAgICBf
X25leHRfbm9kZS0+X01fcHJldiA9IF9fcHJldl9ub2RlOwogICAgZGVzdHJveSgmX19wb3NpdGlv
bi5fTV9ub2RlLT5fTV9kYXRhKTsKICAgIF9NX3B1dF9ub2RlKF9fcG9zaXRpb24uX01fbm9kZSk7
CiAgICByZXR1cm4gaXRlcmF0b3IoX19uZXh0X25vZGUpOwogIH0KICBpdGVyYXRvciBlcmFzZShp
dGVyYXRvciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xhc3QpOwogIHZvaWQgY2xlYXIoKSB7IF9CYXNl
OjpjbGVhcigpOyB9CgogIHZvaWQgcmVzaXplKHNpemVfdHlwZSBfX25ld19zaXplLCBjb25zdCBf
VHAmIF9feCk7CiAgdm9pZCByZXNpemUoc2l6ZV90eXBlIF9fbmV3X3NpemUpIHsgcmVzaXplKF9f
bmV3X3NpemUsIF9UcCgpKTsgfQoKICB2b2lkIHBvcF9mcm9udCgpIHsgZXJhc2UoYmVnaW4oKSk7
IH0KICB2b2lkIHBvcF9iYWNrKCkgeyAKICAgIGl0ZXJhdG9yIF9fdG1wID0gZW5kKCk7CiAgICBl
cmFzZSgtLV9fdG1wKTsKICB9CiAgbGlzdChzaXplX3R5cGUgX19uLCBjb25zdCBfVHAmIF9fdmFs
dWUsCiAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkK
ICAgIDogX0Jhc2UoX19hKQogICAgeyBpbnNlcnQoYmVnaW4oKSwgX19uLCBfX3ZhbHVlKTsgfQog
IGV4cGxpY2l0IGxpc3Qoc2l6ZV90eXBlIF9fbikKICAgIDogX0Jhc2UoYWxsb2NhdG9yX3R5cGUo
KSkKICAgIHsgaW5zZXJ0KGJlZ2luKCksIF9fbiwgX1RwKCkpOyB9CgoKCiAgIAogICAKICB0ZW1w
bGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgbGlzdChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0
LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19h
ID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgIDogX0Jhc2UoX19hKQogICAgeyBpbnNlcnQoYmVnaW4o
KSwgX19maXJzdCwgX19sYXN0KTsgfQoKIyA0MzMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRo
YXQtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2xpc3QuaCIgMwoK
ICBsaXN0KGNvbnN0IGxpc3Q8X1RwLCBfQWxsb2M+JiBfX3gpIDogX0Jhc2UoX194LmdldF9hbGxv
Y2F0b3IoKSkKICAgIHsgaW5zZXJ0KGJlZ2luKCksIF9feC5iZWdpbigpLCBfX3guZW5kKCkpOyB9
CgogIH5saXN0KCkgeyB9CgogIGxpc3Q8X1RwLCBfQWxsb2M+JiBvcGVyYXRvcj0oY29uc3QgbGlz
dDxfVHAsIF9BbGxvYz4mIF9feCk7CgpwdWJsaWM6CiAgIAogICAKICAgCiAgIAoKICB2b2lkIGFz
c2lnbihzaXplX3R5cGUgX19uLCBjb25zdCBfVHAmIF9fdmFsKTsKCgoKICB0ZW1wbGF0ZSA8Y2xh
c3MgX0lucHV0SXRlcmF0b3I+CiAgdm9pZCBhc3NpZ24oX0lucHV0SXRlcmF0b3IgX19maXJzdCwg
X0lucHV0SXRlcmF0b3IgX19sYXN0KSB7CiAgICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19pbnRlZ2Vy
PF9JbnB1dEl0ZXJhdG9yPjo6X0ludGVncmFsIF9JbnRlZ3JhbDsKICAgIF9NX2Fzc2lnbl9kaXNw
YXRjaChfX2ZpcnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKICB9CgogIHRlbXBsYXRlIDxjbGFz
cyBfSW50ZWdlcj4KICB2b2lkIF9NX2Fzc2lnbl9kaXNwYXRjaChfSW50ZWdlciBfX24sIF9JbnRl
Z2VyIF9fdmFsLCBfX3RydWVfdHlwZSkKICAgIHsgYXNzaWduKChzaXplX3R5cGUpIF9fbiwgKF9U
cCkgX192YWwpOyB9CgogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIF9N
X2Fzc2lnbl9kaXNwYXRjaChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19mYWxzZV90eXBlKTsKCgoKcHJvdGVj
dGVkOgogIHZvaWQgdHJhbnNmZXIoaXRlcmF0b3IgX19wb3NpdGlvbiwgaXRlcmF0b3IgX19maXJz
dCwgaXRlcmF0b3IgX19sYXN0KSB7CiAgICBpZiAoX19wb3NpdGlvbiAhPSBfX2xhc3QpIHsKICAg
ICAgIAogICAgICAoKF9Ob2RlKikgKF9fbGFzdC5fTV9ub2RlLT5fTV9wcmV2KSktPl9NX25leHQg
ICAgID0gX19wb3NpdGlvbi5fTV9ub2RlOwogICAgICAoKF9Ob2RlKikgKF9fZmlyc3QuX01fbm9k
ZS0+X01fcHJldikpLT5fTV9uZXh0ICAgID0gX19sYXN0Ll9NX25vZGU7CiAgICAgICgoX05vZGUq
KSAoX19wb3NpdGlvbi5fTV9ub2RlLT5fTV9wcmV2KSktPl9NX25leHQgPSBfX2ZpcnN0Ll9NX25v
ZGU7IAoKICAgICAgIAogICAgICBfTm9kZSogX190bXAgPSAoX05vZGUqKSAoX19wb3NpdGlvbi5f
TV9ub2RlLT5fTV9wcmV2KTsKICAgICAgX19wb3NpdGlvbi5fTV9ub2RlLT5fTV9wcmV2ID0gX19s
YXN0Ll9NX25vZGUtPl9NX3ByZXY7CiAgICAgIF9fbGFzdC5fTV9ub2RlLT5fTV9wcmV2ICAgICAg
PSBfX2ZpcnN0Ll9NX25vZGUtPl9NX3ByZXY7IAogICAgICBfX2ZpcnN0Ll9NX25vZGUtPl9NX3By
ZXYgICAgPSBfX3RtcDsKICAgIH0KICB9CgpwdWJsaWM6CiAgdm9pZCBzcGxpY2UoaXRlcmF0b3Ig
X19wb3NpdGlvbiwgbGlzdCYgX194KSB7CiAgICBpZiAoIV9feC5lbXB0eSgpKSAKICAgICAgdHJh
bnNmZXIoX19wb3NpdGlvbiwgX194LmJlZ2luKCksIF9feC5lbmQoKSk7CiAgfQogIHZvaWQgc3Bs
aWNlKGl0ZXJhdG9yIF9fcG9zaXRpb24sIGxpc3QmLCBpdGVyYXRvciBfX2kpIHsKICAgIGl0ZXJh
dG9yIF9faiA9IF9faTsKICAgICsrX19qOwogICAgaWYgKF9fcG9zaXRpb24gPT0gX19pIHx8IF9f
cG9zaXRpb24gPT0gX19qKSByZXR1cm47CiAgICB0cmFuc2ZlcihfX3Bvc2l0aW9uLCBfX2ksIF9f
aik7CiAgfQogIHZvaWQgc3BsaWNlKGl0ZXJhdG9yIF9fcG9zaXRpb24sIGxpc3QmLCBpdGVyYXRv
ciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xhc3QpIHsKICAgIGlmIChfX2ZpcnN0ICE9IF9fbGFzdCkg
CiAgICAgIHRyYW5zZmVyKF9fcG9zaXRpb24sIF9fZmlyc3QsIF9fbGFzdCk7CiAgfQogIHZvaWQg
cmVtb3ZlKGNvbnN0IF9UcCYgX192YWx1ZSk7CiAgdm9pZCB1bmlxdWUoKTsKICB2b2lkIG1lcmdl
KGxpc3QmIF9feCk7CiAgdm9pZCByZXZlcnNlKCk7CiAgdm9pZCBzb3J0KCk7CgoKICB0ZW1wbGF0
ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4gdm9pZCByZW1vdmVfaWYoX1ByZWRpY2F0ZSk7CiAgdGVtcGxh
dGUgPGNsYXNzIF9CaW5hcnlQcmVkaWNhdGU+IHZvaWQgdW5pcXVlKF9CaW5hcnlQcmVkaWNhdGUp
OwogIHRlbXBsYXRlIDxjbGFzcyBfU3RyaWN0V2Vha09yZGVyaW5nPiB2b2lkIG1lcmdlKGxpc3Qm
LCBfU3RyaWN0V2Vha09yZGVyaW5nKTsKICB0ZW1wbGF0ZSA8Y2xhc3MgX1N0cmljdFdlYWtPcmRl
cmluZz4gdm9pZCBzb3J0KF9TdHJpY3RXZWFrT3JkZXJpbmcpOwoKCiAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3I9PSA8PiAgKAogICAgY29uc3QgbGlzdCYgX194LCBjb25zdCBsaXN0JiBfX3kpOwp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IGxpc3Q8X1RwLF9BbGxvYz4mIF9feCwKICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBsaXN0PF9UcCxfQWxsb2M+JiBfX3kpCnsKICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q8X1RwLF9B
bGxvYz46Ol9Ob2RlIF9Ob2RlOwogIF9Ob2RlKiBfX2UxID0gX194Ll9NX25vZGU7CiAgX05vZGUq
IF9fZTIgPSBfX3kuX01fbm9kZTsKICBfTm9kZSogX19uMSA9IChfTm9kZSopIF9fZTEtPl9NX25l
eHQ7CiAgX05vZGUqIF9fbjIgPSAoX05vZGUqKSBfX2UyLT5fTV9uZXh0OwogIGZvciAoIDsgX19u
MSAhPSBfX2UxICYmIF9fbjIgIT0gX19lMiA7CiAgICAgICAgICBfX24xID0gKF9Ob2RlKikgX19u
MS0+X01fbmV4dCwgX19uMiA9IChfTm9kZSopIF9fbjItPl9NX25leHQpCiAgICBpZiAoX19uMS0+
X01fZGF0YSAhPSBfX24yLT5fTV9kYXRhKQogICAgICByZXR1cm4gZmFsc2U7CiAgcmV0dXJuIF9f
bjEgPT0gX19lMSAmJiBfX24yID09IF9fZTI7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNz
IF9BbGxvYz4KaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGxpc3Q8X1RwLF9BbGxvYz4mIF9f
eCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3Q8X1RwLF9BbGxvYz4mIF9feSkKewog
IHJldHVybiBsZXhpY29ncmFwaGljYWxfY29tcGFyZShfX3guYmVnaW4oKSwgX194LmVuZCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3kuYmVnaW4oKSwgX195LmVuZCgpKTsK
fQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CmlubGluZSB2b2lkIApzd2Fw
KGxpc3Q8X1RwLCBfQWxsb2M+JiBfX3gsIGxpc3Q8X1RwLCBfQWxsb2M+JiBfX3kpCnsKICBfX3gu
c3dhcChfX3kpOwp9CgoKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPiB0ZW1w
bGF0ZSA8Y2xhc3MgX0lucHV0SXRlcj4Kdm9pZCAKbGlzdDxfVHAsIF9BbGxvYz46Ol9NX2luc2Vy
dF9kaXNwYXRjaChpdGVyYXRvciBfX3Bvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mYWxzZV90eXBlKQp7CiAgZm9yICgg
OyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgaW5zZXJ0KF9fcG9zaXRpb24sICpf
X2ZpcnN0KTsKfQoKIyA1ODIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45
NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2xpc3QuaCIgMwoKCnRlbXBsYXRlIDxj
bGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4Kdm9pZCAKbGlzdDxfVHAsIF9BbGxvYz46Omluc2VydChp
dGVyYXRvciBfX3Bvc2l0aW9uLCBzaXplX3R5cGUgX19uLCBjb25zdCBfVHAmIF9feCkKewogIGZv
ciAoIDsgX19uID4gMDsgLS1fX24pCiAgICBpbnNlcnQoX19wb3NpdGlvbiwgX194KTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgpsaXN0PF9UcCxfQWxsb2M+OjppdGVyYXRv
ciBsaXN0PF9UcCwgX0FsbG9jPjo6ZXJhc2UoaXRlcmF0b3IgX19maXJzdCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciBfX2xhc3Qp
CnsKICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpCiAgICBlcmFzZShfX2ZpcnN0KyspOwogIHJl
dHVybiBfX2xhc3Q7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4Kdm9pZCBs
aXN0PF9UcCwgX0FsbG9jPjo6cmVzaXplKHNpemVfdHlwZSBfX25ld19zaXplLCBjb25zdCBfVHAm
IF9feCkKewogIGl0ZXJhdG9yIF9faSA9IGJlZ2luKCk7CiAgc2l6ZV90eXBlIF9fbGVuID0gMDsK
ICBmb3IgKCA7IF9faSAhPSBlbmQoKSAmJiBfX2xlbiA8IF9fbmV3X3NpemU7ICsrX19pLCArK19f
bGVuKQogICAgOwogIGlmIChfX2xlbiA9PSBfX25ld19zaXplKQogICAgZXJhc2UoX19pLCBlbmQo
KSk7CiAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgaW5zZXJ0KGVuZCgpLCBf
X25ld19zaXplIC0gX19sZW4sIF9feCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9B
bGxvYz4KbGlzdDxfVHAsIF9BbGxvYz4mIGxpc3Q8X1RwLCBfQWxsb2M+OjpvcGVyYXRvcj0oY29u
c3QgbGlzdDxfVHAsIF9BbGxvYz4mIF9feCkKewogIGlmICh0aGlzICE9ICZfX3gpIHsKICAgIGl0
ZXJhdG9yIF9fZmlyc3QxID0gYmVnaW4oKTsKICAgIGl0ZXJhdG9yIF9fbGFzdDEgPSBlbmQoKTsK
ICAgIGNvbnN0X2l0ZXJhdG9yIF9fZmlyc3QyID0gX194LmJlZ2luKCk7CiAgICBjb25zdF9pdGVy
YXRvciBfX2xhc3QyID0gX194LmVuZCgpOwogICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEg
JiYgX19maXJzdDIgIT0gX19sYXN0MikgCiAgICAgICpfX2ZpcnN0MSsrID0gKl9fZmlyc3QyKys7
CiAgICBpZiAoX19maXJzdDIgPT0gX19sYXN0MikKICAgICAgZXJhc2UoX19maXJzdDEsIF9fbGFz
dDEpOwogICAgZWxzZQogICAgICBpbnNlcnQoX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIpOwog
IH0KICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4K
dm9pZCBsaXN0PF9UcCwgX0FsbG9jPjo6YXNzaWduKHNpemVfdHlwZSBfX24sIGNvbnN0IF9UcCYg
X192YWwpIHsKICBpdGVyYXRvciBfX2kgPSBiZWdpbigpOwogIGZvciAoIDsgX19pICE9IGVuZCgp
ICYmIF9fbiA+IDA7ICsrX19pLCAtLV9fbikKICAgICpfX2kgPSBfX3ZhbDsKICBpZiAoX19uID4g
MCkKICAgIGluc2VydChlbmQoKSwgX19uLCBfX3ZhbCk7CiAgZWxzZQogICAgZXJhc2UoX19pLCBl
bmQoKSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPiB0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlcj4Kdm9pZApsaXN0PF9UcCwgX0FsbG9jPjo6X01fYXNzaWduX2Rpc3Bh
dGNoKF9JbnB1dEl0ZXIgX19maXJzdDIsIF9JbnB1dEl0ZXIgX19sYXN0MiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ZhbHNlX3R5cGUpCnsKICBpdGVyYXRvciBfX2Zp
cnN0MSA9IGJlZ2luKCk7CiAgaXRlcmF0b3IgX19sYXN0MSA9IGVuZCgpOwogIGZvciAoIDsgX19m
aXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyOyArK19fZmlyc3QxLCArK19f
Zmlyc3QyKQogICAgKl9fZmlyc3QxID0gKl9fZmlyc3QyOwogIGlmIChfX2ZpcnN0MiA9PSBfX2xh
c3QyKQogICAgZXJhc2UoX19maXJzdDEsIF9fbGFzdDEpOwogIGVsc2UKICAgIGluc2VydChfX2xh
c3QxLCBfX2ZpcnN0MiwgX19sYXN0Mik7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3Mg
X0FsbG9jPgp2b2lkIGxpc3Q8X1RwLCBfQWxsb2M+OjpyZW1vdmUoY29uc3QgX1RwJiBfX3ZhbHVl
KQp7CiAgaXRlcmF0b3IgX19maXJzdCA9IGJlZ2luKCk7CiAgaXRlcmF0b3IgX19sYXN0ID0gZW5k
KCk7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICBpdGVyYXRvciBfX25leHQgPSBf
X2ZpcnN0OwogICAgKytfX25leHQ7CiAgICBpZiAoKl9fZmlyc3QgPT0gX192YWx1ZSkgZXJhc2Uo
X19maXJzdCk7CiAgICBfX2ZpcnN0ID0gX19uZXh0OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9U
cCwgY2xhc3MgX0FsbG9jPgp2b2lkIGxpc3Q8X1RwLCBfQWxsb2M+Ojp1bmlxdWUoKQp7CiAgaXRl
cmF0b3IgX19maXJzdCA9IGJlZ2luKCk7CiAgaXRlcmF0b3IgX19sYXN0ID0gZW5kKCk7CiAgaWYg
KF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm47CiAgaXRlcmF0b3IgX19uZXh0ID0gX19maXJzdDsK
ICB3aGlsZSAoKytfX25leHQgIT0gX19sYXN0KSB7CiAgICBpZiAoKl9fZmlyc3QgPT0gKl9fbmV4
dCkKICAgICAgZXJhc2UoX19uZXh0KTsKICAgIGVsc2UKICAgICAgX19maXJzdCA9IF9fbmV4dDsK
ICAgIF9fbmV4dCA9IF9fZmlyc3Q7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBf
QWxsb2M+CnZvaWQgbGlzdDxfVHAsIF9BbGxvYz46Om1lcmdlKGxpc3Q8X1RwLCBfQWxsb2M+JiBf
X3gpCnsKICBpdGVyYXRvciBfX2ZpcnN0MSA9IGJlZ2luKCk7CiAgaXRlcmF0b3IgX19sYXN0MSA9
IGVuZCgpOwogIGl0ZXJhdG9yIF9fZmlyc3QyID0gX194LmJlZ2luKCk7CiAgaXRlcmF0b3IgX19s
YXN0MiA9IF9feC5lbmQoKTsKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0
MiAhPSBfX2xhc3QyKQogICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkgewogICAgICBpdGVy
YXRvciBfX25leHQgPSBfX2ZpcnN0MjsKICAgICAgdHJhbnNmZXIoX19maXJzdDEsIF9fZmlyc3Qy
LCArK19fbmV4dCk7CiAgICAgIF9fZmlyc3QyID0gX19uZXh0OwogICAgfQogICAgZWxzZQogICAg
ICArK19fZmlyc3QxOwogIGlmIChfX2ZpcnN0MiAhPSBfX2xhc3QyKSB0cmFuc2ZlcihfX2xhc3Qx
LCBfX2ZpcnN0MiwgX19sYXN0Mik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxv
Yz4Kdm9pZCBsaXN0PF9UcCwgX0FsbG9jPjo6cmV2ZXJzZSgpIAp7CiAgIAogIGlmIChfTV9ub2Rl
LT5fTV9uZXh0ICE9IF9NX25vZGUgJiYKICAgICAgKChfTm9kZSopIChfTV9ub2RlLT5fTV9uZXh0
KSktPl9NX25leHQgIT0gX01fbm9kZSkgewogICAgaXRlcmF0b3IgX19maXJzdCA9IGJlZ2luKCk7
CiAgICArK19fZmlyc3Q7CiAgICB3aGlsZSAoX19maXJzdCAhPSBlbmQoKSkgewogICAgICBpdGVy
YXRvciBfX29sZCA9IF9fZmlyc3Q7CiAgICAgICsrX19maXJzdDsKICAgICAgdHJhbnNmZXIoYmVn
aW4oKSwgX19vbGQsIF9fZmlyc3QpOwogICAgfQogIH0KfSAgICAKCnRlbXBsYXRlIDxjbGFzcyBf
VHAsIGNsYXNzIF9BbGxvYz4Kdm9pZCBsaXN0PF9UcCwgX0FsbG9jPjo6c29ydCgpCnsKICAgCiAg
aWYgKF9NX25vZGUtPl9NX25leHQgIT0gX01fbm9kZSAmJgogICAgICAoKF9Ob2RlKikgKF9NX25v
ZGUtPl9NX25leHQpKS0+X01fbmV4dCAhPSBfTV9ub2RlKSB7CiAgICBsaXN0PF9UcCwgX0FsbG9j
PiBfX2NhcnJ5OwogICAgbGlzdDxfVHAsIF9BbGxvYz4gX19jb3VudGVyWzY0XTsKICAgIGludCBf
X2ZpbGwgPSAwOwogICAgd2hpbGUgKCFlbXB0eSgpKSB7CiAgICAgIF9fY2Fycnkuc3BsaWNlKF9f
Y2FycnkuYmVnaW4oKSwgKnRoaXMsIGJlZ2luKCkpOwogICAgICBpbnQgX19pID0gMDsKICAgICAg
d2hpbGUoX19pIDwgX19maWxsICYmICFfX2NvdW50ZXJbX19pXS5lbXB0eSgpKSB7CiAgICAgICAg
X19jb3VudGVyW19faV0ubWVyZ2UoX19jYXJyeSk7CiAgICAgICAgX19jYXJyeS5zd2FwKF9fY291
bnRlcltfX2krK10pOwogICAgICB9CiAgICAgIF9fY2Fycnkuc3dhcChfX2NvdW50ZXJbX19pXSk7
ICAgICAgICAgCiAgICAgIGlmIChfX2kgPT0gX19maWxsKSArK19fZmlsbDsKICAgIH0gCgogICAg
Zm9yIChpbnQgX19pID0gMTsgX19pIDwgX19maWxsOyArK19faSkKICAgICAgX19jb3VudGVyW19f
aV0ubWVyZ2UoX19jb3VudGVyW19faS0xXSk7CiAgICBzd2FwKF9fY291bnRlcltfX2ZpbGwtMV0p
OwogIH0KfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+IHRlbXBsYXRlIDxj
bGFzcyBfUHJlZGljYXRlPgp2b2lkIGxpc3Q8X1RwLCBfQWxsb2M+OjpyZW1vdmVfaWYoX1ByZWRp
Y2F0ZSBfX3ByZWQpCnsKICBpdGVyYXRvciBfX2ZpcnN0ID0gYmVnaW4oKTsKICBpdGVyYXRvciBf
X2xhc3QgPSBlbmQoKTsKICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpIHsKICAgIGl0ZXJhdG9y
IF9fbmV4dCA9IF9fZmlyc3Q7CiAgICArK19fbmV4dDsKICAgIGlmIChfX3ByZWQoKl9fZmlyc3Qp
KSBlcmFzZShfX2ZpcnN0KTsKICAgIF9fZmlyc3QgPSBfX25leHQ7CiAgfQp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+IHRlbXBsYXRlIDxjbGFzcyBfQmluYXJ5UHJlZGljYXRl
Pgp2b2lkIGxpc3Q8X1RwLCBfQWxsb2M+Ojp1bmlxdWUoX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFy
eV9wcmVkKQp7CiAgaXRlcmF0b3IgX19maXJzdCA9IGJlZ2luKCk7CiAgaXRlcmF0b3IgX19sYXN0
ID0gZW5kKCk7CiAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm47CiAgaXRlcmF0b3IgX19u
ZXh0ID0gX19maXJzdDsKICB3aGlsZSAoKytfX25leHQgIT0gX19sYXN0KSB7CiAgICBpZiAoX19i
aW5hcnlfcHJlZCgqX19maXJzdCwgKl9fbmV4dCkpCiAgICAgIGVyYXNlKF9fbmV4dCk7CiAgICBl
bHNlCiAgICAgIF9fZmlyc3QgPSBfX25leHQ7CiAgICBfX25leHQgPSBfX2ZpcnN0OwogIH0KfQoK
dGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPiB0ZW1wbGF0ZSA8Y2xhc3MgX1N0cmlj
dFdlYWtPcmRlcmluZz4Kdm9pZCBsaXN0PF9UcCwgX0FsbG9jPjo6bWVyZ2UobGlzdDxfVHAsIF9B
bGxvYz4mIF9feCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1N0cmljdFdlYWtPcmRl
cmluZyBfX2NvbXApCnsKICBpdGVyYXRvciBfX2ZpcnN0MSA9IGJlZ2luKCk7CiAgaXRlcmF0b3Ig
X19sYXN0MSA9IGVuZCgpOwogIGl0ZXJhdG9yIF9fZmlyc3QyID0gX194LmJlZ2luKCk7CiAgaXRl
cmF0b3IgX19sYXN0MiA9IF9feC5lbmQoKTsKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAm
JiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgaWYgKF9fY29tcCgqX19maXJzdDIsICpfX2ZpcnN0
MSkpIHsKICAgICAgaXRlcmF0b3IgX19uZXh0ID0gX19maXJzdDI7CiAgICAgIHRyYW5zZmVyKF9f
Zmlyc3QxLCBfX2ZpcnN0MiwgKytfX25leHQpOwogICAgICBfX2ZpcnN0MiA9IF9fbmV4dDsKICAg
IH0KICAgIGVsc2UKICAgICAgKytfX2ZpcnN0MTsKICBpZiAoX19maXJzdDIgIT0gX19sYXN0Mikg
dHJhbnNmZXIoX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwLCBjbGFzcyBfQWxsb2M+IHRlbXBsYXRlIDxjbGFzcyBfU3RyaWN0V2Vha09yZGVyaW5nPgp2
b2lkIGxpc3Q8X1RwLCBfQWxsb2M+Ojpzb3J0KF9TdHJpY3RXZWFrT3JkZXJpbmcgX19jb21wKQp7
CiAgIAogIGlmIChfTV9ub2RlLT5fTV9uZXh0ICE9IF9NX25vZGUgJiYKICAgICAgKChfTm9kZSop
IChfTV9ub2RlLT5fTV9uZXh0KSktPl9NX25leHQgIT0gX01fbm9kZSkgewogICAgbGlzdDxfVHAs
IF9BbGxvYz4gX19jYXJyeTsKICAgIGxpc3Q8X1RwLCBfQWxsb2M+IF9fY291bnRlcls2NF07CiAg
ICBpbnQgX19maWxsID0gMDsKICAgIHdoaWxlICghZW1wdHkoKSkgewogICAgICBfX2NhcnJ5LnNw
bGljZShfX2NhcnJ5LmJlZ2luKCksICp0aGlzLCBiZWdpbigpKTsKICAgICAgaW50IF9faSA9IDA7
CiAgICAgIHdoaWxlKF9faSA8IF9fZmlsbCAmJiAhX19jb3VudGVyW19faV0uZW1wdHkoKSkgewog
ICAgICAgIF9fY291bnRlcltfX2ldLm1lcmdlKF9fY2FycnksIF9fY29tcCk7CiAgICAgICAgX19j
YXJyeS5zd2FwKF9fY291bnRlcltfX2krK10pOwogICAgICB9CiAgICAgIF9fY2Fycnkuc3dhcChf
X2NvdW50ZXJbX19pXSk7ICAgICAgICAgCiAgICAgIGlmIChfX2kgPT0gX19maWxsKSArK19fZmls
bDsKICAgIH0gCgogICAgZm9yIChpbnQgX19pID0gMTsgX19pIDwgX19maWxsOyArK19faSkgCiAg
ICAgIF9fY291bnRlcltfX2ldLm1lcmdlKF9fY291bnRlcltfX2ktMV0sIF9fY29tcCk7CiAgICBz
d2FwKF9fY291bnRlcltfX2ZpbGwtMV0pOwogIH0KfQoKCgoKCgoKCiAgCgoKCiAKIAogCiMgMzQg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2lu
Y2x1ZGUvZysrLTMvbGlzdCIgMiAzCgoKCgogCiAKIAojIDEwICIuLi9vcGVyYXRpb25zL3NlcXVl
bnRpYWxpbnRlcmZhY2UuaCIgMgoKCiMgMSAiLi4vbXBlZ2xpYi9tcGVnZmlsZXN1YnN0cmVhbS5o
IiAxCgoKCiAKIAogCiAKIAoKIyAxICIuLi9tcGVnbGliL21wZWdmaWxlc3RyZWFtLmgiIDEKCgoK
IAogCiAKIAogCgojIDEgIi4uL21wZWdsaWIvbXBlZ3R5cGVzLmgiIDEKCgoKIAogCiAKIAogCgog
CiAKCgogIHR5cGVkZWYgY2hhciAgICAgICAgICAgICAgIGludDg7CiAgdHlwZWRlZiBzaG9ydCAg
ICAgICAgICAgICAgaW50MTY7CiAgdHlwZWRlZiBsb25nICAgICAgICAgICAgICAgaW50MzI7CiAg
dHlwZWRlZiBsb25nIGxvbmcgICAgICAgICAgaW50NjQ7CgogIHR5cGVkZWYgdW5zaWduZWQgY2hh
ciAgICAgIHVpbnQ4OwogIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgIHVpbnQxNjsKICB0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgICAgICB1aW50MzI7CiAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgdWludDY0OwoKICAKIyA0MSAiLi4vbXBlZ2xpYi9tcGVndHlwZXMuaCIKCgp0eXBlZGVmIHVp
bnQzMiBGTEFHOwoKIAogCiAKCiAgCiAgCiAgCiAgCgoKCgoKCgogCgoKCgogCiAKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgoKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAKCgoKIAog
CgoKCnN0cnVjdCBNcGVnUGljdHVyZUhlYWRlciB7CiAgICBpbnQzMiAgZmlyc3RCeXRlUG9zOwog
ICAgdWludDMyIHRlbXBvcmFsUmVmZXJlbmNlOwogICAgdWludDMyIHBpY3R1cmVUeXBlOwogICAg
dWludDMyIHZidkRlbGF5OwogICAgRkxBRyAgIGZvcndhcmRWZWN0b3JGdWxsUGl4ZWxzOwogICAg
aW50MTYgIGZvcndhcmRGQ29kZTsKICAgIEZMQUcgICBiYWNrd2FyZFZlY3RvckZ1bGxQaXhlbHM7
CiAgICBpbnQxNiAgYmFja3dhcmRGQ29kZTsKICAgIEZMQUcgICBoYXNFeHRyYUluZm87Cn07CgoK
CnN0cnVjdCBNcGVnR3JvdXBIZWFkZXIgewogICAgaW50MzIgICBmaXJzdEJ5dGVQb3M7CiAgICB1
aW50MzIgIGdycE51bTsKICAgIEZMQUcgICAgaGFzRHJvcEZyYW1lOwogICAgdWludDMyICBob3Vy
czsKICAgIHVpbnQzMiAgbWludXRlczsKICAgIHVpbnQzMiAgc2Vjb25kczsKICAgIHVpbnQzMiAg
cGljdHVyZXM7CiAgICBGTEFHICAgIGlzQ2xvc2VkR3JvdXA7CiAgICBGTEFHICAgIGhhc0Jyb2tl
bkxpbms7Cn07CgoKCnN0cnVjdCBNcGVnU2VxdWVuY2VIZWFkZXIgewogICAgaW50MzIgICAgICAg
ICAgIGZpcnN0Qnl0ZVBvczsKICAgIHVpbnQzMiAgICAgICAgICBzZXFOdW07CiAgICB1aW50MzIg
ICAgICAgICAgaG9yaXpvbnRhbFNpemU7CiAgICB1aW50MzIgICAgICAgICAgdmVydGljYWxTaXpl
OwogICAgZmxvYXQgICAgICAgICAgIHBpeGVsUmF0aW87CiAgICBmbG9hdCAgICAgICAgICAgZnJh
bWVzUGVyU2VjOwogICAgdWludDMyICAgICAgICAgIGJpdHNQZXJTZWM7CiAgICB1aW50MzIgICAg
ICAgICAgdmJ2QnVmZmVyU2l6ZUluQml0czsKICAgIEZMQUcgICAgICAgICAgICBpc0NvbnN0cmFp
bmVkOwogICAgRkxBRyAgICAgICAgICAgIGhhc0N1c3RvbUludHJhTWF0cml4OwogICAgdW5zaWdu
ZWQgY2hhciogIGludHJhTWF0cml4OwogICAgRkxBRyAgICAgICAgICAgIGhhc0N1c3RvbU5vbklu
dHJhTWF0cml4OwogICAgdW5zaWduZWQgY2hhciogIG5vbkludHJhTWF0cml4Owp9OwoKIAogCgoK
CgoKZXh0ZXJuIGZsb2F0IHBpeGVsUmF0aW9MaXN0WzE2XTsKZXh0ZXJuIGZsb2F0IGZyYW1lc1Bl
clNlY0xpc3RbMTZdOwpleHRlcm4gY2hhciogcGljdHVyZVR5cGVMaXN0WzhdOwoKIAoKCiMgMTAg
Ii4uL21wZWdsaWIvbXBlZ2ZpbGVzdHJlYW0uaCIgMgoKIyAxICIuLi9tcGVnbGliL21wZWdzdHJl
YW0uaCIgMQoKCgogCiAKIAogCiAKCgoKCiAKCmNsYXNzIE1wZWdTdHJlYW0gewogICAgcHJvdGVj
dGVkOgoJaW50ICAgICAgIGJpdFBvczsKICAgICAgICBpbnQ2NCAgICAgYml0QnVmZmVyOwoJYm9v
bCAgICAgIGVvZjsKCWludDY0ICAgICBuZXh0Qml0c1ZhbDsKCWludCAgICAgICBuZXh0Qml0c0F2
YWlsYWJsZTsKCQogICAgcHVibGljOgogICAgICAgIE1wZWdTdHJlYW0oKTsKCX5NcGVnU3RyZWFt
KCk7CgoJYm9vbCAgICAgICAgICBpc0VvZigpOwoJdmlydHVhbCB2b2lkICBza2lwQnl0ZXMobG9u
ZyBuKTsKCXVpbnQzMiAgICAgICAgZ2V0Qml0cyhpbnQgbik7Cgl1aW50MzIgICAgICAgIHBlZWtC
aXRzKGludCBuKTsKCWJvb2wgICAgICAgICAgbmV4dEJpdHModWludDMyIHBhdHRlcm4saW50IG4p
OwoKCXZvaWQgICAgICAgICAgbmV4dFN0YXJ0Q29kZSgpOwoKCXZpcnR1YWwgbG9uZyAgZ2V0Rmls
ZVBvcygpID0gMDsKCiAgICBwcm90ZWN0ZWQ6CglpbnQgICAgICAgICAgIGdldFJlYWRCeXRlcygp
OyAgICAgICAgICAKCXZpcnR1YWwgdm9pZCAgZ2V0VWludDMyKCkgPSAwOyAgICAgICAgICAgIAoJ
dmlydHVhbCB2b2lkICBmb3J3YXJkU2Vlayhsb25nIGJ5dGVzKSA9IDA7Cn07CgoKIAoKCiMgMTEg
Ii4uL21wZWdsaWIvbXBlZ2ZpbGVzdHJlYW0uaCIgMgoKCgogCgpjbGFzcyBNcGVnRmlsZVN0cmVh
bSA6IHB1YmxpYyBNcGVnU3RyZWFtIHsKICAgIHByb3RlY3RlZDoKICAgICAgICBGSUxFKiAgICAg
ZmlsZTsKCQogICAgcHVibGljOgogICAgICAgIE1wZWdGaWxlU3RyZWFtKGNvbnN0IGNoYXIqIGZp
bGVuYW1lKTsKCX5NcGVnRmlsZVN0cmVhbSgpOyAgICAgICAgICAgICAgICAgICAKCgl2aXJ0dWFs
IGxvbmcgIGdldEZpbGVQb3MoKTsgICAgICAgICAgIAoKICAgIHByb3RlY3RlZDoKCXZpcnR1YWwg
dm9pZCAgZ2V0VWludDMyKCk7ICAgICAgICAgICAgIAoJdm9pZCAgICAgICAgICBmb3J3YXJkU2Vl
ayhsb25nIGJ5dGVzKTsgCn07CgoKIAoKCiMgMTAgIi4uL21wZWdsaWIvbXBlZ2ZpbGVzdWJzdHJl
YW0uaCIgMgoKIyAxICIuLi9tcGVnbGliL21wZWdzY2FuLmgiIDEKCgoKIAogCiAKIAogCgoKCgog
CiAKCnN0cnVjdCBTdHJlYW1CbG9ja0xvY2F0aW9uIHsKICAgIGxvbmcgZmlsZVBvczsKICAgIGxv
bmcgbGVuZ3RoOwoKICAgIFN0cmVhbUJsb2NrTG9jYXRpb24oKTsKICAgIFN0cmVhbUJsb2NrTG9j
YXRpb24obG9uZyBmaWxlUG9zLGxvbmcgbGVuZ3RoKTsKICAgIFN0cmVhbUJsb2NrTG9jYXRpb24o
Y29uc3QgU3RyZWFtQmxvY2tMb2NhdGlvbiAmc3JjKTsKCiAgICBTdHJlYW1CbG9ja0xvY2F0aW9u
JiBvcGVyYXRvcj0oY29uc3QgU3RyZWFtQmxvY2tMb2NhdGlvbiAmc3JjKTsKfTsKCiAKCmNsYXNz
IE1wZWdTY2FuIHsKICAgIHByb3RlY3RlZDoKICAgICAgICBNcGVnU3RyZWFtICpzdHJlYW07Cgog
ICAgICAgIHN0ZDo6bGlzdDxTdHJlYW1CbG9ja0xvY2F0aW9uPiB2aWRlb1N0cmVhbXNbMTYgXTsK
ICAgICAgICBzdGQ6Omxpc3Q8U3RyZWFtQmxvY2tMb2NhdGlvbj4gYXVkaW9TdHJlYW1zWzMyIF07
CgoJdm9pZCBwYXJzZVN5c3RlbUhlYWRlcigpOwoJdm9pZCBwYXJzZVBhY2soKTsKCXZvaWQgcGFy
c2VQYWNrZXQoKTsKCQogICAgcHVibGljOgogICAgICAgIE1wZWdTY2FuKE1wZWdTdHJlYW0qIHN0
cmVhbSk7Cgl+TXBlZ1NjYW4oKTsKCgl2b2lkIHNjYW4oKTsKCiAgICAgICAgc3RkOjpsaXN0PFN0
cmVhbUJsb2NrTG9jYXRpb24+JiBnZXRBdWRpb1N0cmVhbShpbnQgaWQpOwogICAgICAgIHN0ZDo6
bGlzdDxTdHJlYW1CbG9ja0xvY2F0aW9uPiYgZ2V0VmlkZW9TdHJlYW0oaW50IGlkKTsKCQp9OwoK
IAoKCgojIDExICIuLi9tcGVnbGliL21wZWdmaWxlc3Vic3RyZWFtLmgiIDIKCgogCgpjbGFzcyBN
cGVnRmlsZVN1YlN0cmVhbSA6IHB1YmxpYyBNcGVnRmlsZVN0cmVhbSB7CiAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgc3RkOjpsaXN0PFN0cmVhbUJsb2NrTG9jYXRpb24+ICAgICAgICAgICBsb2NhdGlv
bnM7CiAgICAgICAgc3RkOjpsaXN0PFN0cmVhbUJsb2NrTG9jYXRpb24+OjppdGVyYXRvciBsb2Nh
dGlvbjsKCWxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNSZWFk
OwoJCiAgICBwdWJsaWM6CiAgICAgICAgTXBlZ0ZpbGVTdWJTdHJlYW0oY29uc3QgY2hhciogZmls
ZW5hbWUsc3RkOjpsaXN0PFN0cmVhbUJsb2NrTG9jYXRpb24+ICZsb2NhdGlvbnMpOwogICAgICAg
IE1wZWdGaWxlU3ViU3RyZWFtKGNvbnN0IGNoYXIqIGZpbGVuYW1lLHN0ZDo6bGlzdDxTdHJlYW1C
bG9ja0xvY2F0aW9uPiAmbG9jYXRpb25zLGxvbmcgZmlsZXBvc2l0aW9uKTsKCX5NcGVnRmlsZVN1
YlN0cmVhbSgpOwoKCXZpcnR1YWwgdm9pZCAgIHNraXBCeXRlcyhsb25nIG4pOwogICAgICAgIHZp
cnR1YWwgbG9uZyAgIGdldEZpbGVQb3MoKTsKCgogICAgcHJvdGVjdGVkOgoJdmlydHVhbCB2b2lk
ICAgZ2V0VWludDMyKCk7Cn07CgoKIAoKCiMgMTIgIi4uL29wZXJhdGlvbnMvc2VxdWVudGlhbGlu
dGVyZmFjZS5oIiAyCgoKIyAxICIuLi9tcGVnbGliL21wZWd2aWRlb3NjYW4uaCIgMQoKCgogCiAK
IAogCiAKCgoKIyAxICIuLi9tcGVnbGliL21wZWdodWZmbWFuLmgiIDEKCgoKIAogCiAKIAogCgoK
CiAKCmNsYXNzIE1wZWdIdWZmbWFuIHsKICAgIHByb3RlY3RlZDoKCU1wZWdTdHJlYW0gKnN0cmVh
bTsKCiAgICBwdWJsaWM6IAoJc3RhdGljIGludCBEQ1RfRVNDQVBFOwoJc3RhdGljIGludCBFT0I7
CgoJc3RhdGljIGludCBtYWNyb0Jsb2NrSW5jWzc2XVszXTsKCXN0YXRpYyBpbnQgcFR5cGVNQlR5
cGVbMTVdWzddOwoJc3RhdGljIGludCBiVHlwZU1CVHlwZVsyM11bN107CglzdGF0aWMgaW50IG1v
dGlvbkNvZGVbNjhdWzNdOwoJc3RhdGljIGludCBibG9ja1BhdHRlcm5bMTI3XVszXTsKCXN0YXRp
YyBpbnQgZGN0U2l6ZUx1bWluYW5jZVsxOV1bM107CglzdGF0aWMgaW50IGRjdFNpemVDaHJvbWlu
YW5jZVsxOV1bM107CglzdGF0aWMgaW50IGRjdENvZWZmWzIyN11bNF07CgogICAgcHVibGljOgog
ICAgICAgIE1wZWdIdWZmbWFuKE1wZWdTdHJlYW0gKnN0cmVhbSk7Cgl+TXBlZ0h1ZmZtYW4oKTsK
CWludCogZGVjb2RlKGludCB0YWJbXVszXSk7CglpbnQqIGRlY29kZShpbnQgdGFiW11bNF0pOwoJ
aW50KiBkZWNvZGUoaW50IHRhYltdWzddKTsKCn07CgoKIAoKCiMgMTIgIi4uL21wZWdsaWIvbXBl
Z3ZpZGVvc2Nhbi5oIiAyCgojIDEgIi4uL21wZWdsaWIvbXBlZ2lkY3QuaCIgMQoKCgogCiAKIAog
CiAKCgoKIAoKY2xhc3MgTXBlZ0lEQ1QgewogICAgICAgIGludCBtYXRyMVs2NF07CiAgICAgICAg
aW50IG1hdHIyWzY0XTsKCSAKCXN0YXRpYyBpbnQgSURGVFRhYmxlWzY0XVs2NF07CgogICAgcHVi
bGljOgoJc3RhdGljIGludCBDT05TVF9CSVRTLCBWQUxfQklUUywgQUxMQklUUywgVFdPOwoKICAg
ICAgICBNcGVnSURDVCgpOwoJfk1wZWdJRENUKCk7CgoJdm9pZCBub3JtKGludCAqYWkpOwoJdm9p
ZCBpbnZlcnNlRENUKGludCAqZHN0LGludCAqYWkpOwoJdm9pZCBpbnZlcnNlRENUKGludCAqYWkp
Owp9OwoKIAoKCiMgMTMgIi4uL21wZWdsaWIvbXBlZ3ZpZGVvc2Nhbi5oIiAyCgojIDEgIi4uL21w
ZWdsaWIvbXBlZ3BpY3R1cmUuaCIgMQoKCgoKIAogCiAKIAogCgpjbGFzcyBNcGVnUGljdHVyZTsK
CgojIDEgIi4uL21wZWdsaWIvbXBlZ21vdGlvbnZlY3RvcmRhdGEuaCIgMQoKCgogCiAKIAogCiAK
CnN0cnVjdCBNcGVnTW90aW9uVmVjdG9yRGF0YSB7CiAgICBib29sIG1hY3JvX2Jsb2NrX21vdGlv
bjsKICAgIGJvb2wgZnVsbF9wZWxfdmVjdG9yOwogICAgaW50ICBtb3Rpb25faG9yaXpfY29kZSwg
bW90aW9uX2hvcml6X3I7CiAgICBpbnQgIG1vdGlvbl92ZXJ0aV9jb2RlLCBtb3Rpb25fdmVydGlf
cjsKICAgIGludCAgZl9jb2RlLCBmLCByX3NpemU7CiAgICBpbnQgIHJlY29uX3JpZ2h0X3ByZXY7
CiAgICBpbnQgIHJlY29uX2Rvd25fcHJldjsKCiAgICBpbnQgIHJpZ2h0LGRvd247CiAgICBib29s
IHJpZ2h0X2hhbGYsZG93bl9oYWxmOwoKICAgIGlubGluZSBNcGVnTW90aW9uVmVjdG9yRGF0YSgp
IHsKICAgICAgICByaWdodCA9IGRvd24gPSAwOwoJcmlnaHRfaGFsZiA9ZG93bl9oYWxmID0gZmFs
c2U7CiAgICB9CiAgICBpbmxpbmUgdm9pZCByZXNldCgpIHsKICAgICAgICByZWNvbl9yaWdodF9w
cmV2ID0gMDsKICAgICAgICByZWNvbl9kb3duX3ByZXYgPSAwOwogICAgfQogICAgaW5saW5lIHZv
aWQgY29tcHV0ZSgpIHsKICAgICAgICBpbnQgZE1ELE1EOwogICAgICAgIGludCBtYXggICA9ICAo
Zjw8NCktMTsKICAgICAgICBpbnQgbWluICAgPSAtKGY8PDQpOwogICAgICAgIGludCByYW5nZSA9
IGY8PDU7CgogICAgICAgIGlmKGY9PTEgfHwgbW90aW9uX2hvcml6X2NvZGU9PTApIHsKICAgICAg
ICAgICAgZE1EID0gbW90aW9uX2hvcml6X2NvZGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgZE1EID0gMSArIGYgKiAoYWJzKG1vdGlvbl9ob3Jpel9jb2RlKS0xKSArIG1vdGlvbl9ob3Jp
el9yOwogICAgICAgICAgICBpZihtb3Rpb25faG9yaXpfY29kZTwwKSB7CiAgICAgICAgICAgICAg
ICBkTUQgPSAtZE1EOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIE1EID0gcmVjb25f
cmlnaHRfcHJldiArIGRNRDsKICAgICAgICBpZihNRCA+IG1heCkgewogICAgICAgICAgICBNRCAt
PSByYW5nZTsKICAgICAgICB9IGVsc2UgaWYgKE1EIDwgbWluKSB7CiAgICAgICAgICAgIE1EICs9
IHJhbmdlOwogICAgICAgIH0KCiAgICAgICAgaW50IHJlY29uX3JpZ2h0ICA9IE1EOwogICAgICAg
IHJlY29uX3JpZ2h0X3ByZXYgPSBNRDsKICAgICAgICByaWdodCAgICAgICA9IHJlY29uX3JpZ2h0
ID4+IDE7CiAgICAgICAgcmlnaHRfaGFsZiAgPSByZWNvbl9yaWdodCAmIDE7CgogICAgICAgIGlm
KGY9PTEgfHwgbW90aW9uX3ZlcnRpX2NvZGU9PTApIHsKICAgICAgICAgICAgZE1EID0gbW90aW9u
X3ZlcnRpX2NvZGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZE1EID0gMSArIGYgKiAo
YWJzKG1vdGlvbl92ZXJ0aV9jb2RlKS0xKSttb3Rpb25fdmVydGlfcjsKICAgICAgICAgICAgaWYo
bW90aW9uX3ZlcnRpX2NvZGU8MCkgewogICAgICAgICAgICAgICAgZE1EID0gLWRNRDsKICAgICAg
ICAgICAgfQogICAgICAgIH0KICAgICAgICBNRCA9IHJlY29uX2Rvd25fcHJldiArIGRNRDsKICAg
ICAgICBpZihNRCA+IG1heCkgewogICAgICAgICAgICBNRCAtPSByYW5nZTsKICAgICAgICB9IGVs
c2UgaWYgKE1EIDwgbWluKSB7CiAgICAgICAgICAgIE1EICs9IHJhbmdlOwogICAgICAgIH0KCiAg
ICAgICAgaW50IHJlY29uX2Rvd24gID0gTUQ7CiAgICAgICAgcmVjb25fZG93bl9wcmV2ID0gTUQ7
CiAgICAgICAgZG93biAgICAgICA9IHJlY29uX2Rvd24gPj4gMTsKICAgICAgICBkb3duX2hhbGYg
ID0gcmVjb25fZG93biAmIDE7CiAgICB9CgogICAgaW5saW5lIHZvaWQgY29weShNcGVnTW90aW9u
VmVjdG9yRGF0YSAmc3JjKSB7CiAgICAgICAgbWFjcm9fYmxvY2tfbW90aW9uID0gc3JjLm1hY3Jv
X2Jsb2NrX21vdGlvbjsKICAgICAgICBmdWxsX3BlbF92ZWN0b3IgICAgPSBzcmMuZnVsbF9wZWxf
dmVjdG9yOwogICAgICAgIG1vdGlvbl9ob3Jpel9jb2RlICA9IHNyYy5tb3Rpb25faG9yaXpfY29k
ZTsKICAgICAgICBtb3Rpb25faG9yaXpfciAgICAgPSBzcmMubW90aW9uX2hvcml6X3I7CiAgICAg
ICAgbW90aW9uX3ZlcnRpX2NvZGUgID0gc3JjLm1vdGlvbl92ZXJ0aV9jb2RlOwogICAgICAgIG1v
dGlvbl92ZXJ0aV9yICAgICA9IHNyYy5tb3Rpb25fdmVydGlfcjsKICAgICAgICBmX2NvZGUgICAg
ICAgICAgICAgPSBzcmMuZl9jb2RlOwogICAgICAgIGYgICAgICAgICAgICAgICAgICA9IHNyYy5m
OyAKICAgICAgICByX3NpemUgICAgICAgICAgICAgPSBzcmMucl9zaXplOwogICAgICAgIHJlY29u
X3JpZ2h0X3ByZXYgICA9IHNyYy5yZWNvbl9yaWdodF9wcmV2OwogICAgICAgIHJlY29uX2Rvd25f
cHJldiAgICA9IHNyYy5yZWNvbl9kb3duX3ByZXY7CiAgICAgICAgcmlnaHQgICAgICAgICAgICAg
ID0gc3JjLnJpZ2h0OwogICAgICAgIGRvd24gICAgICAgICAgICAgICA9IHNyYy5kb3duOwogICAg
ICAgIHJpZ2h0X2hhbGYgICAgICAgICA9IHNyYy5yaWdodF9oYWxmOwogICAgICAgIGRvd25faGFs
ZiAgICAgICAgICA9IHNyYy5kb3duX2hhbGY7CiAgICB9Cn07CgogCgoKCiMgMTQgIi4uL21wZWds
aWIvbXBlZ3BpY3R1cmUuaCIgMgoKIyAxICIuLi9tcGVnbGliL21wZWd2aWRlb3BhcnNlLmgiIDEK
CgoKIAogCiAKIAogCgoKCgojIDEgIi4uL21wZWdsaWIvbXBlZ3BpY3R1cmUuaCIgMQojIDkwICIu
Li9tcGVnbGliL21wZWdwaWN0dXJlLmgiCgojIDEzICIuLi9tcGVnbGliL21wZWd2aWRlb3BhcnNl
LmgiIDIKCgoKIAoKdHlwZWRlZiB2b2lkICgqTXBlZ1ZpZGVvQ2FsbGJhY2spKE1wZWdQaWN0dXJl
Kix2b2lkKik7CgogCgpjbGFzcyBNcGVnVmlkZW9QYXJzZSB7CiAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgTXBlZ0lEQ1QgICAgICBpZGN0OwoJICAgIAogICAgICAgIE1wZWdTdHJlYW0gICAgKnN0cmVh
bTsKCU1wZWdIdWZmbWFuICAgKmh1ZmZtYW47CgoJTXBlZ1BpY3R1cmUgICAqcHJldmlvdXNQaWN0
dXJlOwoJTXBlZ1BpY3R1cmUgICAqY3VycmVudFBpY3R1cmU7CglNcGVnUGljdHVyZSAgICpuZXh0
UGljdHVyZTsKCQogICAgICAgIHN0YXRpYyBpbnQgemlnemFnWzY0XTsKICAgICAgICBpbnQgICAg
ICAgIGludHJhTWF0cml4WzY0XTsKICAgICAgICBpbnQgICAgICAgIG5vbkludHJhTWF0cml4WzY0
XTsKCWludCAgICAgICAgcXVhbnRpemVyU2NhbGU7CgkKCSAKICAgICAgICBpbnQgZGN0X2RjX2Ny
X3Bhc3QsIGRjdF9kY19jYl9wYXN0LCBkY3RfZGNfeV9wYXN0OyAKCSAKICAgICAgICBpbnQgbWFj
cm9fYmxvY2tfYWRkcmVzcywgcGFzdF9pbnRyYV9hZGRyZXNzOyAKCSAKICAgICAgICBpbnQgbWJf
d2lkdGgsIG1iX2hlaWdodDsKCQogICAgICAgIE1wZWdNb3Rpb25WZWN0b3JEYXRhIGZvcndhcmQ7
CiAgICAgICAgYm9vbCBtYWNyb19ibG9ja19tb3Rpb25fZm9yd2FyZDsKICAgICAgICBNcGVnTW90
aW9uVmVjdG9yRGF0YSBiYWNrd2FyZDsKICAgICAgICBib29sIG1hY3JvX2Jsb2NrX21vdGlvbl9i
YWNrd2FyZDsKCiAgICAgICAgaW50IG5yRnJhbWVzOwoJCglNcGVnVmlkZW9DYWxsYmFjayBjYWxs
YmFjazsKCXZvaWQqICAgICAgICAgICAgIGNhbGxiYWNrVXNlckRhdGE7Cglib29sICAgICAgICAg
ICAgICBwYXJzZUJGcmFtZXM7Cglib29sICAgICAgICAgICAgICBwYXJzZVBGcmFtZXM7Cglib29s
ICAgICAgICAgICAgICBwYXJzZUlGcmFtZXM7Cglib29sICAgICAgICAgICAgICBkZWNvZGVCRnJh
bWVzOwoJYm9vbCAgICAgICAgICAgICAgZGVjb2RlUEZyYW1lczsKCWJvb2wgICAgICAgICAgICAg
IGRlY29kZUlGcmFtZXM7CgoJdm9pZCBwYXJzZVNlcXVlbmNlSGVhZGVyKCk7Cgl2b2lkIHBhcnNl
R3JvdXAoKTsKCXZvaWQgcGFyc2VQaWN0dXJlKCk7Cgl2b2lkIHBhcnNlU2xpY2UoaW50IGNvZGlu
Z1R5cGUpOwoKCXZvaWQgcGFyc2VJRnJhbWVNYWNyb0Jsb2NrKCk7Cgl2b2lkIHBhcnNlSW50cmFZ
QmxvY2soaW50ICpkY3RfcmVjb24sYm9vbCBmaXJzdEx1bUJsb2NrKTsKCXZvaWQgcGFyc2VJbnRy
YUNiQmxvY2soaW50ICpkY3RfcmVjb24pOwoJdm9pZCBwYXJzZUludHJhQ3JCbG9jayhpbnQgKmRj
dF9yZWNvbik7CiAgICAgICAgaW50ICBwYXJzZUludHJhQUNWYWx1ZXMoaW50ICpkY3RfcmVjb24p
OyAgICAgICAgICAgICAgICAKCgl2b2lkIHBhcnNlUEZyYW1lTWFjcm9CbG9jayhpbnQgbnIpOwoJ
dm9pZCBwYXJzZU5vbkludHJhQmxvY2soaW50ICpkY3RfcmVjb24pOwogICAgICAgIGludCAgcGFy
c2VOb25JbnRyYUFDVmFsdWVzKGludCAqZGN0X3JlY29uLGludCBpZHgsaW50IGxldmVsLGludCBz
aWduKTsKCgl2b2lkIHBhcnNlQkZyYW1lTWFjcm9CbG9jayhpbnQgbnIpOwoKICAgICAgICB2b2lk
IHNldERjdERpZmYoaW50ICpkY3RfcmVjb24saW50IGRjdF9kaWZmLCBpbnQgZGN0X3NpemUpOyAg
ICAgICAgICAgICAgICAKICAgIHB1YmxpYzoKICAgICAgICBNcGVnVmlkZW9QYXJzZShNcGVnU3Ry
ZWFtKiBzdHJlYW0pOwogICAgICAgIE1wZWdWaWRlb1BhcnNlKE1wZWdTdHJlYW0qIHN0cmVhbSxp
bnQgZmlyc3RGcmFtZSk7Cgl+TXBlZ1ZpZGVvUGFyc2UoKTsKCglpbnQgcGFyc2UoTXBlZ1ZpZGVv
Q2FsbGJhY2sgY2FsbGJhY2s9IF9fbnVsbCAsdm9pZCAqY2FsbGJhY2tVc2VyRGF0YT0gX19udWxs
ICk7Cgl2b2lkIHNldERlY29kaW5nU3RyYXRlZ3koaW50IGZsYWdzKTsKCXZvaWQgc2V0UGFyc2lu
Z1N0cmF0ZWd5KGludCBmbGFncyk7Cn07CgogCgoKCiMgMTUgIi4uL21wZWdsaWIvbXBlZ3BpY3R1
cmUuaCIgMgoKCgogCgpzdHJ1Y3QgTXBlZ01hY3JvQmxvY2sgewogICAgYm9vbCAgICAgICAgICAg
ICAgICAgY29weUZvcndhcmQ7CiAgICBib29sICAgICAgICAgICAgICAgICBtb3Rpb25Gb3J3YXJk
OwogICAgYm9vbCAgICAgICAgICAgICAgICAgY29weUJhY2t3YXJkOwogICAgYm9vbCAgICAgICAg
ICAgICAgICAgbW90aW9uQmFja3dhcmQ7CiAgICBib29sICAgICAgICAgICAgICAgICBpbnRyYUNv
ZGVkOwogICAgaW50ICAgICAgICAgICAgICAgICAgY2JwOwoKICAgIE1wZWdNb3Rpb25WZWN0b3JE
YXRhIGZvcndhcmRNb3Rpb247CiAgICBNcGVnTW90aW9uVmVjdG9yRGF0YSBiYWNrd2FyZE1vdGlv
bjsKCiAgICBpbnQgIFkgWzRdWzY0XTsKICAgIGludCAgQ3JbNjRdOwogICAgaW50ICBDYls2NF07
Cn07CgogCgpjbGFzcyBNcGVnUGljdHVyZSB7CiAgICBmcmllbmQgY2xhc3MgTXBlZ1ZpZGVvUGFy
c2U7CiAgICBwcm90ZWN0ZWQ6CiAgICAgICAgaW50ICB3aWR0aCxoZWlnaHQ7CglpbnQgIGNvZGlu
Z1R5cGUsbnVtYmVyOwogICAgICAgIGludCAgKnljY0ltYWdlOwoJYm9vbCBkYXRhUmVhZDsKCWJv
b2wgZGVjb2RlZDsKCU1wZWdQaWN0dXJlICAgICpiYWNrd2FyZFByZWRpY3Rpb25GcmFtZTsKCU1w
ZWdQaWN0dXJlICAgICpmb3J3YXJkUHJlZGljdGlvbkZyYW1lOwogICAgICAgIGludCAgICAgICAg
ICAgICBuck1hY3JvQmxvY2tzOwogICAgICAgIE1wZWdNYWNyb0Jsb2NrICptYWNyb0Jsb2NrczsK
CQogICAgcHVibGljOgogICAgICAgIE1wZWdQaWN0dXJlKGludCB3aWR0aCxpbnQgaGVpZ2h0KTsK
CX5NcGVnUGljdHVyZSgpOwoKCWlubGluZSBNcGVnTWFjcm9CbG9jayAmb3BlcmF0b3JbXSAoaW50
IGkpIHsgcmV0dXJuIG1hY3JvQmxvY2tzW2ldOyB9CiAgICAgICAgdm9pZCByZXNldCgpOwogICAg
ICAgIHZvaWQgZGVjb2RlKE1wZWdJRENUICppY2R0KTsKCQoJaW5saW5lIGJvb2wgaXNEZWNvZGVk
KCkgICAgIHsgcmV0dXJuIGRlY29kZWQ7IH0KICAgICAgICBpbmxpbmUgaW50ICBnZXROdW1iZXIo
KSAgICAgeyByZXR1cm4gbnVtYmVyOyB9CglpbmxpbmUgaW50ICBnZXRXaWR0aCgpICAgICAgeyBy
ZXR1cm4gd2lkdGg7ICB9CglpbmxpbmUgaW50ICBnZXRIZWlnaHQoKSAgICAgeyByZXR1cm4gaGVp
Z2h0OyB9CglpbmxpbmUgaW50ICBnZXRDb2RpbmdUeXBlKCkgeyByZXR1cm4gY29kaW5nVHlwZTsg
fQoJaW5saW5lIGludCAqZ2V0WWNjSW1hZ2UoKSAgIHsgcmV0dXJuIHljY0ltYWdlOyB9CgoJdm9p
ZCBjb252ZXJ0VG9SR0IodWludDgqIGJ1ZmZlcik7Cgl2b2lkIGNvbnZlcnRUb1JHQmEodWludDgq
IGJ1ZmZlcik7Cgl2b2lkIGNvbnZlcnRUb0hTVih1aW50OCogYnVmZmVyKTsKCXZvaWQgY29udmVy
dFRvSVJjb2xvcih1aW50OCogYnVmZmVyKTsKCXZvaWQgY29udmVydFRvSVJjb2xvclJHQih1aW50
OCogYnVmZmVyKTsKCXZvaWQgY29udmVydFRvSVJjb2xvclJHQmEodWludDgqIGJ1ZmZlcik7Cgog
ICAgICAgIHZvaWQgc2V0WVBpeGVscyAoaW50IHhQb3MsaW50IHlQb3MsaW50KiBkY3QpOwogICAg
ICAgIHZvaWQgc2V0Q2JQaXhlbHMoaW50IHhQb3MsaW50IHlQb3MsaW50KiBkY3QpOwogICAgICAg
IHZvaWQgc2V0Q3JQaXhlbHMoaW50IHhQb3MsaW50IHlQb3MsaW50KiBkY3QpOwogICAgICAgIHZv
aWQgY29weU1hY3JvQmxvY2tVbmNoYW5nZWQgKGludCB4UG9zLGludCB5UG9zLE1wZWdQaWN0dXJl
KiBzcmMpOwogICAgICAgIHZvaWQgY29weU1hY3JvQmxvY2tXaXRoTW90aW9uKGludCB4UG9zLGlu
dCB5UG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgIE1wZWdQaWN0dXJlKiBzcmMsIE1wZWdN
b3Rpb25WZWN0b3JEYXRhICptb3Rpb24pOwoKICAgICAgICB2b2lkIGNvcnJlY3RZUGl4ZWxzIChp
bnQgeFBvcyxpbnQgeVBvcyxpbnQqIGRjdCk7CiAgICAgICAgdm9pZCBjb3JyZWN0Q2JQaXhlbHMo
aW50IHhQb3MsaW50IHlQb3MsaW50KiBkY3QpOwogICAgICAgIHZvaWQgY29ycmVjdENyUGl4ZWxz
KGludCB4UG9zLGludCB5UG9zLGludCogZGN0KTsKICAgICAgICB2b2lkIGFkZE1hY3JvQmxvY2tX
aXRoTW90aW9uKGludCB4UG9zLGludCB5UG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgIE1w
ZWdQaWN0dXJlKiBzcmMsIE1wZWdNb3Rpb25WZWN0b3JEYXRhICptb3Rpb24pOwp9OwoKCiAKCgoj
IDE0ICIuLi9tcGVnbGliL21wZWd2aWRlb3NjYW4uaCIgMgoKCgogCiAKCnN0cnVjdCBTZXF1ZW5j
ZUhlYWRlckxvY2F0aW9uIHsKICAgIGxvbmcgZmlsZVBvczsKICAgIGxvbmcgZmlyc3RGcmFtZTsK
CiAgICBTZXF1ZW5jZUhlYWRlckxvY2F0aW9uKCk7CiAgICBTZXF1ZW5jZUhlYWRlckxvY2F0aW9u
KGxvbmcgZmlsZVBvcyxsb25nIGZpcnN0RnJhbWUpOwogICAgU2VxdWVuY2VIZWFkZXJMb2NhdGlv
bihjb25zdCBTZXF1ZW5jZUhlYWRlckxvY2F0aW9uICZzcmMpOwoKICAgIFNlcXVlbmNlSGVhZGVy
TG9jYXRpb24mIG9wZXJhdG9yPShjb25zdCBTZXF1ZW5jZUhlYWRlckxvY2F0aW9uICZzcmMpOwp9
OwoKIAoKY2xhc3MgTXBlZ1ZpZGVvU2NhbiB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgICAgTXBlZ1N0
cmVhbSAqc3RyZWFtOwoKICAgICAgICBpbnQgbnJGcmFtZXM7CiAgICAgICAgYm9vbCBmaXJzdFNl
cXVlbmNlOwogICAgICAgIGludCB3aWR0aDsKICAgICAgICBpbnQgaGVpZ2h0OwogICAgICAgIGlu
dCBmcHM7CglzdGQ6Omxpc3Q8U2VxdWVuY2VIZWFkZXJMb2NhdGlvbj4gc2VxdWVuY2VzOwoJc3Rk
OjpsaXN0PGludD4gICAgICAgICAgICAgICAgICAgIGZyYW1lVHlwZVNlcXVlbmNlOwoJCgl2b2lk
IHBhcnNlU2VxdWVuY2VIZWFkZXIoKTsKCXZvaWQgcGFyc2VHcm91cCgpOwoJdm9pZCBwYXJzZVBp
Y3R1cmUoKTsKCXZvaWQgcGFyc2VTbGljZShpbnQgY29kaW5nVHlwZSk7CiAgICBwdWJsaWM6CiAg
ICAgICAgTXBlZ1ZpZGVvU2NhbihNcGVnU3RyZWFtKiBzdHJlYW0pOwoJfk1wZWdWaWRlb1NjYW4o
KTsKCgl2b2lkIHNjYW4oKTsKCWludCAgZ2V0TnJGcmFtZXMoKTsKCWludCAgZ2V0V2lkdGgoKTsK
CWludCAgZ2V0SGVpZ2h0KCk7CglpbnQgIGdldEZwcygpOwoJaW50ICBnZXRNYXhEaXN0YW5jZUlG
cmFtZXMoKTsKCXN0ZDo6bGlzdDxpbnQ+ICZnZXRGcmFtZVR5cGVTZXF1ZW5jZSgpOwoJc3RkOjps
aXN0PFNlcXVlbmNlSGVhZGVyTG9jYXRpb24+ICZnZXRTZXF1ZW5jZUhlYWRlcnMoKTsKfTsKCiAK
CgoKIyAxNCAiLi4vb3BlcmF0aW9ucy9zZXF1ZW50aWFsaW50ZXJmYWNlLmgiIDIKCgoKCiAKCmNs
YXNzIFNlcXVlbnRpYWxJbnRlcmZhY2UgewogICAgcHJvdGVjdGVkOgogICAgICAgIHB0aHJlYWRf
dCB0aWQ7CiAgICAgICAgY29uc3QgY2hhciogICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1l
OwogICAgICAgIHN0ZDo6bGlzdDxTdHJlYW1CbG9ja0xvY2F0aW9uPiAgICB2aWRlb1N0cmVhbTsK
CWxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydExvY2F0aW9uOwogICAgICAg
IHN0ZDo6bGlzdDxTZXF1ZW5jZUhlYWRlckxvY2F0aW9uPiBzZXF1ZW5jZUhlYWRlcnM7CiAgICAg
ICAgc3RkOjpsaXN0PGludD4gICAgICAgICAgICAgICAgICAgIGZyYW1lVHlwZVNlcXVlbmNlOwog
ICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuckZyYW1lczsKICAgICAg
ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg7CiAgICAgICAgaW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDsKICAgICAgICBpbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnBzOwogICAgICAgIGludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXhJRnJhbWVEaXN0OwogICAgICAgIGludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50RnJhbWU7CgoJTXBlZ1ZpZGVvUGFyc2UgICpwYXJzZXI7CgoJcHRo
cmVhZF9tdXRleF90IGZyYW1lX011dGV4OwoJTXBlZ1BpY3R1cmUgICAgICpmcmFtZTsKCglwdGhy
ZWFkX211dGV4X3QgbmV3RnJhbWVfTXV0ZXg7Cglib29sIG5ld0ZyYW1lOwoKCXB0aHJlYWRfbXV0
ZXhfdCBzdG9wRGVjb2RpbmdfTXV0ZXg7Cglib29sIHN0b3BEZWNvZGluZzsKCglwdGhyZWFkX211
dGV4X3QgYWN0aXZhdGVfTXV0ZXg7CglwdGhyZWFkX2NvbmRfdCAgYWN0aXZhdGVfQ29uZGl0aW9u
OwoKCXB0aHJlYWRfbXV0ZXhfdCBkZWFjdGl2YXRlX011dGV4OwoJcHRocmVhZF9jb25kX3QgIGRl
YWN0aXZhdGVfQ29uZGl0aW9uOwoKICAgICAgICB2b2lkIHN0YXJ0RGVjb2RlcigpOwogICAgICAg
IHZvaWQgc3RvcERlY29kZXIoKTsKCXZvaWQgc2tpcEZyYW1lcyhpbnQgbnIpOwogICAgcHVibGlj
OgogICAgICAgIFNlcXVlbnRpYWxJbnRlcmZhY2UoY29uc3QgY2hhciogZmlsZW5hbWUpOwoJflNl
cXVlbnRpYWxJbnRlcmZhY2UoKTsKCiAgICAgICAgdm9pZCByZWNlaXZlRnJhbWUoTXBlZ1BpY3R1
cmUqIHBpY3R1cmUpOwogICAgICAgIHZvaWQgZGVjb2RlclRocmVhZCgpOwoJCiAgICAgICAgTXBl
Z1BpY3R1cmUqIGdldE5leHRGcmFtZSgpOwoJTXBlZ1BpY3R1cmUqIGdldEZyYW1lKGludCBucik7
CglpbnQgICAgICAgICAgZ2V0TnJGcmFtZXMoKTsKCWludCAgICAgICAgICBnZXRXaWR0aCgpOwoJ
aW50ICAgICAgICAgIGdldEhlaWdodCgpOwoJaW50ICAgICAgICAgIGdldEZwcygpOwp9OwoKCiAK
CgojIDggInNob3cuY3BwIiAyCgojIDEgIi4uL29wZXJhdGlvbnMvaGlzdG9ncmFtLmgiIDEKCgoK
IAogCiAKIAogCgoKCiMgMSAiLi4vbXBlZ2xpYi9jb2xvcmNvbnZlcnNpb24uaCIgMQoKCgogCiAK
IAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCmNsYXNzIENvbG9yQ29udmVy
c2lvbiB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgICAgc3RhdGljIGRvdWJsZSBzdGFuZGFyZERldmlh
dGlvbjsKICAgICAgICBzdGF0aWMgaW50ICAgIGlzR3JleU1ldGhvZDsKCiAgICBwdWJsaWM6CiAg
ICAgICAgc3RhdGljIHZvaWQgaW5pdChpbnQgaXNHcmV5VHlwZT0gMiAsZG91YmxlIHN0ZGRldj0w
LjE3NSkgewoJCSAgICBpc0dyZXlNZXRob2QgICAgICA9IGlzR3JleVR5cGU7CgkJICAgICAgICBz
dGFuZGFyZERldmlhdGlvbiA9IHN0ZGRldjsKCX0KCgoJCiAKCiAgICAgICAgc3RhdGljIGlubGlu
ZSB2b2lkIFlDQ3RvUkdCKGludCBZLGludCBDYixpbnQgQ3IsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4ICZyLHVpbnQ4ICZnLHVpbnQ4ICZiKSB7CiAgICAgICAgICAg
IGludCBSLEcsQjsKICAgICAgICAKICAgICAgICAgICAgUiA9IChpbnQpKFkgKyBDcioxLjQwMjJm
KTsKICAgICAgICAgICAgRyA9IChpbnQpKFkgLSBDYiowLjM0NTZmIC0gQ3IqMC43MTQ1Zik7CiAg
ICAgICAgICAgIEIgPSAoaW50KShZICsgQ2IqMS43NzEwZik7CiAgICAgICAgCiAgICAgICAgICAg
IHIgPSAodWludDgpKChSPDApPzA6KChSPjI1NSk/MjU1OlIpKTsKICAgICAgICAgICAgZyA9ICh1
aW50OCkoKEc8MCk/MDooKEc+MjU1KT8yNTU6RykpOwogICAgICAgICAgICBiID0gKHVpbnQ4KSgo
QjwwKT8wOigoQj4yNTUpPzI1NTpCKSk7CiAgICAgICAgfQogICAgICAgIAogCgogICAgICAgIHN0
YXRpYyBpbmxpbmUgdm9pZCBZQ0N0b0hTVihpbnQgWSxpbnQgQ2IsaW50IENyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OCAmaCx1aW50OCAmcyx1aW50OCAmdikgewog
ICAgICAgICAgICB1aW50OCByLGcsYjsKICAgICAgICAgICAgWUNDdG9SR0IoWSxDYixDcixyLGcs
Yik7CiAgICAgICAgICAgIFJHQnRvSFNWKHIsZyxiLGgscyx2KTsKICAgICAgICB9CiAgICAgICAg
CiAKCiAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIFJHQnRvSFNWKHVpbnQ4IHIsdWludDggZyx1
aW50OCBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OCAmaCx1aW50
OCAmcyx1aW50OCAmdikgewogICAgICAgICAgICBkb3VibGUgeCwgeSwgSCwgUywgVjsKCiAgICAg
ICAgICAgIGlmIChyID09IDAgJiYgZyA9PSAwICYmIGIgPT0gMCkgewogICAgICAgICAgICAgICAg
aCA9IHMgPSB2ID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIFYgPSAo
ZG91YmxlKSgoKCByICk+KCAgZyApKT8oKCggciApPiggIGIgKSk/KCByICk6KCAgYiApKTooKCgg
IGcgKT4oICBiICkpPyggIGcgKTooICBiICkpKSAgLyAyNTUuMDsKICAgICAgICAgICAgICAgIHgg
PSAyICogciAtIGcgLSBiOwogICAgICAgICAgICAgICAgeSA9IHNxcnQoMy4pICogKGcgLSBiKTsK
ICAgICAgICAgICAgICAgIEggPSBhdGFuMih5LCB4KTsKICAgICAgICAgICAgICAgIFMgPSAoZG91
YmxlKSgoKCggciApPiggIGcgKSk/KCgoIHIgKT4oICBiICkpPyggciApOiggIGIgKSk6KCgoICBn
ICk+KCAgYiApKT8oICBnICk6KCAgYiApKSkgIC0gKCgoIHIgKTwoICBnICkpPygoKCByICk8KCAg
YiApKT8oIHIgKTooICBiICkpOigoKCAgZyApPCggIGIgKSk/KCAgZyApOiggIGIgKSkpICkgLyAK
ICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSgoKCByICk+KCAgZyApKT8oKCggciApPiggIGIg
KSk/KCByICk6KCAgYiApKTooKCggIGcgKT4oICBiICkpPyggIGcgKTooICBiICkpKSA7CiAgICAg
ICAgCiAgICAgICAgICAgICAgICBpZiAoSCA8IDAuKSBIICs9IDIgKiAzLjE0MTU5MjY1MzU4OTc5
MzIzODQ2IDsKICAgICAgICAgICAgICAgIEggLz0gMiAqIDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYg
OwogICAgICAgIAogICAgICAgICAgICAgICAgaCA9ICh1aW50OCkoSCAqIDI1NS4gKyAwLjUpOyAg
CiAgICAgICAgICAgICAgICBzID0gKHVpbnQ4KShTICogMjU1LiArIDAuNSk7ICAKICAgICAgICAg
ICAgICAgIHYgPSAodWludDgpKFYgKiAyNTUuICsgMC41KTsgIAogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgICAgIAogCgogICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBIU1Z0b1JHQih1aW50
OCBoLHVpbnQ4IHMsdWludDggdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDggJnIsdWludDggJmcsdWludDggJmIpIHsKICAgICAgICAgIGludCAgICBqOwogICAgICAg
ICAgZG91YmxlIHJkLCBnZCwgYmQ7CiAgICAgICAgICBkb3VibGUgZiwgcCwgcSwgdCwgSCwgUywg
VjsKICAgICAgICAKICAgICAgICAgICAKICAgICAgICAgIEggPSAoZmxvYXQpaCAqIDM2MC4gLyAy
NTYuOwogICAgICAgICAgUyA9IChmbG9hdClzIC8gMjU2LjsKICAgICAgICAgIFYgPSAoZmxvYXQp
diAvIDI1Ni47CiAgICAgICAgCiAgICAgICAgICBpZiAoSCA9PSAtMSB8fCBTPT0wLjApIHsKICAg
ICAgICAgICAgcmQgPSBnZCA9IGJkID0gVjsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICBpZiAoSCA9PSAzNjAuMCkgSCA9IDAuMDsKICAgICAgICAgICAgSCA9IEggLyA2
MC4wOwogICAgICAgICAgICBqID0gKGludClIOwogICAgICAgICAgICBpZiAoajwwKSBqPTA7ICAg
ICAgICAgICAKICAgICAgICAgICAgZiA9IEggLSBqOwogICAgICAgICAgICBwID0gViAqICgxLVMp
OwogICAgICAgICAgICBxID0gViAqICgxIC0gKFMqZikpOwogICAgICAgICAgICB0ID0gViAqICgx
IC0gKFMqKDEgLSBmKSkpOwogICAgICAgIAogICAgICAgICAgICBzd2l0Y2ggKGopIHsKICAgICAg
ICAgICAgY2FzZSAwOiAgcmQgPSBWOyAgZ2QgPSB0OyAgYmQgPSBwOyAgYnJlYWs7CiAgICAgICAg
ICAgIGNhc2UgMTogIHJkID0gcTsgIGdkID0gVjsgIGJkID0gcDsgIGJyZWFrOwogICAgICAgICAg
ICBjYXNlIDI6ICByZCA9IHA7ICBnZCA9IFY7ICBiZCA9IHQ7ICBicmVhazsKICAgICAgICAgICAg
Y2FzZSAzOiAgcmQgPSBwOyAgZ2QgPSBxOyAgYmQgPSBWOyAgYnJlYWs7CiAgICAgICAgICAgIGNh
c2UgNDogIHJkID0gdDsgIGdkID0gcDsgIGJkID0gVjsgIGJyZWFrOwogICAgICAgICAgICBjYXNl
IDU6ICByZCA9IFY7ICBnZCA9IHA7ICBiZCA9IHE7ICBicmVhazsKICAgICAgICAgICAgZGVmYXVs
dDogcmQgPSBWOyAgZ2QgPSB0OyAgYmQgPSBwOyAgYnJlYWs7ICAgCiAgICAgICAgICAgIH0KICAg
ICAgICAgIH0KICAgICAgICAKICAgICAgICAgIHIgPSAodWludDgpKChyZCAqIDI1NS4wKSArIDAu
NSk7CiAgICAgICAgICBnID0gKHVpbnQ4KSgoZ2QgKiAyNTUuMCkgKyAwLjUpOwogICAgICAgICAg
YiA9ICh1aW50OCkoKGJkICogMjU1LjApICsgMC41KTsKICAgICAgICB9CiAgICAgICAgCiAKCiAg
ICAgICAgc3RhdGljIGlubGluZSB2b2lkIFlDQ3RvSVIoaW50IFksaW50IENiLGludCBDcix1aW50
OCAmaXIpIHsKICAgICAgICAgICAgYm9vbCBpc0dyZXk7CgkgICAgdWludDggaCxzLHY7CgkgICAg
WUNDdG9IU1YoWSxDYixDcixoLHMsdik7CgogICAgICAgICAgICBzd2l0Y2goaXNHcmV5TWV0aG9k
KSB7CiAgICAgICAgICAgICAgICBjYXNlIDAgOiAgaXNHcmV5ID0gKCggcyApIDw9ICgoMjU2ICog
MjApIC8gMTAwKSApIDsgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDEgOiAgIGlzR3JleSA9
ICgoIHMgKSA8PSAoMzArKCgyNTUtICB2ICkvMykpKSA7ICBicmVhazsKICAgICAgICAgICAgICAg
IGNhc2UgMiA6IGlzR3JleSA9ICggdiAgPD0gMjAgICsgKDI1NiAgKyAxMCApICogKGV4cCgtKCAg
cyAgICogICBzICApIC8gKDIuMCAqICAgIHN0YW5kYXJkRGV2aWF0aW9uICAgKiAgICBzdGFuZGFy
ZERldmlhdGlvbiAgICogMjU2ICAqIDI1NiAgKSkpICkgOyAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgaWYoaXNHcmV5KSB7CiAgICAgICAgICAgICAgICBpbnQgY29s
b3IgPSAodiAqIDI1NiApIC8gMjU2IDsKICAgICAgICAgICAgICAgIGlyID0gKHVpbnQ4KSgoZG91
YmxlKShjb2xvcikgLyAoKGRvdWJsZSkyNTYgIC8gNTYgKSApICsKICAgICAgICAgICAgICAgICAg
ICAgMjAwIDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlyID0gKHVpbnQ4
KSgoZG91YmxlKWggLyAoKGRvdWJsZSkyNTYgIC8gMjAwICkgKTsKICAgICAgICAgICAgfQogICAg
ICAgIH0gCgogCgogICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBJUnRvSFNWKHVpbnQ4IGlyLHVp
bnQ4ICZoLHVpbnQ4ICZzLHVpbnQ4ICZ2KSB7CiAgICAgICAgICAgIGlmKGlyPiAyMDAgKSB7ICAK
ICAgICAgICAgICAgICAgIGggPSAwOwogICAgICAgICAgICAgICAgcyA9IDA7CiAgICAgICAgICAg
ICAgICB2ID0gKHVpbnQ4KSgoZG91YmxlKShpci0gMjAwICkgKiAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgoZG91YmxlKTI1NiAgLyA1NiApICk7CiAgICAgICAgICAgIH0gZWxzZSB7ICAK
ICAgICAgICAgICAgICAgIGggPSAodWludDgpKChkb3VibGUpaXIgKiAgKChkb3VibGUpMjU2ICAv
IDIwMCApICk7CiAgICAgICAgICAgICAgICBzID0gMjU1OwogICAgICAgICAgICAgICAgdiA9IDI1
NTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAKCiAgICAgICAgc3RhdGljIGlubGluZSB2b2lk
IElSdG9SR0IodWludDggaXIsdWludDggJnIsdWludDggJmcsdWludDggJmIpIHsKICAgICAgICAg
ICAgdWludDggaCxzLHY7CiAgICAgICAgICAgIElSdG9IU1YoaXIsaCxzLHYpOwogICAgICAgICAg
ICBIU1Z0b1JHQihoLHMsdixyLGcsYik7CiAgICAgICAgfQoJICAgIAp9OwoKCiAKCgojIDEyICIu
Li9vcGVyYXRpb25zL2hpc3RvZ3JhbS5oIiAyCgoKIAoKY2xhc3MgSGlzdG9ncmFtIHsKICAgIHBy
b3RlY3RlZDoKICAgICAgICBpbnQgICAgbnJCaW5zOwogICAgICAgIGludCAgICp2YWxzOyAgICAg
ICAgICAgCiAgICAgICAgYm9vbCAgIHNtb290aEhpc3RvOyAgICAKICAgICAgICBpbnQgICAqc21v
b3RoZWRCdWZmOyAgIAoKICAgICAgICBpbnQgICAgZnJhbWVOcjsgICAgICAgIAogICAgICAgIGlu
dCAgICB3aWR0aDsKICAgICAgICBpbnQgICAgaGVpZ2h0OyAgICAgICAgIAogICAgICAgIHVpbnQ4
ICpidWZmZXI7ICAgICAgICAgCgoJdmlydHVhbCB2b2lkIHNtb290aEhpc3RvZ3JhbSgpOwogICAg
ICAgIAogICAgcHVibGljOgogICAgICAgIEhpc3RvZ3JhbShib29sIHNtb290aEhpc3RvLGludCBu
ckJpbnMpOwoJdmlydHVhbCB+SGlzdG9ncmFtKCk7CiAgICAgICAgdmlydHVhbCB2b2lkIGNvbXB1
dGUoTXBlZ1BpY3R1cmUgKnBpYykgPSAwOwoKICAgICAgICBkb3VibGUgZGlmZihIaXN0b2dyYW0g
KmgpOwoJaW5saW5lIGludCBvcGVyYXRvcltdIChpbnQgaW5kZXgpIHsgcmV0dXJuIHZhbHNbaW5k
ZXhdOyB9CiAgICAgICAgaW5saW5lIGludCBnZXRCaW5Db3VudChpbnQgaW5kZXgpIHsgcmV0dXJu
IHZhbHNbaW5kZXhdOyB9CglpbmxpbmUgaW50IHNpemUoKSAgICAgICAgICAgICAgICAgeyByZXR1
cm4gbnJCaW5zOyB9Cn07CgogCgpjbGFzcyBJUkNvbG9ySGlzdG9ncmFtIDogcHVibGljIEhpc3Rv
Z3JhbSB7CiAgICBwdWJsaWM6CiAgICAgICAgSVJDb2xvckhpc3RvZ3JhbShib29sIHNtb290aEhp
c3RvLHVpbnQ4IGdyZXlmdW5jdGlvbixkb3VibGUgc3RkZGV2KTsKCXZpcnR1YWwgfklSQ29sb3JI
aXN0b2dyYW0oKTsKICAgICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZShNcGVnUGljdHVyZSAqcGlj
KTsKCiAgICBwcm90ZWN0ZWQ6Cgl2aXJ0dWFsIHZvaWQgc21vb3RoSGlzdG9ncmFtKCk7Cn07Cgog
CgpjbGFzcyBHcmV5SGlzdG9ncmFtIDogcHVibGljIEhpc3RvZ3JhbSB7CiAgICBwdWJsaWM6CiAg
ICAgICAgR3JleUhpc3RvZ3JhbShib29sIHNtb290aEhpc3RvKTsKICAgICAgICBHcmV5SGlzdG9n
cmFtKGJvb2wgc21vb3RoSGlzdG8saW50IG5yQmlucyk7Cgl2aXJ0dWFsIH5HcmV5SGlzdG9ncmFt
KCk7CgogICAgICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlKE1wZWdQaWN0dXJlICpwaWMpOwp9OwoK
IAoKCiMgOSAic2hvdy5jcHAiIDIKCgoKIApHdGtPYmplY3QgKnJhbmdlQWRqdXN0bWVudDsKR3Rr
V2lkZ2V0ICptYWluV2luZG93LCppbWdBcmVhLCp2Ym94LCpyYW5nZSwqaGJveCwqZnJhbWU7Ckd0
a1dpZGdldCAqYnV0dG9uMSwqYnV0dG9uMiwqYnV0dG9uMywqYnV0dG9uNCwqYnV0dG9uNTsKU2Vx
dWVudGlhbEludGVyZmFjZSAqbXBlZzsKZ2ludCAgIHRpbWVyOwpib29sICAgaXJjb2xvcnMsZ3Jl
eTsKCnN0YXRpYyBndWNoYXIgKmltZ0J1ZmY7CgppbnQgd2lkdGgsaGVpZ2h0Owpkb3VibGUgc3Rk
ZGV2OwoKIAoKYm9vbCBzaG93SGlzdG9ncmFtOwpHdGtXaWRnZXQgKmhpc3RvV2luZG93LCpoaXN0
b0FyZWE7CnN0YXRpYyBndWNoYXIgaGlzdG9CdWZmWzI1NioyNTYqNF07Cgp2b2lkIGNvbXB1dGVI
aXN0b2dyYW0oTXBlZ1BpY3R1cmUgKnBpY3R1cmUpOwp2b2lkIGNvbXB1dGVIaXN0b2dyYW1HcmV5
KE1wZWdQaWN0dXJlICpwaWN0dXJlKTsKCiAKCmdib29sZWFuIG9uX2V4cG9zZShHdGtXaWRnZXQg
KndpZGdldCwgR2RrRXZlbnRFeHBvc2UgKmV2ZW50LCBncG9pbnRlciBkYXRhKSB7CiAgICBnZGtf
ZHJhd19yZ2JfMzJfaW1hZ2Uod2lkZ2V0LT53aW5kb3csd2lkZ2V0LT5zdHlsZS0+ZmdfZ2NbR1RL
X1NUQVRFX05PUk1BTF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgd2lkdGgsIGhl
aWdodCwgR0RLX1JHQl9ESVRIRVJfTk9ORSwKCQkJICBpbWdCdWZmLCB3aWR0aCo0KTsKfQoKdm9p
ZCBvbl9kZXN0cm95KCkgewogICAgICAgIGd0a19tYWluX3F1aXQoKTsKfQoKTXBlZ1BpY3R1cmUg
Km9sZFBpY3R1cmUgPSBfX251bGwgOwoKdm9pZCBzaG93UmF3KE1wZWdQaWN0dXJlICpwaWN0dXJl
KSB7CiAgICBzdGF0aWMgY2hhciAgIHRpdGxlWzI1Nl07CiAgICBzdGF0aWMgY2hhciAgKmZ0eXBl
QnVmID0gIj9JUEI/Pz8iOwoKICAgIG9sZFBpY3R1cmUgPSBwaWN0dXJlOwoKICAgIHNwcmludGYo
dGl0bGUsImZyYW1lOiAlMDRkIHR5cGU6ICVjIixwaWN0dXJlLT5nZXROdW1iZXIoKSwKCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgZnR5cGVCdWZbcGljdHVyZS0+Z2V0Q29kaW5nVHlwZSgpXSk7
CiAgICBndGtfZnJhbWVfc2V0X2xhYmVsKCgoKCAgR3RrRnJhbWUgKikgZ3RrX3R5cGVfY2hlY2tf
b2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0KikgKCAoIGZyYW1lICkgKSwgKCAgKGd0a19mcmFt
ZV9nZXRfdHlwZSAoKSkgICkpKSApICx0aXRsZSk7CgogICAgaWYoZ3JleSkgewogICAgICAgIGlm
KHNob3dIaXN0b2dyYW0pIGNvbXB1dGVIaXN0b2dyYW1HcmV5KHBpY3R1cmUpOwogICAgfSBlbHNl
IHsKICAgICAgICBpZihzaG93SGlzdG9ncmFtKSBjb21wdXRlSGlzdG9ncmFtKHBpY3R1cmUpOwog
ICAgfQoKICAgIGlmKGdyZXkpIHsKCWludCogICBzcmMgPSBwaWN0dXJlLT5nZXRZY2NJbWFnZSgp
OwoJdWludDgqIGRzdCA9IGltZ0J1ZmY7CglpbnQgeCx5OwoJZm9yKHk9MDt5PHBpY3R1cmUtPmdl
dEhlaWdodCgpO3krKykgewoJICAgIGZvcih4PTA7eDxwaWN0dXJlLT5nZXRXaWR0aCgpO3grKykg
ewogICAgICAgICAgICAgICAgaWYoKCpzcmMpPDApewogICAgICAgICAgICAgICAgICAgICgqKGRz
dCsrKSkgPSAwOwogICAgICAgICAgICAgICAgICAgICgqKGRzdCsrKSkgPSAwOyAgCiAgICAgICAg
ICAgICAgICAgICAgKCooZHN0KyspKSA9IDA7CiAgICAgICAgICAgICAgICAgICAgKCooZHN0Kysp
KSA9IDA7CgkJIH0gZWxzZSBpZigoKnNyYyk+MjU1KSB7CiAgICAgICAgICAgICAgICAgICAgKCoo
ZHN0KyspKSA9IDI1NTsKICAgICAgICAgICAgICAgICAgICAoKihkc3QrKykpID0gMjU1OyAKICAg
ICAgICAgICAgICAgICAgICAoKihkc3QrKykpID0gMjU1OyAKICAgICAgICAgICAgICAgICAgICAo
Kihkc3QrKykpID0gMDsKCSAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAoKihk
c3QrKykpID0gKHVpbnQ4KSgqc3JjKTsKICAgICAgICAgICAgICAgICAgICAoKihkc3QrKykpID0g
KHVpbnQ4KSgqc3JjKTsKICAgICAgICAgICAgICAgICAgICAoKihkc3QrKykpID0gKHVpbnQ4KSgq
c3JjKTsKICAgICAgICAgICAgICAgICAgICAoKihkc3QrKykpID0gMDsKICAgICAgICAgICAgICAg
IH0KCQlzcmMgKz0gMzsKCSAgICB9Cgl9CiAgICB9IGVsc2UgewogICAgICAgIGlmKGlyY29sb3Jz
KSBwaWN0dXJlLT5jb252ZXJ0VG9JUmNvbG9yUkdCYShpbWdCdWZmKTsKICAgICAgICBlbHNlICAg
ICAgICAgcGljdHVyZS0+Y29udmVydFRvUkdCYShpbWdCdWZmKTsKICAgIH0KICAgIGd0a193aWRn
ZXRfZHJhdyhpbWdBcmVhLF9fbnVsbCApOwp9CgpnaW50IHBsYXlNcGVnKGdwb2ludGVyKSB7CiAg
ICBNcGVnUGljdHVyZSAqcGljdHVyZTsKICAgIHBpY3R1cmU9bXBlZy0+Z2V0TmV4dEZyYW1lKCk7
CiAgICBpZihwaWN0dXJlPT0gX19udWxsICkgcmV0dXJuIGZhbHNlOwoKICAgICgoKCggIEd0a0Fk
anVzdG1lbnQgKikgZ3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0Kikg
KCAoIHJhbmdlQWRqdXN0bWVudCApICksICggIChndGtfYWRqdXN0bWVudF9nZXRfdHlwZSAoKSkg
ICkpKSApICktPnZhbHVlID0gcGljdHVyZS0+Z2V0TnVtYmVyKCk7CiAgICBndGtfc2lnbmFsX2Vt
aXRfYnlfbmFtZSAoKCAoICggIHJhbmdlQWRqdXN0bWVudCAgKSAhPSBfX251bGwgICYmICggKCAo
KEd0a09iamVjdCopICggIHJhbmdlQWRqdXN0bWVudCAgKSktPmtsYXNzICkgIT0gX19udWxsICAm
JiAoKEd0a0Z1bmRhbWVudGFsVHlwZSkgKCggKChHdGtPYmplY3RDbGFzcyopICggKChHdGtPYmpl
Y3QqKSAoICByYW5nZUFkanVzdG1lbnQgICkpLT5rbGFzcyApKS0+dHlwZSApICYgMHhGRikpICA9
PSBHVEtfVFlQRV9PQkpFQ1QgKSAgKSAgPyAoR3RrT2JqZWN0KikgKCByYW5nZUFkanVzdG1lbnQg
KSA6IChHdGtPYmplY3QqKSBndGtfdHlwZV9jaGVja19vYmplY3RfY2FzdCAoKEd0a1R5cGVPYmpl
Y3QqKSAoIHJhbmdlQWRqdXN0bWVudCApLCBHVEtfVFlQRV9PQkpFQ1QpICkgLCAiY2hhbmdlZCIp
OwoKICAgIHNob3dSYXcocGljdHVyZSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKdm9pZCBidXR0b25Q
cmVzc2VkKEd0a1dpZGdldCogd2lkZ2V0LCBncG9pbnRlciBmdW5jX2RhdGEpIHsKICAgIGlmKCFz
dHJjbXAoKGNoYXIqKWZ1bmNfZGF0YSwicGxheSIpKSB7CiAgICAgICAgdGltZXIgPSBndGtfdGlt
ZW91dF9hZGQoMjAscGxheU1wZWcsX19udWxsICk7CiAgICB9IGVsc2UgaWYoIXN0cmNtcCgoY2hh
ciopZnVuY19kYXRhLCJzdG9wIikpIHsKCWd0a190aW1lb3V0X3JlbW92ZSh0aW1lcik7CiAgICB9
IGVsc2UgaWYoIXN0cmNtcCgoY2hhciopZnVuY19kYXRhLCJoaXN0b2dyYW0iKSkgewogICAgICAg
IGd0a193aWRnZXRfc2hvd19hbGwoaGlzdG9XaW5kb3cpOwogCiAgICAgICAgc2hvd0hpc3RvZ3Jh
bSA9IHRydWU7CiAgICB9IGVsc2UgaWYoIXN0cmNtcCgoY2hhciopZnVuY19kYXRhLCJpcmNvbG9y
cyIpKSB7CglpcmNvbG9ycyA9ICFpcmNvbG9yczsKICAgIH0gZWxzZSBpZighc3RyY21wKChjaGFy
KilmdW5jX2RhdGEsImdyZXkiKSkgewoJZ3JleSA9ICFncmV5OwogICAgfQp9Cgp2b2lkIHJhbmdl
Q2hhbmdlZChHdGtBZGp1c3RtZW50ICphZGopIHsKICAgIE1wZWdQaWN0dXJlICpwaWN0dXJlOwog
ICAgcGljdHVyZSA9IG1wZWctPmdldEZyYW1lKChpbnQpYWRqLT52YWx1ZSk7CiAgICBzaG93UmF3
KHBpY3R1cmUpOwp9CgogCgpnYm9vbGVhbiBvbl9leHBvc2VfaGlzdG8oR3RrV2lkZ2V0ICp3aWRn
ZXQsR2RrRXZlbnRFeHBvc2UgKmV2ZW50LGdwb2ludGVyIGRhdGEpewogICAgZ2RrX2RyYXdfcmdi
XzMyX2ltYWdlKHdpZGdldC0+d2luZG93LHdpZGdldC0+c3R5bGUtPmZnX2djW0dUS19TVEFURV9O
T1JNQUxdLAogICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDI1NiwgMjU2LCBHREtfUkdCX0RJ
VEhFUl9OT05FLGhpc3RvQnVmZiwgMjU2KjQpOwp9Cgp2b2lkIG9uX2Rlc3Ryb3lfaGlzdG8oKSB7
CiAgICBndGtfd2lkZ2V0X2hpZGUoaGlzdG9XaW5kb3cpOwogICAgc2hvd0hpc3RvZ3JhbSA9IGZh
bHNlOwogICAgcHJpbnRmKCJIaWRpbmdcbiIpOwp9Cgp2b2lkIGRyYXdIaXN0b2dyYW0oSGlzdG9n
cmFtICpoaXN0b2dyYW0pIHsKCiAgICBpbnQgc2NhbGVbMjU2XTsKICAgIGZvcihpbnQgaT0wO2k8
MjU2O2krKykgewogICAgICAgIHNjYWxlW2ldID0gKGludCkoKGZsb2F0KWkqKDEuMGYgKyAoZmxv
YXQpKGkqMC4wNSkpKTsKICAgIH0KCiAgICB1aW50OCAgcixnLGI7CiAgICB1aW50MzIgY29sb3Is
Y29sb3IyOwogICAgZm9yKGludCBpPTA7aTxoaXN0b2dyYW0tPnNpemUoKTtpKyspIHsKICAgICAg
ICBpbnQgdmFsdWUgPSAoKmhpc3RvZ3JhbSlbaV07CiAgICAgICAgCiAgICAgICAgaWYoZ3JleSkg
ewoJICAgIHIgPSBnID0gYiA9IGkqKDI1Ni9oaXN0b2dyYW0tPnNpemUoKSk7CiAgICAgICAgICAg
IGNvbG9yICA9IChyKSB8IChnPDw4KSB8IChiPDwxNik7CgkgICAgY29sb3IyID0gKDEwMCkgfCAo
NTA8PDgpIHwgKDE1MDw8MTYpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIENvbG9yQ29u
dmVyc2lvbjo6SVJ0b1JHQihpLHIsZyxiKTsKICAgICAgICAgICAgY29sb3IgPSAocikgfCAoZzw8
OCkgfCAoYjw8MTYpOwoJICAgIGlmKGk8MjAwKSBjb2xvcjIgPSAwOwoJICAgIGVsc2UgICAgICBj
b2xvcjIgPSAoMTAwKSB8ICg1MDw8OCkgfCAoMTUwPDwxNik7CiAgICAgICAgfQoKICAgICAgICB1
aW50MzIgKnAgPSAodWludDMyKikoKHZvaWQqKShoaXN0b0J1ZmYgKyBpKjQpKTsKICAgICAgICBm
b3IoaW50IHk9MjU1O3k+PTA7eS0tKSB7CiAgICAgICAgICAgICpwID0gKHNjYWxlW3ldPHZhbHVl
KT9jb2xvcjpjb2xvcjI7CiAgICAgICAgICAgIHAgKz0gMjU2OwogICAgICAgIH0KICAgIH0KICAg
IGd0a193aWRnZXRfZHJhdyhoaXN0b0FyZWEsX19udWxsICk7Cn0KCnZvaWQgY29tcHV0ZUhpc3Rv
Z3JhbShNcGVnUGljdHVyZSAqcGljdHVyZSkgewogICAgc3RhdGljIElSQ29sb3JIaXN0b2dyYW0g
aGlzdG9ncmFtKHRydWUsMiAsc3RkZGV2KTsKICAgIGhpc3RvZ3JhbS5jb21wdXRlKHBpY3R1cmUp
OwogICAgZHJhd0hpc3RvZ3JhbSgmaGlzdG9ncmFtKTsKfQoKdm9pZCBjb21wdXRlSGlzdG9ncmFt
R3JleShNcGVnUGljdHVyZSAqcGljdHVyZSkgewogICAgc3RhdGljIEdyZXlIaXN0b2dyYW0gaGlz
dG9ncmFtKHRydWUsNjQpOwogICAgaGlzdG9ncmFtLmNvbXB1dGUocGljdHVyZSk7CiAgICBkcmF3
SGlzdG9ncmFtKCZoaXN0b2dyYW0pOwp9Cgp2b2lkIGltZ01vdXNlQ2xpY2soR3RrV2lkZ2V0ICp3
aWRnZXQsR2RrRXZlbnRCdXR0b24gKmV2ZW50KSB7CiAgICBpZihvbGRQaWN0dXJlPT0gX19udWxs
ICkgcmV0dXJuOwoKICAgIGludCB4ID0gKGludClldmVudC0+eDsKICAgIGludCB5ID0gKGludCll
dmVudC0+eTsKICAgIGludCBtYWNyb0Jsb2NrID0gKHgvMTYpICsgKCh5LzE2KSoob2xkUGljdHVy
ZS0+Z2V0V2lkdGgoKS8xNikpOwogICAgcHJpbnRmKCJNYWNrcm9CbG9ja0luZm8gKCVkLCVkKSBu
ciAlZFxuIix4LHksbWFjcm9CbG9jayk7CgogICAgTXBlZ01hY3JvQmxvY2sgKm1iID0gJigoKm9s
ZFBpY3R1cmUpW21hY3JvQmxvY2tdKTsKICAgIHByaW50ZigiSW50cmFjb2RlZCAgICAgPSAlZFxu
IixtYi0+aW50cmFDb2RlZCk7CiAgICBwcmludGYoIkNvcHlGb3J3YXJkICAgID0gJWRcbiIsbWIt
PmNvcHlGb3J3YXJkKTsKICAgIHByaW50ZigiTW90aW9uRm9yd2FyZCAgPSAlZFxuIixtYi0+bW90
aW9uRm9yd2FyZCk7CiAgICBwcmludGYoIkNvcHlCYWNrd2FyZCAgID0gJWRcbiIsbWItPmNvcHlC
YWNrd2FyZCk7CiAgICBwcmludGYoIk1vdGlvbkJhY2t3YXJkID0gJWRcbiIsbWItPm1vdGlvbkJh
Y2t3YXJkKTsKfQoJCQogCgppbnQgbWFpbihpbnQgYXJnYyxjaGFyICoqYXJndikgewogICAgaWYo
YXJnYyE9MykgewogICAgICAgIHByaW50ZigiW1VTQUdFXSA6IHNob3cgPG1wZWdmaWxlPiA8c3Rk
ZGV2IGdhdXNzPlxuIik7CglyZXR1cm4gLTE7CiAgICB9CgogICAgcHJpbnRmKCJTZXR0aW5nIEdy
ZXktZGV0ZWN0aW9uIG9wdGlvbnMgLlxuIik7CiAgICBzdGRkZXYgPSBhdG9mKGFyZ3ZbMl0pOwog
ICAgCiAgICBwcmludGYoIkluaXRpYWxpemluZy4uLlxuIik7CiAgICBtcGVnICAgPSBuZXcgU2Vx
dWVudGlhbEludGVyZmFjZShhcmd2WzFdKTsKICAgIHdpZHRoICA9IG1wZWctPmdldFdpZHRoKCk7
CiAgICBoZWlnaHQgPSBtcGVnLT5nZXRIZWlnaHQoKTsKICAgIGltZ0J1ZmYgPSBuZXcgZ3VjaGFy
W3dpZHRoKmhlaWdodCo0XTsKCiAgICBwcmludGYoIkJ1aWxkaW5nIEdVSS4uLlxuIik7CiAgICBn
dGtfaW5pdCgmYXJnYywgJmFyZ3YpOwogICAgZ2RrX3JnYl9pbml0KCk7CgogICAgaXJjb2xvcnMg
PSBmYWxzZTsKICAgIGdyZXkgICAgID0gZmFsc2U7CgoKIAoKICAgIG1haW5XaW5kb3cgPSBndGtf
d2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKICAgIGd0a193aW5kb3dfc2V0X3RpdGxl
KCgoKCAgR3RrV2luZG93ICopIGd0a190eXBlX2NoZWNrX29iamVjdF9jYXN0ICgoR3RrVHlwZU9i
amVjdCopICggIG1haW5XaW5kb3cgICksICggIChndGtfd2luZG93X2dldF90eXBlICgpKSAgKSkp
ICkgLCBhcmd2WzFdKTsKICAgIGd0a193aWRnZXRfc2hvdyhtYWluV2luZG93KTsKCiAgICB2Ym94
ID0gZ3RrX3Zib3hfbmV3ICgoMCkgLCAwKTsKICAgIGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93
aWR0aCAoKCgoICBHdGtDb250YWluZXIgKikgZ3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3QgKChH
dGtUeXBlT2JqZWN0KikgKCAoIHZib3ggKSApLCAoICAoZ3RrX2NvbnRhaW5lcl9nZXRfdHlwZSAo
KSkgICkpKSApICwgMik7CgogICAgZnJhbWUgPSBndGtfZnJhbWVfbmV3KCIiKTsKICAgIGd0a19i
b3hfcGFja19zdGFydCAoKCgoICBHdGtCb3ggKikgZ3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3Qg
KChHdGtUeXBlT2JqZWN0KikgKCAoIHZib3ggKSApLCAoICAoZ3RrX2JveF9nZXRfdHlwZSAoKSkg
ICkpKSApICwgZnJhbWUsICgwKSAsICgwKSAsIDMpOwogICAgCiAgICBpbWdBcmVhID0gZ3RrX2Ry
YXdpbmdfYXJlYV9uZXcoKTsKICAgIGd0a19kcmF3aW5nX2FyZWFfc2l6ZSgoKCggIEd0a0RyYXdp
bmdBcmVhICopIGd0a190eXBlX2NoZWNrX29iamVjdF9jYXN0ICgoR3RrVHlwZU9iamVjdCopICgg
KCBpbWdBcmVhICkgKSwgKCAgKGd0a19kcmF3aW5nX2FyZWFfZ2V0X3R5cGUgKCkpICApKSkgKSAs
IHdpZHRoLCBoZWlnaHQpOwogICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoICgoKCgg
IEd0a0NvbnRhaW5lciAqKSBndGtfdHlwZV9jaGVja19vYmplY3RfY2FzdCAoKEd0a1R5cGVPYmpl
Y3QqKSAoICggZnJhbWUgKSApLCAoICAoZ3RrX2NvbnRhaW5lcl9nZXRfdHlwZSAoKSkgICkpKSAp
ICwgMik7CiAgICBndGtfY29udGFpbmVyX2FkZCAoKCgoICBHdGtDb250YWluZXIgKikgZ3RrX3R5
cGVfY2hlY2tfb2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0KikgKCAoIGZyYW1lICkgKSwgKCAg
KGd0a19jb250YWluZXJfZ2V0X3R5cGUgKCkpICApKSkgKSAsIGltZ0FyZWEpOwoKICAgICAKICAg
IHJhbmdlQWRqdXN0bWVudCA9IGd0a19hZGp1c3RtZW50X25ldyAoMCwgMCwgbXBlZy0+Z2V0TnJG
cmFtZXMoKS0xLCAxLCAgICAKCQkgICAgICAgICAgICAgICAgICAgICAgICAgIDEsMCk7CgogICAg
cmFuZ2UgPSBndGtfaHNjYWxlX25ldyAoKCgoICBHdGtBZGp1c3RtZW50ICopIGd0a190eXBlX2No
ZWNrX29iamVjdF9jYXN0ICgoR3RrVHlwZU9iamVjdCopICggKCByYW5nZUFkanVzdG1lbnQgKSAp
LCAoICAoZ3RrX2FkanVzdG1lbnRfZ2V0X3R5cGUgKCkpICApKSkgKSApOwogICAgZ3RrX3dpZGdl
dF9zZXRfdXNpemUgKCgoKCAgR3RrV2lkZ2V0ICopIGd0a190eXBlX2NoZWNrX29iamVjdF9jYXN0
ICgoR3RrVHlwZU9iamVjdCopICggKCByYW5nZSApICksICggIChndGtfd2lkZ2V0X2dldF90eXBl
ICgpKSAgKSkpICkgLCAyMDAsIDMwKTsKICAgIGd0a19zY2FsZV9zZXRfZGlnaXRzICgoKCggIEd0
a1NjYWxlICopIGd0a190eXBlX2NoZWNrX29iamVjdF9jYXN0ICgoR3RrVHlwZU9iamVjdCopICgg
KCByYW5nZSApICksICggIChndGtfc2NhbGVfZ2V0X3R5cGUgKCkpICApKSkgKSAsIDApOwogICAg
Z3RrX3JhbmdlX3NldF91cGRhdGVfcG9saWN5ICgoKCggIEd0a1JhbmdlICopIGd0a190eXBlX2No
ZWNrX29iamVjdF9jYXN0ICgoR3RrVHlwZU9iamVjdCopICggKCByYW5nZSApICksICggIChndGtf
cmFuZ2VfZ2V0X3R5cGUgKCkpICApKSkgKSAsR1RLX1VQREFURV9ERUxBWUVEKTsKCiAgICBndGtf
Ym94X3BhY2tfc3RhcnQgKCgoKCAgR3RrQm94ICopIGd0a190eXBlX2NoZWNrX29iamVjdF9jYXN0
ICgoR3RrVHlwZU9iamVjdCopICggKCB2Ym94ICkgKSwgKCAgKGd0a19ib3hfZ2V0X3R5cGUgKCkp
ICApKSkgKSAsIHJhbmdlLCAoISAoMCkgKSAsICghICgwKSApICwgMCk7CgogICAgZ3RrX3NpZ25h
bF9jb25uZWN0ICgoICggKCAgcmFuZ2VBZGp1c3RtZW50ICApICE9IF9fbnVsbCAgJiYgKCAoICgo
R3RrT2JqZWN0KikgKCAgcmFuZ2VBZGp1c3RtZW50ICApKS0+a2xhc3MgKSAhPSBfX251bGwgICYm
ICgoR3RrRnVuZGFtZW50YWxUeXBlKSAoKCAoKEd0a09iamVjdENsYXNzKikgKCAoKEd0a09iamVj
dCopICggIHJhbmdlQWRqdXN0bWVudCAgKSktPmtsYXNzICkpLT50eXBlICkgJiAweEZGKSkgID09
IEdUS19UWVBFX09CSkVDVCApICApICA/IChHdGtPYmplY3QqKSAoIHJhbmdlQWRqdXN0bWVudCAp
IDogKEd0a09iamVjdCopIGd0a190eXBlX2NoZWNrX29iamVjdF9jYXN0ICgoR3RrVHlwZU9iamVj
dCopICggcmFuZ2VBZGp1c3RtZW50ICksIEdUS19UWVBFX09CSkVDVCkgKSAsICJ2YWx1ZV9jaGFu
Z2VkIiwKICAgICAgICAgICAgICAgICAgICAgICAgKChHdGtTaWduYWxGdW5jKSAgcmFuZ2VDaGFu
Z2VkICkgLCBfX251bGwgKTsKCiAgICBoYm94ID0gZ3RrX2hib3hfbmV3ICgoMCkgLCAwKTsKICAg
IGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93aWR0aCAoKCgoICBHdGtDb250YWluZXIgKikgZ3Rr
X3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0KikgKCAoIGhib3ggKSApLCAo
ICAoZ3RrX2NvbnRhaW5lcl9nZXRfdHlwZSAoKSkgICkpKSApICwgMik7CgogICAgYnV0dG9uMSA9
IGd0a19idXR0b25fbmV3X3dpdGhfbGFiZWwoIlBsYXkiKTsKICAgIGd0a19zaWduYWxfY29ubmVj
dCAoKCAoICggIGJ1dHRvbjEgICkgIT0gX19udWxsICAmJiAoICggKChHdGtPYmplY3QqKSAoICBi
dXR0b24xICApKS0+a2xhc3MgKSAhPSBfX251bGwgICYmICgoR3RrRnVuZGFtZW50YWxUeXBlKSAo
KCAoKEd0a09iamVjdENsYXNzKikgKCAoKEd0a09iamVjdCopICggIGJ1dHRvbjEgICkpLT5rbGFz
cyApKS0+dHlwZSApICYgMHhGRikpICA9PSBHVEtfVFlQRV9PQkpFQ1QgKSAgKSAgPyAoR3RrT2Jq
ZWN0KikgKCBidXR0b24xICkgOiAoR3RrT2JqZWN0KikgZ3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nh
c3QgKChHdGtUeXBlT2JqZWN0KikgKCBidXR0b24xICksIEdUS19UWVBFX09CSkVDVCkgKSAsICJj
bGlja2VkIiwKICAgICAgICAgICgoR3RrU2lnbmFsRnVuYykgIGJ1dHRvblByZXNzZWQgKSAsIChn
cG9pbnRlcikgInBsYXkiKTsKICAgIGd0a19ib3hfcGFja19zdGFydCAoKCgoICBHdGtCb3ggKikg
Z3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0KikgKCAoIGhib3ggKSAp
LCAoICAoZ3RrX2JveF9nZXRfdHlwZSAoKSkgICkpKSApICxidXR0b24xLCAoMCkgLCAoMCkgLCAz
KTsKCiAgICBidXR0b24yID0gZ3RrX2J1dHRvbl9uZXdfd2l0aF9sYWJlbCgiU3RvcCIpOwogICAg
Z3RrX3NpZ25hbF9jb25uZWN0ICgoICggKCAgYnV0dG9uMiAgKSAhPSBfX251bGwgICYmICggKCAo
KEd0a09iamVjdCopICggIGJ1dHRvbjIgICkpLT5rbGFzcyApICE9IF9fbnVsbCAgJiYgKChHdGtG
dW5kYW1lbnRhbFR5cGUpICgoICgoR3RrT2JqZWN0Q2xhc3MqKSAoICgoR3RrT2JqZWN0KikgKCAg
YnV0dG9uMiAgKSktPmtsYXNzICkpLT50eXBlICkgJiAweEZGKSkgID09IEdUS19UWVBFX09CSkVD
VCApICApICA/IChHdGtPYmplY3QqKSAoIGJ1dHRvbjIgKSA6IChHdGtPYmplY3QqKSBndGtfdHlw
ZV9jaGVja19vYmplY3RfY2FzdCAoKEd0a1R5cGVPYmplY3QqKSAoIGJ1dHRvbjIgKSwgR1RLX1RZ
UEVfT0JKRUNUKSApICwgImNsaWNrZWQiLAogICAgICAgICAgKChHdGtTaWduYWxGdW5jKSAgYnV0
dG9uUHJlc3NlZCApICwgKGdwb2ludGVyKSAic3RvcCIpOwogICAgZ3RrX2JveF9wYWNrX3N0YXJ0
ICgoKCggIEd0a0JveCAqKSBndGtfdHlwZV9jaGVja19vYmplY3RfY2FzdCAoKEd0a1R5cGVPYmpl
Y3QqKSAoICggaGJveCApICksICggIChndGtfYm94X2dldF90eXBlICgpKSAgKSkpICkgLGJ1dHRv
bjIsICgwKSAsICgwKSAsIDMpOwoKICAgIGJ1dHRvbjMgPSBndGtfYnV0dG9uX25ld193aXRoX2xh
YmVsKCJIaXN0b2dyYW0iKTsKICAgIGd0a19zaWduYWxfY29ubmVjdCAoKCAoICggIGJ1dHRvbjMg
ICkgIT0gX19udWxsICAmJiAoICggKChHdGtPYmplY3QqKSAoICBidXR0b24zICApKS0+a2xhc3Mg
KSAhPSBfX251bGwgICYmICgoR3RrRnVuZGFtZW50YWxUeXBlKSAoKCAoKEd0a09iamVjdENsYXNz
KikgKCAoKEd0a09iamVjdCopICggIGJ1dHRvbjMgICkpLT5rbGFzcyApKS0+dHlwZSApICYgMHhG
RikpICA9PSBHVEtfVFlQRV9PQkpFQ1QgKSAgKSAgPyAoR3RrT2JqZWN0KikgKCBidXR0b24zICkg
OiAoR3RrT2JqZWN0KikgZ3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0
KikgKCBidXR0b24zICksIEdUS19UWVBFX09CSkVDVCkgKSAsICJjbGlja2VkIiwKICAgICAgICAg
ICgoR3RrU2lnbmFsRnVuYykgIGJ1dHRvblByZXNzZWQgKSAsIChncG9pbnRlcikgImhpc3RvZ3Jh
bSIpOwogICAgZ3RrX2JveF9wYWNrX3N0YXJ0ICgoKCggIEd0a0JveCAqKSBndGtfdHlwZV9jaGVj
a19vYmplY3RfY2FzdCAoKEd0a1R5cGVPYmplY3QqKSAoICggaGJveCApICksICggIChndGtfYm94
X2dldF90eXBlICgpKSAgKSkpICkgLGJ1dHRvbjMsICgwKSAsICgwKSAsIDMpOwoKICAgIGJ1dHRv
bjQgPSBndGtfYnV0dG9uX25ld193aXRoX2xhYmVsKCJJUl9Db2xvcnMiKTsKICAgIGd0a19zaWdu
YWxfY29ubmVjdCAoKCAoICggIGJ1dHRvbjQgICkgIT0gX19udWxsICAmJiAoICggKChHdGtPYmpl
Y3QqKSAoICBidXR0b240ICApKS0+a2xhc3MgKSAhPSBfX251bGwgICYmICgoR3RrRnVuZGFtZW50
YWxUeXBlKSAoKCAoKEd0a09iamVjdENsYXNzKikgKCAoKEd0a09iamVjdCopICggIGJ1dHRvbjQg
ICkpLT5rbGFzcyApKS0+dHlwZSApICYgMHhGRikpICA9PSBHVEtfVFlQRV9PQkpFQ1QgKSAgKSAg
PyAoR3RrT2JqZWN0KikgKCBidXR0b240ICkgOiAoR3RrT2JqZWN0KikgZ3RrX3R5cGVfY2hlY2tf
b2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0KikgKCBidXR0b240ICksIEdUS19UWVBFX09CSkVD
VCkgKSAsICJjbGlja2VkIiwKICAgICAgICAgICgoR3RrU2lnbmFsRnVuYykgIGJ1dHRvblByZXNz
ZWQgKSAsIChncG9pbnRlcikgImlyY29sb3JzIik7CiAgICBndGtfYm94X3BhY2tfc3RhcnQgKCgo
KCAgR3RrQm94ICopIGd0a190eXBlX2NoZWNrX29iamVjdF9jYXN0ICgoR3RrVHlwZU9iamVjdCop
ICggKCBoYm94ICkgKSwgKCAgKGd0a19ib3hfZ2V0X3R5cGUgKCkpICApKSkgKSAsYnV0dG9uNCwg
KDApICwgKDApICwgMyk7CgogICAgYnV0dG9uNSA9IGd0a19idXR0b25fbmV3X3dpdGhfbGFiZWwo
IkdyZXkiKTsKICAgIGd0a19zaWduYWxfY29ubmVjdCAoKCAoICggIGJ1dHRvbjUgICkgIT0gX19u
dWxsICAmJiAoICggKChHdGtPYmplY3QqKSAoICBidXR0b241ICApKS0+a2xhc3MgKSAhPSBfX251
bGwgICYmICgoR3RrRnVuZGFtZW50YWxUeXBlKSAoKCAoKEd0a09iamVjdENsYXNzKikgKCAoKEd0
a09iamVjdCopICggIGJ1dHRvbjUgICkpLT5rbGFzcyApKS0+dHlwZSApICYgMHhGRikpICA9PSBH
VEtfVFlQRV9PQkpFQ1QgKSAgKSAgPyAoR3RrT2JqZWN0KikgKCBidXR0b241ICkgOiAoR3RrT2Jq
ZWN0KikgZ3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0KikgKCBidXR0
b241ICksIEdUS19UWVBFX09CSkVDVCkgKSAsICJjbGlja2VkIiwKICAgICAgICAgICgoR3RrU2ln
bmFsRnVuYykgIGJ1dHRvblByZXNzZWQgKSAsIChncG9pbnRlcikgImdyZXkiKTsKICAgIGd0a19i
b3hfcGFja19zdGFydCAoKCgoICBHdGtCb3ggKikgZ3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3Qg
KChHdGtUeXBlT2JqZWN0KikgKCAoIGhib3ggKSApLCAoICAoZ3RrX2JveF9nZXRfdHlwZSAoKSkg
ICkpKSApICxidXR0b241LCAoMCkgLCAoMCkgLCAzKTsKCiAgICBndGtfYm94X3BhY2tfc3RhcnQg
KCgoKCAgR3RrQm94ICopIGd0a190eXBlX2NoZWNrX29iamVjdF9jYXN0ICgoR3RrVHlwZU9iamVj
dCopICggKCB2Ym94ICkgKSwgKCAgKGd0a19ib3hfZ2V0X3R5cGUgKCkpICApKSkgKSAsIGhib3gs
ICgwKSAsICgwKSAsIDMpOwoKICAgIGd0a19jb250YWluZXJfYWRkKCgoKCAgR3RrQ29udGFpbmVy
ICopIGd0a190eXBlX2NoZWNrX29iamVjdF9jYXN0ICgoR3RrVHlwZU9iamVjdCopICggKCBtYWlu
V2luZG93ICkgKSwgKCAgKGd0a19jb250YWluZXJfZ2V0X3R5cGUgKCkpICApKSkgKSAsIHZib3gp
OwogICAgCiAgICBndGtfc2lnbmFsX2Nvbm5lY3QoKCAoICggIGltZ0FyZWEgICkgIT0gX19udWxs
ICAmJiAoICggKChHdGtPYmplY3QqKSAoICBpbWdBcmVhICApKS0+a2xhc3MgKSAhPSBfX251bGwg
ICYmICgoR3RrRnVuZGFtZW50YWxUeXBlKSAoKCAoKEd0a09iamVjdENsYXNzKikgKCAoKEd0a09i
amVjdCopICggIGltZ0FyZWEgICkpLT5rbGFzcyApKS0+dHlwZSApICYgMHhGRikpICA9PSBHVEtf
VFlQRV9PQkpFQ1QgKSAgKSAgPyAoR3RrT2JqZWN0KikgKCBpbWdBcmVhICkgOiAoR3RrT2JqZWN0
KikgZ3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0KikgKCBpbWdBcmVh
ICksIEdUS19UWVBFX09CSkVDVCkgKSAsCiAgICAgICAgICAgICAgICAgICAgICAgImV4cG9zZS1l
dmVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgKChHdGtTaWduYWxGdW5jKSAgb25fZXhwb3Nl
ICkgLCBfX251bGwgKTsKCiAgICBndGtfc2lnbmFsX2Nvbm5lY3QoKCAoICggIGltZ0FyZWEgICkg
IT0gX19udWxsICAmJiAoICggKChHdGtPYmplY3QqKSAoICBpbWdBcmVhICApKS0+a2xhc3MgKSAh
PSBfX251bGwgICYmICgoR3RrRnVuZGFtZW50YWxUeXBlKSAoKCAoKEd0a09iamVjdENsYXNzKikg
KCAoKEd0a09iamVjdCopICggIGltZ0FyZWEgICkpLT5rbGFzcyApKS0+dHlwZSApICYgMHhGRikp
ICA9PSBHVEtfVFlQRV9PQkpFQ1QgKSAgKSAgPyAoR3RrT2JqZWN0KikgKCBpbWdBcmVhICkgOiAo
R3RrT2JqZWN0KikgZ3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0Kikg
KCBpbWdBcmVhICksIEdUS19UWVBFX09CSkVDVCkgKSAsCiAgICAgICAgICAgICAgICAgICAgICAg
ImJ1dHRvbl9wcmVzc19ldmVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgKChHdGtTaWduYWxG
dW5jKSAgaW1nTW91c2VDbGljayApICwgX19udWxsICk7CiAgICBndGtfd2lkZ2V0X3NldF9ldmVu
dHMoaW1nQXJlYSxHREtfRVhQT1NVUkVfTUFTS3xHREtfQlVUVE9OX1BSRVNTX01BU0spOwogICAg
CiAgICBndGtfc2lnbmFsX2Nvbm5lY3QoKCAoICggIG1haW5XaW5kb3cgICkgIT0gX19udWxsICAm
JiAoICggKChHdGtPYmplY3QqKSAoICBtYWluV2luZG93ICApKS0+a2xhc3MgKSAhPSBfX251bGwg
ICYmICgoR3RrRnVuZGFtZW50YWxUeXBlKSAoKCAoKEd0a09iamVjdENsYXNzKikgKCAoKEd0a09i
amVjdCopICggIG1haW5XaW5kb3cgICkpLT5rbGFzcyApKS0+dHlwZSApICYgMHhGRikpICA9PSBH
VEtfVFlQRV9PQkpFQ1QgKSAgKSAgPyAoR3RrT2JqZWN0KikgKCBtYWluV2luZG93ICkgOiAoR3Rr
T2JqZWN0KikgZ3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0KikgKCBt
YWluV2luZG93ICksIEdUS19UWVBFX09CSkVDVCkgKSAsCiAgICAgICAgICAgICAgICAgICAgICAg
ImRlc3Ryb3kiLAogICAgICAgICAgICAgICAgICAgICAgICgoR3RrU2lnbmFsRnVuYykgIG9uX2Rl
c3Ryb3kgKSAsIF9fbnVsbCApOwoKICAgIGd0a193aWRnZXRfc2hvd19hbGwobWFpbldpbmRvdyk7
CiAgICAKIAoKICAgIGhpc3RvV2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BM
RVZFTCk7CiAgICBndGtfd2luZG93X3NldF90aXRsZSgoKCggIEd0a1dpbmRvdyAqKSBndGtfdHlw
ZV9jaGVja19vYmplY3RfY2FzdCAoKEd0a1R5cGVPYmplY3QqKSAoICBoaXN0b1dpbmRvdyAgKSwg
KCAgKGd0a193aW5kb3dfZ2V0X3R5cGUgKCkpICApKSkgKSAsICJoaXN0b2dyYW0iKTsKICAgIGd0
a193aWRnZXRfaGlkZShoaXN0b1dpbmRvdyk7CiAgICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJf
d2lkdGggKCgoKCAgR3RrQ29udGFpbmVyICopIGd0a190eXBlX2NoZWNrX29iamVjdF9jYXN0ICgo
R3RrVHlwZU9iamVjdCopICggKCBoaXN0b1dpbmRvdyApICksICggIChndGtfY29udGFpbmVyX2dl
dF90eXBlICgpKSAgKSkpICkgLCAyKTsKCiAgICBoaXN0b0FyZWEgPSBndGtfZHJhd2luZ19hcmVh
X25ldygpOwogICAgZ3RrX2RyYXdpbmdfYXJlYV9zaXplKCgoKCAgR3RrRHJhd2luZ0FyZWEgKikg
Z3RrX3R5cGVfY2hlY2tfb2JqZWN0X2Nhc3QgKChHdGtUeXBlT2JqZWN0KikgKCAoIGhpc3RvQXJl
YSApICksICggIChndGtfZHJhd2luZ19hcmVhX2dldF90eXBlICgpKSAgKSkpICkgLCAyNTYsMjU2
KTsKICAgIGd0a19jb250YWluZXJfYWRkICgoKCggIEd0a0NvbnRhaW5lciAqKSBndGtfdHlwZV9j
aGVja19vYmplY3RfY2FzdCAoKEd0a1R5cGVPYmplY3QqKSAoICggaGlzdG9XaW5kb3cgKSApLCAo
ICAoZ3RrX2NvbnRhaW5lcl9nZXRfdHlwZSAoKSkgICkpKSApICwgaGlzdG9BcmVhKTsKCiAgICBn
dGtfc2lnbmFsX2Nvbm5lY3QoKCAoICggIGhpc3RvQXJlYSAgKSAhPSBfX251bGwgICYmICggKCAo
KEd0a09iamVjdCopICggIGhpc3RvQXJlYSAgKSktPmtsYXNzICkgIT0gX19udWxsICAmJiAoKEd0
a0Z1bmRhbWVudGFsVHlwZSkgKCggKChHdGtPYmplY3RDbGFzcyopICggKChHdGtPYmplY3QqKSAo
ICBoaXN0b0FyZWEgICkpLT5rbGFzcyApKS0+dHlwZSApICYgMHhGRikpICA9PSBHVEtfVFlQRV9P
QkpFQ1QgKSAgKSAgPyAoR3RrT2JqZWN0KikgKCBoaXN0b0FyZWEgKSA6IChHdGtPYmplY3QqKSBn
dGtfdHlwZV9jaGVja19vYmplY3RfY2FzdCAoKEd0a1R5cGVPYmplY3QqKSAoIGhpc3RvQXJlYSAp
LCBHVEtfVFlQRV9PQkpFQ1QpICkgLAogICAgICAgICAgICAgICAgICAgICAgICJleHBvc2UtZXZl
bnQiLAogICAgICAgICAgICAgICAgICAgICAgICgoR3RrU2lnbmFsRnVuYykgIG9uX2V4cG9zZV9o
aXN0byApICwgX19udWxsICk7CgogICAgZ3RrX3NpZ25hbF9jb25uZWN0KCggKCAoICBoaXN0b1dp
bmRvdyAgKSAhPSBfX251bGwgICYmICggKCAoKEd0a09iamVjdCopICggIGhpc3RvV2luZG93ICAp
KS0+a2xhc3MgKSAhPSBfX251bGwgICYmICgoR3RrRnVuZGFtZW50YWxUeXBlKSAoKCAoKEd0a09i
amVjdENsYXNzKikgKCAoKEd0a09iamVjdCopICggIGhpc3RvV2luZG93ICApKS0+a2xhc3MgKSkt
PnR5cGUgKSAmIDB4RkYpKSAgPT0gR1RLX1RZUEVfT0JKRUNUICkgICkgID8gKEd0a09iamVjdCop
ICggaGlzdG9XaW5kb3cgKSA6IChHdGtPYmplY3QqKSBndGtfdHlwZV9jaGVja19vYmplY3RfY2Fz
dCAoKEd0a1R5cGVPYmplY3QqKSAoIGhpc3RvV2luZG93ICksIEdUS19UWVBFX09CSkVDVCkgKSAs
CiAgICAgICAgICAgICAgICAgICAgICAgImRlc3Ryb3kiLAogICAgICAgICAgICAgICAgICAgICAg
ICgoR3RrU2lnbmFsRnVuYykgIG9uX2Rlc3Ryb3lfaGlzdG8gKSAsIF9fbnVsbCApOwoKICAgIHNo
b3dIaXN0b2dyYW0gPSBmYWxzZTsKICAgIGd0a193aWRnZXRfaGlkZShoaXN0b1dpbmRvdyk7CiAg
ICAKIAoKICAgIHByaW50ZigiUnVubmluZy4uLlxuIik7CiAgICBndGtfbWFpbigpOwoKICAgIHBy
aW50ZigiRG9uZS4uLlxuIik7CiAgICBkZWxldGVbXSBpbWdCdWZmOwogICAgZGVsZXRlIG1wZWc7
CiAgICByZXR1cm4gMDsKfQoK

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]