This is the mail archive of the gcc-bugs@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]
Other format: [Raw text]

c/9803: Internal compiler error with -g -gdwarf -O4


>Number:         9803
>Category:       c
>Synopsis:       Internal compiler error with -g -gdwarf -O4
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Feb 22 10:56:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Dr. Markus Ammer
>Release:        gcc version 3.2.1
>Organization:
>Environment:
Linux 2.4.18
>Description:
cc -g -gdwarf -c zf-cre-open.c -DHPDAT    -DST_BUFFER_BLOCKS=32 -DDEVICE=\"/dev/nst0\" -O4 -Wall -DDDS_TRACE=1 -D_GNU_SOURCE -DVERSION=\"2.5.2\"
zf-cre-open.c: In function `zfopen':
zf-cre-open.c:81: Internal compiler error in dwarfout_file_scope_decl, at dwarfout.c:5814

(O4 and -gdwarf was by accident, does not make much sense, of course).
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-csrc; name="xx.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="xx.c"

IyAxICJ6Zi1jcmUtb3Blbi5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4i
CiMgMSAiemYtY3JlLW9wZW4uYyIKIyAxOSAiemYtY3JlLW9wZW4uYyIKIyAxICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0ICIvdXNyL2luY2x1ZGUv
ZmVhdHVyZXMuaCIgMiAzCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzEzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMiAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCgojIDEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMjAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUv
c3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDI5NCAiL3Vzci9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVk
ZWYgbG9uZyBpbnQgd2NoYXJfdDsKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoK
CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRmbGFncy5oIiAxIDMKIyA0MyAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgi
IDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZW5kaWFuLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3IvaW5jbHVkZS9lbmRpYW4u
aCIgMiAzCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMiAzCgp1bmlvbiB3
YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5z
aWduZWQgaW50IF9fd190ZXJtc2lnOjc7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19jb3JlZHVt
cDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfcmV0Y29kZTo4OwogICAgICAgIHVuc2lnbmVk
IGludDoxNjsKCgoKCgoKCiAgICAgIH0gX193YWl0X3Rlcm1pbmF0ZWQ7CiAgICBzdHJ1Y3QKICAg
ICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3B2YWw6ODsKICAgICAgICB1bnNpZ25l
ZCBpbnQgX193X3N0b3BzaWc6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCiAgICAg
IH0gX193YWl0X3N0b3BwZWQ7CiAgfTsKIyA0NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMK
IyA2OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYgdW5pb24KICB7CiAgICB1bmlv
biB3YWl0ICpfX3VwdHI7CiAgICBpbnQgKl9faXB0cjsKICB9IF9fV0FJVF9TVEFUVVMgX19hdHRy
aWJ1dGVfXyAoKF9fdHJhbnNwYXJlbnRfdW5pb25fXykpOwojIDk0ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGludCByZW07CiAg
fSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90OwogICAgbG9u
ZyBpbnQgcmVtOwogIH0gbGRpdl90OwoKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzdHJ1Y3QK
ICB7CiAgICBsb25nIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGxvbmcgaW50IHJlbTsKICB9IGxs
ZGl2X3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHNpemVfdCBfX2N0
eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSA7CgoKCmV4dGVybiBkb3VibGUgYXRvZiAoX19jb25z
dCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBh
dG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7Cgpl
eHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGF0b2xs
IChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoKCgpl
eHRlcm4gZmxvYXQgc3RydG9mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoKZXh0ZXJuIGxv
bmcgZG91YmxlIHN0cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoKCgpl
eHRlcm4gbG9uZyBpbnQgc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSkgOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CgoKCl9fZXh0ZW5zaW9u
X18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19iYXNlKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25n
IGxvbmcgaW50IHN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19iYXNlKQogICAgIDsKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBs
b25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0
b3VsbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19i
YXNlKQogICAgIDsKIyAyMTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS94bG9jYWxlLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAzCnR5cGVk
ZWYgc3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CgogIHN0cnVjdCBsb2NhbGVfZGF0YSAqX19sb2Nh
bGVzWzEzXTsKCgogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0
IGludCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVyOwp9ICpf
X2xvY2FsZV90OwojIDIxMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKZXh0ZXJuIGxv
bmcgaW50IF9fc3RydG9sX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCmV4
dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiBs
b25nIGxvbmcgaW50IF9fc3RydG9sbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xv
Y2FsZV90IF9fbG9jKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcg
aW50IF9fc3RydG91bGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
X19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIDsKCmV4dGVybiBkb3VibGUgX19zdHJ0b2Rf
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICA7
CgpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBf
X2xvY2FsZV90IF9fbG9jKSA7CgpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2wgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19sb2NhbGVfdCBfX2xvYykgOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2lu
dGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXAp
CiAgICAgOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgIDsKZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3Vw
KSA7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9f
c3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25l
ZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgOwoK
CgoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3Ry
dG9kX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9u
ZyBpbnQKc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9s
X2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBfX2lubGlu
ZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewog
IHJldHVybiBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7
Cn0KCgpleHRlcm4gX19pbmxpbmUgZmxvYXQKc3RydG9mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRv
Zl9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcg
ZG91YmxlCnN0cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9sZF9pbnRlcm5hbCAoX19ucHRy
LCBfX2VuZHB0ciwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBs
b25nIGludApzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0
b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9u
X18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91cSAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAg
ICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRy
LCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGlu
ZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0
dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpf
X2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRv
dWxsIChfX2NvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50
ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUg
ZG91YmxlCmF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvZCAoX19u
cHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkpOwp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAo
X19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIsIChj
aGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludAphdG9s
IChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIg
KiopICgodm9pZCAqKTApLCAxMCk7Cn0KCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBs
b25nIGxvbmcgaW50CmF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0
b2xsIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CiMgMzg0ICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgOwoKCmV4
dGVybiBsb25nIGludCBhNjRsIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI4ICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgi
IDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAi
L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9f
dV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNp
b25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNp
b25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9i
aXRzL3R5cGVzLmgiIDMKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50
IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9u
X18gdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVh
ZF90ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsKdHlwZWRlZiBfX3Vf
aW50IF9fdWlkX3Q7CnR5cGVkZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVmIF9fdV9sb25nIF9f
aW5vX3Q7CnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtf
dDsKdHlwZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0
eXBlZGVmIGludCBfX3BpZF90Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5cGVkZWYgX191X2xv
bmcgX19ybGltX3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVmIF9fdV9p
bnQgX19pZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2Zz
aWRfdDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0
eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRz
X3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3
YmxrX3Q7Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVmIGludCBfX2Nsb2Nr
aWRfdDsKCgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKCgoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7
CgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9u
ZyBpbnQgX19ibGtzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVk
ZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90
Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBf
X2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVm
IF9fdV9xdWFkX3QgX19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5
cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9f
dF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVk
IGludCBfX3NvY2tsZW5fdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVz
LmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hl
ZC5oIiAzCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7
CiAgfTsKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVj
dCBfcHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3Bpbmxv
Y2s7Cgp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFk
X2Rlc2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9hdHRyX3MKewogIGludCBfX2Rl
dGFjaHN0YXRlOwogIGludCBfX3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9f
c2NoZWRwYXJhbTsKICBpbnQgX19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90
IF9fZ3VhcmRzaXplOwogIGludCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7
CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCgp0eXBlZGVmIHN0cnVj
dAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9wdGhyZWFkX2Rlc2Ny
IF9fY193YWl0aW5nOwp9IHB0aHJlYWRfY29uZF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50
IF9fZHVtbXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0
aHJlYWRfa2V5X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX21fcmVzZXJ2ZWQ7CiAg
aW50IF9fbV9jb3VudDsKICBfcHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAgaW50IF9fbV9raW5k
OwogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhyZWFkX211dGV4X3Q7
CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0
dHJfdDsKCgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBf
cHRocmVhZF9yd2xvY2tfdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fcndfbG9jazsK
ICBpbnQgX19yd19yZWFkZXJzOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVyOwogIF9wdGhy
ZWFkX2Rlc2NyIF9fcndfcmVhZF93YWl0aW5nOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVf
d2FpdGluZzsKICBpbnQgX19yd19raW5kOwogIGludCBfX3J3X3BzaGFyZWQ7Cn0gcHRocmVhZF9y
d2xvY2tfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2xvY2traW5kOwogIGludCBfX3Bz
aGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2thdHRyX3Q7CgoKCgp0eXBlZGVmIHZvbGF0aWxlIGludCBw
dGhyZWFkX3NwaW5sb2NrX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHN0cnVjdCBfcHRocmVhZF9m
YXN0bG9jayBfX2JhX2xvY2s7CiAgaW50IF9fYmFfcmVxdWlyZWQ7CiAgaW50IF9fYmFfcHJlc2Vu
dDsKICBfcHRocmVhZF9kZXNjciBfX2JhX3dhaXRpbmc7Cn0gcHRocmVhZF9iYXJyaWVyX3Q7CgoK
dHlwZWRlZiBzdHJ1Y3QgewogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9iYXJyaWVyYXR0cl90
OwoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwojIDE0NCAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MiAzCgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0
Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0eXBlZGVm
IF9fcXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBlZGVmIF9f
ZnNpZF90IGZzaWRfdDsKCgoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9f
aW5vX3QgaW5vX3Q7CgoKCgoKCnR5cGVkZWYgX19pbm82NF90IGlubzY0X3Q7CgoKCgp0eXBlZGVm
IF9fZGV2X3QgZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9f
bW9kZV90IG1vZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBlZGVm
IF9fdWlkX3QgdWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29mZl90IG9mZl90OwoKCgoKCgp0eXBlZGVm
IF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRl
ZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRl
ZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBl
ZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyA1OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwp0
eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190OwojIDcwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5
cGVkZWYgX190aW1lX3QgdGltZV90OwojIDgyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVk
ZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDk0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5
cGVkZWYgX190aW1lcl90IHRpbWVyX3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMwoKCgp0eXBlZGVmIF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwoKCgp0eXBlZGVmIF9fc3Vz
ZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMi4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0NyAiL3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50
OwojIDE5MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgaW50IGludDhfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiBpbnQgaW50MTZfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgaW50MzJfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiBpbnQgaW50NjRfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCgp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkp
Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9f
ICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMTUgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwojIDMxICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEg
MwojIDMyICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3NpZ3NldC5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMK
dHlwZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVu
c2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcg
aW50KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0Lmgi
IDIgMwoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKCgojIDEgIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDEgMwojIDEwNiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXNw
ZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMg
NDQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy90aW1lLmgiIDEgMwojIDY3ICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMKc3RydWN0IHRp
bWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7
CiAgfTsKIyA0NiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKCnR5cGVkZWYgbG9u
ZyBpbnQgX19mZF9tYXNrOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CgoKCiAgICBfX2ZkX21h
c2sgZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKV07CgoKCgoKICB9IGZk
X3NldDsKCgoKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKIyA4OSAiL3Vzci9pbmNsdWRl
L3N5cy9zZWxlY3QuaCIgMwoKCgoKCgoKZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZk
X3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9f
cmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmlj
dCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3Ry
aWN0IF9fdGltZW91dCkgOwoKCgoKCmV4dGVybiBpbnQgcHNlbGVjdCAoaW50IF9fbmZkcywgZmRf
c2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9f
cmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJp
Y3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVj
ICpfX3Jlc3RyaWN0IF9fdGltZW91dCwKICAgICAgICAgICAgICAgICAgICBjb25zdCBfX3NpZ3Nl
dF90ICpfX3Jlc3RyaWN0IF9fc2lnbWFzaykgOwoKCgojIDIxNiAiL3Vzci9pbmNsdWRlL3N5cy90
eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwojIDIx
OSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKCnR5cGVkZWYgX19ibGtzaXplX3Qg
Ymxrc2l6ZV90OwoKCgoKCgp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYg
X19mc2Jsa2NudF90IGZzYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250
X3Q7CiMgMjU3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0
X3QgYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7CnR5cGVk
ZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90OwoKCgojIDM5MSAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAyIDMKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IHJhbmRvbSAodm9pZCkgOwoKCmV4dGVy
biB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIDsKCgoKCgpleHRlcm4gY2hhciAq
aW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVmLAogICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbikgOwoKCgpleHRlcm4gY2hhciAqc2V0
c3RhdGUgKGNoYXIgKl9fc3RhdGVidWYpIDsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsK
ICAgIGludDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7
CiAgICBpbnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwog
ICAgaW50MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJh
bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQg
aW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgOwoKZXh0ZXJuIGludCBpbml0
c3RhdGVfciAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVm
LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgpleHRl
cm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoK
CgpleHRlcm4gaW50IHJhbmQgKHZvaWQpIDsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBp
bnQgX19zZWVkKSA7CgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkg
OwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBkb3VibGUgZXJh
bmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIDsKCgpleHRlcm4gbG9uZyBpbnQg
bHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gbG9uZyBpbnQgbnJhbmQ0OCAodW5zaWduZWQgc2hvcnQg
aW50IF9feHN1YmlbM10pIDsKCgpleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgOwpleHRl
cm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIDsKCgpl
eHRlcm4gdm9pZCBzcmFuZDQ4IChsb25nIGludCBfX3NlZWR2YWwpIDsKZXh0ZXJuIHVuc2lnbmVk
IHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSA7CmV4
dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddKSA7CgoKCgoK
c3RydWN0IGRyYW5kNDhfZGF0YQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3hbM107CiAg
ICB1bnNpZ25lZCBzaG9ydCBpbnQgX19vbGRfeFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBf
X2M7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19pbml0OwogICAgdW5zaWduZWQgbG9uZyBsb25n
IGludCBfX2E7CiAgfTsKCgpleHRlcm4gaW50IGRyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0
YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19y
ZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQg
aW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRh
ICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jl
c3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGlu
dCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IG5yYW5kNDhfciAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBp
bnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
IGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1
bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAg
ICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgc3JhbmQ0OF9y
IChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKQogICAg
IDsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10s
CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7Cgpl
eHRlcm4gaW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwojIDUyNyAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3Np
emUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChz
aXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxs
b2NfXykpOwoKCgoKCmV4dGVybiB2b2lkICpyZWFsbG9jICh2b2lkICpfX3B0ciwgc2l6ZV90IF9f
c2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkIGZyZWUgKHZv
aWQgKl9fcHRyKSA7CgoKCmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0cikgOwoKCgojIDEg
Ii91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIg
MwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKCgoKCgpleHRl
cm4gdm9pZCAqYWxsb2NhIChzaXplX3QgX19zaXplKSA7CgoKCgoKCiMgNTQ3ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkg
X19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgcG9zaXhfbWVtYWxp
Z24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19zaXplKQog
ICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4dGVybiB2b2lkIGFib3J0ICh2
b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0
ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIDsKCgoKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAo
Kl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICA7
CgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3JldHVybl9fKSk7CgoKCgpleHRlcm4gdm9pZCBfRXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4gY2hhciAqZ2V0ZW52IChfX2NvbnN0
IGNoYXIgKl9fbmFtZSkgOwoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52IChfX2NvbnN0
IGNoYXIgKl9fbmFtZSkgOwoKCgoKCmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykg
OwoKCgoKCmV4dGVybiBpbnQgc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBj
aGFyICpfX3ZhbHVlLCBpbnQgX19yZXBsYWNlKQogICAgIDsKCgpleHRlcm4gaW50IHVuc2V0ZW52
IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lk
KSA7CiMgNjIzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rdGVtcCAo
Y2hhciAqX190ZW1wbGF0ZSkgOwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3Rl
bXBsYXRlKSA7CiMgNjQwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBta3N0
ZW1wNjQgKGNoYXIgKl9fdGVtcGxhdGUpIDsKIyA2NTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MwpleHRlcm4gY2hhciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwoKCgoKZXh0ZXJuIGlu
dCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5kKSA7CgoKCgoKCmV4dGVybiBjaGFyICpj
YW5vbmljYWxpemVfZmlsZV9uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwojIDY3MiAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3Ry
aWN0IF9fcmVzb2x2ZWQpIDsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19j
b25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29t
cGFyaXNvbl9mbl90OwoKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9f
a2V5LCBfX2NvbnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJu
IHZvaWQgcXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUs
CiAgICAgICAgICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGlu
dCBhYnMgKGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcg
aW50IGxhYnMgKGxvbmcgaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19l
eHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBsbGFicyAobG9uZyBsb25nIGludCBfX3gp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgpleHRlcm4gZGl2X3QgZGl2
IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwpleHRlcm4gbGRpdl90IGxkaXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVu
b20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRl
cm4gbGxkaXZfdCBsbGRpdiAobG9uZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwojIDcyOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVy
biBjaGFyICplY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJp
Y3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsK
CgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQg
Kl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBf
X3NpZ24pIDsKCgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBjaGFyICpfX2J1ZikgOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChs
b25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNo
YXIgKnFnY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVm
KSA7CgoKCgpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwg
aW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJp
Y3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19y
ZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19sZW4pIDsKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1
ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2Rl
Y3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9f
cmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcg
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAg
ICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCgoKZXh0ZXJu
IGludCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50
IG1idG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHdj
dG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIDsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0
b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCmV4dGVybiBzaXpl
X3Qgd2NzdG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXplX3QgX19uKQogICAgIDsK
CgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMg
ODA4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIg
KipfX3Jlc3RyaWN0IF9fb3B0aW9ucCwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29u
c3QgKl9fcmVzdHJpY3QgX190b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX3ZhbHVlcCkgOwoKCgoKCmV4dGVybiB2b2lkIHNldGtleSAoX19jb25zdCBjaGFy
ICpfX2tleSkgOwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFnKSA7
CgoKCgoKCgpleHRlcm4gaW50IGdyYW50cHQgKGludCBfX2ZkKSA7CgoKCmV4dGVybiBpbnQgdW5s
b2NrcHQgKGludCBfX2ZkKSA7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIDsK
CgoKCgoKZXh0ZXJuIGludCBwdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90
IF9fYnVmbGVuKSA7CgoKZXh0ZXJuIGludCBnZXRwdCAodm9pZCkgOwoKCgoKCgpleHRlcm4gaW50
IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIDsKCgoKCgoKIyAy
MCAiemYtY3JlLW9wZW4uYyIgMgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4yLjEvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzOSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKCiMgMSAiL3Vzci9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0
NCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNsdWRlL3N0ZGlv
LmgiIDIgMwojIDU0ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2lu
Y2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwojIDY0ICIvdXNy
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUvc3RkaW8uaCIgMwp0
eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgNzQgIi91c3IvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9fR19jb25maWcuaCIgMSAzCiMgMTQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwoj
IDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzCiMgMzIxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4x
L2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIv
dXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmln
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93
Y2hhci5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMS9p
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL3djaGFy
LmgiIDIgMwojIDY3ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwp0eXBlZGVmIHN0cnVjdAp7CiAg
aW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9fd2No
Yls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgMjUgIi91c3IvaW5jbHVkZS9fR19j
b25maWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21ic3Rh
dGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBf
X3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDQ0ICIvdXNyL2lu
Y2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMSAzCiMgMjgg
Ii91c3IvaW5jbHVkZS9nY29udi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwoj
IDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKIyAxICIvdXNy
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUvc3RkZGVmLmgiIDEg
MwojIDMxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51bQp7CiAgX19HQ09OVl9P
SyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAogIF9fR0NPTlZfTk9NRU0s
CgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09VVFBVVCwKICBfX0dDT05W
X0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVULAoKICBfX0dDT05WX0lM
TEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9SCn07CgoKCmVudW0Kewog
IF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9FUlJPUlMgPSAweDAw
MDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhOwpz
dHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhOwoK
Cgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1
Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50LCBpbnQpOwoK
CnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7
CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7
CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVw
ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX19nY29udl9zdGVw
X2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJh
bnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19xdWVy
eV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2Nv
bnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0eXBlZGVmIHZvaWQg
KCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2NvbnZfdHJhbnNf
ZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2NvbnZfdHJhbnNf
Y29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252X3RyYW5zX2VuZF9mY3Qg
X190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29udl90cmFuc19k
YXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVjdCBfX2djb252
X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAqX19tb2RuYW1l
OwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsKICBjaGFyICpfX3RvX25h
bWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19pbml0X2ZjdDsK
ICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVkZWRfZnJvbTsK
ICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsKICBpbnQgX19t
YXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0YTsKfTsKCgoK
c3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZjsKICB1
bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoKICBpbnQgX19p
bnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBfX21ic3RhdGVf
dCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3QgX19nY29udl90
cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252X2luZm8Kewog
IHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBzOwogIF9fZXh0
ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAqX19nY29udl90
OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBlZGVmIHVuaW9uCnsKICBz
dHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAgc3RydWN0IF9fZ2NvbnZf
aW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YTsKICB9IF9fY29t
YmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQx
Nl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVk
IGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKIyAz
MyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDUzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIg
MwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9z
dGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4y
LjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192
YV9saXN0OwojIDU0ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgMTYwICIvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwojIDE3MCAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoKCgoKc3Ry
dWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lP
X0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwojIDE5MyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMKfTsKCgplbnVtIF9fY29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVj
dnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9OwojIDI2
MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdz
OwoKCgoKICBjaGFyKiBfSU9fcmVhZF9wdHI7CiAgY2hhciogX0lPX3JlYWRfZW5kOwogIGNoYXIq
IF9JT19yZWFkX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRl
X3B0cjsKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwogIGNoYXIqIF9JT19idWZfYmFzZTsKICBjaGFy
KiBfSU9fYnVmX2VuZDsKCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBjaGFyICpfSU9fYmFja3Vw
X2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtl
cnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Js
a3NpemU7CiAgX19vZmZfdCBfb2xkX29mZnNldDsKCgoKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2Nv
bHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsK
CgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAzMDUgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiAg
X19vZmY2NF90IF9vZmZzZXQ7CgoKCgoKICB2b2lkICpfX3BhZDE7CiAgdm9pZCAqX19wYWQyOwoK
ICBpbnQgX21vZGU7CgogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2YgKGludCkgLSAyICogc2l6
ZW9mICh2b2lkICopXTsKCn07CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lPX0ZJTEU7CgoK
c3RydWN0IF9JT19GSUxFX3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJf
MV9zdGRpbl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4
dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CiMgMzQ0ICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9f
Y29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYgX19z
c2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVm
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5
cGVkZWYgaW50IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3Ms
IGludCBfX3cpOwoKCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsK
CgoKCnR5cGVkZWYgX19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5cGVkZWYg
X19pb193cml0ZV9mbiBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3NlZWtf
Zm4gY29va2llX3NlZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNvb2tpZV9j
bG9zZV9mdW5jdGlvbl90OwoKCnR5cGVkZWYgc3RydWN0CnsKICBfX2lvX3JlYWRfZm4gKnJlYWQ7
CiAgX19pb193cml0ZV9mbiAqd3JpdGU7CiAgX19pb19zZWVrX2ZuICpzZWVrOwogIF9faW9fY2xv
c2VfZm4gKmNsb3NlOwp9IF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Q7CnR5cGVkZWYgX0lPX2Nv
b2tpZV9pb19mdW5jdGlvbnNfdCBjb29raWVfaW9fZnVuY3Rpb25zX3Q7CgpzdHJ1Y3QgX0lPX2Nv
b2tpZV9maWxlOwoKCmV4dGVybiB2b2lkIF9JT19jb29raWVfaW5pdCAoc3RydWN0IF9JT19jb29r
aWVfZmlsZSAqX19jZmlsZSwgaW50IF9fcmVhZF93cml0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkICpfX2Nvb2tpZSwgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2Zucyk7
CgoKCgoKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQg
X191ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fb3ZlcmZsb3cgKF9JT19GSUxFICos
IGludCkgOwpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4g
d2ludF90IF9fd3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193b3ZlcmZsb3cg
KF9JT19GSUxFICosIHdpbnRfdCkgOwojIDQyNiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0
ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAo
aW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJTEUg
Kl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgOwoKZXh0ZXJu
IGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19mcCkgOwoKCgoKCmV4dGVybiB2b2lk
IF9JT19mbG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxl
IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikg
OwojIDQ1NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAo
X0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QsIGludCAqX19yZXN0cmljdCkgOwpleHRlcm4g
aW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVz
dHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCkgOwpleHRlcm4g
X19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkgOwpleHRlcm4g
c2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVybiBf
X29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpIDsK
ZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQp
IDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSA7CiMgNzUg
Ii91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRpby5o
IiAyIDMKCgoKCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgX19ub3RfdmFfbGlzdF9fOwojIDg5ICIv
dXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUvc3RkaW8uaCIg
Mwp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7CgoKCgp0eXBlZGVmIF9HX2Zwb3M2NF90IGZwb3M2
NF90OwojIDEzOCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNs
dWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzCiMg
MTM5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUvc3Rk
aW8uaCIgMiAzCgoKCmV4dGVybiBGSUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsKZXh0
ZXJuIEZJTEUgKnN0ZGVycjsKCgoKCgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAq
X19maWxlbmFtZSkgOwoKZXh0ZXJuIGludCByZW5hbWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9f
Y29uc3QgY2hhciAqX19uZXcpIDsKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSA7CiMg
MTY3ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUvc3Rk
aW8uaCIgMwpleHRlcm4gRklMRSAqdG1wZmlsZTY0ICh2b2lkKSA7CgoKZXh0ZXJuIGNoYXIgKnRt
cG5hbSAoY2hhciAqX19zKSA7CgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykg
OwojIDE4NyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNsdWRl
L3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9f
Y29uc3QgY2hhciAqX19wZngpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoK
CmV4dGVybiBpbnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZmx1c2gg
KEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpf
X3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmY2xvc2VhbGwgKHZvaWQpIDsKCgoKCgpleHRlcm4g
RklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSA7CgpleHRlcm4g
RklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAg
ICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKIyAyMzEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4
dGVybiBGSUxFICpmb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSA7
CmV4dGVybiBGSUxFICpmcmVvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t
b2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkg
OwoKCgoKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19tb2Rl
cykgOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tpZSAodm9pZCAqX19yZXN0cmljdCBfX21h
Z2ljX2Nvb2tpZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICBfSU9fY29va2llX2lvX2Z1
bmN0aW9uc190IF9faW9fZnVuY3MpIDsKCgpleHRlcm4gRklMRSAqZm1lbW9wZW4gKHZvaWQgKl9f
cywgc2l6ZV90IF9fbGVuLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgoKCmV4dGVybiBGSUxF
ICpvcGVuX21lbXN0cmVhbSAoY2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fc2l6ZWxvYykgOwoKCgoKCmV4
dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0
cmljdCBfX2J1ZikgOwoKCgpleHRlcm4gaW50IHNldHZidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgaW50IF9f
bW9kZXMsIHNpemVfdCBfX24pIDsKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgX19zaXplKSA7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAq
X19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsIC4uLikgOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg
Li4uKSA7CgoKZXh0ZXJuIGludCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVj
X3ZhX2xpc3QgX19hcmcpIDsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICA7CgpleHRlcm4gaW50
IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoK
CgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4
bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywg
NCkpKTsKCmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90
IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKCgoKCgpleHRlcm4gaW50IHZhc3ByaW50ZiAo
Y2hhciAqKl9fcmVzdHJpY3QgX19wdHIsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2YsCiAg
ICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBfX2FzcHJp
bnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBhc3ByaW50ZiAoY2hhciAq
Kl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3By
aW50Zl9fLCAyLCAzKSkpOwoKCmV4dGVybiBpbnQgdmRwcmludGYgKGludCBfX2ZkLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9s
aXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAy
LCAwKSkpOwpleHRlcm4gaW50IGRwcmludGYgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmlu
dGZfXywgMiwgMykpKTsKCgoKCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fcywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwgLi4uKSA7CgoKCmV4dGVybiBpbnQgdmZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3Ms
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICBf
X2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19z
Y2FuZl9fLCAyLCAwKSkpOwoKCmV4dGVybiBpbnQgdnNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18g
KChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDEsIDApKSk7CgoKZXh0ZXJuIGludCB2c3NjYW5mIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgoKCmV4dGVybiBp
bnQgZmdldGMgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJl
YW0pIDsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpIDsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0
Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2Vk
ICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkg
OwoKCgoKZXh0ZXJuIGludCBmcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJu
IGludCBwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0Y2hh
ciAoaW50IF9fYykgOwoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywg
RklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywg
RklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSA7
CgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0
dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAg
ICAgOwoKCgpleHRlcm4gY2hhciAqZmdldHNfdW5sb2NrZWQgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBpbnQgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0pIDsKCgoKCmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3MpIDsKIyA0MzUgIi91
c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRpby5oIiAz
CmV4dGVybiBfX3NzaXplX3QgX19nZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwg
aW50IF9fZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSkgOwpleHRlcm4gX19zc2l6ZV90IGdldGRlbGltIChjaGFyICoqX19y
ZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpf
X3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgpleHRlcm4gX19zc2l6ZV90IGdldGxp
bmUgKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIDsK
CgoKZXh0ZXJuIGludCBmcHV0c191bmxvY2tlZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkg
OwoKCgpleHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCmV4dGVybiBpbnQg
dW5nZXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFk
ICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgpleHRlcm4gc2l6
ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXpl
LAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3Mp
IDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBfX3B0
ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9f
biwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxv
Y2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50
IF9fb2ZmLCBpbnQgX193aGVuY2UpIDsKCmV4dGVybiBsb25nIGludCBmdGVsbCAoRklMRSAqX19z
dHJlYW0pIDsKCmV4dGVybiB2b2lkIHJld2luZCAoRklMRSAqX19zdHJlYW0pIDsKIyA0OTggIi91
c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRpby5oIiAz
CmV4dGVybiBpbnQgZnNlZWtvIChGSUxFICpfX3N0cmVhbSwgX19vZmZfdCBfX29mZiwgaW50IF9f
d2hlbmNlKSA7CgpleHRlcm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4
dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvc190ICpfX3Jl
c3RyaWN0IF9fcG9zKQogICAgIDsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0s
IF9fY29uc3QgZnBvc190ICpfX3BvcykgOwojIDUzMiAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjIuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmc2Vla282NCAo
RklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CmV4dGVybiBf
X29mZjY0X3QgZnRlbGxvNjQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmdldHBvczY0
IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19yZXN0cmljdCBfX3BvcykK
ICAgICA7CmV4dGVybiBpbnQgZnNldHBvczY0IChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9z
NjRfdCAqX19wb3MpIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9fc3RyZWFtKSA7
CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZlcnJvciAo
RklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsK
ZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4g
dm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCgpleHRlcm4gaW50IHN5c19uZXJy
OwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CgoKZXh0ZXJuIGlu
dCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3QgX3N5c19lcnJsaXN0W107
CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50
IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgoKZXh0ZXJuIEZJTEUgKnBv
cGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoK
ZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0
ZXJtaWQgKGNoYXIgKl9fcykgOwoKCgoKCmV4dGVybiBjaGFyICpjdXNlcmlkIChjaGFyICpfX3Mp
IDsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2JzdGFja19wcmludGYgKHN0cnVj
dCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKZXh0ZXJuIGludCBv
YnN0YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJncykgOwoK
CgoKCgoKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4g
aW50IGZ0cnlsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gdm9pZCBmdW5sb2Nr
ZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKIyA2MzkgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RkaW8uaCIgMSAzCiMgMzMgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKZXh0ZXJuIF9f
aW5saW5lIGludAp2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIF9fZ251
Y192YV9saXN0IF9fYXJnKQp7CiAgcmV0dXJuIHZmcHJpbnRmIChzdGRvdXQsIF9fZm10LCBfX2Fy
Zyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXIgKHZvaWQpCnsKICByZXR1cm4gX0lP
X2dldGMgKHN0ZGluKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjX3VubG9ja2VkIChG
SUxFICpfX2ZwKQp7CiAgcmV0dXJuICgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9J
T19yZWFkX2VuZCA/IF9fdWZsb3cgKF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+
X0lPX3JlYWRfcHRyKyspOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyX3VubG9ja2Vk
ICh2b2lkKQp7CiAgcmV0dXJuICgoc3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lP
X3JlYWRfZW5kID8gX191ZmxvdyAoc3RkaW4pIDogKih1bnNpZ25lZCBjaGFyICopIChzdGRpbikt
Pl9JT19yZWFkX3B0cisrKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyIChpbnQg
X19jKQp7CiAgcmV0dXJuIF9JT19wdXRjIChfX2MsIHN0ZG91dCk7Cn0KCgoKCmV4dGVybiBfX2lu
bGluZSBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0
dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVf
ZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVu
c2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoK
CgoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19z
dHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVh
bSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFy
KSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysg
PSAoX19jKSkpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyX3VubG9ja2VkIChpbnQg
X19jKQp7CiAgcmV0dXJuICgoKHN0ZG91dCktPl9JT193cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9J
T193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoc3Rkb3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykp
IDogKHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7
Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgX19zc2l6ZV90CmdldGxpbmUgKGNoYXIgKipfX2xpbmVw
dHIsIHNpemVfdCAqX19uLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiBfX2dldGRlbGltIChf
X2xpbmVwdHIsIF9fbiwgJ1xuJywgX19zdHJlYW0pOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGlu
dApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSkt
Pl9mbGFncyAmIDB4MTApICE9IDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApmZXJyb3JfdW5s
b2NrZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYg
MHgyMCkgIT0gMCk7Cn0KIyA2NDAgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4yLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKIyAyMSAiemYtY3JlLW9wZW4uYyIgMgojIDEg
Ii91c3IvaW5jbHVkZS9zeXMvbXRpby5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy9tdGlv
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDEgMwojIDI0ICIvdXNyL2luY2x1
ZGUvc3lzL2lvY3RsLmgiIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9pb2N0bHMuaCIgMSAz
CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL2lvY3Rscy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Fz
bS9pb2N0bHMuaCIgMSAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9pb2N0bC5oIiAxIDMKIyA1
ICIvdXNyL2luY2x1ZGUvYXNtL2lvY3Rscy5oIiAyIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMv
aW9jdGxzLmgiIDIgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDIgMwoKCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvaW9jdGwtdHlwZXMuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9i
aXRzL2lvY3RsLXR5cGVzLmgiIDMKc3RydWN0IHdpbnNpemUKICB7CiAgICB1bnNpZ25lZCBzaG9y
dCBpbnQgd3Nfcm93OwogICAgdW5zaWduZWQgc2hvcnQgaW50IHdzX2NvbDsKICAgIHVuc2lnbmVk
IHNob3J0IGludCB3c194cGl4ZWw7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgd3NfeXBpeGVsOwog
IH07CgoKc3RydWN0IHRlcm1pbwogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCBjX2lmbGFnOwog
ICAgdW5zaWduZWQgc2hvcnQgaW50IGNfb2ZsYWc7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgY19j
ZmxhZzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBjX2xmbGFnOwogICAgdW5zaWduZWQgY2hhciBj
X2xpbmU7CiAgICB1bnNpZ25lZCBjaGFyIGNfY2NbOF07Cn07CiMgMzEgIi91c3IvaW5jbHVkZS9z
eXMvaW9jdGwuaCIgMiAzCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90dHlkZWZhdWx0cy5o
IiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL3N5cy9pb2N0bC5oIiAyIDMKCgoKCmV4dGVybiBpbnQg
aW9jdGwgKGludCBfX2ZkLCB1bnNpZ25lZCBsb25nIGludCBfX3JlcXVlc3QsIC4uLikgOwoKCiMg
MjggIi91c3IvaW5jbHVkZS9zeXMvbXRpby5oIiAyIDMKCgoKc3RydWN0IG10b3AKICB7CiAgICBz
aG9ydCBpbnQgbXRfb3A7CiAgICBpbnQgbXRfY291bnQ7CiAgfTsKIyA4MiAiL3Vzci9pbmNsdWRl
L3N5cy9tdGlvLmgiIDMKc3RydWN0IG10Z2V0CiAgewogICAgbG9uZyBpbnQgbXRfdHlwZTsKICAg
IGxvbmcgaW50IG10X3Jlc2lkOwoKCgoKICAgIGxvbmcgaW50IG10X2RzcmVnOwogICAgbG9uZyBp
bnQgbXRfZ3N0YXQ7CiAgICBsb25nIGludCBtdF9lcnJlZzsKCiAgICBfX2RhZGRyX3QgbXRfZmls
ZW5vOwogICAgX19kYWRkcl90IG10X2Jsa25vOwogIH07CiMgMTI4ICIvdXNyL2luY2x1ZGUvc3lz
L210aW8uaCIgMwpzdHJ1Y3QgbXRfdGFwZV9pbmZvCiAgewogICAgbG9uZyBpbnQgdF90eXBlOwog
ICAgY2hhciAqdF9uYW1lOwogIH07CiMgMTU4ICIvdXNyL2luY2x1ZGUvc3lzL210aW8uaCIgMwpz
dHJ1Y3QgbXRwb3MKICB7CiAgICBsb25nIGludCBtdF9ibGtubzsKICB9OwoKCgoKCgpzdHJ1Y3Qg
bXRjb25maWdpbmZvCiAgewogICAgbG9uZyBpbnQgbXRfdHlwZTsKICAgIGxvbmcgaW50IGlmY190
eXBlOwogICAgdW5zaWduZWQgc2hvcnQgaW50IGlycW5yOwogICAgdW5zaWduZWQgc2hvcnQgaW50
IGRtYW5yOwogICAgdW5zaWduZWQgc2hvcnQgaW50IHBvcnQ7CgogICAgdW5zaWduZWQgbG9uZyBp
bnQgZGVidWc7CgogICAgdW5zaWduZWQgaGF2ZV9kZW5zOjE7CiAgICB1bnNpZ25lZCBoYXZlX2Jz
ZjoxOwogICAgdW5zaWduZWQgaGF2ZV9mc3I6MTsKICAgIHVuc2lnbmVkIGhhdmVfYnNyOjE7CiAg
ICB1bnNpZ25lZCBoYXZlX2VvZDoxOwogICAgdW5zaWduZWQgaGF2ZV9zZWVrOjE7CiAgICB1bnNp
Z25lZCBoYXZlX3RlbGw6MTsKICAgIHVuc2lnbmVkIGhhdmVfcmFzMToxOwogICAgdW5zaWduZWQg
aGF2ZV9yYXMyOjE7CiAgICB1bnNpZ25lZCBoYXZlX3JhczM6MTsKICAgIHVuc2lnbmVkIGhhdmVf
cWZhOjE7CgogICAgdW5zaWduZWQgcGFkMTo1OwogICAgY2hhciByZXNlcnZlZFsxMF07CiAgfTsK
IyAyMiAiemYtY3JlLW9wZW4uYyIgMgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMg
MjggIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9p
bmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAqX19yZXN0
cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmlj
dCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rl
c3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgOwoKCgoKCmV4dGVybiB2
b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCB2b2lkICpfX3Jl
c3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgaW50IF9fYywgc2l6ZV90IF9fbikK
ICAgICA7CgoKCgpleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVf
dCBfX24pIDsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0
IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVf
dCBfX24pCiAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHZvaWQg
KnJhd21lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1yY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50
IF9fYywgc2l6ZV90IF9fbikKICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpl
eHRlcm4gY2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIg
Kl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAg
OwoKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19u
KSA7CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFy
ICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJu
Y21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9f
Y29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z
cmMsIHNpemVfdCBfX24pIDsKIyAxMTEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4g
aW50IF9fc3RyY29sbF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwg
X19sb2NhbGVfdCBfX2wpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4g
c2l6ZV90IF9fc3RyeGZybV9sIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19zcmMsIHNp
emVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sKSA7CgoK
CgpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAo
KF9fbWFsbG9jX18pKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKnN0cm5kdXAgKF9fY29uc3QgY2hhciAq
X19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsK
IyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyY2hyIChfX2Nv
bnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRl
cm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNocm51bCAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHNp
emVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAo
X19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19jb25zdCBjaGFyICpf
X3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgpleHRlcm4gY2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29u
c3QgY2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4
dGVybiBjaGFyICpzdHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3Qg
Y2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVy
biBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19kZWxpbSkKICAgICA7CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19zYXZlX3B0cikgOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoKCgoKCgpleHRlcm4gdm9pZCAq
bWVtbWVtIChfX2NvbnN0IHZvaWQgKl9faGF5c3RhY2ssIHNpemVfdCBfX2hheXN0YWNrbGVuLAog
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fbmVlZGxlLCBzaXplX3QgX19uZWVk
bGVsZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiB2b2lkICpf
X21lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKZXh0ZXJuIHZv
aWQgKm1lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKCgpleHRl
cm4gc2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJubGVuIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5n
LCBzaXplX3QgX19tYXhsZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpl
eHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgOwoKCgpleHRlcm4gY2hhciAqc3Ry
ZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CgoK
CgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgoKZXh0ZXJu
IHZvaWQgYmNvcHkgKF9fY29uc3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9f
bikgOwoKCmV4dGVybiB2b2lkIGJ6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgpleHRl
cm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXpl
X3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpp
bmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCmV4dGVybiBjaGFyICpyaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgZmZzbCAobG9uZyBpbnQg
X19sKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBp
bnQgZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19j
b25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVy
biBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3My
LCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVy
biBpbnQgX19zdHJjYXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJuY2FzZWNtcF9sIChfX2NvbnN0
IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAqKl9fcmVzdHJpY3QgX19z
dHJpbmdwLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19k
ZWxpbSkgOwoKCgoKZXh0ZXJuIGludCBzdHJ2ZXJzY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRl
cm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIDsKCgpleHRlcm4gY2hhciAqX19zdHBjcHkg
KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMp
CiAgICAgOwpleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3Rw
bmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwpleHRlcm4gY2hhciAq
c3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hh
ciAqc3RyZnJ5IChjaGFyICpfX3N0cmluZykgOwoKCmV4dGVybiB2b2lkICptZW1mcm9iICh2b2lk
ICpfX3MsIHNpemVfdCBfX24pIDsKCgoKCgoKZXh0ZXJuIGNoYXIgKmJhc2VuYW1lIChfX2NvbnN0
IGNoYXIgKl9fZmlsZW5hbWUpIDsKIyAzNTcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0cmluZy5oIiAxIDMKIyAzNTggIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDEgMwojIDIxNyAi
L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSB2b2lkICpfX21l
bXBjcHlfc21hbGwgKHZvaWQgKiwgY2hhciwgY2hhciwgY2hhciwgY2hhciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX191aW50MTZfdCwgX191aW50MTZfdCwgX191aW50
MzJfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX191aW50MzJfdCwg
c2l6ZV90KTsKZXh0ZXJuIF9faW5saW5lIHZvaWQgKgpfX21lbXBjcHlfc21hbGwgKHZvaWQgKl9f
ZGVzdDEsCiAgICAgICAgICAgICAgICAgY2hhciBfX3NyYzBfMSwgY2hhciBfX3NyYzJfMSwgY2hh
ciBfX3NyYzRfMSwgY2hhciBfX3NyYzZfMSwKICAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9f
c3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgIF9fdWludDMyX3Qg
X19zcmMwXzQsIF9fdWludDMyX3QgX19zcmM0XzQsCiAgICAgICAgICAgICAgICAgc2l6ZV90IF9f
c3JjbGVuKQp7CiAgdW5pb24gewogICAgX191aW50MzJfdCBfX3VpOwogICAgX191aW50MTZfdCBf
X3VzaTsKICAgIHVuc2lnbmVkIGNoYXIgX191YzsKICAgIHVuc2lnbmVkIGNoYXIgX19jOwogIH0g
Kl9fdSA9IF9fZGVzdDE7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikKICAgIHsK
ICAgIGNhc2UgMToKICAgICAgX191LT5fX2MgPSBfX3NyYzBfMTsKICAgICAgX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAg
ICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDIpOwogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAgX191LT5fX3VzaSA9
IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsK
ICAgICAgX191LT5fX2MgPSBfX3NyYzJfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAgY2FzZSA0OgogICAgICBfX3UtPl9fdWkg
PSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7
CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAg
ICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X19j
ID0gX19zcmM0XzE7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEp
OwogICAgICBicmVhazsKICAgIGNhc2UgNjoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAg
ICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9f
dXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSAr
IDIpOwogICAgICBicmVhazsKICAgIGNhc2UgNzoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7
CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3Ut
Pl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDIpOwogICAgICBfX3UtPl9fYyA9IF9fc3JjNl8xOwogICAgICBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9f
dS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBf
X3UgKyA0KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBicmVhazsKICAgIH0KICByZXR1cm4gKHZv
aWQgKikgX191Owp9CiMgMzcxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJu
IHZvaWQgKl9fcmF3bWVtY2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2MpOwojIDM5NSAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cmNw
eV9zbWFsbCAoY2hhciAqLCBfX3VpbnQxNl90LCBfX3VpbnQxNl90LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdWludDMyX3QsIF9fdWludDMyX3QsIHNpemVfdCk7CmV4
dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJjcHlfc21hbGwgKGNoYXIgKl9fZGVzdCwKICAgICAg
ICAgICAgICAgIF9fdWludDE2X3QgX19zcmMwXzIsIF9fdWludDE2X3QgX19zcmM0XzIsCiAgICAg
ICAgICAgICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBfX3VpbnQzMl90IF9fc3JjNF80LAogICAg
ICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgX191aW50MzJfdCBf
X3VpOwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVuc2lnbmVkIGNoYXIgX191YzsKICB9ICpf
X3UgPSAodm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikK
ICAgIHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAg
ICBjYXNlIDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgYnJlYWs7CiAgICBj
YXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJy
ZWFrOwogICAgY2FzZSA0OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgYnJlYWs7
CiAgICBjYXNlIDU6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAg
ICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9
IF9fc3JjNF8yOwogICAgICBicmVhazsKICAgIGNhc2UgNzoKICAgICAgX191LT5fX3VpID0gX19z
cmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAg
ICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNh
c2UgODoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAg
YnJlYWs7CiAgICB9CiAgcmV0dXJuIF9fZGVzdDsKfQojIDU1NCAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cGNweV9zbWFsbCAoY2hhciAq
LCBfX3VpbnQxNl90LCBfX3VpbnQxNl90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fdWludDMyX3QsIF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVybiBfX2lubGluZSBj
aGFyICoKX19zdHBjcHlfc21hbGwgKGNoYXIgKl9fZGVzdCwKICAgICAgICAgICAgICAgIF9fdWlu
dDE2X3QgX19zcmMwXzIsIF9fdWludDE2X3QgX19zcmM0XzIsCiAgICAgICAgICAgICAgICBfX3Vp
bnQzMl90IF9fc3JjMF80LCBfX3VpbnQzMl90IF9fc3JjNF80LAogICAgICAgICAgICAgICAgc2l6
ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgdW5zaWduZWQgaW50IF9fdWk7CiAgICB1bnNp
Z25lZCBzaG9ydCBpbnQgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgICBjaGFyIF9f
YzsKICB9ICpfX3UgPSAodm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBf
X3NyY2xlbikKICAgIHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAg
YnJlYWs7CiAgICBjYXNlIDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAgY2Fz
ZSAzOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVh
azsKICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDMpOwogICAgICBicmVhazsKICAgIGNhc2UgNToK
ICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAg
IGNhc2UgNjoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAg
ICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsK
ICAgIGNhc2UgNzoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7
CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3Ut
Pl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgODoKICAgICAgX191LT5fX3VpID0g
X19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwog
ICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgMyk7CiAgICAgIGJyZWFrOwogICAgfQogIHJldHVybiAmX191LT5fX2M7Cn0K
IyA4NzMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6
ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpOwpleHRl
cm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIg
X19yZWplY3QpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3Nb
X19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsrX19y
ZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ry
Y3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUg
c2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBj
aGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUg
KF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQogICAg
ICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1bHQ7CiAgcmV0
dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMyAoX19j
b25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5s
aW5lIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0
MSwgY2hhciBfX3JlamVjdDIsCiAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDMpCnsKICByZWdp
c3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcg
JiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAh
PSBfX3JlamVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICArK19fcmVzdWx0
OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDkyOCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5o
IiAzCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19z
LCBjaGFyIF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAoX19j
b25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1
bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsrX19yZXN1
bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3Bu
X2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVf
dApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9f
YWNjZXB0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3Nb
X19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MikKICAg
ICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90
IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0
Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19z
LCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAgcmVn
aXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19h
Y2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCiAgICAgICAgIHx8IF9fc1tfX3Jl
c3VsdF0gPT0gX19hY2NlcHQzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0K
IyA5ODMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hh
ciAqX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIpOwpleHRlcm4gX19p
bmxpbmUgY2hhciAqCl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2Vw
dDEsIGludCBfX2FjY2VwdDIpCnsKCiAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9f
YWNjZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0MikKICAgICsrX19zOwogIHJldHVybiAqX19zID09
ICdcMCcgPyAoKHZvaWQgKikwKSA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQoKZXh0ZXJuIF9f
aW5saW5lIGNoYXIgKl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2Vw
dDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyLCBp
bnQgX19hY2NlcHQzKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnBicmtfYzMgKF9fY29u
c3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyLAogICAgICAgICAgICAg
IGludCBfX2FjY2VwdDMpCnsKCiAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fYWNj
ZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0MgogICAgICAgICAmJiAqX19zICE9IF9fYWNjZXB0MykK
ICAgICsrX19zOwogIHJldHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSA6IChjaGFyICop
IChzaXplX3QpIF9fczsKfQojIDEwMjYgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpl
eHRlcm4gX19pbmxpbmUgc2l6ZV90CnN0cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNp
emVfdCBfX21heGxlbikKewogIF9fY29uc3QgY2hhciAqX19lbmQgPSAoX19jb25zdCBjaGFyICop
IG1lbWNociAoX19zdHJpbmcsICdcMCcsIF9fbWF4bGVuKTsKICByZXR1cm4gX19lbmQgPyAoc2l6
ZV90KSAoX19lbmQgLSBfX3N0cmluZykgOiBfX21heGxlbjsKfQojIDEwNDUgIi91c3IvaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJ0b2tfcl8xYyAo
Y2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCk7CmV4dGVybiBfX2lubGluZSBj
aGFyICoKX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0
cCkKewogIGNoYXIgKl9fcmVzdWx0OwogIGlmIChfX3MgPT0gKCh2b2lkICopMCkpCiAgICBfX3Mg
PSAqX19uZXh0cDsKICB3aGlsZSAoKl9fcyA9PSBfX3NlcCkKICAgICsrX19zOwogIGlmICgqX19z
ID09ICdcMCcpCiAgICBfX3Jlc3VsdCA9ICgodm9pZCAqKTApOwogIGVsc2UKICAgIHsKICAgICAg
X19yZXN1bHQgPSBfX3M7CiAgICAgIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX3Nl
cCkKICAgICAgICArK19fczsKICAgICAgaWYgKCpfX3MgPT0gJ1wwJykKICAgICAgICAqX19uZXh0
cCA9IF9fczsKICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICpfX3MgPSAnXDAnOwogICAg
ICAgICAgKl9fbmV4dHAgPSBfX3MgKyAxOwogICAgICAgIH0KICAgIH0KICByZXR1cm4gX19yZXN1
bHQ7Cn0KIyAxMDk1ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5s
aW5lIGNoYXIgKl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KTsKZXh0ZXJu
IF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCkK
ewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2
b2lkICopMCkpCiAgICByZXR1cm4gKl9fcyA9ICgodm9pZCAqKTApOwogIGlmICgqX19yZXR2YWwg
PT0gX19yZWplY3QpCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIGlmICgoKl9fcyA9
IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZWplY3QpICYmIChfX3Jl
amVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19yZWplY3Qp
IDogc3RyY2hyIChfX3JldHZhbCwgX19yZWplY3QpKSkpICE9ICgodm9pZCAqKTApKQogICAgICAq
KCpfX3MpKysgPSAnXDAnOwogICAgZWxzZQogICAgICAqX19zID0gKCh2b2lkICopMCk7CiAgcmV0
dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMmMgKGNoYXIg
KipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSBj
aGFyICoKX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVq
ZWN0MikKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwg
PT0gKCh2b2lkICopMCkpCiAgICByZXR1cm4gKl9fcyA9ICgodm9pZCAqKTApOwogIGlmICgqX19y
ZXR2YWwgPT0gX19yZWplY3QxIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDIpCiAgICAqKCpfX3Mp
KysgPSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0
dmFsOwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYg
Kl9fY3AgIT0gX19yZWplY3QyKQogICAgICAgICsrX19jcDsKICAgICAgaWYgKCpfX2NwICE9ICdc
MCcpCiAgICAgICAgewogICAgICAgICAgKl9fcyA9IF9fY3A7CiAgICAgICAgICAqKCpfX3MpKysg
PSAnXDAnOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgICpfX3MgPSAoKHZvaWQgKikwKTsK
ICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNl
cF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5s
aW5lIGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIg
X19yZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0g
Kl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm4gKl9fcyA9ICgo
dm9pZCAqKTApOwogIGlmICgqX19yZXR2YWwgPT0gX19yZWplY3QxIHx8ICpfX3JldHZhbCA9PSBf
X3JlamVjdDIKICAgICAgfHwgKl9fcmV0dmFsID09IF9fcmVqZWN0MykKICAgICooKl9fcykrKyA9
ICdcMCc7CiAgZWxzZQogICAgewogICAgICByZWdpc3RlciBjaGFyICpfX2NwID0gX19yZXR2YWw7
CiAgICAgIHdoaWxlICgqX19jcCAhPSAnXDAnICYmICpfX2NwICE9IF9fcmVqZWN0MSAmJiAqX19j
cCAhPSBfX3JlamVjdDIKICAgICAgICAgICAgICYmICpfX2NwICE9IF9fcmVqZWN0MykKICAgICAg
ICArK19fY3A7CiAgICAgIGlmICgqX19jcCAhPSAnXDAnKQogICAgICAgIHsKICAgICAgICAgICpf
X3MgPSBfX2NwOwogICAgICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAgICAgICB9CiAgICAgIGVs
c2UKICAgICAgICAqX19zID0gKCh2b2lkICopMCk7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9
CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfZyAoY2hhciAqKl9fcywgX19jb25zdCBj
aGFyICpfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfZyAoY2hhciAq
Kl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFs
ID0gKl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm4gKCh2b2lk
ICopMCk7CiAgaWYgKCgqX19zID0gX19leHRlbnNpb25fXyAoeyBjaGFyIF9fYTAsIF9fYTEsIF9f
YTI7IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZWplY3QpICYmICgoc2l6ZV90KShjb25zdCB2
b2lkICopKChfX3JlamVjdCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoX19yZWplY3Qp
ID09IDEpID8gKChfX2EwID0gKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbMF0sIF9fYTAg
PT0gJ1wwJykgPyAoKHZvaWQpIChfX3JldHZhbCksICgodm9pZCAqKTApKSA6ICgoX19hMSA9ICgo
X19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzFdLCBfX2ExID09ICdcMCcpID8gKF9fZXh0ZW5z
aW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChfX2EwKSAmJiAoX19hMCkgPT0gJ1wwJyA/IChj
aGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19hMCkgOiBzdHJjaHIgKF9fcmV0dmFsLCBf
X2EwKSkpIDogKChfX2EyID0gKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbMl0sIF9fYTIg
PT0gJ1wwJykgPyBfX3N0cnBicmtfYzIgKF9fcmV0dmFsLCBfX2EwLCBfX2ExKSA6ICgoKF9fY29u
c3QgY2hhciAqKSAoX19yZWplY3QpKVszXSA9PSAnXDAnID8gX19zdHJwYnJrX2MzIChfX3JldHZh
bCwgX19hMCwgX19hMSwgX19hMikgOiBzdHJwYnJrIChfX3JldHZhbCwgX19yZWplY3QpKSkpKSA6
IHN0cnBicmsgKF9fcmV0dmFsLCBfX3JlamVjdCkpOyB9KSkgIT0gKCh2b2lkICopMCkpCiAgICAq
KCpfX3MpKysgPSAnXDAnOwogIHJldHVybiBfX3JldHZhbDsKfQojIDExOTMgIi91c3IvaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gY2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAq
X19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTIxMiAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hh
ciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18p
KTsKIyAzNjEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCgojIDIzICJ6Zi1jcmUtb3Bl
bi5jIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzCgojIDE3NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvcG9zaXhfb3B0LmgiIDEgMwojIDE3NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIgMSAzCiMgMjMg
Ii91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvd29yZHNpemUuaCIgMSAzCiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5o
IiAyIDMKIyAxODAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMTk5ICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
Mi4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIwMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAy
IDMKIyAyNDAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwp0eXBlZGVmIF9faW50cHRyX3QgaW50
cHRyX3Q7CgoKCgoKCnR5cGVkZWYgX19zb2NrbGVuX3Qgc29ja2xlbl90OwojIDI2MCAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgYWNjZXNzIChfX2NvbnN0IGNoYXIgKl9fbmFt
ZSwgaW50IF9fdHlwZSkgOwoKCgoKZXh0ZXJuIGludCBldWlkYWNjZXNzIChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSwgaW50IF9fdHlwZSkgOwojIDI5MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBfX29mZl90IGxzZWVrIChpbnQgX19mZCwgX19vZmZfdCBfX29mZnNldCwgaW50IF9fd2hl
bmNlKSA7CiMgMzAyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fb2ZmNjRfdCBs
c2VlazY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIDsKCgoK
ZXh0ZXJuIGludCBjbG9zZSAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIHNzaXplX3QgcmVhZCAoaW50
IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpIDsKCgpleHRlcm4gc3NpemVfdCB3
cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24pIDsKCgoKZXh0
ZXJuIHNzaXplX3QgcHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVz
LCBfX29mZl90IF9fb2Zmc2V0KQogICAgIDsKZXh0ZXJuIHNzaXplX3QgcHdyaXRlIChpbnQgX19m
ZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAgICAgICAg
ICBfX29mZl90IF9fb2Zmc2V0KSA7CiMgMzQwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0
ZXJuIHNzaXplX3QgcHJlYWQ2NCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0
ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgOwoKCmV4dGVy
biBzc2l6ZV90IHB3cml0ZTY0IChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90
IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgOwoKCgoK
CgoKZXh0ZXJuIGludCBwaXBlIChpbnQgX19waXBlZGVzWzJdKSA7CiMgMzYyICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFybSAodW5zaWduZWQgaW50IF9f
c2Vjb25kcykgOwojIDM3MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiB1bnNpZ25l
ZCBpbnQgc2xlZXAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIDsKCgoKCgoKZXh0ZXJuIF9fdXNl
Y29uZHNfdCB1YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVlLCBfX3VzZWNvbmRzX3QgX19pbnRl
cnZhbCkKICAgICA7CgoKCmV4dGVybiBpbnQgdXNsZWVwIChfX3VzZWNvbmRzX3QgX191c2Vjb25k
cykgOwoKCgoKCmV4dGVybiBpbnQgcGF1c2UgKHZvaWQpIDsKCgoKZXh0ZXJuIGludCBjaG93biAo
X19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQog
ICAgIDsKCgoKZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9f
Z2lkX3QgX19ncm91cCkgOwoKCgoKZXh0ZXJuIGludCBsY2hvd24gKF9fY29uc3QgY2hhciAqX19m
aWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICA7CgoKCgpleHRlcm4g
aW50IGNoZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gaW50IGZjaGRpciAo
aW50IF9fZmQpIDsKIyA0MjMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gY2hhciAq
Z2V0Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgOwoKCgoKCmV4dGVybiBjaGFyICpn
ZXRfY3VycmVudF9kaXJfbmFtZSAodm9pZCkgOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0d2QgKGNo
YXIgKl9fYnVmKSA7CgoKCgpleHRlcm4gaW50IGR1cCAoaW50IF9fZmQpIDsKCgpleHRlcm4gaW50
IGR1cDIgKGludCBfX2ZkLCBpbnQgX19mZDIpIDsKCgpleHRlcm4gY2hhciAqKl9fZW52aXJvbjsK
CmV4dGVybiBjaGFyICoqZW52aXJvbjsKCgoKCgpleHRlcm4gaW50IGV4ZWN2ZSAoX19jb25zdCBj
aGFyICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sCiAgICAgICAgICAgICAgICAgICBj
aGFyICpfX2NvbnN0IF9fZW52cFtdKSA7CgoKCgpleHRlcm4gaW50IGZleGVjdmUgKGludCBfX2Zk
LCBjaGFyICpfX2NvbnN0IF9fYXJndltdLCBjaGFyICpfX2NvbnN0IF9fZW52cFtdKQogICAgIDsK
CgoKCmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0
IF9fYXJndltdKSA7CgoKCmV4dGVybiBpbnQgZXhlY2xlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwg
X19jb25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY2wgKF9fY29uc3Qg
Y2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKZXh0ZXJuIGludCBl
eGVjdnAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSA7CgoK
CgpleHRlcm4gaW50IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3QgY2hhciAq
X19hcmcsIC4uLikgOwoKCgoKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIDsKCgoKCmV4dGVy
biB2b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18p
KTsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwojIDI1ICIvdXNy
L2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAgICBfUENfTElOS19NQVgsCgog
ICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19OQU1FX01BWCwK
CiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19DSE9XTl9SRVNU
UklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgogICAgX1BDX1NZ
TkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAgIF9QQ19TT0NL
X01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTLAoKICAgIF9QQ19SRUNfSU5DUl9YRkVSX1NJ
WkUsCgogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUlOX1hGRVJfU0la
RSwKCiAgICBfUENfUkVDX1hGRVJfQUxJR04sCgogICAgX1BDX0FMTE9DX1NJWkVfTUlOLAoKICAg
IF9QQ19TWU1MSU5LX01BWAoKICB9OwoKCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwKCiAgICBf
U0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01BWCwKCiAg
ICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1RaTkFNRV9NQVgs
CgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAgX1NDX1JFQUxU
SU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RJTUVS
UywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpFRF9JTywKCiAg
ICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0NfTUFQUEVEX0ZJ
TEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoKICAgIF9TQ19N
RU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAgIF9TQ19TRU1B
UEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX0FJT19MSVNU
SU9fTUFYLAoKICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgsCgog
ICAgX1NDX0RFTEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAgICBfU0NfTVFf
UFJJT19NQVgsCgogICAgX1NDX1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoKCiAgICBfU0Nf
UlRTSUdfTUFYLAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1fVkFMVUVfTUFY
LAoKICAgIF9TQ19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgoKCiAgICBfU0Nf
QkNfQkFTRV9NQVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAgX1NDX0JDX1NDQUxFX01BWCwK
CiAgICBfU0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9XRUlHSFRTX01BWCwKCiAgICBf
U0NfRVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1RfTUFYLAoKICAgIF9TQ19MSU5F
X01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hBUkNMQVNTX05BTUVfTUFYLAoK
CiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwKCiAgICBfU0NfMl9DX0RFViwK
CiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JVTiwKCiAgICBfU0NfMl9TV19E
RVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJLAoKICAgIF9TQ19QSUlfWFRJ
LAoKICAgIF9TQ19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5URVJORVQsCgogICAgX1NDX1BJ
SV9PU0ksCgogICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwKCiAgICBfU0NfVUlPX01BWElP
ViwKCiAgICBfU0NfSU9WX01BWCA9IF9TQ19VSU9fTUFYSU9WLAoKICAgIF9TQ19QSUlfSU5URVJO
RVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAgX1NDX1BJSV9PU0lf
Q09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJX00sCgogICAgX1ND
X1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9TQ19USFJFQURfU0FGRV9GVU5D
VElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAgX1NDX0dFVFBXX1JfU0laRV9N
QVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19UVFlfTkFNRV9NQVgsCgogICAg
X1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAgX1NDX1RIUkVBRF9LRVlTX01B
WCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFY
LAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NU
QUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RI
UkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QsCgogICAgX1ND
X1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNTT1JTX0NPTkYsCgogICAg
X1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMsCgogICAgX1NDX0FWUEhZ
U19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFTU19NQVgsCgoKICAgIF9T
Q19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKCiAgICBfU0NfWE9Q
RU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hPUEVOX0VOSF9JMThOLAoK
ICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwKCiAgICBfU0NfMl9DX1ZF
UlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5fWFBHMiwKCiAgICBfU0NfWE9Q
RU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1NDX0NIQVJfQklULAoKICAgIF9T
Q19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1NDX0lOVF9NQVgsCgogICAgX1ND
X0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19XT1JEX0JJVCwKCiAgICBfU0Nf
TUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NTSVpFX01BWCwKCiAgICBfU0Nf
U0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1NDX1NIUlRfTUFYLAoKICAgIF9T
Q19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9TQ19VSU5UX01BWCwKCiAgICBf
U0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAgIF9TQ19OTF9BUkdNQVgsCgog
ICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwKCiAgICBfU0NfTkxfTk1BWCwK
CiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoKCiAgICBfU0NfWEJTNV9J
TFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1hCUzVfTFA2
NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19YT1BFTl9MRUdB
Q1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRV9USFJF
QURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0NfQkFSUklFUlMsCgogICAgX1ND
X0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVF9S
LAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQVVRJTUUsCgogICAgX1NDX1RI
UkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAgX1NDX0RFVklDRV9TUEVDSUZJ
QywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1NDX0ZEX01HTVQsCgogICAgX1ND
X0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRUUklCVVRFUywKCiAgICBfU0Nf
RklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAgICBfU0NfTU9OT1RPTklDX0NM
T0NLLAoKICAgIF9TQ19NVUxUSV9QUk9DRVNTLAoKICAgIF9TQ19TSU5HTEVfUFJPQ0VTUywKCiAg
ICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVBREVSX1dSSVRFUl9MT0NLUywKCiAgICBfU0Nf
U1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9TQ19SRUdFWF9WRVJTSU9OLAoKICAg
IF9TQ19TSEVMTCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBfU0NfU1BBV04sCgogICAgX1NDX1NQ
T1JBRElDX1NFUlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0Nf
U1lTVEVNX0RBVEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFUQUJBU0VfUiwKCiAgICBfU0NfVElN
RU9VVFMsCgogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19VU0VSX0dST1VQ
UywKCiAgICBfU0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfMl9QQlMsCgogICAgX1NDXzJfUEJT
X0FDQ09VTlRJTkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAgICBfU0NfMl9QQlNfTUVTU0FH
RSwKCiAgICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZTUxPT1BfTUFYLAoKICAgIF9TQ19T
VFJFQU1TLAoKICAgIF9TQ18yX1BCU19DSEVDS1BPSU5ULAoKCiAgICBfU0NfVjZfSUxQMzJfT0ZG
MzIsCgogICAgX1NDX1Y2X0lMUDMyX09GRkJJRywKCiAgICBfU0NfVjZfTFA2NF9PRkY2NCwKCiAg
ICBfU0NfVjZfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfSE9TVF9OQU1FX01BWCwKCiAgICBfU0Nf
VFJBQ0UsCgogICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwKCiAgICBfU0NfVFJBQ0VfSU5IRVJJ
VCwKCiAgICBfU0NfVFJBQ0VfTE9HCgogIH07CgoKCgoKZW51bQogIHsKICAgIF9DU19QQVRILAoK
CgoKICAgIF9DU19MRlNfQ0ZMQUdTID0gMTAwMCwKCiAgICBfQ1NfTEZTX0xERkxBR1MsCgogICAg
X0NTX0xGU19MSUJTLAoKICAgIF9DU19MRlNfTElOVEZMQUdTLAoKICAgIF9DU19MRlM2NF9DRkxB
R1MsCgogICAgX0NTX0xGUzY0X0xERkxBR1MsCgogICAgX0NTX0xGUzY0X0xJQlMsCgogICAgX0NT
X0xGUzY0X0xJTlRGTEFHUywKCgoKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9DRkxBR1MgPSAx
MTAwLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1MsCgogICAgX0NTX1hCUzVfSUxQ
MzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxBR1MsCgogICAg
X0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdf
TERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJTNV9J
TFAzMl9PRkZCSUdfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoK
ICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0
X0xJQlMsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAgX0NTX1hCUzVf
TFBCSUdfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTERGTEFHUywK
CiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZC
SUdfTElOVEZMQUdTLAoKCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0NGTEFHUywKCiAg
ICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQ
MzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElOVEZMQUdTLAoK
ICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9J
TFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xJQlMs
CgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSU5URkxBR1MsCgogICAgX0NTX1BPU0lY
X1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xERkxB
R1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZf
TFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19DRkxB
R1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19QT1NJ
WF9WNl9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xJ
TlRGTEFHUywKCgoKICAgIF9DU19WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMKCiAgfTsKIyA1MDEg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKZXh0ZXJuIGxvbmcgaW50IHBhdGhjb25mIChf
X2NvbnN0IGNoYXIgKl9fcGF0aCwgaW50IF9fbmFtZSkgOwoKCmV4dGVybiBsb25nIGludCBmcGF0
aGNvbmYgKGludCBfX2ZkLCBpbnQgX19uYW1lKSA7CgoKZXh0ZXJuIGxvbmcgaW50IHN5c2NvbmYg
KGludCBfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIHNpemVf
dCBjb25mc3RyIChpbnQgX19uYW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CgoKCgpl
eHRlcm4gX19waWRfdCBnZXRwaWQgKHZvaWQpIDsKCgpleHRlcm4gX19waWRfdCBnZXRwcGlkICh2
b2lkKSA7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwZ3JwICh2b2lkKSA7CiMgNTM2ICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3QgX19nZXRwZ2lkIChfX3BpZF90IF9fcGlk
KSA7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90IF9fcGlkKSA7CgoKCgoKCmV4dGVy
biBpbnQgc2V0cGdpZCAoX19waWRfdCBfX3BpZCwgX19waWRfdCBfX3BnaWQpIDsKIyA1NjIgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHNldHBncnAgKHZvaWQpIDsKIyA1ODAg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIDsK
CgoKZXh0ZXJuIF9fcGlkX3QgZ2V0c2lkIChfX3BpZF90IF9fcGlkKSA7CgoKCmV4dGVybiBfX3Vp
ZF90IGdldHVpZCAodm9pZCkgOwoKCmV4dGVybiBfX3VpZF90IGdldGV1aWQgKHZvaWQpIDsKCgpl
eHRlcm4gX19naWRfdCBnZXRnaWQgKHZvaWQpIDsKCgpleHRlcm4gX19naWRfdCBnZXRlZ2lkICh2
b2lkKSA7CgoKCgpleHRlcm4gaW50IGdldGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xp
c3RbXSkgOwoKCgpleHRlcm4gaW50IGdyb3VwX21lbWJlciAoX19naWRfdCBfX2dpZCkgOwoKCgoK
CgpleHRlcm4gaW50IHNldHVpZCAoX191aWRfdCBfX3VpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRy
ZXVpZCAoX191aWRfdCBfX3J1aWQsIF9fdWlkX3QgX19ldWlkKSA7CgoKCgpleHRlcm4gaW50IHNl
dGV1aWQgKF9fdWlkX3QgX191aWQpIDsKCgoKCgoKZXh0ZXJuIGludCBzZXRnaWQgKF9fZ2lkX3Qg
X19naWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0cmVnaWQgKF9fZ2lkX3QgX19yZ2lkLCBfX2dpZF90
IF9fZWdpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRlZ2lkIChfX2dpZF90IF9fZ2lkKSA7CgoKCgoK
CmV4dGVybiBfX3BpZF90IGZvcmsgKHZvaWQpIDsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsg
KHZvaWQpIDsKCgoKCgpleHRlcm4gY2hhciAqdHR5bmFtZSAoaW50IF9fZmQpIDsKCgoKZXh0ZXJu
IGludCB0dHluYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7
CgoKCmV4dGVybiBpbnQgaXNhdHR5IChpbnQgX19mZCkgOwoKCgoKCmV4dGVybiBpbnQgdHR5c2xv
dCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBsaW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19j
b25zdCBjaGFyICpfX3RvKSA7CgoKCmV4dGVybiBpbnQgc3ltbGluayAoX19jb25zdCBjaGFyICpf
X2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgOwoKCgoKZXh0ZXJuIGludCByZWFkbGluayAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgdW5saW5rIChf
X2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCmV4dGVybiBpbnQgcm1kaXIgKF9fY29uc3QgY2hhciAq
X19wYXRoKSA7CgoKCmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAoaW50IF9fZmQpIDsKCgpleHRl
cm4gaW50IHRjc2V0cGdycCAoaW50IF9fZmQsIF9fcGlkX3QgX19wZ3JwX2lkKSA7CgoKCmV4dGVy
biBjaGFyICpnZXRsb2dpbiAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRsb2dpbl9yIChjaGFy
ICpfX25hbWUsIHNpemVfdCBfX25hbWVfbGVuKSA7CgoKCgpleHRlcm4gaW50IHNldGxvZ2luIChf
X2NvbnN0IGNoYXIgKl9fbmFtZSkgOwojIDcyNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAxIDMKIyA0NyAiL3Vzci9pbmNsdWRlL2dldG9wdC5o
IiAzCmV4dGVybiBjaGFyICpvcHRhcmc7CiMgNjEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpl
eHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKCgpleHRlcm4gaW50IG9w
dG9wdDsKIyAxNDUgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IGdldG9wdCAo
aW50IF9fYXJnYywgY2hhciAqY29uc3QgKl9fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMp
OwojIDcyNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKCgoKCmV4dGVybiBpbnQgZ2V0
aG9zdG5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKCmV4dGVybiBpbnQg
c2V0aG9zdG5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKCgoKZXh0
ZXJuIGludCBzZXRob3N0aWQgKGxvbmcgaW50IF9faWQpIDsKCgoKCgpleHRlcm4gaW50IGdldGRv
bWFpbm5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQgc2V0ZG9t
YWlubmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwoKCgoKCmV4dGVy
biBpbnQgdmhhbmd1cCAodm9pZCkgOwoKCmV4dGVybiBpbnQgcmV2b2tlIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSkgOwoKCgoKCgoKZXh0ZXJuIGludCBwcm9maWwgKHVuc2lnbmVkIHNob3J0IGludCAq
X19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fb2Zmc2V0LCB1bnNpZ25lZCBpbnQgX19zY2FsZSkgOwoKCgoKCmV4dGVybiBpbnQgYWNjdCAo
X19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKZXh0ZXJuIGNoYXIgKmdldHVzZXJzaGVsbCAodm9p
ZCkgOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgKHZvaWQpIDsKZXh0ZXJuIHZvaWQgc2V0dXNl
cnNoZWxsICh2b2lkKSA7CgoKCgoKZXh0ZXJuIGludCBkYWVtb24gKGludCBfX25vY2hkaXIsIGlu
dCBfX25vY2xvc2UpIDsKCgoKCgoKZXh0ZXJuIGludCBjaHJvb3QgKF9fY29uc3QgY2hhciAqX19w
YXRoKSA7CgoKCmV4dGVybiBjaGFyICpnZXRwYXNzIChfX2NvbnN0IGNoYXIgKl9fcHJvbXB0KSA7
CgoKCgoKZXh0ZXJuIGludCBmc3luYyAoaW50IF9fZmQpIDsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50
IGdldGhvc3RpZCAodm9pZCkgOwoKCmV4dGVybiB2b2lkIHN5bmMgKHZvaWQpIDsKCgoKCmV4dGVy
biBpbnQgZ2V0cGFnZXNpemUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
CmV4dGVybiBpbnQgdHJ1bmNhdGUgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZl90IF9fbGVu
Z3RoKSA7CiMgODM2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCB0cnVuY2F0
ZTY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgpleHRl
cm4gaW50IGZ0cnVuY2F0ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5ndGgpIDsKIyA4NTEgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwg
X19vZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgoKZXh0ZXJuIGludCBnZXRkdGFibGVzaXplICh2b2lk
KSA7CiMgODY2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBicmsgKHZvaWQg
Kl9fYWRkcikgOwoKCgoKCmV4dGVybiB2b2lkICpzYnJrIChpbnRwdHJfdCBfX2RlbHRhKSA7CiMg
ODg3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN5c2NhbGwgKGxv
bmcgaW50IF9fc3lzbm8sIC4uLikgOwojIDkwNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmX3QgX19sZW4pIDsKIyA5
MTcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGxvY2tmNjQgKGludCBfX2Zk
LCBpbnQgX19jbWQsIF9fb2ZmNjRfdCBfX2xlbikgOwojIDkzOCAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAzCmV4dGVybiBpbnQgZmRhdGFzeW5jIChpbnQgX19maWxkZXMpIDsKCgoKCgoKCmV4dGVy
biBjaGFyICpjcnlwdCAoX19jb25zdCBjaGFyICpfX2tleSwgX19jb25zdCBjaGFyICpfX3NhbHQp
IDsKCgoKZXh0ZXJuIHZvaWQgZW5jcnlwdCAoY2hhciAqX19ibG9jaywgaW50IF9fZWRmbGFnKSA7
CgoKCgoKCmV4dGVybiB2b2lkIHN3YWIgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX2Zyb20s
IHZvaWQgKl9fcmVzdHJpY3QgX190bywKICAgICAgICAgICAgICAgICAgc3NpemVfdCBfX24pIDsK
CgoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIDsKIyA5ODMgIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lkICgqX19wcmVw
YXJlKSAodm9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfX3BhcmVudCkg
KHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19jaGlsZCkgKHZvaWQp
KSA7CgoKCiMgMjQgInpmLWNyZS1vcGVuLmMiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0
LmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwoKCiMgMSAiL3Vzci9pbmNs
dWRlL3NpZ25hbC5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiMgMTAzICIvdXNyL2luY2x1ZGUvYml0cy9z
aWdzZXQuaCIgMwpleHRlcm4gaW50IF9fc2lnaXNtZW1iZXIgKF9fY29uc3QgX19zaWdzZXRfdCAq
LCBpbnQpOwpleHRlcm4gaW50IF9fc2lnYWRkc2V0IChfX3NpZ3NldF90ICosIGludCk7CmV4dGVy
biBpbnQgX19zaWdkZWxzZXQgKF9fc2lnc2V0X3QgKiwgaW50KTsKIyAxMTcgIi91c3IvaW5jbHVk
ZS9iaXRzL3NpZ3NldC5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQgX19zaWdpc21lbWJlciAoX19j
b25zdCBfX3NpZ3NldF90ICpfX3NldCwgaW50IF9fc2lnKSB7IHVuc2lnbmVkIGxvbmcgaW50IF9f
bWFzayA9ICgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAoKChfX3NpZykgLSAxKSAlICg4ICog
c2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKSk7IHVuc2lnbmVkIGxvbmcgaW50IF9fd29yZCA9
ICgoKF9fc2lnKSAtIDEpIC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpOyByZXR1
cm4gKF9fc2V0LT5fX3ZhbFtfX3dvcmRdICYgX19tYXNrKSA/IDEgOiAwOyB9CmV4dGVybiBfX2lu
bGluZSBpbnQgX19zaWdhZGRzZXQgKCBfX3NpZ3NldF90ICpfX3NldCwgaW50IF9fc2lnKSB7IHVu
c2lnbmVkIGxvbmcgaW50IF9fbWFzayA9ICgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAoKChf
X3NpZykgLSAxKSAlICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKSk7IHVuc2lnbmVk
IGxvbmcgaW50IF9fd29yZCA9ICgoKF9fc2lnKSAtIDEpIC8gKDggKiBzaXplb2YgKHVuc2lnbmVk
IGxvbmcgaW50KSkpOyByZXR1cm4gKChfX3NldC0+X192YWxbX193b3JkXSB8PSBfX21hc2spLCAw
KTsgfQpleHRlcm4gX19pbmxpbmUgaW50IF9fc2lnZGVsc2V0ICggX19zaWdzZXRfdCAqX19zZXQs
IGludCBfX3NpZykgeyB1bnNpZ25lZCBsb25nIGludCBfX21hc2sgPSAoKCh1bnNpZ25lZCBsb25n
IGludCkgMSkgPDwgKCgoX19zaWcpIC0gMSkgJSAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBp
bnQpKSkpOyB1bnNpZ25lZCBsb25nIGludCBfX3dvcmQgPSAoKChfX3NpZykgLSAxKSAvICg4ICog
c2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKTsgcmV0dXJuICgoX19zZXQtPl9fdmFsW19fd29y
ZF0gJj0gfl9fbWFzayksIDApOyB9CiMgMzQgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzCgoK
CgoKCnR5cGVkZWYgX19zaWdfYXRvbWljX3Qgc2lnX2F0b21pY190OwojIDU2ICIvdXNyL2luY2x1
ZGUvc2lnbmFsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdudW0uaCIgMSAzCiMgNTcg
Ii91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzCiMgNzEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIg
Mwp0eXBlZGVmIHZvaWQgKCpfX3NpZ2hhbmRsZXJfdCkgKGludCk7CgoKCgpleHRlcm4gX19zaWdo
YW5kbGVyX3QgX19zeXN2X3NpZ25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRs
ZXIpCiAgICAgOwoKZXh0ZXJuIF9fc2lnaGFuZGxlcl90IHN5c3Zfc2lnbmFsIChpbnQgX19zaWcs
IF9fc2lnaGFuZGxlcl90IF9faGFuZGxlcikKICAgICA7CgoKCgoKCmV4dGVybiBfX3NpZ2hhbmRs
ZXJfdCBzaWduYWwgKGludCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKSA7CiMgMTAz
ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDMKZXh0ZXJuIF9fc2lnaGFuZGxlcl90IGJzZF9zaWdu
YWwgKGludCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKSA7CgoKCgoKCmV4dGVybiBp
bnQga2lsbCAoX19waWRfdCBfX3BpZCwgaW50IF9fc2lnKSA7CgoKCgoKCmV4dGVybiBpbnQga2ls
bHBnIChfX3BpZF90IF9fcGdycCwgaW50IF9fc2lnKSA7CgoKCmV4dGVybiBpbnQgcmFpc2UgKGlu
dCBfX3NpZykgOwoKCgpleHRlcm4gX19zaWdoYW5kbGVyX3Qgc3NpZ25hbCAoaW50IF9fc2lnLCBf
X3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIpIDsKZXh0ZXJuIGludCBnc2lnbmFsIChpbnQgX19zaWcp
IDsKCgoKCmV4dGVybiB2b2lkIHBzaWduYWwgKGludCBfX3NpZywgX19jb25zdCBjaGFyICpfX3Mp
IDsKIyAxNDAgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMwpleHRlcm4gaW50IF9fc2lncGF1c2Ug
KGludCBfX3NpZ19vcl9tYXNrLCBpbnQgX19pc19zaWcpIDsKCgoKCmV4dGVybiBpbnQgc2lncGF1
c2UgKGludCBfX21hc2spIDsKIyAxNjggIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMwpleHRlcm4g
aW50IHNpZ2Jsb2NrIChpbnQgX19tYXNrKSA7CgoKZXh0ZXJuIGludCBzaWdzZXRtYXNrIChpbnQg
X19tYXNrKSA7CgoKZXh0ZXJuIGludCBzaWdnZXRtYXNrICh2b2lkKSA7CiMgMTgzICIvdXNyL2lu
Y2x1ZGUvc2lnbmFsLmgiIDMKdHlwZWRlZiBfX3NpZ2hhbmRsZXJfdCBzaWdoYW5kbGVyX3Q7CgoK
Cgp0eXBlZGVmIF9fc2lnaGFuZGxlcl90IHNpZ190OwoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAxIDMKIyAxOTcgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzCgoKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdp
bmZvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAyNiAiL3Vz
ci9pbmNsdWRlL2JpdHMvc2lnaW5mby5oIiAyIDMKCgoKCgoKCnR5cGVkZWYgdW5pb24gc2lndmFs
CiAgewogICAgaW50IHNpdmFsX2ludDsKICAgIHZvaWQgKnNpdmFsX3B0cjsKICB9IHNpZ3ZhbF90
OwojIDUxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qgc2ln
aW5mbwogIHsKICAgIGludCBzaV9zaWdubzsKICAgIGludCBzaV9lcnJubzsKCiAgICBpbnQgc2lf
Y29kZTsKCiAgICB1bmlvbgogICAgICB7CiAgICAgICAgaW50IF9wYWRbKCgxMjggLyBzaXplb2Yg
KGludCkpIC0gMyldOwoKCiAgICAgICAgc3RydWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIF9f
cGlkX3Qgc2lfcGlkOwogICAgICAgICAgICBfX3VpZF90IHNpX3VpZDsKICAgICAgICAgIH0gX2tp
bGw7CgoKICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgdW5zaWduZWQgaW50
IF90aW1lcjE7CiAgICAgICAgICAgIHVuc2lnbmVkIGludCBfdGltZXIyOwogICAgICAgICAgfSBf
dGltZXI7CgoKICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgX19waWRfdCBz
aV9waWQ7CiAgICAgICAgICAgIF9fdWlkX3Qgc2lfdWlkOwogICAgICAgICAgICBzaWd2YWxfdCBz
aV9zaWd2YWw7CiAgICAgICAgICB9IF9ydDsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewog
ICAgICAgICAgICBfX3BpZF90IHNpX3BpZDsKICAgICAgICAgICAgX191aWRfdCBzaV91aWQ7CiAg
ICAgICAgICAgIGludCBzaV9zdGF0dXM7CiAgICAgICAgICAgIF9fY2xvY2tfdCBzaV91dGltZTsK
ICAgICAgICAgICAgX19jbG9ja190IHNpX3N0aW1lOwogICAgICAgICAgfSBfc2lnY2hsZDsKCgog
ICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICB2b2lkICpzaV9hZGRyOwogICAg
ICAgICAgfSBfc2lnZmF1bHQ7CgoKICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAg
ICAgbG9uZyBpbnQgc2lfYmFuZDsKICAgICAgICAgICAgaW50IHNpX2ZkOwogICAgICAgICAgfSBf
c2lncG9sbDsKICAgICAgfSBfc2lmaWVsZHM7CiAgfSBzaWdpbmZvX3Q7CiMgMTI4ICIvdXNyL2lu
Y2x1ZGUvYml0cy9zaWdpbmZvLmgiIDMKZW51bQp7CiAgU0lfQVNZTkNOTCA9IC02LAoKICBTSV9T
SUdJTywKCiAgU0lfQVNZTkNJTywKCiAgU0lfTUVTR1EsCgogIFNJX1RJTUVSLAoKICBTSV9RVUVV
RSwKCiAgU0lfVVNFUiwKCiAgU0lfS0VSTkVMID0gMHg4MAoKfTsKCgoKZW51bQp7CiAgSUxMX0lM
TE9QQyA9IDEsCgogIElMTF9JTExPUE4sCgogIElMTF9JTExBRFIsCgogIElMTF9JTExUUlAsCgog
IElMTF9QUlZPUEMsCgogIElMTF9QUlZSRUcsCgogIElMTF9DT1BST0MsCgogIElMTF9CQURTVEsK
Cn07CgoKZW51bQp7CiAgRlBFX0lOVERJViA9IDEsCgogIEZQRV9JTlRPVkYsCgogIEZQRV9GTFRE
SVYsCgogIEZQRV9GTFRPVkYsCgogIEZQRV9GTFRVTkQsCgogIEZQRV9GTFRSRVMsCgogIEZQRV9G
TFRJTlYsCgogIEZQRV9GTFRTVUIKCn07CgoKZW51bQp7CiAgU0VHVl9NQVBFUlIgPSAxLAoKICBT
RUdWX0FDQ0VSUgoKfTsKCgplbnVtCnsKICBCVVNfQURSQUxOID0gMSwKCiAgQlVTX0FEUkVSUiwK
CiAgQlVTX09CSkVSUgoKfTsKCgplbnVtCnsKICBUUkFQX0JSS1BUID0gMSwKCiAgVFJBUF9UUkFD
RQoKfTsKCgplbnVtCnsKICBDTERfRVhJVEVEID0gMSwKCiAgQ0xEX0tJTExFRCwKCiAgQ0xEX0RV
TVBFRCwKCiAgQ0xEX1RSQVBQRUQsCgogIENMRF9TVE9QUEVELAoKICBDTERfQ09OVElOVUVECgp9
OwoKCmVudW0KewogIFBPTExfSU4gPSAxLAoKICBQT0xMX09VVCwKCiAgUE9MTF9NU0csCgogIFBP
TExfRVJSLAoKICBQT0xMX1BSSSwKCiAgUE9MTF9IVVAKCn07CiMgMjcxICIvdXNyL2luY2x1ZGUv
Yml0cy9zaWdpbmZvLmgiIDMKc3RydWN0IF9fcHRocmVhZF9hdHRyX3M7Cgp0eXBlZGVmIHN0cnVj
dCBzaWdldmVudAogIHsKICAgIHNpZ3ZhbF90IHNpZ2V2X3ZhbHVlOwogICAgaW50IHNpZ2V2X3Np
Z25vOwogICAgaW50IHNpZ2V2X25vdGlmeTsKCiAgICB1bmlvbgogICAgICB7CiAgICAgICAgaW50
IF9wYWRbKCg2NCAvIHNpemVvZiAoaW50KSkgLSAzKV07CgogICAgICAgIHN0cnVjdAogICAgICAg
ICAgewogICAgICAgICAgICB2b2lkICgqX2Z1bmN0aW9uKSAoc2lndmFsX3QpOwogICAgICAgICAg
ICBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcyAqX2F0dHJpYnV0ZTsKICAgICAgICAgIH0gX3NpZ2V2
X3RocmVhZDsKICAgICAgfSBfc2lnZXZfdW47CiAgfSBzaWdldmVudF90OwoKCgoKCgplbnVtCnsK
ICBTSUdFVl9TSUdOQUwgPSAwLAoKICBTSUdFVl9OT05FLAoKICBTSUdFVl9USFJFQUQKCn07CiMg
MjAwICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMwoKCgpleHRlcm4gaW50IHNpZ2VtcHR5c2V0
IChzaWdzZXRfdCAqX19zZXQpIDsKCgpleHRlcm4gaW50IHNpZ2ZpbGxzZXQgKHNpZ3NldF90ICpf
X3NldCkgOwoKCmV4dGVybiBpbnQgc2lnYWRkc2V0IChzaWdzZXRfdCAqX19zZXQsIGludCBfX3Np
Z25vKSA7CgoKZXh0ZXJuIGludCBzaWdkZWxzZXQgKHNpZ3NldF90ICpfX3NldCwgaW50IF9fc2ln
bm8pIDsKCgpleHRlcm4gaW50IHNpZ2lzbWVtYmVyIChfX2NvbnN0IHNpZ3NldF90ICpfX3NldCwg
aW50IF9fc2lnbm8pIDsKCgoKZXh0ZXJuIGludCBzaWdpc2VtcHR5c2V0IChfX2NvbnN0IHNpZ3Nl
dF90ICpfX3NldCkgOwoKCmV4dGVybiBpbnQgc2lnYW5kc2V0IChzaWdzZXRfdCAqX19zZXQsIF9f
Y29uc3Qgc2lnc2V0X3QgKl9fbGVmdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc2ln
c2V0X3QgKl9fcmlnaHQpIDsKCgpleHRlcm4gaW50IHNpZ29yc2V0IChzaWdzZXRfdCAqX19zZXQs
IF9fY29uc3Qgc2lnc2V0X3QgKl9fbGVmdCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBz
aWdzZXRfdCAqX19yaWdodCkgOwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdhY3Rpb24u
aCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ2FjdGlvbi5oIiAzCnN0cnVjdCBzaWdh
Y3Rpb24KICB7CgoKICAgIHVuaW9uCiAgICAgIHsKCiAgICAgICAgX19zaWdoYW5kbGVyX3Qgc2Ff
aGFuZGxlcjsKCiAgICAgICAgdm9pZCAoKnNhX3NpZ2FjdGlvbikgKGludCwgc2lnaW5mb190ICos
IHZvaWQgKik7CiAgICAgIH0KICAgIF9fc2lnYWN0aW9uX2hhbmRsZXI7CgoKCgoKCgogICAgX19z
aWdzZXRfdCBzYV9tYXNrOwoKCiAgICBpbnQgc2FfZmxhZ3M7CgoKICAgIHZvaWQgKCpzYV9yZXN0
b3JlcikgKHZvaWQpOwogIH07CiMgMjMzICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMwoKCmV4
dGVybiBpbnQgc2lncHJvY21hc2sgKGludCBfX2hvdywgX19jb25zdCBzaWdzZXRfdCAqX19yZXN0
cmljdCBfX3NldCwKICAgICAgICAgICAgICAgICAgICAgICAgc2lnc2V0X3QgKl9fcmVzdHJpY3Qg
X19vc2V0KSA7CgoKCmV4dGVybiBpbnQgc2lnc3VzcGVuZCAoX19jb25zdCBzaWdzZXRfdCAqX19z
ZXQpIDsKCgpleHRlcm4gaW50IHNpZ2FjdGlvbiAoaW50IF9fc2lnLCBfX2NvbnN0IHN0cnVjdCBz
aWdhY3Rpb24gKl9fcmVzdHJpY3QgX19hY3QsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c2lnYWN0aW9uICpfX3Jlc3RyaWN0IF9fb2FjdCkgOwoKCmV4dGVybiBpbnQgc2lncGVuZGluZyAo
c2lnc2V0X3QgKl9fc2V0KSA7CgoKCmV4dGVybiBpbnQgc2lnd2FpdCAoX19jb25zdCBzaWdzZXRf
dCAqX19yZXN0cmljdCBfX3NldCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnKQogICAgIDsKCgoKZXh0
ZXJuIGludCBzaWd3YWl0aW5mbyAoX19jb25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgc2lnaW5mb190ICpfX3Jlc3RyaWN0IF9faW5mbykgOwoK
CgpleHRlcm4gaW50IHNpZ3RpbWVkd2FpdCAoX19jb25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBf
X3NldCwKICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ2luZm9fdCAqX19yZXN0cmljdCBfX2lu
Zm8sCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19y
ZXN0cmljdCBfX3RpbWVvdXQpCiAgICAgOwoKCgpleHRlcm4gaW50IHNpZ3F1ZXVlIChfX3BpZF90
IF9fcGlkLCBpbnQgX19zaWcsIF9fY29uc3QgdW5pb24gc2lndmFsIF9fdmFsKQogICAgIDsKIyAy
NzggIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0
IF9zeXNfc2lnbGlzdFs2NF07CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lzX3NpZ2xp
c3RbNjRdOwoKCnN0cnVjdCBzaWd2ZWMKICB7CiAgICBfX3NpZ2hhbmRsZXJfdCBzdl9oYW5kbGVy
OwogICAgaW50IHN2X21hc2s7CgogICAgaW50IHN2X2ZsYWdzOwoKICB9OwojIDMwMiAiL3Vzci9p
bmNsdWRlL3NpZ25hbC5oIiAzCmV4dGVybiBpbnQgc2lndmVjIChpbnQgX19zaWcsIF9fY29uc3Qg
c3RydWN0IHNpZ3ZlYyAqX192ZWMsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2lndmVjICpf
X292ZWMpIDsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0LmgiIDEgMwojIDI4
ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYXNt
L3NpZ2NvbnRleHQuaCIgMSAzCiMgMTggIi91c3IvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIiAz
CnN0cnVjdCBfZnByZWcgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNpZ25pZmljYW5kWzRdOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IGV4cG9uZW50Owp9OwoKc3RydWN0IF9mcHhyZWcgewogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNpZ25pZmljYW5kWzRdOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGV4cG9uZW50OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHBhZGRpbmdbM107Cn07CgpzdHJ1Y3Qg
X3htbXJlZyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlbGVtZW50WzRdOwp9OwoKc3RydWN0IF9m
cHN0YXRlIHsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBjdzsKICAgICAgICB1bnNpZ25lZCBsb25n
IHN3OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdGFnOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXBv
ZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjc3NlbDsKICAgICAgICB1bnNpZ25lZCBsb25nIGRh
dGFvZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhc2VsOwogICAgICAgIHN0cnVjdCBfZnBy
ZWcgX3N0WzhdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0YXR1czsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBtYWdpYzsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgX2Z4c3JfZW52WzZdOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgbXhjc3I7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZXNlcnZlZDsK
ICAgICAgICBzdHJ1Y3QgX2ZweHJlZyBfZnhzcl9zdFs4XTsKICAgICAgICBzdHJ1Y3QgX3htbXJl
ZyBfeG1tWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGFkZGluZ1s1Nl07Cn07CgoKCnN0cnVj
dCBzaWdjb250ZXh0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2Vz
aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBlZGk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc2k7CiAgICAgICAgdW5zaWduZWQgbG9uZyBl
YnA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYng7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZHg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlY3g7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBlYXg7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0cmFwbm87CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBlcnI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlaXA7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWZsYWdz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwX2F0X3NpZ25hbDsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBzcywgX19zc2g7CiAgICAgICAgc3RydWN0IF9mcHN0YXRlICogZnBzdGF0ZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIG9sZG1hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcjI7Cn07CiMg
MjkgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ2NvbnRleHQuaCIgMiAzCiMgMzA4ICIvdXNyL2luY2x1
ZGUvc2lnbmFsLmgiIDIgMwoKCmV4dGVybiBpbnQgc2lncmV0dXJuIChzdHJ1Y3Qgc2lnY29udGV4
dCAqX19zY3ApIDsKIyAzMjAgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMwpleHRlcm4gaW50IHNp
Z2ludGVycnVwdCAoaW50IF9fc2lnLCBpbnQgX19pbnRlcnJ1cHQpIDsKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvc2lnc3RhY2suaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3N0YWNr
LmgiIDMKc3RydWN0IHNpZ3N0YWNrCiAgewogICAgdm9pZCAqc3Nfc3A7CiAgICBpbnQgc3Nfb25z
dGFjazsKICB9OwoKCgplbnVtCnsKICBTU19PTlNUQUNLID0gMSwKCiAgU1NfRElTQUJMRQoKfTsK
IyA1MCAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc3RhY2suaCIgMwp0eXBlZGVmIHN0cnVjdCBzaWdh
bHRzdGFjawogIHsKICAgIHZvaWQgKnNzX3NwOwogICAgaW50IHNzX2ZsYWdzOwogICAgc2l6ZV90
IHNzX3NpemU7CiAgfSBzdGFja190OwojIDMyMyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMK
CiMgMSAiL3Vzci9pbmNsdWRlL3Vjb250ZXh0LmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvdWNv
bnRleHQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvdWNvbnRleHQuaCIgMSAzCiMgMjMgIi91
c3IvaW5jbHVkZS9zeXMvdWNvbnRleHQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIg
MSAzCiMgMjQgIi91c3IvaW5jbHVkZS9zeXMvdWNvbnRleHQuaCIgMiAzCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvc2lnY29udGV4dC5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3N5cy91Y29u
dGV4dC5oIiAyIDMKCgoKdHlwZWRlZiBpbnQgZ3JlZ190OwoKCgoKCnR5cGVkZWYgZ3JlZ190IGdy
ZWdzZXRfdFsxOV07CgoKCmVudW0KewogIFJFR19HUyA9IDAsCgogIFJFR19GUywKCiAgUkVHX0VT
LAoKICBSRUdfRFMsCgogIFJFR19FREksCgogIFJFR19FU0ksCgogIFJFR19FQlAsCgogIFJFR19F
U1AsCgogIFJFR19FQlgsCgogIFJFR19FRFgsCgogIFJFR19FQ1gsCgogIFJFR19FQVgsCgogIFJF
R19UUkFQTk8sCgogIFJFR19FUlIsCgogIFJFR19FSVAsCgogIFJFR19DUywKCiAgUkVHX0VGTCwK
CiAgUkVHX1VFU1AsCgogIFJFR19TUwoKfTsKCgoKc3RydWN0IF9saWJjX2ZwcmVnCnsKICB1bnNp
Z25lZCBzaG9ydCBpbnQgc2lnbmlmaWNhbmRbNF07CiAgdW5zaWduZWQgc2hvcnQgaW50IGV4cG9u
ZW50Owp9OwoKc3RydWN0IF9saWJjX2Zwc3RhdGUKewogIHVuc2lnbmVkIGxvbmcgaW50IGN3Owog
IHVuc2lnbmVkIGxvbmcgaW50IHN3OwogIHVuc2lnbmVkIGxvbmcgaW50IHRhZzsKICB1bnNpZ25l
ZCBsb25nIGludCBpcG9mZjsKICB1bnNpZ25lZCBsb25nIGludCBjc3NlbDsKICB1bnNpZ25lZCBs
b25nIGludCBkYXRhb2ZmOwogIHVuc2lnbmVkIGxvbmcgaW50IGRhdGFzZWw7CiAgc3RydWN0IF9s
aWJjX2ZwcmVnIF9zdFs4XTsKICB1bnNpZ25lZCBsb25nIGludCBzdGF0dXM7Cn07CgoKdHlwZWRl
ZiBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSAqZnByZWdzZXRfdDsKCgp0eXBlZGVmIHN0cnVjdAogIHsK
ICAgIGdyZWdzZXRfdCBncmVnczsKCgogICAgZnByZWdzZXRfdCBmcHJlZ3M7CiAgICB1bnNpZ25l
ZCBsb25nIGludCBvbGRtYXNrOwogICAgdW5zaWduZWQgbG9uZyBpbnQgY3IyOwogIH0gbWNvbnRl
eHRfdDsKCgp0eXBlZGVmIHN0cnVjdCB1Y29udGV4dAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50
IHVjX2ZsYWdzOwogICAgc3RydWN0IHVjb250ZXh0ICp1Y19saW5rOwogICAgc3RhY2tfdCB1Y19z
dGFjazsKICAgIG1jb250ZXh0X3QgdWNfbWNvbnRleHQ7CiAgICBfX3NpZ3NldF90IHVjX3NpZ21h
c2s7CiAgICBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSBfX2ZwcmVnc19tZW07CiAgfSB1Y29udGV4dF90
OwojIDI4ICIvdXNyL2luY2x1ZGUvdWNvbnRleHQuaCIgMiAzCgoKCgpleHRlcm4gaW50IGdldGNv
bnRleHQgKHVjb250ZXh0X3QgKl9fdWNwKSA7CgoKZXh0ZXJuIGludCBzZXRjb250ZXh0IChfX2Nv
bnN0IHVjb250ZXh0X3QgKl9fdWNwKSA7CgoKCmV4dGVybiBpbnQgc3dhcGNvbnRleHQgKHVjb250
ZXh0X3QgKl9fcmVzdHJpY3QgX19vdWNwLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHVjb250ZXh0X3QgKl9fcmVzdHJpY3QgX191Y3ApIDsKCgoKCgoKCmV4dGVybiB2b2lkIG1ha2Vj
b250ZXh0ICh1Y29udGV4dF90ICpfX3VjcCwgdm9pZCAoKl9fZnVuYykgKHZvaWQpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9fYXJnYywgLi4uKSA7CgoKIyAzMjUgIi91c3IvaW5jbHVk
ZS9zaWduYWwuaCIgMiAzCgoKCgoKZXh0ZXJuIGludCBzaWdzdGFjayAoc3RydWN0IHNpZ3N0YWNr
ICpfX3NzLCBzdHJ1Y3Qgc2lnc3RhY2sgKl9fb3NzKSA7CgoKCmV4dGVybiBpbnQgc2lnYWx0c3Rh
Y2sgKF9fY29uc3Qgc3RydWN0IHNpZ2FsdHN0YWNrICpfX3Jlc3RyaWN0IF9fc3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdhbHRzdGFjayAqX19yZXN0cmljdCBfX29zcykgOwoK
CgoKCgoKZXh0ZXJuIGludCBzaWdob2xkIChpbnQgX19zaWcpIDsKCgpleHRlcm4gaW50IHNpZ3Jl
bHNlIChpbnQgX19zaWcpIDsKCgpleHRlcm4gaW50IHNpZ2lnbm9yZSAoaW50IF9fc2lnKSA7CgoK
ZXh0ZXJuIF9fc2lnaGFuZGxlcl90IHNpZ3NldCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBf
X2Rpc3ApIDsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3RocmVhZC5oIiAxIDMKIyAz
MSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lndGhyZWFkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX3Np
Z21hc2sgKGludCBfX2hvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgX19z
aWdzZXRfdCAqX19yZXN0cmljdCBfX25ld21hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fb2xkbWFzayk7CgoKZXh0ZXJuIGludCBwdGhyZWFk
X2tpbGwgKHB0aHJlYWRfdCBfX3RocmVhZCwgaW50IF9fc2lnbm8pIDsKIyAzNTkgIi91c3IvaW5j
bHVkZS9zaWduYWwuaCIgMiAzCgoKCgoKCmV4dGVybiBpbnQgX19saWJjX2N1cnJlbnRfc2lncnRt
aW4gKHZvaWQpIDsKCmV4dGVybiBpbnQgX19saWJjX2N1cnJlbnRfc2lncnRtYXggKHZvaWQpIDsK
CgoKCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUv
c3lzL3Jlc291cmNlLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRl
L2JpdHMvcmVzb3VyY2UuaCIgMwplbnVtIF9fcmxpbWl0X3Jlc291cmNlCnsKCiAgUkxJTUlUX0NQ
VSA9IDAsCgoKCiAgUkxJTUlUX0ZTSVpFID0gMSwKCgoKICBSTElNSVRfREFUQSA9IDIsCgoKCiAg
UkxJTUlUX1NUQUNLID0gMywKCgoKICBSTElNSVRfQ09SRSA9IDQsCgoKCgoKCiAgUkxJTUlUX1JT
UyA9IDUsCgoKCiAgUkxJTUlUX05PRklMRSA9IDcsCiAgUkxJTUlUX09GSUxFID0gUkxJTUlUX05P
RklMRSwKCgoKCiAgUkxJTUlUX0FTID0gOSwKCgoKICBSTElNSVRfTlBST0MgPSA2LAoKCgogIFJM
SU1JVF9NRU1MT0NLID0gOCwKCgoKICBSTElNSVRfTE9DS1MgPSAxMCwKCgogIFJMSU1JVF9OTElN
SVRTID0gMTEsCiAgUkxJTV9OTElNSVRTID0gUkxJTUlUX05MSU1JVFMKCgp9OwojIDEwNyAiL3Vz
ci9pbmNsdWRlL2JpdHMvcmVzb3VyY2UuaCIgMwp0eXBlZGVmIF9fcmxpbV90IHJsaW1fdDsKCgoK
CnR5cGVkZWYgX19ybGltNjRfdCBybGltNjRfdDsKCgpzdHJ1Y3QgcmxpbWl0CiAgewoKICAgIHJs
aW1fdCBybGltX2N1cjsKCiAgICBybGltX3QgcmxpbV9tYXg7CiAgfTsKCgpzdHJ1Y3QgcmxpbWl0
NjQKICB7CgogICAgcmxpbTY0X3QgcmxpbV9jdXI7CgogICAgcmxpbTY0X3QgcmxpbV9tYXg7CiB9
OwoKCgplbnVtIF9fcnVzYWdlX3dobwp7CgogIFJVU0FHRV9TRUxGID0gMCwKCgoKICBSVVNBR0Vf
Q0hJTERSRU4gPSAtMSwKCgoKICBSVVNBR0VfQk9USCA9IC0yCgp9OwoKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvdGltZS5oIiAxIDMKIyAxNTEgIi91c3IvaW5jbHVkZS9iaXRzL3Jlc291cmNlLmgi
IDIgMwoKCnN0cnVjdCBydXNhZ2UKICB7CgogICAgc3RydWN0IHRpbWV2YWwgcnVfdXRpbWU7Cgog
ICAgc3RydWN0IHRpbWV2YWwgcnVfc3RpbWU7CgogICAgbG9uZyBpbnQgcnVfbWF4cnNzOwoKCiAg
ICBsb25nIGludCBydV9peHJzczsKCiAgICBsb25nIGludCBydV9pZHJzczsKCiAgICBsb25nIGlu
dCBydV9pc3JzczsKCgogICAgbG9uZyBpbnQgcnVfbWluZmx0OwoKICAgIGxvbmcgaW50IHJ1X21h
amZsdDsKCiAgICBsb25nIGludCBydV9uc3dhcDsKCgogICAgbG9uZyBpbnQgcnVfaW5ibG9jazsK
CiAgICBsb25nIGludCBydV9vdWJsb2NrOwoKICAgIGxvbmcgaW50IHJ1X21zZ3NuZDsKCiAgICBs
b25nIGludCBydV9tc2dyY3Y7CgogICAgbG9uZyBpbnQgcnVfbnNpZ25hbHM7CgoKCiAgICBsb25n
IGludCBydV9udmNzdzsKCgogICAgbG9uZyBpbnQgcnVfbml2Y3N3OwogIH07CgoKCgoKCgplbnVt
IF9fcHJpb3JpdHlfd2hpY2gKewogIFBSSU9fUFJPQ0VTUyA9IDAsCgogIFBSSU9fUEdSUCA9IDEs
CgogIFBSSU9fVVNFUiA9IDIKCn07CiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIg
MiAzCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGVudW0gX19ybGltaXRfcmVzb3VyY2UgX19ybGltaXRf
cmVzb3VyY2VfdDsKdHlwZWRlZiBlbnVtIF9fcnVzYWdlX3dobyBfX3J1c2FnZV93aG9fdDsKdHlw
ZWRlZiBlbnVtIF9fcHJpb3JpdHlfd2hpY2ggX19wcmlvcml0eV93aGljaF90OwojIDUxICIvdXNy
L2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMKZXh0ZXJuIGludCBnZXRybGltaXQgKF9fcmxpbWl0
X3Jlc291cmNlX3QgX19yZXNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBybGlt
aXQgKl9fcmxpbWl0cykgOwojIDYzICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMKZXh0
ZXJuIGludCBnZXRybGltaXQ2NCAoX19ybGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLAogICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmxpbWl0NjQgKl9fcmxpbWl0cykgOwoKCgoKCgpl
eHRlcm4gaW50IHNldHJsaW1pdCAoX19ybGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLAogICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgcmxpbWl0ICpfX3JsaW1pdHMpIDsKIyA4
MyAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzCmV4dGVybiBpbnQgc2V0cmxpbWl0NjQg
KF9fcmxpbWl0X3Jlc291cmNlX3QgX19yZXNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBzdHJ1Y3QgcmxpbWl0NjQgKl9fcmxpbWl0cykgOwoKCgoKZXh0ZXJuIGludCBnZXRy
dXNhZ2UgKF9fcnVzYWdlX3dob190IF9fd2hvLCBzdHJ1Y3QgcnVzYWdlICpfX3VzYWdlKSA7CgoK
CgoKZXh0ZXJuIGludCBnZXRwcmlvcml0eSAoX19wcmlvcml0eV93aGljaF90IF9fd2hpY2gsIGlk
X3QgX193aG8pIDsKCgoKZXh0ZXJuIGludCBzZXRwcmlvcml0eSAoX19wcmlvcml0eV93aGljaF90
IF9fd2hpY2gsIGlkX3QgX193aG8sIGludCBfX3ByaW8pCiAgICAgOwoKCiMgMzIgIi91c3IvaW5j
bHVkZS9zeXMvd2FpdC5oIiAyIDMKIyA5OCAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMKdHlw
ZWRlZiBlbnVtCnsKICBQX0FMTCwKICBQX1BJRCwKICBQX1BHSUQKfSBpZHR5cGVfdDsKCgoKCgpl
eHRlcm4gX19waWRfdCB3YWl0IChfX1dBSVRfU1RBVFVTIF9fc3RhdF9sb2MpIDsKIyAxMjkgIi91
c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAzCmV4dGVybiBfX3BpZF90IHdhaXRwaWQgKF9fcGlkX3Qg
X19waWQsIGludCAqX19zdGF0X2xvYywgaW50IF9fb3B0aW9ucykgOwoKCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3NpZ2luZm8uaCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ2luZm8u
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMwojIDI2ICIvdXNyL2lu
Y2x1ZGUvYml0cy9zaWdpbmZvLmgiIDIgMwojIDEzNCAiL3Vzci9pbmNsdWRlL3N5cy93YWl0Lmgi
IDIgMwojIDE0MiAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMKZXh0ZXJuIGludCB3YWl0aWQg
KGlkdHlwZV90IF9faWR0eXBlLCBfX2lkX3QgX19pZCwgc2lnaW5mb190ICpfX2luZm9wLAogICAg
ICAgICAgICAgICAgICAgaW50IF9fb3B0aW9ucykgOwoKCgoKCnN0cnVjdCBydXNhZ2U7CgoKCgoK
CmV4dGVybiBfX3BpZF90IHdhaXQzIChfX1dBSVRfU1RBVFVTIF9fc3RhdF9sb2MsIGludCBfX29w
dGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnVzYWdlICogX191c2FnZSkgOwoK
CgoKCnN0cnVjdCBydXNhZ2U7CgoKZXh0ZXJuIF9fcGlkX3Qgd2FpdDQgKF9fcGlkX3QgX19waWQs
IF9fV0FJVF9TVEFUVVMgX19zdGF0X2xvYywgaW50IF9fb3B0aW9ucywKICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBydXNhZ2UgKl9fdXNhZ2UpIDsKCgoKCiMgMjYgInpmLWNyZS1vcGVuLmMi
IDIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzCiMgMzIgIi91c3IvaW5jbHVkZS9z
eXMvc3RhdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMzMgIi91c3IvaW5j
bHVkZS9zeXMvc3RhdC5oIiAyIDMKIyA5NiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKCgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRz
L3N0YXQuaCIgMwpzdHJ1Y3Qgc3RhdAogIHsKICAgIF9fZGV2X3Qgc3RfZGV2OwogICAgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fcGFkMTsKCiAgICBfX2lub190IHN0X2lubzsKCgoKICAgIF9fbW9kZV90
IHN0X21vZGU7CiAgICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsKICAg
IF9fZ2lkX3Qgc3RfZ2lkOwogICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgc2hvcnQg
aW50IF9fcGFkMjsKCiAgICBfX29mZl90IHN0X3NpemU7CgoKCiAgICBfX2Jsa3NpemVfdCBzdF9i
bGtzaXplOwoKCiAgICBfX2Jsa2NudF90IHN0X2Jsb2NrczsKCgoKICAgIF9fdGltZV90IHN0X2F0
aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQxOwogICAgX190aW1lX3Qgc3RfbXRp
bWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDI7CiAgICBfX3RpbWVfdCBzdF9jdGlt
ZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMzsKCiAgICB1bnNpZ25lZCBsb25nIGlu
dCBfX3VudXNlZDQ7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDU7CgoKCiAgfTsKCgpz
dHJ1Y3Qgc3RhdDY0CiAgewogICAgX19kZXZfdCBzdF9kZXY7CiAgICB1bnNpZ25lZCBpbnQgX19w
YWQxOwoKICAgIF9faW5vX3QgX19zdF9pbm87CiAgICBfX21vZGVfdCBzdF9tb2RlOwogICAgX19u
bGlua190IHN0X25saW5rOwogICAgX191aWRfdCBzdF91aWQ7CiAgICBfX2dpZF90IHN0X2dpZDsK
ICAgIF9fZGV2X3Qgc3RfcmRldjsKICAgIHVuc2lnbmVkIGludCBfX3BhZDI7CiAgICBfX29mZjY0
X3Qgc3Rfc2l6ZTsKICAgIF9fYmxrc2l6ZV90IHN0X2Jsa3NpemU7CgogICAgX19ibGtjbnQ2NF90
IHN0X2Jsb2NrczsKICAgIF9fdGltZV90IHN0X2F0aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQg
X191bnVzZWQxOwogICAgX190aW1lX3Qgc3RfbXRpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBf
X3VudXNlZDI7CiAgICBfX3RpbWVfdCBzdF9jdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9f
dW51c2VkMzsKICAgIF9faW5vNjRfdCBzdF9pbm87CiAgfTsKIyA5OSAiL3Vzci9pbmNsdWRlL3N5
cy9zdGF0LmgiIDIgMwojIDIwMCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGlu
dCBzdGF0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgICAgICAgICAgICAg
IHN0cnVjdCBzdGF0ICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCmV4dGVybiBpbnQgZnN0YXQgKGlu
dCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19idWYpIDsKIyAyMTkgIi91c3IvaW5jbHVkZS9zeXMvc3Rh
dC5oIiAzCmV4dGVybiBpbnQgc3RhdDY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxl
LAogICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19yZXN0cmljdCBfX2J1ZikgOwpl
eHRlcm4gaW50IGZzdGF0NjQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdDY0ICpfX2J1ZikgOwoKCgoK
CgpleHRlcm4gaW50IGxzdGF0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAg
ICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBfX2J1ZikgOwojIDI0MSAiL3Vz
ci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBsc3RhdDY0IChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19maWxlLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9f
cmVzdHJpY3QgX19idWYpIDsKCgoKCgoKZXh0ZXJuIGludCBjaG1vZCAoX19jb25zdCBjaGFyICpf
X2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkgOwoKCgpleHRlcm4gaW50IGZjaG1vZCAoaW50IF9fZmQs
IF9fbW9kZV90IF9fbW9kZSkgOwoKCgoKCmV4dGVybiBfX21vZGVfdCB1bWFzayAoX19tb2RlX3Qg
X19tYXNrKSA7CgoKCgpleHRlcm4gX19tb2RlX3QgZ2V0dW1hc2sgKHZvaWQpIDsKCgoKZXh0ZXJu
IGludCBta2RpciAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkgOwoKCgoK
CmV4dGVybiBpbnQgbWtub2QgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUs
IF9fZGV2X3QgX19kZXYpCiAgICAgOwoKCgoKZXh0ZXJuIGludCBta2ZpZm8gKF9fY29uc3QgY2hh
ciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpIDsKIyAzMDYgIi91c3IvaW5jbHVkZS9zeXMvc3Rh
dC5oIiAzCmV4dGVybiBpbnQgX19meHN0YXQgKGludCBfX3ZlciwgaW50IF9fZmlsZGVzLCBzdHJ1
Y3Qgc3RhdCAqX19zdGF0X2J1ZikgOwpleHRlcm4gaW50IF9feHN0YXQgKGludCBfX3ZlciwgX19j
b25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpf
X3N0YXRfYnVmKSA7CmV4dGVybiBpbnQgX19seHN0YXQgKGludCBfX3ZlciwgX19jb25zdCBjaGFy
ICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1
ZikgOwojIDMzMCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBfX2Z4c3Rh
dDY0IChpbnQgX192ZXIsIGludCBfX2ZpbGRlcywgc3RydWN0IHN0YXQ2NCAqX19zdGF0X2J1ZikK
ICAgICA7CmV4dGVybiBpbnQgX194c3RhdDY0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19m
aWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYp
IDsKZXh0ZXJuIGludCBfX2x4c3RhdDY0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxl
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRfYnVmKSA7
CgpleHRlcm4gaW50IF9feG1rbm9kIChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19wYXRoLCBf
X21vZGVfdCBfX21vZGUsCiAgICAgICAgICAgICAgICAgICAgIF9fZGV2X3QgKl9fZGV2KSA7CgoK
CgpleHRlcm4gX19pbmxpbmVfXyBpbnQgc3RhdCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJu
IF9feHN0YXQgKDMsIF9fcGF0aCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGlu
dCBsc3RhdCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2x4c3RhdCAoMywgX19wYXRo
LCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IGZzdGF0IChpbnQgX19mZCwg
c3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2Z4c3RhdCAoMywgX19mZCwgX19z
dGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBta25vZCAoX19jb25zdCBjaGFyICpf
X3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Rl
dl90IF9fZGV2KQp7CiAgcmV0dXJuIF9feG1rbm9kICgxLCBfX3BhdGgsIF9fbW9kZSwgJl9fZGV2
KTsKfQoKCgoKCmV4dGVybiBfX2lubGluZV9fIGludCBzdGF0NjQgKF9fY29uc3QgY2hhciAqX19w
YXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRi
dWYpCnsKICByZXR1cm4gX194c3RhdDY0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRl
cm4gX19pbmxpbmVfXyBpbnQgbHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpCnsKICByZXR1
cm4gX19seHN0YXQ2NCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5l
X18gaW50IGZzdGF0NjQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpCnsKICBy
ZXR1cm4gX19meHN0YXQ2NCAoMywgX19mZCwgX19zdGF0YnVmKTsKfQoKCgoKCiMgMjcgInpmLWNy
ZS1vcGVuLmMiIDIKIyAxICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMSAzCiMgMjkgIi91c3IvaW5j
bHVkZS9mY250bC5oIiAzCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2ZjbnRsLmgiIDEgMwoj
IDEzNiAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMwpzdHJ1Y3QgZmxvY2sKICB7CiAgICBz
aG9ydCBpbnQgbF90eXBlOwogICAgc2hvcnQgaW50IGxfd2hlbmNlOwoKICAgIF9fb2ZmX3QgbF9z
dGFydDsKICAgIF9fb2ZmX3QgbF9sZW47CgoKCgogICAgX19waWRfdCBsX3BpZDsKICB9OwoKCnN0
cnVjdCBmbG9jazY0CiAgewogICAgc2hvcnQgaW50IGxfdHlwZTsKICAgIHNob3J0IGludCBsX3do
ZW5jZTsKICAgIF9fb2ZmNjRfdCBsX3N0YXJ0OwogICAgX19vZmY2NF90IGxfbGVuOwogICAgX19w
aWRfdCBsX3BpZDsKICB9OwojIDM0ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzCiMgNjAgIi91
c3IvaW5jbHVkZS9mY250bC5oIiAzCmV4dGVybiBpbnQgZmNudGwgKGludCBfX2ZkLCBpbnQgX19j
bWQsIC4uLikgOwoKCgoKCmV4dGVybiBpbnQgb3BlbiAoX19jb25zdCBjaGFyICpfX2ZpbGUsIGlu
dCBfX29mbGFnLCAuLi4pIDsKIyA3NiAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMKZXh0ZXJuIGlu
dCBvcGVuNjQgKF9fY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19vZmxhZywgLi4uKSA7CgoKCgoK
CmV4dGVybiBpbnQgY3JlYXQgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUp
IDsKIyA5MyAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBjcmVhdDY0IChfX2Nv
bnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19tb2RlKSA7CiMgMTMwICIvdXNyL2luY2x1ZGUv
ZmNudGwuaCIgMwpleHRlcm4gaW50IHBvc2l4X2ZhZHZpc2UgKGludCBfX2ZkLCBfX29mZl90IF9f
b2Zmc2V0LCBzaXplX3QgX19sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWR2
aXNlKSA7CiMgMTQyICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4gaW50IHBvc2l4X2Zh
ZHZpc2U2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNldCwgc2l6ZV90IF9fbGVuLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWR2aXNlKSA7CgoKCgoKZXh0ZXJuIGludCBw
b3NpeF9mYWxsb2NhdGUgKGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBzaXplX3QgX19sZW4p
IDsKIyAxNjAgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzCmV4dGVybiBpbnQgcG9zaXhfZmFsbG9j
YXRlNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIHNpemVfdCBfX2xlbikKICAgICA7
CgoKCgojIDI4ICJ6Zi1jcmUtb3Blbi5jIiAyCgojIDEgInpmLWNyZS1vcGVuLmgiIDEKIyAxNiAi
emYtY3JlLW9wZW4uaCIKZXh0ZXJuIEZJTEUgKnpmb3BlbigKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciBjb25zdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29uc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgKmNvbnN0Cik7CiMgMjkgInpm
LWNyZS1vcGVuLmgiCmV4dGVybiBpbnQgY3Jlb3BlbigKICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgY29uc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgKmNvbnN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgY29uc3QgKmNvbnN0ICoKCik7CmV4dGVybiBpbnQgY2Nsb3NlKGludCBjb25z
dCk7CgoKCgpleHRlcm4gaW50IHJlb3BlbigKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBj
b25zdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgKmNvbnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGNvbnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGNvbnN0Cik7CiMgMzAgInpmLWNyZS1vcGVuLmMiIDIKCgoKRklMRSAqCnpmb3BlbigKICAgICAg
ICAgICAgICBjaGFyIGNvbnN0ICpjb25zdCBuYW1lLAogICAgICAgICAgICAgIGludCBjb25zdCBj
b21wcmVzc2VkLAogICAgICAgICAgICAgIGNoYXIgY29uc3QgKmNvbnN0IG9wZW5fbW9kZQopCnsK
CiAgICAgICAgRklMRSAqZnA7CiAgICAgICAgY2hhciAqYjsKCiAgICAgICAgYiA9IG1hbGxvYygx
MDI0KTsKICAgICAgICBpZiAoYiA9PSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgIGV4aXQo
MjApOwoKICAgICAgICBpZiAoY29tcHJlc3NlZCA9PSAwKSB7CiAgICAgICAgICAgICAgICBpZiAo
KG5hbWUgIT0gKCh2b2lkICopMCkpICYmIChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xl
biwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgX19idWlsdGluX2Nv
bnN0YW50X3AgKCItIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMl9sZW4gPSBz
dHJsZW4gKCItIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKCItIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
Ii0iKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpLCAoX19jb25zdCBjaGFyICopICgiLSIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9f
czFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYm
ICgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShuYW1lKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MxX2xlbiA8
IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgiLSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCItIikgPT0gMSkgPyAoX19l
eHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiLSIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiLSIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiLSIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFt
ZSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi0i
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5z
aWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIi0iKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3Mx
X2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9f
czFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9f
cmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLSIpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgiLSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCItIikgPT0g
MSkgJiYgKF9fczJfbGVuID0gc3RybGVuICgiLSIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRp
bl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAo
eyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSgiLSIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChuYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiLSIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLSIp
KVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi0iKSlbM10pOyB9IH0g
X19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAq
X19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7
IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi0iKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0
cmNtcCAobmFtZSwgIi0iKSkpKTsgfSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZwID0g
Zm9wZW4obmFtZSwgb3Blbl9tb2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZwID09
ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVycm9yKCJk
ZHMydGFyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgyMSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKCFfX2V4dGVu
c2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoKG9wZW5fbW9kZSkpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgoInciKSkgJiYgKF9fczFf
bGVuID0gc3RybGVuICgob3Blbl9tb2RlKSksIF9fczJfbGVuID0gc3RybGVuICgoInciKSksICgh
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChvcGVuX21vZGUpKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgob3Blbl9tb2RlKSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoKCJ3IikpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KCgidyIpKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIg
KikgKChvcGVuX21vZGUpKSwgKF9fY29uc3QgY2hhciAqKSAoKCJ3IikpLCAoX19zMV9sZW4gPCBf
X3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50
X3AgKChvcGVuX21vZGUpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKG9wZW5fbW9kZSkp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKChvcGVuX21vZGUpKSA9PSAxKSAmJiAoX19z
MV9sZW4gPSBzdHJsZW4gKChvcGVuX21vZGUpKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoKCJ3IikpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoInciKSkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJ3IikpID09IDEpID8gKF9fZXh0ZW5zaW9uX18g
KHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopKCgidyIpKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoKG9wZW5fbW9kZSkpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCgidyIpKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoKG9wZW5fbW9kZSkpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCgidyIpKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgoInciKSkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19l
eHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgidyIpKTsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChvcGVu
X21vZGUpKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKChvcGVuX21vZGUpKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgob3Blbl9tb2RlKSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jl
c3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKCJ3IikpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgoInciKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJ3Iikp
ID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoKCJ3IikpLCBfX3MyX2xlbiA8IDQpID8gKF9f
YnVpbHRpbl9jb25zdGFudF9wICgob3Blbl9tb2RlKSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKChvcGVuX21vZGUpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgob3Blbl9tb2Rl
KSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKG9wZW5fbW9kZSkpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoKCJ3IikpKVsw
XSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgob3Blbl9tb2RlKSkpWzFd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCJ3IikpKVsx
XSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgob3Blbl9tb2RlKSkpWzJd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCJ3IikpKVsy
XSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKG9wZW5fbW9kZSkpKVszXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgidyIpKSlbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
KG9wZW5fbW9kZSkpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCJ3IikpKVswXTsgaWYgKF9fczJf
bGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoInciKSkpWzFdKTsgaWYgKF9f
czJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoInciKSkpWzJdKTsgaWYg
KF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCJ3IikpKVszXSk7IH0g
fSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoKG9wZW5fbW9kZSksICgidyIpKSkpKTsgfSkpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGZwID0gc3Rkb3V0OwogICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnAgPSBzdGRpbjsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIHJldHVybiBmcDsKICAgICAgICB9CiAgICAgICAgaWYgKCghX19l
eHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0
YW50X3AgKChvcGVuX21vZGUpKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoKCJ3IikpICYmIChf
X3MxX2xlbiA9IHN0cmxlbiAoKG9wZW5fbW9kZSkpLCBfX3MyX2xlbiA9IHN0cmxlbiAoKCJ3Iikp
LCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgob3Blbl9tb2RlKSkgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKG9wZW5fbW9kZSkpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICgh
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgidyIpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoInciKSkgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBj
aGFyICopICgob3Blbl9tb2RlKSksIChfX2NvbnN0IGNoYXIgKikgKCgidyIpKSwgKF9fczFfbGVu
IDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25z
dGFudF9wICgob3Blbl9tb2RlKSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChvcGVuX21v
ZGUpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgob3Blbl9tb2RlKSkgPT0gMSkgJiYg
KF9fczFfbGVuID0gc3RybGVuICgob3Blbl9tb2RlKSksIF9fczFfbGVuIDwgNCkgPyAoX19idWls
dGluX2NvbnN0YW50X3AgKCgidyIpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKCJ3Iikp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgidyIpKSA9PSAxKSA/IChfX2V4dGVuc2lv
bl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgob3Blbl9tb2RlKSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgoInciKSkpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgoInciKSkpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgoInciKSkpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAm
JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgob3Blbl9tb2RlKSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCJ3IikpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDog
KF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoInciKSk7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgo
b3Blbl9tb2RlKSkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgob3Blbl9tb2RlKSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgob3Blbl9tb2RlKSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoKG9wZW5fbW9kZSkpKVszXSAtIF9fczJbM10pOyB9IH0g
X19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCgidyIpKSAmJiAoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgoKCJ3IikpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgi
dyIpKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCgidyIpKSwgX19zMl9sZW4gPCA0KSA/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKG9wZW5fbW9kZSkpICYmICgoc2l6ZV90KShjb25zdCB2
b2lkICopKCgob3Blbl9tb2RlKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG9wZW5f
bW9kZSkpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChvcGVuX21vZGUp
KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCgidyIp
KSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKG9wZW5fbW9kZSkp
KVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgidyIp
KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKG9wZW5fbW9kZSkp
KVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgidyIp
KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSlb
M10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoInciKSkp
WzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKChvcGVuX21vZGUpKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgidyIpKSlbMF07IGlmIChf
X3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCJ3IikpKVsxXSk7IGlm
IChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCJ3IikpKVsyXSk7
IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgidyIpKSlbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKChvcGVuX21vZGUpLCAoInciKSkpKSk7IH0p
KSkgewogICAgICAgICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9w
ICgiZ3ppcCAiKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImd6aXAgIikgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoImd6aXAgIikgPT0gMSkgJiYgc3RybGVuICgiZ3ppcCAiKSAr
IDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsIChiLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZ3ppcCAiKSlbMCArIDFdIDw8IDggfCAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZ3ppcCAiKSlbMF0p
LCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiZ3ppcCAiKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiZ3ppcCAiKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJnemlwICIpKVswICsgM10gPDwg
OCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJnemlwICIp
KVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiZ3ppcCAiKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoImd6aXAgIikpWzBdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZ3ppcCAiKSlbNCArIDNdIDw8
IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZ3ppcCAi
KSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoImd6aXAgIikpWzQgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJnemlwICIpKVs0XSksIHN0cmxlbiAoImd6aXAgIikgKyAxKSA6
IChjaGFyICopIG1lbWNweSAoYiwgImd6aXAgIiwgc3RybGVuICgiZ3ppcCAiKSArIDEpKSA6IHN0
cmNweSAoYiwgImd6aXAgIikpKTsKICAgICAgICAgICAgICAgIGlmICgobmFtZSAhPSAoKHZvaWQg
KikwKSkgJiYgKF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9f
YnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi0iKSAm
JiAoX19zMV9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA9IHN0cmxlbiAoIi0iKSwgKCEo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikobmFtZSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoIi0iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLSIpID09IDEpIHx8IF9f
czJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAobmFtZSksIChfX2NvbnN0
IGNoYXIgKikgKCItIiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xl
bikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEp
ICYmIChfX3MxX2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKCItIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCItIikgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikoIi0iKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJl
Z2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopKCItIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCItIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsy
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzJd
KTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpKVszXSk7IH0gfSBfX3Jl
c3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3My
ID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpOyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAo
X19idWlsdGluX2NvbnN0YW50X3AgKCItIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIt
IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIi0iKSA9PSAxKSAmJiAoX19zMl9sZW4g
PSBzdHJsZW4gKCItIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5h
bWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKShuYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCIt
IikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzFdKTsg
aWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzJdKTsgaWYgKF9fczJf
bGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDog
KF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKTsgcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCItIikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCItIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiLSIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCItIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChuYW1lLCAiLSIp
KSkpOyB9KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RyY2F0KGIsICIgPiAiKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgc3RyY2F0KGIsIG5hbWUpOwogICAgICAgICAgICAgICAgfQog
ICAgICAgIH0gZWxzZSBpZiAoKCFfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19z
Ml9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKG9wZW5fbW9kZSkpICYmIF9fYnVpbHRpbl9j
b25zdGFudF9wICgoInIiKSkgJiYgKF9fczFfbGVuID0gc3RybGVuICgob3Blbl9tb2RlKSksIF9f
czJfbGVuID0gc3RybGVuICgoInIiKSksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChvcGVu
X21vZGUpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgob3Blbl9tb2RlKSkgPT0gMSkg
fHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKCJyIikpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgiciIpKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0
KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSwgKF9fY29uc3QgY2hh
ciAqKSAoKCJyIikpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4p
ICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKChvcGVuX21vZGUpKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgoKG9wZW5fbW9kZSkpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KChvcGVuX21vZGUpKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKChvcGVuX21vZGUpKSwg
X19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKCJyIikpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgoInIiKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJy
IikpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSlb
MF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCgiciIpKSlb
MF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKG9wZW5fbW9kZSkpKVsx
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgiciIpKSlb
MV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKG9wZW5fbW9kZSkpKVsy
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgiciIpKSlb
Ml0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSlbM10g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoInIiKSkpWzNd
KTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCgiciIpKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9f
czFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSlbMV0gLSBfX3MyWzFd
KTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKChvcGVuX21vZGUpKSlbMl0g
LSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgob3Blbl9tb2Rl
KSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoKCJyIikpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoInIiKSkgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKCJyIikpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAo
KCJyIikpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgob3Blbl9tb2Rl
KSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChvcGVuX21vZGUpKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgob3Blbl9tb2RlKSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyBy
ZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoKG9wZW5fbW9kZSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikoKCJyIikpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgob3Blbl9tb2RlKSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKCJyIikpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgob3Blbl9tb2RlKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKCJyIikpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoKG9wZW5fbW9kZSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCgiciIpKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVu
c2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKG9wZW5fbW9kZSkpOyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoKCJyIikpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoInIiKSkpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgoInIiKSkpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoKCJyIikpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoKG9w
ZW5fbW9kZSksICgiciIpKSkpKTsgfSkpKSB7CiAgICAgICAgICAgICAgICAoX19leHRlbnNpb25f
XyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJndW56aXAgLS1mb3JjZSAtLWRlY29tcHJlc3MgLS1z
dGRvdXQgIikgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJndW56aXAgLS1mb3JjZSAtLWRl
Y29tcHJlc3MgLS1zdGRvdXQgIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImd1bnpp
cCAtLWZvcmNlIC0tZGVjb21wcmVzcyAtLXN0ZG91dCAiKSA9PSAxKSAmJiBzdHJsZW4gKCJndW56
aXAgLS1mb3JjZSAtLWRlY29tcHJlc3MgLS1zdGRvdXQgIikgKyAxIDw9IDggPyBfX3N0cmNweV9z
bWFsbCAoYiwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoImd1bnppcCAtLWZvcmNlIC0tZGVjb21wcmVzcyAtLXN0ZG91dCAiKSlbMCAr
IDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
Z3VuemlwIC0tZm9yY2UgLS1kZWNvbXByZXNzIC0tc3Rkb3V0ICIpKVswXSksIF9fZXh0ZW5zaW9u
X18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJndW56aXAg
LS1mb3JjZSAtLWRlY29tcHJlc3MgLS1zdGRvdXQgIikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImd1bnppcCAtLWZvcmNlIC0tZGVj
b21wcmVzcyAtLXN0ZG91dCAiKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJndW56aXAgLS1mb3JjZSAtLWRlY29tcHJl
c3MgLS1zdGRvdXQgIikpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoImd1bnppcCAtLWZvcmNlIC0tZGVjb21wcmVzcyAtLXN0ZG91dCAi
KSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoImd1bnppcCAtLWZvcmNlIC0tZGVjb21wcmVzcyAtLXN0ZG91dCAiKSlbMCArIDFdKSA8
PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImd1bnpp
cCAtLWZvcmNlIC0tZGVjb21wcmVzcyAtLXN0ZG91dCAiKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgo
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJndW56aXAgLS1m
b3JjZSAtLWRlY29tcHJlc3MgLS1zdGRvdXQgIikpWzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImd1bnppcCAtLWZvcmNlIC0tZGVjb21w
cmVzcyAtLXN0ZG91dCAiKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoImd1bnppcCAtLWZvcmNlIC0tZGVjb21wcmVzcyAtLXN0ZG91
dCAiKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoImd1bnppcCAtLWZvcmNlIC0tZGVjb21wcmVzcyAtLXN0ZG91dCAiKSlbNF0pLCBz
dHJsZW4gKCJndW56aXAgLS1mb3JjZSAtLWRlY29tcHJlc3MgLS1zdGRvdXQgIikgKyAxKSA6IChj
aGFyICopIG1lbWNweSAoYiwgImd1bnppcCAtLWZvcmNlIC0tZGVjb21wcmVzcyAtLXN0ZG91dCAi
LCBzdHJsZW4gKCJndW56aXAgLS1mb3JjZSAtLWRlY29tcHJlc3MgLS1zdGRvdXQgIikgKyAxKSkg
OiBzdHJjcHkgKGIsICJndW56aXAgLS1mb3JjZSAtLWRlY29tcHJlc3MgLS1zdGRvdXQgIikpKTsK
ICAgICAgICAgICAgICAgIGlmICgobmFtZSAhPSAoKHZvaWQgKikwKSkgJiYgKF9fZXh0ZW5zaW9u
X18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChu
YW1lKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi0iKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4g
KG5hbWUpLCBfX3MyX2xlbiA9IHN0cmxlbiAoIi0iKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgfHwgX19z
MV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi0iKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgiLSIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNt
cCAoKF9fY29uc3QgY2hhciAqKSAobmFtZSksIChfX2NvbnN0IGNoYXIgKikgKCItIiksIChfX3Mx
X2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAobmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCItIikgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCItIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikoIi0iKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCItIikpWzBdKTsg
aWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzFdKTsgaWYgKF9fczFf
bGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAm
JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiLSIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5z
aW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0g
X19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0g
LSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsy
XSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsz
XSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3Ag
KCItIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCItIikgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikoIi0iKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCItIiksIF9fczJf
bGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShjb25z
dCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAx
KSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCItIikpWzBdKTsgaWYgKF9fczJfbGVu
ID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCItIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9
PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiLSIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19j
b25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChuYW1lKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzBdOyBpZiAo
X19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzFdKTsgaWYg
KF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpKVsyXSk7IGlm
IChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzNdKTsgfSB9
IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChuYW1lLCAiLSIpKSkpOyB9KSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyY2F0KGIsIG5hbWUpOwogICAgICAgICAgICAgICAgfQogICAgICAg
IH0KICAgICAgICBmcCA9IHBvcGVuKGIsIG9wZW5fbW9kZSk7CiAgICAgICAgaWYgKGZwID09ICgo
dm9pZCAqKTApKSB7CiAgICAgICAgICAgICAgICBwZXJyb3IoImRkczJ0YXIiKTsKICAgICAgICAg
ICAgICAgIGV4aXQoMjIpOwogICAgICAgIH0KICAgICAgICBmcmVlKGIpOwogICAgICAgIHJldHVy
biBmcDsKfQoKCmludApjY2xvc2UoaW50IGNvbnN0IGZkKQp7CiAgICAgICAgaW50IHN0YXR1cyA9
IDA7CgogICAgICAgIGNsb3NlKGZkKTsKICAgICAgICB3YWl0KCZzdGF0dXMpOwogICAgICAgIHJl
dHVybiBzdGF0dXM7Cn0KCmludApyZW9wZW4oCiAgICAgICAgICAgICAgaW50IGNvbnN0IHN0ZGZk
LAogICAgICAgICAgICAgIGNoYXIgY29uc3QgKmNvbnN0IG91dHB1dF9maWxlLAogICAgICAgICAg
ICAgIGludCBjb25zdCBtb2RlLAogICAgICAgICAgICAgIGludCBjb25zdCBmbGFncwopCnsKICAg
ICAgICBpbnQgZmQ7CgogICAgICAgIGlmICghX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9s
ZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKG91dHB1dF9maWxlKSAmJiBfX2J1
aWx0aW5fY29uc3RhbnRfcCAoIi0iKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG91dHB1dF9maWxl
KSwgX19zMl9sZW4gPSBzdHJsZW4gKCItIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG91
dHB1dF9maWxlKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShvdXRwdXRfZmlsZSkgPT0g
MSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi0iKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLSIpID09IDEpIHx8IF9fczJfbGVuID49IDQp
KSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAob3V0cHV0X2ZpbGUpLCAoX19jb25zdCBjaGFy
ICopICgiLSIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsg
MSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKG91dHB1dF9maWxlKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgob3V0cHV0X2ZpbGUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG91
dHB1dF9maWxlKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG91dHB1dF9maWxlKSwgX19z
MV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi0iKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoIi0iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLSIpID09IDEp
ID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG91dHB1dF9maWxlKSlbMF0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCItIikpWzBdKTsgaWYgKF9f
czFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG91dHB1dF9maWxlKSlbMV0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpKVsxXSk7IGlmIChfX3Mx
X2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChvdXRwdXRfZmlsZSkpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi0iKSlbMl0pOyBpZiAoX19zMV9s
ZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG91dHB1dF9maWxlKSlbM10gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpKVszXSk7IH0gfSBfX3Jlc3VsdDsg
fSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpOyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAob3V0cHV0X2ZpbGUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAob3V0cHV0X2ZpbGUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAob3V0cHV0X2ZpbGUpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19z
MV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG91dHB1dF9maWxlKSlbM10gLSBfX3MyWzNdKTsg
fSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLSIpICYmICgoc2l6
ZV90KShjb25zdCB2b2lkICopKCgiLSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIt
IikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuICgiLSIpLCBfX3MyX2xlbiA8IDQpID8gKF9f
YnVpbHRpbl9jb25zdGFudF9wIChvdXRwdXRfZmlsZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKG91dHB1dF9maWxlKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShvdXRwdXRfZmls
ZSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3V0cHV0X2ZpbGUpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi0iKSlbMF0p
OyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3V0cHV0X2ZpbGUpKVsxXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzFdKTsg
aWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG91dHB1dF9maWxlKSlbMl0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpKVsyXSk7IGlm
IChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob3V0cHV0X2ZpbGUpKVszXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzNdKTsgfSB9IF9f
cmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9f
czEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG91dHB1dF9m
aWxlKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLSIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIg
JiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCItIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkp
IDogc3RyY21wIChvdXRwdXRfZmlsZSwgIi0iKSkpKTsgfSkpIHsKCiAgICAgICAgICAgICAgICBm
ZCA9IDE7CiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICBpZiAoKGZkID0gb3Blbihv
dXRwdXRfZmlsZSwgbW9kZSwgZmxhZ3MpKSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAg
ICBwZXJyb3IoImRkczJ0YXIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgyMyk7CiAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGZkID09IDApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgcGVycm9yKCJkZHMydGFyIik7CiAgICAgICAgICAgICAgICAgICAgICAg
IGV4aXQoMjQpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoMCA8PSBz
dGRmZCkgewogICAgICAgICAgICAgICAgZHVwMihmZCwgc3RkZmQpOwogICAgICAgICAgICAgICAg
Y2xvc2UoZmQpOwogICAgICAgICAgICAgICAgZmQgPSBzdGRmZDsKICAgICAgICB9CiAgICAgICAg
cmV0dXJuIGZkOwp9CgoKCgoKCgppbnQKY3Jlb3BlbigKICAgICAgICAgICAgICAgaW50IGNvbnN0
IHN0ZGZkX3BhcmVudCwKICAgICAgICAgICAgICAgaW50IGNvbnN0IHN0ZGZkX2NoaWxkLAogICAg
ICAgICAgICAgICBjaGFyIGNvbnN0ICpjb25zdCBmaWxlbmFtZSwKICAgICAgICAgICAgICAgY2hh
ciBjb25zdCAqY29uc3QgKmFyZ3YKKQp7CiAgICAgICAgaW50IGZkOwogICAgICAgIGludCBwaWQ7
CiAgICAgICAgaW50IHBpcGVmZFsyXTsKICAgICAgICBpbnQgcGlwZV9wYXJlbnQ7CgogICAgICAg
IGlmICgoc3RkZmRfY2hpbGQgJiAweGZmZmZmZmZlKSAhPSAwIHx8IHN0ZGZkX2NoaWxkID09IHN0
ZGZkX3BhcmVudCkgewogICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjcmVvcGVuIG5v
dCB1c2VmdWwgd2l0aCB0aGF0IHBhcmFtZXRlcnNcbiIpOwogICAgICAgICAgICAgICAgZXhpdCgy
NSk7CiAgICAgICAgfQogICAgICAgIHBpcGVfcGFyZW50ID0gc3RkZmRfY2hpbGQgXiAxOwogICAg
ICAgIGlmIChwaXBlKHBpcGVmZCkgPCAwKSB7CiAgICAgICAgICAgICAgICBwZXJyb3IoImRkczJ0
YXIiKTsKICAgICAgICAgICAgICAgIGV4aXQoMjYpOwogICAgICAgIH0KICAgICAgICBpZiAoKHBp
ZCA9IGZvcmsoKSkgPT0gMCkgewoKICAgICAgICAgICAgICAgIGR1cDIocGlwZWZkW3N0ZGZkX2No
aWxkXSwgc3RkZmRfY2hpbGQpOwogICAgICAgICAgICAgICAgY2xvc2UocGlwZWZkWzBdKTsKICAg
ICAgICAgICAgICAgIGNsb3NlKHBpcGVmZFsxXSk7CgogICAgICAgICAgICAgICAgZXhlY3YoZmls
ZW5hbWUsIChjaGFyICpjb25zdCAqKSBhcmd2KTsKICAgICAgICAgICAgICAgIHBlcnJvcigiZGRz
MnRhciIpOwogICAgICAgICAgICAgICAgZXhpdCgyNyk7CiAgICAgICAgfQogICAgICAgIGlmIChw
aWQgPD0gMCkgewogICAgICAgICAgICAgICAgcGVycm9yKCJkZHMydGFyIik7CiAgICAgICAgICAg
ICAgICBleGl0KDI4KTsKICAgICAgICB9CgoKCiAgICAgICAgY2xvc2Uoc3RkZmRfY2hpbGQpOwog
ICAgICAgIGZkID0gcGlwZWZkW3BpcGVfcGFyZW50XTsKICAgICAgICBpZiAoKDAgPD0gc3RkZmRf
cGFyZW50KSAmJiAoc3RkZmRfcGFyZW50IDw9IDEpKSB7CiAgICAgICAgICAgICAgICBkdXAyKGZk
LCBzdGRmZF9wYXJlbnQpOwogICAgICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICAgICAg
ICAgZmQgPSBzdGRmZF9wYXJlbnQ7CiAgICAgICAgICAgICAgICBjbG9zZShwaXBlZmRbMF0pOwog
ICAgICAgICAgICAgICAgY2xvc2UocGlwZWZkWzFdKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJu
IGZkOwp9Cg==


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