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


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

c/2880: compilation of a python wrapper gives insn failure on macosx



>Number:         2880
>Category:       c
>Synopsis:       compilation of a python wrapper gives insn failure on macosx
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Sun May 20 04:36:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     John Cary
>Release:        gcc3.1 and gcc2.95: Apple Computer, Inc. version gcc-3, based on gcc version 2.95.2 19991024 (release), Configured with: ../gcc-3_0-branch/configure --prefix=/usr/local/gcc3.0
>Organization:
>Environment:
Darwin cubimac 1.3.2 Darwin Kernel Version 1.3.2: Fri Apr 27 22:50:58 PDT 2001; root:xnu/xnu-124.7.obj~1/RELEASE_PPC  Power Macintosh powerpc
>Description:
Compilation of some C python wrapper code fails 
due to:

glf23fmodule.c:154: Unrecognizable insn:
(insn 17 16 19 (set (reg/f:SI 82)
        (symbol_ref:SI ("*LC0"))) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:SI ("*LC0"))
        (nil)))
>How-To-Repeat:

>Fix:

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

AA5nbGYyM2Ztb2R1bGUuaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVyeAAAAALctA8y3LQP/AAAAbUJJTgAAAAAAAAAA
AAAAAAAAAACCgQGFAAAjIDEgImdsZjIzZm1vZHVsZS5jIgojIDEgIi91c3IvbG9jYWwvcHl0aG9u
L2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAxCiMgMjMgIi91c3IvbG9jYWwvcHl0aG9uL2lu
Y2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIgojIDEgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUv
cHl0aG9uMi4xL3BhdGNobGV2ZWwuaCIgMQojIDI0ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRl
L3B5dGhvbjIuMS9QeXRob24uaCIgMgojIDEgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0
aG9uMi4xL2NvbmZpZy5oIiAxCiMgMjUgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9u
Mi4xL1B5dGhvbi5oIiAyCgoKIyAxICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9wb3dl
cnBjLWFwcGxlLWRhcndpbjEuMy4yLzMuMS9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAxMSAiL3Vz
ci9sb2NhbC9nY2MzLjAvbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW4xLjMuMi8zLjEv
aW5jbHVkZS9saW1pdHMuaCIgMwojIDEgIi91c3IvbG9jYWwvZ2NjMy4wL2xpYi9nY2MtbGliL3Bv
d2VycGMtYXBwbGUtZGFyd2luMS4zLjIvMy4xL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEgMwoKCgoK
CgojIDEgIi91c3IvbG9jYWwvZ2NjMy4wL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2lu
MS4zLjIvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDEzMCAiL3Vzci9sb2NhbC9nY2MzLjAv
bGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW4xLjMuMi8zLjEvaW5jbHVkZS9saW1pdHMu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgNjIgIi91c3IvaW5jbHVkZS9s
aW1pdHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2xpbWl0cy5oIiAxIDMKCgojIDEg
Ii91c3IvaW5jbHVkZS9wcGMvbGltaXRzLmgiIDEgMwojIDQgIi91c3IvaW5jbHVkZS9tYWNoaW5l
L2xpbWl0cy5oIiAyIDMKIyA2MyAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAxICIvdXNy
L2luY2x1ZGUvc3lzL3N5c2xpbWl0cy5oIiAxIDMKIyA2NCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5o
IiAyIDMKIyAxMzEgIi91c3IvbG9jYWwvZ2NjMy4wL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUt
ZGFyd2luMS4zLjIvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDggIi91c3IvbG9jYWwvZ2Nj
My4wL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luMS4zLjIvMy4xL2luY2x1ZGUvc3lz
bGltaXRzLmgiIDIgMwojIDEyICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9wb3dlcnBj
LWFwcGxlLWRhcndpbjEuMy4yLzMuMS9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAyOCAiL3Vzci9s
b2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvUHl0aG9uLmgiIDIKIyA0MiAiL3Vzci9sb2Nh
bC9weXRob24vaW5jbHVkZS9weXRob24yLjEvUHl0aG9uLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDEgMwojIDY0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvbG9jYWwv
Z2NjMy4wL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luMS4zLjIvMy4xL2luY2x1ZGUv
c3lzL3R5cGVzLmgiIDEgMwojIDc2ICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9wb3dl
cnBjLWFwcGxlLWRhcndpbjEuMy4yLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIyA3NyAiL3Vzci9sb2NhbC9nY2MzLjAvbGliL2dj
Yy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW4xLjMuMi8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS90eXBlcy5oIiAxIDMKIyAzMCAiL3Vzci9p
bmNsdWRlL21hY2hpbmUvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9wcGMvdHlwZXMuaCIg
MSAzCiMgNjQgIi91c3IvaW5jbHVkZS9wcGMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9z
eXMvY2RlZnMuaCIgMSAzCiMgNjUgIi91c3IvaW5jbHVkZS9wcGMvdHlwZXMuaCIgMiAzCgoKCgp0
eXBlZGVmIHNpZ25lZCBjaGFyIGludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfaW50OF90
Owp0eXBlZGVmIHNob3J0IGludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9pbnQxNl90
Owp0eXBlZGVmIGludCBpbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3Q7CnR5
cGVkZWYgbG9uZyBsb25nIGludDY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVfaW50
NjRfdDsKCnR5cGVkZWYgaW50MzJfdCByZWdpc3Rlcl90OwoKCnR5cGVkZWYgaW50ICppbnRwdHJf
dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nICp1aW50cHRyX3Q7CiMgMzEgIi91c3IvaW5jbHVkZS9t
YWNoaW5lL3R5cGVzLmgiIDIgMwojIDgwICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9w
b3dlcnBjLWFwcGxlLWRhcndpbjEuMy4yLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCiMg
MSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvYW5zaS5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL21h
Y2hpbmUvYW5zaS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MzLjAvbGliL2djYy1saWIvcG93ZXJw
Yy1hcHBsZS1kYXJ3aW4xLjMuMi8zLjEvaW5jbHVkZS9wcGMvYW5zaS5oIiAxIDMKIyAzNSAiL3Vz
ci9pbmNsdWRlL21hY2hpbmUvYW5zaS5oIiAyIDMKIyA4MiAiL3Vzci9sb2NhbC9nY2MzLjAvbGli
L2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW4xLjMuMi8zLjEvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvZW5kaWFuLmgiIDEgMwojIDMwICIvdXNy
L2luY2x1ZGUvbWFjaGluZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9wcGMvZW5kaWFu
LmgiIDEgMwojIDc4ICIvdXNyL2luY2x1ZGUvcHBjL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL3N5cy9jZGVmcy5oIiAxIDMKIyA3OSAiL3Vzci9pbmNsdWRlL3BwYy9lbmRpYW4uaCIgMiAz
CgoKCnVuc2lnbmVkIGxvbmcgaHRvbmwgKHVuc2lnbmVkIGxvbmcpOwp1bnNpZ25lZCBzaG9ydCBo
dG9ucyAodW5zaWduZWQgc2hvcnQpOwp1bnNpZ25lZCBsb25nIG50b2hsICh1bnNpZ25lZCBsb25n
KTsKdW5zaWduZWQgc2hvcnQgbnRvaHMgKHVuc2lnbmVkIHNob3J0KTsKIyAzMSAiL3Vzci9pbmNs
dWRlL21hY2hpbmUvZW5kaWFuLmgiIDIgMwojIDgzICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2Nj
LWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjEuMy4yLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAy
IDMKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IHVfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgdV9sb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdWludDsKCgp0eXBlZGVmIHVfaW50NjRfdCB1X3F1YWRfdDsKdHlwZWRlZiBpbnQ2NF90
IHF1YWRfdDsKdHlwZWRlZiBxdWFkX3QgKiBxYWRkcl90OwoKdHlwZWRlZiBjaGFyICogY2FkZHJf
dDsKdHlwZWRlZiBpbnQzMl90IGRhZGRyX3Q7CnR5cGVkZWYgaW50MzJfdCBkZXZfdDsKdHlwZWRl
ZiB1X2ludDMyX3QgZml4cHRfdDsKdHlwZWRlZiB1X2ludDMyX3QgZ2lkX3Q7CnR5cGVkZWYgdV9p
bnQzMl90IGlub190Owp0eXBlZGVmIGxvbmcga2V5X3Q7CnR5cGVkZWYgdV9pbnQxNl90IG1vZGVf
dDsKdHlwZWRlZiB1X2ludDE2X3QgbmxpbmtfdDsKdHlwZWRlZiBxdWFkX3Qgb2ZmX3Q7CnR5cGVk
ZWYgaW50MzJfdCBwaWRfdDsKdHlwZWRlZiBxdWFkX3QgcmxpbV90Owp0eXBlZGVmIGludDMyX3Qg
c2Vnc3pfdDsKdHlwZWRlZiBpbnQzMl90IHN3YmxrX3Q7CnR5cGVkZWYgdV9pbnQzMl90IHVpZF90
OwojIDEyMyAiL3Vzci9sb2NhbC9nY2MzLjAvbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3
aW4xLjMuMi8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
Y2xvY2tfdDsKCgoKCgoKdHlwZWRlZiBsb25nIHVuc2lnbmVkIGludCBzaXplX3Q7CgoKCgoKCnR5
cGVkZWYgaW50IHNzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgdGltZV90OwojIDE1NiAiL3Vzci9s
b2NhbC9nY2MzLjAvbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW4xLjMuMi8zLjEvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludDMyX3QgZmRfbWFzazsKCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgZmRfc2V0IHsKICAgICAgICBmZF9tYXNrIGZkc19iaXRzWygoKDI1NikgKyAoKChz
aXplb2YoZmRfbWFzaykgKiA4KSkgLSAxKSkgLyAoKHNpemVvZihmZF9tYXNrKSAqIDgpKSldOwp9
IGZkX3NldDsKIyAxOTIgIi91c3IvbG9jYWwvZ2NjMy4wL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBw
bGUtZGFyd2luMS4zLjIvMy4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKc3RydWN0IF9wdGhyZWFk
X2hhbmRsZXJfcmVjCnsKICAgICAgICB2b2lkICgqcm91dGluZSkodm9pZCAqKTsKICAgICAgICB2
b2lkICphcmc7CiAgICAgICAgc3RydWN0IF9wdGhyZWFkX2hhbmRsZXJfcmVjICpuZXh0Owp9Owoj
IDIxMCAiL3Vzci9sb2NhbC9nY2MzLjAvbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW4x
LjMuMi8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIHN0cnVjdCBfb3BhcXVlX3B0
aHJlYWRfdCB7IGxvbmcgc2lnOyBzdHJ1Y3QgX3B0aHJlYWRfaGFuZGxlcl9yZWMgKmNsZWFudXBf
c3RhY2s7IGNoYXIgb3BhcXVlWzU5Nl07fSAqcHRocmVhZF90OwoKdHlwZWRlZiBzdHJ1Y3QgX29w
YXF1ZV9wdGhyZWFkX2F0dHJfdCB7IGxvbmcgc2lnOyBjaGFyIG9wYXF1ZVszNl07IH0gcHRocmVh
ZF9hdHRyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfb3BhcXVlX3B0aHJlYWRfbXV0ZXhhdHRyX3QgeyBs
b25nIHNpZzsgY2hhciBvcGFxdWVbOF07IH0gcHRocmVhZF9tdXRleGF0dHJfdDsKCnR5cGVkZWYg
c3RydWN0IF9vcGFxdWVfcHRocmVhZF9tdXRleF90IHsgbG9uZyBzaWc7IGNoYXIgb3BhcXVlWzQw
XTsgfSBwdGhyZWFkX211dGV4X3Q7Cgp0eXBlZGVmIHN0cnVjdCBfb3BhcXVlX3B0aHJlYWRfY29u
ZGF0dHJfdCB7IGxvbmcgc2lnOyBjaGFyIG9wYXF1ZVs0XTsgfSBwdGhyZWFkX2NvbmRhdHRyX3Q7
Cgp0eXBlZGVmIHN0cnVjdCBfb3BhcXVlX3B0aHJlYWRfY29uZF90IHsgbG9uZyBzaWc7IGNoYXIg
b3BhcXVlWzI0XTsgfSBwdGhyZWFkX2NvbmRfdDsKCnR5cGVkZWYgc3RydWN0IHsgbG9uZyBzaWc7
IGNoYXIgb3BhcXVlWzRdOyB9IHB0aHJlYWRfb25jZV90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgcHRocmVhZF9rZXlfdDsKIyA2NSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCiMgMSAi
L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9hbnNpLmgiIDEgMwojIDcwICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMiAzCiMgOTEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYg
b2ZmX3QgZnBvc190OwojIDEwNyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKc3RydWN0IF9fc2J1
ZiB7CiAgICAgICAgdW5zaWduZWQgY2hhciAqX2Jhc2U7CiAgICAgICAgaW50IF9zaXplOwp9Owoj
IDEzOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX19zRklMRSB7CiAg
ICAgICAgdW5zaWduZWQgY2hhciAqX3A7CiAgICAgICAgaW50IF9yOwogICAgICAgIGludCBfdzsK
ICAgICAgICBzaG9ydCBfZmxhZ3M7CiAgICAgICAgc2hvcnQgX2ZpbGU7CiAgICAgICAgc3RydWN0
IF9fc2J1ZiBfYmY7CiAgICAgICAgaW50IF9sYmZzaXplOwoKCiAgICAgICAgdm9pZCAqX2Nvb2tp
ZTsKICAgICAgICBpbnQgKCpfY2xvc2UpICh2b2lkICopOwogICAgICAgIGludCAoKl9yZWFkKSAo
dm9pZCAqLCBjaGFyICosIGludCk7CiAgICAgICAgZnBvc190ICgqX3NlZWspICh2b2lkICosIGZw
b3NfdCwgaW50KTsKICAgICAgICBpbnQgKCpfd3JpdGUpICh2b2lkICosIGNvbnN0IGNoYXIgKiwg
aW50KTsKCgogICAgICAgIHN0cnVjdCBfX3NidWYgX3ViOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
Kl91cDsKICAgICAgICBpbnQgX3VyOwoKCiAgICAgICAgdW5zaWduZWQgY2hhciBfdWJ1ZlszXTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIF9uYnVmWzFdOwoKCiAgICAgICAgc3RydWN0IF9fc2J1ZiBf
bGI7CgoKICAgICAgICBpbnQgX2Jsa3NpemU7CiAgICAgICAgZnBvc190IF9vZmZzZXQ7Cn0gRklM
RTsKCgpleHRlcm4gRklMRSBfX3NGW107CiMgMjQxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwp2
b2lkIGNsZWFyZXJyIChGSUxFICopOwppbnQgZmNsb3NlIChGSUxFICopOwppbnQgZmVvZiAoRklM
RSAqKTsKaW50IGZlcnJvciAoRklMRSAqKTsKaW50IGZmbHVzaCAoRklMRSAqKTsKaW50IGZnZXRj
IChGSUxFICopOwppbnQgZmdldHBvcyAoRklMRSAqLCBmcG9zX3QgKik7CmNoYXIgKmZnZXRzIChj
aGFyICosIHNpemVfdCwgRklMRSAqKTsKRklMRSAqZm9wZW4gKGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqKTsKaW50IGZwcmludGYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZnB1
dGMgKGludCwgRklMRSAqKTsKaW50IGZwdXRzIChjb25zdCBjaGFyICosIEZJTEUgKik7CnNpemVf
dCBmcmVhZCAodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklMRSAqKTsKRklMRSAqZnJlb3BlbiAo
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7CmludCBmc2NhbmYgKEZJTEUgKiwg
Y29uc3QgY2hhciAqLCAuLi4pOwppbnQgZnNlZWsgKEZJTEUgKiwgbG9uZywgaW50KTsKaW50IGZz
ZXRwb3MgKEZJTEUgKiwgY29uc3QgZnBvc190ICopOwpsb25nIGZ0ZWxsIChGSUxFICopOwpzaXpl
X3QgZndyaXRlIChjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwppbnQgZ2V0
YyAoRklMRSAqKTsKaW50IGdldGNoYXIgKHZvaWQpOwpjaGFyICpnZXRzIChjaGFyICopOwoKZXh0
ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHN5c19lcnJsaXN0W107
Cgp2b2lkIHBlcnJvciAoY29uc3QgY2hhciAqKTsKaW50IHByaW50ZiAoY29uc3QgY2hhciAqLCAu
Li4pOwppbnQgcHV0YyAoaW50LCBGSUxFICopOwppbnQgcHV0Y2hhciAoaW50KTsKaW50IHB1dHMg
KGNvbnN0IGNoYXIgKik7CmludCByZW1vdmUgKGNvbnN0IGNoYXIgKik7CmludCByZW5hbWUgKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKdm9pZCByZXdpbmQgKEZJTEUgKik7CmludCBzY2Fu
ZiAoY29uc3QgY2hhciAqLCAuLi4pOwp2b2lkIHNldGJ1ZiAoRklMRSAqLCBjaGFyICopOwppbnQg
c2V0dmJ1ZiAoRklMRSAqLCBjaGFyICosIGludCwgc2l6ZV90KTsKaW50IHNwcmludGYgKGNoYXIg
KiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgc3NjYW5mIChjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKiwgLi4uKTsKRklMRSAqdG1wZmlsZSAodm9pZCk7CmNoYXIgKnRtcG5hbSAoY2hhciAqKTsK
aW50IHVuZ2V0YyAoaW50LCBGSUxFICopOwppbnQgdmZwcmludGYgKEZJTEUgKiwgY29uc3QgY2hh
ciAqLCBfX2J1aWx0aW5fdmFfbGlzdCk7CmludCB2cHJpbnRmIChjb25zdCBjaGFyICosIF9fYnVp
bHRpbl92YV9saXN0KTsKaW50IHZzcHJpbnRmIChjaGFyICosIGNvbnN0IGNoYXIgKiwgX19idWls
dGluX3ZhX2xpc3QpOwojIDI5NiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKY2hhciAqY3Rlcm1p
ZCAoY2hhciAqKTsKRklMRSAqZmRvcGVuIChpbnQsIGNvbnN0IGNoYXIgKik7CmludCBmaWxlbm8g
KEZJTEUgKik7CiMgMzA3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpjaGFyICpmZ2V0bG4gKEZJ
TEUgKiwgc2l6ZV90ICopOwppbnQgZnB1cmdlIChGSUxFICopOwppbnQgZnNlZWtvIChGSUxFICos
IGZwb3NfdCwgaW50KTsKZnBvc190IGZ0ZWxsbyAoRklMRSAqKTsKaW50IGdldHcgKEZJTEUgKik7
CmludCBwY2xvc2UgKEZJTEUgKik7CkZJTEUgKnBvcGVuIChjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKik7CmludCBwdXR3IChpbnQsIEZJTEUgKik7CnZvaWQgc2V0YnVmZmVyIChGSUxFICosIGNo
YXIgKiwgaW50KTsKaW50IHNldGxpbmVidWYgKEZJTEUgKik7CmNoYXIgKnRlbXBuYW0gKGNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IHNucHJpbnRmIChjaGFyICosIHNpemVfdCwgY29u
c3QgY2hhciAqLCAuLi4pOwppbnQgdnNucHJpbnRmIChjaGFyICosIHNpemVfdCwgY29uc3QgY2hh
ciAqLCBfX2J1aWx0aW5fdmFfbGlzdCk7CmludCB2c2NhbmYgKGNvbnN0IGNoYXIgKiwgX19idWls
dGluX3ZhX2xpc3QpOwppbnQgdnNzY2FuZiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIF9f
YnVpbHRpbl92YV9saXN0KTsKRklMRSAqem9wZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
LCBpbnQpOwojIDMzNiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKRklMRSAqZnVub3BlbiAoY29u
c3Qgdm9pZCAqLCBpbnQgKCopKHZvaWQgKiwgY2hhciAqLCBpbnQpLCBpbnQgKCopKHZvaWQgKiwg
Y29uc3QgY2hhciAqLCBpbnQpLCBmcG9zX3QgKCopKHZvaWQgKiwgZnBvc190LCBpbnQpLCBpbnQg
KCopKHZvaWQgKikpOwojIDM1MCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKaW50IF9fc3JnZXQg
KEZJTEUgKik7CmludCBfX3N2ZnNjYW5mIChGSUxFICosIGNvbnN0IGNoYXIgKiwgX19idWlsdGlu
X3ZhX2xpc3QpOwppbnQgX19zd2J1ZiAoaW50LCBGSUxFICopOwojIDM2MSAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDMKc3RhdGljIF9faW5saW5lIGludCBfX3NwdXRjKGludCBfYywgRklMRSAqX3Ap
IHsKICAgICAgICBpZiAoLS1fcC0+X3cgPj0gMCB8fCAoX3AtPl93ID49IF9wLT5fbGJmc2l6ZSAm
JiAoY2hhcilfYyAhPSAnXG4nKSkKICAgICAgICAgICAgICAgIHJldHVybiAoKl9wLT5fcCsrID0g
X2MpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiAoX19zd2J1ZihfYywgX3Ap
KTsKfQojIDQzICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9QeXRob24uaCIg
MgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDU5ICIvdXNyL2luY2x1ZGUv
c3RyaW5nLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9hbnNpLmgiIDEgMwojIDYwICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwojIDcwICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwojIDcxICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDIgMwoKCnZvaWQgKm1lbWNociAoY29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7Cmlu
dCBtZW1jbXAgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkICptZW1j
cHkgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkICptZW1tb3ZlICh2b2lkICos
IGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKdm9pZCAqbWVtc2V0ICh2b2lkICosIGludCwgc2l6ZV90
KTsKY2hhciAqc3RyY2F0IChjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cmNociAoY29u
c3QgY2hhciAqLCBpbnQpOwppbnQgc3RyY21wIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7
CmludCBzdHJjb2xsIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cmNweSAo
Y2hhciAqLCBjb25zdCBjaGFyICopOwpzaXplX3Qgc3RyY3NwbiAoY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICopOwpjaGFyICpzdHJlcnJvciAoaW50KTsKc2l6ZV90IHN0cmxlbiAoY29uc3QgY2hh
ciAqKTsKY2hhciAqc3RybmNhdCAoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmludCBz
dHJuY21wIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3RybmNw
eSAoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmNoYXIgKnN0cnBicmsgKGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RycmNociAoY29uc3QgY2hhciAqLCBpbnQpOwpz
aXplX3Qgc3Ryc3BuIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cnN0ciAo
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpjaGFyICpzdHJ0b2sgKGNoYXIgKiwgY29uc3Qg
Y2hhciAqKTsKc2l6ZV90IHN0cnhmcm0gKGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwoK
CgppbnQgYmNtcCAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgYmNv
cHkgKGNvbnN0IHZvaWQgKiwgdm9pZCAqLCBzaXplX3QpOwp2b2lkIGJ6ZXJvICh2b2lkICosIHNp
emVfdCk7CmludCBmZnMgKGludCk7CmNoYXIgKmluZGV4IChjb25zdCBjaGFyICosIGludCk7CnZv
aWQgKm1lbWNjcHkgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7CmNoYXIgKnJp
bmRleCAoY29uc3QgY2hhciAqLCBpbnQpOwppbnQgc3RyY2FzZWNtcCAoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICopOwpjaGFyICpzdHJkdXAgKGNvbnN0IGNoYXIgKik7CnZvaWQgc3RybW9kZSAo
aW50LCBjaGFyICopOwppbnQgc3RybmNhc2VjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
LCBzaXplX3QpOwpjaGFyICpzdHJzZXAgKGNoYXIgKiosIGNvbnN0IGNoYXIgKik7CnZvaWQgc3dh
YiAoY29uc3Qgdm9pZCAqLCB2b2lkICosIHNpemVfdCk7CiMgNDggIi91c3IvbG9jYWwvcHl0aG9u
L2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgi
IDEgMwojIDIyICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMv
ZXJybm8uaCIgMSAzCiMgNjcgIi91c3IvaW5jbHVkZS9zeXMvZXJybm8uaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS9zeXMvZXJybm8uaCIg
MiAzCgpleHRlcm4gaW50ICogX19lcnJvciAodm9pZCk7CiMgMjMgIi91c3IvaW5jbHVkZS9lcnJu
by5oIiAyIDMKIyA0OSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvUHl0aG9u
LmgiIDIKCiMgMSAiL3Vzci9sb2NhbC9nY2MzLjAvbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1k
YXJ3aW4xLjMuMi8zLjEvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMgNjkgIi91c3IvbG9jYWwvZ2Nj
My4wL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luMS4zLjIvMy4xL2luY2x1ZGUvc3Rk
bGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9hbnNpLmgiIDEgMwojIDcwICIvdXNy
L2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjEuMy4yLzMuMS9p
bmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyA4MyAiL3Vzci9sb2NhbC9nY2MzLjAvbGliL2djYy1saWIv
cG93ZXJwYy1hcHBsZS1kYXJ3aW4xLjMuMi8zLjEvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVm
IGludCBydW5lX3Q7CgoKCgp0eXBlZGVmIGludCB3Y2hhcl90OwoKCgoKCnR5cGVkZWYgc3RydWN0
IHsKICAgICAgICBpbnQgcXVvdDsKICAgICAgICBpbnQgcmVtOwp9IGRpdl90OwoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgICAgIGxvbmcgcXVvdDsKICAgICAgICBsb25nIHJlbTsKfSBsZGl2X3Q7CiMg
MTEzICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjEu
My4yLzMuMS9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBpbnQgX19tYl9jdXJfbWF4OwoKCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIyAxMTcgIi91c3IvbG9jYWwvZ2NjMy4w
L2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luMS4zLjIvMy4xL2luY2x1ZGUvc3RkbGli
LmgiIDIgMwoKCiAgICAgICB2b2lkCiAgICAgICAgIGFib3J0ICh2b2lkKTsKICAgICAgIGludAog
ICAgICAgICBhYnMgKGludCk7CmludCBhdGV4aXQgKHZvaWQgKCopKHZvaWQpKTsKZG91YmxlIGF0
b2YgKGNvbnN0IGNoYXIgKik7CmludCBhdG9pIChjb25zdCBjaGFyICopOwpsb25nIGF0b2wgKGNv
bnN0IGNoYXIgKik7CnZvaWQgKmJzZWFyY2ggKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBz
aXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKdm9p
ZCAqY2FsbG9jIChzaXplX3QsIHNpemVfdCk7CiAgICAgICBkaXZfdAogICAgICAgICBkaXYgKGlu
dCwgaW50KTsKICAgICAgIHZvaWQKICAgICAgICAgZXhpdCAoaW50KTsKdm9pZCBmcmVlICh2b2lk
ICopOwpjaGFyICpnZXRlbnYgKGNvbnN0IGNoYXIgKik7CiAgICAgICBsb25nCiAgICAgICAgIGxh
YnMgKGxvbmcpOwogICAgICAgbGRpdl90CiAgICAgICAgIGxkaXYgKGxvbmcsIGxvbmcpOwp2b2lk
ICptYWxsb2MgKHNpemVfdCk7CnZvaWQgcXNvcnQgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGlu
dCAoKikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKCmludCByYW5kICh2b2lkKTsKdm9p
ZCAqcmVhbGxvYyAodm9pZCAqLCBzaXplX3QpOwp2b2lkIHNyYW5kICh1bnNpZ25lZCk7CmRvdWJs
ZSBzdHJ0b2QgKGNvbnN0IGNoYXIgKiwgY2hhciAqKik7Cmxvbmcgc3RydG9sIChjb25zdCBjaGFy
ICosIGNoYXIgKiosIGludCk7CnVuc2lnbmVkIGxvbmcKICAgICAgICAgc3RydG91bCAoY29uc3Qg
Y2hhciAqLCBjaGFyICoqLCBpbnQpOwppbnQgc3lzdGVtIChjb25zdCBjaGFyICopOwoKCmludCBt
YmxlbiAoY29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3QgbWJzdG93Y3MgKHdjaGFyX3QgKiwg
Y29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgd2N0b21iIChjaGFyICosIHdjaGFyX3QpOwppbnQg
bWJ0b3djICh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKc2l6ZV90IHdjc3RvbWJz
IChjaGFyICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKCgppbnQgcHV0ZW52IChjb25zdCBj
aGFyICopOwppbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKCgoK
dm9pZCAqYWxsb2NhIChzaXplX3QpOwoKY2hhciAqZ2V0YnNpemUgKGludCAqLCBsb25nICopOwpj
aGFyICpjZ2V0Y2FwIChjaGFyICosIGNoYXIgKiwgaW50KTsKaW50IGNnZXRjbG9zZSAodm9pZCk7
CmludCBjZ2V0ZW50IChjaGFyICoqLCBjaGFyICoqLCBjaGFyICopOwppbnQgY2dldGZpcnN0IChj
aGFyICoqLCBjaGFyICoqKTsKaW50IGNnZXRtYXRjaCAoY2hhciAqLCBjaGFyICopOwppbnQgY2dl
dG5leHQgKGNoYXIgKiosIGNoYXIgKiopOwppbnQgY2dldG51bSAoY2hhciAqLCBjaGFyICosIGxv
bmcgKik7CmludCBjZ2V0c2V0IChjaGFyICopOwppbnQgY2dldHN0ciAoY2hhciAqLCBjaGFyICos
IGNoYXIgKiopOwppbnQgY2dldHVzdHIgKGNoYXIgKiwgY2hhciAqLCBjaGFyICoqKTsKCmludCBk
YWVtb24gKGludCwgaW50KTsKY2hhciAqZGV2bmFtZSAoaW50LCBpbnQpOwppbnQgZ2V0bG9hZGF2
ZyAoZG91YmxlIFtdLCBpbnQpOwoKY2hhciAqZ3JvdXBfZnJvbV9naWQgKHVuc2lnbmVkIGxvbmcs
IGludCk7CmludCBoZWFwc29ydCAodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25z
dCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBsb25n
LCBjaGFyICosIGxvbmcpOwppbnQgbWVyZ2Vzb3J0ICh2b2lkICosIHNpemVfdCwgc2l6ZV90LCBp
bnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CgppbnQgcmFkaXhzb3J0IChjb25z
dCB1bnNpZ25lZCBjaGFyICoqLCBpbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQp
OwoKaW50IHNyYWRpeHNvcnQgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiosIGludCwgY29uc3QgdW5z
aWduZWQgY2hhciAqLCB1bnNpZ25lZCk7Cgpsb25nIHJhbmRvbSAodm9pZCk7CmNoYXIgKnJlYWxw
YXRoIChjb25zdCBjaGFyICosIGNoYXIgcmVzb2x2ZWRfcGF0aFtdKTsKY2hhciAqc2V0c3RhdGUg
KGNoYXIgKik7CnZvaWQgc3JhbmRvbSAodW5zaWduZWQgbG9uZyk7CmNoYXIgKnVzZXJfZnJvbV91
aWQgKHVuc2lnbmVkIGxvbmcsIGludCk7Cgpsb25nIGxvbmcKICAgICAgICAgc3RydG9xIChjb25z
dCBjaGFyICosIGNoYXIgKiosIGludCk7CnVuc2lnbmVkIGxvbmcgbG9uZwogICAgICAgICBzdHJ0
b3VxIChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7Cgp2b2lkIHVuc2V0ZW52IChjb25zdCBj
aGFyICopOwojIDUxICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9QeXRob24u
aCIgMgoKIyAxICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRh
cndpbjEuMy4yLzMuMS9pbmNsdWRlL2Fzc2VydC5oIiAxIDMKIyA0NSAiL3Vzci9sb2NhbC9nY2Mz
LjAvbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW4xLjMuMi8zLjEvaW5jbHVkZS9hc3Nl
cnQuaCIgMwpleHRlcm4gdm9pZCBfX2VwcmludGYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
LCB1bnNpZ25lZCwgY29uc3QgY2hhciAqKQogICAgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7
CiMgNTMgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAyCgoj
IDEgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5cG9ydC5oIiAxCgoKCiMg
MSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvY29uZmlnLmgiIDEKIyA1ICIv
dXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9weXBvcnQuaCIgMgojIDcxICIvdXNy
L2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9weXBvcnQuaCIKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgUHlfdWludHB0cl90OwojIDgxICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhv
bjIuMS9weXBvcnQuaCIKIyAxICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9wb3dlcnBj
LWFwcGxlLWRhcndpbjEuMy4yLzMuMS9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyA4MiAiL3Vzci9s
b2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvcHlwb3J0LmgiIDIKCgojIDEgIi91c3IvbG9j
YWwvZ2NjMy4wL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luMS4zLjIvMy4xL2luY2x1
ZGUvbWF0aC5oIiAxIDMKIyA3OCAiL3Vzci9sb2NhbC9nY2MzLjAvbGliL2djYy1saWIvcG93ZXJw
Yy1hcHBsZS1kYXJ3aW4xLjMuMi8zLjEvaW5jbHVkZS9tYXRoLmgiIDMKZXh0ZXJuIGludCBzaWdu
Z2FtOwoKCmVudW0gZmR2ZXJzaW9uIHtmZGxpYm1faWVlZSA9IC0xLCBmZGxpYm1fc3ZpZCwgZmRs
aWJtX3hvcGVuLCBmZGxpYm1fcG9zaXh9OwojIDkzICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2Nj
LWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjEuMy4yLzMuMS9pbmNsdWRlL21hdGguaCIgMwpleHRl
cm4gZW51bSBmZHZlcnNpb24gX2ZkbGliX3ZlcnNpb247CgoKCgoKCgpzdHJ1Y3QgZXhjZXB0aW9u
IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIGRvdWJsZSBh
cmcxOwogICAgICAgIGRvdWJsZSBhcmcyOwogICAgICAgIGRvdWJsZSByZXR2YWw7Cn07CiMgMTMw
ICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjEuMy4y
LzMuMS9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAz
CiMgMTMxICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndp
bjEuMy4yLzMuMS9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgpleHRlcm4gZG91YmxlIGFjb3MgKGRv
dWJsZSk7CmV4dGVybiBkb3VibGUgYXNpbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhdGFuIChk
b3VibGUpOwpleHRlcm4gZG91YmxlIGF0YW4yIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3Vi
bGUgY29zIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHNpbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJs
ZSB0YW4gKGRvdWJsZSk7CgpleHRlcm4gZG91YmxlIGNvc2ggKGRvdWJsZSk7CmV4dGVybiBkb3Vi
bGUgc2luaCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB0YW5oIChkb3VibGUpOwoKZXh0ZXJuIGRv
dWJsZSBleHAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZnJleHAgKGRvdWJsZSwgaW50ICopOwpl
eHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUsIGludCk7CmV4dGVybiBkb3VibGUgbG9nIChkb3Vi
bGUpOwpleHRlcm4gZG91YmxlIGxvZzEwIChkb3VibGUpOwpleHRlcm4gZG91YmxlIG1vZGYgKGRv
dWJsZSwgZG91YmxlICopOwoKZXh0ZXJuIGRvdWJsZSBwb3cgKGRvdWJsZSwgZG91YmxlKTsKZXh0
ZXJuIGRvdWJsZSBzcXJ0IChkb3VibGUpOwoKZXh0ZXJuIGRvdWJsZSBjZWlsIChkb3VibGUpOwpl
eHRlcm4gZG91YmxlIGZhYnMgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZmxvb3IgKGRvdWJsZSk7
CmV4dGVybiBkb3VibGUgZm1vZCAoZG91YmxlLCBkb3VibGUpOwoKCmV4dGVybiBkb3VibGUgZXJm
IChkb3VibGUpOwpleHRlcm4gZG91YmxlIGVyZmMgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZ2Ft
bWEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgaHlwb3QgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJu
IGludCBpc2luZiAoZG91YmxlKTsKZXh0ZXJuIGludCBpc25hbiAoZG91YmxlKTsKZXh0ZXJuIGlu
dCBmaW5pdGUgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgajAgKGRvdWJsZSk7CmV4dGVybiBkb3Vi
bGUgajEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgam4gKGludCwgZG91YmxlKTsKZXh0ZXJuIGRv
dWJsZSBsZ2FtbWEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgeTAgKGRvdWJsZSk7CmV4dGVybiBk
b3VibGUgeTEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgeW4gKGludCwgZG91YmxlKTsKCgpleHRl
cm4gZG91YmxlIGFjb3NoIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGFzaW5oIChkb3VibGUpOwpl
eHRlcm4gZG91YmxlIGF0YW5oIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGNicnQgKGRvdWJsZSk7
CmV4dGVybiBkb3VibGUgbG9nYiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBuZXh0YWZ0ZXIgKGRv
dWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJsZSwgZG91YmxlKTsK
ZXh0ZXJuIGRvdWJsZSBzY2FsYiAoZG91YmxlLCBpbnQpOwoKCmV4dGVybiBpbnQgbWF0aGVyciAo
c3RydWN0IGV4Y2VwdGlvbiAqKTsKCgoKCgpleHRlcm4gZG91YmxlIHNpZ25pZmljYW5kIChkb3Vi
bGUpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbiAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4g
aW50IGlsb2diIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHJpbnQgKGRvdWJsZSk7CmV4dGVybiBk
b3VibGUgc2NhbGJuIChkb3VibGUsIGludCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmVtIChkb3Vi
bGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZXhwbTEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUg
bG9nMXAgKGRvdWJsZSk7CgoKCgoKCmV4dGVybiBkb3VibGUgZ2FtbWFfciAoZG91YmxlLCBpbnQg
Kik7CmV4dGVybiBkb3VibGUgbGdhbW1hX3IgKGRvdWJsZSwgaW50ICopOwojIDg1ICIvdXNyL2xv
Y2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9weXBvcnQuaCIgMgoKCgoKCgojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvdGltZS5oIiAxIDMKIyA2MSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMK
IyAxICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjEu
My4yLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyA2MiAiL3Vzci9pbmNsdWRlL3N5cy90
aW1lLmgiIDIgMwoKCgoKCgoKc3RydWN0IHRpbWV2YWwgewogICAgICAgIGludDMyX3QgdHZfc2Vj
OwogICAgICAgIGludDMyX3QgdHZfdXNlYzsKfTsKCgoKCnN0cnVjdCB0aW1lc3BlYyB7CiAgICAg
ICAgdGltZV90IHR2X3NlYzsKICAgICAgICBpbnQzMl90IHR2X25zZWM7Cn07CiMgOTEgIi91c3Iv
aW5jbHVkZS9zeXMvdGltZS5oIiAzCnN0cnVjdCB0aW1lem9uZSB7CiAgICAgICAgaW50IHR6X21p
bnV0ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9OwojIDEzOSAiL3Vzci9pbmNsdWRl
L3N5cy90aW1lLmgiIDMKc3RydWN0IGl0aW1lcnZhbCB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwg
aXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7Cn07CgoKCgpzdHJ1
Y3QgY2xvY2tpbmZvIHsKICAgICAgICBpbnQgaHo7CiAgICAgICAgaW50IHRpY2s7CiAgICAgICAg
aW50IHRpY2thZGo7CiAgICAgICAgaW50IHN0YXRoejsKICAgICAgICBpbnQgcHJvZmh6Owp9OwoK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwojIDE1NiAiL3Vzci9pbmNsdWRlL3N5
cy90aW1lLmgiIDIgMwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDY1ICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvYW5zaS5oIiAx
IDMKIyA2NiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCiMgODYgIi91c3IvaW5jbHVkZS90aW1l
LmgiIDMKc3RydWN0IHRtIHsKICAgICAgICBpbnQgdG1fc2VjOwogICAgICAgIGludCB0bV9taW47
CiAgICAgICAgaW50IHRtX2hvdXI7CiAgICAgICAgaW50IHRtX21kYXk7CiAgICAgICAgaW50IHRt
X21vbjsKICAgICAgICBpbnQgdG1feWVhcjsKICAgICAgICBpbnQgdG1fd2RheTsKICAgICAgICBp
bnQgdG1feWRheTsKICAgICAgICBpbnQgdG1faXNkc3Q7CiAgICAgICAgbG9uZyB0bV9nbXRvZmY7
CiAgICAgICAgY2hhciAqdG1fem9uZTsKfTsKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvbGlt
aXRzLmgiIDEgMwojIDEwMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIyAxMDUgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoK
CmNoYXIgKmFzY3RpbWUgKGNvbnN0IHN0cnVjdCB0bSAqKTsKY2xvY2tfdCBjbG9jayAodm9pZCk7
CmNoYXIgKmN0aW1lIChjb25zdCB0aW1lX3QgKik7CmRvdWJsZSBkaWZmdGltZSAodGltZV90LCB0
aW1lX3QpOwpzdHJ1Y3QgdG0gKmdtdGltZSAoY29uc3QgdGltZV90ICopOwpzdHJ1Y3QgdG0gKmxv
Y2FsdGltZSAoY29uc3QgdGltZV90ICopOwp0aW1lX3QgbWt0aW1lIChzdHJ1Y3QgdG0gKik7CnNp
emVfdCBzdHJmdGltZSAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0
IHRtICopOwp0aW1lX3QgdGltZSAodGltZV90ICopOwoKCnZvaWQgdHpzZXQgKHZvaWQpOwoKCgpj
aGFyICp0aW1lem9uZSAoaW50LCBpbnQpOwp2b2lkIHR6c2V0d2FsbCAodm9pZCk7CiMgMTYzICIv
dXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZz
LmgiIDEgMwojIDE2NiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMwoKCmludCBhZGp0aW1l
IChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKaW50IGdldGl0aW1l
ciAoaW50LCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgZ2V0dGltZW9mZGF5IChzdHJ1Y3QgdGlt
ZXZhbCAqLCBzdHJ1Y3QgdGltZXpvbmUgKik7CmludCBzZXRpdGltZXIgKGludCwgY29uc3Qgc3Ry
dWN0IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgc2V0dGltZW9mZGF5IChj
b25zdCBzdHJ1Y3QgdGltZXZhbCAqLCBjb25zdCBzdHJ1Y3QgdGltZXpvbmUgKik7CmludCB1dGlt
ZXMgKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRpbWV2YWwgKik7CiMgOTIgIi91c3IvbG9j
YWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5cG9ydC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMSAzCiMgOTMgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5
cG9ydC5oIiAyCiMgMTEwICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9weXBv
cnQuaCIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMKIyA2NCAiL3Vzci9pbmNs
dWRlL3N5cy9zZWxlY3QuaCIgMwpzdHJ1Y3Qgc2VsaW5mbyB7CiAgICAgICAgdm9pZCAqc2lfdGhy
ZWFkOwogICAgICAgIHNob3J0IHNpX2ZsYWdzOwp9OwojIDExMSAiL3Vzci9sb2NhbC9weXRob24v
aW5jbHVkZS9weXRob24yLjEvcHlwb3J0LmgiIDIKIyAxNDggIi91c3IvbG9jYWwvcHl0aG9uL2lu
Y2x1ZGUvcHl0aG9uMi4xL3B5cG9ydC5oIgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAx
IDMKIyA2NyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lz
L3RpbWUuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKCgpzdHJ1Y3Qg
b3N0YXQgewogICAgICAgIHVfaW50MTZfdCBzdF9kZXY7CiAgICAgICAgaW5vX3Qgc3RfaW5vOwog
ICAgICAgIG1vZGVfdCBzdF9tb2RlOwogICAgICAgIG5saW5rX3Qgc3Rfbmxpbms7CiAgICAgICAg
dV9pbnQxNl90IHN0X3VpZDsKICAgICAgICB1X2ludDE2X3Qgc3RfZ2lkOwogICAgICAgIHVfaW50
MTZfdCBzdF9yZGV2OwogICAgICAgIGludDMyX3Qgc3Rfc2l6ZTsKICAgICAgICBzdHJ1Y3QgdGlt
ZXNwZWMgc3RfYXRpbWVzcGVjOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBzdF9tdGltZXNwZWM7
CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHN0X2N0aW1lc3BlYzsKICAgICAgICBpbnQzMl90IHN0
X2Jsa3NpemU7CiAgICAgICAgaW50MzJfdCBzdF9ibG9ja3M7CiAgICAgICAgdV9pbnQzMl90IHN0
X2ZsYWdzOwogICAgICAgIHVfaW50MzJfdCBzdF9nZW47Cn07CgoKc3RydWN0IHN0YXQgewogICAg
ICAgIGRldl90IHN0X2RldjsKICAgICAgICBpbm9fdCBzdF9pbm87CiAgICAgICAgbW9kZV90IHN0
X21vZGU7CiAgICAgICAgbmxpbmtfdCBzdF9ubGluazsKICAgICAgICB1aWRfdCBzdF91aWQ7CiAg
ICAgICAgZ2lkX3Qgc3RfZ2lkOwogICAgICAgIGRldl90IHN0X3JkZXY7CgogICAgICAgIHN0cnVj
dCB0aW1lc3BlYyBzdF9hdGltZXNwZWM7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHN0X210aW1l
c3BlYzsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgc3RfY3RpbWVzcGVjOwojIDEwOSAiL3Vzci9p
bmNsdWRlL3N5cy9zdGF0LmgiIDMKICAgICAgICBvZmZfdCBzdF9zaXplOwogICAgICAgIGludDY0
X3Qgc3RfYmxvY2tzOwogICAgICAgIHVfaW50MzJfdCBzdF9ibGtzaXplOwogICAgICAgIHVfaW50
MzJfdCBzdF9mbGFnczsKICAgICAgICB1X2ludDMyX3Qgc3RfZ2VuOwogICAgICAgIGludDMyX3Qg
c3RfbHNwYXJlOwogICAgICAgIGludDY0X3Qgc3RfcXNwYXJlWzJdOwp9OwojIDIxNiAiL3Vzci9p
bmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwoj
IDIxNyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMwoKCmludCBjaG1vZCAoY29uc3QgY2hh
ciAqLCBtb2RlX3QpOwppbnQgZnN0YXQgKGludCwgc3RydWN0IHN0YXQgKik7CmludCBta2RpciAo
Y29uc3QgY2hhciAqLCBtb2RlX3QpOwppbnQgbWtmaWZvIChjb25zdCBjaGFyICosIG1vZGVfdCk7
CmludCBzdGF0IChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0ICopOwptb2RlX3QgdW1hc2sgKG1v
ZGVfdCk7CgppbnQgY2hmbGFncyAoY29uc3QgY2hhciAqLCB1X2xvbmcpOwppbnQgZmNoZmxhZ3Mg
KGludCwgdV9sb25nKTsKaW50IGZjaG1vZCAoaW50LCBtb2RlX3QpOwppbnQgbHN0YXQgKGNvbnN0
IGNoYXIgKiwgc3RydWN0IHN0YXQgKik7CiMgMTQ5ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRl
L3B5dGhvbjIuMS9weXBvcnQuaCIgMgojIDIzOSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9w
eXRob24yLjEvcHlwb3J0LmgiCiMgMSAiL3Vzci9pbmNsdWRlL3Rlcm1pb3MuaCIgMSAzCiMgMjIg
Ii91c3IvaW5jbHVkZS90ZXJtaW9zLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Rlcm1pb3Mu
aCIgMSAzCiMgMjAxICIvdXNyL2luY2x1ZGUvc3lzL3Rlcm1pb3MuaCIgMwp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgdGNmbGFnX3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBjY190Owp0eXBlZGVmIGxv
bmcgc3BlZWRfdDsKCnN0cnVjdCB0ZXJtaW9zIHsKICAgICAgICB0Y2ZsYWdfdCBjX2lmbGFnOwog
ICAgICAgIHRjZmxhZ190IGNfb2ZsYWc7CiAgICAgICAgdGNmbGFnX3QgY19jZmxhZzsKICAgICAg
ICB0Y2ZsYWdfdCBjX2xmbGFnOwogICAgICAgIGNjX3QgY19jY1syMF07CiAgICAgICAgc3BlZWRf
dCBjX2lzcGVlZDsKICAgICAgICBzcGVlZF90IGNfb3NwZWVkOwp9OwojIDI2NiAiL3Vzci9pbmNs
dWRlL3N5cy90ZXJtaW9zLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwoj
IDI2NyAiL3Vzci9pbmNsdWRlL3N5cy90ZXJtaW9zLmgiIDIgMwoKCnNwZWVkX3QgY2ZnZXRpc3Bl
ZWQgKGNvbnN0IHN0cnVjdCB0ZXJtaW9zICopOwpzcGVlZF90IGNmZ2V0b3NwZWVkIChjb25zdCBz
dHJ1Y3QgdGVybWlvcyAqKTsKaW50IGNmc2V0aXNwZWVkIChzdHJ1Y3QgdGVybWlvcyAqLCBzcGVl
ZF90KTsKaW50IGNmc2V0b3NwZWVkIChzdHJ1Y3QgdGVybWlvcyAqLCBzcGVlZF90KTsKaW50IHRj
Z2V0YXR0ciAoaW50LCBzdHJ1Y3QgdGVybWlvcyAqKTsKaW50IHRjc2V0YXR0ciAoaW50LCBpbnQs
IGNvbnN0IHN0cnVjdCB0ZXJtaW9zICopOwppbnQgdGNkcmFpbiAoaW50KTsKaW50IHRjZmxvdyAo
aW50LCBpbnQpOwppbnQgdGNmbHVzaCAoaW50LCBpbnQpOwppbnQgdGNzZW5kYnJlYWsgKGludCwg
aW50KTsKCgp2b2lkIGNmbWFrZXJhdyAoc3RydWN0IHRlcm1pb3MgKik7CmludCBjZnNldHNwZWVk
IChzdHJ1Y3QgdGVybWlvcyAqLCBzcGVlZF90KTsKIyAyOTUgIi91c3IvaW5jbHVkZS9zeXMvdGVy
bWlvcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90dHljb20uaCIgMSAzCiMgNjYgIi91c3Iv
aW5jbHVkZS9zeXMvdHR5Y29tLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2lvY2NvbS5oIiAx
IDMKIyA2NyAiL3Vzci9pbmNsdWRlL3N5cy90dHljb20uaCIgMiAzCiMgNzcgIi91c3IvaW5jbHVk
ZS9zeXMvdHR5Y29tLmgiIDMKc3RydWN0IHdpbnNpemUgewogICAgICAgIHVuc2lnbmVkIHNob3J0
IHdzX3JvdzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c19jb2w7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgd3NfeHBpeGVsOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3lwaXhlbDsKfTsKIyAy
OTYgIi91c3IvaW5jbHVkZS9zeXMvdGVybWlvcy5oIiAyIDMKIyAzMDQgIi91c3IvaW5jbHVkZS9z
eXMvdGVybWlvcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90dHlkZWZhdWx0cy5oIiAxIDMK
IyAzMDUgIi91c3IvaW5jbHVkZS9zeXMvdGVybWlvcy5oIiAyIDMKIyAyMyAiL3Vzci9pbmNsdWRl
L3Rlcm1pb3MuaCIgMiAzCiMgMjQwICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIu
MS9weXBvcnQuaCIgMgpleHRlcm4gaW50IG9wZW5wdHkoaW50ICosIGludCAqLCBjaGFyICosIHN0
cnVjdCB0ZXJtaW9zICosIHN0cnVjdCB3aW5zaXplICopOwpleHRlcm4gaW50IGZvcmtwdHkoaW50
ICosIGNoYXIgKiwgc3RydWN0IHRlcm1pb3MgKiwgc3RydWN0IHdpbnNpemUgKik7CiMgNTUgIi91
c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAyCgojIDEgIi91c3Iv
bG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5bWVtLmgiIDEKCgoKCgoKIyAxICIvdXNy
L2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9weXBvcnQuaCIgMQojIDggIi91c3IvbG9j
YWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5bWVtLmgiIDIKIyA4NyAiL3Vzci9sb2NhbC9w
eXRob24vaW5jbHVkZS9weXRob24yLjEvcHltZW0uaCIKZXh0ZXJuIHZvaWQgKiBQeU1lbV9NYWxs
b2Moc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKiBQeU1lbV9SZWFsbG9jKHZvaWQgKiwgc2l6ZV90KTsK
ZXh0ZXJuIHZvaWQgUHlNZW1fRnJlZSh2b2lkICopOwojIDU3ICIvdXNyL2xvY2FsL3B5dGhvbi9p
bmNsdWRlL3B5dGhvbjIuMS9QeXRob24uaCIgMgoKIyAxICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNs
dWRlL3B5dGhvbjIuMS9vYmplY3QuaCIgMQojIDgwICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRl
L3B5dGhvbjIuMS9vYmplY3QuaCIKdHlwZWRlZiBzdHJ1Y3QgX29iamVjdCB7CiAgICAgICAgaW50
IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwp9IFB5T2JqZWN0OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAq
b2JfdHlwZTsgaW50IG9iX3NpemU7Cn0gUHlWYXJPYmplY3Q7CiMgMTAzICIvdXNyL2xvY2FsL3B5
dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9vYmplY3QuaCIKdHlwZWRlZiBQeU9iamVjdCAqICgqdW5h
cnlmdW5jKShQeU9iamVjdCAqKTsKdHlwZWRlZiBQeU9iamVjdCAqICgqYmluYXJ5ZnVuYykoUHlP
YmplY3QgKiwgUHlPYmplY3QgKik7CnR5cGVkZWYgUHlPYmplY3QgKiAoKnRlcm5hcnlmdW5jKShQ
eU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCppbnF1aXJ5
KShQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpjb2VyY2lvbikoUHlPYmplY3QgKiosIFB5T2Jq
ZWN0ICoqKTsKdHlwZWRlZiBQeU9iamVjdCAqKCppbnRhcmdmdW5jKShQeU9iamVjdCAqLCBpbnQp
Owp0eXBlZGVmIFB5T2JqZWN0ICooKmludGludGFyZ2Z1bmMpKFB5T2JqZWN0ICosIGludCwgaW50
KTsKdHlwZWRlZiBpbnQoKmludG9iamFyZ3Byb2MpKFB5T2JqZWN0ICosIGludCwgUHlPYmplY3Qg
Kik7CnR5cGVkZWYgaW50KCppbnRpbnRvYmphcmdwcm9jKShQeU9iamVjdCAqLCBpbnQsIGludCwg
UHlPYmplY3QgKik7CnR5cGVkZWYgaW50KCpvYmpvYmphcmdwcm9jKShQeU9iamVjdCAqLCBQeU9i
amVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpnZXRyZWFkYnVmZmVycHJvYykoUHlP
YmplY3QgKiwgaW50LCB2b2lkICoqKTsKdHlwZWRlZiBpbnQgKCpnZXR3cml0ZWJ1ZmZlcnByb2Mp
KFB5T2JqZWN0ICosIGludCwgdm9pZCAqKik7CnR5cGVkZWYgaW50ICgqZ2V0c2VnY291bnRwcm9j
KShQeU9iamVjdCAqLCBpbnQgKik7CnR5cGVkZWYgaW50ICgqZ2V0Y2hhcmJ1ZmZlcnByb2MpKFB5
T2JqZWN0ICosIGludCwgY29uc3QgY2hhciAqKik7CnR5cGVkZWYgaW50ICgqb2Jqb2JqcHJvYyko
UHlPYmplY3QgKiwgUHlPYmplY3QgKik7CnR5cGVkZWYgaW50ICgqdmlzaXRwcm9jKShQeU9iamVj
dCAqLCB2b2lkICopOwp0eXBlZGVmIGludCAoKnRyYXZlcnNlcHJvYykoUHlPYmplY3QgKiwgdmlz
aXRwcm9jLCB2b2lkICopOwoKdHlwZWRlZiBzdHJ1Y3QgewojIDEzMCAiL3Vzci9sb2NhbC9weXRo
b24vaW5jbHVkZS9weXRob24yLjEvb2JqZWN0LmgiCiAgICAgICAgYmluYXJ5ZnVuYyBuYl9hZGQ7
CiAgICAgICAgYmluYXJ5ZnVuYyBuYl9zdWJ0cmFjdDsKICAgICAgICBiaW5hcnlmdW5jIG5iX211
bHRpcGx5OwogICAgICAgIGJpbmFyeWZ1bmMgbmJfZGl2aWRlOwogICAgICAgIGJpbmFyeWZ1bmMg
bmJfcmVtYWluZGVyOwogICAgICAgIGJpbmFyeWZ1bmMgbmJfZGl2bW9kOwogICAgICAgIHRlcm5h
cnlmdW5jIG5iX3Bvd2VyOwogICAgICAgIHVuYXJ5ZnVuYyBuYl9uZWdhdGl2ZTsKICAgICAgICB1
bmFyeWZ1bmMgbmJfcG9zaXRpdmU7CiAgICAgICAgdW5hcnlmdW5jIG5iX2Fic29sdXRlOwogICAg
ICAgIGlucXVpcnkgbmJfbm9uemVybzsKICAgICAgICB1bmFyeWZ1bmMgbmJfaW52ZXJ0OwogICAg
ICAgIGJpbmFyeWZ1bmMgbmJfbHNoaWZ0OwogICAgICAgIGJpbmFyeWZ1bmMgbmJfcnNoaWZ0Owog
ICAgICAgIGJpbmFyeWZ1bmMgbmJfYW5kOwogICAgICAgIGJpbmFyeWZ1bmMgbmJfeG9yOwogICAg
ICAgIGJpbmFyeWZ1bmMgbmJfb3I7CiAgICAgICAgY29lcmNpb24gbmJfY29lcmNlOwogICAgICAg
IHVuYXJ5ZnVuYyBuYl9pbnQ7CiAgICAgICAgdW5hcnlmdW5jIG5iX2xvbmc7CiAgICAgICAgdW5h
cnlmdW5jIG5iX2Zsb2F0OwogICAgICAgIHVuYXJ5ZnVuYyBuYl9vY3Q7CiAgICAgICAgdW5hcnlm
dW5jIG5iX2hleDsKICAgICAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfYWRkOwogICAgICAgIGJp
bmFyeWZ1bmMgbmJfaW5wbGFjZV9zdWJ0cmFjdDsKICAgICAgICBiaW5hcnlmdW5jIG5iX2lucGxh
Y2VfbXVsdGlwbHk7CiAgICAgICAgYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX2RpdmlkZTsKICAgICAg
ICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfcmVtYWluZGVyOwogICAgICAgIHRlcm5hcnlmdW5jIG5i
X2lucGxhY2VfcG93ZXI7CiAgICAgICAgYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX2xzaGlmdDsKICAg
ICAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfcnNoaWZ0OwogICAgICAgIGJpbmFyeWZ1bmMgbmJf
aW5wbGFjZV9hbmQ7CiAgICAgICAgYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX3hvcjsKICAgICAgICBi
aW5hcnlmdW5jIG5iX2lucGxhY2Vfb3I7Cn0gUHlOdW1iZXJNZXRob2RzOwoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgICAgIGlucXVpcnkgc3FfbGVuZ3RoOwogICAgICAgIGJpbmFyeWZ1bmMgc3FfY29u
Y2F0OwogICAgICAgIGludGFyZ2Z1bmMgc3FfcmVwZWF0OwogICAgICAgIGludGFyZ2Z1bmMgc3Ff
aXRlbTsKICAgICAgICBpbnRpbnRhcmdmdW5jIHNxX3NsaWNlOwogICAgICAgIGludG9iamFyZ3By
b2Mgc3FfYXNzX2l0ZW07CiAgICAgICAgaW50aW50b2JqYXJncHJvYyBzcV9hc3Nfc2xpY2U7CiAg
ICAgICAgb2Jqb2JqcHJvYyBzcV9jb250YWluczsKICAgICAgICBiaW5hcnlmdW5jIHNxX2lucGxh
Y2VfY29uY2F0OwogICAgICAgIGludGFyZ2Z1bmMgc3FfaW5wbGFjZV9yZXBlYXQ7Cn0gUHlTZXF1
ZW5jZU1ldGhvZHM7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW5xdWlyeSBtcF9sZW5ndGg7
CiAgICAgICAgYmluYXJ5ZnVuYyBtcF9zdWJzY3JpcHQ7CiAgICAgICAgb2Jqb2JqYXJncHJvYyBt
cF9hc3Nfc3Vic2NyaXB0Owp9IFB5TWFwcGluZ01ldGhvZHM7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICAgICAgZ2V0cmVhZGJ1ZmZlcnByb2MgYmZfZ2V0cmVhZGJ1ZmZlcjsKICAgICAgICBnZXR3cml0
ZWJ1ZmZlcnByb2MgYmZfZ2V0d3JpdGVidWZmZXI7CiAgICAgICAgZ2V0c2VnY291bnRwcm9jIGJm
X2dldHNlZ2NvdW50OwogICAgICAgIGdldGNoYXJidWZmZXJwcm9jIGJmX2dldGNoYXJidWZmZXI7
Cn0gUHlCdWZmZXJQcm9jczsKCgp0eXBlZGVmIHZvaWQgKCpkZXN0cnVjdG9yKShQeU9iamVjdCAq
KTsKdHlwZWRlZiBpbnQgKCpwcmludGZ1bmMpKFB5T2JqZWN0ICosIEZJTEUgKiwgaW50KTsKdHlw
ZWRlZiBQeU9iamVjdCAqKCpnZXRhdHRyZnVuYykoUHlPYmplY3QgKiwgY2hhciAqKTsKdHlwZWRl
ZiBQeU9iamVjdCAqKCpnZXRhdHRyb2Z1bmMpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBl
ZGVmIGludCAoKnNldGF0dHJmdW5jKShQeU9iamVjdCAqLCBjaGFyICosIFB5T2JqZWN0ICopOwp0
eXBlZGVmIGludCAoKnNldGF0dHJvZnVuYykoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmpl
Y3QgKik7CnR5cGVkZWYgaW50ICgqY21wZnVuYykoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CnR5
cGVkZWYgUHlPYmplY3QgKigqcmVwcmZ1bmMpKFB5T2JqZWN0ICopOwp0eXBlZGVmIGxvbmcgKCpo
YXNoZnVuYykoUHlPYmplY3QgKik7CnR5cGVkZWYgUHlPYmplY3QgKigqcmljaGNtcGZ1bmMpIChQ
eU9iamVjdCAqLCBQeU9iamVjdCAqLCBpbnQpOwoKdHlwZWRlZiBzdHJ1Y3QgX3R5cGVvYmplY3Qg
ewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50
IG9iX3NpemU7CiAgICAgICAgY2hhciAqdHBfbmFtZTsKICAgICAgICBpbnQgdHBfYmFzaWNzaXpl
LCB0cF9pdGVtc2l6ZTsKCgoKICAgICAgICBkZXN0cnVjdG9yIHRwX2RlYWxsb2M7CiAgICAgICAg
cHJpbnRmdW5jIHRwX3ByaW50OwogICAgICAgIGdldGF0dHJmdW5jIHRwX2dldGF0dHI7CiAgICAg
ICAgc2V0YXR0cmZ1bmMgdHBfc2V0YXR0cjsKICAgICAgICBjbXBmdW5jIHRwX2NvbXBhcmU7CiAg
ICAgICAgcmVwcmZ1bmMgdHBfcmVwcjsKCgoKICAgICAgICBQeU51bWJlck1ldGhvZHMgKnRwX2Fz
X251bWJlcjsKICAgICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqdHBfYXNfc2VxdWVuY2U7CiAgICAg
ICAgUHlNYXBwaW5nTWV0aG9kcyAqdHBfYXNfbWFwcGluZzsKCgoKICAgICAgICBoYXNoZnVuYyB0
cF9oYXNoOwogICAgICAgIHRlcm5hcnlmdW5jIHRwX2NhbGw7CiAgICAgICAgcmVwcmZ1bmMgdHBf
c3RyOwogICAgICAgIGdldGF0dHJvZnVuYyB0cF9nZXRhdHRybzsKICAgICAgICBzZXRhdHRyb2Z1
bmMgdHBfc2V0YXR0cm87CgoKICAgICAgICBQeUJ1ZmZlclByb2NzICp0cF9hc19idWZmZXI7CgoK
ICAgICAgICBsb25nIHRwX2ZsYWdzOwoKICAgICAgICBjaGFyICp0cF9kb2M7CgoKICAgICAgICB0
cmF2ZXJzZXByb2MgdHBfdHJhdmVyc2U7CgoKICAgICAgICBpbnF1aXJ5IHRwX2NsZWFyOwoKCiAg
ICAgICAgcmljaGNtcGZ1bmMgdHBfcmljaGNvbXBhcmU7CgoKICAgICAgICBsb25nIHRwX3dlYWts
aXN0b2Zmc2V0OwojIDI1OSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvb2Jq
ZWN0LmgiCn0gUHlUeXBlT2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVR5cGVfVHlwZTsK
CgoKCmV4dGVybiBpbnQgUHlPYmplY3RfUHJpbnQoUHlPYmplY3QgKiwgRklMRSAqLCBpbnQpOwpl
eHRlcm4gdm9pZCBfUHlPYmplY3RfRHVtcChQeU9iamVjdCAqKTsKZXh0ZXJuIFB5T2JqZWN0ICog
UHlPYmplY3RfUmVwcihQeU9iamVjdCAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlPYmplY3RfU3Ry
KFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeU9iamVjdF9Vbmljb2RlKFB5T2JqZWN0
ICopOwpleHRlcm4gaW50IFB5T2JqZWN0X0NvbXBhcmUoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7
CmV4dGVybiBQeU9iamVjdCAqIFB5T2JqZWN0X1JpY2hDb21wYXJlKFB5T2JqZWN0ICosIFB5T2Jq
ZWN0ICosIGludCk7CmV4dGVybiBpbnQgUHlPYmplY3RfUmljaENvbXBhcmVCb29sKFB5T2JqZWN0
ICosIFB5T2JqZWN0ICosIGludCk7CmV4dGVybiBQeU9iamVjdCAqIFB5T2JqZWN0X0dldEF0dHJT
dHJpbmcoUHlPYmplY3QgKiwgY2hhciAqKTsKZXh0ZXJuIGludCBQeU9iamVjdF9TZXRBdHRyU3Ry
aW5nKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKik7CmV4dGVybiBpbnQgUHlPYmplY3Rf
SGFzQXR0clN0cmluZyhQeU9iamVjdCAqLCBjaGFyICopOwpleHRlcm4gUHlPYmplY3QgKiBQeU9i
amVjdF9HZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5T2JqZWN0
X1NldEF0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBpbnQg
UHlPYmplY3RfSGFzQXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKZXh0ZXJuIGxvbmcgUHlP
YmplY3RfSGFzaChQeU9iamVjdCAqKTsKZXh0ZXJuIGludCBQeU9iamVjdF9Jc1RydWUoUHlPYmpl
Y3QgKik7CmV4dGVybiBpbnQgUHlPYmplY3RfTm90KFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5
Q2FsbGFibGVfQ2hlY2soUHlPYmplY3QgKik7CmV4dGVybiBpbnQgUHlOdW1iZXJfQ29lcmNlKFB5
T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CmV4dGVybiBpbnQgUHlOdW1iZXJfQ29lcmNlRXgoUHlP
YmplY3QgKiosIFB5T2JqZWN0ICoqKTsKCmV4dGVybiB2b2lkICgqUHlPYmplY3RfQ2xlYXJXZWFr
UmVmcykoUHlPYmplY3QgKik7CgoKZXh0ZXJuIGludCBQeV9SZXByRW50ZXIoUHlPYmplY3QgKik7
CmV4dGVybiB2b2lkIFB5X1JlcHJMZWF2ZShQeU9iamVjdCAqKTsKCgpleHRlcm4gbG9uZyBfUHlf
SGFzaERvdWJsZShkb3VibGUpOwpleHRlcm4gbG9uZyBfUHlfSGFzaFBvaW50ZXIodm9pZCopOwoj
IDQ2NSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvb2JqZWN0LmgiCmV4dGVy
biBQeU9iamVjdCBfUHlfTm9uZVN0cnVjdDsKIyA0NzQgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1
ZGUvcHl0aG9uMi4xL29iamVjdC5oIgpleHRlcm4gUHlPYmplY3QgX1B5X05vdEltcGxlbWVudGVk
U3RydWN0OwojIDYwMyAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvb2JqZWN0
LmgiCmV4dGVybiB2b2lkIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0KFB5T2JqZWN0Kik7CmV4dGVy
biB2b2lkIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4odm9pZCk7CgpleHRlcm4gaW50IF9QeVRyYXNo
X2RlbGV0ZV9uZXN0aW5nOwpleHRlcm4gUHlPYmplY3QgKiBfUHlUcmFzaF9kZWxldGVfbGF0ZXI7
CiMgNTkgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAyCiMg
MSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvb2JqaW1wbC5oIiAxCgoKCgoj
IDEgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5bWVtLmgiIDEKIyA2ICIv
dXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9vYmppbXBsLmgiIDIKIyAxMzkgIi91
c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL29iamltcGwuaCIKZXh0ZXJuIHZvaWQg
KiBQeU9iamVjdF9NYWxsb2Moc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKiBQeU9iamVjdF9SZWFsbG9j
KHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgUHlPYmplY3RfRnJlZSh2b2lkICopOwojIDE1
NCAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvb2JqaW1wbC5oIgpleHRlcm4g
UHlPYmplY3QgKiBQeU9iamVjdF9Jbml0KFB5T2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKZXh0
ZXJuIFB5VmFyT2JqZWN0ICogUHlPYmplY3RfSW5pdFZhcihQeVZhck9iamVjdCAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUeXBlT2JqZWN0ICos
IGludCk7CmV4dGVybiBQeU9iamVjdCAqIF9QeU9iamVjdF9OZXcoUHlUeXBlT2JqZWN0ICopOwpl
eHRlcm4gUHlWYXJPYmplY3QgKiBfUHlPYmplY3RfTmV3VmFyKFB5VHlwZU9iamVjdCAqLCBpbnQp
OwpleHRlcm4gdm9pZCBfUHlPYmplY3RfRGVsKFB5T2JqZWN0ICopOwojIDI0MyAiL3Vzci9sb2Nh
bC9weXRob24vaW5jbHVkZS9weXRob24yLjEvb2JqaW1wbC5oIgpleHRlcm4gdm9pZCBfUHlHQ19J
bnNlcnQoUHlPYmplY3QgKik7CgoKZXh0ZXJuIHZvaWQgX1B5R0NfUmVtb3ZlKFB5T2JqZWN0ICop
OwoKCgoKCnR5cGVkZWYgc3RydWN0IF9nY19oZWFkIHsKICAgICAgICBzdHJ1Y3QgX2djX2hlYWQg
KmdjX25leHQ7CiAgICAgICAgc3RydWN0IF9nY19oZWFkICpnY19wcmV2OwogICAgICAgIGludCBn
Y19yZWZzOwp9IFB5R0NfSGVhZDsKIyAyNzIgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0
aG9uMi4xL29iamltcGwuaCIKZXh0ZXJuIHZvaWQgX1B5R0NfRHVtcChQeUdDX0hlYWQgKik7CiMg
NjAgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAyCgojIDEg
Ii91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5ZGVidWcuaCIgMQoKCgoKCgoK
ZXh0ZXJuIGludCBQeV9EZWJ1Z0ZsYWc7CmV4dGVybiBpbnQgUHlfVmVyYm9zZUZsYWc7CmV4dGVy
biBpbnQgUHlfSW50ZXJhY3RpdmVGbGFnOwpleHRlcm4gaW50IFB5X09wdGltaXplRmxhZzsKZXh0
ZXJuIGludCBQeV9Ob1NpdGVGbGFnOwpleHRlcm4gaW50IFB5X1VzZUNsYXNzRXhjZXB0aW9uc0Zs
YWc7CmV4dGVybiBpbnQgUHlfRnJvemVuRmxhZzsKZXh0ZXJuIGludCBQeV9UYWJjaGVja0ZsYWc7
CmV4dGVybiBpbnQgUHlfVW5pY29kZUZsYWc7Cgp2b2lkIFB5X0ZhdGFsRXJyb3IoY2hhciAqbWVz
c2FnZSk7CiMgNjIgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5o
IiAyCgojIDEgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3VuaWNvZGVvYmpl
Y3QuaCIgMQojIDU1ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS91bmljb2Rl
b2JqZWN0LmgiCiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1
ZGUvY3R5cGUuaCIgMwojIDEgIi91c3IvbG9jYWwvZ2NjMy4wL2xpYi9nY2MtbGliL3Bvd2VycGMt
YXBwbGUtZGFyd2luMS4zLjIvMy4xL2luY2x1ZGUvcnVuZXR5cGUuaCIgMSAzCiMgNzIgIi91c3Iv
bG9jYWwvZ2NjMy4wL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luMS4zLjIvMy4xL2lu
Y2x1ZGUvcnVuZXR5cGUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2Fuc2kuaCIgMSAz
CiMgNzMgIi91c3IvbG9jYWwvZ2NjMy4wL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2lu
MS4zLjIvMy4xL2luY2x1ZGUvcnVuZXR5cGUuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9j
ZGVmcy5oIiAxIDMKIyA3NCAiL3Vzci9sb2NhbC9nY2MzLjAvbGliL2djYy1saWIvcG93ZXJwYy1h
cHBsZS1kYXJ3aW4xLjMuMi8zLjEvaW5jbHVkZS9ydW5ldHlwZS5oIiAyIDMKIyA5MSAiL3Vzci9s
b2NhbC9nY2MzLjAvbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW4xLjMuMi8zLjEvaW5j
bHVkZS9ydW5ldHlwZS5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBydW5lX3QgbWluOwog
ICAgICAgIHJ1bmVfdCBtYXg7CiAgICAgICAgcnVuZV90IG1hcDsKICAgICAgICB1bnNpZ25lZCBs
b25nICp0eXBlczsKfSBfUnVuZUVudHJ5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBu
cmFuZ2VzOwogICAgICAgIF9SdW5lRW50cnkgKnJhbmdlczsKfSBfUnVuZVJhbmdlOwoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIGNoYXIgbWFnaWNbOF07CiAgICAgICAgY2hhciBlbmNvZGluZ1sz
Ml07CgogICAgICAgIHJ1bmVfdCAoKnNnZXRydW5lKQogICAgICAgICAgICAoY29uc3QgY2hhciAq
LCB1bnNpZ25lZCBpbnQsIGNoYXIgY29uc3QgKiopOwogICAgICAgIGludCAoKnNwdXRydW5lKQog
ICAgICAgICAgICAocnVuZV90LCBjaGFyICosIHVuc2lnbmVkIGludCwgY2hhciAqKik7CiAgICAg
ICAgcnVuZV90IGludmFsaWRfcnVuZTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBydW5ldHlwZVso
MSA8PDggKV07CiAgICAgICAgcnVuZV90IG1hcGxvd2VyWygxIDw8OCApXTsKICAgICAgICBydW5l
X3QgbWFwdXBwZXJbKDEgPDw4ICldOwoKCgoKCgogICAgICAgIF9SdW5lUmFuZ2UgcnVuZXR5cGVf
ZXh0OwogICAgICAgIF9SdW5lUmFuZ2UgbWFwbG93ZXJfZXh0OwogICAgICAgIF9SdW5lUmFuZ2Ug
bWFwdXBwZXJfZXh0OwoKICAgICAgICB2b2lkICp2YXJpYWJsZTsKICAgICAgICBpbnQgdmFyaWFi
bGVfbGVuOwp9IF9SdW5lTG9jYWxlOwoKCgpleHRlcm4gX1J1bmVMb2NhbGUgX0RlZmF1bHRSdW5l
TG9jYWxlOwpleHRlcm4gX1J1bmVMb2NhbGUgKl9DdXJyZW50UnVuZUxvY2FsZTsKIyA2OSAiL3Vz
ci9pbmNsdWRlL2N0eXBlLmgiIDIgMwojIDExMiAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKdW5z
aWduZWQgbG9uZyBfX19ydW5ldHlwZSAoaW50KTsKaW50IF9fX3RvbG93ZXIgKGludCk7CmludCBf
X190b3VwcGVyIChpbnQpOwojIDEyNyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKc3RhdGljIF9f
aW5saW5lIGludApfX2lzdHlwZShpbnQgYywgdW5zaWduZWQgbG9uZyBmKQp7CiAgICAgICAgcmV0
dXJuKCgoKGMgJiAofigoMSA8PDggKSAtIDEpKSkgPyBfX19ydW5ldHlwZShjKSA6CiAgICAgICAg
ICAgIF9DdXJyZW50UnVuZUxvY2FsZS0+cnVuZXR5cGVbY10pICYgZikgPyAxIDogMCk7Cn0KCnN0
YXRpYyBfX2lubGluZSBpbnQKX19pc2N0eXBlKGludCBjLCB1bnNpZ25lZCBsb25nIGYpCnsKICAg
ICAgICByZXR1cm4oKCgoYyAmICh+KCgxIDw8OCApIC0gMSkpKSA/IDAgOgogICAgICAgICAgICBf
RGVmYXVsdFJ1bmVMb2NhbGUucnVuZXR5cGVbY10pICYgZikgPyAxIDogMCk7Cn0KCgoKc3RhdGlj
IF9faW5saW5lIGludAp0b3VwcGVyKGludCBjKQp7CiAgICAgICAgcmV0dXJuKChjICYgKH4oKDEg
PDw4ICkgLSAxKSkpID8KICAgICAgICAgICAgX19fdG91cHBlcihjKSA6IF9DdXJyZW50UnVuZUxv
Y2FsZS0+bWFwdXBwZXJbY10pOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50CnRvbG93ZXIoaW50IGMp
CnsKICAgICAgICByZXR1cm4oKGMgJiAofigoMSA8PDggKSAtIDEpKSkgPwogICAgICAgICAgICBf
X190b2xvd2VyKGMpIDogX0N1cnJlbnRSdW5lTG9jYWxlLT5tYXBsb3dlcltjXSk7Cn0KIyA1NiAi
L3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvdW5pY29kZW9iamVjdC5oIiAyCiMg
MTA4ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS91bmljb2Rlb2JqZWN0Lmgi
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgUHlfVU5JQ09ERTsKIyAxMTcgIi91c3IvbG9jYWwvcHl0
aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3VuaWNvZGVvYmplY3QuaCIKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgUHlfVUNTNDsKIyAyMDQgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3Vu
aWNvZGVvYmplY3QuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IG9iX3JlZmNudDsgc3RydWN0
IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgaW50IGxlbmd0aDsKICAgIFB5X1VOSUNPREUgKnN0
cjsKICAgIGxvbmcgaGFzaDsKICAgIFB5T2JqZWN0ICpkZWZlbmM7CgoKfSBQeVVuaWNvZGVPYmpl
Y3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFB5VW5pY29kZV9UeXBlOwojIDI0NyAiL3Vzci9sb2Nh
bC9weXRob24vaW5jbHVkZS9weXRob24yLjEvdW5pY29kZW9iamVjdC5oIgpleHRlcm4gUHlPYmpl
Y3QqIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKICAgIGNvbnN0IFB5X1VOSUNPREUgKnUsCiAgICBp
bnQgc2l6ZQogICAgKTsKCgoKCmV4dGVybiBQeV9VTklDT0RFICogUHlVbmljb2RlX0FzVW5pY29k
ZSgKICAgIFB5T2JqZWN0ICp1bmljb2RlCiAgICApOwoKCgpleHRlcm4gaW50IFB5VW5pY29kZV9H
ZXRTaXplKAogICAgUHlPYmplY3QgKnVuaWNvZGUKICAgICk7CiMgMjc5ICIvdXNyL2xvY2FsL3B5
dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS91bmljb2Rlb2JqZWN0LmgiCmV4dGVybiBpbnQgUHlVbmlj
b2RlX1Jlc2l6ZSgKICAgIFB5T2JqZWN0ICoqdW5pY29kZSwKICAgIGludCBsZW5ndGgKICAgICk7
CiMgMzAzICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS91bmljb2Rlb2JqZWN0
LmgiCmV4dGVybiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KAogICAgcmVn
aXN0ZXIgUHlPYmplY3QgKm9iaiwKICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgY29uc3Qg
Y2hhciAqZXJyb3JzCiAgICApOwojIDMyMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRo
b24yLjEvdW5pY29kZW9iamVjdC5oIgpleHRlcm4gUHlPYmplY3QqIFB5VW5pY29kZV9Gcm9tT2Jq
ZWN0KAogICAgcmVnaXN0ZXIgUHlPYmplY3QgKm9iagogICAgKTsKIyAzODIgIi91c3IvbG9jYWwv
cHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3VuaWNvZGVvYmplY3QuaCIKZXh0ZXJuIGNvbnN0IGNo
YXIqIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmcodm9pZCk7CgoKCgoKCgpleHRlcm4gaW50
IFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2RpbmcoCiAgICBjb25zdCBjaGFyICplbmNvZGluZwog
ICAgKTsKCgoKCgoKZXh0ZXJuIFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlKAogICAgY29uc3Qg
Y2hhciAqcywKICAgIGludCBzaXplLAogICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICBjb25z
dCBjaGFyICplcnJvcnMKICAgICk7CgoKCgpleHRlcm4gUHlPYmplY3QqIFB5VW5pY29kZV9FbmNv
ZGUoCiAgICBjb25zdCBQeV9VTklDT0RFICpzLAogICAgaW50IHNpemUsCiAgICBjb25zdCBjaGFy
ICplbmNvZGluZywKICAgIGNvbnN0IGNoYXIgKmVycm9ycwogICAgKTsKCgoKCmV4dGVybiBQeU9i
amVjdCogUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygKICAgIFB5T2JqZWN0ICp1bmljb2RlLAog
ICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICBjb25zdCBjaGFyICplcnJvcnMKICAgICk7CgoK
CmV4dGVybiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjgoCiAgICBjb25zdCBjaGFyICpz
dHJpbmcsCiAgICBpbnQgbGVuZ3RoLAogICAgY29uc3QgY2hhciAqZXJyb3JzCiAgICApOwoKZXh0
ZXJuIFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKAogICAgUHlPYmplY3QgKnVuaWNv
ZGUKICAgICk7CgpleHRlcm4gUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY4KAogICAgY29u
c3QgUHlfVU5JQ09ERSAqZGF0YSwKICAgIGludCBsZW5ndGgsCiAgICBjb25zdCBjaGFyICplcnJv
cnMKICAgICk7CiMgNDY3ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS91bmlj
b2Rlb2JqZWN0LmgiCmV4dGVybiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjE2KAogICAg
Y29uc3QgY2hhciAqc3RyaW5nLAogICAgaW50IGxlbmd0aCwKICAgIGNvbnN0IGNoYXIgKmVycm9y
cywKICAgIGludCAqYnl0ZW9yZGVyCgoKICAgICk7CgoKCgpleHRlcm4gUHlPYmplY3QqIFB5VW5p
Y29kZV9Bc1VURjE2U3RyaW5nKAogICAgUHlPYmplY3QgKnVuaWNvZGUKICAgICk7CiMgNTAzICIv
dXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS91bmljb2Rlb2JqZWN0LmgiCmV4dGVy
biBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjE2KAogICAgY29uc3QgUHlfVU5JQ09ERSAq
ZGF0YSwKICAgIGludCBsZW5ndGgsCiAgICBjb25zdCBjaGFyICplcnJvcnMsCiAgICBpbnQgYnl0
ZW9yZGVyCiAgICApOwoKCgpleHRlcm4gUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVbmljb2Rl
RXNjYXBlKAogICAgY29uc3QgY2hhciAqc3RyaW5nLAogICAgaW50IGxlbmd0aCwKICAgIGNvbnN0
IGNoYXIgKmVycm9ycwogICAgKTsKCmV4dGVybiBQeU9iamVjdCogUHlVbmljb2RlX0FzVW5pY29k
ZUVzY2FwZVN0cmluZygKICAgIFB5T2JqZWN0ICp1bmljb2RlCiAgICApOwoKZXh0ZXJuIFB5T2Jq
ZWN0KiBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZSgKICAgIGNvbnN0IFB5X1VOSUNPREUg
KmRhdGEsCiAgICBpbnQgbGVuZ3RoCiAgICApOwoKCgpleHRlcm4gUHlPYmplY3QqIFB5VW5pY29k
ZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlKAogICAgY29uc3QgY2hhciAqc3RyaW5nLAogICAgaW50
IGxlbmd0aCwKICAgIGNvbnN0IGNoYXIgKmVycm9ycwogICAgKTsKCmV4dGVybiBQeU9iamVjdCog
UHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZygKICAgIFB5T2JqZWN0ICp1bmljb2Rl
CiAgICApOwoKZXh0ZXJuIFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2Fw
ZSgKICAgIGNvbnN0IFB5X1VOSUNPREUgKmRhdGEsCiAgICBpbnQgbGVuZ3RoCiAgICApOwoKCgoK
CgoKZXh0ZXJuIFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKAogICAgY29uc3QgY2hh
ciAqc3RyaW5nLAogICAgaW50IGxlbmd0aCwKICAgIGNvbnN0IGNoYXIgKmVycm9ycwogICAgKTsK
CmV4dGVybiBQeU9iamVjdCogUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKAogICAgUHlPYmplY3Qg
KnVuaWNvZGUKICAgICk7CgpleHRlcm4gUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEo
CiAgICBjb25zdCBQeV9VTklDT0RFICpkYXRhLAogICAgaW50IGxlbmd0aCwKICAgIGNvbnN0IGNo
YXIgKmVycm9ycwogICAgKTsKCgoKCgoKCmV4dGVybiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29k
ZUFTQ0lJKAogICAgY29uc3QgY2hhciAqc3RyaW5nLAogICAgaW50IGxlbmd0aCwKICAgIGNvbnN0
IGNoYXIgKmVycm9ycwogICAgKTsKCmV4dGVybiBQeU9iamVjdCogUHlVbmljb2RlX0FzQVNDSUlT
dHJpbmcoCiAgICBQeU9iamVjdCAqdW5pY29kZQogICAgKTsKCmV4dGVybiBQeU9iamVjdCogUHlV
bmljb2RlX0VuY29kZUFTQ0lJKAogICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwKICAgIGludCBs
ZW5ndGgsCiAgICBjb25zdCBjaGFyICplcnJvcnMKICAgICk7CiMgNjEwICIvdXNyL2xvY2FsL3B5
dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS91bmljb2Rlb2JqZWN0LmgiCmV4dGVybiBQeU9iamVjdCog
UHlVbmljb2RlX0RlY29kZUNoYXJtYXAoCiAgICBjb25zdCBjaGFyICpzdHJpbmcsCiAgICBpbnQg
bGVuZ3RoLAogICAgUHlPYmplY3QgKm1hcHBpbmcsCgogICAgY29uc3QgY2hhciAqZXJyb3JzCiAg
ICApOwoKZXh0ZXJuIFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nKAogICAgUHlP
YmplY3QgKnVuaWNvZGUsCiAgICBQeU9iamVjdCAqbWFwcGluZwoKICAgICk7CgpleHRlcm4gUHlP
YmplY3QqIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwKAogICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0
YSwKICAgIGludCBsZW5ndGgsCiAgICBQeU9iamVjdCAqbWFwcGluZywKCiAgICBjb25zdCBjaGFy
ICplcnJvcnMKICAgICk7CiMgNjQ1ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIu
MS91bmljb2Rlb2JqZWN0LmgiCmV4dGVybiBQeU9iamVjdCAqIFB5VW5pY29kZV9UcmFuc2xhdGVD
aGFybWFwKAogICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwKICAgIGludCBsZW5ndGgsCiAgICBQ
eU9iamVjdCAqdGFibGUsCiAgICBjb25zdCBjaGFyICplcnJvcnMKICAgICk7CiMgNjk4ICIvdXNy
L2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS91bmljb2Rlb2JqZWN0LmgiCmV4dGVybiBp
bnQgUHlVbmljb2RlX0VuY29kZURlY2ltYWwoCiAgICBQeV9VTklDT0RFICpzLAogICAgaW50IGxl
bmd0aCwKICAgIGNoYXIgKm91dHB1dCwKICAgIGNvbnN0IGNoYXIgKmVycm9ycwogICAgKTsKIyA3
MTMgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3VuaWNvZGVvYmplY3QuaCIK
ZXh0ZXJuIFB5T2JqZWN0KiBQeVVuaWNvZGVfQ29uY2F0KAogICAgUHlPYmplY3QgKmxlZnQsCiAg
ICBQeU9iamVjdCAqcmlnaHQKICAgICk7CiMgNzI5ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRl
L3B5dGhvbjIuMS91bmljb2Rlb2JqZWN0LmgiCmV4dGVybiBQeU9iamVjdCogUHlVbmljb2RlX1Nw
bGl0KAogICAgUHlPYmplY3QgKnMsCiAgICBQeU9iamVjdCAqc2VwLAogICAgaW50IG1heHNwbGl0
CiAgICApOwoKCgoKCgpleHRlcm4gUHlPYmplY3QqIFB5VW5pY29kZV9TcGxpdGxpbmVzKAogICAg
UHlPYmplY3QgKnMsCiAgICBpbnQga2VlcGVuZHMKICAgICk7CiMgNzU3ICIvdXNyL2xvY2FsL3B5
dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS91bmljb2Rlb2JqZWN0LmgiCmV4dGVybiBQeU9iamVjdCAq
IFB5VW5pY29kZV9UcmFuc2xhdGUoCiAgICBQeU9iamVjdCAqc3RyLAogICAgUHlPYmplY3QgKnRh
YmxlLAogICAgY29uc3QgY2hhciAqZXJyb3JzCiAgICApOwoKCgoKZXh0ZXJuIFB5T2JqZWN0KiBQ
eVVuaWNvZGVfSm9pbigKICAgIFB5T2JqZWN0ICpzZXBhcmF0b3IsCiAgICBQeU9iamVjdCAqc2Vx
CiAgICApOwoKCgoKZXh0ZXJuIGludCBQeVVuaWNvZGVfVGFpbG1hdGNoKAogICAgUHlPYmplY3Qg
KnN0ciwKICAgIFB5T2JqZWN0ICpzdWJzdHIsCiAgICBpbnQgc3RhcnQsCiAgICBpbnQgZW5kLAog
ICAgaW50IGRpcmVjdGlvbgogICAgKTsKCgoKCmV4dGVybiBpbnQgUHlVbmljb2RlX0ZpbmQoCiAg
ICBQeU9iamVjdCAqc3RyLAogICAgUHlPYmplY3QgKnN1YnN0ciwKICAgIGludCBzdGFydCwKICAg
IGludCBlbmQsCiAgICBpbnQgZGlyZWN0aW9uCiAgICApOwoKCgpleHRlcm4gaW50IFB5VW5pY29k
ZV9Db3VudCgKICAgIFB5T2JqZWN0ICpzdHIsCiAgICBQeU9iamVjdCAqc3Vic3RyLAogICAgaW50
IHN0YXJ0LAogICAgaW50IGVuZAogICAgKTsKCgoKCmV4dGVybiBQeU9iamVjdCAqIFB5VW5pY29k
ZV9SZXBsYWNlKAogICAgUHlPYmplY3QgKnN0ciwKICAgIFB5T2JqZWN0ICpzdWJzdHIsCiAgICBQ
eU9iamVjdCAqcmVwbHN0ciwKICAgIGludCBtYXhjb3VudAoKICAgICk7CgoKCgpleHRlcm4gaW50
IFB5VW5pY29kZV9Db21wYXJlKAogICAgUHlPYmplY3QgKmxlZnQsCiAgICBQeU9iamVjdCAqcmln
aHQKICAgICk7CgoKCgpleHRlcm4gUHlPYmplY3QgKiBQeVVuaWNvZGVfRm9ybWF0KAogICAgUHlP
YmplY3QgKmZvcm1hdCwKICAgIFB5T2JqZWN0ICphcmdzCiAgICApOwoKCgoKCgoKZXh0ZXJuIGlu
dCBQeVVuaWNvZGVfQ29udGFpbnMoCiAgICBQeU9iamVjdCAqY29udGFpbmVyLAogICAgUHlPYmpl
Y3QgKmVsZW1lbnQKICAgICk7CiMgODQ5ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhv
bjIuMS91bmljb2Rlb2JqZWN0LmgiCmV4dGVybiBpbnQgX1B5VW5pY29kZV9Jc0xvd2VyY2FzZSgK
ICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgY2gKICAgICk7CgpleHRlcm4gaW50IF9QeVVu
aWNvZGVfSXNVcHBlcmNhc2UoCiAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFIGNoCiAgICAp
OwoKZXh0ZXJuIGludCBfUHlVbmljb2RlX0lzVGl0bGVjYXNlKAogICAgcmVnaXN0ZXIgY29uc3Qg
UHlfVU5JQ09ERSBjaAogICAgKTsKCmV4dGVybiBpbnQgX1B5VW5pY29kZV9Jc1doaXRlc3BhY2Uo
CiAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFIGNoCiAgICApOwoKZXh0ZXJuIGludCBfUHlV
bmljb2RlX0lzTGluZWJyZWFrKAogICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSBjaAogICAg
KTsKCmV4dGVybiBQeV9VTklDT0RFIF9QeVVuaWNvZGVfVG9Mb3dlcmNhc2UoCiAgICByZWdpc3Rl
ciBjb25zdCBQeV9VTklDT0RFIGNoCiAgICApOwoKZXh0ZXJuIFB5X1VOSUNPREUgX1B5VW5pY29k
ZV9Ub1VwcGVyY2FzZSgKICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgY2gKICAgICk7Cgpl
eHRlcm4gUHlfVU5JQ09ERSBfUHlVbmljb2RlX1RvVGl0bGVjYXNlKAogICAgcmVnaXN0ZXIgY29u
c3QgUHlfVU5JQ09ERSBjaAogICAgKTsKCmV4dGVybiBpbnQgX1B5VW5pY29kZV9Ub0RlY2ltYWxE
aWdpdCgKICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgY2gKICAgICk7CgpleHRlcm4gaW50
IF9QeVVuaWNvZGVfVG9EaWdpdCgKICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgY2gKICAg
ICk7CgpleHRlcm4gZG91YmxlIF9QeVVuaWNvZGVfVG9OdW1lcmljKAogICAgcmVnaXN0ZXIgY29u
c3QgUHlfVU5JQ09ERSBjaAogICAgKTsKCmV4dGVybiBpbnQgX1B5VW5pY29kZV9Jc0RlY2ltYWxE
aWdpdCgKICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgY2gKICAgICk7CgpleHRlcm4gaW50
IF9QeVVuaWNvZGVfSXNEaWdpdCgKICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgY2gKICAg
ICk7CgpleHRlcm4gaW50IF9QeVVuaWNvZGVfSXNOdW1lcmljKAogICAgcmVnaXN0ZXIgY29uc3Qg
UHlfVU5JQ09ERSBjaAogICAgKTsKCmV4dGVybiBpbnQgX1B5VW5pY29kZV9Jc0FscGhhKAogICAg
cmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSBjaAogICAgKTsKIyA2NCAiL3Vzci9sb2NhbC9weXRo
b24vaW5jbHVkZS9weXRob24yLjEvUHl0aG9uLmgiIDIKIyAxICIvdXNyL2xvY2FsL3B5dGhvbi9p
bmNsdWRlL3B5dGhvbjIuMS9pbnRvYmplY3QuaCIgMQojIDIzICIvdXNyL2xvY2FsL3B5dGhvbi9p
bmNsdWRlL3B5dGhvbjIuMS9pbnRvYmplY3QuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IG9i
X3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgbG9uZyBvYl9pdmFsOwp9
IFB5SW50T2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUludF9UeXBlOwoKCgpleHRlcm4g
UHlPYmplY3QgKiBQeUludF9Gcm9tU3RyaW5nKGNoYXIqLCBjaGFyKiosIGludCk7CmV4dGVybiBQ
eU9iamVjdCAqIFB5SW50X0Zyb21Vbmljb2RlKFB5X1VOSUNPREUqLCBpbnQsIGludCk7CmV4dGVy
biBQeU9iamVjdCAqIFB5SW50X0Zyb21Mb25nKGxvbmcpOwpleHRlcm4gbG9uZyBQeUludF9Bc0xv
bmcoUHlPYmplY3QgKik7CmV4dGVybiBsb25nIFB5SW50X0dldE1heCh2b2lkKTsKIyA0OCAiL3Vz
ci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvaW50b2JqZWN0LmgiCmV4dGVybiBQeUlu
dE9iamVjdCBfUHlfWmVyb1N0cnVjdCwgX1B5X1RydWVTdHJ1Y3Q7CiMgNjIgIi91c3IvbG9jYWwv
cHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2ludG9iamVjdC5oIgpleHRlcm4gdW5zaWduZWQgbG9u
ZyBQeU9TX3N0cnRvdWwoY2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4gbG9uZyBQeU9TX3N0
cnRvbChjaGFyICosIGNoYXIgKiosIGludCk7CiMgNjUgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1
ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAyCiMgMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9w
eXRob24yLjEvbG9uZ29iamVjdC5oIiAxCiMgMTAgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUv
cHl0aG9uMi4xL2xvbmdvYmplY3QuaCIKdHlwZWRlZiBzdHJ1Y3QgX2xvbmdvYmplY3QgUHlMb25n
T2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUxvbmdfVHlwZTsKCgoKZXh0ZXJuIFB5T2Jq
ZWN0ICogUHlMb25nX0Zyb21Mb25nKGxvbmcpOwpleHRlcm4gUHlPYmplY3QgKiBQeUxvbmdfRnJv
bVVuc2lnbmVkTG9uZyh1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlMb25nX0Zy
b21Eb3VibGUoZG91YmxlKTsKZXh0ZXJuIGxvbmcgUHlMb25nX0FzTG9uZyhQeU9iamVjdCAqKTsK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgUHlMb25nX0FzVW5zaWduZWRMb25nKFB5T2JqZWN0ICopOwpl
eHRlcm4gZG91YmxlIFB5TG9uZ19Bc0RvdWJsZShQeU9iamVjdCAqKTsKZXh0ZXJuIFB5T2JqZWN0
ICogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKik7CmV4dGVybiB2b2lkICogUHlMb25nX0FzVm9p
ZFB0cihQeU9iamVjdCAqKTsKIyAzOCAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24y
LjEvbG9uZ29iamVjdC5oIgpleHRlcm4gUHlPYmplY3QgKiBQeUxvbmdfRnJvbUxvbmdMb25nKGxv
bmcgbG9uZyk7CmV4dGVybiBQeU9iamVjdCAqIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1
bnNpZ25lZCBsb25nIGxvbmcpOwpleHRlcm4gbG9uZyBsb25nIFB5TG9uZ19Bc0xvbmdMb25nKFB5
T2JqZWN0ICopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIFB5TG9uZ19Bc1Vuc2lnbmVkTG9u
Z0xvbmcoUHlPYmplY3QgKik7CgoKUHlPYmplY3QgKiBQeUxvbmdfRnJvbVN0cmluZyhjaGFyICos
IGNoYXIgKiosIGludCk7ClB5T2JqZWN0ICogUHlMb25nX0Zyb21Vbmljb2RlKFB5X1VOSUNPREUq
LCBpbnQsIGludCk7CiMgNjYgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5
dGhvbi5oIiAyCiMgMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvZmxvYXRv
YmplY3QuaCIgMQojIDE0ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9mbG9h
dG9iamVjdC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgb2JfcmVmY250OyBzdHJ1Y3QgX3R5
cGVvYmplY3QgKm9iX3R5cGU7CiAgICBkb3VibGUgb2JfZnZhbDsKfSBQeUZsb2F0T2JqZWN0OwoK
ZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUZsb2F0X1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5
RmxvYXRfRnJvbVN0cmluZyhQeU9iamVjdCosIGNoYXIqKik7CmV4dGVybiBQeU9iamVjdCAqIFB5
RmxvYXRfRnJvbURvdWJsZShkb3VibGUpOwpleHRlcm4gZG91YmxlIFB5RmxvYXRfQXNEb3VibGUo
UHlPYmplY3QgKik7CiMgNjcgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5
dGhvbi5oIiAyCgojIDEgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2NvbXBs
ZXhvYmplY3QuaCIgMQojIDkgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Nv
bXBsZXhvYmplY3QuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgZG91YmxlIHJlYWw7CiAgICBkb3Vi
bGUgaW1hZzsKfSBQeV9jb21wbGV4OwojIDIzICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5
dGhvbjIuMS9jb21wbGV4b2JqZWN0LmgiCmV4dGVybiBQeV9jb21wbGV4IF9QeV9jX3N1bShQeV9j
b21wbGV4LCBQeV9jb21wbGV4KTsKZXh0ZXJuIFB5X2NvbXBsZXggX1B5X2NfZGlmZihQeV9jb21w
bGV4LCBQeV9jb21wbGV4KTsKZXh0ZXJuIFB5X2NvbXBsZXggX1B5X2NfbmVnKFB5X2NvbXBsZXgp
OwpleHRlcm4gUHlfY29tcGxleCBfUHlfY19wcm9kKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwpl
eHRlcm4gUHlfY29tcGxleCBfUHlfY19xdW90KFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwpleHRl
cm4gUHlfY29tcGxleCBfUHlfY19wb3coUHlfY29tcGxleCwgUHlfY29tcGxleCk7CiMgMzggIi91
c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2NvbXBsZXhvYmplY3QuaCIKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBl
OwogICAgUHlfY29tcGxleCBjdmFsOwp9IFB5Q29tcGxleE9iamVjdDsKCmV4dGVybiBQeVR5cGVP
YmplY3QgUHlDb21wbGV4X1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5Q29tcGxleF9Gcm9t
Q0NvbXBsZXgoUHlfY29tcGxleCk7CmV4dGVybiBQeU9iamVjdCAqIFB5Q29tcGxleF9Gcm9tRG91
Ymxlcyhkb3VibGUgcmVhbCwgZG91YmxlIGltYWcpOwoKZXh0ZXJuIGRvdWJsZSBQeUNvbXBsZXhf
UmVhbEFzRG91YmxlKFB5T2JqZWN0ICpvcCk7CmV4dGVybiBkb3VibGUgUHlDb21wbGV4X0ltYWdB
c0RvdWJsZShQeU9iamVjdCAqb3ApOwpleHRlcm4gUHlfY29tcGxleCBQeUNvbXBsZXhfQXNDQ29t
cGxleChQeU9iamVjdCAqb3ApOwojIDY5ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhv
bjIuMS9QeXRob24uaCIgMgoKIyAxICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIu
MS9yYW5nZW9iamVjdC5oIiAxCiMgMTIgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9u
Mi4xL3Jhbmdlb2JqZWN0LmgiCmV4dGVybiBQeVR5cGVPYmplY3QgUHlSYW5nZV9UeXBlOwoKCgpl
eHRlcm4gUHlPYmplY3QgKiBQeVJhbmdlX05ldyhsb25nLCBsb25nLCBsb25nLCBpbnQpOwojIDcx
ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9QeXRob24uaCIgMgojIDEgIi91
c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3N0cmluZ29iamVjdC5oIiAxCiMgMzkg
Ii91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3N0cmluZ29iamVjdC5oIgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBpbnQgb2JfcmVmY250OyBzdHJ1Y3QgX3R5cGVvYmplY3QgKm9iX3R5
cGU7IGludCBvYl9zaXplOwoKICAgIGxvbmcgb2Jfc2hhc2g7CgoKICAgIFB5T2JqZWN0ICpvYl9z
aW50ZXJuZWQ7CgogICAgY2hhciBvYl9zdmFsWzFdOwp9IFB5U3RyaW5nT2JqZWN0OwoKZXh0ZXJu
IFB5VHlwZU9iamVjdCBQeVN0cmluZ19UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeVN0cmlu
Z19Gcm9tU3RyaW5nQW5kU2l6ZShjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBQeU9iamVjdCAq
IFB5U3RyaW5nX0Zyb21TdHJpbmcoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBQeVN0cmluZ19T
aXplKFB5T2JqZWN0ICopOwpleHRlcm4gY2hhciAqIFB5U3RyaW5nX0FzU3RyaW5nKFB5T2JqZWN0
ICopOwpleHRlcm4gdm9pZCBQeVN0cmluZ19Db25jYXQoUHlPYmplY3QgKiosIFB5T2JqZWN0ICop
OwpleHRlcm4gdm9pZCBQeVN0cmluZ19Db25jYXRBbmREZWwoUHlPYmplY3QgKiosIFB5T2JqZWN0
ICopOwpleHRlcm4gaW50IF9QeVN0cmluZ19SZXNpemUoUHlPYmplY3QgKiosIGludCk7CmV4dGVy
biBQeU9iamVjdCAqIFB5U3RyaW5nX0Zvcm1hdChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKZXh0
ZXJuIFB5T2JqZWN0ICogX1B5U3RyaW5nX0Zvcm1hdExvbmcoUHlPYmplY3QqLCBpbnQsIGludCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGNo
YXIqKiwgaW50Kik7CgoKZXh0ZXJuIHZvaWQgUHlTdHJpbmdfSW50ZXJuSW5QbGFjZShQeU9iamVj
dCAqKik7CmV4dGVybiBQeU9iamVjdCAqIFB5U3RyaW5nX0ludGVybkZyb21TdHJpbmcoY29uc3Qg
Y2hhciAqKTsKZXh0ZXJuIHZvaWQgX1B5X1JlbGVhc2VJbnRlcm5lZFN0cmluZ3Modm9pZCk7CiMg
ODQgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3N0cmluZ29iamVjdC5oIgpl
eHRlcm4gUHlPYmplY3QqIFB5U3RyaW5nX0RlY29kZSgKICAgIGNvbnN0IGNoYXIgKnMsCiAgICBp
bnQgc2l6ZSwKICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgY29uc3QgY2hhciAqZXJyb3Jz
CiAgICApOwoKCgoKZXh0ZXJuIFB5T2JqZWN0KiBQeVN0cmluZ19FbmNvZGUoCiAgICBjb25zdCBj
aGFyICpzLAogICAgaW50IHNpemUsCiAgICBjb25zdCBjaGFyICplbmNvZGluZywKICAgIGNvbnN0
IGNoYXIgKmVycm9ycwogICAgKTsKCgoKCmV4dGVybiBQeU9iamVjdCogUHlTdHJpbmdfQXNFbmNv
ZGVkU3RyaW5nKAogICAgUHlPYmplY3QgKnN0ciwKICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAog
ICAgY29uc3QgY2hhciAqZXJyb3JzCiAgICApOwoKCgoKCgoKZXh0ZXJuIGludCBQeVN0cmluZ19B
c1N0cmluZ0FuZFNpemUoCiAgICByZWdpc3RlciBQeU9iamVjdCAqb2JqLAogICAgcmVnaXN0ZXIg
Y2hhciAqKnMsCiAgICByZWdpc3RlciBpbnQgKmxlbgoKCiAgICApOwojIDcyICIvdXNyL2xvY2Fs
L3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9QeXRob24uaCIgMgojIDEgIi91c3IvbG9jYWwvcHl0
aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2J1ZmZlcm9iamVjdC5oIiAxCiMgMTMgIi91c3IvbG9jYWwv
cHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2J1ZmZlcm9iamVjdC5oIgpleHRlcm4gUHlUeXBlT2Jq
ZWN0IFB5QnVmZmVyX1R5cGU7CgoKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlCdWZmZXJfRnJvbU9i
amVjdChQeU9iamVjdCAqYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBvZmZzZXQsIGludCBzaXplKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlC
dWZmZXJfRnJvbVJlYWRXcml0ZU9iamVjdChQeU9iamVjdCAqYmFzZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2l6ZSk7CgpleHRlcm4gUHlPYmplY3QgKiBQeUJ1ZmZlcl9Gcm9tTWVtb3J5KHZvaWQgKnB0
ciwgaW50IHNpemUpOwpleHRlcm4gUHlPYmplY3QgKiBQeUJ1ZmZlcl9Gcm9tUmVhZFdyaXRlTWVt
b3J5KHZvaWQgKnB0ciwgaW50IHNpemUpOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlCdWZmZXJfTmV3
KGludCBzaXplKTsKIyA3MyAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvUHl0
aG9uLmgiIDIKIyAxICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS90dXBsZW9i
amVjdC5oIiAxCiMgMjIgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3R1cGxl
b2JqZWN0LmgiCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlw
ZW9iamVjdCAqb2JfdHlwZTsgaW50IG9iX3NpemU7CiAgICBQeU9iamVjdCAqb2JfaXRlbVsxXTsK
fSBQeVR1cGxlT2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVR1cGxlX1R5cGU7CgoKCmV4
dGVybiBQeU9iamVjdCAqIFB5VHVwbGVfTmV3KGludCBzaXplKTsKZXh0ZXJuIGludCBQeVR1cGxl
X1NpemUoUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5VHVwbGVfR2V0SXRlbShQeU9i
amVjdCAqLCBpbnQpOwpleHRlcm4gaW50IFB5VHVwbGVfU2V0SXRlbShQeU9iamVjdCAqLCBpbnQs
IFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeVR1cGxlX0dldFNsaWNlKFB5T2JqZWN0
ICosIGludCwgaW50KTsKZXh0ZXJuIGludCBfUHlUdXBsZV9SZXNpemUoUHlPYmplY3QgKiosIGlu
dCwgaW50KTsKIyA3NCAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvUHl0aG9u
LmgiIDIKIyAxICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9saXN0b2JqZWN0
LmgiIDEKIyAyMiAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvbGlzdG9iamVj
dC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgb2JfcmVmY250OyBzdHJ1Y3QgX3R5cGVvYmpl
Y3QgKm9iX3R5cGU7IGludCBvYl9zaXplOwogICAgUHlPYmplY3QgKipvYl9pdGVtOwp9IFB5TGlz
dE9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlMaXN0X1R5cGU7CgoKCmV4dGVybiBQeU9i
amVjdCAqIFB5TGlzdF9OZXcoaW50IHNpemUpOwpleHRlcm4gaW50IFB5TGlzdF9TaXplKFB5T2Jq
ZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUxpc3RfR2V0SXRlbShQeU9iamVjdCAqLCBpbnQp
OwpleHRlcm4gaW50IFB5TGlzdF9TZXRJdGVtKFB5T2JqZWN0ICosIGludCwgUHlPYmplY3QgKik7
CmV4dGVybiBpbnQgUHlMaXN0X0luc2VydChQeU9iamVjdCAqLCBpbnQsIFB5T2JqZWN0ICopOwpl
eHRlcm4gaW50IFB5TGlzdF9BcHBlbmQoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQ
eU9iamVjdCAqIFB5TGlzdF9HZXRTbGljZShQeU9iamVjdCAqLCBpbnQsIGludCk7CmV4dGVybiBp
bnQgUHlMaXN0X1NldFNsaWNlKFB5T2JqZWN0ICosIGludCwgaW50LCBQeU9iamVjdCAqKTsKZXh0
ZXJuIGludCBQeUxpc3RfU29ydChQeU9iamVjdCAqKTsKZXh0ZXJuIGludCBQeUxpc3RfUmV2ZXJz
ZShQeU9iamVjdCAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlMaXN0X0FzVHVwbGUoUHlPYmplY3Qg
Kik7CiMgNzUgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAy
CiMgMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvZGljdG9iamVjdC5oIiAx
CiMgMTAgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2RpY3RvYmplY3QuaCIK
ZXh0ZXJuIFB5VHlwZU9iamVjdCBQeURpY3RfVHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlE
aWN0X05ldyh2b2lkKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlEaWN0X0dldEl0ZW0oUHlPYmplY3Qg
Km1wLCBQeU9iamVjdCAqa2V5KTsKZXh0ZXJuIGludCBQeURpY3RfU2V0SXRlbShQeU9iamVjdCAq
bXAsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICppdGVtKTsKZXh0ZXJuIGludCBQeURpY3RfRGVs
SXRlbShQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOwpleHRlcm4gdm9pZCBQeURpY3RfQ2xl
YXIoUHlPYmplY3QgKm1wKTsKZXh0ZXJuIGludCBQeURpY3RfTmV4dAogICAgICAgIChQeU9iamVj
dCAqbXAsIGludCAqcG9zLCBQeU9iamVjdCAqKmtleSwgUHlPYmplY3QgKip2YWx1ZSk7CmV4dGVy
biBQeU9iamVjdCAqIFB5RGljdF9LZXlzKFB5T2JqZWN0ICptcCk7CmV4dGVybiBQeU9iamVjdCAq
IFB5RGljdF9WYWx1ZXMoUHlPYmplY3QgKm1wKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlEaWN0X0l0
ZW1zKFB5T2JqZWN0ICptcCk7CmV4dGVybiBpbnQgUHlEaWN0X1NpemUoUHlPYmplY3QgKm1wKTsK
ZXh0ZXJuIFB5T2JqZWN0ICogUHlEaWN0X0NvcHkoUHlPYmplY3QgKm1wKTsKCgpleHRlcm4gUHlP
YmplY3QgKiBQeURpY3RfR2V0SXRlbVN0cmluZyhQeU9iamVjdCAqZHAsIGNoYXIgKmtleSk7CmV4
dGVybiBpbnQgUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjaGFyICprZXksIFB5
T2JqZWN0ICppdGVtKTsKZXh0ZXJuIGludCBQeURpY3RfRGVsSXRlbVN0cmluZyhQeU9iamVjdCAq
ZHAsIGNoYXIgKmtleSk7CiMgNzYgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4x
L1B5dGhvbi5oIiAyCiMgMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvbWV0
aG9kb2JqZWN0LmgiIDEKIyAxMCAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEv
bWV0aG9kb2JqZWN0LmgiCmV4dGVybiBQeVR5cGVPYmplY3QgUHlDRnVuY3Rpb25fVHlwZTsKCgoK
dHlwZWRlZiBQeU9iamVjdCAqKCpQeUNGdW5jdGlvbikoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7
CnR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpKFB5T2JqZWN0ICos
IFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFB5T2JqZWN0ICopOwoKZXh0ZXJuIFB5Q0Z1bmN0aW9uIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9u
KFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUNGdW5jdGlvbl9HZXRTZWxmKFB5T2Jq
ZWN0ICopOwpleHRlcm4gaW50IFB5Q0Z1bmN0aW9uX0dldEZsYWdzKFB5T2JqZWN0ICopOwojIDMx
ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9tZXRob2RvYmplY3QuaCIKc3Ry
dWN0IFB5TWV0aG9kRGVmIHsKICAgIGNoYXIgKm1sX25hbWU7CiAgICBQeUNGdW5jdGlvbiBtbF9t
ZXRoOwogICAgaW50IG1sX2ZsYWdzOwogICAgY2hhciAqbWxfZG9jOwp9Owp0eXBlZGVmIHN0cnVj
dCBQeU1ldGhvZERlZiBQeU1ldGhvZERlZjsKCmV4dGVybiBQeU9iamVjdCAqIFB5X0ZpbmRNZXRo
b2QoUHlNZXRob2REZWZbXSwgUHlPYmplY3QgKiwgY2hhciAqKTsKCmV4dGVybiBQeU9iamVjdCAq
IFB5Q0Z1bmN0aW9uX05ldyhQeU1ldGhvZERlZiAqLCBQeU9iamVjdCAqKTsKCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgUHlNZXRob2RDaGFpbiB7CiAgICBQeU1ldGhvZERlZiAqbWV0aG9kczsKICAgIHN0
cnVjdCBQeU1ldGhvZENoYWluICpsaW5rOwp9IFB5TWV0aG9kQ2hhaW47CgpleHRlcm4gUHlPYmpl
Y3QgKiBQeV9GaW5kTWV0aG9kSW5DaGFpbihQeU1ldGhvZENoYWluICosIFB5T2JqZWN0ICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKTsK
CnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAq
b2JfdHlwZTsKICAgIFB5TWV0aG9kRGVmICptX21sOwogICAgUHlPYmplY3QgKm1fc2VsZjsKfSBQ
eUNGdW5jdGlvbk9iamVjdDsKIyA3NyAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24y
LjEvUHl0aG9uLmgiIDIKIyAxICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9t
b2R1bGVvYmplY3QuaCIgMQojIDEwICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIu
MS9tb2R1bGVvYmplY3QuaCIKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeU1vZHVsZV9UeXBlOwoKCgpl
eHRlcm4gUHlPYmplY3QgKiBQeU1vZHVsZV9OZXcoY2hhciAqKTsKZXh0ZXJuIFB5T2JqZWN0ICog
UHlNb2R1bGVfR2V0RGljdChQeU9iamVjdCAqKTsKZXh0ZXJuIGNoYXIgKiBQeU1vZHVsZV9HZXRO
YW1lKFB5T2JqZWN0ICopOwpleHRlcm4gY2hhciAqIFB5TW9kdWxlX0dldEZpbGVuYW1lKFB5T2Jq
ZWN0ICopOwpleHRlcm4gdm9pZCBfUHlNb2R1bGVfQ2xlYXIoUHlPYmplY3QgKik7CiMgNzggIi91
c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAyCiMgMSAiL3Vzci9s
b2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvZnVuY29iamVjdC5oIiAxCiMgMTAgIi91c3Iv
bG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Z1bmNvYmplY3QuaCIKdHlwZWRlZiBzdHJ1
Y3QgewogICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAg
UHlPYmplY3QgKmZ1bmNfY29kZTsKICAgIFB5T2JqZWN0ICpmdW5jX2dsb2JhbHM7CiAgICBQeU9i
amVjdCAqZnVuY19kZWZhdWx0czsKICAgIFB5T2JqZWN0ICpmdW5jX2Nsb3N1cmU7CiAgICBQeU9i
amVjdCAqZnVuY19kb2M7CiAgICBQeU9iamVjdCAqZnVuY19uYW1lOwogICAgUHlPYmplY3QgKmZ1
bmNfZGljdDsKICAgIFB5T2JqZWN0ICpmdW5jX3dlYWtyZWZsaXN0Owp9IFB5RnVuY3Rpb25PYmpl
Y3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFB5RnVuY3Rpb25fVHlwZTsKCgoKZXh0ZXJuIFB5T2Jq
ZWN0ICogUHlGdW5jdGlvbl9OZXcoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9i
amVjdCAqIFB5RnVuY3Rpb25fR2V0Q29kZShQeU9iamVjdCAqKTsKZXh0ZXJuIFB5T2JqZWN0ICog
UHlGdW5jdGlvbl9HZXRHbG9iYWxzKFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUZ1
bmN0aW9uX0dldERlZmF1bHRzKFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5RnVuY3Rpb25fU2V0
RGVmYXVsdHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVu
Y3Rpb25fR2V0Q2xvc3VyZShQeU9iamVjdCAqKTsKZXh0ZXJuIGludCBQeUZ1bmN0aW9uX1NldENs
b3N1cmUoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiMgNzkgIi91c3IvbG9jYWwvcHl0aG9uL2lu
Y2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAyCiMgMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVk
ZS9weXRob24yLjEvY2xhc3NvYmplY3QuaCIgMQojIDEyICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNs
dWRlL3B5dGhvbjIuMS9jbGFzc29iamVjdC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgb2Jf
cmVmY250OyBzdHJ1Y3QgX3R5cGVvYmplY3QgKm9iX3R5cGU7CiAgICBQeU9iamVjdCAqY2xfYmFz
ZXM7CiAgICBQeU9iamVjdCAqY2xfZGljdDsKICAgIFB5T2JqZWN0ICpjbF9uYW1lOwoKICAgIFB5
T2JqZWN0ICpjbF9nZXRhdHRyOwogICAgUHlPYmplY3QgKmNsX3NldGF0dHI7CiAgICBQeU9iamVj
dCAqY2xfZGVsYXR0cjsKfSBQeUNsYXNzT2JqZWN0OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50
IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgUHlDbGFzc09iamVj
dCAqaW5fY2xhc3M7CiAgICBQeU9iamVjdCAqaW5fZGljdDsKICAgIFB5T2JqZWN0ICppbl93ZWFr
cmVmbGlzdDsKfSBQeUluc3RhbmNlT2JqZWN0OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IG9i
X3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgUHlPYmplY3QgKmltX2Z1
bmM7CiAgICBQeU9iamVjdCAqaW1fc2VsZjsKICAgIFB5T2JqZWN0ICppbV9jbGFzczsKICAgIFB5
T2JqZWN0ICppbV93ZWFrcmVmbGlzdDsKfSBQeU1ldGhvZE9iamVjdDsKCmV4dGVybiBQeVR5cGVP
YmplY3QgUHlDbGFzc19UeXBlLCBQeUluc3RhbmNlX1R5cGUsIFB5TWV0aG9kX1R5cGU7CgoKCgoK
ZXh0ZXJuIFB5T2JqZWN0ICogUHlDbGFzc19OZXcoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlP
YmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5SW5zdGFuY2VfTmV3KFB5T2JqZWN0ICosIFB5
T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlP
YmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5SW5zdGFuY2VfTmV3UmF3KFB5T2JqZWN0ICos
IFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeU1ldGhvZF9OZXcoUHlPYmplY3QgKiwg
UHlPYmplY3QgKiwgUHlPYmplY3QgKik7CgpleHRlcm4gUHlPYmplY3QgKiBQeU1ldGhvZF9GdW5j
dGlvbihQeU9iamVjdCAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlNZXRob2RfU2VsZihQeU9iamVj
dCAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlNZXRob2RfQ2xhc3MoUHlPYmplY3QgKik7CiMgNjMg
Ii91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2NsYXNzb2JqZWN0LmgiCmV4dGVy
biBpbnQgUHlDbGFzc19Jc1N1YmNsYXNzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwojIDgwICIv
dXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9QeXRob24uaCIgMgojIDEgIi91c3Iv
bG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2ZpbGVvYmplY3QuaCIgMQojIDEwICIvdXNy
L2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9maWxlb2JqZWN0LmgiCmV4dGVybiBQeVR5
cGVPYmplY3QgUHlGaWxlX1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5RmlsZV9Gcm9tU3Ry
aW5nKGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIHZvaWQgUHlGaWxlX1NldEJ1ZlNpemUoUHlPYmpl
Y3QgKiwgaW50KTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlGaWxlX0Zyb21GaWxlKEZJTEUgKiwgY2hh
ciAqLCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCAoKikoRklMRSAqKSk7CmV4dGVybiBGSUxFICogUHlGaWxlX0FzRmlsZShQeU9iamVjdCAq
KTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlGaWxlX05hbWUoUHlPYmplY3QgKik7CmV4dGVybiBQeU9i
amVjdCAqIFB5RmlsZV9HZXRMaW5lKFB5T2JqZWN0ICosIGludCk7CmV4dGVybiBpbnQgUHlGaWxl
X1dyaXRlT2JqZWN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIGludCk7CmV4dGVybiBpbnQgUHlG
aWxlX1NvZnRTcGFjZShQeU9iamVjdCAqLCBpbnQpOwpleHRlcm4gaW50IFB5RmlsZV9Xcml0ZVN0
cmluZyhjaGFyICosIFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5T2JqZWN0X0FzRmlsZURlc2Ny
aXB0b3IoUHlPYmplY3QgKik7CiMgODEgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9u
Mi4xL1B5dGhvbi5oIiAyCiMgMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEv
Y29iamVjdC5oIiAxCiMgMTcgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Nv
YmplY3QuaCIKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUNPYmplY3RfVHlwZTsKIyAyNyAiL3Vzci9s
b2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvY29iamVjdC5oIgpleHRlcm4gUHlPYmplY3Qg
KgpQeUNPYmplY3RfRnJvbVZvaWRQdHIodm9pZCAqY29iaiwgdm9pZCAoKmRlc3RydWN0KSh2b2lk
KikpOwoKCgoKCgoKZXh0ZXJuIFB5T2JqZWN0ICoKUHlDT2JqZWN0X0Zyb21Wb2lkUHRyQW5kRGVz
Yyh2b2lkICpjb2JqLCB2b2lkICpkZXNjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKCpkZXN0cnVjdCkodm9pZCosdm9pZCopKTsKCgpleHRlcm4gdm9pZCAqClB5Q09iamVjdF9B
c1ZvaWRQdHIoUHlPYmplY3QgKik7CgoKZXh0ZXJuIHZvaWQgKgpQeUNPYmplY3RfR2V0RGVzYyhQ
eU9iamVjdCAqKTsKCgpleHRlcm4gdm9pZCAqClB5Q09iamVjdF9JbXBvcnQoY2hhciAqbW9kdWxl
X25hbWUsIGNoYXIgKmNvYmplY3RfbmFtZSk7CiMgODIgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1
ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAyCiMgMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9w
eXRob24yLjEvdHJhY2ViYWNrLmgiIDEKIyAxMCAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9w
eXRob24yLjEvdHJhY2ViYWNrLmgiCnN0cnVjdCBfZnJhbWU7CgppbnQgUHlUcmFjZUJhY2tfSGVy
ZShzdHJ1Y3QgX2ZyYW1lICopOwpQeU9iamVjdCAqIFB5VHJhY2VCYWNrX0ZldGNoKHZvaWQpOwpp
bnQgUHlUcmFjZUJhY2tfU3RvcmUoUHlPYmplY3QgKik7CmludCBQeVRyYWNlQmFja19QcmludChQ
eU9iamVjdCAqLCBQeU9iamVjdCAqKTsKCgpleHRlcm4gUHlUeXBlT2JqZWN0IFB5VHJhY2VCYWNr
X1R5cGU7CiMgODMgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5o
IiAyCiMgMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvc2xpY2VvYmplY3Qu
aCIgMQojIDkgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3NsaWNlb2JqZWN0
LmgiCmV4dGVybiBQeU9iamVjdCBfUHlfRWxsaXBzaXNPYmplY3Q7CiMgMjIgIi91c3IvbG9jYWwv
cHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3NsaWNlb2JqZWN0LmgiCnR5cGVkZWYgc3RydWN0IHsK
ICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsKICAgIFB5T2Jq
ZWN0ICpzdGFydCwgKnN0b3AsICpzdGVwOwp9IFB5U2xpY2VPYmplY3Q7CgpleHRlcm4gUHlUeXBl
T2JqZWN0IFB5U2xpY2VfVHlwZTsKCgoKUHlPYmplY3QgKiBQeVNsaWNlX05ldyhQeU9iamVjdCog
c3RhcnQsIFB5T2JqZWN0KiBzdG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHlPYmplY3QqIHN0ZXApOwppbnQgUHlTbGljZV9HZXRJbmRpY2VzKFB5U2xpY2VPYmplY3QgKnIs
IGludCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnN0YXJ0
LCBpbnQgKnN0b3AsIGludCAqc3RlcCk7CiMgODQgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUv
cHl0aG9uMi4xL1B5dGhvbi5oIiAyCiMgMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRo
b24yLjEvY2VsbG9iamVjdC5oIiAxCiMgOSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRo
b24yLjEvY2VsbG9iamVjdC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNu
dDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOyBpbnQgb2Jfc2l6ZTsKICAgICAgICBQeU9i
amVjdCAqb2JfcmVmOwp9IFB5Q2VsbE9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlDZWxs
X1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5Q2VsbF9OZXcoUHlPYmplY3QgKik7CmV4dGVy
biBQeU9iamVjdCAqIFB5Q2VsbF9HZXQoUHlPYmplY3QgKik7CmV4dGVybiBpbnQgUHlDZWxsX1Nl
dChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIyA4NSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVk
ZS9weXRob24yLjEvUHl0aG9uLmgiIDIKCiMgMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9w
eXRob24yLjEvY29kZWNzLmgiIDEKIyAyNiAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRo
b24yLjEvY29kZWNzLmgiCmV4dGVybiBpbnQgUHlDb2RlY19SZWdpc3RlcigKICAgICAgIFB5T2Jq
ZWN0ICpzZWFyY2hfZnVuY3Rpb24KICAgICAgICk7CiMgNDggIi91c3IvbG9jYWwvcHl0aG9uL2lu
Y2x1ZGUvcHl0aG9uMi4xL2NvZGVjcy5oIgpleHRlcm4gUHlPYmplY3QgKiBfUHlDb2RlY19Mb29r
dXAoCiAgICAgICBjb25zdCBjaGFyICplbmNvZGluZwogICAgICAgKTsKIyA2MiAiL3Vzci9sb2Nh
bC9weXRob24vaW5jbHVkZS9weXRob24yLjEvY29kZWNzLmgiCmV4dGVybiBQeU9iamVjdCAqIFB5
Q29kZWNfRW5jb2RlKAogICAgICAgUHlPYmplY3QgKm9iamVjdCwKICAgICAgIGNvbnN0IGNoYXIg
KmVuY29kaW5nLAogICAgICAgY29uc3QgY2hhciAqZXJyb3JzCiAgICAgICApOwojIDc4ICIvdXNy
L2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9jb2RlY3MuaCIKZXh0ZXJuIFB5T2JqZWN0
ICogUHlDb2RlY19EZWNvZGUoCiAgICAgICBQeU9iamVjdCAqb2JqZWN0LAogICAgICAgY29uc3Qg
Y2hhciAqZW5jb2RpbmcsCiAgICAgICBjb25zdCBjaGFyICplcnJvcnMKICAgICAgICk7CiMgOTQg
Ii91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2NvZGVjcy5oIgpleHRlcm4gUHlP
YmplY3QgKiBQeUNvZGVjX0VuY29kZXIoCiAgICAgICBjb25zdCBjaGFyICplbmNvZGluZwogICAg
ICAgKTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlDb2RlY19EZWNvZGVyKAogICAgICAgY29uc3Qg
Y2hhciAqZW5jb2RpbmcKICAgICAgICk7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5Q29kZWNfU3Ry
ZWFtUmVhZGVyKAogICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICBQeU9iamVjdCAq
c3RyZWFtLAogICAgICAgY29uc3QgY2hhciAqZXJyb3JzCiAgICAgICApOwoKCgpleHRlcm4gUHlP
YmplY3QgKiBQeUNvZGVjX1N0cmVhbVdyaXRlcigKICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5n
LAogICAgICAgUHlPYmplY3QgKnN0cmVhbSwKICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycwogICAg
ICAgKTsKIyA4NyAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvUHl0aG9uLmgi
IDIKIyAxICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9weWVycm9ycy5oIiAx
CiMgMTAgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5ZXJyb3JzLmgiCnZv
aWQgUHlFcnJfU2V0Tm9uZShQeU9iamVjdCAqKTsKdm9pZCBQeUVycl9TZXRPYmplY3QoUHlPYmpl
Y3QgKiwgUHlPYmplY3QgKik7CnZvaWQgUHlFcnJfU2V0U3RyaW5nKFB5T2JqZWN0ICosIGNvbnN0
IGNoYXIgKik7ClB5T2JqZWN0ICogUHlFcnJfT2NjdXJyZWQodm9pZCk7CnZvaWQgUHlFcnJfQ2xl
YXIodm9pZCk7CnZvaWQgUHlFcnJfRmV0Y2goUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqLCBQeU9i
amVjdCAqKik7CnZvaWQgUHlFcnJfUmVzdG9yZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9i
amVjdCAqKTsKCgppbnQgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKFB5T2JqZWN0ICosIFB5
T2JqZWN0ICopOwppbnQgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeU9iamVjdCAqKTsKdm9pZCBQ
eUVycl9Ob3JtYWxpemVFeGNlcHRpb24oUHlPYmplY3QqKiwgUHlPYmplY3QqKiwgUHlPYmplY3Qq
Kik7CgoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19FeGNlcHRpb247CmV4dGVybiBQeU9iamVj
dCAqIFB5RXhjX1N0YW5kYXJkRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0FyaXRobWV0
aWNFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfTG9va3VwRXJyb3I7CgpleHRlcm4gUHlP
YmplY3QgKiBQeUV4Y19Bc3NlcnRpb25FcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfQXR0
cmlidXRlRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0VPRkVycm9yOwpleHRlcm4gUHlP
YmplY3QgKiBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhj
X0Vudmlyb25tZW50RXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0lPRXJyb3I7CmV4dGVy
biBQeU9iamVjdCAqIFB5RXhjX09TRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0ltcG9y
dEVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19JbmRleEVycm9yOwpleHRlcm4gUHlPYmpl
Y3QgKiBQeUV4Y19LZXlFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfS2V5Ym9hcmRJbnRl
cnJ1cHQ7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX01lbW9yeUVycm9yOwpleHRlcm4gUHlPYmpl
Y3QgKiBQeUV4Y19OYW1lRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX092ZXJmbG93RXJy
b3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX1J1bnRpbWVFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0
ICogUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfU3lu
dGF4RXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0luZGVudGF0aW9uRXJyb3I7CmV4dGVy
biBQeU9iamVjdCAqIFB5RXhjX1RhYkVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19TeXN0
ZW1FcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfU3lzdGVtRXhpdDsKZXh0ZXJuIFB5T2Jq
ZWN0ICogUHlFeGNfVHlwZUVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19VbmJvdW5kTG9j
YWxFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfVW5pY29kZUVycm9yOwpleHRlcm4gUHlP
YmplY3QgKiBQeUV4Y19WYWx1ZUVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19aZXJvRGl2
aXNpb25FcnJvcjsKCgoKCmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX01lbW9yeUVycm9ySW5zdDsK
CgpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19XYXJuaW5nOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4
Y19Vc2VyV2FybmluZzsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5n
OwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19TeW50YXhXYXJuaW5nOwpleHRlcm4gUHlPYmplY3Qg
KiBQeUV4Y19SdW50aW1lV2FybmluZzsKCgoKCmV4dGVybiBpbnQgUHlFcnJfQmFkQXJndW1lbnQo
dm9pZCk7CmV4dGVybiBQeU9iamVjdCAqIFB5RXJyX05vTWVtb3J5KHZvaWQpOwpleHRlcm4gUHlP
YmplY3QgKiBQeUVycl9TZXRGcm9tRXJybm8oUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAq
IFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZShQeU9iamVjdCAqLCBjaGFyICopOwpleHRl
cm4gUHlPYmplY3QgKiBQeUVycl9Gb3JtYXQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4p
OwoKCgoKCgpleHRlcm4gdm9pZCBQeUVycl9CYWRJbnRlcm5hbENhbGwodm9pZCk7CmV4dGVybiB2
b2lkIF9QeUVycl9CYWRJbnRlcm5hbENhbGwoY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pOwoK
CgoKClB5T2JqZWN0ICogUHlFcnJfTmV3RXhjZXB0aW9uKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpi
YXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpk
aWN0KTsKZXh0ZXJuIHZvaWQgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKFB5T2JqZWN0ICopOwoKCmV4
dGVybiBpbnQgUHlFcnJfV2FybihQeU9iamVjdCAqLCBjaGFyICopOwpleHRlcm4gaW50IFB5RXJy
X1dhcm5FeHBsaWNpdChQeU9iamVjdCAqLCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqLCBpbnQsIGNoYXIgKiwgUHlPYmplY3QgKik7CgoKZXh0
ZXJuIGludCBQeUVycl9DaGVja1NpZ25hbHModm9pZCk7CmV4dGVybiB2b2lkIFB5RXJyX1NldElu
dGVycnVwdCh2b2lkKTsKCgpleHRlcm4gdm9pZCBQeUVycl9TeW50YXhMb2NhdGlvbihjaGFyICos
IGludCk7CmV4dGVybiBQeU9iamVjdCAqIFB5RXJyX1Byb2dyYW1UZXh0KGNoYXIgKiwgaW50KTsK
IyA4OCAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvUHl0aG9uLmgiIDIKCiMg
MSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvcHlzdGF0ZS5oIiAxCiMgMTMg
Ii91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5c3RhdGUuaCIKc3RydWN0IF90
czsKc3RydWN0IF9pczsKCnR5cGVkZWYgc3RydWN0IF9pcyB7CgogICAgc3RydWN0IF9pcyAqbmV4
dDsKICAgIHN0cnVjdCBfdHMgKnRzdGF0ZV9oZWFkOwoKICAgIFB5T2JqZWN0ICptb2R1bGVzOwog
ICAgUHlPYmplY3QgKnN5c2RpY3Q7CiAgICBQeU9iamVjdCAqYnVpbHRpbnM7CgogICAgaW50IGNo
ZWNraW50ZXJ2YWw7Cgp9IFB5SW50ZXJwcmV0ZXJTdGF0ZTsKCgoKCnN0cnVjdCBfZnJhbWU7Cgp0
eXBlZGVmIHN0cnVjdCBfdHMgewoKICAgIHN0cnVjdCBfdHMgKm5leHQ7CiAgICBQeUludGVycHJl
dGVyU3RhdGUgKmludGVycDsKCiAgICBzdHJ1Y3QgX2ZyYW1lICpmcmFtZTsKICAgIGludCByZWN1
cnNpb25fZGVwdGg7CiAgICBpbnQgdGlja2VyOwogICAgaW50IHRyYWNpbmc7CgogICAgUHlPYmpl
Y3QgKnN5c19wcm9maWxlZnVuYzsKICAgIFB5T2JqZWN0ICpzeXNfdHJhY2VmdW5jOwoKICAgIFB5
T2JqZWN0ICpjdXJleGNfdHlwZTsKICAgIFB5T2JqZWN0ICpjdXJleGNfdmFsdWU7CiAgICBQeU9i
amVjdCAqY3VyZXhjX3RyYWNlYmFjazsKCiAgICBQeU9iamVjdCAqZXhjX3R5cGU7CiAgICBQeU9i
amVjdCAqZXhjX3ZhbHVlOwogICAgUHlPYmplY3QgKmV4Y190cmFjZWJhY2s7CgogICAgUHlPYmpl
Y3QgKmRpY3Q7CgoKCn0gUHlUaHJlYWRTdGF0ZTsKCgpQeUludGVycHJldGVyU3RhdGUgKiBQeUlu
dGVycHJldGVyU3RhdGVfTmV3KHZvaWQpOwp2b2lkIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcihQ
eUludGVycHJldGVyU3RhdGUgKik7CnZvaWQgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShQeUlu
dGVycHJldGVyU3RhdGUgKik7CgpQeVRocmVhZFN0YXRlICogUHlUaHJlYWRTdGF0ZV9OZXcoUHlJ
bnRlcnByZXRlclN0YXRlICopOwp2b2lkIFB5VGhyZWFkU3RhdGVfQ2xlYXIoUHlUaHJlYWRTdGF0
ZSAqKTsKdm9pZCBQeVRocmVhZFN0YXRlX0RlbGV0ZShQeVRocmVhZFN0YXRlICopOwoKdm9pZCBQ
eVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQodm9pZCk7CgoKUHlUaHJlYWRTdGF0ZSAqIFB5VGhy
ZWFkU3RhdGVfR2V0KHZvaWQpOwpQeVRocmVhZFN0YXRlICogUHlUaHJlYWRTdGF0ZV9Td2FwKFB5
VGhyZWFkU3RhdGUgKik7ClB5T2JqZWN0ICogUHlUaHJlYWRTdGF0ZV9HZXREaWN0KHZvaWQpOwoK
CgoKZXh0ZXJuIFB5VGhyZWFkU3RhdGUgKiBfUHlUaHJlYWRTdGF0ZV9DdXJyZW50OwojIDkwICIv
dXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9QeXRob24uaCIgMgoKIyAxICIvdXNy
L2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9tb2RzdXBwb3J0LmgiIDEKIyAxMCAiL3Vz
ci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvbW9kc3VwcG9ydC5oIgojIDEgIi91c3Iv
bG9jYWwvZ2NjMy4wL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luMS4zLjIvMy4xL2lu
Y2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xvY2FsL2djYzMuMC9saWIvZ2NjLWxpYi9w
b3dlcnBjLWFwcGxlLWRhcndpbjEuMy4yLzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYg
X19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMTEwICIvdXNyL2xvY2FsL2djYzMu
MC9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjEuMy4yLzMuMS9pbmNsdWRlL3N0ZGFy
Zy5oIiAzCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKIyAxMSAiL3Vzci9sb2NhbC9w
eXRob24vaW5jbHVkZS9weXRob24yLjEvbW9kc3VwcG9ydC5oIiAyCgpleHRlcm4gaW50IFB5QXJn
X1BhcnNlKFB5T2JqZWN0ICosIGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBQeUFyZ19QYXJzZVR1
cGxlKFB5T2JqZWN0ICosIGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBQeUFyZ19QYXJzZVR1cGxl
QW5kS2V5d29yZHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIGNoYXIgKiosIC4uLik7CmV4dGVy
biBQeU9iamVjdCAqIFB5X0J1aWxkVmFsdWUoY2hhciAqLCAuLi4pOwoKZXh0ZXJuIGludCBQeUFy
Z19WYVBhcnNlKFB5T2JqZWN0ICosIGNoYXIgKiwgdmFfbGlzdCk7CmV4dGVybiBQeU9iamVjdCAq
IFB5X1ZhQnVpbGRWYWx1ZShjaGFyICosIHZhX2xpc3QpOwoKZXh0ZXJuIGludCBQeU1vZHVsZV9B
ZGRPYmplY3QoUHlPYmplY3QgKiwgY2hhciAqLCBQeU9iamVjdCAqKTsKZXh0ZXJuIGludCBQeU1v
ZHVsZV9BZGRJbnRDb25zdGFudChQeU9iamVjdCAqLCBjaGFyICosIGxvbmcpOwpleHRlcm4gaW50
IFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KFB5T2JqZWN0ICosIGNoYXIgKiwgY2hhciAqKTsK
IyA3OCAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvbW9kc3VwcG9ydC5oIgpl
eHRlcm4gUHlPYmplY3QgKiBQeV9Jbml0TW9kdWxlNChjaGFyICpuYW1lLCBQeU1ldGhvZERlZiAq
bWV0aG9kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICpkb2MsIFB5T2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBhcGl2ZXIpOwojIDkwICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5
dGhvbjIuMS9tb2RzdXBwb3J0LmgiCmV4dGVybiBjaGFyICogX1B5X1BhY2thZ2VDb250ZXh0Owoj
IDkyICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9QeXRob24uaCIgMgojIDEg
Ii91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2NldmFsLmgiIDEKIyAxMCAiL3Vz
ci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvY2V2YWwuaCIKUHlPYmplY3QgKiBQeUV2
YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcwogICAgICAgIChQeU9iamVjdCAqLCBQeU9iamVjdCAq
LCBQeU9iamVjdCAqKTsKCgoKUHlPYmplY3QgKiBQeUV2YWxfQ2FsbE9iamVjdChQeU9iamVjdCAq
LCBQeU9iamVjdCAqKTsKCgoKCgpQeU9iamVjdCAqIFB5RXZhbF9DYWxsRnVuY3Rpb24oUHlPYmpl
Y3QgKm9iaiwgY2hhciAqZm9ybWF0LCAuLi4pOwpQeU9iamVjdCAqIFB5RXZhbF9DYWxsTWV0aG9k
KFB5T2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICptZXRob2RuYW1lLCBjaGFyICpmb3JtYXQsIC4uLik7CgpQeU9iamVjdCAqIFB5RXZhbF9H
ZXRCdWlsdGlucyh2b2lkKTsKUHlPYmplY3QgKiBQeUV2YWxfR2V0R2xvYmFscyh2b2lkKTsKUHlP
YmplY3QgKiBQeUV2YWxfR2V0TG9jYWxzKHZvaWQpOwpQeU9iamVjdCAqIFB5RXZhbF9HZXRPd25l
cih2b2lkKTsKUHlPYmplY3QgKiBQeUV2YWxfR2V0RnJhbWUodm9pZCk7CmludCBQeUV2YWxfR2V0
UmVzdHJpY3RlZCh2b2lkKTsKaW50IFB5RXZhbF9HZXROZXN0ZWRTY29wZXModm9pZCk7CgppbnQg
UHlfRmx1c2hMaW5lKHZvaWQpOwoKaW50IFB5X0FkZFBlbmRpbmdDYWxsKGludCAoKmZ1bmMpKHZv
aWQgKiksIHZvaWQgKmFyZyk7CmludCBQeV9NYWtlUGVuZGluZ0NhbGxzKHZvaWQpOwoKdm9pZCBQ
eV9TZXRSZWN1cnNpb25MaW1pdChpbnQpOwppbnQgUHlfR2V0UmVjdXJzaW9uTGltaXQodm9pZCk7
CiMgODYgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2NldmFsLmgiCmV4dGVy
biBQeVRocmVhZFN0YXRlICogUHlFdmFsX1NhdmVUaHJlYWQodm9pZCk7CmV4dGVybiB2b2lkIFB5
RXZhbF9SZXN0b3JlVGhyZWFkKFB5VGhyZWFkU3RhdGUgKik7CgoKCmV4dGVybiB2b2lkIFB5RXZh
bF9Jbml0VGhyZWFkcyh2b2lkKTsKZXh0ZXJuIHZvaWQgUHlFdmFsX0FjcXVpcmVMb2NrKHZvaWQp
OwpleHRlcm4gdm9pZCBQeUV2YWxfUmVsZWFzZUxvY2sodm9pZCk7CmV4dGVybiB2b2lkIFB5RXZh
bF9BY3F1aXJlVGhyZWFkKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSk7CmV4dGVybiB2b2lkIFB5RXZh
bF9SZWxlYXNlVGhyZWFkKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSk7CmV4dGVybiB2b2lkIFB5RXZh
bF9SZUluaXRUaHJlYWRzKHZvaWQpOwojIDExNSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9w
eXRob24yLjEvY2V2YWwuaCIKZXh0ZXJuIGludCBfUHlFdmFsX1NsaWNlSW5kZXgoUHlPYmplY3Qg
KiwgaW50ICopOwojIDkzICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9QeXRo
b24uaCIgMgojIDEgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5dGhvbnJ1
bi5oIiAxCiMgMTAgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5dGhvbnJ1
bi5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGNmX25lc3RlZF9zY29wZXM7Cn0gUHlD
b21waWxlckZsYWdzOwoKdm9pZCBQeV9TZXRQcm9ncmFtTmFtZShjaGFyICopOwpjaGFyICogUHlf
R2V0UHJvZ3JhbU5hbWUodm9pZCk7Cgp2b2lkIFB5X1NldFB5dGhvbkhvbWUoY2hhciAqKTsKY2hh
ciAqIFB5X0dldFB5dGhvbkhvbWUodm9pZCk7Cgp2b2lkIFB5X0luaXRpYWxpemUodm9pZCk7CnZv
aWQgUHlfRmluYWxpemUodm9pZCk7CmludCBQeV9Jc0luaXRpYWxpemVkKHZvaWQpOwpQeVRocmVh
ZFN0YXRlICogUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCk7CnZvaWQgUHlfRW5kSW50ZXJwcmV0ZXIo
UHlUaHJlYWRTdGF0ZSAqKTsKCmludCBQeVJ1bl9BbnlGaWxlKEZJTEUgKiwgY2hhciAqKTsKaW50
IFB5UnVuX0FueUZpbGVFeChGSUxFICosIGNoYXIgKiwgaW50KTsKCmludCBQeVJ1bl9BbnlGaWxl
RmxhZ3MoRklMRSAqLCBjaGFyICosIFB5Q29tcGlsZXJGbGFncyAqKTsKaW50IFB5UnVuX0FueUZp
bGVFeEZsYWdzKEZJTEUgKiwgY2hhciAqLCBpbnQsIFB5Q29tcGlsZXJGbGFncyAqKTsKCmludCBQ
eVJ1bl9TaW1wbGVTdHJpbmcoY2hhciAqKTsKaW50IFB5UnVuX1NpbXBsZUZpbGUoRklMRSAqLCBj
aGFyICopOwppbnQgUHlSdW5fU2ltcGxlRmlsZUV4KEZJTEUgKiwgY2hhciAqLCBpbnQpOwppbnQg
UHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MoRklMRSAqLCBjaGFyICosIGludCwgUHlDb21waWxlckZs
YWdzICopOwppbnQgUHlSdW5fSW50ZXJhY3RpdmVPbmUoRklMRSAqLCBjaGFyICopOwppbnQgUHlS
dW5fSW50ZXJhY3RpdmVPbmVGbGFncyhGSUxFICosIGNoYXIgKiwgUHlDb21waWxlckZsYWdzICop
OwppbnQgUHlSdW5fSW50ZXJhY3RpdmVMb29wKEZJTEUgKiwgY2hhciAqKTsKaW50IFB5UnVuX0lu
dGVyYWN0aXZlTG9vcEZsYWdzKEZJTEUgKiwgY2hhciAqLCBQeUNvbXBpbGVyRmxhZ3MgKik7Cgpz
dHJ1Y3QgX25vZGUgKiBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZyhjaGFyICosIGludCk7CnN0
cnVjdCBfbm9kZSAqIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZShGSUxFICosIGNoYXIgKiwgaW50
KTsKClB5T2JqZWN0ICogUHlSdW5fU3RyaW5nKGNoYXIgKiwgaW50LCBQeU9iamVjdCAqLCBQeU9i
amVjdCAqKTsKUHlPYmplY3QgKiBQeVJ1bl9GaWxlKEZJTEUgKiwgY2hhciAqLCBpbnQsIFB5T2Jq
ZWN0ICosIFB5T2JqZWN0ICopOwpQeU9iamVjdCAqIFB5UnVuX0ZpbGVFeChGSUxFICosIGNoYXIg
KiwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICosIFB5
T2JqZWN0ICosIGludCk7ClB5T2JqZWN0ICogUHlSdW5fU3RyaW5nRmxhZ3MoY2hhciAqLCBpbnQs
IFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQeUNvbXBpbGVyRmxhZ3MgKik7ClB5T2JqZWN0ICogUHlSdW5fRmlsZUZsYWdzKEZJ
TEUgKiwgY2hhciAqLCBpbnQsIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlDb21waWxlckZsYWdzICopOwpQeU9iamVjdCAqIFB5
UnVuX0ZpbGVFeEZsYWdzKEZJTEUgKiwgY2hhciAqLCBpbnQsIFB5T2JqZWN0ICosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqLCBpbnQsIFB5Q29tcGls
ZXJGbGFncyAqKTsKClB5T2JqZWN0ICogUHlfQ29tcGlsZVN0cmluZyhjaGFyICosIGNoYXIgKiwg
aW50KTsKUHlPYmplY3QgKiBQeV9Db21waWxlU3RyaW5nRmxhZ3MoY2hhciAqLCBjaGFyICosIGlu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUNvbXBpbGVy
RmxhZ3MgKik7CnN0cnVjdCBzeW10YWJsZSAqIFB5X1N5bXRhYmxlU3RyaW5nKGNoYXIgKiwgY2hh
ciAqLCBpbnQpOwoKdm9pZCBQeUVycl9QcmludCh2b2lkKTsKdm9pZCBQeUVycl9QcmludEV4KGlu
dCk7CnZvaWQgUHlFcnJfRGlzcGxheShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAq
KTsKCmludCBQeV9BdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKTsKCnZvaWQgUHlfRXhpdChpbnQp
OwoKaW50IFB5X0ZkSXNJbnRlcmFjdGl2ZShGSUxFICosIGNoYXIgKik7CgoKY2hhciAqIFB5X0dl
dFByb2dyYW1GdWxsUGF0aCh2b2lkKTsKY2hhciAqIFB5X0dldFByZWZpeCh2b2lkKTsKY2hhciAq
IFB5X0dldEV4ZWNQcmVmaXgodm9pZCk7CmNoYXIgKiBQeV9HZXRQYXRoKHZvaWQpOwoKCmNvbnN0
IGNoYXIgKiBQeV9HZXRWZXJzaW9uKHZvaWQpOwpjb25zdCBjaGFyICogUHlfR2V0UGxhdGZvcm0o
dm9pZCk7CmNvbnN0IGNoYXIgKiBQeV9HZXRDb3B5cmlnaHQodm9pZCk7CmNvbnN0IGNoYXIgKiBQ
eV9HZXRDb21waWxlcih2b2lkKTsKY29uc3QgY2hhciAqIFB5X0dldEJ1aWxkSW5mbyh2b2lkKTsK
CgpQeU9iamVjdCAqIF9QeUJ1aWx0aW5fSW5pdCh2b2lkKTsKUHlPYmplY3QgKiBfUHlTeXNfSW5p
dCh2b2lkKTsKdm9pZCBfUHlJbXBvcnRfSW5pdCh2b2lkKTsKdm9pZCBpbml0X2V4Y2VwdGlvbnMo
dm9pZCk7CgoKdm9pZCBmaW5pX2V4Y2VwdGlvbnModm9pZCk7CnZvaWQgX1B5SW1wb3J0X0Zpbmko
dm9pZCk7CnZvaWQgUHlNZXRob2RfRmluaSh2b2lkKTsKdm9pZCBQeUZyYW1lX0Zpbmkodm9pZCk7
CnZvaWQgUHlDRnVuY3Rpb25fRmluaSh2b2lkKTsKdm9pZCBQeVR1cGxlX0Zpbmkodm9pZCk7CnZv
aWQgUHlTdHJpbmdfRmluaSh2b2lkKTsKdm9pZCBQeUludF9GaW5pKHZvaWQpOwp2b2lkIFB5Rmxv
YXRfRmluaSh2b2lkKTsKdm9pZCBQeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpOwoKCmNoYXIgKiBQ
eU9TX1JlYWRsaW5lKGNoYXIgKik7CmV4dGVybiBpbnQgKCpQeU9TX0lucHV0SG9vaykodm9pZCk7
CmV4dGVybiBjaGFyICooKlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIpKGNoYXIgKik7CiMg
MTIyICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9weXRob25ydW4uaCIKdHlw
ZWRlZiB2b2lkICgqUHlPU19zaWdoYW5kbGVyX3QpKGludCk7ClB5T1Nfc2lnaGFuZGxlcl90IFB5
T1NfZ2V0c2lnKGludCk7ClB5T1Nfc2lnaGFuZGxlcl90IFB5T1Nfc2V0c2lnKGludCwgUHlPU19z
aWdoYW5kbGVyX3QpOwojIDk0ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9Q
eXRob24uaCIgMgojIDEgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3N5c21v
ZHVsZS5oIiAxCiMgMTAgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3N5c21v
ZHVsZS5oIgpQeU9iamVjdCAqIFB5U3lzX0dldE9iamVjdChjaGFyICopOwppbnQgUHlTeXNfU2V0
T2JqZWN0KGNoYXIgKiwgUHlPYmplY3QgKik7CkZJTEUgKiBQeVN5c19HZXRGaWxlKGNoYXIgKiwg
RklMRSAqKTsKdm9pZCBQeVN5c19TZXRBcmd2KGludCwgY2hhciAqKik7CnZvaWQgUHlTeXNfU2V0
UGF0aChjaGFyICopOwoKdm9pZCBQeVN5c19Xcml0ZVN0ZG91dChjb25zdCBjaGFyICpmb3JtYXQs
IC4uLik7CnZvaWQgUHlTeXNfV3JpdGVTdGRlcnIoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwoK
ZXh0ZXJuIFB5T2JqZWN0ICogX1B5U3lzX1RyYWNlRnVuYywgKl9QeVN5c19Qcm9maWxlRnVuYzsK
ZXh0ZXJuIGludCBfUHlTeXNfQ2hlY2tJbnRlcnZhbDsKCnZvaWQgUHlTeXNfUmVzZXRXYXJuT3B0
aW9ucyh2b2lkKTsKdm9pZCBQeVN5c19BZGRXYXJuT3B0aW9uKGNoYXIgKik7CiMgOTUgIi91c3Iv
bG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAyCiMgMSAiL3Vzci9sb2Nh
bC9weXRob24vaW5jbHVkZS9weXRob24yLjEvaW50cmNoZWNrLmgiIDEKCgoKCgoKCmV4dGVybiBp
bnQgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKTsKZXh0ZXJuIHZvaWQgUHlPU19Jbml0SW50
ZXJydXB0cyh2b2lkKTsKdm9pZCBQeU9TX0FmdGVyRm9yayh2b2lkKTsKIyA5NiAiL3Vzci9sb2Nh
bC9weXRob24vaW5jbHVkZS9weXRob24yLjEvUHl0aG9uLmgiIDIKIyAxICIvdXNyL2xvY2FsL3B5
dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9pbXBvcnQuaCIgMQojIDEwICIvdXNyL2xvY2FsL3B5dGhv
bi9pbmNsdWRlL3B5dGhvbjIuMS9pbXBvcnQuaCIKbG9uZyBQeUltcG9ydF9HZXRNYWdpY051bWJl
cih2b2lkKTsKUHlPYmplY3QgKiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZShjaGFyICpuYW1lLCBQ
eU9iamVjdCAqY28pOwpQeU9iamVjdCAqIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgoCiAgICAg
ICAgY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvLCBjaGFyICpwYXRobmFtZSk7ClB5T2JqZWN0ICog
UHlJbXBvcnRfR2V0TW9kdWxlRGljdCh2b2lkKTsKUHlPYmplY3QgKiBQeUltcG9ydF9BZGRNb2R1
bGUoY2hhciAqbmFtZSk7ClB5T2JqZWN0ICogUHlJbXBvcnRfSW1wb3J0TW9kdWxlKGNoYXIgKm5h
bWUpOwpQeU9iamVjdCAqIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4KAogICAgICAgIGNoYXIgKm5h
bWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZnJvbWxp
c3QpOwpQeU9iamVjdCAqIFB5SW1wb3J0X0ltcG9ydChQeU9iamVjdCAqbmFtZSk7ClB5T2JqZWN0
ICogUHlJbXBvcnRfUmVsb2FkTW9kdWxlKFB5T2JqZWN0ICptKTsKdm9pZCBQeUltcG9ydF9DbGVh
bnVwKHZvaWQpOwppbnQgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKGNoYXIgKik7CgpleHRl
cm4gUHlPYmplY3QgKl9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uKGNoYXIgKiwgY2hhciAqKTsKZXh0
ZXJuIFB5T2JqZWN0ICpfUHlJbXBvcnRfRml4dXBFeHRlbnNpb24oY2hhciAqLCBjaGFyICopOwoK
c3RydWN0IF9pbml0dGFiIHsKICAgIGNoYXIgKm5hbWU7CiAgICB2b2lkICgqaW5pdGZ1bmMpKHZv
aWQpOwp9OwoKZXh0ZXJuIHN0cnVjdCBfaW5pdHRhYiAqIFB5SW1wb3J0X0luaXR0YWI7CgpleHRl
cm4gaW50IFB5SW1wb3J0X0FwcGVuZEluaXR0YWIoY2hhciAqbmFtZSwgdm9pZCAoKmluaXRmdW5j
KSh2b2lkKSk7CmV4dGVybiBpbnQgUHlJbXBvcnRfRXh0ZW5kSW5pdHRhYihzdHJ1Y3QgX2luaXR0
YWIgKm5ld3RhYik7CgpzdHJ1Y3QgX2Zyb3plbiB7CiAgICBjaGFyICpuYW1lOwogICAgdW5zaWdu
ZWQgY2hhciAqY29kZTsKICAgIGludCBzaXplOwp9OwoKCgoKZXh0ZXJuIHN0cnVjdCBfZnJvemVu
ICogUHlJbXBvcnRfRnJvemVuTW9kdWxlczsKIyA5NyAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVk
ZS9weXRob24yLjEvUHl0aG9uLmgiIDIKCiMgMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9w
eXRob24yLjEvYWJzdHJhY3QuaCIgMQojIDIyNiAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9w
eXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlPYmplY3RfQ21wKFB5T2JqZWN0ICpvMSwg
UHlPYmplY3QgKm8yLCBpbnQgKnJlc3VsdCk7CiMgMjg2ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNs
dWRlL3B5dGhvbjIuMS9hYnN0cmFjdC5oIgogICAgIGludCBQeUNhbGxhYmxlX0NoZWNrKFB5T2Jq
ZWN0ICpvKTsKIyAyOTggIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Fic3Ry
YWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU9iamVjdF9DYWxsT2JqZWN0KFB5T2JqZWN0ICpjYWxs
YWJsZV9vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHlPYmplY3QgKmFyZ3MpOwojIDMxMSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRo
b24yLjEvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQ
eU9iamVjdCAqY2FsbGFibGVfb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqZm9ybWF0LCAuLi4pOwojIDMyNSAiL3Vzci9sb2NhbC9w
eXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5T2Jq
ZWN0X0NhbGxNZXRob2QoUHlPYmplY3QgKm8sIGNoYXIgKm0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZm9ybWF0LCAuLi4pOwojIDM3OCAiL3Vz
ci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBQeU9iamVj
dCAqIFB5T2JqZWN0X1R5cGUoUHlPYmplY3QgKm8pOwoKCgoKCgoKICAgICBpbnQgUHlPYmplY3Rf
U2l6ZShQeU9iamVjdCAqbyk7CiMgMzk4ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhv
bjIuMS9hYnN0cmFjdC5oIgogICAgIGludCBQeU9iamVjdF9MZW5ndGgoUHlPYmplY3QgKm8pOwoK
CgogICAgIFB5T2JqZWN0ICogUHlPYmplY3RfR2V0SXRlbShQeU9iamVjdCAqbywgUHlPYmplY3Qg
KmtleSk7CiMgNDExICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9hYnN0cmFj
dC5oIgogICAgIGludCBQeU9iamVjdF9TZXRJdGVtKFB5T2JqZWN0ICpvLCBQeU9iamVjdCAqa2V5
LCBQeU9iamVjdCAqdik7CgoKCgoKCgogICAgIGludCBQeU9iamVjdF9EZWxJdGVtKFB5T2JqZWN0
ICpvLCBQeU9iamVjdCAqa2V5KTsKCgoKCgoKICAgICBpbnQgUHlPYmplY3RfQXNDaGFyQnVmZmVy
KFB5T2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKipidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCAqYnVmZmVyX2xlbik7CiMgNDQyICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRl
L3B5dGhvbjIuMS9hYnN0cmFjdC5oIgogICAgIGludCBQeU9iamVjdF9Bc1JlYWRCdWZmZXIoUHlP
YmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqKmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ICpidWZmZXJfbGVuKTsKIyA0NTggIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0
aG9uMi4xL2Fic3RyYWN0LmgiCiAgICAgaW50IFB5T2JqZWN0X0FzV3JpdGVCdWZmZXIoUHlPYmpl
Y3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KipidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
KmJ1ZmZlcl9sZW4pOwojIDQ3NSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEv
YWJzdHJhY3QuaCIKICAgICBpbnQgUHlOdW1iZXJfQ2hlY2soUHlPYmplY3QgKm8pOwojIDQ4NSAi
L3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBQeU9i
amVjdCAqIFB5TnVtYmVyX0FkZChQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNDk0ICIv
dXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9hYnN0cmFjdC5oIgogICAgIFB5T2Jq
ZWN0ICogUHlOdW1iZXJfU3VidHJhY3QoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDUw
MyAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBQ
eU9iamVjdCAqIFB5TnVtYmVyX011bHRpcGx5KFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsK
IyA1MTMgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Fic3RyYWN0LmgiCiAg
ICAgUHlPYmplY3QgKiBQeU51bWJlcl9EaXZpZGUoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIp
OwojIDUyMiAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIK
ICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX1JlbWFpbmRlcihQeU9iamVjdCAqbzEsIFB5T2JqZWN0
ICpvMik7CiMgNTMyICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9hYnN0cmFj
dC5oIgogICAgIFB5T2JqZWN0ICogUHlOdW1iZXJfRGl2bW9kKFB5T2JqZWN0ICpvMSwgUHlPYmpl
Y3QgKm8yKTsKIyA1NDIgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Fic3Ry
YWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9Qb3dlcihQeU9iamVjdCAqbzEsIFB5T2Jq
ZWN0ICpvMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmpl
Y3QgKm8zKTsKIyA1NTIgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Fic3Ry
YWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9OZWdhdGl2ZShQeU9iamVjdCAqbyk7CgoK
CgoKCgogICAgIFB5T2JqZWN0ICogUHlOdW1iZXJfUG9zaXRpdmUoUHlPYmplY3QgKm8pOwoKCgoK
CgoKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX0Fic29sdXRlKFB5T2JqZWN0ICpvKTsKCgoKCgoK
CiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9JbnZlcnQoUHlPYmplY3QgKm8pOwojIDU4NiAiL3Vz
ci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBQeU9iamVj
dCAqIFB5TnVtYmVyX0xzaGlmdChQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNTk2ICIv
dXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9hYnN0cmFjdC5oIgogICAgIFB5T2Jq
ZWN0ICogUHlOdW1iZXJfUnNoaWZ0KFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIyA2MDUg
Ii91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Fic3RyYWN0LmgiCiAgICAgUHlP
YmplY3QgKiBQeU51bWJlcl9BbmQoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDYxNSAi
L3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBQeU9i
amVjdCAqIFB5TnVtYmVyX1hvcihQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNjI1ICIv
dXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9hYnN0cmFjdC5oIgogICAgIFB5T2Jq
ZWN0ICogUHlOdW1iZXJfT3IoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDY1MyAiL3Vz
ci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBQeU9iamVj
dCAqIFB5TnVtYmVyX0ludChQeU9iamVjdCAqbyk7CiMgNjYyICIvdXNyL2xvY2FsL3B5dGhvbi9p
bmNsdWRlL3B5dGhvbjIuMS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlOdW1iZXJfTG9u
ZyhQeU9iamVjdCAqbyk7CiMgNjcxICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIu
MS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlOdW1iZXJfRmxvYXQoUHlPYmplY3QgKm8p
OwojIDY4MSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIK
ICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX0luUGxhY2VBZGQoUHlPYmplY3QgKm8xLCBQeU9iamVj
dCAqbzIpOwojIDY5MCAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJh
Y3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdChQeU9iamVjdCAq
bzEsIFB5T2JqZWN0ICpvMik7CiMgNjk5ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhv
bjIuMS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5
KFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIyA3MDggIi91c3IvbG9jYWwvcHl0aG9uL2lu
Y2x1ZGUvcHl0aG9uMi4xL2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9JblBs
YWNlRGl2aWRlKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIyA3MTcgIi91c3IvbG9jYWwv
cHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51
bWJlcl9JblBsYWNlUmVtYWluZGVyKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIyA3MjYg
Ii91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Fic3RyYWN0LmgiCiAgICAgUHlP
YmplY3QgKiBQeU51bWJlcl9JblBsYWNlUG93ZXIoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVj
dCAqbzMpOwojIDczNiAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJh
Y3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQoUHlPYmplY3QgKm8x
LCBQeU9iamVjdCAqbzIpOwojIDc0NSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24y
LjEvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX0luUGxhY2VSc2hpZnQoUHlP
YmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDc1NCAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVk
ZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX0luUGxhY2VB
bmQoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDc2MyAiL3Vzci9sb2NhbC9weXRob24v
aW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX0lu
UGxhY2VYb3IoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDc3MiAiL3Vzci9sb2NhbC9w
eXRob24vaW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVt
YmVyX0luUGxhY2VPcihQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNzg0ICIvdXNyL2xv
Y2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9hYnN0cmFjdC5oIgogICAgIGludCBQeVNlcXVl
bmNlX0NoZWNrKFB5T2JqZWN0ICpvKTsKIyA3OTQgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUv
cHl0aG9uMi4xL2Fic3RyYWN0LmgiCiAgICAgaW50IFB5U2VxdWVuY2VfU2l6ZShQeU9iamVjdCAq
byk7CiMgODAzICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9hYnN0cmFjdC5o
IgogICAgIGludCBQeVNlcXVlbmNlX0xlbmd0aChQeU9iamVjdCAqbyk7CgoKCiAgICAgUHlPYmpl
Y3QgKiBQeVNlcXVlbmNlX0NvbmNhdChQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgODE2
ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9hYnN0cmFjdC5oIgogICAgIFB5
T2JqZWN0ICogUHlTZXF1ZW5jZV9SZXBlYXQoUHlPYmplY3QgKm8sIGludCBjb3VudCk7CiMgODI1
ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9hYnN0cmFjdC5oIgogICAgIFB5
T2JqZWN0ICogUHlTZXF1ZW5jZV9HZXRJdGVtKFB5T2JqZWN0ICpvLCBpbnQgaSk7CgoKCgoKCiAg
ICAgUHlPYmplY3QgKiBQeVNlcXVlbmNlX0dldFNsaWNlKFB5T2JqZWN0ICpvLCBpbnQgaTEsIGlu
dCBpMik7CiMgODQxICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9hYnN0cmFj
dC5oIgogICAgIGludCBQeVNlcXVlbmNlX1NldEl0ZW0oUHlPYmplY3QgKm8sIGludCBpLCBQeU9i
amVjdCAqdik7CiMgODUwICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9hYnN0
cmFjdC5oIgogICAgIGludCBQeVNlcXVlbmNlX0RlbEl0ZW0oUHlPYmplY3QgKm8sIGludCBpKTsK
CgoKCgoKCiAgICAgaW50IFB5U2VxdWVuY2VfU2V0U2xpY2UoUHlPYmplY3QgKm8sIGludCBpMSwg
aW50IGkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3Qg
KnYpOwoKCgoKCgoKICAgICBpbnQgUHlTZXF1ZW5jZV9EZWxTbGljZShQeU9iamVjdCAqbywgaW50
IGkxLCBpbnQgaTIpOwoKCgoKCgoKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfVHVwbGUoUHlP
YmplY3QgKm8pOwoKCgoKCgoKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfTGlzdChQeU9iamVj
dCAqbyk7CgoKCgoKCiAgICAgUHlPYmplY3QgKiBQeVNlcXVlbmNlX0Zhc3QoUHlPYmplY3QgKm8s
IGNvbnN0IGNoYXIqIG0pOwojIDkwOSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24y
LjEvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlTZXF1ZW5jZV9Db3VudChQeU9iamVjdCAqbywgUHlP
YmplY3QgKnZhbHVlKTsKIyA5MTggIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4x
L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5U2VxdWVuY2VfQ29udGFpbnMoUHlPYmplY3QgKm8sIFB5
T2JqZWN0ICp2YWx1ZSk7CgoKCiAgICAgaW50IFB5U2VxdWVuY2VfSW4oUHlPYmplY3QgKm8sIFB5
T2JqZWN0ICp2YWx1ZSk7CiMgOTMzICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIu
MS9hYnN0cmFjdC5oIgogICAgIGludCBQeVNlcXVlbmNlX0luZGV4KFB5T2JqZWN0ICpvLCBQeU9i
amVjdCAqdmFsdWUpOwojIDk0MyAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEv
YWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdChQeU9i
amVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgOTUyICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRl
L3B5dGhvbjIuMS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlTZXF1ZW5jZV9JblBsYWNl
UmVwZWF0KFB5T2JqZWN0ICpvLCBpbnQgY291bnQpOwojIDk2MyAiL3Vzci9sb2NhbC9weXRob24v
aW5jbHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlNYXBwaW5nX0NoZWNrKFB5
T2JqZWN0ICpvKTsKIyA5NzIgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Fi
c3RyYWN0LmgiCiAgICAgaW50IFB5TWFwcGluZ19TaXplKFB5T2JqZWN0ICpvKTsKIyA5ODIgIi91
c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Fic3RyYWN0LmgiCiAgICAgaW50IFB5
TWFwcGluZ19MZW5ndGgoUHlPYmplY3QgKm8pOwojIDEwMDYgIi91c3IvbG9jYWwvcHl0aG9uL2lu
Y2x1ZGUvcHl0aG9uMi4xL2Fic3RyYWN0LmgiCiAgICAgaW50IFB5TWFwcGluZ19IYXNLZXlTdHJp
bmcoUHlPYmplY3QgKm8sIGNoYXIgKmtleSk7CiMgMTAxNiAiL3Vzci9sb2NhbC9weXRob24vaW5j
bHVkZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlNYXBwaW5nX0hhc0tleShQeU9i
amVjdCAqbywgUHlPYmplY3QgKmtleSk7CiMgMTA1OSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVk
ZS9weXRob24yLjEvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TWFwcGluZ19HZXRJdGVt
U3RyaW5nKFB5T2JqZWN0ICpvLCBjaGFyICprZXkpOwoKCgoKCgoKICAgICBpbnQgUHlNYXBwaW5n
X1NldEl0ZW1TdHJpbmcoUHlPYmplY3QgKm8sIGNoYXIgKmtleSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUpOwojIDEwNzcgIi91c3Iv
bG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL2Fic3RyYWN0LmgiCmludCBQeU9iamVjdF9J
c0luc3RhbmNlKFB5T2JqZWN0ICpvYmplY3QsIFB5T2JqZWN0ICp0eXBlb3JjbGFzcyk7CgoKaW50
IFB5T2JqZWN0X0lzU3ViY2xhc3MoUHlPYmplY3QgKm9iamVjdCwgUHlPYmplY3QgKnR5cGVvcmNs
YXNzKTsKIyA5OSAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9weXRob24yLjEvUHl0aG9uLmgi
IDIKIyAxMTEgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIgoj
IDEgIi91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL3B5ZnBlLmgiIDEKIyAxMTIg
Ii91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL1B5dGhvbi5oIiAyCiMgMiAiZ2xm
MjNmbW9kdWxlLmMiIDIKIyAxICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhvbjIuMS9u
dW1lcmljL2FycmF5b2JqZWN0LmgiIDEKIyAxMCAiL3Vzci9sb2NhbC9weXRob24vaW5jbHVkZS9w
eXRob24yLjEvbnVtZXJpYy9hcnJheW9iamVjdC5oIgplbnVtIFB5QXJyYXlfVFlQRVMgeyBQeUFy
cmF5X0NIQVIsIFB5QXJyYXlfVUJZVEUsIFB5QXJyYXlfU0JZVEUsCiAgICAgICAgICAgICAgICAg
ICAgICAgIFB5QXJyYXlfU0hPUlQsIFB5QXJyYXlfSU5ULCBQeUFycmF5X0xPTkcsCiAgICAgICAg
ICAgICAgICAgICAgICAgIFB5QXJyYXlfRkxPQVQsIFB5QXJyYXlfRE9VQkxFLAogICAgICAgICAg
ICAgICAgICAgICAgICBQeUFycmF5X0NGTE9BVCwgUHlBcnJheV9DRE9VQkxFLAogICAgICAgICAg
ICAgICAgICAgICAgICBQeUFycmF5X09CSkVDVCwKICAgICAgICAgICAgICAgICAgICAgICAgUHlB
cnJheV9OVFlQRVMsIFB5QXJyYXlfTk9UWVBFfTsKCnR5cGVkZWYgdm9pZCAoUHlBcnJheV9WZWN0
b3JVbmFyeUZ1bmMpIChjaGFyICosIGludCwgY2hhciAqLCBpbnQsIGludCk7Cgp0eXBlZGVmIFB5
T2JqZWN0ICogKFB5QXJyYXlfR2V0SXRlbUZ1bmMpIChjaGFyICopOwp0eXBlZGVmIGludCAoUHlB
cnJheV9TZXRJdGVtRnVuYykgKFB5T2JqZWN0ICosIGNoYXIgKik7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgUHlBcnJheV9WZWN0b3JVbmFyeUZ1bmMgKmNhc3RbUHlBcnJheV9OVFlQRVNdOwoKICBQeUFy
cmF5X0dldEl0ZW1GdW5jICpnZXRpdGVtOwogIFB5QXJyYXlfU2V0SXRlbUZ1bmMgKnNldGl0ZW07
CgogIGludCB0eXBlX251bSwgZWxzaXplOwogIGNoYXIgKm9uZSwgKnplcm87CiAgY2hhciB0eXBl
OwoKfSBQeUFycmF5X0Rlc2NyOwojIDQ0ICIvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlL3B5dGhv
bjIuMS9udW1lcmljL2FycmF5b2JqZWN0LmgiCnR5cGVkZWYgc3RydWN0IHsKICBpbnQgb2JfcmVm
Y250OyBzdHJ1Y3QgX3R5cGVvYmplY3QgKm9iX3R5cGU7CiAgY2hhciAqZGF0YTsKICBpbnQgbmQ7
CiAgaW50ICpkaW1lbnNpb25zLCAqc3RyaWRlczsKICBQeU9iamVjdCAqYmFzZTsKICBQeUFycmF5
X0Rlc2NyICpkZXNjcjsKICBpbnQgZmxhZ3M7Cn0gUHlBcnJheU9iamVjdDsKIyAyNjggIi91c3Iv
bG9jYWwvcHl0aG9uL2luY2x1ZGUvcHl0aG9uMi4xL251bWVyaWMvYXJyYXlvYmplY3QuaCIKc3Rh
dGljIHZvaWQgKipQeUFycmF5X0FQSTsKIyAzICJnbGYyM2Ztb2R1bGUuYyIgMgoKc3RhdGljIFB5
T2JqZWN0ICpFcnJvck9iamVjdDsKIyA0MiAiZ2xmMjNmbW9kdWxlLmMiCnN0YXRpYyBjaGFyIGds
ZjIzZl9jYWxsZ2xmMmRfX2RvY19fW10gPQoiIjsKCmV4dGVybiB2b2lkIGNhbGxnbGYyZF8gKGlu
dCAqanNob290LCBpbnQgKmptbSwgaW50ICpqbWF4bSwgaW50ICppdHBvcnRfcHQsIGRvdWJsZSAq
dGVfbSwgZG91YmxlICp0aV9tLCBkb3VibGUgKm5lX20sIGRvdWJsZSAqbmlfbSwgaW50ICppX2dy
YWQsIGRvdWJsZSAqenBtdGUsIGRvdWJsZSAqenBtdGksIGRvdWJsZSAqenBtbmUsIGRvdWJsZSAq
enBtbmksIGRvdWJsZSAqYW5ncm90cF9leHAsIGRvdWJsZSAqZWdhbW1hX2V4cCwgZG91YmxlICpn
YW1tYV9wX2V4cCwgZG91YmxlICp2cGhpX20sIGRvdWJsZSAqdnBhcl9tLCBkb3VibGUgKnZwZXJf
bSwgZG91YmxlICp6ZWZmX2V4cCwgZG91YmxlICpidF9leHAsIGRvdWJsZSAqcmhvLCBkb3VibGUg
KmFyaG9fZXhwLCBkb3VibGUgKmdyYWRyaG9fZXhwLCBkb3VibGUgKmdyYWRyaG9zcV9leHAsIGRv
dWJsZSAqcm1pbl9leHAsIGRvdWJsZSAqcm1hal9leHAsIGRvdWJsZSAqcm1ham9yX2V4cCwgZG91
YmxlICpxX2V4cCwgZG91YmxlICpzaGF0X2V4cCwgZG91YmxlICphbHBoYV9leHAsIGRvdWJsZSAq
ZWxvbmdfZXhwLCBkb3VibGUgKmFtYXNzZ2FzX2V4cCwgZG91YmxlICphbHBoYV9lLCBkb3VibGUg
KnhfYWxwaGEsIGRvdWJsZSAqZGlmZm5lbSwgZG91YmxlICpjaGlldGVtLCBkb3VibGUgKmNoaWl0
aW0sIGRvdWJsZSAqZXRhcGhpbSwgZG91YmxlICpldGFwYXJtLCBkb3VibGUgKmV0YXBlcm0sIGRv
dWJsZSAqZXhjaG0sIGRvdWJsZSAqZGlmZl9tLCBkb3VibGUgKmNoaWVfbSwgZG91YmxlICpjaGlp
X20sIGRvdWJsZSAqZXRhcGhpX20sIGRvdWJsZSAqZXRhcGFyX20sIGRvdWJsZSAqZXRhcGVyX20s
IGRvdWJsZSAqZXhjaF9tLCBkb3VibGUgKmVnYW1tYV9tLCBkb3VibGUgKmVnYW1tYV9kLCBpbnQg
KmlfZGVsYXksIGRvdWJsZSAqZ2FtbWFfcF9tLCBkb3VibGUgKmFucmF0ZV9tLCBkb3VibGUgKmFu
cmF0ZTJfbSwgZG91YmxlICphbmZyZXFfbSwgZG91YmxlICphbmZyZXEyX20pOwoKc3RhdGljIFB5
T2JqZWN0ICoKZ2xmMjNmX2NhbGxnbGYyZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3Mp
CnsKICAgZG91YmxlIEExMCwgQTExLCBBMTIsIEExMywgQTIxLCBBMjMsIEEyOCwgQTMzLCBBMzQs
IEEzNTsKICAgaW50IEExLCBBMiwgQTMsIEE5LCBBMzY7CiAgIFB5T2JqZWN0ICogcHlvYmpbMjFd
OwogICBQeUFycmF5T2JqZWN0ICpheFsyMV07CiAgIGludCBhcmdfYXJyYXlfaW5kZXhbMjFdID0g
ezQsNSw2LDcsOCwxNCwxNSwxNiwxNywxOCwxOSwyMCwyMiwyNCwyNSwyNiwyNywyOSwzMCwzMSwz
Mn07CiAgIGludCBhcmdfYXJyYXlfdHlwZXMgWzIxXSA9IHtQeUFycmF5X0lOVCxQeUFycmF5X0RP
VUJMRSxQeUFycmF5X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQeUFycmF5
X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQeUFy
cmF5X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQ
eUFycmF5X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQeUFycmF5X0RPVUJM
RSxQeUFycmF5X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQeUFycmF5X0RPVUJMRSxQeUFycmF5X0RP
VUJMRX07CiAgIGludCBhcmdfYXJyYXlfbGVuZ3RocyBbMjFdWzVdOwogICBjaGFyIG1lc2dlX2Fy
cmF5WyA5ICsgMiArIDI1IF0gPSAiYXJndW1lbnQgeHggaXMgbm90IGEgUHlBcnJheSBvYmplY3Qi
OwogICBjaGFyIG1lc2dlX2xlbmd0aFsgMzQgKyAyICsgMV0gPSAiaW5jb3JyZWN0IGRpbWVuc2lv
bnMgZm9yIGFyZ3VtZW50IHh4IjsKICAgY2hhciBtZXNnZV90eXBlWyAyMSArIDIgKyAxIF0gPSAi
dHlwZSBlcnJvcjogYXJndW1lbnQgeHgiOwogICBjaGFyIG1lc2dlX2NvbHVtblsgOSArIDIgKyA0
MCBdID0gImFyZ3VtZW50IHh4IGlzIG5vdCBhIGNvbnRpZ3VvdXMgY29sdW1uIG1ham9yIGFycmF5
IjsKICAgY2hhciBjaF9jdXJyZW50WzJdID0geycwJywnMCd9OwogICBkb3VibGUgcmV0XzEsIHJl
dF8yLCByZXRfMywgcmV0XzQsIHJldF81LCByZXRfNiwgcmV0Xzc7CiAgIFB5QXJyYXlPYmplY3Qg
KnJldF9hcnJheXMgWzE0XSA9IHswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9OwogICBpbnQg
cmV0X2FycmF5X3R5cGVzIFsxNF0gPSB7UHlBcnJheV9ET1VCTEUsUHlBcnJheV9ET1VCTEUsUHlB
cnJheV9ET1VCTEUsUHlBcnJheV9ET1VCTEUsUHlBcnJheV9ET1VCTEUsUHlBcnJheV9ET1VCTEUs
UHlBcnJheV9ET1VCTEUsUHlBcnJheV9ET1VCTEUsUHlBcnJheV9ET1VCTEUsUHlBcnJheV9ET1VC
TEUsUHlBcnJheV9ET1VCTEUsUHlBcnJheV9ET1VCTEUsUHlBcnJheV9ET1VCTEUsUHlBcnJheV9E
T1VCTEV9OwogICBpbnQgcmV0X2FycmF5X2xlbmd0aHMgWzE0XVs1XTsKICAgaW50IHJldF9hcnJh
eV9uZCBbMTRdOwogICBQeU9iamVjdCAqcmV0X29iamVjdDsKICAgaW50IGk7CiAgIGludCBkaW0x
WzVdOwoKICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWlPT09PT2lkZGRkT09PT09P
T2RPZE9PT09kT09PT2RkZGkiLCAmQTEsICZBMiwgJkEzLCAmcHlvYmpbMF0sICZweW9ialsxXSwg
JnB5b2JqWzJdLCAmcHlvYmpbM10sICZweW9ials0XSwgJkE5LCAmQTEwLCAmQTExLCAmQTEyLCAm
QTEzLCAmcHlvYmpbNV0sICZweW9ials2XSwgJnB5b2JqWzddLCAmcHlvYmpbOF0sICZweW9ials5
XSwgJnB5b2JqWzEwXSwgJnB5b2JqWzExXSwgJkEyMSwgJnB5b2JqWzEyXSwgJkEyMywgJnB5b2Jq
WzEzXSwgJnB5b2JqWzE0XSwgJnB5b2JqWzE1XSwgJnB5b2JqWzE2XSwgJkEyOCwgJnB5b2JqWzE3
XSwgJnB5b2JqWzE4XSwgJnB5b2JqWzE5XSwgJnB5b2JqWzIwXSwgJkEzMywgJkEzNCwgJkEzNSwg
JkEzNikpCiAgICAgICAgcmV0dXJuIDA7CgogICBhcmdfYXJyYXlfbGVuZ3RocyBbMF1bMF0gPSA1
OwogICBhcmdfYXJyYXlfbGVuZ3RocyBbMV1bMF0gPSBBMysxOwogICBhcmdfYXJyYXlfbGVuZ3Ro
cyBbMl1bMF0gPSBBMysxOwogICBhcmdfYXJyYXlfbGVuZ3RocyBbM11bMF0gPSBBMysxOwogICBh
cmdfYXJyYXlfbGVuZ3RocyBbNF1bMF0gPSBBMysxOwogICBhcmdfYXJyYXlfbGVuZ3RocyBbNV1b
MF0gPSBBMysxOwogICBhcmdfYXJyYXlfbGVuZ3RocyBbNl1bMF0gPSBBMysxOwogICBhcmdfYXJy
YXlfbGVuZ3RocyBbN11bMF0gPSBBMysxOwogICBhcmdfYXJyYXlfbGVuZ3RocyBbOF1bMF0gPSBB
MysxOwogICBhcmdfYXJyYXlfbGVuZ3RocyBbOV1bMF0gPSBBMysxOwogICBhcmdfYXJyYXlfbGVu
Z3RocyBbMTBdWzBdID0gQTMrMTsKICAgYXJnX2FycmF5X2xlbmd0aHMgWzExXVswXSA9IEEzKzE7
CiAgIGFyZ19hcnJheV9sZW5ndGhzIFsxMl1bMF0gPSBBMysxOwogICBhcmdfYXJyYXlfbGVuZ3Ro
cyBbMTNdWzBdID0gQTMrMTsKICAgYXJnX2FycmF5X2xlbmd0aHMgWzE0XVswXSA9IEEzKzE7CiAg
IGFyZ19hcnJheV9sZW5ndGhzIFsxNV1bMF0gPSBBMysxOwogICBhcmdfYXJyYXlfbGVuZ3RocyBb
MTZdWzBdID0gQTMrMTsKICAgYXJnX2FycmF5X2xlbmd0aHMgWzE3XVswXSA9IEEzKzE7CiAgIGFy
Z19hcnJheV9sZW5ndGhzIFsxOF1bMF0gPSBBMysxOwogICBhcmdfYXJyYXlfbGVuZ3RocyBbMTld
WzBdID0gQTMrMTsKICAgYXJnX2FycmF5X2xlbmd0aHMgWzIwXVswXSA9IEEzKzE7CiAgIGZvciAo
aSA9IDA7IGkgPDIxOyBpKyspIHsKICAgICAgaW50IGo7CiAgICAgIGNoX2N1cnJlbnRbMF0gPSAn
MCcgKyBhcmdfYXJyYXlfaW5kZXhbaV0vMTA7CiAgICAgIGNoX2N1cnJlbnRbMV0gPSAnMCcgKyBh
cmdfYXJyYXlfaW5kZXhbaV0lMTA7CiAgICAgIHN0cm5jcHkobWVzZ2VfYXJyYXkrOSwgY2hfY3Vy
cmVudCwgMik7CiAgICAgIHtpZiAoISgoKHB5b2JqW2ldKS0+b2JfdHlwZSA9PSAoUHlUeXBlT2Jq
ZWN0ICopUHlBcnJheV9BUElbMF0pKSkgeyBQeUVycl9TZXRTdHJpbmcoKEVycm9yT2JqZWN0KSwg
KG1lc2dlX2FycmF5KSk7IGdvdG8gZXJyO30gfQogICAgICBheFtpXSA9IChQeUFycmF5T2JqZWN0
ICopIHB5b2JqW2ldOwogICAgICB7c3RybmNweShtZXNnZV90eXBlKzIxLCBjaF9jdXJyZW50LCAy
KTsge2lmICghKGF4W2ldLT5kZXNjci0+dHlwZV9udW0gPT0gYXJnX2FycmF5X3R5cGVzIFtpXSkp
IHsgUHlFcnJfU2V0U3RyaW5nKChFcnJvck9iamVjdCksIChtZXNnZV90eXBlKSk7IGdvdG8gZXJy
O30gfTsge2ludCBtMSwgbjEsIGl0bXA7IG4xID0gYXhbaV0tPm5kOyBtMSA9IGF4W2ldLT5kZXNj
ci0+ZWxzaXplOyBzdHJuY3B5KG1lc2dlX2NvbHVtbis5LCBjaF9jdXJyZW50LCAyKTsgZm9yKGl0
bXA9MDsgaXRtcCA8IG4xIDsgaXRtcCsrKSB7IHtpZiAoIShheFtpXS0+c3RyaWRlc1tpdG1wXSA9
PSBtMSkpIHsgUHlFcnJfU2V0U3RyaW5nKChFcnJvck9iamVjdCksIChtZXNnZV9jb2x1bW4pKTsg
Z290byBlcnI7fSB9OyBtMSAqPSBheFtpXS0+ZGltZW5zaW9uc1tpdG1wXTsgfSB9OyB9CiAgICAg
IHN0cm5jcHkobWVzZ2VfbGVuZ3RoKzM0LCBjaF9jdXJyZW50LCAyKTsKICAgICAgZm9yIChqPTA7
IGogPCBheFtpXS0+bmQ7IGorKykKICAgICAgICB7aWYgKCEoYXJnX2FycmF5X2xlbmd0aHMgW2ld
W2pdID09IGF4W2ldLT5kaW1lbnNpb25zW2pdKSkgeyBQeUVycl9TZXRTdHJpbmcoKEVycm9yT2Jq
ZWN0KSwgKG1lc2dlX2xlbmd0aCkpOyBnb3RvIGVycjt9IH0KCiAgIH0KCiAgIHJldF9hcnJheV9s
ZW5ndGhzIFswXVswXSA9IEEzKzE7CiAgIHJldF9hcnJheV9uZCBbMF0gPSAxOwogICByZXRfYXJy
YXlfbGVuZ3RocyBbMV1bMF0gPSBBMysxOwogICByZXRfYXJyYXlfbmQgWzFdID0gMTsKICAgcmV0
X2FycmF5X2xlbmd0aHMgWzJdWzBdID0gQTMrMTsKICAgcmV0X2FycmF5X25kIFsyXSA9IDE7CiAg
IHJldF9hcnJheV9sZW5ndGhzIFszXVswXSA9IEEzKzE7CiAgIHJldF9hcnJheV9uZCBbM10gPSAx
OwogICByZXRfYXJyYXlfbGVuZ3RocyBbNF1bMF0gPSBBMysxOwogICByZXRfYXJyYXlfbmQgWzRd
ID0gMTsKICAgcmV0X2FycmF5X2xlbmd0aHMgWzVdWzBdID0gQTMrMTsKICAgcmV0X2FycmF5X25k
IFs1XSA9IDE7CiAgIHJldF9hcnJheV9sZW5ndGhzIFs2XVswXSA9IEEzKzE7CiAgIHJldF9hcnJh
eV9uZCBbNl0gPSAxOwogICByZXRfYXJyYXlfbGVuZ3RocyBbN11bMF0gPSBBMysxOwogICByZXRf
YXJyYXlfbmQgWzddID0gMTsKICAgcmV0X2FycmF5X2xlbmd0aHMgWzhdWzBdID0gQTMrMTsKICAg
cmV0X2FycmF5X2xlbmd0aHMgWzhdWzFdID0gMTA7CiAgIHJldF9hcnJheV9uZCBbOF0gPSAyOwog
ICByZXRfYXJyYXlfbGVuZ3RocyBbOV1bMF0gPSBBMysxOwogICByZXRfYXJyYXlfbmQgWzldID0g
MTsKICAgcmV0X2FycmF5X2xlbmd0aHMgWzEwXVswXSA9IEEzKzE7CiAgIHJldF9hcnJheV9uZCBb
MTBdID0gMTsKICAgcmV0X2FycmF5X2xlbmd0aHMgWzExXVswXSA9IEEzKzE7CiAgIHJldF9hcnJh
eV9uZCBbMTFdID0gMTsKICAgcmV0X2FycmF5X2xlbmd0aHMgWzEyXVswXSA9IEEzKzE7CiAgIHJl
dF9hcnJheV9uZCBbMTJdID0gMTsKICAgcmV0X2FycmF5X2xlbmd0aHMgWzEzXVswXSA9IEEzKzE7
CiAgIHJldF9hcnJheV9uZCBbMTNdID0gMTsKICAgZm9yIChpID0gMDsgaSA8IDE0OyBpKyspIHsK
ICAgICAgaW50IGo7CiAgICAgIGZvciAoaj0wOyBqIDwgcmV0X2FycmF5X25kIFtpXTsgaisrKQog
ICAgICAgIGRpbTFbal0gPSByZXRfYXJyYXlfbGVuZ3Roc1tpXVtqXTsKICAgICAgcmV0X2FycmF5
cyBbaV0gPSAoUHlBcnJheU9iamVjdCAqKSAoKihQeU9iamVjdCAqICgqKShpbnQsIGludCAqLCBp
bnQpKSBQeUFycmF5X0FQSVsxMl0pKAogICAgICAgICAgICAgICAgcmV0X2FycmF5X25kIFtpXSwg
ZGltMSwgcmV0X2FycmF5X3R5cGVzIFtpXSk7CiAgICAgIGlmIChyZXRfYXJyYXlfbmQgW2ldID4g
MSkge2ludCBtMSwgbjEsIGl0bXA7IG4xID0gcmV0X2FycmF5cyBbaV0tPm5kOyBtMSA9IHJldF9h
cnJheXMgW2ldLT5zdHJpZGVzW24xLTFdOyBmb3IoaXRtcD0wOyBpdG1wIDwgbjEgOyBpdG1wKysp
IHsgcmV0X2FycmF5cyBbaV0tPnN0cmlkZXNbaXRtcF0gPSBtMTsgbTEgKj0gcmV0X2FycmF5cyBb
aV0tPmRpbWVuc2lvbnNbaXRtcF07IH0gcmV0X2FycmF5cyBbaV0tPmZsYWdzICY9IH4xOyB9CiAg
IH0KCiAgIGNhbGxnbGYyZF8gKCZBMSwmQTIsJkEzLChpbnQgKilheFswXS0+ZGF0YSwoZG91Ymxl
ICopYXhbMV0tPmRhdGEsKGRvdWJsZSAqKWF4WzJdLT5kYXRhLChkb3VibGUgKilheFszXS0+ZGF0
YSwoZG91YmxlICopYXhbNF0tPmRhdGEsJkE5LCZBMTAsJkExMSwmQTEyLCZBMTMsKGRvdWJsZSAq
KWF4WzVdLT5kYXRhLChkb3VibGUgKilheFs2XS0+ZGF0YSwoZG91YmxlICopYXhbN10tPmRhdGEs
KGRvdWJsZSAqKWF4WzhdLT5kYXRhLChkb3VibGUgKilheFs5XS0+ZGF0YSwoZG91YmxlICopYXhb
MTBdLT5kYXRhLChkb3VibGUgKilheFsxMV0tPmRhdGEsJkEyMSwoZG91YmxlICopYXhbMTJdLT5k
YXRhLCZBMjMsKGRvdWJsZSAqKWF4WzEzXS0+ZGF0YSwoZG91YmxlICopYXhbMTRdLT5kYXRhLChk
b3VibGUgKilheFsxNV0tPmRhdGEsKGRvdWJsZSAqKWF4WzE2XS0+ZGF0YSwmQTI4LChkb3VibGUg
KilheFsxN10tPmRhdGEsKGRvdWJsZSAqKWF4WzE4XS0+ZGF0YSwoZG91YmxlICopYXhbMTldLT5k
YXRhLChkb3VibGUgKilheFsyMF0tPmRhdGEsJkEzMywmQTM0LCZBMzUsJnJldF8xLCZyZXRfMiwm
cmV0XzMsJnJldF80LCZyZXRfNSwmcmV0XzYsJnJldF83LChkb3VibGUgKilyZXRfYXJyYXlzWzBd
LT5kYXRhLChkb3VibGUgKilyZXRfYXJyYXlzWzFdLT5kYXRhLChkb3VibGUgKilyZXRfYXJyYXlz
WzJdLT5kYXRhLChkb3VibGUgKilyZXRfYXJyYXlzWzNdLT5kYXRhLChkb3VibGUgKilyZXRfYXJy
YXlzWzRdLT5kYXRhLChkb3VibGUgKilyZXRfYXJyYXlzWzVdLT5kYXRhLChkb3VibGUgKilyZXRf
YXJyYXlzWzZdLT5kYXRhLChkb3VibGUgKilyZXRfYXJyYXlzWzddLT5kYXRhLChkb3VibGUgKily
ZXRfYXJyYXlzWzhdLT5kYXRhLCZBMzYsKGRvdWJsZSAqKXJldF9hcnJheXNbOV0tPmRhdGEsKGRv
dWJsZSAqKXJldF9hcnJheXNbMTBdLT5kYXRhLChkb3VibGUgKilyZXRfYXJyYXlzWzExXS0+ZGF0
YSwoZG91YmxlICopcmV0X2FycmF5c1sxMl0tPmRhdGEsKGRvdWJsZSAqKXJldF9hcnJheXNbMTNd
LT5kYXRhKTsKICAgcmV0X29iamVjdCA9IFB5X0J1aWxkVmFsdWUgKCJkZGRkZGRkT09PT09PT09P
T09PT08iLCByZXRfMSwgcmV0XzIsIHJldF8zLCByZXRfNCwgcmV0XzUsIHJldF82LCByZXRfNywg
cmV0X2FycmF5c1swXSwgcmV0X2FycmF5c1sxXSwgcmV0X2FycmF5c1syXSwgcmV0X2FycmF5c1sz
XSwgcmV0X2FycmF5c1s0XSwgcmV0X2FycmF5c1s1XSwgcmV0X2FycmF5c1s2XSwgcmV0X2FycmF5
c1s3XSwgcmV0X2FycmF5c1s4XSwgcmV0X2FycmF5c1s5XSwgcmV0X2FycmF5c1sxMF0sIHJldF9h
cnJheXNbMTFdLCByZXRfYXJyYXlzWzEyXSwgcmV0X2FycmF5c1sxM10pOwogICBmb3IgKGkgPSAw
OyBpIDwgMTQ7IGkrKykgaWYgKChyZXRfYXJyYXlzW2ldKSA9PSAwKSA7IGVsc2UgaWYgKC0tKHJl
dF9hcnJheXNbaV0pLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShyZXRf
YXJyYXlzW2ldKSktPm9iX3R5cGUtPnRwX2RlYWxsb2MpKChQeU9iamVjdCAqKSgoUHlPYmplY3Qg
KikocmV0X2FycmF5c1tpXSkpKTsKICAgcmV0dXJuIHJldF9vYmplY3Q7CiBlcnI6CiAgIGZvciAo
aSA9IDA7IGkgPCAxNDsgaSsrKSBpZiAoKHJldF9hcnJheXNbaV0pID09IDApIDsgZWxzZSBpZiAo
LS0ocmV0X2FycmF5c1tpXSktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2UgKCooKFB5T2JqZWN0ICop
KHJldF9hcnJheXNbaV0pKS0+b2JfdHlwZS0+dHBfZGVhbGxvYykoKFB5T2JqZWN0ICopKChQeU9i
amVjdCAqKShyZXRfYXJyYXlzW2ldKSkpOwogICByZXR1cm4gMDsKfQoKCnN0YXRpYyBzdHJ1Y3Qg
UHlNZXRob2REZWYgZ2xmMjNmX21ldGhvZHNbXSA9IHsKeyJjYWxsZ2xmMmQiLCBnbGYyM2ZfY2Fs
bGdsZjJkLCAxLCBnbGYyM2ZfY2FsbGdsZjJkX19kb2NfX30sCiAgIHswLCAwLCAwLCAwfQp9OwoK
c3RhdGljIGNoYXIgZ2xmMjNmX21vZHVsZV9kb2N1bWVudGF0aW9uW10gPQoiIgo7Cgp2b2lkIGlu
aXRnbGYyM2YoKQp7CiAgICAgICAgUHlPYmplY3QgKm0sICpkOwoKICAgICAgICB7IFB5T2JqZWN0
ICpudW1weSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiX251bXB5Iik7IGlmIChudW1weSAhPSAw
KSB7IFB5T2JqZWN0ICptb2R1bGVfZGljdCA9IFB5TW9kdWxlX0dldERpY3QobnVtcHkpOyBQeU9i
amVjdCAqY19hcGlfb2JqZWN0ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlX2RpY3QsICJf
QVJSQVlfQVBJIik7IGlmICgoKGNfYXBpX29iamVjdCktPm9iX3R5cGUgPT0gJlB5Q09iamVjdF9U
eXBlKSkgeyBQeUFycmF5X0FQSSA9ICh2b2lkICoqKVB5Q09iamVjdF9Bc1ZvaWRQdHIoY19hcGlf
b2JqZWN0KTsgfSB9IH07CiAgICAgICAgbSA9IFB5X0luaXRNb2R1bGU0KCJnbGYyM2YiLCBnbGYy
M2ZfbWV0aG9kcywKICAgICAgICAgICAgICAgIGdsZjIzZl9tb2R1bGVfZG9jdW1lbnRhdGlvbiwK
ICAgICAgICAgICAgICAgIChQeU9iamVjdCopMCwxMDEwKTsKCiAgICAgICAgZCA9IFB5TW9kdWxl
X0dldERpY3QobSk7CiAgICAgICAgRXJyb3JPYmplY3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nKCJn
bGYyM2YuZXJyb3IiKTsKICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiZXJyb3IiLCBF
cnJvck9iamVjdCk7CgoKICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAg
ICAgIFB5X0ZhdGFsRXJyb3IoImNhbid0IGluaXRpYWxpemUgbW9kdWxlIGdsZjIzZiIpOwp9CgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==


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