public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/4528: gcc produces an "Unrecognizable insn" internal error when compling the Linux kernel
@ 2001-10-13 20:28 rodrigc
  0 siblings, 0 replies; 2+ messages in thread
From: rodrigc @ 2001-10-13 20:28 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, sevillar

Synopsis: gcc produces an "Unrecognizable insn" internal error when compling the Linux kernel

State-Changed-From-To: open->closed
State-Changed-By: rodrigc
State-Changed-When: Sat Oct 13 20:28:28 2001
State-Changed-Why:
    Duplicate of PR 4333 which is fixed:
    http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4333&database=gcc

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


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

* c/4528: gcc produces an "Unrecognizable insn" internal error when compling the Linux kernel
@ 2001-10-10 18:26 sevillar
  0 siblings, 0 replies; 2+ messages in thread
From: sevillar @ 2001-10-10 18:26 UTC (permalink / raw)
  To: gcc-gnats

>Number:         4528
>Category:       c
>Synopsis:       gcc produces an "Unrecognizable insn" internal error when compling the Linux kernel
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 10 18:26:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Rafael R. Sevilla
>Release:        gcc-3.0.1
>Organization:
>Environment:
i586-pc-linux-gnu
AMD K6-2 450
Red Hat Linux 7.1
>Description:
Output of gcc -v:

Reading specs from /usr/lib/gcc-lib/i586-pc-linux-gnu/3.0.1/specs
Configured with: ../gcc-3.0.1/configure --prefix=/usr --enable-shared --enable-threads -disable-nls
Thread model: posix
gcc version 3.0.1

The file being compiled is from the Linux 2.4.11 kernel: /usr/src/linux/kernel/acct.c. this is what occurs:

$ gcc -D__KERNEL__ -I/usr/src/linux/include/ -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=k6 -c -o acct.o acct.c
acct.c: In function 'check_free_space':
acct.c:147: Unrecognizable insn:
(insn 335 102 336 (parallel[
                  (set (reg/v:SI 2 ecx [44])
                       (const_int 0 [0x0]))
                  (clobber (reg:CC 17 flags))
            ] ) -1 (insn_list:REG_DEP_ANTI 100 (insn_list:REG_DEP_ANTI 102 (nil)))
      (expr_list:REG_UNUSED (reg:CC 17 flags)
             (nil)))
acct.c:147: Internal compiler error in insn_default_length, at insn-attrtab.c:223
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
>How-To-Repeat:
Build the file attached.
>Fix:

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

IyA0NiAiYWNjdC5jIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgi
IDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2F1dG9jb25mLmgiIDEKIyA1
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAyCiMgNDcgImFjY3QuYyIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXJybm8uaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2Vycm5vLmgiIDIKIyA0OCAiYWNjdC5jIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2tlcm5lbC5oIgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUv
My4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbGliL2djYy1saWIvaTU4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92
YV9saXN0IF9fZ251Y192YV9saXN0OwojIDExMCAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxp
bnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3Qg
dmFfbGlzdDsKIyAxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAxCgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAyCiMgMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgva2VybmVsLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0ZGRl
Zi5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdHlwZXMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9wb3NpeF90eXBlcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
dGRkZWYuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMu
aCIgMgojIDM2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiCnR5
cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGZkc19iaXRzIFsoMTAyNC8oOCAq
IHNpemVvZih1bnNpZ25lZCBsb25nKSkpXTsKfSBfX2tlcm5lbF9mZF9zZXQ7CgoKdHlwZWRlZiB2
b2lkICgqX19rZXJuZWxfc2lnaGFuZGxlcl90KShpbnQpOwoKCnR5cGVkZWYgaW50IF9fa2VybmVs
X2tleV90OwoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIiAx
CiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiCnR5cGVkZWYg
dW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZGV2X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX2tl
cm5lbF9pbm9fdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9tb2RlX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfbmxpbmtfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVs
X29mZl90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9waWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBfX2tlcm5lbF9pcGNfcGlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfdWlk
X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZ2lkX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fa2VybmVsX3NpemVfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfc3NpemVfdDsKdHlw
ZWRlZiBpbnQgX19rZXJuZWxfcHRyZGlmZl90Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfdGltZV90
Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5l
bF9jbG9ja190Owp0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90Owp0eXBlZGVmIGNoYXIgKiBf
X2tlcm5lbF9jYWRkcl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX3VpZDE2X3Q7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZ2lkMTZfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX19rZXJuZWxfdWlkMzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfZ2lk
MzJfdDsKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX3VpZF90Owp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX29sZF9naWRfdDsKCgp0eXBlZGVmIGxvbmcgbG9uZyBf
X2tlcm5lbF9sb2ZmX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgICAgICBpbnQgdmFsWzJdOwoK
Cgp9IF9fa2VybmVsX2ZzaWRfdDsKIyA0NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9w
b3NpeF90eXBlcy5oIiAyCiMgOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdHlwZXMuaCIgMQoKCgp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IHVtb2RlX3Q7CgoKCgoKCnR5cGVkZWYgX19zaWduZWRfXyBjaGFyIF9f
czg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OwoKdHlwZWRlZiBfX3NpZ25lZF9fIHNob3J0
IF9fczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2OwoKdHlwZWRlZiBfX3NpZ25lZF9f
IGludCBfX3MzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CgoKdHlwZWRlZiBfX3NpZ25l
ZF9fIGxvbmcgbG9uZyBfX3M2NDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX191NjQ7CgoK
CgoKCgp0eXBlZGVmIHNpZ25lZCBjaGFyIHM4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdTg7Cgp0
eXBlZGVmIHNpZ25lZCBzaG9ydCBzMTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdTE2OwoKdHlw
ZWRlZiBzaWduZWQgaW50IHMzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdTMyOwoKdHlwZWRlZiBz
aWduZWQgbG9uZyBsb25nIHM2NDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwoKCgoK
CnR5cGVkZWYgdTMyIGRtYV9hZGRyX3Q7CiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHlwZXMuaCIgMgoKCgp0eXBlZGVmIF9fa2VybmVsX2ZkX3NldCBmZF9zZXQ7CnR5cGVkZWYg
X19rZXJuZWxfZGV2X3QgZGV2X3Q7CnR5cGVkZWYgX19rZXJuZWxfaW5vX3QgaW5vX3Q7CnR5cGVk
ZWYgX19rZXJuZWxfbW9kZV90IG1vZGVfdDsKdHlwZWRlZiBfX2tlcm5lbF9ubGlua190IG5saW5r
X3Q7CnR5cGVkZWYgX19rZXJuZWxfb2ZmX3Qgb2ZmX3Q7CnR5cGVkZWYgX19rZXJuZWxfcGlkX3Qg
cGlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fa2VybmVs
X2tleV90IGtleV90Owp0eXBlZGVmIF9fa2VybmVsX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoK
CnR5cGVkZWYgX19rZXJuZWxfdWlkMzJfdCB1aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9naWQzMl90
IGdpZF90Owp0eXBlZGVmIF9fa2VybmVsX3VpZDE2X3QgdWlkMTZfdDsKdHlwZWRlZiBfX2tlcm5l
bF9naWQxNl90IGdpZDE2X3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfb2xkX3VpZF90IG9sZF91aWRf
dDsKdHlwZWRlZiBfX2tlcm5lbF9vbGRfZ2lkX3Qgb2xkX2dpZF90OwojIDQ1ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgX19rZXJuZWxfbG9mZl90IGxvZmZf
dDsKIyA1NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIgp0eXBlZGVmIF9f
a2VybmVsX3NpemVfdCBzaXplX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX3NzaXplX3Qgc3NpemVf
dDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfcHRyZGlmZl90IHB0cmRpZmZfdDsKCgoKCnR5cGVkZWYg
X19rZXJuZWxfdGltZV90IHRpbWVfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfY2xvY2tfdCBjbG9j
a190OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9jYWRkcl90IGNhZGRyX3Q7CgoKCnR5cGVkZWYgdW5z
aWduZWQgY2hhciB1X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7CgoKdHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIHVuY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7
CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsK
CgoKCnR5cGVkZWYgX191OCB1X2ludDhfdDsKdHlwZWRlZiBfX3M4IGludDhfdDsKdHlwZWRlZiBf
X3UxNiB1X2ludDE2X3Q7CnR5cGVkZWYgX19zMTYgaW50MTZfdDsKdHlwZWRlZiBfX3UzMiB1X2lu
dDMyX3Q7CnR5cGVkZWYgX19zMzIgaW50MzJfdDsKCgoKdHlwZWRlZiBfX3U4IHVpbnQ4X3Q7CnR5
cGVkZWYgX191MTYgdWludDE2X3Q7CnR5cGVkZWYgX191MzIgdWludDMyX3Q7CgoKdHlwZWRlZiBf
X3U2NCB1aW50NjRfdDsKdHlwZWRlZiBfX3U2NCB1X2ludDY0X3Q7CnR5cGVkZWYgX19zNjQgaW50
NjRfdDsKIyAxMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIKc3RydWN0
IHVzdGF0IHsKICAgICAgICBfX2tlcm5lbF9kYWRkcl90IGZfdGZyZWU7CiAgICAgICAgX19rZXJu
ZWxfaW5vX3QgZl90aW5vZGU7CiAgICAgICAgY2hhciBmX2ZuYW1lWzZdOwogICAgICAgIGNoYXIg
Zl9mcGFja1s2XTsKfTsKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwu
aCIgMgojIDQ5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpzdHJ1Y3Qg
Y29tcGxldGlvbjsKCmV4dGVybiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnBhbmljX25vdGlmaWVy
X2xpc3Q7CiAgICAgICAgICAgdm9pZCBwYW5pYyhjb25zdCBjaGFyICogZm10LCAuLi4pCiAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuLCBmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsKICAg
ICAgICAgICB2b2lkIGRvX2V4aXQobG9uZyBlcnJvcl9jb2RlKQogICAgICAgIF9fYXR0cmlidXRl
X18oKG5vcmV0dXJuKSk7CiAgICAgICAgICAgdm9pZCBjb21wbGV0ZV9hbmRfZXhpdChzdHJ1Y3Qg
Y29tcGxldGlvbiAqLCBsb25nKQogICAgICAgIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CmV4
dGVybiBpbnQgYWJzKGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHNpbXBsZV9zdHJ0b3VsKGNv
bnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBsb25nIHNpbXBsZV9zdHJ0
b2woY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgbG9uZyBzaW1wbGVfc3RydG91bGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50
KTsKZXh0ZXJuIGxvbmcgbG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBjaGFyICosY2hhciAqKix1
bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IHNwcmludGYoY2hhciAqIGJ1ZiwgY29uc3QgY2hhciAq
IGZtdCwgLi4uKTsKZXh0ZXJuIGludCB2c3ByaW50ZihjaGFyICpidWYsIGNvbnN0IGNoYXIgKiwg
dmFfbGlzdCk7CmV4dGVybiBpbnQgc25wcmludGYoY2hhciAqIGJ1Ziwgc2l6ZV90IHNpemUsIGNv
bnN0IGNoYXIgKmZtdCwgLi4uKTsKZXh0ZXJuIGludCB2c25wcmludGYoY2hhciAqYnVmLCBzaXpl
X3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwoKZXh0ZXJuIGludCBzc2Nh
bmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9f
ICgoZm9ybWF0IChzY2FuZiwyLDMpKSk7CmV4dGVybiBpbnQgdnNzY2FuZihjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CgpleHRlcm4gaW50IGdldF9vcHRpb24oY2hhciAqKnN0
ciwgaW50ICpwaW50KTsKZXh0ZXJuIGNoYXIgKmdldF9vcHRpb25zKGNoYXIgKnN0ciwgaW50IG5p
bnRzLCBpbnQgKmludHMpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIG1lbXBhcnNlKGNoYXIg
KnB0ciwgY2hhciAqKnJldHB0cik7CmV4dGVybiB2b2lkIGRldl9wcm9iZV9sb2NrKHZvaWQpOwpl
eHRlcm4gdm9pZCBkZXZfcHJvYmVfdW5sb2NrKHZvaWQpOwoKZXh0ZXJuIGludCBzZXNzaW9uX29m
X3BncnAoaW50IHBncnApOwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgcHJpbnRr
KGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChw
cmludGYsIDEsIDIpKSk7CgpleHRlcm4gaW50IGNvbnNvbGVfbG9nbGV2ZWw7CgpzdGF0aWMgaW5s
aW5lIHZvaWQgY29uc29sZV9zaWxlbnQodm9pZCkKewogICAgICAgIGNvbnNvbGVfbG9nbGV2ZWwg
PSAwOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY29uc29sZV92ZXJib3NlKHZvaWQpCnsKICAgICAg
ICBpZiAoY29uc29sZV9sb2dsZXZlbCkKICAgICAgICAgICAgICAgIGNvbnNvbGVfbG9nbGV2ZWwg
PSAxNTsKfQoKZXh0ZXJuIHZvaWQgYnVzdF9zcGlubG9ja3MoaW50IHllcyk7CmV4dGVybiBpbnQg
b29wc19pbl9wcm9ncmVzczsKCmV4dGVybiBpbnQgdGFpbnRlZDsKZXh0ZXJuIGNvbnN0IGNoYXIg
KnByaW50X3RhaW50ZWQodm9pZCk7CiMgMTYwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2tlcm5lbC5oIgpzdHJ1Y3Qgc3lzaW5mbyB7CiAgICAgICAgbG9uZyB1cHRpbWU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBsb2Fkc1szXTsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFscmFtOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZXJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNoYXJl
ZHJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcnJhbTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHRvdGFsc3dhcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVzd2FwOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHByb2NzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHBhZDsKICAgICAgICB1
bnNpZ25lZCBsb25nIHRvdGFsaGlnaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVoaWdoOwog
ICAgICAgIHVuc2lnbmVkIGludCBtZW1fdW5pdDsKICAgICAgICBjaGFyIF9mWzIwLTIqc2l6ZW9m
KGxvbmcpLXNpemVvZihpbnQpXTsKfTsKIyA0OSAiYWNjdC5jIiAyCgoKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L21tLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NjaGVkLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wYXJh
bS5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgpleHRl
cm4gdW5zaWduZWQgbG9uZyBldmVudDsKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAxCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wdHJhY2UuaCIgMQojIDI0ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL3B0cmFjZS5oIiAxCiMgMjYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3B0cmFjZS5o
IgpzdHJ1Y3QgcHRfcmVncyB7CiAgICAgICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAg
ICAgICAgbG9uZyBlZHg7CiAgICAgICAgbG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAg
ICAgbG9uZyBlYnA7CiAgICAgICAgbG9uZyBlYXg7CiAgICAgICAgaW50IHhkczsKICAgICAgICBp
bnQgeGVzOwogICAgICAgIGxvbmcgb3JpZ19lYXg7CiAgICAgICAgbG9uZyBlaXA7CiAgICAgICAg
aW50IHhjczsKICAgICAgICBsb25nIGVmbGFnczsKICAgICAgICBsb25nIGVzcDsKICAgICAgICBp
bnQgeHNzOwp9OwojIDYwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKZXh0
ZXJuIHZvaWQgc2hvd19yZWdzKHN0cnVjdCBwdF9yZWdzICopOwojIDI1ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIiAyCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9iaW5mbXRzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NhcGFi
aWxpdHkuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHku
aCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxNyAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQoj
IDEwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpbWl0
cy5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvd2FpdC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
a2VybmVsLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQoKCgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAxCiMgMTMgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9wcm9jZXNzb3IuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9j
ZXNzb3IuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS92bTg2LmgiIDEKIyA2OCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdm04Ni5oIgpzdHJ1Y3Qgdm04Nl9yZWdzIHsKCgoK
ICAgICAgICBsb25nIGVieDsKICAgICAgICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAg
ICAgICBsb25nIGVzaTsKICAgICAgICBsb25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAg
ICBsb25nIGVheDsKICAgICAgICBsb25nIF9fbnVsbF9kczsKICAgICAgICBsb25nIF9fbnVsbF9l
czsKICAgICAgICBsb25nIF9fbnVsbF9mczsKICAgICAgICBsb25nIF9fbnVsbF9nczsKICAgICAg
ICBsb25nIG9yaWdfZWF4OwogICAgICAgIGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGNzLCBfX2NzaDsKICAgICAgICBsb25nIGVmbGFnczsKICAgICAgICBsb25nIGVzcDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMs
IF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwp9OwoK
c3RydWN0IHJldmVjdG9yZWRfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fbWFwWzhd
Owp9OwoKc3RydWN0IHZtODZfc3RydWN0IHsKICAgICAgICBzdHJ1Y3Qgdm04Nl9yZWdzIHJlZ3M7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVl
bl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3Qg
cmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9y
ZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7Cn07CgoKCgoKCnN0cnVjdCB2bTg2cGx1c19pbmZv
X3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmb3JjZV9yZXR1cm5fZm9yX3BpYzoxOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgdm04NmRiZ19hY3RpdmU6MTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHZtODZkYmdfVEZwZW5kaWc6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHVudXNlZDoyODsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGlzX3ZtODZwdXM6MTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IHZtODZkYmdfaW50eHh0YWJbMzJdOwp9OwoKc3RydWN0IHZtODZwbHVzX3N0cnVjdCB7CiAgICAg
ICAgc3RydWN0IHZtODZfcmVncyByZWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
Y3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVk
OwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAg
ICAgIHN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB2bTg2cGx1czsKfTsKIyAxNDUgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3ZtODYuaCIKc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgewoK
CgogICAgICAgIGxvbmcgZWJ4OwogICAgICAgIGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4Owog
ICAgICAgIGxvbmcgZXNpOwogICAgICAgIGxvbmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAg
ICAgIGxvbmcgZWF4OwogICAgICAgIGxvbmcgX19udWxsX2RzOwogICAgICAgIGxvbmcgX19udWxs
X2VzOwogICAgICAgIGxvbmcgb3JpZ19lYXg7CiAgICAgICAgbG9uZyBlaXA7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgY3MsIF9fY3NoOwogICAgICAgIGxvbmcgZWZsYWdzOwogICAgICAgIGxvbmcg
ZXNwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKCgoKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBlcywgX19lc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywg
X19nc2g7Cn07CgpzdHJ1Y3Qga2VybmVsX3ZtODZfc3RydWN0IHsKICAgICAgICBzdHJ1Y3Qga2Vy
bmVsX3ZtODZfcmVncyByZWdzOwojIDE4NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdm04
Ni5oIgogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
Y3JlZW5fYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3Ry
dWN0IHJldmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZl
Y3RvcmVkX3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19p
bmZvX3N0cnVjdCB2bTg2cGx1czsKICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVnczMyOwojIDIw
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdm04Ni5oIgp9OwoKdm9pZCBoYW5kbGVfdm04
Nl9mYXVsdChzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyAqLCBsb25nKTsKaW50IGhhbmRsZV92bTg2
X3RyYXAoc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwgbG9uZywgaW50KTsKIyAxMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vc2lnY29udGV4dC5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ2Nv
bnRleHQuaCIKc3RydWN0IF9mcHJlZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNh
bmRbNF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7Cn07CgpzdHJ1Y3QgX2ZweHJl
ZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNhbmRbNF07CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZXhwb25lbnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFkZGluZ1szXTsKfTsK
CnN0cnVjdCBfeG1tcmVnIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGVsZW1lbnRbNF07Cn07Cgpz
dHJ1Y3QgX2Zwc3RhdGUgewoKICAgICAgICB1bnNpZ25lZCBsb25nIGN3OwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc3c7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0YWc7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBpcG9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNzc2VsOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZGF0YW9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFzZWw7CiAgICAgICAgc3Ry
dWN0IF9mcHJlZyBfc3RbOF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IG1hZ2ljOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBfZnhzcl9lbnZb
Nl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBteGNzcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHJl
c2VydmVkOwogICAgICAgIHN0cnVjdCBfZnB4cmVnIF9meHNyX3N0WzhdOwogICAgICAgIHN0cnVj
dCBfeG1tcmVnIF94bW1bOF07CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYWRkaW5nWzU2XTsKfTsK
CgoKc3RydWN0IHNpZ2NvbnRleHQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
ZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzaTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVicDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGVieDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVkeDsKICAgICAgICB1bnNpZ25lZCBsb25n
IGVjeDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVheDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRy
YXBubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGVycjsKICAgICAgICB1bnNpZ25lZCBsb25nIGVp
cDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBlZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3BfYXRfc2lnbmFsOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKICAgICAgICBzdHJ1Y3QgX2Zwc3RhdGUgKiBmcHN0YXRl
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIGNy
MjsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAyCgppbnQg
cmVzdG9yZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICpidWYpOwppbnQg
c2F2ZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICogYnVmKTsKCgoKCgpz
dHJ1Y3QgaW5mbyB7CiAgICAgICAgbG9uZyBfX19vcmlnX2VpcDsKICAgICAgICBsb25nIF9fX2Vi
eDsKICAgICAgICBsb25nIF9fX2VjeDsKICAgICAgICBsb25nIF9fX2VkeDsKICAgICAgICBsb25n
IF9fX2VzaTsKICAgICAgICBsb25nIF9fX2VkaTsKICAgICAgICBsb25nIF9fX2VicDsKICAgICAg
ICBsb25nIF9fX2VheDsKICAgICAgICBsb25nIF9fX2RzOwogICAgICAgIGxvbmcgX19fZXM7CiAg
ICAgICAgbG9uZyBfX19vcmlnX2VheDsKICAgICAgICBsb25nIF9fX2VpcDsKICAgICAgICBsb25n
IF9fX2NzOwogICAgICAgIGxvbmcgX19fZWZsYWdzOwogICAgICAgIGxvbmcgX19fZXNwOwogICAg
ICAgIGxvbmcgX19fc3M7CiAgICAgICAgbG9uZyBfX192bTg2X2VzOwogICAgICAgIGxvbmcgX19f
dm04Nl9kczsKICAgICAgICBsb25nIF9fX3ZtODZfZnM7CiAgICAgICAgbG9uZyBfX192bTg2X2dz
Owp9OwojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlZ21lbnQuaCIgMQojIDEzICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3BhZ2UuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wYWdlLmgi
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDEzICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9wYWdlLmgiIDIKIyA0NSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vcGFnZS5oIgp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcHRlX2xvdzsg
fSBwdGVfdDsKdHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHBtZDsgfSBwbWRfdDsKdHlw
ZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHBnZDsgfSBwZ2RfdDsKCgoKCnR5cGVkZWYgc3Ry
dWN0IHsgdW5zaWduZWQgbG9uZyBwZ3Byb3Q7IH0gcGdwcm90X3Q7CiMgMTA1ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9wYWdlLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBnZXRfb3JkZXIo
dW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgaW50IG9yZGVyOwoKICAgICAgICBzaXplID0g
KHNpemUtMSkgPj4gKDEyIC0xKTsKICAgICAgICBvcmRlciA9IC0xOwogICAgICAgIGRvIHsKICAg
ICAgICAgICAgICAgIHNpemUgPj49IDE7CiAgICAgICAgICAgICAgICBvcmRlcisrOwogICAgICAg
IH0gd2hpbGUgKHNpemUpOwogICAgICAgIHJldHVybiBvcmRlcjsKfQojIDE0ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3R5cGVzLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vz
c29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmgiIDEK
IyAxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2NhY2hlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Nv
bmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vY2FjaGUuaCIgMQoKCgoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9jYWNoZS5oIiAyCiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9j
YWNoZS5oIiAyCiMgMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDE5ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvdGhyZWFkcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGhy
ZWFkcy5oIiAyCiMgMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAy
CiMgMzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgY3B1
aW5mb194ODYgewogICAgICAgIF9fdTggeDg2OwogICAgICAgIF9fdTggeDg2X3ZlbmRvcjsKICAg
ICAgICBfX3U4IHg4Nl9tb2RlbDsKICAgICAgICBfX3U4IHg4Nl9tYXNrOwogICAgICAgIGNoYXIg
d3Bfd29ya3Nfb2s7CiAgICAgICAgY2hhciBobHRfd29ya3Nfb2s7CiAgICAgICAgY2hhciBoYXJk
X21hdGg7CiAgICAgICAgY2hhciByZnU7CiAgICAgICAgaW50IGNwdWlkX2xldmVsOwogICAgICAg
IF9fdTMyIHg4Nl9jYXBhYmlsaXR5WzRdOwogICAgICAgIGNoYXIgeDg2X3ZlbmRvcl9pZFsxNl07
CiAgICAgICAgY2hhciB4ODZfbW9kZWxfaWRbNjRdOwogICAgICAgIGludCB4ODZfY2FjaGVfc2l6
ZTsKCiAgICAgICAgaW50IGZkaXZfYnVnOwogICAgICAgIGludCBmMDBmX2J1ZzsKICAgICAgICBp
bnQgY29tYV9idWc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb29wc19wZXJfamlmZnk7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyAqcGdkX3F1aWNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnBtZF9x
dWljazsKICAgICAgICB1bnNpZ25lZCBsb25nICpwdGVfcXVpY2s7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBwZ3RhYmxlX2NhY2hlX3N6Owp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8
ICgoNSkpKSkpKTsKIyA3MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
CmV4dGVybiBzdHJ1Y3QgY3B1aW5mb194ODYgYm9vdF9jcHVfZGF0YTsKZXh0ZXJuIHN0cnVjdCB0
c3Nfc3RydWN0IGluaXRfdHNzWzFdOwojIDk0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9w
cm9jZXNzb3IuaCIKZXh0ZXJuIGNoYXIgaWdub3JlX2lycTEzOwoKZXh0ZXJuIHZvaWQgaWRlbnRp
ZnlfY3B1KHN0cnVjdCBjcHVpbmZvX3g4NiAqKTsKZXh0ZXJuIHZvaWQgcHJpbnRfY3B1X2luZm8o
c3RydWN0IGNwdWluZm9feDg2ICopOwpleHRlcm4gdm9pZCBkb2RneV90c2Modm9pZCk7CiMgMTI0
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RhdGljIGlubGluZSB2
b2lkIGNwdWlkKGludCBvcCwgaW50ICplYXgsIGludCAqZWJ4LCBpbnQgKmVjeCwgaW50ICplZHgp
CnsKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoKmVheCks
CiAgICAgICAgICAgICAgICAgICI9YiIgKCplYngpLAogICAgICAgICAgICAgICAgICAiPWMiICgq
ZWN4KSwKICAgICAgICAgICAgICAgICAgIj1kIiAoKmVkeCkKICAgICAgICAgICAgICAgIDogIjAi
IChvcCkpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lYXgodW5zaWdu
ZWQgaW50IG9wKQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVheDsKCiAgICAgICAgX19hc21fXygi
Y3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCkKICAgICAgICAgICAgICAgIDogIjAi
IChvcCkKICAgICAgICAgICAgICAgIDogImJ4IiwgImN4IiwgImR4Iik7CiAgICAgICAgcmV0dXJu
IGVheDsKfQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lYngodW5zaWduZWQgaW50
IG9wKQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVheCwgZWJ4OwoKICAgICAgICBfX2FzbV9fKCJj
cHVpZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KQogICAgICAgICAg
ICAgICAgOiAiMCIgKG9wKQogICAgICAgICAgICAgICAgOiAiY3giLCAiZHgiICk7CiAgICAgICAg
cmV0dXJuIGVieDsKfQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lY3godW5zaWdu
ZWQgaW50IG9wKQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVheCwgZWN4OwoKICAgICAgICBfX2Fz
bV9fKCJjcHVpZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoZWF4KSwgIj1jIiAoZWN4KQogICAg
ICAgICAgICAgICAgOiAiMCIgKG9wKQogICAgICAgICAgICAgICAgOiAiYngiLCAiZHgiICk7CiAg
ICAgICAgcmV0dXJuIGVjeDsKfQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lZHgo
dW5zaWduZWQgaW50IG9wKQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVheCwgZWR4OwoKICAgICAg
ICBfX2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoZWF4KSwgIj1kIiAoZWR4
KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKQogICAgICAgICAgICAgICAgOiAiYngiLCAiY3gi
KTsKICAgICAgICByZXR1cm4gZWR4Owp9CiMgMTk5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9wcm9jZXNzb3IuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbW11X2NyNF9mZWF0dXJlczsKCnN0
YXRpYyBpbmxpbmUgdm9pZCBzZXRfaW5fY3I0ICh1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAg
ICBtbXVfY3I0X2ZlYXR1cmVzIHw9IG1hc2s7CiAgICAgICAgX19hc21fXygibW92bCAlJWNyNCwl
JWVheFxuXHQiCiAgICAgICAgICAgICAgICAib3JsICUwLCUlZWF4XG5cdCIKICAgICAgICAgICAg
ICAgICJtb3ZsICUlZWF4LCUlY3I0XG4iCiAgICAgICAgICAgICAgICA6IDogImlyZyIgKG1hc2sp
CiAgICAgICAgICAgICAgICA6ImF4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9pbl9j
cjQgKHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIG1tdV9jcjRfZmVhdHVyZXMgJj0gfm1h
c2s7CiAgICAgICAgX19hc21fXygibW92bCAlJWNyNCwlJWVheFxuXHQiCiAgICAgICAgICAgICAg
ICAiYW5kbCAlMCwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAibW92bCAlJWVheCwlJWNyNFxu
IgogICAgICAgICAgICAgICAgOiA6ICJpcmciICh+bWFzaykKICAgICAgICAgICAgICAgIDoiYXgi
KTsKfQojIDI1NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVy
biBpbnQgTUNBX2J1czsKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBtYWNoaW5lX2lkOwpleHRlcm4g
dW5zaWduZWQgaW50IG1hY2hpbmVfc3VibW9kZWxfaWQ7CmV4dGVybiB1bnNpZ25lZCBpbnQgQklP
U19yZXZpc2lvbjsKZXh0ZXJuIHVuc2lnbmVkIGludCBtY2FfcGVudGl1bV9mbGFnOwojIDI4MiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCBpMzg3X2ZzYXZl
X3N0cnVjdCB7CiAgICAgICAgbG9uZyBjd2Q7CiAgICAgICAgbG9uZyBzd2Q7CiAgICAgICAgbG9u
ZyB0d2Q7CiAgICAgICAgbG9uZyBmaXA7CiAgICAgICAgbG9uZyBmY3M7CiAgICAgICAgbG9uZyBm
b287CiAgICAgICAgbG9uZyBmb3M7CiAgICAgICAgbG9uZyBzdF9zcGFjZVsyMF07CiAgICAgICAg
bG9uZyBzdGF0dXM7Cn07CgpzdHJ1Y3QgaTM4N19meHNhdmVfc3RydWN0IHsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBjd2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3dkOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHR3ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmb3A7CiAgICAgICAgbG9uZyBm
aXA7CiAgICAgICAgbG9uZyBmY3M7CiAgICAgICAgbG9uZyBmb287CiAgICAgICAgbG9uZyBmb3M7
CiAgICAgICAgbG9uZyBteGNzcjsKICAgICAgICBsb25nIHJlc2VydmVkOwogICAgICAgIGxvbmcg
c3Rfc3BhY2VbMzJdOwogICAgICAgIGxvbmcgeG1tX3NwYWNlWzMyXTsKICAgICAgICBsb25nIHBh
ZGRpbmdbNTZdOwp9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgxNikpKTsKCnN0cnVjdCBpMzg3
X3NvZnRfc3RydWN0IHsKICAgICAgICBsb25nIGN3ZDsKICAgICAgICBsb25nIHN3ZDsKICAgICAg
ICBsb25nIHR3ZDsKICAgICAgICBsb25nIGZpcDsKICAgICAgICBsb25nIGZjczsKICAgICAgICBs
b25nIGZvbzsKICAgICAgICBsb25nIGZvczsKICAgICAgICBsb25nIHN0X3NwYWNlWzIwXTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGZ0b3AsIGNoYW5nZWQsIGxvb2thaGVhZCwgbm9fdXBkYXRlLCBy
bSwgYWxpbWl0OwogICAgICAgIHN0cnVjdCBpbmZvICppbmZvOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZW50cnlfZWlwOwp9OwoKdW5pb24gaTM4N191bmlvbiB7CiAgICAgICAgc3RydWN0IGkzODdf
ZnNhdmVfc3RydWN0IGZzYXZlOwogICAgICAgIHN0cnVjdCBpMzg3X2Z4c2F2ZV9zdHJ1Y3QgZnhz
YXZlOwogICAgICAgIHN0cnVjdCBpMzg3X3NvZnRfc3RydWN0IHNvZnQ7Cn07Cgp0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZWc7Cn0gbW1fc2VnbWVudF90OwoKc3RydWN0
IHRzc19zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGJhY2tfbGluayxfX2JsaDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGVzcDA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MwLF9fc3Mw
aDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Mx
LF9fc3MxaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDI7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc3MyLF9fc3MyaDsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fY3IzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWZsYWdzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZWF4LGVjeCxlZHgsZWJ4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZWJwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNpOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZWRpOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2VzaDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Ms
IF9fc3NoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGxkdCwgX19sZHRoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHRy
YWNlLCBiaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpb19iaXRtYXBbMzIgKzFdOwoKCgog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX19jYWNoZWxpbmVfZmlsbGVyWzVdOwp9OwoKc3RydWN0IHRo
cmVhZF9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwMDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGZzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZ3M7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZGVidWdyZWdbOF07CgogICAgICAgIHVuc2lnbmVkIGxvbmcgY3IyLCB0cmFwX25vLCBlcnJvcl9j
b2RlOwoKICAgICAgICB1bmlvbiBpMzg3X3VuaW9uIGkzODc7CgogICAgICAgIHN0cnVjdCB2bTg2
X3N0cnVjdCAqIHZtODZfaW5mbzsKICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7
CiAgICAgICAgdW5zaWduZWQgbG9uZyB2ODZmbGFncywgdjg2bWFzaywgdjg2bW9kZSwgc2F2ZWRf
ZXNwMDsKCiAgICAgICAgaW50IGlvcGVybTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlvX2JpdG1h
cFszMiArMV07Cn07CiMgNDI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3Iu
aCIKc3RydWN0IHRhc2tfc3RydWN0OwpzdHJ1Y3QgbW1fc3RydWN0OwoKCmV4dGVybiB2b2lkIHJl
bGVhc2VfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKCgoKZXh0ZXJuIGludCBrZXJuZWxf
dGhyZWFkKGludCAoKmZuKSh2b2lkICopLCB2b2lkICogYXJnLCB1bnNpZ25lZCBsb25nIGZsYWdz
KTsKCgpleHRlcm4gdm9pZCBjb3B5X3NlZ21lbnRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3Ry
dWN0IG1tX3N0cnVjdCAqIG1tKTsKZXh0ZXJuIHZvaWQgcmVsZWFzZV9zZWdtZW50cyhzdHJ1Y3Qg
bW1fc3RydWN0ICogbW0pOwoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRocmVhZF9z
YXZlZF9wYyhzdHJ1Y3QgdGhyZWFkX3N0cnVjdCAqdCkKewogICAgICAgIHJldHVybiAoKHVuc2ln
bmVkIGxvbmcgKil0LT5lc3ApWzNdOwp9Cgp1bnNpZ25lZCBsb25nIGdldF93Y2hhbihzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnApOwojIDQ1OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vz
c29yLmgiCnN0cnVjdCBtaWNyb2NvZGUgewogICAgICAgIHVuc2lnbmVkIGludCBoZHJ2ZXI7CiAg
ICAgICAgdW5zaWduZWQgaW50IHJldjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGF0ZTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc2lnOwogICAgICAgIHVuc2lnbmVkIGludCBja3N1bTsKICAgICAgICB1
bnNpZ25lZCBpbnQgbGRydmVyOwogICAgICAgIHVuc2lnbmVkIGludCBwZjsKICAgICAgICB1bnNp
Z25lZCBpbnQgcmVzZXJ2ZWRbNV07CiAgICAgICAgdW5zaWduZWQgaW50IGJpdHNbNTAwXTsKfTsK
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcmVwX25vcCh2b2lkKQp7CiAgICAgICAgX19hc21fXyBf
X3ZvbGF0aWxlX18oInJlcDtub3AiKTsKfQojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3ByZWZldGNoLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9jYWNoZS5o
IiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMgojIDQz
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCBwcmVmZXRjaChjb25zdCB2b2lkICp4KSB7O30KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBw
cmVmZXRjaHcoY29uc3Qgdm9pZCAqeCkgezt9CiMgNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9saXN0LmgiIDIKIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saXN0Lmgi
CnN0cnVjdCBsaXN0X2hlYWQgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5leHQsICpwcmV2
Owp9OwojIDM3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIF9f
aW5saW5lX18gdm9pZCBfX2xpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKiBuZXcsCiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCAqIHByZXYsCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQp
CnsKICAgICAgICBuZXh0LT5wcmV2ID0gbmV3OwogICAgICAgIG5ldy0+bmV4dCA9IG5leHQ7CiAg
ICAgICAgbmV3LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3Owp9CiMgNTUg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgX19pbmxpbmVfXyB2
b2lkIGxpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVh
ZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLCBoZWFkLT5uZXh0KTsKfQojIDY4ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIF9faW5saW5lX18gdm9p
ZCBsaXN0X2FkZF90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAq
aGVhZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2LCBoZWFkKTsKfQojIDgw
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIF9faW5saW5lX18g
dm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCnsKICAgICAgICBuZXh0
LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV4dDsKfQoKCgoKCgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIGxpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAg
ICAgX19saXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5leHQpOwp9CgoKCgoKc3RhdGljIF9f
aW5saW5lX18gdm9pZCBsaXN0X2RlbF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAg
ICAgICAgX19saXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5leHQpOwogICAgICAgIGRvIHsg
KGVudHJ5KS0+bmV4dCA9IChlbnRyeSk7IChlbnRyeSktPnByZXYgPSAoZW50cnkpOyB9IHdoaWxl
ICgwKTsKfQoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBsaXN0X2VtcHR5KHN0cnVjdCBsaXN0
X2hlYWQgKmhlYWQpCnsKICAgICAgICByZXR1cm4gaGVhZC0+bmV4dCA9PSBoZWFkOwp9CgoKCgoK
CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9zcGxpY2Uoc3RydWN0IGxpc3RfaGVhZCAqbGlz
dCwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmZp
cnN0ID0gbGlzdC0+bmV4dDsKCiAgICAgICAgaWYgKGZpcnN0ICE9IGxpc3QpIHsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmxhc3QgPSBsaXN0LT5wcmV2OwogICAgICAgICAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCAqYXQgPSBoZWFkLT5uZXh0OwoKICAgICAgICAgICAgICAgIGZp
cnN0LT5wcmV2ID0gaGVhZDsKICAgICAgICAgICAgICAgIGhlYWQtPm5leHQgPSBmaXJzdDsKCiAg
ICAgICAgICAgICAgICBsYXN0LT5uZXh0ID0gYXQ7CiAgICAgICAgICAgICAgICBhdC0+cHJldiA9
IGxhc3Q7CiAgICAgICAgfQp9CiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvd2Fp
dC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQojIDE2
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3NwaW5sb2NrLmgiIDIKIyA1MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9j
ay5oIgogIHR5cGVkZWYgc3RydWN0IHsgfSBzcGlubG9ja190OwojIDExNiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgogIHR5cGVkZWYgc3RydWN0IHsgfSByd2xvY2tf
dDsKIyAxNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvd2FpdC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3BhZ2UuaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxCiMgMjEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIiAyCiMgMzEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvd2FpdC5oIgpzdHJ1Y3QgX193YWl0X3F1ZXVlIHsKICAgICAgICB1bnNpZ25l
ZCBpbnQgZmxhZ3M7CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqIHRhc2s7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCB0YXNrX2xpc3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3dhaXRf
cXVldWUgd2FpdF9xdWV1ZV90OwojIDc3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dh
aXQuaCIKc3RydWN0IF9fd2FpdF9xdWV1ZV9oZWFkIHsKICAgICAgICBzcGlubG9ja190IGxvY2s7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0YXNrX2xpc3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVj
dCBfX3dhaXRfcXVldWVfaGVhZCB3YWl0X3F1ZXVlX2hlYWRfdDsKIyAxNTUgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF93YWl0cXVl
dWVfaGVhZCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSkKewoKCgoKICAgICAgICBxLT5sb2NrID0gKHNw
aW5sb2NrX3QpIHsgfTsKICAgICAgICBkbyB7ICgmcS0+dGFza19saXN0KS0+bmV4dCA9ICgmcS0+
dGFza19saXN0KTsgKCZxLT50YXNrX2xpc3QpLT5wcmV2ID0gKCZxLT50YXNrX2xpc3QpOyB9IHdo
aWxlICgwKTsKCgoKCn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3dhaXRxdWV1ZV9lbnRyeSh3
YWl0X3F1ZXVlX3QgKnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewoKCgoKICAgICAgICBxLT5m
bGFncyA9IDA7CiAgICAgICAgcS0+dGFzayA9IHA7CgoKCn0KCnN0YXRpYyBpbmxpbmUgaW50IHdh
aXRxdWV1ZV9hY3RpdmUod2FpdF9xdWV1ZV9oZWFkX3QgKnEpCnsKCgoKCgoKICAgICAgICByZXR1
cm4gIWxpc3RfZW1wdHkoJnEtPnRhc2tfbGlzdCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Fk
ZF93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpoZWFkLCB3YWl0X3F1ZXVlX3QgKm5ldykK
ewojIDIwMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiCiAgICAgICAgbGlz
dF9hZGQoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoKCgoKc3RhdGljIGlu
bGluZSB2b2lkIF9fYWRkX3dhaXRfcXVldWVfdGFpbCh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9xdWV1
ZV90ICpuZXcpCnsKIyAyMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIgog
ICAgICAgIGxpc3RfYWRkX3RhaWwoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+dGFza19saXN0KTsK
fQoKc3RhdGljIGlubGluZSB2b2lkIF9fcmVtb3ZlX3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFk
X3QgKmhlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2FpdF9xdWV1ZV90ICpvbGQpCnsKCgoKCgogICAgICAgIGxpc3RfZGVsKCZvbGQt
PnRhc2tfbGlzdCk7Cn0KIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTQgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdmZzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdGF0
ZnMuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAx
CiMgNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3RhdGZzLmgiIDIKCnR5cGVkZWYgX19r
ZXJuZWxfZnNpZF90IGZzaWRfdDsKCgoKc3RydWN0IHN0YXRmcyB7CiAgICAgICAgbG9uZyBmX3R5
cGU7CiAgICAgICAgbG9uZyBmX2JzaXplOwogICAgICAgIGxvbmcgZl9ibG9ja3M7CiAgICAgICAg
bG9uZyBmX2JmcmVlOwogICAgICAgIGxvbmcgZl9iYXZhaWw7CiAgICAgICAgbG9uZyBmX2ZpbGVz
OwogICAgICAgIGxvbmcgZl9mZnJlZTsKICAgICAgICBfX2tlcm5lbF9mc2lkX3QgZl9mc2lkOwog
ICAgICAgIGxvbmcgZl9uYW1lbGVuOwogICAgICAgIGxvbmcgZl9zcGFyZVs2XTsKfTsKIyA1ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Zmcy5oIiAyCiMgMTUgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bmV0LmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZXQuaCIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMjIgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbmV0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3NvY2tldC5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zb2Nr
ZXQuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMQoj
IDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NvY2tldC5oIiAyCiMgNyAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvc29ja2lvcy5oIiAxCiMgMjEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
c29ja2lvcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMQoj
IDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCIgMgojIDggIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3Vpby5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91aW8uaCIgMgoj
IDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vpby5oIgpzdHJ1Y3QgaW92ZWMKewog
ICAgICAgIHZvaWQgKmlvdl9iYXNlOwogICAgICAgIF9fa2VybmVsX3NpemVfdCBpb3ZfbGVuOwp9
OwojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBzYV9mYW1p
bHlfdDsKCgoKCgpzdHJ1Y3Qgc29ja2FkZHIgewogICAgICAgIHNhX2ZhbWlseV90IHNhX2ZhbWls
eTsKICAgICAgICBjaGFyIHNhX2RhdGFbMTRdOwp9OwoKc3RydWN0IGxpbmdlciB7CiAgICAgICAg
aW50IGxfb25vZmY7CiAgICAgICAgaW50IGxfbGluZ2VyOwp9OwoKCgoKCgoKc3RydWN0IG1zZ2hk
ciB7CiAgICAgICAgdm9pZCAqIG1zZ19uYW1lOwogICAgICAgIGludCBtc2dfbmFtZWxlbjsKICAg
ICAgICBzdHJ1Y3QgaW92ZWMgKiBtc2dfaW92OwogICAgICAgIF9fa2VybmVsX3NpemVfdCBtc2df
aW92bGVuOwogICAgICAgIHZvaWQgKiBtc2dfY29udHJvbDsKICAgICAgICBfX2tlcm5lbF9zaXpl
X3QgbXNnX2NvbnRyb2xsZW47CiAgICAgICAgdW5zaWduZWQgbXNnX2ZsYWdzOwp9OwoKCgoKCgoK
c3RydWN0IGNtc2doZHIgewogICAgICAgIF9fa2VybmVsX3NpemVfdCBjbXNnX2xlbjsKICAgICAg
ICBpbnQgY21zZ19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBlOwp9OwojIDEwMiAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3QgY21z
Z2hkciAqIF9fY21zZ19ueHRoZHIodm9pZCAqX19jdGwsIF9fa2VybmVsX3NpemVfdCBfX3NpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNt
c2doZHIgKl9fY21zZykKewogICAgICAgIHN0cnVjdCBjbXNnaGRyICogX19wdHI7CgogICAgICAg
IF9fcHRyID0gKHN0cnVjdCBjbXNnaGRyKikoKCh1bnNpZ25lZCBjaGFyICopIF9fY21zZykgKyAo
ICgoX19jbXNnLT5jbXNnX2xlbikrc2l6ZW9mKGxvbmcpLTEpICYgfihzaXplb2YobG9uZyktMSkg
KSk7CiAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSgoY2hhciopKF9fcHRyKzEpIC0gKGNoYXIg
KikgX19jdGwpID4gX19zaXplKQogICAgICAgICAgICAgICAgcmV0dXJuIChzdHJ1Y3QgY21zZ2hk
ciAqKTA7CgogICAgICAgIHJldHVybiBfX3B0cjsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgY21z
Z2hkciAqIGNtc2dfbnh0aGRyIChzdHJ1Y3QgbXNnaGRyICpfX21zZywgc3RydWN0IGNtc2doZHIg
Kl9fY21zZykKewogICAgICAgIHJldHVybiBfX2Ntc2dfbnh0aGRyKF9fbXNnLT5tc2dfY29udHJv
bCwgX19tc2ctPm1zZ19jb250cm9sbGVuLCBfX2Ntc2cpOwp9CgoKCgoKCgpzdHJ1Y3QgdWNyZWQg
ewogICAgICAgIF9fdTMyIHBpZDsKICAgICAgICBfX3UzMiB1aWQ7CiAgICAgICAgX191MzIgZ2lk
Owp9OwojIDI0NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIKZXh0ZXJu
IGludCBtZW1jcHlfZnJvbWlvdmVjKHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBzdHJ1Y3QgaW92ZWMg
KmlvdiwgaW50IGxlbik7CmV4dGVybiBpbnQgbWVtY3B5X2Zyb21pb3ZlY2VuZCh1bnNpZ25lZCBj
aGFyICprZGF0YSwgc3RydWN0IGlvdmVjICppb3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG9mZnNldCwgaW50IGxlbik7CmV4dGVybiBpbnQgY3N1bV9wYXJ0aWFsX2NvcHlf
ZnJvbWlvdmVjZW5kKHVuc2lnbmVkIGNoYXIgKmtkYXRhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbiwgaW50ICpjc3VtcCk7CgpleHRl
cm4gaW50IHZlcmlmeV9pb3ZlYyhzdHJ1Y3QgbXNnaGRyICptLCBzdHJ1Y3QgaW92ZWMgKmlvdiwg
Y2hhciAqYWRkcmVzcywgaW50IG1vZGUpOwpleHRlcm4gaW50IG1lbWNweV90b2lvdmVjKHN0cnVj
dCBpb3ZlYyAqdiwgdW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBsZW4pOwpleHRlcm4gdm9pZCBt
ZW1jcHlfdG9rZXJuZWxpb3ZlYyhzdHJ1Y3QgaW92ZWMgKmlvdiwgdW5zaWduZWQgY2hhciAqa2Rh
dGEsIGludCBsZW4pOwpleHRlcm4gaW50IG1vdmVfYWRkcl90b191c2VyKHZvaWQgKmthZGRyLCBp
bnQga2xlbiwgdm9pZCAqdWFkZHIsIGludCAqdWxlbik7CmV4dGVybiBpbnQgbW92ZV9hZGRyX3Rv
X2tlcm5lbCh2b2lkICp1YWRkciwgaW50IHVsZW4sIHZvaWQgKmthZGRyKTsKZXh0ZXJuIGludCBw
dXRfY21zZyhzdHJ1Y3QgbXNnaGRyKiwgaW50IGxldmVsLCBpbnQgdHlwZSwgaW50IGxlbiwgdm9p
ZCAqZGF0YSk7CiMgMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0LmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMQojIDI0ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L25ldC5oIiAyCgpzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3Q7CiMg
NDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0LmgiCnR5cGVkZWYgZW51bSB7CiAg
U1NfRlJFRSA9IDAsCiAgU1NfVU5DT05ORUNURUQsCiAgU1NfQ09OTkVDVElORywKICBTU19DT05O
RUNURUQsCiAgU1NfRElTQ09OTkVDVElORwp9IHNvY2tldF9zdGF0ZTsKIyA2NSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9uZXQuaCIKc3RydWN0IHNvY2tldAp7CiAgICAgICAgc29ja2V0
X3N0YXRlIHN0YXRlOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHN0cnVj
dCBwcm90b19vcHMgKm9wczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwogICAgICAgIHN0
cnVjdCBmYXN5bmNfc3RydWN0ICpmYXN5bmNfbGlzdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmls
ZTsKICAgICAgICBzdHJ1Y3Qgc29jayAqc2s7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2Fp
dDsKCiAgICAgICAgc2hvcnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhc3NjcmVkOwp9
OwoKCgpzdHJ1Y3Qgc2NtX2Nvb2tpZTsKc3RydWN0IHZtX2FyZWFfc3RydWN0OwpzdHJ1Y3QgcGFn
ZTsKCnN0cnVjdCBwcm90b19vcHMgewogIGludCBmYW1pbHk7CgogIGludCAoKnJlbGVhc2UpIChz
dHJ1Y3Qgc29ja2V0ICpzb2NrKTsKICBpbnQgKCpiaW5kKSAoc3RydWN0IHNvY2tldCAqc29jaywg
c3RydWN0IHNvY2thZGRyICp1bXlhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNv
Y2thZGRyX2xlbik7CiAgaW50ICgqY29ubmVjdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVj
dCBzb2NrYWRkciAqdXNlcnZhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2th
ZGRyX2xlbiwgaW50IGZsYWdzKTsKICBpbnQgKCpzb2NrZXRwYWlyKSAoc3RydWN0IHNvY2tldCAq
c29jazEsIHN0cnVjdCBzb2NrZXQgKnNvY2syKTsKICBpbnQgKCphY2NlcHQpIChzdHJ1Y3Qgc29j
a2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLAogICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGZsYWdzKTsKICBpbnQgKCpnZXRuYW1lKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3Ry
dWN0IHNvY2thZGRyICp1YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdXNvY2th
ZGRyX2xlbiwgaW50IHBlZXIpOwogIHVuc2lnbmVkIGludCAoKnBvbGwpIChzdHJ1Y3QgZmlsZSAq
ZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICp3YWl0
KTsKICBpbnQgKCppb2N0bCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFyZyk7CiAgaW50ICgqbGlz
dGVuKSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxlbik7CiAgaW50ICgqc2h1dGRvd24pIChz
dHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZmxhZ3MpOwogIGludCAoKnNldHNvY2tvcHQpIChzdHJ1
Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgb3B0bGVuKTsKICBpbnQgKCpnZXRzb2Nrb3B0KSAo
c3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKm9wdHZhbCwgaW50ICpvcHRsZW4pOwogIGludCAoKnNlbmRtc2cp
IChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxfbGVuLCBz
dHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQgKCpyZWN2bXNnKSAoc3RydWN0IHNvY2tldCAq
c29jaywgc3RydWN0IG1zZ2hkciAqbSwgaW50IHRvdGFsX2xlbiwgaW50IGZsYWdzLCBzdHJ1Y3Qg
c2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQgKCptbWFwKSAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVj
dCBzb2NrZXQgKnNvY2ssIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSk7CiAgc3NpemVfdCAo
KnNlbmRwYWdlKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBv
ZmZzZXQsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpOwp9OwoKc3RydWN0IG5ldF9wcm90b19mYW1p
bHkKewogICAgICAgIGludCBmYW1pbHk7CiAgICAgICAgaW50ICgqY3JlYXRlKShzdHJ1Y3Qgc29j
a2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wpOwoKCiAgICAgICAgc2hvcnQgYXV0aGVudGljYXRpb247
CiAgICAgICAgc2hvcnQgZW5jcnlwdGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0X25ldDsKfTsK
CnN0cnVjdCBuZXRfcHJvdG8KewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdm9p
ZCAoKmluaXRfZnVuYykoc3RydWN0IG5ldF9wcm90byAqKTsKfTsKCmV4dGVybiBpbnQgc29ja193
YWtlX2FzeW5jKHN0cnVjdCBzb2NrZXQgKnNrLCBpbnQgaG93LCBpbnQgYmFuZCk7CmV4dGVybiBp
bnQgc29ja19yZWdpc3RlcihzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseSAqZmFtKTsKZXh0ZXJuIGlu
dCBzb2NrX3VucmVnaXN0ZXIoaW50IGZhbWlseSk7CmV4dGVybiBzdHJ1Y3Qgc29ja2V0ICpzb2Nr
X2FsbG9jKHZvaWQpOwpleHRlcm4gaW50IHNvY2tfY3JlYXRlKGludCBmYW1pbHksIGludCB0eXBl
LCBpbnQgcHJvdG8sIHN0cnVjdCBzb2NrZXQgKiopOwpleHRlcm4gdm9pZCBzb2NrX3JlbGVhc2Uo
c3RydWN0IHNvY2tldCAqKTsKZXh0ZXJuIGludCBzb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAq
LCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgbGVuKTsKZXh0ZXJuIGludCBzb2NrX3JlY3Ztc2coc3Ry
dWN0IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgbGVuLCBpbnQgZmxhZ3MpOwpleHRl
cm4gaW50IHNvY2tfcmVhZHZfd3JpdGV2KGludCB0eXBlLCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwg
c3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RydWN0IGlvdmVjICogaW92LCBsb25nIGNvdW50LCBsb25nIHNpemUpOwoKZXh0ZXJuIGlu
dCBuZXRfcmF0ZWxpbWl0KHZvaWQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBuZXRfcmFuZG9tKHZv
aWQpOwpleHRlcm4gdm9pZCBuZXRfc3JhbmRvbSh1bnNpZ25lZCBsb25nKTsKIyAxNiAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9rZGV2X3QuaCIgMQojIDY3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tk
ZXZfdC5oIgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGtkZXZfdDsKIyA3NiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIKZXh0ZXJuIGNvbnN0IGNoYXIgKiBrZGV2bmFtZShr
ZGV2X3QpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBrZGV2X3RfdG9fbnIoa2Rl
dl90IGRldikgewogICAgICAgIHJldHVybiAoKCh1bnNpZ25lZCBpbnQpICgoZGV2KSA+PiA4KSk8
PDgpIHwgKCh1bnNpZ25lZCBpbnQpICgoZGV2KSAmICgoMVUgPDwgOCkgLSAxKSkpOwp9CgpzdGF0
aWMgaW5saW5lIGtkZXZfdCB0b19rZGV2X3QoaW50IGRldikKewogICAgICAgIGludCBtYWpvciwg
bWlub3I7CiMgOTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2Rldl90LmgiCiAgICAg
ICAgbWFqb3IgPSAoZGV2ID4+IDgpOwogICAgICAgIG1pbm9yID0gKGRldiAmIDB4ZmYpOwoKICAg
ICAgICByZXR1cm4gKCgobWFqb3IpIDw8IDgpIHwgKG1pbm9yKSk7Cn0KIyAxNyAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9pb2N0bC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaW9jdGwu
aCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW9jdGwuaCIgMgojIDE4ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAxCgoK
CgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMgojIDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9hdG9taWMuaCIKdHlwZWRlZiBzdHJ1Y3QgeyB2b2xhdGlsZSBpbnQgY291bnRlcjsgfSBhdG9t
aWNfdDsKIyA1MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBf
X2lubGluZV9fIHZvaWQgYXRvbWljX2FkZChpbnQgaSwgYXRvbWljX3QgKnYpCnsKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJhZGRsICUxLCUwIgogICAg
ICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSks
ICJtIiAodi0+Y291bnRlcikpOwp9CiMgNjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0
b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19zdWIoaW50IGksIGF0b21pY190
ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAi
c3VibCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQogICAgICAgICAg
ICAgICAgOiJpciIgKGkpLCAibSIgKHYtPmNvdW50ZXIpKTsKfQojIDg3ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY19zdWJf
YW5kX3Rlc3QoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoK
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJzdWJsICUy
LCUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFtIiAo
YykKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnki
KTsKICAgICAgICByZXR1cm4gYzsKfQojIDEwNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
YXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2luYyhhdG9taWNfdCAqdikK
ewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgImluY2wg
JTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoi
bSIgKHYtPmNvdW50ZXIpKTsKfQojIDEyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRv
bWljLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2RlYyhhdG9taWNfdCAqdikKewog
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgImRlY2wgJTAi
CiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoibSIg
KHYtPmNvdW50ZXIpKTsKfQojIDEzNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWlj
LmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfZGVjX2FuZF90ZXN0KGF0b21pY190ICp2
KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XygKICAgICAgICAgICAgICAgICIiICJkZWNsICUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAg
OiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNv
dW50ZXIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBjICE9IDA7Cn0KIyAxNTcgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRv
bWljX2luY19hbmRfdGVzdChhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsK
CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiaW5jbCAl
MDsgc2V0ZSAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMp
CiAgICAgICAgICAgICAgICA6Im0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICBy
ZXR1cm4gYyAhPSAwOwp9CiMgMTc4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMu
aCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21p
Y190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJhZGRsICUyLCUwOyBzZXRzICUxIgogICAgICAg
ICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAgICAgICAgIDoi
aXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYzsK
fQojIDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vdW50LmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9tb3VudC5oIgpzdHJ1Y3QgdmZzbW91bnQKewogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgbW50X2hhc2g7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICptbnRfcGFyZW50Owog
ICAgICAgIHN0cnVjdCBkZW50cnkgKm1udF9tb3VudHBvaW50OwogICAgICAgIHN0cnVjdCBkZW50
cnkgKm1udF9yb290OwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqbW50X3NiOwogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgbW50X21vdW50czsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1u
dF9jaGlsZDsKICAgICAgICBhdG9taWNfdCBtbnRfY291bnQ7CiAgICAgICAgaW50IG1udF9mbGFn
czsKICAgICAgICBjaGFyICptbnRfZGV2bmFtZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1u
dF9saXN0Owp9OwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgdmZzbW91bnQgKm1udGdldChzdHJ1Y3Qg
dmZzbW91bnQgKm1udCkKewogICAgICAgIGlmIChtbnQpCiAgICAgICAgICAgICAgICBhdG9taWNf
aW5jKCZtbnQtPm1udF9jb3VudCk7CiAgICAgICAgcmV0dXJuIG1udDsKfQoKZXh0ZXJuIHZvaWQg
X19tbnRwdXQoc3RydWN0IHZmc21vdW50ICptbnQpOwoKc3RhdGljIGlubGluZSB2b2lkIG1udHB1
dChzdHJ1Y3QgdmZzbW91bnQgKm1udCkKewogICAgICAgIGlmIChtbnQpIHsKICAgICAgICAgICAg
ICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZtbnQtPm1udF9jb3VudCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fbW50cHV0KG1udCk7CiAgICAgICAgfQp9CiMgOCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMgojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2RjYWNoZS5oIgpzdHJ1Y3QgcXN0ciB7CiAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh
ciAqIG5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsKICAgICAgICB1bnNpZ25lZCBpbnQg
aGFzaDsKfTsKCnN0cnVjdCBkZW50cnlfc3RhdF90IHsKICAgICAgICBpbnQgbnJfZGVudHJ5Owog
ICAgICAgIGludCBucl91bnVzZWQ7CiAgICAgICAgaW50IGFnZV9saW1pdDsKICAgICAgICBpbnQg
d2FudF9wYWdlczsKICAgICAgICBpbnQgZHVtbXlbMl07Cn07CmV4dGVybiBzdHJ1Y3QgZGVudHJ5
X3N0YXRfdCBkZW50cnlfc3RhdDsKCgoKCgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9u
ZyBwYXJ0aWFsX25hbWVfaGFzaCh1bnNpZ25lZCBsb25nIGMsIHVuc2lnbmVkIGxvbmcgcHJldmhh
c2gpCnsKICAgICAgICByZXR1cm4gKHByZXZoYXNoICsgKGMgPDwgNCkgKyAoYyA+PiA0KSkgKiAx
MTsKfQoKCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgZW5kX25hbWVfaGFzaCh1bnNp
Z25lZCBsb25nIGhhc2gpCnsKICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGludCkgaGFzaDsKfQoK
CnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBmdWxsX25hbWVfaGFzaChjb25zdCB1bnNp
Z25lZCBjaGFyICogbmFtZSwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIHVuc2lnbmVkIGxv
bmcgaGFzaCA9IDA7CiAgICAgICAgd2hpbGUgKGxlbi0tKQogICAgICAgICAgICAgICAgaGFzaCA9
IHBhcnRpYWxfbmFtZV9oYXNoKCpuYW1lKyssIGhhc2gpOwogICAgICAgIHJldHVybiBlbmRfbmFt
ZV9oYXNoKGhhc2gpOwp9CgoKCnN0cnVjdCBkZW50cnkgewogICAgICAgIGF0b21pY190IGRfY291
bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGRfZmxhZ3M7CiAgICAgICAgc3RydWN0IGlub2RlICog
ZF9pbm9kZTsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogZF9wYXJlbnQ7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBkX2hhc2g7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX2xydTsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGRfY2hpbGQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX3N1
YmRpcnM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX2FsaWFzOwogICAgICAgIGludCBkX21v
dW50ZWQ7CiAgICAgICAgc3RydWN0IHFzdHIgZF9uYW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZF90aW1lOwogICAgICAgIHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyAqZF9vcDsKICAgICAgICBz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKiBkX3NiOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZF92ZnNfZmxh
Z3M7CiAgICAgICAgdm9pZCAqIGRfZnNkYXRhOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF9pbmFt
ZVsxNl07Cn07CgpzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmRfcmV2
YWxpZGF0ZSkoc3RydWN0IGRlbnRyeSAqLCBpbnQpOwogICAgICAgIGludCAoKmRfaGFzaCkgKHN0
cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CiAgICAgICAgaW50ICgqZF9jb21wYXJlKSAo
c3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqLCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAgICBp
bnQgKCpkX2RlbGV0ZSkoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICB2b2lkICgqZF9yZWxlYXNl
KShzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpkX2lwdXQpKHN0cnVjdCBkZW50cnkg
Kiwgc3RydWN0IGlub2RlICopOwp9OwojIDEyNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9kY2FjaGUuaCIKZXh0ZXJuIHNwaW5sb2NrX3QgZGNhY2hlX2xvY2s7CiMgMTQ2ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGRf
ZHJvcChzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5KQp7CiAgICAgICAgKHZvaWQpKCZkY2FjaGVfbG9j
ayk7CiAgICAgICAgbGlzdF9kZWwoJmRlbnRyeS0+ZF9oYXNoKTsKICAgICAgICBkbyB7ICgmZGVu
dHJ5LT5kX2hhc2gpLT5uZXh0ID0gKCZkZW50cnktPmRfaGFzaCk7ICgmZGVudHJ5LT5kX2hhc2gp
LT5wcmV2ID0gKCZkZW50cnktPmRfaGFzaCk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIHsgfSB3
aGlsZSgwKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IGRuYW1lX2V4dGVybmFsKHN0cnVjdCBk
ZW50cnkgKmQpCnsKICAgICAgICByZXR1cm4gZC0+ZF9uYW1lLm5hbWUgIT0gZC0+ZF9pbmFtZTsK
fQoKCgoKZXh0ZXJuIHZvaWQgZF9pbnN0YW50aWF0ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBp
bm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9kZWxldGUoc3RydWN0IGRlbnRyeSAqKTsKCgpleHRlcm4g
c3RydWN0IGRlbnRyeSAqIGRfYWxsb2Moc3RydWN0IGRlbnRyeSAqLCBjb25zdCBzdHJ1Y3QgcXN0
ciAqKTsKZXh0ZXJuIHZvaWQgc2hyaW5rX2RjYWNoZV9zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7
CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfcGFyZW50KHN0cnVjdCBkZW50cnkgKik7CmV4dGVy
biBpbnQgZF9pbnZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKik7CgoKc3RydWN0IHpvbmVfc3RydWN0
OwoKZXh0ZXJuIGludCBzaHJpbmtfZGNhY2hlX21lbW9yeShpbnQsIHVuc2lnbmVkIGludCk7CmV4
dGVybiB2b2lkIHBydW5lX2RjYWNoZShpbnQpOwoKCmV4dGVybiBpbnQgc2hyaW5rX2ljYWNoZV9t
ZW1vcnkoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBwcnVuZV9pY2FjaGUoaW50KTsKCgpleHRlcm4g
aW50IHNocmlua19kcWNhY2hlX21lbW9yeShpbnQsIHVuc2lnbmVkIGludCk7CgoKZXh0ZXJuIHN0
cnVjdCBkZW50cnkgKiBkX2FsbG9jX3Jvb3Qoc3RydWN0IGlub2RlICopOwoKCmV4dGVybiB2b2lk
IGRfZ2Vub2NpZGUoc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpkX2Zp
bmRfYWxpYXMoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBkX3BydW5lX2FsaWFzZXMoc3Ry
dWN0IGlub2RlICopOwoKCmV4dGVybiBpbnQgaGF2ZV9zdWJtb3VudHMoc3RydWN0IGRlbnRyeSAq
KTsKCgoKCmV4dGVybiB2b2lkIGRfcmVoYXNoKHN0cnVjdCBkZW50cnkgKik7CiMgMjEwICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lk
IGRfYWRkKHN0cnVjdCBkZW50cnkgKiBlbnRyeSwgc3RydWN0IGlub2RlICogaW5vZGUpCnsKICAg
ICAgICBkX2luc3RhbnRpYXRlKGVudHJ5LCBpbm9kZSk7CiAgICAgICAgZF9yZWhhc2goZW50cnkp
Owp9CgoKZXh0ZXJuIHZvaWQgZF9tb3ZlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAq
KTsKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfbG9va3VwKHN0cnVjdCBkZW50cnkgKiwgc3Ry
dWN0IHFzdHIgKik7CgoKZXh0ZXJuIGludCBkX3ZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKiwgc3Ry
dWN0IGRlbnRyeSAqKTsKCmV4dGVybiBjaGFyICogX19kX3BhdGgoc3RydWN0IGRlbnRyeSAqLCBz
dHJ1Y3QgdmZzbW91bnQgKiwgc3RydWN0IGRlbnRyeSAqLAogICAgICAgIHN0cnVjdCB2ZnNtb3Vu
dCAqLCBjaGFyICosIGludCk7CiMgMjQzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Rj
YWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3QgZGVudHJ5ICogZGdldChzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnkpCnsKICAgICAgICBpZiAoZGVudHJ5KSB7CiAgICAgICAgICAgICAgICBpZiAo
ISgoJmRlbnRyeS0+ZF9jb3VudCktPmNvdW50ZXIpKQogICAgICAgICAgICAgICAgICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAgICAgICAgICAgICAgICBh
dG9taWNfaW5jKCZkZW50cnktPmRfY291bnQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGVu
dHJ5Owp9CgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRnZXRfbG9ja2VkKHN0cnVjdCBkZW50cnkg
Kik7CiMgMjYyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMg
X19pbmxpbmVfXyBpbnQgZF91bmhhc2hlZChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAg
ICByZXR1cm4gbGlzdF9lbXB0eSgmZGVudHJ5LT5kX2hhc2gpOwp9CgpleHRlcm4gdm9pZCBkcHV0
KHN0cnVjdCBkZW50cnkgKik7CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF9tb3VudHBvaW50KHN0
cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBkZW50cnktPmRfbW91bnRlZDsK
fQoKZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqbG9va3VwX21udChzdHJ1Y3QgdmZzbW91bnQgKiwg
c3RydWN0IGRlbnRyeSAqKTsKIyAyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdGF0LmgiIDEKCgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N0YXQuaCIgMQoKCgpzdHJ1Y3QgX19vbGRfa2Vy
bmVsX3N0YXQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2RldjsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBzdF9pbm87CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBzdF9ubGluazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF91aWQ7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3Jk
ZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
c3RfYXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHN0X2N0aW1lOwp9OwoKc3RydWN0IHN0YXQgewogICAgICAgIHVuc2lnbmVkIHNob3J0
IHN0X2RldjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDE7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzdF9pbm87CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBzdF9ubGluazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF91aWQ7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgc3RfZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3JkZXY7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19wYWQyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzdF9ibG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9hdGltZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIF9fdW51c2VkMTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210aW1lOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf
Y3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDM7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBfX3VudXNlZDQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDU7Cn07CgoKCgpz
dHJ1Y3Qgc3RhdDY0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAgICAgdW5z
aWduZWQgY2hhciBfX3BhZDBbMTBdOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3N0X2lubzsK
CiAgICAgICAgdW5zaWduZWQgaW50IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgaW50IHN0X25s
aW5rOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3VpZDsKICAgICAgICB1bnNpZ25lZCBsb25n
IHN0X2dpZDsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfcmRldjsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIF9fcGFkM1sxMF07CgogICAgICAgIGxvbmcgbG9uZyBzdF9zaXplOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc3RfYmxrc2l6ZTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibG9ja3M7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3BhZDQ7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf
YXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3BhZDU7CgogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RfbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3BhZDY7CgogICAgICAgIHVuc2ln
bmVkIGxvbmcgc3RfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3BhZDc7CgogICAgICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBzdF9pbm87Cn07CiMgNyAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9zdGF0LmgiIDIKIyAyMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCiMgMjIgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyAyMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQoK
CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA5ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3N0cmluZy5oIiAyCgoKCgoKZXh0ZXJuIGNoYXIgKiBfX19zdHJ0b2s7CmV4dGVybiBj
aGFyICogc3RycGJyayhjb25zdCBjaGFyICosY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKiBz
dHJ0b2soY2hhciAqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICogc3Ryc2VwKGNoYXIgKios
Y29uc3QgY2hhciAqKTsKZXh0ZXJuIF9fa2VybmVsX3NpemVfdCBzdHJzcG4oY29uc3QgY2hhciAq
LGNvbnN0IGNoYXIgKik7CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdHJp
bmcuaCIgMQoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx
CiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3RyaW5nLmgiIDIKIyAzMyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNw
eShjaGFyICogZGVzdCxjb25zdCBjaGFyICpzcmMpCnsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18g
X192b2xhdGlsZV9fKAogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJzdG9zYlxuXHQi
CiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYiIKICAgICAgICA6
ICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmEiIChkMikKICAgICAgICA6IjAiIChzcmMpLCIx
IiAoZGVzdCkgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBjaGFy
ICogc3RybmNweShjaGFyICogZGVzdCxjb25zdCBjaGFyICpzcmMsc2l6ZV90IGNvdW50KQp7Cmlu
dCBkMCwgZDEsIGQyLCBkMzsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRkZWNs
ICUyXG5cdCIKICAgICAgICAianMgMmZcblx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAg
InN0b3NiXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFi
XG5cdCIKICAgICAgICAicmVwXG5cdCIKICAgICAgICAic3Rvc2JcbiIKICAgICAgICAiMjoiCiAg
ICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZjIiAoZDIpLCAiPSZhIiAoZDMpCiAg
ICAgICAgOiIwIiAoc3JjKSwiMSIgKGRlc3QpLCIyIiAoY291bnQpIDogIm1lbW9yeSIpOwpyZXR1
cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNhdChjaGFyICogZGVzdCxjb25z
dCBjaGFyICogc3JjKQp7CmludCBkMCwgZDEsIGQyLCBkMzsKX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgInJlcG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJkZWNsICUx
XG4iCiAgICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAi
dGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiIgogICAgICAgIDogIj0mUyIgKGQw
KSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKSwgIj0mYyIgKGQzKQogICAgICAgIDogIjAiIChzcmMp
LCAiMSIgKGRlc3QpLCAiMiIgKDApLCAiMyIgKDB4ZmZmZmZmZmYpOiJtZW1vcnkiKTsKcmV0dXJu
IGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJuY2F0KGNoYXIgKiBkZXN0LGNvbnN0
IGNoYXIgKiBzcmMsc2l6ZV90IGNvdW50KQp7CmludCBkMCwgZDEsIGQyLCBkMzsKX19hc21fXyBf
X3ZvbGF0aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAg
ICAgICJkZWNsICUxXG5cdCIKICAgICAgICAibW92bCAlOCwlM1xuIgogICAgICAgICIxOlx0ZGVj
bCAlM1xuXHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAibG9kc2Jcblx0IgogICAgICAg
ICJzdG9zYlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAx
YlxuIgogICAgICAgICIyOlx0eG9ybCAlMiwlMlxuXHQiCiAgICAgICAgInN0b3NiIgogICAgICAg
IDogIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKSwgIj0mYyIgKGQzKQogICAgICAg
IDogIjAiIChzcmMpLCIxIiAoZGVzdCksIjIiICgwKSwiMyIgKDB4ZmZmZmZmZmYpLCAiZyIgKGNv
dW50KQogICAgICAgIDogIm1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxpbmUg
aW50IHN0cmNtcChjb25zdCBjaGFyICogY3MsY29uc3QgY2hhciAqIGN0KQp7CmludCBkMCwgZDE7
CnJlZ2lzdGVyIGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRs
b2RzYlxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIKICAgICAgICAiam5lIDJmXG5cdCIKICAgICAg
ICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIKICAgICAgICAieG9y
bCAlJWVheCwlJWVheFxuXHQiCiAgICAgICAgImptcCAzZlxuIgogICAgICAgICIyOlx0c2JibCAl
JWVheCwlJWVheFxuXHQiCiAgICAgICAgIm9yYiAkMSwlJWFsXG4iCiAgICAgICAgIjM6IgogICAg
ICAgIDoiPWEiIChfX3JlcyksICI9JlMiIChkMCksICI9JkQiIChkMSkKICAgICAgICAgICAgICAg
ICAgICAgOiIxIiAoY3MpLCIyIiAoY3QpKTsKcmV0dXJuIF9fcmVzOwp9CgoKc3RhdGljIGlubGlu
ZSBpbnQgc3RybmNtcChjb25zdCBjaGFyICogY3MsY29uc3QgY2hhciAqIGN0LHNpemVfdCBjb3Vu
dCkKewpyZWdpc3RlciBpbnQgX19yZXM7CmludCBkMCwgZDEsIGQyOwpfX2FzbV9fIF9fdm9sYXRp
bGVfXygKICAgICAgICAiMTpcdGRlY2wgJTNcblx0IgogICAgICAgICJqcyAyZlxuXHQiCiAgICAg
ICAgImxvZHNiXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJqbmUgM2Zcblx0Igog
ICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcbiIKICAgICAgICAi
MjpcdHhvcmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJqbXAgNGZcbiIKICAgICAgICAiMzpc
dHNiYmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJvcmIgJDEsJSVhbFxuIgogICAgICAgICI0
OiIKICAgICAgICAgICAgICAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSwgIj0mRCIg
KGQxKSwgIj0mYyIgKGQyKQogICAgICAgICAgICAgICAgICAgICA6IjEiIChjcyksIjIiIChjdCks
IjMiIChjb3VudCkpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJj
aHIoY29uc3QgY2hhciAqIHMsIGludCBjKQp7CmludCBkMDsKcmVnaXN0ZXIgY2hhciAqIF9fcmVz
OwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAibW92YiAlJWFsLCUlYWhcbiIKICAgICAg
ICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAiY21wYiAlJWFoLCUlYWxcblx0IgogICAgICAgICJq
ZSAyZlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxu
XHQiCiAgICAgICAgIm1vdmwgJDEsJTFcbiIKICAgICAgICAiMjpcdG1vdmwgJTEsJTBcblx0Igog
ICAgICAgICJkZWNsICUwIgogICAgICAgIDoiPWEiIChfX3JlcyksICI9JlMiIChkMCkgOiAiMSIg
KHMpLCIwIiAoYykpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJy
Y2hyKGNvbnN0IGNoYXIgKiBzLCBpbnQgYykKewppbnQgZDAsIGQxOwpyZWdpc3RlciBjaGFyICog
X19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJtb3ZiICUlYWwsJSVhaFxuIgog
ICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJjbXBiICUlYWgsJSVhbFxuXHQiCiAgICAg
ICAgImpuZSAyZlxuXHQiCiAgICAgICAgImxlYWwgLTEoJSVlc2kpLCUwXG4iCiAgICAgICAgIjI6
XHR0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWIiCiAgICAgICAgOiI9ZyIgKF9f
cmVzKSwgIj0mUyIgKGQwKSwgIj0mYSIgKGQxKSA6IjAiICgwKSwiMSIgKHMpLCIyIiAoYykpOwpy
ZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAq
IHMpCnsKaW50IGQwOwpyZWdpc3RlciBpbnQgX19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAog
ICAgICAgICJyZXBuZVxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIKICAgICAgICAibm90bCAlMFxu
XHQiCiAgICAgICAgImRlY2wgJTAiCiAgICAgICAgOiI9YyIgKF9fcmVzKSwgIj0mRCIgKGQwKSA6
IjEiIChzKSwiYSIgKDApLCAiMCIgKDB4ZmZmZmZmZmYpKTsKcmV0dXJuIF9fcmVzOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgKiBfX21lbWNweSh2b2lkICogdG8sIGNvbnN0IHZvaWQgKiBmcm9tLCBz
aXplX3QgbikKewppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
InJlcCA7IG1vdnNsXG5cdCIKICAgICAgICAidGVzdGIgJDIsJWI0XG5cdCIKICAgICAgICAiamUg
MWZcblx0IgogICAgICAgICJtb3Zzd1xuIgogICAgICAgICIxOlx0dGVzdGIgJDEsJWI0XG5cdCIK
ICAgICAgICAiamUgMmZcblx0IgogICAgICAgICJtb3ZzYlxuIgogICAgICAgICIyOiIKICAgICAg
ICA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikKICAgICAgICA6IjAiIChuLzQp
LCAicSIgKG4pLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25nKSBmcm9tKQogICAgICAgIDogIm1l
bW9yeSIpOwpyZXR1cm4gKHRvKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fY29uc3Rh
bnRfbWVtY3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBuKQp7CiAgICAg
ICAgc3dpdGNoIChuKSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAg
ICAgICAgICAgKih1bnNpZ25lZCBjaGFyICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilm
cm9tOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBj
YXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKil0byA9ICoo
Y29uc3QgdW5zaWduZWQgc2hvcnQgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICoo
dW5zaWduZWQgc2hvcnQgKil0byA9ICooY29uc3QgdW5zaWduZWQgc2hvcnQgKilmcm9tOwogICAg
ICAgICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGNoYXIgKil0bykgPSAqKDIrKGNvbnN0
IHVuc2lnbmVkIGNoYXIgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRv
OwogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2ln
bmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAg
ICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxv
bmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIHNob3J0ICop
dG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb20pOwogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAg
ICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICop
ZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0g
KigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICAgICAg
ICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsK
ICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhj
b25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMiso
dW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDE2
OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3Qg
dW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMSsodW5zaWdu
ZWQgbG9uZyAqKXRvKSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAg
ICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDIrKGNvbnN0IHVu
c2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigzKyh1bnNpZ25l
ZCBsb25nICopdG8pID0gKigzKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjA6CiAgICAg
ICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25l
ZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25n
ICopdG8pID0gKigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICooMisodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQg
bG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDMrKHVuc2lnbmVkIGxvbmcg
Kil0bykgPSAqKDMrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgKig0Kyh1bnNpZ25lZCBsb25nICopdG8pID0gKig0Kyhjb25zdCB1bnNpZ25lZCBs
b25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICB9
CgoKCgoKCgp7CiAgICAgICAgaW50IGQwLCBkMSwgZDI7CiAgICAgICAgc3dpdGNoIChuICUgNCkg
ewogICAgICAgICAgICAgICAgY2FzZSAwOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1v
dnNsIiAiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikgOiAiMCIgKG4vNCks
IjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJuIHRv
OwogICAgICAgICAgICAgICAgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1v
dnNsIiAiXG5cdG1vdnNiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikgOiAi
MCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIpOzsg
cmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXygg
InJlcCA7IG1vdnNsIiAiXG5cdG1vdnN3IiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMi
IChkMikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1l
bW9yeSIpOzsgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgZGVmYXVsdDogX19hc21fXyBfX3Zv
bGF0aWxlX18oICJyZXAgOyBtb3ZzbCIgIlxuXHRtb3Zzd1xuXHRtb3ZzYiIgOiAiPSZjIiAoZDAp
LCAiPSZEIiAoZDEpLCAiPSZTIiAoZDIpIDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwiMiIg
KChsb25nKSBmcm9tKSA6ICJtZW1vcnkiKTs7IHJldHVybiB0bzsKICAgICAgICB9Cn0KCgp9CiMg
MzM1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKZXh0ZXJuIHZvaWQgX19z
dHJ1Y3RfY3B5X2J1ZyAodm9pZCk7CiMgMzQ1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9z
dHJpbmcuaCIKc3RhdGljIGlubGluZSB2b2lkICogbWVtbW92ZSh2b2lkICogZGVzdCxjb25zdCB2
b2lkICogc3JjLCBzaXplX3QgbikKewppbnQgZDAsIGQxLCBkMjsKaWYgKGRlc3Q8c3JjKQpfX2Fz
bV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwXG5cdCIKICAgICAgICAibW92c2IiCiAgICAg
ICAgOiAiPSZjIiAoZDApLCAiPSZTIiAoZDEpLCAiPSZEIiAoZDIpCiAgICAgICAgOiIwIiAobiks
IjEiIChzcmMpLCIyIiAoZGVzdCkKICAgICAgICA6ICJtZW1vcnkiKTsKZWxzZQpfX2FzbV9fIF9f
dm9sYXRpbGVfXygKICAgICAgICAic3RkXG5cdCIKICAgICAgICAicmVwXG5cdCIKICAgICAgICAi
bW92c2Jcblx0IgogICAgICAgICJjbGQiCiAgICAgICAgOiAiPSZjIiAoZDApLCAiPSZTIiAoZDEp
LCAiPSZEIiAoZDIpCiAgICAgICAgOiIwIiAobiksCiAgICAgICAgICIxIiAobi0xKyhjb25zdCBj
aGFyICopc3JjKSwKICAgICAgICAgIjIiIChuLTErKGNoYXIgKilkZXN0KQogICAgICAgIDoibWVt
b3J5Iik7CnJldHVybiBkZXN0Owp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiBtZW1jaHIoY29u
c3Qgdm9pZCAqIGNzLGludCBjLHNpemVfdCBjb3VudCkKewppbnQgZDA7CnJlZ2lzdGVyIHZvaWQg
KiBfX3JlczsKaWYgKCFjb3VudCkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7Cl9fYXNtX18g
X192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIKICAg
ICAgICAiamUgMWZcblx0IgogICAgICAgICJtb3ZsICQxLCUwXG4iCiAgICAgICAgIjE6XHRkZWNs
ICUwIgogICAgICAgIDoiPUQiIChfX3JlcyksICI9JmMiIChkMCkgOiAiYSIgKGMpLCIwIiAoY3Mp
LCIxIiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX21l
bXNldF9nZW5lcmljKHZvaWQgKiBzLCBjaGFyIGMsc2l6ZV90IGNvdW50KQp7CmludCBkMCwgZDE7
Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBcblx0IgogICAgICAgICJzdG9zYiIK
ICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKICAgICAgICA6ImEiIChjKSwiMSIgKHMp
LCIwIiAoY291bnQpCiAgICAgICAgOiJtZW1vcnkiKTsKcmV0dXJuIHM7Cn0KIyA0MDggIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N0cmluZy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX2Nv
bnN0YW50X2NfbWVtc2V0KHZvaWQgKiBzLCB1bnNpZ25lZCBsb25nIGMsIHNpemVfdCBjb3VudCkK
ewppbnQgZDAsIGQxOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwIDsgc3Rvc2xc
blx0IgogICAgICAgICJ0ZXN0YiAkMiwlYjNcblx0IgogICAgICAgICJqZSAxZlxuXHQiCiAgICAg
ICAgInN0b3N3XG4iCiAgICAgICAgIjE6XHR0ZXN0YiAkMSwlYjNcblx0IgogICAgICAgICJqZSAy
ZlxuXHQiCiAgICAgICAgInN0b3NiXG4iCiAgICAgICAgIjI6IgogICAgICAgIDogIj0mYyIgKGQw
KSwgIj0mRCIgKGQxKQogICAgICAgIDoiYSIgKGMpLCAicSIgKGNvdW50KSwgIjAiIChjb3VudC80
KSwgIjEiICgobG9uZykgcykKICAgICAgICA6Im1lbW9yeSIpOwpyZXR1cm4gKHMpOwp9CgoKCnN0
YXRpYyBpbmxpbmUgc2l6ZV90IHN0cm5sZW4oY29uc3QgY2hhciAqIHMsIHNpemVfdCBjb3VudCkK
ewppbnQgZDA7CnJlZ2lzdGVyIGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAg
ICAgIm1vdmwgJTIsJTBcblx0IgogICAgICAgICJqbXAgMmZcbiIKICAgICAgICAiMTpcdGNtcGIg
JDAsKCUwKVxuXHQiCiAgICAgICAgImplIDNmXG5cdCIKICAgICAgICAiaW5jbCAlMFxuIgogICAg
ICAgICIyOlx0ZGVjbCAlMVxuXHQiCiAgICAgICAgImNtcGwgJC0xLCUxXG5cdCIKICAgICAgICAi
am5lIDFiXG4iCiAgICAgICAgIjM6XHRzdWJsICUyLCUwIgogICAgICAgIDoiPWEiIChfX3Jlcyks
ICI9JmQiIChkMCkKICAgICAgICA6ImMiIChzKSwiMSIgKGNvdW50KSk7CnJldHVybiBfX3JlczsK
fQoKCgoKZXh0ZXJuIGNoYXIgKnN0cnN0cihjb25zdCBjaGFyICpjcywgY29uc3QgY2hhciAqY3Qp
OwoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0
KHZvaWQgKiBzLCB1bnNpZ25lZCBsb25nIHBhdHRlcm4sIHNpemVfdCBjb3VudCkKewogICAgICAg
IHN3aXRjaCAoY291bnQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAg
ICAgICAgICAgICoodW5zaWduZWQgY2hhciAqKXMgPSBwYXR0ZXJuOwogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAg
ICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXMgPSBwYXR0ZXJuOwogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAg
ICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXMgPSBwYXR0ZXJuOwogICAgICAgICAgICAgICAg
ICAgICAgICAqKDIrKHVuc2lnbmVkIGNoYXIgKilzKSA9IHBhdHRlcm47CiAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAg
ICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKilzID0gcGF0dGVybjsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgfQoKCgoKCgoKewogICAgICAgIGludCBkMCwgZDE7
CiAgICAgICAgc3dpdGNoIChjb3VudCAlIDQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDogX19h
c21fXyBfX3ZvbGF0aWxlX18oICJyZXAgOyBzdG9zbCIgIiIgOiAiPSZjIiAoZDApLCAiPSZEIiAo
ZDEpIDogImEiIChwYXR0ZXJuKSwiMCIgKGNvdW50LzQpLCIxIiAoKGxvbmcpIHMpIDogIm1lbW9y
eSIpOyByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxl
X18oICJyZXAgOyBzdG9zbCIgIlxuXHRzdG9zYiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpIDog
ImEiIChwYXR0ZXJuKSwiMCIgKGNvdW50LzQpLCIxIiAoKGxvbmcpIHMpIDogIm1lbW9yeSIpOyBy
ZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICJy
ZXAgOyBzdG9zbCIgIlxuXHRzdG9zdyIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpIDogImEiIChw
YXR0ZXJuKSwiMCIgKGNvdW50LzQpLCIxIiAoKGxvbmcpIHMpIDogIm1lbW9yeSIpOyByZXR1cm4g
czsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsg
c3Rvc2wiICJcblx0c3Rvc3dcblx0c3Rvc2IiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJh
IiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0
dXJuIHM7CiAgICAgICAgfQp9CgoKfQojIDUxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
c3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbXNjYW4odm9pZCAqIGFkZHIsIGludCBj
LCBzaXplX3Qgc2l6ZSkKewogICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgICAgIHJldHVy
biBhZGRyOwogICAgICAgIF9fYXNtX18oInJlcG56OyBzY2FzYlxuXHQiCiAgICAgICAgICAgICAg
ICAiam56IDFmXG5cdCIKICAgICAgICAgICAgICAgICJkZWMgJSVlZGlcbiIKICAgICAgICAgICAg
ICAgICIxOiIKICAgICAgICAgICAgICAgIDogIj1EIiAoYWRkciksICI9YyIgKHNpemUpCiAgICAg
ICAgICAgICAgICA6ICIwIiAoYWRkciksICIxIiAoc2l6ZSksICJhIiAoYykpOwogICAgICAgIHJl
dHVybiBhZGRyOwp9CiMgMjYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RyaW5nLmgi
IDIKIyA0NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIKZXh0ZXJuIGlu
dCBzdHJuaWNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgX19rZXJuZWxfc2l6ZV90KTsK
IyA3NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIKZXh0ZXJuIGludCBf
X2J1aWx0aW5fbWVtY21wKGNvbnN0IHZvaWQgKixjb25zdCB2b2lkICosX19rZXJuZWxfc2l6ZV90
KTsKIyAyNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgMjYgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9w
cy5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgi
IDEKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMgojIDM2ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBz
ZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9f
dm9sYXRpbGVfXyggIiIKICAgICAgICAgICAgICAgICJidHNsICUxLCUwIgogICAgICAgICAgICAg
ICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6Ikly
IiAobnIpKTsKfQojIDUzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3Rh
dGljIF9faW5saW5lX18gdm9pZCBfX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRk
cikKewogICAgICAgIF9fYXNtX18oCiAgICAgICAgICAgICAgICAiYnRzbCAlMSwlMCIKICAgICAg
ICAgICAgICAgIDoiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAg
ICAgOiJJciIgKG5yKSk7Cn0KIyA3MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3Bz
LmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9p
ZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAgICAgICAg
ICAgICJidHJsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcg
KikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDkwICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2NoYW5n
ZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6
Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChu
cikpOwp9CiMgMTA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGlj
IF9faW5saW5lX18gdm9pZCBjaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIp
CnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAgICAgICAgICAgICJidGNs
ICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikp
CiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDEyMyAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9zZXRfYml0
KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAgICAgICAgICAgICJidHNsICUyLCUx
XG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2
b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSA6ICJtZW1v
cnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTQzICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IF9fdGVzdF9hbmRfc2V0X2Jp
dChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAg
ICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHNsICUyLCUxXG5cdHNiYmwgJTAsJTAi
CiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICop
IGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7CiAgICAgICAgcmV0dXJuIG9sZGJp
dDsKfQojIDE2MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBf
X2lubGluZV9fIGludCB0ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICog
YWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KCAiIgogICAgICAgICAgICAgICAgImJ0cmwgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAg
ICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAg
ICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRi
aXQ7Cn0KIyAxODIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMg
X19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lk
ICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18oCiAgICAgICAg
ICAgICAgICAiYnRybCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIg
KG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAg
IDoiSXIiIChucikpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KCgpzdGF0aWMgX19pbmxpbmVf
XyBpbnQgX190ZXN0X2FuZF9jaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIp
CnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAg
ICAgICAgICAgICAgICJidGNsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6
Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAg
ICAgICAgOiJJciIgKG5yKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMg
MjEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5l
X18gaW50IHRlc3RfYW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikK
ewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgog
ICAgICAgICAgICAgICAgImJ0Y2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAg
IDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAg
ICAgICAgICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0K
IyAyMzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxp
bmVfXyBpbnQgY29uc3RhbnRfdGVzdF9iaXQoaW50IG5yLCBjb25zdCB2b2xhdGlsZSB2b2lkICog
YWRkcikKewogICAgICAgIHJldHVybiAoKDFVTCA8PCAobnIgJiAzMSkpICYgKCgoY29uc3Qgdm9s
YXRpbGUgdW5zaWduZWQgaW50ICopIGFkZHIpW25yID4+IDVdKSkgIT0gMDsKfQoKc3RhdGljIF9f
aW5saW5lX18gaW50IHZhcmlhYmxlX3Rlc3RfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFk
ZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAgICAgICAgICJidGwgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAg
IDoiPXIiIChvbGRiaXQpCiAgICAgICAgICAgICAgICA6Im0iICgoKih2b2xhdGlsZSBsb25nICop
IGFkZHIpKSwiSXIiIChucikpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyNjIgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZmlu
ZF9maXJzdF96ZXJvX2JpdCh2b2lkICogYWRkciwgdW5zaWduZWQgc2l6ZSkKewogICAgICAgIGlu
dCBkMCwgZDEsIGQyOwogICAgICAgIGludCByZXM7CgogICAgICAgIGlmICghc2l6ZSkKICAgICAg
ICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg
ICAgICAgICAgICJtb3ZsICQtMSwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAieG9ybCAlJWVk
eCwlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAicmVwZTsgc2Nhc2xcblx0IgogICAgICAgICAg
ICAgICAgImplIDFmXG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsIC00KCUlZWRpKSwlJWVheFxu
XHQiCiAgICAgICAgICAgICAgICAic3VibCAkNCwlJWVkaVxuXHQiCiAgICAgICAgICAgICAgICAi
YnNmbCAlJWVheCwlJWVkeFxuIgogICAgICAgICAgICAgICAgIjE6XHRzdWJsICUlZWJ4LCUlZWRp
XG5cdCIKICAgICAgICAgICAgICAgICJzaGxsICQzLCUlZWRpXG5cdCIKICAgICAgICAgICAgICAg
ICJhZGRsICUlZWRpLCUlZWR4IgogICAgICAgICAgICAgICAgOiI9ZCIgKHJlcyksICI9JmMiIChk
MCksICI9JkQiIChkMSksICI9JmEiIChkMikKICAgICAgICAgICAgICAgIDoiMSIgKChzaXplICsg
MzEpID4+IDUpLCAiMiIgKGFkZHIpLCAiYiIgKGFkZHIpKTsKICAgICAgICByZXR1cm4gcmVzOwp9
CgoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZmluZF9uZXh0X3plcm9fYml0ICh2b2lkICog
YWRkciwgaW50IHNpemUsIGludCBvZmZzZXQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nICogcCA9
ICgodW5zaWduZWQgbG9uZyAqKSBhZGRyKSArIChvZmZzZXQgPj4gNSk7CiAgICAgICAgaW50IHNl
dCA9IDAsIGJpdCA9IG9mZnNldCAmIDMxLCByZXM7CgogICAgICAgIGlmIChiaXQpIHsKCgoKICAg
ICAgICAgICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTBcblx0IgogICAgICAgICAgICAgICAgICAg
ICAgICAiam5lIDFmXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgIm1vdmwgJDMyLCAlMFxu
IgogICAgICAgICAgICAgICAgICAgICAgICAiMToiCiAgICAgICAgICAgICAgICAgICAgICAgIDog
Ij1yIiAoc2V0KQogICAgICAgICAgICAgICAgICAgICAgICA6ICJyIiAofigqcCA+PiBiaXQpKSk7
CiAgICAgICAgICAgICAgICBpZiAoc2V0IDwgKDMyIC0gYml0KSkKICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHNldCArIG9mZnNldDsKICAgICAgICAgICAgICAgIHNldCA9IDMyIC0gYml0
OwogICAgICAgICAgICAgICAgcCsrOwogICAgICAgIH0KCgoKICAgICAgICByZXMgPSBmaW5kX2Zp
cnN0X3plcm9fYml0IChwLCBzaXplIC0gMzIgKiAocCAtICh1bnNpZ25lZCBsb25nICopIGFkZHIp
KTsKICAgICAgICByZXR1cm4gKG9mZnNldCArIHNldCArIHJlcyk7Cn0KCgoKCgoKCnN0YXRpYyBf
X2lubGluZV9fIHVuc2lnbmVkIGxvbmcgZmZ6KHVuc2lnbmVkIGxvbmcgd29yZCkKewogICAgICAg
IF9fYXNtX18oImJzZmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAod29yZCkKICAgICAg
ICAgICAgICAgIDoiciIgKH53b3JkKSk7CiAgICAgICAgcmV0dXJuIHdvcmQ7Cn0KIyAzNDMgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg
ZmZzKGludCB4KQp7CiAgICAgICAgaW50IHI7CgogICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTBc
blx0IgogICAgICAgICAgICAgICAgImpueiAxZlxuXHQiCiAgICAgICAgICAgICAgICAibW92bCAk
LTEsJTBcbiIKICAgICAgICAgICAgICAgICIxOiIgOiAiPXIiIChyKSA6ICJnIiAoeCkpOwogICAg
ICAgIHJldHVybiByKzE7Cn0KIyAyNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5o
IiAyCgpzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3Q7CiMgNTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvZnMuaCIKc3RydWN0IGZpbGVzX3N0YXRfc3RydWN0IHsKICAgICAgICBpbnQgbnJf
ZmlsZXM7CiAgICAgICAgaW50IG5yX2ZyZWVfZmlsZXM7CiAgICAgICAgaW50IG1heF9maWxlczsK
fTsKZXh0ZXJuIHN0cnVjdCBmaWxlc19zdGF0X3N0cnVjdCBmaWxlc19zdGF0OwoKc3RydWN0IGlu
b2Rlc19zdGF0X3QgewogICAgICAgIGludCBucl9pbm9kZXM7CiAgICAgICAgaW50IG5yX3VudXNl
ZDsKICAgICAgICBpbnQgZHVtbXlbNV07Cn07CmV4dGVybiBzdHJ1Y3QgaW5vZGVzX3N0YXRfdCBp
bm9kZXNfc3RhdDsKCmV4dGVybiBpbnQgbGVhc2VzX2VuYWJsZSwgZGlyX25vdGlmeV9lbmFibGUs
IGxlYXNlX2JyZWFrX3RpbWU7CiMgMTk3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDEKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMQojIDUgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMgMzkgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3NlbWFwaG9yZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5
c3RlbS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIg
MQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3N5c3RlbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2Vn
bWVudC5oIiAxCiMgNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAxCiMgMTEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvYml0b3BzLmgiCnN0YXRpYyBpbmxpbmUgaW50IGdlbmVyaWNf
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
Rik7Cn0KCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKIyA3MCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iaXRvcHMuaCIgMgojIDggIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAyCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKZXh0ZXJu
IHZvaWQgX19zd2l0Y2hfdG8oc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19z
dHJ1Y3QgKm5leHQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA2MyAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBf
Z2V0X2Jhc2UoY2hhciAqIGFkZHIpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fYmFzZTsKICAg
ICAgICBfX2FzbV9fKCJtb3ZiICUzLCUlZGhcblx0IgogICAgICAgICAgICAgICAgIm1vdmIgJTIs
JSVkbFxuXHQiCiAgICAgICAgICAgICAgICAic2hsbCAkMTYsJSVlZHhcblx0IgogICAgICAgICAg
ICAgICAgIm1vdncgJTEsJSVkeCIKICAgICAgICAgICAgICAgIDoiPSZkIiAoX19iYXNlKQogICAg
ICAgICAgICAgICAgOiJtIiAoKigoYWRkcikrMikpLAogICAgICAgICAgICAgICAgICJtIiAoKigo
YWRkcikrNCkpLAogICAgICAgICAgICAgICAgICJtIiAoKigoYWRkcikrNykpKTsKICAgICAgICBy
ZXR1cm4gX19iYXNlOwp9CiMgMTMwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0u
aCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9saW1pdCh1bnNpZ25lZCBsb25nIHNl
Z21lbnQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fbGltaXQ7CiAgICAgICAgX19hc21fXygi
bHNsbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChfX2xpbWl0KToiciIgKHNlZ21lbnQp
KTsKICAgICAgICByZXR1cm4gX19saW1pdCsxOwp9CgoKCgoKCgpzdHJ1Y3QgX194Y2hnX2R1bW15
IHsgdW5zaWduZWQgbG9uZyBhWzEwMF07IH07CiMgMTU3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB2b2lkIF9fc2V0XzY0Yml0ICh1bnNpZ25lZCBs
b25nIGxvbmcgKiBwdHIsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbG93LCB1bnNpZ25l
ZCBpbnQgaGlnaCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKICAgICAgICAgICAg
ICAgICJcbjE6XHQiCiAgICAgICAgICAgICAgICAibW92bCAoJTApLCAlJWVheFxuXHQiCiAgICAg
ICAgICAgICAgICAibW92bCA0KCUwKSwgJSVlZHhcblx0IgogICAgICAgICAgICAgICAgImNtcHhj
aGc4YiAoJTApXG5cdCIKICAgICAgICAgICAgICAgICJqbnogMWIiCiAgICAgICAgICAgICAgICA6
CiAgICAgICAgICAgICAgICA6ICJEIihwdHIpLAogICAgICAgICAgICAgICAgICAgICAgICAiYiIo
bG93KSwKICAgICAgICAgICAgICAgICAgICAgICAgImMiKGhpZ2gpCiAgICAgICAgICAgICAgICA6
ICJheCIsImR4IiwibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF9j
b25zdGFudCAodW5zaWduZWQgbG9uZyBsb25nICpwdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCnsKICAg
ICAgICBfX3NldF82NGJpdChwdHIsKHVuc2lnbmVkIGludCkodmFsdWUpLCAodW5zaWduZWQgaW50
KSgodmFsdWUpPj4zMlVMTCkpOwp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF92
YXIgKHVuc2lnbmVkIGxvbmcgbG9uZyAqcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBsb25nIHZhbHVlKQp7CiAgICAgICAgX19zZXRfNjRiaXQocHRyLCooKCh1bnNp
Z25lZCBpbnQqKSYodmFsdWUpKSswKSwgKigoKHVuc2lnbmVkIGludCopJih2YWx1ZSkpKzEpKTsK
fQojIDIwMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgbG9uZyBfX3hjaGcodW5zaWduZWQgbG9uZyB4LCB2b2xhdGlsZSB2b2lkICog
cHRyLCBpbnQgc2l6ZSkKewogICAgICAgIHN3aXRjaCAoc2l6ZSkgewogICAgICAgICAgICAgICAg
Y2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNo
Z2IgJWIwLCUxIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoiPXEiICh4KQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkg
KikocHRyKSkpLCAiMCIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1v
cnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNl
IDI6CiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Y2hndyAl
dzAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9ciIgKHgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShw
dHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIp
OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgNDoK
ICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGdsICUwLCUx
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoiPXIiICh4KQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkp
LCAiMCIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiB4Owp9
CiMgMjM2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBsb25nIF9fY21weGNoZyh2b2xhdGlsZSB2b2lkICpwdHIsIHVuc2lnbmVkIGxv
bmcgb2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgbmV3LCBpbnQgc2l6ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJldjsKICAgICAgICBz
d2l0Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9f
dm9sYXRpbGVfXygiIiAiY21weGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIw
IihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsK
ICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiICJjbXB4Y2hndyAldzEsJTIiCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194Y2hnX2R1bW15
ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAgICAgY2FzZSA0
OgogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiIgImNtcHhjaGdsICUxLCUy
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0
IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2Owog
ICAgICAgIH0KICAgICAgICByZXR1cm4gb2xkOwp9CiMgMzQwICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9zeXN0ZW0uaCIKdm9pZCBkaXNhYmxlX2hsdCh2b2lkKTsKdm9pZCBlbmFibGVfaGx0
KHZvaWQpOwojIDQwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgNDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC93YWl0LmgiIDEKIyA0MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2Vt
YXBob3JlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDEK
IyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yd3NlbS5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvcndzZW0uaCIgMgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9jb25maWcuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J3c2Vt
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxOCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3J3c2VtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0u
aCIgMQojIDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDIxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKCnN0cnVjdCByd19zZW1hcGhvcmU7CgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3J3c2VtLmgiIDEKIyA0MSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vcndzZW0uaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2xpc3QuaCIgMQojIDQyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9yd3NlbS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgNDMgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3J3c2VtLmgiIDIKCnN0cnVjdCByd3NlbV93YWl0ZXI7Cgpl
eHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSAqcndzZW1fZG93bl9yZWFkX2ZhaWxlZChzdHJ1Y3Qg
cndfc2VtYXBob3JlICpzZW0pIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0
cnVjdCByd19zZW1hcGhvcmUgKnJ3c2VtX2Rvd25fd3JpdGVfZmFpbGVkKHN0cnVjdCByd19zZW1h
cGhvcmUgKnNlbSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHJ3
X3NlbWFwaG9yZSAqcndzZW1fd2FrZShzdHJ1Y3Qgcndfc2VtYXBob3JlICopIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMykpKTsKCgoKCnN0cnVjdCByd19zZW1hcGhvcmUgewogICAgICAgIHNpZ25l
ZCBsb25nIGNvdW50OwoKCgoKCgogICAgICAgIHNwaW5sb2NrX3Qgd2FpdF9sb2NrOwogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgd2FpdF9saXN0OwoKCgp9OwojIDg0ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9yd3NlbS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9yd3NlbShzdHJ1Y3Qg
cndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBzZW0tPmNvdW50ID0gMHgwMDAwMDAwMDsKICAg
ICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgZG8geyAoJnNlbS0+d2FpdF9saXN0KS0+bmV4
dCA9ICgmc2VtLT53YWl0X2xpc3QpOyAoJnNlbS0+d2FpdF9saXN0KS0+cHJldiA9ICgmc2VtLT53
YWl0X2xpc3QpOyB9IHdoaWxlICgwKTsKCgoKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fZG93
bl9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIGRvd25fcmVhZFxuXHQiCiIiICIg
IGluY2wgICAgICAoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAgICIgIGpzICAgICAgICAyZlxu
XHQiCiAgICAgICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIi5zZWN0aW9uIC50
ZXh0LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAgICAgICAgICAg
ICAgIiAgcHVzaGwgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAl
JWVkeFxuXHQiCiAgICAgICAgICAgICAgICAiICBjYWxsICAgICAgcndzZW1fZG93bl9yZWFkX2Zh
aWxlZFxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVlZHhcblx0IgogICAgICAg
ICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAg
ICAgICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91cyIKICAgICAgICAgICAgICAgICIj
IGVuZGluZyBkb3duX3JlYWRcblx0IgogICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQp
CiAgICAgICAgICAgICAgICA6ICJhIihzZW0pCiAgICAgICAgICAgICAgICA6ICJtZW1vcnkiLCAi
Y2MiKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fZG93bl93cml0ZShzdHJ1Y3Qgcndfc2Vt
YXBob3JlICpzZW0pCnsKICAgICAgICBpbnQgdG1wOwoKICAgICAgICB0bXAgPSAoKC0weDAwMDEw
MDAwKSArIDB4MDAwMDAwMDEpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAg
ICAgICAgICAgIiMgYmVnaW5uaW5nIGRvd25fd3JpdGVcblx0IgoiIiAiICB4YWRkICAgICAgJTAs
KCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAgICAiICB0ZXN0bCAgICAgJTAsJTBcblx0IgogICAg
ICAgICAgICAgICAgIiAgam56ICAgICAgIDJmXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQi
CiAgICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAg
ICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0Igog
ICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX2Rvd25fd3JpdGVfZmFpbGVkXG5cdCIK
ICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAi
ICBqbXAgICAgICAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXNcbiIKICAgICAgICAg
ICAgICAgICIjIGVuZGluZyBkb3duX3dyaXRlIgogICAgICAgICAgICAgICAgOiAiK2QiKHRtcCks
ICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogImEiKHNlbSkKICAgICAgICAgICAg
ICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX191cF9yZWFk
KHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fczMyIHRtcCA9IC0weDAwMDAw
MDAxOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYmVn
aW5uaW5nIF9fdXBfcmVhZFxuXHQiCiIiICIgIHhhZGQgICAgICAlJWVkeCwoJSVlYXgpXG5cdCIK
ICAgICAgICAgICAgICAgICIgIGpzICAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAiMTpc
blx0IgogICAgICAgICAgICAgICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4iCiAgICAg
ICAgICAgICAgICAiMjpcblx0IgogICAgICAgICAgICAgICAgIiAgZGVjdyAgICAgICUlZHhcblx0
IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDFiXG5cdCIKICAgICAgICAgICAgICAgICIg
IHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBjYWxsICAgICAgcndzZW1f
d2FrZVxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAg
ICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG4i
CiAgICAgICAgICAgICAgICAiIyBlbmRpbmcgX191cF9yZWFkXG4iCiAgICAgICAgICAgICAgICA6
ICIrbSIoc2VtLT5jb3VudCksICIrZCIodG1wKQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKQog
ICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNjIik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBfX3VwX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfd3JpdGVcblx0
IgogICAgICAgICAgICAgICAgIiAgbW92bCAgICAgICUyLCUlZWR4XG5cdCIKIiIgIiAgeGFkZGwg
ICAgICUlZWR4LCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDJmXG5c
dCIKICAgICAgICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRl
eHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAg
ICAiICBkZWN3ICAgICAgJSVkeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbnogICAgICAgMWJc
blx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAg
ICAgICIgIGNhbGwgICAgICByd3NlbV93YWtlXG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwg
ICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAg
ICAgICAgICAgICIucHJldmlvdXNcbiIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBfX3VwX3dy
aXRlXG4iCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAg
IDogImEiKHNlbSksICJpIigtKCgtMHgwMDAxMDAwMCkgKyAweDAwMDAwMDAxKSkKICAgICAgICAg
ICAgICAgIDogIm1lbW9yeSIsICJjYyIsICJlZHgiKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lk
IHJ3c2VtX2F0b21pY19hZGQoaW50IGRlbHRhLCBzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsK
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKIiIgImFkZGwgJTEsJTAiCiAgICAgICAgICAg
ICAgICA6Ij1tIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJpciIoZGVsdGEpLCAibSIo
c2VtLT5jb3VudCkpOwp9CgoKCgpzdGF0aWMgaW5saW5lIGludCByd3NlbV9hdG9taWNfdXBkYXRl
KGludCBkZWx0YSwgc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgaW50IHRtcCA9
IGRlbHRhOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKIiIgInhhZGQgJTAsKCUyKSIK
ICAgICAgICAgICAgICAgIDogIityIih0bXApLCAiPW0iKHNlbS0+Y291bnQpCiAgICAgICAgICAg
ICAgICA6ICJyIihzZW0pLCAibSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogIm1lbW9y
eSIpOwoKICAgICAgICByZXR1cm4gdG1wK2RlbHRhOwp9CiMgMjggIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvcndzZW0uaCIgMgojIDQxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9y
ZSAqc2VtKQp7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwog
ICAgICAgIF9fZG93bl9yZWFkKHNlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3dyaXRlKHN0cnVjdCBy
d19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7CiAgICAgICAgX19kb3duX3dyaXRlKHNlbSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgdXBfcmVh
ZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwogICAgICAgIF9fdXBfcmVhZChzZW0pOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIHVwX3dy
aXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwogICAgICAgIF9fdXBfd3JpdGUoc2VtKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CiMgNDMgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCgpzdHJ1Y3Qgc2VtYXBob3JlIHsKICAgICAgICBhdG9t
aWNfdCBjb3VudDsKICAgICAgICBpbnQgc2xlZXBlcnM7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk
X3Qgd2FpdDsKCgoKfTsKIyA3MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VtYXBob3Jl
LmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBzZW1hX2luaXQgKHN0cnVjdCBzZW1hcGhvcmUgKnNlbSwg
aW50IHZhbCkKewoKCgoKCgogICAgICAgICgoKCZzZW0tPmNvdW50KS0+Y291bnRlcikgPSAodmFs
KSk7CiAgICAgICAgc2VtLT5zbGVlcGVycyA9IDA7CiAgICAgICAgaW5pdF93YWl0cXVldWVfaGVh
ZCgmc2VtLT53YWl0KTsKCgoKfQoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfTVVURVggKHN0cnVj
dCBzZW1hcGhvcmUgKnNlbSkKewogICAgICAgIHNlbWFfaW5pdChzZW0sIDEpOwp9CgpzdGF0aWMg
aW5saW5lIHZvaWQgaW5pdF9NVVRFWF9MT0NLRUQgKHN0cnVjdCBzZW1hcGhvcmUgKnNlbSkKewog
ICAgICAgIHNlbWFfaW5pdChzZW0sIDApOwp9CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp
IHZvaWQgX19kb3duX2ZhaWxlZCh2b2lkICk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg
aW50IF9fZG93bl9mYWlsZWRfaW50ZXJydXB0aWJsZSh2b2lkICk7CiBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDApKSkgaW50IF9fZG93bl9mYWlsZWRfdHJ5bG9jayh2b2lkICk7CiBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBfX3VwX3dha2V1cCh2b2lkICk7CgogX19hdHRyaWJ1dGVf
XygocmVncGFybSgwKSkpIHZvaWQgX19kb3duKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pOwogX19h
dHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rvd25faW50ZXJydXB0aWJsZShzdHJ1Y3Qg
c2VtYXBob3JlICogc2VtKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3du
X3RyeWxvY2soc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDApKSkgdm9pZCBfX3VwKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pOwoKCgoKCgpzdGF0aWMgaW5s
aW5lIHZvaWQgZG93bihzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQp7CgoKCgogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIGRvd24gb3BlcmF0aW9u
XG5cdCIKICAgICAgICAgICAgICAgICIiICJkZWNsICUwXG5cdCIKICAgICAgICAgICAgICAgICJq
cyAyZlxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnNlY3Rpb24g
LnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX2Rvd25fZmFp
bGVkXG5cdCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJl
dmlvdXMiCiAgICAgICAgICAgICAgICA6Ij1tIiAoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAg
IDoiYyIgKHNlbSkKICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7Cn0KCgoKCgpzdGF0aWMgaW5s
aW5lIGludCBkb3duX2ludGVycnVwdGlibGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewogICAg
ICAgIGludCByZXN1bHQ7CgoKCgoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg
ICAgICAgICAgICIjIGF0b21pYyBpbnRlcnJ1cHRpYmxlIGRvd24gb3BlcmF0aW9uXG5cdCIKICAg
ICAgICAgICAgICAgICIiICJkZWNsICUxXG5cdCIKICAgICAgICAgICAgICAgICJqcyAyZlxuXHQi
CiAgICAgICAgICAgICAgICAieG9ybCAlMCwlMFxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAg
ICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAg
ICAgICIyOlx0Y2FsbCBfX2Rvd25fZmFpbGVkX2ludGVycnVwdGlibGVcblx0IgogICAgICAgICAg
ICAgICAgImptcCAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91cyIKICAgICAgICAgICAg
ICAgIDoiPWEiIChyZXN1bHQpLCAiPW0iIChzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJj
IiAoc2VtKQogICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0
Owp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgZG93bl90cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUg
KiBzZW0pCnsKICAgICAgICBpbnQgcmVzdWx0OwoKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9taWMgaW50ZXJydXB0aWJsZSBkb3duIG9wZXJh
dGlvblxuXHQiCiAgICAgICAgICAgICAgICAiIiAiZGVjbCAlMVxuXHQiCiAgICAgICAgICAgICAg
ICAianMgMmZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgJTAsJTBcbiIKICAgICAgICAgICAg
ICAgICIxOlxuIgogICAgICAgICAgICAgICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4i
CiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2ZhaWxlZF90cnlsb2NrXG5cdCIKICAg
ICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXMiCiAgICAg
ICAgICAgICAgICA6Ij1hIiAocmVzdWx0KSwgIj1tIiAoc2VtLT5jb3VudCkKICAgICAgICAgICAg
ICAgIDoiYyIgKHNlbSkKICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7CiAgICAgICAgcmV0dXJu
IHJlc3VsdDsKfQoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHVwKHN0cnVjdCBzZW1hcGhvcmUg
KiBzZW0pCnsKCgoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAg
ICIjIGF0b21pYyB1cCBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAgIiIgImluY2wgJTBc
blx0IgogICAgICAgICAgICAgICAgImpsZSAyZlxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAg
ICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAg
ICAgICIyOlx0Y2FsbCBfX3VwX3dha2V1cFxuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4i
CiAgICAgICAgICAgICAgICAiLnByZXZpb3VzIgogICAgICAgICAgICAgICAgOiI9bSIgKHNlbS0+
Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9y
eSIpOwp9CiMgMTk4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMQoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9ieXRlb3JkZXIuaCIgMgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIu
aCIgMgoKCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UzMiBfX19hcmNoX19zd2FiMzIo
X191MzIgeCkKewoKICAgICAgICBfX2FzbV9fKCJic3dhcCAlMCIgOiAiPXIiICh4KSA6ICIwIiAo
eCkpOwoKCgoKCgoKICAgICAgICByZXR1cm4geDsKfQoKc3RhdGljIF9faW5saW5lX18gX19jb25z
dF9fIF9fdTE2IF9fX2FyY2hfX3N3YWIxNihfX3UxNiB4KQp7CiAgICAgICAgX19hc21fXygieGNo
Z2IgJWIwLCVoMCIgOiAiPXEiICh4KSA6ICIwIiAoeCkpOyByZXR1cm4geDsKCgoKfQojIDQ1ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDEKIyAxMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCIgMQojIDEzMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oIgpzdGF0aWMgX19pbmxp
bmVfXyBfX2NvbnN0X18gX191MTYgX19mc3dhYjE2KF9fdTE2IHgpCnsKICAgICAgICByZXR1cm4g
X19fYXJjaF9fc3dhYjE2KHgpOwp9CnN0YXRpYyBfX2lubGluZV9fIF9fdTE2IF9fc3dhYjE2cChf
X3UxNiAqeCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19zd2FiMTYoKih4KSk7Cn0Kc3RhdGlj
IF9faW5saW5lX18gdm9pZCBfX3N3YWIxNnMoX191MTYgKmFkZHIpCnsKICAgICAgICBkbyB7ICoo
YWRkcikgPSBfX19hcmNoX19zd2FiMTYoKigoYWRkcikpKTsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRp
YyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UzMiBfX2Zzd2FiMzIoX191MzIgeCkKewogICAgICAg
IHJldHVybiBfX19hcmNoX19zd2FiMzIoeCk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MzIgX19z
d2FiMzJwKF9fdTMyICp4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIzMigqKHgpKTsK
fQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dhYjMycyhfX3UzMiAqYWRkcikKewogICAgICAg
IGRvIHsgKihhZGRyKSA9IF9fX2FyY2hfX3N3YWIzMigqKChhZGRyKSkpOyB9IHdoaWxlICgwKTsK
fQoKCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3U2NCBfX2Zzd2FiNjQoX191NjQgeCkK
ewoKICAgICAgICBfX3UzMiBoID0geCA+PiAzMjsKICAgICAgICBfX3UzMiBsID0geCAmICgoMVVM
TDw8MzIpLTEpOwogICAgICAgIHJldHVybiAoKChfX3U2NCkoX19idWlsdGluX2NvbnN0YW50X3Ao
KF9fdTMyKShsKSkgPyAoeyBfX3UzMiBfX3ggPSAoKGwpKTsgKChfX3UzMikoICgoKF9fdTMyKShf
X3gpICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKF9feCkgJiAoX191
MzIpMHgwMDAwZmYwMFVMKSA8PCA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDBmZjAw
MDBVTCkgPj4gOCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0
KSApKTsgfSkgOiBfX2Zzd2FiMzIoKGwpKSkpIDw8IDMyKSB8ICgoX191NjQpKChfX2J1aWx0aW5f
Y29uc3RhbnRfcCgoX191MzIpKGgpKSA/ICh7IF9fdTMyIF9feCA9ICgoaCkpOyAoKF9fdTMyKSgg
KCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMiko
X194KSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191
MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4ZmYwMDAw
MDBVTCkgPj4gMjQpICkpOyB9KSA6IF9fZnN3YWIzMigoaCkpKSkpOwoKCgp9CnN0YXRpYyBfX2lu
bGluZV9fIF9fdTY0IF9fc3dhYjY0cChfX3U2NCAqeCkKewogICAgICAgIHJldHVybiAoeyBfX3U2
NCBfX3RtcCA9ICgqKHgpKSA7ICh7IF9fdTY0IF9feCA9IChfX3RtcCk7ICgoX191NjQpKCAoX191
NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAwMDAwMGZmVUxMKSA8PCA1Nikg
fCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAwMDBmZjAwVUxMKSA8
PCA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAwZmYwMDAw
VUxMKSA8PCAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMGZm
MDAwMDAwVUxMKSA8PCA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAw
MGZmMDAwMDAwMDBVTEwpID4+IDgpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4
MDAwMGZmMDAwMDAwMDAwMFVMTCkgPj4gMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9f
dTY0KTB4MDBmZjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gp
ICYgKF9fdTY0KTB4ZmYwMDAwMDAwMDAwMDAwMFVMTCkgPj4gNTYpICkpOyB9KTsgfSk7Cn0Kc3Rh
dGljIF9faW5saW5lX18gdm9pZCBfX3N3YWI2NHMoX191NjQgKmFkZHIpCnsKICAgICAgICBkbyB7
ICooYWRkcikgPSAoeyBfX3U2NCBfX3RtcCA9ICgqKChhZGRyKSkpIDsgKHsgX191NjQgX194ID0g
KF9fdG1wKTsgKChfX3U2NCkoIChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAw
MDAwMDAwMDAwZmZVTEwpIDw8IDU2KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkw
eDAwMDAwMDAwMDAwMGZmMDBVTEwpIDw8IDQwKSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChf
X3U2NCkweDAwMDAwMDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194
KSAmIChfX3U2NCkweDAwMDAwMDAwZmYwMDAwMDBVTEwpIDw8IDgpIHwgKF9fdTY0KSgoKF9fdTY0
KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwZmYwMDAwMDAwMFVMTCkgPj4gOCkgfCAoX191NjQpKCgo
X191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwZmYwMDAwMDAwMDAwVUxMKSA+PiAyNCkgfCAoX191
NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMGZmMDAwMDAwMDAwMDAwVUxMKSA+PiA0MCkg
fCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHhmZjAwMDAwMDAwMDAwMDAwVUxMKSA+
PiA1NikgKSk7IH0pOyB9KTsgfSB3aGlsZSAoMCk7Cn0KIyAxMiAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIiAyCiMgNjYgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9nZW5lcmljLmgiIDEKIyAxNTAgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIKZXh0ZXJuIF9fdTMy
IG50b2hsKF9fdTMyKTsKZXh0ZXJuIF9fdTMyIGh0b25sKF9fdTMyKTsKCgoKCmV4dGVybiB1bnNp
Z25lZCBzaG9ydCBpbnQgbnRvaHModW5zaWduZWQgc2hvcnQgaW50KTsKZXh0ZXJuIHVuc2lnbmVk
IHNob3J0IGludCBodG9ucyh1bnNpZ25lZCBzaG9ydCBpbnQpOwojIDY3ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDIKIyA0NiAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDIKIyAxOTkgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKZXh0ZXJuIHZvaWQgdXBkYXRlX2F0aW1lIChzdHJ1Y3Qg
aW5vZGUgKik7CgoKZXh0ZXJuIHZvaWQgYnVmZmVyX2luaXQodW5zaWduZWQgbG9uZyk7CmV4dGVy
biB2b2lkIGlub2RlX2luaXQodW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIG1udF9pbml0KHVu
c2lnbmVkIGxvbmcpOwoKCmVudW0gYmhfc3RhdGVfYml0cyB7CiAgICAgICAgQkhfVXB0b2RhdGUs
CiAgICAgICAgQkhfRGlydHksCiAgICAgICAgQkhfTG9jaywKICAgICAgICBCSF9SZXEsCiAgICAg
ICAgQkhfTWFwcGVkLAogICAgICAgIEJIX05ldywKICAgICAgICBCSF9Bc3luYywKICAgICAgICBC
SF9XYWl0X0lPLAoKICAgICAgICBCSF9Qcml2YXRlU3RhcnQsCgoKfTsKIyAyMzQgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGJ1ZmZlcl9oZWFkIHsKCiAgICAgICAg
c3RydWN0IGJ1ZmZlcl9oZWFkICpiX25leHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX2Jsb2Nr
bnI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGJfbGlzdDsKICAgICAgICBrZGV2X3QgYl9kZXY7CgogICAgICAgIGF0b21pY190IGJfY291bnQ7
CiAgICAgICAga2Rldl90IGJfcmRldjsKICAgICAgICB1bnNpZ25lZCBsb25nIGJfc3RhdGU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBiX2ZsdXNodGltZTsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9o
ZWFkICpiX25leHRfZnJlZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfcHJldl9mcmVl
OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl90aGlzX3BhZ2U7CiAgICAgICAgc3RydWN0
IGJ1ZmZlcl9oZWFkICpiX3JlcW5leHQ7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKmJf
cHByZXY7CiAgICAgICAgY2hhciAqIGJfZGF0YTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqYl9wYWdl
OwogICAgICAgIHZvaWQgKCpiX2VuZF9pbykoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHVw
dG9kYXRlKTsKICAgICAgICB2b2lkICpiX3ByaXZhdGU7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
Yl9yc2VjdG9yOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGJfd2FpdDsKCiAgICAgICAgc3Ry
dWN0IGlub2RlICogYl9pbm9kZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJfaW5vZGVfYnVm
ZmVyczsKfTsKCnR5cGVkZWYgdm9pZCAoYmhfZW5kX2lvX3QpKHN0cnVjdCBidWZmZXJfaGVhZCAq
YmgsIGludCB1cHRvZGF0ZSk7CnZvaWQgaW5pdF9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICos
IGJoX2VuZF9pb190ICosIHZvaWQgKik7CiMgMjgwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiCmV4dGVybiB2b2lkIHNldF9iaF9wYWdlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgs
IHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CgoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiIDEKCgoKCnN0cnVjdCBwaXBlX2lu
b2RlX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CiAgICAgICAgY2hhciAq
YmFzZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBzdGFy
dDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVhZGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd3Jp
dGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ19yZWFkZXJzOwogICAgICAgIHVuc2ln
bmVkIGludCB3YWl0aW5nX3dyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHJfY291bnRlcjsK
ICAgICAgICB1bnNpZ25lZCBpbnQgd19jb3VudGVyOwp9OwojIDQyICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3BpcGVfZnNfaS5oIgp2b2lkIHBpcGVfd2FpdChzdHJ1Y3QgaW5vZGUgKiBp
bm9kZSk7CgpzdHJ1Y3QgaW5vZGUqIHBpcGVfbmV3KHN0cnVjdCBpbm9kZSogaW5vZGUpOwojIDI4
NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9taW5peF9mc19pLmgiIDEKCgoKCgoKc3RydWN0IG1pbml4X2lub2Rl
X2luZm8gewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTE2IGkxX2RhdGFbMTZd
OwogICAgICAgICAgICAgICAgX191MzIgaTJfZGF0YVsxNl07CiAgICAgICAgfSB1Owp9OwojIDI4
NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9leHQyX2ZzX2kuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2V4dDJfZnNfaS5oIgpzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIHsKICAgICAgICBf
X3UzMiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9m
YWRkcjsKICAgICAgICBfX3U4IGlfZnJhZ19ubzsKICAgICAgICBfX3U4IGlfZnJhZ19zaXplOwog
ICAgICAgIF9fdTE2IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9maWxlX2FjbDsKICAgICAgICBf
X3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGltZTsKICAgICAgICBfX3UzMiBpX2Js
b2NrX2dyb3VwOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3Uz
MiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2Jsb2NrOwogICAg
ICAgIF9fdTMyIGlfcHJlYWxsb2NfY291bnQ7CiAgICAgICAgX191MzIgaV9kaXJfc3RhcnRfbG9v
a3VwOwogICAgICAgIGludCBpX25ld19pbm9kZToxOwp9OwojIDI4OCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9o
cGZzX2ZzX2kuaCIgMQoKCgpzdHJ1Y3QgaHBmc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25l
ZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIGlub190IGlfcGFyZW50X2RpcjsKICAgICAgICB1
bnNpZ25lZCBpX2RubzsKICAgICAgICB1bnNpZ25lZCBpX2Rwb3M7CiAgICAgICAgdW5zaWduZWQg
aV9kc3ViZG5vOwogICAgICAgIHVuc2lnbmVkIGlfZmlsZV9zZWM7CiAgICAgICAgdW5zaWduZWQg
aV9kaXNrX3NlYzsKICAgICAgICB1bnNpZ25lZCBpX25fc2VjczsKICAgICAgICB1bnNpZ25lZCBp
X2VhX3NpemU7CiAgICAgICAgdW5zaWduZWQgaV9jb252IDogMjsKICAgICAgICB1bnNpZ25lZCBp
X2VhX21vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZWFfdWlkIDogMTsKICAgICAgICB1bnNp
Z25lZCBpX2VhX2dpZCA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9kaXJ0eSA6IDE7CiAgICAgICAg
c3RydWN0IHNlbWFwaG9yZSBpX3NlbTsKICAgICAgICBsb2ZmX3QgKippX3JkZGlyX29mZjsKfTsK
IyAyODkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvbnRmc19mc19pLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L250ZnNfZnNfaS5oIiAyCgoKc3RydWN0IG50ZnNfYXR0cmlidXRlOwpzdHJ1Y3QgbnRmc19z
Yl9pbmZvOwoKCgoKdHlwZWRlZiB1OCBudGZzX3U4Owp0eXBlZGVmIHUxNiBudGZzX3UxNjsKdHlw
ZWRlZiB1MzIgbnRmc191MzI7CnR5cGVkZWYgdTY0IG50ZnNfdTY0Owp0eXBlZGVmIHM4IG50ZnNf
czg7CnR5cGVkZWYgczE2IG50ZnNfczE2Owp0eXBlZGVmIHMzMiBudGZzX3MzMjsKdHlwZWRlZiBz
NjQgbnRmc19zNjQ7CgoKCgp0eXBlZGVmIF9fa2VybmVsX21vZGVfdCBudG1vZGVfdDsKCgoKdHlw
ZWRlZiB1aWRfdCBudGZzX3VpZF90OwoKCgp0eXBlZGVmIGdpZF90IG50ZnNfZ2lkX3Q7CgoKCnR5
cGVkZWYgX19rZXJuZWxfc2l6ZV90IG50ZnNfc2l6ZV90OwoKCgp0eXBlZGVmIF9fa2VybmVsX3Rp
bWVfdCBudGZzX3RpbWVfdDsKCgoKCgp0eXBlZGVmIHUxNiBudGZzX3djaGFyX3Q7CgoKCgp0eXBl
ZGVmIHM2NCBudGZzX29mZnNldF90OwoKCgoKdHlwZWRlZiB1NjQgbnRmc190aW1lNjRfdDsKIyA2
OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9udGZzX2ZzX2kuaCIKdHlwZWRlZiBzMzIg
bnRmc19jbHVzdGVyX3Q7CgoKCnN0cnVjdCBudGZzX2lub2RlX2luZm8gewogICAgICAgIHN0cnVj
dCBudGZzX3NiX2luZm8gKnZvbDsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfbnVtYmVyOwogICAg
ICAgIF9fdTE2IHNlcXVlbmNlX251bWJlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyICphdHRyOwog
ICAgICAgIGludCBhdHRyX2NvdW50OwogICAgICAgIHN0cnVjdCBudGZzX2F0dHJpYnV0ZSAqYXR0
cnM7CiAgICAgICAgaW50IHJlY29yZF9jb3VudDsKICAgICAgICBpbnQgKnJlY29yZHM7CgogICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGludCByZWNvcmRzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2x1c3RlcnNf
cGVyX3JlY29yZDsKICAgICAgICAgICAgICAgIH0gaW5kZXg7CiAgICAgICAgfSB1Owp9OwojIDI5
MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9tc2Rvc19mc19pLmgiIDEKCgoKCgoKCnN0cnVjdCBtc2Rvc19pbm9k
ZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIGludCBp
X3N0YXJ0OwogICAgICAgIGludCBpX2xvZ3N0YXJ0OwogICAgICAgIGludCBpX2F0dHJzOwogICAg
ICAgIGludCBpX2N0aW1lX21zOwogICAgICAgIGludCBpX2xvY2F0aW9uOwogICAgICAgIHN0cnVj
dCBpbm9kZSAqaV9mYXRfaW5vZGU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2ZhdF9oYXNo
Owp9OwojIDI5MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91bXNkb3NfZnNfaS5oIiAxCgoKCgoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbXNkb3NfZnNfaS5oIiAxCiMgOSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC91bXNkb3NfZnNfaS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9waXBlX2ZzX2kuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3Vtc2Rvc19mc19pLmgiIDIKIyAzOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC91bXNkb3NfZnNfaS5oIgpzdHJ1Y3QgZGlyX2xvY2tpbmdfaW5mbyB7CiAgICAgICAgd2FpdF9x
dWV1ZV9oZWFkX3QgcDsKICAgICAgICBzaG9ydCBpbnQgbG9va2luZzsKICAgICAgICBzaG9ydCBp
bnQgY3JlYXRpbmc7CgoKCiAgICAgICAgbG9uZyBwaWQ7Cgp9OwoKc3RydWN0IHVtc2Rvc19pbm9k
ZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXNkb3NfaW5vZGVfaW5mbyBtc2Rvc19pbmZvOwogICAg
ICAgIHN0cnVjdCBkaXJfbG9ja2luZ19pbmZvIGRpcl9pbmZvOwogICAgICAgIGludCBpX3BhdGNo
ZWQ7CiAgICAgICAgaW50IGlfaXNfaGxpbms7CiAgICAgICAgb2ZmX3QgcG9zOwp9OwojIDI5MiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9pc29fZnNfaS5oIiAxCgoKCgoKCnN0cnVjdCBpc29faW5vZGVfaW5mbyB7
CiAgICAgICAgdW5zaWduZWQgaW50IGlfZmlyc3RfZXh0ZW50OwogICAgICAgIHVuc2lnbmVkIGNo
YXIgaV9maWxlX2Zvcm1hdDsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfbmV4dF9zZWN0aW9uX2lu
bzsKICAgICAgICBvZmZfdCBpX3NlY3Rpb25fc2l6ZTsKfTsKIyAyOTMgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bmZzX2ZzX2kuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3R5cGVzLmgi
IDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbmZzLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnMuaCIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N1bnJwYy9tc2dfcHJvdC5oIiAxCiMg
MTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3VucnBjL21zZ19wcm90LmgiCmVudW0g
cnBjX2F1dGhfZmxhdm9yIHsKICAgICAgICBSUENfQVVUSF9OVUxMID0gMCwKICAgICAgICBSUENf
QVVUSF9VTklYID0gMSwKICAgICAgICBSUENfQVVUSF9TSE9SVCA9IDIsCiAgICAgICAgUlBDX0FV
VEhfREVTID0gMywKICAgICAgICBSUENfQVVUSF9LUkIgPSA0LAp9OwoKZW51bSBycGNfbXNnX3R5
cGUgewogICAgICAgIFJQQ19DQUxMID0gMCwKICAgICAgICBSUENfUkVQTFkgPSAxCn07CgplbnVt
IHJwY19yZXBseV9zdGF0IHsKICAgICAgICBSUENfTVNHX0FDQ0VQVEVEID0gMCwKICAgICAgICBS
UENfTVNHX0RFTklFRCA9IDEKfTsKCmVudW0gcnBjX2FjY2VwdF9zdGF0IHsKICAgICAgICBSUENf
U1VDQ0VTUyA9IDAsCiAgICAgICAgUlBDX1BST0dfVU5BVkFJTCA9IDEsCiAgICAgICAgUlBDX1BS
T0dfTUlTTUFUQ0ggPSAyLAogICAgICAgIFJQQ19QUk9DX1VOQVZBSUwgPSAzLAogICAgICAgIFJQ
Q19HQVJCQUdFX0FSR1MgPSA0LAogICAgICAgIFJQQ19TWVNURU1fRVJSID0gNQp9OwoKZW51bSBy
cGNfcmVqZWN0X3N0YXQgewogICAgICAgIFJQQ19NSVNNQVRDSCA9IDAsCiAgICAgICAgUlBDX0FV
VEhfRVJST1IgPSAxCn07CgplbnVtIHJwY19hdXRoX3N0YXQgewogICAgICAgIFJQQ19BVVRIX09L
ID0gMCwKICAgICAgICBSUENfQVVUSF9CQURDUkVEID0gMSwKICAgICAgICBSUENfQVVUSF9SRUpF
Q1RFRENSRUQgPSAyLAogICAgICAgIFJQQ19BVVRIX0JBRFZFUkYgPSAzLAogICAgICAgIFJQQ19B
VVRIX1JFSkVDVEVEVkVSRiA9IDQsCiAgICAgICAgUlBDX0FVVEhfVE9PV0VBSyA9IDUKfTsKIyAx
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnMuaCIgMgojIDQxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L25mcy5oIgogZW51bSBuZnNfc3RhdCB7CiAgICAgICAgTkZTX09L
ID0gMCwKICAgICAgICBORlNFUlJfUEVSTSA9IDEsCiAgICAgICAgTkZTRVJSX05PRU5UID0gMiwK
ICAgICAgICBORlNFUlJfSU8gPSA1LAogICAgICAgIE5GU0VSUl9OWElPID0gNiwKICAgICAgICBO
RlNFUlJfRUFHQUlOID0gMTEsCiAgICAgICAgTkZTRVJSX0FDQ0VTID0gMTMsCiAgICAgICAgTkZT
RVJSX0VYSVNUID0gMTcsCiAgICAgICAgTkZTRVJSX1hERVYgPSAxOCwKICAgICAgICBORlNFUlJf
Tk9ERVYgPSAxOSwKICAgICAgICBORlNFUlJfTk9URElSID0gMjAsCiAgICAgICAgTkZTRVJSX0lT
RElSID0gMjEsCiAgICAgICAgTkZTRVJSX0lOVkFMID0gMjIsCiAgICAgICAgTkZTRVJSX0ZCSUcg
PSAyNywKICAgICAgICBORlNFUlJfTk9TUEMgPSAyOCwKICAgICAgICBORlNFUlJfUk9GUyA9IDMw
LAogICAgICAgIE5GU0VSUl9NTElOSyA9IDMxLAogICAgICAgIE5GU0VSUl9PUE5PVFNVUFAgPSA0
NSwKICAgICAgICBORlNFUlJfTkFNRVRPT0xPTkcgPSA2MywKICAgICAgICBORlNFUlJfTk9URU1Q
VFkgPSA2NiwKICAgICAgICBORlNFUlJfRFFVT1QgPSA2OSwKICAgICAgICBORlNFUlJfU1RBTEUg
PSA3MCwKICAgICAgICBORlNFUlJfUkVNT1RFID0gNzEsCiAgICAgICAgTkZTRVJSX1dGTFVTSCA9
IDk5LAogICAgICAgIE5GU0VSUl9CQURIQU5ETEUgPSAxMDAwMSwKICAgICAgICBORlNFUlJfTk9U
X1NZTkMgPSAxMDAwMiwKICAgICAgICBORlNFUlJfQkFEX0NPT0tJRSA9IDEwMDAzLAogICAgICAg
IE5GU0VSUl9OT1RTVVBQID0gMTAwMDQsCiAgICAgICAgTkZTRVJSX1RPT1NNQUxMID0gMTAwMDUs
CiAgICAgICAgTkZTRVJSX1NFUlZFUkZBVUxUID0gMTAwMDYsCiAgICAgICAgTkZTRVJSX0JBRFRZ
UEUgPSAxMDAwNywKICAgICAgICBORlNFUlJfSlVLRUJPWCA9IDEwMDA4CiB9OwoKCgplbnVtIG5m
c19mdHlwZSB7CiAgICAgICAgTkZOT04gPSAwLAogICAgICAgIE5GUkVHID0gMSwKICAgICAgICBO
RkRJUiA9IDIsCiAgICAgICAgTkZCTEsgPSAzLAogICAgICAgIE5GQ0hSID0gNCwKICAgICAgICBO
RkxOSyA9IDUsCiAgICAgICAgTkZTT0NLID0gNiwKICAgICAgICBORkJBRCA9IDcsCiAgICAgICAg
TkZGSUZPID0gOAp9OwoKCgoKCgpzdHJ1Y3QgbmZzX2ZoIHsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZGF0YVs2NF07Cn07CiMgMTA3ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L25mcy5oIgplbnVtIG5mczNfc3RhYmxlX2hvdyB7CiAgICAg
ICAgTkZTX1VOU1RBQkxFID0gMCwKICAgICAgICBORlNfREFUQV9TWU5DID0gMSwKICAgICAgICBO
RlNfRklMRV9TWU5DID0gMgp9OwojIDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZz
X2ZzX2kuaCIgMgoKCgoKc3RydWN0IG5mc19pbm9kZV9pbmZvIHsKCgoKICAgICAgICBfX3U2NCBm
c2lkOwogICAgICAgIF9fdTY0IGZpbGVpZDsKCgoKCiAgICAgICAgc3RydWN0IG5mc19maCBmaDsK
CgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmxhZ3M7CiMgNDUgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIKICAgICAgICB1bnNpZ25lZCBsb25nIHJlYWRfY2FjaGVf
amlmZmllczsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX2N0aW1lOwogICAgICAgIF9fdTY0IHJl
YWRfY2FjaGVfbXRpbWU7CiAgICAgICAgX191NjQgcmVhZF9jYWNoZV9pc2l6ZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIGF0dHJ0aW1lbzsKICAgICAgICB1bnNpZ25lZCBsb25nIGF0dHJ0aW1lb190
aW1lc3RhbXA7CgoKCgoKICAgICAgICBfX3UzMiBjb29raWV2ZXJmWzJdOwoKCgoKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIHJlYWQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkaXJ0eTsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNvbW1pdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHdy
aXRlYmFjazsKCiAgICAgICAgdW5zaWduZWQgaW50IG5yZWFkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5kaXJ0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuY29t
bWl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5wYWdlczsKCgogICAgICAgIHN0
cnVjdCBpbm9kZSAqaGFzaF9uZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpo
YXNoX3ByZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBuZXh0c2NhbjsKCgogICAgICAgIHN0cnVj
dCBycGNfY3JlZCAqbW1fY3JlZDsKfTsKIyA5MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9uZnNfZnNfaS5oIgpzdHJ1Y3QgbmZzX2xvY2tfaW5mbyB7CiAgICAgICAgdTMyIHN0YXRlOwog
ICAgICAgIHUzMiBmbGFnczsKICAgICAgICBzdHJ1Y3QgbmxtX2hvc3QgKmhvc3Q7Cn07CiMgMjk0
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfaS5oIiAxCgoKCgoKCnN0cnVjdCBzeXN2X2lub2RlX2lu
Zm8gewogICAgICAgIHUzMiBpX2RhdGFbMTArMSsxKzFdOwoKCgoKfTsKIyAyOTUgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvYWZmc19mc19pLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2Eub3V0LmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYS5vdXQu
aCIgMQoKCgpzdHJ1Y3QgZXhlYwp7CiAgdW5zaWduZWQgbG9uZyBhX2luZm87CiAgdW5zaWduZWQg
YV90ZXh0OwogIHVuc2lnbmVkIGFfZGF0YTsKICB1bnNpZ25lZCBhX2JzczsKICB1bnNpZ25lZCBh
X3N5bXM7CiAgdW5zaWduZWQgYV9lbnRyeTsKICB1bnNpZ25lZCBhX3Ryc2l6ZTsKICB1bnNpZ25l
ZCBhX2Ryc2l6ZTsKfTsKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Eub3V0Lmgi
IDIKCgoKCmVudW0gbWFjaGluZV90eXBlIHsKCgoKICBNX09MRFNVTjIgPSAwLAoKCgoKICBNXzY4
MDEwID0gMSwKCgoKCiAgTV82ODAyMCA9IDIsCgoKCgogIE1fU1BBUkMgPSAzLAoKCiAgTV8zODYg
PSAxMDAsCiAgTV9NSVBTMSA9IDE1MSwKICBNX01JUFMyID0gMTUyCn07CiMgMTMxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vcGFnZS5oIiAxCiMgMTMyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Eub3V0
LmgiIDIKIyAxNTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYS5vdXQuaCIKc3RydWN0
IG5saXN0IHsKICB1bmlvbiB7CiAgICBjaGFyICpuX25hbWU7CiAgICBzdHJ1Y3Qgbmxpc3QgKm5f
bmV4dDsKICAgIGxvbmcgbl9zdHJ4OwogIH0gbl91bjsKICB1bnNpZ25lZCBjaGFyIG5fdHlwZTsK
ICBjaGFyIG5fb3RoZXI7CiAgc2hvcnQgbl9kZXNjOwogIHVuc2lnbmVkIGxvbmcgbl92YWx1ZTsK
fTsKIyAyMzUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYS5vdXQuaCIKc3RydWN0IHJl
bG9jYXRpb25faW5mbwp7CgogIGludCByX2FkZHJlc3M7CgogIHVuc2lnbmVkIGludCByX3N5bWJv
bG51bToyNDsKCgoKICB1bnNpZ25lZCBpbnQgcl9wY3JlbDoxOwoKCiAgdW5zaWduZWQgaW50IHJf
bGVuZ3RoOjI7CgoKCgoKCiAgdW5zaWduZWQgaW50IHJfZXh0ZXJuOjE7CgoKCgoKCgogIHVuc2ln
bmVkIGludCByX3BhZDo0OwoKfTsKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Fm
ZnNfZnNfaS5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIg
MQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BhcmFtLmgiIDEKIyA1ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
dGltZS5oIiAyCgoKCnN0cnVjdCB0aW1lc3BlYyB7CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAg
ICAgICBsb25nIHR2X25zZWM7Cn07CiMgMzEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
dGltZS5oIgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nCnRpbWVzcGVjX3RvX2ppZmZp
ZXMoc3RydWN0IHRpbWVzcGVjICp2YWx1ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VjID0g
dmFsdWUtPnR2X3NlYzsKICAgICAgICBsb25nIG5zZWMgPSB2YWx1ZS0+dHZfbnNlYzsKCiAgICAg
ICAgaWYgKHNlYyA+PSAoKCh+MFVMID4+IDEpLTEpIC8gMTAwKSkKICAgICAgICAgICAgICAgIHJl
dHVybiAoKH4wVUwgPj4gMSktMSk7CiAgICAgICAgbnNlYyArPSAxMDAwMDAwMDAwTCAvIDEwMCAt
IDE7CiAgICAgICAgbnNlYyAvPSAxMDAwMDAwMDAwTCAvIDEwMDsKICAgICAgICByZXR1cm4gMTAw
ICogc2VjICsgbnNlYzsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApqaWZmaWVzX3RvX3RpbWVz
cGVjKHVuc2lnbmVkIGxvbmcgamlmZmllcywgc3RydWN0IHRpbWVzcGVjICp2YWx1ZSkKewogICAg
ICAgIHZhbHVlLT50dl9uc2VjID0gKGppZmZpZXMgJSAxMDApICogKDEwMDAwMDAwMDBMIC8gMTAw
KTsKICAgICAgICB2YWx1ZS0+dHZfc2VjID0gamlmZmllcyAvIDEwMDsKfQojIDY3ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25n
Cm1rdGltZSAodW5zaWduZWQgaW50IHllYXIsIHVuc2lnbmVkIGludCBtb24sCiAgICAgICAgdW5z
aWduZWQgaW50IGRheSwgdW5zaWduZWQgaW50IGhvdXIsCiAgICAgICAgdW5zaWduZWQgaW50IG1p
biwgdW5zaWduZWQgaW50IHNlYykKewogICAgICAgIGlmICgwID49IChpbnQpIChtb24gLT0gMikp
IHsKICAgICAgICAgICAgICAgIG1vbiArPSAxMjsKICAgICAgICAgICAgICAgIHllYXIgLT0gMTsK
ICAgICAgICB9CgogICAgICAgIHJldHVybiAoKCgKICAgICAgICAgICAgICAgICh1bnNpZ25lZCBs
b25nKSAoeWVhci80IC0geWVhci8xMDAgKyB5ZWFyLzQwMCArIDM2Nyptb24vMTIgKyBkYXkpICsK
ICAgICAgICAgICAgICAgICAgICAgICAgeWVhciozNjUgLSA3MTk0OTkKICAgICAgICAgICAgKSoy
NCArIGhvdXIKICAgICAgICAgICkqNjAgKyBtaW4KICAgICAgICApKjYwICsgc2VjOwp9CgoKCgpz
dHJ1Y3QgdGltZXZhbCB7CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBzdXNlY29uZHNf
dCB0dl91c2VjOwp9OwoKc3RydWN0IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRlc3dl
c3Q7CiAgICAgICAgaW50IHR6X2RzdHRpbWU7Cn07CgoKCgpleHRlcm4gdm9pZCBkb19nZXR0aW1l
b2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKZXh0ZXJuIHZvaWQgZG9fc2V0dGltZW9mZGF5KHN0
cnVjdCB0aW1ldmFsICp0dik7CmV4dGVybiB2b2lkIGdldF9mYXN0X3RpbWUoc3RydWN0IHRpbWV2
YWwgKnR2KTsKZXh0ZXJuIHZvaWQgKCpkb19nZXRfZmFzdF90aW1lKShzdHJ1Y3QgdGltZXZhbCAq
KTsKIyAxMjEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZS5oIgpzdHJ1Y3QgaXRp
bWVyc3BlYyB7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAgICAgIHN0
cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKfTsKCnN0cnVjdCBpdGltZXJ2YWwgewogICAgICAgIHN0
cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVl
Owp9OwojIDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDIKIyAx
NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIKc3RydWN0IGFmZnNf
ZXh0X2tleSB7CiAgICAgICAgdTMyIGV4dDsKICAgICAgICB1MzIga2V5Owp9OwoKCgoKc3RydWN0
IGFmZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdTMyIGlfb3BlbmNudDsKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIGlfbGlua19sb2NrOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV9leHRfbG9j
azsKCiAgICAgICAgdTMyIGlfYmxrY250OwogICAgICAgIHUzMiBpX2V4dGNudDsKICAgICAgICB1
MzIgKmlfbGM7CiAgICAgICAgdTMyIGlfbGNfc2l6ZTsKICAgICAgICB1MzIgaV9sY19zaGlmdDsK
ICAgICAgICB1MzIgaV9sY19tYXNrOwogICAgICAgIHN0cnVjdCBhZmZzX2V4dF9rZXkgKmlfYWM7
CiAgICAgICAgdTMyIGlfZXh0X2xhc3Q7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICppX2V4
dF9iaDsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIHUzMiBpX3By
b3RlY3Q7CiAgICAgICAgdTMyIGlfbGFzdGFsbG9jOwogICAgICAgIGludCBpX3BhX2NudDsKIyA1
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIKfTsKIyAyOTYgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdWZzX2ZzX2kuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3Vmc19mc19pLmgiCnN0cnVjdCB1ZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5pb24gewog
ICAgICAgICAgICAgICAgX191MzIgaV9kYXRhWzE1XTsKICAgICAgICAgICAgICAgIF9fdTggaV9z
eW1saW5rWzQqMTVdOwogICAgICAgIH0gaV91MTsKICAgICAgICBfX3U2NCBpX3NpemU7CiAgICAg
ICAgX191MzIgaV9mbGFnczsKICAgICAgICBfX3UzMiBpX2dlbjsKICAgICAgICBfX3UzMiBpX3No
YWRvdzsKICAgICAgICBfX3UzMiBpX3VudXNlZDE7CiAgICAgICAgX191MzIgaV91bnVzZWQyOwog
ICAgICAgIF9fdTMyIGlfb2VmdGZsYWc7CiAgICAgICAgX191MTYgaV9vc3luYzsKICAgICAgICBf
X3UzMiBpX2xhc3RmcmFnOwp9OwojIDI5NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9m
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIiAxCiMg
MTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZWZzX2ZzX2kuaCIKdHlwZWRlZiBpbnQz
Ml90IGVmc19ibG9ja190Owp0eXBlZGVmIHVpbnQzMl90IGVmc19pbm9fdDsKCgoKCgoKdHlwZWRl
ZiB1bmlvbiBleHRlbnRfdSB7CiAgICAgICAgdW5zaWduZWQgY2hhciByYXdbOF07CiAgICAgICAg
c3RydWN0IGV4dGVudF9zIHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9tYWdpYzo4
OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV4X2JuOjI0OwogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGV4X2xlbmd0aDo4OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV4
X29mZnNldDoyNDsKICAgICAgICB9IGNvb2tlZDsKfSBlZnNfZXh0ZW50OwoKdHlwZWRlZiBzdHJ1
Y3QgZWRldnMgewogICAgICAgIHNob3J0IG9kZXY7CiAgICAgICAgdW5zaWduZWQgaW50IG5kZXY7
Cn0gZWZzX2RldnM7CgoKCgoKc3RydWN0IGVmc19kaW5vZGUgewogICAgICAgIHVfc2hvcnQgZGlf
bW9kZTsKICAgICAgICBzaG9ydCBkaV9ubGluazsKICAgICAgICB1X3Nob3J0IGRpX3VpZDsKICAg
ICAgICB1X3Nob3J0IGRpX2dpZDsKICAgICAgICBpbnQzMl90IGRpX3NpemU7CiAgICAgICAgaW50
MzJfdCBkaV9hdGltZTsKICAgICAgICBpbnQzMl90IGRpX210aW1lOwogICAgICAgIGludDMyX3Qg
ZGlfY3RpbWU7CiAgICAgICAgdWludDMyX3QgZGlfZ2VuOwogICAgICAgIHNob3J0IGRpX251bWV4
dGVudHM7CiAgICAgICAgdV9jaGFyIGRpX3ZlcnNpb247CiAgICAgICAgdV9jaGFyIGRpX3NwYXJl
OwogICAgICAgIHVuaW9uIGRpX2FkZHIgewogICAgICAgICAgICAgICAgZWZzX2V4dGVudCBkaV9l
eHRlbnRzWzEyXTsKICAgICAgICAgICAgICAgIGVmc19kZXZzIGRpX2RldjsKICAgICAgICB9IGRp
X3U7Cn07CgoKc3RydWN0IGVmc19pbm9kZV9pbmZvIHsKICAgICAgICBpbnQgbnVtZXh0ZW50czsK
ICAgICAgICBpbnQgbGFzdGV4dGVudDsKCiAgICAgICAgZWZzX2V4dGVudCBleHRlbnRzWzEyXTsK
fTsKIyAyOTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3R5cGVzLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2Rh
X2ZzX2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMg
MTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMQojIDEwOSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVfcXVhZF90
OwojIDE2NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCB2ZW51
c19kaXJlbnQgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZF9maWxlbm87CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZF9yZWNsZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBkX3R5cGU7CiAgICAgICAg
dW5zaWduZWQgY2hhciBkX25hbWxlbjsKICAgICAgICBjaGFyIGRfbmFtZVsyNTUgKyAxXTsKfTsK
IyAxOTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgp0eXBlZGVmIHVfbG9u
ZyBWb2x1bWVJZDsKdHlwZWRlZiB1X2xvbmcgVm5vZGVJZDsKdHlwZWRlZiB1X2xvbmcgVW5pcXVl
X3Q7CnR5cGVkZWYgdV9sb25nIEZpbGVWZXJzaW9uOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgVmljZUZp
ZCB7CiAgICBWb2x1bWVJZCBWb2x1bWU7CiAgICBWbm9kZUlkIFZub2RlOwogICAgVW5pcXVlX3Qg
VW5pcXVlOwp9IFZpY2VGaWQ7CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbm9fdCBjb2RhX2YyaShz
dHJ1Y3QgVmljZUZpZCAqZmlkKQp7CiAgICAgICAgaWYgKCAhIGZpZCApCiAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICBpZiAoZmlkLT5Wbm9kZSA9PSAweGZmZmZmZmZlIHx8IGZpZC0+
Vm5vZGUgPT0gMHhmZmZmZmZmZikKICAgICAgICAgICAgICAgIHJldHVybiAoKGZpZC0+Vm9sdW1l
IDw8IDIwKSB8IChmaWQtPlVuaXF1ZSAmIDB4ZmZmZmYpKTsKICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICByZXR1cm4gKGZpZC0+VW5pcXVlICsgKGZpZC0+Vm5vZGU8PDEwKSArIChmaWQtPlZv
bHVtZTw8MjApKTsKfQojIDIzMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgi
CnR5cGVkZWYgdV9pbnQzMl90IHZ1aWRfdDsKdHlwZWRlZiB1X2ludDMyX3QgdmdpZF90OwoKCgoK
c3RydWN0IGNvZGFfY3JlZCB7CiAgICB2dWlkX3QgY3JfdWlkLCBjcl9ldWlkLCBjcl9zdWlkLCBj
cl9mc3VpZDsKICAgIHZnaWRfdCBjcl9ncm91cGlkLCBjcl9lZ2lkLCBjcl9zZ2lkLCBjcl9mc2dp
ZDsKfTsKCgoKCgoKCmVudW0gY29kYV92dHlwZSB7IENfVk5PTiwgQ19WUkVHLCBDX1ZESVIsIENf
VkJMSywgQ19WQ0hSLCBDX1ZMTkssIENfVlNPQ0ssIENfVkZJRk8sIENfVkJBRCB9OwoKc3RydWN0
IGNvZGFfdmF0dHIgewogICAgICAgIGxvbmcgdmFfdHlwZTsKICAgICAgICB1X3Nob3J0IHZhX21v
ZGU7CiAgICAgICAgc2hvcnQgdmFfbmxpbms7CiAgICAgICAgdnVpZF90IHZhX3VpZDsKICAgICAg
ICB2Z2lkX3QgdmFfZ2lkOwogICAgICAgIGxvbmcgdmFfZmlsZWlkOwogICAgICAgIHVfcXVhZF90
IHZhX3NpemU7CiAgICAgICAgbG9uZyB2YV9ibG9ja3NpemU7CiAgICAgICAgc3RydWN0IHRpbWVz
cGVjIHZhX2F0aW1lOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9tdGltZTsKICAgICAgICBz
dHJ1Y3QgdGltZXNwZWMgdmFfY3RpbWU7CiAgICAgICAgdV9sb25nIHZhX2dlbjsKICAgICAgICB1
X2xvbmcgdmFfZmxhZ3M7CiAgICAgICAgdV9xdWFkX3QgdmFfcmRldjsKICAgICAgICB1X3F1YWRf
dCB2YV9ieXRlczsKICAgICAgICB1X3F1YWRfdCB2YV9maWxlcmV2Owp9OwoKCgoKc3RydWN0IGNv
ZGFfc3RhdGZzIHsKICAgIGludDMyX3QgZl9ibG9ja3M7CiAgICBpbnQzMl90IGZfYmZyZWU7CiAg
ICBpbnQzMl90IGZfYmF2YWlsOwogICAgaW50MzJfdCBmX2ZpbGVzOwogICAgaW50MzJfdCBmX2Zm
cmVlOwp9OwojIDMzNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVj
dCBjb2RhX2luX2hkciB7CiAgICB1bnNpZ25lZCBsb25nIG9wY29kZTsKICAgIHVuc2lnbmVkIGxv
bmcgdW5pcXVlOwogICAgdV9zaG9ydCBwaWQ7CiAgICB1X3Nob3J0IHBnaWQ7CiAgICB1X3Nob3J0
IHNpZDsKICAgIHN0cnVjdCBjb2RhX2NyZWQgY3JlZDsKfTsKCgpzdHJ1Y3QgY29kYV9vdXRfaGRy
IHsKICAgIHVuc2lnbmVkIGxvbmcgb3Bjb2RlOwogICAgdW5zaWduZWQgbG9uZyB1bmlxdWU7CiAg
ICB1bnNpZ25lZCBsb25nIHJlc3VsdDsKfTsKCgpzdHJ1Y3QgY29kYV9yb290X291dCB7CiAgICBz
dHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFf
cm9vdF9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaW47Cn07CgoKc3RydWN0IGNvZGFfb3Bl
bl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBp
bnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9vcGVuX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRf
aGRyIG9oOwogICAgdV9xdWFkX3QgZGV2OwogICAgaW5vX3QgaW5vZGU7Cn07CgoKCnN0cnVjdCBj
b2RhX3N0b3JlX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZp
ZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX3N0b3JlX291dCB7CiAgICBzdHJ1Y3Qg
Y29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9yZWxlYXNlX2luIHsKICAgIHN0cnVj
dCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0
cnVjdCBjb2RhX3JlbGVhc2Vfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoK
CnN0cnVjdCBjb2RhX2Nsb3NlX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZp
Y2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX2Nsb3NlX291dCB7CiAg
ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9pb2N0bF9pbiB7CiAg
ICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgY21kOwog
ICAgaW50IGxlbjsKICAgIGludCByd2ZsYWc7CiAgICBjaGFyICpkYXRhOwp9OwoKc3RydWN0IGNv
ZGFfaW9jdGxfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgbGVuOwog
ICAgY2FkZHJfdCBkYXRhOwp9OwoKCgpzdHJ1Y3QgY29kYV9nZXRhdHRyX2luIHsKICAgIHN0cnVj
dCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX2dldGF0
dHJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV92YXR0
ciBhdHRyOwp9OwoKCgpzdHJ1Y3QgY29kYV9zZXRhdHRyX2luIHsKICAgIHN0cnVjdCBjb2RhX2lu
X2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07
CgpzdHJ1Y3QgY29kYV9zZXRhdHRyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsK
fTsKCgpzdHJ1Y3QgY29kYV9hY2Nlc3NfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwog
ICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfYWNjZXNzX291
dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgoKCgoKCnN0cnVjdCBjb2RhX2xv
b2t1cF9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAg
ICBpbnQgbmFtZTsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX2xvb2t1cF9vdXQgewog
ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCB2dHlw
ZTsKfTsKCgoKc3RydWN0IGNvZGFfY3JlYXRlX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBp
aDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7CiAgICBpbnQg
ZXhjbDsKICAgIGludCBtb2RlOwogICAgaW50IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9jcmVhdGVf
b3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBz
dHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKCgpzdHJ1Y3QgY29kYV9yZW1vdmVfaW4gewogICAg
c3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5hbWU7Cn07
CgpzdHJ1Y3QgY29kYV9yZW1vdmVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9
OwoKCnN0cnVjdCBjb2RhX2xpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAg
VmljZUZpZCBzb3VyY2VGaWQ7CiAgICBWaWNlRmlkIGRlc3RGaWQ7CiAgICBpbnQgdG5hbWU7Cn07
CgpzdHJ1Y3QgY29kYV9saW5rX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsK
CgoKc3RydWN0IGNvZGFfcmVuYW1lX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAg
IFZpY2VGaWQgc291cmNlRmlkOwogICAgaW50IHNyY25hbWU7CiAgICBWaWNlRmlkIGRlc3RGaWQ7
CiAgICBpbnQgZGVzdG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9yZW5hbWVfb3V0IHsKICAgIHN0cnVj
dCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX21rZGlyX2luIHsKICAgIHN0cnVj
dCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRy
IGF0dHI7CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBjb2RhX21rZGlyX291dCB7CiAgICBzdHJ1
Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0
dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfcm1kaXJfaW4gewogICAgc3RydWN0IGNvZGFfaW5f
aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9y
bWRpcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFf
c3ltbGlua19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7
CiAgICBpbnQgc3JjbmFtZTsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7CiAgICBpbnQgdG5h
bWU7Cn07CgpzdHJ1Y3QgY29kYV9zeW1saW5rX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRy
IG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9yZWFkbGlua19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9o
ZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9yZWFkbGlua19vdXQgewog
ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGludCBjb3VudDsKICAgIGNhZGRyX3QgZGF0
YTsKfTsKCgoKc3RydWN0IGNvZGFfZnN5bmNfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGlo
OwogICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfZnN5bmNfb3V0IHsKICAgIHN0cnVj
dCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3ZnZXRfaW4gewogICAgc3RydWN0
IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfdmdldF9v
dXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGlu
dCB2dHlwZTsKfTsKIyA2MTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgpz
dHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAg
ICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IHsK
ICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIENvZGFGaWQ7Cn07CgoKCnN0
cnVjdCBjb2RhX3phcGRpcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZp
Y2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwdm5vZGVfb3V0IHsKICAgIHN0cnVj
dCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7CiAgICBWaWNlRmlk
IFZGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v
dXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoKCgpzdHJ1Y3QgY29kYV9yZXBsYWNl
X291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBOZXdGaWQ7CiAg
ICBWaWNlRmlkIE9sZEZpZDsKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2J5X2ZkX2luIHsKICAgIHN0
cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsK
CnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7
CiAgICBpbnQgZmQ7CgoKICAgIHN0cnVjdCBmaWxlICpmaDsKCn07CgoKc3RydWN0IGNvZGFfb3Bl
bl9ieV9wYXRoX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZp
ZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9vdXQgewogICAg
c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgICAgICBpbnQgcGF0aDsKfTsKCgpzdHJ1Y3QgY29k
YV9zdGF0ZnNfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKc3RydWN0IGNvZGFf
c3RhdGZzX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFf
c3RhdGZzIHN0YXQ7Cn07CiMgNzAzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEu
aCIKdW5pb24gaW5wdXRBcmdzIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIHN0cnVj
dCBjb2RhX29wZW5faW4gY29kYV9vcGVuOwogICAgc3RydWN0IGNvZGFfc3RvcmVfaW4gY29kYV9z
dG9yZTsKICAgIHN0cnVjdCBjb2RhX3JlbGVhc2VfaW4gY29kYV9yZWxlYXNlOwogICAgc3RydWN0
IGNvZGFfY2xvc2VfaW4gY29kYV9jbG9zZTsKICAgIHN0cnVjdCBjb2RhX2lvY3RsX2luIGNvZGFf
aW9jdGw7CiAgICBzdHJ1Y3QgY29kYV9nZXRhdHRyX2luIGNvZGFfZ2V0YXR0cjsKICAgIHN0cnVj
dCBjb2RhX3NldGF0dHJfaW4gY29kYV9zZXRhdHRyOwogICAgc3RydWN0IGNvZGFfYWNjZXNzX2lu
IGNvZGFfYWNjZXNzOwogICAgc3RydWN0IGNvZGFfbG9va3VwX2luIGNvZGFfbG9va3VwOwogICAg
c3RydWN0IGNvZGFfY3JlYXRlX2luIGNvZGFfY3JlYXRlOwogICAgc3RydWN0IGNvZGFfcmVtb3Zl
X2luIGNvZGFfcmVtb3ZlOwogICAgc3RydWN0IGNvZGFfbGlua19pbiBjb2RhX2xpbms7CiAgICBz
dHJ1Y3QgY29kYV9yZW5hbWVfaW4gY29kYV9yZW5hbWU7CiAgICBzdHJ1Y3QgY29kYV9ta2Rpcl9p
biBjb2RhX21rZGlyOwogICAgc3RydWN0IGNvZGFfcm1kaXJfaW4gY29kYV9ybWRpcjsKICAgIHN0
cnVjdCBjb2RhX3N5bWxpbmtfaW4gY29kYV9zeW1saW5rOwogICAgc3RydWN0IGNvZGFfcmVhZGxp
bmtfaW4gY29kYV9yZWFkbGluazsKICAgIHN0cnVjdCBjb2RhX2ZzeW5jX2luIGNvZGFfZnN5bmM7
CiAgICBzdHJ1Y3QgY29kYV92Z2V0X2luIGNvZGFfdmdldDsKICAgIHN0cnVjdCBjb2RhX29wZW5f
YnlfZmRfaW4gY29kYV9vcGVuX2J5X2ZkOwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX2lu
IGNvZGFfb3Blbl9ieV9wYXRoOwogICAgc3RydWN0IGNvZGFfc3RhdGZzX2luIGNvZGFfc3RhdGZz
Owp9OwoKdW5pb24gb3V0cHV0QXJncyB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAg
c3RydWN0IGNvZGFfcm9vdF9vdXQgY29kYV9yb290OwogICAgc3RydWN0IGNvZGFfb3Blbl9vdXQg
Y29kYV9vcGVuOwogICAgc3RydWN0IGNvZGFfaW9jdGxfb3V0IGNvZGFfaW9jdGw7CiAgICBzdHJ1
Y3QgY29kYV9nZXRhdHRyX291dCBjb2RhX2dldGF0dHI7CiAgICBzdHJ1Y3QgY29kYV9sb29rdXBf
b3V0IGNvZGFfbG9va3VwOwogICAgc3RydWN0IGNvZGFfY3JlYXRlX291dCBjb2RhX2NyZWF0ZTsK
ICAgIHN0cnVjdCBjb2RhX21rZGlyX291dCBjb2RhX21rZGlyOwogICAgc3RydWN0IGNvZGFfcmVh
ZGxpbmtfb3V0IGNvZGFfcmVhZGxpbms7CiAgICBzdHJ1Y3QgY29kYV92Z2V0X291dCBjb2RhX3Zn
ZXQ7CiAgICBzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IGNvZGFfcHVyZ2V1c2VyOwogICAgc3Ry
dWN0IGNvZGFfemFwZmlsZV9vdXQgY29kYV96YXBmaWxlOwogICAgc3RydWN0IGNvZGFfemFwZGly
X291dCBjb2RhX3phcGRpcjsKICAgIHN0cnVjdCBjb2RhX3phcHZub2RlX291dCBjb2RhX3phcHZu
b2RlOwogICAgc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IGNvZGFfcHVyZ2VmaWQ7CiAgICBzdHJ1
Y3QgY29kYV9yZXBsYWNlX291dCBjb2RhX3JlcGxhY2U7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5
X2ZkX291dCBjb2RhX29wZW5fYnlfZmQ7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfb3V0
IGNvZGFfb3Blbl9ieV9wYXRoOwogICAgc3RydWN0IGNvZGFfc3RhdGZzX291dCBjb2RhX3N0YXRm
czsKfTsKCnVuaW9uIGNvZGFfZG93bmNhbGxzIHsKCgogICAgc3RydWN0IGNvZGFfcHVyZ2V1c2Vy
X291dCBwdXJnZXVzZXI7CiAgICBzdHJ1Y3QgY29kYV96YXBmaWxlX291dCB6YXBmaWxlOwogICAg
c3RydWN0IGNvZGFfemFwZGlyX291dCB6YXBkaXI7CiAgICBzdHJ1Y3QgY29kYV96YXB2bm9kZV9v
dXQgemFwdm5vZGU7CiAgICBzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgcHVyZ2VmaWQ7CiAgICBz
dHJ1Y3QgY29kYV9yZXBsYWNlX291dCByZXBsYWNlOwp9OwoKCgoKCgoKc3RydWN0IFZpY2VJb2N0
bCB7CiAgICAgICAgY2FkZHJfdCBpbiwgb3V0OwogICAgICAgIHNob3J0IGluX3NpemU7CiAgICAg
ICAgc2hvcnQgb3V0X3NpemU7Cn07CgpzdHJ1Y3QgUGlvY3RsRGF0YSB7CiAgICAgICAgY29uc3Qg
Y2hhciAqcGF0aDsKICAgICAgICBpbnQgZm9sbG93OwogICAgICAgIHN0cnVjdCBWaWNlSW9jdGwg
dmk7Cn07CiMgNzk3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0
IGNvZGFfbW91bnRfZGF0YSB7CiAgICAgICAgaW50IHZlcnNpb247CiAgICAgICAgaW50IGZkOwp9
OwojIDE1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAyCgoKCgpz
dHJ1Y3QgY29kYV9pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgVmljZUZpZCBjX2ZpZDsKICAg
ICAgICB1X3Nob3J0IGNfZmxhZ3M7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjX2NpbGlzdDsK
ICAgICAgICBzdHJ1Y3QgZmlsZSAqY19jb250YWluZXI7CiAgICAgICAgdW5zaWduZWQgaW50IGNf
Y29udGNvdW50OwogICAgICAgIHN0cnVjdCBjb2RhX2NyZWQgY19jYWNoZWRfY3JlZDsKICAgICAg
ICB1bnNpZ25lZCBpbnQgY19jYWNoZWRfcGVybTsKfTsKCgoKCgoKCmludCBjb2RhX2Nub2RlX21h
a2Uoc3RydWN0IGlub2RlICoqLCBzdHJ1Y3QgVmljZUZpZCAqLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sg
Kik7CmludCBjb2RhX2Nub2RlX21ha2VjdGwoc3RydWN0IGlub2RlICoqaW5vZGUsIHN0cnVjdCBz
dXBlcl9ibG9jayAqc2IpOwpzdHJ1Y3QgaW5vZGUgKmNvZGFfZmlkX3RvX2lub2RlKFZpY2VGaWQg
KmZpZCwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnZvaWQgY29kYV9yZXBsYWNlX2ZpZChzdHJ1
Y3QgaW5vZGUgKiwgVmljZUZpZCAqLCBWaWNlRmlkICopOwojIDI5OSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9y
b21mc19mc19pLmgiIDEKCgoKCgpzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBpX21ldGFzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kYXRhb2Zmc2V0
Owp9OwojIDMwMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zaG1lbV9mcy5oIiAxCiMgMTYgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvc2htZW1fZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVu
c2lnbmVkIGxvbmcgdmFsOwp9IHN3cF9lbnRyeV90OwoKc3RydWN0IHNobWVtX2lub2RlX2luZm8g
ewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9pbmRl
eDsKICAgICAgICBzd3BfZW50cnlfdCBpX2RpcmVjdFsxNl07CiAgICAgICAgc3dwX2VudHJ5X3Qg
KippX2luZGlyZWN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcHBlZDsKICAgICAgICBpbnQg
bG9ja2VkOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKfTsKCnN0cnVjdCBzaG1lbV9z
Yl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9ibG9ja3M7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmcmVlX2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9pbm9kZXM7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBmcmVlX2lub2RlczsKICAgICAgICBzcGlubG9ja190IHN0YXRf
bG9jazsKfTsKIyAzMDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21iX2ZzX2kuaCIgMQojIDEzICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NtYl9mc19pLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
c21iX2ZzX2kuaCIgMgoKCgoKc3RydWN0IHNtYl9pbm9kZV9pbmZvIHsKCgoKCgogICAgICAgIHVu
c2lnbmVkIGludCBvcGVuOwogICAgICAgIF9fdTE2IGZpbGVpZDsKICAgICAgICBfX3UxNiBhdHRy
OwoKICAgICAgICBfX3UxNiBhY2Nlc3M7CiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBvbGRtdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGNsb3NlZDsKICAgICAg
ICB1bnNpZ25lZCBvcGVuZXJzOwp9OwojIDMwMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9oZnNfZnNfaS5oIiAx
CiMgMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaGZzX2ZzX2kuaCIKc3RydWN0IGhm
c19pbm9kZV9pbmZvIHsKICAgICAgICBpbnQgbWFnaWM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
bW11X3ByaXZhdGU7CiAgICAgICAgc3RydWN0IGhmc19jYXRfZW50cnkgKmVudHJ5OwoKCiAgICAg
ICAgc3RydWN0IGhmc19mb3JrICpmb3JrOwogICAgICAgIGludCBjb252ZXJ0OwoKCiAgICAgICAg
aW5vX3QgZmlsZV90eXBlOwogICAgICAgIGNoYXIgZGlyX3NpemU7CgoKICAgICAgICBjb25zdCBz
dHJ1Y3QgaGZzX2hkcl9sYXlvdXQgKmRlZmF1bHRfbGF5b3V0OwogICAgICAgIHN0cnVjdCBoZnNf
aGRyX2xheW91dCAqbGF5b3V0OwoKCiAgICAgICAgaW50IHR6X3NlY29uZHN3ZXN0OwoKCiAgICAg
ICAgdm9pZCAoKmRfZHJvcF9vcCkoc3RydWN0IGRlbnRyeSAqLCBjb25zdCBpbm9fdCk7Cn07CiMg
MzAzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2FkZnNfZnNfaS5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvYWRmc19mc19pLmgiCnN0cnVjdCBhZGZzX2lub2RlX2luZm8gewogICAgICAg
IHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYXJlbnRf
aWQ7CiAgICAgICAgX191MzIgbG9hZGFkZHI7CiAgICAgICAgX191MzIgZXhlY2FkZHI7CiAgICAg
ICAgdW5zaWduZWQgaW50IGZpbGV0eXBlOwogICAgICAgIHVuc2lnbmVkIGludCBhdHRyOwogICAg
ICAgIGludCBzdGFtcGVkOjE7Cn07CiMgMzA0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAx
CiMgMTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcW54NF9mc19pLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xbnh0eXBlcy5oIiAxCiMgMTUgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvcW54dHlwZXMuaCIKdHlwZWRlZiBfX3UxNiBxbng0X254dG50X3Q7
CnR5cGVkZWYgX191OCBxbng0X2Z0eXBlX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgX191
MzIgeHRudF9ibGs7CiAgICAgICAgX191MzIgeHRudF9zaXplOwp9IHFueDRfeHRudF90OwoKdHlw
ZWRlZiBfX3UxNiBxbng0X21vZGVfdDsKdHlwZWRlZiBfX3UxNiBxbng0X211aWRfdDsKdHlwZWRl
ZiBfX3UxNiBxbng0X21naWRfdDsKdHlwZWRlZiBfX3UzMiBxbng0X29mZl90Owp0eXBlZGVmIF9f
dTE2IHFueDRfbmxpbmtfdDsKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xbng0
X2ZzX2kuaCIgMgoKCgoKc3RydWN0IHFueDRfaW5vZGVfaW5mbyB7CiAgICAgICAgY2hhciBpX3Jl
c2VydmVkWzE2XTsKICAgICAgICBxbng0X29mZl90IGlfc2l6ZTsKICAgICAgICBxbng0X3h0bnRf
dCBpX2ZpcnN0X3h0bnQ7CiAgICAgICAgX191MzIgaV94YmxrOwogICAgICAgIF9fczMyIGlfZnRp
bWU7CiAgICAgICAgX19zMzIgaV9tdGltZTsKICAgICAgICBfX3MzMiBpX2F0aW1lOwogICAgICAg
IF9fczMyIGlfY3RpbWU7CiAgICAgICAgcW54NF9ueHRudF90IGlfbnVtX3h0bnRzOwogICAgICAg
IHFueDRfbW9kZV90IGlfbW9kZTsKICAgICAgICBxbng0X211aWRfdCBpX3VpZDsKICAgICAgICBx
bng0X21naWRfdCBpX2dpZDsKICAgICAgICBxbng0X25saW5rX3QgaV9ubGluazsKICAgICAgICBf
X3U4IGlfemVyb1s0XTsKICAgICAgICBxbng0X2Z0eXBlX3QgaV90eXBlOwogICAgICAgIF9fdTgg
aV9zdGF0dXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKfTsKIyAzMDUgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfaS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9saXN0LmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Jl
aXNlcmZzX2ZzX2kuaCIgMgoKc3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8gewogIF9fdTMyIGlf
a2V5IFs0XTsKCgoKCgoKICBpbnQgaV92ZXJzaW9uOwoKICBpbnQgaV9wYWNrX29uX2Nsb3NlIDsK
CiAgX191MzIgaV9maXJzdF9kaXJlY3RfYnl0ZTsKIyAzNSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9yZWlzZXJmc19mc19pLmgiCiAgaW50IGlfcHJlYWxsb2NfYmxvY2s7CiAgaW50IGlf
cHJlYWxsb2NfY291bnQ7CiAgc3RydWN0IGxpc3RfaGVhZCBpX3ByZWFsbG9jX2xpc3Q7CgoKCgog
IGludCBub3BhY2s7Cn07CiMgMzA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Jmc19mc19pLmgiIDEKIyAxMiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIgpzdHJ1Y3QgYmZzX2lub2Rl
X2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kc2tfaW5vOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgaV9zYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2VibG9jazsKfTsKIyAzMDcg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvdWRmX2ZzX2kuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3VkZl9mc19pLmgiCnR5cGVkZWYgc3RydWN0CnsKICAgICAgICBfX3UzMiBsb2dpY2Fs
QmxvY2tOdW07CiAgICAgICAgX191MTYgcGFydGl0aW9uUmVmZXJlbmNlTnVtOwp9IGxiX2FkZHI7
CgoKc3RydWN0IHVkZl9pbm9kZV9pbmZvCnsKICAgICAgICBsb25nIGlfdW10aW1lOwogICAgICAg
IGxvbmcgaV91Y3RpbWU7CiAgICAgICAgbG9uZyBpX2NydGltZTsKICAgICAgICBsb25nIGlfdWNy
dGltZTsKCiAgICAgICAgbGJfYWRkciBpX2xvY2F0aW9uOwogICAgICAgIF9fdTY0IGlfdW5pcXVl
OwogICAgICAgIF9fdTMyIGlfbGVuRUF0dHI7CiAgICAgICAgX191MzIgaV9sZW5BbGxvYzsKICAg
ICAgICBfX3U2NCBpX2xlbkV4dGVudHM7CiAgICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2Jsb2Nr
OwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19nb2FsOwogICAgICAgIHVuc2lnbmVkIGlfYWxs
b2NfdHlwZSA6IDM7CiAgICAgICAgdW5zaWduZWQgaV9leHRlbmRlZF9mZSA6IDE7CiAgICAgICAg
dW5zaWduZWQgaV9zdHJhdF80MDk2IDogMTsKICAgICAgICB1bnNpZ25lZCBpX25ld19pbm9kZSA6
IDE7CiAgICAgICAgdW5zaWduZWQgcmVzZXJ2ZWQgOiAyNjsKfTsKIyAzMDggIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbmNwX2ZzX2kuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9m
c19pLmgiCnN0cnVjdCBuY3BfaW5vZGVfaW5mbyB7CiAgICAgICAgX191MzIgZGlyRW50TnVtIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIERvc0Rpck51bSBfX2F0dHJpYnV0
ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiB2b2xOdW1iZXIgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191MzIgbndhdHRyOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgb3Bl
bl9zZW07CiAgICAgICAgYXRvbWljX3Qgb3BlbmVkOwogICAgICAgIGludCBhY2Nlc3M7CiAgICAg
ICAgX191MzIgc2VydmVyX2ZpbGVfaGFuZGxlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTggb3Blbl9jcmVhdGVfYWN0aW9uIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTggZmlsZV9oYW5kbGVbNl0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMgMzA5
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3Byb2NfZnNfaS5oIiAxCnN0cnVjdCBwcm9jX2lub2RlX2luZm8gewog
ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKICAgICAgICBpbnQgdHlwZTsKICAgICAg
ICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgKCpwcm9jX2dldF9saW5rKShzdHJ1Y3QgaW5v
ZGUgKiwgc3RydWN0IGRlbnRyeSAqKiwgc3RydWN0IHZmc21vdW50ICoqKTsKICAgICAgICAgICAg
ICAgIGludCAoKnByb2NfcmVhZCkoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBjaGFyICpwYWdl
KTsKICAgICAgICB9IG9wOwogICAgICAgIHN0cnVjdCBmaWxlICpmaWxlOwp9OwojIDMxMCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC91c2JkZXZfZnNfaS5oIiAxCnN0cnVjdCB1c2JfZGV2aWNlOwpzdHJ1Y3QgdXNi
X2J1czsKCnN0cnVjdCB1c2JkZXZfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBkbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHVuaW9uIHsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JfZGV2aWNlICpkZXY7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgdXNiX2J1cyAqYnVzOwogICAgICAgIH0gcDsKfTsKIyAzMTEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
amZmczJfZnNfaS5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvamZmczJf
ZnNfaS5oIgpzdHJ1Y3QgamZmczJfaW5vZGVfaW5mbyB7CiMgMjYgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvamZmczJfZnNfaS5oIgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwoK
CiAgICAgICAgX191MzIgaGlnaGVzdF92ZXJzaW9uOwoKCiAgICAgICAgc3RydWN0IGpmZnMyX25v
ZGVfZnJhZyAqZnJhZ2xpc3Q7CgoKCgoKCiAgICAgICAgc3RydWN0IGpmZnMyX2Z1bGxfZG5vZGUg
Km1ldGFkYXRhOwoKCiAgICAgICAgc3RydWN0IGpmZnMyX2Z1bGxfZGlyZW50ICpkZW50czsKCgog
ICAgICAgIHN0cnVjdCBqZmZzMl9pbm9kZV9jYWNoZSAqaW5vY2FjaGU7CgoKCgoKICAgICAgICBf
X3UxNiBmbGFnczsKICAgICAgICBfX3U4IHVzZXJjb21wcjsKfTsKIyAzMTIgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY3JhbWZzX2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IGNyYW1mc19zYl9pbmZvIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtYWdpYzsKICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBzaXplOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGJsb2NrczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmaWxl
czsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKfTsKIyAzMTMg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDMzOSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgaWF0dHIgewogICAgICAgIHVuc2lnbmVkIGlu
dCBpYV92YWxpZDsKICAgICAgICB1bW9kZV90IGlhX21vZGU7CiAgICAgICAgdWlkX3QgaWFfdWlk
OwogICAgICAgIGdpZF90IGlhX2dpZDsKICAgICAgICBsb2ZmX3QgaWFfc2l6ZTsKICAgICAgICB0
aW1lX3QgaWFfYXRpbWU7CiAgICAgICAgdGltZV90IGlhX210aW1lOwogICAgICAgIHRpbWVfdCBp
YV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaWFfYXR0cl9mbGFnczsKfTsKIyAzNjMgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3F1b3RhLmgiIDEKIyA0MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9x
dW90YS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXJybm8uaCIgMQojIDQz
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiIDIKIyAxMDkgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKc3RydWN0IGRxYmxrIHsKICAgICAgICBfX3Uz
MiBkcWJfYmhhcmRsaW1pdDsKICAgICAgICBfX3UzMiBkcWJfYnNvZnRsaW1pdDsKICAgICAgICBf
X3UzMiBkcWJfY3VyYmxvY2tzOwogICAgICAgIF9fdTMyIGRxYl9paGFyZGxpbWl0OwogICAgICAg
IF9fdTMyIGRxYl9pc29mdGxpbWl0OwogICAgICAgIF9fdTMyIGRxYl9jdXJpbm9kZXM7CiAgICAg
ICAgdGltZV90IGRxYl9idGltZTsKICAgICAgICB0aW1lX3QgZHFiX2l0aW1lOwp9OwojIDEzNCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgZHFzdGF0cyB7CiAg
ICAgICAgX191MzIgbG9va3VwczsKICAgICAgICBfX3UzMiBkcm9wczsKICAgICAgICBfX3UzMiBy
ZWFkczsKICAgICAgICBfX3UzMiB3cml0ZXM7CiAgICAgICAgX191MzIgY2FjaGVfaGl0czsKICAg
ICAgICBfX3UzMiBhbGxvY2F0ZWRfZHF1b3RzOwogICAgICAgIF9fdTMyIGZyZWVfZHF1b3RzOwog
ICAgICAgIF9fdTMyIHN5bmNzOwp9OwoKCgpleHRlcm4gaW50IG5yX2RxdW90cywgbnJfZnJlZV9k
cXVvdHM7CmV4dGVybiBpbnQgZHF1b3Rfcm9vdF9zcXVhc2g7CiMgMTU4ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcXVvdCB7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBkcV9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZHFfaW51c2U7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBkcV9mcmVlOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGRx
X3dhaXRfbG9jazsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0X2ZyZWU7CiAgICAg
ICAgaW50IGRxX2NvdW50OwoKCiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICpkcV9zYjsKICAg
ICAgICB1bnNpZ25lZCBpbnQgZHFfaWQ7CiAgICAgICAga2Rldl90IGRxX2RldjsKICAgICAgICBz
aG9ydCBkcV90eXBlOwogICAgICAgIHNob3J0IGRxX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZHFfcmVmZXJlbmNlZDsKCiAgICAgICAgc3RydWN0IGRxYmxrIGRxX2RxYjsKfTsKIyAzNjQg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW91bnQuaCIgMQojIDM2NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCgoKCgpzdHJ1Y3QgcGFnZTsKc3RydWN0IGFkZHJlc3Nfc3BhY2U7CnN0cnVj
dCBraW9idWY7CgpzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHsKICAgICAgICBpbnQg
KCp3cml0ZXBhZ2UpKHN0cnVjdCBwYWdlICopOwogICAgICAgIGludCAoKnJlYWRwYWdlKShzdHJ1
Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICAgICAgICBpbnQgKCpzeW5jX3BhZ2UpKHN0cnVj
dCBwYWdlICopOwogICAgICAgIGludCAoKnByZXBhcmVfd3JpdGUpKHN0cnVjdCBmaWxlICosIHN0
cnVjdCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAgICAgICAgaW50ICgqY29tbWl0X3dy
aXRlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwoK
ICAgICAgICBpbnQgKCpibWFwKShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb25nKTsKCiAgICAg
ICAgaW50ICgqZGlyZWN0X0lPKShpbnQsIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qga2lvYnVmICos
IHVuc2lnbmVkIGxvbmcsIGludCk7Cn07CgpzdHJ1Y3QgYWRkcmVzc19zcGFjZSB7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBjbGVhbl9wYWdlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRp
cnR5X3BhZ2VzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbG9ja2VkX3BhZ2VzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgbnJwYWdlczsKICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVy
YXRpb25zICphX29wczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhvc3Q7CiAgICAgICAgc3RydWN0
IHZtX2FyZWFfc3RydWN0ICppX21tYXA7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpp
X21tYXBfc2hhcmVkOwogICAgICAgIHNwaW5sb2NrX3QgaV9zaGFyZWRfbG9jazsKICAgICAgICBp
bnQgZ2ZwX21hc2s7Cn07CgpzdHJ1Y3QgY2hhcl9kZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgaGFzaDsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBkZXZfdCBkZXY7CiAg
ICAgICAgYXRvbWljX3Qgb3BlbmVyczsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKfTsK
CnN0cnVjdCBibG9ja19kZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmRfaGFzaDsK
ICAgICAgICBhdG9taWNfdCBiZF9jb3VudDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBiZF9pbm9k
ZTsKICAgICAgICBkZXZfdCBiZF9kZXY7CiAgICAgICAgaW50IGJkX29wZW5lcnM7CiAgICAgICAg
Y29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpiZF9vcDsKICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlIGJkX3NlbTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2lub2RlczsK
fTsKCnN0cnVjdCBpbm9kZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2hhc2g7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBpX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2Rl
bnRyeTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2J1ZmZlcnM7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2RhdGFfYnVmZmVyczsKCiAgICAgICAgdW5zaWduZWQg
bG9uZyBpX2lubzsKICAgICAgICBhdG9taWNfdCBpX2NvdW50OwogICAgICAgIGtkZXZfdCBpX2Rl
djsKICAgICAgICB1bW9kZV90IGlfbW9kZTsKICAgICAgICBubGlua190IGlfbmxpbms7CiAgICAg
ICAgdWlkX3QgaV91aWQ7CiAgICAgICAgZ2lkX3QgaV9naWQ7CiAgICAgICAga2Rldl90IGlfcmRl
djsKICAgICAgICBsb2ZmX3QgaV9zaXplOwogICAgICAgIHRpbWVfdCBpX2F0aW1lOwogICAgICAg
IHRpbWVfdCBpX210aW1lOwogICAgICAgIHRpbWVfdCBpX2N0aW1lOwogICAgICAgIHVuc2lnbmVk
IGludCBpX2Jsa2JpdHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Jsa3NpemU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBpX2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfdmVyc2lvbjsK
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2VtOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
aV96b21iaWU7CiAgICAgICAgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgKmlfb3A7CiAgICAgICAg
c3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2Nr
ICppX3NiOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGlfd2FpdDsKICAgICAgICBzdHJ1Y3Qg
ZmlsZV9sb2NrICppX2Zsb2NrOwogICAgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICppX21hcHBp
bmc7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgaV9kYXRhOwogICAgICAgIHN0cnVjdCBk
cXVvdCAqaV9kcXVvdFsyXTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RldmljZXM7CiAg
ICAgICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqaV9waXBlOwogICAgICAgIHN0cnVjdCBibG9j
a19kZXZpY2UgKmlfYmRldjsKICAgICAgICBzdHJ1Y3QgY2hhcl9kZXZpY2UgKmlfY2RldjsKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBpX2Rub3RpZnlfbWFzazsKICAgICAgICBzdHJ1Y3QgZG5vdGlm
eV9zdHJ1Y3QgKmlfZG5vdGlmeTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX3N0YXRlOwoKICAg
ICAgICB1bnNpZ25lZCBpbnQgaV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlfc29jazsK
CiAgICAgICAgYXRvbWljX3QgaV93cml0ZWNvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBpX2F0
dHJfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW5lcmF0aW9uOwogICAgICAgIHVuaW9uIHsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9pbm9kZV9pbmZvIG1pbml4X2k7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIGV4dDJfaTsKICAgICAgICAgICAgICAgIHN0cnVj
dCBocGZzX2lub2RlX2luZm8gaHBmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IG50ZnNfaW5v
ZGVfaW5mbyBudGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbXNkb3NfaW5vZGVfaW5mbyBt
c2Rvc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHVtc2Rvc19pbm9kZV9pbmZvIHVtc2Rvc19p
OwogICAgICAgICAgICAgICAgc3RydWN0IGlzb19pbm9kZV9pbmZvIGlzb2ZzX2k7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgbmZzX2lub2RlX2luZm8gbmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc3lzdl9pbm9kZV9pbmZvIHN5c3ZfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZmZzX2lu
b2RlX2luZm8gYWZmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHVmc19pbm9kZV9pbmZvIHVm
c19pOwogICAgICAgICAgICAgICAgc3RydWN0IGVmc19pbm9kZV9pbmZvIGVmc19pOwogICAgICAg
ICAgICAgICAgc3RydWN0IHJvbWZzX2lub2RlX2luZm8gcm9tZnNfaTsKICAgICAgICAgICAgICAg
IHN0cnVjdCBzaG1lbV9pbm9kZV9pbmZvIHNobWVtX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
Y29kYV9pbm9kZV9pbmZvIGNvZGFfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBzbWJfaW5vZGVf
aW5mbyBzbWJmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGhmc19pbm9kZV9pbmZvIGhmc19p
OwogICAgICAgICAgICAgICAgc3RydWN0IGFkZnNfaW5vZGVfaW5mbyBhZGZzX2k7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9pbmZvIHFueDRfaTsKICAgICAgICAgICAgICAgIHN0
cnVjdCByZWlzZXJmc19pbm9kZV9pbmZvIHJlaXNlcmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgYmZzX2lub2RlX2luZm8gYmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX2lub2Rl
X2luZm8gdWRmX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmNwX2lub2RlX2luZm8gbmNwZnNf
aTsKICAgICAgICAgICAgICAgIHN0cnVjdCBwcm9jX2lub2RlX2luZm8gcHJvY19pOwogICAgICAg
ICAgICAgICAgc3RydWN0IHNvY2tldCBzb2NrZXRfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCB1
c2JkZXZfaW5vZGVfaW5mbyB1c2JkZXZfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBqZmZzMl9p
bm9kZV9pbmZvIGpmZnMyX2k7CiAgICAgICAgICAgICAgICB2b2lkICpnZW5lcmljX2lwOwogICAg
ICAgIH0gdTsKfTsKCnN0cnVjdCBmb3duX3N0cnVjdCB7CiAgICAgICAgaW50IHBpZDsKICAgICAg
ICB1aWRfdCB1aWQsIGV1aWQ7CiAgICAgICAgaW50IHNpZ251bTsKfTsKCnN0cnVjdCBmaWxlIHsK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZfbGlzdDsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpm
X2RlbnRyeTsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKmZfdmZzbW50OwogICAgICAgIHN0cnVj
dCBmaWxlX29wZXJhdGlvbnMgKmZfb3A7CiAgICAgICAgYXRvbWljX3QgZl9jb3VudDsKICAgICAg
ICB1bnNpZ25lZCBpbnQgZl9mbGFnczsKICAgICAgICBtb2RlX3QgZl9tb2RlOwogICAgICAgIGxv
ZmZfdCBmX3BvczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZfcmVhZGEsIGZfcmFtYXgsIGZfcmFl
bmQsIGZfcmFsZW4sIGZfcmF3aW47CiAgICAgICAgc3RydWN0IGZvd25fc3RydWN0IGZfb3duZXI7
CiAgICAgICAgdW5zaWduZWQgaW50IGZfdWlkLCBmX2dpZDsKICAgICAgICBpbnQgZl9lcnJvcjsK
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmX3ZlcnNpb247CgoKICAgICAgICB2b2lkICpwcml2YXRl
X2RhdGE7CgoKICAgICAgICBzdHJ1Y3Qga2lvYnVmICpmX2lvYnVmOwogICAgICAgIGxvbmcgZl9p
b2J1Zl9sb2NrOwp9OwpleHRlcm4gc3BpbmxvY2tfdCBmaWxlc19sb2NrOwoKCgoKCgpleHRlcm4g
aW50IGluaXRfcHJpdmF0ZV9maWxlKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50
KTsKIyA1NTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBzdHJ1
Y3QgZmlsZXNfc3RydWN0ICpmbF9vd25lcl90OwoKc3RydWN0IGZpbGVfbG9jayB7CiAgICAgICAg
c3RydWN0IGZpbGVfbG9jayAqZmxfbmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2xp
bms7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmbF9ibG9jazsKICAgICAgICBmbF9vd25lcl90
IGZsX293bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBmbF9waWQ7CiAgICAgICAgd2FpdF9xdWV1
ZV9oZWFkX3QgZmxfd2FpdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmxfZmlsZTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGZsX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxfdHlwZTsKICAg
ICAgICBsb2ZmX3QgZmxfc3RhcnQ7CiAgICAgICAgbG9mZl90IGZsX2VuZDsKCiAgICAgICAgdm9p
ZCAoKmZsX25vdGlmeSkoc3RydWN0IGZpbGVfbG9jayAqKTsKICAgICAgICB2b2lkICgqZmxfaW5z
ZXJ0KShzdHJ1Y3QgZmlsZV9sb2NrICopOwogICAgICAgIHZvaWQgKCpmbF9yZW1vdmUpKHN0cnVj
dCBmaWxlX2xvY2sgKik7CgogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICogZmxfZmFzeW5j
OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX2xvY2tfaW5mbyBu
ZnNfZmw7CiAgICAgICAgfSBmbF91Owp9OwojIDU4NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBmaWxlX2xvY2tfbGlzdDsKCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mY250bC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vZmNudGwuaCIgMQojIDY5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9mY250bC5oIgpzdHJ1Y3QgZmxvY2sgewogICAgICAgIHNob3J0IGxfdHlwZTsKICAgICAg
ICBzaG9ydCBsX3doZW5jZTsKICAgICAgICBvZmZfdCBsX3N0YXJ0OwogICAgICAgIG9mZl90IGxf
bGVuOwogICAgICAgIHBpZF90IGxfcGlkOwp9OwoKc3RydWN0IGZsb2NrNjQgewogICAgICAgIHNo
b3J0IGxfdHlwZTsKICAgICAgICBzaG9ydCBsX3doZW5jZTsKICAgICAgICBsb2ZmX3QgbF9zdGFy
dDsKICAgICAgICBsb2ZmX3QgbF9sZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07CiMgNSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mY250bC5oIiAyCiMgNTkwICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGsodW5zaWduZWQg
aW50LCBzdHJ1Y3QgZmxvY2sgKik7CmV4dGVybiBpbnQgZmNudGxfc2V0bGsodW5zaWduZWQgaW50
LCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jayAqKTsKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGs2
NCh1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxr
NjQodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwoKCmV4dGVy
biB2b2lkIGxvY2tzX2luaXRfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBs
b2Nrc19jb3B5X2xvY2soc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpl
eHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVfcG9zaXgoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCk7
CmV4dGVybiB2b2lkIGxvY2tzX3JlbW92ZV9mbG9jayhzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIHN0
cnVjdCBmaWxlX2xvY2sgKnBvc2l4X3Rlc3RfbG9jayhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmls
ZV9sb2NrICopOwpleHRlcm4gaW50IHBvc2l4X2xvY2tfZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1
Y3QgZmlsZV9sb2NrICosIHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIHBvc2l4X2Jsb2NrX2xv
Y2soc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBw
b3NpeF91bmJsb2NrX2xvY2soc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBfX2dldF9s
ZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwpleHRlcm4gdGlt
ZV90IGxlYXNlX2dldF9tdGltZShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja19tYXlf
cmVhZChzdHJ1Y3QgaW5vZGUgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsK
ZXh0ZXJuIGludCBsb2NrX21heV93cml0ZShzdHJ1Y3QgaW5vZGUgKiwgbG9mZl90IHN0YXJ0LCB1
bnNpZ25lZCBsb25nIGNvdW50KTsKCnN0cnVjdCBmYXN5bmNfc3RydWN0IHsKICAgICAgICBpbnQg
bWFnaWM7CiAgICAgICAgaW50IGZhX2ZkOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpm
YV9uZXh0OwogICAgICAgIHN0cnVjdCBmaWxlICpmYV9maWxlOwp9OwoKCgoKZXh0ZXJuIGludCBm
YXN5bmNfaGVscGVyKGludCwgc3RydWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3QgZmFzeW5jX3N0cnVj
dCAqKik7CgpleHRlcm4gdm9pZCBraWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKiwg
aW50LCBpbnQpOwoKZXh0ZXJuIHZvaWQgX19raWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVj
dCAqLCBpbnQsIGludCk7CgpzdHJ1Y3QgbmFtZWlkYXRhIHsKICAgICAgICBzdHJ1Y3QgZGVudHJ5
ICpkZW50cnk7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICptbnQ7CiAgICAgICAgc3RydWN0IHFz
dHIgbGFzdDsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgaW50IGxhc3RfdHlw
ZTsKfTsKCgoKCnN0cnVjdCBxdW90YV9tb3VudF9vcHRpb25zCnsKICAgICAgICB1bnNpZ25lZCBp
bnQgZmxhZ3M7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBkcWlvX3NlbTsKICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlIGRxb2ZmX3NlbTsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZXNbMl07CiAg
ICAgICAgdGltZV90IGlub2RlX2V4cGlyZVsyXTsKICAgICAgICB0aW1lX3QgYmxvY2tfZXhwaXJl
WzJdOwogICAgICAgIGNoYXIgcnNxdWFzaFsyXTsKfTsKIyA2NTYgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21pbml4
X2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IG1pbml4X3NiX2luZm8gewogICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfbmlub2RlczsKICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBzX256b25lczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBzX2ltYXBfYmxvY2tzOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IHNfem1hcF9ibG9ja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19m
aXJzdGRhdGF6b25lOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9n
X3pvbmVfc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9z
aXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19kaXJzaXplOwogICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgc19uYW1lbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19s
aW5rX21heDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNf
aW1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfem1h
cDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9zdXBlcl9ibG9jayAqIHNfbXM7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNfdmVyc2lvbjsKfTsKIyA2NTcgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZXh0Ml9mc19zYi5oIiAxCiMgMzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvZXh0Ml9mc19zYi5oIgpzdHJ1Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfZnJhZ19zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxv
Y2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxv
Y2tzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfZ2RiX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZm
ZXJfaGVhZCAqIHNfc2JoOwogICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsK
ICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNfbG9hZGVkX2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c19sb2FkZWRfYmxvY2tfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0
bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1h
cFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAg
ICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNfbW91bnRfb3B0OwogICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdp
ZF90IHNfcmVzZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgc19wYWQ7CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0
czsKICAgICAgICBpbnQgc19kZXNjX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2Rl
X3NpemU7CiAgICAgICAgaW50IHNfZmlyc3RfaW5vOwp9OwojIDY1OCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9o
cGZzX2ZzX3NiLmgiIDEKCgoKc3RydWN0IGhwZnNfc2JfaW5mbyB7CiAgICAgICAgaW5vX3Qgc2Jf
cm9vdDsKICAgICAgICB1bnNpZ25lZCBzYl9mc19zaXplOwogICAgICAgIHVuc2lnbmVkIHNiX2Jp
dG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2JfZGlyYmFuZF9zdGFydDsKICAgICAgICB1bnNpZ25l
ZCBzYl9kaXJiYW5kX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2JfZG1hcDsKICAgICAgICB1bnNp
Z25lZCBzYl9uX2ZyZWU7CiAgICAgICAgdW5zaWduZWQgc2Jfbl9mcmVlX2Rub2RlczsKICAgICAg
ICB1aWRfdCBzYl91aWQ7CiAgICAgICAgZ2lkX3Qgc2JfZ2lkOwogICAgICAgIHVtb2RlX3Qgc2Jf
bW9kZTsKICAgICAgICB1bnNpZ25lZCBzYl9jb252IDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9l
YXMgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2VyciA6IDI7CiAgICAgICAgdW5zaWduZWQgc2Jf
Y2hrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9sb3dlcmNhc2UgOiAxOwogICAgICAgIHVuc2ln
bmVkIHNiX3dhc19lcnJvciA6IDE7CiAgICAgICAgdW5zaWduZWQgc2JfY2hrZHNrIDogMjsKICAg
ICAgICB1bnNpZ25lZCBzYl9yZF9mbm9kZSA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfcmRfaW5v
ZGUgOiAyOwoKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc2JfaWdldF9xOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgKnNiX2NwX3RhYmxlOwoKCiAgICAgICAgdW5zaWduZWQgKnNiX2JtcF9kaXI7
CiAgICAgICAgdW5zaWduZWQgc2JfY19iaXRtYXA7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qg
c2JfY3JlYXRpb25fZGU7CgogICAgICAgIHVuc2lnbmVkIHNiX2NyZWF0aW9uX2RlX2xvY2sgOiAx
OwoKICAgICAgICBpbnQgc2JfdGltZXNoaWZ0Owp9OwojIDY1OSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9udGZz
X2ZzX3NiLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L250ZnNfZnNf
aS5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9udGZzX2ZzX3NiLmgiIDIK
CnN0cnVjdCBudGZzX3NiX2luZm97CgogICAgICAgIG50ZnNfdWlkX3QgdWlkOwogICAgICAgIG50
ZnNfZ2lkX3QgZ2lkOwogICAgICAgIG50bW9kZV90IHVtYXNrOwogICAgICAgIHZvaWQgKm5sc19t
YXA7CiAgICAgICAgdW5zaWduZWQgaW50IG5ndDsKICAgICAgICBjaGFyIG1mdF96b25lX211bHRp
cGxpZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZnRfZGF0YV9wb3M7CiAgICAgICAgbnRmc19j
bHVzdGVyX3QgbWZ0X3pvbmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX3N0
YXJ0OwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX2VuZDsKICAgICAgICBudGZzX2Ns
dXN0ZXJfdCBkYXRhMV96b25lX3BvczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRhMl96b25l
X3BvczsKCgogICAgICAgIG50ZnNfc2l6ZV90IHBhcnRpdGlvbl9iaWFzOwoKICAgICAgICBudGZz
X3UzMiBhdF9zdGFuZGFyZF9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9hdHRyaWJ1
dGVfbGlzdDsKICAgICAgICBudGZzX3UzMiBhdF9maWxlX25hbWU7CiAgICAgICAgbnRmc191MzIg
YXRfdm9sdW1lX3ZlcnNpb247CiAgICAgICAgbnRmc191MzIgYXRfc2VjdXJpdHlfZGVzY3JpcHRv
cjsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfbmFtZTsKICAgICAgICBudGZzX3UzMiBhdF92
b2x1bWVfaW5mb3JtYXRpb247CiAgICAgICAgbnRmc191MzIgYXRfZGF0YTsKICAgICAgICBudGZz
X3UzMiBhdF9pbmRleF9yb290OwogICAgICAgIG50ZnNfdTMyIGF0X2luZGV4X2FsbG9jYXRpb247
CiAgICAgICAgbnRmc191MzIgYXRfYml0bWFwOwogICAgICAgIG50ZnNfdTMyIGF0X3N5bWxpbms7
CgogICAgICAgIGludCBzZWN0b3Jfc2l6ZTsKICAgICAgICBpbnQgY2x1c3Rlcl9zaXplOwogICAg
ICAgIGludCBjbHVzdGVyX3NpemVfYml0czsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXJzX3Blcl9y
ZWNvcmQ7CiAgICAgICAgaW50IG1mdF9yZWNvcmRfc2l6ZTsKICAgICAgICBpbnQgbWZ0X3JlY29y
ZF9zaXplX2JpdHM7CiAgICAgICAgaW50IGluZGV4X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAgICAg
ICAgaW50IGluZGV4X3JlY29yZF9zaXplOwogICAgICAgIGludCBpbmRleF9yZWNvcmRfc2l6ZV9i
aXRzOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG5yX2NsdXN0ZXJzOwogICAgICAgIG50ZnNfY2x1
c3Rlcl90IG1mdF9sY247CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X21pcnJfbGNuOwoKICAg
ICAgICB1bnNpZ25lZCBjaGFyICptZnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKnVwY2FzZTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgdXBjYXNlX2xlbmd0aDsKCiAgICAgICAgc3RydWN0IG50ZnNf
aW5vZGVfaW5mbyAqbWZ0X2lubzsKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICptZnRt
aXJyOwogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKmJpdG1hcDsKICAgICAgICBzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaW5vX2ZsYWdzOwp9Owoj
IDY2MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAxCgoKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2ZhdF9jdmYuaCIgMQoKCgoKCnN0cnVjdCBjdmZfZm9ybWF0CnsgaW50
IGN2Zl92ZXJzaW9uOwogIGNoYXIqIGN2Zl92ZXJzaW9uX3RleHQ7CiAgdW5zaWduZWQgbG9uZyBm
bGFnczsKICBpbnQgKCpkZXRlY3RfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBpbnQg
KCptb3VudF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsY2hhcipvcHRpb25zKTsKICBpbnQg
KCp1bm1vdW50X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYik7CiAgc3RydWN0IGJ1ZmZlcl9o
ZWFkKiAoKmN2Zl9icmVhZCkgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixpbnQgYmxvY2spOwogIHN0
cnVjdCBidWZmZXJfaGVhZCogKCpjdmZfZ2V0YmxrKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGlu
dCBibG9jayk7CiAgdm9pZCAoKmN2Zl9icmVsc2UpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0
cnVjdCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfbWFya19idWZmZXJfZGlydHkpIChz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKmJoKTsKICB2b2lkICgqY3ZmX3NldF91cHRvZGF0ZSkgKHN0cnVjdCBz
dXBlcl9ibG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJoLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbCk7CiAgaW50ICgqY3ZmX2lz
X3VwdG9kYXRlKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo
KTsKICB2b2lkICgqY3ZmX2xsX3J3X2Jsb2NrKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG9wciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50
IG5icmVxLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoWzMy
XSk7CiAgaW50ICgqZmF0X2FjY2VzcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsaW50IG5yLGlu
dCBuZXdfdmFsdWUpOwogIGludCAoKmN2Zl9zdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi
LHN0cnVjdCBzdGF0ZnMgKmJ1ZiwgaW50IGJ1ZnNpeik7CiAgaW50ICgqY3ZmX2JtYXApIChzdHJ1
Y3QgaW5vZGUgKmlub2RlLGludCBibG9jayk7CiAgc3NpemVfdCAoKmN2Zl9maWxlX3JlYWQpICgg
c3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBzc2l6ZV90ICgqY3Zm
X2ZpbGVfd3JpdGUpICggc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZf
dCAqKTsKICBpbnQgKCpjdmZfbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0
cnVjdCAqKTsKICBpbnQgKCpjdmZfcmVhZHBhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBh
Z2UgKik7CiAgaW50ICgqY3ZmX3dyaXRlcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcGFn
ZSAqKTsKICBpbnQgKCpjdmZfZGlyX2lvY3RsKSAoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVj
dCBmaWxlICogZmlscCwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwg
dW5zaWduZWQgbG9uZyBhcmcpOwogIHZvaWQgKCp6ZXJvX291dF9jbHVzdGVyKSAoc3RydWN0IGlu
b2RlKiwgaW50IGNsdXN0ZXJucik7Cn07CgppbnQgcmVnaXN0ZXJfY3ZmX2Zvcm1hdChzdHJ1Y3Qg
Y3ZmX2Zvcm1hdCpjdmZfZm9ybWF0KTsKaW50IHVucmVnaXN0ZXJfY3ZmX2Zvcm1hdChzdHJ1Y3Qg
Y3ZmX2Zvcm1hdCpjdmZfZm9ybWF0KTsKdm9pZCBkZWNfY3ZmX2Zvcm1hdF91c2VfY291bnRfYnlf
dmVyc2lvbihpbnQgdmVyc2lvbik7CmludCBkZXRlY3RfY3ZmKHN0cnVjdCBzdXBlcl9ibG9jaypz
YixjaGFyKmZvcmNlKTsKCmV4dGVybiBzdHJ1Y3QgY3ZmX2Zvcm1hdCAqY3ZmX2Zvcm1hdHNbXTsK
ZXh0ZXJuIGludCBjdmZfZm9ybWF0X3VzZV9jb3VudFtdOwojIDQgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbXNkb3NfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBmYXRfbW91bnRfb3B0aW9u
cyB7CiAgICAgICAgdWlkX3QgZnNfdWlkOwogICAgICAgIGdpZF90IGZzX2dpZDsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBmc191bWFzazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb2RlcGFnZTsK
ICAgICAgICBjaGFyICppb2NoYXJzZXQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBuYW1lX2NoZWNr
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgY29udmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBxdWll
dDoxLAogICAgICAgICAgICAgICAgIHNob3dleGVjOjEsCiAgICAgICAgICAgICAgICAgc3lzX2lt
bXV0YWJsZToxLAogICAgICAgICAgICAgICAgIGRvdHNPSzoxLAogICAgICAgICAgICAgICAgIGlz
dmZhdDoxLAogICAgICAgICAgICAgICAgIHV0Zjg6MSwKICAgICAgICAgICAgICAgICB1bmljb2Rl
X3hsYXRlOjEsCiAgICAgICAgICAgICAgICAgcG9zaXhmczoxLAogICAgICAgICAgICAgICAgIG51
bXRhaWw6MSwKICAgICAgICAgICAgICAgICBhdGFyaToxLAogICAgICAgICAgICAgICAgIGZhdDMy
OjEsCiAgICAgICAgICAgICAgICAgbm9jYXNlOjE7Cn07CgpzdHJ1Y3QgdmZhdF91bmljb2RlIHsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIHVuaTE7CiAgICAgICAgdW5zaWduZWQgY2hhciB1bmkyOwp9
OwoKc3RydWN0IG1zZG9zX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIHNob3J0IGNsdXN0ZXJf
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjbHVzdGVyX2JpdHM7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBmYXRzLGZhdF9iaXRzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZhdF9zdGFydDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZhdF9sZW5ndGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBk
aXJfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGlyX2VudHJpZXM7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBkYXRhX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2x1c3RlcnM7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyByb290X2NsdXN0ZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBm
c2luZm9fc2VjdG9yOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGZhdF93YWl0OwogICAgICAg
IHN0cnVjdCBzZW1hcGhvcmUgZmF0X2xvY2s7CiAgICAgICAgaW50IHByZXZfZnJlZTsKICAgICAg
ICBpbnQgZnJlZV9jbHVzdGVyczsKICAgICAgICBzdHJ1Y3QgZmF0X21vdW50X29wdGlvbnMgb3B0
aW9uczsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfZGlzazsKICAgICAgICBzdHJ1Y3Qg
bmxzX3RhYmxlICpubHNfaW87CiAgICAgICAgc3RydWN0IGN2Zl9mb3JtYXQqIGN2Zl9mb3JtYXQ7
CiAgICAgICAgdm9pZCAqZGlyX29wczsKICAgICAgICB2b2lkICpwcml2YXRlX2RhdGE7CiAgICAg
ICAgaW50IGRpcl9wZXJfYmxvY2s7CiAgICAgICAgaW50IGRpcl9wZXJfYmxvY2tfYml0czsKfTsK
IyA2NjEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvaXNvX2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IGlzb2ZzX3Ni
X2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5vZGVzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc19uem9uZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZpcnN0ZGF0YXpvbmU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzX2xvZ196b25lX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX21heF9zaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfaGlnaF9zaWVycmE7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBzX21hcHBpbmc7CiAgICAgICAgaW50IHNfcm9ja19vZmZzZXQ7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBzX3JvY2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2pvbGll
dF9sZXZlbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfdXRmODsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHNfY3J1ZnQ7CgoKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfdW5oaWRlOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgc19ub3N1aWQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX25vZGV2OwogICAg
ICAgIG1vZGVfdCBzX21vZGU7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgdWlkX3Qgc191
aWQ7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqc19ubHNfaW9jaGFyc2V0Owp9OwojIDY2MiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9uZnNfZnNfc2IuaCIgMQoKCgoKCgpzdHJ1Y3QgbmZzX3NlcnZlciB7CiAg
ICAgICAgc3RydWN0IHJwY19jbG50ICogY2xpZW50OwogICAgICAgIHN0cnVjdCBuZnNfcnBjX29w
cyAqIHJwY19vcHM7CiAgICAgICAgaW50IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGludCByc2l6
ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcnBhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCB3c2l6
ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgd3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCBkdHNp
emU7CiAgICAgICAgdW5zaWduZWQgaW50IGJzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBhY3Jl
Z21pbjsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNyZWdtYXg7CiAgICAgICAgdW5zaWduZWQgaW50
IGFjZGlybWluOwogICAgICAgIHVuc2lnbmVkIGludCBhY2Rpcm1heDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbmFtZWxlbjsKICAgICAgICBjaGFyICogaG9zdG5hbWU7CiAgICAgICAgc3RydWN0IG5m
c19yZXFsaXN0ICogcndfcmVxdWVzdHM7Cn07CgoKCgpzdHJ1Y3QgbmZzX3NiX2luZm8gewogICAg
ICAgIHN0cnVjdCBuZnNfc2VydmVyIHNfc2VydmVyOwp9OwojIDY2MyAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
eXN2X2ZzX3NiLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zeXN2X2Zz
X3NiLmgiCnN0cnVjdCBzeXN2X3NiX2luZm8gewogICAgICAgIGludCBzX3R5cGU7CiAgICAgICAg
Y2hhciBzX2J5dGVzZXg7CiAgICAgICAgY2hhciBzX2tsdWRnZV9zeW1saW5rczsKICAgICAgICBj
aGFyIHNfdHJ1bmNhdGU7CgogICAgICAgIG5saW5rX3Qgc19saW5rX21heDsKICAgICAgICB1bnNp
Z25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2lub2Rl
c19wZXJfYmxvY2tfMTsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrX2Jp
dHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc19pbmRfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Bl
cl9ibG9ja18yOwogICAgICAgIHVuc2lnbmVkIGludCBzX3Rvb2JpZ19ibG9jazsKICAgICAgICB1
bnNpZ25lZCBpbnQgc19ibG9ja19iYXNlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfZmljX3Np
emU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19mbGNfc2l6ZTsKCiAgICAgICAgc3RydWN0IGJ1
ZmZlcl9oZWFkICpzX2JoMTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYmgyOwoKCiAg
ICAgICAgY2hhciAqIHNfc2JkMTsKICAgICAgICBjaGFyICogc19zYmQyOwogICAgICAgIHUxNiAq
c19zYl9maWNfY291bnQ7CiAgICAgICAgdTE2ICpzX3NiX2ZpY19pbm9kZXM7CiAgICAgICAgdTE2
ICpzX3NiX3RvdGFsX2ZyZWVfaW5vZGVzOwogICAgICAgIHUxNiAqc19iY2FjaGVfY291bnQ7CiAg
ICAgICAgdTMyICpzX2JjYWNoZTsKICAgICAgICB1MzIgKnNfZnJlZV9ibG9ja3M7CiAgICAgICAg
dTMyICpzX3NiX3RpbWU7CiAgICAgICAgdTMyICpzX3NiX3N0YXRlOwoKCiAgICAgICAgdTMyIHNf
Zmlyc3Rpbm9kZXpvbmU7CiAgICAgICAgdTMyIHNfZmlyc3RkYXRhem9uZTsKICAgICAgICB1MzIg
c19uaW5vZGVzOwogICAgICAgIHUzMiBzX25kYXRhem9uZXM7CiAgICAgICAgdTMyIHNfbnpvbmVz
OwogICAgICAgIHUxNiBzX25hbWVsZW47Cn07CiMgNjY0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNf
c2IuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2IuaCIK
c3RydWN0IGFmZnNfYm1faW5mbyB7CiAgICAgICAgdTMyIGJtX2tleTsKICAgICAgICB1MzIgYm1f
ZnJlZTsKfTsKCnN0cnVjdCBhZmZzX3NiX2luZm8gewogICAgICAgIGludCBzX3BhcnRpdGlvbl9z
aXplOwogICAgICAgIGludCBzX3Jlc2VydmVkOwoKICAgICAgICB1MzIgc19kYXRhX2Jsa3NpemU7
CiAgICAgICAgdTMyIHNfcm9vdF9ibG9jazsKICAgICAgICBpbnQgc19oYXNoc2l6ZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNfZmxhZ3M7CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgZ2lk
X3Qgc19naWQ7CiAgICAgICAgdW1vZGVfdCBzX21vZGU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9o
ZWFkICpzX3Jvb3RfYmg7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX2JtbG9jazsKICAgICAg
ICBzdHJ1Y3QgYWZmc19ibV9pbmZvICpzX2JpdG1hcDsKICAgICAgICB1MzIgc19ibWFwX2NvdW50
OwogICAgICAgIHUzMiBzX2JtYXBfYml0czsKICAgICAgICB1MzIgc19sYXN0X2JtYXA7CiAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2JtYXBfYmg7CiAgICAgICAgY2hhciAqc19wcmVmaXg7
CiAgICAgICAgaW50IHNfcHJlZml4X2xlbjsKICAgICAgICBjaGFyIHNfdm9sdW1lWzMyXTsKfTsK
IyA2NjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC91ZnNfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3Vmc19mcy5oIiAxCiMgMzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2Zz
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMzEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMzIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvdWZzX2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWUu
aCIgMQojIDMzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdGF0LmgiIDEKIyAzNCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDI0OCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC91ZnNfZnMuaCIKc3RydWN0IHVmc190aW1ldmFsIHsKICAgICAgICBfX3MzMiB0dl9z
ZWM7CiAgICAgICAgX19zMzIgdHZfdXNlYzsKfTsKCnN0cnVjdCB1ZnNfZGlyX2VudHJ5IHsKICAg
ICAgICBfX3UzMiBkX2lubzsKICAgICAgICBfX3UxNiBkX3JlY2xlbjsKICAgICAgICB1bmlvbiB7
CiAgICAgICAgICAgICAgICBfX3UxNiBkX25hbWxlbjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTggZF90eXBlOwogICAgICAgICAgICAgICAgICAg
ICAgICBfX3U4IGRfbmFtbGVuOwogICAgICAgICAgICAgICAgfSBkXzQ0OwogICAgICAgIH0gZF91
OwogICAgICAgIF9fdTggZF9uYW1lWzI1NSArIDFdOwp9OwoKc3RydWN0IHVmc19jc3VtIHsKICAg
ICAgICBfX3UzMiBjc19uZGlyOwogICAgICAgIF9fdTMyIGNzX25iZnJlZTsKICAgICAgICBfX3Uz
MiBjc19uaWZyZWU7CiAgICAgICAgX191MzIgY3NfbmZmcmVlOwp9OwoKCgoKc3RydWN0IHVmc19z
dXBlcl9ibG9jayB7CiAgICAgICAgX191MzIgZnNfbGluazsKICAgICAgICBfX3UzMiBmc19ybGlu
azsKICAgICAgICBfX3UzMiBmc19zYmxrbm87CiAgICAgICAgX191MzIgZnNfY2Jsa25vOwogICAg
ICAgIF9fdTMyIGZzX2libGtubzsKICAgICAgICBfX3UzMiBmc19kYmxrbm87CiAgICAgICAgX191
MzIgZnNfY2dvZmZzZXQ7CiAgICAgICAgX191MzIgZnNfY2dtYXNrOwogICAgICAgIF9fdTMyIGZz
X3RpbWU7CiAgICAgICAgX191MzIgZnNfc2l6ZTsKICAgICAgICBfX3UzMiBmc19kc2l6ZTsKICAg
ICAgICBfX3UzMiBmc19uY2c7CiAgICAgICAgX191MzIgZnNfYnNpemU7CiAgICAgICAgX191MzIg
ZnNfZnNpemU7CiAgICAgICAgX191MzIgZnNfZnJhZzsKCiAgICAgICAgX191MzIgZnNfbWluZnJl
ZTsKICAgICAgICBfX3UzMiBmc19yb3RkZWxheTsKICAgICAgICBfX3UzMiBmc19ycHM7CgogICAg
ICAgIF9fdTMyIGZzX2JtYXNrOwogICAgICAgIF9fdTMyIGZzX2ZtYXNrOwogICAgICAgIF9fdTMy
IGZzX2JzaGlmdDsKICAgICAgICBfX3UzMiBmc19mc2hpZnQ7CgogICAgICAgIF9fdTMyIGZzX21h
eGNvbnRpZzsKICAgICAgICBfX3UzMiBmc19tYXhicGc7CgogICAgICAgIF9fdTMyIGZzX2ZyYWdz
aGlmdDsKICAgICAgICBfX3UzMiBmc19mc2J0b2RiOwogICAgICAgIF9fdTMyIGZzX3Nic2l6ZTsK
ICAgICAgICBfX3UzMiBmc19jc21hc2s7CiAgICAgICAgX191MzIgZnNfY3NzaGlmdDsKICAgICAg
ICBfX3UzMiBmc19uaW5kaXI7CiAgICAgICAgX191MzIgZnNfaW5vcGI7CiAgICAgICAgX191MzIg
ZnNfbnNwZjsKCiAgICAgICAgX191MzIgZnNfb3B0aW07CgogICAgICAgIHVuaW9uIHsKICAgICAg
ICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2Vj
dDsKICAgICAgICAgICAgICAgIH0gZnNfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZz
X3N1bng4NjsKICAgICAgICB9IGZzX3UxOwogICAgICAgIF9fdTMyIGZzX2ludGVybGVhdmU7CiAg
ICAgICAgX191MzIgZnNfdHJhY2tza2V3OwoKCgoKICAgICAgICBfX3UzMiBmc19pZFsyXTsKCiAg
ICAgICAgX191MzIgZnNfY3NhZGRyOwogICAgICAgIF9fdTMyIGZzX2Nzc2l6ZTsKICAgICAgICBf
X3UzMiBmc19jZ3NpemU7CgogICAgICAgIF9fdTMyIGZzX250cmFrOwogICAgICAgIF9fdTMyIGZz
X25zZWN0OwogICAgICAgIF9fdTMyIGZzX3NwYzsKCiAgICAgICAgX191MzIgZnNfbmN5bDsKCiAg
ICAgICAgX191MzIgZnNfY3BnOwogICAgICAgIF9fdTMyIGZzX2lwZzsKICAgICAgICBfX3UzMiBm
c19mcGc7CgogICAgICAgIHN0cnVjdCB1ZnNfY3N1bSBmc19jc3RvdGFsOwoKICAgICAgICBfX3M4
IGZzX2Ztb2Q7CiAgICAgICAgX19zOCBmc19jbGVhbjsKICAgICAgICBfX3M4IGZzX3Jvbmx5Owog
ICAgICAgIF9fczggZnNfZmxhZ3M7CiAgICAgICAgX19zOCBmc19mc21udFs1MTJdOwoKICAgICAg
ICBfX3UzMiBmc19jZ3JvdG9yOwogICAgICAgIF9fdTMyIGZzX2NzcFszMV07CiAgICAgICAgX191
MzIgZnNfbWF4Y2x1c3RlcjsKICAgICAgICBfX3UzMiBmc19jcGM7CiAgICAgICAgX191MTYgZnNf
b3Bvc3RibFsxNl1bOF07CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwogICAgICAgICAg
ICAgICAgICAgICAgICBfX3MzMiBmc19yZWNsYWltOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3MzMiBmc19zcGFyZWNvbjJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0
YXRlOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNf
c3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19z
MzIgZnNfc3BhcmVjb25bNTNdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19yZWNs
YWltOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAgICAgICAg
ICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19x
Zm1hc2tbMl07CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAgICAgICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUwXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfY29udGlnc3Vtc2l6ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgX19zMzIgZnNfbWF4c3ltbGlua2xlbjsKICAgICAgICAgICAgICAgICAgICAg
ICAgX19zMzIgZnNfaW5vZGVmbXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX21h
eGZpbGVzaXplWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAg
ICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzXzQ0OwogICAg
ICAgIH0gZnNfdTI7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsZm9ybWF0OwogICAgICAgIF9fczMy
IGZzX25ycG9zOwogICAgICAgIF9fczMyIGZzX3Bvc3RibG9mZjsKICAgICAgICBfX3MzMiBmc19y
b3RibG9mZjsKICAgICAgICBfX3MzMiBmc19tYWdpYzsKICAgICAgICBfX3U4IGZzX3NwYWNlWzFd
Owp9OwojIDQyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIKc3RydWN0
IHVmc19jeWxpbmRlcl9ncm91cCB7CiAgICAgICAgX191MzIgY2dfbGluazsKICAgICAgICBfX3Uz
MiBjZ19tYWdpYzsKICAgICAgICBfX3UzMiBjZ190aW1lOwogICAgICAgIF9fdTMyIGNnX2NneDsK
ICAgICAgICBfX3UxNiBjZ19uY3lsOwogICAgICAgIF9fdTE2IGNnX25pYmxrOwogICAgICAgIF9f
dTMyIGNnX25kYmxrOwogICAgICAgIHN0cnVjdCB1ZnNfY3N1bSBjZ19jczsKICAgICAgICBfX3Uz
MiBjZ19yb3RvcjsKICAgICAgICBfX3UzMiBjZ19mcm90b3I7CiAgICAgICAgX191MzIgY2dfaXJv
dG9yOwogICAgICAgIF9fdTMyIGNnX2Zyc3VtWyg4MTkyIC8gMTAyNCldOwogICAgICAgIF9fdTMy
IGNnX2J0b3RvZmY7CiAgICAgICAgX191MzIgY2dfYm9mZjsKICAgICAgICBfX3UzMiBjZ19pdXNl
ZG9mZjsKICAgICAgICBfX3UzMiBjZ19mcmVlb2ZmOwogICAgICAgIF9fdTMyIGNnX25leHRmcmVl
b2ZmOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIGNnX2NsdXN0ZXJzdW1vZmY7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIGNnX2NsdXN0ZXJvZmY7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNn
X25jbHVzdGVyYmxrczsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfc3BhcmVjb25b
MTNdOwogICAgICAgICAgICAgICAgfSBjZ180NDsKICAgICAgICAgICAgICAgIF9fdTMyIGNnX3Nw
YXJlY29uWzE2XTsKICAgICAgICB9IGNnX3U7CiAgICAgICAgX191OCBjZ19zcGFjZVsxXTsKCn07
CgoKCgpzdHJ1Y3QgdWZzX2lub2RlIHsKICAgICAgICBfX3UxNiB1aV9tb2RlOwogICAgICAgIF9f
dTE2IHVpX25saW5rOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3N1aWQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTE2IHVpX3NnaWQ7CiAgICAgICAgICAgICAgICB9IG9sZGlkczsKICAgICAgICAgICAg
ICAgIF9fdTMyIHVpX2ludW1iZXI7CiAgICAgICAgICAgICAgICBfX3UzMiB1aV9hdXRob3I7CiAg
ICAgICAgfSB1aV91MTsKICAgICAgICBfX3U2NCB1aV9zaXplOwogICAgICAgIHN0cnVjdCB1ZnNf
dGltZXZhbCB1aV9hdGltZTsKICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwgdWlfbXRpbWU7CiAg
ICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX2N0aW1lOwogICAgICAgIHVuaW9uIHsKICAgICAg
ICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2RiWzEy
XTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfaWJbM107CiAgICAgICAgICAgICAg
ICB9IHVpX2FkZHI7CiAgICAgICAgICAgICAgICBfX3U4IHVpX3N5bWxpbmtbNCooMTIgKzMpXTsK
ICAgICAgICB9IHVpX3UyOwogICAgICAgIF9fdTMyIHVpX2ZsYWdzOwogICAgICAgIF9fdTMyIHVp
X2Jsb2NrczsKICAgICAgICBfX3UzMiB1aV9nZW47CiAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfc2hhZG93Owog
ICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV91aWQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIHVpX2dpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfb2VmdGZs
YWc7CiAgICAgICAgICAgICAgICB9IHVpX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAg
ICAgX191MzIgdWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiB1aV9zcGFyZVsy
XTsKICAgICAgICAgICAgICAgIH0gdWlfNDQ7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fdTMyIHVpX2dpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfbW9kZWg7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3NwYXJlOwogICAgICAgICAgICAgICAgICAg
ICAgICBfX3UzMiB1aV90cmFuczsKICAgICAgICAgICAgICAgIH0gdWlfaHVyZDsKICAgICAgICB9
IHVpX3UzOwp9OwojIDUyNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIK
ZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfZnJhZ21lbnRzIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQs
IHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfYmxvY2tzIChzdHJ1Y3QgaW5vZGUgKiwg
dW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHVuc2lnbmVkIHVmc19uZXdfZnJhZ21lbnRzIChz
dHJ1Y3QgaW5vZGUgKiwgdTMyICosIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIGludCAq
KTsKCgpleHRlcm4gc3RydWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiB1ZnNfbG9hZF9jeWxpbmRl
ciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgdWZzX3B1dF9j
eWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTsKCgpleHRlcm4gc3RydWN0
IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gaW50IHVm
c19jaGVja19kaXJfZW50cnkgKGNvbnN0IGNoYXIgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCB1
ZnNfZGlyX2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqLCB1bnNpZ25lZCBsb25nKTsKCgpl
eHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2ZpbGVfaW5vZGVfb3BlcmF0aW9uczsK
ZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdWZzX2ZpbGVfb3BlcmF0aW9uczsKCmV4dGVy
biBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHVmc19hb3BzOwoKCmV4dGVybiB2b2lk
IHVmc19mcmVlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHN0cnVjdCBpbm9k
ZSAqIHVmc19uZXdfaW5vZGUgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCBpbnQsIGludCAqKTsKCgpl
eHRlcm4gaW50IHVmc19mcmFnX21hcCAoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiB2b2lk
IHVmc19yZWFkX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHVmc19wdXRfaW5v
ZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX3dyaXRlX2lub2RlIChzdHJ1Y3Qg
aW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCB1ZnNfc3luY19pbm9kZSAoc3RydWN0IGlub2RlICop
OwpleHRlcm4gdm9pZCB1ZnNfZGVsZXRlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiB1ZnNfZ2V0ZnJhZyAoc3RydWN0IGlub2RlICosIHVuc2lnbmVk
LCBpbnQsIGludCAqKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIHVmc19icmVhZCAoc3Ry
dWN0IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAqKTsKCgpleHRlcm4gc3RydWN0IGZpbGVf
b3BlcmF0aW9ucyB1ZnNfZGlyX29wZXJhdGlvbnM7CgoKZXh0ZXJuIHN0cnVjdCBmaWxlX3N5c3Rl
bV90eXBlIHVmc19mc190eXBlOwpleHRlcm4gdm9pZCB1ZnNfd2FybmluZyAoc3RydWN0IHN1cGVy
X2Jsb2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18g
KChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX2Vycm9yIChzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1
dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfcGFuaWMgKHN0
cnVjdCBzdXBlcl9ibG9jayAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0
dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc193cml0
ZV9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3Bl
cmF0aW9ucyB1ZnNfZmFzdF9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7CgoKZXh0ZXJuIHZvaWQg
dWZzX3RydW5jYXRlIChzdHJ1Y3QgaW5vZGUgKik7CiMgMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgdWZzX2J1ZmZlcl9oZWFkIHsKICAg
ICAgICB1bnNpZ25lZCBmcmFnbWVudDsKICAgICAgICB1bnNpZ25lZCBjb3VudDsKICAgICAgICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaFsoODE5MiAvIDEwMjQpXTsKfTsKCnN0cnVjdCB1ZnNfY2df
cHJpdmF0ZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX2N5bGluZGVyX2dyb3VwIHVjZzsKICAg
ICAgICBfX3UzMiBjX2NneDsKICAgICAgICBfX3UxNiBjX25jeWw7CiAgICAgICAgX191MTYgY19u
aWJsazsKICAgICAgICBfX3UzMiBjX25kYmxrOwogICAgICAgIF9fdTMyIGNfcm90b3I7CiAgICAg
ICAgX191MzIgY19mcm90b3I7CiAgICAgICAgX191MzIgY19pcm90b3I7CiAgICAgICAgX191MzIg
Y19idG90b2ZmOwogICAgICAgIF9fdTMyIGNfYm9mZjsKICAgICAgICBfX3UzMiBjX2l1c2Vkb2Zm
OwogICAgICAgIF9fdTMyIGNfZnJlZW9mZjsKICAgICAgICBfX3UzMiBjX25leHRmcmVlb2ZmOwog
ICAgICAgIF9fdTMyIGNfY2x1c3RlcnN1bW9mZjsKICAgICAgICBfX3UzMiBjX2NsdXN0ZXJvZmY7
CiAgICAgICAgX191MzIgY19uY2x1c3RlcmJsa3M7Cn07CgpzdHJ1Y3QgdWZzX3NiX3ByaXZhdGVf
aW5mbyB7CiAgICAgICAgc3RydWN0IHVmc19idWZmZXJfaGVhZCBzX3ViaDsKICAgICAgICBfX3Uz
MiBzX3NibGtubzsKICAgICAgICBfX3UzMiBzX2NibGtubzsKICAgICAgICBfX3UzMiBzX2libGtu
bzsKICAgICAgICBfX3UzMiBzX2RibGtubzsKICAgICAgICBfX3UzMiBzX2Nnb2Zmc2V0OwogICAg
ICAgIF9fdTMyIHNfY2dtYXNrOwogICAgICAgIF9fdTMyIHNfc2l6ZTsKICAgICAgICBfX3UzMiBz
X2RzaXplOwogICAgICAgIF9fdTMyIHNfbmNnOwogICAgICAgIF9fdTMyIHNfYnNpemU7CiAgICAg
ICAgX191MzIgc19mc2l6ZTsKICAgICAgICBfX3UzMiBzX2ZwYjsKICAgICAgICBfX3UzMiBzX21p
bmZyZWU7CiAgICAgICAgX191MzIgc19ibWFzazsKICAgICAgICBfX3UzMiBzX2ZtYXNrOwogICAg
ICAgIF9fdTMyIHNfYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnNoaWZ0OwogICAgICAgIF9fdTMy
IHNfZnBic2hpZnQ7CiAgICAgICAgX191MzIgc19mc2J0b2RiOwogICAgICAgIF9fdTMyIHNfc2Jz
aXplOwogICAgICAgIF9fdTMyIHNfY3NtYXNrOwogICAgICAgIF9fdTMyIHNfY3NzaGlmdDsKICAg
ICAgICBfX3UzMiBzX25pbmRpcjsKICAgICAgICBfX3UzMiBzX2lub3BiOwogICAgICAgIF9fdTMy
IHNfbnNwZjsKICAgICAgICBfX3UzMiBzX25wc2VjdDsKICAgICAgICBfX3UzMiBzX2ludGVybGVh
dmU7CiAgICAgICAgX191MzIgc190cmFja3NrZXc7CiAgICAgICAgX191MzIgc19jc2FkZHI7CiAg
ICAgICAgX191MzIgc19jc3NpemU7CiAgICAgICAgX191MzIgc19jZ3NpemU7CiAgICAgICAgX191
MzIgc19udHJhazsKICAgICAgICBfX3UzMiBzX25zZWN0OwogICAgICAgIF9fdTMyIHNfc3BjOwog
ICAgICAgIF9fdTMyIHNfaXBnOwogICAgICAgIF9fdTMyIHNfZnBnOwogICAgICAgIF9fdTMyIHNf
Y3BjOwogICAgICAgIF9fczMyIHNfY29udGlnc3Vtc2l6ZTsKICAgICAgICBfX3M2NCBzX3FibWFz
azsKICAgICAgICBfX3M2NCBzX3FmbWFzazsKICAgICAgICBfX3MzMiBzX3Bvc3RibGZvcm1hdDsK
ICAgICAgICBfX3MzMiBzX25ycG9zOwogICAgICAgIF9fczMyIHNfcG9zdGJsb2ZmOwogICAgICAg
IF9fczMyIHNfcm90YmxvZmY7CgogICAgICAgIF9fdTMyIHNfZnBibWFzazsKICAgICAgICBfX3Uz
MiBzX2FwYjsKICAgICAgICBfX3UzMiBzXzJhcGI7CiAgICAgICAgX191MzIgc18zYXBiOwogICAg
ICAgIF9fdTMyIHNfYXBibWFzazsKICAgICAgICBfX3UzMiBzX2FwYnNoaWZ0OwogICAgICAgIF9f
dTMyIHNfMmFwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfM2FwYnNoaWZ0OwogICAgICAgIF9fdTMy
IHNfbnNwZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfbnNwYjsKICAgICAgICBfX3UzMiBzX2lub3Bm
OwogICAgICAgIF9fdTMyIHNfc2JiYXNlOwogICAgICAgIF9fdTMyIHNfYnBmOwogICAgICAgIF9f
dTMyIHNfYnBmc2hpZnQ7CiAgICAgICAgX191MzIgc19icGZtYXNrOwoKICAgICAgICBfX3UzMiBz
X21heHN5bWxpbmtsZW47Cn07CgoKCgoKc3RydWN0IHVmc19zYl9pbmZvIHsKICAgICAgICBzdHJ1
Y3QgdWZzX3NiX3ByaXZhdGVfaW5mbyAqIHNfdXNwaTsKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0g
KiBzX2NzcFszMV07CiAgICAgICAgdW5zaWduZWQgc19zd2FiOwogICAgICAgIHVuc2lnbmVkIHNf
ZmxhZ3M7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfdWNnOwogICAgICAgIHN0cnVj
dCB1ZnNfY2dfcHJpdmF0ZV9pbmZvICogc191Y3BpWzhdOwogICAgICAgIHVuc2lnbmVkIHNfY2du
b1s4XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2NnX2xvYWRlZDsKICAgICAgICB1bnNpZ25l
ZCBzX21vdW50X29wdDsKfTsKCgoKCgoKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tfZmlyc3Qgewog
ICAgICAgIF9fdTMyIGZzX2xpbms7CiAgICAgICAgX191MzIgZnNfcmxpbms7CiAgICAgICAgX191
MzIgZnNfc2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2NibGtubzsKICAgICAgICBfX3UzMiBmc19p
Ymxrbm87CiAgICAgICAgX191MzIgZnNfZGJsa25vOwogICAgICAgIF9fdTMyIGZzX2Nnb2Zmc2V0
OwogICAgICAgIF9fdTMyIGZzX2NnbWFzazsKICAgICAgICBfX3UzMiBmc190aW1lOwogICAgICAg
IF9fdTMyIGZzX3NpemU7CiAgICAgICAgX191MzIgZnNfZHNpemU7CiAgICAgICAgX191MzIgZnNf
bmNnOwogICAgICAgIF9fdTMyIGZzX2JzaXplOwogICAgICAgIF9fdTMyIGZzX2ZzaXplOwogICAg
ICAgIF9fdTMyIGZzX2ZyYWc7CiAgICAgICAgX191MzIgZnNfbWluZnJlZTsKICAgICAgICBfX3Uz
MiBmc19yb3RkZWxheTsKICAgICAgICBfX3UzMiBmc19ycHM7CiAgICAgICAgX191MzIgZnNfYm1h
c2s7CiAgICAgICAgX191MzIgZnNfZm1hc2s7CiAgICAgICAgX191MzIgZnNfYnNoaWZ0OwogICAg
ICAgIF9fdTMyIGZzX2ZzaGlmdDsKICAgICAgICBfX3UzMiBmc19tYXhjb250aWc7CiAgICAgICAg
X191MzIgZnNfbWF4YnBnOwogICAgICAgIF9fdTMyIGZzX2ZyYWdzaGlmdDsKICAgICAgICBfX3Uz
MiBmc19mc2J0b2RiOwogICAgICAgIF9fdTMyIGZzX3Nic2l6ZTsKICAgICAgICBfX3UzMiBmc19j
c21hc2s7CiAgICAgICAgX191MzIgZnNfY3NzaGlmdDsKICAgICAgICBfX3UzMiBmc19uaW5kaXI7
CiAgICAgICAgX191MzIgZnNfaW5vcGI7CiAgICAgICAgX191MzIgZnNfbnNwZjsKICAgICAgICBf
X3UzMiBmc19vcHRpbTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgewog
ICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICB9
IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgfSBm
c191MTsKICAgICAgICBfX3UzMiBmc19pbnRlcmxlYXZlOwogICAgICAgIF9fdTMyIGZzX3RyYWNr
c2tldzsKICAgICAgICBfX3UzMiBmc19pZFsyXTsKICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAg
ICAgICAgX191MzIgZnNfY3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nnc2l6ZTsKICAgICAgICBf
X3UzMiBmc19udHJhazsKICAgICAgICBfX3UzMiBmc19uc2VjdDsKICAgICAgICBfX3UzMiBmc19z
cGM7CiAgICAgICAgX191MzIgZnNfbmN5bDsKICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAg
X191MzIgZnNfaXBnOwogICAgICAgIF9fdTMyIGZzX2ZwZzsKICAgICAgICBzdHJ1Y3QgdWZzX2Nz
dW0gZnNfY3N0b3RhbDsKICAgICAgICBfX3M4IGZzX2Ztb2Q7CiAgICAgICAgX19zOCBmc19jbGVh
bjsKICAgICAgICBfX3M4IGZzX3Jvbmx5OwogICAgICAgIF9fczggZnNfZmxhZ3M7CiAgICAgICAg
X19zOCBmc19mc21udFs1MTIgLSAyMTJdOwoKfTsKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tfc2Vj
b25kIHsKICAgICAgICBfX3M4IGZzX2ZzbW50WzIxMl07CiAgICAgICAgX191MzIgZnNfY2dyb3Rv
cjsKICAgICAgICBfX3UzMiBmc19jc3BbMzFdOwogICAgICAgIF9fdTMyIGZzX21heGNsdXN0ZXI7
CiAgICAgICAgX191MzIgZnNfY3BjOwogICAgICAgIF9fdTE2IGZzX29wb3N0YmxbODJdOwp9OwoK
c3RydWN0IHVmc19zdXBlcl9ibG9ja190aGlyZCB7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFs0
Nl07CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3MzMiBmc19yZWNsYWltOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFy
ZWNvbjJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VuOwogICAgICAg
ICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVj
b25bNTNdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19yZWNsYWltOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNf
cWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAg
ICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUwXTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX19zMzIgZnNfY29udGlnc3Vtc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAg
X19zMzIgZnNfbWF4c3ltbGlua2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf
aW5vZGVmbXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX21heGZpbGVzaXplWzJd
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAg
X19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzXzQ0OwogICAgICAgIH0gZnNfdTI7
CiAgICAgICAgX19zMzIgZnNfcG9zdGJsZm9ybWF0OwogICAgICAgIF9fczMyIGZzX25ycG9zOwog
ICAgICAgIF9fczMyIGZzX3Bvc3RibG9mZjsKICAgICAgICBfX3MzMiBmc19yb3RibG9mZjsKICAg
ICAgICBfX3MzMiBmc19tYWdpYzsKICAgICAgICBfX3U4IGZzX3NwYWNlWzFdOwp9OwojIDY2NiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9lZnNfZnNfc2IuaCIgMQojIDI1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2Vmc19mc19zYi5oIgpzdHJ1Y3QgZWZzX3N1cGVyIHsKICAgICAgICBpbnQzMl90IGZz
X3NpemU7CiAgICAgICAgaW50MzJfdCBmc19maXJzdGNnOwogICAgICAgIGludDMyX3QgZnNfY2dm
c2l6ZTsKICAgICAgICBzaG9ydCBmc19jZ2lzaXplOwogICAgICAgIHNob3J0IGZzX3NlY3RvcnM7
CiAgICAgICAgc2hvcnQgZnNfaGVhZHM7CiAgICAgICAgc2hvcnQgZnNfbmNnOwogICAgICAgIHNo
b3J0IGZzX2RpcnR5OwogICAgICAgIGludDMyX3QgZnNfdGltZTsKICAgICAgICBpbnQzMl90IGZz
X21hZ2ljOwogICAgICAgIGNoYXIgZnNfZm5hbWVbNl07CiAgICAgICAgY2hhciBmc19mcGFja1s2
XTsKICAgICAgICBpbnQzMl90IGZzX2Jtc2l6ZTsKICAgICAgICBpbnQzMl90IGZzX3RmcmVlOwog
ICAgICAgIGludDMyX3QgZnNfdGlub2RlOwogICAgICAgIGludDMyX3QgZnNfYm1ibG9jazsKICAg
ICAgICBpbnQzMl90IGZzX3JlcGxzYjsKICAgICAgICBpbnQzMl90IGZzX2xhc3RpYWxsb2M7CiAg
ICAgICAgY2hhciBmc19zcGFyZVsyMF07CiAgICAgICAgaW50MzJfdCBmc19jaGVja3N1bTsKfTsK
CgpzdHJ1Y3QgZWZzX3NiX2luZm8gewogICAgICAgIGludDMyX3QgZnNfbWFnaWM7CiAgICAgICAg
aW50MzJfdCBmc19zdGFydDsKICAgICAgICBpbnQzMl90IGZpcnN0X2Jsb2NrOwogICAgICAgIGlu
dDMyX3QgdG90YWxfYmxvY2tzOwogICAgICAgIGludDMyX3QgZ3JvdXBfc2l6ZTsKICAgICAgICBp
bnQzMl90IGRhdGFfZnJlZTsKICAgICAgICBpbnQzMl90IGlub2RlX2ZyZWU7CiAgICAgICAgc2hv
cnQgaW5vZGVfYmxvY2tzOwogICAgICAgIHNob3J0IHRvdGFsX2dyb3VwczsKfTsKIyA2NjcgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvcm9tZnNfZnNfc2IuaCIgMQoKCgoKCnN0cnVjdCByb21mc19zYl9pbmZvIHsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4c2l6ZTsKfTsKIyA2NjggIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
c21iX2ZzX3NiLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbWJfZnNf
c2IuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxNSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvc21iLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9zbWIuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgi
IDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbWIuaCIgMgoKZW51bSBzbWJf
cHJvdG9jb2wgewogICAgICAgIFNNQl9QUk9UT0NPTF9OT05FLAogICAgICAgIFNNQl9QUk9UT0NP
TF9DT1JFLAogICAgICAgIFNNQl9QUk9UT0NPTF9DT1JFUExVUywKICAgICAgICBTTUJfUFJPVE9D
T0xfTEFOTUFOMSwKICAgICAgICBTTUJfUFJPVE9DT0xfTEFOTUFOMiwKICAgICAgICBTTUJfUFJP
VE9DT0xfTlQxCn07CgplbnVtIHNtYl9jYXNlX2huZGwgewogICAgICAgIFNNQl9DQVNFX0RFRkFV
TFQsCiAgICAgICAgU01CX0NBU0VfTE9XRVIsCiAgICAgICAgU01CX0NBU0VfVVBQRVIKfTsKCnN0
cnVjdCBzbWJfZHNrYXR0ciB7CiAgICAgICAgX191MTYgdG90YWw7CiAgICAgICAgX191MTYgYWxs
b2NibG9ja3M7CiAgICAgICAgX191MTYgYmxvY2tzaXplOwogICAgICAgIF9fdTE2IGZyZWU7Cn07
CgpzdHJ1Y3Qgc21iX2Nvbm5fb3B0IHsKCgogICAgICAgIHVuc2lnbmVkIGludCBmZDsKCiAgICAg
ICAgZW51bSBzbWJfcHJvdG9jb2wgcHJvdG9jb2w7CiAgICAgICAgZW51bSBzbWJfY2FzZV9obmRs
IGNhc2VfaGFuZGxpbmc7CgoKCiAgICAgICAgX191MzIgbWF4X3htaXQ7CiAgICAgICAgX191MTYg
c2VydmVyX3VpZDsKICAgICAgICBfX3UxNiB0aWQ7CgoKICAgICAgICBfX3UxNiBzZWNtb2RlOwog
ICAgICAgIF9fdTE2IG1heG11eDsKICAgICAgICBfX3UxNiBtYXh2Y3M7CiAgICAgICAgX191MTYg
cmF3bW9kZTsKICAgICAgICBfX3UzMiBzZXNza2V5OwoKCiAgICAgICAgX191MzIgbWF4cmF3Owog
ICAgICAgIF9fdTMyIGNhcGFiaWxpdGllczsKICAgICAgICBfX3MxNiBzZXJ2ZXJ6b25lOwp9OwoK
CgoKc3RydWN0IHNtYl9ubHNfY29kZXBhZ2UgewogICAgICAgIGNoYXIgbG9jYWxfbmFtZVsyMF07
CiAgICAgICAgY2hhciByZW1vdGVfbmFtZVsyMF07Cn07CiMgNzggIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvc21iLmgiCnN0cnVjdCBzbWJfZmF0dHIgewoKICAgICAgICBfX3UxNiBhdHRy
OwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZfaW5vOwogICAgICAgIHVtb2RlX3QgZl9tb2RlOwog
ICAgICAgIG5saW5rX3QgZl9ubGluazsKICAgICAgICB1aWRfdCBmX3VpZDsKICAgICAgICBnaWRf
dCBmX2dpZDsKICAgICAgICBrZGV2X3QgZl9yZGV2OwogICAgICAgIG9mZl90IGZfc2l6ZTsKICAg
ICAgICB0aW1lX3QgZl9hdGltZTsKICAgICAgICB0aW1lX3QgZl9tdGltZTsKICAgICAgICB0aW1l
X3QgZl9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZfYmxrc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIGZfYmxvY2tzOwp9OwoKZW51bSBzbWJfY29ubl9zdGF0ZSB7CiAgICAgICAgQ09O
Tl9WQUxJRCwKICAgICAgICBDT05OX0lOVkFMSUQsCgogICAgICAgIENPTk5fUkVUUklFRCwKICAg
ICAgICBDT05OX1JFVFJZSU5HCn07CiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
c21iX2ZzX3NiLmgiIDIKCgoKCgoKCnN0cnVjdCBzbWJfc2JfaW5mbyB7CiAgICAgICAgZW51bSBz
bWJfY29ubl9zdGF0ZSBzdGF0ZTsKICAgICAgICBzdHJ1Y3QgZmlsZSAqIHNvY2tfZmlsZTsKCiAg
ICAgICAgc3RydWN0IHNtYl9tb3VudF9kYXRhX2tlcm5lbCAqbW50OwogICAgICAgIHVuc2lnbmVk
IGNoYXIgKnRlbXBfYnVmOwoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgZ2VuZXJhdGlvbjsKICAg
ICAgICBwaWRfdCBjb25uX3BpZDsKICAgICAgICBzdHJ1Y3Qgc21iX2Nvbm5fb3B0IG9wdDsKCiAg
ICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2Fp
dDsKCiAgICAgICAgX191MzIgcGFja2V0X3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciAqIHBh
Y2tldDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByY2xzOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGVycjsKCgogICAgICAgIHZvaWQgKmRhdGFfcmVhZHk7CgoKICAgICAgICBzdHJ1Y3QgbmxzX3Rh
YmxlICpyZW1vdGVfbmxzOwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKmxvY2FsX25sczsKCgoK
CiAgICAgICAgY2hhciAqbmFtZV9idWY7CgogICAgICAgIGludCAoKmNvbnZlcnQpKGNoYXIgKiwg
aW50LCBjb25zdCBjaGFyICosIGludCwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgbmxz
X3RhYmxlICosIHN0cnVjdCBubHNfdGFibGUgKik7Cn07CgoKc3RhdGljIGlubGluZSB2b2lkCnNt
Yl9sb2NrX3NlcnZlcihzdHJ1Y3Qgc21iX3NiX2luZm8gKnNlcnZlcikKewogICAgICAgIGRvd24o
JihzZXJ2ZXItPnNlbSkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQKc21iX3VubG9ja19zZXJ2ZXIo
c3RydWN0IHNtYl9zYl9pbmZvICpzZXJ2ZXIpCnsKICAgICAgICB1cCgmKHNlcnZlci0+c2VtKSk7
Cn0KIyA2NjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaGZzX2ZzX3NiLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9oZnNfZnNfc2IuaCIKc3RydWN0IGhmc19uYW1lOwoKdHlwZWRlZiBp
bnQgKCpoZnNfbmFtZWluX2ZuKSAoY2hhciAqLCBjb25zdCBzdHJ1Y3QgaGZzX25hbWUgKik7CnR5
cGVkZWYgdm9pZCAoKmhmc19uYW1lb3V0X2ZuKSAoc3RydWN0IGhmc19uYW1lICosIGNvbnN0IGNo
YXIgKiwgaW50KTsKdHlwZWRlZiB2b2lkICgqaGZzX2lmaWxsX2ZuKSAoc3RydWN0IGlub2RlICos
IGlub190LCBjb25zdCBpbnQpOwoKCgoKCgpzdHJ1Y3QgaGZzX3NiX2luZm8gewogICAgICAgIGlu
dCBtYWdpYzsKICAgICAgICBzdHJ1Y3QgaGZzX21kYiAqc19tZGI7CiAgICAgICAgaW50IHNfcXVp
ZXQ7CgogICAgICAgIGludCBzX2xvd2VyY2FzZTsKICAgICAgICBpbnQgc19hZnBkOwogICAgICAg
IGludCBzX3ZlcnNpb247CiAgICAgICAgaGZzX25hbWVpbl9mbiBzX25hbWVpbjsKCgogICAgICAg
IGhmc19uYW1lb3V0X2ZuIHNfbmFtZW91dDsKCgogICAgICAgIGhmc19pZmlsbF9mbiBzX2lmaWxs
OwoKICAgICAgICBjb25zdCBzdHJ1Y3QgaGZzX25hbWUgKnNfcmVzZXJ2ZWQxOwogICAgICAgIGNv
bnN0IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDI7CiAgICAgICAgX191MzIgc190eXBlOwog
ICAgICAgIF9fdTMyIHNfY3JlYXRvcjsKICAgICAgICB1bW9kZV90IHNfdW1hc2s7CgogICAgICAg
IHVpZF90IHNfdWlkOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIGNoYXIgc19jb252Owp9
OwojIDY3MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9hZGZzX2ZzX3NiLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9hZGZzX2ZzX3NiLmgiCnN0cnVjdCBhZGZzX2Rpc2NtYXA7CnN0cnVj
dCBhZGZzX2Rpcl9vcHM7CgoKCgpzdHJ1Y3QgYWRmc19zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3Qg
YWRmc19kaXNjbWFwICpzX21hcDsKICAgICAgICBzdHJ1Y3QgYWRmc19kaXJfb3BzICpzX2RpcjsK
CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgdW1vZGVf
dCBzX293bmVyX21hc2s7CiAgICAgICAgdW1vZGVfdCBzX290aGVyX21hc2s7CgogICAgICAgIF9f
dTMyIHNfaWRzX3Blcl96b25lOwogICAgICAgIF9fdTMyIHNfaWRsZW47CiAgICAgICAgX191MzIg
c19tYXBfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfc2l6ZTsKICAgICAgICBzaWduZWQg
aW50IHNfbWFwMmJsazsKICAgICAgICB1bnNpZ25lZCBpbnQgc19sb2cyc2hhcmVzaXplOwogICAg
ICAgIHVuc2lnbmVkIGludCBzX3ZlcnNpb247CiAgICAgICAgdW5zaWduZWQgaW50IHNfbmFtZWxl
bjsKfTsKIyA2NzEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIiAxCiMgMTQgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvcW54NF9mcy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvcW54NF9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcW54dHlwZXMu
aCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIgMgojIDQ1
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIKc3RydWN0IHFueDRfaW5v
ZGVfZW50cnkgewogICAgICAgIGNoYXIgZGlfZm5hbWVbMTZdOwogICAgICAgIHFueDRfb2ZmX3Qg
ZGlfc2l6ZTsKICAgICAgICBxbng0X3h0bnRfdCBkaV9maXJzdF94dG50OwogICAgICAgIF9fdTMy
IGRpX3hibGs7CiAgICAgICAgX19zMzIgZGlfZnRpbWU7CiAgICAgICAgX19zMzIgZGlfbXRpbWU7
CiAgICAgICAgX19zMzIgZGlfYXRpbWU7CiAgICAgICAgX19zMzIgZGlfY3RpbWU7CiAgICAgICAg
cW54NF9ueHRudF90IGRpX251bV94dG50czsKICAgICAgICBxbng0X21vZGVfdCBkaV9tb2RlOwog
ICAgICAgIHFueDRfbXVpZF90IGRpX3VpZDsKICAgICAgICBxbng0X21naWRfdCBkaV9naWQ7CiAg
ICAgICAgcW54NF9ubGlua190IGRpX25saW5rOwogICAgICAgIF9fdTggZGlfemVyb1s0XTsKICAg
ICAgICBxbng0X2Z0eXBlX3QgZGlfdHlwZTsKICAgICAgICBfX3U4IGRpX3N0YXR1czsKfTsKCnN0
cnVjdCBxbng0X2xpbmtfaW5mbyB7CiAgICAgICAgY2hhciBkbF9mbmFtZVs0OF07CiAgICAgICAg
X191MzIgZGxfaW5vZGVfYmxrOwogICAgICAgIF9fdTggZGxfaW5vZGVfbmR4OwogICAgICAgIF9f
dTggZGxfc3BhcmVbMTBdOwogICAgICAgIF9fdTggZGxfc3RhdHVzOwp9OwoKc3RydWN0IHFueDRf
eGJsayB7CiAgICAgICAgX191MzIgeGJsa19uZXh0X3hibGs7CiAgICAgICAgX191MzIgeGJsa19w
cmV2X3hibGs7CiAgICAgICAgX191OCB4YmxrX251bV94dG50czsKICAgICAgICBfX3U4IHhibGtf
c3BhcmVbM107CiAgICAgICAgX19zMzIgeGJsa19udW1fYmxvY2tzOwogICAgICAgIHFueDRfeHRu
dF90IHhibGtfeHRudHNbNjBdOwogICAgICAgIGNoYXIgeGJsa19zaWduYXR1cmVbOF07CiAgICAg
ICAgcW54NF94dG50X3QgeGJsa19maXJzdF94dG50Owp9OwoKc3RydWN0IHFueDRfc3VwZXJfYmxv
Y2sgewogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IFJvb3REaXI7CiAgICAgICAgc3Ry
dWN0IHFueDRfaW5vZGVfZW50cnkgSW5vZGU7CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50
cnkgQm9vdDsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBBbHRCb290Owp9OwojIDEw
MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiCmV4dGVybiBzdHJ1Y3Qg
ZGVudHJ5ICpxbng0X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVu
dHJ5KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcW54NF9jb3VudF9mcmVlX2Jsb2NrcyhzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKnNiKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcW54NF9ibG9ja19tYXAoc3Ry
dWN0IGlub2RlICppbm9kZSwgbG9uZyBpYmxvY2spOwoKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVh
ZCAqcW54NF9nZXRibGsoc3RydWN0IGlub2RlICosIGludCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBi
dWZmZXJfaGVhZCAqcW54NF9icmVhZChzdHJ1Y3QgaW5vZGUgKiwgaW50LCBpbnQpOwoKZXh0ZXJu
IGludCBxbng0X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5
LCBpbnQgbW9kZSk7CmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBxbng0X2ZpbGVfaW5v
ZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHFueDRfZGlyX2lu
b2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHFueDRfZmlsZV9v
cGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBxbng0X2Rpcl9vcGVyYXRp
b25zOwpleHRlcm4gaW50IHFueDRfaXNfZnJlZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBsb25n
IGJsb2NrKTsKZXh0ZXJuIGludCBxbng0X3NldF9iaXRtYXAoc3RydWN0IHN1cGVyX2Jsb2NrICpz
YiwgbG9uZyBibG9jaywgaW50IGJ1c3kpOwpleHRlcm4gaW50IHFueDRfY3JlYXRlKHN0cnVjdCBp
bm9kZSAqaW5vZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4gdm9p
ZCBxbng0X3RydW5jYXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gdm9pZCBxbng0X2Zy
ZWVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF91bmxpbmsoc3Ry
dWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiBpbnQgcW54NF9y
bWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKZXh0ZXJuIGlu
dCBxbng0X3N5bmNfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5
LCBpbnQpOwpleHRlcm4gaW50IHFueDRfc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsK
ZXh0ZXJuIGludCBxbng0X2dldF9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGlibG9j
aywgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IGNyZWF0ZSk7CiMgMTUgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIiAyCgoKCgoKc3RydWN0IHFueDRfc2JfaW5m
byB7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzYl9idWY7CiAgICAgICAgc3RydWN0IHFu
eDRfc3VwZXJfYmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGludCBWZXJzaW9uOwogICAgICAg
IHN0cnVjdCBxbng0X2lub2RlX2VudHJ5ICpCaXRNYXA7Cn07CiMgNjcyICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3JlaXNlcmZzX2ZzX3NiLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC90cXVldWUuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RxdWV1
ZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDE3
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC90cXVldWUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9w
cy5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMQojIDIwICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyCiMgMzggIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdHF1ZXVlLmgiCnN0cnVjdCB0cV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHN5bmM7CiAgICAgICAgdm9pZCAoKnJv
dXRpbmUpKHZvaWQgKik7CiAgICAgICAgdm9pZCAqZGF0YTsKfTsKIyA2NCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC90cXVldWUuaCIKdHlwZWRlZiBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tf
cXVldWU7CgoKCgpleHRlcm4gdGFza19xdWV1ZSB0cV90aW1lciwgdHFfaW1tZWRpYXRlLCB0cV9k
aXNrOwojIDk0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgpleHRlcm4g
c3BpbmxvY2tfdCB0cXVldWVfbG9jazsKCgoKCgpzdGF0aWMgaW5saW5lIGludCBxdWV1ZV90YXNr
KHN0cnVjdCB0cV9zdHJ1Y3QgKmJoX3BvaW50ZXIsIHRhc2tfcXVldWUgKmJoX2xpc3QpCnsKICAg
ICAgICBpbnQgcmV0ID0gMDsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoMCwmYmhfcG9p
bnRlci0+c3luYykpIHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAg
ICAgICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsg
Y2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmdHF1ZXVlX2xvY2spOyB9IHdo
aWxlICgwKTsKICAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJmJoX3BvaW50ZXItPmxpc3Qs
IGJoX2xpc3QpOwogICAgICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18g
X192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAi
Y2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICByZXQgPSAxOwogICAgICAgIH0KICAg
ICAgICByZXR1cm4gcmV0Owp9CgoKCgoKZXh0ZXJuIHZvaWQgX19ydW5fdGFza19xdWV1ZSh0YXNr
X3F1ZXVlICpsaXN0KTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBydW5fdGFza19xdWV1ZSh0YXNrX3F1
ZXVlICpsaXN0KQp7CiAgICAgICAgaWYgKCghbGlzdF9lbXB0eSgmKmxpc3QpKSkKICAgICAgICAg
ICAgICAgIF9fcnVuX3Rhc2tfcXVldWUobGlzdCk7Cn0KIyA5ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiIDIKIyAyNiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sKewog
IF9fdTMyIHNfYmxvY2tfY291bnQ7CiAgX191MzIgc19mcmVlX2Jsb2NrczsKICBfX3UzMiBzX3Jv
b3RfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9kZXY7
CiMgNDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKICBf
X3UzMiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMyIHNfam91cm5hbF90cmFuc19tYXggOwog
IF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAgX191MzIgc19qb3VybmFsX21heF9iYXRj
aCA7CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRfYWdlIDsKICBfX3UzMiBzX2pvdXJuYWxf
bWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3NpemU7CiAgX191MTYgc19vaWRfbWF4c2l6
ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2IHNfc3RhdGU7CiAgY2hhciBzX21hZ2lj
WzEyXTsKICBfX3UzMiBzX2hhc2hfZnVuY3Rpb25fY29kZTsKICBfX3UxNiBzX3RyZWVfaGVpZ2h0
OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UxNiBzX3ZlcnNpb247CgoKCgogIF9fdTE2IHNfcmVz
ZXJ2ZWQ7CiAgX191MzIgc19pbm9kZV9nZW5lcmF0aW9uOwogIGNoYXIgc191bnVzZWRbMTI0XSA7
Cn0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKTsKCgoKCnN0cnVjdCByZWlzZXJmc19zdXBl
cl9ibG9ja192MQp7CiAgX191MzIgc19ibG9ja19jb3VudDsKICBfX3UzMiBzX2ZyZWVfYmxvY2tz
OwogIF9fdTMyIHNfcm9vdF9ibG9jazsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2s7CiAgX191MzIg
c19qb3VybmFsX2RldjsKICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMyIHNfam91
cm5hbF90cmFuc19tYXggOwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAgX191MzIg
c19qb3VybmFsX21heF9iYXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRfYWdlIDsK
ICBfX3UzMiBzX2pvdXJuYWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3NpemU7CiAg
X191MTYgc19vaWRfbWF4c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2IHNfc3Rh
dGU7CiAgY2hhciBzX21hZ2ljWzE2XTsKICBfX3UxNiBzX3RyZWVfaGVpZ2h0OwogIF9fdTE2IHNf
Ym1hcF9ucjsKICBfX3UzMiBzX3Jlc2VydmVkOwp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9f
KSk7CiMgMTQ5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgi
CnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlIHsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo
IDsKICBrZGV2X3QgZGV2IDsKICB1bnNpZ25lZCBsb25nIGJsb2NrbnIgOwogIGludCBzdGF0ZSA7
CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCAqamxpc3QgOwogIHN0cnVjdCByZWlzZXJm
c19qb3VybmFsX2Nub2RlICpuZXh0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAq
cHJldiA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmhwcmV2IDsKICBzdHJ1Y3Qg
cmVpc2VyZnNfam91cm5hbF9jbm9kZSAqaG5leHQgOwp9OwoKc3RydWN0IHJlaXNlcmZzX2JpdG1h
cF9ub2RlIHsKICBpbnQgaWQgOwogIGNoYXIgKmRhdGEgOwogIHN0cnVjdCBsaXN0X2hlYWQgbGlz
dCA7Cn0gOwoKc3RydWN0IHJlaXNlcmZzX2xpc3RfYml0bWFwIHsKICBzdHJ1Y3QgcmVpc2VyZnNf
am91cm5hbF9saXN0ICpqb3VybmFsX2xpc3QgOwogIHN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9k
ZSAqKmJpdG1hcHMgOwp9IDsKCgoKCnN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUg
ewoKICBjaGFyICp0X2NhbGxlciA7CiAgaW50IHRfYmxvY2tzX2xvZ2dlZCA7CiAgaW50IHRfYmxv
Y2tzX2FsbG9jYXRlZCA7CiAgdW5zaWduZWQgbG9uZyB0X3RyYW5zX2lkIDsKICBzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKnRfc3VwZXIgOwoKCn0gOwoKCgoKCgoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxf
bGlzdCB7CiAgdW5zaWduZWQgbG9uZyBqX3N0YXJ0IDsKICB1bnNpZ25lZCBsb25nIGpfbGVuIDsK
ICBhdG9taWNfdCBqX25vbnplcm9sZW4gOwogIGF0b21pY190IGpfY29tbWl0X2xlZnQgOwogIGF0
b21pY190IGpfZmx1c2hpbmcgOwogIGF0b21pY190IGpfY29tbWl0X2ZsdXNoaW5nIDsKICBhdG9t
aWNfdCBqX29sZGVyX2NvbW1pdHNfZG9uZSA7CiAgdW5zaWduZWQgbG9uZyBqX3RyYW5zX2lkIDsK
ICB0aW1lX3Qgal90aW1lc3RhbXAgOwogIHN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCAqal9s
aXN0X2JpdG1hcCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpqX2NvbW1pdF9iaCA7CiAgc3RydWN0
IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfcmVhbGJsb2NrIDsKICBzdHJ1Y3QgcmVpc2VyZnNf
am91cm5hbF9jbm9kZSAqal9mcmVlZGxpc3QgOwogIHdhaXRfcXVldWVfaGVhZF90IGpfY29tbWl0
X3dhaXQgOwogIHdhaXRfcXVldWVfaGVhZF90IGpfZmx1c2hfd2FpdCA7Cn0gOwoKc3RydWN0IHJl
aXNlcmZzX3BhZ2VfbGlzdCA7CgpzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbCB7CiAgc3RydWN0IGJ1
ZmZlcl9oZWFkICoqIGpfYXBfYmxvY2tzIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9k
ZSAqal9sYXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9maXJzdCA7Cgog
IGludCBqX3N0YXRlIDsKICB1bnNpZ25lZCBsb25nIGpfdHJhbnNfaWQgOwogIHVuc2lnbmVkIGxv
bmcgal9tb3VudF9pZCA7CiAgdW5zaWduZWQgbG9uZyBqX3N0YXJ0IDsKICB1bnNpZ25lZCBsb25n
IGpfbGVuIDsKICB1bnNpZ25lZCBsb25nIGpfbGVuX2FsbG9jIDsKICBhdG9taWNfdCBqX3djb3Vu
dCA7CiAgdW5zaWduZWQgbG9uZyBqX2Jjb3VudCA7CiAgdW5zaWduZWQgbG9uZyBqX2ZpcnN0X3Vu
Zmx1c2hlZF9vZmZzZXQgOwogIHVuc2lnbmVkIGxvbmcgal9sYXN0X2ZsdXNoX3RyYW5zX2lkIDsK
ICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmpfaGVhZGVyX2JoIDsKCgoKCiAgc3RydWN0IHJlaXNlcmZz
X3BhZ2VfbGlzdCAqal9mbHVzaF9wYWdlcyA7CiAgdGltZV90IGpfdHJhbnNfc3RhcnRfdGltZSA7
CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal93YWl0IDsKICBhdG9taWNfdCBqX3dsb2NrIDsKICB3YWl0
X3F1ZXVlX2hlYWRfdCBqX2pvaW5fd2FpdCA7CiAgYXRvbWljX3Qgal9qbG9jayA7CiAgaW50IGpf
am91cm5hbF9saXN0X2luZGV4IDsKICBpbnQgal9saXN0X2JpdG1hcF9pbmRleCA7CiAgaW50IGpf
bXVzdF93YWl0IDsKICBpbnQgal9uZXh0X2Z1bGxfZmx1c2ggOwogIGludCBqX25leHRfYXN5bmNf
Zmx1c2ggOwoKICBpbnQgal9jbm9kZV91c2VkIDsKICBpbnQgal9jbm9kZV9mcmVlIDsKCiAgc3Ry
dWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfY25vZGVfZnJlZV9saXN0IDsKICBzdHJ1Y3Qg
cmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9jbm9kZV9mcmVlX29yaWcgOwoKICBpbnQgal9mcmVl
X2JpdG1hcF9ub2RlcyA7CiAgaW50IGpfdXNlZF9iaXRtYXBfbm9kZXMgOwogIHN0cnVjdCBsaXN0
X2hlYWQgal9iaXRtYXBfbm9kZXMgOwogIHN0cnVjdCBpbm9kZSBqX2R1bW15X2lub2RlIDsKICBz
dHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgal9saXN0X2JpdG1hcFs1XSA7CiAgc3RydWN0IHJl
aXNlcmZzX2pvdXJuYWxfbGlzdCBqX2pvdXJuYWxfbGlzdFs2NF0gOwogIHN0cnVjdCByZWlzZXJm
c19qb3VybmFsX2Nub2RlICpqX2hhc2hfdGFibGVbODE5Ml0gOwogIHN0cnVjdCByZWlzZXJmc19q
b3VybmFsX2Nub2RlICpqX2xpc3RfaGFzaF90YWJsZVs4MTkyXSA7CgogIHN0cnVjdCBsaXN0X2hl
YWQgal9wcmVhbGxvY19saXN0Owp9OwoKCgoKdHlwZWRlZiBfX3UzMiAoKmhhc2hmX3QpIChjb25z
dCBjaGFyICosIGludCk7CgoKc3RydWN0IHJlaXNlcmZzX3NiX2luZm8KewogICAgc3RydWN0IGJ1
ZmZlcl9oZWFkICogc19zYmg7CgoKICAgIHN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jayAqIHNf
cnM7CiAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19hcF9iaXRtYXA7CiAgICBzdHJ1Y3QgcmVp
c2VyZnNfam91cm5hbCAqc19qb3VybmFsIDsKICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3Rh
dGU7CgoKICAgIHZvaWQgKCplbmRfaW9faGFuZGxlcikoc3RydWN0IGJ1ZmZlcl9oZWFkICosIGlu
dCk7CiAgICBoYXNoZl90IHNfaGFzaF9mdW5jdGlvbjsKCgogICAgdW5zaWduZWQgbG9uZyBzX21v
dW50X29wdDsKCgoKCiAgICB3YWl0X3F1ZXVlX2hlYWRfdCBzX3dhaXQ7CgogICAgYXRvbWljX3Qg
c19nZW5lcmF0aW9uX2NvdW50ZXI7CgoKCiAgICBpbnQgc19rbWFsbG9jczsKICAgIGludCBzX2Rp
c2tfcmVhZHM7CiAgICBpbnQgc19kaXNrX3dyaXRlczsKICAgIGludCBzX2ZpeF9ub2RlczsKICAg
IGludCBzX2RvX2JhbGFuY2U7CiAgICBpbnQgc191bm5lZWRlZF9sZWZ0X25laWdoYm9yOwogICAg
aW50IHNfZ29vZF9zZWFyY2hfYnlfa2V5X3JlYWRhOwogICAgaW50IHNfYm1hcHM7CiAgICBpbnQg
c19ibWFwc193aXRob3V0X3NlYXJjaDsKICAgIGludCBzX2RpcmVjdDJpbmRpcmVjdDsKICAgIGlu
dCBzX2luZGlyZWN0MmRpcmVjdDsKfTsKIyAzNjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvcmVpc2VyZnNfZnNfc2IuaCIKdm9pZCByZWlzZXJmc19maWxlX2J1ZmZlciAoc3RydWN0IGJ1
ZmZlcl9oZWFkICogYmgsIGludCBsaXN0KTsKaW50IHJlaXNlcmZzX2lzX3N1cGVyKHN0cnVjdCBz
dXBlcl9ibG9jayAqcykgOwppbnQgam91cm5hbF9tYXJrX2RpcnR5KHN0cnVjdCByZWlzZXJmc190
cmFuc2FjdGlvbl9oYW5kbGUgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBidWZmZXJf
aGVhZCAqYmgpIDsKaW50IGZsdXNoX29sZF9jb21taXRzKHN0cnVjdCBzdXBlcl9ibG9jayAqcywg
aW50KSA7CmludCBzaG93X3JlaXNlcmZzX2xvY2tzKHZvaWQpIDsKaW50IHJlaXNlcmZzX3Jlc2l6
ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgbG9uZykgOwojIDY3MyAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9iZnNfZnNfc2IuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Jm
c19mc19zYi5oIgpzdHJ1Y3QgYmZzX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lf
YmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfZnJlZWI7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzaV9mcmVlaTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX2lvZmY7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzaV9sZl9zYmxrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfZWJs
azsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xhc3RpOwogICAgICAgIGNoYXIgKiBzaV9pbWFw
OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNpX3NiaDsKICAgICAgICBzdHJ1Y3QgYmZz
X3N1cGVyX2Jsb2NrICogc2lfYmZzX3NiOwp9OwojIDY3NCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZGZfZnNf
c2IuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdmVyc2lvbi5oIiAxCiMgMjMgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDIKCgojcHJhZ21hIHBhY2soMSkK
IyAzNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIKc3RydWN0IHVk
Zl9zcGFyaW5nX2RhdGEKewogICAgICAgIF9fdTE2IHNfcGFja2V0X2xlbjsKICAgICAgICBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKnNfc3Bhcl9tYXBbNF07Cn07CgpzdHJ1Y3QgdWRmX3ZpcnR1YWxfZGF0
YQp7CiAgICAgICAgX191MzIgc19udW1fZW50cmllczsKICAgICAgICBfX3UxNiBzX3N0YXJ0X29m
ZnNldDsKfTsKCnN0cnVjdCB1ZGZfYml0bWFwCnsKICAgICAgICBfX3UzMiBzX2V4dExlbmd0aDsK
ICAgICAgICBfX3UzMiBzX2V4dFBvc2l0aW9uOwogICAgICAgIF9fdTE2IHNfbnJfZ3JvdXBzOwog
ICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKnNfYmxvY2tfYml0bWFwOwp9OwoKc3RydWN0IHVk
Zl9wYXJ0X21hcAp7CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgdWRmX2JpdG1hcCAqc19iaXRtYXA7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNf
dGFibGU7CiAgICAgICAgfSBzX3VzcGFjZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAg
ICAgICAgICAgIHN0cnVjdCB1ZGZfYml0bWFwICpzX2JpdG1hcDsKICAgICAgICAgICAgICAgIHN0
cnVjdCBpbm9kZSAqc190YWJsZTsKICAgICAgICB9IHNfZnNwYWNlOwogICAgICAgIF9fdTMyIHNf
cGFydGl0aW9uX3Jvb3Q7CiAgICAgICAgX191MzIgc19wYXJ0aXRpb25fbGVuOwogICAgICAgIF9f
dTE2IHNfcGFydGl0aW9uX3R5cGU7CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25fbnVtOwogICAg
ICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9zcGFyaW5nX2Rh
dGEgc19zcGFyaW5nOwogICAgICAgICAgICAgICAgc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEgc192
aXJ0dWFsOwogICAgICAgIH0gc190eXBlX3NwZWNpZmljOwogICAgICAgIF9fdTMyICgqc19wYXJ0
aXRpb25fZnVuYykoc3RydWN0IHN1cGVyX2Jsb2NrICosIF9fdTMyLCBfX3UxNiwgX191MzIpOwog
ICAgICAgIF9fdTE2IHNfdm9sdW1lc2VxbnVtOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX2Zs
YWdzOwp9OwoKI3ByYWdtYSBwYWNrKCkKCnN0cnVjdCB1ZGZfc2JfaW5mbwp7CiAgICAgICAgc3Ry
dWN0IHVkZl9wYXJ0X21hcCAqc19wYXJ0bWFwczsKICAgICAgICBfX3U4IHNfdm9saWRlbnRbMzJd
OwoKCiAgICAgICAgX191MTYgc19wYXJ0aXRpb25zOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9u
OwoKCiAgICAgICAgX191MzIgc19zZXNzaW9uOwogICAgICAgIF9fdTMyIHNfYW5jaG9yWzRdOwog
ICAgICAgIF9fdTMyIHNfbGFzdGJsb2NrOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNf
bHZpZGJoOwoKCiAgICAgICAgbW9kZV90IHNfdW1hc2s7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAg
ICAgICAgdWlkX3Qgc191aWQ7CgoKICAgICAgICB0aW1lX3Qgc19yZWNvcmR0aW1lOwoKCiAgICAg
ICAgX191MTYgc19zZXJpYWxudW07CgoKICAgICAgICBfX3UxNiBzX3VkZnJldjsKCgogICAgICAg
IF9fdTMyIHNfZmxhZ3M7CgoKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpzX25sc19tYXA7CgoK
ICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNfdmF0Owp9OwojIDY3NSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3Bf
ZnNfc2IuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEyICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L25jcF9tb3VudC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
dHlwZXMuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3AuaCIgMQojIDEzICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdHlwZXMuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25j
cC5oIiAyCiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwLmgiCnN0cnVjdCBu
Y3BfcmVxdWVzdF9oZWFkZXIgewogICAgICAgIF9fdTE2IHR5cGUgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191OCBzZXF1ZW5jZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3U4IGNvbm5fbG93IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTgg
dGFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGNvbm5faGlnaCBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZ1bmN0aW9uIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
fTsKCgoKCnN0cnVjdCBuY3BfcmVwbHlfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBj
b25uX2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb21wbGV0aW9u
X2NvZGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uZWN0aW9uX3N0
YXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKfTsKCgoKc3RydWN0IG5jcF92b2x1bWVfaW5mbyB7CiAgICAgICAg
X191MzIgdG90YWxfYmxvY2tzOwogICAgICAgIF9fdTMyIGZyZWVfYmxvY2tzOwogICAgICAgIF9f
dTMyIHB1cmdlYWJsZV9ibG9ja3M7CiAgICAgICAgX191MzIgbm90X3lldF9wdXJnZWFibGVfYmxv
Y2tzOwogICAgICAgIF9fdTMyIHRvdGFsX2Rpcl9lbnRyaWVzOwogICAgICAgIF9fdTMyIGF2YWls
YWJsZV9kaXJfZW50cmllczsKICAgICAgICBfX3U4IHNlY3RvcnNfcGVyX2Jsb2NrOwogICAgICAg
IGNoYXIgdm9sdW1lX25hbWVbKDE2KSArIDFdOwp9OwojIDExMiAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9uY3AuaCIKc3RydWN0IG53X2luZm9fc3RydWN0IHsKICAgICAgICBfX3UzMiBz
cGFjZUFsbG9jIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGF0dHJpYnV0
ZXMgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgZmxhZ3MgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgZGF0YVN0cmVhbVNpemUgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191MzIgdG90YWxTdHJlYW1TaXplIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG51bWJlck9mU3RyZWFtcyBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgY3JlYXRpb25EYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTMyIGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UxNiBtb2RpZnlUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1v
ZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgbW9kaWZpZXJJ
RCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBsYXN0QWNjZXNzRGF0ZSBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGltZSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlRGF0ZSBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRlZFJpZ2h0c01hc2sgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191MzIgZGlyRW50TnVtIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTMyIERvc0Rpck51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UzMiB2b2xOdW1iZXIgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRUFE
YXRhU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQUtleUNvdW50
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBS2V5U2l6ZSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBOU0NyZWF0b3IgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191OCBuYW1lTGVuIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTggZW50cnlOYW1lWzI1Nl0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMg
MTU2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbndfbW9kaWZ5
X2Rvc19pbmZvIHsKICAgICAgICBfX3UzMiBhdHRyaWJ1dGVzIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg
ICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2
IG1vZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5
VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtb2RpZmllcklEIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVEYXRlIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVySUQgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VHcmFudE1hc2sgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VSZXZva2VNYXNrIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTMyIG1heGltdW1TcGFjZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKfTsKCnN0cnVjdCBud19zZWFyY2hfc2VxdWVuY2UgewogICAgICAgIF9fdTggdm9sTnVtYmVy
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGRpckJhc2UgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7Cn07CiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwX21vdW50Lmgi
IDIKIyAyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIKc3RydWN0
IG5jcF9tb3VudF9kYXRhIHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBp
bnQgbmNwX2ZkOwogICAgICAgIF9fa2VybmVsX3VpZF90IG1vdW50ZWRfdWlkOwogICAgICAgIF9f
a2VybmVsX3BpZF90IHdkb2dfcGlkOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIG1vdW50ZWRfdm9s
WygxNikgKyAxXTsKICAgICAgICB1bnNpZ25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2ln
bmVkIGludCByZXRyeV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CgogICAgICAg
IF9fa2VybmVsX3VpZF90IHVpZDsKICAgICAgICBfX2tlcm5lbF9naWRfdCBnaWQ7CiAgICAgICAg
X19rZXJuZWxfbW9kZV90IGZpbGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21v
ZGU7Cn07CgoKCnN0cnVjdCBuY3BfbW91bnRfZGF0YV92NCB7CiAgICAgICAgaW50IHZlcnNpb247
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbW91
bnRlZF91aWQ7CgogICAgICAgIGxvbmcgd2RvZ19waWQ7CgogICAgICAgIHVuc2lnbmVkIGludCBu
Y3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBp
bnQgcmV0cnlfY291bnQ7CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyB1aWQ7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBnaWQ7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZmlsZV9tb2RlOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZGlyX21vZGU7Cn07CgoKCnN0cnVjdCBuY3BfbW91bnRfZGF0YV9rZXJu
ZWwgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IGlu
dF9mbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCBtb3VudGVkX3VpZDsKICAgICAgICBf
X2tlcm5lbF9waWRfdCB3ZG9nX3BpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgbmNwX2ZkOwogICAg
ICAgIHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2Nv
dW50OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAg
IF9fa2VybmVsX3VpZDMyX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZDMyX3QgZ2lkOwogICAg
ICAgIF9fa2VybmVsX21vZGVfdCBmaWxlX21vZGU7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IGRp
cl9tb2RlOwp9OwojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5o
IiAyCgoKCgoKc3RydWN0IG5jcF9zZXJ2ZXIgewoKICAgICAgICBzdHJ1Y3QgbmNwX21vdW50X2Rh
dGFfa2VybmVsIG07CgoKCiAgICAgICAgX191OCBuYW1lX3NwYWNlWyg2NCkgKyAyXTsKCiAgICAg
ICAgc3RydWN0IGZpbGUgKm5jcF9maWxwOwoKICAgICAgICB1OCBzZXF1ZW5jZTsKICAgICAgICB1
OCB0YXNrOwogICAgICAgIHUxNiBjb25uZWN0aW9uOwoKICAgICAgICB1OCBjb21wbGV0aW9uOwog
ICAgICAgIHU4IGNvbm5fc3RhdHVzOwoKCgogICAgICAgIGludCBidWZmZXJfc2l6ZTsKCiAgICAg
ICAgaW50IHJlcGx5X3NpemU7CgogICAgICAgIGludCBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBjaGFyICpwYWNrZXQ7CgoKICAgICAgICBpbnQgbG9jazsKICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlIHNlbTsKCiAgICAgICAgaW50IGN1cnJlbnRfc2l6ZTsKICAgICAgICBpbnQgaGFzX3N1
YmZ1bmN0aW9uOwogICAgICAgIGludCBuY3BfcmVwbHlfc2l6ZTsKCiAgICAgICAgaW50IHJvb3Rf
c2V0dXBlZDsKCgogICAgICAgIGludCBzaWduX3dhbnRlZDsKICAgICAgICBpbnQgc2lnbl9hY3Rp
dmU7CiAgICAgICAgY2hhciBzaWduX3Jvb3RbOF07CiAgICAgICAgY2hhciBzaWduX2xhc3RbMTZd
OwoKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIGludCBhdXRoX3R5cGU7CiAgICAg
ICAgICAgICAgICBzaXplX3Qgb2JqZWN0X25hbWVfbGVuOwogICAgICAgICAgICAgICAgdm9pZCog
b2JqZWN0X25hbWU7CiAgICAgICAgICAgICAgICBpbnQgb2JqZWN0X3R5cGU7CiAgICAgICAgfSBh
dXRoOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgc2l6ZV90IGxlbjsKICAgICAg
ICAgICAgICAgIHZvaWQqIGRhdGE7CiAgICAgICAgfSBwcml2OwoKCiAgICAgICAgc3RydWN0IG5s
c190YWJsZSAqbmxzX3ZvbDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87CgoKICAg
ICAgICBpbnQgZGVudHJ5X3R0bDsKCgogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKfTsKIyA5
MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIKc3RhdGljIGlubGlu
ZSBpbnQgbmNwX2Nvbm5fdmFsaWQoc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewogICAgICAg
IHJldHVybiAoKHNlcnZlci0+Y29ubl9zdGF0dXMgJiAweDExKSA9PSAwKTsKfQoKc3RhdGljIGlu
bGluZSB2b2lkIG5jcF9pbnZhbGlkYXRlX2Nvbm4oc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikK
ewogICAgICAgIHNlcnZlci0+Y29ubl9zdGF0dXMgfD0gMHgwMTsKfQojIDY3NiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC91c2JkZXZfZnNfc2IuaCIgMQpzdHJ1Y3QgdXNiZGV2X3NiX2luZm8gewogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbGlzdDsKICAg
ICAgICB1aWRfdCBkZXZ1aWQ7CiAgICAgICAgZ2lkX3QgZGV2Z2lkOwogICAgICAgIHVtb2RlX3Qg
ZGV2bW9kZTsKICAgICAgICB1aWRfdCBidXN1aWQ7CiAgICAgICAgZ2lkX3QgYnVzZ2lkOwogICAg
ICAgIHVtb2RlX3QgYnVzbW9kZTsKICAgICAgICB1aWRfdCBsaXN0dWlkOwogICAgICAgIGdpZF90
IGxpc3RnaWQ7CiAgICAgICAgdW1vZGVfdCBsaXN0bW9kZTsKfTsKIyA2NzcgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY3JhbWZzX2ZzX3NiLmgiIDEKIyA2NzggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIg
MQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNyAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9qZmZzMl9mc19zYi5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgOCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9qZmZzMl9mc19zYi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9jb21wbGV0aW9uLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9jb21wbGV0aW9uLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0Lmgi
IDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDIKCnN0
cnVjdCBjb21wbGV0aW9uIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZG9uZTsKICAgICAgICB3YWl0
X3F1ZXVlX2hlYWRfdCB3YWl0Owp9OwoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfY29t
cGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqeCkKewogICAgICAgIHgtPmRvbmUgPSAwOwogICAg
ICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJngtPndhaXQpOwp9CgpleHRlcm4gdm9pZCB3YWl0X2Zv
cl9jb21wbGV0aW9uKHN0cnVjdCBjb21wbGV0aW9uICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKZXh0ZXJuIHZvaWQgY29tcGxldGUoc3RydWN0IGNvbXBsZXRpb24gKikgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpOwojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvamZm
czJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5o
IiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDIwICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAg
ICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGlnaGVzdF9pbm87CiAg
ICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qgbm9kZWxpc3RfbG9j
azsKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIGdjX3RocmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBnY190
aHJlYWRfZXhpdDsKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9jX3NlbTsKCgoKCiAg
ICAgICAgX191MzIgZmxhc2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3NpemU7CiAgICAgICAg
X191MzIgZGlydHlfc2l6ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAgICAgICAgX191MzIg
ZXJhc2luZ19zaXplOwogICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAgIF9fdTMyIHNlY3Rv
cl9zaXplOwoKCgogICAgICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5y
X2VyYXNpbmdfYmxvY2tzOwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0
IGpmZnMyX2VyYXNlYmxvY2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxv
Y2sgKm5leHRibG9jazsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7
CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIGRpcnR5X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xpc3Q7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBlcmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgZnJlZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVyYXNl
X2NvbXBsZXRpb25fbG9jazsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2FpdDsK
ICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xpc3RbMV07CiAgICAg
ICAgc3BpbmxvY2tfdCBpbm9jYWNoZV9sb2NrOwp9OwojIDY3OSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9mcy5oIiAyCgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBzdXBlcl9ibG9ja3M7
CmV4dGVybiBzcGlubG9ja190IHNiX2xvY2s7CgoKCnN0cnVjdCBzdXBlcl9ibG9jayB7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBzX2xpc3Q7CiAgICAgICAga2Rldl90IHNfZGV2OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc19ibG9ja3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2Jsb2Nr
c2l6ZV9iaXRzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19kaXJ0OwogICAgICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBzX21heGJ5dGVzOwogICAgICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpz
X3R5cGU7CiAgICAgICAgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgKnNfb3A7CiAgICAgICAgc3Ry
dWN0IGRxdW90X29wZXJhdGlvbnMgKmRxX29wOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mbGFn
czsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWFnaWM7CiAgICAgICAgc3RydWN0IGRlbnRyeSAq
c19yb290OwogICAgICAgIHN0cnVjdCByd19zZW1hcGhvcmUgc191bW91bnQ7CiAgICAgICAgc3Ry
dWN0IHNlbWFwaG9yZSBzX2xvY2s7CiAgICAgICAgaW50IHNfY291bnQ7CiAgICAgICAgYXRvbWlj
X3Qgc19hY3RpdmU7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19kaXJ0eTsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIHNfbG9ja2VkX2lub2RlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk
IHNfZmlsZXM7CgogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKnNfYmRldjsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIHNfaW5zdGFuY2VzOwogICAgICAgIHN0cnVjdCBxdW90YV9tb3VudF9v
cHRpb25zIHNfZHF1b3Q7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBt
aW5peF9zYl9pbmZvIG1pbml4X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDJfc2JfaW5m
byBleHQyX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGhwZnNfc2JfaW5mbyBocGZzX3NiOwog
ICAgICAgICAgICAgICAgc3RydWN0IG50ZnNfc2JfaW5mbyBudGZzX3NiOwogICAgICAgICAgICAg
ICAgc3RydWN0IG1zZG9zX3NiX2luZm8gbXNkb3Nfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
aXNvZnNfc2JfaW5mbyBpc29mc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfc2JfaW5m
byBuZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3lzdl9zYl9pbmZvIHN5c3Zfc2I7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgYWZmc19zYl9pbmZvIGFmZnNfc2I7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgdWZzX3NiX2luZm8gdWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGVmc19z
Yl9pbmZvIGVmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBzaG1lbV9zYl9pbmZvIHNobWVt
X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHJvbWZzX3NiX2luZm8gcm9tZnNfc2I7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc21iX3NiX2luZm8gc21iZnNfc2I7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgaGZzX3NiX2luZm8gaGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGFkZnNfc2Jf
aW5mbyBhZGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHFueDRfc2JfaW5mbyBxbng0X3Ni
OwogICAgICAgICAgICAgICAgc3RydWN0IHJlaXNlcmZzX3NiX2luZm8gcmVpc2VyZnNfc2I7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgYmZzX3NiX2luZm8gYmZzX3NiOwogICAgICAgICAgICAgICAg
c3RydWN0IHVkZl9zYl9pbmZvIHVkZl9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3Bfc2Vy
dmVyIG5jcGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHVzYmRldl9zYl9pbmZvIHVzYmRl
dmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGpmZnMyX3NiX2luZm8gamZmczJfc2I7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgY3JhbWZzX3NiX2luZm8gY3JhbWZzX3NiOwogICAgICAgICAg
ICAgICAgdm9pZCAqZ2VuZXJpY19zYnA7CiAgICAgICAgfSB1OwoKCgoKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIHNfdmZzX3JlbmFtZV9zZW07CiMgNzUxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2ZzLmgiCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX25mc2RfZnJlZV9wYXRoX3Nl
bTsKfTsKCgoKCmV4dGVybiBpbnQgdmZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRl
bnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19ta25vZChzdHJ1Y3QgaW5vZGUgKiwgc3Ry
dWN0IGRlbnRyeSAqLCBpbnQsIGRldl90KTsKZXh0ZXJuIGludCB2ZnNfc3ltbGluayhzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHZmc19s
aW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4
dGVybiBpbnQgdmZzX3JtZGlyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRl
cm4gaW50IHZmc191bmxpbmsoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVy
biBpbnQgdmZzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKIyA3ODUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvZnMuaCIKdHlwZWRlZiBpbnQgKCpmaWxsZGlyX3QpKHZvaWQgKiwgY29uc3QgY2hhciAq
LCBpbnQsIGxvZmZfdCwgaW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19kZXZpY2Vfb3Bl
cmF0aW9ucyB7CiAgICAgICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmls
ZSAqKTsKICAgICAgICBpbnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxl
ICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICos
IHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBpbnQgKCpjaGVja19tZWRpYV9jaGFu
Z2UpIChrZGV2X3QpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChrZGV2X3QpOwp9OwoKCgoK
CgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsK
ICAgICAgICBsb2ZmX3QgKCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGludCk7CiAg
ICAgICAgc3NpemVfdCAoKnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9m
Zl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSkgKHN0cnVjdCBmaWxlICosIGNvbnN0IGNo
YXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAgICAgICAgaW50ICgqcmVhZGRpcikgKHN0cnVjdCBm
aWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKICAgICAgICB1bnNpZ25lZCBpbnQgKCpwb2xsKSAo
c3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwogICAgICAgIGludCAo
KmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5z
aWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2
bV9hcmVhX3N0cnVjdCAqKTsKICAgICAgICBpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICosIHN0
cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKik7CiAgICAg
ICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAg
ICBpbnQgKCpmc3luYykgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50IGRhdGFz
eW5jKTsKICAgICAgICBpbnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICosIGludCk7CiAg
ICAgICAgaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAq
KTsKICAgICAgICBzc2l6ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3Qg
aW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0
ZXYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywg
bG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCpzZW5kcGFnZSkgKHN0cnVjdCBmaWxlICosIHN0
cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3QgKiwgaW50KTsKICAgICAgICB1bnNpZ25l
ZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxvbmcs
IHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwp9OwoKc3RydWN0
IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmNyZWF0ZSkgKHN0cnVjdCBpbm9kZSAq
LHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmxvb2t1cCkg
KHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqbGluaykgKHN0
cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGlu
dCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50
ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixjb25zdCBjaGFyICop
OwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGlu
dCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICop
OwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGlu
dCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVu
dHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVu
dHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAqLCBjaGFyICos
aW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0
IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1bmNhdGUpIChzdHJ1Y3QgaW5vZGUgKik7
CiAgICAgICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAg
IGludCAoKnJldmFsaWRhdGUpIChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnNldGF0
dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBpbnQgKCpnZXRh
dHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgoKCgoKc3RydWN0IHN1
cGVyX29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3RydWN0IGlub2Rl
ICopOwoKCgoKCgoKICAgICAgICB2b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5vZGUgKiwg
dm9pZCAqKSA7CiAgICAgICAgdm9pZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2RlICopOwog
ICAgICAgIHZvaWQgKCp3cml0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAg
IHZvaWQgKCpwdXRfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAoKmRlbGV0
ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1cGVyKSAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikgKHN0cnVjdCBz
dXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9ja2ZzKSAoc3RydWN0
IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0cnVjdCBzdXBlcl9i
bG9jayAqKTsKICAgICAgICBpbnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3Ry
dWN0IHN0YXRmcyAqKTsKICAgICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1cGVyX2Js
b2NrICosIGludCAqLCBjaGFyICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9pbm9kZSkgKHN0cnVj
dCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3RydWN0IHN1cGVyX2Js
b2NrICopOwojIDg5MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgogICAgICAg
IHN0cnVjdCBkZW50cnkgKiAoKmZoX3RvX2RlbnRyeSkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg
X191MzIgKmZoLCBpbnQgbGVuLCBpbnQgZmh0eXBlLCBpbnQgcGFyZW50KTsKICAgICAgICBpbnQg
KCpkZW50cnlfdG9fZmgpKHN0cnVjdCBkZW50cnkgKiwgX191MzIgKmZoLCBpbnQgKmxlbnAsIGlu
dCBuZWVkX3BhcmVudCk7Cn07CiMgOTA0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz
LmgiCmV4dGVybiB2b2lkIF9fbWFya19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsK
c3RhdGljIGlubGluZSB2b2lkIG1hcmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICppbm9kZSkK
ewogICAgICAgIF9fbWFya19pbm9kZV9kaXJ0eShpbm9kZSwgKDEgfCAyIHwgNCkpOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0eV9zeW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUp
CnsKICAgICAgICBfX21hcmtfaW5vZGVfZGlydHkoaW5vZGUsIDEpOwp9CgpzdGF0aWMgaW5saW5l
IHZvaWQgbWFya19pbm9kZV9kaXJ0eV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAg
ICAgX19tYXJrX2lub2RlX2RpcnR5KGlub2RlLCA0KTsKfQoKc3RydWN0IGRxdW90X29wZXJhdGlv
bnMgewogICAgICAgIHZvaWQgKCppbml0aWFsaXplKSAoc3RydWN0IGlub2RlICosIHNob3J0KTsK
ICAgICAgICB2b2lkICgqZHJvcCkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICBpbnQgKCphbGxv
Y19ibG9jaykgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyKTsKICAgICAgICBp
bnQgKCphbGxvY19pbm9kZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsK
ICAgICAgICB2b2lkICgqZnJlZV9ibG9jaykgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25n
KTsKICAgICAgICB2b2lkICgqZnJlZV9pbm9kZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNp
Z25lZCBsb25nKTsKICAgICAgICBpbnQgKCp0cmFuc2ZlcikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgaWF0dHIgKik7Cn07CgpzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSB7CiAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZTsKICAgICAgICBpbnQgZnNfZmxhZ3M7CiAgICAgICAgc3RydWN0IHN1cGVyX2Js
b2NrICooKnJlYWRfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdm9pZCAqLCBpbnQpOwog
ICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90
eXBlICogbmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZzX3N1cGVyczsKfTsKIyA5NjIg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIGludCByZWdpc3Rlcl9m
aWxlc3lzdGVtKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gaW50IHVucmVnaXN0
ZXJfZmlsZXN5c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIHN0cnVjdCB2
ZnNtb3VudCAqa2Vybl9tb3VudChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGlu
dCBtYXlfdW1vdW50KHN0cnVjdCB2ZnNtb3VudCAqKTsKZXh0ZXJuIGxvbmcgZG9fbW91bnQoY2hh
ciAqLCBjaGFyICosIGNoYXIgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKCgoKZXh0ZXJuIGlu
dCB2ZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qgc3RhdGZzICopOwojIDk4
MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gaW50IGxvY2tzX21h
bmRhdG9yeV9sb2NrZWQoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGxvY2tzX21hbmRhdG9y
eV9hcmVhKGludCwgc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIGxvZmZfdCwgc2l6ZV90
KTsKIyA5OTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGlu
ZSBpbnQgbG9ja3NfdmVyaWZ5X2xvY2tlZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAg
aWYgKCgoKGlub2RlKS0+aV9zYi0+c19mbGFncyAmICg2NCkpICYmICgoaW5vZGUpLT5pX21vZGUg
JiAoMDAwMjAwMCB8IDAwMDEwKSkgPT0gMDAwMjAwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4g
bG9ja3NfbWFuZGF0b3J5X2xvY2tlZChpbm9kZSk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRp
YyBpbmxpbmUgaW50IGxvY2tzX3ZlcmlmeV9hcmVhKGludCByZWFkX3dyaXRlLCBzdHJ1Y3QgaW5v
ZGUgKmlub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmls
ZSAqZmlscCwgbG9mZl90IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNvdW50KQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrICYmICgoKGlub2Rl
KS0+aV9zYi0+c19mbGFncyAmICg2NCkpICYmICgoaW5vZGUpLT5pX21vZGUgJiAoMDAwMjAwMCB8
IDAwMDEwKSkgPT0gMDAwMjAwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4gbG9ja3NfbWFuZGF0
b3J5X2FyZWEocmVhZF93cml0ZSwgaW5vZGUsIGZpbHAsIG9mZnNldCwgY291bnQpOwogICAgICAg
IHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBsb2Nrc192ZXJpZnlfdHJ1bmNhdGUoc3Ry
dWN0IGlub2RlICppbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGZpbGUgKmZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZmZf
dCBzaXplKQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrICYmICgoKGlub2RlKS0+aV9zYi0+
c19mbGFncyAmICg2NCkpICYmICgoaW5vZGUpLT5pX21vZGUgJiAoMDAwMjAwMCB8IDAwMDEwKSkg
PT0gMDAwMjAwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4gbG9ja3NfbWFuZGF0b3J5X2FyZWEo
CiAgICAgICAgICAgICAgICAgICAgICAgIDIsIGlub2RlLCBmaWxwLAogICAgICAgICAgICAgICAg
ICAgICAgICBzaXplIDwgaW5vZGUtPmlfc2l6ZSA/IHNpemUgOiBpbm9kZS0+aV9zaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAoc2l6ZSA8IGlub2RlLT5pX3NpemUgPyBpbm9kZS0+aV9zaXpl
IC0gc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgOiBzaXplIC0gaW5vZGUtPmlfc2l6ZSkK
ICAgICAgICAgICAgICAgICk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50
IGdldF9sZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBpbnQgbW9kZSkKewogICAg
ICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoaW5vZGUtPmlfZmxvY2stPmZsX2ZsYWdzICYgMzIp
KQogICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2V0X2xlYXNlKGlub2RlLCBtb2RlKTsKICAgICAg
ICByZXR1cm4gMDsKfQoKCgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX29w
ZW4oY29uc3QgY2hhciAqLCBpbnQsIGludCk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg
bG9uZyBzeXNfY2xvc2UodW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCBkb190cnVuY2F0ZShzdHJ1
Y3QgZGVudHJ5ICosIGxvZmZfdCBzdGFydCk7CgpleHRlcm4gc3RydWN0IGZpbGUgKmZpbHBfb3Bl
bihjb25zdCBjaGFyICosIGludCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogZGVudHJ5X29w
ZW4oc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgdmZzbW91bnQgKiwgaW50KTsKZXh0ZXJuIGludCBm
aWxwX2Nsb3NlKHN0cnVjdCBmaWxlICosIGZsX293bmVyX3QgaWQpOwpleHRlcm4gY2hhciAqIGdl
dG5hbWUoY29uc3QgY2hhciAqKTsKCgpleHRlcm4gdm9pZCB2ZnNfY2FjaGVzX2luaXQodW5zaWdu
ZWQgbG9uZyk7CgoKCgplbnVtIHtCREVWX0ZJTEUsIEJERVZfU1dBUCwgQkRFVl9GUywgQkRFVl9S
QVd9OwpleHRlcm4gaW50IHJlZ2lzdGVyX2Jsa2Rldih1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIg
Kiwgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICopOwpleHRlcm4gaW50IHVucmVnaXN0
ZXJfYmxrZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHN0cnVjdCBibG9j
a19kZXZpY2UgKmJkZ2V0KGRldl90KTsKZXh0ZXJuIGludCBiZF9hY3F1aXJlKHN0cnVjdCBpbm9k
ZSAqaW5vZGUpOwpleHRlcm4gdm9pZCBiZF9mb3JnZXQoc3RydWN0IGlub2RlICppbm9kZSk7CmV4
dGVybiB2b2lkIGJkcHV0KHN0cnVjdCBibG9ja19kZXZpY2UgKik7CmV4dGVybiBzdHJ1Y3QgY2hh
cl9kZXZpY2UgKmNkZ2V0KGRldl90KTsKZXh0ZXJuIHZvaWQgY2RwdXQoc3RydWN0IGNoYXJfZGV2
aWNlICopOwpleHRlcm4gaW50IGJsa2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmls
ZSAqKTsKZXh0ZXJuIGludCBibGtkZXZfY2xvc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxl
ICopOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfYmxrX2ZvcHM7CmV4dGVybiBz
dHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIGRlZl9ibGtfYW9wczsKZXh0ZXJuIHN0cnVj
dCBmaWxlX29wZXJhdGlvbnMgZGVmX2ZpZm9fZm9wczsKZXh0ZXJuIGludCBpb2N0bF9ieV9iZGV2
KHN0cnVjdCBibG9ja19kZXZpY2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4g
aW50IGJsa2Rldl9nZXQoc3RydWN0IGJsb2NrX2RldmljZSAqLCBtb2RlX3QsIHVuc2lnbmVkLCBp
bnQpOwpleHRlcm4gaW50IGJsa2Rldl9wdXQoc3RydWN0IGJsb2NrX2RldmljZSAqLCBpbnQpOwoK
CmV4dGVybiBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgKmdldF9ibGtmb3Bz
KHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgcmVnaXN0ZXJfY2hyZGV2KHVuc2lnbmVkIGludCwg
Y29uc3QgY2hhciAqLCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICopOwpleHRlcm4gaW50IHVucmVn
aXN0ZXJfY2hyZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBjaHJk
ZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4dGVybiBjb25zdCBjaGFy
ICogYmRldm5hbWUoa2Rldl90KTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBjZGV2bmFtZShrZGV2X3Qp
OwpleHRlcm4gY29uc3QgY2hhciAqIGtkZXZuYW1lKGtkZXZfdCk7CmV4dGVybiB2b2lkIGluaXRf
c3BlY2lhbF9pbm9kZShzdHJ1Y3QgaW5vZGUgKiwgdW1vZGVfdCwgaW50KTsKCgpleHRlcm4gdm9p
ZCBtYWtlX2JhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgaXNfYmFkX2lub2Rl
KHN0cnVjdCBpbm9kZSAqKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfZmlm
b19mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9maWZvX2ZvcHM7CmV4
dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJkd3JfZmlmb19mb3BzOwpleHRlcm4gc3RydWN0
IGZpbGVfb3BlcmF0aW9ucyByZWFkX3BpcGVfZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJh
dGlvbnMgd3JpdGVfcGlwZV9mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZHdy
X3BpcGVfZm9wczsKCmV4dGVybiBpbnQgZnNfbWF5X3JlbW91bnRfcm8oc3RydWN0IHN1cGVyX2Js
b2NrICopOwoKZXh0ZXJuIGludCB0cnlfdG9fZnJlZV9idWZmZXJzKHN0cnVjdCBwYWdlICosIHVu
c2lnbmVkIGludCk7CmV4dGVybiB2b2lkIHJlZmlsZV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFk
ICogYnVmKTsKZXh0ZXJuIHZvaWQgZW5kX2J1ZmZlcl9pb19zeW5jKHN0cnVjdCBidWZmZXJfaGVh
ZCAqYmgsIGludCB1cHRvZGF0ZSk7CgoKZXh0ZXJuIHZvaWQgc2V0X2J1ZmZlcl9hc3luY19pbyhz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSA7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBnZXRfYmgo
c3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBhdG9taWNfaW5jKCYoYmgpLT5iX2Nv
dW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHB1dF9iaChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo
KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICAgICAg
ICBhdG9taWNfZGVjKCZiaC0+Yl9jb3VudCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJr
X2J1ZmZlcl91cHRvZGF0ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IG9uKQp7CiAgICAg
ICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0X2JpdChCSF9VcHRvZGF0ZSwgJmJoLT5iX3N0
YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQoQkhfVXB0b2RhdGUs
ICZiaC0+Yl9zdGF0ZSk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fbWFya19idWZmZXJfY2xl
YW4oc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIHJlZmlsZV9idWZmZXIoYmgpOwp9
CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZlcl9oZWFk
ICogYmgpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJIX0RpcnR5LCAmKGJoKS0+
Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX2NsZWFuKGJoKTsKfQoKZXh0
ZXJuIHZvaWQgX19tYXJrX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19tYXJrX2J1ZmZlcl9kaXJ0eShzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKmJoKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lk
IG1hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYnVmZmVyX2luc2VydF9pbm9kZV9kYXRhX3F1ZXVl
KHN0cnVjdCBidWZmZXJfaGVhZCAqLCBzdHJ1Y3QgaW5vZGUgKikgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfYXN5bmMoc3RydWN0
IGJ1ZmZlcl9oZWFkICogYmgsIGludCBvbikKewogICAgICAgIGlmIChvbikKICAgICAgICAgICAg
ICAgIHNldF9iaXQoQkhfQXN5bmMsICZiaC0+Yl9zdGF0ZSk7CiAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgY2xlYXJfYml0KEJIX0FzeW5jLCAmYmgtPmJfc3RhdGUpOwp9CgoKCgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgYnVmZmVyX0lPX2Vycm9yKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7
CiAgICAgICAgbWFya19idWZmZXJfY2xlYW4oYmgpOwoKCgogICAgICAgIGJoLT5iX2VuZF9pbyhi
aCwgMCk7Cn0KCmV4dGVybiB2b2lkIGJ1ZmZlcl9pbnNlcnRfaW5vZGVfcXVldWUoc3RydWN0IGJ1
ZmZlcl9oZWFkICosIHN0cnVjdCBpbm9kZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVm
ZmVyX2RpcnR5X2lub2RlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBpbm9kZSAqaW5v
ZGUpCnsKICAgICAgICBtYXJrX2J1ZmZlcl9kaXJ0eShiaCk7CiAgICAgICAgYnVmZmVyX2luc2Vy
dF9pbm9kZV9xdWV1ZShiaCwgaW5vZGUpOwp9CgpleHRlcm4gdm9pZCBiYWxhbmNlX2RpcnR5KHZv
aWQpOwpleHRlcm4gaW50IGNoZWNrX2Rpc2tfY2hhbmdlKGtkZXZfdCk7CmV4dGVybiBpbnQgaW52
YWxpZGF0ZV9pbm9kZXMoc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IGludmFsaWRh
dGVfZGV2aWNlKGtkZXZfdCwgaW50KTsKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9pbm9kZV9wYWdl
cyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfcGFnZXMyKHN0
cnVjdCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX2J1ZmZl
cnMoc3RydWN0IGlub2RlICopOwoKCmV4dGVybiB2b2lkIGludmFsaWRhdGVfYmRldihzdHJ1Y3Qg
YmxvY2tfZGV2aWNlICosIGludCk7CmV4dGVybiB2b2lkIF9faW52YWxpZGF0ZV9idWZmZXJzKGtk
ZXZfdCBkZXYsIGludCk7CmV4dGVybiB2b2lkIHN5bmNfaW5vZGVzKGtkZXZfdCk7CmV4dGVybiB2
b2lkIHN5bmNfdW5sb2NrZWRfaW5vZGVzKHZvaWQpOwpleHRlcm4gdm9pZCB3cml0ZV9pbm9kZV9u
b3coc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgc3luY19idWZmZXJzKGtkZXZfdCwg
aW50KTsKZXh0ZXJuIHZvaWQgc3luY19kZXYoa2Rldl90KTsKZXh0ZXJuIGludCBmc3luY19kZXYo
a2Rldl90KTsKZXh0ZXJuIGludCBmc3luY19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CmV4
dGVybiBpbnQgZnN5bmNfbm9fc3VwZXIoa2Rldl90KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXNf
c2Ioc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IG9zeW5jX2lub2RlX2J1ZmZlcnMo
c3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IG9zeW5jX2lub2RlX2RhdGFfYnVmZmVycyhzdHJ1
Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgZnN5bmNfaW5vZGVfYnVmZmVycyhzdHJ1Y3QgaW5vZGUg
Kik7CmV4dGVybiBpbnQgZnN5bmNfaW5vZGVfZGF0YV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsK
ZXh0ZXJuIGludCBpbm9kZV9oYXNfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lk
IGZpbGVtYXBfZmRhdGFzeW5jKHN0cnVjdCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBm
aWxlbWFwX2ZkYXRhd2FpdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKZXh0ZXJuIHZvaWQgc3lu
Y19zdXBlcnMoa2Rldl90KTsKZXh0ZXJuIGludCBibWFwKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpl
eHRlcm4gaW50IG5vdGlmeV9jaGFuZ2Uoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7
CmV4dGVybiBpbnQgcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCB2
ZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBnZXRfd3JpdGVf
YWNjZXNzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBkZW55X3dyaXRlX2FjY2VzcyhzdHJ1
Y3QgZmlsZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIHB1dF93cml0ZV9hY2Nlc3Moc3RydWN0IGlu
b2RlICogaW5vZGUpCnsKICAgICAgICBhdG9taWNfZGVjKCZpbm9kZS0+aV93cml0ZWNvdW50KTsK
fQpzdGF0aWMgaW5saW5lIHZvaWQgYWxsb3dfd3JpdGVfYWNjZXNzKHN0cnVjdCBmaWxlICpmaWxl
KQp7CiAgICAgICAgaWYgKGZpbGUpCiAgICAgICAgICAgICAgICBhdG9taWNfaW5jKCZmaWxlLT5m
X2RlbnRyeS0+ZF9pbm9kZS0+aV93cml0ZWNvdW50KTsKfQpleHRlcm4gaW50IGRvX3BpcGUoaW50
ICopOwoKZXh0ZXJuIGludCBvcGVuX25hbWVpKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQsIHN0cnVj
dCBuYW1laWRhdGEgKik7CgpleHRlcm4gaW50IGtlcm5lbF9yZWFkKHN0cnVjdCBmaWxlICosIHVu
c2lnbmVkIGxvbmcsIGNoYXIgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBzdHJ1Y3QgZmlsZSAq
IG9wZW5fZXhlYyhjb25zdCBjaGFyICopOwoKCmV4dGVybiBpbnQgaXNfc3ViZGlyKHN0cnVjdCBk
ZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGlub190IGZpbmRfaW5vZGVfbnVtYmVy
KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CiMgMTIzMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKkVSUl9QVFIobG9uZyBlcnJv
cikKewogICAgICAgIHJldHVybiAodm9pZCAqKSBlcnJvcjsKfQoKc3RhdGljIGlubGluZSBsb25n
IFBUUl9FUlIoY29uc3Qgdm9pZCAqcHRyKQp7CiAgICAgICAgcmV0dXJuIChsb25nKSBwdHI7Cn0K
CnN0YXRpYyBpbmxpbmUgbG9uZyBJU19FUlIoY29uc3Qgdm9pZCAqcHRyKQp7CiAgICAgICAgcmV0
dXJuICh1bnNpZ25lZCBsb25nKXB0ciA+ICh1bnNpZ25lZCBsb25nKS0xMDAwTDsKfQojIDEyNjIg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKZW51bSB7TEFTVF9OT1JNLCBMQVNU
X1JPT1QsIExBU1RfRE9ULCBMQVNUX0RPVERPVCwgTEFTVF9CSU5EfTsKIyAxMjczICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBzaXpl
X3Qgd3JpdHRlbjsKICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgY2hhciAqIGJ1ZjsKICAg
ICAgICBpbnQgZXJyb3I7Cn0gcmVhZF9kZXNjcmlwdG9yX3Q7Cgp0eXBlZGVmIGludCAoKnJlYWRf
YWN0b3JfdCkocmVhZF9kZXNjcmlwdG9yX3QgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZyk7CgoKZXh0ZXJuIGxvZmZfdCBkZWZhdWx0X2xsc2VlayhzdHJ1Y3Qg
ZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CgpleHRlcm4gaW50IF9fdXNl
cl93YWxrKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEgKikgX19hdHRy
aWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50IHBhdGhfaW5pdChjb25zdCBjaGFyICos
IHVuc2lnbmVkLCBzdHJ1Y3QgbmFtZWlkYXRhICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp
KTsKZXh0ZXJuIGludCBwYXRoX3dhbGsoY29uc3QgY2hhciAqLCBzdHJ1Y3QgbmFtZWlkYXRhICop
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGludCBsaW5rX3BhdGhfd2Fsayhj
b25zdCBjaGFyICosIHN0cnVjdCBuYW1laWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwpleHRlcm4gdm9pZCBwYXRoX3JlbGVhc2Uoc3RydWN0IG5hbWVpZGF0YSAqKTsKZXh0ZXJu
IGludCBmb2xsb3dfZG93bihzdHJ1Y3QgdmZzbW91bnQgKiosIHN0cnVjdCBkZW50cnkgKiopOwpl
eHRlcm4gaW50IGZvbGxvd191cChzdHJ1Y3QgdmZzbW91bnQgKiosIHN0cnVjdCBkZW50cnkgKiop
OwpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGxvb2t1cF9vbmVfbGVuKGNvbnN0IGNoYXIgKiwgc3Ry
dWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGxvb2t1cF9oYXNoKHN0
cnVjdCBxc3RyICosIHN0cnVjdCBkZW50cnkgKik7CgoKCmV4dGVybiB2b2lkIGlwdXQoc3RydWN0
IGlub2RlICopOwpleHRlcm4gdm9pZCBmb3JjZV9kZWxldGUoc3RydWN0IGlub2RlICopOwpleHRl
cm4gc3RydWN0IGlub2RlICogaWdyYWIoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW5vX3QgaXVu
aXF1ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW5vX3QpOwoKdHlwZWRlZiBpbnQgKCpmaW5kX2lu
b2RlX3QpKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwpleHRlcm4gc3Ry
dWN0IGlub2RlICogaWdldDQoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcsIGZp
bmRfaW5vZGVfdCwgdm9pZCAqKTsKc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKmlnZXQoc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8pCnsKICAgICAgICByZXR1cm4g
aWdldDQoc2IsIGlubywgKCh2b2lkICopMCksICgodm9pZCAqKTApKTsKfQoKZXh0ZXJuIHZvaWQg
Y2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGlub2RlICogZ2V0X2Vt
cHR5X2lub2RlKHZvaWQpOwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKiBuZXdfaW5vZGUo
c3RydWN0IHN1cGVyX2Jsb2NrICpzYikKewogICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBn
ZXRfZW1wdHlfaW5vZGUoKTsKICAgICAgICBpZiAoaW5vZGUpIHsKICAgICAgICAgICAgICAgIGlu
b2RlLT5pX3NiID0gc2I7CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9kZXYgPSBzYi0+c19kZXY7
CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9ibGtiaXRzID0gc2ItPnNfYmxvY2tzaXplX2JpdHM7
CiAgICAgICAgfQogICAgICAgIHJldHVybiBpbm9kZTsKfQpleHRlcm4gdm9pZCByZW1vdmVfc3Vp
ZChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKCmV4dGVybiB2b2lkIGluc2VydF9pbm9kZV9oYXNoKHN0
cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX2lub2RlX2hhc2goc3RydWN0IGlub2Rl
ICopOwpleHRlcm4gc3RydWN0IGZpbGUgKiBnZXRfZW1wdHlfZmlscCh2b2lkKTsKZXh0ZXJuIHZv
aWQgZmlsZV9tb3ZlKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KTsKZXh0
ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIGdldF9oYXNoX3RhYmxlKGtkZXZfdCwgaW50LCBpbnQp
OwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0YmxrKGtkZXZfdCwgaW50LCBpbnQpOwpl
eHRlcm4gdm9pZCBsbF9yd19ibG9jayhpbnQsIGludCwgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmhb
XSk7CmV4dGVybiB2b2lkIHN1Ym1pdF9iaChpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKZXh0
ZXJuIGludCBpc19yZWFkX29ubHkoa2Rldl90KTsKZXh0ZXJuIHZvaWQgX19icmVsc2Uoc3RydWN0
IGJ1ZmZlcl9oZWFkICopOwpzdGF0aWMgaW5saW5lIHZvaWQgYnJlbHNlKHN0cnVjdCBidWZmZXJf
aGVhZCAqYnVmKQp7CiAgICAgICAgaWYgKGJ1ZikKICAgICAgICAgICAgICAgIF9fYnJlbHNlKGJ1
Zik7Cn0KZXh0ZXJuIHZvaWQgX19iZm9yZ2V0KHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKc3RhdGlj
IGlubGluZSB2b2lkIGJmb3JnZXQoc3RydWN0IGJ1ZmZlcl9oZWFkICpidWYpCnsKICAgICAgICBp
ZiAoYnVmKQogICAgICAgICAgICAgICAgX19iZm9yZ2V0KGJ1Zik7Cn0KZXh0ZXJuIGludCBzZXRf
YmxvY2tzaXplKGtkZXZfdCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJyZWFk
KGtkZXZfdCwgaW50LCBpbnQpOwpleHRlcm4gdm9pZCB3YWtldXBfYmRmbHVzaCh2b2lkKTsKCmV4
dGVybiBpbnQgYnJ3X3BhZ2UoaW50LCBzdHJ1Y3QgcGFnZSAqLCBrZGV2X3QsIGludCBbXSwgaW50
KTsKCnR5cGVkZWYgaW50IChnZXRfYmxvY2tfdCkoc3RydWN0IGlub2RlKixsb25nLHN0cnVjdCBi
dWZmZXJfaGVhZCosaW50KTsKCgpleHRlcm4gaW50IGRpc2NhcmRfYmhfcGFnZShzdHJ1Y3QgcGFn
ZSAqLCB1bnNpZ25lZCBsb25nLCBpbnQpOwoKCmV4dGVybiBpbnQgYmxvY2tfc3ltbGluayhzdHJ1
Y3QgaW5vZGUgKiwgY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IGJsb2NrX3dyaXRlX2Z1
bGxfcGFnZShzdHJ1Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tfcmVh
ZF9mdWxsX3BhZ2Uoc3RydWN0IHBhZ2UqLCBnZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGJsb2Nr
X3ByZXBhcmVfd3JpdGUoc3RydWN0IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGdldF9ibG9j
a190Kik7CmV4dGVybiBpbnQgY29udF9wcmVwYXJlX3dyaXRlKHN0cnVjdCBwYWdlKiwgdW5zaWdu
ZWQsIHVuc2lnbmVkLCBnZXRfYmxvY2tfdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyAqKTsKZXh0ZXJuIGludCBibG9ja19jb21taXRfd3JpdGUoc3RydWN0
IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKTsKZXh0ZXJuIGludCBibG9j
a19zeW5jX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgppbnQgZ2VuZXJpY19ibG9ja19ibWFwKHN0cnVj
dCBhZGRyZXNzX3NwYWNlICosIGxvbmcsIGdldF9ibG9ja190ICopOwppbnQgZ2VuZXJpY19jb21t
aXRfd3JpdGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2lnbmVk
KTsKaW50IGJsb2NrX3RydW5jYXRlX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9mZl90
LCBnZXRfYmxvY2tfdCAqKTsKZXh0ZXJuIHZvaWQgY3JlYXRlX2VtcHR5X2J1ZmZlcnMoc3RydWN0
IHBhZ2UgKiwga2Rldl90LCB1bnNpZ25lZCBsb25nKTsKCmV4dGVybiBpbnQgd2FpdGZvcl9vbmVf
cGFnZShzdHJ1Y3QgcGFnZSopOwpleHRlcm4gaW50IGdlbmVyaWNfZmlsZV9tbWFwKHN0cnVjdCBm
aWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBmaWxlX3JlYWRfYWN0
b3IocmVhZF9kZXNjcmlwdG9yX3QgKiBkZXNjLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQg
bG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNf
ZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVy
biBzc2l6ZV90IGdlbmVyaWNfZmlsZV93cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICos
IHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gdm9pZCBkb19nZW5lcmljX2ZpbGVfcmVhZChzdHJ1
Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgcmVhZF9kZXNjcmlwdG9yX3QgKiwgcmVhZF9hY3Rvcl90KTsK
ZXh0ZXJuIGxvZmZfdCBub19sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQs
IGludCBvcmlnaW4pOwpleHRlcm4gbG9mZl90IGdlbmVyaWNfZmlsZV9sbHNlZWsoc3RydWN0IGZp
bGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCBvcmlnaW4pOwpleHRlcm4gc3NpemVfdCBnZW5l
cmljX3JlYWRfZGlyKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4
dGVybiBpbnQgZ2VuZXJpY19maWxlX29wZW4oc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBm
aWxlICogZmlscCk7CgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBnZW5lcmljX3JvX2Zv
cHM7CgpleHRlcm4gaW50IHZmc19yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50
LCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHZmc19mb2xsb3dfbGluayhzdHJ1Y3QgbmFtZWlk
YXRhICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgcGFnZV9yZWFkbGluayhzdHJ1Y3QgZGVu
dHJ5ICosIGNoYXIgKiwgaW50KTsKZXh0ZXJuIGludCBwYWdlX2ZvbGxvd19saW5rKHN0cnVjdCBk
ZW50cnkgKiwgc3RydWN0IG5hbWVpZGF0YSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRp
b25zIHBhZ2Vfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoKZXh0ZXJuIGludCB2ZnNfcmVhZGRp
cihzdHJ1Y3QgZmlsZSAqLCBmaWxsZGlyX3QsIHZvaWQgKik7CmV4dGVybiBpbnQgZGNhY2hlX3Jl
YWRkaXIoc3RydWN0IGZpbGUgKiwgdm9pZCAqLCBmaWxsZGlyX3QpOwoKZXh0ZXJuIHN0cnVjdCBm
aWxlX3N5c3RlbV90eXBlICpnZXRfZnNfdHlwZShjb25zdCBjaGFyICpuYW1lKTsKZXh0ZXJuIHN0
cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyKGtkZXZfdCk7CmV4dGVybiB2b2lkIGRyb3Bfc3Vw
ZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnN0YXRpYyBpbmxpbmUgaW50IGlzX21vdW50ZWQo
a2Rldl90IGRldikKewogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBnZXRfc3VwZXIo
ZGV2KTsKICAgICAgICBpZiAoc2IpIHsKICAgICAgICAgICAgICAgIGRyb3Bfc3VwZXIoc2IpOwog
ICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CnVu
c2lnbmVkIGxvbmcgZ2VuZXJhdGVfY2x1c3RlcihrZGV2X3QsIGludCBiW10sIGludCk7CnVuc2ln
bmVkIGxvbmcgZ2VuZXJhdGVfY2x1c3Rlcl9zd2FiMzIoa2Rldl90LCBpbnQgYltdLCBpbnQpOwpl
eHRlcm4ga2Rldl90IFJPT1RfREVWOwpleHRlcm4gY2hhciByb290X2RldmljZV9uYW1lW107CgoK
ZXh0ZXJuIHZvaWQgc2hvd19idWZmZXJzKHZvaWQpOwpleHRlcm4gdm9pZCBtb3VudF9yb290KHZv
aWQpOwoKCgoKCgpleHRlcm4gc3NpemVfdCBjaGFyX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAq
LCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgYmxvY2tfcmVhZChzdHJ1Y3QgZmls
ZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gaW50IHJlYWRfYWhlYWRbXTsK
CmV4dGVybiBzc2l6ZV90IGNoYXJfd3JpdGUoc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBz
aXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgYmxvY2tfd3JpdGUoc3RydWN0IGZpbGUg
KiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKCmV4dGVybiBpbnQgZmlsZV9mc3lu
YyhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgZ2VuZXJp
Y19idWZmZXJfZmRhdGFzeW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGxvbmcgc3Rh
cnRfaWR4LCB1bnNpZ25lZCBsb25nIGVuZF9pZHgpOwpleHRlcm4gaW50IGdlbmVyaWNfb3N5bmNf
aW5vZGUoc3RydWN0IGlub2RlICosIGludCk7CgoKCgpleHRlcm4gaW50IGlub2RlX2NoYW5nZV9v
ayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlhdHRyICopOwpleHRlcm4gaW50IGlub2RlX3NldGF0
dHIoc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0ciAqKTsKIyAxNDU1ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqbG9ja19w
YXJlbnQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGly
ID0gZGdldChkZW50cnktPmRfcGFyZW50KTsKCiAgICAgICAgZG93bigmZGlyLT5kX2lub2RlLT5p
X3NlbSk7CiAgICAgICAgcmV0dXJuIGRpcjsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgZGVudHJ5
ICpnZXRfcGFyZW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBkZ2V0
KGRlbnRyeS0+ZF9wYXJlbnQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrX2RpcihzdHJ1
Y3QgZGVudHJ5ICpkaXIpCnsKICAgICAgICB1cCgmZGlyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAg
ICAgZHB1dChkaXIpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9kb3duKHN0cnVj
dCBzZW1hcGhvcmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAgIGlmIChzMSAh
PSBzMikgewogICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25l
ZCBsb25nKSBzMikgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0
bXAgPSBzMjsKICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkb3duKHMxKTsKICAgICAgICB9CiAgICAgICAg
ZG93bihzMik7Cn0KIyAxNDk5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0
YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVfZG93bihzdHJ1Y3Qgc2VtYXBob3JlICpzMSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczMpCnsKICAgICAgICBpZiAo
czEgIT0gczIpIHsKICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5z
aWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBs
b25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMzID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQg
bG9uZykgczIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBo
b3JlICp0bXAgPSBzMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMxOyBz
MSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNp
Z25lZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
ZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0g
czE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczIgPCAodW5zaWduZWQgbG9uZykgczMpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMyOyBzMiA9IHRtcDsKICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZG93
bihzMSk7CiAgICAgICAgfSBlbHNlIGlmICgodW5zaWduZWQgbG9uZykgczIgPCAodW5zaWduZWQg
bG9uZykgczMpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwog
ICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgfQogICAgICAgIGRvd24o
czIpOwogICAgICAgIGRvd24oczMpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91YmxlX3VwKHN0
cnVjdCBzZW1hcGhvcmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAgIHVwKHMx
KTsKICAgICAgICBpZiAoczEgIT0gczIpCiAgICAgICAgICAgICAgICB1cChzMik7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCB0cmlwbGVfdXAoc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczMpCnsKICAgICAgICB1cChzMSk7CiAgICAg
ICAgaWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwogICAgICAgIHVwKHMzKTsK
fQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9sb2NrKHN0cnVjdCBkZW50cnkgKmQxLCBzdHJ1
Y3QgZGVudHJ5ICpkMikKewogICAgICAgIGRvdWJsZV9kb3duKCZkMS0+ZF9pbm9kZS0+aV9zZW0s
ICZkMi0+ZF9pbm9kZS0+aV9zZW0pOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91YmxlX3VubG9j
ayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRyeSAqZDIpCnsKICAgICAgICBkb3VibGVf
dXAoJmQxLT5kX2lub2RlLT5pX3NlbSwmZDItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICBkcHV0
KGQxKTsKICAgICAgICBkcHV0KGQyKTsKfQojIDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2NhcGFiaWxpdHkuaCIgMgojIDMyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Nh
cGFiaWxpdHkuaCIKdHlwZWRlZiBzdHJ1Y3QgX191c2VyX2NhcF9oZWFkZXJfc3RydWN0IHsKICAg
ICAgICBfX3UzMiB2ZXJzaW9uOwogICAgICAgIGludCBwaWQ7Cn0gKmNhcF91c2VyX2hlYWRlcl90
OwoKdHlwZWRlZiBzdHJ1Y3QgX191c2VyX2NhcF9kYXRhX3N0cnVjdCB7CiAgICAgICAgX191MzIg
ZWZmZWN0aXZlOwogICAgICAgIF9fdTMyIHBlcm1pdHRlZDsKICAgICAgICBfX3UzMiBpbmhlcml0
YWJsZTsKfSAqY2FwX3VzZXJfZGF0YV90OwojIDU1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2NhcGFiaWxpdHkuaCIKdHlwZWRlZiBfX3UzMiBrZXJuZWxfY2FwX3Q7CiMgMjg0ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKZXh0ZXJuIGtlcm5lbF9jYXBf
dCBjYXBfYnNldDsKIyAzMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY2FwYWJpbGl0
eS5oIgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfY29tYmluZShrZXJuZWxfY2FwX3Qg
YSwga2VybmVsX2NhcF90IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkg
PSAoYSkgfCAoYik7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2Nh
cF90IGNhcF9pbnRlcnNlY3Qoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9jYXBfdCBiKQp7CiAgICAg
a2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gKGEpICYgKGIpOwogICAgIHJldHVybiBk
ZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfZHJvcChrZXJuZWxfY2FwX3Qg
YSwga2VybmVsX2NhcF90IGRyb3ApCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVz
dCkgPSAoYSkgJiB+KGRyb3ApOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtl
cm5lbF9jYXBfdCBjYXBfaW52ZXJ0KGtlcm5lbF9jYXBfdCBjKQp7CiAgICAga2VybmVsX2NhcF90
IGRlc3Q7CiAgICAgKGRlc3QpID0gfihjKTsKICAgICByZXR1cm4gZGVzdDsKfQojIDYgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMgMjIgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvYmluZm10cy5oIgpzdHJ1Y3QgbGludXhfYmlucHJtewogICAgICAgIGNo
YXIgYnVmWzEyOF07CiAgICAgICAgc3RydWN0IHBhZ2UgKnBhZ2VbMzJdOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgcDsKICAgICAgICBpbnQgc2hfYmFuZzsKICAgICAgICBzdHJ1Y3QgZmlsZSAqIGZp
bGU7CiAgICAgICAgaW50IGVfdWlkLCBlX2dpZDsKICAgICAgICBrZXJuZWxfY2FwX3QgY2FwX2lu
aGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkLCBjYXBfZWZmZWN0aXZlOwogICAgICAgIGludCBhcmdj
LCBlbnZjOwogICAgICAgIGNoYXIgKiBmaWxlbmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxv
YWRlciwgZXhlYzsKfTsKCgoKCgpzdHJ1Y3QgbGludXhfYmluZm10IHsKICAgICAgICBzdHJ1Y3Qg
bGludXhfYmluZm10ICogbmV4dDsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICptb2R1bGU7CiAgICAg
ICAgaW50ICgqbG9hZF9iaW5hcnkpKHN0cnVjdCBsaW51eF9iaW5wcm0gKiwgc3RydWN0IHB0X3Jl
Z3MgKiByZWdzKTsKICAgICAgICBpbnQgKCpsb2FkX3NobGliKShzdHJ1Y3QgZmlsZSAqKTsKICAg
ICAgICBpbnQgKCpjb3JlX2R1bXApKGxvbmcgc2lnbnIsIHN0cnVjdCBwdF9yZWdzICogcmVncywg
c3RydWN0IGZpbGUgKiBmaWxlKTsKICAgICAgICB1bnNpZ25lZCBsb25nIG1pbl9jb3JlZHVtcDsK
fTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfYmluZm10KHN0cnVjdCBsaW51eF9iaW5mbXQgKik7CmV4
dGVybiBpbnQgdW5yZWdpc3Rlcl9iaW5mbXQoc3RydWN0IGxpbnV4X2JpbmZtdCAqKTsKCmV4dGVy
biBpbnQgcHJlcGFyZV9iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIHZvaWQg
cmVtb3ZlX2FyZ196ZXJvKHN0cnVjdCBsaW51eF9iaW5wcm0gKik7CmV4dGVybiBpbnQgc2VhcmNo
X2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKixzdHJ1Y3QgcHRfcmVncyAqKTsK
ZXh0ZXJuIGludCBmbHVzaF9vbGRfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7CmV4
dGVybiBpbnQgc2V0dXBfYXJnX3BhZ2VzKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKZXh0
ZXJuIGludCBjb3B5X3N0cmluZ3MoaW50IGFyZ2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9i
aW5wcm0gKmJwcm0pOwpleHRlcm4gaW50IGNvcHlfc3RyaW5nc19rZXJuZWwoaW50IGFyZ2MsY2hh
ciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pOwpleHRlcm4gdm9pZCBjb21wdXRl
X2NyZWRzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJpbnBybSk7CmV4dGVybiBpbnQgZG9fY29yZWR1
bXAobG9uZyBzaWduciwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKZXh0ZXJuIHZvaWQgc2V0X2Jp
bmZtdChzdHJ1Y3QgbGludXhfYmluZm10ICpuZXcpOwojIDEwICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Ro
cmVhZHMuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTIgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWVzLmgiIDEK
CgoKc3RydWN0IHRtcyB7CiAgICAgICAgY2xvY2tfdCB0bXNfdXRpbWU7CiAgICAgICAgY2xvY2tf
dCB0bXNfc3RpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNfY3V0aW1lOwogICAgICAgIGNsb2NrX3Qg
dG1zX2NzdGltZTsKfTsKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIiAxCiMgNTQgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZXguaCIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
dGltZXguaCIgMgojIDE1MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3RpbWV4LmgiIDEKIyA5ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdGltZXguaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL21zci5oIiAxCiMgMTEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3RpbWV4LmgiIDIKIyAzMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vdGltZXguaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgY3ljbGVzX3Q7CgpleHRl
cm4gY3ljbGVzX3QgY2FjaGVmbHVzaF90aW1lOwoKc3RhdGljIGlubGluZSBjeWNsZXNfdCBnZXRf
Y3ljbGVzICh2b2lkKQp7CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHJldDsKCiAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9QSIgKHJldCkpOwogICAgICAgIHJl
dHVybiByZXQ7Cgp9CgpleHRlcm4gdW5zaWduZWQgbG9uZyBjcHVfa2h6OwojIDE1MyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIiAyCiMgMTYxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3RpbWV4LmgiCnN0cnVjdCB0aW1leCB7CiAgICAgICAgdW5zaWduZWQgaW50
IG1vZGVzOwogICAgICAgIGxvbmcgb2Zmc2V0OwogICAgICAgIGxvbmcgZnJlcTsKICAgICAgICBs
b25nIG1heGVycm9yOwogICAgICAgIGxvbmcgZXN0ZXJyb3I7CiAgICAgICAgaW50IHN0YXR1czsK
ICAgICAgICBsb25nIGNvbnN0YW50OwogICAgICAgIGxvbmcgcHJlY2lzaW9uOwogICAgICAgIGxv
bmcgdG9sZXJhbmNlOwoKCiAgICAgICAgc3RydWN0IHRpbWV2YWwgdGltZTsKICAgICAgICBsb25n
IHRpY2s7CgogICAgICAgIGxvbmcgcHBzZnJlcTsKICAgICAgICBsb25nIGppdHRlcjsKICAgICAg
ICBpbnQgc2hpZnQ7CiAgICAgICAgbG9uZyBzdGFiaWw7CiAgICAgICAgbG9uZyBqaXRjbnQ7CiAg
ICAgICAgbG9uZyBjYWxjbnQ7CiAgICAgICAgbG9uZyBlcnJjbnQ7CiAgICAgICAgbG9uZyBzdGJj
bnQ7CgogICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAg
aW50IDozMjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKICAgICAgICBpbnQgOjMyOyBpbnQg
OjMyOyBpbnQgOjMyOyBpbnQgOjMyOwp9OwojIDI1MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC90aW1leC5oIgpleHRlcm4gbG9uZyB0aWNrOwpleHRlcm4gaW50IHRpY2thZGo7CgoKCgpl
eHRlcm4gaW50IHRpbWVfc3RhdGU7CmV4dGVybiBpbnQgdGltZV9zdGF0dXM7CmV4dGVybiBsb25n
IHRpbWVfb2Zmc2V0OwpleHRlcm4gbG9uZyB0aW1lX2NvbnN0YW50OwpleHRlcm4gbG9uZyB0aW1l
X3RvbGVyYW5jZTsKZXh0ZXJuIGxvbmcgdGltZV9wcmVjaXNpb247CmV4dGVybiBsb25nIHRpbWVf
bWF4ZXJyb3I7CmV4dGVybiBsb25nIHRpbWVfZXN0ZXJyb3I7CgpleHRlcm4gbG9uZyB0aW1lX3Bo
YXNlOwpleHRlcm4gbG9uZyB0aW1lX2ZyZXE7CmV4dGVybiBsb25nIHRpbWVfYWRqOwpleHRlcm4g
bG9uZyB0aW1lX3JlZnRpbWU7CgpleHRlcm4gbG9uZyB0aW1lX2FkanVzdDsKCgpleHRlcm4gbG9u
ZyBwcHNfb2Zmc2V0OwpleHRlcm4gbG9uZyBwcHNfaml0dGVyOwpleHRlcm4gbG9uZyBwcHNfZnJl
cTsKZXh0ZXJuIGxvbmcgcHBzX3N0YWJpbDsKZXh0ZXJuIGxvbmcgcHBzX3ZhbGlkOwoKCmV4dGVy
biBpbnQgcHBzX3NoaWZ0OwpleHRlcm4gbG9uZyBwcHNfaml0Y250OwpleHRlcm4gbG9uZyBwcHNf
Y2FsY250OwpleHRlcm4gbG9uZyBwcHNfZXJyY250OwpleHRlcm4gbG9uZyBwcHNfc3RiY250Owoj
IDE1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAxCiMgOTcgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvcmJ0cmVlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9r
ZXJuZWwuaCIgMQojIDk4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQojIDk5ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAyCgp0eXBlZGVmIHN0cnVjdCByYl9u
b2RlX3MKewogICAgICAgIHN0cnVjdCByYl9ub2RlX3MgKiByYl9wYXJlbnQ7CiAgICAgICAgaW50
IHJiX2NvbG9yOwoKCiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX3JpZ2h0OwogICAgICAg
IHN0cnVjdCByYl9ub2RlX3MgKiByYl9sZWZ0Owp9CnJiX25vZGVfdDsKCnR5cGVkZWYgc3RydWN0
IHJiX3Jvb3Rfcwp7CiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX25vZGU7Cn0KcmJfcm9v
dF90OwoKCgoKCmV4dGVybiB2b2lkIHJiX2luc2VydF9jb2xvcihyYl9ub2RlX3QgKiwgcmJfcm9v
dF90ICopOwpleHRlcm4gdm9pZCByYl9lcmFzZShyYl9ub2RlX3QgKiwgcmJfcm9vdF90ICopOwoK
c3RhdGljIGlubGluZSB2b2lkIHJiX2xpbmtfbm9kZShyYl9ub2RlX3QgKiBub2RlLCByYl9ub2Rl
X3QgKiBwYXJlbnQsIHJiX25vZGVfdCAqKiByYl9saW5rKQp7CiAgICAgICAgbm9kZS0+cmJfcGFy
ZW50ID0gcGFyZW50OwogICAgICAgIG5vZGUtPnJiX2NvbG9yID0gMDsKICAgICAgICBub2RlLT5y
Yl9sZWZ0ID0gbm9kZS0+cmJfcmlnaHQgPSAoKHZvaWQgKikwKTsKCiAgICAgICAgKnJiX2xpbmsg
PSBub2RlOwp9CiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMQojIDE4ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9zZW1hcGhvcmUuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyAy
MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vbW11Lmgi
IDEKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2b2lkICpzZWdtZW50czsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGNwdXZhbGlkOwp9IG1tX2NvbnRleHRfdDsKIyAyMiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvc21wLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NtcC5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbXAuaCIgMgojIDI0ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3R0eS5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5LmgiCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDIwICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIiAxCiMgMjEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5LmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21ham9yLmgiIDEKIyAxNzcgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbWFqb3IuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHNj
c2lfYmxrX21ham9yKGludCBtKSB7CiAgICAgICAgcmV0dXJuICgoKG0pID09IDggfHwgKChtKSA+
PSA2NSAmJiAobSkgPD0gNzEpKSB8fCAobSkgPT0gMTEpOwp9CiMgMTkwICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21ham9yLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBpZGVfYmxrX21h
am9yKGludCBtKQp7CiAgICAgICAgcmV0dXJuICgobSkgPT0gMyB8fCAobSkgPT0gMjIgfHwgKG0p
ID09IDMzIHx8IChtKSA9PSAzNCB8fCAobSkgPT0gNTYgfHwgKG0pID09IDU3IHx8IChtKSA9PSA4
OCB8fCAobSkgPT0gODkgfHwgKG0pID09IDkwIHx8IChtKSA9PSA5MSk7Cn0KIyAyMiAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdGVybWlvcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90ZXJtaW9zLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDEKCgoKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtYml0cy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vdGVybWJpdHMuaCIgMgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGNjX3Q7CnR5
cGVkZWYgdW5zaWduZWQgaW50IHNwZWVkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHRjZmxhZ190
OwoKCnN0cnVjdCB0ZXJtaW9zIHsKICAgICAgICB0Y2ZsYWdfdCBjX2lmbGFnOwogICAgICAgIHRj
ZmxhZ190IGNfb2ZsYWc7CiAgICAgICAgdGNmbGFnX3QgY19jZmxhZzsKICAgICAgICB0Y2ZsYWdf
dCBjX2xmbGFnOwogICAgICAgIGNjX3QgY19saW5lOwogICAgICAgIGNjX3QgY19jY1sxOV07Cn07
CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdGVybWlvcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9pb2N0bC5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaW9j
dGxzLmgiIDIKIyA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDIKCnN0
cnVjdCB3aW5zaXplIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c19yb3c7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgd3NfY29sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3hwaXhlbDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB3c195cGl4ZWw7Cn07CgoKc3RydWN0IHRlcm1pbyB7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgY19pZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX29mbGFn
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfY2ZsYWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
Y19sZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIGNfY2NbOF07Cn07CiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90ZXJtaW9z
LmgiIDIKIyAyMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDEKIyAyNCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHR5X2RyaXZlci5oIiAxCiMgMTE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0
eV9kcml2ZXIuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKIyAx
MTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIiAyCgpzdHJ1Y3Qg
dHR5X2RyaXZlciB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIGNvbnN0IGNoYXIgKmRyaXZl
cl9uYW1lOwogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgaW50IG5hbWVfYmFzZTsK
ICAgICAgICBzaG9ydCBtYWpvcjsKICAgICAgICBzaG9ydCBtaW5vcl9zdGFydDsKICAgICAgICBz
aG9ydCBudW07CiAgICAgICAgc2hvcnQgdHlwZTsKICAgICAgICBzaG9ydCBzdWJ0eXBlOwogICAg
ICAgIHN0cnVjdCB0ZXJtaW9zIGluaXRfdGVybWlvczsKICAgICAgICBpbnQgZmxhZ3M7CiAgICAg
ICAgaW50ICpyZWZjb3VudDsKICAgICAgICBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2NfZW50
cnk7CiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgKm90aGVyOwoKCgoKICAgICAgICBzdHJ1Y3Qg
dHR5X3N0cnVjdCAqKnRhYmxlOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVybWlvczsKICAg
ICAgICBzdHJ1Y3QgdGVybWlvcyAqKnRlcm1pb3NfbG9ja2VkOwogICAgICAgIHZvaWQgKmRyaXZl
cl9zdGF0ZTsKCgoKCgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5
LCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwogICAgICAgIHZvaWQgKCpjbG9zZSkoc3RydWN0IHR0eV9z
dHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAgICAgaW50ICgqd3JpdGUpKHN0
cnVjdCB0dHlfc3RydWN0ICogdHR5LCBpbnQgZnJvbV91c2VyLAogICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQpOwogICAgICAgIHZvaWQgKCpw
dXRfY2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgdW5zaWduZWQgY2hhciBjaCk7CiAgICAg
ICAgdm9pZCAoKmZsdXNoX2NoYXJzKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBp
bnQgKCp3cml0ZV9yb29tKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBpbnQgKCpj
aGFyc19pbl9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKmlv
Y3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogICAgICAg
IHZvaWQgKCpzZXRfdGVybWlvcykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHRlcm1p
b3MgKiBvbGQpOwogICAgICAgIHZvaWQgKCp0aHJvdHRsZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0
dHkpOwogICAgICAgIHZvaWQgKCp1bnRocm90dGxlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7
CiAgICAgICAgdm9pZCAoKnN0b3ApKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZv
aWQgKCpzdGFydCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKmhhbmd1
cCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKmJyZWFrX2N0bCkoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IHN0YXRlKTsKICAgICAgICB2b2lkICgqZmx1c2hfYnVm
ZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqc2V0X2xkaXNjKShz
dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqd2FpdF91bnRpbF9zZW50KShz
dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgdGltZW91dCk7CiAgICAgICAgdm9pZCAoKnNlbmRf
eGNoYXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgY2gpOwogICAgICAgIGludCAoKnJl
YWRfcHJvYykoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSk7CiAgICAgICAg
aW50ICgqd3JpdGVfcHJvYykoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmJ1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNvdW50LCB2b2lkICpkYXRh
KTsKCgoKCiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgKm5leHQ7CiAgICAgICAgc3RydWN0IHR0
eV9kcml2ZXIgKnByZXY7Cn07CiMgMjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oIiAxCiMg
MTAwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oIgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMQojIDEwMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC90dHlfbGRpc2MuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvd2FpdC5oIiAxCiMgMTAyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eV9sZGlz
Yy5oIiAyCgpzdHJ1Y3QgdHR5X2xkaXNjIHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgY2hh
ciAqbmFtZTsKICAgICAgICBpbnQgbnVtOwogICAgICAgIGludCBmbGFnczsKCgoKICAgICAgICBp
bnQgKCpvcGVuKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAgICB2b2lkICgqY2xvc2UpKHN0
cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZvaWQgKCpmbHVzaF9idWZmZXIpKHN0cnVjdCB0
dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHNzaXplX3QgKCpjaGFyc19pbl9idWZmZXIpKHN0cnVj
dCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHNzaXplX3QgKCpyZWFkKShzdHJ1Y3QgdHR5X3N0
cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyICogYnVmLCBzaXplX3QgbnIpOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSko
c3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVfdCBucik7CiAgICAg
ICAgaW50ICgqaW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZp
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs
b25nIGFyZyk7CiAgICAgICAgdm9pZCAoKnNldF90ZXJtaW9zKShzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5LCBzdHJ1Y3QgdGVybWlvcyAqIG9sZCk7CiAgICAgICAgdW5zaWduZWQgaW50ICgqcG9sbCko
c3RydWN0IHR0eV9zdHJ1Y3QgKiwgc3RydWN0IGZpbGUgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKik7CgoKCgogICAgICAgIHZvaWQgKCpy
ZWNlaXZlX2J1Zikoc3RydWN0IHR0eV9zdHJ1Y3QgKiwgY29uc3QgdW5zaWduZWQgY2hhciAqY3As
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmcCwgaW50IGNvdW50KTsKICAg
ICAgICBpbnQgKCpyZWNlaXZlX3Jvb20pKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZv
aWQgKCp3cml0ZV93YWtldXApKHN0cnVjdCB0dHlfc3RydWN0ICopOwp9OwojIDI2ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3N5c3RlbS5oIiAxCiMgMjggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5
LmgiIDIKIyA1OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0IHNj
cmVlbl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfeDsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIG9yaWdfeTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkb250dXNlMTsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBvcmlnX3ZpZGVvX3BhZ2U7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmln
X3ZpZGVvX21vZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3ZpZGVvX2NvbHM7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBvcmlnX3Zp
ZGVvX2VnYV9ieDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bnVzZWQzOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgb3JpZ192aWRlb19saW5lczsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfdmlk
ZW9faXNWR0E7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19wb2ludHM7CgoKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBsZmJfd2lkdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZi
X2hlaWdodDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZmJfZGVwdGg7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBsZmJfYmFzZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxmYl9zaXplOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IGRvbnR1c2UyLCBkb250dXNlMzsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBsZmJfbGluZWxlbmd0aDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlZF9zaXplOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgcmVkX3BvczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVuX3NpemU7
CiAgICAgICAgdW5zaWduZWQgY2hhciBncmVlbl9wb3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBi
bHVlX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBibHVlX3BvczsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIHJzdmRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJzdmRfcG9zOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHZlc2FwbV9zZWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVzYXBt
X29mZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWdlczsKCn07CgpleHRlcm4gc3RydWN0IHNj
cmVlbl9pbmZvIHNjcmVlbl9pbmZvOwojIDEzOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC90dHkuaCIKc3RydWN0IHR0eV9mbGlwX2J1ZmZlciB7CiAgICAgICAgc3RydWN0IHRxX3N0cnVj
dCB0cXVldWU7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBwdHlfc2VtOwogICAgICAgIGNoYXIg
KmNoYXJfYnVmX3B0cjsKICAgICAgICB1bnNpZ25lZCBjaGFyICpmbGFnX2J1Zl9wdHI7CiAgICAg
ICAgaW50IGNvdW50OwogICAgICAgIGludCBidWZfbnVtOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
Y2hhcl9idWZbMio1MTJdOwogICAgICAgIGNoYXIgZmxhZ19idWZbMio1MTJdOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgc2xvcFs0XTsKfTsKIyAyNTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHR5LmgiCnN0cnVjdCB0dHlfc3RydWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAg
c3RydWN0IHR0eV9kcml2ZXIgZHJpdmVyOwogICAgICAgIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2M7
CiAgICAgICAgc3RydWN0IHRlcm1pb3MgKnRlcm1pb3MsICp0ZXJtaW9zX2xvY2tlZDsKICAgICAg
ICBpbnQgcGdycDsKICAgICAgICBpbnQgc2Vzc2lvbjsKICAgICAgICBrZGV2X3QgZGV2aWNlOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgaW50IGNvdW50OwogICAgICAgIHN0
cnVjdCB3aW5zaXplIHdpbnNpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzdG9wcGVkOjEsIGh3
X3N0b3BwZWQ6MSwgZmxvd19zdG9wcGVkOjEsIHBhY2tldDoxOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgbG93X2xhdGVuY3k6MSwgd2FybmVkOjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBjdHJsX3N0
YXR1czsKCiAgICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKmxpbms7CiAgICAgICAgc3RydWN0IGZh
c3luY19zdHJ1Y3QgKmZhc3luYzsKICAgICAgICBzdHJ1Y3QgdHR5X2ZsaXBfYnVmZmVyIGZsaXA7
CiAgICAgICAgaW50IG1heF9mbGlwX2NudDsKICAgICAgICBpbnQgYWx0X3NwZWVkOwogICAgICAg
IHdhaXRfcXVldWVfaGVhZF90IHdyaXRlX3dhaXQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qg
cmVhZF93YWl0OwogICAgICAgIHN0cnVjdCB0cV9zdHJ1Y3QgdHFfaGFuZ3VwOwogICAgICAgIHZv
aWQgKmRpc2NfZGF0YTsKICAgICAgICB2b2lkICpkcml2ZXJfZGF0YTsKICAgICAgICBzdHJ1Y3Qg
bGlzdF9oZWFkIHR0eV9maWxlczsKCgoKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IGNvbHVtbjsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGxuZXh0OjEsIGVyYXNpbmc6MSwgcmF3OjEsIHJlYWxfcmF3
OjEsIGljYW5vbjoxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2xvc2luZzoxOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IG1pbmltdW1fdG9fd2FrZTsKICAgICAgICB1bnNpZ25lZCBvdmVycnVuX3Rp
bWU7CiAgICAgICAgaW50IG51bV9vdmVycnVuOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJvY2Vz
c19jaGFyX21hcFsyNTYvKDgqc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKV07CiAgICAgICAgY2hhciAq
cmVhZF9idWY7CiAgICAgICAgaW50IHJlYWRfaGVhZDsKICAgICAgICBpbnQgcmVhZF90YWlsOwog
ICAgICAgIGludCByZWFkX2NudDsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlYWRfZmxhZ3NbNDA5
Ni8oOCpzaXplb2YodW5zaWduZWQgbG9uZykpXTsKICAgICAgICBpbnQgY2Fub25fZGF0YTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGNhbm9uX2hlYWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNhbm9u
X2NvbHVtbjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGF0b21pY19yZWFkOwogICAgICAgIHN0
cnVjdCBzZW1hcGhvcmUgYXRvbWljX3dyaXRlOwogICAgICAgIHNwaW5sb2NrX3QgcmVhZF9sb2Nr
OwoKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0IFNBS190cTsKfTsKIyAzNDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvdHR5LmgiCmV4dGVybiB2b2lkIHR0eV93cml0ZV9mbHVzaChzdHJ1
Y3QgdHR5X3N0cnVjdCAqKTsKCmV4dGVybiBzdHJ1Y3QgdGVybWlvcyB0dHlfc3RkX3Rlcm1pb3M7
CmV4dGVybiBzdHJ1Y3QgdHR5X3N0cnVjdCAqIHJlZGlyZWN0OwpleHRlcm4gc3RydWN0IHR0eV9s
ZGlzYyBsZGlzY3NbXTsKZXh0ZXJuIGludCBmZ19jb25zb2xlLCBsYXN0X2NvbnNvbGUsIHdhbnRf
Y29uc29sZTsKCmV4dGVybiBpbnQga21zZ19yZWRpcmVjdDsKCmV4dGVybiB2b2lkIGNvbl9pbml0
KHZvaWQpOwpleHRlcm4gdm9pZCBjb25zb2xlX2luaXQodm9pZCk7CgpleHRlcm4gaW50IGxwX2lu
aXQodm9pZCk7CmV4dGVybiBpbnQgcHR5X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHR0eV9pbml0
KHZvaWQpOwpleHRlcm4gaW50IG14c2VyX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbW94YV9pbml0
KHZvaWQpOwpleHRlcm4gaW50IGlwMl9pbml0KHZvaWQpOwpleHRlcm4gaW50IHBjeGVfaW5pdCh2
b2lkKTsKZXh0ZXJuIGludCBwY19pbml0KHZvaWQpOwpleHRlcm4gaW50IHZjc19pbml0KHZvaWQp
OwpleHRlcm4gaW50IHJwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgY3lfaW5pdCh2b2lkKTsKZXh0
ZXJuIGludCBzdGxfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzdGxpX2luaXQodm9pZCk7CmV4dGVy
biBpbnQgc3BlY2lhbGl4X2luaXQodm9pZCk7CmV4dGVybiBpbnQgZXNwc2VyaWFsX2luaXQodm9p
ZCk7CmV4dGVybiBpbnQgbWFjc2VyaWFsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgYTIyMzJib2Fy
ZF9pbml0KHZvaWQpOwoKZXh0ZXJuIGludCB0dHlfcGFyYW5vaWFfY2hlY2soc3RydWN0IHR0eV9z
dHJ1Y3QgKnR0eSwga2Rldl90IGRldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqcm91dGluZSk7CmV4dGVybiBjaGFyICp0dHlfbmFtZShzdHJ1Y3QgdHR5X3N0
cnVjdCAqdHR5LCBjaGFyICpidWYpOwpleHRlcm4gdm9pZCB0dHlfd2FpdF91bnRpbF9zZW50KHN0
cnVjdCB0dHlfc3RydWN0ICogdHR5LCBsb25nIHRpbWVvdXQpOwpleHRlcm4gaW50IHR0eV9jaGVj
a19jaGFuZ2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCBzdG9wX3R0eShz
dHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHN0YXJ0X3R0eShzdHJ1Y3QgdHR5
X3N0cnVjdCAqIHR0eSk7CmV4dGVybiBpbnQgdHR5X3JlZ2lzdGVyX2xkaXNjKGludCBkaXNjLCBz
dHJ1Y3QgdHR5X2xkaXNjICpuZXdfbGRpc2MpOwpleHRlcm4gaW50IHR0eV9yZWdpc3Rlcl9kcml2
ZXIoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVybiBpbnQgdHR5X3VucmVnaXN0ZXJf
ZHJpdmVyKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIpOwpleHRlcm4gdm9pZCB0dHlfcmVnaXN0
ZXJfZGV2ZnMgKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVkIGludCBmbGFncywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtaW5vcik7CmV4dGVybiB2
b2lkIHR0eV91bnJlZ2lzdGVyX2RldmZzIChzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyLCB1bnNp
Z25lZCBtaW5vcik7CmV4dGVybiBpbnQgdHR5X3JlYWRfcmF3X2RhdGEoc3RydWN0IHR0eV9zdHJ1
Y3QgKnR0eSwgdW5zaWduZWQgY2hhciAqYnVmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgYnVmbGVuKTsKZXh0ZXJuIHZvaWQgdHR5X3dyaXRlX21lc3NhZ2Uoc3RydWN0IHR0eV9z
dHJ1Y3QgKnR0eSwgY2hhciAqbXNnKTsKCmV4dGVybiBpbnQgaXNfb3JwaGFuZWRfcGdycChpbnQg
cGdycCk7CmV4dGVybiBpbnQgaXNfaWdub3JlZChpbnQgc2lnKTsKZXh0ZXJuIGludCB0dHlfc2ln
bmFsKGludCBzaWcsIHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwpleHRlcm4gdm9pZCB0dHlfaGFu
Z3VwKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgdHR5X3ZoYW5ndXAoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCB0dHlfdW5oYW5ndXAoc3RydWN0IGZp
bGUgKmZpbHApOwpleHRlcm4gaW50IHR0eV9odW5nX3VwX3Aoc3RydWN0IGZpbGUgKiBmaWxwKTsK
ZXh0ZXJuIHZvaWQgZG9fU0FLKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwpleHRlcm4gdm9pZCBk
aXNhc3NvY2lhdGVfY3R0eShpbnQgcHJpdik7CmV4dGVybiB2b2lkIHR0eV9mbGlwX2J1ZmZlcl9w
dXNoKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwpleHRlcm4gaW50IHR0eV9nZXRfYmF1ZF9yYXRl
KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwoKCmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIHR0eV9s
ZGlzY19OX1RUWTsKCgpleHRlcm4gaW50IG5fdHR5X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICog
dHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwoKCgpleHRlcm4gdm9pZCBzZXJpYWxfY29uc29s
ZV9pbml0KHZvaWQpOwoKCgpleHRlcm4gaW50IHBjeGVfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5LCBzdHJ1Y3QgZmlsZSAqZmlscCk7CgoKCmV4dGVybiB2b2lkIGNvbnNvbGVfcHJpbnQoY29u
c3QgY2hhciAqKTsKCgoKZXh0ZXJuIGludCB2dF9pb2N0bChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5
LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNt
ZCwgdW5zaWduZWQgbG9uZyBhcmcpOwojIDI1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NlbS5oIiAxCgoK
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pcGMuaCIgMQoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvaXBjLmgiIDIKCgoKCnN0cnVjdCBpcGNfcGVybQp7CiAgICAgICAgX19rZXJu
ZWxfa2V5X3Qga2V5OwogICAgICAgIF9fa2VybmVsX3VpZF90IHVpZDsKICAgICAgICBfX2tlcm5l
bF9naWRfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgY3VpZDsKICAgICAgICBfX2tlcm5l
bF9naWRfdCBjZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBtb2RlOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNlcTsKfTsKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lwY2J1
Zi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lwY2J1Zi5oIgpzdHJ1Y3Qg
aXBjNjRfcGVybQp7CiAgICAgICAgX19rZXJuZWxfa2V5X3Qga2V5OwogICAgICAgIF9fa2VybmVs
X3VpZDMyX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZDMyX3QgZ2lkOwogICAgICAgIF9fa2Vy
bmVsX3VpZDMyX3QgY3VpZDsKICAgICAgICBfX2tlcm5lbF9naWQzMl90IGNnaWQ7CiAgICAgICAg
X19rZXJuZWxfbW9kZV90IG1vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19wYWQxOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNlcTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3Vu
dXNlZDI7Cn07CiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXBjLmgiIDIKIyA1
NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pcGMuaCIKc3RydWN0IGtlcm5faXBjX3Bl
cm0KewogICAgICAgIGtleV90IGtleTsKICAgICAgICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3Qg
Z2lkOwogICAgICAgIHVpZF90IGN1aWQ7CiAgICAgICAgZ2lkX3QgY2dpZDsKICAgICAgICBtb2Rl
X3QgbW9kZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcTsKfTsKIyA1ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3NlbS5oIiAyCiMgMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc2VtLmgiCnN0cnVjdCBzZW1pZF9kcyB7CiAgICAgICAgc3RydWN0IGlwY19wZXJtIHNlbV9w
ZXJtOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgX19rZXJuZWxf
dGltZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBz
dHJ1Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoq
c2VtX3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc2VtX25zZW1zOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vc2VtYnVmLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VtYnVm
LmgiCnN0cnVjdCBzZW1pZDY0X2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjNjRfcGVybSBzZW1fcGVy
bTsKICAgICAgICBfX2tlcm5lbF90aW1lX3Qgc2VtX290aW1lOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgX191bnVzZWQxOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fY3RpbWU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBfX3VudXNlZDI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZW1fbnNlbXM7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBf
X3VudXNlZDQ7Cn07CiMgMzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2VtLmgiIDIK
CgpzdHJ1Y3Qgc2VtYnVmIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZW1fbnVtOwogICAgICAg
IHNob3J0IHNlbV9vcDsKICAgICAgICBzaG9ydCBzZW1fZmxnOwp9OwoKCnVuaW9uIHNlbXVuIHsK
ICAgICAgICBpbnQgdmFsOwogICAgICAgIHN0cnVjdCBzZW1pZF9kcyAqYnVmOwogICAgICAgIHVu
c2lnbmVkIHNob3J0ICphcnJheTsKICAgICAgICBzdHJ1Y3Qgc2VtaW5mbyAqX19idWY7CiAgICAg
ICAgdm9pZCAqX19wYWQ7Cn07CgpzdHJ1Y3Qgc2VtaW5mbyB7CiAgICAgICAgaW50IHNlbW1hcDsK
ICAgICAgICBpbnQgc2VtbW5pOwogICAgICAgIGludCBzZW1tbnM7CiAgICAgICAgaW50IHNlbW1u
dTsKICAgICAgICBpbnQgc2VtbXNsOwogICAgICAgIGludCBzZW1vcG07CiAgICAgICAgaW50IHNl
bXVtZTsKICAgICAgICBpbnQgc2VtdXN6OwogICAgICAgIGludCBzZW12bXg7CiAgICAgICAgaW50
IHNlbWFlbTsKfTsKIyA4MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zZW0uaCIKc3Ry
dWN0IHNlbSB7CiAgICAgICAgaW50IHNlbXZhbDsKICAgICAgICBpbnQgc2VtcGlkOwp9OwoKCnN0
cnVjdCBzZW1fYXJyYXkgewogICAgICAgIHN0cnVjdCBrZXJuX2lwY19wZXJtIHNlbV9wZXJtOwog
ICAgICAgIHRpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgdGltZV90IHNlbV9jdGltZTsKICAgICAg
ICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICpzZW1fcGVu
ZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2VtX3BlbmRpbmdfbGFzdDsKICAgICAg
ICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZW1fbnNlbXM7
Cn07CgoKc3RydWN0IHNlbV9xdWV1ZSB7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqIG5leHQ7
CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqKiBwcmV2OwogICAgICAgIHN0cnVjdCB0YXNrX3N0
cnVjdCogc2xlZXBlcjsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiB1bmRvOwogICAgICAgIGlu
dCBwaWQ7CiAgICAgICAgaW50IHN0YXR1czsKICAgICAgICBzdHJ1Y3Qgc2VtX2FycmF5ICogc21h
OwogICAgICAgIGludCBpZDsKICAgICAgICBzdHJ1Y3Qgc2VtYnVmICogc29wczsKICAgICAgICBp
bnQgbnNvcHM7CiAgICAgICAgaW50IGFsdGVyOwp9OwoKCgoKc3RydWN0IHNlbV91bmRvIHsKICAg
ICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBwcm9jX25leHQ7CiAgICAgICAgc3RydWN0IHNlbV91bmRv
ICogaWRfbmV4dDsKICAgICAgICBpbnQgc2VtaWQ7CiAgICAgICAgc2hvcnQgKiBzZW1hZGo7Cn07
CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NlbWdldCAoa2V5X3Qga2V5
LCBpbnQgbnNlbXMsIGludCBzZW1mbGcpOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv
bmcgc3lzX3NlbW9wIChpbnQgc2VtaWQsIHN0cnVjdCBzZW1idWYgKnNvcHMsIHVuc2lnbmVkIG5z
b3BzKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW1jdGwgKGludCBz
ZW1pZCwgaW50IHNlbW51bSwgaW50IGNtZCwgdW5pb24gc2VtdW4gYXJnKTsKIyAyNiAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9zaWduYWwuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3NpZ25hbC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5o
IiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnbmFsLmgiIDIKCgpzdHJ1Y3Qg
c2lnaW5mbzsKIyAxNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBvbGRfc2lnc2V0X3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzaWdbKDY0IC8gMzIpXTsKfSBzaWdzZXRfdDsKIyAxMjkgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIgp0eXBlZGVmIHZvaWQgKCpfX3NpZ2hhbmRsZXJf
dCkoaW50KTsKCgoKCgoKc3RydWN0IG9sZF9zaWdhY3Rpb24gewogICAgICAgIF9fc2lnaGFuZGxl
cl90IHNhX2hhbmRsZXI7CiAgICAgICAgb2xkX3NpZ3NldF90IHNhX21hc2s7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzYV9mbGFnczsKICAgICAgICB2b2lkICgqc2FfcmVzdG9yZXIpKHZvaWQpOwp9
OwoKc3RydWN0IHNpZ2FjdGlvbiB7CiAgICAgICAgX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxlcjsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogICAgICAgIHZvaWQgKCpzYV9yZXN0b3Jl
cikodm9pZCk7CiAgICAgICAgc2lnc2V0X3Qgc2FfbWFzazsKfTsKCnN0cnVjdCBrX3NpZ2FjdGlv
biB7CiAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBzYTsKfTsKIyAxNzEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL3NpZ25hbC5oIgp0eXBlZGVmIHN0cnVjdCBzaWdhbHRzdGFjayB7CiAgICAg
ICAgdm9pZCAqc3Nfc3A7CiAgICAgICAgaW50IHNzX2ZsYWdzOwogICAgICAgIHNpemVfdCBzc19z
aXplOwp9IHN0YWNrX3Q7CgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWdjb250
ZXh0LmgiIDEKIyAxNzkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAyCgoK
CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2lnYWRkc2V0KHNpZ3NldF90ICpzZXQsIGludCBfc2ln
KQp7CiAgICAgICAgX19hc21fXygiYnRzbCAlMSwlMCIgOiAiPW0iKCpzZXQpIDogIklyIihfc2ln
IC0gMSkgOiAiY2MiKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBzaWdkZWxzZXQoc2lnc2V0
X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBfX2FzbV9fKCJidHJsICUxLCUwIiA6ICI9bSIo
KnNldCkgOiAiSXIiKF9zaWcgLSAxKSA6ICJjYyIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg
X19jb25zdF9zaWdpc21lbWJlcihzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIHVu
c2lnbmVkIGxvbmcgc2lnID0gX3NpZyAtIDE7CiAgICAgICAgcmV0dXJuIDEgJiAoc2V0LT5zaWdb
c2lnIC8gMzJdID4+IChzaWcgJSAzMikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19nZW5f
c2lnaXNtZW1iZXIoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBpbnQgcmV0Owog
ICAgICAgIF9fYXNtX18oImJ0bCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAg
OiAiPXIiKHJldCkgOiAibSIoKnNldCksICJJciIoX3NpZy0xKSA6ICJjYyIpOwogICAgICAgIHJl
dHVybiByZXQ7Cn0KIyAyMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIgpz
dGF0aWMgX19pbmxpbmVfXyBpbnQgc2lnZmluZGlud29yZCh1bnNpZ25lZCBsb25nIHdvcmQpCnsK
ICAgICAgICBfX2FzbV9fKCJic2ZsICUxLCUwIiA6ICI9ciIod29yZCkgOiAicm0iKHdvcmQpIDog
ImNjIik7CiAgICAgICAgcmV0dXJuIHdvcmQ7Cn0KIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NpZ25hbC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnaW5m
by5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMg
NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnaW5mby5oIiAyCgoKCnR5cGVkZWYgdW5p
b24gc2lndmFsIHsKICAgICAgICBpbnQgc2l2YWxfaW50OwogICAgICAgIHZvaWQgKnNpdmFsX3B0
cjsKfSBzaWd2YWxfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHNpZ2luZm8gewogICAgICAgIGludCBz
aV9zaWdubzsKICAgICAgICBpbnQgc2lfZXJybm87CiAgICAgICAgaW50IHNpX2NvZGU7CgogICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGludCBfcGFkWygoMTI4L3NpemVvZihpbnQpKSAt
IDMpXTsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
cGlkX3QgX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAg
ICAgICAgIH0gX2tpbGw7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBfdGltZXIxOwogICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX3RpbWVyMjsKICAgICAgICAgICAgICAgIH0gX3RpbWVyOwoKCiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAg
ICAgICAgICAgICAgICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBz
aWd2YWxfdCBfc2lndmFsOwogICAgICAgICAgICAgICAgfSBfcnQ7CgoKICAgICAgICAgICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfc3Rh
dHVzOwogICAgICAgICAgICAgICAgICAgICAgICBjbG9ja190IF91dGltZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgY2xvY2tfdCBfc3RpbWU7CiAgICAgICAgICAgICAgICB9IF9zaWdjaGxkOwoK
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpf
YWRkcjsKICAgICAgICAgICAgICAgIH0gX3NpZ2ZhdWx0OwoKCiAgICAgICAgICAgICAgICBzdHJ1
Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX2JhbmQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBfZmQ7CiAgICAgICAgICAgICAgICB9IF9zaWdwb2xsOwogICAgICAgIH0gX3Np
ZmllbGRzOwp9IHNpZ2luZm9fdDsKIyAxOTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Np
Z2luZm8uaCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnZXZlbnQgewogICAgICAgIHNpZ3ZhbF90IHNpZ2V2
X3ZhbHVlOwogICAgICAgIGludCBzaWdldl9zaWdubzsKICAgICAgICBpbnQgc2lnZXZfbm90aWZ5
OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGludCBfcGFkWygoNjQvc2l6ZW9mKGlu
dCkpIC0gMyldOwoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKCpfZnVuY3Rpb24pKHNpZ3ZhbF90KTsKICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqX2F0dHJpYnV0ZTsKICAgICAgICAgICAgICAgIH0gX3NpZ2V2X3RocmVhZDsKICAgICAg
ICB9IF9zaWdldl91bjsKfSBzaWdldmVudF90OwoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDIxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
c2lnaW5mby5oIiAyCgpzdGF0aWMgaW5saW5lIHZvaWQgY29weV9zaWdpbmZvKHNpZ2luZm9fdCAq
dG8sIHNpZ2luZm9fdCAqZnJvbSkKewogICAgICAgIGlmIChmcm9tLT5zaV9jb2RlIDwgMCkKICAg
ICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplb2Yoc2lnaW5mb190KSkgPyBf
X2NvbnN0YW50X21lbWNweSgodG8pLChmcm9tKSwoc2l6ZW9mKHNpZ2luZm9fdCkpKSA6IF9fbWVt
Y3B5KCh0byksKGZyb20pLChzaXplb2Yoc2lnaW5mb190KSkpKTsKICAgICAgICBlbHNlCgogICAg
ICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDMqc2l6ZW9mKGludCkgKyBzaXplb2Yo
ZnJvbS0+X3NpZmllbGRzLl9zaWdjaGxkKSkgPyBfX2NvbnN0YW50X21lbWNweSgodG8pLChmcm9t
KSwoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSkgOiBf
X21lbWNweSgodG8pLChmcm9tKSwoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVs
ZHMuX3NpZ2NobGQpKSkpOwp9CgpleHRlcm4gaW50IGNvcHlfc2lnaW5mb190b191c2VyKHNpZ2lu
Zm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSk7CiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9zaWduYWwuaCIgMgoKCgoKCgpzdHJ1Y3Qgc2lncXVldWUgewogICAgICAgIHN0cnVjdCBz
aWdxdWV1ZSAqbmV4dDsKICAgICAgICBzaWdpbmZvX3QgaW5mbzsKfTsKCnN0cnVjdCBzaWdwZW5k
aW5nIHsKICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKmhlYWQsICoqdGFpbDsKICAgICAgICBzaWdz
ZXRfdCBzaWduYWw7Cn07CiMgNjggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2lnbmFs
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDY5ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAyCiMgMTA4ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnb3JzZXRz
KHNpZ3NldF90ICpyLCBjb25zdCBzaWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5z
aWduZWQgbG9uZyBhMCwgYTEsIGEyLCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcg
aTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBd
OyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCpp
KzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdb
NCppKzJdOyBiMyA9IGItPnNpZ1s0KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkp
OyByLT5zaWdbNCppKzFdID0gKChhMSkgfCAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwg
KGIyKSk7IHItPnNpZ1s0KmkrM10gPSAoKGEzKSB8IChiMykpOyB9IHN3aXRjaCAoKDY0IC8gMzIp
ICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBh
MiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFd
OyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5z
aWdbNCppKzFdID0gKChhMSkgfCAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7
IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBi
MCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9ICgo
YTApIHwgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyBicmVhazsgY2FzZSAx
OiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9
ICgoYTApIHwgKGIwKSk7IGJyZWFrOyB9IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYW5kc2V0
cyhzaWdzZXRfdCAqciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVu
c2lnbmVkIGxvbmcgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25n
IGk7IGZvciAoaSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSsw
XTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQq
aSszXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2ln
WzQqaSsyXTsgYjMgPSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjAp
KTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAm
IChiMikpOyByLT5zaWdbNCppKzNdID0gKChhMykgJiAoYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMy
KSAlIDQpIHsgY2FzZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsg
YTIgPSBhLT5zaWdbNCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsx
XTsgYjIgPSBiLT5zaWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+
c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikp
OyBicmVhazsgY2FzZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsg
YjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAo
KGEwKSAmIChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgYnJlYWs7IGNhc2Ug
MTogYTAgPSBhLT5zaWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0KmkrMF0g
PSAoKGEwKSAmIChiMCkpOyBicmVhazsgfSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ25hbmRz
ZXRzKHNpZ3NldF90ICpyLCBjb25zdCBzaWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsg
dW5zaWduZWQgbG9uZyBhMCwgYTEsIGEyLCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxv
bmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCpp
KzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdb
NCppKzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5z
aWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4o
YjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyByLT5zaWdbNCppKzJdID0gKChh
MikgJiB+KGIyKSk7IHItPnNpZ1s0KmkrM10gPSAoKGEzKSAmIH4oYjMpKTsgfSBzd2l0Y2ggKCg2
NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQq
aSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2ln
WzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIw
KSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIH4oYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIp
ICYgfihiMikpOyBicmVhazsgY2FzZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2ln
WzQqaSsxXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0
KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyBi
cmVhazsgY2FzZSAxOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+
c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyBicmVhazsgfSB9CiMgMTQwICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnbm90c2V0
KHNpZ3NldF90ICpzZXQpIHsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8g
MzIpLzQ7ICsraSkgeyBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0KmkrMF0pKTsgc2V0
LT5zaWdbNCppKzFdID0gKH4oc2V0LT5zaWdbNCppKzFdKSk7IHNldC0+c2lnWzQqaSsyXSA9ICh+
KHNldC0+c2lnWzQqaSsyXSkpOyBzZXQtPnNpZ1s0KmkrM10gPSAofihzZXQtPnNpZ1s0KmkrM10p
KTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBzZXQtPnNpZ1s0KmkrMl0gPSAo
fihzZXQtPnNpZ1s0KmkrMl0pKTsgY2FzZSAyOiBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQtPnNp
Z1s0KmkrMV0pKTsgY2FzZSAxOiBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0KmkrMF0p
KTsgfSB9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZW1wdHlzZXQoc2lnc2V0X3QgKnNldCkK
ewogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
c2l6ZW9mKHNpZ3NldF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChzZXQp
KSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihzaWdzZXRfdCkp
KSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVk
IGNoYXIpKDApKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRf
cCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKChzZXQpKSksKCgoMCkp
KSwoKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQpKSwoKDAp
KSwoKHNpemVvZihzaWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IGNhc2UgMjogc2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTogc2V0LT5zaWdbMF0gPSAw
OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQg
c2lnZmlsbHNldChzaWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsK
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKC0x
KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19jb25zdGFu
dF9jX2FuZF9jb3VudF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh
cikoLTEpKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKHNl
dCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihzaWdzZXRf
dCkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX21l
bXNldF9nZW5lcmljKCgoKHNldCkpKSwoKCgtMSkpKSwoKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6
IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQpKSwoKC0xKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSk7
CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gLTE7
CiAgICAgICAgY2FzZSAxOiBzZXQtPnNpZ1swXSA9IC0xOwogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgfQp9CgpleHRlcm4gY2hhciAqIHJlbmRlcl9zaWdzZXRfdChzaWdzZXRfdCAqc2V0
LCBjaGFyICpidWZmZXIpOwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYWRkc2V0bWFzayhzaWdz
ZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSB8PSBt
YXNrOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZGVsc2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1
bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSAmPSB+bWFzazsKfQoKc3Rh
dGljIGlubGluZSBpbnQgc2lndGVzdHNldG1hc2soc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9u
ZyBtYXNrKQp7CiAgICAgICAgcmV0dXJuIChzZXQtPnNpZ1swXSAmIG1hc2spICE9IDA7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0KHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcg
bWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0gbWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAv
IDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0
YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIp
LTEpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCZzZXQtPnNpZ1sxXSkpLCgo
MHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAz
MiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEw
MTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkp
KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkg
PyBfX21lbXNldF9nZW5lcmljKCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgwKSkpLCgoKHNpemVvZihs
b25nKSooKDY0IC8gMzIpLTEpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgmc2V0LT5zaWdbMV0p
KSwoKDApKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7CiAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gMDsKICAgICAgICBjYXNlIDE6
IDsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0aW52KHNpZ3NldF90
ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0gfm1hc2s7
CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
c2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVt
c2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkp
LCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgo
JnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkpLCgoc2l6
ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXpl
b2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgmc2V0LT5zaWdb
MV0pKSksKCgoLTEpKSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogX19tZW1z
ZXRfZ2VuZXJpYygoKCZzZXQtPnNpZ1sxXSkpLCgoLTEpKSwoKHNpemVvZihsb25nKSooKDY0IC8g
MzIpLTEpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+
c2lnWzFdID0gLTE7CiAgICAgICAgY2FzZSAxOiA7CiAgICAgICAgfQp9CgoKCnN0YXRpYyBpbmxp
bmUgdm9pZCBpbml0X3NpZ3BlbmRpbmcoc3RydWN0IHNpZ3BlbmRpbmcgKnNpZykKewogICAgICAg
IHNpZ2VtcHR5c2V0KCZzaWctPnNpZ25hbCk7CiAgICAgICAgc2lnLT5oZWFkID0gKCh2b2lkICop
MCk7CiAgICAgICAgc2lnLT50YWlsID0gJnNpZy0+aGVhZDsKfQoKZXh0ZXJuIGxvbmcgZG9fc2ln
cGVuZGluZyh2b2lkICosIHVuc2lnbmVkIGxvbmcpOwojIDI3ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Nl
Y3VyZWJpdHMuaCIgMQoKCgoKCmV4dGVybiB1bnNpZ25lZCBzZWN1cmViaXRzOwojIDI4ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzX3N0cnVjdC5oIiAxCgoKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAgICAg
ICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xvY2tfdCBsb2NrOwogICAgICAgIGludCB1bWFz
azsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogcm9vdCwgKiBwd2QsICogYWx0cm9vdDsKICAgICAg
ICBzdHJ1Y3QgdmZzbW91bnQgKiByb290bW50LCAqIHB3ZG1udCwgKiBhbHRyb290bW50Owp9Owoj
IDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzX3N0cnVjdC5oIgpleHRlcm4gdm9p
ZCBleGl0X2ZzKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgc2V0X2ZzX2FsdHJv
b3Qodm9pZCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZnNfcm9vdChzdHJ1Y3QgZnNf
c3RydWN0ICpmcywKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udCwKICAgICAgICBzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcm9vdDsKICAgICAg
ICBzdHJ1Y3QgdmZzbW91bnQgKm9sZF9yb290bW50OwogICAgICAgICh2b2lkKSgmZnMtPmxvY2sp
OwogICAgICAgIG9sZF9yb290ID0gZnMtPnJvb3Q7CiAgICAgICAgb2xkX3Jvb3RtbnQgPSBmcy0+
cm9vdG1udDsKICAgICAgICBmcy0+cm9vdG1udCA9IG1udGdldChtbnQpOwogICAgICAgIGZzLT5y
b290ID0gZGdldChkZW50cnkpOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBpZiAo
b2xkX3Jvb3QpIHsKICAgICAgICAgICAgICAgIGRwdXQob2xkX3Jvb3QpOwogICAgICAgICAgICAg
ICAgbW50cHV0KG9sZF9yb290bW50KTsKICAgICAgICB9Cn0KCgoKCgoKc3RhdGljIGlubGluZSB2
b2lkIHNldF9mc19wd2Qoc3RydWN0IGZzX3N0cnVjdCAqZnMsCiAgICAgICAgc3RydWN0IHZmc21v
dW50ICptbnQsCiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgc3RydWN0
IGRlbnRyeSAqb2xkX3B3ZDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm9sZF9wd2RtbnQ7CiAg
ICAgICAgKHZvaWQpKCZmcy0+bG9jayk7CiAgICAgICAgb2xkX3B3ZCA9IGZzLT5wd2Q7CiAgICAg
ICAgb2xkX3B3ZG1udCA9IGZzLT5wd2RtbnQ7CiAgICAgICAgZnMtPnB3ZG1udCA9IG1udGdldCht
bnQpOwogICAgICAgIGZzLT5wd2QgPSBkZ2V0KGRlbnRyeSk7CiAgICAgICAgZG8geyB9IHdoaWxl
KDApOwogICAgICAgIGlmIChvbGRfcHdkKSB7CiAgICAgICAgICAgICAgICBkcHV0KG9sZF9wd2Qp
OwogICAgICAgICAgICAgICAgbW50cHV0KG9sZF9wd2RtbnQpOwogICAgICAgIH0KfQoKc3RydWN0
IGZzX3N0cnVjdCAqY29weV9mc19zdHJ1Y3Qoc3RydWN0IGZzX3N0cnVjdCAqb2xkKTsKdm9pZCBw
dXRfZnNfc3RydWN0KHN0cnVjdCBmc19zdHJ1Y3QgKmZzKTsKIyAyOSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgpzdHJ1Y3QgZXhlY19kb21haW47CiMgNTggIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYXZl
bnJ1bltdOwojIDc1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVy
biBpbnQgbnJfcnVubmluZywgbnJfdGhyZWFkczsKZXh0ZXJuIGludCBsYXN0X3BpZDsKCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgNzkgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdGltZS5oIiAxCiMgODAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BhcmFtLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3BhcmFtLmgiIDIKIyA4MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yZXNvdXJjZS5o
IiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lLmgiIDEKIyA1ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKIyAyMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIgpzdHJ1Y3QgcnVzYWdlIHsKICAgICAgICBz
dHJ1Y3QgdGltZXZhbCBydV91dGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsK
ICAgICAgICBsb25nIHJ1X21heHJzczsKICAgICAgICBsb25nIHJ1X2l4cnNzOwogICAgICAgIGxv
bmcgcnVfaWRyc3M7CiAgICAgICAgbG9uZyBydV9pc3JzczsKICAgICAgICBsb25nIHJ1X21pbmZs
dDsKICAgICAgICBsb25nIHJ1X21hamZsdDsKICAgICAgICBsb25nIHJ1X25zd2FwOwogICAgICAg
IGxvbmcgcnVfaW5ibG9jazsKICAgICAgICBsb25nIHJ1X291YmxvY2s7CiAgICAgICAgbG9uZyBy
dV9tc2dzbmQ7CiAgICAgICAgbG9uZyBydV9tc2dyY3Y7CiAgICAgICAgbG9uZyBydV9uc2lnbmFs
czsKICAgICAgICBsb25nIHJ1X252Y3N3OwogICAgICAgIGxvbmcgcnVfbml2Y3N3Owp9OwoKc3Ry
dWN0IHJsaW1pdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBybGltX2N1cjsKICAgICAgICB1bnNp
Z25lZCBsb25nIHJsaW1fbWF4Owp9OwojIDU2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3Jlc291cmNlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcmVzb3VyY2UuaCIg
MQojIDU3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKIyA4MiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC90aW1lci5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGlt
ZXIuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgNiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lci5oIiAyCiMgMTYgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvdGltZXIuaCIKc3RydWN0IHRpbWVyX2xpc3QgewogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIGV4cGlyZXM7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBkYXRhOwogICAgICAgIHZvaWQgKCpmdW5jdGlvbikodW5zaWduZWQg
bG9uZyk7Cn07CgpleHRlcm4gdm9pZCBhZGRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1l
cik7CmV4dGVybiBpbnQgZGVsX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpOwojIDQx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWVyLmgiCmludCBtb2RfdGltZXIoc3Ry
dWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25lZCBsb25nIGV4cGlyZXMpOwoKZXh0ZXJuIHZv
aWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3Rp
bWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpCnsKICAgICAgICB0aW1lci0+bGlzdC5uZXh0
ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAqKTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0
aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKQp7CiAgICAgICAg
cmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2b2lkICopMCk7Cn0KIyA4MyAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxCiMgODUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
c2NoZWQuaCIgMgojIDEyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpz
dHJ1Y3Qgc2NoZWRfcGFyYW0gewogICAgICAgIGludCBzY2hlZF9wcmlvcml0eTsKfTsKCnN0cnVj
dCBjb21wbGV0aW9uOwoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3Bpbmxv
Y2suaCIgMQojIDEzNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgoK
CgoKCgpleHRlcm4gcndsb2NrX3QgdGFza2xpc3RfbG9jazsKZXh0ZXJuIHNwaW5sb2NrX3QgcnVu
cXVldWVfbG9jazsKZXh0ZXJuIHNwaW5sb2NrX3QgbW1saXN0X2xvY2s7CgpleHRlcm4gdm9pZCBz
Y2hlZF9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2lkbGUodm9pZCk7CmV4dGVybiB2b2lk
IHNob3dfc3RhdGUodm9pZCk7CmV4dGVybiB2b2lkIGNwdV9pbml0ICh2b2lkKTsKZXh0ZXJuIHZv
aWQgdHJhcF9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCB1cGRhdGVfcHJvY2Vzc190aW1lcyhpbnQg
dXNlcik7CmV4dGVybiB2b2lkIHVwZGF0ZV9vbmVfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnAsIHVuc2lnbmVkIGxvbmcgdXNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgc3lzdGVtLCBpbnQgY3B1KTsKCgpleHRlcm4gc2lnbmVkIGxvbmcgc2NoZWR1
bGVfdGltZW91dChzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBzY2hlZHVsZSh2b2lkKTsKCmV4
dGVybiBpbnQgc2NoZWR1bGVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICp0YXNrKTsKZXh0ZXJuIHZv
aWQgZmx1c2hfc2NoZWR1bGVkX3Rhc2tzKHZvaWQpOwpleHRlcm4gaW50IHN0YXJ0X2NvbnRleHRf
dGhyZWFkKHZvaWQpOwpleHRlcm4gaW50IGN1cnJlbnRfaXNfa2V2ZW50ZCh2b2lkKTsKIyAxNzIg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IGZpbGVzX3N0cnVj
dCB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgcndsb2NrX3QgZmlsZV9sb2NrOwog
ICAgICAgIGludCBtYXhfZmRzOwogICAgICAgIGludCBtYXhfZmRzZXQ7CiAgICAgICAgaW50IG5l
eHRfZmQ7CiAgICAgICAgc3RydWN0IGZpbGUgKiogZmQ7CiAgICAgICAgZmRfc2V0ICpjbG9zZV9v
bl9leGVjOwogICAgICAgIGZkX3NldCAqb3Blbl9mZHM7CiAgICAgICAgZmRfc2V0IGNsb3NlX29u
X2V4ZWNfaW5pdDsKICAgICAgICBmZF9zZXQgb3Blbl9mZHNfaW5pdDsKICAgICAgICBzdHJ1Y3Qg
ZmlsZSAqIGZkX2FycmF5WzMyXTsKfTsKIyAyMDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc2NoZWQuaCIKc3RydWN0IG1tX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3Ry
dWN0ICogbW1hcDsKICAgICAgICByYl9yb290X3QgbW1fcmI7CiAgICAgICAgc3RydWN0IHZtX2Fy
ZWFfc3RydWN0ICogbW1hcF9jYWNoZTsKICAgICAgICBwZ2RfdCAqIHBnZDsKICAgICAgICBhdG9t
aWNfdCBtbV91c2VyczsKICAgICAgICBhdG9taWNfdCBtbV9jb3VudDsKICAgICAgICBpbnQgbWFw
X2NvdW50OwogICAgICAgIHN0cnVjdCByd19zZW1hcGhvcmUgbW1hcF9zZW07CiAgICAgICAgc3Bp
bmxvY2tfdCBwYWdlX3RhYmxlX2xvY2s7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW1saXN0
OwoKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2NvZGUsIGVuZF9jb2RlLCBzdGFydF9k
YXRhLCBlbmRfZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2JyaywgYnJrLCBzdGFy
dF9zdGFjazsKICAgICAgICB1bnNpZ25lZCBsb25nIGFyZ19zdGFydCwgYXJnX2VuZCwgZW52X3N0
YXJ0LCBlbnZfZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnNzLCB0b3RhbF92bSwgbG9ja2Vk
X3ZtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGVmX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgY3B1X3ZtX21hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzd2FwX2FkZHJlc3M7CgogICAg
ICAgIHVuc2lnbmVkIGR1bXBhYmxlOjE7CgoKICAgICAgICBtbV9jb250ZXh0X3QgY29udGV4dDsK
fTsKCmV4dGVybiBpbnQgbW1saXN0X25yOwojIDI0NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9zY2hlZC5oIgpzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgY291
bnQ7CiAgICAgICAgc3RydWN0IGtfc2lnYWN0aW9uIGFjdGlvbls2NF07CiAgICAgICAgc3Bpbmxv
Y2tfdCBzaWdsb2NrOwp9OwojIDI2MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hl
ZC5oIgpzdHJ1Y3QgdXNlcl9zdHJ1Y3QgewogICAgICAgIGF0b21pY190IF9fY291bnQ7CiAgICAg
ICAgYXRvbWljX3QgcHJvY2Vzc2VzOwogICAgICAgIGF0b21pY190IGZpbGVzOwoKCiAgICAgICAg
c3RydWN0IHVzZXJfc3RydWN0ICpuZXh0LCAqKnBwcmV2OwogICAgICAgIHVpZF90IHVpZDsKfTsK
CgoKCgoKZXh0ZXJuIHN0cnVjdCB1c2VyX3N0cnVjdCByb290X3VzZXI7CgoKc3RydWN0IHRhc2tf
c3RydWN0IHsKCgoKICAgICAgICB2b2xhdGlsZSBsb25nIHN0YXRlOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZmxhZ3M7CiAgICAgICAgaW50IHNpZ3BlbmRpbmc7CiAgICAgICAgbW1fc2VnbWVudF90
IGFkZHJfbGltaXQ7CgoKCiAgICAgICAgc3RydWN0IGV4ZWNfZG9tYWluICpleGVjX2RvbWFpbjsK
ICAgICAgICB2b2xhdGlsZSBsb25nIG5lZWRfcmVzY2hlZDsKICAgICAgICB1bnNpZ25lZCBsb25n
IHB0cmFjZTsKCiAgICAgICAgaW50IGxvY2tfZGVwdGg7CgoKCgoKCiAgICAgICAgbG9uZyBjb3Vu
dGVyOwogICAgICAgIGxvbmcgbmljZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBvbGljeTsKICAg
ICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbTsKICAgICAgICBpbnQgaGFzX2NwdSwgcHJvY2Vzc29y
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1c19hbGxvd2VkOwoKCgoKICAgICAgICBzdHJ1Y3Qg
bGlzdF9oZWFkIHJ1bl9saXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2xlZXBfdGltZTsKCiAg
ICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0X3Rhc2ssICpwcmV2X3Rhc2s7CiAgICAgICAg
c3RydWN0IG1tX3N0cnVjdCAqYWN0aXZlX21tOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbG9j
YWxfcGFnZXM7CiAgICAgICAgdW5zaWduZWQgaW50IGFsbG9jYXRpb25fb3JkZXIsIG5yX2xvY2Fs
X3BhZ2VzOwoKCiAgICAgICAgc3RydWN0IGxpbnV4X2JpbmZtdCAqYmluZm10OwogICAgICAgIGlu
dCBleGl0X2NvZGUsIGV4aXRfc2lnbmFsOwogICAgICAgIGludCBwZGVhdGhfc2lnbmFsOwoKICAg
ICAgICB1bnNpZ25lZCBsb25nIHBlcnNvbmFsaXR5OwogICAgICAgIGludCBkaWRfZXhlYzoxOwog
ICAgICAgIHBpZF90IHBpZDsKICAgICAgICBwaWRfdCBwZ3JwOwogICAgICAgIHBpZF90IHR0eV9v
bGRfcGdycDsKICAgICAgICBwaWRfdCBzZXNzaW9uOwogICAgICAgIHBpZF90IHRnaWQ7CgogICAg
ICAgIGludCBsZWFkZXI7CgoKCgoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBfb3BwdHIs
ICpwX3BwdHIsICpwX2NwdHIsICpwX3lzcHRyLCAqcF9vc3B0cjsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIHRocmVhZF9ncm91cDsKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcGlkaGFz
aF9uZXh0OwogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqKnBpZGhhc2hfcHByZXY7CgogICAg
ICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXRfY2hsZGV4aXQ7CiAgICAgICAgc3RydWN0IGNvbXBs
ZXRpb24gKnZmb3JrX2RvbmU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBydF9wcmlvcml0eTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGl0X3JlYWxfdmFsdWUsIGl0X3Byb2ZfdmFsdWUsIGl0X3ZpcnRf
dmFsdWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpdF9yZWFsX2luY3IsIGl0X3Byb2ZfaW5jciwg
aXRfdmlydF9pbmNyOwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHJlYWxfdGltZXI7CiAgICAg
ICAgc3RydWN0IHRtcyB0aW1lczsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X3RpbWU7CiAg
ICAgICAgbG9uZyBwZXJfY3B1X3V0aW1lWzFdLCBwZXJfY3B1X3N0aW1lWzFdOwoKICAgICAgICB1
bnNpZ25lZCBsb25nIG1pbl9mbHQsIG1hal9mbHQsIG5zd2FwLCBjbWluX2ZsdCwgY21hal9mbHQs
IGNuc3dhcDsKICAgICAgICBpbnQgc3dhcHBhYmxlOjE7CgogICAgICAgIHVpZF90IHVpZCxldWlk
LHN1aWQsZnN1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkLGVnaWQsc2dpZCxmc2dpZDsKICAgICAgICBp
bnQgbmdyb3VwczsKICAgICAgICBnaWRfdCBncm91cHNbMzJdOwogICAgICAgIGtlcm5lbF9jYXBf
dCBjYXBfZWZmZWN0aXZlLCBjYXBfaW5oZXJpdGFibGUsIGNhcF9wZXJtaXR0ZWQ7CiAgICAgICAg
aW50IGtlZXBfY2FwYWJpbGl0aWVzOjE7CiAgICAgICAgc3RydWN0IHVzZXJfc3RydWN0ICp1c2Vy
OwoKICAgICAgICBzdHJ1Y3QgcmxpbWl0IHJsaW1bMTFdOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHVzZWRfbWF0aDsKICAgICAgICBjaGFyIGNvbW1bMTZdOwoKICAgICAgICBpbnQgbGlua19jb3Vu
dDsKICAgICAgICBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5OwogICAgICAgIHVuc2lnbmVkIGludCBs
b2NrczsKCiAgICAgICAgc3RydWN0IHNlbV91bmRvICpzZW11bmRvOwogICAgICAgIHN0cnVjdCBz
ZW1fcXVldWUgKnNlbXNsZWVwaW5nOwoKICAgICAgICBzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB0aHJl
YWQ7CgogICAgICAgIHN0cnVjdCBmc19zdHJ1Y3QgKmZzOwoKICAgICAgICBzdHJ1Y3QgZmlsZXNf
c3RydWN0ICpmaWxlczsKCiAgICAgICAgc3BpbmxvY2tfdCBzaWdtYXNrX2xvY2s7CiAgICAgICAg
c3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZzsKCiAgICAgICAgc2lnc2V0X3QgYmxvY2tlZDsKICAg
ICAgICBzdHJ1Y3Qgc2lncGVuZGluZyBwZW5kaW5nOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHNh
c19zc19zcDsKICAgICAgICBzaXplX3Qgc2FzX3NzX3NpemU7CiAgICAgICAgaW50ICgqbm90aWZp
ZXIpKHZvaWQgKnByaXYpOwogICAgICAgIHZvaWQgKm5vdGlmaWVyX2RhdGE7CiAgICAgICAgc2ln
c2V0X3QgKm5vdGlmaWVyX21hc2s7CgoKICAgICAgICB1MzIgcGFyZW50X2V4ZWNfaWQ7CiAgICAg
ICAgdTMyIHNlbGZfZXhlY19pZDsKCiAgICAgICAgc3BpbmxvY2tfdCBhbGxvY19sb2NrOwp9Owoj
IDQ0NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gc3RydWN0
IGV4ZWNfZG9tYWluIGRlZmF1bHRfZXhlY19kb21haW47CiMgNDk2ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3NjaGVkLmgiCnVuaW9uIHRhc2tfdW5pb24gewogICAgICAgIHN0cnVjdCB0
YXNrX3N0cnVjdCB0YXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhY2tbMjA0OCpzaXplb2Yo
bG9uZykvc2l6ZW9mKGxvbmcpXTsKfTsKCmV4dGVybiB1bmlvbiB0YXNrX3VuaW9uIGluaXRfdGFz
a191bmlvbjsKCmV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0IGluaXRfbW07CmV4dGVybiBzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKmluaXRfdGFza3NbMV07CgoKCmV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnBpZGhhc2hbKDQwOTYgPj4gMildOwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgaGFzaF9waWQoc3Ry
dWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICoqaHRhYmxl
ID0gJnBpZGhhc2hbKCgoKHAtPnBpZCkgPj4gOCkgXiAocC0+cGlkKSkgJiAoKDQwOTYgPj4gMikg
LSAxKSldOwoKICAgICAgICBpZigocC0+cGlkaGFzaF9uZXh0ID0gKmh0YWJsZSkgIT0gKCh2b2lk
ICopMCkpCiAgICAgICAgICAgICAgICAoKmh0YWJsZSktPnBpZGhhc2hfcHByZXYgPSAmcC0+cGlk
aGFzaF9uZXh0OwogICAgICAgICpodGFibGUgPSBwOwogICAgICAgIHAtPnBpZGhhc2hfcHByZXYg
PSBodGFibGU7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhhc2hfcGlkKHN0cnVjdCB0YXNrX3N0
cnVjdCAqcCkKewogICAgICAgIGlmKHAtPnBpZGhhc2hfbmV4dCkKICAgICAgICAgICAgICAgIHAt
PnBpZGhhc2hfbmV4dC0+cGlkaGFzaF9wcHJldiA9IHAtPnBpZGhhc2hfcHByZXY7CiAgICAgICAg
KnAtPnBpZGhhc2hfcHByZXYgPSBwLT5waWRoYXNoX25leHQ7Cn0KCnN0YXRpYyBpbmxpbmUgc3Ry
dWN0IHRhc2tfc3RydWN0ICpmaW5kX3Rhc2tfYnlfcGlkKGludCBwaWQpCnsKICAgICAgICBzdHJ1
Y3QgdGFza19zdHJ1Y3QgKnAsICoqaHRhYmxlID0gJnBpZGhhc2hbKCgoKHBpZCkgPj4gOCkgXiAo
cGlkKSkgJiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAgICBmb3IocCA9ICpodGFibGU7IHAg
JiYgcC0+cGlkICE9IHBpZDsgcCA9IHAtPnBpZGhhc2hfbmV4dCkKICAgICAgICAgICAgICAgIDsK
CiAgICAgICAgcmV0dXJuIHA7Cn0KCgpleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0ICogYWxsb2Nf
dWlkKHVpZF90KTsKZXh0ZXJuIHZvaWQgZnJlZV91aWQoc3RydWN0IHVzZXJfc3RydWN0ICopOwoK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9jdXJyZW50LmgiIDEKCgoKc3RydWN0IHRh
c2tfc3RydWN0OwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBnZXRfY3VycmVu
dCh2b2lkKQp7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpjdXJyZW50OwogICAgICAgIF9f
YXNtX18oImFuZGwgJSVlc3AsJTA7ICI6Ij1yIiAoY3VycmVudCkgOiAiMCIgKH44MTkxVUwpKTsK
ICAgICAgICByZXR1cm4gY3VycmVudDsKIH0KIyA1NDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvc2NoZWQuaCIgMgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdm9sYXRpbGUgamlmZmllczsK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaXRpbWVyX3RpY2tzOwpleHRlcm4gdW5zaWduZWQgbG9uZyBp
dGltZXJfbmV4dDsKZXh0ZXJuIHN0cnVjdCB0aW1ldmFsIHh0aW1lOwpleHRlcm4gdm9pZCBkb190
aW1lcihzdHJ1Y3QgcHRfcmVncyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgKiBwcm9mX2J1ZmZl
cjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9sZW47CmV4dGVybiB1bnNpZ25lZCBsb25nIHBy
b2Zfc2hpZnQ7CgoKCmV4dGVybiB2b2lkIF9fd2FrZV91cCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwg
dW5zaWduZWQgaW50IG1vZGUsIGludCBucikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpl
eHRlcm4gdm9pZCBfX3dha2VfdXBfc3luYyh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgdW5zaWduZWQg
aW50IG1vZGUsIGludCBucikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9p
ZCBzbGVlcF9vbih3YWl0X3F1ZXVlX2hlYWRfdCAqcSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwpleHRlcm4gbG9uZyBzbGVlcF9vbl90aW1lb3V0KHdhaXRfcXVldWVfaGVhZF90ICpxLCBz
aWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpleHRlcm4g
dm9pZCBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uKHdhaXRfcXVldWVfaGVhZF90ICpxKSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBsb25nIGludGVycnVwdGlibGVfc2xlZXBfb25f
dGltZW91dCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgc2lnbmVkIGxvbmcgdGltZW91dCkgX19hdHRy
aWJ1dGVfXygocmVncGFybSgzKSkpOwoKZXh0ZXJuIGludCB3YWtlX3VwX3Byb2Nlc3Moc3RydWN0
IHRhc2tfc3RydWN0ICogdHNrKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgNTc3ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDApKSkgbG9uZyBzeXNfd2FpdDQocGlkX3QgcGlkLHVuc2lnbmVkIGludCAqIHN0YXRfYWRk
ciwgaW50IG9wdGlvbnMsIHN0cnVjdCBydXNhZ2UgKiBydSk7CgpleHRlcm4gaW50IGluX2dyb3Vw
X3AoZ2lkX3QpOwpleHRlcm4gaW50IGluX2Vncm91cF9wKGdpZF90KTsKCmV4dGVybiB2b2lkIHBy
b2NfY2FjaGVzX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbHMoc3RydWN0IHRh
c2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBmbHVzaF9zaWduYWxfaGFuZGxlcnMoc3RydWN0IHRh
c2tfc3RydWN0ICopOwpleHRlcm4gaW50IGRlcXVldWVfc2lnbmFsKHNpZ3NldF90ICosIHNpZ2lu
Zm9fdCAqKTsKZXh0ZXJuIHZvaWQgYmxvY2tfYWxsX3NpZ25hbHMoaW50ICgqbm90aWZpZXIpKHZv
aWQgKnByaXYpLCB2b2lkICpwcml2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdz
ZXRfdCAqbWFzayk7CmV4dGVybiB2b2lkIHVuYmxvY2tfYWxsX3NpZ25hbHModm9pZCk7CmV4dGVy
biBpbnQgc2VuZF9zaWdfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHN0cnVjdCB0YXNrX3N0
cnVjdCAqKTsKZXh0ZXJuIGludCBmb3JjZV9zaWdfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICos
IHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBraWxsX3BnX2luZm8oaW50LCBzdHJ1
Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVybiBpbnQga2lsbF9zbF9pbmZvKGludCwgc3RydWN0
IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRlcm4gaW50IGtpbGxfcHJvY19pbmZvKGludCwgc3RydWN0
IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRlcm4gdm9pZCBub3RpZnlfcGFyZW50KHN0cnVjdCB0YXNr
X3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gdm9pZCBkb19ub3RpZnlfcGFyZW50KHN0cnVjdCB0YXNr
X3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gdm9pZCBmb3JjZV9zaWcoaW50LCBzdHJ1Y3QgdGFza19z
dHJ1Y3QgKik7CmV4dGVybiBpbnQgc2VuZF9zaWcoaW50LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwg
aW50KTsKZXh0ZXJuIGludCBraWxsX3BnKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQga2ls
bF9zbChwaWRfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IGtpbGxfcHJvYyhwaWRfdCwgaW50LCBp
bnQpOwpleHRlcm4gaW50IGRvX3NpZ2FjdGlvbihpbnQsIGNvbnN0IHN0cnVjdCBrX3NpZ2FjdGlv
biAqLCBzdHJ1Y3Qga19zaWdhY3Rpb24gKik7CmV4dGVybiBpbnQgZG9fc2lnYWx0c3RhY2soY29u
c3Qgc3RhY2tfdCAqLCBzdGFja190ICosIHVuc2lnbmVkIGxvbmcpOwoKc3RhdGljIGlubGluZSBp
bnQgc2lnbmFsX3BlbmRpbmcoc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgcmV0dXJu
IChwLT5zaWdwZW5kaW5nICE9IDApOwp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgaGFzX3BlbmRp
bmdfc2lnbmFscyhzaWdzZXRfdCAqc2lnbmFsLCBzaWdzZXRfdCAqYmxvY2tlZCkKewogICAgICAg
IHVuc2lnbmVkIGxvbmcgcmVhZHk7CiAgICAgICAgbG9uZyBpOwoKICAgICAgICBzd2l0Y2ggKCg2
NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAoNjQg
LyAzMiksIHJlYWR5ID0gMDsgLS1pID49IDAgOykKICAgICAgICAgICAgICAgICAgICAgICAgcmVh
ZHkgfD0gc2lnbmFsLT5zaWdbaV0gJn4gYmxvY2tlZC0+c2lnW2ldOwogICAgICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgIGNhc2UgNDogcmVhZHkgPSBzaWduYWwtPnNpZ1szXSAmfiBibG9ja2Vk
LT5zaWdbM107CiAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1syXSAmfiBibG9j
a2VkLT5zaWdbMl07CiAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1sxXSAmfiBi
bG9ja2VkLT5zaWdbMV07CiAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1swXSAm
fiBibG9ja2VkLT5zaWdbMF07CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAy
OiByZWFkeSA9IHNpZ25hbC0+c2lnWzFdICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAgICAg
ICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAgICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDE6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMF0gJn4g
YmxvY2tlZC0+c2lnWzBdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVhZHkgIT0gMDsKfQoK
CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCByZWNhbGNfc2lncGVuZGluZyhzdHJ1Y3QgdGFza19zdHJ1
Y3QgKnQpCnsKICAgICAgICB0LT5zaWdwZW5kaW5nID0gaGFzX3BlbmRpbmdfc2lnbmFscygmdC0+
cGVuZGluZy5zaWduYWwsICZ0LT5ibG9ja2VkKTsKfQoKCgpzdGF0aWMgaW5saW5lIGludCBvbl9z
aWdfc3RhY2sodW5zaWduZWQgbG9uZyBzcCkKewogICAgICAgIHJldHVybiAoc3AgLSBnZXRfY3Vy
cmVudCgpLT5zYXNfc3Nfc3AgPCBnZXRfY3VycmVudCgpLT5zYXNfc3Nfc2l6ZSk7Cn0KCnN0YXRp
YyBpbmxpbmUgaW50IHNhc19zc19mbGFncyh1bnNpZ25lZCBsb25nIHNwKQp7CiAgICAgICAgcmV0
dXJuIChnZXRfY3VycmVudCgpLT5zYXNfc3Nfc2l6ZSA9PSAwID8gMgogICAgICAgICAgICAgICAg
OiBvbl9zaWdfc3RhY2soc3ApID8gMSA6IDApOwp9CgpleHRlcm4gaW50IHJlcXVlc3RfaXJxKHVu
c2lnbmVkIGludCwKICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqaGFuZGxlcikoaW50LCB2
b2lkICosIHN0cnVjdCBwdF9yZWdzICopLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZnJlZV9pcnEodW5zaWdu
ZWQgaW50LCB2b2lkICopOwojIDY4MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hl
ZC5oIgpzdGF0aWMgaW5saW5lIGludCBzdXNlcih2b2lkKQp7CiAgICAgICAgaWYgKCEoICgxIDw8
ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAmIDB4MDAwMDAwMDAgOiAoMSA8PCAo
MCkpICYgc2VjdXJlYml0cyApICYmIGdldF9jdXJyZW50KCktPmV1aWQgPT0gMCkgewogICAgICAg
ICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsKICAgICAgICAgICAg
ICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGlu
ZSBpbnQgZnN1c2VyKHZvaWQpCnsKICAgICAgICBpZiAoISggKDEgPDwgKDAgKzEpKSAmIDB4MDAw
MDAwMDAgPyAoMSA8PCAoMCkpICYgMHgwMDAwMDAwMCA6ICgxIDw8ICgwKSkgJiBzZWN1cmViaXRz
ICkgJiYgZ2V0X2N1cnJlbnQoKS0+ZnN1aWQgPT0gMCkgewogICAgICAgICAgICAgICAgZ2V0X2N1
cnJlbnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwog
ICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBpbnQgY2Fw
YWJsZShpbnQgY2FwKQp7CgogICAgICAgIGlmICgoKGdldF9jdXJyZW50KCktPmNhcF9lZmZlY3Rp
dmUpICYgKDEgPDwgKGNhcCkpKSkKCgoKICAgICAgICB7CiAgICAgICAgICAgICAgICBnZXRfY3Vy
cmVudCgpLT5mbGFncyB8PSAweDAwMDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAg
ICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CgoKCgpleHRlcm4gc3RydWN0IG1tX3N0cnVjdCAq
IG1tX2FsbG9jKHZvaWQpOwoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKiBzdGFydF9sYXp5X3Rs
Yih2b2lkKTsKZXh0ZXJuIHZvaWQgZW5kX2xhenlfdGxiKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsK
CgpleHRlcm4gaW5saW5lIHZvaWQgX19tbWRyb3Aoc3RydWN0IG1tX3N0cnVjdCAqKSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CnN0YXRpYyBpbmxpbmUgdm9pZCBtbWRyb3Aoc3RydWN0IG1t
X3N0cnVjdCAqIG1tKQp7CiAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm1tLT5tbV9j
b3VudCkpCiAgICAgICAgICAgICAgICBfX21tZHJvcChtbSk7Cn0KCgpleHRlcm4gdm9pZCBtbXB1
dChzdHJ1Y3QgbW1fc3RydWN0ICopOwoKZXh0ZXJuIHZvaWQgbW1fcmVsZWFzZSh2b2lkKTsKCgoK
CmV4dGVybiBzdHJ1Y3QgZmlsZSAqKiBhbGxvY19mZF9hcnJheShpbnQpOwpleHRlcm4gaW50IGV4
cGFuZF9mZF9hcnJheShzdHJ1Y3QgZmlsZXNfc3RydWN0ICosIGludCBucik7CmV4dGVybiB2b2lk
IGZyZWVfZmRfYXJyYXkoc3RydWN0IGZpbGUgKiosIGludCk7CgpleHRlcm4gZmRfc2V0ICphbGxv
Y19mZHNldChpbnQpOwpleHRlcm4gaW50IGV4cGFuZF9mZHNldChzdHJ1Y3QgZmlsZXNfc3RydWN0
ICosIGludCBucik7CmV4dGVybiB2b2lkIGZyZWVfZmRzZXQoZmRfc2V0ICosIGludCk7CgpleHRl
cm4gaW50IGNvcHlfdGhyZWFkKGludCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5z
aWduZWQgbG9uZywgc3RydWN0IHRhc2tfc3RydWN0ICosIHN0cnVjdCBwdF9yZWdzICopOwpleHRl
cm4gdm9pZCBmbHVzaF90aHJlYWQodm9pZCk7CmV4dGVybiB2b2lkIGV4aXRfdGhyZWFkKHZvaWQp
OwoKZXh0ZXJuIHZvaWQgZXhpdF9tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lk
IGV4aXRfZmlsZXMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBleGl0X3NpZ2hh
bmQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKZXh0ZXJuIHZvaWQgcmVwYXJlbnRfdG9faW5pdCh2
b2lkKTsKZXh0ZXJuIHZvaWQgZGFlbW9uaXplKHZvaWQpOwoKZXh0ZXJuIGludCBkb19leGVjdmUo
Y2hhciAqLCBjaGFyICoqLCBjaGFyICoqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIGludCBk
b19mb3JrKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCBwdF9yZWdzICosIHVu
c2lnbmVkIGxvbmcpOwoKZXh0ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFk
X3QgKnEsIHdhaXRfcXVldWVfdCAqIHdhaXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsK
ZXh0ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWVfZXhjbHVzaXZlKHdhaXRfcXVldWVfaGVhZF90ICpx
LCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy
biB2b2lkIHJlbW92ZV93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVl
X3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgODQ4ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBkZWxfZnJvbV9y
dW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKQp7CiAgICAgICAgbnJfcnVubmluZy0tOwog
ICAgICAgIHAtPnNsZWVwX3RpbWUgPSBqaWZmaWVzOwogICAgICAgIGxpc3RfZGVsKCZwLT5ydW5f
bGlzdCk7CiAgICAgICAgcC0+cnVuX2xpc3QubmV4dCA9ICgodm9pZCAqKTApOwp9CgpzdGF0aWMg
aW5saW5lIGludCB0YXNrX29uX3J1bnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAg
ICAgIHJldHVybiAocC0+cnVuX2xpc3QubmV4dCAhPSAoKHZvaWQgKikwKSk7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCB1bmhhc2hfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAg
ICBpZiAodGFza19vbl9ydW5xdWV1ZShwKSkgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4
MGYsMHgwYiIpOwogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJt
ZW1vcnkiKTsgKHZvaWQpKCZ0YXNrbGlzdF9sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgbnJf
dGhyZWFkcy0tOwogICAgICAgIHVuaGFzaF9waWQocCk7CiAgICAgICAgZG8geyAocCktPm5leHRf
dGFzay0+cHJldl90YXNrID0gKHApLT5wcmV2X3Rhc2s7IChwKS0+cHJldl90YXNrLT5uZXh0X3Rh
c2sgPSAocCktPm5leHRfdGFzazsgaWYgKChwKS0+cF9vc3B0cikgKHApLT5wX29zcHRyLT5wX3lz
cHRyID0gKHApLT5wX3lzcHRyOyBpZiAoKHApLT5wX3lzcHRyKSAocCktPnBfeXNwdHItPnBfb3Nw
dHIgPSAocCktPnBfb3NwdHI7IGVsc2UgKHApLT5wX3BwdHItPnBfY3B0ciA9IChwKS0+cF9vc3B0
cjsgfSB3aGlsZSAoMCk7CiAgICAgICAgbGlzdF9kZWwoJnAtPnRocmVhZF9ncm91cCk7CiAgICAg
ICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoi
bWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CgoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tfbG9jayhz
dHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICAodm9pZCkoJnAtPmFsbG9jX2xvY2spOwp9
CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza191bmxvY2soc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7
CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9CgoKc3RhdGljIGlubGluZSBjaGFyICogZF9wYXRo
KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHZmc21vdW50ICp2ZnNtbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBpbnQgYnVmbGVuKQp7CiAgICAgICAg
Y2hhciAqcmVzOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqcm9vdG1udDsKICAgICAgICBzdHJ1
Y3QgZGVudHJ5ICpyb290OwogICAgICAgICh2b2lkKSgmZ2V0X2N1cnJlbnQoKS0+ZnMtPmxvY2sp
OwogICAgICAgIHJvb3RtbnQgPSBtbnRnZXQoZ2V0X2N1cnJlbnQoKS0+ZnMtPnJvb3RtbnQpOwog
ICAgICAgIHJvb3QgPSBkZ2V0KGdldF9jdXJyZW50KCktPmZzLT5yb290KTsKICAgICAgICBkbyB7
IH0gd2hpbGUoMCk7CiAgICAgICAgKHZvaWQpKCZkY2FjaGVfbG9jayk7CiAgICAgICAgcmVzID0g
X19kX3BhdGgoZGVudHJ5LCB2ZnNtbnQsIHJvb3QsIHJvb3RtbnQsIGJ1ZiwgYnVmbGVuKTsKICAg
ICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgZHB1dChyb290KTsKICAgICAgICBtbnRwdXQo
cm9vdG1udCk7CiAgICAgICAgcmV0dXJuIHJlczsKfQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXJybm8u
aCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIgMgoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9zdHJpbmcuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDEyICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21tem9uZS5oIiAxCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW16b25lLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA5ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9tbXpvbmUuaCIgMgojIDIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tem9u
ZS5oIgp0eXBlZGVmIHN0cnVjdCBmcmVlX2FyZWFfc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIGZyZWVfbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nICptYXA7Cn0gZnJlZV9hcmVh
X3Q7CgpzdHJ1Y3QgcGdsaXN0X2RhdGE7CiMgMzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW16b25lLmgiCnR5cGVkZWYgc3RydWN0IHpvbmVfc3RydWN0IHsKCgoKICAgICAgICBzcGlu
bG9ja190IGxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlX3BhZ2VzOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgcGFnZXNfbWluLCBwYWdlc19sb3csIHBhZ2VzX2hpZ2g7CiAgICAgICAgaW50
IG5lZWRfYmFsYW5jZTsKCgoKCiAgICAgICAgZnJlZV9hcmVhX3QgZnJlZV9hcmVhWzEwXTsKCgoK
CiAgICAgICAgc3RydWN0IHBnbGlzdF9kYXRhICp6b25lX3BnZGF0OwogICAgICAgIHN0cnVjdCBw
YWdlICp6b25lX21lbV9tYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X3BhZGRy
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFydF9tYXBucjsKCgoKCiAgICAgICAgY2hh
ciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpemU7Cn0gem9uZV90OwojIDgxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgp0eXBlZGVmIHN0cnVjdCB6b25lbGlz
dF9zdHJ1Y3QgewogICAgICAgIHpvbmVfdCAqIHpvbmVzIFszICsxXTsKfSB6b25lbGlzdF90Owoj
IDk4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdHJ1Y3QgYm9vdG1l
bV9kYXRhOwp0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0YSB7CiAgICAgICAgem9uZV90IG5vZGVf
em9uZXNbM107CiAgICAgICAgem9uZWxpc3RfdCBub2RlX3pvbmVsaXN0c1sweDBmICsxXTsKICAg
ICAgICBpbnQgbnJfem9uZXM7CiAgICAgICAgc3RydWN0IHBhZ2UgKm5vZGVfbWVtX21hcDsKICAg
ICAgICB1bnNpZ25lZCBsb25nICp2YWxpZF9hZGRyX2JpdG1hcDsKICAgICAgICBzdHJ1Y3QgYm9v
dG1lbV9kYXRhICpiZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIG5vZGVfc3RhcnRfcGFkZHI7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0X21hcG5yOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgbm9kZV9zaXplOwogICAgICAgIGludCBub2RlX2lkOwogICAgICAgIHN0cnVjdCBwZ2xp
c3RfZGF0YSAqbm9kZV9uZXh0Owp9IHBnX2RhdGFfdDsKCmV4dGVybiBpbnQgbnVtbm9kZXM7CmV4
dGVybiBwZ19kYXRhX3QgKnBnZGF0X2xpc3Q7CiMgMTIzICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21tem9uZS5oIgpzdHJ1Y3QgcGFnZTsKZXh0ZXJuIHZvaWQgc2hvd19mcmVlX2FyZWFz
X2NvcmUocGdfZGF0YV90ICpwZ2RhdCk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9pbml0X2NvcmUo
aW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKipnbWFwLAogIHVuc2lnbmVk
IGxvbmcgKnpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgcGFkZHIsIHVuc2lnbmVkIGxvbmcgKnpo
b2xlc19zaXplLAogIHN0cnVjdCBwYWdlICpwbWFwKTsKCmV4dGVybiBwZ19kYXRhX3QgY29udGln
X3BhZ2VfZGF0YTsKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zd2FwLmgiIDEKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3N3YXAuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Bh
Z2UuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3dhcC5oIiAyCiMgMjUg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3dhcC5oIgp1bmlvbiBzd2FwX2hlYWRlciB7
CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciByZXNlcnZlZFso
MVVMIDw8IDEyKSAtIDEwXTsKICAgICAgICAgICAgICAgIGNoYXIgbWFnaWNbMTBdOwogICAgICAg
IH0gbWFnaWM7CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciBi
b290Yml0c1sxMDI0XTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGxhc3RfcGFnZTsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBucl9iYWRwYWdlczsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWRkaW5n
WzEyNV07CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFkcGFnZXNbMV07CiAgICAgICAg
fSBpbmZvOwp9OwojIDUxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDUyICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIgMgojIDY0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3N3YXAuaCIKc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVk
IGludCBmbGFnczsKICAgICAgICBrZGV2X3Qgc3dhcF9kZXZpY2U7CiAgICAgICAgc3BpbmxvY2tf
dCBzZGV2X2xvY2s7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqIHN3YXBfZmlsZTsKICAgICAgICBz
dHJ1Y3QgdmZzbW91bnQgKnN3YXBfdmZzbW50OwogICAgICAgIHVuc2lnbmVkIHNob3J0ICogc3dh
cF9tYXA7CiAgICAgICAgdW5zaWduZWQgaW50IGxvd2VzdF9iaXQ7CiAgICAgICAgdW5zaWduZWQg
aW50IGhpZ2hlc3RfYml0OwogICAgICAgIHVuc2lnbmVkIGludCBjbHVzdGVyX25leHQ7CiAgICAg
ICAgdW5zaWduZWQgaW50IGNsdXN0ZXJfbnI7CiAgICAgICAgaW50IHByaW87CiAgICAgICAgaW50
IHBhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4OwogICAgICAgIGludCBuZXh0Owp9OwoK
ZXh0ZXJuIGludCBucl9zd2FwX3BhZ2VzOwpleHRlcm4gdW5zaWduZWQgaW50IG5yX2ZyZWVfcGFn
ZXModm9pZCk7CmV4dGVybiB1bnNpZ25lZCBpbnQgbnJfZnJlZV9idWZmZXJfcGFnZXModm9pZCk7
CmV4dGVybiBpbnQgbnJfYWN0aXZlX3BhZ2VzOwpleHRlcm4gaW50IG5yX2luYWN0aXZlX3BhZ2Vz
OwpleHRlcm4gYXRvbWljX3QgbnJfYXN5bmNfcGFnZXM7CmV4dGVybiBhdG9taWNfdCBwYWdlX2Nh
Y2hlX3NpemU7CmV4dGVybiBhdG9taWNfdCBidWZmZXJtZW1fcGFnZXM7CmV4dGVybiBzcGlubG9j
a190IHBhZ2VjYWNoZV9sb2NrOwpleHRlcm4gdm9pZCBfX3JlbW92ZV9pbm9kZV9wYWdlKHN0cnVj
dCBwYWdlICopOwoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKc3RydWN0IHZtX2FyZWFfc3RydWN0Owpz
dHJ1Y3Qgc3lzaW5mbzsKCnN0cnVjdCB6b25lX3Q7CgoKZXh0ZXJuIHZvaWQgbHJ1X2NhY2hlX2Fk
ZChzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lk
IF9fbHJ1X2NhY2hlX2RlbChzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CmV4dGVybiB2b2lkIGxydV9jYWNoZV9kZWwoc3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpOwoKZXh0ZXJuIHZvaWQgZGVhY3RpdmF0ZV9wYWdlKHN0cnVjdCBwYWdl
ICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgZGVhY3RpdmF0ZV9w
YWdlX25vbG9jayhzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4
dGVybiB2b2lkIGFjdGl2YXRlX3BhZ2Uoc3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwpleHRlcm4gdm9pZCBhY3RpdmF0ZV9wYWdlX25vbG9jayhzdHJ1Y3QgcGFnZSAq
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpleHRlcm4gdm9pZCBzd2FwX3NldHVwKHZv
aWQpOwoKCmV4dGVybiB3YWl0X3F1ZXVlX2hlYWRfdCBrc3dhcGRfd2FpdDsKZXh0ZXJuIGludCB0
cnlfdG9fZnJlZV9wYWdlcyh6b25lX3QgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCgpleHRlcm4gdm9pZCByd19zd2FwX3BhZ2UoaW50
LCBzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIHZvaWQgcndfc3dhcF9wYWdlX25vbG9jayhpbnQsIHN3
cF9lbnRyeV90LCBjaGFyICopOwoKCgoKCgpleHRlcm4gdm9pZCBzaG93X3N3YXBfY2FjaGVfaW5m
byh2b2lkKTsKCmV4dGVybiBpbnQgYWRkX3RvX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKiwgc3dw
X2VudHJ5X3QpOwpleHRlcm4gdm9pZCBfX2RlbGV0ZV9mcm9tX3N3YXBfY2FjaGUoc3RydWN0IHBh
Z2UgKnBhZ2UpOwpleHRlcm4gdm9pZCBkZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdl
ICpwYWdlKTsKZXh0ZXJuIHZvaWQgZnJlZV9wYWdlX2FuZF9zd2FwX2NhY2hlKHN0cnVjdCBwYWdl
ICpwYWdlKTsKZXh0ZXJuIHN0cnVjdCBwYWdlICogbG9va3VwX3N3YXBfY2FjaGUoc3dwX2VudHJ5
X3QpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiByZWFkX3N3YXBfY2FjaGVfYXN5bmMoc3dwX2VudHJ5
X3QpOwoKCmV4dGVybiBpbnQgb3V0X29mX21lbW9yeSh2b2lkKTsKZXh0ZXJuIHZvaWQgb29tX2tp
bGwodm9pZCk7CgoKZXh0ZXJuIGludCB0b3RhbF9zd2FwX3BhZ2VzOwpleHRlcm4gdW5zaWduZWQg
aW50IG5yX3N3YXBmaWxlczsKZXh0ZXJuIHN0cnVjdCBzd2FwX2luZm9fc3RydWN0IHN3YXBfaW5m
b1tdOwpleHRlcm4gaW50IGlzX3N3YXBfcGFydGl0aW9uKGtkZXZfdCk7CmV4dGVybiB2b2lkIHNp
X3N3YXBpbmZvKHN0cnVjdCBzeXNpbmZvICopOwpleHRlcm4gc3dwX2VudHJ5X3QgZ2V0X3N3YXBf
cGFnZSh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2V0X3N3YXBoYW5kbGVfaW5mbyhzd3BfZW50cnlfdCwg
dW5zaWduZWQgbG9uZyAqLCBrZGV2X3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBpbm9kZSAqKik7CmV4dGVybiBpbnQgc3dhcF9kdXBsaWNhdGUoc3dw
X2VudHJ5X3QpOwpleHRlcm4gaW50IHN3YXBfY291bnQoc3RydWN0IHBhZ2UgKik7CmV4dGVybiBp
bnQgdmFsaWRfc3dhcGhhbmRsZXMoc3dwX2VudHJ5X3QsIHVuc2lnbmVkIGxvbmcgKik7CmV4dGVy
biB2b2lkIHN3YXBfZnJlZShzd3BfZW50cnlfdCk7CnN0cnVjdCBzd2FwX2xpc3RfdCB7CiAgICAg
ICAgaW50IGhlYWQ7CiAgICAgICAgaW50IG5leHQ7Cn07CmV4dGVybiBzdHJ1Y3Qgc3dhcF9saXN0
X3Qgc3dhcF9saXN0OwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3N3YXBv
ZmYoY29uc3QgY2hhciAqKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19z
d2Fwb24oY29uc3QgY2hhciAqLCBpbnQpOwoKZXh0ZXJuIHNwaW5sb2NrX3QgcGFnZW1hcF9scnVf
bG9jazsKCmV4dGVybiB2b2lkIG1hcmtfcGFnZV9hY2Nlc3NlZChzdHJ1Y3QgcGFnZSAqKSBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgMjIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3N3YXAuaCIKZXh0ZXJuIHNwaW5sb2NrX3Qgc3dhcGxvY2s7CgoKCgoKCmV4dGVybiB2b2lk
IHNobWVtX3VudXNlKHN3cF9lbnRyeV90IGVudHJ5LCBzdHJ1Y3QgcGFnZSAqcGFnZSk7CiMgMTQg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9tbS5oIiAyCgpleHRlcm4gdW5zaWduZWQgbG9uZyBtYXhfbWFwbnI7CmV4dGVybiB1bnNp
Z25lZCBsb25nIG51bV9waHlzcGFnZXM7CmV4dGVybiB2b2lkICogaGlnaF9tZW1vcnk7CmV4dGVy
biBpbnQgcGFnZV9jbHVzdGVyOwoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX2xpc3Q7
CmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGluYWN0aXZlX2xpc3Q7CgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDI1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDEK
CgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAyCiMgMTYgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL3BndGFibGUuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9w
cm9jZXNzb3IuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMQojIDE2ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2Zp
eG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQoj
IDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL2FwaWNkZWYuaCIgMQojIDEyMiAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vYXBpY2RlZi5oIgpzdHJ1Y3QgbG9jYWxfYXBpYyB7CgogICAgICAgIHN0cnVjdCB7
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDE7CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDI7CgogICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDog
MjQsCiAgICAgICAgICAgICAgICAgICAgICAgIHBoeXNfYXBpY19pZCA6IDQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGlkOwoKICAgICAgICBjb25zdAogICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbiA6IDgsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAg
IG1heF9sdnQgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiA4Owog
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSB2ZXJz
aW9uOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jl
c2VydmVkXzAzOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsg
fSBfX3Jlc2VydmVkXzA0OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZFs0XTsgfSBfX3Jlc2VydmVkXzA1OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA2OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IHByaW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAg
X19yZXNlcnZlZF8xIDogMjQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZF8yWzNdOwogICAgICAgIH0gdHByOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAgICAgICAg
ICAgICAgICBfX3Jlc2VydmVkXzEgOiAyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBf
X3Jlc2VydmVkXzJbM107CiAgICAgICAgfSBhcHI7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwcmlvcml0eSA6IDgsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDI0OwogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IHBwcjsKCiAgICAgICAgc3RydWN0IHsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlb2k7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGVvaTsKCiAgICAgICAgc3RydWN0IHsgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wNzsKCiAgICAgICAgc3RydWN0
IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyNCwKICAgICAg
ICAgICAgICAgICAgICAgICAgbG9naWNhbF9kZXN0IDogODsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSBsZHI7CgogICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjgsCiAgICAgICAg
ICAgICAgICAgICAgICAgIG1vZGVsIDogNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBf
X3Jlc2VydmVkXzJbM107CiAgICAgICAgfSBkZnI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgc3B1cmlvdXNfdmVjdG9yIDogOCwKICAgICAgICAgICAgICAg
ICAgICAgICAgYXBpY19lbmFibGVkIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNf
Y3B1IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMjI7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgIH0gc3ZyOwoK
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwog
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSBpc3Ig
WzhdOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZp
ZWxkOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAg
fSB0bXIgWzhdOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGJpdGZpZWxkOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAg
ICAgICAgfSBpcnIgWzhdOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VuZF9jc19lcnJvciA6IDEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZV9jc19lcnJvciA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9hY2NlcHRfZXJyb3IgOiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVfYWNjZXB0X2Vycm9yIDogMSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbmRfaWxsZWdhbF92ZWN0b3IgOiAxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVfaWxsZWdhbF92ZWN0b3IgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlsbGVnYWxfcmVnaXN0ZXJfYWRkcmVzcyA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMjQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgICAg
ICAgICB9IGVycm9yX2JpdHM7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXJyb3JzOwogICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgICAgICAgICAgfSBhbGxfZXJyb3Jz
OwogICAgICAgIH0gZXNyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZFs0XTsgfSBfX3Jlc2VydmVkXzA4OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA5OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzEwOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzExOwoKICAgICAgICBzdHJ1Y3Qg
eyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzEyOwoKICAgICAgICBz
dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzEzOwoKICAg
ICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE0
OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6
IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9tb2RlIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZl
ZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZl
ZF8yIDogMiwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kIDogMiwKICAgICAgICAg
ICAgICAgICAgICAgICAgX19yZXNlcnZlZF8zIDogMTI7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0gaWNyMTsKCiAgICAgICAgc3RydWN0IHsK
ICAgICAgICAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBo
eXNfZGVzdCA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8y
IDogNDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMyA6
IDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxfZGVzdCA6IDg7CiAg
ICAgICAgICAgICAgICB9IGRlc3Q7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNl
cnZlZF80WzNdOwogICAgICAgIH0gaWNyMjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jl
c2VydmVkXzEgOiA0LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAx
LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAzLAogICAgICAgICAgICAg
ICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJfbW9kZSA6
IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDE0OwogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF90aW1lcjsK
CiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZl
ZF8xNTsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0
b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAg
ICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZl
ZF8yIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgbWFzayA6IDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDE1OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF9wYzsKCiAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAg
ICAgICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZl
ZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAg
ICAgICAgICAgICAgICAgICAgICAgcG9sYXJpdHkgOiAxLAogICAgICAgICAgICAgICAgICAgICAg
ICByZW1vdGVfaXJyIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBf
X3Jlc2VydmVkXzIgOiAxNTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVk
XzNbM107CiAgICAgICAgfSBsdnRfbGludDA7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVs
aXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEs
CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgIHBvbGFyaXR5IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3Rl
X2lyciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgOiAxLAogICAgICAgICAg
ICAgICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZl
ZF8yIDogMTU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwog
ICAgICAgIH0gbHZ0X2xpbnQxOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRf
MSA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAgICAgICAgICAgICAgICAgICAg
ICAgIG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzMgOiAxNTsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAgICAgfSBs
dnRfZXJyb3I7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
aW5pdGlhbF9jb3VudDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJb
M107CiAgICAgICAgfSB0aW1lcl9pY3I7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjdXJyX2NvdW50OwogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IHRpbWVyX2NjcjsKCiAgICAg
ICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNjsK
CiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZl
ZF8xNzsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y
ZXNlcnZlZF8xODsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07
IH0gX19yZXNlcnZlZF8xOTsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBkaXZpc29yIDogNCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8x
IDogMjg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAg
ICAgIH0gdGltZXJfZGNyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZFs0XTsgfSBfX3Jlc2VydmVkXzIwOwoKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiMgMTkg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L2ZpeG1hcC5oIiAyCiMgNTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgpl
bnVtIGZpeGVkX2FkZHJlc3NlcyB7CgogICAgICAgIEZJWF9BUElDX0JBU0UsCgoKICAgICAgICBG
SVhfSU9fQVBJQ19CQVNFXzAsCiAgICAgICAgRklYX0lPX0FQSUNfQkFTRV9FTkQgPSBGSVhfSU9f
QVBJQ19CQVNFXzAgKyA4IC0xLAojIDY4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9maXht
YXAuaCIKICAgICAgICBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMKfTsKCmV4dGVybiB2b2lkIF9f
c2V0X2ZpeG1hcCAoZW51bSBmaXhlZF9hZGRyZXNzZXMgaWR4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwaHlzLCBwZ3Byb3RfdCBmbGFncyk7
CiMgOTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgpleHRlcm4gdm9pZCBf
X3RoaXNfZml4bWFwX2RvZXNfbm90X2V4aXN0KHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGxvbmcgZml4X3RvX3ZpcnQoY29uc3QgdW5zaWduZWQgaW50IGlkeCkKewojIDExMiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiCiAgICAgICAgaWYgKGlkeCA+PSBf
X2VuZF9vZl9maXhlZF9hZGRyZXNzZXMpCiAgICAgICAgICAgICAgICBfX3RoaXNfZml4bWFwX2Rv
ZXNfbm90X2V4aXN0KCk7CgogICAgICAgIHJldHVybiAoKDB4ZmZmZmUwMDBVTCkgLSAoKGlkeCkg
PDwgMTIpKTsKfQojIDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQojIDE5ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIKCgoKCgpleHRlcm4gcGdkX3Qgc3dh
cHBlcl9wZ19kaXJbMTAyNF07CmV4dGVybiB2b2lkIHBhZ2luZ19pbml0KHZvaWQpOwojIDY3ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25n
IHBna2Vybl9tYXNrOwojIDk1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgi
CmV4dGVybiB1bnNpZ25lZCBsb25nIGVtcHR5X3plcm9fcGFnZVsxMDI0XTsKIyAxMDkgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BndGFibGUuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIiAxCiMgMzIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL3BndGFibGUtMmxldmVsLmgiCnN0YXRpYyBpbmxpbmUgaW50IHBnZF9ub25lKHBnZF90IHBn
ZCkgeyByZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfYmFkKHBnZF90IHBnZCkgeyBy
ZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfcHJlc2VudChwZ2RfdCBwZ2QpIHsgcmV0
dXJuIDE7IH0KIyA1MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS0ybGV2ZWwu
aCIKc3RhdGljIGlubGluZSBwbWRfdCAqIHBtZF9vZmZzZXQocGdkX3QgKiBkaXIsIHVuc2lnbmVk
IGxvbmcgYWRkcmVzcykKewogICAgICAgIHJldHVybiAocG1kX3QgKikgZGlyOwp9CiMgMTEwICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIKIyAyNDQgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGcwWzEwMjRd
OwojIDI2NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIgpzdGF0aWMgaW5s
aW5lIGludCBwdGVfcmVhZChwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDAw
NDsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVfZXhlYyhwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUp
LnB0ZV9sb3cgJiAweDAwNDsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVfZGlydHkocHRlX3QgcHRl
KSB7IHJldHVybiAocHRlKS5wdGVfbG93ICYgMHgwNDA7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRl
X3lvdW5nKHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDIwOyB9CnN0YXRp
YyBpbmxpbmUgaW50IHB0ZV93cml0ZShwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cg
JiAweDAwMjsgfQoKc3RhdGljIGlubGluZSBwdGVfdCBwdGVfcmRwcm90ZWN0KHB0ZV90IHB0ZSkg
eyAocHRlKS5wdGVfbG93ICY9IH4weDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0
ZV90IHB0ZV9leHByb3RlY3QocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDA0OyBy
ZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rY2xlYW4ocHRlX3QgcHRlKSB7
IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDQwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRl
X3QgcHRlX21rb2xkKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4weDAyMDsgcmV0dXJu
IHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV93cnByb3RlY3QocHRlX3QgcHRlKSB7IChw
dGUpLnB0ZV9sb3cgJj0gfjB4MDAyOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3Qg
cHRlX21rcmVhZChwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyB8PSAweDAwNDsgcmV0dXJuIHB0
ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta2V4ZWMocHRlX3QgcHRlKSB7IChwdGUpLnB0
ZV9sb3cgfD0gMHgwMDQ7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtk
aXJ0eShwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyB8PSAweDA0MDsgcmV0dXJuIHB0ZTsgfQpz
dGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta3lvdW5nKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93
IHw9IDB4MDIwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rd3JpdGUo
cHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgfD0gMHgwMDI7IHJldHVybiBwdGU7IH0KCnN0YXRp
YyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfZGlydHkocHRlX3QgKnB0ZXApIHsgcmV0
dXJuIHRlc3RfYW5kX2NsZWFyX2JpdCg2LCBwdGVwKTsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVw
X3Rlc3RfYW5kX2NsZWFyX3lvdW5nKHB0ZV90ICpwdGVwKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVh
cl9iaXQoNSwgcHRlcCk7IH0Kc3RhdGljIGlubGluZSB2b2lkIHB0ZXBfc2V0X3dycHJvdGVjdChw
dGVfdCAqcHRlcCkgeyBjbGVhcl9iaXQoMSwgcHRlcCk7IH0Kc3RhdGljIGlubGluZSB2b2lkIHB0
ZXBfbWtkaXJ0eShwdGVfdCAqcHRlcCkgeyBzZXRfYml0KDYsIHB0ZXApOyB9CiMgMjk3ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRl
X21vZGlmeShwdGVfdCBwdGUsIHBncHJvdF90IG5ld3Byb3QpCnsKICAgICAgICBwdGUucHRlX2xv
dyAmPSAoKH4oKDFVTCA8PCAxMiktMSkpIHwgMHgwMjAgfCAweDA0MCk7CiAgICAgICAgcHRlLnB0
ZV9sb3cgfD0gKChuZXdwcm90KS5wZ3Byb3QpOwogICAgICAgIHJldHVybiBwdGU7Cn0KIyAyNiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAyNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9tbS5oIiAyCiMgNDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIKc3RydWN0
IHZtX2FyZWFfc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICogdm1fbW07CiAgICAg
ICAgdW5zaWduZWQgbG9uZyB2bV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2VuZDsK
CgogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1fbmV4dDsKCiAgICAgICAgcGdwcm90
X3Qgdm1fcGFnZV9wcm90OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdm1fZmxhZ3M7CgogICAgICAg
IHJiX25vZGVfdCB2bV9yYjsKCgoKCgoKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt
X25leHRfc2hhcmU7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1fcHByZXZfc2hh
cmU7CgoKICAgICAgICBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgKiB2bV9vcHM7CgoKICAg
ICAgICB1bnNpZ25lZCBsb25nIHZtX3Bnb2ZmOwoKICAgICAgICBzdHJ1Y3QgZmlsZSAqIHZtX2Zp
bGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9yYWVuZDsKICAgICAgICB2b2lkICogdm1fcHJp
dmF0ZV9kYXRhOwp9OwojIDExNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIgpl
eHRlcm4gcGdwcm90X3QgcHJvdGVjdGlvbl9tYXBbMTZdOwoKCgoKCgoKc3RydWN0IHZtX29wZXJh
dGlvbnNfc3RydWN0IHsKICAgICAgICB2b2lkICgqb3Blbikoc3RydWN0IHZtX2FyZWFfc3RydWN0
ICogYXJlYSk7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBh
cmVhKTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqICgqbm9wYWdlKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1
Y3QgKiBhcmVhLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB3cml0ZV9hY2Nlc3MpOwp9Owoj
IDE0NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIgp0eXBlZGVmIHN0cnVjdCBw
YWdlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgICAgc3RydWN0IGFkZHJl
c3Nfc3BhY2UgKm1hcHBpbmc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKICAgICAgICBz
dHJ1Y3QgcGFnZSAqbmV4dF9oYXNoOwoKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICB1
bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxydTsKCiAgICAg
ICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBzdHJ1Y3QgcGFnZSAqKnBwcmV2X2hh
c2g7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmZmVyczsKICAgICAgICB2b2lkICp2
aXJ0dWFsOwoKICAgICAgICBzdHJ1Y3Qgem9uZV9zdHJ1Y3QgKnpvbmU7Cn0gbWVtX21hcF90Owoj
IDI5NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIgpleHRlcm4gdm9pZCBfX3Nl
dF9wYWdlX2RpcnR5KHN0cnVjdCBwYWdlICopOwoKc3RhdGljIGlubGluZSB2b2lkIHNldF9wYWdl
X2RpcnR5KHN0cnVjdCBwYWdlICogcGFnZSkKewogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2Jp
dCg0LCAmcGFnZS0+ZmxhZ3MpKQogICAgICAgICAgICAgICAgX19zZXRfcGFnZV9kaXJ0eShwYWdl
KTsKfQojIDM2MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIgpleHRlcm4gbWVt
X21hcF90ICogbWVtX21hcDsKCgoKCgoKCmV4dGVybiBzdHJ1Y3QgcGFnZSAqIF9hbGxvY19wYWdl
cyh1bnNpZ25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiBfX2FsbG9jX3BhZ2VzKHVuc2ln
bmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCB6b25lbGlzdF90ICp6b25lbGlz
dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiBhbGxv
Y19wYWdlc19ub2RlKGludCBuaWQsIHVuc2lnbmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQgaW50
IG9yZGVyKTsKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2UgKiBhbGxvY19wYWdlcyh1bnNpZ25l
ZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcikKewoKCgogICAgICAgIGlmIChvcmRl
ciA+PSAxMCkKICAgICAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICByZXR1
cm4gX2FsbG9jX3BhZ2VzKGdmcF9tYXNrLCBvcmRlcik7Cn0KCgoKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgX19nZXRfZnJlZV9wYWdlcyh1bnNpZ25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBv
cmRlcikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBn
ZXRfemVyb2VkX3BhZ2UodW5zaWduZWQgaW50IGdmcF9tYXNrKSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CiMgNDAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiCmV4dGVy
biB2b2lkIF9fZnJlZV9wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVy
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGZyZWVfcGFnZXModW5z
aWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKTsKCgoKCmV4dGVybiB2b2lkIHNob3dfZnJlZV9hcmVhcyh2b2lkKTsKZXh0ZXJuIHZv
aWQgc2hvd19mcmVlX2FyZWFzX25vZGUocGdfZGF0YV90ICpwZ2RhdCk7CgpleHRlcm4gdm9pZCBj
bGVhcl9wYWdlX3RhYmxlcyhzdHJ1Y3QgbW1fc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIGludCk7
CgpzdHJ1Y3QgcGFnZSAqIHNobWVtX25vcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEs
IHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgaW50IG5vX3NoYXJlKTsKc3RydWN0IGZpbGUgKnNobWVt
X2ZpbGVfc2V0dXAoY2hhciAqIG5hbWUsIGxvZmZfdCBzaXplKTsKZXh0ZXJuIHZvaWQgc2htZW1f
bG9jayhzdHJ1Y3QgZmlsZSAqIGZpbGUsIGludCBsb2NrKTsKZXh0ZXJuIGludCBzaG1lbV96ZXJv
X3NldHVwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKCmV4dGVybiB2b2lkIHphcF9wYWdlX3Jh
bmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVk
IGxvbmcgc2l6ZSk7CmV4dGVybiBpbnQgY29weV9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3Qg
KmRzdCwgc3RydWN0IG1tX3N0cnVjdCAqc3JjLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7
CmV4dGVybiBpbnQgcmVtYXBfcGFnZV9yYW5nZSh1bnNpZ25lZCBsb25nIGZyb20sIHVuc2lnbmVk
IGxvbmcgdG8sIHVuc2lnbmVkIGxvbmcgc2l6ZSwgcGdwcm90X3QgcHJvdCk7CmV4dGVybiBpbnQg
emVyb21hcF9wYWdlX3JhbmdlKHVuc2lnbmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyBzaXpl
LCBwZ3Byb3RfdCBwcm90KTsKCmV4dGVybiBpbnQgdm10cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKiBp
bm9kZSwgbG9mZl90IG9mZnNldCk7CmV4dGVybiBwbWRfdCAqX19wbWRfYWxsb2Moc3RydWN0IG1t
X3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gcHRlX3QgKnB0ZV9hbGxvYyhzdHJ1Y3QgbW1fc3Ry
dWN0ICptbSwgcG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKSBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgaGFuZGxlX21tX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1
Y3QgKm1tLHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3Ms
IGludCB3cml0ZV9hY2Nlc3MpOwpleHRlcm4gaW50IG1ha2VfcGFnZXNfcHJlc2VudCh1bnNpZ25l
ZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kKTsKZXh0ZXJuIGludCBhY2Nlc3NfcHJvY2Vz
c192bShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpi
dWYsIGludCBsZW4sIGludCB3cml0ZSk7CmV4dGVybiBpbnQgcHRyYWNlX3JlYWRkYXRhKHN0cnVj
dCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIHNyYywgY2hhciAqZHN0LCBpbnQgbGVu
KTsKZXh0ZXJuIGludCBwdHJhY2Vfd3JpdGVkYXRhKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBj
aGFyICogc3JjLCB1bnNpZ25lZCBsb25nIGRzdCwgaW50IGxlbik7CmV4dGVybiBpbnQgcHRyYWNl
X2F0dGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CmV4dGVybiBpbnQgcHRyYWNlX2RldGFj
aChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcHRyYWNl
X2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKCgoKCgpzdGF0aWMgaW5saW5lIHBtZF90
ICpwbWRfYWxsb2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxv
bmcgYWRkcmVzcykKewogICAgICAgIGlmIChwZ2Rfbm9uZSgqcGdkKSkKICAgICAgICAgICAgICAg
IHJldHVybiBfX3BtZF9hbGxvYyhtbSwgcGdkLCBhZGRyZXNzKTsKICAgICAgICByZXR1cm4gcG1k
X29mZnNldChwZ2QsIGFkZHJlc3MpOwp9CgpleHRlcm4gaW50IHBndF9jYWNoZV93YXRlclsyXTsK
ZXh0ZXJuIGludCBjaGVja19wZ3RfY2FjaGUodm9pZCk7CgpleHRlcm4gdm9pZCBmcmVlX2FyZWFf
aW5pdCh1bnNpZ25lZCBsb25nICogem9uZXNfc2l6ZSk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9p
bml0X25vZGUoaW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKnBtYXAsCiAg
ICAgICAgdW5zaWduZWQgbG9uZyAqIHpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFy
dF9wYWRkciwKICAgICAgICB1bnNpZ25lZCBsb25nICp6aG9sZXNfc2l6ZSk7CmV4dGVybiB2b2lk
IG1lbV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X21lbSh2b2lkKTsKZXh0ZXJuIHZvaWQg
c2lfbWVtaW5mbyhzdHJ1Y3Qgc3lzaW5mbyAqIHZhbCk7CmV4dGVybiB2b2lkIHN3YXBpbl9yZWFk
YWhlYWQoc3dwX2VudHJ5X3QpOwoKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlIHN3YXBwZXJf
c3BhY2U7CgoKc3RhdGljIGlubGluZSBpbnQgaXNfcGFnZV9jYWNoZV9mcmVlYWJsZShzdHJ1Y3Qg
cGFnZSAqIHBhZ2UpCnsKICAgICAgICByZXR1cm4gKCgmKHBhZ2UpLT5jb3VudCktPmNvdW50ZXIp
IC0gISFwYWdlLT5idWZmZXJzID09IDE7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIGludCBleGNsdXNp
dmVfc3dhcF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQp7CiAgICAgICAgaWYgKCEoX19idWlsdGlu
X2NvbnN0YW50X3AoMCkgPyBjb25zdGFudF90ZXN0X2JpdCgoMCksKCYocGFnZSktPmZsYWdzKSkg
OiB2YXJpYWJsZV90ZXN0X2JpdCgoMCksKCYocGFnZSktPmZsYWdzKSkpKQogICAgICAgICAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgIGlmICgh
KChwYWdlKS0+bWFwcGluZyA9PSAmc3dhcHBlcl9zcGFjZSkpCiAgICAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICBpZiAoKCgmKHBhZ2UpLT5jb3VudCktPmNvdW50ZXIpIC0gISFwYWdlLT5i
dWZmZXJzICE9IDIpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICByZXR1cm4gc3dh
cF9jb3VudChwYWdlKSA9PSAxOwp9CgpleHRlcm4gdm9pZCBfX2ZyZWVfcHRlKHB0ZV90KTsKCgpl
eHRlcm4gdm9pZCBsb2NrX3ZtYV9tYXBwaW5ncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4
dGVybiB2b2lkIHVubG9ja192bWFfbWFwcGluZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpl
eHRlcm4gdm9pZCBpbnNlcnRfdm1fc3RydWN0KHN0cnVjdCBtbV9zdHJ1Y3QgKiwgc3RydWN0IHZt
X2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCBfX2luc2VydF92bV9zdHJ1Y3Qoc3RydWN0IG1t
X3N0cnVjdCAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGJ1aWxkX21t
YXBfcmIoc3RydWN0IG1tX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZXhpdF9tbWFwKHN0cnVjdCBt
bV9zdHJ1Y3QgKik7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRfdW5tYXBwZWRfYXJlYShzdHJ1
Y3QgZmlsZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRvX21tYXBfcGdvZmYoc3RydWN0
IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICAgICB1bnNpZ25lZCBsb25nIGxl
biwgdW5zaWduZWQgbG9uZyBwcm90LAogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZywgdW5zaWdu
ZWQgbG9uZyBwZ29mZik7CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1
Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgIHVuc2lnbmVkIGxvbmcg
bGVuLCB1bnNpZ25lZCBsb25nIHByb3QsCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnLCB1bnNp
Z25lZCBsb25nIG9mZnNldCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmV0ID0gLTIyOwogICAg
ICAgIGlmICgob2Zmc2V0ICsgKCgobGVuKSsoMVVMIDw8IDEyKS0xKSYofigoMVVMIDw8IDEyKS0x
KSkpKSA8IG9mZnNldCkKICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgIGlmICghKG9m
ZnNldCAmIH4ofigoMVVMIDw8IDEyKS0xKSkpKQogICAgICAgICAgICAgICAgcmV0ID0gZG9fbW1h
cF9wZ29mZihmaWxlLCBhZGRyLCBsZW4sIHByb3QsIGZsYWcsIG9mZnNldCA+PiAxMik7Cm91dDoK
ICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW50IGRvX211bm1hcChzdHJ1Y3QgbW1fc3Ry
dWN0ICosIHVuc2lnbmVkIGxvbmcsIHNpemVfdCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBkb19i
cmsodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIHZvaWQgX192
bWFfdW5saW5rKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICog
dm1hLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBwcmV2KQp7CiAgICAgICAgcHJldi0+dm1fbmV4
dCA9IHZtYS0+dm1fbmV4dDsKICAgICAgICByYl9lcmFzZSgmdm1hLT52bV9yYiwgJm1tLT5tbV9y
Yik7CiAgICAgICAgaWYgKG1tLT5tbWFwX2NhY2hlID09IHZtYSkKICAgICAgICAgICAgICAgIG1t
LT5tbWFwX2NhY2hlID0gcHJldjsKfQoKc3RhdGljIGlubGluZSBpbnQgY2FuX3ZtYV9tZXJnZShz
dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgdm1fZmxhZ3MpCnsKICAg
ICAgICBpZiAoIXZtYS0+dm1fZmlsZSAmJiB2bWEtPnZtX2ZsYWdzID09IHZtX2ZsYWdzKQogICAg
ICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJu
IDA7Cn0KCnN0cnVjdCB6b25lX3Q7CgpleHRlcm4gdm9pZCByZW1vdmVfaW5vZGVfcGFnZShzdHJ1
Y3QgcGFnZSAqKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGFnZV91bnVzZShzdHJ1Y3QgcGFnZSAq
KTsKZXh0ZXJuIHZvaWQgdHJ1bmNhdGVfaW5vZGVfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2Ug
KiwgbG9mZl90KTsKCgpleHRlcm4gaW50IGZpbGVtYXBfc3luYyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1
Y3QgKiwgdW5zaWduZWQgbG9uZywgc2l6ZV90LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gc3RydWN0
IHBhZ2UgKmZpbGVtYXBfbm9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqLCB1bnNpZ25lZCBs
b25nLCBpbnQpOwojIDU3MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIgpzdGF0
aWMgaW5saW5lIGludCBleHBhbmRfc3RhY2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCB1
bnNpZ25lZCBsb25nIGFkZHJlc3MpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGdyb3c7CgoKCgoK
CiAgICAgICAgYWRkcmVzcyAmPSAofigoMVVMIDw8IDEyKS0xKSk7CiAgICAgICAgZ3JvdyA9ICh2
bWEtPnZtX3N0YXJ0IC0gYWRkcmVzcykgPj4gMTI7CiAgICAgICAgaWYgKHZtYS0+dm1fZW5kIC0g
YWRkcmVzcyA+IGdldF9jdXJyZW50KCktPnJsaW1bM10ucmxpbV9jdXIgfHwKICAgICAgICAgICAg
KCh2bWEtPnZtX21tLT50b3RhbF92bSArIGdyb3cpIDw8IDEyKSA+IGdldF9jdXJyZW50KCktPnJs
aW1bOV0ucmxpbV9jdXIpCiAgICAgICAgICAgICAgICByZXR1cm4gLTEyOwogICAgICAgICh2b2lk
KSgmdm1hLT52bV9tbS0+cGFnZV90YWJsZV9sb2NrKTsKICAgICAgICB2bWEtPnZtX3N0YXJ0ID0g
YWRkcmVzczsKICAgICAgICB2bWEtPnZtX3Bnb2ZmIC09IGdyb3c7CiAgICAgICAgdm1hLT52bV9t
bS0+dG90YWxfdm0gKz0gZ3JvdzsKICAgICAgICBpZiAodm1hLT52bV9mbGFncyAmIDB4MDAwMDIw
MDApCiAgICAgICAgICAgICAgICB2bWEtPnZtX21tLT5sb2NrZWRfdm0gKz0gZ3JvdzsKICAgICAg
ICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgpleHRlcm4gc3RydWN0IHZt
X2FyZWFfc3RydWN0ICogZmluZF92bWEoc3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBs
b25nIGFkZHIpOwpleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICogZmluZF92bWFfcHJldihz
dHJ1Y3QgbW1fc3RydWN0ICogbW0sIHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqcHBy
ZXYpOwoKCgpzdGF0aWMgaW5saW5lIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hX2lu
dGVyc2VjdGlvbihzdHJ1Y3QgbW1fc3RydWN0ICogbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnRfYWRk
ciwgdW5zaWduZWQgbG9uZyBlbmRfYWRkcikKewogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVj
dCAqIHZtYSA9IGZpbmRfdm1hKG1tLHN0YXJ0X2FkZHIpOwoKICAgICAgICBpZiAodm1hICYmIGVu
ZF9hZGRyIDw9IHZtYS0+dm1fc3RhcnQpCiAgICAgICAgICAgICAgICB2bWEgPSAoKHZvaWQgKikw
KTsKICAgICAgICByZXR1cm4gdm1hOwp9CgpleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICpm
aW5kX2V4dGVuZF92bWEoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcik7
CiMgNTIgImFjY3QuYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2xhYi5o
IiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2xhYi5oIgp0eXBlZGVmIHN0
cnVjdCBrbWVtX2NhY2hlX3Mga21lbV9jYWNoZV90OwoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21tLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbGFi
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKIyAxNiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbGFiLmgiIDIKIyA0OCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9zbGFiLmgiCmV4dGVybiB2b2lkIGttZW1fY2FjaGVfaW5pdCh2b2lk
KTsKZXh0ZXJuIHZvaWQga21lbV9jYWNoZV9zaXplc19pbml0KHZvaWQpOwoKZXh0ZXJuIGttZW1f
Y2FjaGVfdCAqa21lbV9maW5kX2dlbmVyYWxfY2FjaGVwKHNpemVfdCwgaW50IGdmcGZsYWdzKTsK
ZXh0ZXJuIGttZW1fY2FjaGVfdCAqa21lbV9jYWNoZV9jcmVhdGUoY29uc3QgY2hhciAqLCBzaXpl
X3QsIHNpemVfdCwgdW5zaWduZWQgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAoKikodm9pZCAqLCBrbWVtX2NhY2hlX3QgKiwgdW5zaWduZWQgbG9uZyks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCopKHZvaWQgKiwg
a21lbV9jYWNoZV90ICosIHVuc2lnbmVkIGxvbmcpKTsKZXh0ZXJuIGludCBrbWVtX2NhY2hlX2Rl
c3Ryb3koa21lbV9jYWNoZV90ICopOwpleHRlcm4gaW50IGttZW1fY2FjaGVfc2hyaW5rKGttZW1f
Y2FjaGVfdCAqKTsKZXh0ZXJuIHZvaWQgKmttZW1fY2FjaGVfYWxsb2Moa21lbV9jYWNoZV90ICos
IGludCk7CmV4dGVybiB2b2lkIGttZW1fY2FjaGVfZnJlZShrbWVtX2NhY2hlX3QgKiwgdm9pZCAq
KTsKCmV4dGVybiB2b2lkICprbWFsbG9jKHNpemVfdCwgaW50KTsKZXh0ZXJuIHZvaWQga2ZyZWUo
Y29uc3Qgdm9pZCAqKTsKCmV4dGVybiBpbnQga21lbV9jYWNoZV9yZWFwKGludCkgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50IHNsYWJpbmZvX3JlYWRfcHJvYyhjaGFyICpw
YWdlLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGNvdW50LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSk7CmV4dGVybiBpbnQgc2xhYmlu
Zm9fd3JpdGVfcHJvYyhzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqYnVmZmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNvdW50LCB2b2lkICpkYXRhKTsK
CgpleHRlcm4ga21lbV9jYWNoZV90ICp2bV9hcmVhX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVf
dCAqbW1fY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpuYW1lc19jYWNoZXA7CmV4dGVybiBr
bWVtX2NhY2hlX3QgKmZpbGVzX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqZmlscF9jYWNo
ZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKmRxdW90X2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVf
dCAqYmhfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpmc19jYWNoZXA7CmV4dGVybiBrbWVt
X2NhY2hlX3QgKnNpZ2FjdF9jYWNoZXA7CiMgNTMgImFjY3QuYyIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvYWNjdC5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvYWNjdC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIg
MQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2FjY3QuaCIgMgoKCgoKCgoKdHlw
ZWRlZiBfX3UxNiBjb21wX3Q7CiMgMzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYWNj
dC5oIgpzdHJ1Y3QgYWNjdAp7CiAgICAgICAgY2hhciBhY19mbGFnOwoKCgoKICAgICAgICBfX3Ux
NiBhY191aWQ7CiAgICAgICAgX191MTYgYWNfZ2lkOwogICAgICAgIF9fdTE2IGFjX3R0eTsKICAg
ICAgICBfX3UzMiBhY19idGltZTsKICAgICAgICBjb21wX3QgYWNfdXRpbWU7CiAgICAgICAgY29t
cF90IGFjX3N0aW1lOwogICAgICAgIGNvbXBfdCBhY19ldGltZTsKICAgICAgICBjb21wX3QgYWNf
bWVtOwogICAgICAgIGNvbXBfdCBhY19pbzsKICAgICAgICBjb21wX3QgYWNfcnc7CiAgICAgICAg
Y29tcF90IGFjX21pbmZsdDsKICAgICAgICBjb21wX3QgYWNfbWFqZmx0OwogICAgICAgIGNvbXBf
dCBhY19zd2FwczsKICAgICAgICBfX3UzMiBhY19leGl0Y29kZTsKICAgICAgICBjaGFyIGFjX2Nv
bW1bMTYgKyAxXTsKICAgICAgICBjaGFyIGFjX3BhZFsxMF07Cn07CiMgNzYgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvYWNjdC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyA3NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9hY2N0Lmgi
IDIKCgpleHRlcm4gdm9pZCBhY2N0X2F1dG9fY2xvc2Uoa2Rldl90IGRldik7CmV4dGVybiBpbnQg
YWNjdF9wcm9jZXNzKGxvbmcgZXhpdGNvZGUpOwojIDU0ICJhY2N0LmMiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NtcF9sb2NrLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9zbXBfbG9jay5oIiAyCiMgNTUgImFjY3QuYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZmlsZS5oIiAxCgoKCgoKCgpleHRlcm4gdm9pZCBmcHV0KHN0cnVjdCBmaWxl
ICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogZmdl
dCh1bnNpZ25lZCBpbnQgZmQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCnN0YXRpYyBp
bmxpbmUgaW50IGdldF9jbG9zZV9vbl9leGVjKHVuc2lnbmVkIGludCBmZCkKewogICAgICAgIHN0
cnVjdCBmaWxlc19zdHJ1Y3QgKmZpbGVzID0gZ2V0X2N1cnJlbnQoKS0+ZmlsZXM7CiAgICAgICAg
aW50IHJlczsKICAgICAgICAodm9pZCkoJmZpbGVzLT5maWxlX2xvY2spOwogICAgICAgIHJlcyA9
IChfX2V4dGVuc2lvbl9fICh7IHVuc2lnbmVkIGNoYXIgX19yZXN1bHQ7IF9fYXNtX18gX192b2xh
dGlsZV9fKCJidGwgJTEsJTIgOyBzZXRiICUwIiA6Ij1xIiAoX19yZXN1bHQpIDoiciIgKChpbnQp
IChmZCkpLCAibSIgKCooX19rZXJuZWxfZmRfc2V0ICopIChmaWxlcy0+Y2xvc2Vfb25fZXhlYykp
KTsgX19yZXN1bHQ7IH0pKTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgcmV0dXJu
IHJlczsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNldF9jbG9zZV9vbl9leGVjKHVuc2lnbmVkIGlu
dCBmZCwgaW50IGZsYWcpCnsKICAgICAgICBzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmaWxlcyA9IGdl
dF9jdXJyZW50KCktPmZpbGVzOwogICAgICAgICh2b2lkKSgmZmlsZXMtPmZpbGVfbG9jayk7CiAg
ICAgICAgaWYgKGZsYWcpCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiYnRz
bCAlMSwlMCI6ICI9bSIgKCooX19rZXJuZWxfZmRfc2V0ICopIChmaWxlcy0+Y2xvc2Vfb25fZXhl
YykpOiJyIiAoKGludCkgKGZkKSkpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKCJidHJsICUxLCUwIjogIj1tIiAoKihfX2tlcm5lbF9mZF9zZXQgKikg
KGZpbGVzLT5jbG9zZV9vbl9leGVjKSk6InIiICgoaW50KSAoZmQpKSk7CiAgICAgICAgZG8geyB9
IHdoaWxlKDApOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWxlICogZmNoZWNrX2ZpbGVzKHN0
cnVjdCBmaWxlc19zdHJ1Y3QgKmZpbGVzLCB1bnNpZ25lZCBpbnQgZmQpCnsKICAgICAgICBzdHJ1
Y3QgZmlsZSAqIGZpbGUgPSAoKHZvaWQgKikwKTsKCiAgICAgICAgaWYgKGZkIDwgZmlsZXMtPm1h
eF9mZHMpCiAgICAgICAgICAgICAgICBmaWxlID0gZmlsZXMtPmZkW2ZkXTsKICAgICAgICByZXR1
cm4gZmlsZTsKfQoKCgoKc3RhdGljIGlubGluZSBzdHJ1Y3QgZmlsZSAqIGZjaGVjayh1bnNpZ25l
ZCBpbnQgZmQpCnsKICAgICAgICBzdHJ1Y3QgZmlsZSAqIGZpbGUgPSAoKHZvaWQgKikwKTsKICAg
ICAgICBzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmaWxlcyA9IGdldF9jdXJyZW50KCktPmZpbGVzOwoK
ICAgICAgICBpZiAoZmQgPCBmaWxlcy0+bWF4X2ZkcykKICAgICAgICAgICAgICAgIGZpbGUgPSBm
aWxlcy0+ZmRbZmRdOwogICAgICAgIHJldHVybiBmaWxlOwp9CgpleHRlcm4gdm9pZCBwdXRfZmls
cChzdHJ1Y3QgZmlsZSAqKTsKCmV4dGVybiBpbnQgZ2V0X3VudXNlZF9mZCh2b2lkKTsKCnN0YXRp
YyBpbmxpbmUgdm9pZCBfX3B1dF91bnVzZWRfZmQoc3RydWN0IGZpbGVzX3N0cnVjdCAqZmlsZXMs
IHVuc2lnbmVkIGludCBmZCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJidHJsICUx
LCUwIjogIj1tIiAoKihfX2tlcm5lbF9mZF9zZXQgKikgKGZpbGVzLT5vcGVuX2ZkcykpOiJyIiAo
KGludCkgKGZkKSkpOwogICAgICAgIGlmIChmZCA8IGZpbGVzLT5uZXh0X2ZkKQogICAgICAgICAg
ICAgICAgZmlsZXMtPm5leHRfZmQgPSBmZDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHB1dF91bnVz
ZWRfZmQodW5zaWduZWQgaW50IGZkKQp7CiAgICAgICAgc3RydWN0IGZpbGVzX3N0cnVjdCAqZmls
ZXMgPSBnZXRfY3VycmVudCgpLT5maWxlczsKCiAgICAgICAgKHZvaWQpKCZmaWxlcy0+ZmlsZV9s
b2NrKTsKICAgICAgICBfX3B1dF91bnVzZWRfZmQoZmlsZXMsIGZkKTsKICAgICAgICBkbyB7IH0g
d2hpbGUoMCk7Cn0KIyA4NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9maWxlLmgiCnN0
YXRpYyBpbmxpbmUgdm9pZCBmZF9pbnN0YWxsKHVuc2lnbmVkIGludCBmZCwgc3RydWN0IGZpbGUg
KiBmaWxlKQp7CiAgICAgICAgc3RydWN0IGZpbGVzX3N0cnVjdCAqZmlsZXMgPSBnZXRfY3VycmVu
dCgpLT5maWxlczsKCiAgICAgICAgKHZvaWQpKCZmaWxlcy0+ZmlsZV9sb2NrKTsKICAgICAgICBp
ZiAoZmlsZXMtPmZkW2ZkXSkKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIu
Ynl0ZSAweDBmLDB4MGIiKTsKICAgICAgICBmaWxlcy0+ZmRbZmRdID0gZmlsZTsKICAgICAgICBk
byB7IH0gd2hpbGUoMCk7Cn0KCnZvaWQgcHV0X2ZpbGVzX3N0cnVjdChzdHJ1Y3QgZmlsZXNfc3Ry
dWN0ICpmcyk7CiMgNTYgImFjY3QuYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHR5LmgiIDEKIyA1NyAiYWNjdC5jIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL3VhY2Nlc3MuaCIgMQoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
Y29uZmlnLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKIyA5ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3ByZWZldGNoLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
dWFjY2Vzcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMg
MTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIgMgojIDM1ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCmV4dGVybiBpbnQgX192ZXJpZnlfd3JpdGUo
Y29uc3Qgdm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKIyA2MiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vdWFjY2Vzcy5oIgpzdGF0aWMgaW5saW5lIGludCB2ZXJpZnlfYXJlYShpbnQgdHlwZSwg
Y29uc3Qgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiAo
KHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsg
Y21wbCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiIChh
ZGRyKSwiZyIgKChpbnQpKHNpemUpKSwiZyIgKGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2Vn
KSk7IGZsYWc7IH0pID09IDApID8gMCA6IC0xNDsKfQojIDgxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS91YWNjZXNzLmgiCnN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkKewogICAgICAg
IHVuc2lnbmVkIGxvbmcgaW5zbiwgZml4dXA7Cn07CgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2Vh
cmNoX2V4Y2VwdGlvbl90YWJsZSh1bnNpZ25lZCBsb25nKTsKIyAxMDUgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIHZvaWQgX19nZXRfdXNlcl8xKHZvaWQpOwpl
eHRlcm4gdm9pZCBfX2dldF91c2VyXzIodm9pZCk7CmV4dGVybiB2b2lkIF9fZ2V0X3VzZXJfNCh2
b2lkKTsKIyAxMjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJu
IHZvaWQgX19wdXRfdXNlcl8xKHZvaWQpOwpleHRlcm4gdm9pZCBfX3B1dF91c2VyXzIodm9pZCk7
CmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfNCh2b2lkKTsKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl84
KHZvaWQpOwoKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl9iYWQodm9pZCk7CiMgMTg4ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0cnVjdCBfX2xhcmdlX3N0cnVjdCB7IHVu
c2lnbmVkIGxvbmcgYnVmWzEwMF07IH07CiMgMjIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS91YWNjZXNzLmgiCmV4dGVybiBsb25nIF9fZ2V0X3VzZXJfYmFkKHZvaWQpOwojIDMwOCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IGxvbmcKX19nZW5lcmljX2NvcHlfZnJvbV91c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZv
aWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7
IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIg
IjE6CXJlcDsgbW92c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOgls
ZWEgMCglMywlMCw0KSwlMFxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhv
cmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwg
JTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFc
IlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnBy
ZXZpb3VzIiA6ICI9JmMiKG4pLCAiPSZEIiAoX19kMCksICI9JlMiIChfX2QxKSA6ICJyIihuICYg
MyksICIwIihuIC8gNCksICIxIih0byksICIyIihmcm9tKSA6ICJtZW1vcnkiKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgcmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2dl
bmVyaWNfY29weV90b191c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVu
c2lnbmVkIGxvbmcgbikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9fYXNtX18gX192
b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIgIjE6CXJlcDsgbW92
c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglsZWEgMCglMywlMCw0
KSwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwi
YVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDJiXG4iICIu
cHJldmlvdXMiIDogIj0mYyIobiksICI9JkQiIChfX2QwKSwgIj0mUyIgKF9fZDEpIDogInIiKG4g
JiAzKSwgIjAiKG4gLyA0KSwgIjEiKHRvKSwgIjIiKGZyb20pIDogIm1lbW9yeSIpOyB9IHdoaWxl
ICgwKTsKICAgICAgICByZXR1cm4gbjsKfQojIDU0MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vdWFjY2Vzcy5oIgp1bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIodm9pZCAq
LCBjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwp1bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19j
b3B5X2Zyb21fdXNlcih2b2lkICosIGNvbnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CgpzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X3RvX3VzZXIodm9pZCAqdG8s
IGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIHByZWZldGNoKGZy
b20pOwogICAgICAgIGlmICgoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUz
LCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwg
Ij1yIiAoc3VtKSA6IjEiICh0byksImciICgoaW50KShuKSksImciIChnZXRfY3VycmVudCgpLT5h
ZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSkKICAgICAgICAgICAgICAgIGRvIHsgaW50
IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxl
X18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAi
MjoJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhf
dGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJiXG4iICIucHJldmlvdXMi
IDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0
byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZp
eHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUwXG4iICI0OglpbmNsICUwXG4iICIJam1wIDJiXG4i
ICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxu
IiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4p
LCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4v
NCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJ
cmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwi
XG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWFkZGwgJDIsJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2
aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxv
bmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMi
IChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJt
ZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1v
dnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4iICIuc2VjdGlvbiAuZml4dXAs
XCJheFwiXG4iICI0OglzaGwgJDIsJTBcbiIgIjU6CWFkZGwgJDIsJTBcbiIgIjY6CWluY2wgJTBc
biIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxu
IiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIgIgkubG9uZyAxYiw1YlxuIiAiCS5sb25n
IDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19k
MSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgfSB9
IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBs
b25nCl9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20s
IHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIGlmICgoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1
bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIg
OiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiIChmcm9tKSwiZyIgKChpbnQpKG4pKSwiZyIg
KGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZsYWc7IH0pID09IDApKQogICAgICAg
ICAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0OiBf
X2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAu
Zml4dXAsXCJheFwiXG4iICIyOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAl
JWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxu
IiAiCXNobCAkMiwlMFxuIiAiCWptcCAxYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4
X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3Vz
IiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIo
dG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0
aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5m
aXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUl
ZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAi
CXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICI0Oglw
dXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVl
YXhcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9f
ZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcg
MWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2Qx
KSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNl
IDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIg
IjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hs
ICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xu
IiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAkMiwl
MFxuIiAiCWptcCAyYlxuIiAiNDoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4i
ICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAi
LnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIg
IgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwg
Ij0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQp
IDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJl
cDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5m
aXh1cCxcImF4XCJcbiIgIjQ6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUl
ZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3Bs
ICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWFkZGwgJDMsJTBcbiIgIglq
bXAgMmJcbiIgIjU6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3N3
XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxu
IiAiNjoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglw
b3BsICUlZWF4XG4iICIJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2Vj
dGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAi
CS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAi
PSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkg
OiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
bikpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCh0bykpLCgoMHgwMTAxMDEwMVVM
Kih1bnNpZ25lZCBjaGFyKSgwKSkpLCgobikpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCh0bykp
LCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgobikpKSkgOiAoX19idWlsdGlu
X2NvbnN0YW50X3AoKG4pKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgodG8pKSksKCgoMCkpKSwoKChu
KSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCh0bykpLCgoMCkpLCgobikpKSkpOwogICAgICAgIHJl
dHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X3Rv
X3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBu
KQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlv
biAuZml4dXAsXCJheFwiXG4iICIyOglzaGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91
c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcg
MGIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2Qx
KSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNl
IDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIg
IjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWlu
Y2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxc
ImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAi
LnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZy
b20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21f
XyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5z
ZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXNobCAkMiwlMFxuIiAiNDoJYWRkbCAkMiwlMFxu
IiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4i
ICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlv
dXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIy
Iih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpc
biIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXNobCAkMiwlMFxuIiAiNToJYWRkbCAk
MiwlMFxuIiAiNjoJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlv
biBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5s
b25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZT
IiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAi
bWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcl9ub2NoZWNr
KHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBk
byB7IGludCBfX2QwLCBfX2QxOyBzd2l0Y2ggKG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192
b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4
XCJcbiIgIjI6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4
XG4iICIJcmVwOyBzdG9zbFxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQy
LCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJh
XCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJiXG4iICIucHJldmlvdXMiIDogIj1jIihu
KSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihu
LzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6
CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhc
IlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc
biIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxu
IiAiCXNobCAkMiwlMFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4
XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWlu
Y2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxc
ImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAi
LnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZy
b20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21f
XyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5z
ZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIg
Igl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJcG9wbCAl
JWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglhZGRsICQyLCUwXG4iICIJam1w
IDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zd1xu
IiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNc
biIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBi
LDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19k
MCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5
Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxu
IiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4iICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhc
IlxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc
biIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIg
Iglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAi
NToJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglzdG9z
YlxuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQzLCUwXG4iICIJam1wIDJiXG4iICI2OglwdXNo
bCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhc
biIgIglpbmNsICUwXG4iICIJam1wIDNiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhf
dGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIs
NWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2Qw
KSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnki
KTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG47Cn0KIyA1OTkgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKbG9uZyBzdHJuY3B5X2Zyb21fdXNlcihj
aGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgbG9uZyBjb3VudCk7CmxvbmcgX19zdHJuY3B5X2Zy
b21fdXNlcihjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgbG9uZyBjb3VudCk7Cgpsb25nIHN0
cm5sZW5fdXNlcihjb25zdCBjaGFyICpzdHIsIGxvbmcgbik7CnVuc2lnbmVkIGxvbmcgY2xlYXJf
dXNlcih2b2lkICptZW0sIHVuc2lnbmVkIGxvbmcgbGVuKTsKdW5zaWduZWQgbG9uZyBfX2NsZWFy
X3VzZXIodm9pZCAqbWVtLCB1bnNpZ25lZCBsb25nIGxlbik7CiMgNTkgImFjY3QuYyIgMgojIDY3
ICJhY2N0LmMiCmludCBhY2N0X3Bhcm1bM10gPSB7NCwgMiwgMzB9OwojIDc2ICJhY2N0LmMiCnN0
YXRpYyB2b2xhdGlsZSBpbnQgYWNjdF9hY3RpdmU7CnN0YXRpYyB2b2xhdGlsZSBpbnQgYWNjdF9u
ZWVkY2hlY2s7CnN0YXRpYyBzdHJ1Y3QgZmlsZSAqYWNjdF9maWxlOwpzdGF0aWMgc3RydWN0IHRp
bWVyX2xpc3QgYWNjdF90aW1lcjsKc3RhdGljIHZvaWQgZG9fYWNjdF9wcm9jZXNzKGxvbmcsIHN0
cnVjdCBmaWxlICopOwoKCgoKc3RhdGljIHZvaWQgYWNjdF90aW1lb3V0KHVuc2lnbmVkIGxvbmcg
dW51c2VkKQp7CiAgICAgICAgYWNjdF9uZWVkY2hlY2sgPSAxOwp9CgoKCgpzdGF0aWMgaW50IGNo
ZWNrX2ZyZWVfc3BhY2Uoc3RydWN0IGZpbGUgKmZpbGUpCnsKICAgICAgICBzdHJ1Y3Qgc3RhdGZz
IHNidWY7CiAgICAgICAgaW50IHJlczsKICAgICAgICBpbnQgYWN0OwoKICAgICAgICBkbyB7IH0g
d2hpbGUoMCk7CiAgICAgICAgcmVzID0gYWNjdF9hY3RpdmU7CiAgICAgICAgaWYgKCFmaWxlIHx8
ICFhY2N0X25lZWRjaGVjaykKICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgIGRvIHsg
fSB3aGlsZSgwKTsKCgogICAgICAgIGlmICh2ZnNfc3RhdGZzKGZpbGUtPmZfZGVudHJ5LT5kX2lu
b2RlLT5pX3NiLCAmc2J1ZikpCiAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwoKICAgICAgICBp
ZiAoc2J1Zi5mX2JhdmFpbCA8PSAoYWNjdF9wYXJtWzFdKSAqIHNidWYuZl9ibG9ja3MgLyAxMDAp
CiAgICAgICAgICAgICAgICBhY3QgPSAtMTsKICAgICAgICBlbHNlIGlmIChzYnVmLmZfYmF2YWls
ID49IChhY2N0X3Bhcm1bMF0pICogc2J1Zi5mX2Jsb2NrcyAvIDEwMCkKICAgICAgICAgICAgICAg
IGFjdCA9IDE7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgYWN0ID0gMDsKCgoKCgogICAg
ICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBpZiAoZmlsZSAhPSBhY2N0X2ZpbGUpIHsKICAg
ICAgICAgICAgICAgIGlmIChhY3QpCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IGFjdD4w
OwogICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoYWNjdF9h
Y3RpdmUpIHsKICAgICAgICAgICAgICAgIGlmIChhY3QgPCAwKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGFjY3RfYWN0aXZlID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKCI8
Nj4iICJQcm9jZXNzIGFjY291bnRpbmcgcGF1c2VkXG4iKTsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGFjdCA+IDApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgYWNjdF9hY3RpdmUgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBwcmlu
dGsoIjw2PiIgIlByb2Nlc3MgYWNjb3VudGluZyByZXN1bWVkXG4iKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICB9CgogICAgICAgIGRlbF90aW1lcigmYWNjdF90aW1lcik7CiAgICAgICAgYWNj
dF9uZWVkY2hlY2sgPSAwOwogICAgICAgIGFjY3RfdGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyAo
YWNjdF9wYXJtWzJdKSoxMDA7CiAgICAgICAgYWRkX3RpbWVyKCZhY2N0X3RpbWVyKTsKICAgICAg
ICByZXMgPSBhY2N0X2FjdGl2ZTsKb3V0OgogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAg
ICByZXR1cm4gcmVzOwp9CgoKCgoKCgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcg
c3lzX2FjY3QoY29uc3QgY2hhciAqbmFtZSkKewogICAgICAgIHN0cnVjdCBmaWxlICpmaWxlID0g
KCh2b2lkICopMCksICpvbGRfYWNjdCA9ICgodm9pZCAqKTApOwogICAgICAgIGNoYXIgKnRtcDsK
ICAgICAgICBpbnQgZXJyb3I7CgogICAgICAgIGlmICghY2FwYWJsZSgyMCkpCiAgICAgICAgICAg
ICAgICByZXR1cm4gLTE7CgogICAgICAgIGlmIChuYW1lKSB7CiAgICAgICAgICAgICAgICB0bXAg
PSBnZXRuYW1lKG5hbWUpOwogICAgICAgICAgICAgICAgZXJyb3IgPSBQVFJfRVJSKHRtcCk7CiAg
ICAgICAgICAgICAgICBpZiAoSVNfRVJSKHRtcCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gb3V0OwoKICAgICAgICAgICAgICAgIGZpbGUgPSBmaWxwX29wZW4odG1wLCAwMXwwMjAwMCwg
MCk7CiAgICAgICAgICAgICAgICBrbWVtX2NhY2hlX2ZyZWUobmFtZXNfY2FjaGVwLCAodm9pZCAq
KSh0bXApKTsKICAgICAgICAgICAgICAgIGlmIChJU19FUlIoZmlsZSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3IgPSBQVFJfRVJSKGZpbGUpOwogICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIG91dDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVycm9yID0gLTEz
OwogICAgICAgICAgICAgICAgaWYgKCEoKChmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV9tb2Rl
KSAmIDAwMTcwMDAwKSA9PSAwMTAwMDAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBv
dXRfZXJyOwoKICAgICAgICAgICAgICAgIGVycm9yID0gLTU7CiAgICAgICAgICAgICAgICBpZiAo
IWZpbGUtPmZfb3AtPndyaXRlKQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF9lcnI7
CiAgICAgICAgfQoKICAgICAgICBlcnJvciA9IDA7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwog
ICAgICAgIGlmIChhY2N0X2ZpbGUpIHsKICAgICAgICAgICAgICAgIG9sZF9hY2N0ID0gYWNjdF9m
aWxlOwogICAgICAgICAgICAgICAgZGVsX3RpbWVyKCZhY2N0X3RpbWVyKTsKICAgICAgICAgICAg
ICAgIGFjY3RfYWN0aXZlID0gMDsKICAgICAgICAgICAgICAgIGFjY3RfbmVlZGNoZWNrID0gMDsK
ICAgICAgICAgICAgICAgIGFjY3RfZmlsZSA9ICgodm9pZCAqKTApOwogICAgICAgIH0KICAgICAg
ICBpZiAobmFtZSkgewogICAgICAgICAgICAgICAgYWNjdF9maWxlID0gZmlsZTsKICAgICAgICAg
ICAgICAgIGFjY3RfbmVlZGNoZWNrID0gMDsKICAgICAgICAgICAgICAgIGFjY3RfYWN0aXZlID0g
MTsKCiAgICAgICAgICAgICAgICBpbml0X3RpbWVyKCZhY2N0X3RpbWVyKTsKICAgICAgICAgICAg
ICAgIGFjY3RfdGltZXIuZnVuY3Rpb24gPSBhY2N0X3RpbWVvdXQ7CiAgICAgICAgICAgICAgICBh
Y2N0X3RpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgKGFjY3RfcGFybVsyXSkqMTAwOwogICAgICAg
ICAgICAgICAgYWRkX3RpbWVyKCZhY2N0X3RpbWVyKTsKICAgICAgICB9CiAgICAgICAgZG8geyB9
IHdoaWxlKDApOwogICAgICAgIGlmIChvbGRfYWNjdCkgewogICAgICAgICAgICAgICAgZG9fYWNj
dF9wcm9jZXNzKDAsb2xkX2FjY3QpOwogICAgICAgICAgICAgICAgZmlscF9jbG9zZShvbGRfYWNj
dCwgKCh2b2lkICopMCkpOwogICAgICAgIH0Kb3V0OgogICAgICAgIHJldHVybiBlcnJvcjsKb3V0
X2VycjoKICAgICAgICBmaWxwX2Nsb3NlKGZpbGUsICgodm9pZCAqKTApKTsKICAgICAgICBnb3Rv
IG91dDsKfQoKdm9pZCBhY2N0X2F1dG9fY2xvc2Uoa2Rldl90IGRldikKewogICAgICAgIGRvIHsg
fSB3aGlsZSgwKTsKICAgICAgICBpZiAoYWNjdF9maWxlICYmIGFjY3RfZmlsZS0+Zl9kZW50cnkt
PmRfaW5vZGUtPmlfZGV2ID09IGRldikKICAgICAgICAgICAgICAgIHN5c19hY2N0KCgodm9pZCAq
KTApKTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7Cn0KIyAyMzYgImFjY3QuYyIKc3RhdGljIGNv
bXBfdCBlbmNvZGVfY29tcF90KHVuc2lnbmVkIGxvbmcgdmFsdWUpCnsKICAgICAgICBpbnQgZXhw
LCBybmQ7CgogICAgICAgIGV4cCA9IHJuZCA9IDA7CiAgICAgICAgd2hpbGUgKHZhbHVlID4gKCgx
IDw8IDEzKSAtIDEpKSB7CiAgICAgICAgICAgICAgICBybmQgPSB2YWx1ZSAmICgxIDw8ICgzIC0g
MSkpOwogICAgICAgICAgICAgICAgdmFsdWUgPj49IDM7CiAgICAgICAgICAgICAgICBleHArKzsK
ICAgICAgICB9CgoKCgogICAgICAgIGlmIChybmQgJiYgKCsrdmFsdWUgPiAoKDEgPDwgMTMpIC0g
MSkpKSB7CiAgICAgICAgICAgICAgICB2YWx1ZSA+Pj0gMzsKICAgICAgICAgICAgICAgIGV4cCsr
OwogICAgICAgIH0KCgoKCiAgICAgICAgZXhwIDw8PSAxMzsKICAgICAgICBleHAgKz0gdmFsdWU7
CiAgICAgICAgcmV0dXJuIGV4cDsKfQojIDI3NSAiYWNjdC5jIgpzdGF0aWMgdm9pZCBkb19hY2N0
X3Byb2Nlc3MobG9uZyBleGl0Y29kZSwgc3RydWN0IGZpbGUgKmZpbGUpCnsKICAgICAgICBzdHJ1
Y3QgYWNjdCBhYzsKICAgICAgICBtbV9zZWdtZW50X3QgZnM7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyB2c2l6ZTsKCgoKCgogICAgICAgIGlmICghY2hlY2tfZnJlZV9zcGFjZShmaWxlKSkKICAgICAg
ICAgICAgICAgIHJldHVybjsKCgoKCgogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHN0cnVjdCBhY2N0KSkpID8gX19jb25zdGFu
dF9jX2FuZF9jb3VudF9tZW1zZXQoKCgoY2FkZHJfdCkmYWMpKSwoKDB4MDEwMTAxMDFVTCoodW5z
aWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihzdHJ1Y3QgYWNjdCkpKSkgOiBfX2NvbnN0YW50X2Nf
bWVtc2V0KCgoKGNhZGRyX3QpJmFjKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDAp
KSksKChzaXplb2Yoc3RydWN0IGFjY3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6
ZW9mKHN0cnVjdCBhY2N0KSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgoY2FkZHJfdCkmYWMpKSks
KCgoMCkpKSwoKChzaXplb2Yoc3RydWN0IGFjY3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgo
Y2FkZHJfdCkmYWMpKSwoKDApKSwoKHNpemVvZihzdHJ1Y3QgYWNjdCkpKSkpKTsKCiAgICAgICAg
c3RybmNweShhYy5hY19jb21tLCBnZXRfY3VycmVudCgpLT5jb21tLCAxNik7CiAgICAgICAgYWMu
YWNfY29tbVsxNiAtIDFdID0gJ1wwJzsKCiAgICAgICAgYWMuYWNfYnRpbWUgPSAoKGdldF9jdXJy
ZW50KCktPnN0YXJ0X3RpbWUpIC8gMTAwKSArICh4dGltZS50dl9zZWMgLSAoamlmZmllcyAvIDEw
MCkpOwogICAgICAgIGFjLmFjX2V0aW1lID0gZW5jb2RlX2NvbXBfdChqaWZmaWVzIC0gZ2V0X2N1
cnJlbnQoKS0+c3RhcnRfdGltZSk7CiAgICAgICAgYWMuYWNfdXRpbWUgPSBlbmNvZGVfY29tcF90
KGdldF9jdXJyZW50KCktPnRpbWVzLnRtc191dGltZSk7CiAgICAgICAgYWMuYWNfc3RpbWUgPSBl
bmNvZGVfY29tcF90KGdldF9jdXJyZW50KCktPnRpbWVzLnRtc19zdGltZSk7CiAgICAgICAgYWMu
YWNfdWlkID0gZ2V0X2N1cnJlbnQoKS0+dWlkOwogICAgICAgIGFjLmFjX2dpZCA9IGdldF9jdXJy
ZW50KCktPmdpZDsKICAgICAgICBhYy5hY190dHkgPSAoZ2V0X2N1cnJlbnQoKS0+dHR5KSA/IGtk
ZXZfdF90b19ucihnZXRfY3VycmVudCgpLT50dHktPmRldmljZSkgOiAwOwoKICAgICAgICBhYy5h
Y19mbGFnID0gMDsKICAgICAgICBpZiAoZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgJiAweDAwMDAwMDQw
KQogICAgICAgICAgICAgICAgYWMuYWNfZmxhZyB8PSAweDAxOwogICAgICAgIGlmIChnZXRfY3Vy
cmVudCgpLT5mbGFncyAmIDB4MDAwMDAxMDApCiAgICAgICAgICAgICAgICBhYy5hY19mbGFnIHw9
IDB4MDI7CiAgICAgICAgaWYgKGdldF9jdXJyZW50KCktPmZsYWdzICYgMHgwMDAwMDIwMCkKICAg
ICAgICAgICAgICAgIGFjLmFjX2ZsYWcgfD0gMHgwODsKICAgICAgICBpZiAoZ2V0X2N1cnJlbnQo
KS0+ZmxhZ3MgJiAweDAwMDAwNDAwKQogICAgICAgICAgICAgICAgYWMuYWNfZmxhZyB8PSAweDEw
OwoKICAgICAgICB2c2l6ZSA9IDA7CiAgICAgICAgaWYgKGdldF9jdXJyZW50KCktPm1tKSB7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKICAgICAgICAgICAgICAg
IGRvd25fcmVhZCgmZ2V0X2N1cnJlbnQoKS0+bW0tPm1tYXBfc2VtKTsKICAgICAgICAgICAgICAg
IHZtYSA9IGdldF9jdXJyZW50KCktPm1tLT5tbWFwOwogICAgICAgICAgICAgICAgd2hpbGUgKHZt
YSkgewogICAgICAgICAgICAgICAgICAgICAgICB2c2l6ZSArPSB2bWEtPnZtX2VuZCAtIHZtYS0+
dm1fc3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZtYSA9IHZtYS0+dm1fbmV4dDsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVwX3JlYWQoJmdldF9jdXJyZW50KCktPm1t
LT5tbWFwX3NlbSk7CiAgICAgICAgfQogICAgICAgIHZzaXplID0gdnNpemUgLyAxMDI0OwogICAg
ICAgIGFjLmFjX21lbSA9IGVuY29kZV9jb21wX3QodnNpemUpOwogICAgICAgIGFjLmFjX2lvID0g
ZW5jb2RlX2NvbXBfdCgwICk7CiAgICAgICAgYWMuYWNfcncgPSBlbmNvZGVfY29tcF90KGFjLmFj
X2lvIC8gMTAyNCk7CiAgICAgICAgYWMuYWNfbWluZmx0ID0gZW5jb2RlX2NvbXBfdChnZXRfY3Vy
cmVudCgpLT5taW5fZmx0KTsKICAgICAgICBhYy5hY19tYWpmbHQgPSBlbmNvZGVfY29tcF90KGdl
dF9jdXJyZW50KCktPm1hal9mbHQpOwogICAgICAgIGFjLmFjX3N3YXBzID0gZW5jb2RlX2NvbXBf
dChnZXRfY3VycmVudCgpLT5uc3dhcCk7CiAgICAgICAgYWMuYWNfZXhpdGNvZGUgPSBleGl0Y29k
ZTsKCgoKCgogICAgICAgIGZzID0gKGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQpOwogICAgICAg
IChnZXRfY3VycmVudCgpLT5hZGRyX2xpbWl0ID0gKCgobW1fc2VnbWVudF90KSB7ICgweEZGRkZG
RkZGKSB9KSkpOwogICAgICAgIGZpbGUtPmZfb3AtPndyaXRlKGZpbGUsIChjaGFyICopJmFjLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBhY2N0KSwgJmZpbGUt
PmZfcG9zKTsKICAgICAgICAoZ2V0X2N1cnJlbnQoKS0+YWRkcl9saW1pdCA9IChmcykpOwp9CgoK
CgppbnQgYWNjdF9wcm9jZXNzKGxvbmcgZXhpdGNvZGUpCnsKICAgICAgICBzdHJ1Y3QgZmlsZSAq
ZmlsZSA9ICgodm9pZCAqKTApOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBpZiAo
YWNjdF9maWxlKSB7CiAgICAgICAgICAgICAgICBmaWxlID0gYWNjdF9maWxlOwogICAgICAgICAg
ICAgICAgYXRvbWljX2luYygmKGZpbGUpLT5mX2NvdW50KTsKICAgICAgICAgICAgICAgIGRvIHsg
fSB3aGlsZSgwKTsKICAgICAgICAgICAgICAgIGRvX2FjY3RfcHJvY2VzcyhleGl0Y29kZSwgYWNj
dF9maWxlKTsKICAgICAgICAgICAgICAgIGZwdXQoZmlsZSk7CiAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgcmV0dXJuIDA7Cn0K


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

end of thread, other threads:[~2001-10-13 20:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-13 20:28 c/4528: gcc produces an "Unrecognizable insn" internal error when compling the Linux kernel rodrigc
  -- strict thread matches above, loose matches on Subject: below --
2001-10-10 18:26 sevillar

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