public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/9413: Internal compiler error received
@ 2003-01-23  4:36 dpates
  0 siblings, 0 replies; only message in thread
From: dpates @ 2003-01-23  4:36 UTC (permalink / raw)
  To: gcc-gnats


>Number:         9413
>Category:       c
>Synopsis:       Internal compiler error received
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Jan 23 04:36:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     dpates@dsdk12.net
>Release:        gcc version 3.2.2 20030109 (Debian prerelease)
>Organization:
>Environment:
Debian GNU/Linux unstable (sid)
>Description:

>How-To-Repeat:
Extract Linux 2.4.20 kernel source
Apply patch from http://www.kernel.org/pub/linux/kernel/people/hch/linux-abi/v2.4/linux-abi-2.4.18.0.patch.gz (must hand patch 4 broken chunks, easily fixed)
Configure kernel with SVr3/SVr4 (and derivates) binary emulation support
Run 'make modules'
>Fix:

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

IyAxICJzeXNpODYuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEg
InN5c2k4Ni5jIgoKCgoKCiNpZGVudCAiJVclICVHJSIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvc2NoZWQuaCIgMgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZXZlbnQ7CgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYXV0b2NvbmYuaCIgMQojIDUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAyCiMgOSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9wdHJhY2UuaCIgMQojIDI2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9hc20vcHRyYWNlLmgiCnN0cnVjdCBwdF9yZWdzIHsKICAgICAgICBsb25nIGVieDsKICAgICAg
ICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAgICBs
b25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBpbnQg
eGRzOwogICAgICAgIGludCB4ZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAgICAgICBsb25n
IGVpcDsKICAgICAgICBpbnQgeGNzOwogICAgICAgIGxvbmcgZWZsYWdzOwogICAgICAgIGxvbmcg
ZXNwOwogICAgICAgIGludCB4c3M7Cn07CiMgNjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2FzbS9wdHJhY2UuaCIKZXh0ZXJuIHZvaWQgc2hvd19yZWdzKHN0cnVjdCBwdF9yZWdzICop
OwojIDI1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9wdHJhY2UuaCIgMgoj
IDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIgMQojIDE2
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQoKCgoKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAxCgoK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyA1
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAyCiMg
MzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiCnR5
cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGZkc19iaXRzIFsoMTAyNC8oOCAq
IHNpemVvZih1bnNpZ25lZCBsb25nKSkpXTsKfSBfX2tlcm5lbF9mZF9zZXQ7CgoKdHlwZWRlZiB2
b2lkICgqX19rZXJuZWxfc2lnaGFuZGxlcl90KShpbnQpOwoKCnR5cGVkZWYgaW50IF9fa2VybmVs
X2tleV90OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcG9zaXhfdHlw
ZXMuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcG9zaXhfdHlw
ZXMuaCIKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9kZXZfdDsKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIF9fa2VybmVsX2lub190Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVs
X21vZGVfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9ubGlua190Owp0eXBlZGVm
IGxvbmcgX19rZXJuZWxfb2ZmX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX3BpZF90Owp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2lwY19waWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBfX2tlcm5lbF91aWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWRfdDsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5l
bF9zc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9wdHJkaWZmX3Q7CnR5cGVkZWYgbG9uZyBf
X2tlcm5lbF90aW1lX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9zdXNlY29uZHNfdDsKdHlwZWRl
ZiBsb25nIF9fa2VybmVsX2Nsb2NrX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX2RhZGRyX3Q7CnR5
cGVkZWYgY2hhciAqIF9fa2VybmVsX2NhZGRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19r
ZXJuZWxfdWlkMTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWQxNl90Owp0
eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF91aWQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX2tlcm5lbF9naWQzMl90OwoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRf
dWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX2dpZF90OwoKCnR5cGVk
ZWYgbG9uZyBsb25nIF9fa2VybmVsX2xvZmZfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgICAg
IGludCB2YWxbMl07CgoKCn0gX19rZXJuZWxfZnNpZF90OwojIDQ3ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAyCiMgOSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdW1vZGVf
dDsKCgoKCgoKdHlwZWRlZiBfX3NpZ25lZF9fIGNoYXIgX19zODsKdHlwZWRlZiB1bnNpZ25lZCBj
aGFyIF9fdTg7Cgp0eXBlZGVmIF9fc2lnbmVkX18gc2hvcnQgX19zMTY7CnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgX191MTY7Cgp0eXBlZGVmIF9fc2lnbmVkX18gaW50IF9fczMyOwp0eXBlZGVmIHVu
c2lnbmVkIGludCBfX3UzMjsKCgp0eXBlZGVmIF9fc2lnbmVkX18gbG9uZyBsb25nIF9fczY0Owp0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3U2NDsKIyAzMiAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvYXNtL3R5cGVzLmgiCnR5cGVkZWYgc2lnbmVkIGNoYXIgczg7CnR5cGVkZWYg
dW5zaWduZWQgY2hhciB1ODsKCnR5cGVkZWYgc2lnbmVkIHNob3J0IHMxNjsKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCB1MTY7Cgp0eXBlZGVmIHNpZ25lZCBpbnQgczMyOwp0eXBlZGVmIHVuc2lnbmVk
IGludCB1MzI7Cgp0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgczY0Owp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbG9uZyB1NjQ7CiMgNTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS90
eXBlcy5oIgp0eXBlZGVmIHUzMiBkbWFfYWRkcl90OwoKdHlwZWRlZiB1NjQgZG1hNjRfYWRkcl90
OwojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAyCgoK
CnR5cGVkZWYgX19rZXJuZWxfZmRfc2V0IGZkX3NldDsKdHlwZWRlZiBfX2tlcm5lbF9kZXZfdCBk
ZXZfdDsKdHlwZWRlZiBfX2tlcm5lbF9pbm9fdCBpbm9fdDsKdHlwZWRlZiBfX2tlcm5lbF9tb2Rl
X3QgbW9kZV90Owp0eXBlZGVmIF9fa2VybmVsX25saW5rX3QgbmxpbmtfdDsKdHlwZWRlZiBfX2tl
cm5lbF9vZmZfdCBvZmZfdDsKdHlwZWRlZiBfX2tlcm5lbF9waWRfdCBwaWRfdDsKdHlwZWRlZiBf
X2tlcm5lbF9kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19rZXJuZWxfa2V5X3Qga2V5X3Q7CnR5
cGVkZWYgX19rZXJuZWxfc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKdHlwZWRlZiBfX2tlcm5l
bF91aWQzMl90IHVpZF90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDMyX3QgZ2lkX3Q7CnR5cGVkZWYg
X19rZXJuZWxfdWlkMTZfdCB1aWQxNl90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDE2X3QgZ2lkMTZf
dDsKCgoKdHlwZWRlZiBfX2tlcm5lbF9vbGRfdWlkX3Qgb2xkX3VpZF90Owp0eXBlZGVmIF9fa2Vy
bmVsX29sZF9naWRfdCBvbGRfZ2lkX3Q7CiMgNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgX19rZXJuZWxfbG9mZl90IGxvZmZfdDsKIyA1NCAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIKdHlwZWRlZiBfX2tl
cm5lbF9zaXplX3Qgc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9zc2l6ZV90IHNzaXplX3Q7
CgoKCgp0eXBlZGVmIF9fa2VybmVsX3B0cmRpZmZfdCBwdHJkaWZmX3Q7CgoKCgp0eXBlZGVmIF9f
a2VybmVsX3RpbWVfdCB0aW1lX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX2Nsb2NrX3QgY2xvY2tf
dDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYg
dW5zaWduZWQgaW50IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwoKCnR5cGVk
ZWYgdW5zaWduZWQgY2hhciB1bmNoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0Owp0
eXBlZGVmIHVuc2lnbmVkIGludCB1aW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxvbmc7CgoK
Cgp0eXBlZGVmIF9fdTggdV9pbnQ4X3Q7CnR5cGVkZWYgX19zOCBpbnQ4X3Q7CnR5cGVkZWYgX191
MTYgdV9pbnQxNl90Owp0eXBlZGVmIF9fczE2IGludDE2X3Q7CnR5cGVkZWYgX191MzIgdV9pbnQz
Ml90Owp0eXBlZGVmIF9fczMyIGludDMyX3Q7CgoKCnR5cGVkZWYgX191OCB1aW50OF90Owp0eXBl
ZGVmIF9fdTE2IHVpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVpbnQzMl90OwoKCnR5cGVkZWYgX191
NjQgdWludDY0X3Q7CnR5cGVkZWYgX191NjQgdV9pbnQ2NF90Owp0eXBlZGVmIF9fczY0IGludDY0
X3Q7CiMgMTIzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90eXBlcy5oIgpz
dHJ1Y3QgdXN0YXQgewogICAgICAgIF9fa2VybmVsX2RhZGRyX3QgZl90ZnJlZTsKICAgICAgICBf
X2tlcm5lbF9pbm9fdCBmX3Rpbm9kZTsKICAgICAgICBjaGFyIGZfZm5hbWVbNl07CiAgICAgICAg
Y2hhciBmX2ZwYWNrWzZdOwp9OwojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9jYXBhYmlsaXR5LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9mcy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Zz
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAx
CiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saW1pdHMuaCIgMQojIDEyICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9rZXJuZWwuaCIKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4yLjIv
aW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8z
LjIuMi9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVj
X3ZhX2xpc3Q7CiMgMTEwICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4yLjIvaW5jbHVk
ZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgMTEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCIgMQojIDE1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMQojIDEzICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiCnN0YXRpYyBfX2lubGluZV9fIF9fY29u
c3RfXyBfX3UzMiBfX19hcmNoX19zd2FiMzIoX191MzIgeCkKewoKICAgICAgICBfX2FzbV9fKCJi
c3dhcCAlMCIgOiAiPXIiICh4KSA6ICIwIiAoeCkpOwoKCgoKCgoKICAgICAgICByZXR1cm4geDsK
fQoKc3RhdGljIF9faW5saW5lX18gX19jb25zdF9fIF9fdTE2IF9fX2FyY2hfX3N3YWIxNihfX3Ux
NiB4KQp7CiAgICAgICAgX19hc21fXygieGNoZ2IgJWIwLCVoMCIgOiAiPXEiICh4KSA6ICIwIiAo
eCkpOyByZXR1cm4geDsKCgoKfQojIDQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vYnl0ZW9yZGVyLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
Ynl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiIDEKIyAxNTkgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiCnN0YXRpYyBf
X2lubGluZV9fIF9fY29uc3RfXyBfX3UxNiBfX2Zzd2FiMTYoX191MTYgeCkKewogICAgICAgIHJl
dHVybiBfX19hcmNoX19zd2FiMTYoeCk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MTYgX19zd2Fi
MTZwKF9fdTE2ICp4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIxNigqKHgpKTsKfQpz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dhYjE2cyhfX3UxNiAqYWRkcikKewogICAgICAgIGRv
IHsgKihhZGRyKSA9IF9fX2FyY2hfX3N3YWIxNigqKChhZGRyKSkpOyB9IHdoaWxlICgwKTsKfQoK
c3RhdGljIF9faW5saW5lX18gX19jb25zdF9fIF9fdTMyIF9fZnN3YWIyNChfX3UzMiB4KQp7CiAg
ICAgICAgcmV0dXJuICh7IF9fdTMyIF9fdG1wID0gKHgpIDsgKHsgX191MzIgX194ID0gKF9fdG1w
KTsgKChfX3UzMikoICgoX194ICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMTYpIHwgKF9feCAm
IChfX3UzMikweDAwMDBmZjAwVUwpIHwgKChfX3ggJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAx
NikgKSk7IH0pOyB9KTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3UzMiBfX3N3YWIyNHAoX191MzIg
KngpCnsKICAgICAgICByZXR1cm4gKHsgX191MzIgX190bXAgPSAoKih4KSkgOyAoeyBfX3UzMiBf
X3ggPSAoX190bXApOyAoKF9fdTMyKSggKChfX3ggJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAx
NikgfCAoX194ICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgfCAoKF9feCAmIChfX3UzMikweDAwZmYw
MDAwVUwpID4+IDE2KSApKTsgfSk7IH0pOwp9CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19zd2Fi
MjRzKF9fdTMyICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0gKHsgX191MzIgX190bXAg
PSAoKigoYWRkcikpKSA7ICh7IF9fdTMyIF9feCA9IChfX3RtcCk7ICgoX191MzIpKCAoKF9feCAm
IChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDE2KSB8IChfX3ggJiAoX191MzIpMHgwMDAwZmYwMFVM
KSB8ICgoX194ICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gMTYpICkpOyB9KTsgfSk7IH0gd2hp
bGUgKDApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2NvbnN0X18gX191MzIgX19mc3dhYjMyKF9f
dTMyIHgpCnsKICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjMyKHgpOwp9CnN0YXRpYyBfX2lu
bGluZV9fIF9fdTMyIF9fc3dhYjMycChfX3UzMiAqeCkKewogICAgICAgIHJldHVybiBfX19hcmNo
X19zd2FiMzIoKih4KSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3N3YWIzMnMoX191MzIg
KmFkZHIpCnsKICAgICAgICBkbyB7ICooYWRkcikgPSBfX19hcmNoX19zd2FiMzIoKigoYWRkcikp
KTsgfSB3aGlsZSAoMCk7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBfX2NvbnN0X18gX191NjQgX19m
c3dhYjY0KF9fdTY0IHgpCnsKCiAgICAgICAgX191MzIgaCA9IHggPj4gMzI7CiAgICAgICAgX191
MzIgbCA9IHggJiAoKDFVTEw8PDMyKS0xKTsKICAgICAgICByZXR1cm4gKCgoX191NjQpKF9fYnVp
bHRpbl9jb25zdGFudF9wKChfX3UzMikobCkpID8gKHsgX191MzIgX194ID0gKChsKSk7ICgoX191
MzIpKCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9f
dTMyKShfX3gpICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoX194KSAm
IChfX3UzMikweDAwZmYwMDAwVUwpID4+IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHhm
ZjAwMDAwMFVMKSA+PiAyNCkgKSk7IH0pIDogX19mc3dhYjMyKChsKSkpKSA8PCAzMikgfCAoKF9f
dTY0KSgoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKShoKSkgPyAoeyBfX3UzMiBfX3ggPSAo
KGgpKTsgKChfX3UzMikoICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwg
MjQpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCA4KSB8ICgoKF9f
dTMyKShfX3gpICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gOCkgfCAoKChfX3UzMikoX194KSAm
IChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSApKTsgfSkgOiBfX2Zzd2FiMzIoKGgpKSkpKTsK
CgoKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3U2NCBfX3N3YWI2NHAoX191NjQgKngpCnsKICAgICAg
ICByZXR1cm4gKHsgX191NjQgX190bXAgPSAoKih4KSkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXAp
OyAoKF9fdTY0KSggKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAw
MDBmZlVMTCkgPDwgNTYpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAw
MDAwMDAwZmYwMFVMTCkgPDwgNDApIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4
MDAwMDAwMDAwMGZmMDAwMFVMTCkgPDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9f
dTY0KTB4MDAwMDAwMDBmZjAwMDAwMFVMTCkgPDwgOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkg
JiAoX191NjQpMHgwMDAwMDBmZjAwMDAwMDAwVUxMKSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCko
X194KSAmIChfX3U2NCkweDAwMDBmZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChf
X3U2NCkoX194KSAmIChfX3U2NCkweDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2
NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSAp
KTsgfSk7IH0pOwp9CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19zd2FiNjRzKF9fdTY0ICphZGRy
KQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0gKHsgX191NjQgX190bXAgPSAoKigoYWRkcikpKSA7
ICh7IF9fdTY0IF9feCA9IChfX3RtcCk7ICgoX191NjQpKCAoX191NjQpKCgoX191NjQpKF9feCkg
JiAoX191NjQpMHgwMDAwMDAwMDAwMDAwMGZmVUxMKSA8PCA1NikgfCAoX191NjQpKCgoX191NjQp
KF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAwMDBmZjAwVUxMKSA8PCA0MCkgfCAoX191NjQpKCgo
X191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAwZmYwMDAwVUxMKSA8PCAyNCkgfCAoX191
NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMGZmMDAwMDAwVUxMKSA8PCA4KSB8
IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMGZmMDAwMDAwMDBVTEwpID4+
IDgpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMGZmMDAwMDAwMDAwMFVM
TCkgPj4gMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDBmZjAwMDAwMDAw
MDAwMFVMTCkgPj4gNDApIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4ZmYwMDAw
MDAwMDAwMDAwMFVMTCkgPj4gNTYpICkpOyB9KTsgfSk7IH0gd2hpbGUgKDApOwp9CiMgMTIgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFu
LmgiIDIKIyA4MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVy
L2xpdHRsZV9lbmRpYW4uaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIiAxCiMgMTUwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIgpleHRlcm4gX191MzIgbnRvaGwoX191MzIp
OwpleHRlcm4gX191MzIgaHRvbmwoX191MzIpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGlu
dCBudG9ocyh1bnNpZ25lZCBzaG9ydCBpbnQpOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50IGh0
b25zKHVuc2lnbmVkIHNob3J0IGludCk7CiMgODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDIKIyA0NiAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAyCiMgMTYgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgNDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpleHRlcm4gaW50IGNvbnNvbGVfcHJpbnRrW107
CiMgNTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpzdHJ1
Y3QgY29tcGxldGlvbjsKCmV4dGVybiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnBhbmljX25vdGlm
aWVyX2xpc3Q7CiB2b2lkIHBhbmljKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAgICBfX2F0
dHJpYnV0ZV9fICgobm9yZXR1cm4sIGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogX19hdHRyaWJ1
dGVfXygocmVncGFybSgwKSkpIHZvaWQgZG9fZXhpdChsb25nIGVycm9yX2NvZGUpCiAgICAgICAg
X19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKIHZvaWQgY29tcGxldGVfYW5kX2V4aXQoc3RydWN0
IGNvbXBsZXRpb24gKiwgbG9uZykKICAgICAgICBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwpl
eHRlcm4gaW50IGFicyhpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBzaW1wbGVfc3RydG91bChj
b25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpleHRlcm4gbG9uZyBzaW1wbGVfc3Ry
dG9sKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiB1bnNpZ25lZCBs
b25nIGxvbmcgc2ltcGxlX3N0cnRvdWxsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGlu
dCk7CmV4dGVybiBsb25nIGxvbmcgc2ltcGxlX3N0cnRvbGwoY29uc3QgY2hhciAqLGNoYXIgKios
dW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIg
KiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDIsIDMp
KSk7CmV4dGVybiBpbnQgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xpc3Qp
OwpleHRlcm4gaW50IHNucHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFy
ICogZm10LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0
KSkpOwpleHRlcm4gaW50IHZzbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBj
aGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CgpleHRlcm4gaW50IHNzY2FuZihjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKiwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHNjYW5m
LDIsMykpKTsKZXh0ZXJuIGludCB2c3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB2
YV9saXN0KTsKCmV4dGVybiBpbnQgZ2V0X29wdGlvbihjaGFyICoqc3RyLCBpbnQgKnBpbnQpOwpl
eHRlcm4gY2hhciAqZ2V0X29wdGlvbnMoY2hhciAqc3RyLCBpbnQgbmludHMsIGludCAqaW50cyk7
CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgbWVtcGFyc2UoY2hhciAqcHRyLCBjaGFyICoqcmV0
cHRyKTsKZXh0ZXJuIHZvaWQgZGV2X3Byb2JlX2xvY2sodm9pZCk7CmV4dGVybiB2b2lkIGRldl9w
cm9iZV91bmxvY2sodm9pZCk7CgpleHRlcm4gaW50IHNlc3Npb25fb2ZfcGdycChpbnQgcGdycCk7
CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBwcmludGsoY29uc3QgY2hhciAqIGZt
dCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsK
CnN0YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3NpbGVudCh2b2lkKQp7CiAgICAgICAgKGNvbnNv
bGVfcHJpbnRrWzBdKSA9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3ZlcmJvc2Uo
dm9pZCkKewogICAgICAgIGlmICgoY29uc29sZV9wcmludGtbMF0pKQogICAgICAgICAgICAgICAg
KGNvbnNvbGVfcHJpbnRrWzBdKSA9IDE1Owp9CgpleHRlcm4gdm9pZCBidXN0X3NwaW5sb2Nrcyhp
bnQgeWVzKTsKZXh0ZXJuIGludCBvb3BzX2luX3Byb2dyZXNzOwoKZXh0ZXJuIGludCB0YWludGVk
OwpleHRlcm4gY29uc3QgY2hhciAqcHJpbnRfdGFpbnRlZCh2b2lkKTsKCmV4dGVybiB2b2lkIGR1
bXBfc3RhY2sodm9pZCk7CiMgMTc0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9rZXJuZWwuaCIKZXh0ZXJuIHZvaWQgX19vdXRfb2ZfbGluZV9idWcoaW50IGxpbmUpIF9fYXR0
cmlidXRlX18oKG5vcmV0dXJuKSk7CgoKCgoKc3RydWN0IHN5c2luZm8gewogICAgICAgIGxvbmcg
dXB0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9hZHNbM107CiAgICAgICAgdW5zaWduZWQg
bG9uZyB0b3RhbHJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVyYW07CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzaGFyZWRyYW07CiAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJyYW07CiAg
ICAgICAgdW5zaWduZWQgbG9uZyB0b3RhbHN3YXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVl
c3dhcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwcm9jczsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBwYWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0b3RhbGhpZ2g7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBmcmVlaGlnaDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWVtX3VuaXQ7CiAgICAgICAgY2hh
ciBfZlsyMC0yKnNpemVvZihsb25nKS1zaXplb2YoaW50KV07Cn07CiMgMTQgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9hc20vcHJvY2Vzc29yLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
YXNtL3ZtODYuaCIgMQojIDY4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdm04
Ni5oIgpzdHJ1Y3Qgdm04Nl9yZWdzIHsKCgoKICAgICAgICBsb25nIGVieDsKICAgICAgICBsb25n
IGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAgICBsb25nIGVk
aTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBsb25nIF9fbnVs
bF9kczsKICAgICAgICBsb25nIF9fbnVsbF9lczsKICAgICAgICBsb25nIF9fbnVsbF9mczsKICAg
ICAgICBsb25nIF9fbnVsbF9nczsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAgICAgIGxvbmcg
ZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICBsb25nIGVmbGFn
czsKICAgICAgICBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CgoK
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwp9OwoKc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IHsKICAg
ICAgICB1bnNpZ25lZCBsb25nIF9fbWFwWzhdOwp9OwoKc3RydWN0IHZtODZfc3RydWN0IHsKICAg
ICAgICBzdHJ1Y3Qgdm04Nl9yZWdzIHJlZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9y
ZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7Cn07
CgoKCgoKCnN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBmb3JjZV9yZXR1cm5fZm9yX3BpYzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdm04NmRiZ19h
Y3RpdmU6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtODZkYmdfVEZwZW5kaWc6MTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHVudXNlZDoyODsKICAgICAgICB1bnNpZ25lZCBsb25nIGlzX3ZtODZw
dXM6MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZtODZkYmdfaW50eHh0YWJbMzJdOwp9OwoKc3Ry
dWN0IHZtODZwbHVzX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZfcmVncyByZWdzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0
bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJldmVj
dG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0
cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVj
dCB2bTg2cGx1czsKfTsKIyAxNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS92
bTg2LmgiCnN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzIHsKCgoKICAgICAgICBsb25nIGVieDsKICAg
ICAgICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAg
ICBsb25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBs
b25nIF9fbnVsbF9kczsKICAgICAgICBsb25nIF9fbnVsbF9lczsKICAgICAgICBsb25nIG9yaWdf
ZWF4OwogICAgICAgIGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsK
ICAgICAgICBsb25nIGVmbGFnczsKICAgICAgICBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBzcywgX19zc2g7CgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywg
X19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwp9OwoKc3RydWN0IGtlcm5l
bF92bTg2X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgcmVnczsKIyAx
ODQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS92bTg2LmgiCiAgICAgICAgdW5z
aWduZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9z
dHJ1Y3QgaW50X3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGlu
dDIxX3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHZtODZwbHVzX2luZm9fc3RydWN0IHZtODZw
bHVzOwogICAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzMzI7CiMgMjAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vdm04Ni5oIgp9OwoKdm9pZCBoYW5kbGVfdm04Nl9mYXVsdChz
dHJ1Y3Qga2VybmVsX3ZtODZfcmVncyAqLCBsb25nKTsKaW50IGhhbmRsZV92bTg2X3RyYXAoc3Ry
dWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwgbG9uZywgaW50KTsKIyAxMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmgiCnN0cnVjdCBfZnByZWcgewogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNpZ25pZmljYW5kWzRdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGV4cG9uZW50
Owp9OwoKc3RydWN0IF9mcHhyZWcgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNpZ25pZmljYW5k
WzRdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGV4cG9uZW50OwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHBhZGRpbmdbM107Cn07CgpzdHJ1Y3QgX3htbXJlZyB7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBlbGVtZW50WzRdOwp9OwoKc3RydWN0IF9mcHN0YXRlIHsKCiAgICAgICAgdW5zaWduZWQgbG9u
ZyBjdzsKICAgICAgICB1bnNpZ25lZCBsb25nIHN3OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdGFn
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXBvZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjc3Nl
bDsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFvZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBk
YXRhc2VsOwogICAgICAgIHN0cnVjdCBfZnByZWcgX3N0WzhdOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHN0YXR1czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtYWdpYzsKCgogICAgICAgIHVuc2ln
bmVkIGxvbmcgX2Z4c3JfZW52WzZdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbXhjc3I7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyByZXNlcnZlZDsKICAgICAgICBzdHJ1Y3QgX2ZweHJlZyBfZnhzcl9z
dFs4XTsKICAgICAgICBzdHJ1Y3QgX3htbXJlZyBfeG1tWzhdOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgcGFkZGluZ1s1Nl07Cn07CgoKCnN0cnVjdCBzaWdjb250ZXh0IHsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBncywgX19nc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywg
X19kc2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZGk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBl
c2k7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYnA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYng7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZHg7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBlY3g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYXg7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyB0cmFwbm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBlcnI7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZWZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwX2F0
X3NpZ25hbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CiAgICAgICAgc3RydWN0
IF9mcHN0YXRlICogZnBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG1hc2s7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBjcjI7Cn07CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvYXNtL21hdGhfZW11LmgiIDIKCmludCByZXN0b3JlX2kzODdfc29mdCh2b2lkICpzMzg3LCBz
dHJ1Y3QgX2Zwc3RhdGUgKmJ1Zik7CmludCBzYXZlX2kzODdfc29mdCh2b2lkICpzMzg3LCBzdHJ1
Y3QgX2Zwc3RhdGUgKiBidWYpOwoKCgoKCnN0cnVjdCBpbmZvIHsKICAgICAgICBsb25nIF9fX29y
aWdfZWlwOwogICAgICAgIGxvbmcgX19fZWJ4OwogICAgICAgIGxvbmcgX19fZWN4OwogICAgICAg
IGxvbmcgX19fZWR4OwogICAgICAgIGxvbmcgX19fZXNpOwogICAgICAgIGxvbmcgX19fZWRpOwog
ICAgICAgIGxvbmcgX19fZWJwOwogICAgICAgIGxvbmcgX19fZWF4OwogICAgICAgIGxvbmcgX19f
ZHM7CiAgICAgICAgbG9uZyBfX19lczsKICAgICAgICBsb25nIF9fX29yaWdfZWF4OwogICAgICAg
IGxvbmcgX19fZWlwOwogICAgICAgIGxvbmcgX19fY3M7CiAgICAgICAgbG9uZyBfX19lZmxhZ3M7
CiAgICAgICAgbG9uZyBfX19lc3A7CiAgICAgICAgbG9uZyBfX19zczsKICAgICAgICBsb25nIF9f
X3ZtODZfZXM7CiAgICAgICAgbG9uZyBfX192bTg2X2RzOwogICAgICAgIGxvbmcgX19fdm04Nl9m
czsKICAgICAgICBsb25nIF9fX3ZtODZfZ3M7Cn07CiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9zZWdtZW50LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
YXNtL3BhZ2UuaCIgMQojIDQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcGFn
ZS5oIgp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcHRlX2xvdzsgfSBwdGVfdDsKdHlw
ZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHBtZDsgfSBwbWRfdDsKdHlwZWRlZiBzdHJ1Y3Qg
eyB1bnNpZ25lZCBsb25nIHBnZDsgfSBwZ2RfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsgdW5zaWdu
ZWQgbG9uZyBwZ3Byb3Q7IH0gcGdwcm90X3Q7CiMgMTEzICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vcGFnZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZ2V0X29yZGVyKHVuc2ln
bmVkIGxvbmcgc2l6ZSkKewogICAgICAgIGludCBvcmRlcjsKCiAgICAgICAgc2l6ZSA9IChzaXpl
LTEpID4+ICgxMiAtMSk7CiAgICAgICAgb3JkZXIgPSAtMTsKICAgICAgICBkbyB7CiAgICAgICAg
ICAgICAgICBzaXplID4+PSAxOwogICAgICAgICAgICAgICAgb3JkZXIrKzsKICAgICAgICB9IHdo
aWxlIChzaXplKTsKICAgICAgICByZXR1cm4gb3JkZXI7Cn0KIyAxNCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvYXNtL2NhY2hlLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9jYWNoZS5oIiAyCiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2Fz
bS9wcm9jZXNzb3IuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC90aHJlYWRzLmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3By
b2Nlc3Nvci5oIiAyCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9j
ZXNzb3IuaCIKc3RydWN0IGNwdWluZm9feDg2IHsKICAgICAgICBfX3U4IHg4NjsKICAgICAgICBf
X3U4IHg4Nl92ZW5kb3I7CiAgICAgICAgX191OCB4ODZfbW9kZWw7CiAgICAgICAgX191OCB4ODZf
bWFzazsKICAgICAgICBjaGFyIHdwX3dvcmtzX29rOwogICAgICAgIGNoYXIgaGx0X3dvcmtzX29r
OwogICAgICAgIGNoYXIgaGFyZF9tYXRoOwogICAgICAgIGNoYXIgcmZ1OwogICAgICAgIGludCBj
cHVpZF9sZXZlbDsKICAgICAgICBfX3UzMiB4ODZfY2FwYWJpbGl0eVs0XTsKICAgICAgICBjaGFy
IHg4Nl92ZW5kb3JfaWRbMTZdOwogICAgICAgIGNoYXIgeDg2X21vZGVsX2lkWzY0XTsKICAgICAg
ICBpbnQgeDg2X2NhY2hlX3NpemU7CgogICAgICAgIGludCBmZGl2X2J1ZzsKICAgICAgICBpbnQg
ZjAwZl9idWc7CiAgICAgICAgaW50IGNvbWFfYnVnOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9v
cHNfcGVyX2ppZmZ5OwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnBnZF9xdWljazsKICAgICAgICB1
bnNpZ25lZCBsb25nICpwbWRfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcHRlX3F1aWNr
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGd0YWJsZV9jYWNoZV9zejsKfSBfX2F0dHJpYnV0ZV9f
KChfX2FsaWduZWRfXygoMSA8PCAoKDUpKSkpKSk7CiMgNzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIHN0cnVjdCBjcHVpbmZvX3g4NiBib290
X2NwdV9kYXRhOwpleHRlcm4gc3RydWN0IHRzc19zdHJ1Y3QgaW5pdF90c3NbMV07CiMgOTUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIGNoYXIg
aWdub3JlX2lycTEzOwoKZXh0ZXJuIHZvaWQgaWRlbnRpZnlfY3B1KHN0cnVjdCBjcHVpbmZvX3g4
NiAqKTsKZXh0ZXJuIHZvaWQgcHJpbnRfY3B1X2luZm8oc3RydWN0IGNwdWluZm9feDg2ICopOwpl
eHRlcm4gdm9pZCBkb2RneV90c2Modm9pZCk7CiMgMTI1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBjcHVpZChpbnQgb3As
IGludCAqZWF4LCBpbnQgKmVieCwgaW50ICplY3gsIGludCAqZWR4KQp7CiAgICAgICAgX19hc21f
XygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKCplYXgpLAogICAgICAgICAgICAgICAg
ICAiPWIiICgqZWJ4KSwKICAgICAgICAgICAgICAgICAgIj1jIiAoKmVjeCksCiAgICAgICAgICAg
ICAgICAgICI9ZCIgKCplZHgpCiAgICAgICAgICAgICAgICA6ICIwIiAob3ApKTsKfQoKCgoKc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWF4KHVuc2lnbmVkIGludCBvcCkKewogICAg
ICAgIHVuc2lnbmVkIGludCBlYXg7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgogICAgICAgICAg
ICAgICAgOiAiPWEiIChlYXgpCiAgICAgICAgICAgICAgICA6ICIwIiAob3ApCiAgICAgICAgICAg
ICAgICA6ICJieCIsICJjeCIsICJkeCIpOwogICAgICAgIHJldHVybiBlYXg7Cn0Kc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWJ4KHVuc2lnbmVkIGludCBvcCkKewogICAgICAgIHVu
c2lnbmVkIGludCBlYXgsIGVieDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAg
ICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkK
ICAgICAgICAgICAgICAgIDogImN4IiwgImR4IiApOwogICAgICAgIHJldHVybiBlYng7Cn0Kc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWN4KHVuc2lnbmVkIGludCBvcCkKewogICAg
ICAgIHVuc2lnbmVkIGludCBlYXgsIGVjeDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAg
ICAgICAgICAgICA6ICI9YSIgKGVheCksICI9YyIgKGVjeCkKICAgICAgICAgICAgICAgIDogIjAi
IChvcCkKICAgICAgICAgICAgICAgIDogImJ4IiwgImR4IiApOwogICAgICAgIHJldHVybiBlY3g7
Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWR4KHVuc2lnbmVkIGludCBvcCkK
ewogICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVkeDsKCiAgICAgICAgX19hc21fXygiY3B1aWQi
CiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCksICI9ZCIgKGVkeCkKICAgICAgICAgICAgICAg
IDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDogImJ4IiwgImN4Iik7CiAgICAgICAgcmV0dXJu
IGVkeDsKfQojIDIwMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nv
ci5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBtbXVfY3I0X2ZlYXR1cmVzOwoKc3RhdGljIGlubGlu
ZSB2b2lkIHNldF9pbl9jcjQgKHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIG1tdV9jcjRf
ZmVhdHVyZXMgfD0gbWFzazsKICAgICAgICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUlZWF4XG5cdCIK
ICAgICAgICAgICAgICAgICJvcmwgJTAsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm1vdmwg
JSVlYXgsJSVjcjRcbiIKICAgICAgICAgICAgICAgIDogOiAiaXJnIiAobWFzaykKICAgICAgICAg
ICAgICAgIDoiYXgiKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2luX2NyNCAodW5zaWdu
ZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgbW11X2NyNF9mZWF0dXJlcyAmPSB+bWFzazsKICAgICAg
ICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJhbmRsICUw
LCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsICUlZWF4LCUlY3I0XG4iCiAgICAgICAg
ICAgICAgICA6IDogImlyZyIgKH5tYXNrKQogICAgICAgICAgICAgICAgOiJheCIpOwp9CiMgMjYw
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiBp
bnQgTUNBX2J1czsKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBtYWNoaW5lX2lkOwpleHRlcm4gdW5z
aWduZWQgaW50IG1hY2hpbmVfc3VibW9kZWxfaWQ7CmV4dGVybiB1bnNpZ25lZCBpbnQgQklPU19y
ZXZpc2lvbjsKZXh0ZXJuIHVuc2lnbmVkIGludCBtY2FfcGVudGl1bV9mbGFnOwojIDI4NiAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgaTM4N19m
c2F2ZV9zdHJ1Y3QgewogICAgICAgIGxvbmcgY3dkOwogICAgICAgIGxvbmcgc3dkOwogICAgICAg
IGxvbmcgdHdkOwogICAgICAgIGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxv
bmcgZm9vOwogICAgICAgIGxvbmcgZm9zOwogICAgICAgIGxvbmcgc3Rfc3BhY2VbMjBdOwogICAg
ICAgIGxvbmcgc3RhdHVzOwp9OwoKc3RydWN0IGkzODdfZnhzYXZlX3N0cnVjdCB7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgY3dkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3ZDsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCB0d2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZm9wOwogICAgICAgIGxv
bmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxvbmcgZm9vOwogICAgICAgIGxvbmcg
Zm9zOwogICAgICAgIGxvbmcgbXhjc3I7CiAgICAgICAgbG9uZyByZXNlcnZlZDsKICAgICAgICBs
b25nIHN0X3NwYWNlWzMyXTsKICAgICAgICBsb25nIHhtbV9zcGFjZVszMl07CiAgICAgICAgbG9u
ZyBwYWRkaW5nWzU2XTsKfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoMTYpKSk7CgpzdHJ1Y3Qg
aTM4N19zb2Z0X3N0cnVjdCB7CiAgICAgICAgbG9uZyBjd2Q7CiAgICAgICAgbG9uZyBzd2Q7CiAg
ICAgICAgbG9uZyB0d2Q7CiAgICAgICAgbG9uZyBmaXA7CiAgICAgICAgbG9uZyBmY3M7CiAgICAg
ICAgbG9uZyBmb287CiAgICAgICAgbG9uZyBmb3M7CiAgICAgICAgbG9uZyBzdF9zcGFjZVsyMF07
CiAgICAgICAgdW5zaWduZWQgY2hhciBmdG9wLCBjaGFuZ2VkLCBsb29rYWhlYWQsIG5vX3VwZGF0
ZSwgcm0sIGFsaW1pdDsKICAgICAgICBzdHJ1Y3QgaW5mbyAqaW5mbzsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVudHJ5X2VpcDsKfTsKCnVuaW9uIGkzODdfdW5pb24gewogICAgICAgIHN0cnVjdCBp
Mzg3X2ZzYXZlX3N0cnVjdCBmc2F2ZTsKICAgICAgICBzdHJ1Y3QgaTM4N19meHNhdmVfc3RydWN0
IGZ4c2F2ZTsKICAgICAgICBzdHJ1Y3QgaTM4N19zb2Z0X3N0cnVjdCBzb2Z0Owp9OwoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VnOwp9IG1tX3NlZ21lbnRfdDsKCnN0
cnVjdCB0c3Nfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBiYWNrX2xpbmssX19ibGg7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNzMCxf
X3NzMGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AxOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHNzMSxfX3NzMWg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AyOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHNzMixfX3NzMmg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX2NyMzsKICAgICAgICB1
bnNpZ25lZCBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVmbGFnczsKICAgICAgICB1
bnNpZ25lZCBsb25nIGVheCxlY3gsZWR4LGVieDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGVicDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzaTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHNzLCBfX3NzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZHQsIF9fbGR0aDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCB0cmFjZSwgYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9fYml0bWFwWzMyICsxXTsK
CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9fY2FjaGVsaW5lX2ZpbGxlcls1XTsKfTsKCnN0cnVj
dCB0aHJlYWRfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDA7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmczsKICAgICAgICB1bnNpZ25lZCBsb25nIGdzOwoKICAgICAgICB1bnNpZ25lZCBs
b25nIGRlYnVncmVnWzhdOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGNyMiwgdHJhcF9ubywgZXJy
b3JfY29kZTsKCiAgICAgICAgdW5pb24gaTM4N191bmlvbiBpMzg3OwoKICAgICAgICBzdHJ1Y3Qg
dm04Nl9zdHJ1Y3QgKiB2bTg2X2luZm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0
bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdjg2ZmxhZ3MsIHY4Nm1hc2ssIHNhdmVkX2VzcDA7
CgogICAgICAgIGludCBpb3Blcm07CiAgICAgICAgdW5zaWduZWQgbG9uZyBpb19iaXRtYXBbMzIg
KzFdOwp9OwojIDQyOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nv
ci5oIgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7CgoKZXh0ZXJuIHZvaWQg
cmVsZWFzZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKCgpleHRlcm4gaW50IGtlcm5l
bF90aHJlYWQoaW50ICgqZm4pKHZvaWQgKiksIHZvaWQgKiBhcmcsIHVuc2lnbmVkIGxvbmcgZmxh
Z3MpOwoKCmV4dGVybiB2b2lkIGNvcHlfc2VnbWVudHMoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBz
dHJ1Y3QgbW1fc3RydWN0ICogbW0pOwpleHRlcm4gdm9pZCByZWxlYXNlX3NlZ21lbnRzKHN0cnVj
dCBtbV9zdHJ1Y3QgKiBtbSk7CgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGhyZWFk
X3NhdmVkX3BjKHN0cnVjdCB0aHJlYWRfc3RydWN0ICp0KQp7CiAgICAgICAgcmV0dXJuICgodW5z
aWduZWQgbG9uZyAqKXQtPmVzcClbM107Cn0KCnVuc2lnbmVkIGxvbmcgZ2V0X3djaGFuKHN0cnVj
dCB0YXNrX3N0cnVjdCAqcCk7CiMgNDYyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vcHJvY2Vzc29yLmgiCnN0cnVjdCBtaWNyb2NvZGUgewogICAgICAgIHVuc2lnbmVkIGludCBo
ZHJ2ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IHJldjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGF0
ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2lnOwogICAgICAgIHVuc2lnbmVkIGludCBja3N1bTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgbGRydmVyOwogICAgICAgIHVuc2lnbmVkIGludCBwZjsKICAg
ICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWRbNV07CiAgICAgICAgdW5zaWduZWQgaW50IGJpdHNb
NTAwXTsKfTsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcmVwX25vcCh2b2lkKQp7CiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oInJlcDtub3AiKTsKfQoKCgoKCgoKZXh0ZXJuIGlubGluZSB2
b2lkIHByZWZldGNoKGNvbnN0IHZvaWQgKngpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XyAoInByZWZldGNobnRhICglMCkiIDogOiAiciIoeCkpOwp9CiMgMTQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDIKIyA0OCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIKc3RhdGljIGlubGluZSB2b2lkIHByZWZl
dGNodyhjb25zdCB2b2lkICp4KSB7O30KIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9saXN0LmgiIDIKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvbGlzdC5oIgpzdHJ1Y3QgbGlzdF9oZWFkIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpu
ZXh0LCAqcHJldjsKfTsKIyAzNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
bGlzdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgX19saXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICpu
ZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnByZXYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5leHQpCnsK
ICAgICAgICBuZXh0LT5wcmV2ID0gbmV3OwogICAgICAgIG5ldy0+bmV4dCA9IG5leHQ7CiAgICAg
ICAgbmV3LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3Owp9CiMgNTUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSB2
b2lkIGxpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVh
ZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLCBoZWFkLT5uZXh0KTsKfQojIDY4ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCBsaXN0X2FkZF90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVh
ZCAqaGVhZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2LCBoZWFkKTsKfQoj
IDgwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBp
bmxpbmUgdm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKnByZXYsIHN0cnVjdCBsaXN0
X2hlYWQgKm5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5u
ZXh0ID0gbmV4dDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9kZWwoc3RydWN0IGxp
c3RfaGVhZCAqZW50cnkpCnsKICAgICAgICBfX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBlbnRyeS0+
bmV4dCk7CiAgICAgICAgZW50cnktPm5leHQgPSAodm9pZCAqKSAwOwogICAgICAgIGVudHJ5LT5w
cmV2ID0gKHZvaWQgKikgMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X2RlbF9pbml0
KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRyeS0+cHJl
diwgZW50cnktPm5leHQpOwogICAgICAgIGRvIHsgKGVudHJ5KS0+bmV4dCA9IChlbnRyeSk7IChl
bnRyeSktPnByZXYgPSAoZW50cnkpOyB9IHdoaWxlICgwKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgbGlzdF9tb3ZlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQg
KmhlYWQpCnsKICAgICAgICBfX2xpc3RfZGVsKGxpc3QtPnByZXYsIGxpc3QtPm5leHQpOwogICAg
ICAgIGxpc3RfYWRkKGxpc3QsIGhlYWQpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0
X21vdmVfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAgIF9fbGlzdF9kZWwo
bGlzdC0+cHJldiwgbGlzdC0+bmV4dCk7CiAgICAgICAgbGlzdF9hZGRfdGFpbChsaXN0LCBoZWFk
KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGxpc3RfZW1wdHkoc3RydWN0IGxpc3RfaGVhZCAq
aGVhZCkKewogICAgICAgIHJldHVybiBoZWFkLT5uZXh0ID09IGhlYWQ7Cn0KCnN0YXRpYyBpbmxp
bmUgdm9pZCBfX2xpc3Rfc3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkICpmaXJzdCA9IGxpc3QtPm5leHQ7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCAqbGFzdCA9IGxpc3QtPnByZXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqYXQgPSBo
ZWFkLT5uZXh0OwoKICAgICAgICBmaXJzdC0+cHJldiA9IGhlYWQ7CiAgICAgICAgaGVhZC0+bmV4
dCA9IGZpcnN0OwoKICAgICAgICBsYXN0LT5uZXh0ID0gYXQ7CiAgICAgICAgYXQtPnByZXYgPSBs
YXN0Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X3NwbGljZShzdHJ1Y3QgbGlzdF9o
ZWFkICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgaWYgKCFsaXN0X2Vt
cHR5KGxpc3QpKQogICAgICAgICAgICAgICAgX19saXN0X3NwbGljZShsaXN0LCBoZWFkKTsKfQoj
IDE3MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMg
aW5saW5lIHZvaWQgbGlzdF9zcGxpY2VfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7
CiAgICAgICAgaWYgKCFsaXN0X2VtcHR5KGxpc3QpKSB7CiAgICAgICAgICAgICAgICBfX2xpc3Rf
c3BsaWNlKGxpc3QsIGhlYWQpOwogICAgICAgICAgICAgICAgZG8geyAobGlzdCktPm5leHQgPSAo
bGlzdCk7IChsaXN0KS0+cHJldiA9IChsaXN0KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgfQp9CiMg
MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgNDAgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RyaW5naWZ5LmgiIDEKIyA0MSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMgojIDc1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgogIHR5cGVkZWYgc3RydWN0
IHsgfSBzcGlubG9ja190OwojIDEzOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvc3BpbmxvY2suaCIKICB0eXBlZGVmIHN0cnVjdCB7IH0gcndsb2NrX3Q7CiMgMTcwICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgp0eXBlZGVmIHN0cnVj
dCB7CiAgICBzcGlubG9ja190IGxvY2s7Cn0gc3BpbmxvY2tfY2FjaGVsaW5lX3Q7CiMgMTcgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDMxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC93YWl0LmgiCnN0cnVjdCBfX3dhaXRfcXVldWUg
ewogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0
ICogdGFzazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tfbGlzdDsKCgoKCn07CnR5cGVk
ZWYgc3RydWN0IF9fd2FpdF9xdWV1ZSB3YWl0X3F1ZXVlX3Q7CiMgNzcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKc3RydWN0IF9fd2FpdF9xdWV1ZV9oZWFkIHsK
ICAgICAgICBzcGlubG9ja190IGxvY2s7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0YXNrX2xp
c3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3dhaXRfcXVldWVfaGVhZCB3YWl0X3F1ZXVlX2hl
YWRfdDsKIyAxNTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIK
c3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1ZXVlX2hlYWQod2FpdF9xdWV1ZV9oZWFkX3Qg
KnEpCnsKCgoKCiAgICAgICAgcS0+bG9jayA9IChzcGlubG9ja190KSB7IH07CiAgICAgICAgZG8g
eyAoJnEtPnRhc2tfbGlzdCktPm5leHQgPSAoJnEtPnRhc2tfbGlzdCk7ICgmcS0+dGFza19saXN0
KS0+cHJldiA9ICgmcS0+dGFza19saXN0KTsgfSB3aGlsZSAoMCk7CgoKCgp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQgaW5pdF93YWl0cXVldWVfZW50cnkod2FpdF9xdWV1ZV90ICpxLCBzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKnApCnsKCgoKCiAgICAgICAgcS0+ZmxhZ3MgPSAwOwogICAgICAgIHEtPnRhc2sg
PSBwOwoKCgp9CgpzdGF0aWMgaW5saW5lIGludCB3YWl0cXVldWVfYWN0aXZlKHdhaXRfcXVldWVf
aGVhZF90ICpxKQp7CgoKCgoKCiAgICAgICAgcmV0dXJuICFsaXN0X2VtcHR5KCZxLT50YXNrX2xp
c3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19hZGRfd2FpdF9xdWV1ZSh3YWl0X3F1ZXVlX2hl
YWRfdCAqaGVhZCwgd2FpdF9xdWV1ZV90ICpuZXcpCnsKIyAyMDMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKICAgICAgICBsaXN0X2FkZCgmbmV3LT50YXNrX2xp
c3QsICZoZWFkLT50YXNrX2xpc3QpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19hZGRfd2Fp
dF9xdWV1ZV90YWlsKHdhaXRfcXVldWVfaGVhZF90ICpoZWFkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3F1ZXVlX3QgKm5ldykKewojIDIyMCAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvd2FpdC5oIgogICAgICAgIGxpc3Rf
YWRkX3RhaWwoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoKc3RhdGljIGlu
bGluZSB2b2lkIF9fcmVtb3ZlX3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKmhlYWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fp
dF9xdWV1ZV90ICpvbGQpCnsKCgoKCgogICAgICAgIGxpc3RfZGVsKCZvbGQtPnRhc2tfbGlzdCk7
Cn0KIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC92ZnMuaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zdGF0ZnMuaCIgMQoKCgoKCgoKdHlwZWRl
ZiBfX2tlcm5lbF9mc2lkX3QgZnNpZF90OwoKCgpzdHJ1Y3Qgc3RhdGZzIHsKICAgICAgICBsb25n
IGZfdHlwZTsKICAgICAgICBsb25nIGZfYnNpemU7CiAgICAgICAgbG9uZyBmX2Jsb2NrczsKICAg
ICAgICBsb25nIGZfYmZyZWU7CiAgICAgICAgbG9uZyBmX2JhdmFpbDsKICAgICAgICBsb25nIGZf
ZmlsZXM7CiAgICAgICAgbG9uZyBmX2ZmcmVlOwogICAgICAgIF9fa2VybmVsX2ZzaWRfdCBmX2Zz
aWQ7CiAgICAgICAgbG9uZyBmX25hbWVsZW47CiAgICAgICAgbG9uZyBmX3NwYXJlWzZdOwp9Owoj
IDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Zmcy5oIiAyCiMgMTUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZXQuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9uZXQuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9zb2NrZXQuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL3NvY2tldC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvYXNtL3NvY2tpb3MuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2Fz
bS9zb2NrZXQuaCIgMgojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Nv
Y2tldC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc29ja2lv
cy5oIiAxCiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc29ja2V0Lmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91aW8uaCIgMQojIDE5
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91aW8uaCIKc3RydWN0IGlvdmVj
CnsKICAgICAgICB2b2lkICppb3ZfYmFzZTsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgaW92X2xl
bjsKfTsKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIg
MgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgc2FfZmFtaWx5X3Q7CgoKCgoKc3RydWN0IHNvY2th
ZGRyIHsKICAgICAgICBzYV9mYW1pbHlfdCBzYV9mYW1pbHk7CiAgICAgICAgY2hhciBzYV9kYXRh
WzE0XTsKfTsKCnN0cnVjdCBsaW5nZXIgewogICAgICAgIGludCBsX29ub2ZmOwogICAgICAgIGlu
dCBsX2xpbmdlcjsKfTsKCgoKCgoKCnN0cnVjdCBtc2doZHIgewogICAgICAgIHZvaWQgKiBtc2df
bmFtZTsKICAgICAgICBpbnQgbXNnX25hbWVsZW47CiAgICAgICAgc3RydWN0IGlvdmVjICogbXNn
X2lvdjsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgbXNnX2lvdmxlbjsKICAgICAgICB2b2lkICog
bXNnX2NvbnRyb2w7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90IG1zZ19jb250cm9sbGVuOwogICAg
ICAgIHVuc2lnbmVkIG1zZ19mbGFnczsKfTsKCgoKCgoKCnN0cnVjdCBjbXNnaGRyIHsKICAgICAg
ICBfX2tlcm5lbF9zaXplX3QgY21zZ19sZW47CiAgICAgICAgaW50IGNtc2dfbGV2ZWw7CiAgICAg
ICAgaW50IGNtc2dfdHlwZTsKfTsKIyAxMDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L3NvY2tldC5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogX19jbXNnX254
dGhkcih2b2lkICpfX2N0bCwgX19rZXJuZWxfc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7
CiAgICAgICAgc3RydWN0IGNtc2doZHIgKiBfX3B0cjsKCiAgICAgICAgX19wdHIgPSAoc3RydWN0
IGNtc2doZHIqKSgoKHVuc2lnbmVkIGNoYXIgKikgX19jbXNnKSArICggKChfX2Ntc2ctPmNtc2df
bGVuKStzaXplb2YobG9uZyktMSkgJiB+KHNpemVvZihsb25nKS0xKSApKTsKICAgICAgICBpZiAo
KHVuc2lnbmVkIGxvbmcpKChjaGFyKikoX19wdHIrMSkgLSAoY2hhciAqKSBfX2N0bCkgPiBfX3Np
emUpCiAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnVjdCBjbXNnaGRyICopMDsKCiAgICAgICAg
cmV0dXJuIF9fcHRyOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogY21zZ19ueHRo
ZHIgKHN0cnVjdCBtc2doZHIgKl9fbXNnLCBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAg
ICAgcmV0dXJuIF9fY21zZ19ueHRoZHIoX19tc2ctPm1zZ19jb250cm9sLCBfX21zZy0+bXNnX2Nv
bnRyb2xsZW4sIF9fY21zZyk7Cn0KCgoKCgoKCnN0cnVjdCB1Y3JlZCB7CiAgICAgICAgX191MzIg
cGlkOwogICAgICAgIF9fdTMyIHVpZDsKICAgICAgICBfX3UzMiBnaWQ7Cn07CiMgMjQ5ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIKZXh0ZXJuIGludCBtZW1j
cHlfZnJvbWlvdmVjKHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50
IGxlbik7CmV4dGVybiBpbnQgbWVtY3B5X2Zyb21pb3ZlY2VuZCh1bnNpZ25lZCBjaGFyICprZGF0
YSwgc3RydWN0IGlvdmVjICppb3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IG9mZnNldCwgaW50IGxlbik7CmV4dGVybiBpbnQgY3N1bV9wYXJ0aWFsX2NvcHlfZnJvbWlvdmVj
ZW5kKHVuc2lnbmVkIGNoYXIgKmtkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbiwgaW50ICpjc3VtcCk7CgpleHRlcm4gaW50IHZl
cmlmeV9pb3ZlYyhzdHJ1Y3QgbXNnaGRyICptLCBzdHJ1Y3QgaW92ZWMgKmlvdiwgY2hhciAqYWRk
cmVzcywgaW50IG1vZGUpOwpleHRlcm4gaW50IG1lbWNweV90b2lvdmVjKHN0cnVjdCBpb3ZlYyAq
diwgdW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBsZW4pOwpleHRlcm4gdm9pZCBtZW1jcHlfdG9r
ZXJuZWxpb3ZlYyhzdHJ1Y3QgaW92ZWMgKmlvdiwgdW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBs
ZW4pOwpleHRlcm4gaW50IG1vdmVfYWRkcl90b191c2VyKHZvaWQgKmthZGRyLCBpbnQga2xlbiwg
dm9pZCAqdWFkZHIsIGludCAqdWxlbik7CmV4dGVybiBpbnQgbW92ZV9hZGRyX3RvX2tlcm5lbCh2
b2lkICp1YWRkciwgaW50IHVsZW4sIHZvaWQgKmthZGRyKTsKZXh0ZXJuIGludCBwdXRfY21zZyhz
dHJ1Y3QgbXNnaGRyKiwgaW50IGxldmVsLCBpbnQgdHlwZSwgaW50IGxlbiwgdm9pZCAqZGF0YSk7
CiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25ldC5oIiAyCgoKc3Ry
dWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDQ5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9uZXQuaCIKdHlwZWRlZiBlbnVtIHsKICBTU19GUkVFID0gMCwKICBTU19VTkNPTk5F
Q1RFRCwKICBTU19DT05ORUNUSU5HLAogIFNTX0NPTk5FQ1RFRCwKICBTU19ESVNDT05ORUNUSU5H
Cn0gc29ja2V0X3N0YXRlOwojIDY1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9uZXQuaCIKc3RydWN0IHNvY2tldAp7CiAgICAgICAgc29ja2V0X3N0YXRlIHN0YXRlOwoKICAg
ICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHN0cnVjdCBwcm90b19vcHMgKm9wczsK
ICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0
ICpmYXN5bmNfbGlzdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZTsKICAgICAgICBzdHJ1Y3Qg
c29jayAqc2s7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCiAgICAgICAgc2hvcnQg
dHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhc3NjcmVkOwp9OwoKCgpzdHJ1Y3Qgc2NtX2Nv
b2tpZTsKc3RydWN0IHZtX2FyZWFfc3RydWN0OwpzdHJ1Y3QgcGFnZTsKCnN0cnVjdCBwcm90b19v
cHMgewogIGludCBmYW1pbHk7CgogIGludCAoKnJlbGVhc2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2Nr
KTsKICBpbnQgKCpiaW5kKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1
bXlhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbik7CiAgaW50
ICgqY29ubmVjdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdXNlcnZh
ZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbiwgaW50IGZsYWdz
KTsKICBpbnQgKCpzb2NrZXRwYWlyKSAoc3RydWN0IHNvY2tldCAqc29jazEsIHN0cnVjdCBzb2Nr
ZXQgKnNvY2syKTsKICBpbnQgKCphY2NlcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg
c29ja2V0ICpuZXdzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKICBp
bnQgKCpnZXRuYW1lKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRk
ciwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdXNvY2thZGRyX2xlbiwgaW50IHBlZXIp
OwogIHVuc2lnbmVkIGludCAoKnBvbGwpIChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tl
dCAqc29jaywgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICp3YWl0KTsKICBpbnQgKCppb2N0bCkg
KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGFyZyk7CiAgaW50ICgqbGlzdGVuKSAoc3RydWN0IHNvY2tl
dCAqc29jaywgaW50IGxlbik7CiAgaW50ICgqc2h1dGRvd24pIChzdHJ1Y3Qgc29ja2V0ICpzb2Nr
LCBpbnQgZmxhZ3MpOwogIGludCAoKnNldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBp
bnQgbGV2ZWwsIGludCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0
dmFsLCBpbnQgb3B0bGVuKTsKICBpbnQgKCpnZXRzb2Nrb3B0KSAoc3RydWN0IHNvY2tldCAqc29j
aywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
Km9wdHZhbCwgaW50ICpvcHRsZW4pOwogIGludCAoKnNlbmRtc2cpIChzdHJ1Y3Qgc29ja2V0ICpz
b2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxfbGVuLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAq
c2NtKTsKICBpbnQgKCpyZWN2bXNnKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hk
ciAqbSwgaW50IHRvdGFsX2xlbiwgaW50IGZsYWdzLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsK
ICBpbnQgKCptbWFwKSAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0
cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSk7CiAgc3NpemVfdCAoKnNlbmRwYWdlKSAoc3RydWN0
IHNvY2tldCAqc29jaywgc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBvZmZzZXQsIHNpemVfdCBzaXpl
LCBpbnQgZmxhZ3MpOwp9OwoKc3RydWN0IG5ldF9wcm90b19mYW1pbHkKewogICAgICAgIGludCBm
YW1pbHk7CiAgICAgICAgaW50ICgqY3JlYXRlKShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJv
dG9jb2wpOwoKCiAgICAgICAgc2hvcnQgYXV0aGVudGljYXRpb247CiAgICAgICAgc2hvcnQgZW5j
cnlwdGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0X25ldDsKfTsKCnN0cnVjdCBuZXRfcHJvdG8K
ewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdm9pZCAoKmluaXRfZnVuYykoc3Ry
dWN0IG5ldF9wcm90byAqKTsKfTsKCmV4dGVybiBpbnQgc29ja193YWtlX2FzeW5jKHN0cnVjdCBz
b2NrZXQgKnNrLCBpbnQgaG93LCBpbnQgYmFuZCk7CmV4dGVybiBpbnQgc29ja19yZWdpc3Rlcihz
dHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseSAqZmFtKTsKZXh0ZXJuIGludCBzb2NrX3VucmVnaXN0ZXIo
aW50IGZhbWlseSk7CmV4dGVybiBzdHJ1Y3Qgc29ja2V0ICpzb2NrX2FsbG9jKHZvaWQpOwpleHRl
cm4gaW50IHNvY2tfY3JlYXRlKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG8sIHN0cnVj
dCBzb2NrZXQgKiopOwpleHRlcm4gdm9pZCBzb2NrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqKTsK
ZXh0ZXJuIGludCBzb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICpt
LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBzb2NrX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqLCBzdHJ1
Y3QgbXNnaGRyICptLCBpbnQgbGVuLCBpbnQgZmxhZ3MpOwpleHRlcm4gaW50IHNvY2tfcmVhZHZf
d3JpdGV2KGludCB0eXBlLCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGlvdmVjICog
aW92LCBsb25nIGNvdW50LCBsb25nIHNpemUpOwoKZXh0ZXJuIGludCBuZXRfcmF0ZWxpbWl0KHZv
aWQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBuZXRfcmFuZG9tKHZvaWQpOwpleHRlcm4gdm9pZCBu
ZXRfc3JhbmRvbSh1bnNpZ25lZCBsb25nKTsKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L2tkZXZfdC5oIiAxCiMgNjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2tkZXZfdC5oIgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGtkZXZfdDsKIyA3NiAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgva2Rldl90LmgiCmV4dGVybiBjb25zdCBjaGFyICog
a2Rldm5hbWUoa2Rldl90KTsKIyA5MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgva2Rldl90LmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGtkZXZfdF90b19ucihrZGV2
X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVkIGludCkgKChkZXYpID4+IDgpKTw8
OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCA4KSAtIDEpKSk7Cn0KCnN0YXRp
YyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7CiAgICAgICAgaW50IG1ham9yLCBt
aW5vcjsKIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5o
IgogICAgICAgIG1ham9yID0gKGRldiA+PiA4KTsKICAgICAgICBtaW5vciA9IChkZXYgJiAweGZm
KTsKCiAgICAgICAgcmV0dXJuICgoKG1ham9yKSA8PCA4KSB8IChtaW5vcikpOwp9CiMgMTcgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pb2N0bC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL2lvY3RsLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9pb2N0bC5oIiAyCiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvZGNhY2hlLmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2FzbS9hdG9taWMuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20v
YXRvbWljLmgiCnR5cGVkZWYgc3RydWN0IHsgdm9sYXRpbGUgaW50IGNvdW50ZXI7IH0gYXRvbWlj
X3Q7CiMgNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3Rh
dGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfYWRkKGludCBpLCBhdG9taWNfdCAqdikKewogICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgImFkZGwgJTEsJTAi
CiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoiaXIi
IChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0KIyA2OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19zdWIoaW50
IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
ICAgICAgICAiIiAic3VibCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVy
KQogICAgICAgICAgICAgICAgOiJpciIgKGkpLCAibSIgKHYtPmNvdW50ZXIpKTsKfQojIDg3ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGlu
ZV9fIGludCBhdG9taWNfc3ViX2FuZF90ZXN0KGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAg
IHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
ICAgICAgICAiIiAic3VibCAlMiwlMDsgc2V0ZSAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2
LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+
Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0KIyAxMDUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9p
ZCBhdG9taWNfaW5jKGF0b21pY190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgICAgICAgICAiIiAiaW5jbCAlMCIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5j
b3VudGVyKQogICAgICAgICAgICAgICAgOiJtIiAodi0+Y291bnRlcikpOwp9CiMgMTIwICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgYXRvbWljX2RlYyhhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICAgICAgICAgIiIgImRlY2wgJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAo
di0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpKTsKfQojIDEzNyAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxp
bmVfXyBpbnQgYXRvbWljX2RlY19hbmRfdGVzdChhdG9taWNfdCAqdikKewogICAgICAgIHVuc2ln
bmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAg
ICAiIiAiZGVjbCAlMDsgc2V0ZSAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVy
KSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6Im0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnki
KTsKICAgICAgICByZXR1cm4gYyAhPSAwOwp9CiMgMTU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfaW5jX2Fu
ZF90ZXN0KGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJpbmNsICUwOyBzZXRlICUx
IgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAg
ICAgICAgIDoibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBjICE9
IDA7Cn0KIyAxNzggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIK
c3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190
ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygKICAgICAgICAgICAgICAgICIiICJhZGRsICUyLCUwOyBzZXRzICUxIgogICAgICAgICAg
ICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAgICAgICAgIDoiaXIi
IChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYzsKfQoj
IDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbW91bnQuaCIgMQojIDE5ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tb3VudC5oIgpzdHJ1Y3QgdmZzbW91bnQK
ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2hhc2g7CiAgICAgICAgc3RydWN0IHZmc21v
dW50ICptbnRfcGFyZW50OwogICAgICAgIHN0cnVjdCBkZW50cnkgKm1udF9tb3VudHBvaW50Owog
ICAgICAgIHN0cnVjdCBkZW50cnkgKm1udF9yb290OwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9j
ayAqbW50X3NiOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X21vdW50czsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIG1udF9jaGlsZDsKICAgICAgICBhdG9taWNfdCBtbnRfY291bnQ7CiAg
ICAgICAgaW50IG1udF9mbGFnczsKICAgICAgICBjaGFyICptbnRfZGV2bmFtZTsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIG1udF9saXN0Owp9OwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgdmZzbW91
bnQgKm1udGdldChzdHJ1Y3QgdmZzbW91bnQgKm1udCkKewogICAgICAgIGlmIChtbnQpCiAgICAg
ICAgICAgICAgICBhdG9taWNfaW5jKCZtbnQtPm1udF9jb3VudCk7CiAgICAgICAgcmV0dXJuIG1u
dDsKfQoKZXh0ZXJuIHZvaWQgX19tbnRwdXQoc3RydWN0IHZmc21vdW50ICptbnQpOwoKc3RhdGlj
IGlubGluZSB2b2lkIG1udHB1dChzdHJ1Y3QgdmZzbW91bnQgKm1udCkKewogICAgICAgIGlmICht
bnQpIHsKICAgICAgICAgICAgICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZtbnQtPm1udF9j
b3VudCkpCiAgICAgICAgICAgICAgICAgICAgICAgIF9fbW50cHV0KG1udCk7CiAgICAgICAgfQp9
CiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDIKIyAy
NSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0cnVjdCBx
c3RyIHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICogbmFtZTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBoYXNoOwp9OwoKc3RydWN0IGRlbnRyeV9z
dGF0X3QgewogICAgICAgIGludCBucl9kZW50cnk7CiAgICAgICAgaW50IG5yX3VudXNlZDsKICAg
ICAgICBpbnQgYWdlX2xpbWl0OwogICAgICAgIGludCB3YW50X3BhZ2VzOwogICAgICAgIGludCBk
dW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRlbnRyeV9zdGF0OwoKCgoK
CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIHBhcnRpYWxfbmFtZV9oYXNoKHVuc2ln
bmVkIGxvbmcgYywgdW5zaWduZWQgbG9uZyBwcmV2aGFzaCkKewogICAgICAgIHJldHVybiAocHJl
dmhhc2ggKyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9CgoKc3RhdGljIF9faW5saW5lX18g
dW5zaWduZWQgbG9uZyBlbmRfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgaGFzaCkKewogICAgICAg
IHJldHVybiAodW5zaWduZWQgaW50KSBoYXNoOwp9CgoKc3RhdGljIF9faW5saW5lX18gdW5zaWdu
ZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lLCB1bnNpZ25l
ZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBoYXNoID0gMDsKICAgICAgICB3aGls
ZSAobGVuLS0pCiAgICAgICAgICAgICAgICBoYXNoID0gcGFydGlhbF9uYW1lX2hhc2goKm5hbWUr
KywgaGFzaCk7CiAgICAgICAgcmV0dXJuIGVuZF9uYW1lX2hhc2goaGFzaCk7Cn0KCgoKc3RydWN0
IGRlbnRyeSB7CiAgICAgICAgYXRvbWljX3QgZF9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQg
ZF9mbGFnczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBkX2lub2RlOwogICAgICAgIHN0cnVjdCBk
ZW50cnkgKiBkX3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfaGFzaDsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGRfbHJ1OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9jaGls
ZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfc3ViZGlyczsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIGRfYWxpYXM7CiAgICAgICAgaW50IGRfbW91bnRlZDsKICAgICAgICBzdHJ1Y3QgcXN0
ciBkX25hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3RpbWU7CiAgICAgICAgc3RydWN0IGRl
bnRyeV9vcGVyYXRpb25zICpkX29wOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqIGRfc2I7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3Zmc19mbGFnczsKICAgICAgICB2b2lkICogZF9mc2Rh
dGE7CiAgICAgICAgdW5zaWduZWQgY2hhciBkX2luYW1lWzE2XTsKfTsKCnN0cnVjdCBkZW50cnlf
b3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqZF9yZXZhbGlkYXRlKShzdHJ1Y3QgZGVudHJ5ICos
IGludCk7CiAgICAgICAgaW50ICgqZF9oYXNoKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0
ciAqKTsKICAgICAgICBpbnQgKCpkX2NvbXBhcmUpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBx
c3RyICosIHN0cnVjdCBxc3RyICopOwogICAgICAgIGludCAoKmRfZGVsZXRlKShzdHJ1Y3QgZGVu
dHJ5ICopOwogICAgICAgIHZvaWQgKCpkX3JlbGVhc2UpKHN0cnVjdCBkZW50cnkgKik7CiAgICAg
ICAgdm9pZCAoKmRfaXB1dCkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7Cn07CiMg
MTI4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKZXh0ZXJu
IHNwaW5sb2NrX3QgZGNhY2hlX2xvY2s7CiMgMTQ3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2Ryb3Aoc3RydWN0
IGRlbnRyeSAqIGRlbnRyeSkKewogICAgICAgICh2b2lkKSgmZGNhY2hlX2xvY2spOwogICAgICAg
IGxpc3RfZGVsKCZkZW50cnktPmRfaGFzaCk7CiAgICAgICAgZG8geyAoJmRlbnRyeS0+ZF9oYXNo
KS0+bmV4dCA9ICgmZGVudHJ5LT5kX2hhc2gpOyAoJmRlbnRyeS0+ZF9oYXNoKS0+cHJldiA9ICgm
ZGVudHJ5LT5kX2hhc2gpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7Cn0K
CnN0YXRpYyBfX2lubGluZV9fIGludCBkbmFtZV9leHRlcm5hbChzdHJ1Y3QgZGVudHJ5ICpkKQp7
CiAgICAgICAgcmV0dXJuIGQtPmRfbmFtZS5uYW1lICE9IGQtPmRfaW5hbWU7Cn0KCgoKCmV4dGVy
biB2b2lkIGRfaW5zdGFudGlhdGUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4
dGVybiB2b2lkIGRfZGVsZXRlKHN0cnVjdCBkZW50cnkgKik7CgoKZXh0ZXJuIHN0cnVjdCBkZW50
cnkgKiBkX2FsbG9jKHN0cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7CmV4dGVy
biB2b2lkIHNocmlua19kY2FjaGVfc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gdm9p
ZCBzaHJpbmtfZGNhY2hlX3BhcmVudChzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IGRfaW52
YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICopOwoKCnN0cnVjdCB6b25lX3N0cnVjdDsKCmV4dGVybiBp
bnQgc2hyaW5rX2RjYWNoZV9tZW1vcnkoaW50LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBw
cnVuZV9kY2FjaGUoaW50KTsKCgpleHRlcm4gaW50IHNocmlua19pY2FjaGVfbWVtb3J5KGludCwg
aW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVfaWNhY2hlKGludCk7CgoKZXh0ZXJuIGludCBzaHJpbmtf
ZHFjYWNoZV9tZW1vcnkoaW50LCB1bnNpZ25lZCBpbnQpOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5
ICogZF9hbGxvY19yb290KHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gdm9pZCBkX2dlbm9jaWRl
KHN0cnVjdCBkZW50cnkgKik7CgpleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9maW5kX2FsaWFzKHN0
cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9wcnVuZV9hbGlhc2VzKHN0cnVjdCBpbm9kZSAq
KTsKCgpleHRlcm4gaW50IGhhdmVfc3VibW91bnRzKHN0cnVjdCBkZW50cnkgKik7CgoKCgpleHRl
cm4gdm9pZCBkX3JlaGFzaChzdHJ1Y3QgZGVudHJ5ICopOwojIDIxMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgZF9h
ZGQoc3RydWN0IGRlbnRyeSAqIGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSkKewogICAgICAg
IGRfaW5zdGFudGlhdGUoZW50cnksIGlub2RlKTsKICAgICAgICBkX3JlaGFzaChlbnRyeSk7Cn0K
CgpleHRlcm4gdm9pZCBkX21vdmUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoK
CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9sb29rdXAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg
cXN0ciAqKTsKCgpleHRlcm4gaW50IGRfdmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg
ZGVudHJ5ICopOwoKZXh0ZXJuIGNoYXIgKiBfX2RfcGF0aChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj
dCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICosCiAgICAgICAgc3RydWN0IHZmc21vdW50ICos
IGNoYXIgKiwgaW50KTsKIyAyNDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3QgZGVudHJ5ICogZGdldChzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBpZiAoZGVudHJ5KSB7CiAgICAgICAgICAgICAgICBp
ZiAoISgoJmRlbnRyeS0+ZF9jb3VudCktPmNvdW50ZXIpKQogICAgICAgICAgICAgICAgICAgICAg
ICBfX291dF9vZl9saW5lX2J1ZygyNDgpOwogICAgICAgICAgICAgICAgYXRvbWljX2luYygmZGVu
dHJ5LT5kX2NvdW50KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJu
IHN0cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZChzdHJ1Y3QgZGVudHJ5ICopOwojIDI2MyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGlu
ZV9fIGludCBkX3VuaGFzaGVkKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVy
biBsaXN0X2VtcHR5KCZkZW50cnktPmRfaGFzaCk7Cn0KCmV4dGVybiB2b2lkIGRwdXQoc3RydWN0
IGRlbnRyeSAqKTsKCnN0YXRpYyBfX2lubGluZV9fIGludCBkX21vdW50cG9pbnQoc3RydWN0IGRl
bnRyeSAqZGVudHJ5KQp7CiAgICAgICAgcmV0dXJuIGRlbnRyeS0+ZF9tb3VudGVkOwp9CgpleHRl
cm4gc3RydWN0IHZmc21vdW50ICpsb29rdXBfbW50KHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3Qg
ZGVudHJ5ICopOwojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoK
CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3RhdC5oIiAxCgoKCnN0
cnVjdCBfX29sZF9rZXJuZWxfc3RhdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2Owog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9t
b2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHN0X3VpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210aW1lOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfY3RpbWU7Cn07CgpzdHJ1Y3Qgc3RhdCB7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFkMTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9tb2Rl
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHN0X3VpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzdF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxrc2l6ZTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHN0X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0
aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RfbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAg
ICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkNDsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51
c2VkNTsKfTsKCgoKCnN0cnVjdCBzdGF0NjQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2Rl
djsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9fcGFkMFsxMF07CgoKICAgICAgICB1bnNpZ25lZCBs
b25nIF9fc3RfaW5vOwoKICAgICAgICB1bnNpZ25lZCBpbnQgc3RfbW9kZTsKICAgICAgICB1bnNp
Z25lZCBpbnQgc3Rfbmxpbms7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfdWlkOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc3RfZ2lkOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2Owog
ICAgICAgIHVuc2lnbmVkIGNoYXIgX19wYWQzWzEwXTsKCiAgICAgICAgbG9uZyBsb25nIHN0X3Np
emU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwoKICAgICAgICB1bnNpZ25lZCBs
b25nIHN0X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNDsKCiAgICAgICAgdW5z
aWduZWQgbG9uZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNTsKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNjsK
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9f
cGFkNzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0X2lubzsKfTsKIyA3ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zdGF0LmgiIDIKIyAyMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCmV4dGVybiBjaGFyICogX19fc3RydG9rOwpleHRlcm4g
Y2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICog
c3RydG9rKGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cnNlcChjaGFyICoq
LGNvbnN0IGNoYXIgKik7CmV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3Ryc3BuKGNvbnN0IGNoYXIg
Kixjb25zdCBjaGFyICopOwoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
YXNtL3N0cmluZy5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9z
dHJpbmcuaCIKc3RhdGljIGlubGluZSBjaGFyICogc3RyY3B5KGNoYXIgKiBkZXN0LGNvbnN0IGNo
YXIgKnNyYykKewppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
IjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwl
JWFsXG5cdCIKICAgICAgICAiam5lIDFiIgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0mRCIgKGQx
KSwgIj0mYSIgKGQyKQogICAgICAgIDoiMCIgKHNyYyksIjEiIChkZXN0KSA6ICJtZW1vcnkiKTsK
cmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJuY3B5KGNoYXIgKiBkZXN0
LGNvbnN0IGNoYXIgKnNyYyxzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2Fz
bV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGRlY2wgJTJcblx0IgogICAgICAgICJqcyAy
ZlxuXHQiCiAgICAgICAgImxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0
ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJyZXBcblx0
IgogICAgICAgICJzdG9zYlxuIgogICAgICAgICIyOiIKICAgICAgICA6ICI9JlMiIChkMCksICI9
JkQiIChkMSksICI9JmMiIChkMiksICI9JmEiIChkMykKICAgICAgICA6IjAiIChzcmMpLCIxIiAo
ZGVzdCksIjIiIChjb3VudCkgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlu
bGluZSBjaGFyICogc3RyY2F0KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKiBzcmMpCnsKaW50IGQw
LCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0Igog
ICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFcbiIKICAgICAgICAiMTpcdGxvZHNi
XG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0Igog
ICAgICAgICJqbmUgMWIiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZhIiAo
ZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyksICIxIiAoZGVzdCksICIyIiAoMCks
ICIzIiAoMHhmZmZmZmZmZik6Im1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxp
bmUgY2hhciAqIHN0cm5jYXQoY2hhciAqIGRlc3QsY29uc3QgY2hhciAqIHNyYyxzaXplX3QgY291
bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAi
cmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFcblx0IgogICAg
ICAgICJtb3ZsICU4LCUzXG4iCiAgICAgICAgIjE6XHRkZWNsICUzXG5cdCIKICAgICAgICAianMg
MmZcblx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAi
dGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG4iCiAgICAgICAgIjI6XHR4b3Js
ICUyLCUyXG5cdCIKICAgICAgICAic3Rvc2IiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAo
ZDEpLCAiPSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyksIjEiIChkZXN0
KSwiMiIgKDApLCIzIiAoMHhmZmZmZmZmZiksICJnIiAoY291bnQpCiAgICAgICAgOiAibWVtb3J5
Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBpbnQgc3RyY21wKGNvbnN0IGNoYXIg
KiBjcyxjb25zdCBjaGFyICogY3QpCnsKaW50IGQwLCBkMTsKcmVnaXN0ZXIgaW50IF9fcmVzOwpf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAic2Nh
c2Jcblx0IgogICAgICAgICJqbmUgMmZcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0
IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJ4b3JsICUlZWF4LCUlZWF4XG5cdCIKICAg
ICAgICAiam1wIDNmXG4iCiAgICAgICAgIjI6XHRzYmJsICUlZWF4LCUlZWF4XG5cdCIKICAgICAg
ICAib3JiICQxLCUlYWxcbiIKICAgICAgICAiMzoiCiAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0m
UyIgKGQwKSwgIj0mRCIgKGQxKQogICAgICAgICAgICAgICAgICAgICA6IjEiIChjcyksIjIiIChj
dCkpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBzdHJuY21wKGNvbnN0IGNo
YXIgKiBjcyxjb25zdCBjaGFyICogY3Qsc2l6ZV90IGNvdW50KQp7CnJlZ2lzdGVyIGludCBfX3Jl
czsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICIxOlx0ZGVj
bCAlM1xuXHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAibG9kc2Jcblx0IgogICAgICAg
ICJzY2FzYlxuXHQiCiAgICAgICAgImpuZSAzZlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVh
bFxuXHQiCiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIyOlx0eG9ybCAlJWVheCwlJWVheFxu
XHQiCiAgICAgICAgImptcCA0ZlxuIgogICAgICAgICIzOlx0c2JibCAlJWVheCwlJWVheFxuXHQi
CiAgICAgICAgIm9yYiAkMSwlJWFsXG4iCiAgICAgICAgIjQ6IgogICAgICAgICAgICAgICAgICAg
ICA6Ij1hIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZjIiAoZDIpCiAgICAg
ICAgICAgICAgICAgICAgIDoiMSIgKGNzKSwiMiIgKGN0KSwiMyIgKGNvdW50KSk7CnJldHVybiBf
X3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNocihjb25zdCBjaGFyICogcywgaW50
IGMpCnsKaW50IGQwOwpyZWdpc3RlciBjaGFyICogX19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9f
KAogICAgICAgICJtb3ZiICUlYWwsJSVhaFxuIgogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAg
ICAgICJjbXBiICUlYWgsJSVhbFxuXHQiCiAgICAgICAgImplIDJmXG5cdCIKICAgICAgICAidGVz
dGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIKICAgICAgICAibW92bCAkMSwl
MVxuIgogICAgICAgICIyOlx0bW92bCAlMSwlMFxuXHQiCiAgICAgICAgImRlY2wgJTAiCiAgICAg
ICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSA6ICIxIiAocyksIjAiIChjKSk7CnJldHVybiBf
X3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cnJjaHIoY29uc3QgY2hhciAqIHMsIGlu
dCBjKQp7CmludCBkMCwgZDE7CnJlZ2lzdGVyIGNoYXIgKiBfX3JlczsKX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAgICAgICAgIm1vdmIgJSVhbCwlJWFoXG4iCiAgICAgICAgIjE6XHRsb2RzYlxuXHQi
CiAgICAgICAgImNtcGIgJSVhaCwlJWFsXG5cdCIKICAgICAgICAiam5lIDJmXG5cdCIKICAgICAg
ICAibGVhbCAtMSglJWVzaSksJTBcbiIKICAgICAgICAiMjpcdHRlc3RiICUlYWwsJSVhbFxuXHQi
CiAgICAgICAgImpuZSAxYiIKICAgICAgICA6Ij1nIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZh
IiAoZDEpIDoiMCIgKDApLCIxIiAocyksIjIiIChjKSk7CnJldHVybiBfX3JlczsKfQoKCnN0YXRp
YyBpbmxpbmUgc2l6ZV90IHN0cmxlbihjb25zdCBjaGFyICogcykKewppbnQgZDA7CnJlZ2lzdGVy
IGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAg
ICAgICAic2Nhc2Jcblx0IgogICAgICAgICJub3RsICUwXG5cdCIKICAgICAgICAiZGVjbCAlMCIK
ICAgICAgICA6Ij1jIiAoX19yZXMpLCAiPSZEIiAoZDApIDoiMSIgKHMpLCJhIiAoMCksICIwIiAo
MHhmZmZmZmZmZikpOwpyZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fbWVt
Y3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBuKQp7CmludCBkMCwgZDEs
IGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwIDsgbW92c2xcblx0IgogICAg
ICAgICJ0ZXN0YiAkMiwlYjRcblx0IgogICAgICAgICJqZSAxZlxuXHQiCiAgICAgICAgIm1vdnN3
XG4iCiAgICAgICAgIjE6XHR0ZXN0YiAkMSwlYjRcblx0IgogICAgICAgICJqZSAyZlxuXHQiCiAg
ICAgICAgIm1vdnNiXG4iCiAgICAgICAgIjI6IgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mRCIg
KGQxKSwgIj0mUyIgKGQyKQogICAgICAgIDoiMCIgKG4vNCksICJxIiAobiksIjEiICgobG9uZykg
dG8pLCIyIiAoKGxvbmcpIGZyb20pCiAgICAgICAgOiAibWVtb3J5Iik7CnJldHVybiAodG8pOwp9
CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9tZW1jcHkodm9pZCAqIHRvLCBj
b25zdCB2b2lkICogZnJvbSwgc2l6ZV90IG4pCnsKICAgICAgICBzd2l0Y2ggKG4pIHsKICAgICAg
ICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAg
ICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGNo
YXIgKil0byA9ICooY29uc3QgdW5zaWduZWQgY2hhciAqKWZyb207CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAg
ICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBzaG9ydCAq
KWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAg
IGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXRvID0g
Kihjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICoo
MisodW5zaWduZWQgY2hhciAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgY2hhciAqKWZyb20p
OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNl
IDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25z
dCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRv
OwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2ln
bmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAg
ICAgICAgICAgICAgICooMisodW5zaWduZWQgc2hvcnQgKil0bykgPSAqKDIrKGNvbnN0IHVuc2ln
bmVkIHNob3J0ICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAg
ICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBs
b25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAg
ICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxv
bmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAg
ICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICop
dG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAg
ICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilm
cm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBsb25nICopdG8pID0g
KigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAg
ICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsK
ICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhj
b25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMiso
dW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwog
ICAgICAgICAgICAgICAgICAgICAgICAqKDMrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDMrKGNv
bnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRvOwogICAgICAgICAgICAgICAgY2FzZSAyMDoKICAgICAgICAgICAgICAgICAgICAgICAgKih1
bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAg
ICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVu
c2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25l
ZCBsb25nICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICooMysodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMysoY29uc3QgdW5z
aWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDQrKHVuc2lnbmVk
IGxvbmcgKil0bykgPSAqKDQrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgIH0KCgoKCgoKCnsKICAgICAgICBpbnQg
ZDAsIGQxLCBkMjsKICAgICAgICBzd2l0Y2ggKG4gJSA0KSB7CiAgICAgICAgICAgICAgICBjYXNl
IDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICIiIDogIj0mYyIgKGQwKSwg
Ij0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0byksIjIiICgo
bG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNl
IDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92c2IiIDogIj0m
YyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0
byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgICAg
ICAgICBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92
c3ciIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIg
KChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAg
ICAgICAgICAgICAgICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNs
IiAiXG5cdG1vdnN3XG5cdG1vdnNiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChk
MikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9y
eSIpOzsgcmV0dXJuIHRvOwogICAgICAgIH0KfQoKCn0KIyAzMzUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKZXh0ZXJuIHZvaWQgX19zdHJ1Y3RfY3B5X2J1ZyAo
dm9pZCk7CiMgMzQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3RyaW5nLmgi
CnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbW1vdmUodm9pZCAqIGRlc3QsY29uc3Qgdm9pZCAqIHNy
Yywgc2l6ZV90IG4pCnsKaW50IGQwLCBkMSwgZDI7CmlmIChkZXN0PHNyYykKX19hc21fXyBfX3Zv
bGF0aWxlX18oCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgIm1vdnNiIgogICAgICAgIDogIj0m
YyIgKGQwKSwgIj0mUyIgKGQxKSwgIj0mRCIgKGQyKQogICAgICAgIDoiMCIgKG4pLCIxIiAoc3Jj
KSwiMiIgKGRlc3QpCiAgICAgICAgOiAibWVtb3J5Iik7CmVsc2UKX19hc21fXyBfX3ZvbGF0aWxl
X18oCiAgICAgICAgInN0ZFxuXHQiCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgIm1vdnNiXG5c
dCIKICAgICAgICAiY2xkIgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mUyIgKGQxKSwgIj0mRCIg
KGQyKQogICAgICAgIDoiMCIgKG4pLAogICAgICAgICAiMSIgKG4tMSsoY29uc3QgY2hhciAqKXNy
YyksCiAgICAgICAgICIyIiAobi0xKyhjaGFyICopZGVzdCkKICAgICAgICA6Im1lbW9yeSIpOwpy
ZXR1cm4gZGVzdDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkICogbWVtY2hyKGNvbnN0IHZvaWQg
KiBjcyxpbnQgYyxzaXplX3QgY291bnQpCnsKaW50IGQwOwpyZWdpc3RlciB2b2lkICogX19yZXM7
CmlmICghY291bnQpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwpfX2FzbV9fIF9fdm9sYXRp
bGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImpl
IDFmXG5cdCIKICAgICAgICAibW92bCAkMSwlMFxuIgogICAgICAgICIxOlx0ZGVjbCAlMCIKICAg
ICAgICA6Ij1EIiAoX19yZXMpLCAiPSZjIiAoZDApIDogImEiIChjKSwiMCIgKGNzKSwiMSIgKGNv
dW50KSk7CnJldHVybiBfX3JlczsKfQoKc3RhdGljIGlubGluZSB2b2lkICogX19tZW1zZXRfZ2Vu
ZXJpYyh2b2lkICogcywgY2hhciBjLHNpemVfdCBjb3VudCkKewppbnQgZDAsIGQxOwpfX2FzbV9f
IF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwXG5cdCIKICAgICAgICAic3Rvc2IiCiAgICAgICAg
OiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyksIjEiIChzKSwiMCIgKGNv
dW50KQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiBzOwp9CiMgNDA4ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fY29u
c3RhbnRfY19tZW1zZXQodm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgYywgc2l6ZV90IGNvdW50KQp7
CmludCBkMCwgZDE7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXAgOyBzdG9zbFxu
XHQiCiAgICAgICAgInRlc3RiICQyLCViM1xuXHQiCiAgICAgICAgImplIDFmXG5cdCIKICAgICAg
ICAic3Rvc3dcbiIKICAgICAgICAiMTpcdHRlc3RiICQxLCViM1xuXHQiCiAgICAgICAgImplIDJm
XG5cdCIKICAgICAgICAic3Rvc2JcbiIKICAgICAgICAiMjoiCiAgICAgICAgOiAiPSZjIiAoZDAp
LCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyksICJxIiAoY291bnQpLCAiMCIgKGNvdW50LzQp
LCAiMSIgKChsb25nKSBzKQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiAocyk7Cn0KCgoKc3Rh
dGljIGlubGluZSBzaXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICogcywgc2l6ZV90IGNvdW50KQp7
CmludCBkMDsKcmVnaXN0ZXIgaW50IF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg
ICAibW92bCAlMiwlMFxuXHQiCiAgICAgICAgImptcCAyZlxuIgogICAgICAgICIxOlx0Y21wYiAk
MCwoJTApXG5cdCIKICAgICAgICAiamUgM2Zcblx0IgogICAgICAgICJpbmNsICUwXG4iCiAgICAg
ICAgIjI6XHRkZWNsICUxXG5cdCIKICAgICAgICAiY21wbCAkLTEsJTFcblx0IgogICAgICAgICJq
bmUgMWJcbiIKICAgICAgICAiMzpcdHN1YmwgJTIsJTAiCiAgICAgICAgOiI9YSIgKF9fcmVzKSwg
Ij0mZCIgKGQwKQogICAgICAgIDoiYyIgKHMpLCIxIiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9
CgoKCgpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIgKmNzLCBjb25zdCBjaGFyICpjdCk7
CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQo
dm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgcGF0dGVybiwgc2l6ZV90IGNvdW50KQp7CiAgICAgICAg
c3dpdGNoIChjb3VudCkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAg
ICAgICAgICAgKih1bnNpZ25lZCBjaGFyICopcyA9IHBhdHRlcm47CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAg
ICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAg
ICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAgICAgICAgICAgICAg
ICAgICAgICooMisodW5zaWduZWQgY2hhciAqKXMpID0gcGF0dGVybjsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAg
ICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXMgPSBwYXR0ZXJuOwogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gczsKICAgICAgICB9CgoKCgoKCgp7CiAgICAgICAgaW50IGQwLCBkMTsK
ICAgICAgICBzd2l0Y2ggKGNvdW50ICUgNCkgewogICAgICAgICAgICAgICAgY2FzZSAwOiBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiIiA6ICI9JmMiIChkMCksICI9JkQiIChk
MSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5
Iik7IHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVf
XyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3NiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSkgOiAi
YSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5Iik7IHJl
dHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJl
cCA7IHN0b3NsIiAiXG5cdHN0b3N3IiA6ICI9JmMiIChkMCksICI9JkQiIChkMSkgOiAiYSIgKHBh
dHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5Iik7IHJldHVybiBz
OwogICAgICAgICAgICAgICAgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18oICJyZXAgOyBz
dG9zbCIgIlxuXHRzdG9zd1xuXHRzdG9zYiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpIDogImEi
IChwYXR0ZXJuKSwiMCIgKGNvdW50LzQpLCIxIiAoKGxvbmcpIHMpIDogIm1lbW9yeSIpOyByZXR1
cm4gczsKICAgICAgICB9Cn0KCgp9CiMgNTE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbXNjYW4odm9pZCAqIGFkZHIs
IGludCBjLCBzaXplX3Qgc2l6ZSkKewogICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgICAg
IHJldHVybiBhZGRyOwogICAgICAgIF9fYXNtX18oInJlcG56OyBzY2FzYlxuXHQiCiAgICAgICAg
ICAgICAgICAiam56IDFmXG5cdCIKICAgICAgICAgICAgICAgICJkZWMgJSVlZGlcbiIKICAgICAg
ICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgIDogIj1EIiAoYWRkciksICI9YyIgKHNpemUp
CiAgICAgICAgICAgICAgICA6ICIwIiAoYWRkciksICIxIiAoc2l6ZSksICJhIiAoYykpOwogICAg
ICAgIHJldHVybiBhZGRyOwp9CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3N0cmluZy5oIiAyCiMgNDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3N0cmluZy5oIgpleHRlcm4gaW50IHN0cm5pY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
LCBfX2tlcm5lbF9zaXplX3QpOwojIDc3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9zdHJpbmcuaCIKZXh0ZXJuIGludCBfX2J1aWx0aW5fbWVtY21wKGNvbnN0IHZvaWQgKixj
b25zdCB2b2lkICosX19rZXJuZWxfc2l6ZV90KTsKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvYXNtL2JpdG9wcy5oIiAxCiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2Fz
bS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBuciwgdm9sYXRp
bGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAg
ICAgICAgICAgICJidHNsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxl
IGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDUzICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgX19zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBf
X2FzbV9fKAogICAgICAgICAgICAgICAgImJ0c2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1t
IiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikp
Owp9CiMgNzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3Rh
dGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRk
cikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0
cmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRy
KSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgOTAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2NoYW5n
ZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6
Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChu
cikpOwp9CiMgMTA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYml0b3BzLmgi
CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQg
KiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICIiCiAgICAgICAgICAgICAg
ICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2b2xhdGlsZSBsb25nICop
IGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyAxMjMgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRl
c3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGlu
dCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAg
ICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRi
aXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6Ikly
IiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAxNDMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18g
aW50IF9fdGVzdF9hbmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAg
ICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHNs
ICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0i
ICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7
CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDE2MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2xlYXJf
Yml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoK
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAgICAgICAgICAgICJidHJsICUy
LCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgo
Kih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSA6ICJt
ZW1vcnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTgyICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3Rf
YW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50
IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHJsICUyLCUxXG5c
dHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xh
dGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7CiAgICAgICAg
cmV0dXJuIG9sZGJpdDsKfQoKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3RfYW5kX2NoYW5n
ZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7
CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wgJTIs
JTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgq
KHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1l
bW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5k
X2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBv
bGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAg
ImJ0Y2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQp
LCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAo
bnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMzMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50
IGNvbnN0YW50X3Rlc3RfYml0KGludCBuciwgY29uc3Qgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsK
ICAgICAgICByZXR1cm4gKCgxVUwgPDwgKG5yICYgMzEpKSAmICgoKGNvbnN0IHZvbGF0aWxlIHVu
c2lnbmVkIGludCAqKSBhZGRyKVtuciA+PiA1XSkpICE9IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9f
IGludCB2YXJpYWJsZV90ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAg
ICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
ICAgICAgICAiYnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAo
b2xkYml0KQogICAgICAgICAgICAgICAgOiJtIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSks
IklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjYyICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5k
X2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBzaXplKQp7CiAgICAgICAgaW50
IGQwLCBkMSwgZDI7CiAgICAgICAgaW50IHJlczsKCiAgICAgICAgaWYgKCFzaXplKQogICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAg
ICAgICAgICAgIm1vdmwgJC0xLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUlZWR4
LCUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICJyZXBlOyBzY2FzbFxuXHQiCiAgICAgICAgICAg
ICAgICAiamUgMWZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgLTQoJSVlZGkpLCUlZWF4XG5c
dCIKICAgICAgICAgICAgICAgICJzdWJsICQ0LCUlZWRpXG5cdCIKICAgICAgICAgICAgICAgICJi
c2ZsICUlZWF4LCUlZWR4XG4iCiAgICAgICAgICAgICAgICAiMTpcdHN1YmwgJSVlYngsJSVlZGlc
blx0IgogICAgICAgICAgICAgICAgInNobGwgJDMsJSVlZGlcblx0IgogICAgICAgICAgICAgICAg
ImFkZGwgJSVlZGksJSVlZHgiCiAgICAgICAgICAgICAgICA6Ij1kIiAocmVzKSwgIj0mYyIgKGQw
KSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKQogICAgICAgICAgICAgICAgOiIxIiAoKHNpemUgKyAz
MSkgPj4gNSksICIyIiAoYWRkciksICJiIiAoYWRkcikpOwogICAgICAgIHJldHVybiByZXM7Cn0K
CgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5kX25leHRfemVyb19iaXQgKHZvaWQgKiBh
ZGRyLCBpbnQgc2l6ZSwgaW50IG9mZnNldCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgKiBwID0g
KCh1bnNpZ25lZCBsb25nICopIGFkZHIpICsgKG9mZnNldCA+PiA1KTsKICAgICAgICBpbnQgc2V0
ID0gMCwgYml0ID0gb2Zmc2V0ICYgMzEsIHJlczsKCiAgICAgICAgaWYgKGJpdCkgewoKCgogICAg
ICAgICAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAg
ICAgICJqbmUgMWZcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAibW92bCAkMzIsICUwXG4i
CiAgICAgICAgICAgICAgICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgICAgICAgICAgOiAi
PXIiIChzZXQpCiAgICAgICAgICAgICAgICAgICAgICAgIDogInIiICh+KCpwID4+IGJpdCkpKTsK
ICAgICAgICAgICAgICAgIGlmIChzZXQgPCAoMzIgLSBiaXQpKQogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2V0ICsgb2Zmc2V0OwogICAgICAgICAgICAgICAgc2V0ID0gMzIgLSBiaXQ7
CiAgICAgICAgICAgICAgICBwKys7CiAgICAgICAgfQoKCgogICAgICAgIHJlcyA9IGZpbmRfZmly
c3RfemVyb19iaXQgKHAsIHNpemUgLSAzMiAqIChwIC0gKHVuc2lnbmVkIGxvbmcgKikgYWRkcikp
OwogICAgICAgIHJldHVybiAob2Zmc2V0ICsgc2V0ICsgcmVzKTsKfQoKCgoKCgoKc3RhdGljIF9f
aW5saW5lX18gdW5zaWduZWQgbG9uZyBmZnoodW5zaWduZWQgbG9uZyB3b3JkKQp7CiAgICAgICAg
X19hc21fXygiYnNmbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiICh3b3JkKQogICAgICAg
ICAgICAgICAgOiJyIiAofndvcmQpKTsKICAgICAgICByZXR1cm4gd29yZDsKfQojIDM0MyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVf
XyBpbnQgZmZzKGludCB4KQp7CiAgICAgICAgaW50IHI7CgogICAgICAgIF9fYXNtX18oImJzZmwg
JTEsJTBcblx0IgogICAgICAgICAgICAgICAgImpueiAxZlxuXHQiCiAgICAgICAgICAgICAgICAi
bW92bCAkLTEsJTBcbiIKICAgICAgICAgICAgICAgICIxOiIgOiAiPXIiIChyKSA6ICJybSIgKHgp
KTsKICAgICAgICByZXR1cm4gcisxOwp9CiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKCnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA1MCAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGZpbGVzX3N0YXRfc3Ry
dWN0IHsKICAgICAgICBpbnQgbnJfZmlsZXM7CiAgICAgICAgaW50IG5yX2ZyZWVfZmlsZXM7CiAg
ICAgICAgaW50IG1heF9maWxlczsKfTsKZXh0ZXJuIHN0cnVjdCBmaWxlc19zdGF0X3N0cnVjdCBm
aWxlc19zdGF0OwoKc3RydWN0IGlub2Rlc19zdGF0X3QgewogICAgICAgIGludCBucl9pbm9kZXM7
CiAgICAgICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgZHVtbXlbNV07Cn07CmV4dGVybiBz
dHJ1Y3QgaW5vZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKCmV4dGVybiBpbnQgbGVhc2VzX2VuYWJs
ZSwgZGlyX25vdGlmeV9lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CiMgMjAwICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMQojIDM5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vc2VtYXBob3JlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvYXNtL3N5c3RlbS5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9pbml0LmgiIDEKIyAxMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L2luaXQuaCIKdHlwZWRlZiBpbnQgKCpfX2luaXRfbW9kdWxlX2Z1bmNfdCkodm9pZCk7CnR5
cGVkZWYgdm9pZCAoKl9fY2xlYW51cF9tb2R1bGVfZnVuY190KSh2b2lkKTsKIyA3ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgvYml0b3BzLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvYml0b3BzLmgiCnN0YXRpYyBpbmxpbmUgaW50IGdlbmVyaWNf
ZmZzKGludCB4KQp7CiAgICAgICAgaW50IHIgPSAxOwoKICAgICAgICBpZiAoIXgpCiAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICBpZiAoISh4ICYgMHhmZmZmKSkgewogICAgICAgICAg
ICAgICAgeCA+Pj0gMTY7CiAgICAgICAgICAgICAgICByICs9IDE2OwogICAgICAgIH0KICAgICAg
ICBpZiAoISh4ICYgMHhmZikpIHsKICAgICAgICAgICAgICAgIHggPj49IDg7CiAgICAgICAgICAg
ICAgICByICs9IDg7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAweGYpKSB7CiAgICAgICAg
ICAgICAgICB4ID4+PSA0OwogICAgICAgICAgICAgICAgciArPSA0OwogICAgICAgIH0KICAgICAg
ICBpZiAoISh4ICYgMykpIHsKICAgICAgICAgICAgICAgIHggPj49IDI7CiAgICAgICAgICAgICAg
ICByICs9IDI7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAxKSkgewogICAgICAgICAgICAg
ICAgeCA+Pj0gMTsKICAgICAgICAgICAgICAgIHIgKz0gMTsKICAgICAgICB9CiAgICAgICAgcmV0
dXJuIHI7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2VpZ2h0
MzIodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0gKHcgJiAweDU1
NTU1NTU1KSArICgodyA+PiAxKSAmIDB4NTU1NTU1NTUpOwogICAgICAgIHJlcyA9IChyZXMgJiAw
eDMzMzMzMzMzKSArICgocmVzID4+IDIpICYgMHgzMzMzMzMzMyk7CiAgICAgICAgcmVzID0gKHJl
cyAmIDB4MEYwRjBGMEYpICsgKChyZXMgPj4gNCkgJiAweDBGMEYwRjBGKTsKICAgICAgICByZXMg
PSAocmVzICYgMHgwMEZGMDBGRikgKyAoKHJlcyA+PiA4KSAmIDB4MDBGRjAwRkYpOwogICAgICAg
IHJldHVybiAocmVzICYgMHgwMDAwRkZGRikgKyAoKHJlcyA+PiAxNikgJiAweDAwMDBGRkZGKTsK
fQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2VpZ2h0MTYodW5zaWduZWQg
aW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0gKHcgJiAweDU1NTUpICsgKCh3ID4+
IDEpICYgMHg1NTU1KTsKICAgICAgICByZXMgPSAocmVzICYgMHgzMzMzKSArICgocmVzID4+IDIp
ICYgMHgzMzMzKTsKICAgICAgICByZXMgPSAocmVzICYgMHgwRjBGKSArICgocmVzID4+IDQpICYg
MHgwRjBGKTsKICAgICAgICByZXR1cm4gKHJlcyAmIDB4MDBGRikgKyAoKHJlcyA+PiA4KSAmIDB4
MDBGRik7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVyaWNfaHdlaWdodDgodW5z
aWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0gKHcgJiAweDU1KSArICgo
dyA+PiAxKSAmIDB4NTUpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDMzKSArICgocmVzID4+IDIp
ICYgMHgzMyk7CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDBGKSArICgocmVzID4+IDQpICYgMHgw
Rik7Cn0KIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIK
CgoKc3RydWN0IHRhc2tfc3RydWN0OwpleHRlcm4gdm9pZCBfX3N3aXRjaF90byhzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCkgX19hdHRyaWJ1dGVfXygo
cmVncGFybSgzKSkpOwojIDY0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lz
dGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfZ2V0X2Jhc2UoY2hhciAqIGFkZHIp
CnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fYmFzZTsKICAgICAgICBfX2FzbV9fKCJtb3ZiICUz
LCUlZGhcblx0IgogICAgICAgICAgICAgICAgIm1vdmIgJTIsJSVkbFxuXHQiCiAgICAgICAgICAg
ICAgICAic2hsbCAkMTYsJSVlZHhcblx0IgogICAgICAgICAgICAgICAgIm1vdncgJTEsJSVkeCIK
ICAgICAgICAgICAgICAgIDoiPSZkIiAoX19iYXNlKQogICAgICAgICAgICAgICAgOiJtIiAoKigo
YWRkcikrMikpLAogICAgICAgICAgICAgICAgICJtIiAoKigoYWRkcikrNCkpLAogICAgICAgICAg
ICAgICAgICJtIiAoKigoYWRkcikrNykpKTsKICAgICAgICByZXR1cm4gX19iYXNlOwp9CiMgMTMx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgbG9uZyBnZXRfbGltaXQodW5zaWduZWQgbG9uZyBzZWdtZW50KQp7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBfX2xpbWl0OwogICAgICAgIF9fYXNtX18oImxzbGwgJTEsJTAiCiAg
ICAgICAgICAgICAgICA6Ij1yIiAoX19saW1pdCk6InIiIChzZWdtZW50KSk7CiAgICAgICAgcmV0
dXJuIF9fbGltaXQrMTsKfQoKCgoKCgoKc3RydWN0IF9feGNoZ19kdW1teSB7IHVuc2lnbmVkIGxv
bmcgYVsxMDBdOyB9OwojIDE2MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3N5
c3RlbS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXQgKHVuc2lnbmVkIGxvbmcgbG9u
ZyAqIHB0ciwKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsb3csIHVuc2lnbmVkIGludCBo
aWdoKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAogICAgICAgICAgICAgICAgIlxu
MTpcdCIKICAgICAgICAgICAgICAgICJtb3ZsICglMCksICUlZWF4XG5cdCIKICAgICAgICAgICAg
ICAgICJtb3ZsIDQoJTApLCAlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAibG9jayBjbXB4Y2hn
OGIgKCUwKVxuXHQiCiAgICAgICAgICAgICAgICAiam56IDFiIgogICAgICAgICAgICAgICAgOgog
ICAgICAgICAgICAgICAgOiAiRCIocHRyKSwKICAgICAgICAgICAgICAgICAgICAgICAgImIiKGxv
dyksCiAgICAgICAgICAgICAgICAgICAgICAgICJjIihoaWdoKQogICAgICAgICAgICAgICAgOiAi
YXgiLCJkeCIsIm1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXRfY29u
c3RhbnQgKHVuc2lnbmVkIGxvbmcgbG9uZyAqcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQp7CiAgICAg
ICAgX19zZXRfNjRiaXQocHRyLCh1bnNpZ25lZCBpbnQpKHZhbHVlKSwgKHVuc2lnbmVkIGludCko
KHZhbHVlKT4+MzJVTEwpKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXRfdmFy
ICh1bnNpZ25lZCBsb25nIGxvbmcgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyB2YWx1ZSkKewogICAgICAgIF9fc2V0XzY0Yml0KHB0ciwqKCgodW5zaWdu
ZWQgaW50KikmKHZhbHVlKSkrMCksICooKCh1bnNpZ25lZCBpbnQqKSYodmFsdWUpKSsxKSk7Cn0K
IyAyMDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZv
aWQgKiBwdHIsIGludCBzaXplKQp7CiAgICAgICAgc3dpdGNoIChzaXplKSB7CiAgICAgICAgICAg
ICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KCJ4Y2hnYiAlYjAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9cSIgKHgp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19k
dW1teSAqKShwdHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
IGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhj
aGd3ICV3MCwlMSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Ij1yIiAoeCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im0iICgqKChzdHJ1Y3QgX194Y2hnX2R1bW15
ICopKHB0cikpKSwgIjAiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoibWVt
b3J5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2Fz
ZSA0OgogICAgICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ2wg
JTAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9ciIgKHgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShw
dHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIp
OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJu
IHg7Cn0KIyAyNDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIK
c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fY21weGNoZyh2b2xhdGlsZSB2b2lkICpwdHIs
IHVuc2lnbmVkIGxvbmcgb2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbmV3LCBpbnQgc2l6ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJl
djsKICAgICAgICBzd2l0Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAg
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIiAiY21weGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAq
KShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoK
ICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiICJjbXB4Y2hndyAldzEsJTIi
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3Qg
X194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAg
ICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiIgImNt
cHhjaGdsICUxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEi
KHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAi
bSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJl
dHVybiBwcmV2OwogICAgICAgIH0KICAgICAgICByZXR1cm4gb2xkOwp9CiMgMzU1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnZvaWQgZGlzYWJsZV9obHQodm9p
ZCk7CnZvaWQgZW5hYmxlX2hsdCh2b2lkKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRtaV9icm9r
ZW47CmV4dGVybiBpbnQgaXNfc29ueV92YWlvX2xhcHRvcDsKIyA0MCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiCnN0cnVjdCByd19zZW1hcGhvcmU7CgoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9yd3NlbS5oIiAxCiMgNDYgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9yd3NlbS5oIgpzdHJ1Y3QgcndzZW1fd2FpdGVyOwoK
ZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgKnJ3c2VtX2Rvd25fcmVhZF9mYWlsZWQoc3RydWN0
IHJ3X3NlbWFwaG9yZSAqc2VtKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBz
dHJ1Y3Qgcndfc2VtYXBob3JlICpyd3NlbV9kb3duX3dyaXRlX2ZhaWxlZChzdHJ1Y3Qgcndfc2Vt
YXBob3JlICpzZW0pIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCBy
d19zZW1hcGhvcmUgKnJ3c2VtX3dha2Uoc3RydWN0IHJ3X3NlbWFwaG9yZSAqKSBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDMpKSk7CgoKCgpzdHJ1Y3Qgcndfc2VtYXBob3JlIHsKICAgICAgICBzaWdu
ZWQgbG9uZyBjb3VudDsKCgoKCgoKICAgICAgICBzcGlubG9ja190IHdhaXRfbG9jazsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRfbGlzdDsKCgoKfTsKIyA4NiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3J3c2Vt
KHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIHNlbS0+Y291bnQgPSAweDAwMDAw
MDAwOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBkbyB7ICgmc2VtLT53YWl0X2xp
c3QpLT5uZXh0ID0gKCZzZW0tPndhaXRfbGlzdCk7ICgmc2VtLT53YWl0X2xpc3QpLT5wcmV2ID0g
KCZzZW0tPndhaXRfbGlzdCk7IH0gd2hpbGUgKDApOwoKCgp9CgoKCgpzdGF0aWMgaW5saW5lIHZv
aWQgX19kb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgZG93bl9yZWFkXG5c
dCIKIiIgIiAgaW5jbCAgICAgICglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAganMgICAg
ICAgIDJmXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnN1
YnNlY3Rpb24gMVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic3lzaTg2IiAiXG5c
dCIgIi50ZXh0LmxvY2suIiAic3lzaTg2IiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAg
ICAgICAgIjI6XG5cdCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAg
ICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVlZHhcblx0IgogICAgICAgICAgICAgICAgIiAg
Y2FsbCAgICAgIHJ3c2VtX2Rvd25fcmVhZF9mYWlsZWRcblx0IgogICAgICAgICAgICAgICAgIiAg
cG9wbCAgICAgICUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxu
XHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAgICAgICAgICAgICIu
cHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRvd25fcmVhZFxuXHQiCiAg
ICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogImEiKHNl
bSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0aWMgaW5saW5l
IGludCBfX2Rvd25fcmVhZF90cnlsb2NrKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAg
ICAgIF9fczMyIHJlc3VsdCwgdG1wOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAg
ICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fZG93bl9yZWFkX3RyeWxvY2tcblx0IgogICAgICAg
ICAgICAgICAgIiAgbW92bCAgICAgICUwLCUxXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQi
CiAgICAgICAgICAgICAgICAiICBtb3ZsCSAgICAgJTEsJTJcblx0IgogICAgICAgICAgICAgICAg
IiAgYWRkbCAgICAgICUzLCUyXG5cdCIKICAgICAgICAgICAgICAgICIgIGpsZQkgICAgIDJmXG5c
dCIKIiIgIiAgY21weGNoZ2wgICUyLCUwXG5cdCIKICAgICAgICAgICAgICAgICIgIGpuegkgICAg
IDFiXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAiIyBlbmRp
bmcgX19kb3duX3JlYWRfdHJ5bG9ja1xuXHQiCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5j
b3VudCksICI9JmEiKHJlc3VsdCksICI9JnIiKHRtcCkKICAgICAgICAgICAgICAgIDogImkiKDB4
MDAwMDAwMDEpCiAgICAgICAgICAgICAgICA6ICJtZW1vcnkiLCAiY2MiKTsKICAgICAgICByZXR1
cm4gcmVzdWx0Pj0wID8gMSA6IDA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Rvd25fd3Jp
dGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgaW50IHRtcDsKCiAgICAgICAg
dG1wID0gKCgtMHgwMDAxMDAwMCkgKyAweDAwMDAwMDAxKTsKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBkb3duX3dyaXRlXG5cdCIKIiIg
IiAgeGFkZCAgICAgICUwLCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAgdGVzdGwgICAg
ICUwLCUwXG5cdCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQiCiAgICAgICAg
ICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAi
LmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInN5c2k4NiIgIlxuXHQiICIudGV4dC5sb2NrLiIgInN5
c2k4NiIgIjpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAg
ICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2Fs
bCAgICAgIHJ3c2VtX2Rvd25fd3JpdGVfZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIgIHBv
cGwgICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAg
ICAgICAgICAgICAgICIucHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRv
d25fd3JpdGUiCiAgICAgICAgICAgICAgICA6ICIrZCIodG1wKSwgIittIihzZW0tPmNvdW50KQog
ICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNj
Iik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgaW50IF9fZG93bl93cml0ZV90cnlsb2NrKHN0cnVjdCBy
d19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIHNpZ25lZCBsb25nIHJldCA9ICgoX190eXBlb2Zf
XygqKCZzZW0tPmNvdW50KSkpX19jbXB4Y2hnKCgmc2VtLT5jb3VudCksKHVuc2lnbmVkIGxvbmcp
KDB4MDAwMDAwMDApLCAodW5zaWduZWQgbG9uZykoKCgtMHgwMDAxMDAwMCkgKyAweDAwMDAwMDAx
KSksc2l6ZW9mKCooJnNlbS0+Y291bnQpKSkpOwoKCiAgICAgICAgaWYgKHJldCA9PSAweDAwMDAw
MDAwKQogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCnN0
YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAg
ICAgICAgX19zMzIgdG1wID0gLTB4MDAwMDAwMDE7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxl
X18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgX191cF9yZWFkXG5cdCIKIiIgIiAgeGFk
ZCAgICAgICUlZWR4LCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAganMgICAgICAgIDJm
XG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rp
b24gMVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic3lzaTg2IiAiXG5cdCIgIi50
ZXh0LmxvY2suIiAic3lzaTg2IiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAgICAgICAg
IjI6XG5cdCIKICAgICAgICAgICAgICAgICIgIGRlY3cgICAgICAlJWR4XG5cdCIKICAgICAgICAg
ICAgICAgICIgIGpueiAgICAgICAxYlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAg
JSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX3dha2Vcblx0Igog
ICAgICAgICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIg
IGptcCAgICAgICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuXHQiCiAgICAgICAg
ICAgICAgICAiIyBlbmRpbmcgX191cF9yZWFkXG4iCiAgICAgICAgICAgICAgICA6ICIrbSIoc2Vt
LT5jb3VudCksICIrZCIodG1wKQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAg
ICAgICAgOiAibWVtb3J5IiwgImNjIik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3dy
aXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfd3JpdGVcblx0IgogICAgICAg
ICAgICAgICAgIiAgbW92bCAgICAgICUyLCUlZWR4XG5cdCIKIiIgIiAgeGFkZGwgICAgICUlZWR4
LCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDJmXG5cdCIKICAgICAg
ICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rpb24gMVxuXHQiICIi
ICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic3lzaTg2IiAiXG5cdCIgIi50ZXh0LmxvY2suIiAi
c3lzaTg2IiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAgICAgICAgIjI6XG5cdCIKICAg
ICAgICAgICAgICAgICIgIGRlY3cgICAgICAlJWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIGpu
eiAgICAgICAxYlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0Igog
ICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX3dha2Vcblx0IgogICAgICAgICAgICAg
ICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAgICAgICAx
YlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuXHQiCiAgICAgICAgICAgICAgICAiIyBl
bmRpbmcgX191cF93cml0ZVxuIgogICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQpCiAg
ICAgICAgICAgICAgICA6ICJhIihzZW0pLCAiaSIoLSgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAw
MSkpCiAgICAgICAgICAgICAgICA6ICJtZW1vcnkiLCAiY2MiLCAiZWR4Iik7Cn0KCgoKCnN0YXRp
YyBpbmxpbmUgdm9pZCByd3NlbV9hdG9taWNfYWRkKGludCBkZWx0YSwgc3RydWN0IHJ3X3NlbWFw
aG9yZSAqc2VtKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiIiICJhZGRsICUxLCUw
IgogICAgICAgICAgICAgICAgOiI9bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiaXIi
KGRlbHRhKSwgIm0iKHNlbS0+Y291bnQpKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgcndzZW1f
YXRvbWljX3VwZGF0ZShpbnQgZGVsdGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAg
ICAgIGludCB0bXAgPSBkZWx0YTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiIiICJ4
YWRkICUwLCglMikiCiAgICAgICAgICAgICAgICA6ICIrciIodG1wKSwgIj1tIihzZW0tPmNvdW50
KQogICAgICAgICAgICAgICAgOiAiciIoc2VtKSwgIm0iKHNlbS0+Y291bnQpCiAgICAgICAgICAg
ICAgICA6ICJtZW1vcnkiKTsKCiAgICAgICAgcmV0dXJuIHRtcCtkZWx0YTsKfQojIDMwICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCiMgNDMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBk
b3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgOwogICAgICAgIF9f
ZG93bl9yZWFkKHNlbSk7CiAgICAgICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIGludCBkb3duX3Jl
YWRfdHJ5bG9jayhzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBpbnQgcmV0Owog
ICAgICAgIDsKICAgICAgICByZXQgPSBfX2Rvd25fcmVhZF90cnlsb2NrKHNlbSk7CiAgICAgICAg
OwogICAgICAgIHJldHVybiByZXQ7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3dyaXRl
KHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIDsKICAgICAgICBfX2Rvd25fd3Jp
dGUoc2VtKTsKICAgICAgICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgaW50IGRvd25fd3JpdGVfdHJ5
bG9jayhzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBpbnQgcmV0OwogICAgICAg
IDsKICAgICAgICByZXQgPSBfX2Rvd25fd3JpdGVfdHJ5bG9jayhzZW0pOwogICAgICAgIDsKICAg
ICAgICByZXR1cm4gcmV0Owp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgdXBfcmVhZChzdHJ1Y3Qg
cndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICA7CiAgICAgICAgX191cF9yZWFkKHNlbSk7CiAg
ICAgICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgdXBfd3JpdGUoc3RydWN0IHJ3X3NlbWFw
aG9yZSAqc2VtKQp7CiAgICAgICAgOwogICAgICAgIF9fdXBfd3JpdGUoc2VtKTsKICAgICAgICA7
Cn0KIyA0MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAy
CgpzdHJ1Y3Qgc2VtYXBob3JlIHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBpbnQg
c2xlZXBlcnM7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCgoKfTsKIyA3MyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIgpzdGF0aWMgaW5saW5l
IHZvaWQgc2VtYV9pbml0IChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0sIGludCB2YWwpCnsKCgoKCgoK
ICAgICAgICAoKCgmc2VtLT5jb3VudCktPmNvdW50ZXIpID0gKHZhbCkpOwogICAgICAgIHNlbS0+
c2xlZXBlcnMgPSAwOwogICAgICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJnNlbS0+d2FpdCk7CgoK
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X01VVEVYIChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0p
CnsKICAgICAgICBzZW1hX2luaXQoc2VtLCAxKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGluaXRf
TVVURVhfTE9DS0VEIChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBzZW1hX2luaXQo
c2VtLCAwKTsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fZG93bl9mYWls
ZWQodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rvd25fZmFpbGVk
X2ludGVycnVwdGlibGUodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBf
X2Rvd25fZmFpbGVkX3RyeWxvY2sodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp
IHZvaWQgX191cF93YWtldXAodm9pZCApOwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2
b2lkIF9fZG93bihzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMCkpKSBpbnQgX19kb3duX2ludGVycnVwdGlibGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7
CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93bl90cnlsb2NrKHN0cnVjdCBz
ZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgX191cChz
dHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRvd24oc3Ry
dWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAgICAgICAgICIjIGF0b21pYyBkb3duIG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAg
ICAgICAiIiAiZGVjbCAlMFxuXHQiCiAgICAgICAgICAgICAgICAianMgMmZcbiIKICAgICAgICAg
ICAgICAgICIxOlxuIgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlm
bmRlZiAiICIudGV4dC5sb2NrLiIgInN5c2k4NiIgIlxuXHQiICIudGV4dC5sb2NrLiIgInN5c2k4
NiIgIjpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX2Rvd25f
ZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIu
cHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgOiI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAg
ICAgICAgICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwp9CgoKCgoKc3Rh
dGljIGlubGluZSBpbnQgZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0p
CnsKICAgICAgICBpbnQgcmVzdWx0OwoKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgICAgICAgICAiIyBhdG9taWMgaW50ZXJydXB0aWJsZSBkb3duIG9wZXJhdGlvblxu
XHQiCiAgICAgICAgICAgICAgICAiIiAiZGVjbCAlMVxuXHQiCiAgICAgICAgICAgICAgICAianMg
MmZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgJTAsJTBcbiIKICAgICAgICAgICAgICAgICIx
OlxuIgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIu
dGV4dC5sb2NrLiIgInN5c2k4NiIgIlxuXHQiICIudGV4dC5sb2NrLiIgInN5c2k4NiIgIjpcblx0
IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX2Rvd25fZmFpbGVkX2lu
dGVycnVwdGlibGVcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAgICAgICAg
ICAgIi5wcmV2aW91c1xuXHQiCiAgICAgICAgICAgICAgICA6Ij1hIiAocmVzdWx0KSwgIj1tIiAo
c2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiYyIgKHNlbSkKICAgICAgICAgICAgICAgIDoi
bWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50
IGRvd25fdHJ5bG9jayhzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQp7CiAgICAgICAgaW50IHJlc3Vs
dDsKCgoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMg
YXRvbWljIGludGVycnVwdGlibGUgZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAg
IiIgImRlY2wgJTFcblx0IgogICAgICAgICAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAgICAg
ICAgICJ4b3JsICUwLCUwXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAg
ICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzeXNpODYi
ICJcblx0IiAiLnRleHQubG9jay4iICJzeXNpODYiICI6XG5cdCIgIi5lbmRpZlxuXHQiCiAgICAg
ICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2ZhaWxlZF90cnlsb2NrXG5cdCIKICAgICAgICAg
ICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXNcblx0IgogICAgICAg
ICAgICAgICAgOiI9YSIgKHJlc3VsdCksICI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAg
ICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgIHJldHVybiBy
ZXN1bHQ7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB1cChzdHJ1Y3Qgc2VtYXBob3JlICog
c2VtKQp7CgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAi
IyBhdG9taWMgdXAgb3BlcmF0aW9uXG5cdCIKICAgICAgICAgICAgICAgICIiICJpbmNsICUwXG5c
dCIKICAgICAgICAgICAgICAgICJqbGUgMmZcbiIKICAgICAgICAgICAgICAgICIxOlxuIgogICAg
ICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5sb2Nr
LiIgInN5c2k4NiIgIlxuXHQiICIudGV4dC5sb2NrLiIgInN5c2k4NiIgIjpcblx0IiAiLmVuZGlm
XG5cdCIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX3VwX3dha2V1cFxuXHQiCiAgICAgICAg
ICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAg
ICAgICAgICAgICIuc3Vic2VjdGlvbiAwXG4iCiAgICAgICAgICAgICAgICA6Ij1tIiAoc2VtLT5j
b3VudCkKICAgICAgICAgICAgICAgIDoiYyIgKHNlbSkKICAgICAgICAgICAgICAgIDoibWVtb3J5
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNlbV9nZXRjb3VudChzdHJ1Y3Qgc2VtYXBob3JlICpz
ZW0pCnsKICAgICAgICByZXR1cm4gKCgmc2VtLT5jb3VudCktPmNvdW50ZXIpOwp9CiMgMjAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCgoKZXh0ZXJuIHZvaWQg
dXBkYXRlX2F0aW1lIChzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIHZvaWQgYnVmZmVyX2luaXQo
dW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIGlub2RlX2luaXQodW5zaWduZWQgbG9uZyk7CmV4
dGVybiB2b2lkIG1udF9pbml0KHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBmaWxlc19pbml0
KHVuc2lnbmVkIGxvbmcgbWVtcGFnZXMpOwoKCmVudW0gYmhfc3RhdGVfYml0cyB7CiAgICAgICAg
QkhfVXB0b2RhdGUsCiAgICAgICAgQkhfRGlydHksCiAgICAgICAgQkhfTG9jaywKICAgICAgICBC
SF9SZXEsCiAgICAgICAgQkhfTWFwcGVkLAogICAgICAgIEJIX05ldywKICAgICAgICBCSF9Bc3lu
YywKICAgICAgICBCSF9XYWl0X0lPLAogICAgICAgIEJIX0xhdW5kZXIsCiAgICAgICAgQkhfSkJE
LAoKICAgICAgICBCSF9Qcml2YXRlU3RhcnQsCgoKfTsKIyAyNDIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0cnVjdCBidWZmZXJfaGVhZCB7CgogICAgICAgIHN0
cnVjdCBidWZmZXJfaGVhZCAqYl9uZXh0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9ibG9ja25y
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBi
X2xpc3Q7CiAgICAgICAga2Rldl90IGJfZGV2OwoKICAgICAgICBhdG9taWNfdCBiX2NvdW50Owog
ICAgICAgIGtkZXZfdCBiX3JkZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX3N0YXRlOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVh
ZCAqYl9uZXh0X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3ByZXZfZnJlZTsK
ICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfdGhpc19wYWdlOwogICAgICAgIHN0cnVjdCBi
dWZmZXJfaGVhZCAqYl9yZXFuZXh0OwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipiX3Bw
cmV2OwogICAgICAgIGNoYXIgKiBiX2RhdGE7CiAgICAgICAgc3RydWN0IHBhZ2UgKmJfcGFnZTsK
ICAgICAgICB2b2lkICgqYl9lbmRfaW8pKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCB1cHRv
ZGF0ZSk7CiAgICAgICAgdm9pZCAqYl9wcml2YXRlOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGJf
cnNlY3RvcjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBiX3dhaXQ7CgogICAgICAgIHN0cnVj
dCBpbm9kZSAqIGJfaW5vZGU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBiX2lub2RlX2J1ZmZl
cnM7Cn07Cgp0eXBlZGVmIHZvaWQgKGJoX2VuZF9pb190KShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo
LCBpbnQgdXB0b2RhdGUpOwp2b2lkIGluaXRfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBi
aF9lbmRfaW9fdCAqLCB2b2lkICopOwojIDI4OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHZvaWQgc2V0X2JoX3BhZ2Uoc3RydWN0IGJ1ZmZlcl9oZWFk
ICpiaCwgc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiIDEKCgoKCnN0
cnVjdCBwaXBlX2lub2RlX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CiAg
ICAgICAgY2hhciAqYmFzZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2ln
bmVkIGludCBzdGFydDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVhZGVyczsKICAgICAgICB1bnNp
Z25lZCBpbnQgd3JpdGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ19yZWFkZXJzOwog
ICAgICAgIHVuc2lnbmVkIGludCB3YWl0aW5nX3dyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50
IHJfY291bnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgd19jb3VudGVyOwp9OwojIDQyICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9waXBlX2ZzX2kuaCIKdm9pZCBwaXBlX3dh
aXQoc3RydWN0IGlub2RlICogaW5vZGUpOwoKc3RydWN0IGlub2RlKiBwaXBlX25ldyhzdHJ1Y3Qg
aW5vZGUqIGlub2RlKTsKIyAyOTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9taW5peF9m
c19pLmgiIDEKCgoKCgoKc3RydWN0IG1pbml4X2lub2RlX2luZm8gewogICAgICAgIHVuaW9uIHsK
ICAgICAgICAgICAgICAgIF9fdTE2IGkxX2RhdGFbMTZdOwogICAgICAgICAgICAgICAgX191MzIg
aTJfZGF0YVsxNl07CiAgICAgICAgfSB1Owp9OwojIDI5NiAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2V4dDJfZnNfaS5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2V4dDJfZnNfaS5oIgpzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIHsKICAgICAgICBfX3Uz
MiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9mYWRk
cjsKICAgICAgICBfX3U4IGlfZnJhZ19ubzsKICAgICAgICBfX3U4IGlfZnJhZ19zaXplOwogICAg
ICAgIF9fdTMyIGlfZmlsZV9hY2w7CiAgICAgICAgX191MzIgaV9kaXJfYWNsOwogICAgICAgIF9f
dTMyIGlfZHRpbWU7CiAgICAgICAgX191MzIgaV9ibG9ja19ncm91cDsKICAgICAgICBfX3UzMiBp
X25leHRfYWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2dvYWw7CiAgICAg
ICAgX191MzIgaV9wcmVhbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2NvdW50
OwogICAgICAgIF9fdTMyIGlfZGlyX3N0YXJ0X2xvb2t1cDsKICAgICAgICBpbnQgaV9uZXdfaW5v
ZGU6MTsKfTsKIyAyOTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9leHQzX2ZzX2kuaCIg
MQojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9leHQzX2ZzX2kuaCIK
c3RydWN0IGV4dDNfaW5vZGVfaW5mbyB7CiAgICAgICAgX191MzIgaV9kYXRhWzE1XTsKICAgICAg
ICBfX3UzMiBpX2ZsYWdzOwoKCgoKCgogICAgICAgIF9fdTMyIGlfZmlsZV9hY2w7CiAgICAgICAg
X191MzIgaV9kaXJfYWNsOwogICAgICAgIF9fdTMyIGlfZHRpbWU7CiAgICAgICAgX191MzIgaV9i
bG9ja19ncm91cDsKICAgICAgICBfX3UzMiBpX3N0YXRlOwogICAgICAgIF9fdTMyIGlfbmV4dF9h
bGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfZ29hbDsKCgoKCiAgICAgICAg
X191MzIgaV9kaXJfc3RhcnRfbG9va3VwOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGlfb3Jw
aGFuOwojIDYzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9leHQzX2ZzX2ku
aCIKICAgICAgICBsb2ZmX3QgaV9kaXNrc2l6ZTsKIyA3NSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvZXh0M19mc19pLmgiCiAgICAgICAgc3RydWN0IHJ3X3NlbWFwaG9yZSB0
cnVuY2F0ZV9zZW07Cn07CiMgMjk4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaHBmc19m
c19pLmgiIDEKCgoKc3RydWN0IGhwZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBtbXVfcHJpdmF0ZTsKICAgICAgICBpbm9fdCBpX3BhcmVudF9kaXI7CiAgICAgICAgdW5zaWdu
ZWQgaV9kbm87CiAgICAgICAgdW5zaWduZWQgaV9kcG9zOwogICAgICAgIHVuc2lnbmVkIGlfZHN1
YmRubzsKICAgICAgICB1bnNpZ25lZCBpX2ZpbGVfc2VjOwogICAgICAgIHVuc2lnbmVkIGlfZGlz
a19zZWM7CiAgICAgICAgdW5zaWduZWQgaV9uX3NlY3M7CiAgICAgICAgdW5zaWduZWQgaV9lYV9z
aXplOwogICAgICAgIHVuc2lnbmVkIGlfY29udiA6IDI7CiAgICAgICAgdW5zaWduZWQgaV9lYV9t
b2RlIDogMTsKICAgICAgICB1bnNpZ25lZCBpX2VhX3VpZCA6IDE7CiAgICAgICAgdW5zaWduZWQg
aV9lYV9naWQgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZGlydHkgOiAxOwogICAgICAgIHN0cnVj
dCBzZW1hcGhvcmUgaV9zZW07CiAgICAgICAgbG9mZl90ICoqaV9yZGRpcl9vZmY7Cn07CiMgMjk5
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbnRmc19mc19pLmgiIDEKCgoKCgoKc3RydWN0
IG50ZnNfYXR0cmlidXRlOwpzdHJ1Y3QgbnRmc19zYl9pbmZvOwoKCgoKdHlwZWRlZiB1OCBudGZz
X3U4Owp0eXBlZGVmIHUxNiBudGZzX3UxNjsKdHlwZWRlZiB1MzIgbnRmc191MzI7CnR5cGVkZWYg
dTY0IG50ZnNfdTY0Owp0eXBlZGVmIHM4IG50ZnNfczg7CnR5cGVkZWYgczE2IG50ZnNfczE2Owp0
eXBlZGVmIHMzMiBudGZzX3MzMjsKdHlwZWRlZiBzNjQgbnRmc19zNjQ7CgoKCgp0eXBlZGVmIF9f
a2VybmVsX21vZGVfdCBudG1vZGVfdDsKCgoKdHlwZWRlZiB1aWRfdCBudGZzX3VpZF90OwoKCgp0
eXBlZGVmIGdpZF90IG50ZnNfZ2lkX3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfc2l6ZV90IG50ZnNf
c2l6ZV90OwoKCgp0eXBlZGVmIF9fa2VybmVsX3RpbWVfdCBudGZzX3RpbWVfdDsKCgoKCgp0eXBl
ZGVmIHUxNiBudGZzX3djaGFyX3Q7CgoKCgp0eXBlZGVmIHM2NCBudGZzX29mZnNldF90OwoKCgoK
dHlwZWRlZiB1NjQgbnRmc190aW1lNjRfdDsKIyA2OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvbnRmc19mc19pLmgiCnR5cGVkZWYgczMyIG50ZnNfY2x1c3Rlcl90OwoKCgpz
dHJ1Y3QgbnRmc19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbnRmc19zYl9pbmZvICp2b2w7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX251bWJlcjsKICAgICAgICBfX3UxNiBzZXF1ZW5jZV9u
dW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciAqYXR0cjsKICAgICAgICBpbnQgYXR0cl9jb3Vu
dDsKICAgICAgICBzdHJ1Y3QgbnRmc19hdHRyaWJ1dGUgKmF0dHJzOwogICAgICAgIGludCByZWNv
cmRfY291bnQ7CiAgICAgICAgaW50ICpyZWNvcmRzOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVjb3Jkc2l6ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAgICAgICAg
ICAgICAgICB9IGluZGV4OwogICAgICAgIH0gdTsKfTsKIyAzMDAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9tc2Rvc19mc19pLmgiIDEKCgoKCgoKCnN0cnVjdCBtc2Rvc19pbm9kZV9pbmZv
IHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIGludCBpX3N0YXJ0
OwogICAgICAgIGludCBpX2xvZ3N0YXJ0OwogICAgICAgIGludCBpX2F0dHJzOwogICAgICAgIGlu
dCBpX2N0aW1lX21zOwogICAgICAgIGludCBpX2xvY2F0aW9uOwogICAgICAgIHN0cnVjdCBpbm9k
ZSAqaV9mYXRfaW5vZGU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2ZhdF9oYXNoOwp9Owoj
IDMwMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Vtc2Rvc19mc19pLmgiIDEKIyAzOSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIKc3RydWN0
IGRpcl9sb2NraW5nX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHA7CiAgICAgICAg
c2hvcnQgaW50IGxvb2tpbmc7CiAgICAgICAgc2hvcnQgaW50IGNyZWF0aW5nOwoKCgogICAgICAg
IGxvbmcgcGlkOwoKfTsKCnN0cnVjdCB1bXNkb3NfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0
IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaW5mbzsKICAgICAgICBzdHJ1Y3QgZGlyX2xvY2tpbmdf
aW5mbyBkaXJfaW5mbzsKICAgICAgICBpbnQgaV9wYXRjaGVkOwogICAgICAgIGludCBpX2lzX2hs
aW5rOwogICAgICAgIG9mZl90IHBvczsKfTsKIyAzMDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9pc29fZnNfaS5oIiAxCgoKCmVudW0gaXNvZnNfZmlsZV9mb3JtYXQgewogICAgICAgIGlz
b2ZzX2ZpbGVfbm9ybWFsID0gMCwKICAgICAgICBpc29mc19maWxlX3NwYXJzZSA9IDEsCiAgICAg
ICAgaXNvZnNfZmlsZV9jb21wcmVzc2VkID0gMiwKfTsKCgoKCnN0cnVjdCBpc29faW5vZGVfaW5m
byB7CiAgICAgICAgdW5zaWduZWQgaW50IGlfZmlyc3RfZXh0ZW50OwogICAgICAgIHVuc2lnbmVk
IGNoYXIgaV9maWxlX2Zvcm1hdDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlfZm9ybWF0X3Bhcm1b
M107CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX25leHRfc2VjdGlvbl9pbm87CiAgICAgICAgb2Zm
X3QgaV9zZWN0aW9uX3NpemU7Cn07CiMgMzAzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
bmZzX2ZzX2kuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvbmZzLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmZz
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3VucnBjL21zZ19w
cm90LmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3VucnBj
L21zZ19wcm90LmgiCmVudW0gcnBjX2F1dGhfZmxhdm9yIHsKICAgICAgICBSUENfQVVUSF9OVUxM
ID0gMCwKICAgICAgICBSUENfQVVUSF9VTklYID0gMSwKICAgICAgICBSUENfQVVUSF9TSE9SVCA9
IDIsCiAgICAgICAgUlBDX0FVVEhfREVTID0gMywKICAgICAgICBSUENfQVVUSF9LUkIgPSA0LAp9
OwoKZW51bSBycGNfbXNnX3R5cGUgewogICAgICAgIFJQQ19DQUxMID0gMCwKICAgICAgICBSUENf
UkVQTFkgPSAxCn07CgplbnVtIHJwY19yZXBseV9zdGF0IHsKICAgICAgICBSUENfTVNHX0FDQ0VQ
VEVEID0gMCwKICAgICAgICBSUENfTVNHX0RFTklFRCA9IDEKfTsKCmVudW0gcnBjX2FjY2VwdF9z
dGF0IHsKICAgICAgICBSUENfU1VDQ0VTUyA9IDAsCiAgICAgICAgUlBDX1BST0dfVU5BVkFJTCA9
IDEsCiAgICAgICAgUlBDX1BST0dfTUlTTUFUQ0ggPSAyLAogICAgICAgIFJQQ19QUk9DX1VOQVZB
SUwgPSAzLAogICAgICAgIFJQQ19HQVJCQUdFX0FSR1MgPSA0LAogICAgICAgIFJQQ19TWVNURU1f
RVJSID0gNQp9OwoKZW51bSBycGNfcmVqZWN0X3N0YXQgewogICAgICAgIFJQQ19NSVNNQVRDSCA9
IDAsCiAgICAgICAgUlBDX0FVVEhfRVJST1IgPSAxCn07CgplbnVtIHJwY19hdXRoX3N0YXQgewog
ICAgICAgIFJQQ19BVVRIX09LID0gMCwKICAgICAgICBSUENfQVVUSF9CQURDUkVEID0gMSwKICAg
ICAgICBSUENfQVVUSF9SRUpFQ1RFRENSRUQgPSAyLAogICAgICAgIFJQQ19BVVRIX0JBRFZFUkYg
PSAzLAogICAgICAgIFJQQ19BVVRIX1JFSkVDVEVEVkVSRiA9IDQsCiAgICAgICAgUlBDX0FVVEhf
VE9PV0VBSyA9IDUKfTsKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
bmZzLmgiIDIKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmZzLmgi
CiBlbnVtIG5mc19zdGF0IHsKICAgICAgICBORlNfT0sgPSAwLAogICAgICAgIE5GU0VSUl9QRVJN
ID0gMSwKICAgICAgICBORlNFUlJfTk9FTlQgPSAyLAogICAgICAgIE5GU0VSUl9JTyA9IDUsCiAg
ICAgICAgTkZTRVJSX05YSU8gPSA2LAogICAgICAgIE5GU0VSUl9FQUdBSU4gPSAxMSwKICAgICAg
ICBORlNFUlJfQUNDRVMgPSAxMywKICAgICAgICBORlNFUlJfRVhJU1QgPSAxNywKICAgICAgICBO
RlNFUlJfWERFViA9IDE4LAogICAgICAgIE5GU0VSUl9OT0RFViA9IDE5LAogICAgICAgIE5GU0VS
Ul9OT1RESVIgPSAyMCwKICAgICAgICBORlNFUlJfSVNESVIgPSAyMSwKICAgICAgICBORlNFUlJf
SU5WQUwgPSAyMiwKICAgICAgICBORlNFUlJfRkJJRyA9IDI3LAogICAgICAgIE5GU0VSUl9OT1NQ
QyA9IDI4LAogICAgICAgIE5GU0VSUl9ST0ZTID0gMzAsCiAgICAgICAgTkZTRVJSX01MSU5LID0g
MzEsCiAgICAgICAgTkZTRVJSX09QTk9UU1VQUCA9IDQ1LAogICAgICAgIE5GU0VSUl9OQU1FVE9P
TE9ORyA9IDYzLAogICAgICAgIE5GU0VSUl9OT1RFTVBUWSA9IDY2LAogICAgICAgIE5GU0VSUl9E
UVVPVCA9IDY5LAogICAgICAgIE5GU0VSUl9TVEFMRSA9IDcwLAogICAgICAgIE5GU0VSUl9SRU1P
VEUgPSA3MSwKICAgICAgICBORlNFUlJfV0ZMVVNIID0gOTksCiAgICAgICAgTkZTRVJSX0JBREhB
TkRMRSA9IDEwMDAxLAogICAgICAgIE5GU0VSUl9OT1RfU1lOQyA9IDEwMDAyLAogICAgICAgIE5G
U0VSUl9CQURfQ09PS0lFID0gMTAwMDMsCiAgICAgICAgTkZTRVJSX05PVFNVUFAgPSAxMDAwNCwK
ICAgICAgICBORlNFUlJfVE9PU01BTEwgPSAxMDAwNSwKICAgICAgICBORlNFUlJfU0VSVkVSRkFV
TFQgPSAxMDAwNiwKICAgICAgICBORlNFUlJfQkFEVFlQRSA9IDEwMDA3LAogICAgICAgIE5GU0VS
Ul9KVUtFQk9YID0gMTAwMDgKIH07CgoKCmVudW0gbmZzX2Z0eXBlIHsKICAgICAgICBORk5PTiA9
IDAsCiAgICAgICAgTkZSRUcgPSAxLAogICAgICAgIE5GRElSID0gMiwKICAgICAgICBORkJMSyA9
IDMsCiAgICAgICAgTkZDSFIgPSA0LAogICAgICAgIE5GTE5LID0gNSwKICAgICAgICBORlNPQ0sg
PSA2LAogICAgICAgIE5GQkFEID0gNywKICAgICAgICBORkZJRk8gPSA4Cn07CgoKCgoKCnN0cnVj
dCBuZnNfZmggewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNpemU7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBkYXRhWzY0XTsKfTsKIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L25mcy5oIgplbnVtIG5mczNfc3RhYmxlX2hvdyB7CiAgICAgICAgTkZTX1VOU1RBQkxFID0g
MCwKICAgICAgICBORlNfREFUQV9TWU5DID0gMSwKICAgICAgICBORlNfRklMRV9TWU5DID0gMgp9
OwojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIK
CgoKCnN0cnVjdCBuZnNfaW5vZGVfaW5mbyB7CgoKCiAgICAgICAgX191NjQgZmlsZWlkOwoKCgoK
ICAgICAgICBzdHJ1Y3QgbmZzX2ZoIGZoOwoKCgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmbGFn
czsKIyA0NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIK
ICAgICAgICB1bnNpZ25lZCBsb25nIHJlYWRfY2FjaGVfamlmZmllczsKICAgICAgICBfX3U2NCBy
ZWFkX2NhY2hlX2N0aW1lOwogICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfbXRpbWU7CiAgICAgICAg
X191NjQgcmVhZF9jYWNoZV9pc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGF0dHJ0aW1lbzsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGF0dHJ0aW1lb190aW1lc3RhbXA7CgoKCgoKICAgICAgICB1
bnNpZ25lZCBsb25nIGNhY2hlX210aW1lX2ppZmZpZXM7CgoKCgoKICAgICAgICBfX3UzMiBjb29r
aWV2ZXJmWzJdOwoKCgoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHJlYWQ7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBkaXJ0eTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNvbW1pdDsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHdyaXRlYmFjazsKCiAgICAgICAgdW5zaWduZWQgaW50IG5y
ZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaXJ0eSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuY29tbWl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5wYWdlczsKCgogICAgICAgIHN0cnVjdCBycGNfY3JlZCAqbW1fY3JlZDsKfTsKIyA5MiAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIKc3RydWN0IG5m
c19sb2NrX2luZm8gewogICAgICAgIHUzMiBzdGF0ZTsKICAgICAgICB1MzIgZmxhZ3M7CiAgICAg
ICAgc3RydWN0IG5sbV9ob3N0ICpob3N0Owp9OwojIDMwNCAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L3N5c3ZfZnNfaS5oIiAxCgoKCgoKCnN0cnVjdCBzeXN2X2lub2RlX2luZm8gewogICAg
ICAgIHUzMiBpX2RhdGFbMTArMSsxKzFdOwoKCgoKICAgICAgICB1MzIgaV9kaXJfc3RhcnRfbG9v
a3VwOwp9OwojIDMwNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYS5vdXQuaCIgMQoK
CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYS5vdXQuaCIgMQoK
CgpzdHJ1Y3QgZXhlYwp7CiAgdW5zaWduZWQgbG9uZyBhX2luZm87CiAgdW5zaWduZWQgYV90ZXh0
OwogIHVuc2lnbmVkIGFfZGF0YTsKICB1bnNpZ25lZCBhX2JzczsKICB1bnNpZ25lZCBhX3N5bXM7
CiAgdW5zaWduZWQgYV9lbnRyeTsKICB1bnNpZ25lZCBhX3Ryc2l6ZTsKICB1bnNpZ25lZCBhX2Ry
c2l6ZTsKfTsKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9hLm91dC5o
IiAyCgoKCgplbnVtIG1hY2hpbmVfdHlwZSB7CgoKCiAgTV9PTERTVU4yID0gMCwKCgoKCiAgTV82
ODAxMCA9IDEsCgoKCgogIE1fNjgwMjAgPSAyLAoKCgoKICBNX1NQQVJDID0gMywKCgogIE1fMzg2
ID0gMTAwLAogIE1fTUlQUzEgPSAxNTEsCiAgTV9NSVBTMiA9IDE1Mgp9OwojIDE1NyAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYS5vdXQuaCIKc3RydWN0IG5saXN0IHsKICB1
bmlvbiB7CiAgICBjaGFyICpuX25hbWU7CiAgICBzdHJ1Y3Qgbmxpc3QgKm5fbmV4dDsKICAgIGxv
bmcgbl9zdHJ4OwogIH0gbl91bjsKICB1bnNpZ25lZCBjaGFyIG5fdHlwZTsKICBjaGFyIG5fb3Ro
ZXI7CiAgc2hvcnQgbl9kZXNjOwogIHVuc2lnbmVkIGxvbmcgbl92YWx1ZTsKfTsKIyAyMzUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0cnVjdCByZWxvY2F0
aW9uX2luZm8KewoKICBpbnQgcl9hZGRyZXNzOwoKICB1bnNpZ25lZCBpbnQgcl9zeW1ib2xudW06
MjQ7CgoKCiAgdW5zaWduZWQgaW50IHJfcGNyZWw6MTsKCgogIHVuc2lnbmVkIGludCByX2xlbmd0
aDoyOwoKCgoKCgogIHVuc2lnbmVkIGludCByX2V4dGVybjoxOwoKCgoKCgoKICB1bnNpZ25lZCBp
bnQgcl9wYWQ6NDsKCn07CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
YWZmc19mc19pLmgiIDIKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3RpbWUuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWUu
aCIKc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAgICAgIGxvbmcg
dHZfbnNlYzsKfTsKIyAzMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGlt
ZS5oIgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nCnRpbWVzcGVjX3RvX2ppZmZpZXMo
c3RydWN0IHRpbWVzcGVjICp2YWx1ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VjID0gdmFs
dWUtPnR2X3NlYzsKICAgICAgICBsb25nIG5zZWMgPSB2YWx1ZS0+dHZfbnNlYzsKCiAgICAgICAg
aWYgKHNlYyA+PSAoKCh+MFVMID4+IDEpLTEpIC8gMTAwKSkKICAgICAgICAgICAgICAgIHJldHVy
biAoKH4wVUwgPj4gMSktMSk7CiAgICAgICAgbnNlYyArPSAxMDAwMDAwMDAwTCAvIDEwMCAtIDE7
CiAgICAgICAgbnNlYyAvPSAxMDAwMDAwMDAwTCAvIDEwMDsKICAgICAgICByZXR1cm4gMTAwICog
c2VjICsgbnNlYzsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApqaWZmaWVzX3RvX3RpbWVzcGVj
KHVuc2lnbmVkIGxvbmcgamlmZmllcywgc3RydWN0IHRpbWVzcGVjICp2YWx1ZSkKewogICAgICAg
IHZhbHVlLT50dl9uc2VjID0gKGppZmZpZXMgJSAxMDApICogKDEwMDAwMDAwMDBMIC8gMTAwKTsK
ICAgICAgICB2YWx1ZS0+dHZfc2VjID0gamlmZmllcyAvIDEwMDsKfQojIDY3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
bG9uZwpta3RpbWUgKHVuc2lnbmVkIGludCB5ZWFyLCB1bnNpZ25lZCBpbnQgbW9uLAogICAgICAg
IHVuc2lnbmVkIGludCBkYXksIHVuc2lnbmVkIGludCBob3VyLAogICAgICAgIHVuc2lnbmVkIGlu
dCBtaW4sIHVuc2lnbmVkIGludCBzZWMpCnsKICAgICAgICBpZiAoMCA+PSAoaW50KSAobW9uIC09
IDIpKSB7CiAgICAgICAgICAgICAgICBtb24gKz0gMTI7CiAgICAgICAgICAgICAgICB5ZWFyIC09
IDE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCgoCiAgICAgICAgICAgICAgICAodW5zaWdu
ZWQgbG9uZykgKHllYXIvNCAtIHllYXIvMTAwICsgeWVhci80MDAgKyAzNjcqbW9uLzEyICsgZGF5
KSArCiAgICAgICAgICAgICAgICAgICAgICAgIHllYXIqMzY1IC0gNzE5NDk5CiAgICAgICAgICAg
ICkqMjQgKyBob3VyCiAgICAgICAgICApKjYwICsgbWluCiAgICAgICAgKSo2MCArIHNlYzsKfQoK
CgoKc3RydWN0IHRpbWV2YWwgewogICAgICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgc3VzZWNv
bmRzX3QgdHZfdXNlYzsKfTsKCnN0cnVjdCB0aW1lem9uZSB7CiAgICAgICAgaW50IHR6X21pbnV0
ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9OwoKCgoKZXh0ZXJuIHZvaWQgZG9fZ2V0
dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CmV4dGVybiB2b2lkIGRvX3NldHRpbWVvZmRh
eShzdHJ1Y3QgdGltZXZhbCAqdHYpOwojIDExOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvdGltZS5oIgpzdHJ1Y3QgaXRpbWVyc3BlYyB7CiAgICAgICAgc3RydWN0IHRpbWVz
cGVjIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKfTsKCnN0
cnVjdCBpdGltZXJ2YWwgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwogICAg
ICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAyCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIgpzdHJ1Y3QgYWZmc19leHRfa2V5IHsKICAgICAg
ICB1MzIgZXh0OwogICAgICAgIHUzMiBrZXk7Cn07CgoKCgpzdHJ1Y3QgYWZmc19pbm9kZV9pbmZv
IHsKICAgICAgICB1MzIgaV9vcGVuY250OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV9saW5r
X2xvY2s7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX2V4dF9sb2NrOwoKICAgICAgICB1MzIg
aV9ibGtjbnQ7CiAgICAgICAgdTMyIGlfZXh0Y250OwogICAgICAgIHUzMiAqaV9sYzsKICAgICAg
ICB1MzIgaV9sY19zaXplOwogICAgICAgIHUzMiBpX2xjX3NoaWZ0OwogICAgICAgIHUzMiBpX2xj
X21hc2s7CiAgICAgICAgc3RydWN0IGFmZnNfZXh0X2tleSAqaV9hYzsKICAgICAgICB1MzIgaV9l
eHRfbGFzdDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmlfZXh0X2JoOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAgdTMyIGlfcHJvdGVjdDsKICAgICAgICB1
MzIgaV9sYXN0YWxsb2M7CiAgICAgICAgaW50IGlfcGFfY250OwojIDUxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIKfTsKIyAzMDYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC91ZnNfZnNfaS5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L3Vmc19mc19pLmgiCnN0cnVjdCB1ZnNfaW5vZGVfaW5mbyB7CiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgICAgX191MzIgaV9kYXRhWzE1XTsKICAgICAgICAgICAg
ICAgIF9fdTggaV9zeW1saW5rWzQqMTVdOwogICAgICAgIH0gaV91MTsKICAgICAgICBfX3UzMiBp
X2ZsYWdzOwogICAgICAgIF9fdTMyIGlfZ2VuOwogICAgICAgIF9fdTMyIGlfc2hhZG93OwogICAg
ICAgIF9fdTMyIGlfdW51c2VkMTsKICAgICAgICBfX3UzMiBpX3VudXNlZDI7CiAgICAgICAgX191
MzIgaV9vZWZ0ZmxhZzsKICAgICAgICBfX3UxNiBpX29zeW5jOwogICAgICAgIF9fdTMyIGlfbGFz
dGZyYWc7Cn07CiMgMzA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZWZzX2ZzX2kuaCIg
MQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIgp0
eXBlZGVmIGludDMyX3QgZWZzX2Jsb2NrX3Q7CnR5cGVkZWYgdWludDMyX3QgZWZzX2lub190OwoK
CgoKCgp0eXBlZGVmIHVuaW9uIGV4dGVudF91IHsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJhd1s4
XTsKICAgICAgICBzdHJ1Y3QgZXh0ZW50X3MgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGV4X21hZ2ljOjg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfYm46MjQ7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbGVuZ3RoOjg7CiAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgZXhfb2Zmc2V0OjI0OwogICAgICAgIH0gY29va2VkOwp9IGVmc19leHRlbnQ7Cgp0
eXBlZGVmIHN0cnVjdCBlZGV2cyB7CiAgICAgICAgc2hvcnQgb2RldjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbmRldjsKfSBlZnNfZGV2czsKCgoKCgpzdHJ1Y3QgZWZzX2Rpbm9kZSB7CiAgICAgICAg
dV9zaG9ydCBkaV9tb2RlOwogICAgICAgIHNob3J0IGRpX25saW5rOwogICAgICAgIHVfc2hvcnQg
ZGlfdWlkOwogICAgICAgIHVfc2hvcnQgZGlfZ2lkOwogICAgICAgIGludDMyX3QgZGlfc2l6ZTsK
ICAgICAgICBpbnQzMl90IGRpX2F0aW1lOwogICAgICAgIGludDMyX3QgZGlfbXRpbWU7CiAgICAg
ICAgaW50MzJfdCBkaV9jdGltZTsKICAgICAgICB1aW50MzJfdCBkaV9nZW47CiAgICAgICAgc2hv
cnQgZGlfbnVtZXh0ZW50czsKICAgICAgICB1X2NoYXIgZGlfdmVyc2lvbjsKICAgICAgICB1X2No
YXIgZGlfc3BhcmU7CiAgICAgICAgdW5pb24gZGlfYWRkciB7CiAgICAgICAgICAgICAgICBlZnNf
ZXh0ZW50IGRpX2V4dGVudHNbMTJdOwogICAgICAgICAgICAgICAgZWZzX2RldnMgZGlfZGV2Owog
ICAgICAgIH0gZGlfdTsKfTsKCgpzdHJ1Y3QgZWZzX2lub2RlX2luZm8gewogICAgICAgIGludCBu
dW1leHRlbnRzOwogICAgICAgIGludCBsYXN0ZXh0ZW50OwoKICAgICAgICBlZnNfZXh0ZW50IGV4
dGVudHNbMTJdOwp9OwojIDMwOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNf
aS5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNf
aS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMQoj
IDEwOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIgp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgbG9uZyB1X3F1YWRfdDsKIyAxNjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0IHZlbnVzX2RpcmVudCB7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBkX2ZpbGVubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkX3JlY2xlbjsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGRfdHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRfbmFtbGVu
OwogICAgICAgIGNoYXIgZF9uYW1lWzI1NSArIDFdOwp9OwojIDE5OCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIgp0eXBlZGVmIHVfbG9uZyBWb2x1bWVJZDsKdHlw
ZWRlZiB1X2xvbmcgVm5vZGVJZDsKdHlwZWRlZiB1X2xvbmcgVW5pcXVlX3Q7CnR5cGVkZWYgdV9s
b25nIEZpbGVWZXJzaW9uOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgVmljZUZpZCB7CiAgICBWb2x1bWVJ
ZCBWb2x1bWU7CiAgICBWbm9kZUlkIFZub2RlOwogICAgVW5pcXVlX3QgVW5pcXVlOwp9IFZpY2VG
aWQ7CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbm9fdCBjb2RhX2YyaShzdHJ1Y3QgVmljZUZpZCAq
ZmlkKQp7CiAgICAgICAgaWYgKCAhIGZpZCApCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICBpZiAoZmlkLT5Wbm9kZSA9PSAweGZmZmZmZmZlIHx8IGZpZC0+Vm5vZGUgPT0gMHhmZmZm
ZmZmZikKICAgICAgICAgICAgICAgIHJldHVybiAoKGZpZC0+Vm9sdW1lIDw8IDIwKSB8IChmaWQt
PlVuaXF1ZSAmIDB4ZmZmZmYpKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4g
KGZpZC0+VW5pcXVlICsgKGZpZC0+Vm5vZGU8PDEwKSArIChmaWQtPlZvbHVtZTw8MjApKTsKfQoj
IDIzMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIgp0eXBlZGVm
IHVfaW50MzJfdCB2dWlkX3Q7CnR5cGVkZWYgdV9pbnQzMl90IHZnaWRfdDsKCgoKCnN0cnVjdCBj
b2RhX2NyZWQgewogICAgdnVpZF90IGNyX3VpZCwgY3JfZXVpZCwgY3Jfc3VpZCwgY3JfZnN1aWQ7
CiAgICB2Z2lkX3QgY3JfZ3JvdXBpZCwgY3JfZWdpZCwgY3Jfc2dpZCwgY3JfZnNnaWQ7Cn07CgoK
CgoKCgplbnVtIGNvZGFfdnR5cGUgeyBDX1ZOT04sIENfVlJFRywgQ19WRElSLCBDX1ZCTEssIENf
VkNIUiwgQ19WTE5LLCBDX1ZTT0NLLCBDX1ZGSUZPLCBDX1ZCQUQgfTsKCnN0cnVjdCBjb2RhX3Zh
dHRyIHsKICAgICAgICBsb25nIHZhX3R5cGU7CiAgICAgICAgdV9zaG9ydCB2YV9tb2RlOwogICAg
ICAgIHNob3J0IHZhX25saW5rOwogICAgICAgIHZ1aWRfdCB2YV91aWQ7CiAgICAgICAgdmdpZF90
IHZhX2dpZDsKICAgICAgICBsb25nIHZhX2ZpbGVpZDsKICAgICAgICB1X3F1YWRfdCB2YV9zaXpl
OwogICAgICAgIGxvbmcgdmFfYmxvY2tzaXplOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9h
dGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfbXRpbWU7CiAgICAgICAgc3RydWN0IHRp
bWVzcGVjIHZhX2N0aW1lOwogICAgICAgIHVfbG9uZyB2YV9nZW47CiAgICAgICAgdV9sb25nIHZh
X2ZsYWdzOwogICAgICAgIHVfcXVhZF90IHZhX3JkZXY7CiAgICAgICAgdV9xdWFkX3QgdmFfYnl0
ZXM7CiAgICAgICAgdV9xdWFkX3QgdmFfZmlsZXJldjsKfTsKCgoKCnN0cnVjdCBjb2RhX3N0YXRm
cyB7CiAgICBpbnQzMl90IGZfYmxvY2tzOwogICAgaW50MzJfdCBmX2JmcmVlOwogICAgaW50MzJf
dCBmX2JhdmFpbDsKICAgIGludDMyX3QgZl9maWxlczsKICAgIGludDMyX3QgZl9mZnJlZTsKfTsK
IyAzMzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0
IGNvZGFfaW5faGRyIHsKICAgIHVuc2lnbmVkIGxvbmcgb3Bjb2RlOwogICAgdW5zaWduZWQgbG9u
ZyB1bmlxdWU7CiAgICB1X3Nob3J0IHBpZDsKICAgIHVfc2hvcnQgcGdpZDsKICAgIHVfc2hvcnQg
c2lkOwogICAgc3RydWN0IGNvZGFfY3JlZCBjcmVkOwp9OwoKCnN0cnVjdCBjb2RhX291dF9oZHIg
ewogICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBsb25nIHVuaXF1ZTsKICAg
IHVuc2lnbmVkIGxvbmcgcmVzdWx0Owp9OwoKCnN0cnVjdCBjb2RhX3Jvb3Rfb3V0IHsKICAgIHN0
cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9y
b290X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpbjsKfTsKCgpzdHJ1Y3QgY29kYV9vcGVu
X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGlu
dCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9o
ZHIgb2g7CiAgICB1X3F1YWRfdCBkZXY7CiAgICBpbm9fdCBpbm9kZTsKfTsKCgoKc3RydWN0IGNv
ZGFfc3RvcmVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlk
OwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfc3RvcmVfb3V0IHsKICAgIHN0cnVjdCBj
b2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3JlbGVhc2VfaW4gewogICAgc3RydWN0
IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3Ry
dWN0IGNvZGFfcmVsZWFzZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoK
c3RydWN0IGNvZGFfY2xvc2VfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmlj
ZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfY2xvc2Vfb3V0IHsKICAg
IHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX2lvY3RsX2luIHsKICAg
IHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBjbWQ7CiAg
ICBpbnQgbGVuOwogICAgaW50IHJ3ZmxhZzsKICAgIGNoYXIgKmRhdGE7Cn07CgpzdHJ1Y3QgY29k
YV9pb2N0bF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGludCBsZW47CiAg
ICBjYWRkcl90IGRhdGE7Cn07CgoKCnN0cnVjdCBjb2RhX2dldGF0dHJfaW4gewogICAgc3RydWN0
IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfZ2V0YXR0
cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRy
IGF0dHI7Cn07CgoKCnN0cnVjdCBjb2RhX3NldGF0dHJfaW4gewogICAgc3RydWN0IGNvZGFfaW5f
aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsK
CnN0cnVjdCBjb2RhX3NldGF0dHJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9
OwoKCnN0cnVjdCBjb2RhX2FjY2Vzc19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAg
ICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9hY2Nlc3Nfb3V0
IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCgoKCgoKc3RydWN0IGNvZGFfbG9v
a3VwX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAg
IGludCBuYW1lOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfbG9va3VwX291dCB7CiAg
ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHZ0eXBl
Owp9OwoKCgpzdHJ1Y3QgY29kYV9jcmVhdGVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGlo
OwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKICAgIGludCBl
eGNsOwogICAgaW50IG1vZGU7CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBjb2RhX2NyZWF0ZV9v
dXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0
cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07CgoKCnN0cnVjdCBjb2RhX3JlbW92ZV9pbiB7CiAgICBz
dHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgbmFtZTsKfTsK
CnN0cnVjdCBjb2RhX3JlbW92ZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07
CgoKc3RydWN0IGNvZGFfbGlua19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBW
aWNlRmlkIHNvdXJjZUZpZDsKICAgIFZpY2VGaWQgZGVzdEZpZDsKICAgIGludCB0bmFtZTsKfTsK
CnN0cnVjdCBjb2RhX2xpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoK
CgpzdHJ1Y3QgY29kYV9yZW5hbWVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAg
VmljZUZpZCBzb3VyY2VGaWQ7CiAgICBpbnQgc3JjbmFtZTsKICAgIFZpY2VGaWQgZGVzdEZpZDsK
ICAgIGludCBkZXN0bmFtZTsKfTsKCnN0cnVjdCBjb2RhX3JlbmFtZV9vdXQgewogICAgc3RydWN0
IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfbWtkaXJfaW4gewogICAgc3RydWN0
IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIg
YXR0cjsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfbWtkaXJfb3V0IHsKICAgIHN0cnVj
dCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0
ciBhdHRyOwp9OwoKCgpzdHJ1Y3QgY29kYV9ybWRpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9o
ZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBjb2RhX3Jt
ZGlyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9z
eW1saW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsK
ICAgIGludCBzcmNuYW1lOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKICAgIGludCB0bmFt
ZTsKfTsKCnN0cnVjdCBjb2RhX3N5bWxpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIg
b3V0Owp9OwoKCnN0cnVjdCBjb2RhX3JlYWRsaW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hk
ciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3JlYWRsaW5rX291dCB7CiAg
ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGNvdW50OwogICAgY2FkZHJfdCBkYXRh
Owp9OwoKCgpzdHJ1Y3QgY29kYV9mc3luY19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7
CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9mc3luY19vdXQgewogICAgc3RydWN0
IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfdmdldF9pbiB7CiAgICBzdHJ1Y3Qg
Y29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV92Z2V0X291
dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50
IHZ0eXBlOwp9OwojIDYxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29k
YS5oIgpzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIg
b2g7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3phcGZpbGVf
b3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIENvZGFGaWQ7Cn07
CgoKCnN0cnVjdCBjb2RhX3phcGRpcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsK
ICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwdm5vZGVfb3V0IHsKICAg
IHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7CiAgICBW
aWNlRmlkIFZGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCB7CiAgICBzdHJ1Y3Qg
Y29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoKCgpzdHJ1Y3QgY29kYV9y
ZXBsYWNlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBOZXdG
aWQ7CiAgICBWaWNlRmlkIE9sZEZpZDsKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2J5X2ZkX2luIHsK
ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBmbGFn
czsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9o
ZHIgb2g7CiAgICBpbnQgZmQ7CgoKICAgIHN0cnVjdCBmaWxlICpmaDsKCn07CgoKc3RydWN0IGNv
ZGFfb3Blbl9ieV9wYXRoX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG
aWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9vdXQg
ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgICAgICBpbnQgcGF0aDsKfTsKCgpzdHJ1
Y3QgY29kYV9zdGF0ZnNfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKc3RydWN0
IGNvZGFfc3RhdGZzX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0
IGNvZGFfc3RhdGZzIHN0YXQ7Cn07CiMgNzAzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9jb2RhLmgiCnVuaW9uIGlucHV0QXJncyB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIg
aWg7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2luIGNvZGFfb3BlbjsKICAgIHN0cnVjdCBjb2RhX3N0
b3JlX2luIGNvZGFfc3RvcmU7CiAgICBzdHJ1Y3QgY29kYV9yZWxlYXNlX2luIGNvZGFfcmVsZWFz
ZTsKICAgIHN0cnVjdCBjb2RhX2Nsb3NlX2luIGNvZGFfY2xvc2U7CiAgICBzdHJ1Y3QgY29kYV9p
b2N0bF9pbiBjb2RhX2lvY3RsOwogICAgc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiBjb2RhX2dldGF0
dHI7CiAgICBzdHJ1Y3QgY29kYV9zZXRhdHRyX2luIGNvZGFfc2V0YXR0cjsKICAgIHN0cnVjdCBj
b2RhX2FjY2Vzc19pbiBjb2RhX2FjY2VzczsKICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9pbiBjb2Rh
X2xvb2t1cDsKICAgIHN0cnVjdCBjb2RhX2NyZWF0ZV9pbiBjb2RhX2NyZWF0ZTsKICAgIHN0cnVj
dCBjb2RhX3JlbW92ZV9pbiBjb2RhX3JlbW92ZTsKICAgIHN0cnVjdCBjb2RhX2xpbmtfaW4gY29k
YV9saW5rOwogICAgc3RydWN0IGNvZGFfcmVuYW1lX2luIGNvZGFfcmVuYW1lOwogICAgc3RydWN0
IGNvZGFfbWtkaXJfaW4gY29kYV9ta2RpcjsKICAgIHN0cnVjdCBjb2RhX3JtZGlyX2luIGNvZGFf
cm1kaXI7CiAgICBzdHJ1Y3QgY29kYV9zeW1saW5rX2luIGNvZGFfc3ltbGluazsKICAgIHN0cnVj
dCBjb2RhX3JlYWRsaW5rX2luIGNvZGFfcmVhZGxpbms7CiAgICBzdHJ1Y3QgY29kYV9mc3luY19p
biBjb2RhX2ZzeW5jOwogICAgc3RydWN0IGNvZGFfdmdldF9pbiBjb2RhX3ZnZXQ7CiAgICBzdHJ1
Y3QgY29kYV9vcGVuX2J5X2ZkX2luIGNvZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVjdCBjb2RhX29w
ZW5fYnlfcGF0aF9pbiBjb2RhX29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19p
biBjb2RhX3N0YXRmczsKfTsKCnVuaW9uIG91dHB1dEFyZ3MgewogICAgc3RydWN0IGNvZGFfb3V0
X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX3Jvb3Rfb3V0IGNvZGFfcm9vdDsKICAgIHN0cnVjdCBj
b2RhX29wZW5fb3V0IGNvZGFfb3BlbjsKICAgIHN0cnVjdCBjb2RhX2lvY3RsX291dCBjb2RhX2lv
Y3RsOwogICAgc3RydWN0IGNvZGFfZ2V0YXR0cl9vdXQgY29kYV9nZXRhdHRyOwogICAgc3RydWN0
IGNvZGFfbG9va3VwX291dCBjb2RhX2xvb2t1cDsKICAgIHN0cnVjdCBjb2RhX2NyZWF0ZV9vdXQg
Y29kYV9jcmVhdGU7CiAgICBzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgY29kYV9ta2RpcjsKICAgIHN0
cnVjdCBjb2RhX3JlYWRsaW5rX291dCBjb2RhX3JlYWRsaW5rOwogICAgc3RydWN0IGNvZGFfdmdl
dF9vdXQgY29kYV92Z2V0OwogICAgc3RydWN0IGNvZGFfcHVyZ2V1c2VyX291dCBjb2RhX3B1cmdl
dXNlcjsKICAgIHN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IGNvZGFfemFwZmlsZTsKICAgIHN0cnVj
dCBjb2RhX3phcGRpcl9vdXQgY29kYV96YXBkaXI7CiAgICBzdHJ1Y3QgY29kYV96YXB2bm9kZV9v
dXQgY29kYV96YXB2bm9kZTsKICAgIHN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCBjb2RhX3B1cmdl
ZmlkOwogICAgc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQgY29kYV9yZXBsYWNlOwogICAgc3RydWN0
IGNvZGFfb3Blbl9ieV9mZF9vdXQgY29kYV9vcGVuX2J5X2ZkOwogICAgc3RydWN0IGNvZGFfb3Bl
bl9ieV9wYXRoX291dCBjb2RhX29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19v
dXQgY29kYV9zdGF0ZnM7Cn07Cgp1bmlvbiBjb2RhX2Rvd25jYWxscyB7CgoKICAgIHN0cnVjdCBj
b2RhX3B1cmdldXNlcl9vdXQgcHVyZ2V1c2VyOwogICAgc3RydWN0IGNvZGFfemFwZmlsZV9vdXQg
emFwZmlsZTsKICAgIHN0cnVjdCBjb2RhX3phcGRpcl9vdXQgemFwZGlyOwogICAgc3RydWN0IGNv
ZGFfemFwdm5vZGVfb3V0IHphcHZub2RlOwogICAgc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IHB1
cmdlZmlkOwogICAgc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQgcmVwbGFjZTsKfTsKCgoKCgoKCnN0
cnVjdCBWaWNlSW9jdGwgewogICAgICAgIGNhZGRyX3QgaW4sIG91dDsKICAgICAgICBzaG9ydCBp
bl9zaXplOwogICAgICAgIHNob3J0IG91dF9zaXplOwp9OwoKc3RydWN0IFBpb2N0bERhdGEgewog
ICAgICAgIGNvbnN0IGNoYXIgKnBhdGg7CiAgICAgICAgaW50IGZvbGxvdzsKICAgICAgICBzdHJ1
Y3QgVmljZUlvY3RsIHZpOwp9OwojIDc5NyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9tb3VudF9kYXRhIHsKICAgICAgICBpbnQgdmVyc2lv
bjsKICAgICAgICBpbnQgZmQ7Cn07CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2NvZGFfZnNfaS5oIiAyCgoKCgpzdHJ1Y3QgY29kYV9pbm9kZV9pbmZvIHsKICAgICAg
ICBzdHJ1Y3QgVmljZUZpZCBjX2ZpZDsKICAgICAgICB1X3Nob3J0IGNfZmxhZ3M7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBjX2NpbGlzdDsKICAgICAgICBpbnQgY19tYXBjb3VudDsKICAgICAg
ICBzdHJ1Y3QgY29kYV9jcmVkIGNfY2FjaGVkX2NyZWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNf
Y2FjaGVkX3Blcm07Cn07CgoKCgoKc3RydWN0IGNvZGFfZmlsZV9pbmZvIHsKICAgICAgICBpbnQg
Y2ZpX21hZ2ljOwogICAgICAgIGludCBjZmlfbWFwY291bnQ7CiAgICAgICAgc3RydWN0IGZpbGUg
KmNmaV9jb250YWluZXI7CiAgICAgICAgc3RydWN0IGNvZGFfY3JlZCBjZmlfY3JlZDsKfTsKIyA0
NyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiCmludCBj
b2RhX2Nub2RlX21ha2Uoc3RydWN0IGlub2RlICoqLCBzdHJ1Y3QgVmljZUZpZCAqLCBzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKik7CnN0cnVjdCBpbm9kZSAqY29kYV9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9j
ayAqc2IsIHN0cnVjdCBWaWNlRmlkICpmaWQsIHN0cnVjdCBjb2RhX3ZhdHRyICphdHRyKTsKaW50
IGNvZGFfY25vZGVfbWFrZWN0bChzdHJ1Y3QgaW5vZGUgKippbm9kZSwgc3RydWN0IHN1cGVyX2Js
b2NrICpzYik7CnN0cnVjdCBpbm9kZSAqY29kYV9maWRfdG9faW5vZGUoVmljZUZpZCAqZmlkLCBz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKdm9pZCBjb2RhX3JlcGxhY2VfZmlkKHN0cnVjdCBpbm9k
ZSAqLCBWaWNlRmlkICosIFZpY2VGaWQgKik7CiMgMzA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvcm9tZnNfZnNfaS5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX2lub2RlX2luZm8gewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgaV9tZXRhc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZGF0
YW9mZnNldDsKfTsKIyAzMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zaG1lbV9mcy5o
IiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NobWVtX2ZzLmgi
CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHZhbDsKfSBzd3BfZW50cnlf
dDsKCmV4dGVybiBhdG9taWNfdCBzaG1lbV9ucnBhZ2VzOwoKc3RydWN0IHNobWVtX2lub2RlX2lu
Zm8gewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNl
bTsKICAgICAgICB1bnNpZ25lZCBsb25nIG5leHRfaW5kZXg7CiAgICAgICAgc3dwX2VudHJ5X3Qg
aV9kaXJlY3RbMTZdOwogICAgICAgIHZvaWQgKippX2luZGlyZWN0OwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc3dhcHBlZDsKICAgICAgICBpbnQgbG9ja2VkOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgbGlzdDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwp9OwoKc3RydWN0IHNobWVtX3Ni
X2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4X2Jsb2NrczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGZyZWVfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4X2lub2RlczsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGZyZWVfaW5vZGVzOwogICAgICAgIHNwaW5sb2NrX3Qgc3RhdF9s
b2NrOwp9OwojIDMxMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19pLmgiIDEK
IyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc21iX2ZzX2kuaCIKc3Ry
dWN0IHNtYl9pbm9kZV9pbmZvIHsKCgoKCgogICAgICAgIHVuc2lnbmVkIGludCBvcGVuOwogICAg
ICAgIF9fdTE2IGZpbGVpZDsKICAgICAgICBfX3UxNiBhdHRyOwoKICAgICAgICBfX3UxNiBhY2Nl
c3M7CiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBvbGRtdGltZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGNsb3NlZDsKICAgICAgICB1bnNpZ25lZCBvcGVuZXJzOwp9
OwojIDMxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2hmc19mc19pLmgiIDEKIyAxOSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaGZzX2ZzX2kuaCIKc3RydWN0IGhm
c19pbm9kZV9pbmZvIHsKICAgICAgICBpbnQgbWFnaWM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
bW11X3ByaXZhdGU7CiAgICAgICAgc3RydWN0IGhmc19jYXRfZW50cnkgKmVudHJ5OwoKCiAgICAg
ICAgc3RydWN0IGhmc19mb3JrICpmb3JrOwogICAgICAgIGludCBjb252ZXJ0OwoKCiAgICAgICAg
aW5vX3QgZmlsZV90eXBlOwogICAgICAgIGNoYXIgZGlyX3NpemU7CgoKICAgICAgICBjb25zdCBz
dHJ1Y3QgaGZzX2hkcl9sYXlvdXQgKmRlZmF1bHRfbGF5b3V0OwogICAgICAgIHN0cnVjdCBoZnNf
aGRyX2xheW91dCAqbGF5b3V0OwoKCiAgICAgICAgaW50IHR6X3NlY29uZHN3ZXN0OwoKCiAgICAg
ICAgdm9pZCAoKmRfZHJvcF9vcCkoc3RydWN0IGRlbnRyeSAqLCBjb25zdCBpbm9fdCk7Cn07CiMg
MzEzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYWRmc19mc19pLmgiIDEKIyAxMyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYWRmc19mc19pLmgiCnN0cnVjdCBhZGZz
X2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBwYXJlbnRfaWQ7CiAgICAgICAgX191MzIgbG9hZGFkZHI7CiAgICAgICAg
X191MzIgZXhlY2FkZHI7CiAgICAgICAgdW5zaWduZWQgaW50IGZpbGV0eXBlOwogICAgICAgIHVu
c2lnbmVkIGludCBhdHRyOwogICAgICAgIGludCBzdGFtcGVkOjE7Cn07CiMgMzE0ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mc19pLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mc19pLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvcW54dHlwZXMuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9xbnh0eXBlcy5oIgp0eXBlZGVmIF9fdTE2IHFueDRfbnh0bnRfdDsK
dHlwZWRlZiBfX3U4IHFueDRfZnR5cGVfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBfX3Uz
MiB4dG50X2JsazsKICAgICAgICBfX3UzMiB4dG50X3NpemU7Cn0gcW54NF94dG50X3Q7Cgp0eXBl
ZGVmIF9fdTE2IHFueDRfbW9kZV90Owp0eXBlZGVmIF9fdTE2IHFueDRfbXVpZF90Owp0eXBlZGVm
IF9fdTE2IHFueDRfbWdpZF90Owp0eXBlZGVmIF9fdTMyIHFueDRfb2ZmX3Q7CnR5cGVkZWYgX191
MTYgcW54NF9ubGlua190OwojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9xbng0X2ZzX2kuaCIgMgoKCgoKc3RydWN0IHFueDRfaW5vZGVfaW5mbyB7CiAgICAgICAgY2hh
ciBpX3Jlc2VydmVkWzE2XTsKICAgICAgICBxbng0X29mZl90IGlfc2l6ZTsKICAgICAgICBxbng0
X3h0bnRfdCBpX2ZpcnN0X3h0bnQ7CiAgICAgICAgX191MzIgaV94YmxrOwogICAgICAgIF9fczMy
IGlfZnRpbWU7CiAgICAgICAgX19zMzIgaV9tdGltZTsKICAgICAgICBfX3MzMiBpX2F0aW1lOwog
ICAgICAgIF9fczMyIGlfY3RpbWU7CiAgICAgICAgcW54NF9ueHRudF90IGlfbnVtX3h0bnRzOwog
ICAgICAgIHFueDRfbW9kZV90IGlfbW9kZTsKICAgICAgICBxbng0X211aWRfdCBpX3VpZDsKICAg
ICAgICBxbng0X21naWRfdCBpX2dpZDsKICAgICAgICBxbng0X25saW5rX3QgaV9ubGluazsKICAg
ICAgICBfX3U4IGlfemVyb1s0XTsKICAgICAgICBxbng0X2Z0eXBlX3QgaV90eXBlOwogICAgICAg
IF9fdTggaV9zdGF0dXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKfTsKIyAz
MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19pLmgiIDEKIyAxMCAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfaS5oIgp0eXBl
ZGVmIGVudW0gewoKCgogICAgaV9pdGVtX2tleV92ZXJzaW9uX21hc2sgPSAweDAwMDEsCgoKICAg
IGlfc3RhdF9kYXRhX3ZlcnNpb25fbWFzayA9IDB4MDAwMiwKCiAgICBpX3BhY2tfb25fY2xvc2Vf
bWFzayA9IDB4MDAwNCwKCiAgICBpX25vcGFja19tYXNrID0gMHgwMDA4LAoKCgogICAgaV9saW5r
X3NhdmVkX3VubGlua19tYXNrID0gMHgwMDEwLAogICAgaV9saW5rX3NhdmVkX3RydW5jYXRlX21h
c2sgPSAweDAwMjAKfSByZWlzZXJmc19pbm9kZV9mbGFnczsKCgpzdHJ1Y3QgcmVpc2VyZnNfaW5v
ZGVfaW5mbyB7CiAgICBfX3UzMiBpX2tleSBbNF07CgoKCiAgICBfX3UzMiBpX2ZsYWdzOwoKICAg
IF9fdTMyIGlfZmlyc3RfZGlyZWN0X2J5dGU7CgoKICAgIF9fdTMyIGlfYXR0cnM7CgogICAgaW50
IGlfcHJlYWxsb2NfYmxvY2s7CiAgICBpbnQgaV9wcmVhbGxvY19jb3VudDsKICAgIHN0cnVjdCBs
aXN0X2hlYWQgaV9wcmVhbGxvY19saXN0OwoKCiAgICBpbnQgbmV3X3BhY2tpbmdfbG9jYWxpdHk6
MTsKCgoKCgoKICAgIHVuc2lnbmVkIGxvbmcgaV90cmFuc19pZCA7CiAgICB1bnNpZ25lZCBsb25n
IGlfdHJhbnNfaW5kZXggOwp9OwojIDMxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Jm
c19mc19pLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYmZz
X2ZzX2kuaCIKc3RydWN0IGJmc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGlf
ZHNrX2lubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfc2Jsb2NrOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgaV9lYmxvY2s7Cn07CiMgMzE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWRm
X2ZzX2kuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZGZf
ZnNfaS5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgICAgICAgX191MzIgbG9naWNhbEJsb2NrTnVtOwog
ICAgICAgIF9fdTE2IHBhcnRpdGlvblJlZmVyZW5jZU51bTsKfSBfX2F0dHJpYnV0ZV9fICgocGFj
a2VkKSkgbGJfYWRkcjsKCgpzdHJ1Y3QgdWRmX2lub2RlX2luZm8KewogICAgICAgIGxvbmcgaV91
bXRpbWU7CiAgICAgICAgbG9uZyBpX3VjdGltZTsKICAgICAgICBsb25nIGlfY3J0aW1lOwogICAg
ICAgIGxvbmcgaV91Y3J0aW1lOwoKICAgICAgICBsYl9hZGRyIGlfbG9jYXRpb247CiAgICAgICAg
X191NjQgaV91bmlxdWU7CiAgICAgICAgX191MzIgaV9sZW5FQXR0cjsKICAgICAgICBfX3UzMiBp
X2xlbkFsbG9jOwogICAgICAgIF9fdTY0IGlfbGVuRXh0ZW50czsKICAgICAgICBfX3UzMiBpX25l
eHRfYWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2dvYWw7CiAgICAgICAg
dW5zaWduZWQgaV9hbGxvY190eXBlIDogMzsKICAgICAgICB1bnNpZ25lZCBpX2V4dGVuZGVkX2Zl
IDogMTsKICAgICAgICB1bnNpZ25lZCBpX3N0cmF0XzQwOTYgOiAxOwogICAgICAgIHVuc2lnbmVk
IGlfbmV3X2lub2RlIDogMTsKICAgICAgICB1bnNpZ25lZCByZXNlcnZlZCA6IDI2Owp9OwojIDMx
OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcF9mc19pLmgiIDEKIyAxNyAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmNwX2ZzX2kuaCIKc3RydWN0IG5jcF9pbm9k
ZV9pbmZvIHsKICAgICAgICBfX3UzMiBkaXJFbnROdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191MzIgRG9zRGlyTnVtIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTMyIHZvbE51bWJlciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBu
d2F0dHI7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBvcGVuX3NlbTsKICAgICAgICBhdG9taWNf
dCBvcGVuZWQ7CiAgICAgICAgaW50IGFjY2VzczsKICAgICAgICBfX3UzMiBzZXJ2ZXJfZmlsZV9o
YW5kbGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBvcGVuX2NyZWF0ZV9h
Y3Rpb24gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBmaWxlX2hhbmRsZVs2
XSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKIyAzMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9wcm9jX2ZzX2kuaCIgMQpzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHsKICAgICAgICBz
dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgICAgaW50ICgqcHJvY19nZXRfbGluaykoc3RydWN0IGlub2RlICosIHN0
cnVjdCBkZW50cnkgKiosIHN0cnVjdCB2ZnNtb3VudCAqKik7CiAgICAgICAgICAgICAgICBpbnQg
KCpwcm9jX3JlYWQpKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgY2hhciAqcGFnZSk7CiAgICAg
ICAgfSBvcDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZTsKfTsKIyAzMjAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC91c2JkZXZfZnNfaS5oIiAxCnN0cnVjdCB1c2JfZGV2aWNlOwpzdHJ1
Y3QgdXNiX2J1czsKCnN0cnVjdCB1c2JkZXZfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBkbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JfZGV2aWNlICpkZXY7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgdXNiX2J1cyAqYnVzOwogICAgICAgIH0gcDsKfTsKIyAzMjEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9qZmZzMl9mc19pLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvamZmczJfZnNfaS5oIgpzdHJ1Y3QgamZmczJfaW5vZGVfaW5m
byB7CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2ku
aCIKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIF9fdTMyIGhpZ2hlc3Rf
dmVyc2lvbjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcgKmZyYWdsaXN0OwoKCgoK
CgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0YTsKCgogICAgICAgIHN0
cnVjdCBqZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBzdHJ1Y3QgamZmczJfaW5v
ZGVfY2FjaGUgKmlub2NhY2hlOwoKCgoKCiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgX191
OCB1c2VyY29tcHI7Cn07CiMgMzIyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY3JhbWZz
X2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IGNyYW1mc19zYl9pbmZvIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBtYWdpYzsKICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBzaXplOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJs
b2NrczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmaWxlczsKICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKfTsKIyAzMjMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAzNDkgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0cnVjdCBpYXR0ciB7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGlhX3ZhbGlkOwogICAgICAgIHVtb2RlX3QgaWFfbW9kZTsKICAgICAgICB1aWRfdCBp
YV91aWQ7CiAgICAgICAgZ2lkX3QgaWFfZ2lkOwogICAgICAgIGxvZmZfdCBpYV9zaXplOwogICAg
ICAgIHRpbWVfdCBpYV9hdGltZTsKICAgICAgICB0aW1lX3QgaWFfbXRpbWU7CiAgICAgICAgdGlt
ZV90IGlhX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBpYV9hdHRyX2ZsYWdzOwp9OwojIDM3
MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xdW90YS5oIiAxCiMgNDIgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9lcnJuby5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvZXJybm8uaCIgMgojIDQzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9xdW90YS5oIiAyCiMgMTA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9xdW90YS5oIgpzdHJ1Y3QgZHFibGsgewogICAgICAgIF9fdTMyIGRxYl9iaGFyZGxpbWl0Owog
ICAgICAgIF9fdTMyIGRxYl9ic29mdGxpbWl0OwogICAgICAgIF9fdTMyIGRxYl9jdXJibG9ja3M7
CiAgICAgICAgX191MzIgZHFiX2loYXJkbGltaXQ7CiAgICAgICAgX191MzIgZHFiX2lzb2Z0bGlt
aXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmlub2RlczsKICAgICAgICB0aW1lX3QgZHFiX2J0aW1l
OwogICAgICAgIHRpbWVfdCBkcWJfaXRpbWU7Cn07CiMgMTM0ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgZHFzdGF0cyB7CiAgICAgICAgX191MzIg
bG9va3VwczsKICAgICAgICBfX3UzMiBkcm9wczsKICAgICAgICBfX3UzMiByZWFkczsKICAgICAg
ICBfX3UzMiB3cml0ZXM7CiAgICAgICAgX191MzIgY2FjaGVfaGl0czsKICAgICAgICBfX3UzMiBh
bGxvY2F0ZWRfZHF1b3RzOwogICAgICAgIF9fdTMyIGZyZWVfZHF1b3RzOwogICAgICAgIF9fdTMy
IHN5bmNzOwp9OwoKCgpleHRlcm4gaW50IG5yX2RxdW90cywgbnJfZnJlZV9kcXVvdHM7CmV4dGVy
biBpbnQgZHF1b3Rfcm9vdF9zcXVhc2g7CiMgMTU5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgZHF1b3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgZHFfaGFzaDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRxX2ludXNlOwogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgZHFfZnJlZTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0
X2xvY2s7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZHFfd2FpdF9mcmVlOwogICAgICAgIGlu
dCBkcV9jb3VudDsKCgogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqZHFfc2I7CiAgICAgICAg
dW5zaWduZWQgaW50IGRxX2lkOwogICAgICAgIGtkZXZfdCBkcV9kZXY7CiAgICAgICAgc2hvcnQg
ZHFfdHlwZTsKICAgICAgICBzaG9ydCBkcV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRx
X3JlZmVyZW5jZWQ7CgogICAgICAgIHN0cnVjdCBkcWJsayBkcV9kcWI7Cn07CiMgMzc0ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCgoKCgoKc3RydWN0IHBhZ2U7
CnN0cnVjdCBhZGRyZXNzX3NwYWNlOwpzdHJ1Y3Qga2lvYnVmOwoKc3RydWN0IGFkZHJlc3Nfc3Bh
Y2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqd3JpdGVwYWdlKShzdHJ1Y3QgcGFnZSAqKTsK
ICAgICAgICBpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKik7CiAg
ICAgICAgaW50ICgqc3luY19wYWdlKShzdHJ1Y3QgcGFnZSAqKTsKCgoKCiAgICAgICAgaW50ICgq
cHJlcGFyZV93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVu
c2lnbmVkKTsKICAgICAgICBpbnQgKCpjb21taXRfd3JpdGUpKHN0cnVjdCBmaWxlICosIHN0cnVj
dCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CgogICAgICAgIGludCAoKmJtYXApKHN0cnVj
dCBhZGRyZXNzX3NwYWNlICosIGxvbmcpOwogICAgICAgIGludCAoKmZsdXNocGFnZSkgKHN0cnVj
dCBwYWdlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKnJlbGVhc2VwYWdlKSAoc3Ry
dWN0IHBhZ2UgKiwgaW50KTsKCiAgICAgICAgaW50ICgqZGlyZWN0X0lPKShpbnQsIHN0cnVjdCBp
bm9kZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2lnbmVkIGxvbmcsIGludCk7Cn07CgpzdHJ1Y3Qg
YWRkcmVzc19zcGFjZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjbGVhbl9wYWdlczsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X3BhZ2VzOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgbG9ja2VkX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbnJwYWdlczsKICAgICAgICBz
dHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zICphX29wczsKICAgICAgICBzdHJ1Y3QgaW5v
ZGUgKmhvc3Q7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXA7CiAgICAgICAg
c3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXBfc2hhcmVkOwogICAgICAgIHNwaW5sb2NrX3Qg
aV9zaGFyZWRfbG9jazsKICAgICAgICBpbnQgZ2ZwX21hc2s7Cn07CgpzdHJ1Y3QgY2hhcl9kZXZp
Y2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaGFzaDsKICAgICAgICBhdG9taWNfdCBjb3Vu
dDsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAgYXRvbWljX3Qgb3BlbmVyczsKICAgICAgICBz
dHJ1Y3Qgc2VtYXBob3JlIHNlbTsKfTsKCnN0cnVjdCBibG9ja19kZXZpY2UgewogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgYmRfaGFzaDsKICAgICAgICBhdG9taWNfdCBiZF9jb3VudDsKICAgICAg
ICBzdHJ1Y3QgaW5vZGUgKiBiZF9pbm9kZTsKICAgICAgICBkZXZfdCBiZF9kZXY7CiAgICAgICAg
aW50IGJkX29wZW5lcnM7CiAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRp
b25zICpiZF9vcDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGJkX3NlbTsKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIGJkX2lub2RlczsKfTsKCnN0cnVjdCBpbm9kZSB7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBpX2hhc2g7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2xpc3Q7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBpX2RlbnRyeTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBp
X2RpcnR5X2J1ZmZlcnM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2RhdGFfYnVm
ZmVyczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2lubzsKICAgICAgICBhdG9taWNfdCBpX2Nv
dW50OwogICAgICAgIGtkZXZfdCBpX2RldjsKICAgICAgICB1bW9kZV90IGlfbW9kZTsKICAgICAg
ICBubGlua190IGlfbmxpbms7CiAgICAgICAgdWlkX3QgaV91aWQ7CiAgICAgICAgZ2lkX3QgaV9n
aWQ7CiAgICAgICAga2Rldl90IGlfcmRldjsKICAgICAgICBsb2ZmX3QgaV9zaXplOwogICAgICAg
IHRpbWVfdCBpX2F0aW1lOwogICAgICAgIHRpbWVfdCBpX210aW1lOwogICAgICAgIHRpbWVfdCBp
X2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBpX2Jsa2JpdHM7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBpX2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Jsb2NrczsKICAgICAgICB1
bnNpZ25lZCBsb25nIGlfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2VtOwog
ICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV96b21iaWU7CiAgICAgICAgc3RydWN0IGlub2RlX29w
ZXJhdGlvbnMgKmlfb3A7CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7CiAg
ICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICppX3NiOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90
IGlfd2FpdDsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICppX2Zsb2NrOwogICAgICAgIHN0cnVj
dCBhZGRyZXNzX3NwYWNlICppX21hcHBpbmc7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2Ug
aV9kYXRhOwogICAgICAgIHN0cnVjdCBkcXVvdCAqaV9kcXVvdFsyXTsKCiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBpX2RldmljZXM7CiAgICAgICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqaV9w
aXBlOwogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmlfYmRldjsKICAgICAgICBzdHJ1Y3Qg
Y2hhcl9kZXZpY2UgKmlfY2RldjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Rub3RpZnlfbWFz
azsKICAgICAgICBzdHJ1Y3QgZG5vdGlmeV9zdHJ1Y3QgKmlfZG5vdGlmeTsKCiAgICAgICAgdW5z
aWduZWQgbG9uZyBpX3N0YXRlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgaV9mbGFnczsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGlfc29jazsKCiAgICAgICAgYXRvbWljX3QgaV93cml0ZWNvdW50Owog
ICAgICAgIHVuc2lnbmVkIGludCBpX2F0dHJfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW5lcmF0
aW9uOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9pbm9kZV9p
bmZvIG1pbml4X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIGV4dDJf
aTsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX2lub2RlX2luZm8gZXh0M19pOwogICAgICAg
ICAgICAgICAgc3RydWN0IGhwZnNfaW5vZGVfaW5mbyBocGZzX2k7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgbnRmc19pbm9kZV9pbmZvIG50ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rv
c19pbm9kZV9pbmZvIG1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdW1zZG9zX2lub2Rl
X2luZm8gdW1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXNvX2lub2RlX2luZm8gaXNv
ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfaW5vZGVfaW5mbyBuZnNfaTsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBzeXN2X2lub2RlX2luZm8gc3lzdl9pOwogICAgICAgICAgICAgICAg
c3RydWN0IGFmZnNfaW5vZGVfaW5mbyBhZmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWZz
X2lub2RlX2luZm8gdWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZWZzX2lub2RlX2luZm8g
ZWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyByb21mc19pOwog
ICAgICAgICAgICAgICAgc3RydWN0IHNobWVtX2lub2RlX2luZm8gc2htZW1faTsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBjb2RhX2lub2RlX2luZm8gY29kYV9pOwogICAgICAgICAgICAgICAgc3Ry
dWN0IHNtYl9pbm9kZV9pbmZvIHNtYmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaGZzX2lu
b2RlX2luZm8gaGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRmc19pbm9kZV9pbmZvIGFk
ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2luZm8gcW54NF9pOwogICAg
ICAgICAgICAgICAgc3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8gcmVpc2VyZnNfaTsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBiZnNfaW5vZGVfaW5mbyBiZnNfaTsKICAgICAgICAgICAgICAgIHN0
cnVjdCB1ZGZfaW5vZGVfaW5mbyB1ZGZfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3BfaW5v
ZGVfaW5mbyBuY3Bmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHByb2NfaW5vZGVfaW5mbyBw
cm9jX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2V0IHNvY2tldF9pOwogICAgICAgICAg
ICAgICAgc3RydWN0IHVzYmRldl9pbm9kZV9pbmZvIHVzYmRldl9pOwogICAgICAgICAgICAgICAg
c3RydWN0IGpmZnMyX2lub2RlX2luZm8gamZmczJfaTsKICAgICAgICAgICAgICAgIHZvaWQgKmdl
bmVyaWNfaXA7CiAgICAgICAgfSB1Owp9OwoKc3RydWN0IGZvd25fc3RydWN0IHsKICAgICAgICBp
bnQgcGlkOwogICAgICAgIHVpZF90IHVpZCwgZXVpZDsKICAgICAgICBpbnQgc2lnbnVtOwp9OwoK
c3RydWN0IGZpbGUgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZl9saXN0OwogICAgICAgIHN0
cnVjdCBkZW50cnkgKmZfZGVudHJ5OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqZl92ZnNtbnQ7
CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZl9vcDsKICAgICAgICBhdG9taWNfdCBm
X2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBmX2ZsYWdzOwogICAgICAgIG1vZGVfdCBmX21v
ZGU7CiAgICAgICAgbG9mZl90IGZfcG9zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9yZWFkYSwg
Zl9yYW1heCwgZl9yYWVuZCwgZl9yYWxlbiwgZl9yYXdpbjsKICAgICAgICBzdHJ1Y3QgZm93bl9z
dHJ1Y3QgZl9vd25lcjsKICAgICAgICB1bnNpZ25lZCBpbnQgZl91aWQsIGZfZ2lkOwogICAgICAg
IGludCBmX2Vycm9yOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZfdmVyc2lvbjsKCgogICAgICAg
IHZvaWQgKnByaXZhdGVfZGF0YTsKCgogICAgICAgIHN0cnVjdCBraW9idWYgKmZfaW9idWY7CiAg
ICAgICAgbG9uZyBmX2lvYnVmX2xvY2s7Cn07CmV4dGVybiBzcGlubG9ja190IGZpbGVzX2xvY2s7
CgoKCgoKCmV4dGVybiBpbnQgaW5pdF9wcml2YXRlX2ZpbGUoc3RydWN0IGZpbGUgKiwgc3RydWN0
IGRlbnRyeSAqLCBpbnQpOwojIDU3OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmbF9vd25lcl90OwoKc3RydWN0
IGZpbGVfbG9jayB7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqZmxfbmV4dDsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGZsX2xpbms7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmbF9ibG9j
azsKICAgICAgICBmbF9vd25lcl90IGZsX293bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBmbF9w
aWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZmxfd2FpdDsKICAgICAgICBzdHJ1Y3QgZmls
ZSAqZmxfZmlsZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZsX2ZsYWdzOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgZmxfdHlwZTsKICAgICAgICBsb2ZmX3QgZmxfc3RhcnQ7CiAgICAgICAgbG9mZl90
IGZsX2VuZDsKCiAgICAgICAgdm9pZCAoKmZsX25vdGlmeSkoc3RydWN0IGZpbGVfbG9jayAqKTsK
ICAgICAgICB2b2lkICgqZmxfaW5zZXJ0KShzdHJ1Y3QgZmlsZV9sb2NrICopOwogICAgICAgIHZv
aWQgKCpmbF9yZW1vdmUpKHN0cnVjdCBmaWxlX2xvY2sgKik7CgogICAgICAgIHN0cnVjdCBmYXN5
bmNfc3RydWN0ICogZmxfZmFzeW5jOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxfYnJlYWtfdGlt
ZTsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IG5mc19sb2NrX2luZm8g
bmZzX2ZsOwogICAgICAgIH0gZmxfdTsKfTsKIyA2MTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVfbG9ja19saXN0
OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mY250bC5oIiAxCgoK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2ZjbnRsLmgiIDEKIyA2OSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2ZjbnRsLmgiCnN0cnVjdCBmbG9jayB7
CiAgICAgICAgc2hvcnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAgICAgIG9m
Zl90IGxfc3RhcnQ7CiAgICAgICAgb2ZmX3QgbF9sZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07
CgpzdHJ1Y3QgZmxvY2s2NCB7CiAgICAgICAgc2hvcnQgbF90eXBlOwogICAgICAgIHNob3J0IGxf
d2hlbmNlOwogICAgICAgIGxvZmZfdCBsX3N0YXJ0OwogICAgICAgIGxvZmZfdCBsX2xlbjsKICAg
ICAgICBwaWRfdCBsX3BpZDsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9mY250bC5oIiAyCiMgNjE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9mcy5oIiAyCgpleHRlcm4gaW50IGZjbnRsX2dldGxrKHVuc2lnbmVkIGludCwgc3RydWN0IGZs
b2NrICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxrKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50
LCBzdHJ1Y3QgZmxvY2sgKik7CgpleHRlcm4gaW50IGZjbnRsX2dldGxrNjQodW5zaWduZWQgaW50
LCBzdHJ1Y3QgZmxvY2s2NCAqKTsKZXh0ZXJuIGludCBmY250bF9zZXRsazY0KHVuc2lnbmVkIGlu
dCwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2s2NCAqKTsKCgpleHRlcm4gdm9pZCBsb2Nrc19p
bml0X2xvY2soc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9ja3NfY29weV9sb2Nr
KHN0cnVjdCBmaWxlX2xvY2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9j
a3NfcmVtb3ZlX3Bvc2l4KHN0cnVjdCBmaWxlICosIGZsX293bmVyX3QpOwpleHRlcm4gdm9pZCBs
b2Nrc19yZW1vdmVfZmxvY2soc3RydWN0IGZpbGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZV9sb2Nr
ICpwb3NpeF90ZXN0X2xvY2soc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0
ZXJuIGludCBwb3NpeF9sb2NrX2ZpbGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAq
LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBwb3NpeF9ibG9ja19sb2NrKHN0cnVjdCBmaWxl
X2xvY2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgcG9zaXhfdW5ibG9ja19s
b2NrKHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQgcG9zaXhfbG9ja3NfZGVhZGxvY2so
c3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IF9fZ2V0
X2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBmbGFncyk7CmV4dGVybiB0
aW1lX3QgbGVhc2VfZ2V0X210aW1lKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBsb2NrX21h
eV9yZWFkKHN0cnVjdCBpbm9kZSAqLCBsb2ZmX3Qgc3RhcnQsIHVuc2lnbmVkIGxvbmcgY291bnQp
OwpleHRlcm4gaW50IGxvY2tfbWF5X3dyaXRlKHN0cnVjdCBpbm9kZSAqLCBsb2ZmX3Qgc3RhcnQs
IHVuc2lnbmVkIGxvbmcgY291bnQpOwoKc3RydWN0IGZhc3luY19zdHJ1Y3QgewogICAgICAgIGlu
dCBtYWdpYzsKICAgICAgICBpbnQgZmFfZmQ7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3Qg
KmZhX25leHQ7CiAgICAgICAgc3RydWN0IGZpbGUgKmZhX2ZpbGU7Cn07CgoKCgpleHRlcm4gaW50
IGZhc3luY19oZWxwZXIoaW50LCBzdHJ1Y3QgZmlsZSAqLCBpbnQsIHN0cnVjdCBmYXN5bmNfc3Ry
dWN0ICoqKTsKCmV4dGVybiB2b2lkIGtpbGxfZmFzeW5jKHN0cnVjdCBmYXN5bmNfc3RydWN0ICoq
LCBpbnQsIGludCk7CgpleHRlcm4gdm9pZCBfX2tpbGxfZmFzeW5jKHN0cnVjdCBmYXN5bmNfc3Ry
dWN0ICosIGludCwgaW50KTsKCnN0cnVjdCBuYW1laWRhdGEgewogICAgICAgIHN0cnVjdCBkZW50
cnkgKmRlbnRyeTsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udDsKICAgICAgICBzdHJ1Y3Qg
cXN0ciBsYXN0OwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBpbnQgbGFzdF90
eXBlOwp9OwoKCgoKc3RydWN0IHF1b3RhX21vdW50X29wdGlvbnMKewogICAgICAgIHVuc2lnbmVk
IGludCBmbGFnczsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGRxaW9fc2VtOwogICAgICAgIHN0
cnVjdCBzZW1hcGhvcmUgZHFvZmZfc2VtOwogICAgICAgIHN0cnVjdCBmaWxlICpmaWxlc1syXTsK
ICAgICAgICB0aW1lX3QgaW5vZGVfZXhwaXJlWzJdOwogICAgICAgIHRpbWVfdCBibG9ja19leHBp
cmVbMl07CiAgICAgICAgY2hhciByc3F1YXNoWzJdOwp9OwojIDY4MyAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9taW5peF9mc19zYi5oIiAxCgoKCgoKCnN0cnVjdCBtaW5peF9zYl9pbmZvIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX25pbm9kZXM7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19uem9uZXM7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19pbWFwX2Jsb2NrczsKICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBzX3ptYXBfYmxvY2tzOwogICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIHNfZmlyc3RkYXRhem9uZTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBzX2xvZ196b25lX3NpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgc19tYXhfc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNfZGlyc2l6
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNfbmFtZWxlbjsKICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHNfbGlua19tYXg7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBi
dWZmZXJfaGVhZCAqKiBzX2ltYXA7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZm
ZXJfaGVhZCAqKiBzX3ptYXA7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqIHNfc2JoOwogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWluaXhfc3VwZXJf
YmxvY2sgKiBzX21zOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX21v
dW50X3N0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX3ZlcnNp
b247Cn07CiMgNjg0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZXh0Ml9mc19zYi5oIiAx
CiMgMzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2V4dDJfZnNfc2IuaCIK
c3RydWN0IGV4dDJfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdfc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ3NfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19w
ZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Jsb2Nrc19wZXJfZ3JvdXA7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzX2lub2Rlc19wZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX2l0Yl9wZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2dkYl9jb3VudDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNfZGVzY19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX2dyb3Vwc19jb3VudDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX3NiaDsKICAg
ICAgICBzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqIHNfZXM7CiAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICoqIHNfZ3JvdXBfZGVzYzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2xvYWRlZF9p
bm9kZV9iaXRtYXBzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9hZGVkX2Jsb2NrX2JpdG1h
cHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2lub2RlX2JpdG1hcF9udW1iZXJbOF07CiAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19pbm9kZV9iaXRtYXBbOF07CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzX2Jsb2NrX2JpdG1hcF9udW1iZXJbOF07CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9o
ZWFkICogc19ibG9ja19iaXRtYXBbOF07CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX21vdW50X29w
dDsKICAgICAgICB1aWRfdCBzX3Jlc3VpZDsKICAgICAgICBnaWRfdCBzX3Jlc2dpZDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNf
cGFkOwogICAgICAgIGludCBzX2FkZHJfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgaW50IHNfZGVz
Y19wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQgc19pbm9kZV9zaXplOwogICAgICAgIGludCBz
X2ZpcnN0X2lubzsKfTsKIyA2ODUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9leHQzX2Zz
X3NiLmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZXh0M19m
c19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWVyLmgi
IDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGltZXIuaCIKc3Ry
dWN0IHRpbWVyX2xpc3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICB1
bnNpZ25lZCBsb25nIGV4cGlyZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhOwogICAgICAg
IHZvaWQgKCpmdW5jdGlvbikodW5zaWduZWQgbG9uZyk7Cn07CgpleHRlcm4gdm9pZCBhZGRfdGlt
ZXIoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CmV4dGVybiBpbnQgZGVsX3RpbWVyKHN0cnVj
dCB0aW1lcl9saXN0ICogdGltZXIpOwojIDQxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC90aW1lci5oIgppbnQgbW9kX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lciwg
dW5zaWduZWQgbG9uZyBleHBpcmVzKTsKCmV4dGVybiB2b2lkIGl0X3JlYWxfZm4odW5zaWduZWQg
bG9uZyk7CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAq
IHRpbWVyKQp7CiAgICAgICAgdGltZXItPmxpc3QubmV4dCA9IHRpbWVyLT5saXN0LnByZXYgPSAo
KHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBpbnQgdGltZXJfcGVuZGluZyAoY29uc3Qgc3Ry
dWN0IHRpbWVyX2xpc3QgKiB0aW1lcikKewogICAgICAgIHJldHVybiB0aW1lci0+bGlzdC5uZXh0
ICE9ICgodm9pZCAqKTApOwp9CiMgMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L2V4dDNfZnNfc2IuaCIgMgojIDM1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9leHQzX2ZzX3NiLmgiCnN0cnVjdCBleHQzX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVk
IGxvbmcgc19mcmFnX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9ibG9j
azsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ibG9jazsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNfZnJhZ3NfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9j
a3NfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19pbm9kZXNfcGVyX2dyb3VwOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19pdGJfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc19nZGJfY291bnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Rlc2NfcGVyX2Jsb2NrOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19ncm91cHNfY291bnQ7CiAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICogc19zYmg7CiAgICAgICAgc3RydWN0IGV4dDNfc3VwZXJfYmxvY2sgKiBzX2VzOwog
ICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBzX2dyb3VwX2Rlc2M7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc19sb2FkZWRfaW5vZGVfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
X2xvYWRlZF9ibG9ja19iaXRtYXBzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19pbm9kZV9iaXRt
YXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfaW5vZGVfYml0bWFw
WzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja19iaXRtYXBfbnVtYmVyWzhdOwogICAg
ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfYmxvY2tfYml0bWFwWzhdOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc19tb3VudF9vcHQ7CiAgICAgICAgdWlkX3Qgc19yZXN1aWQ7CiAgICAgICAgZ2lk
X3Qgc19yZXNnaWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19tb3VudF9zdGF0ZTsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzX3BhZDsKICAgICAgICBpbnQgc19hZGRyX3Blcl9ibG9ja19iaXRz
OwogICAgICAgIGludCBzX2Rlc2NfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgaW50IHNfaW5vZGVf
c2l6ZTsKICAgICAgICBpbnQgc19maXJzdF9pbm87CiAgICAgICAgdTMyIHNfbmV4dF9nZW5lcmF0
aW9uOwoKCiAgICAgICAgc3RydWN0IGlub2RlICogc19qb3VybmFsX2lub2RlOwogICAgICAgIHN0
cnVjdCBqb3VybmFsX3MgKiBzX2pvdXJuYWw7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX29y
cGhhbjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfY29tbWl0X2ludGVydmFsOwogICAgICAgIHN0
cnVjdCBibG9ja19kZXZpY2UgKmpvdXJuYWxfYmRldjsKCgoKCn07CiMgNjg2ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvaHBmc19mc19zYi5oIiAxCgoKCnN0cnVjdCBocGZzX3NiX2luZm8g
ewogICAgICAgIGlub190IHNiX3Jvb3Q7CiAgICAgICAgdW5zaWduZWQgc2JfZnNfc2l6ZTsKICAg
ICAgICB1bnNpZ25lZCBzYl9iaXRtYXBzOwogICAgICAgIHVuc2lnbmVkIHNiX2RpcmJhbmRfc3Rh
cnQ7CiAgICAgICAgdW5zaWduZWQgc2JfZGlyYmFuZF9zaXplOwogICAgICAgIHVuc2lnbmVkIHNi
X2RtYXA7CiAgICAgICAgdW5zaWduZWQgc2Jfbl9mcmVlOwogICAgICAgIHVuc2lnbmVkIHNiX25f
ZnJlZV9kbm9kZXM7CiAgICAgICAgdWlkX3Qgc2JfdWlkOwogICAgICAgIGdpZF90IHNiX2dpZDsK
ICAgICAgICB1bW9kZV90IHNiX21vZGU7CiAgICAgICAgdW5zaWduZWQgc2JfY29udiA6IDI7CiAg
ICAgICAgdW5zaWduZWQgc2JfZWFzIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9lcnIgOiAyOwog
ICAgICAgIHVuc2lnbmVkIHNiX2NoayA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfbG93ZXJjYXNl
IDogMTsKICAgICAgICB1bnNpZ25lZCBzYl93YXNfZXJyb3IgOiAxOwogICAgICAgIHVuc2lnbmVk
IHNiX2Noa2RzayA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfcmRfZm5vZGUgOiAyOwogICAgICAg
IHVuc2lnbmVkIHNiX3JkX2lub2RlIDogMjsKCgogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHNi
X2lnZXRfcTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpzYl9jcF90YWJsZTsKCgogICAgICAgIHVu
c2lnbmVkICpzYl9ibXBfZGlyOwogICAgICAgIHVuc2lnbmVkIHNiX2NfYml0bWFwOwogICAgICAg
IHdhaXRfcXVldWVfaGVhZF90IHNiX2NyZWF0aW9uX2RlOwoKICAgICAgICB1bnNpZ25lZCBzYl9j
cmVhdGlvbl9kZV9sb2NrIDogMTsKCiAgICAgICAgaW50IHNiX3RpbWVzaGlmdDsKfTsKIyA2ODcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9udGZzX2ZzX3NiLmgiIDEKCgoKCgpzdHJ1Y3Qg
bnRmc19zYl9pbmZvewoKICAgICAgICBudGZzX3VpZF90IHVpZDsKICAgICAgICBudGZzX2dpZF90
IGdpZDsKICAgICAgICBudG1vZGVfdCB1bWFzazsKICAgICAgICB2b2lkICpubHNfbWFwOwogICAg
ICAgIHVuc2lnbmVkIGludCBuZ3Q7CiAgICAgICAgY2hhciBtZnRfem9uZV9tdWx0aXBsaWVyOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbWZ0X2RhdGFfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90
IG1mdF96b25lX3BvczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBtZnRfem9uZV9zdGFydDsKICAg
ICAgICBudGZzX2NsdXN0ZXJfdCBtZnRfem9uZV9lbmQ7CiAgICAgICAgbnRmc19jbHVzdGVyX3Qg
ZGF0YTFfem9uZV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgZGF0YTJfem9uZV9wb3M7CgoK
ICAgICAgICBudGZzX3NpemVfdCBwYXJ0aXRpb25fYmlhczsKCiAgICAgICAgbnRmc191MzIgYXRf
c3RhbmRhcmRfaW5mb3JtYXRpb247CiAgICAgICAgbnRmc191MzIgYXRfYXR0cmlidXRlX2xpc3Q7
CiAgICAgICAgbnRmc191MzIgYXRfZmlsZV9uYW1lOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVt
ZV92ZXJzaW9uOwogICAgICAgIG50ZnNfdTMyIGF0X3NlY3VyaXR5X2Rlc2NyaXB0b3I7CiAgICAg
ICAgbnRmc191MzIgYXRfdm9sdW1lX25hbWU7CiAgICAgICAgbnRmc191MzIgYXRfdm9sdW1lX2lu
Zm9ybWF0aW9uOwogICAgICAgIG50ZnNfdTMyIGF0X2RhdGE7CiAgICAgICAgbnRmc191MzIgYXRf
aW5kZXhfcm9vdDsKICAgICAgICBudGZzX3UzMiBhdF9pbmRleF9hbGxvY2F0aW9uOwogICAgICAg
IG50ZnNfdTMyIGF0X2JpdG1hcDsKICAgICAgICBudGZzX3UzMiBhdF9zeW1saW5rOwoKICAgICAg
ICBpbnQgc2VjdG9yX3NpemU7CiAgICAgICAgaW50IGNsdXN0ZXJfc2l6ZTsKICAgICAgICBpbnQg
Y2x1c3Rlcl9zaXplX2JpdHM7CiAgICAgICAgaW50IG1mdF9jbHVzdGVyc19wZXJfcmVjb3JkOwog
ICAgICAgIGludCBtZnRfcmVjb3JkX3NpemU7CiAgICAgICAgaW50IG1mdF9yZWNvcmRfc2l6ZV9i
aXRzOwogICAgICAgIGludCBpbmRleF9jbHVzdGVyc19wZXJfcmVjb3JkOwogICAgICAgIGludCBp
bmRleF9yZWNvcmRfc2l6ZTsKICAgICAgICBpbnQgaW5kZXhfcmVjb3JkX3NpemVfYml0czsKICAg
ICAgICBudGZzX2NsdXN0ZXJfdCBucl9jbHVzdGVyczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBt
ZnRfbGNuOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF9taXJyX2xjbjsKCiAgICAgICAgdW5z
aWduZWQgY2hhciAqbWZ0OwogICAgICAgIHVuc2lnbmVkIHNob3J0ICp1cGNhc2U7CiAgICAgICAg
dW5zaWduZWQgaW50IHVwY2FzZV9sZW5ndGg7CgogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2lu
Zm8gKm1mdF9pbm87CiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyAqbWZ0bWlycjsKICAg
ICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICpiaXRtYXA7CiAgICAgICAgc3RydWN0IHN1cGVy
X2Jsb2NrICpzYjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlub19mbGFnczsKfTsKIyA2ODggIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAxCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mYXRfY3ZmLmgiIDEKCgoKCgpzdHJ1Y3QgY3Zm
X2Zvcm1hdAp7IGludCBjdmZfdmVyc2lvbjsKICBjaGFyKiBjdmZfdmVyc2lvbl90ZXh0OwogIHVu
c2lnbmVkIGxvbmcgZmxhZ3M7CiAgaW50ICgqZGV0ZWN0X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9j
aypzYik7CiAgaW50ICgqbW91bnRfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGNoYXIqb3B0
aW9ucyk7CiAgaW50ICgqdW5tb3VudF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IpOwogIHN0
cnVjdCBidWZmZXJfaGVhZCogKCpjdmZfYnJlYWQpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsaW50
IGJsb2NrKTsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQqICgqY3ZmX2dldGJsaykgKHN0cnVjdCBzdXBl
cl9ibG9jaypzYixpbnQgYmxvY2spOwogIHZvaWQgKCpjdmZfYnJlbHNlKSAoc3RydWN0IHN1cGVy
X2Jsb2NrICpzYixzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKICB2b2lkICgqY3ZmX21hcmtfYnVm
ZmVyX2RpcnR5KSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7CiAgdm9pZCAoKmN2Zl9zZXRfdXB0b2Rh
dGUpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGJ1ZmZlcl9oZWFkICpiaCwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWwpOwog
IGludCAoKmN2Zl9pc191cHRvZGF0ZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Isc3RydWN0IGJ1
ZmZlcl9oZWFkICpiaCk7CiAgdm9pZCAoKmN2Zl9sbF9yd19ibG9jaykgKHN0cnVjdCBzdXBlcl9i
bG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBuYnJlcSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICpiaFszMl0pOwogIGludCAoKmZhdF9hY2Nlc3MpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KnNiLGludCBucixpbnQgbmV3X3ZhbHVlKTsKICBpbnQgKCpjdmZfc3RhdGZzKSAoc3RydWN0IHN1
cGVyX2Jsb2NrICpzYixzdHJ1Y3Qgc3RhdGZzICpidWYsIGludCBidWZzaXopOwogIGludCAoKmN2
Zl9ibWFwKSAoc3RydWN0IGlub2RlICppbm9kZSxpbnQgYmxvY2spOwogIHNzaXplX3QgKCpjdmZf
ZmlsZV9yZWFkKSAoIHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAg
c3NpemVfdCAoKmN2Zl9maWxlX3dyaXRlKSAoIHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwg
c2l6ZV90LCBsb2ZmX3QgKik7CiAgaW50ICgqY3ZmX21tYXApIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1
Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CiAgaW50ICgqY3ZmX3JlYWRwYWdlKSAoc3RydWN0IGlub2Rl
ICosIHN0cnVjdCBwYWdlICopOwogIGludCAoKmN2Zl93cml0ZXBhZ2UpIChzdHJ1Y3QgaW5vZGUg
Kiwgc3RydWN0IHBhZ2UgKik7CiAgaW50ICgqY3ZmX2Rpcl9pb2N0bCkgKHN0cnVjdCBpbm9kZSAq
IGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKICB2b2lkICgqemVyb19vdXRfY2x1c3Rl
cikgKHN0cnVjdCBpbm9kZSosIGludCBjbHVzdGVybnIpOwp9OwoKaW50IHJlZ2lzdGVyX2N2Zl9m
b3JtYXQoc3RydWN0IGN2Zl9mb3JtYXQqY3ZmX2Zvcm1hdCk7CmludCB1bnJlZ2lzdGVyX2N2Zl9m
b3JtYXQoc3RydWN0IGN2Zl9mb3JtYXQqY3ZmX2Zvcm1hdCk7CnZvaWQgZGVjX2N2Zl9mb3JtYXRf
dXNlX2NvdW50X2J5X3ZlcnNpb24oaW50IHZlcnNpb24pOwppbnQgZGV0ZWN0X2N2ZihzdHJ1Y3Qg
c3VwZXJfYmxvY2sqc2IsY2hhcipmb3JjZSk7CgpleHRlcm4gc3RydWN0IGN2Zl9mb3JtYXQgKmN2
Zl9mb3JtYXRzW107CmV4dGVybiBpbnQgY3ZmX2Zvcm1hdF91c2VfY291bnRbXTsKIyA0ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAyCgoKCgoKc3Ry
dWN0IGZhdF9tb3VudF9vcHRpb25zIHsKICAgICAgICB1aWRfdCBmc191aWQ7CiAgICAgICAgZ2lk
X3QgZnNfZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzX3VtYXNrOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGNvZGVwYWdlOwogICAgICAgIGNoYXIgKmlvY2hhcnNldDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBzaG9ydG5hbWU7CiAgICAgICAgdW5zaWduZWQgY2hhciBuYW1lX2NoZWNrOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgY29udmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBxdWlldDox
LAogICAgICAgICAgICAgICAgIHNob3dleGVjOjEsCiAgICAgICAgICAgICAgICAgc3lzX2ltbXV0
YWJsZToxLAogICAgICAgICAgICAgICAgIGRvdHNPSzoxLAogICAgICAgICAgICAgICAgIGlzdmZh
dDoxLAogICAgICAgICAgICAgICAgIHV0Zjg6MSwKICAgICAgICAgICAgICAgICB1bmljb2RlX3hs
YXRlOjEsCiAgICAgICAgICAgICAgICAgcG9zaXhmczoxLAogICAgICAgICAgICAgICAgIG51bXRh
aWw6MSwKICAgICAgICAgICAgICAgICBhdGFyaToxLAogICAgICAgICAgICAgICAgIGZhdDMyOjEs
CiAgICAgICAgICAgICAgICAgbm9jYXNlOjE7Cn07CgpzdHJ1Y3QgbXNkb3Nfc2JfaW5mbyB7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgY2x1c3Rlcl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGNsdXN0ZXJfYml0czsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZhdHMsZmF0X2JpdHM7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgZmF0X3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmF0X2xl
bmd0aDsKICAgICAgICB1bnNpZ25lZCBsb25nIGRpcl9zdGFydDsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBkaXJfZW50cmllczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFfc3RhcnQ7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBjbHVzdGVyczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJvb3RfY2x1
c3RlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGZzaW5mb19zZWN0b3I7CiAgICAgICAgc3RydWN0
IHNlbWFwaG9yZSBmYXRfbG9jazsKICAgICAgICBpbnQgcHJldl9mcmVlOwogICAgICAgIGludCBm
cmVlX2NsdXN0ZXJzOwogICAgICAgIHN0cnVjdCBmYXRfbW91bnRfb3B0aW9ucyBvcHRpb25zOwog
ICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc19kaXNrOwogICAgICAgIHN0cnVjdCBubHNfdGFi
bGUgKm5sc19pbzsKICAgICAgICBzdHJ1Y3QgY3ZmX2Zvcm1hdCogY3ZmX2Zvcm1hdDsKICAgICAg
ICB2b2lkICpkaXJfb3BzOwogICAgICAgIHZvaWQgKnByaXZhdGVfZGF0YTsKICAgICAgICBpbnQg
ZGlyX3Blcl9ibG9jazsKICAgICAgICBpbnQgZGlyX3Blcl9ibG9ja19iaXRzOwp9OwojIDY4OSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2lzb19mc19zYi5oIiAxCgoKCgoKCnN0cnVjdCBp
c29mc19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbmlub2RlczsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNfbnpvbmVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6
b25lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19sb2dfem9uZV9zaXplOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc19tYXhfc2l6ZTsKCiAgICAgICAgdW5zaWduZWQgY2hhciBzX2hpZ2hfc2llcnJh
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19tYXBwaW5nOwogICAgICAgIGludCBzX3JvY2tfb2Zm
c2V0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19yb2NrOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
c19qb2xpZXRfbGV2ZWw7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX3V0Zjg7CiAgICAgICAgdW5z
aWduZWQgY2hhciBzX2NydWZ0OwoKCiAgICAgICAgdW5zaWduZWQgY2hhciBzX3VuaGlkZTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIHNfbm9zdWlkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub2Rl
djsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfbm9jb21wcmVzczsKCiAgICAgICAgbW9kZV90IHNf
bW9kZTsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBz
dHJ1Y3QgbmxzX3RhYmxlICpzX25sc19pb2NoYXJzZXQ7Cn07CiMgNjkwICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvbmZzX2ZzX3NiLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9uZnNfZnNfc2IuaCIKc3RydWN0IG5mc19zZXJ2ZXIgewogICAgICAgIHN0
cnVjdCBycGNfY2xudCAqIGNsaWVudDsKICAgICAgICBzdHJ1Y3QgbmZzX3JwY19vcHMgKiBycGNf
b3BzOwogICAgICAgIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgcnNpemU7CiAgICAg
ICAgdW5zaWduZWQgaW50IHJwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgd3NpemU7CiAgICAg
ICAgdW5zaWduZWQgaW50IHdwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgZHRzaXplOwogICAg
ICAgIHVuc2lnbmVkIGludCBic2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNyZWdtaW47CiAg
ICAgICAgdW5zaWduZWQgaW50IGFjcmVnbWF4OwogICAgICAgIHVuc2lnbmVkIGludCBhY2Rpcm1p
bjsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNkaXJtYXg7CiAgICAgICAgdW5zaWduZWQgaW50IG5h
bWVsZW47CiAgICAgICAgY2hhciAqIGhvc3RuYW1lOwogICAgICAgIHN0cnVjdCBuZnNfcmVxbGlz
dCAqIHJ3X3JlcXVlc3RzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbHJ1X3JlYWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJ1X2RpcnR5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxydV9jb21taXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bHJ1X2J1c3k7Cn07CgoKCgpzdHJ1Y3QgbmZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBuZnNf
c2VydmVyIHNfc2VydmVyOwp9OwojIDY5MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3N5
c3ZfZnNfc2IuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9z
eXN2X2ZzX3NiLmgiCnN0cnVjdCBzeXN2X3NiX2luZm8gewogICAgICAgIGludCBzX3R5cGU7CiAg
ICAgICAgY2hhciBzX2J5dGVzZXg7CiAgICAgICAgY2hhciBzX3RydW5jYXRlOwoKICAgICAgICBu
bGlua190IHNfbGlua19tYXg7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9j
azsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrXzE7CiAgICAgICAgdW5z
aWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9ja19iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBz
X2luZF9wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9ja19iaXRz
OwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZF9wZXJfYmxvY2tfMjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc190b29iaWdfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfYmxvY2tfYmFzZTsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2ZpY19zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHNfZmxjX3NpemU7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19iaDE7CiAgICAgICAg
c3RydWN0IGJ1ZmZlcl9oZWFkICpzX2JoMjsKCgogICAgICAgIGNoYXIgKiBzX3NiZDE7CiAgICAg
ICAgY2hhciAqIHNfc2JkMjsKICAgICAgICB1MTYgKnNfc2JfZmljX2NvdW50OwogICAgICAgIHUx
NiAqc19zYl9maWNfaW5vZGVzOwogICAgICAgIHUxNiAqc19zYl90b3RhbF9mcmVlX2lub2RlczsK
ICAgICAgICB1MTYgKnNfYmNhY2hlX2NvdW50OwogICAgICAgIHUzMiAqc19iY2FjaGU7CiAgICAg
ICAgdTMyICpzX2ZyZWVfYmxvY2tzOwogICAgICAgIHUzMiAqc19zYl90aW1lOwogICAgICAgIHUz
MiAqc19zYl9zdGF0ZTsKCgogICAgICAgIHUzMiBzX2ZpcnN0aW5vZGV6b25lOwogICAgICAgIHUz
MiBzX2ZpcnN0ZGF0YXpvbmU7CiAgICAgICAgdTMyIHNfbmlub2RlczsKICAgICAgICB1MzIgc19u
ZGF0YXpvbmVzOwogICAgICAgIHUzMiBzX256b25lczsKICAgICAgICB1MTYgc19uYW1lbGVuOwp9
OwojIDY5MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2IuaCIgMQojIDEx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9hZmZzX2ZzX3NiLmgiCnN0cnVj
dCBhZmZzX2JtX2luZm8gewogICAgICAgIHUzMiBibV9rZXk7CiAgICAgICAgdTMyIGJtX2ZyZWU7
Cn07CgpzdHJ1Y3QgYWZmc19zYl9pbmZvIHsKICAgICAgICBpbnQgc19wYXJ0aXRpb25fc2l6ZTsK
ICAgICAgICBpbnQgc19yZXNlcnZlZDsKCiAgICAgICAgdTMyIHNfZGF0YV9ibGtzaXplOwogICAg
ICAgIHUzMiBzX3Jvb3RfYmxvY2s7CiAgICAgICAgaW50IHNfaGFzaHNpemU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzX2ZsYWdzOwogICAgICAgIHVpZF90IHNfdWlkOwogICAgICAgIGdpZF90IHNf
Z2lkOwogICAgICAgIHVtb2RlX3Qgc19tb2RlOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq
c19yb290X2JoOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc19ibWxvY2s7CiAgICAgICAgc3Ry
dWN0IGFmZnNfYm1faW5mbyAqc19iaXRtYXA7CiAgICAgICAgdTMyIHNfYm1hcF9jb3VudDsKICAg
ICAgICB1MzIgc19ibWFwX2JpdHM7CiAgICAgICAgdTMyIHNfbGFzdF9ibWFwOwogICAgICAgIHN0
cnVjdCBidWZmZXJfaGVhZCAqc19ibWFwX2JoOwogICAgICAgIGNoYXIgKnNfcHJlZml4OwogICAg
ICAgIGludCBzX3ByZWZpeF9sZW47CiAgICAgICAgY2hhciBzX3ZvbHVtZVszMl07Cn07CiMgNjkz
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDEKIyAxNyAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDEKIyAyMzcgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX3RpbWV2YWwgewog
ICAgICAgIF9fczMyIHR2X3NlYzsKICAgICAgICBfX3MzMiB0dl91c2VjOwp9OwoKc3RydWN0IHVm
c19kaXJfZW50cnkgewogICAgICAgIF9fdTMyIGRfaW5vOwogICAgICAgIF9fdTE2IGRfcmVjbGVu
OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTE2IGRfbmFtbGVuOwogICAgICAg
ICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBkX3R5cGU7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTggZF9uYW1sZW47CiAgICAgICAgICAgICAgICB9IGRf
NDQ7CiAgICAgICAgfSBkX3U7CiAgICAgICAgX191OCBkX25hbWVbMjU1ICsgMV07Cn07CgpzdHJ1
Y3QgdWZzX2NzdW0gewogICAgICAgIF9fdTMyIGNzX25kaXI7CiAgICAgICAgX191MzIgY3NfbmJm
cmVlOwogICAgICAgIF9fdTMyIGNzX25pZnJlZTsKICAgICAgICBfX3UzMiBjc19uZmZyZWU7Cn07
CgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrIHsKICAgICAgICBfX3UzMiBmc19saW5rOwogICAg
ICAgIF9fdTMyIGZzX3JsaW5rOwogICAgICAgIF9fdTMyIGZzX3NibGtubzsKICAgICAgICBfX3Uz
MiBmc19jYmxrbm87CiAgICAgICAgX191MzIgZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZzX2Ri
bGtubzsKICAgICAgICBfX3UzMiBmc19jZ29mZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21hc2s7
CiAgICAgICAgX191MzIgZnNfdGltZTsKICAgICAgICBfX3UzMiBmc19zaXplOwogICAgICAgIF9f
dTMyIGZzX2RzaXplOwogICAgICAgIF9fdTMyIGZzX25jZzsKICAgICAgICBfX3UzMiBmc19ic2l6
ZTsKICAgICAgICBfX3UzMiBmc19mc2l6ZTsKICAgICAgICBfX3UzMiBmc19mcmFnOwoKICAgICAg
ICBfX3UzMiBmc19taW5mcmVlOwogICAgICAgIF9fdTMyIGZzX3JvdGRlbGF5OwogICAgICAgIF9f
dTMyIGZzX3JwczsKCiAgICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAgICAgX191MzIgZnNfZm1h
c2s7CiAgICAgICAgX191MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzaGlmdDsKCiAg
ICAgICAgX191MzIgZnNfbWF4Y29udGlnOwogICAgICAgIF9fdTMyIGZzX21heGJwZzsKCiAgICAg
ICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzYnRvZGI7CiAgICAgICAg
X191MzIgZnNfc2JzaXplOwogICAgICAgIF9fdTMyIGZzX2NzbWFzazsKICAgICAgICBfX3UzMiBm
c19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX25pbmRpcjsKICAgICAgICBfX3UzMiBmc19pbm9w
YjsKICAgICAgICBfX3UzMiBmc19uc3BmOwoKICAgICAgICBfX3UzMiBmc19vcHRpbTsKCiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAg
ICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgIH0gZnNfdTE7CiAgICAgICAgX191MzIg
ZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3UzMiBmc190cmFja3NrZXc7CgoKCgogICAgICAgIF9f
dTMyIGZzX2lkWzJdOwoKICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAgICAgX191MzIgZnNf
Y3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nnc2l6ZTsKCiAgICAgICAgX191MzIgZnNfbnRyYWs7
CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAgICAgICAgX191MzIgZnNfc3BjOwoKICAgICAgICBf
X3UzMiBmc19uY3lsOwoKICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAgX191MzIgZnNfaXBn
OwogICAgICAgIF9fdTMyIGZzX2ZwZzsKCiAgICAgICAgc3RydWN0IHVmc19jc3VtIGZzX2NzdG90
YWw7CgogICAgICAgIF9fczggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2NsZWFuOwogICAgICAg
IF9fczggZnNfcm9ubHk7CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAgICBfX3M4IGZzX2Zz
bW50WzUxMl07CgogICAgICAgIF9fdTMyIGZzX2Nncm90b3I7CiAgICAgICAgX191MzIgZnNfY3Nw
WzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhjbHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2NwYzsK
ICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzE2XVs4XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNv
bls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAg
ICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3Fi
bWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAg
ICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3Nw
YXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2Owog
ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf
c3BhcmVjb25bNTBdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19jb250aWdzdW1z
aXplOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19pbm9kZWZtdDsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
dTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNr
WzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAg
ICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3Jt
YXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwog
ICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAg
IF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC91ZnNfZnMuaCIKc3RydWN0IHVmc19jeWxpbmRlcl9ncm91cCB7CiAgICAgICAgX191
MzIgY2dfbGluazsKICAgICAgICBfX3UzMiBjZ19tYWdpYzsKICAgICAgICBfX3UzMiBjZ190aW1l
OwogICAgICAgIF9fdTMyIGNnX2NneDsKICAgICAgICBfX3UxNiBjZ19uY3lsOwogICAgICAgIF9f
dTE2IGNnX25pYmxrOwogICAgICAgIF9fdTMyIGNnX25kYmxrOwogICAgICAgIHN0cnVjdCB1ZnNf
Y3N1bSBjZ19jczsKICAgICAgICBfX3UzMiBjZ19yb3RvcjsKICAgICAgICBfX3UzMiBjZ19mcm90
b3I7CiAgICAgICAgX191MzIgY2dfaXJvdG9yOwogICAgICAgIF9fdTMyIGNnX2Zyc3VtWyg4MTky
IC8gMTAyNCldOwogICAgICAgIF9fdTMyIGNnX2J0b3RvZmY7CiAgICAgICAgX191MzIgY2dfYm9m
ZjsKICAgICAgICBfX3UzMiBjZ19pdXNlZG9mZjsKICAgICAgICBfX3UzMiBjZ19mcmVlb2ZmOwog
ICAgICAgIF9fdTMyIGNnX25leHRmcmVlb2ZmOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX2NsdXN0ZXJzdW1v
ZmY7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX2NsdXN0ZXJvZmY7CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdTMyIGNnX25jbHVzdGVyYmxrczsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191MzIgY2dfc3BhcmVjb25bMTNdOwogICAgICAgICAgICAgICAgfSBjZ180NDsKICAg
ICAgICAgICAgICAgIF9fdTMyIGNnX3NwYXJlY29uWzE2XTsKICAgICAgICB9IGNnX3U7CiAgICAg
ICAgX191OCBjZ19zcGFjZVsxXTsKCn07CgoKCgpzdHJ1Y3QgdWZzX2lub2RlIHsKICAgICAgICBf
X3UxNiB1aV9tb2RlOwogICAgICAgIF9fdTE2IHVpX25saW5rOwogICAgICAgIHVuaW9uIHsKICAg
ICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3N1
aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3NnaWQ7CiAgICAgICAgICAgICAg
ICB9IG9sZGlkczsKICAgICAgICAgICAgICAgIF9fdTMyIHVpX2ludW1iZXI7CiAgICAgICAgICAg
ICAgICBfX3UzMiB1aV9hdXRob3I7CiAgICAgICAgfSB1aV91MTsKICAgICAgICBfX3U2NCB1aV9z
aXplOwogICAgICAgIHN0cnVjdCB1ZnNfdGltZXZhbCB1aV9hdGltZTsKICAgICAgICBzdHJ1Y3Qg
dWZzX3RpbWV2YWwgdWlfbXRpbWU7CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX2N0aW1l
OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fdTMyIHVpX2RiWzEyXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg
dWlfaWJbM107CiAgICAgICAgICAgICAgICB9IHVpX2FkZHI7CiAgICAgICAgICAgICAgICBfX3U4
IHVpX3N5bWxpbmtbNCooMTIgKzMpXTsKICAgICAgICB9IHVpX3UyOwogICAgICAgIF9fdTMyIHVp
X2ZsYWdzOwogICAgICAgIF9fdTMyIHVpX2Jsb2NrczsKICAgICAgICBfX3UzMiB1aV9nZW47CiAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191MzIgdWlfc2hhZG93OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV91
aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsKICAgICAgICAgICAgICAg
ICAgICAgICAgX191MzIgdWlfb2VmdGZsYWc7CiAgICAgICAgICAgICAgICB9IHVpX3N1bjsKICAg
ICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3Vp
ZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3MzMiB1aV9zcGFyZVsyXTsKICAgICAgICAgICAgICAgIH0gdWlfNDQ7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV91aWQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191MTYgdWlfbW9kZWg7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3Nw
YXJlOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV90cmFuczsKICAgICAgICAgICAg
ICAgIH0gdWlfaHVyZDsKICAgICAgICB9IHVpX3UzOwp9OwojIDUxNCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiCmV4dGVybiB2b2lkIHVmc19mcmVlX2ZyYWdt
ZW50cyAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CmV4dGVybiB2b2lkIHVm
c19mcmVlX2Jsb2NrcyAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CmV4dGVy
biB1bnNpZ25lZCB1ZnNfbmV3X2ZyYWdtZW50cyAoc3RydWN0IGlub2RlICosIHUzMiAqLCB1bnNp
Z25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCBpbnQgKik7CgoKZXh0ZXJuIHN0cnVjdCB1ZnNfY2df
cHJpdmF0ZV9pbmZvICogdWZzX2xvYWRfY3lsaW5kZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1
bnNpZ25lZCk7CmV4dGVybiB2b2lkIHVmc19wdXRfY3lsaW5kZXIgKHN0cnVjdCBzdXBlcl9ibG9j
ayAqLCB1bnNpZ25lZCk7CgoKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVmc19kaXJf
aW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIGludCB1ZnNfY2hlY2tfZGlyX2VudHJ5IChjb25zdCBj
aGFyICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgdWZzX2FkZF9saW5rIChzdHJ1
Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlub190IHVmc19pbm9kZV9ieV9u
YW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IHVmc19tYWtl
X2VtcHR5KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgdWZz
X2Rpcl9lbnRyeSAqIHVmc19maW5kX2VudHJ5IChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBidWZm
ZXJfaGVhZCAqKik7CmV4dGVybiBpbnQgdWZzX2RlbGV0ZV9lbnRyeSAoc3RydWN0IGlub2RlICos
IHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKZXh0ZXJuIGlu
dCB1ZnNfZW1wdHlfZGlyIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgdWZzX2Rpcl9l
bnRyeSAqIHVmc19kb3Rkb3QgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiop
OwpleHRlcm4gdm9pZCB1ZnNfc2V0X2xpbmsoc3RydWN0IGlub2RlICosIHN0cnVjdCB1ZnNfZGly
X2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqLCBzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJu
IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVmc19maWxlX2lub2RlX29wZXJhdGlvbnM7CmV4dGVy
biBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVmc19maWxlX29wZXJhdGlvbnM7CgpleHRlcm4gc3Ry
dWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyB1ZnNfYW9wczsKCgpleHRlcm4gdm9pZCB1ZnNf
ZnJlZV9pbm9kZSAoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiB1
ZnNfbmV3X2lub2RlIChjb25zdCBzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKCgpleHRlcm4gaW50IHVm
c19mcmFnX21hcCAoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiB2b2lkIHVmc19yZWFkX2lu
b2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHVmc19wdXRfaW5vZGUgKHN0cnVjdCBp
bm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX3dyaXRlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKiwgaW50
KTsKZXh0ZXJuIGludCB1ZnNfc3luY19pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9p
ZCB1ZnNfZGVsZXRlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiB1ZnNfZ2V0ZnJhZyAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAq
KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIHVmc19icmVhZCAoc3RydWN0IGlub2RlICos
IHVuc2lnbmVkLCBpbnQsIGludCAqKTsKCgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1
ZnNfZGlyX29wZXJhdGlvbnM7CgoKZXh0ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHVmc19m
c190eXBlOwpleHRlcm4gdm9pZCB1ZnNfd2FybmluZyAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHBy
aW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX2Vycm9yIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1h
dCAocHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfcGFuaWMgKHN0cnVjdCBzdXBlcl9i
bG9jayAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgo
Zm9ybWF0IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc193cml0ZV9zdXBlciAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICopOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNf
ZmFzdF9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7CgoKZXh0ZXJuIHZvaWQgdWZzX3RydW5jYXRl
IChzdHJ1Y3QgaW5vZGUgKik7CiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3Vmc19mc19zYi5oIiAyCgoKCgoKc3RydWN0IHVmc19idWZmZXJfaGVhZCB7CiAgICAgICAg
dW5zaWduZWQgZnJhZ21lbnQ7CiAgICAgICAgdW5zaWduZWQgY291bnQ7CiAgICAgICAgc3RydWN0
IGJ1ZmZlcl9oZWFkICogYmhbKDgxOTIgLyAxMDI0KV07Cn07CgpzdHJ1Y3QgdWZzX2NnX3ByaXZh
dGVfaW5mbyB7CiAgICAgICAgc3RydWN0IHVmc19jeWxpbmRlcl9ncm91cCB1Y2c7CiAgICAgICAg
X191MzIgY19jZ3g7CiAgICAgICAgX191MTYgY19uY3lsOwogICAgICAgIF9fdTE2IGNfbmlibGs7
CiAgICAgICAgX191MzIgY19uZGJsazsKICAgICAgICBfX3UzMiBjX3JvdG9yOwogICAgICAgIF9f
dTMyIGNfZnJvdG9yOwogICAgICAgIF9fdTMyIGNfaXJvdG9yOwogICAgICAgIF9fdTMyIGNfYnRv
dG9mZjsKICAgICAgICBfX3UzMiBjX2JvZmY7CiAgICAgICAgX191MzIgY19pdXNlZG9mZjsKICAg
ICAgICBfX3UzMiBjX2ZyZWVvZmY7CiAgICAgICAgX191MzIgY19uZXh0ZnJlZW9mZjsKICAgICAg
ICBfX3UzMiBjX2NsdXN0ZXJzdW1vZmY7CiAgICAgICAgX191MzIgY19jbHVzdGVyb2ZmOwogICAg
ICAgIF9fdTMyIGNfbmNsdXN0ZXJibGtzOwp9OwoKc3RydWN0IHVmc19zYl9wcml2YXRlX2luZm8g
ewogICAgICAgIHN0cnVjdCB1ZnNfYnVmZmVyX2hlYWQgc191Ymg7CiAgICAgICAgX191MzIgc19z
Ymxrbm87CiAgICAgICAgX191MzIgc19jYmxrbm87CiAgICAgICAgX191MzIgc19pYmxrbm87CiAg
ICAgICAgX191MzIgc19kYmxrbm87CiAgICAgICAgX191MzIgc19jZ29mZnNldDsKICAgICAgICBf
X3UzMiBzX2NnbWFzazsKICAgICAgICBfX3UzMiBzX3NpemU7CiAgICAgICAgX191MzIgc19kc2l6
ZTsKICAgICAgICBfX3UzMiBzX25jZzsKICAgICAgICBfX3UzMiBzX2JzaXplOwogICAgICAgIF9f
dTMyIHNfZnNpemU7CiAgICAgICAgX191MzIgc19mcGI7CiAgICAgICAgX191MzIgc19taW5mcmVl
OwogICAgICAgIF9fdTMyIHNfYm1hc2s7CiAgICAgICAgX191MzIgc19mbWFzazsKICAgICAgICBf
X3UzMiBzX2JzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZzaGlmdDsKICAgICAgICBfX3UzMiBzX2Zw
YnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnNidG9kYjsKICAgICAgICBfX3UzMiBzX3Nic2l6ZTsK
ICAgICAgICBfX3UzMiBzX2NzbWFzazsKICAgICAgICBfX3UzMiBzX2Nzc2hpZnQ7CiAgICAgICAg
X191MzIgc19uaW5kaXI7CiAgICAgICAgX191MzIgc19pbm9wYjsKICAgICAgICBfX3UzMiBzX25z
cGY7CiAgICAgICAgX191MzIgc19ucHNlY3Q7CiAgICAgICAgX191MzIgc19pbnRlcmxlYXZlOwog
ICAgICAgIF9fdTMyIHNfdHJhY2tza2V3OwogICAgICAgIF9fdTMyIHNfY3NhZGRyOwogICAgICAg
IF9fdTMyIHNfY3NzaXplOwogICAgICAgIF9fdTMyIHNfY2dzaXplOwogICAgICAgIF9fdTMyIHNf
bnRyYWs7CiAgICAgICAgX191MzIgc19uc2VjdDsKICAgICAgICBfX3UzMiBzX3NwYzsKICAgICAg
ICBfX3UzMiBzX2lwZzsKICAgICAgICBfX3UzMiBzX2ZwZzsKICAgICAgICBfX3UzMiBzX2NwYzsK
ICAgICAgICBfX3MzMiBzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgX19zNjQgc19xYm1hc2s7CiAg
ICAgICAgX19zNjQgc19xZm1hc2s7CiAgICAgICAgX19zMzIgc19wb3N0Ymxmb3JtYXQ7CiAgICAg
ICAgX19zMzIgc19ucnBvczsKICAgICAgICBfX3MzMiBzX3Bvc3RibG9mZjsKICAgICAgICBfX3Mz
MiBzX3JvdGJsb2ZmOwoKICAgICAgICBfX3UzMiBzX2ZwYm1hc2s7CiAgICAgICAgX191MzIgc19h
cGI7CiAgICAgICAgX191MzIgc18yYXBiOwogICAgICAgIF9fdTMyIHNfM2FwYjsKICAgICAgICBf
X3UzMiBzX2FwYm1hc2s7CiAgICAgICAgX191MzIgc19hcGJzaGlmdDsKICAgICAgICBfX3UzMiBz
XzJhcGJzaGlmdDsKICAgICAgICBfX3UzMiBzXzNhcGJzaGlmdDsKICAgICAgICBfX3UzMiBzX25z
cGZzaGlmdDsKICAgICAgICBfX3UzMiBzX25zcGI7CiAgICAgICAgX191MzIgc19pbm9wZjsKICAg
ICAgICBfX3UzMiBzX3NiYmFzZTsKICAgICAgICBfX3UzMiBzX2JwZjsKICAgICAgICBfX3UzMiBz
X2JwZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfYnBmbWFzazsKCiAgICAgICAgX191MzIgc19tYXhz
eW1saW5rbGVuOwp9OwoKCgoKCnN0cnVjdCB1ZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IHVm
c19zYl9wcml2YXRlX2luZm8gKiBzX3VzcGk7CiAgICAgICAgc3RydWN0IHVmc19jc3VtICogc19j
c3BbMzFdOwogICAgICAgIHVuc2lnbmVkIHNfYnl0ZXNleDsKICAgICAgICB1bnNpZ25lZCBzX2Zs
YWdzOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBzX3VjZzsKICAgICAgICBzdHJ1Y3Qg
dWZzX2NnX3ByaXZhdGVfaW5mbyAqIHNfdWNwaVs4XTsKICAgICAgICB1bnNpZ25lZCBzX2Nnbm9b
OF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19jZ19sb2FkZWQ7CiAgICAgICAgdW5zaWduZWQg
c19tb3VudF9vcHQ7Cn07CgoKCgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX2ZpcnN0IHsKICAg
ICAgICBfX3UzMiBmc19saW5rOwogICAgICAgIF9fdTMyIGZzX3JsaW5rOwogICAgICAgIF9fdTMy
IGZzX3NibGtubzsKICAgICAgICBfX3UzMiBmc19jYmxrbm87CiAgICAgICAgX191MzIgZnNfaWJs
a25vOwogICAgICAgIF9fdTMyIGZzX2RibGtubzsKICAgICAgICBfX3UzMiBmc19jZ29mZnNldDsK
ICAgICAgICBfX3UzMiBmc19jZ21hc2s7CiAgICAgICAgX191MzIgZnNfdGltZTsKICAgICAgICBf
X3UzMiBmc19zaXplOwogICAgICAgIF9fdTMyIGZzX2RzaXplOwogICAgICAgIF9fdTMyIGZzX25j
ZzsKICAgICAgICBfX3UzMiBmc19ic2l6ZTsKICAgICAgICBfX3UzMiBmc19mc2l6ZTsKICAgICAg
ICBfX3UzMiBmc19mcmFnOwogICAgICAgIF9fdTMyIGZzX21pbmZyZWU7CiAgICAgICAgX191MzIg
ZnNfcm90ZGVsYXk7CiAgICAgICAgX191MzIgZnNfcnBzOwogICAgICAgIF9fdTMyIGZzX2JtYXNr
OwogICAgICAgIF9fdTMyIGZzX2ZtYXNrOwogICAgICAgIF9fdTMyIGZzX2JzaGlmdDsKICAgICAg
ICBfX3UzMiBmc19mc2hpZnQ7CiAgICAgICAgX191MzIgZnNfbWF4Y29udGlnOwogICAgICAgIF9f
dTMyIGZzX21heGJwZzsKICAgICAgICBfX3UzMiBmc19mcmFnc2hpZnQ7CiAgICAgICAgX191MzIg
ZnNfZnNidG9kYjsKICAgICAgICBfX3UzMiBmc19zYnNpemU7CiAgICAgICAgX191MzIgZnNfY3Nt
YXNrOwogICAgICAgIF9fdTMyIGZzX2Nzc2hpZnQ7CiAgICAgICAgX191MzIgZnNfbmluZGlyOwog
ICAgICAgIF9fdTMyIGZzX2lub3BiOwogICAgICAgIF9fdTMyIGZzX25zcGY7CiAgICAgICAgX191
MzIgZnNfb3B0aW07CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgfSBm
c19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBf
X3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgIH0gZnNf
dTE7CiAgICAgICAgX191MzIgZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3UzMiBmc190cmFja3Nr
ZXc7CiAgICAgICAgX191MzIgZnNfaWRbMl07CiAgICAgICAgX191MzIgZnNfY3NhZGRyOwogICAg
ICAgIF9fdTMyIGZzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBmc19jZ3NpemU7CiAgICAgICAgX191
MzIgZnNfbnRyYWs7CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAgICAgICAgX191MzIgZnNfc3Bj
OwogICAgICAgIF9fdTMyIGZzX25jeWw7CiAgICAgICAgX191MzIgZnNfY3BnOwogICAgICAgIF9f
dTMyIGZzX2lwZzsKICAgICAgICBfX3UzMiBmc19mcGc7CiAgICAgICAgc3RydWN0IHVmc19jc3Vt
IGZzX2NzdG90YWw7CiAgICAgICAgX19zOCBmc19mbW9kOwogICAgICAgIF9fczggZnNfY2xlYW47
CiAgICAgICAgX19zOCBmc19yb25seTsKICAgICAgICBfX3M4IGZzX2ZsYWdzOwogICAgICAgIF9f
czggZnNfZnNtbnRbNTEyIC0gMjEyXTsKCn07CgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX3NlY29u
ZCB7CiAgICAgICAgX19zOCBmc19mc21udFsyMTJdOwogICAgICAgIF9fdTMyIGZzX2Nncm90b3I7
CiAgICAgICAgX191MzIgZnNfY3NwWzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhjbHVzdGVyOwog
ICAgICAgIF9fdTMyIGZzX2NwYzsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzgyXTsKfTsKCnN0
cnVjdCB1ZnNfc3VwZXJfYmxvY2tfdGhpcmQgewogICAgICAgIF9fdTE2IGZzX29wb3N0YmxbNDZd
OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAg
X19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVj
b24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsKICAgICAgICAg
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29u
WzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAg
ICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAg
ICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3Fi
bWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAg
ICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1MF07CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fczMyIGZzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
czMyIGZzX21heHN5bWxpbmtsZW47CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX2lu
b2RlZm10OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19tYXhmaWxlc2l6ZVsyXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAg
ICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
czMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc180NDsKICAgICAgICB9IGZzX3UyOwog
ICAgICAgIF9fczMyIGZzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3MzMiBmc19ucnBvczsKICAg
ICAgICBfX3MzMiBmc19wb3N0YmxvZmY7CiAgICAgICAgX19zMzIgZnNfcm90YmxvZmY7CiAgICAg
ICAgX19zMzIgZnNfbWFnaWM7CiAgICAgICAgX191OCBmc19zcGFjZVsxXTsKfTsKIyA2OTQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9lZnNfZnNfc2IuaCIgMQojIDI1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9lZnNfZnNfc2IuaCIKc3RydWN0IGVmc19zdXBlciB7
CiAgICAgICAgaW50MzJfdCBmc19zaXplOwogICAgICAgIGludDMyX3QgZnNfZmlyc3RjZzsKICAg
ICAgICBpbnQzMl90IGZzX2NnZnNpemU7CiAgICAgICAgc2hvcnQgZnNfY2dpc2l6ZTsKICAgICAg
ICBzaG9ydCBmc19zZWN0b3JzOwogICAgICAgIHNob3J0IGZzX2hlYWRzOwogICAgICAgIHNob3J0
IGZzX25jZzsKICAgICAgICBzaG9ydCBmc19kaXJ0eTsKICAgICAgICBpbnQzMl90IGZzX3RpbWU7
CiAgICAgICAgaW50MzJfdCBmc19tYWdpYzsKICAgICAgICBjaGFyIGZzX2ZuYW1lWzZdOwogICAg
ICAgIGNoYXIgZnNfZnBhY2tbNl07CiAgICAgICAgaW50MzJfdCBmc19ibXNpemU7CiAgICAgICAg
aW50MzJfdCBmc190ZnJlZTsKICAgICAgICBpbnQzMl90IGZzX3Rpbm9kZTsKICAgICAgICBpbnQz
Ml90IGZzX2JtYmxvY2s7CiAgICAgICAgaW50MzJfdCBmc19yZXBsc2I7CiAgICAgICAgaW50MzJf
dCBmc19sYXN0aWFsbG9jOwogICAgICAgIGNoYXIgZnNfc3BhcmVbMjBdOwogICAgICAgIGludDMy
X3QgZnNfY2hlY2tzdW07Cn07CgoKc3RydWN0IGVmc19zYl9pbmZvIHsKICAgICAgICBpbnQzMl90
IGZzX21hZ2ljOwogICAgICAgIGludDMyX3QgZnNfc3RhcnQ7CiAgICAgICAgaW50MzJfdCBmaXJz
dF9ibG9jazsKICAgICAgICBpbnQzMl90IHRvdGFsX2Jsb2NrczsKICAgICAgICBpbnQzMl90IGdy
b3VwX3NpemU7CiAgICAgICAgaW50MzJfdCBkYXRhX2ZyZWU7CiAgICAgICAgaW50MzJfdCBpbm9k
ZV9mcmVlOwogICAgICAgIHNob3J0IGlub2RlX2Jsb2NrczsKICAgICAgICBzaG9ydCB0b3RhbF9n
cm91cHM7Cn07CiMgNjk1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcm9tZnNfZnNfc2Iu
aCIgMQoKCgoKCnN0cnVjdCByb21mc19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf
bWF4c2l6ZTsKfTsKIyA2OTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zbWJfZnNfc2Iu
aCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zbWJfZnNfc2Iu
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zbWIuaCIgMQojIDE0
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zbWIuaCIKZW51bSBzbWJfcHJv
dG9jb2wgewogICAgICAgIFNNQl9QUk9UT0NPTF9OT05FLAogICAgICAgIFNNQl9QUk9UT0NPTF9D
T1JFLAogICAgICAgIFNNQl9QUk9UT0NPTF9DT1JFUExVUywKICAgICAgICBTTUJfUFJPVE9DT0xf
TEFOTUFOMSwKICAgICAgICBTTUJfUFJPVE9DT0xfTEFOTUFOMiwKICAgICAgICBTTUJfUFJPVE9D
T0xfTlQxCn07CgplbnVtIHNtYl9jYXNlX2huZGwgewogICAgICAgIFNNQl9DQVNFX0RFRkFVTFQs
CiAgICAgICAgU01CX0NBU0VfTE9XRVIsCiAgICAgICAgU01CX0NBU0VfVVBQRVIKfTsKCnN0cnVj
dCBzbWJfZHNrYXR0ciB7CiAgICAgICAgX191MTYgdG90YWw7CiAgICAgICAgX191MTYgYWxsb2Ni
bG9ja3M7CiAgICAgICAgX191MTYgYmxvY2tzaXplOwogICAgICAgIF9fdTE2IGZyZWU7Cn07Cgpz
dHJ1Y3Qgc21iX2Nvbm5fb3B0IHsKCgogICAgICAgIHVuc2lnbmVkIGludCBmZDsKCiAgICAgICAg
ZW51bSBzbWJfcHJvdG9jb2wgcHJvdG9jb2w7CiAgICAgICAgZW51bSBzbWJfY2FzZV9obmRsIGNh
c2VfaGFuZGxpbmc7CgoKCiAgICAgICAgX191MzIgbWF4X3htaXQ7CiAgICAgICAgX191MTYgc2Vy
dmVyX3VpZDsKICAgICAgICBfX3UxNiB0aWQ7CgoKICAgICAgICBfX3UxNiBzZWNtb2RlOwogICAg
ICAgIF9fdTE2IG1heG11eDsKICAgICAgICBfX3UxNiBtYXh2Y3M7CiAgICAgICAgX191MTYgcmF3
bW9kZTsKICAgICAgICBfX3UzMiBzZXNza2V5OwoKCiAgICAgICAgX191MzIgbWF4cmF3OwogICAg
ICAgIF9fdTMyIGNhcGFiaWxpdGllczsKICAgICAgICBfX3MxNiBzZXJ2ZXJ6b25lOwp9OwoKCgoK
c3RydWN0IHNtYl9ubHNfY29kZXBhZ2UgewogICAgICAgIGNoYXIgbG9jYWxfbmFtZVsyMF07CiAg
ICAgICAgY2hhciByZW1vdGVfbmFtZVsyMF07Cn07CiMgNzggIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L3NtYi5oIgpzdHJ1Y3Qgc21iX2ZhdHRyIHsKCiAgICAgICAgX191MTYg
YXR0cjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2lubzsKICAgICAgICB1bW9kZV90IGZfbW9k
ZTsKICAgICAgICBubGlua190IGZfbmxpbms7CiAgICAgICAgdWlkX3QgZl91aWQ7CiAgICAgICAg
Z2lkX3QgZl9naWQ7CiAgICAgICAga2Rldl90IGZfcmRldjsKICAgICAgICBvZmZfdCBmX3NpemU7
CiAgICAgICAgdGltZV90IGZfYXRpbWU7CiAgICAgICAgdGltZV90IGZfbXRpbWU7CiAgICAgICAg
dGltZV90IGZfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2Jsa3NpemU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBmX2Jsb2NrczsKfTsKCmVudW0gc21iX2Nvbm5fc3RhdGUgewogICAgICAg
IENPTk5fVkFMSUQsCiAgICAgICAgQ09OTl9JTlZBTElELAoKICAgICAgICBDT05OX1JFVFJJRUQs
CiAgICAgICAgQ09OTl9SRVRSWUlORwp9OwojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMgoKCgoKCgoKc3RydWN0IHNtYl9zYl9pbmZvIHsKICAg
ICAgICBlbnVtIHNtYl9jb25uX3N0YXRlIHN0YXRlOwogICAgICAgIHN0cnVjdCBmaWxlICogc29j
a19maWxlOwoKICAgICAgICBzdHJ1Y3Qgc21iX21vdW50X2RhdGFfa2VybmVsICptbnQ7CiAgICAg
ICAgdW5zaWduZWQgY2hhciAqdGVtcF9idWY7CgoKCgogICAgICAgIHVuc2lnbmVkIGludCBnZW5l
cmF0aW9uOwogICAgICAgIHBpZF90IGNvbm5fcGlkOwogICAgICAgIHN0cnVjdCBzbWJfY29ubl9v
cHQgb3B0OwoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB3YWl0X3F1ZXVl
X2hlYWRfdCB3YWl0OwoKICAgICAgICBfX3UzMiBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyICogcGFja2V0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHJjbHM7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgZXJyOwoKCiAgICAgICAgdm9pZCAqZGF0YV9yZWFkeTsKCgogICAgICAgIHN0
cnVjdCBubHNfdGFibGUgKnJlbW90ZV9ubHM7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbG9j
YWxfbmxzOwoKCgoKICAgICAgICBjaGFyICpuYW1lX2J1ZjsKCiAgICAgICAgaW50ICgqY29udmVy
dCkoY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50LAogICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBubHNfdGFibGUgKiwgc3RydWN0IG5sc190YWJsZSAqKTsKfTsKCgpzdGF0aWMgaW5s
aW5lIHZvaWQKc21iX2xvY2tfc2VydmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyKQp7CiAg
ICAgICAgZG93bigmKHNlcnZlci0+c2VtKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZApzbWJfdW5s
b2NrX3NlcnZlcihzdHJ1Y3Qgc21iX3NiX2luZm8gKnNlcnZlcikKewogICAgICAgIHVwKCYoc2Vy
dmVyLT5zZW0pKTsKfQojIDY5NyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2hmc19mc19z
Yi5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2hmc19mc19z
Yi5oIgpzdHJ1Y3QgaGZzX25hbWU7Cgp0eXBlZGVmIGludCAoKmhmc19uYW1laW5fZm4pIChjaGFy
ICosIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqKTsKdHlwZWRlZiB2b2lkICgqaGZzX25hbWVvdXRf
Zm4pIChzdHJ1Y3QgaGZzX25hbWUgKiwgY29uc3QgY2hhciAqLCBpbnQpOwp0eXBlZGVmIHZvaWQg
KCpoZnNfaWZpbGxfZm4pIChzdHJ1Y3QgaW5vZGUgKiwgaW5vX3QsIGNvbnN0IGludCk7CgoKCgoK
CnN0cnVjdCBoZnNfc2JfaW5mbyB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIHN0cnVjdCBo
ZnNfbWRiICpzX21kYjsKICAgICAgICBpbnQgc19xdWlldDsKCiAgICAgICAgaW50IHNfbG93ZXJj
YXNlOwogICAgICAgIGludCBzX2FmcGQ7CiAgICAgICAgaW50IHNfdmVyc2lvbjsKICAgICAgICBo
ZnNfbmFtZWluX2ZuIHNfbmFtZWluOwoKCiAgICAgICAgaGZzX25hbWVvdXRfZm4gc19uYW1lb3V0
OwoKCiAgICAgICAgaGZzX2lmaWxsX2ZuIHNfaWZpbGw7CgogICAgICAgIGNvbnN0IHN0cnVjdCBo
ZnNfbmFtZSAqc19yZXNlcnZlZDE7CiAgICAgICAgY29uc3Qgc3RydWN0IGhmc19uYW1lICpzX3Jl
c2VydmVkMjsKICAgICAgICBfX3UzMiBzX3R5cGU7CiAgICAgICAgX191MzIgc19jcmVhdG9yOwog
ICAgICAgIHVtb2RlX3Qgc191bWFzazsKCiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgZ2lk
X3Qgc19naWQ7CiAgICAgICAgY2hhciBzX2NvbnY7Cn07CiMgNjk4ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvYWRmc19mc19zYi5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2FkZnNfZnNfc2IuaCIKc3RydWN0IGFkZnNfZGlzY21hcDsKc3RydWN0IGFk
ZnNfZGlyX29wczsKCgoKCnN0cnVjdCBhZGZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBhZGZz
X2Rpc2NtYXAgKnNfbWFwOwogICAgICAgIHN0cnVjdCBhZGZzX2Rpcl9vcHMgKnNfZGlyOwoKICAg
ICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNf
b3duZXJfbWFzazsKICAgICAgICB1bW9kZV90IHNfb3RoZXJfbWFzazsKCiAgICAgICAgX191MzIg
c19pZHNfcGVyX3pvbmU7CiAgICAgICAgX191MzIgc19pZGxlbjsKICAgICAgICBfX3UzMiBzX21h
cF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19zaXplOwogICAgICAgIHNpZ25lZCBpbnQg
c19tYXAyYmxrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2xvZzJzaGFyZXNpemU7CiAgICAgICAg
dW5zaWduZWQgaW50IHNfdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19uYW1lbGVuOwp9
OwojIDY5OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMQojIDE0
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIiAxCiMgNDUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIKc3RydWN0IHFueDRf
aW5vZGVfZW50cnkgewogICAgICAgIGNoYXIgZGlfZm5hbWVbMTZdOwogICAgICAgIHFueDRfb2Zm
X3QgZGlfc2l6ZTsKICAgICAgICBxbng0X3h0bnRfdCBkaV9maXJzdF94dG50OwogICAgICAgIF9f
dTMyIGRpX3hibGs7CiAgICAgICAgX19zMzIgZGlfZnRpbWU7CiAgICAgICAgX19zMzIgZGlfbXRp
bWU7CiAgICAgICAgX19zMzIgZGlfYXRpbWU7CiAgICAgICAgX19zMzIgZGlfY3RpbWU7CiAgICAg
ICAgcW54NF9ueHRudF90IGRpX251bV94dG50czsKICAgICAgICBxbng0X21vZGVfdCBkaV9tb2Rl
OwogICAgICAgIHFueDRfbXVpZF90IGRpX3VpZDsKICAgICAgICBxbng0X21naWRfdCBkaV9naWQ7
CiAgICAgICAgcW54NF9ubGlua190IGRpX25saW5rOwogICAgICAgIF9fdTggZGlfemVyb1s0XTsK
ICAgICAgICBxbng0X2Z0eXBlX3QgZGlfdHlwZTsKICAgICAgICBfX3U4IGRpX3N0YXR1czsKfTsK
CnN0cnVjdCBxbng0X2xpbmtfaW5mbyB7CiAgICAgICAgY2hhciBkbF9mbmFtZVs0OF07CiAgICAg
ICAgX191MzIgZGxfaW5vZGVfYmxrOwogICAgICAgIF9fdTggZGxfaW5vZGVfbmR4OwogICAgICAg
IF9fdTggZGxfc3BhcmVbMTBdOwogICAgICAgIF9fdTggZGxfc3RhdHVzOwp9OwoKc3RydWN0IHFu
eDRfeGJsayB7CiAgICAgICAgX191MzIgeGJsa19uZXh0X3hibGs7CiAgICAgICAgX191MzIgeGJs
a19wcmV2X3hibGs7CiAgICAgICAgX191OCB4YmxrX251bV94dG50czsKICAgICAgICBfX3U4IHhi
bGtfc3BhcmVbM107CiAgICAgICAgX19zMzIgeGJsa19udW1fYmxvY2tzOwogICAgICAgIHFueDRf
eHRudF90IHhibGtfeHRudHNbNjBdOwogICAgICAgIGNoYXIgeGJsa19zaWduYXR1cmVbOF07CiAg
ICAgICAgcW54NF94dG50X3QgeGJsa19maXJzdF94dG50Owp9OwoKc3RydWN0IHFueDRfc3VwZXJf
YmxvY2sgewogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IFJvb3REaXI7CiAgICAgICAg
c3RydWN0IHFueDRfaW5vZGVfZW50cnkgSW5vZGU7CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVf
ZW50cnkgQm9vdDsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBBbHRCb290Owp9Owoj
IDEwMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIgpleHRl
cm4gc3RydWN0IGRlbnRyeSAqcW54NF9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBk
ZW50cnkgKmRlbnRyeSk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRfY291bnRfZnJlZV9ibG9j
a3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRfYmxv
Y2tfbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgaWJsb2NrKTsKCmV4dGVybiBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKnFueDRfZ2V0YmxrKHN0cnVjdCBpbm9kZSAqLCBpbnQsIGludCk7CmV4dGVy
biBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfYnJlYWQoc3RydWN0IGlub2RlICosIGludCwgaW50
KTsKCmV4dGVybiBpbnQgcW54NF9jcmVhdGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50
cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcW54
NF9maWxlX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBx
bng0X2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBx
bng0X2ZpbGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcW54NF9k
aXJfb3BlcmF0aW9uczsKZXh0ZXJuIGludCBxbng0X2lzX2ZyZWUoc3RydWN0IHN1cGVyX2Jsb2Nr
ICpzYiwgbG9uZyBibG9jayk7CmV4dGVybiBpbnQgcW54NF9zZXRfYml0bWFwKHN0cnVjdCBzdXBl
cl9ibG9jayAqc2IsIGxvbmcgYmxvY2ssIGludCBidXN5KTsKZXh0ZXJuIGludCBxbng0X2NyZWF0
ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBtb2RlKTsK
ZXh0ZXJuIHZvaWQgcW54NF90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZv
aWQgcW54NF9mcmVlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gaW50IHFueDRf
dW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwpleHRlcm4g
aW50IHFueDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7
CmV4dGVybiBpbnQgcW54NF9zeW5jX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkZW50
cnkgKmRlbnRyeSwgaW50KTsKZXh0ZXJuIGludCBxbng0X3N5bmNfaW5vZGUoc3RydWN0IGlub2Rl
ICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF9nZXRfYmxvY2soc3RydWN0IGlub2RlICppbm9kZSwg
bG9uZyBpYmxvY2ssIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBjcmVhdGUpOwojIDE1ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiIDIKCgoKCgpz
dHJ1Y3QgcW54NF9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNiX2J1ZjsK
ICAgICAgICBzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayAqc2I7CiAgICAgICAgdW5zaWduZWQgaW50
IFZlcnNpb247CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgKkJpdE1hcDsKfTsKIyA3
MDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIiAxCgoKCgoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAxCiMg
MzggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgpzdHJ1Y3Qg
dHFfc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzeW5jOwogICAgICAgIHZvaWQgKCpyb3V0aW5lKSh2b2lkICopOwogICAgICAgIHZv
aWQgKmRhdGE7Cn07CiMgNjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Rx
dWV1ZS5oIgp0eXBlZGVmIHN0cnVjdCBsaXN0X2hlYWQgdGFza19xdWV1ZTsKCgoKCmV4dGVybiB0
YXNrX3F1ZXVlIHRxX3RpbWVyLCB0cV9pbW1lZGlhdGUsIHRxX2Rpc2s7CiMgOTQgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgpleHRlcm4gc3BpbmxvY2tfdCB0
cXVldWVfbG9jazsKCgoKCgpzdGF0aWMgaW5saW5lIGludCBxdWV1ZV90YXNrKHN0cnVjdCB0cV9z
dHJ1Y3QgKmJoX3BvaW50ZXIsIHRhc2tfcXVldWUgKmJoX2xpc3QpCnsKICAgICAgICBpbnQgcmV0
ID0gMDsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoMCwmYmhfcG9pbnRlci0+c3luYykp
IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgICAgICAgICBk
byB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChm
bGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmdHF1ZXVlX2xvY2spOyB9IHdoaWxlICgwKTsKICAg
ICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJmJoX3BvaW50ZXItPmxpc3QsIGJoX2xpc3QpOwog
ICAgICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGls
ZSAoMCk7CiAgICAgICAgICAgICAgICByZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4g
cmV0Owp9CgoKCgoKZXh0ZXJuIHZvaWQgX19ydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0
KTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KQp7
CiAgICAgICAgaWYgKCghbGlzdF9lbXB0eSgmKmxpc3QpKSkKICAgICAgICAgICAgICAgIF9fcnVu
X3Rhc2tfcXVldWUobGlzdCk7Cn0KIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9yZWlzZXJmc19mc19zYi5oIiAyCiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jawp7
CiAgX191MzIgc19ibG9ja19jb3VudDsKICBfX3UzMiBzX2ZyZWVfYmxvY2tzOwogIF9fdTMyIHNf
cm9vdF9ibG9jazsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2Rl
djsKIyA0MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNf
c2IuaCIKICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMyIHNfam91cm5hbF90cmFu
c19tYXggOwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAgX191MzIgc19qb3VybmFs
X21heF9iYXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRfYWdlIDsKICBfX3UzMiBz
X2pvdXJuYWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3NpemU7CiAgX191MTYgc19v
aWRfbWF4c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2IHNfc3RhdGU7CiAgY2hh
ciBzX21hZ2ljWzEyXTsKICBfX3UzMiBzX2hhc2hfZnVuY3Rpb25fY29kZTsKICBfX3UxNiBzX3Ry
ZWVfaGVpZ2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UxNiBzX3ZlcnNpb247CgoKCgogIF9f
dTE2IHNfcmVzZXJ2ZWQ7CiAgX191MzIgc19pbm9kZV9nZW5lcmF0aW9uOwogIF9fdTMyIHNfZmxh
Z3M7CiAgdW5zaWduZWQgY2hhciBzX3V1aWRbMTZdOwogIHVuc2lnbmVkIGNoYXIgc19sYWJlbFsx
Nl07CiAgY2hhciBzX3VudXNlZFs4OF0gOwoKCgp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9f
KSk7Cgp0eXBlZGVmIGVudW0gewogIHJlaXNlcmZzX2F0dHJzX2NsZWFyZWQgPSAweDAwMDAwMDAx
LAp9IHJlaXNlcmZzX3N1cGVyX2Jsb2NrX2ZsYWdzOwojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKc3RydWN0IHJlaXNlcmZzX3N1cGVy
X2Jsb2NrX3YxCnsKICBfX3UzMiBzX2Jsb2NrX2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7
CiAgX191MzIgc19yb290X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBz
X2pvdXJuYWxfZGV2OwogIF9fdTMyIHNfb3JpZ19qb3VybmFsX3NpemU7CiAgX191MzIgc19qb3Vy
bmFsX3RyYW5zX21heCA7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrX2NvdW50IDsKICBfX3UzMiBz
X2pvdXJuYWxfbWF4X2JhdGNoIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9hZ2UgOwog
IF9fdTMyIHNfam91cm5hbF9tYXhfdHJhbnNfYWdlIDsKICBfX3UxNiBzX2Jsb2Nrc2l6ZTsKICBf
X3UxNiBzX29pZF9tYXhzaXplOwogIF9fdTE2IHNfb2lkX2N1cnNpemU7CiAgX191MTYgc19zdGF0
ZTsKICBjaGFyIHNfbWFnaWNbMTZdOwogIF9fdTE2IHNfdHJlZV9oZWlnaHQ7CiAgX191MTYgc19i
bWFwX25yOwogIF9fdTMyIHNfcmVzZXJ2ZWQ7Cn0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18p
KTsKIyAyMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2Zz
X3NiLmgiCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlIHsKICBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJoIDsKICBrZGV2X3QgZGV2IDsKICB1bnNpZ25lZCBsb25nIGJsb2NrbnIgOwogIGxvbmcg
c3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3Qg
cmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxf
Y25vZGUgKnByZXYgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpocHJldiA7CiAg
c3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmhuZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJm
c19iaXRtYXBfbm9kZSB7CiAgaW50IGlkIDsKICBjaGFyICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9o
ZWFkIGxpc3QgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCB7CiAgc3RydWN0IHJl
aXNlcmZzX2pvdXJuYWxfbGlzdCAqam91cm5hbF9saXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0
bWFwX25vZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25f
aGFuZGxlIHsKCiAgY2hhciAqdF9jYWxsZXIgOwogIGludCB0X2Jsb2Nrc19sb2dnZWQgOwogIGlu
dCB0X2Jsb2Nrc19hbGxvY2F0ZWQgOwogIHVuc2lnbmVkIGxvbmcgdF90cmFuc19pZCA7CiAgc3Ry
dWN0IHN1cGVyX2Jsb2NrICp0X3N1cGVyIDsKCiAgaW50IGRpc3BsYWNlX25ld19ibG9ja3M6MTsK
Cn0gOwoKCgoKCgoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCB7CiAgdW5zaWduZWQgbG9u
ZyBqX3N0YXJ0IDsKICB1bnNpZ25lZCBsb25nIGpfbGVuIDsKICBhdG9taWNfdCBqX25vbnplcm9s
ZW4gOwogIGF0b21pY190IGpfY29tbWl0X2xlZnQgOwogIGF0b21pY190IGpfZmx1c2hpbmcgOwog
IGF0b21pY190IGpfY29tbWl0X2ZsdXNoaW5nIDsKICBhdG9taWNfdCBqX29sZGVyX2NvbW1pdHNf
ZG9uZSA7CiAgdW5zaWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB0aW1lX3Qgal90aW1lc3RhbXAg
OwogIHN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCAqal9saXN0X2JpdG1hcCA7CiAgc3RydWN0
IGJ1ZmZlcl9oZWFkICpqX2NvbW1pdF9iaCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25v
ZGUgKmpfcmVhbGJsb2NrIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9mcmVl
ZGxpc3QgOwogIHdhaXRfcXVldWVfaGVhZF90IGpfY29tbWl0X3dhaXQgOwogIHdhaXRfcXVldWVf
aGVhZF90IGpfZmx1c2hfd2FpdCA7Cn0gOwoKc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCA7Cgpz
dHJ1Y3QgcmVpc2VyZnNfam91cm5hbCB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIGpfYXBfYmxv
Y2tzIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9sYXN0IDsKICBzdHJ1Y3Qg
cmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9maXJzdCA7CgogIGxvbmcgal9zdGF0ZSA7CiAgdW5z
aWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpfbW91bnRfaWQgOwogIHVu
c2lnbmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgdW5zaWduZWQg
bG9uZyBqX2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwogIHVuc2lnbmVkIGxvbmcg
al9iY291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNoZWRfb2Zmc2V0IDsKICB1
bnNpZ25lZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFk
ICpqX2hlYWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpfZmx1c2hf
cGFnZXMgOwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdhaXRfcXVldWVfaGVhZF90
IGpfd2FpdCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9qb2lu
X3dhaXQgOwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJuYWxfbGlzdF9pbmRleCA7
CiAgaW50IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rfd2FpdCA7CiAgaW50IGpf
bmV4dF9mdWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNoIDsKCiAgaW50IGpfY25v
ZGVfdXNlZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCByZWlzZXJmc19qb3VybmFs
X2Nub2RlICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25v
ZGUgKmpfY25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRtYXBfbm9kZXMgOwogIGlu
dCBqX3VzZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfYml0bWFwX25vZGVz
IDsKICBzdHJ1Y3QgaW5vZGUgal9kdW1teV9pbm9kZSA7CiAgc3RydWN0IHJlaXNlcmZzX2xpc3Rf
Yml0bWFwIGpfbGlzdF9iaXRtYXBbNV0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3Qg
al9qb3VybmFsX2xpc3RbNjRdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9o
YXNoX3RhYmxlWzgxOTJdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9saXN0
X2hhc2hfdGFibGVbODE5Ml0gOwoKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfcHJlYWxsb2NfbGlzdDsK
fTsKCgoKCnR5cGVkZWYgX191MzIgKCpoYXNoZl90KSAoY29uc3Qgc2lnbmVkIGNoYXIgKiwgaW50
KTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfaW5mbwp7CgogICAgX191MTYgZmlyc3RfemVyb19o
aW50OwogICAgX191MTYgZnJlZV9jb3VudDsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmg7Cn07
CgpzdHJ1Y3QgcHJvY19kaXJfZW50cnk7CiMgNDA4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgp0eXBlZGVmIHN0cnVjdCByZWlzZXJmc19wcm9j
X2luZm9fZGF0YQp7fSByZWlzZXJmc19wcm9jX2luZm9fZGF0YV90OwoKCgpzdHJ1Y3QgcmVpc2Vy
ZnNfc2JfaW5mbwp7CiAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX3NiaDsKCgogICAgc3RydWN0
IHJlaXNlcmZzX3N1cGVyX2Jsb2NrICogc19yczsKICAgIHN0cnVjdCByZWlzZXJmc19iaXRtYXBf
aW5mbyAqIHNfYXBfYml0bWFwOwogICAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgKnNfam91cm5h
bCA7CiAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwoKCiAgICB2b2lkICgqZW5kX2lv
X2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFzaGZfdCBzX2hhc2hf
ZnVuY3Rpb247CgoKICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CgoKCiAgICBzdHJ1Y3Qg
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgYml0czsKICAgICAgICB1bnNpZ25lZCBsb25nIGxhcmdl
X2ZpbGVfc2l6ZTsKICAgICAgICBpbnQgYm9yZGVyOwogICAgICAgIGludCBwcmVhbGxvY21pbjsK
ICAgICAgICBpbnQgcHJlYWxsb2NzaXplOwoKCiAgICB9IHNfYWxsb2Nfb3B0aW9uczsKCgogICAg
d2FpdF9xdWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0b21pY190IHNfZ2VuZXJhdGlvbl9jb3Vu
dGVyOwoKICAgIHVuc2lnbmVkIGxvbmcgc19wcm9wZXJ0aWVzOwoKCgogICAgaW50IHNfa21hbGxv
Y3M7CiAgICBpbnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNfZGlza193cml0ZXM7CiAgICBpbnQg
c19maXhfbm9kZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwogICAgaW50IHNfdW5uZWVkZWRfbGVm
dF9uZWlnaGJvcjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5X2tleV9yZWFkYTsKICAgIGludCBz
X2JtYXBzOwogICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFyY2g7CiAgICBpbnQgc19kaXJlY3Qy
aW5kaXJlY3Q7CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7CgoKCiAgICBpbnQgc19pc191bmxp
bmtlZF9vazsKICAgIHJlaXNlcmZzX3Byb2NfaW5mb19kYXRhX3Qgc19wcm9jX2luZm9fZGF0YTsK
ICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY2RpcjsKICAgIGludCByZXNlcnZlZF9ibG9j
a3M7Cn07CiMgNTM0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZWlzZXJm
c19mc19zYi5oIgp2b2lkIHJlaXNlcmZzX2ZpbGVfYnVmZmVyIChzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBiaCwgaW50IGxpc3QpOwppbnQgcmVpc2VyZnNfaXNfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2Nr
ICpzKSA7CmludCBqb3VybmFsX21hcmtfZGlydHkoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9u
X2hhbmRsZSAqLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkg
OwppbnQgZmx1c2hfb2xkX2NvbW1pdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBpbnQpIDsKaW50
IHNob3dfcmVpc2VyZnNfbG9ja3Modm9pZCkgOwppbnQgcmVpc2VyZnNfcmVzaXplKHN0cnVjdCBz
dXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nKSA7CiMgNzAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvYmZzX2ZzX3NiLmgiCnN0cnVjdCBiZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzaV9ibG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlYjsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNpX2ZyZWVpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfaW9m
ZjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX3NibGs7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzaV9sZl9lYmxrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGFzdGk7CiAgICAgICAgY2hh
ciAqIHNpX2ltYXA7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2lfc2JoOwogICAgICAg
IHN0cnVjdCBiZnNfc3VwZXJfYmxvY2sgKiBzaV9iZnNfc2I7Cn07CiMgNzAyICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiCiNwcmFnbWEgcGFjaygxKQojIDMwICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIKc3RydWN0IHVkZl9z
cGFyaW5nX2RhdGEKewogICAgICAgIF9fdTE2IHNfcGFja2V0X2xlbjsKICAgICAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKnNfc3Bhcl9tYXBbNF07Cn07CgpzdHJ1Y3QgdWRmX3ZpcnR1YWxfZGF0YQp7
CiAgICAgICAgX191MzIgc19udW1fZW50cmllczsKICAgICAgICBfX3UxNiBzX3N0YXJ0X29mZnNl
dDsKfTsKCnN0cnVjdCB1ZGZfYml0bWFwCnsKICAgICAgICBfX3UzMiBzX2V4dExlbmd0aDsKICAg
ICAgICBfX3UzMiBzX2V4dFBvc2l0aW9uOwogICAgICAgIF9fdTE2IHNfbnJfZ3JvdXBzOwogICAg
ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKnNfYmxvY2tfYml0bWFwOwp9OwoKc3RydWN0IHVkZl9w
YXJ0X21hcAp7CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
dWRmX2JpdG1hcCAqc19iaXRtYXA7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNfdGFi
bGU7CiAgICAgICAgfSBzX3VzcGFjZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAg
ICAgICAgIHN0cnVjdCB1ZGZfYml0bWFwICpzX2JpdG1hcDsKICAgICAgICAgICAgICAgIHN0cnVj
dCBpbm9kZSAqc190YWJsZTsKICAgICAgICB9IHNfZnNwYWNlOwogICAgICAgIF9fdTMyIHNfcGFy
dGl0aW9uX3Jvb3Q7CiAgICAgICAgX191MzIgc19wYXJ0aXRpb25fbGVuOwogICAgICAgIF9fdTE2
IHNfcGFydGl0aW9uX3R5cGU7CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25fbnVtOwogICAgICAg
IHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9zcGFyaW5nX2RhdGEg
c19zcGFyaW5nOwogICAgICAgICAgICAgICAgc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEgc192aXJ0
dWFsOwogICAgICAgIH0gc190eXBlX3NwZWNpZmljOwogICAgICAgIF9fdTMyICgqc19wYXJ0aXRp
b25fZnVuYykoc3RydWN0IHN1cGVyX2Jsb2NrICosIF9fdTMyLCBfX3UxNiwgX191MzIpOwogICAg
ICAgIF9fdTE2IHNfdm9sdW1lc2VxbnVtOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX2ZsYWdz
Owp9OwoKI3ByYWdtYSBwYWNrKCkKCnN0cnVjdCB1ZGZfc2JfaW5mbwp7CiAgICAgICAgc3RydWN0
IHVkZl9wYXJ0X21hcCAqc19wYXJ0bWFwczsKICAgICAgICBfX3U4IHNfdm9saWRlbnRbMzJdOwoK
CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25zOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uOwoK
CiAgICAgICAgX19zMzIgc19zZXNzaW9uOwogICAgICAgIF9fdTMyIHNfYW5jaG9yWzRdOwogICAg
ICAgIF9fdTMyIHNfbGFzdGJsb2NrOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfbHZp
ZGJoOwoKCiAgICAgICAgbW9kZV90IHNfdW1hc2s7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAg
ICAgdWlkX3Qgc191aWQ7CgoKICAgICAgICB0aW1lX3Qgc19yZWNvcmR0aW1lOwoKCiAgICAgICAg
X191MTYgc19zZXJpYWxudW07CgoKICAgICAgICBfX3UxNiBzX3VkZnJldjsKCgogICAgICAgIF9f
dTMyIHNfZmxhZ3M7CgoKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpzX25sc19tYXA7CgoKICAg
ICAgICBzdHJ1Y3QgaW5vZGUgKnNfdmF0Owp9OwojIDcwMyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L25jcF9mc19zYi5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L25jcF9mc19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L25jcF9tb3VudC5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L25jcF9tb3VudC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L25jcC5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcC5o
IgpzdHJ1Y3QgbmNwX3JlcXVlc3RfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25u
X2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBmdW5jdGlvbiBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7Cn07CgoKCgpzdHJ1Y3QgbmNwX3JlcGx5X2hlYWRlciB7CiAgICAgICAgX191MTYg
dHlwZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IHNlcXVlbmNlIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9sb3cgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191OCB0YXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTggY29ubl9oaWdoIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTgg
Y29tcGxldGlvbl9jb2RlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29u
bmVjdGlvbl9zdGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFb
MF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCnN0cnVjdCBuY3Bfdm9sdW1lX2luZm8g
ewogICAgICAgIF9fdTMyIHRvdGFsX2Jsb2NrczsKICAgICAgICBfX3UzMiBmcmVlX2Jsb2NrczsK
ICAgICAgICBfX3UzMiBwdXJnZWFibGVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5vdF95ZXRfcHVy
Z2VhYmxlX2Jsb2NrczsKICAgICAgICBfX3UzMiB0b3RhbF9kaXJfZW50cmllczsKICAgICAgICBf
X3UzMiBhdmFpbGFibGVfZGlyX2VudHJpZXM7CiAgICAgICAgX191OCBzZWN0b3JzX3Blcl9ibG9j
azsKICAgICAgICBjaGFyIHZvbHVtZV9uYW1lWygxNikgKyAxXTsKfTsKIyAxMTIgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbndfaW5mb19zdHJ1Y3Qg
ewogICAgICAgIF9fdTMyIHNwYWNlQWxsb2MgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg
ICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3Ux
NiBmbGFncyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkYXRhU3RyZWFt
U2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiB0b3RhbFN0cmVhbVNp
emUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbnVtYmVyT2ZTdHJlYW1z
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uVGltZSBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191MTYgbW9kaWZ5RGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2
IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFy
Y2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVE
YXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVySUQgX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGVkUmlnaHRzTWFzayBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkaXJFbnROdW0gX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRG9zRGlyTnVtIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJlciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UzMiBFQURhdGFTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTMyIEVBS2V5Q291bnQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIg
RUFLZXlTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIE5TQ3JlYXRv
ciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IG5hbWVMZW4gX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBlbnRyeU5hbWVbMjU2XSBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKfTsKIyAxNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L25jcC5oIgpzdHJ1Y3QgbndfbW9kaWZ5X2Rvc19pbmZvIHsKICAgICAgICBfX3UzMiBhdHRyaWJ1
dGVzIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uRGF0ZSBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRy
aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgbW9kaWZ5VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f
dTE2IGFyY2hpdmVEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFy
Y2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVy
SUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUg
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VHcmFudE1h
c2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VSZXZv
a2VNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG1heGltdW1TcGFj
ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKCnN0cnVjdCBud19zZWFyY2hfc2VxdWVuY2Ug
ewogICAgICAgIF9fdTggdm9sTnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTMyIGRpckJhc2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgc2Vx
dWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAyCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIgpzdHJ1Y3QgbmNwX21vdW50X2RhdGEgewog
ICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAg
X19rZXJuZWxfdWlkX3QgbW91bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19w
aWQ7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAg
IHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50
OwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlk
OwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmls
ZV9tb2RlOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKCgoKc3RydWN0IG5j
cF9tb3VudF9kYXRhX3Y0IHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBs
b25nIGZsYWdzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtb3VudGVkX3VpZDsKCiAgICAgICAg
bG9uZyB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNp
Z25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2lnbmVkIGludCByZXRyeV9jb3VudDsKCgoK
ICAgICAgICB1bnNpZ25lZCBsb25nIHVpZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGdpZDsKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBmaWxlX21vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkaXJf
bW9kZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgaW50X2ZsYWdzOwoKICAgICAgICBf
X2tlcm5lbF91aWQzMl90IG1vdW50ZWRfdWlkOwogICAgICAgIF9fa2VybmVsX3BpZF90IHdkb2df
cGlkOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRp
bWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1
aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90
IGZpbGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21vZGU7Cn07CiMgMTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5oIiAyCgoKCgoKc3Ry
dWN0IG5jcF9zZXJ2ZXIgewoKICAgICAgICBzdHJ1Y3QgbmNwX21vdW50X2RhdGFfa2VybmVsIG07
CgoKCiAgICAgICAgX191OCBuYW1lX3NwYWNlWyg2NCkgKyAyXTsKCiAgICAgICAgc3RydWN0IGZp
bGUgKm5jcF9maWxwOwoKICAgICAgICB1OCBzZXF1ZW5jZTsKICAgICAgICB1OCB0YXNrOwogICAg
ICAgIHUxNiBjb25uZWN0aW9uOwoKICAgICAgICB1OCBjb21wbGV0aW9uOwogICAgICAgIHU4IGNv
bm5fc3RhdHVzOwoKCgogICAgICAgIGludCBidWZmZXJfc2l6ZTsKCiAgICAgICAgaW50IHJlcGx5
X3NpemU7CgogICAgICAgIGludCBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpw
YWNrZXQ7CgoKICAgICAgICBpbnQgbG9jazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsK
CiAgICAgICAgaW50IGN1cnJlbnRfc2l6ZTsKICAgICAgICBpbnQgaGFzX3N1YmZ1bmN0aW9uOwog
ICAgICAgIGludCBuY3BfcmVwbHlfc2l6ZTsKCiAgICAgICAgaW50IHJvb3Rfc2V0dXBlZDsKCgog
ICAgICAgIGludCBzaWduX3dhbnRlZDsKICAgICAgICBpbnQgc2lnbl9hY3RpdmU7CiAgICAgICAg
Y2hhciBzaWduX3Jvb3RbOF07CiAgICAgICAgY2hhciBzaWduX2xhc3RbMTZdOwoKCiAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgIGludCBhdXRoX3R5cGU7CiAgICAgICAgICAgICAgICBz
aXplX3Qgb2JqZWN0X25hbWVfbGVuOwogICAgICAgICAgICAgICAgdm9pZCogb2JqZWN0X25hbWU7
CiAgICAgICAgICAgICAgICBpbnQgb2JqZWN0X3R5cGU7CiAgICAgICAgfSBhdXRoOwoKICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgIHZv
aWQqIGRhdGE7CiAgICAgICAgfSBwcml2OwoKCiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxz
X3ZvbDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87CgoKICAgICAgICBpbnQgZGVu
dHJ5X3R0bDsKCgogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKfTsKIyA5MiAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiCnN0YXRpYyBpbmxpbmUgaW50
IG5jcF9jb25uX3ZhbGlkKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICByZXR1
cm4gKChzZXJ2ZXItPmNvbm5fc3RhdHVzICYgMHgxMSkgPT0gMCk7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCBuY3BfaW52YWxpZGF0ZV9jb25uKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAg
ICAgICBzZXJ2ZXItPmNvbm5fc3RhdHVzIHw9IDB4MDE7Cn0KIyA3MDQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC91c2JkZXZfZnNfc2IuaCIgMQpzdHJ1Y3QgdXNiZGV2X3NiX2luZm8gewog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBp
bGlzdDsKICAgICAgICB1aWRfdCBkZXZ1aWQ7CiAgICAgICAgZ2lkX3QgZGV2Z2lkOwogICAgICAg
IHVtb2RlX3QgZGV2bW9kZTsKICAgICAgICB1aWRfdCBidXN1aWQ7CiAgICAgICAgZ2lkX3QgYnVz
Z2lkOwogICAgICAgIHVtb2RlX3QgYnVzbW9kZTsKICAgICAgICB1aWRfdCBsaXN0dWlkOwogICAg
ICAgIGdpZF90IGxpc3RnaWQ7CiAgICAgICAgdW1vZGVfdCBsaXN0bW9kZTsKfTsKIyA3MDUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMQoKCgoKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDEKIyAxMyAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIgpzdHJ1Y3Qg
Y29tcGxldGlvbiB7CiAgICAgICAgdW5zaWduZWQgaW50IGRvbmU7CiAgICAgICAgd2FpdF9xdWV1
ZV9oZWFkX3Qgd2FpdDsKfTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2NvbXBsZXRp
b24oc3RydWN0IGNvbXBsZXRpb24gKngpCnsKICAgICAgICB4LT5kb25lID0gMDsKICAgICAgICBp
bml0X3dhaXRxdWV1ZV9oZWFkKCZ4LT53YWl0KTsKfQoKZXh0ZXJuIHZvaWQgd2FpdF9mb3JfY29t
cGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CmV4dGVybiB2b2lkIGNvbXBsZXRlKHN0cnVjdCBjb21wbGV0aW9uICopIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9q
ZmZzMl9mc19zYi5oIiAyCiMgMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXRk
X2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGlnaGVzdF9pbm87CiAgICAgICAgdW5zaWduZWQg
aW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qgbm9kZWxpc3RfbG9jazsKCgogICAgICAgIHN0
cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGdjX3Ro
cmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBnY190aHJlYWRfZXhpdDsKCgoK
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9jX3NlbTsKCgoKCiAgICAgICAgX191MzIgZmxh
c2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3NpemU7CiAgICAgICAgX191MzIgZGlydHlfc2l6
ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAgICAgICAgX191MzIgZXJhc2luZ19zaXplOwog
ICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAgIF9fdTMyIHNlY3Rvcl9zaXplOwoKCgogICAg
ICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5yX2VyYXNpbmdfYmxvY2tz
OwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxv
Y2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKm5leHRibG9jazsK
CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7CgogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X2xp
c3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBl
cmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0Owog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVyYXNlX2NvbXBsZXRpb25fbG9j
azsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2FpdDsKICAgICAgICBzdHJ1Y3Qg
amZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xpc3RbMV07CiAgICAgICAgc3BpbmxvY2tfdCBp
bm9jYWNoZV9sb2NrOwp9OwojIDcwNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgc3VwZXJfYmxvY2tzOwpleHRlcm4g
c3BpbmxvY2tfdCBzYl9sb2NrOwoKCgpzdHJ1Y3Qgc3VwZXJfYmxvY2sgewogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgc19saXN0OwogICAgICAgIGtkZXZfdCBzX2RldjsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfYmxvY2tzaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ibG9ja3NpemVfYml0
czsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfZGlydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgc19tYXhieXRlczsKICAgICAgICBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqc190eXBlOwog
ICAgICAgIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zICpzX29wOwogICAgICAgIHN0cnVjdCBkcXVv
dF9vcGVyYXRpb25zICpkcV9vcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmxhZ3M7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzX21hZ2ljOwogICAgICAgIHN0cnVjdCBkZW50cnkgKnNfcm9vdDsK
ICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIHNfdW1vdW50OwogICAgICAgIHN0cnVjdCBzZW1h
cGhvcmUgc19sb2NrOwogICAgICAgIGludCBzX2NvdW50OwogICAgICAgIGF0b21pY190IHNfYWN0
aXZlOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZGlydHk7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBzX2xvY2tlZF9pbm9kZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2ZpbGVz
OwoKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpzX2JkZXY7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBzX2luc3RhbmNlczsKICAgICAgICBzdHJ1Y3QgcXVvdGFfbW91bnRfb3B0aW9ucyBz
X2RxdW90OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbWluaXhfc2Jf
aW5mbyBtaW5peF9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQyX3NiX2luZm8gZXh0Ml9z
YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX3NiX2luZm8gZXh0M19zYjsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBocGZzX3NiX2luZm8gaHBmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVj
dCBudGZzX3NiX2luZm8gbnRmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rvc19zYl9p
bmZvIG1zZG9zX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGlzb2ZzX3NiX2luZm8gaXNvZnNf
c2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX3NiX2luZm8gbmZzX3NiOwogICAgICAgICAg
ICAgICAgc3RydWN0IHN5c3Zfc2JfaW5mbyBzeXN2X3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IGFmZnNfc2JfaW5mbyBhZmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHVmc19zYl9pbmZv
IHVmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBlZnNfc2JfaW5mbyBlZnNfc2I7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc2htZW1fc2JfaW5mbyBzaG1lbV9zYjsKICAgICAgICAgICAgICAg
IHN0cnVjdCByb21mc19zYl9pbmZvIHJvbWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHNt
Yl9zYl9pbmZvIHNtYmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGhmc19zYl9pbmZvIGhm
c19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZGZzX3NiX2luZm8gYWRmc19zYjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBxbng0X3NiX2luZm8gcW54NF9zYjsKICAgICAgICAgICAgICAgIHN0
cnVjdCByZWlzZXJmc19zYl9pbmZvIHJlaXNlcmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IGJmc19zYl9pbmZvIGJmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfc2JfaW5mbyB1
ZGZfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmNwX3NlcnZlciBuY3Bmc19zYjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCB1c2JkZXZfc2JfaW5mbyB1c2JkZXZmc19zYjsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBqZmZzMl9zYl9pbmZvIGpmZnMyX3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IGNyYW1mc19zYl9pbmZvIGNyYW1mc19zYjsKICAgICAgICAgICAgICAgIHZvaWQgKmdlbmVyaWNf
c2JwOwogICAgICAgIH0gdTsKCgoKCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX3Zmc19yZW5h
bWVfc2VtOwojIDc4MCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIK
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3BhdGhfc2VtOwp9OwoKCgoKZXh0
ZXJuIGludCB2ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7
CmV4dGVybiBpbnQgdmZzX21rZGlyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGlu
dCk7CmV4dGVybiBpbnQgdmZzX21rbm9kKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICos
IGludCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19zeW1saW5rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2xpbmsoc3RydWN0IGRl
bnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB2ZnNf
cm1kaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3Vu
bGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB2ZnNfcmVu
YW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICopOwojIDgxNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
ZnMuaCIKdHlwZWRlZiBpbnQgKCpmaWxsZGlyX3QpKHZvaWQgKiwgY29uc3QgY2hhciAqLCBpbnQs
IGxvZmZfdCwgaW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9u
cyB7CiAgICAgICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsK
ICAgICAgICBpbnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwog
ICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2ln
bmVkLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBpbnQgKCpjaGVja19tZWRpYV9jaGFuZ2UpIChr
ZGV2X3QpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChrZGV2X3QpOwogICAgICAgIHN0cnVj
dCBtb2R1bGUgKm93bmVyOwp9OwoKCgoKCgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKICAgICAg
ICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsKICAgICAgICBsb2ZmX3QgKCpsbHNlZWspIChzdHJ1Y3Qg
ZmlsZSAqLCBsb2ZmX3QsIGludCk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQpIChzdHJ1Y3QgZmls
ZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSkg
KHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAgICAgICAg
aW50ICgqcmVhZGRpcikgKHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgKCpwb2xsKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVf
c3RydWN0ICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBm
aWxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgqbW1hcCkg
KHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKICAgICAgICBpbnQgKCpv
cGVuKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmZsdXNo
KSAoc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAq
LCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpmc3luYykgKHN0cnVjdCBmaWxlICosIHN0
cnVjdCBkZW50cnkgKiwgaW50IGRhdGFzeW5jKTsKICAgICAgICBpbnQgKCpmYXN5bmMpIChpbnQs
IHN0cnVjdCBmaWxlICosIGludCk7CiAgICAgICAgaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICos
IGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsKICAgICAgICBzc2l6ZV90ICgqcmVhZHYpIChzdHJ1
Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICop
OwogICAgICAgIHNzaXplX3QgKCp3cml0ZXYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3Qg
aW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCpzZW5k
cGFnZSkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3Qg
KiwgaW50KTsKICAgICAgICB1bnNpZ25lZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpKHN0cnVj
dCBmaWxlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVu
c2lnbmVkIGxvbmcpOwp9OwoKc3RydWN0IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAo
KmNyZWF0ZSkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0
cnVjdCBkZW50cnkgKiAoKmxvb2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7
CiAgICAgICAgaW50ICgqbGluaykgKHN0cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1
Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVj
dCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVj
dCBkZW50cnkgKixjb25zdCBjaGFyICopOwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlu
b2RlICosc3RydWN0IGRlbnRyeSAqLGludCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3Qg
aW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlu
b2RlICosc3RydWN0IGRlbnRyeSAqLGludCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0
cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAo
c3RydWN0IGRlbnRyeSAqLCBjaGFyICosaW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykg
KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1
bmNhdGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVj
dCBpbm9kZSAqLCBpbnQpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChzdHJ1Y3QgZGVudHJ5
ICopOwogICAgICAgIGludCAoKnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0
ciAqKTsKICAgICAgICBpbnQgKCpnZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0
dHIgKik7CiAgICAgICAgaW50ICgqc2V0eGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNo
YXIgKiwgdm9pZCAqLCBzaXplX3QsIGludCk7CiAgICAgICAgc3NpemVfdCAoKmdldHhhdHRyKSAo
c3RydWN0IGRlbnRyeSAqLCBjb25zdCBjaGFyICosIHZvaWQgKiwgc2l6ZV90KTsKICAgICAgICBz
c2l6ZV90ICgqbGlzdHhhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIHNpemVfdCk7CiAg
ICAgICAgaW50ICgqcmVtb3ZleGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7
Cn07CgpzdHJ1Y3Qgc2VxX2ZpbGU7CgoKCgoKc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgewogICAg
ICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3RydWN0IGlub2RlICopOwoKCgoKCgoKICAgICAgICB2
b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSA7CiAgICAgICAgdm9p
ZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9p
bm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAgIHZvaWQgKCpwdXRfaW5vZGUpIChz
dHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAoKmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBpbm9k
ZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwog
ICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAg
ICBpbnQgKCpzeW5jX2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp3
cml0ZV9zdXBlcl9sb2NrZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAgICAgICAgdm9pZCAo
KnVubG9ja2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIGludCAoKnN0YXRmcykg
KHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qgc3RhdGZzICopOwogICAgICAgIGludCAoKnJl
bW91bnRfZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50ICosIGNoYXIgKik7CiAgICAgICAg
dm9pZCAoKmNsZWFyX2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIHZvaWQgKCp1bW91
bnRfYmVnaW4pIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiMgOTI3ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmZoX3Rv
X2RlbnRyeSkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgX191MzIgKmZoLCBpbnQgbGVuLCBpbnQg
Zmh0eXBlLCBpbnQgcGFyZW50KTsKICAgICAgICBpbnQgKCpkZW50cnlfdG9fZmgpKHN0cnVjdCBk
ZW50cnkgKiwgX191MzIgKmZoLCBpbnQgKmxlbnAsIGludCBuZWVkX3BhcmVudCk7CiAgICAgICAg
aW50ICgqc2hvd19vcHRpb25zKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IHZmc21vdW50ICop
Owp9OwojIDk0MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKZXh0
ZXJuIHZvaWQgX19tYXJrX2lub2RlX2RpcnR5KHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpzdGF0aWMg
aW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAg
ICAgX19tYXJrX2lub2RlX2RpcnR5KGlub2RlLCAoMSB8IDIgfCA0KSk7Cn0KCnN0YXRpYyBpbmxp
bmUgdm9pZCBtYXJrX2lub2RlX2RpcnR5X3N5bmMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAg
ICAgIF9fbWFya19pbm9kZV9kaXJ0eShpbm9kZSwgMSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBt
YXJrX2lub2RlX2RpcnR5X3BhZ2VzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21h
cmtfaW5vZGVfZGlydHkoaW5vZGUsIDQpOwp9CgpzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9ucyB7CiAg
ICAgICAgdm9pZCAoKmluaXRpYWxpemUpIChzdHJ1Y3QgaW5vZGUgKiwgc2hvcnQpOwogICAgICAg
IHZvaWQgKCpkcm9wKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIGludCAoKmFsbG9jX2Jsb2Nr
KSAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcsIGNoYXIpOwogICAgICAgIGludCAoKmFs
bG9jX2lub2RlKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAg
IHZvaWQgKCpmcmVlX2Jsb2NrKSAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAg
ICAgIHZvaWQgKCpmcmVlX2lub2RlKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxv
bmcpOwogICAgICAgIGludCAoKnRyYW5zZmVyKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0
ciAqKTsKfTsKCnN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHsKICAgICAgICBjb25zdCBjaGFyICpu
YW1lOwogICAgICAgIGludCBmc19mbGFnczsKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKigq
cmVhZF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lkICosIGludCk7CiAgICAgICAg
c3RydWN0IG1vZHVsZSAqb3duZXI7CiAgICAgICAgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiBu
ZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnNfc3VwZXJzOwp9OwojIDEwMDAgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBpbnQgcmVnaXN0ZXJf
ZmlsZXN5c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCB1bnJlZ2lz
dGVyX2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBzdHJ1Y3Qg
dmZzbW91bnQgKmtlcm5fbW91bnQoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBp
bnQgbWF5X3Vtb3VudChzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBsb25nIGRvX21vdW50KGNo
YXIgKiwgY2hhciAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CgoKCmV4dGVybiBp
bnQgdmZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsKIyAx
MDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gaW50
IGxvY2tzX21hbmRhdG9yeV9sb2NrZWQoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGxvY2tz
X21hbmRhdG9yeV9hcmVhKGludCwgc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIGxvZmZf
dCwgc2l6ZV90KTsKIyAxMDI4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9m
cy5oIgpzdGF0aWMgaW5saW5lIGludCBsb2Nrc192ZXJpZnlfbG9ja2VkKHN0cnVjdCBpbm9kZSAq
aW5vZGUpCnsKICAgICAgICBpZiAoKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYg
KChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAg
ICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfbG9ja2VkKGlub2RlKTsKICAgICAgICBy
ZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVyaWZ5X2FyZWEoaW50IHJlYWRf
d3JpdGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBmaWxlICpmaWxwLCBsb2ZmX3Qgb2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQpCnsKICAgICAgICBpZiAoaW5vZGUtPmlf
ZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlf
bW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJl
dHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYShyZWFkX3dyaXRlLCBpbm9kZSwgZmlscCwgb2Zmc2V0
LCBjb3VudCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGxvY2tzX3Zl
cmlmeV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlscCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9mZl90IHNpemUpCnsKICAgICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYg
KCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgw
MDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nr
c19tYW5kYXRvcnlfYXJlYSgKICAgICAgICAgICAgICAgICAgICAgICAgMiwgaW5vZGUsIGZpbHAs
CiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPCBpbm9kZS0+aV9zaXplID8gc2l6ZSA6IGlu
b2RlLT5pX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIChzaXplIDwgaW5vZGUtPmlfc2l6
ZSA/IGlub2RlLT5pX3NpemUgLSBzaXplCiAgICAgICAgICAgICAgICAgICAgICAgICA6IHNpemUg
LSBpbm9kZS0+aV9zaXplKQogICAgICAgICAgICAgICAgKTsKICAgICAgICByZXR1cm4gMDsKfQoK
c3RhdGljIGlubGluZSBpbnQgZ2V0X2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVk
IGludCBtb2RlKQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrKQogICAgICAgICAgICAgICAg
cmV0dXJuIF9fZ2V0X2xlYXNlKGlub2RlLCBtb2RlKTsKICAgICAgICByZXR1cm4gMDsKfQoKCgog
X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX29wZW4oY29uc3QgY2hhciAqLCBp
bnQsIGludCk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfY2xvc2UodW5z
aWduZWQgaW50KTsKZXh0ZXJuIGludCBkb190cnVuY2F0ZShzdHJ1Y3QgZGVudHJ5ICosIGxvZmZf
dCBzdGFydCk7CgpleHRlcm4gc3RydWN0IGZpbGUgKmZpbHBfb3Blbihjb25zdCBjaGFyICosIGlu
dCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogZGVudHJ5X29wZW4oc3RydWN0IGRlbnRyeSAq
LCBzdHJ1Y3QgdmZzbW91bnQgKiwgaW50KTsKZXh0ZXJuIGludCBmaWxwX2Nsb3NlKHN0cnVjdCBm
aWxlICosIGZsX293bmVyX3QgaWQpOwpleHRlcm4gY2hhciAqIGdldG5hbWUoY29uc3QgY2hhciAq
KTsKCgpleHRlcm4gdm9pZCB2ZnNfY2FjaGVzX2luaXQodW5zaWduZWQgbG9uZyk7CgoKCgplbnVt
IHtCREVWX0ZJTEUsIEJERVZfU1dBUCwgQkRFVl9GUywgQkRFVl9SQVd9OwpleHRlcm4gaW50IHJl
Z2lzdGVyX2Jsa2Rldih1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwgc3RydWN0IGJsb2NrX2Rl
dmljZV9vcGVyYXRpb25zICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfYmxrZGV2KHVuc2lnbmVk
IGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZ2V0KGRl
dl90KTsKZXh0ZXJuIGludCBiZF9hY3F1aXJlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4g
dm9pZCBiZF9mb3JnZXQoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiB2b2lkIGJkcHV0KHN0
cnVjdCBibG9ja19kZXZpY2UgKik7CmV4dGVybiBzdHJ1Y3QgY2hhcl9kZXZpY2UgKmNkZ2V0KGRl
dl90KTsKZXh0ZXJuIHZvaWQgY2RwdXQoc3RydWN0IGNoYXJfZGV2aWNlICopOwpleHRlcm4gaW50
IGJsa2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGludCBi
bGtkZXZfY2xvc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gc3RydWN0
IGZpbGVfb3BlcmF0aW9ucyBkZWZfYmxrX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgYWRkcmVzc19zcGFj
ZV9vcGVyYXRpb25zIGRlZl9ibGtfYW9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg
ZGVmX2ZpZm9fZm9wczsKZXh0ZXJuIGludCBpb2N0bF9ieV9iZGV2KHN0cnVjdCBibG9ja19kZXZp
Y2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IGJsa2Rldl9nZXQoc3Ry
dWN0IGJsb2NrX2RldmljZSAqLCBtb2RlX3QsIHVuc2lnbmVkLCBpbnQpOwpleHRlcm4gaW50IGJs
a2Rldl9wdXQoc3RydWN0IGJsb2NrX2RldmljZSAqLCBpbnQpOwoKCmV4dGVybiBjb25zdCBzdHJ1
Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgKmdldF9ibGtmb3BzKHVuc2lnbmVkIGludCk7CmV4
dGVybiBpbnQgcmVnaXN0ZXJfY2hyZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqLCBzdHJ1
Y3QgZmlsZV9vcGVyYXRpb25zICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfY2hyZGV2KHVuc2ln
bmVkIGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBjaHJkZXZfb3BlbihzdHJ1Y3QgaW5v
ZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4dGVybiBjb25zdCBjaGFyICogYmRldm5hbWUoa2Rldl90
KTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBjZGV2bmFtZShrZGV2X3QpOwpleHRlcm4gY29uc3QgY2hh
ciAqIGtkZXZuYW1lKGtkZXZfdCk7CmV4dGVybiB2b2lkIGluaXRfc3BlY2lhbF9pbm9kZShzdHJ1
Y3QgaW5vZGUgKiwgdW1vZGVfdCwgaW50KTsKCgpleHRlcm4gdm9pZCBtYWtlX2JhZF9pbm9kZShz
dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgaXNfYmFkX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsK
CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfZmlmb19mb3BzOwpleHRlcm4gc3Ry
dWN0IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9v
cGVyYXRpb25zIHJkd3JfZmlmb19mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBy
ZWFkX3BpcGVfZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd3JpdGVfcGlwZV9m
b3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZHdyX3BpcGVfZm9wczsKCmV4dGVy
biBpbnQgZnNfbWF5X3JlbW91bnRfcm8oc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKZXh0ZXJuIGlu
dCB0cnlfdG9fZnJlZV9idWZmZXJzKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGludCkgX19hdHRy
aWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCByZWZpbGVfYnVmZmVyKHN0cnVjdCBi
dWZmZXJfaGVhZCAqIGJ1Zik7CmV4dGVybiB2b2lkIGNyZWF0ZV9lbXB0eV9idWZmZXJzKHN0cnVj
dCBwYWdlICosIGtkZXZfdCwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIGVuZF9idWZmZXJf
aW9fc3luYyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOwoKCmV4dGVybiB2
b2lkIHNldF9idWZmZXJfYXN5bmNfaW8oc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgOwoKCgoKCgpz
dGF0aWMgaW5saW5lIHZvaWQgZ2V0X2JoKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7CiAgICAg
ICAgYXRvbWljX2luYygmKGJoKS0+Yl9jb3VudCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBwdXRf
Ymgoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KCIiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgYXRvbWljX2RlYygmYmgtPmJfY291bnQpOwp9CgoK
CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfdXB0b2RhdGUoc3RydWN0IGJ1ZmZlcl9o
ZWFkICogYmgsIGludCBvbikKewogICAgICAgIGlmIChvbikKICAgICAgICAgICAgICAgIHNldF9i
aXQoQkhfVXB0b2RhdGUsICZiaC0+Yl9zdGF0ZSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgY2xlYXJfYml0KEJIX1VwdG9kYXRlLCAmYmgtPmJfc3RhdGUpOwp9CgoKCnN0YXRpYyBpbmxp
bmUgdm9pZCBfX21hcmtfYnVmZmVyX2NsZWFuKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAg
ICAgICByZWZpbGVfYnVmZmVyKGJoKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVy
X2NsZWFuKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7CiAgICAgICAgaWYgKHRlc3RfYW5kX2Ns
ZWFyX2JpdChCSF9EaXJ0eSwgJihiaCktPmJfc3RhdGUpKQogICAgICAgICAgICAgICAgX19tYXJr
X2J1ZmZlcl9jbGVhbihiaCk7Cn0KCmV4dGVybiB2b2lkIF9fbWFya19kaXJ0eShzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKmJoKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIF9f
bWFya19idWZmZXJfZGlydHkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygo
cmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBtYXJrX2J1ZmZlcl9kaXJ0eShzdHJ1Y3QgYnVmZmVy
X2hlYWQgKmJoKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGJ1ZmZl
cl9pbnNlcnRfaW5vZGVfcXVldWUoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVjdCBpbm9kZSAq
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGJ1ZmZlcl9pbnNlcnRf
aW5vZGVfZGF0YV9xdWV1ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGlub2RlICopIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCnN0YXRpYyBpbmxpbmUgaW50IGF0b21pY19zZXRf
YnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICByZXR1cm4gdGVz
dF9hbmRfc2V0X2JpdChCSF9EaXJ0eSwgJmJoLT5iX3N0YXRlKTsKfQoKc3RhdGljIGlubGluZSB2
b2lkIG1hcmtfYnVmZmVyX2FzeW5jKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCBpbnQgb24pCnsK
ICAgICAgICBpZiAob24pCiAgICAgICAgICAgICAgICBzZXRfYml0KEJIX0FzeW5jLCAmYmgtPmJf
c3RhdGUpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGNsZWFyX2JpdChCSF9Bc3luYywg
JmJoLT5iX3N0YXRlKTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGJ1ZmZlcl9JT19lcnJv
cihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIG1hcmtfYnVmZmVyX2NsZWFuKGJo
KTsKCgoKICAgICAgICBiaC0+Yl9lbmRfaW8oYmgsIDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQg
bWFya19idWZmZXJfZGlydHlfaW5vZGUoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgc3RydWN0IGlu
b2RlICppbm9kZSkKewogICAgICAgIG1hcmtfYnVmZmVyX2RpcnR5KGJoKTsKICAgICAgICBidWZm
ZXJfaW5zZXJ0X2lub2RlX3F1ZXVlKGJoLCBpbm9kZSk7Cn0KCmV4dGVybiB2b2lkIHNldF9idWZm
ZXJfZmx1c2h0aW1lKHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKZXh0ZXJuIHZvaWQgYmFsYW5jZV9k
aXJ0eSh2b2lkKTsKZXh0ZXJuIGludCBjaGVja19kaXNrX2NoYW5nZShrZGV2X3QpOwpleHRlcm4g
aW50IGludmFsaWRhdGVfaW5vZGVzKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGludCBp
bnZhbGlkYXRlX2RldmljZShrZGV2X3QsIGludCk7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5v
ZGVfcGFnZXMoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX3Bh
Z2VzMihzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9pbm9k
ZV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2JkZXYo
c3RydWN0IGJsb2NrX2RldmljZSAqLCBpbnQpOwpleHRlcm4gdm9pZCBfX2ludmFsaWRhdGVfYnVm
ZmVycyhrZGV2X3QgZGV2LCBpbnQpOwpleHRlcm4gdm9pZCBzeW5jX2lub2RlcyhrZGV2X3QpOwpl
eHRlcm4gdm9pZCBzeW5jX3VubG9ja2VkX2lub2Rlcyh2b2lkKTsKZXh0ZXJuIHZvaWQgd3JpdGVf
aW5vZGVfbm93KHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IHN5bmNfYnVmZmVycyhr
ZGV2X3QsIGludCk7CmV4dGVybiB2b2lkIHN5bmNfZGV2KGtkZXZfdCk7CmV4dGVybiBpbnQgZnN5
bmNfZGV2KGtkZXZfdCk7CmV4dGVybiBpbnQgZnN5bmNfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2Nr
ICopOwpleHRlcm4gaW50IGZzeW5jX25vX3N1cGVyKGtkZXZfdCk7CmV4dGVybiB2b2lkIHN5bmNf
aW5vZGVzX3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGludCBmc3luY19idWZmZXJz
X2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqKTsKc3RhdGljIGlubGluZSBpbnQgZnN5bmNfaW5vZGVf
YnVmZmVycyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgcmV0dXJuIGZzeW5jX2J1ZmZl
cnNfbGlzdCgmaW5vZGUtPmlfZGlydHlfYnVmZmVycyk7Cn0Kc3RhdGljIGlubGluZSBpbnQgZnN5
bmNfaW5vZGVfZGF0YV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICByZXR1
cm4gZnN5bmNfYnVmZmVyc19saXN0KCZpbm9kZS0+aV9kaXJ0eV9kYXRhX2J1ZmZlcnMpOwp9CmV4
dGVybiBpbnQgaW5vZGVfaGFzX2J1ZmZlcnMoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGZp
bGVtYXBfZmRhdGFzeW5jKHN0cnVjdCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4gaW50IGZpbGVt
YXBfZmRhdGF3YWl0KHN0cnVjdCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBzeW5jX3N1
cGVycyhrZGV2X3QgZGV2LCBpbnQgd2FpdCk7CmV4dGVybiBpbnQgYm1hcChzdHJ1Y3QgaW5vZGUg
KiwgaW50KTsKZXh0ZXJuIGludCBub3RpZnlfY2hhbmdlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0
IGlhdHRyICopOwpleHRlcm4gaW50IHBlcm1pc3Npb24oc3RydWN0IGlub2RlICosIGludCk7CmV4
dGVybiBpbnQgdmZzX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQg
Z2V0X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgZGVueV93cml0ZV9h
Y2Nlc3Moc3RydWN0IGZpbGUgKik7CnN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfd3JpdGVfYWNjZXNz
KHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAgICAgICAgYXRvbWljX2RlYygmaW5vZGUtPmlfd3Jp
dGVjb3VudCk7Cn0Kc3RhdGljIGlubGluZSB2b2lkIGFsbG93X3dyaXRlX2FjY2VzcyhzdHJ1Y3Qg
ZmlsZSAqZmlsZSkKewogICAgICAgIGlmIChmaWxlKQogICAgICAgICAgICAgICAgYXRvbWljX2lu
YygmZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfd3JpdGVjb3VudCk7Cn0KZXh0ZXJuIGludCBk
b19waXBlKGludCAqKTsKCmV4dGVybiBpbnQgb3Blbl9uYW1laShjb25zdCBjaGFyICosIGludCwg
aW50LCBzdHJ1Y3QgbmFtZWlkYXRhICopOwoKZXh0ZXJuIGludCBrZXJuZWxfcmVhZChzdHJ1Y3Qg
ZmlsZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyICosIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gc3Ry
dWN0IGZpbGUgKiBvcGVuX2V4ZWMoY29uc3QgY2hhciAqKTsKCgpleHRlcm4gaW50IGlzX3N1YmRp
cihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbm9fdCBmaW5kX2lu
b2RlX251bWJlcihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICopOwojIDEyNzkgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAq
RVJSX1BUUihsb25nIGVycm9yKQp7CiAgICAgICAgcmV0dXJuICh2b2lkICopIGVycm9yOwp9Cgpz
dGF0aWMgaW5saW5lIGxvbmcgUFRSX0VSUihjb25zdCB2b2lkICpwdHIpCnsKICAgICAgICByZXR1
cm4gKGxvbmcpIHB0cjsKfQoKc3RhdGljIGlubGluZSBsb25nIElTX0VSUihjb25zdCB2b2lkICpw
dHIpCnsKICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpcHRyID4gKHVuc2lnbmVkIGxvbmcp
LTEwMDBMOwp9CiMgMTMxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMu
aCIKZW51bSB7TEFTVF9OT1JNLCBMQVNUX1JPT1QsIExBU1RfRE9ULCBMQVNUX0RPVERPVCwgTEFT
VF9CSU5EfTsKIyAxMzIxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5o
Igp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgc2l6ZV90IHdyaXR0ZW47CiAgICAgICAgc2l6ZV90
IGNvdW50OwogICAgICAgIGNoYXIgKiBidWY7CiAgICAgICAgaW50IGVycm9yOwp9IHJlYWRfZGVz
Y3JpcHRvcl90OwoKdHlwZWRlZiBpbnQgKCpyZWFkX2FjdG9yX3QpKHJlYWRfZGVzY3JpcHRvcl90
ICosIHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKCmV4dGVy
biBsb2ZmX3QgZGVmYXVsdF9sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQs
IGludCBvcmlnaW4pOwoKZXh0ZXJuIGludCBfX3VzZXJfd2Fsayhjb25zdCBjaGFyICosIHVuc2ln
bmVkLCBzdHJ1Y3QgbmFtZWlkYXRhICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0
ZXJuIGludCBwYXRoX2luaXQoY29uc3QgY2hhciAqLCB1bnNpZ25lZCwgc3RydWN0IG5hbWVpZGF0
YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgcGF0aF93YWxrKGNv
bnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CmV4dGVybiBpbnQgcGF0aF9sb29rdXAoY29uc3QgY2hhciAqLCB1bnNpZ25lZCwgc3RydWN0
IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgbGlu
a19wYXRoX3dhbGsoY29uc3QgY2hhciAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgcGF0aF9yZWxlYXNlKHN0cnVjdCBuYW1laWRh
dGEgKik7CmV4dGVybiBpbnQgZm9sbG93X2Rvd24oc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3Qg
ZGVudHJ5ICoqKTsKZXh0ZXJuIGludCBmb2xsb3dfdXAoc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1
Y3QgZGVudHJ5ICoqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfb25lX2xlbihjb25z
dCBjaGFyICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBs
b29rdXBfaGFzaChzdHJ1Y3QgcXN0ciAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoKCgpleHRlcm4gdm9p
ZCBpcHV0KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZm9yY2VfZGVsZXRlKHN0cnVjdCBp
bm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGlncmFiKHN0cnVjdCBpbm9kZSAqKTsKZXh0
ZXJuIGlub190IGl1bmlxdWUoc3RydWN0IHN1cGVyX2Jsb2NrICosIGlub190KTsKCnR5cGVkZWYg
aW50ICgqZmluZF9pbm9kZV90KShzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAq
KTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGlnZXQ0KHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNp
Z25lZCBsb25nLCBmaW5kX2lub2RlX3QsIHZvaWQgKik7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGlu
b2RlICppZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKQp7CiAg
ICAgICAgcmV0dXJuIGlnZXQ0KHNiLCBpbm8sICgodm9pZCAqKTApLCAoKHZvaWQgKikwKSk7Cn0K
CmV4dGVybiB2b2lkIGNsZWFyX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBp
bm9kZSAqIGdldF9lbXB0eV9pbm9kZSh2b2lkKTsKCnN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2Rl
ICogbmV3X2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCnsKICAgICAgICBzdHJ1Y3QgaW5v
ZGUgKmlub2RlID0gZ2V0X2VtcHR5X2lub2RlKCk7CiAgICAgICAgaWYgKGlub2RlKSB7CiAgICAg
ICAgICAgICAgICBpbm9kZS0+aV9zYiA9IHNiOwogICAgICAgICAgICAgICAgaW5vZGUtPmlfZGV2
ID0gc2ItPnNfZGV2OwogICAgICAgICAgICAgICAgaW5vZGUtPmlfYmxrYml0cyA9IHNiLT5zX2Js
b2Nrc2l6ZV9iaXRzOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaW5vZGU7Cn0KZXh0ZXJuIHZv
aWQgcmVtb3ZlX3N1aWQoc3RydWN0IGlub2RlICppbm9kZSk7CgpleHRlcm4gdm9pZCBpbnNlcnRf
aW5vZGVfaGFzaChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHJlbW92ZV9pbm9kZV9oYXNo
KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogZ2V0X2VtcHR5X2ZpbHAodm9p
ZCk7CmV4dGVybiB2b2lkIGZpbGVfbW92ZShzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IGxpc3RfaGVh
ZCAqbGlzdCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBnZXRfaGFzaF90YWJsZShrZGV2
X3QsIGludCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIGdldGJsayhrZGV2X3Qs
IGludCwgaW50KTsKZXh0ZXJuIHZvaWQgbGxfcndfYmxvY2soaW50LCBpbnQsIHN0cnVjdCBidWZm
ZXJfaGVhZCAqIGJoW10pOwpleHRlcm4gdm9pZCBzdWJtaXRfYmgoaW50LCBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKik7CmV4dGVybiBpbnQgaXNfcmVhZF9vbmx5KGtkZXZfdCk7CmV4dGVybiB2b2lkIF9f
YnJlbHNlKHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKc3RhdGljIGlubGluZSB2b2lkIGJyZWxzZShz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJ1ZikKewogICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAg
ICBfX2JyZWxzZShidWYpOwp9CmV4dGVybiB2b2lkIF9fYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hl
YWQgKik7CnN0YXRpYyBpbmxpbmUgdm9pZCBiZm9yZ2V0KHN0cnVjdCBidWZmZXJfaGVhZCAqYnVm
KQp7CiAgICAgICAgaWYgKGJ1ZikKICAgICAgICAgICAgICAgIF9fYmZvcmdldChidWYpOwp9CmV4
dGVybiBpbnQgc2V0X2Jsb2Nrc2l6ZShrZGV2X3QsIGludCk7CmV4dGVybiBpbnQgc2Jfc2V0X2Js
b2Nrc2l6ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50KTsKZXh0ZXJuIGludCBzYl9taW5fYmxv
Y2tzaXplKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9o
ZWFkICogYnJlYWQoa2Rldl90LCBpbnQsIGludCk7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZl
cl9oZWFkICogc2JfYnJlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAg
ICAgICAgcmV0dXJuIGJyZWFkKHNiLT5zX2RldiwgYmxvY2ssIHNiLT5zX2Jsb2Nrc2l6ZSk7Cn0K
c3RhdGljIGlubGluZSBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzYl9nZXRibGsoc3RydWN0IHN1cGVy
X2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAgICAgcmV0dXJuIGdldGJsayhzYi0+c19kZXYs
IGJsb2NrLCBzYi0+c19ibG9ja3NpemUpOwp9CnN0YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZlcl9o
ZWFkICogc2JfZ2V0X2hhc2hfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2Nr
KQp7CiAgICAgICAgcmV0dXJuIGdldF9oYXNoX3RhYmxlKHNiLT5zX2RldiwgYmxvY2ssIHNiLT5z
X2Jsb2Nrc2l6ZSk7Cn0KZXh0ZXJuIHZvaWQgd2FrZXVwX2JkZmx1c2godm9pZCk7CmV4dGVybiB2
b2lkIHB1dF91bnVzZWRfYnVmZmVyX2hlYWQoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpOwpleHRl
cm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0X3VudXNlZF9idWZmZXJfaGVhZChpbnQgYXN5bmMp
OwoKZXh0ZXJuIGludCBicndfcGFnZShpbnQsIHN0cnVjdCBwYWdlICosIGtkZXZfdCwgaW50IFtd
LCBpbnQpOwoKdHlwZWRlZiBpbnQgKGdldF9ibG9ja190KShzdHJ1Y3QgaW5vZGUqLGxvbmcsc3Ry
dWN0IGJ1ZmZlcl9oZWFkKixpbnQpOwoKCmV4dGVybiBpbnQgdHJ5X3RvX3JlbGVhc2VfcGFnZShz
dHJ1Y3QgcGFnZSAqIHBhZ2UsIGludCBnZnBfbWFzayk7CmV4dGVybiBpbnQgZGlzY2FyZF9iaF9w
YWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgoKZXh0ZXJuIGludCBibG9j
a19zeW1saW5rKHN0cnVjdCBpbm9kZSAqLCBjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQg
YmxvY2tfd3JpdGVfZnVsbF9wYWdlKHN0cnVjdCBwYWdlKiwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJu
IGludCBibG9ja19yZWFkX2Z1bGxfcGFnZShzdHJ1Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4
dGVybiBpbnQgYmxvY2tfcHJlcGFyZV93cml0ZShzdHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNp
Z25lZCwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBjb250X3ByZXBhcmVfd3JpdGUoc3RydWN0
IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGdldF9ibG9ja190KiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICopOwpleHRlcm4gaW50IGdlbmVyaWNfY29u
dF9leHBhbmQoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHNpemUpIDsKZXh0ZXJuIGludCBi
bG9ja19jb21taXRfd3JpdGUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvKTsKZXh0ZXJuIGludCBibG9ja19zeW5jX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgppbnQg
Z2VuZXJpY19ibG9ja19ibWFwKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvbmcsIGdldF9ibG9j
a190ICopOwppbnQgZ2VuZXJpY19jb21taXRfd3JpdGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBh
Z2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKaW50IGJsb2NrX3RydW5jYXRlX3BhZ2Uoc3RydWN0
IGFkZHJlc3Nfc3BhY2UgKiwgbG9mZl90LCBnZXRfYmxvY2tfdCAqKTsKZXh0ZXJuIGludCBnZW5l
cmljX2RpcmVjdF9JTyhpbnQsIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2ln
bmVkIGxvbmcsIGludCwgZ2V0X2Jsb2NrX3QgKik7CmV4dGVybiBpbnQgd2FpdGZvcl9vbmVfcGFn
ZShzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIGludCB3cml0ZW91dF9vbmVfcGFnZShzdHJ1Y3QgcGFn
ZSAqKTsKCmV4dGVybiBpbnQgZ2VuZXJpY19maWxlX21tYXAoc3RydWN0IGZpbGUgKiwgc3RydWN0
IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gaW50IGZpbGVfcmVhZF9hY3RvcihyZWFkX2Rlc2Ny
aXB0b3JfdCAqIGRlc2MsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwg
dW5zaWduZWQgbG9uZyBzaXplKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3JlYWQoc3Ry
dWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgZ2Vu
ZXJpY19maWxlX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2Zm
X3QgKik7CmV4dGVybiB2b2lkIGRvX2dlbmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGxv
ZmZfdCAqLCByZWFkX2Rlc2NyaXB0b3JfdCAqLCByZWFkX2FjdG9yX3QpOwpleHRlcm4gbG9mZl90
IG5vX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7
CmV4dGVybiBsb2ZmX3QgZ2VuZXJpY19maWxlX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9m
Zl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIo
c3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIGludCBnZW5l
cmljX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwKTsK
CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGdlbmVyaWNfcm9fZm9wczsKCmV4dGVybiBp
bnQgdmZzX3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIg
Kik7CmV4dGVybiBpbnQgdmZzX2ZvbGxvd19saW5rKHN0cnVjdCBuYW1laWRhdGEgKiwgY29uc3Qg
Y2hhciAqKTsKZXh0ZXJuIGludCBwYWdlX3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAq
LCBpbnQpOwpleHRlcm4gaW50IHBhZ2VfZm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1
Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1s
aW5rX2lub2RlX29wZXJhdGlvbnM7CgpleHRlcm4gaW50IHZmc19yZWFkZGlyKHN0cnVjdCBmaWxl
ICosIGZpbGxkaXJfdCwgdm9pZCAqKTsKZXh0ZXJuIGludCBkY2FjaGVfZGlyX29wZW4oc3RydWN0
IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gaW50IGRjYWNoZV9kaXJfY2xvc2Uoc3Ry
dWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gbG9mZl90IGRjYWNoZV9kaXJfbHNl
ZWsoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwpleHRlcm4gaW50IGRjYWNoZV9kaXJfZnN5
bmMoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IGRjYWNo
ZV9yZWFkZGlyKHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKZXh0ZXJuIHN0cnVj
dCBmaWxlX29wZXJhdGlvbnMgZGNhY2hlX2Rpcl9vcHM7CgpleHRlcm4gc3RydWN0IGZpbGVfc3lz
dGVtX3R5cGUgKmdldF9mc190eXBlKGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gc3RydWN0IHN1
cGVyX2Jsb2NrICpnZXRfc3VwZXIoa2Rldl90KTsKZXh0ZXJuIHZvaWQgZHJvcF9zdXBlcihzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3RhdGljIGlubGluZSBpbnQgaXNfbW91bnRlZChrZGV2X3Qg
ZGV2KQp7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGdldF9zdXBlcihkZXYpOwog
ICAgICAgIGlmIChzYikgewogICAgICAgICAgICAgICAgZHJvcF9zdXBlcihzYik7CiAgICAgICAg
ICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KdW5zaWduZWQg
bG9uZyBnZW5lcmF0ZV9jbHVzdGVyKGtkZXZfdCwgaW50IGJbXSwgaW50KTsKdW5zaWduZWQgbG9u
ZyBnZW5lcmF0ZV9jbHVzdGVyX3N3YWIzMihrZGV2X3QsIGludCBiW10sIGludCk7CmV4dGVybiBr
ZGV2X3QgUk9PVF9ERVY7CmV4dGVybiBjaGFyIHJvb3RfZGV2aWNlX25hbWVbXTsKCgpleHRlcm4g
dm9pZCBzaG93X2J1ZmZlcnModm9pZCk7CgoKCgoKZXh0ZXJuIHNzaXplX3QgY2hhcl9yZWFkKHN0
cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IGJs
b2NrX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJu
IGludCByZWFkX2FoZWFkW107CgpleHRlcm4gc3NpemVfdCBjaGFyX3dyaXRlKHN0cnVjdCBmaWxl
ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IGJsb2Nr
X3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7Cgpl
eHRlcm4gaW50IGZpbGVfZnN5bmMoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQp
OwpleHRlcm4gaW50IGdlbmVyaWNfYnVmZmVyX2ZkYXRhc3luYyhzdHJ1Y3QgaW5vZGUgKmlub2Rl
LCB1bnNpZ25lZCBsb25nIHN0YXJ0X2lkeCwgdW5zaWduZWQgbG9uZyBlbmRfaWR4KTsKZXh0ZXJu
IGludCBnZW5lcmljX29zeW5jX2lub2RlKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwoKCgoKZXh0ZXJu
IGludCBpbm9kZV9jaGFuZ2Vfb2soc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0ciAqKTsKZXh0
ZXJuIGludCBpbm9kZV9zZXRhdHRyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaWF0dHIgKik7CiMg
MTUyNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlu
bGluZSBzdHJ1Y3QgZGVudHJ5ICpsb2NrX3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsK
ICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkaXIgPSBkZ2V0KGRlbnRyeS0+ZF9wYXJlbnQpOwoKICAg
ICAgICBkb3duKCZkaXItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICByZXR1cm4gZGlyOwp9Cgpz
dGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKmdldF9wYXJlbnQoc3RydWN0IGRlbnRyeSAqZGVu
dHJ5KQp7CiAgICAgICAgcmV0dXJuIGRnZXQoZGVudHJ5LT5kX3BhcmVudCk7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCB1bmxvY2tfZGlyKHN0cnVjdCBkZW50cnkgKmRpcikKewogICAgICAgIHVwKCZk
aXItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICBkcHV0KGRpcik7Cn0KCgoKCgpzdGF0aWMgaW5s
aW5lIHZvaWQgZG91YmxlX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsIHN0cnVjdCBzZW1hcGhv
cmUgKnMyKQp7CiAgICAgICAgaWYgKHMxICE9IHMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHVu
c2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMyOwogICAgICAgICAgICAgICAgICAgICAg
ICBzMiA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRv
d24oczEpOwogICAgICAgIH0KICAgICAgICBkb3duKHMyKTsKfQojIDE1NzAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVf
ZG93bihzdHJ1Y3Qgc2VtYXBob3JlICpzMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHNlbWFwaG9yZSAqczMpCnsKICAgICAgICBpZiAoczEgIT0gczIpIHsKICAgICAgICAgICAg
ICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczIpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25n
KSBzMykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
KnRtcCA9IHMzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gczE7IHMxID0g
dG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMjsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gczE7IHMxID0gdG1wOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9u
ZykgczIgPCAodW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzMyA9IHMyOyBzMiA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZG93bihzMSk7CiAgICAgICAgfSBlbHNlIGlm
ICgodW5zaWduZWQgbG9uZykgczIgPCAodW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAgICAgczMgPSBzMjsg
czIgPSB0bXA7CiAgICAgICAgfQogICAgICAgIGRvd24oczIpOwogICAgICAgIGRvd24oczMpOwp9
CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91YmxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLCBzdHJ1
Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAgIHVwKHMxKTsKICAgICAgICBpZiAoczEgIT0gczIp
CiAgICAgICAgICAgICAgICB1cChzMik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVfdXAo
c3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHNlbWFwaG9yZSAqczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFw
aG9yZSAqczMpCnsKICAgICAgICB1cChzMSk7CiAgICAgICAgaWYgKHMxICE9IHMyKQogICAgICAg
ICAgICAgICAgdXAoczIpOwogICAgICAgIHVwKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRv
dWJsZV9sb2NrKHN0cnVjdCBkZW50cnkgKmQxLCBzdHJ1Y3QgZGVudHJ5ICpkMikKewogICAgICAg
IGRvdWJsZV9kb3duKCZkMS0+ZF9pbm9kZS0+aV9zZW0sICZkMi0+ZF9pbm9kZS0+aV9zZW0pOwp9
CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91YmxlX3VubG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3Ry
dWN0IGRlbnRyeSAqZDIpCnsKICAgICAgICBkb3VibGVfdXAoJmQxLT5kX2lub2RlLT5pX3NlbSwm
ZDItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICBkcHV0KGQxKTsKICAgICAgICBkcHV0KGQyKTsK
fQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5Lmgi
IDIKIyAzMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5o
Igp0eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2hlYWRlcl9zdHJ1Y3QgewogICAgICAgIF9fdTMy
IHZlcnNpb247CiAgICAgICAgaW50IHBpZDsKfSAqY2FwX3VzZXJfaGVhZGVyX3Q7Cgp0eXBlZGVm
IHN0cnVjdCBfX3VzZXJfY2FwX2RhdGFfc3RydWN0IHsKICAgICAgICBfX3UzMiBlZmZlY3RpdmU7
CiAgICAgICAgX191MzIgcGVybWl0dGVkOwogICAgICAgIF9fdTMyIGluaGVyaXRhYmxlOwp9ICpj
YXBfdXNlcl9kYXRhX3Q7CiMgNTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2NhcGFiaWxpdHkuaCIKdHlwZWRlZiBfX3UzMiBrZXJuZWxfY2FwX3Q7CiMgMjg2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCmV4dGVybiBrZXJuZWxf
Y2FwX3QgY2FwX2JzZXQ7CiMgMzE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9jYXBhYmlsaXR5LmgiCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9jb21iaW5lKGtl
cm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgYikKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0Owog
ICAgIChkZXN0KSA9IChhKSB8IChiKTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGlu
ZSBrZXJuZWxfY2FwX3QgY2FwX2ludGVyc2VjdChrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90
IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgJiAoYik7CiAg
ICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9kcm9wKGtl
cm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgZHJvcCkKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0
OwogICAgIChkZXN0KSA9IChhKSAmIH4oZHJvcCk7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRp
YyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9pbnZlcnQoa2VybmVsX2NhcF90IGMpCnsKICAgICBr
ZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSB+KGMpOwogICAgIHJldHVybiBkZXN0Owp9
CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMg
MjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIKc3RydWN0
IGxpbnV4X2JpbnBybXsKICAgICAgICBjaGFyIGJ1ZlsxMjhdOwogICAgICAgIHN0cnVjdCBwYWdl
ICpwYWdlWzMyXTsKICAgICAgICB1bnNpZ25lZCBsb25nIHA7CiAgICAgICAgaW50IHNoX2Jhbmc7
CiAgICAgICAgc3RydWN0IGZpbGUgKiBmaWxlOwogICAgICAgIGludCBlX3VpZCwgZV9naWQ7CiAg
ICAgICAga2VybmVsX2NhcF90IGNhcF9pbmhlcml0YWJsZSwgY2FwX3Blcm1pdHRlZCwgY2FwX2Vm
ZmVjdGl2ZTsKICAgICAgICBpbnQgYXJnYywgZW52YzsKICAgICAgICBjaGFyICogZmlsZW5hbWU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb2FkZXIsIGV4ZWM7Cn07CgoKCgoKc3RydWN0IGxpbnV4
X2JpbmZtdCB7CiAgICAgICAgc3RydWN0IGxpbnV4X2JpbmZtdCAqIG5leHQ7CiAgICAgICAgc3Ry
dWN0IG1vZHVsZSAqbW9kdWxlOwogICAgICAgIGludCAoKmxvYWRfYmluYXJ5KShzdHJ1Y3QgbGlu
dXhfYmlucHJtICosIHN0cnVjdCBwdF9yZWdzICogcmVncyk7CiAgICAgICAgaW50ICgqbG9hZF9z
aGxpYikoc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqY29yZV9kdW1wKShsb25nIHNpZ25y
LCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MsIHN0cnVjdCBmaWxlICogZmlsZSk7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBtaW5fY29yZWR1bXA7Cn07CgpleHRlcm4gaW50IHJlZ2lzdGVyX2JpbmZtdChz
dHJ1Y3QgbGludXhfYmluZm10ICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfYmluZm10KHN0cnVj
dCBsaW51eF9iaW5mbXQgKik7CgpleHRlcm4gaW50IHByZXBhcmVfYmlucHJtKHN0cnVjdCBsaW51
eF9iaW5wcm0gKik7CmV4dGVybiB2b2lkIHJlbW92ZV9hcmdfemVybyhzdHJ1Y3QgbGludXhfYmlu
cHJtICopOwpleHRlcm4gaW50IHNlYXJjaF9iaW5hcnlfaGFuZGxlcihzdHJ1Y3QgbGludXhfYmlu
cHJtICosc3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiBpbnQgZmx1c2hfb2xkX2V4ZWMoc3RydWN0
IGxpbnV4X2JpbnBybSAqIGJwcm0pOwpleHRlcm4gaW50IHNldHVwX2FyZ19wYWdlcyhzdHJ1Y3Qg
bGludXhfYmlucHJtICogYnBybSk7CmV4dGVybiBpbnQgY29weV9zdHJpbmdzKGludCBhcmdjLGNo
YXIgKiogYXJndixzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKTsKZXh0ZXJuIGludCBjb3B5X3N0
cmluZ3Nfa2VybmVsKGludCBhcmdjLGNoYXIgKiogYXJndixzdHJ1Y3QgbGludXhfYmlucHJtICpi
cHJtKTsKZXh0ZXJuIHZvaWQgY29tcHV0ZV9jcmVkcyhzdHJ1Y3QgbGludXhfYmlucHJtICpiaW5w
cm0pOwpleHRlcm4gaW50IGRvX2NvcmVkdW1wKGxvbmcgc2lnbnIsIHN0cnVjdCBwdF9yZWdzICog
cmVncyk7CmV4dGVybiB2b2lkIHNldF9iaW5mbXQoc3RydWN0IGxpbnV4X2JpbmZtdCAqbmV3KTsK
IyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWVzLmgiIDEKCgoKc3Ry
dWN0IHRtcyB7CiAgICAgICAgY2xvY2tfdCB0bXNfdXRpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNf
c3RpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNfY3V0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX2Nz
dGltZTsKfTsKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiIDEK
IyAxNTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3RpbWV4LmgiIDEKIyAxMCAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3RpbWV4LmgiCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL21zci5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS90aW1leC5oIiAyCiMgMzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2FzbS90aW1leC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBjeWNsZXNfdDsKCmV4dGVy
biBjeWNsZXNfdCBjYWNoZWZsdXNoX3RpbWU7CgpzdGF0aWMgaW5saW5lIGN5Y2xlc190IGdldF9j
eWNsZXMgKHZvaWQpCnsKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmV0OwoKICAgICAg
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmR0c2MiIDogIj1BIiAocmV0KSk7CiAgICAgICAgcmV0
dXJuIHJldDsKCn0KCmV4dGVybiB1bnNpZ25lZCBsb25nIGNwdV9raHo7CiMgMTUzICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1leC5oIiAyCiMgMTYxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1leC5oIgpzdHJ1Y3QgdGltZXggewogICAgICAg
IHVuc2lnbmVkIGludCBtb2RlczsKICAgICAgICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZy
ZXE7CiAgICAgICAgbG9uZyBtYXhlcnJvcjsKICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAg
IGludCBzdGF0dXM7CiAgICAgICAgbG9uZyBjb25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lv
bjsKICAgICAgICBsb25nIHRvbGVyYW5jZTsKCgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7
CiAgICAgICAgbG9uZyB0aWNrOwoKICAgICAgICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBq
aXR0ZXI7CiAgICAgICAgaW50IHNoaWZ0OwogICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxv
bmcgaml0Y250OwogICAgICAgIGxvbmcgY2FsY250OwogICAgICAgIGxvbmcgZXJyY250OwogICAg
ICAgIGxvbmcgc3RiY250OwoKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQg
OjMyOwogICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAg
aW50IDozMjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKfTsKIyAyNTMgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCmV4dGVybiBsb25nIHRpY2s7CmV4dGVy
biBpbnQgdGlja2FkajsKCgoKCmV4dGVybiBpbnQgdGltZV9zdGF0ZTsKZXh0ZXJuIGludCB0aW1l
X3N0YXR1czsKZXh0ZXJuIGxvbmcgdGltZV9vZmZzZXQ7CmV4dGVybiBsb25nIHRpbWVfY29uc3Rh
bnQ7CmV4dGVybiBsb25nIHRpbWVfdG9sZXJhbmNlOwpleHRlcm4gbG9uZyB0aW1lX3ByZWNpc2lv
bjsKZXh0ZXJuIGxvbmcgdGltZV9tYXhlcnJvcjsKZXh0ZXJuIGxvbmcgdGltZV9lc3RlcnJvcjsK
CmV4dGVybiBsb25nIHRpbWVfcGhhc2U7CmV4dGVybiBsb25nIHRpbWVfZnJlcTsKZXh0ZXJuIGxv
bmcgdGltZV9hZGo7CmV4dGVybiBsb25nIHRpbWVfcmVmdGltZTsKCmV4dGVybiBsb25nIHRpbWVf
YWRqdXN0OwoKCmV4dGVybiBsb25nIHBwc19vZmZzZXQ7CmV4dGVybiBsb25nIHBwc19qaXR0ZXI7
CmV4dGVybiBsb25nIHBwc19mcmVxOwpleHRlcm4gbG9uZyBwcHNfc3RhYmlsOwpleHRlcm4gbG9u
ZyBwcHNfdmFsaWQ7CgoKZXh0ZXJuIGludCBwcHNfc2hpZnQ7CmV4dGVybiBsb25nIHBwc19qaXRj
bnQ7CmV4dGVybiBsb25nIHBwc19jYWxjbnQ7CmV4dGVybiBsb25nIHBwc19lcnJjbnQ7CmV4dGVy
biBsb25nIHBwc19zdGJjbnQ7CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9y
YnRyZWUuaCIgMQojIDEwMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcmJ0
cmVlLmgiCnR5cGVkZWYgc3RydWN0IHJiX25vZGVfcwp7CiAgICAgICAgc3RydWN0IHJiX25vZGVf
cyAqIHJiX3BhcmVudDsKICAgICAgICBpbnQgcmJfY29sb3I7CgoKICAgICAgICBzdHJ1Y3QgcmJf
bm9kZV9zICogcmJfcmlnaHQ7CiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX2xlZnQ7Cn0K
cmJfbm9kZV90OwoKdHlwZWRlZiBzdHJ1Y3QgcmJfcm9vdF9zCnsKICAgICAgICBzdHJ1Y3QgcmJf
bm9kZV9zICogcmJfbm9kZTsKfQpyYl9yb290X3Q7CgoKCgoKZXh0ZXJuIHZvaWQgcmJfaW5zZXJ0
X2NvbG9yKHJiX25vZGVfdCAqLCByYl9yb290X3QgKik7CmV4dGVybiB2b2lkIHJiX2VyYXNlKHJi
X25vZGVfdCAqLCByYl9yb290X3QgKik7CgpzdGF0aWMgaW5saW5lIHZvaWQgcmJfbGlua19ub2Rl
KHJiX25vZGVfdCAqIG5vZGUsIHJiX25vZGVfdCAqIHBhcmVudCwgcmJfbm9kZV90ICoqIHJiX2xp
bmspCnsKICAgICAgICBub2RlLT5yYl9wYXJlbnQgPSBwYXJlbnQ7CiAgICAgICAgbm9kZS0+cmJf
Y29sb3IgPSAwOwogICAgICAgIG5vZGUtPnJiX2xlZnQgPSBub2RlLT5yYl9yaWdodCA9ICgodm9p
ZCAqKTApOwoKICAgICAgICAqcmJfbGluayA9IG5vZGU7Cn0KIyAxNiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL21tdS5oIiAxCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAg
ICAgdm9pZCAqc2VnbWVudHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHV2YWxpZDsKfSBtbV9j
b250ZXh0X3Q7CiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVk
LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc21wLmgiIDEK
IyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAxCiMgMjEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21ham9yLmgiIDEKIyAxODAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L21ham9yLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBzY3NpX2Js
a19tYWpvcihpbnQgbSkgewogICAgICAgIHJldHVybiAoKChtKSA9PSA4IHx8ICgobSkgPj0gNjUg
JiYgKG0pIDw9IDcxKSkgfHwgKG0pID09IDExKTsKfQojIDE5MyAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvbWFqb3IuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGlkZV9ibGtf
bWFqb3IoaW50IG0pCnsKICAgICAgICByZXR1cm4gKChtKSA9PSAzIHx8IChtKSA9PSAyMiB8fCAo
bSkgPT0gMzMgfHwgKG0pID09IDM0IHx8IChtKSA9PSA1NiB8fCAobSkgPT0gNTcgfHwgKG0pID09
IDg4IHx8IChtKSA9PSA4OSB8fCAobSkgPT0gOTAgfHwgKG0pID09IDkxKTsKfQojIDIyICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaCIgMQoKCgoKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdGVybWlvcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL3Rlcm1iaXRzLmgiIDEKCgoKCgp0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgY2NfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc3BlZWRfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdGNmbGFnX3Q7CgoKc3RydWN0IHRlcm1pb3MgewogICAgICAgIHRjZmxhZ190IGNfaWZs
YWc7CiAgICAgICAgdGNmbGFnX3QgY19vZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX2NmbGFnOwog
ICAgICAgIHRjZmxhZ190IGNfbGZsYWc7CiAgICAgICAgY2NfdCBjX2xpbmU7CiAgICAgICAgY2Nf
dCBjX2NjWzE5XTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdGVy
bWlvcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2lvY3Rscy5o
IiAxCiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Rlcm1pb3MuaCIgMgoK
c3RydWN0IHdpbnNpemUgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3JvdzsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCB3c19jb2w7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3NfeHBpeGVsOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3lwaXhlbDsKfTsKCgpzdHJ1Y3QgdGVybWlvIHsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBjX2lmbGFnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfb2Zs
YWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY19jZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBjX2xmbGFnOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY19saW5lOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgY19jY1s4XTsKfTsKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC90ZXJtaW9zLmgiIDIKIyAyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
dHR5LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5X2Ry
aXZlci5oIiAxCiMgMTIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90dHlf
ZHJpdmVyLmgiCnN0cnVjdCB0dHlfZHJpdmVyIHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAg
Y29uc3QgY2hhciAqZHJpdmVyX25hbWU7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAg
ICBpbnQgbmFtZV9iYXNlOwogICAgICAgIHNob3J0IG1ham9yOwogICAgICAgIHNob3J0IG1pbm9y
X3N0YXJ0OwogICAgICAgIHNob3J0IG51bTsKICAgICAgICBzaG9ydCB0eXBlOwogICAgICAgIHNo
b3J0IHN1YnR5cGU7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgaW5pdF90ZXJtaW9zOwogICAgICAg
IGludCBmbGFnczsKICAgICAgICBpbnQgKnJlZmNvdW50OwogICAgICAgIHN0cnVjdCBwcm9jX2Rp
cl9lbnRyeSAqcHJvY19lbnRyeTsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqb3RoZXI7CgoK
CgogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICoqdGFibGU7CiAgICAgICAgc3RydWN0IHRlcm1p
b3MgKip0ZXJtaW9zOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVybWlvc19sb2NrZWQ7CiAg
ICAgICAgdm9pZCAqZHJpdmVyX3N0YXRlOwoKCgoKCiAgICAgICAgaW50ICgqb3Blbikoc3RydWN0
IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAgICAgdm9pZCAoKmNs
b3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKICAgICAg
ICBpbnQgKCp3cml0ZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIGludCBmcm9tX3VzZXIsCiAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBjb3VudCk7
CiAgICAgICAgdm9pZCAoKnB1dF9jaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCB1bnNpZ25l
ZCBjaGFyIGNoKTsKICAgICAgICB2b2lkICgqZmx1c2hfY2hhcnMpKHN0cnVjdCB0dHlfc3RydWN0
ICp0dHkpOwogICAgICAgIGludCAoKndyaXRlX3Jvb20pKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkp
OwogICAgICAgIGludCAoKmNoYXJzX2luX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7
CiAgICAgICAgaW50ICgqaW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxl
ICogZmlsZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs
b25nIGFyZyk7CiAgICAgICAgdm9pZCAoKnNldF90ZXJtaW9zKShzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5LCBzdHJ1Y3QgdGVybWlvcyAqIG9sZCk7CiAgICAgICAgdm9pZCAoKnRocm90dGxlKShzdHJ1
Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CiAgICAgICAgdm9pZCAoKnVudGhyb3R0bGUpKHN0cnVjdCB0
dHlfc3RydWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqc3RvcCkoc3RydWN0IHR0eV9zdHJ1Y3Qg
KnR0eSk7CiAgICAgICAgdm9pZCAoKnN0YXJ0KShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAg
ICAgICB2b2lkICgqaGFuZ3VwKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lk
ICgqYnJlYWtfY3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgc3RhdGUpOwogICAgICAg
IHZvaWQgKCpmbHVzaF9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZv
aWQgKCpzZXRfbGRpc2MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQgKCp3
YWl0X3VudGlsX3NlbnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCB0aW1lb3V0KTsKICAg
ICAgICB2b2lkICgqc2VuZF94Y2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY2hhciBjaCk7
CiAgICAgICAgaW50ICgqcmVhZF9wcm9jKShjaGFyICpwYWdlLCBjaGFyICoqc3RhcnQsIG9mZl90
IG9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQsIGludCAqZW9mLCB2b2lk
ICpkYXRhKTsKICAgICAgICBpbnQgKCp3cml0ZV9wcm9jKShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29u
c3QgY2hhciAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
Y291bnQsIHZvaWQgKmRhdGEpOwoKCgoKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqbmV4dDsK
ICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqcHJldjsKfTsKIyAyNSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMQojIDEwMyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvdHR5X2xkaXNjLmgiCnN0cnVjdCB0dHlfbGRpc2MgewogICAgICAgIGlu
dCBtYWdpYzsKICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIGludCBudW07CiAgICAgICAgaW50
IGZsYWdzOwoKCgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAg
ICAgIHZvaWQgKCpjbG9zZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKmZs
dXNoX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKmNo
YXJzX2luX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAo
KnJlYWQpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVfdCBucik7CiAgICAg
ICAgc3NpemVfdCAoKndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUg
KiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqIGJ1
Ziwgc2l6ZV90IG5yKTsKICAgICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0
dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3Mp
KHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB1
bnNpZ25lZCBpbnQgKCpwb2xsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBzdHJ1Y3QgZmlsZSAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsK
CgoKCiAgICAgICAgdm9pZCAoKnJlY2VpdmVfYnVmKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBjb25z
dCB1bnNpZ25lZCBjaGFyICpjcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KmZwLCBpbnQgY291bnQpOwogICAgICAgIGludCAoKnJlY2VpdmVfcm9vbSkoc3RydWN0IHR0eV9z
dHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKndyaXRlX3dha2V1cCkoc3RydWN0IHR0eV9zdHJ1Y3Qg
Kik7Cn07CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAy
CiMgNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIgpzdHJ1Y3Qg
c2NyZWVuX2luZm8gewogICAgICAgIHU4IG9yaWdfeDsKICAgICAgICB1OCBvcmlnX3k7CiAgICAg
ICAgdTE2IGRvbnR1c2UxOwogICAgICAgIHUxNiBvcmlnX3ZpZGVvX3BhZ2U7CiAgICAgICAgdTgg
b3JpZ192aWRlb19tb2RlOwogICAgICAgIHU4IG9yaWdfdmlkZW9fY29sczsKICAgICAgICB1MTYg
dW51c2VkMjsKICAgICAgICB1MTYgb3JpZ192aWRlb19lZ2FfYng7CiAgICAgICAgdTE2IHVudXNl
ZDM7CiAgICAgICAgdTggb3JpZ192aWRlb19saW5lczsKICAgICAgICB1OCBvcmlnX3ZpZGVvX2lz
VkdBOwogICAgICAgIHUxNiBvcmlnX3ZpZGVvX3BvaW50czsKCgogICAgICAgIHUxNiBsZmJfd2lk
dGg7CiAgICAgICAgdTE2IGxmYl9oZWlnaHQ7CiAgICAgICAgdTE2IGxmYl9kZXB0aDsKICAgICAg
ICB1MzIgbGZiX2Jhc2U7CiAgICAgICAgdTMyIGxmYl9zaXplOwogICAgICAgIHUxNiBkb250dXNl
MiwgZG9udHVzZTM7CiAgICAgICAgdTE2IGxmYl9saW5lbGVuZ3RoOwogICAgICAgIHU4IHJlZF9z
aXplOwogICAgICAgIHU4IHJlZF9wb3M7CiAgICAgICAgdTggZ3JlZW5fc2l6ZTsKICAgICAgICB1
OCBncmVlbl9wb3M7CiAgICAgICAgdTggYmx1ZV9zaXplOwogICAgICAgIHU4IGJsdWVfcG9zOwog
ICAgICAgIHU4IHJzdmRfc2l6ZTsKICAgICAgICB1OCByc3ZkX3BvczsKICAgICAgICB1MTYgdmVz
YXBtX3NlZzsKICAgICAgICB1MTYgdmVzYXBtX29mZjsKICAgICAgICB1MTYgcGFnZXM7Cgp9OwoK
ZXh0ZXJuIHN0cnVjdCBzY3JlZW5faW5mbyBzY3JlZW5faW5mbzsKIyAxMzkgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIgpzdHJ1Y3QgdHR5X2ZsaXBfYnVmZmVyIHsK
ICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0IHRxdWV1ZTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3Jl
IHB0eV9zZW07CiAgICAgICAgY2hhciAqY2hhcl9idWZfcHRyOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgKmZsYWdfYnVmX3B0cjsKICAgICAgICBpbnQgY291bnQ7CiAgICAgICAgaW50IGJ1Zl9udW07
CiAgICAgICAgdW5zaWduZWQgY2hhciBjaGFyX2J1ZlsyKjUxMl07CiAgICAgICAgY2hhciBmbGFn
X2J1ZlsyKjUxMl07CiAgICAgICAgdW5zaWduZWQgY2hhciBzbG9wWzRdOwp9OwojIDI1OSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCB0dHlfc3RydWN0
IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgZHJpdmVyOwog
ICAgICAgIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2M7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgKnRl
cm1pb3MsICp0ZXJtaW9zX2xvY2tlZDsKICAgICAgICBpbnQgcGdycDsKICAgICAgICBpbnQgc2Vz
c2lvbjsKICAgICAgICBrZGV2X3QgZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7
CiAgICAgICAgaW50IGNvdW50OwogICAgICAgIHN0cnVjdCB3aW5zaXplIHdpbnNpemU7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBzdG9wcGVkOjEsIGh3X3N0b3BwZWQ6MSwgZmxvd19zdG9wcGVkOjEs
IHBhY2tldDoxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG93X2xhdGVuY3k6MSwgd2FybmVkOjE7
CiAgICAgICAgdW5zaWduZWQgY2hhciBjdHJsX3N0YXR1czsKCiAgICAgICAgc3RydWN0IHR0eV9z
dHJ1Y3QgKmxpbms7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luYzsKICAgICAg
ICBzdHJ1Y3QgdHR5X2ZsaXBfYnVmZmVyIGZsaXA7CiAgICAgICAgaW50IG1heF9mbGlwX2NudDsK
ICAgICAgICBpbnQgYWx0X3NwZWVkOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdyaXRlX3dh
aXQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgcmVhZF93YWl0OwogICAgICAgIHN0cnVjdCB0
cV9zdHJ1Y3QgdHFfaGFuZ3VwOwogICAgICAgIHZvaWQgKmRpc2NfZGF0YTsKICAgICAgICB2b2lk
ICpkcml2ZXJfZGF0YTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHR0eV9maWxlczsKCgoKCgoK
CiAgICAgICAgdW5zaWduZWQgaW50IGNvbHVtbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGxuZXh0
OjEsIGVyYXNpbmc6MSwgcmF3OjEsIHJlYWxfcmF3OjEsIGljYW5vbjoxOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgY2xvc2luZzoxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1pbmltdW1fdG9fd2Fr
ZTsKICAgICAgICB1bnNpZ25lZCBvdmVycnVuX3RpbWU7CiAgICAgICAgaW50IG51bV9vdmVycnVu
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJvY2Vzc19jaGFyX21hcFsyNTYvKDgqc2l6ZW9mKHVu
c2lnbmVkIGxvbmcpKV07CiAgICAgICAgY2hhciAqcmVhZF9idWY7CiAgICAgICAgaW50IHJlYWRf
aGVhZDsKICAgICAgICBpbnQgcmVhZF90YWlsOwogICAgICAgIGludCByZWFkX2NudDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHJlYWRfZmxhZ3NbNDA5Ni8oOCpzaXplb2YodW5zaWduZWQgbG9uZykp
XTsKICAgICAgICBpbnQgY2Fub25fZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIGNhbm9uX2hl
YWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNhbm9uX2NvbHVtbjsKICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlIGF0b21pY19yZWFkOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgYXRvbWljX3dyaXRl
OwogICAgICAgIHNwaW5sb2NrX3QgcmVhZF9sb2NrOwoKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0
IFNBS190cTsKfTsKIyAzNDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0
eS5oIgpleHRlcm4gdm9pZCB0dHlfd3JpdGVfZmx1c2goc3RydWN0IHR0eV9zdHJ1Y3QgKik7Cgpl
eHRlcm4gc3RydWN0IHRlcm1pb3MgdHR5X3N0ZF90ZXJtaW9zOwpleHRlcm4gc3RydWN0IHR0eV9z
dHJ1Y3QgKiByZWRpcmVjdDsKZXh0ZXJuIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2NzW107CmV4dGVy
biBpbnQgZmdfY29uc29sZSwgbGFzdF9jb25zb2xlLCB3YW50X2NvbnNvbGU7CgpleHRlcm4gaW50
IGttc2dfcmVkaXJlY3Q7CgpleHRlcm4gdm9pZCBjb25faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQg
Y29uc29sZV9pbml0KHZvaWQpOwoKZXh0ZXJuIGludCBscF9pbml0KHZvaWQpOwpleHRlcm4gaW50
IHB0eV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCB0dHlfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBt
eHNlcl9pbml0KHZvaWQpOwpleHRlcm4gaW50IG1veGFfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBp
cDJfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwY3hlX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcGNf
aW5pdCh2b2lkKTsKZXh0ZXJuIGludCB2Y3NfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBycF9pbml0
KHZvaWQpOwpleHRlcm4gaW50IGN5X2luaXQodm9pZCk7CmV4dGVybiBpbnQgc3RsX2luaXQodm9p
ZCk7CmV4dGVybiBpbnQgc3RsaV9pbml0KHZvaWQpOwpleHRlcm4gaW50IHNwZWNpYWxpeF9pbml0
KHZvaWQpOwpleHRlcm4gaW50IGVzcHNlcmlhbF9pbml0KHZvaWQpOwpleHRlcm4gaW50IG1hY3Nl
cmlhbF9pbml0KHZvaWQpOwpleHRlcm4gaW50IGEyMjMyYm9hcmRfaW5pdCh2b2lkKTsKCmV4dGVy
biBpbnQgdHR5X3BhcmFub2lhX2NoZWNrKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGtkZXZfdCBk
ZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJvdXRpbmUp
OwpleHRlcm4gY2hhciAqdHR5X25hbWUoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY2hhciAqYnVm
KTsKZXh0ZXJuIHZvaWQgdHR5X3dhaXRfdW50aWxfc2VudChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0
eSwgbG9uZyB0aW1lb3V0KTsKZXh0ZXJuIGludCB0dHlfY2hlY2tfY2hhbmdlKHN0cnVjdCB0dHlf
c3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3RvcF90dHkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0
dHkpOwpleHRlcm4gdm9pZCBzdGFydF90dHkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRl
cm4gaW50IHR0eV9yZWdpc3Rlcl9sZGlzYyhpbnQgZGlzYywgc3RydWN0IHR0eV9sZGlzYyAqbmV3
X2xkaXNjKTsKZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0dHlfZHJpdmVy
ICpkcml2ZXIpOwpleHRlcm4gaW50IHR0eV91bnJlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdHR5X2Ry
aXZlciAqZHJpdmVyKTsKZXh0ZXJuIHZvaWQgdHR5X3JlZ2lzdGVyX2RldmZzIChzdHJ1Y3QgdHR5
X2RyaXZlciAqZHJpdmVyLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbWlub3IpOwpleHRlcm4gdm9pZCB0dHlfdW5yZWdpc3Rlcl9k
ZXZmcyAoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwgdW5zaWduZWQgbWlub3IpOwpleHRlcm4g
aW50IHR0eV9yZWFkX3Jhd19kYXRhKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNo
YXIgKmJ1ZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1Zmxlbik7CmV4dGVy
biB2b2lkIHR0eV93cml0ZV9tZXNzYWdlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgKm1z
Zyk7CgpleHRlcm4gaW50IGlzX29ycGhhbmVkX3BncnAoaW50IHBncnApOwpleHRlcm4gaW50IGlz
X2lnbm9yZWQoaW50IHNpZyk7CmV4dGVybiBpbnQgdHR5X3NpZ25hbChpbnQgc2lnLCBzdHJ1Y3Qg
dHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZvaWQgdHR5X2hhbmd1cChzdHJ1Y3QgdHR5X3N0cnVj
dCAqIHR0eSk7CmV4dGVybiB2b2lkIHR0eV92aGFuZ3VwKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5
KTsKZXh0ZXJuIHZvaWQgdHR5X3VuaGFuZ3VwKHN0cnVjdCBmaWxlICpmaWxwKTsKZXh0ZXJuIGlu
dCB0dHlfaHVuZ191cF9wKHN0cnVjdCBmaWxlICogZmlscCk7CmV4dGVybiB2b2lkIGRvX1NBSyhz
dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZvaWQgZGlzYXNzb2NpYXRlX2N0dHkoaW50
IHByaXYpOwpleHRlcm4gdm9pZCB0dHlfZmxpcF9idWZmZXJfcHVzaChzdHJ1Y3QgdHR5X3N0cnVj
dCAqdHR5KTsKZXh0ZXJuIGludCB0dHlfZ2V0X2JhdWRfcmF0ZShzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5KTsKCgpleHRlcm4gc3RydWN0IHR0eV9sZGlzYyB0dHlfbGRpc2NfTl9UVFk7CgoKZXh0ZXJu
IGludCBuX3R0eV9pb2N0bChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBm
aWxlLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxv
bmcgYXJnKTsKCgoKZXh0ZXJuIHZvaWQgc2VyaWFsX2NvbnNvbGVfaW5pdCh2b2lkKTsKCgoKZXh0
ZXJuIGludCBwY3hlX29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZp
bHApOwoKCgpleHRlcm4gdm9pZCBjb25zb2xlX3ByaW50KGNvbnN0IGNoYXIgKik7CgoKCmV4dGVy
biBpbnQgdnRfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBmaWxl
LAogICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJn
KTsKIyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NlbS5oIiAxCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaXBjLmgiIDEKIyA5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pcGMuaCIKc3RydWN0IGlwY19wZXJtCnsKICAg
ICAgICBfX2tlcm5lbF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlkOwogICAg
ICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF91aWRfdCBjdWlkOwogICAg
ICAgIF9fa2VybmVsX2dpZF90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IG1vZGU7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgc2VxOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvYXNtL2lwY2J1Zi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2FzbS9pcGNidWYuaCIKc3RydWN0IGlwYzY0X3Blcm0KewogICAgICAgIF9fa2VybmVsX2tl
eV90IGtleTsKICAgICAgICBfX2tlcm5lbF91aWQzMl90IHVpZDsKICAgICAgICBfX2tlcm5lbF9n
aWQzMl90IGdpZDsKICAgICAgICBfX2tlcm5lbF91aWQzMl90IGN1aWQ7CiAgICAgICAgX19rZXJu
ZWxfZ2lkMzJfdCBjZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBtb2RlOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IF9fcGFkMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZXE7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgX19wYWQyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQyOwp9OwojIDIyICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9pcGMuaCIgMgojIDU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9pcGMuaCIKc3RydWN0IGtlcm5faXBjX3Blcm0KewogICAgICAgIGtleV90
IGtleTsKICAgICAgICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIHVpZF90
IGN1aWQ7CiAgICAgICAgZ2lkX3QgY2dpZDsKICAgICAgICBtb2RlX3QgbW9kZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNlcTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9zZW0uaCIgMgojIDIzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9z
ZW0uaCIKc3RydWN0IHNlbWlkX2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gc2VtX3Blcm07
CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICBfX2tlcm5lbF90aW1l
X3Qgc2VtX2N0aW1lOwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogICAgICAgIHN0cnVj
dCBzZW1fcXVldWUgKnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKipzZW1f
cGVuZGluZ19sYXN0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBzZW1fbnNlbXM7Cn07CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9hc20vc2VtYnVmLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
YXNtL3NlbWJ1Zi5oIgpzdHJ1Y3Qgc2VtaWQ2NF9kcyB7CiAgICAgICAgc3RydWN0IGlwYzY0X3Bl
cm0gc2VtX3Blcm07CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIF9fdW51c2VkMTsKICAgICAgICBfX2tlcm5lbF90aW1lX3Qgc2VtX2N0aW1l
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQyOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
c2VtX25zZW1zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgX191bnVzZWQ0Owp9OwojIDM2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9zZW0uaCIgMgoKCnN0cnVjdCBzZW1idWYgewogICAgICAgIHVuc2lnbmVkIHNob3J0
IHNlbV9udW07CiAgICAgICAgc2hvcnQgc2VtX29wOwogICAgICAgIHNob3J0IHNlbV9mbGc7Cn07
CgoKdW5pb24gc2VtdW4gewogICAgICAgIGludCB2YWw7CiAgICAgICAgc3RydWN0IHNlbWlkX2Rz
ICpidWY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKmFycmF5OwogICAgICAgIHN0cnVjdCBzZW1p
bmZvICpfX2J1ZjsKICAgICAgICB2b2lkICpfX3BhZDsKfTsKCnN0cnVjdCBzZW1pbmZvIHsKICAg
ICAgICBpbnQgc2VtbWFwOwogICAgICAgIGludCBzZW1tbmk7CiAgICAgICAgaW50IHNlbW1uczsK
ICAgICAgICBpbnQgc2VtbW51OwogICAgICAgIGludCBzZW1tc2w7CiAgICAgICAgaW50IHNlbW9w
bTsKICAgICAgICBpbnQgc2VtdW1lOwogICAgICAgIGludCBzZW11c3o7CiAgICAgICAgaW50IHNl
bXZteDsKICAgICAgICBpbnQgc2VtYWVtOwp9OwojIDgyICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9zZW0uaCIKc3RydWN0IHNlbSB7CiAgICAgICAgaW50IHNlbXZhbDsKICAg
ICAgICBpbnQgc2VtcGlkOwp9OwoKCnN0cnVjdCBzZW1fYXJyYXkgewogICAgICAgIHN0cnVjdCBr
ZXJuX2lwY19wZXJtIHNlbV9wZXJtOwogICAgICAgIHRpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAg
dGltZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBz
dHJ1Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoq
c2VtX3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzZW1fbnNlbXM7Cn07CgoKc3RydWN0IHNlbV9xdWV1ZSB7CiAgICAgICAg
c3RydWN0IHNlbV9xdWV1ZSAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqKiBwcmV2
OwogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCogc2xlZXBlcjsKICAgICAgICBzdHJ1Y3Qgc2Vt
X3VuZG8gKiB1bmRvOwogICAgICAgIGludCBwaWQ7CiAgICAgICAgaW50IHN0YXR1czsKICAgICAg
ICBzdHJ1Y3Qgc2VtX2FycmF5ICogc21hOwogICAgICAgIGludCBpZDsKICAgICAgICBzdHJ1Y3Qg
c2VtYnVmICogc29wczsKICAgICAgICBpbnQgbnNvcHM7CiAgICAgICAgaW50IGFsdGVyOwp9OwoK
CgoKc3RydWN0IHNlbV91bmRvIHsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBwcm9jX25leHQ7
CiAgICAgICAgc3RydWN0IHNlbV91bmRvICogaWRfbmV4dDsKICAgICAgICBpbnQgc2VtaWQ7CiAg
ICAgICAgc2hvcnQgKiBzZW1hZGo7Cn07CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv
bmcgc3lzX3NlbWdldCAoa2V5X3Qga2V5LCBpbnQgbnNlbXMsIGludCBzZW1mbGcpOwogX19hdHRy
aWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NlbW9wIChpbnQgc2VtaWQsIHN0cnVjdCBz
ZW1idWYgKnNvcHMsIHVuc2lnbmVkIG5zb3BzKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp
KSBsb25nIHN5c19zZW1jdGwgKGludCBzZW1pZCwgaW50IHNlbW51bSwgaW50IGNtZCwgdW5pb24g
c2VtdW4gYXJnKTsKIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2No
ZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5o
IiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAx
CgoKCgoKCnN0cnVjdCBzaWdpbmZvOwojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBvbGRfc2lnc2V0X3Q7Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWdbKDY0IC8gMzIpXTsKfSBzaWdz
ZXRfdDsKIyAxMjkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zaWduYWwuaCIK
dHlwZWRlZiB2b2lkICgqX19zaWdoYW5kbGVyX3QpKGludCk7CgoKCgoKCnN0cnVjdCBvbGRfc2ln
YWN0aW9uIHsKICAgICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5kbGVyOwogICAgICAgIG9sZF9z
aWdzZXRfdCBzYV9tYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FfZmxhZ3M7CiAgICAgICAg
dm9pZCAoKnNhX3Jlc3RvcmVyKSh2b2lkKTsKfTsKCnN0cnVjdCBzaWdhY3Rpb24gewogICAgICAg
IF9fc2lnaGFuZGxlcl90IHNhX2hhbmRsZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzYV9mbGFn
czsKICAgICAgICB2b2lkICgqc2FfcmVzdG9yZXIpKHZvaWQpOwogICAgICAgIHNpZ3NldF90IHNh
X21hc2s7Cn07CgpzdHJ1Y3Qga19zaWdhY3Rpb24gewogICAgICAgIHN0cnVjdCBzaWdhY3Rpb24g
c2E7Cn07CiMgMTcxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc2lnbmFsLmgi
CnR5cGVkZWYgc3RydWN0IHNpZ2FsdHN0YWNrIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAg
ICBpbnQgc3NfZmxhZ3M7CiAgICAgICAgc2l6ZV90IHNzX3NpemU7Cn0gc3RhY2tfdDsKCgoKCgoK
c3RhdGljIF9faW5saW5lX18gdm9pZCBzaWdhZGRzZXQoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcp
CnsKICAgICAgICBfX2FzbV9fKCJidHNsICUxLCUwIiA6ICI9bSIoKnNldCkgOiAiSXIiKF9zaWcg
LSAxKSA6ICJjYyIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNpZ2RlbHNldChzaWdzZXRf
dCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIF9fYXNtX18oImJ0cmwgJTEsJTAiIDogIj1tIigq
c2V0KSA6ICJJciIoX3NpZyAtIDEpIDogImNjIik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBf
X2NvbnN0X3NpZ2lzbWVtYmVyKHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzaWcgPSBfc2lnIC0gMTsKICAgICAgICByZXR1cm4gMSAmIChzZXQtPnNpZ1tz
aWcgLyAzMl0gPj4gKHNpZyAlIDMyKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2dlbl9z
aWdpc21lbWJlcihzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIGludCByZXQ7CiAg
ICAgICAgX19hc21fXygiYnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6
ICI9ciIocmV0KSA6ICJtIigqc2V0KSwgIklyIihfc2lnLTEpIDogImNjIik7CiAgICAgICAgcmV0
dXJuIHJldDsKfQojIDIxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NpZ25h
bC5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgc2lnZmluZGlud29yZCh1bnNpZ25lZCBsb25nIHdv
cmQpCnsKICAgICAgICBfX2FzbV9fKCJic2ZsICUxLCUwIiA6ICI9ciIod29yZCkgOiAicm0iKHdv
cmQpIDogImNjIik7CiAgICAgICAgcmV0dXJuIHdvcmQ7Cn0KIyA1ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9zaWduYWwuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDEKCgoKCgoKCnR5cGVkZWYgdW5pb24gc2lndmFsIHsK
ICAgICAgICBpbnQgc2l2YWxfaW50OwogICAgICAgIHZvaWQgKnNpdmFsX3B0cjsKfSBzaWd2YWxf
dDsKCgoKCnR5cGVkZWYgc3RydWN0IHNpZ2luZm8gewogICAgICAgIGludCBzaV9zaWdubzsKICAg
ICAgICBpbnQgc2lfZXJybm87CiAgICAgICAgaW50IHNpX2NvZGU7CgogICAgICAgIHVuaW9uIHsK
ICAgICAgICAgICAgICAgIGludCBfcGFkWygoMTI4L3NpemVvZihpbnQpKSAtIDMpXTsKCgogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX3BpZDsK
ICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAgICAgICAgIH0gX2tp
bGw7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBfdGltZXIxOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
X3RpbWVyMjsKICAgICAgICAgICAgICAgIH0gX3RpbWVyOwoKCiAgICAgICAgICAgICAgICBzdHJ1
Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAgICAgICAgICAgICAg
ICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBzaWd2YWxfdCBfc2ln
dmFsOwogICAgICAgICAgICAgICAgfSBfcnQ7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfc3RhdHVzOwogICAgICAg
ICAgICAgICAgICAgICAgICBjbG9ja190IF91dGltZTsKICAgICAgICAgICAgICAgICAgICAgICAg
Y2xvY2tfdCBfc3RpbWU7CiAgICAgICAgICAgICAgICB9IF9zaWdjaGxkOwoKCiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfYWRkcjsKICAgICAg
ICAgICAgICAgIH0gX3NpZ2ZhdWx0OwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgX2JhbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
ZmQ7CiAgICAgICAgICAgICAgICB9IF9zaWdwb2xsOwogICAgICAgIH0gX3NpZmllbGRzOwp9IHNp
Z2luZm9fdDsKIyAyMDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zaWdpbmZv
LmgiCnR5cGVkZWYgc3RydWN0IHNpZ2V2ZW50IHsKICAgICAgICBzaWd2YWxfdCBzaWdldl92YWx1
ZTsKICAgICAgICBpbnQgc2lnZXZfc2lnbm87CiAgICAgICAgaW50IHNpZ2V2X25vdGlmeTsKICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgX3BhZFsoKDY0L3NpemVvZihpbnQpKSAt
IDMpXTsKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICgqX2Z1bmN0aW9uKShzaWd2YWxfdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
Kl9hdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICB9IF9zaWdldl90aHJlYWQ7CiAgICAgICAgfSBf
c2lnZXZfdW47Cn0gc2lnZXZlbnRfdDsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3Np
Z2luZm8oc2lnaW5mb190ICp0bywgc2lnaW5mb190ICpmcm9tKQp7CiAgICAgICAgaWYgKGZyb20t
PnNpX2NvZGUgPCAwKQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemVv
ZihzaWdpbmZvX3QpKSA/IF9fY29uc3RhbnRfbWVtY3B5KCh0byksKGZyb20pLChzaXplb2Yoc2ln
aW5mb190KSkpIDogX19tZW1jcHkoKHRvKSwoZnJvbSksKHNpemVvZihzaWdpbmZvX3QpKSkpOwog
ICAgICAgIGVsc2UKCiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMypzaXpl
b2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSA/IF9fY29uc3RhbnRf
bWVtY3B5KCh0byksKGZyb20pLCgzKnNpemVvZihpbnQpICsgc2l6ZW9mKGZyb20tPl9zaWZpZWxk
cy5fc2lnY2hsZCkpKSA6IF9fbWVtY3B5KCh0byksKGZyb20pLCgzKnNpemVvZihpbnQpICsgc2l6
ZW9mKGZyb20tPl9zaWZpZWxkcy5fc2lnY2hsZCkpKSk7Cn0KCmV4dGVybiBpbnQgY29weV9zaWdp
bmZvX3RvX3VzZXIoc2lnaW5mb190ICp0bywgc2lnaW5mb190ICpmcm9tKTsKIyA2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zaWduYWwuaCIgMgoKCgoKCgpzdHJ1Y3Qgc2ln
cXVldWUgewogICAgICAgIHN0cnVjdCBzaWdxdWV1ZSAqbmV4dDsKICAgICAgICBzaWdpbmZvX3Qg
aW5mbzsKfTsKCnN0cnVjdCBzaWdwZW5kaW5nIHsKICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKmhl
YWQsICoqdGFpbDsKICAgICAgICBzaWdzZXRfdCBzaWduYWw7Cn07CiMgMTA4ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zaWduYWwuaCIKc3RhdGljIGlubGluZSB2b2lkIHNp
Z29yc2V0cyhzaWdzZXRfdCAqciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpi
KSB7IHVuc2lnbmVkIGxvbmcgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25l
ZCBsb25nIGk7IGZvciAoaSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2ln
WzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+
c2lnWzQqaSszXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0g
Yi0+c2lnWzQqaSsyXTsgYjMgPSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkg
fCAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpIHwgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAo
KGEyKSB8IChiMikpOyByLT5zaWdbNCppKzNdID0gKChhMykgfCAoYjMpKTsgfSBzd2l0Y2ggKCg2
NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQq
aSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2ln
WzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjAp
KTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpIHwgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSB8
IChiMikpOyBicmVhazsgY2FzZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQq
aSsxXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0Kmkr
MF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgfCAoYjEpKTsgYnJlYWs7
IGNhc2UgMTogYTAgPSBhLT5zaWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0
KmkrMF0gPSAoKGEwKSB8IChiMCkpOyBicmVhazsgfSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNp
Z2FuZHNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBjb25zdCBzaWdzZXRfdCAq
YikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMzsgdW5zaWdu
ZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBhMCA9IGEtPnNp
Z1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBhMyA9IGEt
PnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9
IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2lnWzQqaSswXSA9ICgoYTAp
ICYgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIChiMSkpOyByLT5zaWdbNCppKzJdID0g
KChhMikgJiAoYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMpICYgKGIzKSk7IH0gc3dpdGNoICgo
NjQgLyAzMikgJSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0
KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNp
Z1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIw
KSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikg
JiAoYjIpKTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0
KmkrMV07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyByLT5zaWdbNCpp
KzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIxKSk7IGJyZWFr
OyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdbNCppKzBdOyByLT5zaWdb
NCppKzBdID0gKChhMCkgJiAoYjApKTsgYnJlYWs7IH0gfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBz
aWduYW5kc2V0cyhzaWdzZXRfdCAqciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90
ICpiKSB7IHVuc2lnbmVkIGxvbmcgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNp
Z25lZCBsb25nIGk7IGZvciAoaSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+
c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0g
YS0+c2lnWzQqaSszXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIy
ID0gYi0+c2lnWzQqaSsyXTsgYjMgPSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChh
MCkgJiB+KGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIH4oYjEpKTsgci0+c2lnWzQqaSsy
XSA9ICgoYTIpICYgfihiMikpOyByLT5zaWdbNCppKzNdID0gKChhMykgJiB+KGIzKSk7IH0gc3dp
dGNoICgoNjQgLyAzMikgJSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEt
PnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9
IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTAp
ICYgfihiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiB+KGIxKSk7IHItPnNpZ1s0KmkrMl0g
PSAoKGEyKSAmIH4oYjIpKTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9
IGEtPnNpZ1s0KmkrMV07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBy
LT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIH4o
YjEpKTsgYnJlYWs7IGNhc2UgMTogYTAgPSBhLT5zaWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0Kmkr
MF07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgYnJlYWs7IH0gfQojIDE0MCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCBzaWdub3RzZXQoc2lnc2V0X3QgKnNldCkgeyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9
IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IHNldC0+c2lnWzQqaSswXSA9ICh+KHNldC0+c2ln
WzQqaSswXSkpOyBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQtPnNpZ1s0KmkrMV0pKTsgc2V0LT5z
aWdbNCppKzJdID0gKH4oc2V0LT5zaWdbNCppKzJdKSk7IHNldC0+c2lnWzQqaSszXSA9ICh+KHNl
dC0+c2lnWzQqaSszXSkpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IHNldC0+
c2lnWzQqaSsyXSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBjYXNlIDI6IHNldC0+c2lnWzQqaSsx
XSA9ICh+KHNldC0+c2lnWzQqaSsxXSkpOyBjYXNlIDE6IHNldC0+c2lnWzQqaSswXSA9ICh+KHNl
dC0+c2lnWzQqaSswXSkpOyB9IH0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdlbXB0eXNldChz
aWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRp
bl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50
X21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6
ZW9mKHNpZ3NldF90KSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAx
MDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkpIDogKF9fYnVp
bHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX21lbXNldF9nZW5lcmljKCgo
KHNldCkpKSwoKCgwKSkpLCgoKHNpemVvZihzaWdzZXRfdCkpKSkpIDogX19tZW1zZXRfZ2VuZXJp
YygoKHNldCkpLCgoMCkpLCgoc2l6ZW9mKHNpZ3NldF90KSkpKSkpOwogICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9IDA7CiAgICAgICAgY2FzZSAxOiBz
ZXQtPnNpZ1swXSA9IDA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCBzaWdmaWxsc2V0KHNpZ3NldF90ICpzZXQpCnsKICAgICAgICBzd2l0Y2gg
KCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGlu
X2NvbnN0YW50X3AoLTEpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3Qp
KSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVM
Kih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkgOiBfX2NvbnN0YW50
X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkpLCgo
c2l6ZW9mKHNpZ3NldF90KSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihzaWdz
ZXRfdCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoc2V0KSkpLCgoKC0xKSkpLCgoKHNpemVvZihz
aWdzZXRfdCkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHNldCkpLCgoLTEpKSwoKHNpemVvZihz
aWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0
LT5zaWdbMV0gPSAtMTsKICAgICAgICBjYXNlIDE6IHNldC0+c2lnWzBdID0gLTE7CiAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICB9Cn0KCmV4dGVybiBjaGFyICogcmVuZGVyX3NpZ3NldF90
KHNpZ3NldF90ICpzZXQsIGNoYXIgKmJ1ZmZlcik7CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdh
ZGRzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNl
dC0+c2lnWzBdIHw9IG1hc2s7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdkZWxzZXRtYXNrKHNp
Z3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdICY9
IH5tYXNrOwp9CgpzdGF0aWMgaW5saW5lIGludCBzaWd0ZXN0c2V0bWFzayhzaWdzZXRfdCAqc2V0
LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICByZXR1cm4gKHNldC0+c2lnWzBdICYgbWFz
aykgIT0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2luaXRzZXQoc2lnc2V0X3QgKnNldCwg
dW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0LT5zaWdbMF0gPSBtYXNrOwogICAgICAg
IHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIChf
X2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxv
bmcpKigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoJnNl
dC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2Yo
bG9uZykqKCg2NCAvIDMyKS0xKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCgmc2V0LT5zaWdb
MV0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihsb25nKSoo
KDY0IC8gMzIpLTEpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcpKigo
NjQgLyAzMiktMSkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoJnNldC0+c2lnWzFdKSkpLCgoKDAp
KSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygo
KCZzZXQtPnNpZ1sxXSkpLCgoMCkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpKTsK
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAwOwog
ICAgICAgIGNhc2UgMTogOwogICAgICAgIH0KfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2luaXRz
ZXRpbnYoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0LT5z
aWdbMF0gPSB+bWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoLTEpID8gKF9fYnVpbHRp
bl9jb25zdGFudF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8gX19jb25zdGFudF9j
X2FuZF9jb3VudF9tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWdu
ZWQgY2hhcikoLTEpKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSA6IF9fY29uc3Rh
bnRfY19tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh
cikoLTEpKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSkgOiAoX19idWlsdGluX2Nv
bnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX21lbXNldF9nZW5lcmlj
KCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgtMSkpKSwoKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0x
KSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoJnNldC0+c2lnWzFdKSksKCgtMSkpLCgoc2l6ZW9m
KGxvbmcpKigoNjQgLyAzMiktMSkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IGNhc2UgMjogc2V0LT5zaWdbMV0gPSAtMTsKICAgICAgICBjYXNlIDE6IDsKICAgICAgICB9Cn0K
CgoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfc2lncGVuZGluZyhzdHJ1Y3Qgc2lncGVuZGluZyAq
c2lnKQp7CiAgICAgICAgc2lnZW1wdHlzZXQoJnNpZy0+c2lnbmFsKTsKICAgICAgICBzaWctPmhl
YWQgPSAoKHZvaWQgKikwKTsKICAgICAgICBzaWctPnRhaWwgPSAmc2lnLT5oZWFkOwp9CgpleHRl
cm4gbG9uZyBkb19zaWdwZW5kaW5nKHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CiMgMjcgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zZWN1cmViaXRzLmgiIDEKCgoKCgpleHRlcm4gdW5z
aWduZWQgc2VjdXJlYml0czsKIyAyOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Zz
X3N0cnVjdC5oIiAxCgoKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3Vu
dDsKICAgICAgICByd2xvY2tfdCBsb2NrOwogICAgICAgIGludCB1bWFzazsKICAgICAgICBzdHJ1
Y3QgZGVudHJ5ICogcm9vdCwgKiBwd2QsICogYWx0cm9vdDsKICAgICAgICBzdHJ1Y3QgdmZzbW91
bnQgKiByb290bW50LCAqIHB3ZG1udCwgKiBhbHRyb290bW50Owp9OwojIDIwICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mc19zdHJ1Y3QuaCIKZXh0ZXJuIHZvaWQgZXhpdF9m
cyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIHNldF9mc19hbHRyb290KHZvaWQp
OwoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3Jvb3Qoc3RydWN0IGZzX3N0cnVjdCAq
ZnMsCiAgICAgICAgc3RydWN0IHZmc21vdW50ICptbnQsCiAgICAgICAgc3RydWN0IGRlbnRyeSAq
ZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqb2xkX3Jvb3Q7CiAgICAgICAgc3RydWN0
IHZmc21vdW50ICpvbGRfcm9vdG1udDsKICAgICAgICAodm9pZCkoJmZzLT5sb2NrKTsKICAgICAg
ICBvbGRfcm9vdCA9IGZzLT5yb290OwogICAgICAgIG9sZF9yb290bW50ID0gZnMtPnJvb3RtbnQ7
CiAgICAgICAgZnMtPnJvb3RtbnQgPSBtbnRnZXQobW50KTsKICAgICAgICBmcy0+cm9vdCA9IGRn
ZXQoZGVudHJ5KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgaWYgKG9sZF9yb290
KSB7CiAgICAgICAgICAgICAgICBkcHV0KG9sZF9yb290KTsKICAgICAgICAgICAgICAgIG1udHB1
dChvbGRfcm9vdG1udCk7CiAgICAgICAgfQp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRf
ZnNfcHdkKHN0cnVjdCBmc19zdHJ1Y3QgKmZzLAogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50
LAogICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkg
Km9sZF9wd2Q7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpvbGRfcHdkbW50OwogICAgICAgICh2
b2lkKSgmZnMtPmxvY2spOwogICAgICAgIG9sZF9wd2QgPSBmcy0+cHdkOwogICAgICAgIG9sZF9w
d2RtbnQgPSBmcy0+cHdkbW50OwogICAgICAgIGZzLT5wd2RtbnQgPSBtbnRnZXQobW50KTsKICAg
ICAgICBmcy0+cHdkID0gZGdldChkZW50cnkpOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAg
ICAgICBpZiAob2xkX3B3ZCkgewogICAgICAgICAgICAgICAgZHB1dChvbGRfcHdkKTsKICAgICAg
ICAgICAgICAgIG1udHB1dChvbGRfcHdkbW50KTsKICAgICAgICB9Cn0KCnN0cnVjdCBmc19zdHJ1
Y3QgKmNvcHlfZnNfc3RydWN0KHN0cnVjdCBmc19zdHJ1Y3QgKm9sZCk7CnZvaWQgcHV0X2ZzX3N0
cnVjdChzdHJ1Y3QgZnNfc3RydWN0ICpmcyk7CiMgMjkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCnN0cnVjdCBleGVjX2RvbWFpbjsKIyA1OSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgYXZlbnJ1bltdOwojIDc2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9z
Y2hlZC5oIgpleHRlcm4gaW50IG5yX3J1bm5pbmcsIG5yX3RocmVhZHM7CmV4dGVybiBpbnQgbGFz
dF9waWQ7CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcGFyYW0u
aCIgMQojIDgyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMQoj
IDIxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIgpzdHJ1
Y3QgcnVzYWdlIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsKICAgICAgICBzdHJ1
Y3QgdGltZXZhbCBydV9zdGltZTsKICAgICAgICBsb25nIHJ1X21heHJzczsKICAgICAgICBsb25n
IHJ1X2l4cnNzOwogICAgICAgIGxvbmcgcnVfaWRyc3M7CiAgICAgICAgbG9uZyBydV9pc3JzczsK
ICAgICAgICBsb25nIHJ1X21pbmZsdDsKICAgICAgICBsb25nIHJ1X21hamZsdDsKICAgICAgICBs
b25nIHJ1X25zd2FwOwogICAgICAgIGxvbmcgcnVfaW5ibG9jazsKICAgICAgICBsb25nIHJ1X291
YmxvY2s7CiAgICAgICAgbG9uZyBydV9tc2dzbmQ7CiAgICAgICAgbG9uZyBydV9tc2dyY3Y7CiAg
ICAgICAgbG9uZyBydV9uc2lnbmFsczsKICAgICAgICBsb25nIHJ1X252Y3N3OwogICAgICAgIGxv
bmcgcnVfbml2Y3N3Owp9OwoKc3RydWN0IHJsaW1pdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBy
bGltX2N1cjsKICAgICAgICB1bnNpZ25lZCBsb25nIHJsaW1fbWF4Owp9OwojIDU2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9yZXNvdXJjZS5oIiAxCiMgNTcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKIyA4MyAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEyOCAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHNjaGVkX3BhcmFtIHsKICAgICAgICBp
bnQgc2NoZWRfcHJpb3JpdHk7Cn07CgpzdHJ1Y3QgY29tcGxldGlvbjsKIyAxNDQgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVybiByd2xvY2tfdCB0YXNr
bGlzdF9sb2NrOwpleHRlcm4gc3BpbmxvY2tfdCBydW5xdWV1ZV9sb2NrOwpleHRlcm4gc3Bpbmxv
Y2tfdCBtbWxpc3RfbG9jazsKCmV4dGVybiB2b2lkIHNjaGVkX2luaXQodm9pZCk7CmV4dGVybiB2
b2lkIGluaXRfaWRsZSh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19zdGF0ZSh2b2lkKTsKZXh0ZXJu
IHZvaWQgY3B1X2luaXQgKHZvaWQpOwpleHRlcm4gdm9pZCB0cmFwX2luaXQodm9pZCk7CmV4dGVy
biB2b2lkIHVwZGF0ZV9wcm9jZXNzX3RpbWVzKGludCB1c2VyKTsKZXh0ZXJuIHZvaWQgdXBkYXRl
X29uZV9wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdW5zaWduZWQgbG9uZyB1c2VyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW0sIGludCBj
cHUpOwoKCmV4dGVybiBzaWduZWQgbG9uZyBzY2hlZHVsZV90aW1lb3V0KHNpZ25lZCBsb25nIHRp
bWVvdXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMCkpKSB2b2lkIHNjaGVkdWxlKHZvaWQpOwoKZXh0ZXJuIGludCBzY2hlZHVsZV90YXNrKHN0
cnVjdCB0cV9zdHJ1Y3QgKnRhc2spOwpleHRlcm4gdm9pZCBmbHVzaF9zY2hlZHVsZWRfdGFza3Mo
dm9pZCk7CmV4dGVybiBpbnQgc3RhcnRfY29udGV4dF90aHJlYWQodm9pZCk7CmV4dGVybiBpbnQg
Y3VycmVudF9pc19rZXZlbnRkKHZvaWQpOwoKCgoKCgoKc3RydWN0IG5hbWVzcGFjZTsKCgoKc3Ry
dWN0IGZpbGVzX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgcndsb2Nr
X3QgZmlsZV9sb2NrOwogICAgICAgIGludCBtYXhfZmRzOwogICAgICAgIGludCBtYXhfZmRzZXQ7
CiAgICAgICAgaW50IG5leHRfZmQ7CiAgICAgICAgc3RydWN0IGZpbGUgKiogZmQ7CiAgICAgICAg
ZmRfc2V0ICpjbG9zZV9vbl9leGVjOwogICAgICAgIGZkX3NldCAqb3Blbl9mZHM7CiAgICAgICAg
ZmRfc2V0IGNsb3NlX29uX2V4ZWNfaW5pdDsKICAgICAgICBmZF9zZXQgb3Blbl9mZHNfaW5pdDsK
ICAgICAgICBzdHJ1Y3QgZmlsZSAqIGZkX2FycmF5WzMyXTsKfTsKIyAyMDggIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVybiBpbnQgbWF4X21hcF9jb3Vu
dDsKCnN0cnVjdCBtbV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIG1t
YXA7CiAgICAgICAgcmJfcm9vdF90IG1tX3JiOwogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVj
dCAqIG1tYXBfY2FjaGU7CiAgICAgICAgcGdkX3QgKiBwZ2Q7CiAgICAgICAgYXRvbWljX3QgbW1f
dXNlcnM7CiAgICAgICAgYXRvbWljX3QgbW1fY291bnQ7CiAgICAgICAgaW50IG1hcF9jb3VudDsK
ICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIG1tYXBfc2VtOwogICAgICAgIHNwaW5sb2NrX3Qg
cGFnZV90YWJsZV9sb2NrOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1tbGlzdDsKCgoKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzdGFydF9jb2RlLCBlbmRfY29kZSwgc3RhcnRfZGF0YSwgZW5k
X2RhdGE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydF9icmssIGJyaywgc3RhcnRfc3RhY2s7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBhcmdfc3RhcnQsIGFyZ19lbmQsIGVudl9zdGFydCwgZW52
X2VuZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHJzcywgdG90YWxfdm0sIGxvY2tlZF92bTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGRlZl9mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdV92
bV9tYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcF9hZGRyZXNzOwoKICAgICAgICB1bnNp
Z25lZCBkdW1wYWJsZToxOwoKCiAgICAgICAgbW1fY29udGV4dF90IGNvbnRleHQ7Cn07CgpleHRl
cm4gaW50IG1tbGlzdF9ucjsKIyAyNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiCnN0cnVjdCBzaWduYWxfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3Vu
dDsKICAgICAgICBzdHJ1Y3Qga19zaWdhY3Rpb24gYWN0aW9uWzY0XTsKICAgICAgICBzcGlubG9j
a190IHNpZ2xvY2s7Cn07CiMgMjY5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9zY2hlZC5oIgpzdHJ1Y3QgdXNlcl9zdHJ1Y3QgewogICAgICAgIGF0b21pY190IF9fY291bnQ7
CiAgICAgICAgYXRvbWljX3QgcHJvY2Vzc2VzOwogICAgICAgIGF0b21pY190IGZpbGVzOwoKCiAg
ICAgICAgc3RydWN0IHVzZXJfc3RydWN0ICpuZXh0LCAqKnBwcmV2OwogICAgICAgIHVpZF90IHVp
ZDsKfTsKCgoKCgoKZXh0ZXJuIHN0cnVjdCB1c2VyX3N0cnVjdCByb290X3VzZXI7CgoKc3RydWN0
IHRhc2tfc3RydWN0IHsKCgoKICAgICAgICB2b2xhdGlsZSBsb25nIHN0YXRlOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgaW50IHNpZ3BlbmRpbmc7CiAgICAgICAgbW1fc2Vn
bWVudF90IGFkZHJfbGltaXQ7CgoKCiAgICAgICAgc3RydWN0IGV4ZWNfZG9tYWluICpleGVjX2Rv
bWFpbjsKICAgICAgICB2b2xhdGlsZSBsb25nIG5lZWRfcmVzY2hlZDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHB0cmFjZTsKCiAgICAgICAgaW50IGxvY2tfZGVwdGg7CgoKCgoKCiAgICAgICAgbG9u
ZyBjb3VudGVyOwogICAgICAgIGxvbmcgbmljZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBvbGlj
eTsKICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbTsKICAgICAgICBpbnQgcHJvY2Vzc29yOwoj
IDMyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKICAgICAg
ICB1bnNpZ25lZCBsb25nIGNwdXNfcnVubmFibGUsIGNwdXNfYWxsb3dlZDsKCgoKCiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBydW5fbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNsZWVwX3Rp
bWU7CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dF90YXNrLCAqcHJldl90YXNrOwog
ICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKmFjdGl2ZV9tbTsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIGxvY2FsX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCBhbGxvY2F0aW9uX29yZGVyLCBu
cl9sb2NhbF9wYWdlczsKCgogICAgICAgIHN0cnVjdCBsaW51eF9iaW5mbXQgKmJpbmZtdDsKICAg
ICAgICBpbnQgZXhpdF9jb2RlLCBleGl0X3NpZ25hbDsKICAgICAgICBpbnQgcGRlYXRoX3NpZ25h
bDsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBwZXJzb25hbGl0eTsKICAgICAgICBpbnQgZGlkX2V4
ZWM6MTsKICAgICAgICBwaWRfdCBwaWQ7CiAgICAgICAgcGlkX3QgcGdycDsKICAgICAgICBwaWRf
dCB0dHlfb2xkX3BncnA7CiAgICAgICAgcGlkX3Qgc2Vzc2lvbjsKICAgICAgICBwaWRfdCB0Z2lk
OwoKICAgICAgICBpbnQgbGVhZGVyOwoKCgoKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpw
X29wcHRyLCAqcF9wcHRyLCAqcF9jcHRyLCAqcF95c3B0ciwgKnBfb3NwdHI7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCB0aHJlYWRfZ3JvdXA7CgoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnBpZGhhc2hfbmV4dDsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipwaWRoYXNoX3BwcmV2
OwoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X2NobGRleGl0OwogICAgICAgIHN0cnVj
dCBjb21wbGV0aW9uICp2Zm9ya19kb25lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnRfcHJpb3Jp
dHk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpdF9yZWFsX3ZhbHVlLCBpdF9wcm9mX3ZhbHVlLCBp
dF92aXJ0X3ZhbHVlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXRfcmVhbF9pbmNyLCBpdF9wcm9m
X2luY3IsIGl0X3ZpcnRfaW5jcjsKICAgICAgICBzdHJ1Y3QgdGltZXJfbGlzdCByZWFsX3RpbWVy
OwogICAgICAgIHN0cnVjdCB0bXMgdGltZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydF90
aW1lOwogICAgICAgIGxvbmcgcGVyX2NwdV91dGltZVsxXSwgcGVyX2NwdV9zdGltZVsxXTsKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBtaW5fZmx0LCBtYWpfZmx0LCBuc3dhcCwgY21pbl9mbHQsIGNt
YWpfZmx0LCBjbnN3YXA7CiAgICAgICAgaW50IHN3YXBwYWJsZToxOwoKICAgICAgICB1aWRfdCB1
aWQsZXVpZCxzdWlkLGZzdWlkOwogICAgICAgIGdpZF90IGdpZCxlZ2lkLHNnaWQsZnNnaWQ7CiAg
ICAgICAgaW50IG5ncm91cHM7CiAgICAgICAgZ2lkX3QgZ3JvdXBzWzMyXTsKICAgICAgICBrZXJu
ZWxfY2FwX3QgY2FwX2VmZmVjdGl2ZSwgY2FwX2luaGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkOwog
ICAgICAgIGludCBrZWVwX2NhcGFiaWxpdGllczoxOwogICAgICAgIHN0cnVjdCB1c2VyX3N0cnVj
dCAqdXNlcjsKCiAgICAgICAgc3RydWN0IHJsaW1pdCBybGltWzExXTsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCB1c2VkX21hdGg7CiAgICAgICAgY2hhciBjb21tWzE2XTsKCiAgICAgICAgaW50IGxp
bmtfY291bnQsIHRvdGFsX2xpbmtfY291bnQ7CiAgICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0
eTsKICAgICAgICB1bnNpZ25lZCBpbnQgbG9ja3M7CgogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAq
c2VtdW5kbzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICpzZW1zbGVlcGluZzsKCiAgICAgICAg
c3RydWN0IHRocmVhZF9zdHJ1Y3QgdGhyZWFkOwoKICAgICAgICBzdHJ1Y3QgZnNfc3RydWN0ICpm
czsKCiAgICAgICAgc3RydWN0IGZpbGVzX3N0cnVjdCAqZmlsZXM7CgogICAgICAgIHN0cnVjdCBu
YW1lc3BhY2UgKm5hbWVzcGFjZTsKCiAgICAgICAgc3BpbmxvY2tfdCBzaWdtYXNrX2xvY2s7CiAg
ICAgICAgc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZzsKCiAgICAgICAgc2lnc2V0X3QgYmxvY2tl
ZDsKICAgICAgICBzdHJ1Y3Qgc2lncGVuZGluZyBwZW5kaW5nOwoKICAgICAgICB1bnNpZ25lZCBs
b25nIHNhc19zc19zcDsKICAgICAgICBzaXplX3Qgc2FzX3NzX3NpemU7CiAgICAgICAgaW50ICgq
bm90aWZpZXIpKHZvaWQgKnByaXYpOwogICAgICAgIHZvaWQgKm5vdGlmaWVyX2RhdGE7CiAgICAg
ICAgc2lnc2V0X3QgKm5vdGlmaWVyX21hc2s7CgoKICAgICAgICB1MzIgcGFyZW50X2V4ZWNfaWQ7
CiAgICAgICAgdTMyIHNlbGZfZXhlY19pZDsKCiAgICAgICAgc3BpbmxvY2tfdCBhbGxvY19sb2Nr
OwoKCiAgICAgICAgdm9pZCAqam91cm5hbF9pbmZvOwp9OwojIDQ2MSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHZvaWQgeWllbGQodm9pZCk7CgoK
CgpleHRlcm4gc3RydWN0IGV4ZWNfZG9tYWluIGRlZmF1bHRfZXhlY19kb21haW47CiMgNTIwICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgp1bmlvbiB0YXNrX3Vu
aW9uIHsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgdGFzazsKICAgICAgICB1bnNpZ25lZCBs
b25nIHN0YWNrWzIwNDgqc2l6ZW9mKGxvbmcpL3NpemVvZihsb25nKV07Cn07CgpleHRlcm4gdW5p
b24gdGFza191bmlvbiBpbml0X3Rhc2tfdW5pb247CgpleHRlcm4gc3RydWN0IG1tX3N0cnVjdCBp
bml0X21tOwpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICppbml0X3Rhc2tzWzFdOwoKCgpleHRl
cm4gc3RydWN0IHRhc2tfc3RydWN0ICpwaWRoYXNoWyg0MDk2ID4+IDIpXTsKCgoKc3RhdGljIGlu
bGluZSB2b2lkIGhhc2hfcGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHN0cnVj
dCB0YXNrX3N0cnVjdCAqKmh0YWJsZSA9ICZwaWRoYXNoWygoKChwLT5waWQpID4+IDgpIF4gKHAt
PnBpZCkpICYgKCg0MDk2ID4+IDIpIC0gMSkpXTsKCiAgICAgICAgaWYoKHAtPnBpZGhhc2hfbmV4
dCA9ICpodGFibGUpICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgKCpodGFibGUpLT5w
aWRoYXNoX3BwcmV2ID0gJnAtPnBpZGhhc2hfbmV4dDsKICAgICAgICAqaHRhYmxlID0gcDsKICAg
ICAgICBwLT5waWRoYXNoX3BwcmV2ID0gaHRhYmxlOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5o
YXNoX3BpZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBpZihwLT5waWRoYXNoX25l
eHQpCiAgICAgICAgICAgICAgICBwLT5waWRoYXNoX25leHQtPnBpZGhhc2hfcHByZXYgPSBwLT5w
aWRoYXNoX3BwcmV2OwogICAgICAgICpwLT5waWRoYXNoX3BwcmV2ID0gcC0+cGlkaGFzaF9uZXh0
Owp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqZmluZF90YXNrX2J5X3BpZChp
bnQgcGlkKQp7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwLCAqKmh0YWJsZSA9ICZwaWRo
YXNoWygoKChwaWQpID4+IDgpIF4gKHBpZCkpICYgKCg0MDk2ID4+IDIpIC0gMSkpXTsKCiAgICAg
ICAgZm9yKHAgPSAqaHRhYmxlOyBwICYmIHAtPnBpZCAhPSBwaWQ7IHAgPSBwLT5waWRoYXNoX25l
eHQpCiAgICAgICAgICAgICAgICA7CgogICAgICAgIHJldHVybiBwOwp9CgoKCnN0YXRpYyBpbmxp
bmUgdm9pZCB0YXNrX3NldF9jcHUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGlu
dCBjcHUpCnsKICAgICAgICB0c2stPnByb2Nlc3NvciA9IGNwdTsKICAgICAgICB0c2stPmNwdXNf
cnVubmFibGUgPSAxVUwgPDwgY3B1Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza19yZWxlYXNl
X2NwdShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogICAgICAgIHRzay0+Y3B1c19ydW5uYWJs
ZSA9IH4wVUw7Cn0KCgpleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0ICogYWxsb2NfdWlkKHVpZF90
KTsKZXh0ZXJuIHZvaWQgZnJlZV91aWQoc3RydWN0IHVzZXJfc3RydWN0ICopOwoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vY3VycmVudC5oIiAxCgoKCnN0cnVjdCB0YXNr
X3N0cnVjdDsKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICogZ2V0X2N1cnJlbnQo
dm9pZCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqY3VycmVudDsKICAgICAgICBfX2Fz
bV9fKCJhbmRsICUlZXNwLCUwOyAiOiI9ciIgKGN1cnJlbnQpIDogIjAiICh+ODE5MVVMKSk7CiAg
ICAgICAgcmV0dXJuIGN1cnJlbnQ7CiB9CiMgNTgxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9zY2hlZC5oIiAyCgpleHRlcm4gdW5zaWduZWQgbG9uZyB2b2xhdGlsZSBqaWZm
aWVzOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpdGltZXJfdGlja3M7CmV4dGVybiB1bnNpZ25lZCBs
b25nIGl0aW1lcl9uZXh0OwpleHRlcm4gc3RydWN0IHRpbWV2YWwgeHRpbWU7CmV4dGVybiB2b2lk
IGRvX3RpbWVyKHN0cnVjdCBwdF9yZWdzICopOwoKZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2Zf
YnVmZmVyOwpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgcHJvZl9zaGlmdDsKCgoKZXh0ZXJuIHZvaWQgX193YWtlX3VwKHdhaXRfcXVldWVfaGVhZF90
ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CmV4dGVybiB2b2lkIF9fd2FrZV91cF9zeW5jKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNp
Z25lZCBpbnQgbW9kZSwgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy
biB2b2lkIHNsZWVwX29uKHdhaXRfcXVldWVfaGVhZF90ICpxKSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CmV4dGVybiBsb25nIHNsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3Qg
KnEsIHNpZ25lZCBsb25nIHRpbWVvdXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4
dGVybiB2b2lkIGludGVycnVwdGlibGVfc2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGxvbmcgaW50ZXJydXB0aWJsZV9zbGVl
cF9vbl90aW1lb3V0KHdhaXRfcXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KSBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpleHRlcm4gaW50IHdha2VfdXBfcHJvY2Vzcyhz
dHJ1Y3QgdGFza19zdHJ1Y3QgKiB0c2spIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA2
MTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfd2FpdDQocGlkX3QgcGlkLHVuc2lnbmVkIGlu
dCAqIHN0YXRfYWRkciwgaW50IG9wdGlvbnMsIHN0cnVjdCBydXNhZ2UgKiBydSk7CgpleHRlcm4g
aW50IGluX2dyb3VwX3AoZ2lkX3QpOwpleHRlcm4gaW50IGluX2Vncm91cF9wKGdpZF90KTsKCmV4
dGVybiB2b2lkIHByb2NfY2FjaGVzX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25h
bHMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBmbHVzaF9zaWduYWxfaGFuZGxl
cnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBzaWdfZXhpdChpbnQsIGludCwg
c3RydWN0IHNpZ2luZm8gKik7CmV4dGVybiBpbnQgZGVxdWV1ZV9zaWduYWwoc2lnc2V0X3QgKiwg
c2lnaW5mb190ICopOwpleHRlcm4gdm9pZCBibG9ja19hbGxfc2lnbmFscyhpbnQgKCpub3RpZmll
cikodm9pZCAqcHJpdiksIHZvaWQgKnByaXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpZ3NldF90ICptYXNrKTsKZXh0ZXJuIHZvaWQgdW5ibG9ja19hbGxfc2lnbmFscyh2b2lkKTsK
ZXh0ZXJuIGludCBzZW5kX3NpZ19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgc3RydWN0IHRh
c2tfc3RydWN0ICopOwpleHRlcm4gaW50IGZvcmNlX3NpZ19pbmZvKGludCwgc3RydWN0IHNpZ2lu
Zm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IGtpbGxfcGdfaW5mbyhpbnQs
IHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsKZXh0ZXJuIGludCBraWxsX3NsX2luZm8oaW50LCBz
dHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVybiBpbnQga2lsbF9wcm9jX2luZm8oaW50LCBz
dHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVybiB2b2lkIG5vdGlmeV9wYXJlbnQoc3RydWN0
IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2b2lkIGRvX25vdGlmeV9wYXJlbnQoc3RydWN0
IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2b2lkIGZvcmNlX3NpZyhpbnQsIHN0cnVjdCB0
YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBzZW5kX3NpZyhpbnQsIHN0cnVjdCB0YXNrX3N0cnVj
dCAqLCBpbnQpOwpleHRlcm4gaW50IGtpbGxfcGcocGlkX3QsIGludCwgaW50KTsKZXh0ZXJuIGlu
dCBraWxsX3NsKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQga2lsbF9wcm9jKHBpZF90LCBp
bnQsIGludCk7CmV4dGVybiBpbnQgZG9fc2lnYWN0aW9uKGludCwgY29uc3Qgc3RydWN0IGtfc2ln
YWN0aW9uICosIHN0cnVjdCBrX3NpZ2FjdGlvbiAqKTsKZXh0ZXJuIGludCBkb19zaWdhbHRzdGFj
ayhjb25zdCBzdGFja190ICosIHN0YWNrX3QgKiwgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5s
aW5lIGludCBzaWduYWxfcGVuZGluZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBy
ZXR1cm4gKHAtPnNpZ3BlbmRpbmcgIT0gMCk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIGludCBoYXNf
cGVuZGluZ19zaWduYWxzKHNpZ3NldF90ICpzaWduYWwsIHNpZ3NldF90ICpibG9ja2VkKQp7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyByZWFkeTsKICAgICAgICBsb25nIGk7CgogICAgICAgIHN3aXRj
aCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGZvciAoaSA9
ICg2NCAvIDMyKSwgcmVhZHkgPSAwOyAtLWkgPj0gMCA7KQogICAgICAgICAgICAgICAgICAgICAg
ICByZWFkeSB8PSBzaWduYWwtPnNpZ1tpXSAmfiBibG9ja2VkLT5zaWdbaV07CiAgICAgICAgICAg
ICAgICBicmVhazsKCiAgICAgICAgY2FzZSA0OiByZWFkeSA9IHNpZ25hbC0+c2lnWzNdICZ+IGJs
b2NrZWQtPnNpZ1szXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzJdICZ+
IGJsb2NrZWQtPnNpZ1syXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzFd
ICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2ln
WzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBj
YXNlIDI6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMV0gJn4gYmxvY2tlZC0+c2lnWzFdOwogICAgICAg
ICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwogICAg
ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMTogcmVhZHkgPSBzaWduYWwtPnNpZ1sw
XSAmfiBibG9ja2VkLT5zaWdbMF07CiAgICAgICAgfQogICAgICAgIHJldHVybiByZWFkeSAhPSAw
Owp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHJlY2FsY19zaWdwZW5kaW5nKHN0cnVjdCB0YXNr
X3N0cnVjdCAqdCkKewogICAgICAgIHQtPnNpZ3BlbmRpbmcgPSBoYXNfcGVuZGluZ19zaWduYWxz
KCZ0LT5wZW5kaW5nLnNpZ25hbCwgJnQtPmJsb2NrZWQpOwp9CgoKCnN0YXRpYyBpbmxpbmUgaW50
IG9uX3NpZ19zdGFjayh1bnNpZ25lZCBsb25nIHNwKQp7CiAgICAgICAgcmV0dXJuIChzcCAtIGdl
dF9jdXJyZW50KCktPnNhc19zc19zcCA8IGdldF9jdXJyZW50KCktPnNhc19zc19zaXplKTsKfQoK
c3RhdGljIGlubGluZSBpbnQgc2FzX3NzX2ZsYWdzKHVuc2lnbmVkIGxvbmcgc3ApCnsKICAgICAg
ICByZXR1cm4gKGdldF9jdXJyZW50KCktPnNhc19zc19zaXplID09IDAgPyAyCiAgICAgICAgICAg
ICAgICA6IG9uX3NpZ19zdGFjayhzcCkgPyAxIDogMCk7Cn0KCmV4dGVybiBpbnQgcmVxdWVzdF9p
cnEodW5zaWduZWQgaW50LAogICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpoYW5kbGVyKShp
bnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksCiAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZywgY29uc3QgY2hhciAqLCB2b2lkICopOwpleHRlcm4gdm9pZCBmcmVlX2lycSh1
bnNpZ25lZCBpbnQsIHZvaWQgKik7CiMgNzE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5lIGludCBzdXNlcih2b2lkKQp7CiAgICAgICAg
aWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAmIDB4MDAwMDAw
MDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0cyApICYmIGdldF9jdXJyZW50KCktPmV1aWQgPT0g
MCkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsK
ICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoK
c3RhdGljIGlubGluZSBpbnQgZnN1c2VyKHZvaWQpCnsKICAgICAgICBpZiAoISggKDEgPDwgKDAg
KzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAoMCkpICYgMHgwMDAwMDAwMCA6ICgxIDw8ICgwKSkg
JiBzZWN1cmViaXRzICkgJiYgZ2V0X2N1cnJlbnQoKS0+ZnN1aWQgPT0gMCkgewogICAgICAgICAg
ICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsKICAgICAgICAgICAgICAg
IHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKCgoKCgoKc3RhdGljIGlu
bGluZSBpbnQgY2FwYWJsZShpbnQgY2FwKQp7CgogICAgICAgIGlmICgoKGdldF9jdXJyZW50KCkt
PmNhcF9lZmZlY3RpdmUpICYgKDEgPDwgKGNhcCkpKSkKCgoKICAgICAgICB7CiAgICAgICAgICAg
ICAgICBnZXRfY3VycmVudCgpLT5mbGFncyB8PSAweDAwMDAwMTAwOwogICAgICAgICAgICAgICAg
cmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CgoKCgpleHRlcm4gc3RydWN0
IG1tX3N0cnVjdCAqIG1tX2FsbG9jKHZvaWQpOwoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKiBz
dGFydF9sYXp5X3RsYih2b2lkKTsKZXh0ZXJuIHZvaWQgZW5kX2xhenlfdGxiKHN0cnVjdCBtbV9z
dHJ1Y3QgKm1tKTsKCgpleHRlcm4gaW5saW5lIHZvaWQgX19tbWRyb3Aoc3RydWN0IG1tX3N0cnVj
dCAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CnN0YXRpYyBpbmxpbmUgdm9pZCBtbWRy
b3Aoc3RydWN0IG1tX3N0cnVjdCAqIG1tKQp7CiAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rl
c3QoJm1tLT5tbV9jb3VudCkpCiAgICAgICAgICAgICAgICBfX21tZHJvcChtbSk7Cn0KCgpleHRl
cm4gdm9pZCBtbXB1dChzdHJ1Y3QgbW1fc3RydWN0ICopOwoKZXh0ZXJuIHZvaWQgbW1fcmVsZWFz
ZSh2b2lkKTsKCgoKCmV4dGVybiBzdHJ1Y3QgZmlsZSAqKiBhbGxvY19mZF9hcnJheShpbnQpOwpl
eHRlcm4gaW50IGV4cGFuZF9mZF9hcnJheShzdHJ1Y3QgZmlsZXNfc3RydWN0ICosIGludCBucik7
CmV4dGVybiB2b2lkIGZyZWVfZmRfYXJyYXkoc3RydWN0IGZpbGUgKiosIGludCk7CgpleHRlcm4g
ZmRfc2V0ICphbGxvY19mZHNldChpbnQpOwpleHRlcm4gaW50IGV4cGFuZF9mZHNldChzdHJ1Y3Qg
ZmlsZXNfc3RydWN0ICosIGludCBucik7CmV4dGVybiB2b2lkIGZyZWVfZmRzZXQoZmRfc2V0ICos
IGludCk7CgpleHRlcm4gaW50IGNvcHlfdGhyZWFkKGludCwgdW5zaWduZWQgbG9uZywgdW5zaWdu
ZWQgbG9uZywgdW5zaWduZWQgbG9uZywgc3RydWN0IHRhc2tfc3RydWN0ICosIHN0cnVjdCBwdF9y
ZWdzICopOwpleHRlcm4gdm9pZCBmbHVzaF90aHJlYWQodm9pZCk7CmV4dGVybiB2b2lkIGV4aXRf
dGhyZWFkKHZvaWQpOwoKZXh0ZXJuIHZvaWQgZXhpdF9tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7
CmV4dGVybiB2b2lkIGV4aXRfZmlsZXMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9p
ZCBleGl0X3NpZ2hhbmQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKZXh0ZXJuIHZvaWQgcmVwYXJl
bnRfdG9faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgZGFlbW9uaXplKHZvaWQpOwoKZXh0ZXJuIGlu
dCBkb19leGVjdmUoY2hhciAqLCBjaGFyICoqLCBjaGFyICoqLCBzdHJ1Y3QgcHRfcmVncyAqKTsK
ZXh0ZXJuIGludCBkb19mb3JrKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCBw
dF9yZWdzICosIHVuc2lnbmVkIGxvbmcpOwoKZXh0ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWUod2Fp
dF9xdWV1ZV9oZWFkX3QgKnEsIHdhaXRfcXVldWVfdCAqIHdhaXQpIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWVfZXhjbHVzaXZlKHdhaXRfcXVl
dWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CmV4dGVybiB2b2lkIHJlbW92ZV93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpx
LCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgODkx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5s
aW5lIHZvaWQgZGVsX2Zyb21fcnVucXVldWUoc3RydWN0IHRhc2tfc3RydWN0ICogcCkKewogICAg
ICAgIG5yX3J1bm5pbmctLTsKICAgICAgICBwLT5zbGVlcF90aW1lID0gamlmZmllczsKICAgICAg
ICBsaXN0X2RlbCgmcC0+cnVuX2xpc3QpOwogICAgICAgIHAtPnJ1bl9saXN0Lm5leHQgPSAoKHZv
aWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBpbnQgdGFza19vbl9ydW5xdWV1ZShzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4gKHAtPnJ1bl9saXN0Lm5leHQgIT0gKCh2b2lk
ICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5oYXNoX3Byb2Nlc3Moc3RydWN0IHRhc2tf
c3RydWN0ICpwKQp7CiAgICAgICAgaWYgKHRhc2tfb25fcnVucXVldWUocCkpCiAgICAgICAgICAg
ICAgICBfX291dF9vZl9saW5lX2J1Zyg5MDcpOwogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0
aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgKHZvaWQpKCZ0YXNrbGlzdF9sb2NrKTsgfSB3aGls
ZSAoMCk7CiAgICAgICAgbnJfdGhyZWFkcy0tOwogICAgICAgIHVuaGFzaF9waWQocCk7CiAgICAg
ICAgZG8geyAocCktPm5leHRfdGFzay0+cHJldl90YXNrID0gKHApLT5wcmV2X3Rhc2s7IChwKS0+
cHJldl90YXNrLT5uZXh0X3Rhc2sgPSAocCktPm5leHRfdGFzazsgaWYgKChwKS0+cF9vc3B0cikg
KHApLT5wX29zcHRyLT5wX3lzcHRyID0gKHApLT5wX3lzcHRyOyBpZiAoKHApLT5wX3lzcHRyKSAo
cCktPnBfeXNwdHItPnBfb3NwdHIgPSAocCktPnBfb3NwdHI7IGVsc2UgKHApLT5wX3BwdHItPnBf
Y3B0ciA9IChwKS0+cF9vc3B0cjsgfSB3aGlsZSAoMCk7CiAgICAgICAgbGlzdF9kZWwoJnAtPnRo
cmVhZF9ncm91cCk7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xh
dGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CgoKc3RhdGljIGlubGlu
ZSB2b2lkIHRhc2tfbG9jayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICAodm9pZCko
JnAtPmFsbG9jX2xvY2spOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza191bmxvY2soc3RydWN0
IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9CgoKc3RhdGljIGlu
bGluZSBjaGFyICogZF9wYXRoKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHZmc21vdW50
ICp2ZnNtbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBpbnQg
YnVmbGVuKQp7CiAgICAgICAgY2hhciAqcmVzOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqcm9v
dG1udDsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpyb290OwogICAgICAgICh2b2lkKSgmZ2V0X2N1
cnJlbnQoKS0+ZnMtPmxvY2spOwogICAgICAgIHJvb3RtbnQgPSBtbnRnZXQoZ2V0X2N1cnJlbnQo
KS0+ZnMtPnJvb3RtbnQpOwogICAgICAgIHJvb3QgPSBkZ2V0KGdldF9jdXJyZW50KCktPmZzLT5y
b290KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgKHZvaWQpKCZkY2FjaGVfbG9j
ayk7CiAgICAgICAgcmVzID0gX19kX3BhdGgoZGVudHJ5LCB2ZnNtbnQsIHJvb3QsIHJvb3RtbnQs
IGJ1ZiwgYnVmbGVuKTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgZHB1dChyb290
KTsKICAgICAgICBtbnRwdXQocm9vdG1udCk7CiAgICAgICAgcmV0dXJuIHJlczsKfQoKc3RhdGlj
IGlubGluZSBpbnQgbmVlZF9yZXNjaGVkKHZvaWQpCnsKICAgICAgICByZXR1cm4gKF9fYnVpbHRp
bl9leHBlY3QoKGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCksMCkpOwp9CgpleHRlcm4gdm9p
ZCBfX2NvbmRfcmVzY2hlZCh2b2lkKTsKc3RhdGljIGlubGluZSB2b2lkIGNvbmRfcmVzY2hlZCh2
b2lkKQp7CiAgICAgICAgaWYgKG5lZWRfcmVzY2hlZCgpKQogICAgICAgICAgICAgICAgX19jb25k
X3Jlc2NoZWQoKTsKfQojIDkgInN5c2k4Ni5jIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9zeXNjYWxsLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvc3lzY2FsbC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2FzbS9zeXNjYWxsLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
YXNtL3N5c2NhbGwuaCIKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgc3lz
X21vZGlmeV9sZHQoaW50LCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwoKCmV4dGVybiBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IHN5c19mb3JrKHN0cnVjdCBwdF9yZWdzIHJlZ3MpOwoK
CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IHN5c19wdHJhY2UobG9uZyBy
ZXF1ZXN0LCBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFk
ZHIsIGxvbmcgZGF0YSk7CgoKZXh0ZXJuIGludCBzaWdzdXNwZW5kMShzdHJ1Y3QgcHRfcmVncyAq
cmVncywgb2xkX3NpZ3NldF90IG1hc2spOwoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDApKSkgaW50IHN5c19pcGModWludCBjYWxsLCBpbnQgZmlyc3QsIGludCBzZWNvbmQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRoaXJkLCB2b2lkICpwdHIsIGxvbmcgZmlm
dGgpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBzeXNfcGF1c2Uodm9p
ZCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IHN5c19waXBlKHVuc2ln
bmVkIGxvbmcgKiBmaWxkZXMpOwojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9zeXNjYWxsLmgiIDIKCgpzdHJ1Y3QgaXRpbWVydmFsOwpzdHJ1Y3QgbXNnaGRyOwpzdHJ1
Y3QgcG9sbGZkOwpzdHJ1Y3QgcmxpbWl0OwpzdHJ1Y3Qgc2lnYWN0aW9uOwpzdHJ1Y3Qgc29ja2Fk
ZHI7CnN0cnVjdCBzdGF0ZnM7CnN0cnVjdCB0aW1lc3BlYzsKc3RydWN0IHRpbWV2YWw7CnN0cnVj
dCB0aW1lem9uZTsKc3RydWN0IHRtczsKc3RydWN0IHV0aW1idWY7CgoKCmV4dGVybiBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfdXNlbGliKGNvbnN0IGNoYXIgKiBsaWJyYXJ5
KTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3N5bmModm9p
ZCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfZnN5bmModW5z
aWduZWQgaW50IGZkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5
c19mZGF0YXN5bmModW5zaWduZWQgaW50IGZkKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVn
cGFybSgwKSkpIGxvbmcgc3lzX2R1cCh1bnNpZ25lZCBpbnQgZmlsZGVzKTsKZXh0ZXJuIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19kdXAyKHVuc2lnbmVkIGludCBvbGRmZCwg
dW5zaWduZWQgaW50IG5ld2ZkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs
b25nIHN5c19mY250bCh1bnNpZ25lZCBpbnQgZmQsIHVuc2lnbmVkIGludCBjbWQsCiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGFyZyk7CgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFy
bSgwKSkpIGxvbmcgc3lzX2ZjbnRsNjQodW5zaWduZWQgaW50IGZkLCB1bnNpZ25lZCBpbnQgY21k
LAogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhcmcpOwoKCgpleHRlcm4gX19hdHRyaWJ1
dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2lvY3RsKHVuc2lnbmVkIGludCBmZCwgdW5zaWdu
ZWQgaW50IGNtZCwgdm9pZCAqKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp
IGxvbmcgc3lzX2xpbmsoY29uc3QgY2hhciAqIG9sZG5hbWUsIGNvbnN0IGNoYXIgKiBuZXduYW1l
KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19ta2Rpcihjb25z
dCBjaGFyICogcGF0aG5hbWUsIGludCBtb2RlKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMCkpKSBsb25nIHN5c19ta25vZChjb25zdCBjaGFyICogZmlsZW5hbWUsIGludCBtb2RlLCBk
ZXZfdCBkZXYpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3Jl
bmFtZShjb25zdCBjaGFyICogb2xkbmFtZSwgY29uc3QgY2hhciAqIG5ld25hbWUpOwpleHRlcm4g
X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3JtZGlyKGNvbnN0IGNoYXIgKiBw
YXRobmFtZSk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc3lt
bGluayhjb25zdCBjaGFyICogb2xkbmFtZSwgY29uc3QgY2hhciAqIG5ld25hbWUpOwpleHRlcm4g
X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3VubGluayhjb25zdCBjaGFyICog
cGF0aG5hbWUpOwoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNf
dW1vdW50KGNoYXIgKiBuYW1lLCBpbnQgZmxhZ3MpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVn
cGFybSgwKSkpIGxvbmcgc3lzX29sZHVtb3VudChjaGFyICogbmFtZSk7CmV4dGVybiBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfbW91bnQoY2hhciAqIGRldl9uYW1lLCBjaGFy
ICogZGlyX25hbWUsCiAgICAgICAgICAgICAgICBjaGFyICogdHlwZSwgdW5zaWduZWQgbG9uZyBm
bGFncywgdm9pZCAqIGRhdGEpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv
bmcgc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsCiAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpwdXRfb2xkKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp
IGxvbmcgc3lzX2FjY2Vzcyhjb25zdCBjaGFyICogZmlsZW5hbWUsIGludCBtb2RlKTsKZXh0ZXJu
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19jaGRpcihjb25zdCBjaGFyICog
ZmlsZW5hbWUpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2Zj
aGRpcih1bnNpZ25lZCBpbnQgZmQpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp
IGxvbmcgc3lzX2Nocm9vdChjb25zdCBjaGFyICogZmlsZW5hbWUpOwpleHRlcm4gX19hdHRyaWJ1
dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2NobW9kKGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwg
bW9kZV90IG1vZGUpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lz
X2ZjaG1vZCh1bnNpZ25lZCBpbnQgZmQsIG1vZGVfdCBtb2RlKTsKZXh0ZXJuIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19jaG93bihjb25zdCBjaGFyICogZmlsZW5hbWUsIHVp
ZF90IHVzZXIsCiAgICAgICAgICAgICAgICBnaWRfdCBncm91cCk7CmV4dGVybiBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfbGNob3duKGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwg
dWlkX3QgdXNlciwKICAgICAgICAgICAgICAgIGdpZF90IGdyb3VwKTsKZXh0ZXJuIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19mY2hvd24odW5zaWduZWQgaW50IGZkLCB1aWRf
dCB1c2VyLCBnaWRfdCBncm91cCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg
bG9uZyBzeXNfY2xvc2UodW5zaWduZWQgaW50IGZkKTsKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDApKSkgbG9uZyBzeXNfY3JlYXQoY29uc3QgY2hhciAqIHBhdGhuYW1lLCBpbnQgbW9k
ZSk7CgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX29wZW4oY29u
c3QgY2hhciAqIGZpbGVuYW1lLCBpbnQgZmxhZ3MsIGludCBtb2RlKTsKZXh0ZXJuIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zdGF0ZnMoY29uc3QgY2hhciAqIHBhdGgsIHN0
cnVjdCBzdGF0ZnMgKiBidWYpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv
bmcgc3lzX2ZzdGF0ZnModW5zaWduZWQgaW50IGZkLCBzdHJ1Y3Qgc3RhdGZzICogYnVmKTsKZXh0
ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19mdHJ1bmNhdGUodW5zaWdu
ZWQgaW50IGZkLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDApKSkgbG9uZyBzeXNfZnRydW5jYXRlNjQodW5zaWduZWQgaW50IGZkLCBsb2ZmX3Qg
bGVuZ3RoKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c190cnVu
Y2F0ZShjb25zdCBjaGFyICogcGF0aCwgdW5zaWduZWQgbG9uZyBsZW5ndGgpOwpleHRlcm4gX19h
dHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3RydW5jYXRlNjQoY29uc3QgY2hhciAq
IHBhdGgsIGxvZmZfdCBsZW5ndGgpOwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp
KSBsb25nIHN5c191dGltZShjaGFyICogZmlsZW5hbWUsIHN0cnVjdCB1dGltYnVmICogdGltZXMp
OwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c191dGltZXMoY2hh
ciAqIGZpbGVuYW1lLCBzdHJ1Y3QgdGltZXZhbCAqIHV0aW1lcyk7CmV4dGVybiBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfdmhhbmd1cCh2b2lkKTsKCgoKZXh0ZXJuIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBvZmZfdCBzeXNfbHNlZWsodW5zaWduZWQgaW50IGZkLCBv
ZmZfdCBvZmZzZXQsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3JpZ2luKTsKCmV4dGVy
biBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfbGxzZWVrKHVuc2lnbmVkIGlu
dCBmZCwgdW5zaWduZWQgbG9uZyBvZmZzZXRfaGlnaCwKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgb2Zmc2V0X2xvdywgbG9mZl90ICogcmVzdWx0LCB1bnNpZ25lZCBpbnQgb3JpZ2luKTsK
CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgc3NpemVfdCBzeXNfcmVhZCh1bnNp
Z25lZCBpbnQgZmQsIGNoYXIgKiBidWYsIHNpemVfdCBjb3VudCk7CmV4dGVybiBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDApKSkgc3NpemVfdCBzeXNfcmVhZHYodW5zaWduZWQgbG9uZyBmZCwKICAg
ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpb3ZlYyAqIHZlY3RvciwgdW5zaWduZWQgbG9uZyBj
b3VudCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgc3NpemVfdCBzeXNfcHJl
YWQodW5zaWduZWQgaW50IGZkLCBjaGFyICogYnVmLAogICAgICAgICAgICAgICAgc2l6ZV90IGNv
dW50LCBsb2ZmX3QgcG9zKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBzc2l6
ZV90IHN5c19wd3JpdGUodW5zaWduZWQgaW50IGZkLCBjb25zdCBjaGFyICogYnVmLAogICAgICAg
ICAgICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgcG9zKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMCkpKSBzc2l6ZV90IHN5c193cml0ZSh1bnNpZ25lZCBpbnQgZmQsIGNvbnN0IGNo
YXIgKiBidWYsCiAgICAgICAgICAgICAgICBzaXplX3QgY291bnQpOwpleHRlcm4gX19hdHRyaWJ1
dGVfXygocmVncGFybSgwKSkpIHNzaXplX3Qgc3lzX3dyaXRldih1bnNpZ25lZCBsb25nIGZkLAog
ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGlvdmVjICogdmVjdG9yLCB1bnNpZ25lZCBsb25n
IGNvdW50KTsKCgoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IG9sZF9y
ZWFkZGlyKHVuc2lnbmVkIGludCBmZCwgdm9pZCAqIGRpcmVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQpOwoKCmV4dGVybiBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDApKSkgbG9uZyBzeXNfcG9sbChzdHJ1Y3QgcG9sbGZkICogdWZkcywgdW5zaWdu
ZWQgaW50IG5mZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0aW1lb3V0
KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgc3lzX3NlbGVjdChpbnQs
IGZkX3NldCAqLCBmZF9zZXQgKiwgZmRfc2V0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHRpbWV2YWwgKik7CgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MCkpKSBsb25nIHN5c19yZWFkbGluayhjb25zdCBjaGFyICogcGF0aCwgY2hhciAqIGJ1ZiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmc2l6KTsKCgpleHRlcm4gX19hdHRy
aWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3N5c2ZzKGludCBvcHRpb24sIHVuc2lnbmVk
IGxvbmcgYXJnMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IGFyZzIpOwoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfYWNj
dChjb25zdCBjaGFyICpuYW1lKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp
IGxvbmcgc3lzX2V4aXQoaW50IGVycm9yX2NvZGUpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVn
cGFybSgwKSkpIGxvbmcgc3lzX3dhaXRwaWQocGlkX3QgcGlkLCB1bnNpZ25lZCBpbnQgKnN0YXRf
YWRkciwKICAgICAgICAgICAgICAgIGludCBvcHRpb25zKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVf
XygocmVncGFybSgwKSkpIGxvbmcgc3lzX2dldGl0aW1lcihpbnQgd2hpY2gsIHN0cnVjdCBpdGlt
ZXJ2YWwgKnZhbHVlKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5
c19zZXRpdGltZXIoaW50IHdoaWNoLCBzdHJ1Y3QgaXRpbWVydmFsICp2YWx1ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVydmFsICpvdmFsdWUpOwoKCgpleHRl
cm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX25pY2UoaW50IGluY3JlbWVu
dCk7CgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX3Nl
dHNjaGVkdWxlcihwaWRfdCBwaWQsIGludCBwb2xpY3ksCiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c2NoZWRfcGFyYW0gKnBhcmFtKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs
b25nIHN5c19zY2hlZF9zZXRwYXJhbShwaWRfdCBwaWQsCiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c2NoZWRfcGFyYW0gKnBhcmFtKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs
b25nIHN5c19zY2hlZF9nZXRzY2hlZHVsZXIocGlkX3QgcGlkKTsKZXh0ZXJuIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF9nZXRwYXJhbShwaWRfdCBwaWQsCiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKTsKZXh0ZXJuIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF95aWVsZCh2b2lkKTsKZXh0ZXJuIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KGlu
dCBwb2xpY3kpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3Nj
aGVkX2dldF9wcmlvcml0eV9taW4oaW50IHBvbGljeSk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDApKSkgbG9uZyBzeXNfc2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZF90IHBpZCwKICAg
ICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqaW50ZXJ2YWwpOwoKCmV4dGVybiBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfa2lsbChpbnQgcGlkLCBpbnQgc2lnKTsKZXh0
ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19ydF9zaWdhY3Rpb24oaW50
IHNpZywgY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqYWN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gKm9hY3QsIHNpemVfdCBzaWdzZXRzaXplKTsKZXh0
ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19ydF9zaWdwZW5kaW5nKHNp
Z3NldF90ICpzZXQsIHNpemVfdCBzaWdzZXRzaXplKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSBsb25nIHN5c19ydF9zaWdwcm9jbWFzayhpbnQgaG93LCBzaWdzZXRfdCAqc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ3NldF90ICpvc2V0LCBzaXplX3Qg
c2lnc2V0c2l6ZSk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNf
cnRfc2lndGltZWR3YWl0KGNvbnN0IHNpZ3NldF90ICp1dGhlc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2lnaW5mb190ICp1aW5mbywgY29uc3Qgc3RydWN0IHRpbWVzcGVjICp1
dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpZ3NldHNpemUpOwpl
eHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NpZ2FsdHN0YWNrKGNv
bnN0IHN0YWNrX3QgKnVzcywgc3RhY2tfdCAqdW9zcyk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDApKSkgbG9uZyBzeXNfc2lncGVuZGluZyhvbGRfc2lnc2V0X3QgKnNldCk7CmV4dGVy
biBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2lncHJvY21hc2soaW50IGhv
dywgb2xkX3NpZ3NldF90ICpzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xk
X3NpZ3NldF90ICpvc2V0KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQg
c3lzX3NpZ3N1c3BlbmQoaW50IGhpc3RvcnkwLCBpbnQgaGlzdG9yeTEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2xkX3NpZ3NldF90IG1hc2spOwoKCmV4dGVybiBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfZ2V0aG9zdG5hbWUoY2hhciAqbmFtZSwgaW50IGxl
bik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2V0aG9zdG5h
bWUoY2hhciAqbmFtZSwgaW50IGxlbik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDAp
KSkgbG9uZyBzeXNfc2V0ZG9tYWlubmFtZShjaGFyICpuYW1lLCBpbnQgbGVuKTsKZXh0ZXJuIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19nZXRybGltaXQodW5zaWduZWQgaW50
IHJlc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBybGltaXQg
KnJsaW0pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NldHNp
ZCh2b2lkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19nZXRz
aWQocGlkX3QgcGlkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5
c19nZXRwZ2lkKHBpZF90IHBpZCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg
bG9uZyBzeXNfc2V0cGdpZChwaWRfdCBwaWQsIHBpZF90IHBnaWQpOwpleHRlcm4gX19hdHRyaWJ1
dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2dldGdyb3VwcyhpbnQgZ2lkc2V0c2l6ZSwgZ2lk
X3QgKmdyb3VwbGlzdCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBz
eXNfc2V0Z3JvdXBzKGludCBnaWRzZXRzaXplLCBnaWRfdCAqZ3JvdXBsaXN0KTsKZXh0ZXJuIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZXRwcmlvcml0eShpbnQgd2hpY2gs
IGludCB3aG8sIGludCBuaWNldmFsKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp
KSBsb25nIHN5c19nZXRwcmlvcml0eShpbnQgd2hpY2gsIGludCB3aG8pOwpleHRlcm4gX19hdHRy
aWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3JlYm9vdChpbnQgbWFnaWMxLCBpbnQgbWFn
aWMyLCB1bnNpZ25lZCBpbnQgY21kLAogICAgICAgICAgICAgICAgdm9pZCAqIGFyZyk7CmV4dGVy
biBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2V0Z2lkKGdpZF90IGdpZCk7
CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2V0dWlkKHVpZF90
IHVpZCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfdGltZXMo
c3RydWN0IHRtcyAqIHRidWYpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv
bmcgc3lzX3VtYXNrKGludCBtYXNrKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp
KSBsb25nIHN5c19wcmN0bChpbnQgb3B0aW9uLCB1bnNpZ25lZCBsb25nIGFyZzIsCiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGFyZzMsIHVuc2lnbmVkIGxvbmcgYXJnNCwgdW5zaWduZWQg
bG9uZyBhcmc1KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19z
ZXRyZXVpZCh1aWRfdCBydWlkLCB1aWRfdCBldWlkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSBsb25nIHN5c19zZXRyZWdpZChnaWRfdCByZ2lkLCBnaWRfdCBlZ2lkKTsKCgpl
eHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2dldHRpbWVvZmRheShz
dHJ1Y3QgdGltZXZhbCAqdHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHRpbWV6b25lICp0eik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBz
eXNfc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0diwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgdGltZXpvbmUgKnR6KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSBsb25nIHN5c19zdGltZShpbnQgKiB0cHRyKTsKZXh0ZXJuIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c190aW1lKGludCAqIHRsb2MpOwoKCgpleHRlcm4gX19h
dHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHVuc2lnbmVkIGxvbmcgc3lzX2FsYXJtKHVuc2lnbmVk
IGludCBzZWNvbmRzKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcg
c3lzX2dldHBpZCh2b2lkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25n
IHN5c19nZXRwcGlkKHZvaWQpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv
bmcgc3lzX2dldHVpZCh2b2lkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs
b25nIHN5c19nZXRldWlkKHZvaWQpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp
IGxvbmcgc3lzX2dldGdpZCh2b2lkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp
KSBsb25nIHN5c19nZXRlZ2lkKHZvaWQpOwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MCkpKSBsb25nIHN5c19nZXR0aWQodm9pZCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDApKSkgbG9uZyBzeXNfbmFub3NsZWVwKHN0cnVjdCB0aW1lc3BlYyAqcnF0cCwKICAgICAgICAg
ICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqcm10cCk7CgoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDApKSkgbG9uZyBzeXNfc2V0cmV1aWQxNihvbGRfdWlkX3QgcnVpZCwgb2xkX3VpZF90
IGV1aWQpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NldHJl
Z2lkMTYob2xkX2dpZF90IHJnaWQsIG9sZF9naWRfdCBlZ2lkKTsKZXh0ZXJuIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19nZXRncm91cHMxNihpbnQgZ2lkc2V0c2l6ZSwgb2xk
X2dpZF90ICpncm91cGxpc3QpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv
bmcgc3lzX3NldGdyb3VwczE2KGludCBnaWRzZXRzaXplLCBvbGRfZ2lkX3QgKmdyb3VwbGlzdCk7
CgoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgc3NpemVfdCBzeXNfc2VuZGZp
bGUoaW50IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqb2Zmc2V0LAogICAgICAgICAgICAgICAg
c2l6ZV90IGNvdW50KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5
c19tc3luYyh1bnNpZ25lZCBsb25nIHN0YXJ0LCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpOwpleHRl
cm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX21hZHZpc2UodW5zaWduZWQg
bG9uZyBzdGFydCwgc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgIGludCBiZWhhdmlvcik7CmV4
dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfbWluY29yZSh1bnNpZ25l
ZCBsb25nIHN0YXJ0LCBzaXplX3QgbGVuLAogICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAq
IHZlYyk7CgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB1bnNpZ25lZCBsb25n
IHN5c19icmsodW5zaWduZWQgbG9uZyBicmspOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFy
bSgwKSkpIGxvbmcgc3lzX211bm1hcCh1bnNpZ25lZCBsb25nIGFkZHIsIHNpemVfdCBsZW4pOwoK
CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfbXByb3RlY3QodW5z
aWduZWQgbG9uZyBzdGFydCwgc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgcHJvdCk7CgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19z
b2NrZXQoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCk7CmV4dGVybiBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc29ja2V0cGFpcihpbnQgZmFtaWx5LCBpbnQg
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJvdG9jb2wsIGludCB1
c29ja3ZlY1syXSk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNf
YmluZChpbnQgZmQsIHN0cnVjdCBzb2NrYWRkciAqdW15YWRkciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgYWRkcmxlbik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDApKSkgbG9uZyBzeXNfbGlzdGVuKGludCBmZCwgaW50IGJhY2tsb2cpOwpleHRlcm4gX19hdHRy
aWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2FjY2VwdChpbnQgZmQsIHN0cnVjdCBzb2Nr
YWRkciAqdXBlZXJfc29ja2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
ICp1cGVlcl9hZGRybGVuKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25n
IHN5c19jb25uZWN0KGludCBmZCwgc3RydWN0IHNvY2thZGRyICp1c2VydmFkZHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFkZHJsZW4pOwpleHRlcm4gX19hdHRyaWJ1dGVf
XygocmVncGFybSgwKSkpIGxvbmcgc3lzX2dldHNvY2tuYW1lKGludCBmZCwgc3RydWN0IHNvY2th
ZGRyICp1c29ja2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp1c29j
a2FkZHJfbGVuKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19n
ZXRwZWVybmFtZShpbnQgZmQsIHN0cnVjdCBzb2NrYWRkciAqdXNvY2thZGRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCAqdXNvY2thZGRyX2xlbik7CmV4dGVybiBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2VuZHRvKGludCBmZCwgdm9pZCAqIGJ1ZmYs
IHNpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmxh
Z3MsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgYWRkcl9sZW4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcg
c3lzX3NlbmQoaW50IGZkLCB2b2lkICogYnVmZiwgc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzKTsKZXh0ZXJuIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19yZWN2ZnJvbShpbnQgZmQsIHZvaWQgKiB1YnVm
LCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBm
bGFncywgc3RydWN0IHNvY2thZGRyICphZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAqYWRkcl9sZW4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv
bmcgc3lzX3NldHNvY2tvcHQoaW50IGZkLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm9wdHZhbCwgaW50IG9wdGxlbik7CmV4dGVy
biBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfZ2V0c29ja29wdChpbnQgZmQs
IGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqb3B0dmFsLCBpbnQgKm9wdGxlbik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDApKSkgbG9uZyBzeXNfc2h1dGRvd24oaW50IGZkLCBpbnQgaG93KTsKZXh0ZXJuIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW5kbXNnKGludCBmZCwgc3RydWN0IG1zZ2hk
ciAqbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzKTsK
ZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19yZWN2bXNnKGludCBm
ZCwgc3RydWN0IG1zZ2hkciAqbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBmbGFncyk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9u
ZyBzeXNfc29ja2V0Y2FsbChpbnQgY2FsbCwgdW5zaWduZWQgbG9uZyAqYXJncyk7CiMgMTIgInN5
c2k4Ni5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3VhY2Nlc3Mu
aCIgMQojIDM1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpl
eHRlcm4gaW50IF9fdmVyaWZ5X3dyaXRlKGNvbnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CiMg
NjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0YXRpYyBp
bmxpbmUgaW50IHZlcmlmeV9hcmVhKGludCB0eXBlLCBjb25zdCB2b2lkICogYWRkciwgdW5zaWdu
ZWQgbG9uZyBzaXplKQp7CiAgICAgICAgcmV0dXJuICgoeyB1bnNpZ25lZCBsb25nIGZsYWcsc3Vt
OyBhc20oImFkZGwgJTMsJTEgOyBzYmJsICUwLCUwOyBjbXBsICUxLCU0OyBzYmJsICQwLCUwIiA6
Ij0mciIgKGZsYWcpLCAiPXIiIChzdW0pIDoiMSIgKGFkZHIpLCJnIiAoKGludCkoc2l6ZSkpLCJn
IiAoZ2V0X2N1cnJlbnQoKS0+YWRkcl9saW1pdC5zZWcpKTsgZmxhZzsgfSkgPT0gMCkgPyAwIDog
LTE0Owp9CiMgODEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgi
CnN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgaW5z
biwgZml4dXA7Cn07CgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2VhcmNoX2V4Y2VwdGlvbl90YWJs
ZSh1bnNpZ25lZCBsb25nKTsKIyAxMDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2Fz
bS91YWNjZXNzLmgiCmV4dGVybiB2b2lkIF9fZ2V0X3VzZXJfMSh2b2lkKTsKZXh0ZXJuIHZvaWQg
X19nZXRfdXNlcl8yKHZvaWQpOwpleHRlcm4gdm9pZCBfX2dldF91c2VyXzQodm9pZCk7CiMgMTI3
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gdm9p
ZCBfX3B1dF91c2VyXzEodm9pZCk7CmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfMih2b2lkKTsKZXh0
ZXJuIHZvaWQgX19wdXRfdXNlcl80KHZvaWQpOwpleHRlcm4gdm9pZCBfX3B1dF91c2VyXzgodm9p
ZCk7CgpleHRlcm4gdm9pZCBfX3B1dF91c2VyX2JhZCh2b2lkKTsKIyAxODggIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0cnVjdCBfX2xhcmdlX3N0cnVjdCB7
IHVuc2lnbmVkIGxvbmcgYnVmWzEwMF07IH07CiMgMjIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gbG9uZyBfX2dldF91c2VyX2JhZCh2b2lkKTsK
IyAzMDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2dlbmVyaWNfY29weV9mcm9tX3VzZXJfbm9jaGVjayh2
b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8g
eyBpbnQgX19kMCwgX19kMTsgX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4i
ICIJbW92bCAlMywlMFxuIiAiMToJcmVwOyBtb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1
cCxcImF4XCJcbiIgIjM6CWxlYSAwKCUzLCUwLDQpLCUwXG4iICI0OglwdXNobCAlMFxuIiAiCXB1
c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2JcbiIgIglwb3Bs
ICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlv
biBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5s
b25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj0mYyIobiksICI9JkQiIChfX2QwKSwgIj0mUyIg
KF9fZDEpIDogInIiKG4gJiAzKSwgIjAiKG4gLyA0KSwgIjEiKHRvKSwgIjIiKGZyb20pIDogIm1l
bW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBsb25nCl9fZ2VuZXJpY19jb3B5X3RvX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29u
c3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwg
X19kMTsgX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIJbW92bCAlMywl
MFxuIiAiMToJcmVwOyBtb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIg
IjM6CWxlYSAwKCUzLCUwLDQpLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0
aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJ
LmxvbmcgMWIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPSZjIihuKSwgIj0mRCIgKF9fZDApLCAiPSZT
IiAoX19kMSkgOiAiciIobiAmIDMpLCAiMCIobiAvIDQpLCAiMSIodG8pLCAiMiIoZnJvbSkgOiAi
bWVtb3J5Iik7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CiMgNTQzICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgp1bnNpZ25lZCBsb25nIF9fZ2Vu
ZXJpY19jb3B5X3RvX3VzZXIodm9pZCAqLCBjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwp1
bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcih2b2lkICosIGNvbnN0IHZvaWQg
KiwgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFu
dF9jb3B5X3RvX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcg
bikKewogICAgICAgIHByZWZldGNoKGZyb20pOwogICAgICAgIGlmICgoKHsgdW5zaWduZWQgbG9u
ZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2Ji
bCAkMCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiICh0byksImciICgoaW50KShu
KSksImciIChnZXRfY3VycmVudCgpLT5hZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSkK
ICAgICAgICAgICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVm
YXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNl
Y3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMjoJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJl
dmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5s
b25nIDBiLDJiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAo
X19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsg
Y2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNi
XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUwXG4iICI0
OglpbmNsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFi
bGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJc
biIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIx
Iihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9f
YXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4i
ICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWFkZGwgJDIs
JTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFc
IlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnBy
ZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20p
LCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBf
X3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIg
IjM6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICI0OglzaGwgJDIsJTBcbiIgIjU6CWFk
ZGwgJDIsJTBcbiIgIjY6CWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNl
Y3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIg
IgkubG9uZyAxYiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwg
Ij0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQp
IDogIm1lbW9yeSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoK
c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIodm9p
ZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIGlmICgo
KHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsg
Y21wbCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiIChm
cm9tKSwiZyIgKChpbnQpKG4pKSwiZyIgKGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7
IGZsYWc7IH0pID09IDApKQogICAgICAgICAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dp
dGNoIChuICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92
c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIyOglwdXNobCAlMFxuIiAi
CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglw
b3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWptcCAxYlxuIiAiLnBy
ZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgku
bG9uZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIg
KF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7
IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zz
YlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJ
cHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0
b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglpbmNs
ICUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc
biIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICIu
cHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAi
CS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAi
PSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkg
OiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVw
OyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4i
ICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAi
CXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJ
c2hsICQyLCUwXG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiNDoJcHVzaGwgJSVlYXhc
biIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4XG4iICIJYWRk
bCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxl
LFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4i
ICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIo
ZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3Zz
YlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXB1c2hsICUwXG4iICIJ
cHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0
b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwl
MFxuIiAiCWFkZGwgJDMsJTBcbiIgIglqbXAgMmJcbiIgIjU6CXB1c2hsICUlZWF4XG4iICIJeG9y
bCAlJWVheCwlJWVheFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJ
YWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNjoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4
LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJaW5jbCAlMFxuIiAiCWptcCAz
YlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWdu
IDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIg
Ii5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihm
cm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDAp
OwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCgobikpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1z
ZXQoKCh0bykpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgobikpKSA6IF9f
Y29uc3RhbnRfY19tZW1zZXQoKCh0bykpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgw
KSkpLCgobikpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKG4pKSA/IF9fbWVtc2V0X2dlbmVy
aWMoKCgodG8pKSksKCgoMCkpKSwoKChuKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCh0bykpLCgo
MCkpLCgobikpKSkpOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IGxvbmcKX19jb25zdGFudF9jb3B5X3RvX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29uc3Qgdm9p
ZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsg
c3dpdGNoIChuICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsg
bW92c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIyOglzaGwgJDIsJTBc
biIgIglqbXAgMWJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxu
IiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAi
PSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkg
OiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVw
OyBtb3ZzbFxuIiAiMToJbW92c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4i
ICIzOglzaGwgJDIsJTBcbiIgIjQ6CWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xu
IiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIs
M2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2Qw
KSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnki
KTsgYnJlYWs7IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4i
ICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXNobCAk
MiwlMFxuIiAiNDoJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2Vj
dGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAi
CS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZE
IiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVh
azsgY2FzZSAzOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1v
dnN3XG4iICIyOgltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6
CXNobCAkMiwlMFxuIiAiNToJYWRkbCAkMiwlMFxuIiAiNjoJaW5jbCAlMFxuIiAiCWptcCAzYlxu
IiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRc
biIgIgkubG9uZyAwYiw0YlxuIiAiCS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5w
cmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9t
KSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwog
ICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFu
dF9jb3B5X2Zyb21fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNp
Z25lZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBzd2l0Y2ggKG4gJiAz
KSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMTpc
biIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVl
YXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXBvcGwgJSVlYXhc
biIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIg
Ii5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJi
XG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAi
MSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBf
X2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxu
IiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVh
eFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc2JcbiIgIglw
b3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWluY2wgJTBcbiIgIglq
bXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3Ni
XG4iICIJcG9wbCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xu
IiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIs
M2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2Qw
KSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnki
KTsgYnJlYWs7IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4i
ICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hs
ICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9z
bFxuIiAiCXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBc
biIgIglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwg
JSVlYXgsJSVlYXhcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQyLCUwXG4i
ICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIg
IgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91
cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIi
KHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18gX192b2xh
dGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4iICIzOlxu
IiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVh
eFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dcbiIgIglz
dG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRk
bCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNToJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUl
ZWF4XG4iICIJc3Rvc3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQzLCUw
XG4iICIJam1wIDJiXG4iICI2OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIg
IglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDNiXG4iICIucHJl
dmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5s
b25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnByZXZpb3Vz
IiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIo
dG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgICAgICAg
cmV0dXJuIG47Cn0KIyA1OTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNj
ZXNzLmgiCmxvbmcgc3RybmNweV9mcm9tX3VzZXIoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMs
IGxvbmcgY291bnQpOwpsb25nIF9fc3RybmNweV9mcm9tX3VzZXIoY2hhciAqZHN0LCBjb25zdCBj
aGFyICpzcmMsIGxvbmcgY291bnQpOwoKbG9uZyBzdHJubGVuX3VzZXIoY29uc3QgY2hhciAqc3Ry
LCBsb25nIG4pOwp1bnNpZ25lZCBsb25nIGNsZWFyX3VzZXIodm9pZCAqbWVtLCB1bnNpZ25lZCBs
b25nIGxlbik7CnVuc2lnbmVkIGxvbmcgX19jbGVhcl91c2VyKHZvaWQgKm1lbSwgdW5zaWduZWQg
bG9uZyBsZW4pOwojIDEzICJzeXNpODYuYyIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hYmkvdXRpbC90cmFjZS5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FiaS91dGlsL3RyYWNlLmgiCiNpZGVudCAiJVclICVHJSIKIyAzMyAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvYWJpL3V0aWwvdHJhY2UuaCIKZW51bSB7CiAgICAgICAgQUJJ
X1RSQUNFX0FQSSA9IDB4MDAwMDAwMDEsCiAgICAgICAgQUJJX1RSQUNFX0lPQ1RMID0gMHgwMDAw
MDAwMiwKICAgICAgICBBQklfVFJBQ0VfSU9DVExfRiA9IDB4MDAwMDAwMDQsCiAgICAgICAgQUJJ
X1RSQUNFX1NJR05BTCA9IDB4MDAwMDAwMDgsCiAgICAgICAgQUJJX1RSQUNFX1NJR05BTF9GID0g
MHgwMDAwMDAxMCwKICAgICAgICBBQklfVFJBQ0VfU09DS1NZUyA9IDB4MDAwMDAwMjAsCiAgICAg
ICAgQUJJX1RSQUNFX1NUUkVBTVMgPSAweDAwMDAwMDQwLAogICAgICAgIEFCSV9UUkFDRV9VTklN
UEwgPSAweDAwMDAwMTAwLAp9OwpleHRlcm4gdV9pbnQgYWJpX3RyYWNlZmxnOwojIDE1ICJzeXNp
ODYuYyIgMgojIDExMSAic3lzaTg2LmMiCnN0cnVjdCBzc2QgewogICAgICAgIHVpbnQzMl90IHNl
bDsKICAgICAgICB1aW50MzJfdCBibzsKICAgICAgICB1aW50MzJfdCBsczsKICAgICAgICB1aW50
MzJfdCBhY2MxOwogICAgICAgIHVpbnQzMl90IGFjYzI7Cn07CgoKaW50CnN2cjRfc3lzaTg2KGlu
dCBjbWQsIHZvaWQgKmFyZzEsIGludCBhcmcyKQp7CiAgICAgICAgc3dpdGNoIChjbWQpIHsKICAg
ICAgICBjYXNlIDQwOgoKCgoKCgoKICAgICAgICAgICAgICAgIHJldHVybiAoeyBsb25nIF9fcHVf
ZXJyID0gLTE0OyBfX3R5cGVvZl9fKCooKGFyZzEpKSkgKl9fcHVfYWRkciA9ICgoYXJnMSkpOyBp
ZiAoKCh7IHVuc2lnbmVkIGxvbmcgZmxhZyxzdW07IGFzbSgiYWRkbCAlMywlMSA7IHNiYmwgJTAs
JTA7IGNtcGwgJTEsJTQ7IHNiYmwgJDAsJTAiIDoiPSZyIiAoZmxhZyksICI9ciIgKHN1bSkgOiIx
IiAoX19wdV9hZGRyKSwiZyIgKChpbnQpKHNpemVvZigqKGFyZzEpKSkpLCJnIiAoZ2V0X2N1cnJl
bnQoKS0+YWRkcl9saW1pdC5zZWcpKTsgZmxhZzsgfSkgPT0gMCkpIGRvIHsgX19wdV9lcnIgPSAw
OyBzd2l0Y2ggKChzaXplb2YoKihhcmcxKSkpKSB7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxl
X18oICIxOgltb3YiImIiIiAlIiJiIiIxLCUyXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwi
YXhcIlxuIiAiMzoJbW92bCAlMywlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2Vj
dGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAxYiwzYlxuIiAi
LnByZXZpb3VzIiA6ICI9ciIoX19wdV9lcnIpIDogImlxIiAoKChfX3R5cGVvZl9fKCooYXJnMSkp
KSgzKSkpLCAibSIoKCooc3RydWN0IF9fbGFyZ2Vfc3RydWN0ICopKF9fcHVfYWRkcikpKSwgImki
KC0xNCksICIwIihfX3B1X2VycikpOyBicmVhazsgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVf
XyggIjE6CW1vdiIidyIiICUiInciIjEsJTJcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJh
eFwiXG4iICIzOgltb3ZsICUzLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0
aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDFiLDNiXG4iICIu
cHJldmlvdXMiIDogIj1yIihfX3B1X2VycikgOiAiaXIiICgoKF9fdHlwZW9mX18oKihhcmcxKSkp
KDMpKSksICJtIigoKihzdHJ1Y3QgX19sYXJnZV9zdHJ1Y3QgKikoX19wdV9hZGRyKSkpLCAiaSIo
LTE0KSwgIjAiKF9fcHVfZXJyKSk7IGJyZWFrOyBjYXNlIDQ6IF9fYXNtX18gX192b2xhdGlsZV9f
KCAiMToJbW92IiJsIiIgJSIiIiIxLCUyXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhc
IlxuIiAiMzoJbW92bCAlMywlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlv
biBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAxYiwzYlxuIiAiLnBy
ZXZpb3VzIiA6ICI9ciIoX19wdV9lcnIpIDogImlyIiAoKChfX3R5cGVvZl9fKCooYXJnMSkpKSgz
KSkpLCAibSIoKCooc3RydWN0IF9fbGFyZ2Vfc3RydWN0ICopKF9fcHVfYWRkcikpKSwgImkiKC0x
NCksICIwIihfX3B1X2VycikpOyBicmVhazsgY2FzZSA4OiBfX2FzbV9fIF9fdm9sYXRpbGVfXygg
IjE6CW1vdmwgJSVlYXgsMCglMilcbiIgIjI6CW1vdmwgJSVlZHgsNCglMilcbiIgIjM6XG4iICIu
c2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICI0Ogltb3ZsICUzLCUwXG4iICIJam1wIDNiXG4iICIu
cHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAi
CS5sb25nIDFiLDRiXG4iICIJLmxvbmcgMmIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPXIiKF9fcHVf
ZXJyKSA6ICJBIiAoKChfX3R5cGVvZl9fKCooYXJnMSkpKSgzKSkpLCAiciIgKF9fcHVfYWRkciks
ICJpIigtMTQpLCAiMCIoX19wdV9lcnIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fcHV0X3VzZXJfYmFk
KCk7IH0gfSB3aGlsZSAoMCk7IF9fcHVfZXJyOyB9KTsKICAgICAgICBjYXNlIDU0OgoKCgoKICAg
ICAgICAgICAgICAgIHJldHVybiBzeXNfc3RpbWUoYXJnMSk7CiAgICAgICAgY2FzZSA1NjoKCgoK
CgoKICAgICAgICAgICAgICAgIHJldHVybiBzeXNfc2V0aG9zdG5hbWUoYXJnMSwgNyk7CiAgICAg
ICAgY2FzZSA2NToKICAgICAgICAgICAgewoKCgogICAgICAgICAgICAgICAgc3RydWN0IHN5c2lu
Zm8gaTsKCiAgICAgICAgICAgICAgICBzaV9tZW1pbmZvKCZpKTsKICAgICAgICAgICAgICAgIHJl
dHVybiAoaS50b3RhbHJhbSA8PCAxMik7CiAgICAgICAgICAgIH0KICAgICAgICBjYXNlIDc1Ogog
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3NkIHM7CgogICAgICAgICAgICAg
ICAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplb2Yoc3RydWN0IHNzZCkpID8gX19jb25z
dGFudF9jb3B5X2Zyb21fdXNlcigoJnMpLChhcmcxKSwoc2l6ZW9mKHN0cnVjdCBzc2QpKSkgOiBf
X2dlbmVyaWNfY29weV9mcm9tX3VzZXIoKCZzKSwoYXJnMSksKHNpemVvZihzdHJ1Y3Qgc3NkKSkp
KSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xNDsKCiAgICAgICAgICAgICAgICBw
cmludGsoIlNJODZEU0NSKCV4LCV4LCV4LCV4LCV4KVxuIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgIHMuc2VsLCBzLmJvLCBzLmxzLCBzLmFjYzEsIHMuYWNjMik7CiAgICAgICAgICAgICAgICBy
ZXR1cm4gLTIyOwogICAgICAgICAgICB9CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
IGRvIHsgaWYgKChhYmlfdHJhY2VmbGcgJiAoQUJJX1RSQUNFX0FQSSkpKSBkbyB7IHByaW50aygi
PDc+IiAiWyVzOiVkXTogIiwgZ2V0X2N1cnJlbnQoKS0+Y29tbSwgZ2V0X2N1cnJlbnQoKS0+cGlk
KTsgcHJpbnRrKCJ1bnN1cHBvcnRlZCBzeXNpODYgc3ViY2FsbCAlZFxuIiwgY21kKTsgfSB3aGls
ZSgwKTsgfSB3aGlsZSgwKTsKICAgICAgICAgICAgICAgIHJldHVybiAtMjI7CiAgICAgICAgfQp9
Cg==


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-01-23  4:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-01-23  4:36 c/9413: Internal compiler error received dpates

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