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++/6557: ICE in insn_default_length, at insn-attrtab.c:223



>Number:         6557
>Category:       c++
>Synopsis:       ICE in insn_default_length, at insn-attrtab.c:223
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat May 04 03:56:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     georg.wild@gmx.de
>Release:        gcc-3.0.4
>Organization:
>Environment:
i686-pc-linux-gnu
>Description:
I get an ICE compiling the attachment in the following manor:

 > gcc BreakDown.i -lcrypt -ax
In file included from BreakDown.c:31:
headers/somefuncts.h: In function `addpw':
headers/somefuncts.h:9: Unrecognizable insn:
(call_insn 63 62 65 (call (mem:QI (symbol_ref ("__bb_trace_ret")) 0)
        (const_int 0 [0x0])) -1 (nil)
    (nil)
    (nil))
headers/somefuncts.h:9: Internal compiler error in insn_default_length, at insn-attrtab.c:223
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
> 
>How-To-Repeat:
gcc BreakDown.i -lcrypt -ax
>Fix:

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

IyAxMiAiQnJlYWtEb3duLmMiCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMK
IyAyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI4MyAiL3Vzci9sb2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgi
IDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwojIDI4NCAiL3Vzci9s
b2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwojIDMxMiAiL3Vzci9sb2NhbC9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMwojIDMx
MyAiL3Vzci9sb2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwojIDI2ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2djYy8zLjAuNC9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAx
OTkgIi91c3IvbG9jYWwvZ2NjLzMuMC40L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
MC40L2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDI4
NyAiL3Vzci9sb2NhbC9nY2MvMy4wLjQvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
LjQvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7CiMgMzQgIi91
c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgOTQgIi91c3IvbG9jYWwvaW5jbHVkZS9z
dGRsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsK
ICB9IGRpdl90OwoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBs
b25nIGludCByZW07CiAgfSBsZGl2X3Q7CiMgMTMzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGli
LmgiIDMKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSA7CgoKCmV4
dGVybiBkb3VibGUgYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKZXh0ZXJuIGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFy
ICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4
dGVybiBsb25nIGxvbmcgaW50IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICAgICAg
ICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7CiMgMTYzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3Rk
bGliLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsIGludCBfX2Jhc2UpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgICAgICAg
IDsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgICAgICAgIDsKCgoKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5z
aWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgICAgICAgICA7CiMgMjUwICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgICAg
ICAgICA7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgICAgICAgIDsKZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2dyb3VwKSA7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
aW50IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBs
b25nIGxvbmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAq
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAg
ICAgICAgICAgIDsKCgoKCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUKc3RydG9kIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewog
IHJldHVybiBfX3N0cnRvZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJu
IF9faW5saW5lIGxvbmcgaW50CnN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewogIHJl
dHVybiBfX3N0cnRvbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpl
eHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGlu
dCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRy
LCBfX2Jhc2UsIDApOwp9CiMgMzI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDMKX19l
eHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b3EgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAg
ICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9f
ZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2ln
bmVkIGxvbmcgbG9uZyBpbnQKc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICBy
ZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsK
fQoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAo
X19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lu
bGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKiBfX3Jl
c3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICBpbnQg
X19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IF9fYmFzZSwgMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCmF0b2YgKF9fY29uc3QgY2hh
ciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvZCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICop
MCkpOwp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpCnsK
ICByZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTAp
Owp9CmV4dGVybiBfX2lubGluZSBsb25nIGludAphdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikK
ewogIHJldHVybiBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0K
CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CmF0b2xsIChfX2Nv
bnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2xsIChfX25wdHIsIChjaGFyICoqKSAo
KHZvaWQgKikwKSwgMTApOwp9CiMgMzg0ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgOwoKCmV4dGVybiBsb25nIGludCBhNjRs
IChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI2ICIvdXNyL2xvY2FsL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAz
CiMgMjcgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9s
b2NhbC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9i
aXRzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMg
MjcgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2Nh
bC9nY2MvMy4wLjQvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgMzAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoK
CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBf
X3Vfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBfX3VfbG9uZzsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg
aW50IF9fdV9xdWFkX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVh
ZF90OwojIDQ5ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2ln
bmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVk
ZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50
IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBf
X3VfcXVhZF90IF9fZGV2X3Q7CnR5cGVkZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9p
bnQgX19naWRfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19t
b2RlX3Q7CnR5cGVkZWYgX191X2ludCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZf
dDsKdHlwZWRlZiBfX3F1YWRfdCBfX2xvZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRl
ZiBpbnQgX19zc2l6ZV90Owp0eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9x
dWFkX3QgX19ybGltNjRfdDsKdHlwZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0
CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRk
cl90Owp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3Vz
ZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBf
X2Nsb2NrX3Q7CgoKdHlwZWRlZiBpbnQgX19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1l
cl90OwoKCgoKCgp0eXBlZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
aW50IF9faXBjX3BpZF90OwoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlw
ZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsK
Cgp0eXBlZGVmIF9fdV9sb25nIF9fZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNi
bGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9x
dWFkX3QgX19mc2ZpbGNudDY0X3Q7CgoKdHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0
eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJf
dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50
IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgojIDEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAxIDMKIyAyMyAiL3Vzci9s
b2NhbC9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2OCAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2NoZWQu
aCIgMwpzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVkX3ByaW9yaXR5Owog
IH07CiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMKCgpz
dHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBfX3Nw
aW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRo
cmVhZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsKICBpbnQg
X19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJh
bSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNp
emVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2th
ZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBz
dHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9k
ZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewog
IGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVk
OwogIGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21f
a2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRl
eF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0
ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwojIDE0MCAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCBwdGhyZWFkX3Q7CiMgMTQ0ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMK
IyAzMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3Vf
Y2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1
X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0
eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCgoK
dHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKIyA2MSAi
L3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsK
CgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoK
CgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsK
CgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CiMgOTkgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMwp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBlZGVmIF9faWRfdCBpZF90
OwoKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBk
YWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgoKCnR5cGVkZWYgX19rZXlfdCBr
ZXlfdDsKIyAxMzIgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3Iv
bG9jYWwvaW5jbHVkZS90aW1lLmgiIDEgMwojIDY3ICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5o
IiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNjggIi91c3Iv
bG9jYWwvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwojIDc5
ICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMSAzCiMgODAgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5
cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDkxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGlt
ZS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgOTIgIi91
c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX190aW1lcl90IHRpbWVyX3Q7
CiMgMTMzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDE0NiAiL3Vzci9s
b2NhbC9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy4wLjQvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMg
MTQ3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5
cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CiMgMTkwICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDMKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19R
SV9fKSkpOwp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19I
SV9fKSkpOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19T
SV9fKSkpOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19E
SV9fKSkpOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChf
X21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRy
aWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50
MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKdHlw
ZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkp
OwojIDIxMiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyAyMiAiL3Vzci9sb2NhbC9pbmNsdWRlL2VuZGlhbi5o
IiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2xv
Y2FsL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDM3ICIvdXNyL2xvY2FsL2luY2x1ZGUvZW5kaWFu
LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91
c3IvbG9jYWwvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgMjEzICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIg
MSAzCiMgMjUgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2xv
Y2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMv
c2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAz
CiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9s
b2NhbC9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwojIDMyICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ3NldC5o
IiAxIDMKIyAyMyAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlwZWRlZiBp
bnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxv
bmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsK
ICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIg
MwoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKCgoKIyAxICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvdGltZS5oIiAxIDMKIyAxMDYgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDMKc3Ry
dWN0IHRpbWVzcGVjCiAgewogICAgX190aW1lX3QgdHZfc2VjOwogICAgbG9uZyBpbnQgdHZfbnNl
YzsKICB9OwojIDQ1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCiMgMSAi
L3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKIyA2MyAiL3Vzci9sb2NhbC9pbmNs
dWRlL2JpdHMvdGltZS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIg
MSAzCiMgNjQgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMiAzCgoKCnN0cnVjdCB0
aW1ldmFsCiAgewogICAgX190aW1lX3QgdHZfc2VjOwogICAgX19zdXNlY29uZHNfdCB0dl91c2Vj
OwogIH07CiMgNDcgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCnR5cGVk
ZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fZmRf
bWFzazsKCgoKCgoKCnR5cGVkZWYgc3RydWN0CiAgewoKCgoKCgogICAgX19mZF9tYXNrIF9fZmRz
X2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKV07CgoKICB9IGZkX3NldDsKCgoK
CgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKIyAxMDIgIi91c3IvbG9jYWwvaW5jbHVkZS9z
eXMvc2VsZWN0LmgiIDMKZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19y
ZXN0cmljdCBfX3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3Qg
X193cml0ZWZkcywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2Vw
dGZkcywKICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGlt
ZW91dCkgOwojIDIxNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwojIDIxOSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKIyAyMzAgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMwp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2Js
a2NudF90IGZzYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250X3Q7CiMg
MzkxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgpleHRlcm4gbG9uZyBp
bnQgcmFuZG9tICh2b2lkKSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmRvbSAodW5zaWduZWQgaW50IF9f
c2VlZCkgOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQs
IGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRl
bGVuKSA7CgoKCmV4dGVybiBjaGFyICpzZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1ZikgOwoKCgoK
CgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsKICAgIGludDMyX3Qg
KnJwdHI7CiAgICBpbnQzMl90ICpzdGF0ZTsKICAgIGludCByYW5kX3R5cGU7CiAgICBpbnQgcmFu
ZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7CiAgICBpbnQzMl90ICplbmRfcHRyOwogIH07CgpleHRl
cm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYsCiAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCmV4dGVy
biBpbnQgc3JhbmRvbV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEg
Kl9fYnVmKSA7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBj
aGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX3N0YXRlbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEg
Kl9fcmVzdHJpY3QgX19idWYpIDsKCmV4dGVybiBpbnQgc2V0c3RhdGVfciAoY2hhciAqX19yZXN0
cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0
YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKCmV4dGVybiBpbnQgcmFuZCAodm9pZCkgOwoKZXh0
ZXJuIHZvaWQgc3JhbmQgKHVuc2lnbmVkIGludCBfX3NlZWQpIDsKCgoKZXh0ZXJuIGludCByYW5k
X3IgKHVuc2lnbmVkIGludCAqX19zZWVkKSA7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDgg
KHZvaWQpIDsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3Vi
aVszXSkgOwoKCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBsb25nIGlu
dCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiBsb25n
IGludCBtcmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBz
aG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9f
c2VlZHZhbCkgOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVkIHNo
b3J0IGludCBfX3NlZWQxNnZbM10pIDsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAodW5zaWduZWQgc2hv
cnQgaW50IF9fcGFyYW1bN10pIDsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5z
aWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX29sZF94WzNd
OwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2lu
aXQ7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoKCmV4dGVybiBpbnQgZHJh
bmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQg
ZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50
IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVy
biBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4
dGVybiBpbnQgbXJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQp
IDsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAog
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0
KSA7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0IGRy
YW5kNDhfZGF0YSAqX19idWZmZXIpCiAgICAgICAgICAgIDsKCmV4dGVybiBpbnQgc2VlZDQ4X3Ig
KHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CgpleHRlcm4gaW50IGxjb25nNDhfciAodW5z
aWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwojIDUyNyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxp
Yi5oIiAzCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18g
KChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6
ZV90IF9fc2l6ZSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoK
CgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSBfX2F0
dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAodm9pZCAqX19wdHIp
IDsKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSA7CgoKCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2FsbG9jYS5oIiAxIDMKIyAyMiAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbG9jYS5o
IiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2xv
Y2FsL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy4wLjQvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMg
MjYgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKCgoKCgpleHRlcm4gdm9pZCAq
YWxsb2NhIChzaXplX3QgX19zaXplKSA7CiMgNTQ3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGli
LmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsKIyA1NjEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIg
MwpleHRlcm4gdm9pZCBhYm9ydCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykp
OwoKCgpleHRlcm4gaW50IGF0ZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSA7CgoKCgpleHRl
cm4gaW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKl9fYXJn
KSwgdm9pZCAqX19hcmcpCiAgICAgICAgICAgIDsKCgoKCgpleHRlcm4gdm9pZCBleGl0IChpbnQg
X19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKIyA1ODcgIi91c3IvbG9j
YWwvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqZ2V0ZW52IChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSkgOwoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52IChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSkgOwoKCgoKCmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgOwoKCgoK
CmV4dGVybiBpbnQgc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpf
X3ZhbHVlLCBpbnQgX19yZXBsYWNlKQogICAgICAgICAgICA7CgoKZXh0ZXJuIGludCB1bnNldGVu
diAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9p
ZCkgOwojIDYyMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpt
a3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAoY2hh
ciAqX190ZW1wbGF0ZSkgOwojIDY1MCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4
dGVybiBjaGFyICpta2R0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7CgoKCgpleHRlcm4gaW50IHN5
c3RlbSAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQpIDsKIyA2NzIgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX3Jl
c29sdmVkKSA7CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9fY29uc3Qgdm9p
ZCAqLCBfX2NvbnN0IHZvaWQgKik7CiMgNjg5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgi
IDMKZXh0ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXksIF9fY29uc3Qgdm9p
ZCAqX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBf
X3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gdm9pZCBxc29ydCAodm9p
ZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAg
ICAgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gaW50IGFicyAoaW50IF9feCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBp
bnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNzEwICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBfX2Rl
bm9tKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRp
dl90IGxkaXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNzI4ICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGln
aXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jl
c3RyaWN0IF9fc2lnbikgOwoKCgoKZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAg
aW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSA7CgoKCgpleHRlcm4gY2hhciAqcWVj
dnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAg
ICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwpleHRl
cm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAg
ICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9f
c2lnbikgOwpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgY2hhciAqX19idWYpIDsKCgoKCmV4dGVybiBpbnQgZWN2dF9yIChkb3VibGUgX192YWx1
ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAg
ICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAg
ICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwK
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgOwoKZXh0ZXJuIGludCBxZWN2dF9yIChs
b25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAg
ICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CmV4dGVybiBp
bnQgcWZjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAg
ICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWdu
LAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xl
bikgOwoKCgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9f
bikgOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikg
OwoKCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFyX3QgX193Y2hhcikgOwoKCgpl
eHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9f
bikgOwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNp
emVfdCBfX24pCiAgICAgICAgICAgIDsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25z
dCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMgODU4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgi
IDMKZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUgX19sb2FkYXZnW10sIGludCBfX25lbGVt
KSA7CiMgMTMgIkJyZWFrRG93bi5jIiAyCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgi
IDEgMwojIDI4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvbG9jYWwv
aW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgi
IDIgMwoKCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy4wLjQvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzUgIi91c3IvbG9jYWwvaW5j
bHVkZS9zdGRpby5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIg
MSAzCiMgMzcgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA0NSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKIyA1NSAi
L3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX19G
SUxFOwojIDY1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvbG9jYWwv
aW5jbHVkZS9saWJpby5oIiAxIDMKIyAzMiAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDMK
IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwojIDkgIi91c3IvbG9jYWwv
aW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVz
LmgiIDEgMwojIDEwICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKCgoKIyAx
ICIvdXNyL2xvY2FsL2djYy8zLjAuNC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAu
NC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMTIgIi91c3IvbG9jYWwvZ2NjLzMuMC40L2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmln
LmgiIDIgMwojIDI0ICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvbG9jYWwvaW5jbHVkZS93Y2hh
ci5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy4wLjQvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvbG9jYWwvaW5jbHVk
ZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAz
CiMgNTEgIi91c3IvbG9jYWwvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA2NyAiL3Vzci9sb2NhbC9p
bmNsdWRlL3djaGFyLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9u
CiAgewogICAgd2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAgfSBfX3ZhbHVlOwp9
IF9fbWJzdGF0ZV90OwojIDI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoK
dHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsK
fSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19wb3M7CiAgX19tYnN0
YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NCAiL3Vzci9sb2NhbC9pbmNsdWRlL19H
X2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2djb252LmgiIDEgMwojIDI2ICIv
dXNyL2xvY2FsL2luY2x1ZGUvZ2NvbnYuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9mZWF0
dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9sb2NhbC9pbmNsdWRlL2djb252LmgiIDIgMwoKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvbG9jYWwvaW5jbHVkZS93
Y2hhci5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy4wLjQvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvbG9jYWwvaW5j
bHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvd2NoYXIuaCIg
MSAzCiMgNTEgIi91c3IvbG9jYWwvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2djb252LmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy4wLjQvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzIg
Ii91c3IvbG9jYWwvaW5jbHVkZS9nY29udi5oIiAyIDMKCgoKCgplbnVtCnsKICBfX0dDT05WX09L
ID0gMCwKICBfX0dDT05WX05PQ09OViwKICBfX0dDT05WX05PREIsCiAgX19HQ09OVl9OT01FTSwK
CiAgX19HQ09OVl9FTVBUWV9JTlBVVCwKICBfX0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZf
SUxMRUdBTF9JTlBVVCwKICBfX0dDT05WX0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxM
RUdBTF9ERVNDUklQVE9SLAogIF9fR0NPTlZfSU5URVJOQUxfRVJST1IKfTsKCgoKZW51bQp7CiAg
X19HQ09OVl9JU19MQVNUID0gMHgwMDAxLAogIF9fR0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4MDAw
Mgp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwOwpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7CnN0
cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3Q7CnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGE7CgoK
CnR5cGVkZWYgaW50ICgqX19nY29udl9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosIHN0cnVj
dCBfX2djb252X3N0ZXBfZGF0YSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCB1bnNpZ25lZCBjaGFyICoqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7CgoK
dHlwZWRlZiBpbnQgKCpfX2djb252X2luaXRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsK
dHlwZWRlZiB2b2lkICgqX19nY29udl9lbmRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsK
CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAg
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfX2djb252X3N0ZXBf
ZGF0YSAqLCB2b2lkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFu
c19jb250ZXh0X2ZjdCkgKHZvaWQgKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
ICosIHVuc2lnbmVkIGNoYXIgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5
X2ZjdCkgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKioqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29u
dl90cmFuc19pbml0X2ZjdCkgKHZvaWQgKiosIGNvbnN0IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAo
Kl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZvaWQgKik7CgpzdHJ1Y3QgX19nY29udl90cmFuc19k
YXRhCnsKCiAgX19nY29udl90cmFuc19mY3QgX190cmFuc19mY3Q7CiAgX19nY29udl90cmFuc19j
b250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBf
X3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAqX19kYXRhOwogIHN0cnVjdCBfX2djb252X3RyYW5zX2Rh
dGEgKl9fbmV4dDsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcAp7CiAgc3RydWN0IF9fZ2NvbnZf
bG9hZGVkX29iamVjdCAqX19zaGxpYl9oYW5kbGU7CiAgX19jb25zdCBjaGFyICpfX21vZG5hbWU7
CgogIGludCBfX2NvdW50ZXI7CgogIGNoYXIgKl9fZnJvbV9uYW1lOwogIGNoYXIgKl9fdG9fbmFt
ZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0X2ZjdCBfX2luaXRfZmN0Owog
IF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgoKCiAgaW50IF9fbWluX25lZWRlZF9mcm9tOwog
IGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQgX19taW5fbmVlZGVkX3RvOwogIGludCBfX21h
eF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0ZWZ1bDsKCiAgdm9pZCAqX19kYXRhOwp9OwoKCgpz
dHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmOwogIHVu
c2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoKCgogIGludCBfX2ZsYWdzOwoKCgogIGludCBfX2lu
dm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQgX19pbnRlcm5hbF91c2U7CgogIF9fbWJzdGF0ZV90
ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwoKCgogIHN0cnVjdCBfX2djb252X3Ry
YW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5cGVkZWYgc3RydWN0IF9fZ2NvbnZfaW5mbwp7CiAg
c2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2djb252X3N0ZXAgKl9fc3RlcHM7CiAgX19leHRl
bnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhIFtdOwp9ICpfX2djb252X3Q7
CiMgNDUgIi91c3IvbG9jYWwvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCnR5cGVkZWYgdW5pb24K
ewogIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICBzdHJ1Y3QKICB7CiAgICBzdHJ1Y3QgX19n
Y29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhOwogIH0g
X19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlwZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0
dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0df
dWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5z
aWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkp
OwojIDMzICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgNTMgIi91c3IvbG9jYWwv
aW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy4wLjQvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3Iv
bG9jYWwvZ2NjLzMuMC40L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1
ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsK
IyA1NCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDE2MCAiL3Vzci9sb2NhbC9p
bmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19qdW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsKIyAx
NzAgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190
OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAg
c3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTMgIi91c3IvbG9jYWwv
aW5jbHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVj
dnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2
dF9ub2NvbnYKfTsKIyAyNjEgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBf
SU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIq
IF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9i
YXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFy
KiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jh
c2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3Ry
dWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAg
aW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgoKCiAg
dW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7
CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMgMzA1ICIvdXNy
L2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAgdm9p
ZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQy
WzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCnR5cGVkZWYg
c3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJu
IHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19G
SUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lP
XzJfMV9zdGRlcnJfOwojIDM0NCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRl
ZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwgY2hhciAqX19idWYsIHNp
emVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2
b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4g
KHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGlu
dCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7CiMgMzk2ICIvdXNyL2xvY2FsL2luY2x1
ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVy
biBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fb3ZlcmZsb3cgKF9JT19G
SUxFICosIGludCkgOwpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpl
eHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193b3Zl
cmZsb3cgKF9JT19GSUxFICosIHdpbnRfdCkgOwojIDQyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2xp
YmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGlu
dCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVv
ZiAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19m
cCkgOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19mcCkgOwoKCgoK
CmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lP
X2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAo
X0lPX0ZJTEUgKikgOwojIDQ1NiAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJu
IGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19y
ZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QsIGludCAqX19y
ZXN0cmljdCkgOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3Qs
IGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNf
dmFfbGlzdCkgOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9f
c3NpemVfdCkgOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBz
aXplX3QpIDsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2Zm
NjRfdCwgaW50LCBpbnQpIDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUg
KiwgX19vZmY2NF90LCBpbnQpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChf
SU9fRklMRSAqKSA7CiMgNjYgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA4MCAi
L3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190Owoj
IDEyOSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzCiMgMTMwICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8u
aCIgMiAzCgoKCmV4dGVybiBGSUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsKZXh0ZXJu
IEZJTEUgKnN0ZGVycjsKCgoKCgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19m
aWxlbmFtZSkgOwoKZXh0ZXJuIGludCByZW5hbWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29u
c3QgY2hhciAqX19uZXcpIDsKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSA7CiMgMTYx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdG1wbmFtIChjaGFy
ICpfX3MpIDsKCgoKCmV4dGVybiBjaGFyICp0bXBuYW1fciAoY2hhciAqX19zKSA7CiMgMTc4ICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25z
dCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkKICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJl
YW0pIDsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50
IGZmbHVzaF91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKIyAyMDEgIi91c3IvbG9jYWwvaW5j
bHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbW9kZXMpIDsKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgOwojIDIzMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJ
TEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwojIDI1NCAiL3Vz
ci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCmV4dGVybiBpbnQg
c2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgOwoKCgoKZXh0
ZXJuIHZvaWQgc2V0YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUpIDsKCgpl
eHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBm
cHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHByaW50
ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQg
c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgpleHRlcm4gaW50IHZmcHJpbnRm
IChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKZXh0ZXJuIGlu
dCB2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9s
aXN0IF9fYXJnKQogICAgICAgICAgICA7CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKCgpleHRlcm4gaW50IHNucHJpbnRm
IChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICAgICAgICAg
IF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJu
IGludCB2c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9f
Z251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0
X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CiMgMzI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8u
aCIgMwpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7Cgpl
eHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
OwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoj
IDM1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmZ2V0YyAoRklM
RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVy
biBpbnQgZ2V0Y2hhciAodm9pZCkgOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChG
SUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpIDsKCgoK
CmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4g
aW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGMgKGlu
dCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKSA7
CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVh
bSkgOwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVh
bSkgOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIDsKCgoKCgpleHRlcm4g
aW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBG
SUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgaW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICAgICAgICAgOwoj
IDQxNyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKmdldHMgKGNo
YXIgKl9fcykgOwojIDQ0MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGlu
dCBmcHV0cyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkKICAgICAgICAgICAgOwojIDQ1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgi
IDMKZXh0ZXJuIGludCBwdXRzIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVu
Z2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAo
dm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVf
dCBmd3JpdGUgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7
CgoKCmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIs
IHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24s
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2Nr
ZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBf
X29mZiwgaW50IF9fd2hlbmNlKSA7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3Ry
ZWFtKSA7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNDk1ICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICAgICAgICAgOwoK
ZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9z
KSA7CiMgNTMxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBjbGVh
cmVyciAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0p
IDsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gdm9pZCBj
bGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZW9mX3VubG9j
a2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAq
X19zdHJlYW0pIDsKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoX19jb25zdCBjaGFyICpfX3MpIDsK
CgoKCmV4dGVybiBpbnQgc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lz
X2Vycmxpc3RbXTsKIyA1NjIgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBp
bnQgZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBj
aGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwoKCmV4dGVybiBpbnQgcGNs
b3NlIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpf
X3MpIDsKIyA2MDkgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lkIGZs
b2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJ
TEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFt
KSA7CiMgNjMwICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvbG9jYWwv
aW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwojIDMzICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9z
dGRpby5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewogIHJldHVybiB2ZnByaW50ZiAo
c3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyICh2
b2lkKQp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBp
bnQKZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAoKF9fZnApLT5fSU9fcmVh
ZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChfX2ZwKSA6ICoodW5zaWdu
ZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCmV4dGVybiBfX2lubGluZSBp
bnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkKewogIHJldHVybiAoKHN0ZGluKS0+X0lPX3JlYWRf
cHRyID49IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGluKSA6ICoodW5zaWdu
ZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoKCmV4dGVybiBfX2lubGlu
ZSBpbnQKcHV0Y2hhciAoaW50IF9fYykKewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQp
Owp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9f
c3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVk
IGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9w
dHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNfdW5sb2NrZWQg
KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dy
aXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3Ry
ZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFt
KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0
Y2hhcl91bmxvY2tlZCAoaW50IF9fYykKewogIHJldHVybiAoKChzdGRvdXQpLT5fSU9fd3JpdGVf
cHRyID49IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwgKHVu
c2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5fSU9fd3Jp
dGVfcHRyKysgPSAoX19jKSkpOwp9CiMgMTExICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdGRp
by5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0p
CnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoKCmV4dGVy
biBfX2lubGluZSBpbnQKZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVy
biAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgNjMxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgMTQgIkJyZWFrRG93bi5jIiAyCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3N0cmluZy5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0cmluZy5o
IiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjLzMuMC40
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC40L2luY2x1ZGUvc3RkZGVmLmgiIDEg
MwojIDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgpleHRlcm4gdm9pZCAq
bWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIHZvaWQg
Km1lbW1vdmUgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywgc2l6ZV90IF9fbikK
ICAgICAgICAgICAgOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0
IF9fZGVzdCwgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAg
ICAgICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIHZvaWQg
Km1lbXNldCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBt
ZW1jbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19u
KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQg
Km1lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgICAg
ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgNzcgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz
dCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgICAgICAgICA7CgpleHRlcm4g
Y2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRl
cm4gY2hhciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fc3JjKQogICAgICAgICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNhdCAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywKICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHN0cmNtcCAoX19j
b25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgICAgICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0
LAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywg
c2l6ZV90IF9fbikgOwojIDEyMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVy
biBjaGFyICpzdHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxs
b2NfXykpOwojIDE1NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFy
ICpzdHJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f
YykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgMTY3ICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3RyaW5nLmgiIDMKZXh0ZXJuIHNpemVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19j
b25zdCBjaGFyICpfX3JlamVjdCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBj
aGFyICpfX2FjY2VwdCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
ZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9f
YWNjZXB0KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4g
Y2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19u
ZWVkbGUpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyAxODcgIi91
c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RydG9rIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgICAg
ICAgIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0s
CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSA7
CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX3NhdmVfcHRyKSA7CiMgMjE4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgi
IDMKZXh0ZXJuIHNpemVfdCBzdHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKIyAyMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRl
cm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgOwoKCgpleHRlcm4gY2hhciAqc3RyZXJy
b3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CgoKCgpl
eHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgoKZXh0ZXJuIHZv
aWQgYmNvcHkgKF9fY29uc3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikg
OwoKCmV4dGVybiB2b2lkIGJ6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4g
aW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3Qg
X19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNo
YXIgKmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBf
X2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gaW50IGZmcyAoaW50IF9f
aSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDI3MiAiL3Vzci9sb2NhbC9pbmNsdWRl
L3N0cmluZy5oIiAzCmV4dGVybiBpbnQgc3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBf
X2NvbnN0IGNoYXIgKl9fczIpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgpleHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg
Y2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwojIDI5NCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFy
ICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIDsKIyAzNTcgIi91c3IvbG9jYWwv
aW5jbHVkZS9zdHJpbmcuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZy5o
IiAxIDMKIyAzNTggIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDEgMwojIDUyICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy9zdHJpbmcyLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZW5kaWFuLmgiIDEg
MwojIDUzICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwojIDEgIi91c3Iv
bG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDU0ICIvdXNyL2xvY2FsL2luY2x1ZGUv
Yml0cy9zdHJpbmcyLmgiIDIgMwojIDM3NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAzCmV4dGVybiB2b2lkICpfX3Jhd21lbWNociAoY29uc3Qgdm9pZCAqX19zLCBpbnQgX19j
KTsKIyA0MDUgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19p
bmxpbmUgY2hhciAqX19zdHJjcHlfc21hbGwgKGNoYXIgKiwgX191aW50MTZfdCwgX191aW50MTZf
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQzMl90LCBfX3Vp
bnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RyY3B5X3NtYWxsIChj
aGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8yLCBfX3VpbnQx
Nl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50MzJfdCBfX3NyYzBfNCwgX191aW50
MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikKewogIHVuaW9u
IHsKICAgIF9fdWludDMyX3QgX191aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAgICB1bnNpZ25l
ZCBjaGFyIF9fdWM7CiAgfSAqX191ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRjaCAoKHVuc2ln
bmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X191YyA9ICdc
MCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7
CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAg
ICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9f
dWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19z
cmMwXzQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBf
NDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9f
dS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBfX3UtPl9fdWkg
PSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7
CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6CiAg
ICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsK
ICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAg
ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3Vp
ID0gX19zcmM0XzQ7CiAgICAgIGJyZWFrOwogICAgfQogIHJldHVybiBfX2Rlc3Q7Cn0KIyA4OTMg
Ii91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6
ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdCk7CmV4dGVy
biBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f
cmVqZWN0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19zW19f
cmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QpCiAgICArK19fcmVz
dWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNz
cG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSBzaXpl
X3QKX19zdHJjc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9f
cmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tf
X3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQogICAgICAgICAm
JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9f
cmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMyAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX3JlamVjdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19yZWplY3QyLCBpbnQgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lIHNpemVf
dApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QxLCBpbnQgX19y
ZWplY3QyLAogICAgICAgICAgICAgIGludCBfX3JlamVjdDMpCnsKICByZWdpc3RlciBzaXplX3Qg
X19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVz
dWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDIg
JiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBf
X3Jlc3VsdDsKfQojIDk1MCAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4
dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQg
X19hY2NlcHQpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MxIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fYWNjZXB0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsK
CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQpCiAgICArK19fcmVzdWx0OwogIHJl
dHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMiAoX19j
b25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBfX2FjY2VwdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3Bu
X2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MikKewog
IHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09
IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MikKICAgICsrX19yZXN1bHQ7
CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2Mz
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lu
bGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQx
LCBpbnQgX19hY2NlcHQyLCBpbnQgX19hY2NlcHQzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVz
dWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jl
c3VsdF0gPT0gX19hY2NlcHQyCiAgICAgICAgIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQz
KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyAxMDA3ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RycGJy
a19jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIg
KgpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19h
Y2NlcHQyKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2VwdDEgJiYg
Kl9fcyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2
b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFy
ICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0
Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9f
cywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MiwKICAgICAgICAgICAgICBpbnQgX19hY2Nl
cHQzKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9f
cyAhPSBfX2FjY2VwdDIKICAgICAgICAgJiYgKl9fcyAhPSBfX2FjY2VwdDMpCiAgICArK19fczsK
ICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBf
X3M7Cn0KIyAxMDU5ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJu
IF9faW5saW5lIGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hh
ciAqKl9fbmV4dHApOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RydG9rX3JfMWMgKGNoYXIg
Kl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApCnsKICBjaGFyICpfX3Jlc3VsdDsKICBp
ZiAoX19zID09ICgodm9pZCAqKTApKQogICAgX19zID0gKl9fbmV4dHA7CiAgd2hpbGUgKCpfX3Mg
PT0gX19zZXApCiAgICArK19fczsKICBfX3Jlc3VsdCA9ICgodm9pZCAqKTApOwogIGlmICgqX19z
ICE9ICdcMCcpCiAgICB7CiAgICAgIF9fcmVzdWx0ID0gX19zKys7CiAgICAgIHdoaWxlICgqX19z
ICE9ICdcMCcpCiAgICAgICAgaWYgKCpfX3MrKyA9PSBfX3NlcCkKICAgICAgICAgIHsKICAgICAg
ICAgICAgX19zWy0xXSA9ICdcMCc7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAg
ICAqX19uZXh0cCA9IF9fczsKICAgIH0KICByZXR1cm4gX19yZXN1bHQ7Cn0KIyAxMDkxICIvdXNy
L2xvY2FsL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIGNoYXIgKl9fc3Ryc2VwX2cg
KGNoYXIgKipfX3N0cmluZ3AsIF9fY29uc3QgY2hhciAqX19kZWxpbSk7CiMgMTEwOSAiL3Vzci9s
b2NhbC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0
cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBjaGFy
ICoKX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdpc3RlciBj
aGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsICE9ICgodm9pZCAqKTApICYmICgq
X19zID0gKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChfX3JlamVjdCkgJiYg
KF9fcmVqZWN0KSA9PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKF9fcmV0dmFsLCBfX3Jl
amVjdCkgOiBzdHJjaHIgKF9fcmV0dmFsLCBfX3JlamVjdCkpKSkgIT0gKCh2b2lkICopMCkpCiAg
ICAqKCpfX3MpKysgPSAnXDAnOwogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5l
IGNoYXIgKl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3Jl
amVjdDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBj
aGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZh
bCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsICE9ICgodm9pZCAqKTApKQogICAgewogICAgICByZWdp
c3RlciBjaGFyICpfX2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgxKQogICAgICAgIHsKICAg
ICAgICAgIGlmICgqX19jcCA9PSAnXDAnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgX19j
cCA9ICgodm9pZCAqKTApOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAg
IGlmICgqX19jcCA9PSBfX3JlamVjdDEgfHwgKl9fY3AgPT0gX19yZWplY3QyKQogICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgKl9fY3ArKyA9ICdcMCc7CiAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICsrX19jcDsKICAgICAgICB9CiAgICAgICpfX3MgPSBfX2Nw
OwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ry
c2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDMpOwpleHRlcm4gX19p
bmxpbmUgY2hhciAqCl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hh
ciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwg
PSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgcmVnaXN0
ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoMSkKICAgICAgICB7CiAgICAg
ICAgICBpZiAoKl9fY3AgPT0gJ1wwJykKICAgICAgICAgICAgewogICAgICAgICAgICAgIF9fY3Ag
PSAoKHZvaWQgKikwKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICBp
ZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MiB8fCAqX19jcCA9PSBf
X3JlamVjdDMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAqX19jcCsrID0gJ1wwJzsKICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgKytfX2NwOwogICAgICAg
IH0KICAgICAgKl9fcyA9IF9fY3A7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CiMgMTE4NSAi
L3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNs
dWRlL3N0ZGxpYi5oIiAxIDMKIyAxMTg2ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdHJpbmcy
LmgiIDIgMwoKCgoKZXh0ZXJuIGNoYXIgKl9fc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5n
KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDEyMDkgIi91c3IvbG9jYWwvaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gY2hhciAqX19zdHJuZHVwIChfX2NvbnN0IGNoYXIg
Kl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFs
bG9jX18pKTsKIyAzNjEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCiMgMTUgIkJy
ZWFrRG93bi5jIiAyCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgiIDEgMwojIDI2ICIv
dXNyL2xvY2FsL2luY2x1ZGUvY3R5cGUuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9mZWF0
dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgiIDIgMwojIDEgIi91
c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2luY2x1
ZGUvY3R5cGUuaCIgMiAzCiMgNDAgIi91c3IvbG9jYWwvaW5jbHVkZS9jdHlwZS5oIiAzCiMgMSAi
L3Vzci9sb2NhbC9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyA0MSAiL3Vzci9sb2NhbC9pbmNsdWRl
L2N0eXBlLmgiIDIgMwoKCgoKCgplbnVtCnsKICBfSVN1cHBlciA9ICgoMCkgPCA4ID8gKCgxIDw8
ICgwKSkgPDwgOCkgOiAoKDEgPDwgKDApKSA+PiA4KSksCiAgX0lTbG93ZXIgPSAoKDEpIDwgOCA/
ICgoMSA8PCAoMSkpIDw8IDgpIDogKCgxIDw8ICgxKSkgPj4gOCkpLAogIF9JU2FscGhhID0gKCgy
KSA8IDggPyAoKDEgPDwgKDIpKSA8PCA4KSA6ICgoMSA8PCAoMikpID4+IDgpKSwKICBfSVNkaWdp
dCA9ICgoMykgPCA4ID8gKCgxIDw8ICgzKSkgPDwgOCkgOiAoKDEgPDwgKDMpKSA+PiA4KSksCiAg
X0lTeGRpZ2l0ID0gKCg0KSA8IDggPyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgoMSA8PCAoNCkpID4+
IDgpKSwKICBfSVNzcGFjZSA9ICgoNSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwgOCkgOiAoKDEgPDwg
KDUpKSA+PiA4KSksCiAgX0lTcHJpbnQgPSAoKDYpIDwgOCA/ICgoMSA8PCAoNikpIDw8IDgpIDog
KCgxIDw8ICg2KSkgPj4gOCkpLAogIF9JU2dyYXBoID0gKCg3KSA8IDggPyAoKDEgPDwgKDcpKSA8
PCA4KSA6ICgoMSA8PCAoNykpID4+IDgpKSwKICBfSVNibGFuayA9ICgoOCkgPCA4ID8gKCgxIDw8
ICg4KSkgPDwgOCkgOiAoKDEgPDwgKDgpKSA+PiA4KSksCiAgX0lTY250cmwgPSAoKDkpIDwgOCA/
ICgoMSA8PCAoOSkpIDw8IDgpIDogKCgxIDw8ICg5KSkgPj4gOCkpLAogIF9JU3B1bmN0ID0gKCgx
MCkgPCA4ID8gKCgxIDw8ICgxMCkpIDw8IDgpIDogKCgxIDw8ICgxMCkpID4+IDgpKSwKICBfSVNh
bG51bSA9ICgoMTEpIDwgOCA/ICgoMSA8PCAoMTEpKSA8PCA4KSA6ICgoMSA8PCAoMTEpKSA+PiA4
KSkKfTsKIyA3NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIF9fY29uc3Qg
dW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7CmV4dGVybiBfX2NvbnN0IF9faW50MzJfdCAq
X19jdHlwZV90b2xvd2VyOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG91cHBl
cjsKIyA5MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIGludCBpc2FsbnVt
IChpbnQpIDsKZXh0ZXJuIGludCBpc2FscGhhIChpbnQpIDsKZXh0ZXJuIGludCBpc2NudHJsIChp
bnQpIDsKZXh0ZXJuIGludCBpc2RpZ2l0IChpbnQpIDsKZXh0ZXJuIGludCBpc2xvd2VyIChpbnQp
IDsKZXh0ZXJuIGludCBpc2dyYXBoIChpbnQpIDsKZXh0ZXJuIGludCBpc3ByaW50IChpbnQpIDsK
ZXh0ZXJuIGludCBpc3B1bmN0IChpbnQpIDsKZXh0ZXJuIGludCBpc3NwYWNlIChpbnQpIDsKZXh0
ZXJuIGludCBpc3VwcGVyIChpbnQpIDsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSA7CgoKCgoK
CgpleHRlcm4gaW50IHRvbG93ZXIgKGludCBfX2MpIDsKCgpleHRlcm4gaW50IHRvdXBwZXIgKGlu
dCBfX2MpIDsKCgoKCgoKZXh0ZXJuIGludCBpc2FzY2lpIChpbnQgX19jKSA7CgoKCmV4dGVybiBp
bnQgdG9hc2NpaSAoaW50IF9fYykgOwoKCgpleHRlcm4gaW50IF90b3VwcGVyIChpbnQpIDsKZXh0
ZXJuIGludCBfdG9sb3dlciAoaW50KSA7CiMgMTY3ICIvdXNyL2xvY2FsL2luY2x1ZGUvY3R5cGUu
aCIgMwpleHRlcm4gX19pbmxpbmUgaW50CnRvbG93ZXIgKGludCBfX2MpCnsKICByZXR1cm4gX19j
ID49IC0xMjggJiYgX19jIDwgMjU2ID8gX19jdHlwZV90b2xvd2VyW19fY10gOiBfX2M7Cn0KCmV4
dGVybiBfX2lubGluZSBpbnQKdG91cHBlciAoaW50IF9fYykKewogIHJldHVybiBfX2MgPj0gLTEy
OCAmJiBfX2MgPCAyNTYgPyBfX2N0eXBlX3RvdXBwZXJbX19jXSA6IF9fYzsKfQojIDE2ICJCcmVh
a0Rvd24uYyIgMgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMSAzCiMgMjkgIi91
c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9mZWF0
dXJlcy5oIiAxIDMKIyAzMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3NpZ25hbC5oIiAyIDMKCgoKIyAx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiMgMTAzICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwpleHRlcm4gaW50IF9fc2lnaXNtZW1iZXIgKF9fY29u
c3QgX19zaWdzZXRfdCAqLCBpbnQpOwpleHRlcm4gaW50IF9fc2lnYWRkc2V0IChfX3NpZ3NldF90
ICosIGludCk7CmV4dGVybiBpbnQgX19zaWdkZWxzZXQgKF9fc2lnc2V0X3QgKiwgaW50KTsKIyAx
MTcgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCmV4dGVybiBfX2lubGluZSBp
bnQgX19zaWdpc21lbWJlciAoX19jb25zdCBfX3NpZ3NldF90ICpfX3NldCwgaW50IF9fc2lnKSB7
IHVuc2lnbmVkIGxvbmcgaW50IF9fbWFzayA9ICgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAo
KChfX3NpZykgLSAxKSAlICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKSk7IHVuc2ln
bmVkIGxvbmcgaW50IF9fd29yZCA9ICgoKF9fc2lnKSAtIDEpIC8gKDggKiBzaXplb2YgKHVuc2ln
bmVkIGxvbmcgaW50KSkpOyByZXR1cm4gKF9fc2V0LT5fX3ZhbFtfX3dvcmRdICYgX19tYXNrKSA/
IDEgOiAwOyB9CmV4dGVybiBfX2lubGluZSBpbnQgX19zaWdhZGRzZXQgKCBfX3NpZ3NldF90ICpf
X3NldCwgaW50IF9fc2lnKSB7IHVuc2lnbmVkIGxvbmcgaW50IF9fbWFzayA9ICgoKHVuc2lnbmVk
IGxvbmcgaW50KSAxKSA8PCAoKChfX3NpZykgLSAxKSAlICg4ICogc2l6ZW9mICh1bnNpZ25lZCBs
b25nIGludCkpKSk7IHVuc2lnbmVkIGxvbmcgaW50IF9fd29yZCA9ICgoKF9fc2lnKSAtIDEpIC8g
KDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpOyByZXR1cm4gKChfX3NldC0+X192YWxb
X193b3JkXSB8PSBfX21hc2spLCAwKTsgfQpleHRlcm4gX19pbmxpbmUgaW50IF9fc2lnZGVsc2V0
ICggX19zaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZykgeyB1bnNpZ25lZCBsb25nIGludCBfX21h
c2sgPSAoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgKCgoX19zaWcpIC0gMSkgJSAoOCAqIHNp
emVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkpOyB1bnNpZ25lZCBsb25nIGludCBfX3dvcmQgPSAo
KChfX3NpZykgLSAxKSAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKTsgcmV0dXJu
ICgoX19zZXQtPl9fdmFsW19fd29yZF0gJj0gfl9fbWFzayksIDApOyB9CiMgMzQgIi91c3IvbG9j
YWwvaW5jbHVkZS9zaWduYWwuaCIgMiAzCgoKCgoKCnR5cGVkZWYgX19zaWdfYXRvbWljX3Qgc2ln
X2F0b21pY190OwojIDU1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDMKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA1NiAiL3Vzci9sb2NhbC9pbmNsdWRl
L3NpZ25hbC5oIiAyIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdudW0uaCIgMSAz
CiMgNTcgIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMiAzCiMgNzEgIi91c3IvbG9jYWwv
aW5jbHVkZS9zaWduYWwuaCIgMwp0eXBlZGVmIHZvaWQgKCpfX3NpZ2hhbmRsZXJfdCkgKGludCk7
CgoKCgpleHRlcm4gX19zaWdoYW5kbGVyX3QgX19zeXN2X3NpZ25hbCAoaW50IF9fc2lnLCBfX3Np
Z2hhbmRsZXJfdCBfX2hhbmRsZXIpCiAgICAgICAgICAgIDsKIyA4NyAiL3Vzci9sb2NhbC9pbmNs
dWRlL3NpZ25hbC5oIiAzCmV4dGVybiBfX3NpZ2hhbmRsZXJfdCBzaWduYWwgKGludCBfX3NpZywg
X19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKSA7CiMgMTEwICIvdXNyL2xvY2FsL2luY2x1ZGUvc2ln
bmFsLmgiIDMKZXh0ZXJuIGludCBraWxsIChfX3BpZF90IF9fcGlkLCBpbnQgX19zaWcpIDsKCgoK
CgoKZXh0ZXJuIGludCBraWxscGcgKF9fcGlkX3QgX19wZ3JwLCBpbnQgX19zaWcpIDsKCgoKZXh0
ZXJuIGludCByYWlzZSAoaW50IF9fc2lnKSA7CgoKCmV4dGVybiBfX3NpZ2hhbmRsZXJfdCBzc2ln
bmFsIChpbnQgX19zaWcsIF9fc2lnaGFuZGxlcl90IF9faGFuZGxlcikgOwpleHRlcm4gaW50IGdz
aWduYWwgKGludCBfX3NpZykgOwoKCgoKZXh0ZXJuIHZvaWQgcHNpZ25hbCAoaW50IF9fc2lnLCBf
X2NvbnN0IGNoYXIgKl9fcykgOwojIDE0MCAiL3Vzci9sb2NhbC9pbmNsdWRlL3NpZ25hbC5oIiAz
CmV4dGVybiBpbnQgX19zaWdwYXVzZSAoaW50IF9fc2lnX29yX21hc2ssIGludCBfX2lzX3NpZykg
OwoKCgoKZXh0ZXJuIGludCBzaWdwYXVzZSAoaW50IF9fbWFzaykgOwojIDE2OCAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3NpZ25hbC5oIiAzCmV4dGVybiBpbnQgc2lnYmxvY2sgKGludCBfX21hc2spIDsK
CgpleHRlcm4gaW50IHNpZ3NldG1hc2sgKGludCBfX21hc2spIDsKCgpleHRlcm4gaW50IHNpZ2dl
dG1hc2sgKHZvaWQpIDsKIyAxODggIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMwp0eXBl
ZGVmIF9fc2lnaGFuZGxlcl90IHNpZ190OwoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUv
dGltZS5oIiAxIDMKIyAxOTcgIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMiAzCgoKIyAx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDEgMwojIDI1ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy93
b3Jkc2l6ZS5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnaW5mby5oIiAy
IDMKCgoKCgoKCnR5cGVkZWYgdW5pb24gc2lndmFsCiAgewogICAgaW50IHNpdmFsX2ludDsKICAg
IHZvaWQgKnNpdmFsX3B0cjsKICB9IHNpZ3ZhbF90OwojIDUxICIvdXNyL2xvY2FsL2luY2x1ZGUv
Yml0cy9zaWdpbmZvLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qgc2lnaW5mbwogIHsKICAgIGludCBzaV9z
aWdubzsKICAgIGludCBzaV9lcnJubzsKCiAgICBpbnQgc2lfY29kZTsKCiAgICB1bmlvbgogICAg
ICB7CiAgICAgICAgaW50IF9wYWRbKCgxMjggLyBzaXplb2YgKGludCkpIC0gMyldOwoKCiAgICAg
ICAgc3RydWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIF9fcGlkX3Qgc2lfcGlkOwogICAgICAg
ICAgICBfX3VpZF90IHNpX3VpZDsKICAgICAgICAgIH0gX2tpbGw7CgoKICAgICAgICBzdHJ1Y3QK
ICAgICAgICAgIHsKICAgICAgICAgICAgdW5zaWduZWQgaW50IF90aW1lcjE7CiAgICAgICAgICAg
IHVuc2lnbmVkIGludCBfdGltZXIyOwogICAgICAgICAgfSBfdGltZXI7CgoKICAgICAgICBzdHJ1
Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgX19waWRfdCBzaV9waWQ7CiAgICAgICAgICAgIF9f
dWlkX3Qgc2lfdWlkOwogICAgICAgICAgICBzaWd2YWxfdCBzaV9zaWd2YWw7CiAgICAgICAgICB9
IF9ydDsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICBfX3BpZF90IHNp
X3BpZDsKICAgICAgICAgICAgX191aWRfdCBzaV91aWQ7CiAgICAgICAgICAgIGludCBzaV9zdGF0
dXM7CiAgICAgICAgICAgIF9fY2xvY2tfdCBzaV91dGltZTsKICAgICAgICAgICAgX19jbG9ja190
IHNpX3N0aW1lOwogICAgICAgICAgfSBfc2lnY2hsZDsKCgogICAgICAgIHN0cnVjdAogICAgICAg
ICAgewogICAgICAgICAgICB2b2lkICpzaV9hZGRyOwogICAgICAgICAgfSBfc2lnZmF1bHQ7CgoK
ICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgbG9uZyBpbnQgc2lfYmFuZDsK
ICAgICAgICAgICAgaW50IHNpX2ZkOwogICAgICAgICAgfSBfc2lncG9sbDsKICAgICAgfSBfc2lm
aWVsZHM7CiAgfSBzaWdpbmZvX3Q7CiMgMTI4ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdp
bmZvLmgiIDMKZW51bQp7CiAgU0lfQVNZTkNOTCA9IC02LAoKICBTSV9TSUdJTywKCiAgU0lfQVNZ
TkNJTywKCiAgU0lfTUVTR1EsCgogIFNJX1RJTUVSLAoKICBTSV9RVUVVRSwKCiAgU0lfVVNFUiwK
CiAgU0lfS0VSTkVMID0gMHg4MAoKfTsKCgoKZW51bQp7CiAgSUxMX0lMTE9QQyA9IDEsCgogIElM
TF9JTExPUE4sCgogIElMTF9JTExBRFIsCgogIElMTF9JTExUUlAsCgogIElMTF9QUlZPUEMsCgog
IElMTF9QUlZSRUcsCgogIElMTF9DT1BST0MsCgogIElMTF9CQURTVEsKCn07CgoKZW51bQp7CiAg
RlBFX0lOVERJViA9IDEsCgogIEZQRV9JTlRPVkYsCgogIEZQRV9GTFRESVYsCgogIEZQRV9GTFRP
VkYsCgogIEZQRV9GTFRVTkQsCgogIEZQRV9GTFRSRVMsCgogIEZQRV9GTFRJTlYsCgogIEZQRV9G
TFRTVUIKCn07CgoKZW51bQp7CiAgU0VHVl9NQVBFUlIgPSAxLAoKICBTRUdWX0FDQ0VSUgoKfTsK
CgplbnVtCnsKICBCVVNfQURSQUxOID0gMSwKCiAgQlVTX0FEUkVSUiwKCiAgQlVTX09CSkVSUgoK
fTsKCgplbnVtCnsKICBUUkFQX0JSS1BUID0gMSwKCiAgVFJBUF9UUkFDRQoKfTsKCgplbnVtCnsK
ICBDTERfRVhJVEVEID0gMSwKCiAgQ0xEX0tJTExFRCwKCiAgQ0xEX0RVTVBFRCwKCiAgQ0xEX1RS
QVBQRUQsCgogIENMRF9TVE9QUEVELAoKICBDTERfQ09OVElOVUVECgp9OwoKCmVudW0KewogIFBP
TExfSU4gPSAxLAoKICBQT0xMX09VVCwKCiAgUE9MTF9NU0csCgogIFBPTExfRVJSLAoKICBQT0xM
X1BSSSwKCiAgUE9MTF9IVVAKCn07CiMgMjcxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdp
bmZvLmgiIDMKc3RydWN0IF9fcHRocmVhZF9hdHRyX3M7Cgp0eXBlZGVmIHN0cnVjdCBzaWdldmVu
dAogIHsKICAgIHNpZ3ZhbF90IHNpZ2V2X3ZhbHVlOwogICAgaW50IHNpZ2V2X3NpZ25vOwogICAg
aW50IHNpZ2V2X25vdGlmeTsKCiAgICB1bmlvbgogICAgICB7CiAgICAgICAgaW50IF9wYWRbKCg2
NCAvIHNpemVvZiAoaW50KSkgLSAzKV07CgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAg
ICAgICAgICB2b2lkICgqX2Z1bmN0aW9uKSAoc2lndmFsX3QpOwogICAgICAgICAgICBzdHJ1Y3Qg
X19wdGhyZWFkX2F0dHJfcyAqX2F0dHJpYnV0ZTsKICAgICAgICAgIH0gX3NpZ2V2X3RocmVhZDsK
ICAgICAgfSBfc2lnZXZfdW47CiAgfSBzaWdldmVudF90OwoKCgoKCgplbnVtCnsKICBTSUdFVl9T
SUdOQUwgPSAwLAoKICBTSUdFVl9OT05FLAoKICBTSUdFVl9USFJFQUQKCn07CiMgMjAwICIvdXNy
L2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDIgMwoKCgpleHRlcm4gaW50IHNpZ2VtcHR5c2V0IChz
aWdzZXRfdCAqX19zZXQpIDsKCgpleHRlcm4gaW50IHNpZ2ZpbGxzZXQgKHNpZ3NldF90ICpfX3Nl
dCkgOwoKCmV4dGVybiBpbnQgc2lnYWRkc2V0IChzaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZ25v
KSA7CgoKZXh0ZXJuIGludCBzaWdkZWxzZXQgKHNpZ3NldF90ICpfX3NldCwgaW50IF9fc2lnbm8p
IDsKCgpleHRlcm4gaW50IHNpZ2lzbWVtYmVyIChfX2NvbnN0IHNpZ3NldF90ICpfX3NldCwgaW50
IF9fc2lnbm8pIDsKIyAyMzIgIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMwojIDEgIi91
c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2FjdGlvbi5oIiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9p
bmNsdWRlL2JpdHMvc2lnYWN0aW9uLmgiIDMKc3RydWN0IHNpZ2FjdGlvbgogIHsKCgogICAgdW5p
b24KICAgICAgewoKICAgICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5kbGVyOwoKICAgICAgICB2
b2lkICgqc2Ffc2lnYWN0aW9uKSAoaW50LCBzaWdpbmZvX3QgKiwgdm9pZCAqKTsKICAgICAgfQog
ICAgX19zaWdhY3Rpb25faGFuZGxlcjsKCgoKCgoKCiAgICBfX3NpZ3NldF90IHNhX21hc2s7CgoK
ICAgIGludCBzYV9mbGFnczsKCgogICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSAodm9pZCk7CiAgfTsK
IyAyMzMgIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMiAzCgoKZXh0ZXJuIGludCBzaWdw
cm9jbWFzayAoaW50IF9faG93LCBfX2NvbnN0IHNpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICBzaWdzZXRfdCAqX19yZXN0cmljdCBfX29zZXQpIDsKCgoK
ZXh0ZXJuIGludCBzaWdzdXNwZW5kIChfX2NvbnN0IHNpZ3NldF90ICpfX3NldCkgOwoKCmV4dGVy
biBpbnQgc2lnYWN0aW9uIChpbnQgX19zaWcsIF9fY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqX19y
ZXN0cmljdCBfX2FjdCwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gKl9f
cmVzdHJpY3QgX19vYWN0KSA7CgoKZXh0ZXJuIGludCBzaWdwZW5kaW5nIChzaWdzZXRfdCAqX19z
ZXQpIDsKCgoKZXh0ZXJuIGludCBzaWd3YWl0IChfX2NvbnN0IHNpZ3NldF90ICpfX3Jlc3RyaWN0
IF9fc2V0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWcpCiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGlu
dCBzaWd3YWl0aW5mbyAoX19jb25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgc2lnaW5mb190ICpfX3Jlc3RyaWN0IF9faW5mbykgOwoKCgpleHRl
cm4gaW50IHNpZ3RpbWVkd2FpdCAoX19jb25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ2luZm9fdCAqX19yZXN0cmljdCBfX2luZm8sCiAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmlj
dCBfX3RpbWVvdXQpCiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGludCBzaWdxdWV1ZSAoX19waWRf
dCBfX3BpZCwgaW50IF9fc2lnLCBfX2NvbnN0IHVuaW9uIHNpZ3ZhbCBfX3ZhbCkKICAgICAgICAg
ICAgOwojIDI3OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3NpZ25hbC5oIiAzCmV4dGVybiBfX2NvbnN0
IGNoYXIgKl9fY29uc3QgX3N5c19zaWdsaXN0WzY0XTsKZXh0ZXJuIF9fY29uc3QgY2hhciAqX19j
b25zdCBzeXNfc2lnbGlzdFs2NF07CgoKc3RydWN0IHNpZ3ZlYwogIHsKICAgIF9fc2lnaGFuZGxl
cl90IHN2X2hhbmRsZXI7CiAgICBpbnQgc3ZfbWFzazsKCiAgICBpbnQgc3ZfZmxhZ3M7CgogIH07
CiMgMzAyICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDMKZXh0ZXJuIGludCBzaWd2ZWMg
KGludCBfX3NpZywgX19jb25zdCBzdHJ1Y3Qgc2lndmVjICpfX3ZlYywKICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzaWd2ZWMgKl9fb3ZlYykgOwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9i
aXRzL3NpZ2NvbnRleHQuaCIgMSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2Nv
bnRleHQuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIiAxIDMK
IyAxOCAiL3Vzci9sb2NhbC9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmgiIDMKc3RydWN0IF9mcHJl
ZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNhbmRbNF07CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZXhwb25lbnQ7Cn07CgpzdHJ1Y3QgX2ZweHJlZyB7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgc2lnbmlmaWNhbmRbNF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgcGFkZGluZ1szXTsKfTsKCnN0cnVjdCBfeG1tcmVnIHsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGVsZW1lbnRbNF07Cn07CgpzdHJ1Y3QgX2Zwc3RhdGUgewoKICAg
ICAgICB1bnNpZ25lZCBsb25nIGN3OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3c7CiAgICAgICAg
dW5zaWduZWQgbG9uZyB0YWc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpcG9mZjsKICAgICAgICB1
bnNpZ25lZCBsb25nIGNzc2VsOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YW9mZjsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGRhdGFzZWw7CiAgICAgICAgc3RydWN0IF9mcHJlZyBfc3RbOF07CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1hZ2lj
OwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBfZnhzcl9lbnZbNl07CiAgICAgICAgdW5zaWduZWQg
bG9uZyBteGNzcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlc2VydmVkOwogICAgICAgIHN0cnVj
dCBfZnB4cmVnIF9meHNyX3N0WzhdOwogICAgICAgIHN0cnVjdCBfeG1tcmVnIF94bW1bOF07CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBwYWRkaW5nWzU2XTsKfTsKCgoKc3RydWN0IHNpZ2NvbnRleHQg
ewogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVkaTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGVzaTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVicDsKICAgICAgICB1
bnNpZ25lZCBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVieDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGVkeDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVjeDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVheDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRyYXBubzsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVycjsKICAgICAgICB1bnNpZ25lZCBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBjcywgX19jc2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZmxhZ3M7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBlc3BfYXRfc2lnbmFsOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNzLCBfX3Nz
aDsKICAgICAgICBzdHJ1Y3QgX2Zwc3RhdGUgKiBmcHN0YXRlOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgb2xkbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIGNyMjsKfTsKIyAyOSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2JpdHMvc2lnY29udGV4dC5oIiAyIDMKIyAzMDggIi91c3IvbG9jYWwvaW5jbHVk
ZS9zaWduYWwuaCIgMiAzCgoKZXh0ZXJuIGludCBzaWdyZXR1cm4gKHN0cnVjdCBzaWdjb250ZXh0
ICpfX3NjcCkgOwojIDMyMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3NpZ25hbC5oIiAzCmV4dGVybiBp
bnQgc2lnaW50ZXJydXB0IChpbnQgX19zaWcsIGludCBfX2ludGVycnVwdCkgOwoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvYml0cy9zaWdzdGFjay5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNs
dWRlL2JpdHMvc2lnc3RhY2suaCIgMwpzdHJ1Y3Qgc2lnc3RhY2sKICB7CiAgICB2b2lkICpzc19z
cDsKICAgIGludCBzc19vbnN0YWNrOwogIH07CgoKCmVudW0KewogIFNTX09OU1RBQ0sgPSAxLAoK
ICBTU19ESVNBQkxFCgp9OwojIDUwICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdzdGFjay5o
IiAzCnR5cGVkZWYgc3RydWN0IHNpZ2FsdHN0YWNrCiAgewogICAgdm9pZCAqc3Nfc3A7CiAgICBp
bnQgc3NfZmxhZ3M7CiAgICBzaXplX3Qgc3Nfc2l6ZTsKICB9IHN0YWNrX3Q7CiMgMzIzICIvdXNy
L2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDIgMwoKCgoKCgoKZXh0ZXJuIGludCBzaWdzdGFjayAo
c3RydWN0IHNpZ3N0YWNrICpfX3NzLCBzdHJ1Y3Qgc2lnc3RhY2sgKl9fb3NzKSA7CgoKCmV4dGVy
biBpbnQgc2lnYWx0c3RhY2sgKF9fY29uc3Qgc3RydWN0IHNpZ2FsdHN0YWNrICpfX3Jlc3RyaWN0
IF9fc3MsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdhbHRzdGFjayAqX19yZXN0
cmljdCBfX29zcykgOwojIDM1OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3NpZ25hbC5oIiAzCiMgMSAi
L3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lndGhyZWFkLmgiIDEgMwojIDMxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy9zaWd0aHJlYWQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRfc2lnbWFzayAo
aW50IF9faG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBfX3NpZ3NldF90
ICpfX3Jlc3RyaWN0IF9fbmV3bWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fc2ln
c2V0X3QgKl9fcmVzdHJpY3QgX19vbGRtYXNrKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfa2lsbCAo
cHRocmVhZF90IF9fdGhyZWFkLCBpbnQgX19zaWdubykgOwojIDM1OSAiL3Vzci9sb2NhbC9pbmNs
dWRlL3NpZ25hbC5oIiAyIDMKCgoKCgoKZXh0ZXJuIGludCBfX2xpYmNfY3VycmVudF9zaWdydG1p
biAodm9pZCkgOwoKZXh0ZXJuIGludCBfX2xpYmNfY3VycmVudF9zaWdydG1heCAodm9pZCkgOwoj
IDE3ICJCcmVha0Rvd24uYyIgMgoKIyAxICJoZWFkZXJzL2RlZi5oIiAxCiMgMTkgIkJyZWFrRG93
bi5jIiAyCgoKIyAxICJoZWFkZXJzL2xpbnV4ZGVmLmgiIDEKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvcHdkLmgiIDEgMwojIDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvcHdkLmgiIDMKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvbG9jYWwvaW5jbHVkZS9w
d2QuaCIgMiAzCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMg
MzEgIi91c3IvbG9jYWwvaW5jbHVkZS9wd2QuaCIgMiAzCgoKIyAxICIvdXNyL2xvY2FsL2djYy8z
LjAuNC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGRlZi5o
IiAxIDMKIyAzNCAiL3Vzci9sb2NhbC9pbmNsdWRlL3B3ZC5oIiAyIDMKIyA1MCAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3B3ZC5oIiAzCnN0cnVjdCBwYXNzd2QKewogIGNoYXIgKnB3X25hbWU7CiAgY2hh
ciAqcHdfcGFzc3dkOwogIF9fdWlkX3QgcHdfdWlkOwogIF9fZ2lkX3QgcHdfZ2lkOwogIGNoYXIg
KnB3X2dlY29zOwogIGNoYXIgKnB3X2RpcjsKICBjaGFyICpwd19zaGVsbDsKfTsKCgoKCiMgMSAi
L3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDY1ICIvdXNyL2xvY2FsL2luY2x1ZGUv
cHdkLmgiIDIgMwoKCgoKCmV4dGVybiB2b2lkIHNldHB3ZW50ICh2b2lkKSA7CgoKZXh0ZXJuIHZv
aWQgZW5kcHdlbnQgKHZvaWQpIDsKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdlbnQgKHZv
aWQpIDsKCgoKCmV4dGVybiBzdHJ1Y3QgcGFzc3dkICpmZ2V0cHdlbnQgKEZJTEUgKl9fc3RyZWFt
KSA7CgoKZXh0ZXJuIGludCBwdXRwd2VudCAoX19jb25zdCBzdHJ1Y3QgcGFzc3dkICpfX3Jlc3Ry
aWN0IF9fcCwKICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX2YpIDsKCgoK
ZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmdldHB3dWlkIChfX3VpZF90IF9fdWlkKSA7CgoKZXh0ZXJu
IHN0cnVjdCBwYXNzd2QgKmdldHB3bmFtIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwojIDExMSAi
L3Vzci9sb2NhbC9pbmNsdWRlL3B3ZC5oIiAzCmV4dGVybiBpbnQgZ2V0cHdlbnRfciAoc3RydWN0
IHBhc3N3ZCAqX19yZXN0cmljdCBfX3Jlc3VsdGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4g
aW50IGdldHB3dWlkX3IgKF9fdWlkX3QgX191aWQsCiAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHBhc3N3ZCAqX19yZXN0cmljdCBfX3Jlc3VsdGJ1ZiwKICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCmV4dGVy
biBpbnQgZ2V0cHduYW1fciAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICpfX3Jlc3RyaWN0IF9fcmVzdWx0YnVmLAog
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZmZXIsIHNpemVfdCBf
X2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICoqX19yZXN0cmlj
dCBfX3Jlc3VsdCkgOwoKCgoKCmV4dGVybiBpbnQgZmdldHB3ZW50X3IgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKl9fcmVz
dHJpY3QgX19yZXN1bHRidWYsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJp
Y3QgX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKIyAyICJoZWFkZXJzL2xpbnV4ZGVm
LmgiIDIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDI2ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMjcgIi91c3IvbG9jYWwvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgMTI0ICIvdXNy
L2xvY2FsL2luY2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zLjAuNC9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAx
MjUgIi91c3IvbG9jYWwvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgMTQ0ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9wb3NpeDFfbGlt
LmgiIDEgMwojIDEyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAzCiMg
MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDEgMwojIDM2ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9s
aW51eC9saW1pdHMuaCIgMSAzCiMgMzcgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2xvY2FsX2xp
bS5oIiAyIDMKIyAxMjcgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMiAz
CiMgMTQ1ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgojIDEgIi91c3IvbG9j
YWwvaW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMSAzCiMgMTQ5ICIvdXNyL2xvY2FsL2luY2x1
ZGUvbGltaXRzLmgiIDIgMwojIDMgImhlYWRlcnMvbGludXhkZWYuaCIgMgojIDEgIi91c3IvbG9j
YWwvaW5jbHVkZS91bmlzdGQuaCIgMSAzCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQu
aCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9s
b2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyAxNzUgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlz
dGQuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Bvc2l4X29wdC5oIiAxIDMKIyAx
NzYgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMTkwICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy90eXBlcy5oIiAx
IDMKIyAxOTEgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMTk5ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zLjAuNC9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMDAg
Ii91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMjQwICIvdXNyL2xvY2FsL2luY2x1
ZGUvdW5pc3RkLmgiIDMKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwoKCgoKCgp0eXBlZGVm
IF9fc29ja2xlbl90IHNvY2tsZW5fdDsKIyAyNjAgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQu
aCIgMwpleHRlcm4gaW50IGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUp
IDsKIyAyOTAgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19vZmZfdCBs
c2VlayAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgOwojIDMwNiAi
L3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgY2xvc2UgKGludCBfX2Zk
KSA7CgoKCmV4dGVybiBzc2l6ZV90IHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90
IF9fbmJ5dGVzKSA7CgoKZXh0ZXJuIHNzaXplX3Qgd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZv
aWQgKl9fYnVmLCBzaXplX3QgX19uKSA7CiMgMzUzICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIGludCBwaXBlIChpbnQgX19waXBlZGVzWzJdKSA7CiMgMzYyICIvdXNyL2xv
Y2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFybSAodW5zaWdu
ZWQgaW50IF9fc2Vjb25kcykgOwojIDM3MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAz
CmV4dGVybiB1bnNpZ25lZCBpbnQgc2xlZXAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIDsKCgoK
CgoKZXh0ZXJuIF9fdXNlY29uZHNfdCB1YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVlLCBfX3Vz
ZWNvbmRzX3QgX19pbnRlcnZhbCkKICAgICAgICAgICAgOwoKCgpleHRlcm4gaW50IHVzbGVlcCAo
X191c2Vjb25kc190IF9fdXNlY29uZHMpIDsKCgoKCgpleHRlcm4gaW50IHBhdXNlICh2b2lkKSA7
CgoKCmV4dGVybiBpbnQgY2hvd24gKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3VpZF90IF9fb3du
ZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICAgICAgICAgOwoKCgpleHRlcm4gaW50IGZjaG93biAo
aW50IF9fZmQsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKSA7CgoKCgpleHRlcm4g
aW50IGxjaG93biAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19naWRf
dCBfX2dyb3VwKQogICAgICAgICAgICA7CgoKCgpleHRlcm4gaW50IGNoZGlyIChfX2NvbnN0IGNo
YXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gaW50IGZjaGRpciAoaW50IF9fZmQpIDsKIyA0MjMgIi91
c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gY2hhciAqZ2V0Y3dkIChjaGFyICpf
X2J1Ziwgc2l6ZV90IF9fc2l6ZSkgOwojIDQzNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5o
IiAzCmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpIDsKCgoKCmV4dGVybiBpbnQgZHVw
IChpbnQgX19mZCkgOwoKCmV4dGVybiBpbnQgZHVwMiAoaW50IF9fZmQsIGludCBfX2ZkMikgOwoK
CmV4dGVybiBjaGFyICoqX19lbnZpcm9uOwoKCgoKCgoKZXh0ZXJuIGludCBleGVjdmUgKF9fY29u
c3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltdLAogICAgICAgICAgICAgICAg
ICAgY2hhciAqX19jb25zdCBfX2VudnBbXSkgOwojIDQ2NyAiL3Vzci9sb2NhbC9pbmNsdWRlL3Vu
aXN0ZC5oIiAzCmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpf
X2NvbnN0IF9fYXJndltdKSA7CgoKCmV4dGVybiBpbnQgZXhlY2xlIChfX2NvbnN0IGNoYXIgKl9f
cGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY2wgKF9f
Y29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKZXh0ZXJu
IGludCBleGVjdnAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJndltd
KSA7CgoKCgpleHRlcm4gaW50IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3Qg
Y2hhciAqX19hcmcsIC4uLikgOwoKCgoKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIDsKCgoK
CmV4dGVybiB2b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0
dXJuX18pKTsKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEg
MwojIDI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAg
ICBfUENfTElOS19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoK
ICAgIF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoK
ICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJ
U0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklP
X0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTLAoKICAgIF9Q
Q19SRUNfSU5DUl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpFLAoKICAgIF9Q
Q19SRUNfTUlOX1hGRVJfU0laRSwKCiAgICBfUENfUkVDX1hGRVJfQUxJR04sCgogICAgX1BDX0FM
TE9DX1NJWkVfTUlOLAoKICAgIF9QQ19TWU1MSU5LX01BWAoKICB9OwoKCmVudW0KICB7CiAgICBf
U0NfQVJHX01BWCwKCiAgICBfU0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9T
Q19OR1JPVVBTX01BWCwKCiAgICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgog
ICAgX1NDX1RaTkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9J
RFMsCgogICAgX1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJ
TkcsCgogICAgX1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19Q
UklPUklUSVpFRF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywK
CiAgICBfU0NfTUFQUEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NL
X1JBTkdFLAoKICAgIF9TQ19NRU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNT
SU5HLAoKICAgIF9TQ19TRU1BUEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMs
CgogICAgX1NDX0FJT19MSVNUSU9fTUFYLAoKICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9f
UFJJT19ERUxUQV9NQVgsCgogICAgX1NDX0RFTEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVO
X01BWCwKCiAgICBfU0NfTVFfUFJJT19NQVgsCgogICAgX1NDX1ZFUlNJT04sCgogICAgX1NDX1BB
R0VTSVpFLAoKCiAgICBfU0NfUlRTSUdfTUFYLAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoKICAg
IF9TQ19TRU1fVkFMVUVfTUFYLAoKICAgIF9TQ19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVS
X01BWCwKCgoKCiAgICBfU0NfQkNfQkFTRV9NQVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAg
X1NDX0JDX1NDQUxFX01BWCwKCiAgICBfU0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9X
RUlHSFRTX01BWCwKCiAgICBfU0NfRVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1Rf
TUFYLAoKICAgIF9TQ19MSU5FX01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hB
UkNMQVNTX05BTUVfTUFYLAoKCiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwK
CiAgICBfU0NfMl9DX0RFViwKCiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JV
TiwKCiAgICBfU0NfMl9TV19ERVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJ
LAoKICAgIF9TQ19QSUlfWFRJLAoKICAgIF9TQ19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5U
RVJORVQsCgogICAgX1NDX1BJSV9PU0ksCgogICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwK
CiAgICBfU0NfVUlPX01BWElPViwKCiAgICBfU0NfSU9WX01BWCA9IF9TQ19VSU9fTUFYSU9WLAoK
ICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0s
CgogICAgX1NDX1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19Q
SUlfT1NJX00sCgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9T
Q19USFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAg
X1NDX0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19U
VFlfTkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAg
X1NDX1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0Nf
VEhSRUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAg
X1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVE
VUxJTkcsCgogICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklP
X1BST1RFQ1QsCgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9D
RVNTT1JTX0NPTkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFH
RVMsCgogICAgX1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0Nf
UEFTU19NQVgsCgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVS
U0lPTiwKCiAgICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1ND
X1hPUEVOX0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVS
TSwKCiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5f
WFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1ND
X0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1ND
X0lOVF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19X
T1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NT
SVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1ND
X1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9T
Q19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAg
IF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwK
CiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFY
LAoKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcs
CgogICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoK
ICAgIF9TQ19YT1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19Y
T1BFTl9SRUFMVElNRV9USFJFQURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0Nf
QkFSUklFUlMsCgogICAgX1NDX0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9T
Q19DX0xBTkdfU1VQUE9SVF9SLAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQ
VVRJTUUsCgogICAgX1NDX1RIUkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAg
X1NDX0RFVklDRV9TUEVDSUZJQywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1ND
X0ZEX01HTVQsCgogICAgX1NDX0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRU
UklCVVRFUywKCiAgICBfU0NfRklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAg
ICBfU0NfTU9OT1RPTklDX0NMT0NLLAoKICAgIF9TQ19NVUxUSV9QUk9DRVNTLAoKICAgIF9TQ19T
SU5HTEVfUFJPQ0VTUywKCiAgICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVBREVSX1dSSVRF
Ul9MT0NLUywKCiAgICBfU0NfU1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9TQ19S
RUdFWF9WRVJTSU9OLAoKICAgIF9TQ19TSEVMTCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBfU0Nf
U1BBV04sCgogICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JBRElD
X1NFUlZFUiwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFUQUJB
U0VfUiwKCiAgICBfU0NfVElNRU9VVFMsCgogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoK
ICAgIF9TQ19VU0VSX0dST1VQUywKCiAgICBfU0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfMl9Q
QlMsCgogICAgX1NDXzJfUEJTX0FDQ09VTlRJTkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAg
ICBfU0NfMl9QQlNfTUVTU0FHRSwKCiAgICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZTUxP
T1BfTUFYLAoKICAgIF9TQ19TVFJFQU1TLAoKICAgIF9TQ18yX1BCU19DSEVDS1BPSU5ULAoKCiAg
ICBfU0NfVjZfSUxQMzJfT0ZGMzIsCgogICAgX1NDX1Y2X0lMUDMyX09GRkJJRywKCiAgICBfU0Nf
VjZfTFA2NF9PRkY2NCwKCiAgICBfU0NfVjZfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfSE9TVF9O
QU1FX01BWCwKCiAgICBfU0NfVFJBQ0UsCgogICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwKCiAg
ICBfU0NfVFJBQ0VfSU5IRVJJVCwKCiAgICBfU0NfVFJBQ0VfTE9HCgogIH07CgoKCgoKZW51bQog
IHsKICAgIF9DU19QQVRILAojIDU2MyAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvY29uZm5hbWUu
aCIgMwogICAgX0NTX1Y2X1dJRFRIX1JFU1RSSUNURURfRU5WUwoKICB9OwojIDUwMSAiL3Vzci9s
b2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgpleHRlcm4gbG9uZyBpbnQgcGF0aGNvbmYgKF9f
Y29uc3QgY2hhciAqX19wYXRoLCBpbnQgX19uYW1lKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGZwYXRo
Y29uZiAoaW50IF9fZmQsIGludCBfX25hbWUpIDsKCgpleHRlcm4gbG9uZyBpbnQgc3lzY29uZiAo
aW50IF9fbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gc2l6ZV90
IGNvbmZzdHIgKGludCBfX25hbWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCmV4
dGVybiBfX3BpZF90IGdldHBpZCAodm9pZCkgOwoKCmV4dGVybiBfX3BpZF90IGdldHBwaWQgKHZv
aWQpIDsKCgoKCmV4dGVybiBfX3BpZF90IGdldHBncnAgKHZvaWQpIDsKIyA1MzYgIi91c3IvbG9j
YWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19waWRfdCBfX2dldHBnaWQgKF9fcGlkX3Qg
X19waWQpIDsKIyA1NDUgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50
IHNldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKSA7CiMgNTYyICIvdXNyL2xv
Y2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBzZXRwZ3JwICh2b2lkKSA7CiMgNTgw
ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3Qgc2V0c2lkICh2
b2lkKSA7CgoKCgoKCgpleHRlcm4gX191aWRfdCBnZXR1aWQgKHZvaWQpIDsKCgpleHRlcm4gX191
aWRfdCBnZXRldWlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSA7CgoK
ZXh0ZXJuIF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRncm91cHMg
KGludCBfX3NpemUsIF9fZ2lkX3QgX19saXN0W10pIDsKIyA2MTMgIi91c3IvbG9jYWwvaW5jbHVk
ZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHNldHVpZCAoX191aWRfdCBfX3VpZCkgOwoKCgoKZXh0
ZXJuIGludCBzZXRyZXVpZCAoX191aWRfdCBfX3J1aWQsIF9fdWlkX3QgX19ldWlkKSA7CgoKCgpl
eHRlcm4gaW50IHNldGV1aWQgKF9fdWlkX3QgX191aWQpIDsKCgoKCgoKZXh0ZXJuIGludCBzZXRn
aWQgKF9fZ2lkX3QgX19naWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0cmVnaWQgKF9fZ2lkX3QgX19y
Z2lkLCBfX2dpZF90IF9fZWdpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRlZ2lkIChfX2dpZF90IF9f
Z2lkKSA7CgoKCgoKCmV4dGVybiBfX3BpZF90IGZvcmsgKHZvaWQpIDsKCgoKCgoKZXh0ZXJuIF9f
cGlkX3QgdmZvcmsgKHZvaWQpIDsKCgoKCgpleHRlcm4gY2hhciAqdHR5bmFtZSAoaW50IF9fZmQp
IDsKCgoKZXh0ZXJuIGludCB0dHluYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90
IF9fYnVmbGVuKSA7CgoKCmV4dGVybiBpbnQgaXNhdHR5IChpbnQgX19mZCkgOwoKCgoKCmV4dGVy
biBpbnQgdHR5c2xvdCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBsaW5rIChfX2NvbnN0IGNoYXIg
Kl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSA7CgoKCmV4dGVybiBpbnQgc3ltbGluayAoX19j
b25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgOwoKCgoKZXh0ZXJuIGludCBy
ZWFkbGluayAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwgY2hhciAqX19yZXN0cmlj
dCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CgoKCmV4dGVybiBp
bnQgdW5saW5rIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCmV4dGVybiBpbnQgcm1kaXIgKF9f
Y29uc3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAoaW50IF9f
ZmQpIDsKCgpleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9fZmQsIF9fcGlkX3QgX19wZ3JwX2lk
KSA7CgoKCmV4dGVybiBjaGFyICpnZXRsb2dpbiAodm9pZCkgOwojIDcxNyAiL3Vzci9sb2NhbC9p
bmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgc2V0bG9naW4gKF9fY29uc3QgY2hhciAqX19u
YW1lKSA7CiMgNzI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2xv
Y2FsL2luY2x1ZGUvZ2V0b3B0LmgiIDEgMwojIDQ3ICIvdXNyL2xvY2FsL2luY2x1ZGUvZ2V0b3B0
LmgiIDMKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKIyA2MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2dldG9w
dC5oIiAzCmV4dGVybiBpbnQgb3B0aW5kOwoKCgoKZXh0ZXJuIGludCBvcHRlcnI7CgoKCmV4dGVy
biBpbnQgb3B0b3B0OwojIDE0NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVy
biBpbnQgZ2V0b3B0IChpbnQgX19fYXJnYywgY2hhciAqY29uc3QgKl9fX2FyZ3YsIGNvbnN0IGNo
YXIgKl9fc2hvcnRvcHRzKTsKIyA3MjcgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAz
CgoKCgoKCgpleHRlcm4gaW50IGdldGhvc3RuYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xl
bikgOwoKCgoKCgpleHRlcm4gaW50IHNldGhvc3RuYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwg
c2l6ZV90IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgc2V0aG9zdGlkIChsb25nIGludCBfX2lkKSA7
CgoKCgoKZXh0ZXJuIGludCBnZXRkb21haW5uYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xl
bikgOwpleHRlcm4gaW50IHNldGRvbWFpbm5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXpl
X3QgX19sZW4pIDsKCgoKCgpleHRlcm4gaW50IHZoYW5ndXAgKHZvaWQpIDsKCgpleHRlcm4gaW50
IHJldm9rZSAoX19jb25zdCBjaGFyICpfX2ZpbGUpIDsKCgoKCgoKCmV4dGVybiBpbnQgcHJvZmls
ICh1bnNpZ25lZCBzaG9ydCBpbnQgKl9fc2FtcGxlX2J1ZmZlciwgc2l6ZV90IF9fc2l6ZSwKICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfX29mZnNldCwgdW5zaWduZWQgaW50IF9fc2NhbGUpIDsK
CgoKCgpleHRlcm4gaW50IGFjY3QgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCmV4dGVybiBj
aGFyICpnZXR1c2Vyc2hlbGwgKHZvaWQpIDsKZXh0ZXJuIHZvaWQgZW5kdXNlcnNoZWxsICh2b2lk
KSA7CmV4dGVybiB2b2lkIHNldHVzZXJzaGVsbCAodm9pZCkgOwoKCgoKCmV4dGVybiBpbnQgZGFl
bW9uIChpbnQgX19ub2NoZGlyLCBpbnQgX19ub2Nsb3NlKSA7CgoKCgoKCmV4dGVybiBpbnQgY2hy
b290IChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAoX19j
b25zdCBjaGFyICpfX3Byb21wdCkgOwoKCgoKCmV4dGVybiBpbnQgZnN5bmMgKGludCBfX2ZkKSA7
CgoKCgoKCmV4dGVybiBsb25nIGludCBnZXRob3N0aWQgKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBz
eW5jICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHRydW5jYXRlIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgX19vZmZfdCBfX2xlbmd0aCkgOwojIDg0MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3Vu
aXN0ZC5oIiAzCmV4dGVybiBpbnQgZnRydW5jYXRlIChpbnQgX19mZCwgX19vZmZfdCBfX2xlbmd0
aCkgOwojIDg1NyAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZ2V0
ZHRhYmxlc2l6ZSAodm9pZCkgOwojIDg2NiAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAz
CmV4dGVybiBpbnQgYnJrICh2b2lkICpfX2FkZHIpIDsKCgoKCgpleHRlcm4gdm9pZCAqc2JyayAo
aW50cHRyX3QgX19kZWx0YSkgOwojIDg4NyAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAz
CmV4dGVybiBsb25nIGludCBzeXNjYWxsIChsb25nIGludCBfX3N5c25vLCAuLi4pIDsKIyA5MDcg
Ii91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGxvY2tmIChpbnQgX19m
ZCwgaW50IF9fY21kLCBfX29mZl90IF9fbGVuKSA7CiMgOTM4ICIvdXNyL2xvY2FsL2luY2x1ZGUv
dW5pc3RkLmgiIDMKZXh0ZXJuIGludCBmZGF0YXN5bmMgKGludCBfX2ZpbGRlcykgOwojIDk4MyAi
L3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgcHRocmVhZF9hdGZvcmsg
KHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAoKl9fcGFyZW50KSAodm9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpf
X2NoaWxkKSAodm9pZCkpIDsKIyA0ICJoZWFkZXJzL2xpbnV4ZGVmLmgiIDIKIyAxICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDUgImhlYWRlcnMvbGludXhkZWYuaCIgMgoK
IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAxIDMKIyAyMyAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9mZWF0dXJl
cy5oIiAxIDMKIyAyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMiAzCgoKCiMg
MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy91aW8uaCIgMSAzCiMgMjIgIi91c3IvbG9jYWwvaW5j
bHVkZS9zeXMvdWlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAz
CiMgMjMgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdWlvLmgiIDIgMwoKIyAxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3Vp
by5oIiAyIDMKCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdWlvLmgiIDEgMwojIDI0
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy91aW8uaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Vpby5oIiAy
IDMKIyA0MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdWlvLmgiIDMKc3RydWN0IGlvdmVjCiAg
ewogICAgdm9pZCAqaW92X2Jhc2U7CiAgICBzaXplX3QgaW92X2xlbjsKICB9OwojIDMwICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3Vpby5oIiAyIDMKCgoKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWR2
IChpbnQgX19mZCwgX19jb25zdCBzdHJ1Y3QgaW92ZWMgKl9fdmVjdG9yLCBpbnQgX19jb3VudCkK
ICAgICAgICAgICAgOwoKCgoKCgpleHRlcm4gc3NpemVfdCB3cml0ZXYgKGludCBfX2ZkLCBfX2Nv
bnN0IHN0cnVjdCBpb3ZlYyAqX192ZWN0b3IsIGludCBfX2NvdW50KQogICAgICAgICAgICA7CiMg
MjggIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDIgMwoKIyAxICIvdXNyL2xvY2Fs
L2djYy8zLjAuNC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuNC9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMiAzCgoK
CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMSAzCiMgMjkgIi91c3Iv
bG9jYWwvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy4wLjQv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMzAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAyIDMKCiMgMSAiL3Vzci9s
b2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAxNDQgIi91c3IvbG9jYWwvaW5jbHVkZS9saW1p
dHMuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMSAzCiMg
MTQ1ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgojIDEgIi91c3IvbG9jYWwv
aW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMSAzCiMgMTQ5ICIvdXNyL2xvY2FsL2luY2x1ZGUv
bGltaXRzLmgiIDIgMwojIDMyICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAz
CiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAzMyAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDIgMwojIDQxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0
cy9zb2NrZXQuaCIgMwplbnVtIF9fc29ja2V0X3R5cGUKewogIFNPQ0tfU1RSRUFNID0gMSwKCgog
IFNPQ0tfREdSQU0gPSAyLAoKCiAgU09DS19SQVcgPSAzLAoKICBTT0NLX1JETSA9IDQsCgogIFNP
Q0tfU0VRUEFDS0VUID0gNSwKCgogIFNPQ0tfUEFDS0VUID0gMTAKCgoKfTsKIyAxNDIgIi91c3Iv
bG9jYWwvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Jp
dHMvc29ja2FkZHIuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NvY2thZGRy
LmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5X3Q7CiMgMTQzICIvdXNy
L2xvY2FsL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzCgoKc3RydWN0IHNvY2thZGRyCiAgewog
ICAgc2FfZmFtaWx5X3Qgc2FfZmFtaWx5OwogICAgY2hhciBzYV9kYXRhWzE0XTsKICB9OwojIDE2
MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMKc3RydWN0IHNvY2thZGRyX3N0
b3JhZ2UKICB7CiAgICBzYV9mYW1pbHlfdCBzc19mYW1pbHk7CiAgICBfX3VpbnQzMl90IF9fc3Nf
YWxpZ247CiAgICBjaGFyIF9fc3NfcGFkZGluZ1soMTI4IC0gKDIgKiBzaXplb2YgKF9fdWludDMy
X3QpKSldOwogIH07CgoKCmVudW0KICB7CiAgICBNU0dfT09CID0gMHgwMSwKCiAgICBNU0dfUEVF
SyA9IDB4MDIsCgogICAgTVNHX0RPTlRST1VURSA9IDB4MDQsCgoKCgoKCiAgICBNU0dfQ1RSVU5D
ID0gMHgwOCwKCiAgICBNU0dfUFJPWFkgPSAweDEwLAoKICAgIE1TR19UUlVOQyA9IDB4MjAsCgog
ICAgTVNHX0RPTlRXQUlUID0gMHg0MCwKCiAgICBNU0dfRU9SID0gMHg4MCwKCiAgICBNU0dfV0FJ
VEFMTCA9IDB4MTAwLAoKICAgIE1TR19GSU4gPSAweDIwMCwKCiAgICBNU0dfU1lOID0gMHg0MDAs
CgogICAgTVNHX0NPTkZJUk0gPSAweDgwMCwKCiAgICBNU0dfUlNUID0gMHgxMDAwLAoKICAgIE1T
R19FUlJRVUVVRSA9IDB4MjAwMCwKCiAgICBNU0dfTk9TSUdOQUwgPSAweDQwMDAsCgogICAgTVNH
X01PUkUgPSAweDgwMDAKCiAgfTsKCgoKCnN0cnVjdCBtc2doZHIKICB7CiAgICB2b2lkICptc2df
bmFtZTsKICAgIHNvY2tsZW5fdCBtc2dfbmFtZWxlbjsKCiAgICBzdHJ1Y3QgaW92ZWMgKm1zZ19p
b3Y7CiAgICBpbnQgbXNnX2lvdmxlbjsKCiAgICB2b2lkICptc2dfY29udHJvbDsKICAgIHNvY2ts
ZW5fdCBtc2dfY29udHJvbGxlbjsKCiAgICBpbnQgbXNnX2ZsYWdzOwogIH07CgoKc3RydWN0IGNt
c2doZHIKICB7CiAgICBzaXplX3QgY21zZ19sZW47CgogICAgaW50IGNtc2dfbGV2ZWw7CiAgICBp
bnQgY21zZ190eXBlOwoKICAgIF9fZXh0ZW5zaW9uX18gdW5zaWduZWQgY2hhciBfX2Ntc2dfZGF0
YSBbXTsKCiAgfTsKIyAyNTcgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAzCmV4
dGVybiBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnX254dGhkciAoc3RydWN0IG1zZ2hkciAqX19taGRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjbXNnaGRyICpf
X2Ntc2cpIDsKCgoKCmV4dGVybiBfX2lubGluZSBzdHJ1Y3QgY21zZ2hkciAqCl9fY21zZ19ueHRo
ZHIgKHN0cnVjdCBtc2doZHIgKl9fbWhkciwgc3RydWN0IGNtc2doZHIgKl9fY21zZykKewogIGlm
ICgoc2l6ZV90KSBfX2Ntc2ctPmNtc2dfbGVuIDwgc2l6ZW9mIChzdHJ1Y3QgY21zZ2hkcikpCgog
ICAgcmV0dXJuIDA7CgogIF9fY21zZyA9IChzdHJ1Y3QgY21zZ2hkciAqKSAoKHVuc2lnbmVkIGNo
YXIgKikgX19jbXNnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICgoKF9fY21zZy0+
Y21zZ19sZW4pICsgc2l6ZW9mIChzaXplX3QpIC0gMSkgJiAoc2l6ZV90KSB+KHNpemVvZiAoc2l6
ZV90KSAtIDEpKSk7CiAgaWYgKCh1bnNpZ25lZCBjaGFyICopIChfX2Ntc2cgKyAxKSA+ICgodW5z
aWduZWQgY2hhciAqKSBfX21oZHItPm1zZ19jb250cm9sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICArIF9fbWhkci0+bXNnX2NvbnRyb2xsZW4pCiAgICAgIHx8ICgodW5z
aWduZWQgY2hhciAqKSBfX2Ntc2cgKyAoKChfX2Ntc2ctPmNtc2dfbGVuKSArIHNpemVvZiAoc2l6
ZV90KSAtIDEpICYgKHNpemVfdCkgfihzaXplb2YgKHNpemVfdCkgLSAxKSkKICAgICAgICAgID4g
KCh1bnNpZ25lZCBjaGFyICopIF9fbWhkci0+bXNnX2NvbnRyb2wgKyBfX21oZHItPm1zZ19jb250
cm9sbGVuKSkpCgogICAgcmV0dXJuIDA7CiAgcmV0dXJuIF9fY21zZzsKfQoKCgoKZW51bQogIHsK
ICAgIFNDTV9SSUdIVFMgPSAweDAxLAoKCiAgICBTQ01fQ1JFREVOVElBTFMgPSAweDAyLAoKCiAg
ICBfX1NDTV9DT05ORUNUID0gMHgwMwogIH07CgoKCnN0cnVjdCB1Y3JlZAp7CiAgcGlkX3QgcGlk
OwogIHVpZF90IHVpZDsKICBnaWRfdCBnaWQ7Cn07CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUv
YXNtL3NvY2tldC5oIiAxIDMKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYXNtL3NvY2tpb3Mu
aCIgMSAzCiMgNSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMiAzCiMgMzA2ICIv
dXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzCgoKCnN0cnVjdCBsaW5nZXIKICB7
CiAgICBpbnQgbF9vbm9mZjsKICAgIGludCBsX2xpbmdlcjsKICB9OwojIDM2ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvc3lzL3NvY2tldC5oIiAyIDMKCgoKCnN0cnVjdCBvc29ja2FkZHIKICB7CiAgICB1
bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5OwogICAgdW5zaWduZWQgY2hhciBzYV9kYXRhWzE0
XTsKICB9OwoKCgoKZW51bQp7CiAgU0hVVF9SRCA9IDAsCgogIFNIVVRfV1IsCgogIFNIVVRfUkRX
UgoKfTsKIyAxMDAgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDMKZXh0ZXJuIGlu
dCBzb2NrZXQgKGludCBfX2RvbWFpbiwgaW50IF9fdHlwZSwgaW50IF9fcHJvdG9jb2wpIDsKCgoK
CgpleHRlcm4gaW50IHNvY2tldHBhaXIgKGludCBfX2RvbWFpbiwgaW50IF9fdHlwZSwgaW50IF9f
cHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fZmRzWzJdKSA7CgoKZXh0ZXJu
IGludCBiaW5kIChpbnQgX19mZCwgX19jb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiBfX2FkZHIsIHNv
Y2tsZW5fdCBfX2xlbikKICAgICAgICAgICAgOwoKCmV4dGVybiBpbnQgZ2V0c29ja25hbWUgKGlu
dCBfX2ZkLCBzdHJ1Y3Qgc29ja2FkZHIgKl9fcmVzdHJpY3QgX19hZGRyLAogICAgICAgICAgICAg
ICAgICAgICAgICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19sZW4pIDsKCgoKCgpleHRlcm4gaW50
IGNvbm5lY3QgKGludCBfX2ZkLCBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkciAqIF9fYWRkciwgc29j
a2xlbl90IF9fbGVuKQogICAgICAgICAgICA7CgoKCmV4dGVybiBpbnQgZ2V0cGVlcm5hbWUgKGlu
dCBfX2ZkLCBzdHJ1Y3Qgc29ja2FkZHIgKl9fcmVzdHJpY3QgX19hZGRyLAogICAgICAgICAgICAg
ICAgICAgICAgICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19sZW4pIDsKCgoKZXh0ZXJuIHNzaXpl
X3Qgc2VuZCAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sIGludCBf
X2ZsYWdzKQogICAgICAgICAgICA7CgoKCmV4dGVybiBzc2l6ZV90IHJlY3YgKGludCBfX2ZkLCB2
b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwgaW50IF9fZmxhZ3MpCiAgICAgICAgICAgIDsKCgoKZXh0
ZXJuIHNzaXplX3Qgc2VuZHRvIChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90
IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19mbGFncywgX19jb25zdCBzdHJ1Y3Qg
c29ja2FkZHIgKiBfX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90IF9fYWRk
cl9sZW4pIDsKCgoKCgpleHRlcm4gc3NpemVfdCByZWN2ZnJvbSAoaW50IF9fZmQsIHZvaWQgKl9f
cmVzdHJpY3QgX19idWYsIHNpemVfdCBfX24sIGludCBfX2ZsYWdzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHNvY2thZGRyICpfX3Jlc3RyaWN0IF9fYWRkciwgc29ja2xlbl90ICpf
X3Jlc3RyaWN0IF9fYWRkcl9sZW4pCiAgICAgICAgICAgIDsKCgoKCmV4dGVybiBzc2l6ZV90IHNl
bmRtc2cgKGludCBfX2ZkLCBfX2NvbnN0IHN0cnVjdCBtc2doZHIgKl9fbWVzc2FnZSwgaW50IF9f
ZmxhZ3MpCiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIHNzaXplX3QgcmVjdm1zZyAoaW50IF9fZmQs
IHN0cnVjdCBtc2doZHIgKl9fbWVzc2FnZSwgaW50IF9fZmxhZ3MpCiAgICAgICAgICAgIDsKCgoK
CgpleHRlcm4gaW50IGdldHNvY2tvcHQgKGludCBfX2ZkLCBpbnQgX19sZXZlbCwgaW50IF9fb3B0
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX3Jlc3RyaWN0IF9fb3B0dmFsLAog
ICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCAqX19yZXN0cmljdCBfX29wdGxlbikgOwoK
CgoKZXh0ZXJuIGludCBzZXRzb2Nrb3B0IChpbnQgX19mZCwgaW50IF9fbGV2ZWwsIGludCBfX29w
dG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX29wdHZhbCwgc29j
a2xlbl90IF9fb3B0bGVuKSA7CgoKCgoKZXh0ZXJuIGludCBsaXN0ZW4gKGludCBfX2ZkLCBpbnQg
X19uKSA7CgoKCgoKCmV4dGVybiBpbnQgYWNjZXB0IChpbnQgX19mZCwgc3RydWN0IHNvY2thZGRy
ICpfX3Jlc3RyaWN0IF9fYWRkciwKICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCAqX19yZXN0
cmljdCBfX2FkZHJfbGVuKQogICAgICAgICAgICA7CgoKCgoKCgpleHRlcm4gaW50IHNodXRkb3du
IChpbnQgX19mZCwgaW50IF9faG93KSA7CiMgMjEyICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3Nv
Y2tldC5oIiAzCmV4dGVybiBpbnQgaXNmZHR5cGUgKGludCBfX2ZkLCBpbnQgX19mZHR5cGUpIDsK
IyA3ICJoZWFkZXJzL2xpbnV4ZGVmLmgiIDIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5l
dC9pbi5oIiAxIDMKIyAyMiAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQvaW4uaCIgMwojIDEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9sb2NhbC9pbmNs
dWRlL25ldGluZXQvaW4uaCIgMiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGludC5oIiAx
IDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGludC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9p
bmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW50Lmgi
IDIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMwojIDI4ICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3RkaW50LmgiIDIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRz
L3dvcmRzaXplLmgiIDEgMwojIDI5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW50LmgiIDIgMwoj
IDQ5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW50LmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IHVpbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVpbnQxNl90OwoKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdWludDMyX3Q7CgoKCgoKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbG9uZyBpbnQgdWludDY0X3Q7CgoKCgoKCnR5cGVkZWYgc2lnbmVkIGNoYXIgaW50X2xl
YXN0OF90Owp0eXBlZGVmIHNob3J0IGludCBpbnRfbGVhc3QxNl90Owp0eXBlZGVmIGludCBpbnRf
bGVhc3QzMl90OwoKCgpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgbG9uZyBsb25nIGludCBpbnRfbGVh
c3Q2NF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9sZWFzdDhfdDsKdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCBpbnQgdWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVp
bnRfbGVhc3QzMl90OwoKCgpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IGludCB1aW50X2xlYXN0NjRfdDsKCgoKCgoKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfZmFzdDhf
dDsKCgoKCgp0eXBlZGVmIGludCBpbnRfZmFzdDE2X3Q7CnR5cGVkZWYgaW50IGludF9mYXN0MzJf
dDsKX19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgaW50X2Zhc3Q2NF90OwoKCgp0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9mYXN0OF90OwoKCgoKCnR5cGVkZWYgdW5zaWduZWQg
aW50IHVpbnRfZmFzdDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRfZmFzdDMyX3Q7Cl9f
ZXh0ZW5zaW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRfZmFzdDY0X3Q7
CiMgMTI5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW50LmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgdWludHB0cl90OwojIDEzOCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGludC5oIiAzCl9fZXh0
ZW5zaW9uX18KdHlwZWRlZiBsb25nIGxvbmcgaW50IGludG1heF90OwpfX2V4dGVuc2lvbl9fCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50bWF4X3Q7CiMgMjQgIi91c3IvbG9jYWwv
aW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDEgMwojIDI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMKCgoK
CgplbnVtCiAgewogICAgSVBQUk9UT19JUCA9IDAsCgogICAgSVBQUk9UT19IT1BPUFRTID0gMCwK
CiAgICBJUFBST1RPX0lDTVAgPSAxLAoKICAgIElQUFJPVE9fSUdNUCA9IDIsCgogICAgSVBQUk9U
T19JUElQID0gNCwKCiAgICBJUFBST1RPX1RDUCA9IDYsCgogICAgSVBQUk9UT19FR1AgPSA4LAoK
ICAgIElQUFJPVE9fUFVQID0gMTIsCgogICAgSVBQUk9UT19VRFAgPSAxNywKCiAgICBJUFBST1RP
X0lEUCA9IDIyLAoKICAgIElQUFJPVE9fVFAgPSAyOSwKCiAgICBJUFBST1RPX0lQVjYgPSA0MSwK
CiAgICBJUFBST1RPX1JPVVRJTkcgPSA0MywKCiAgICBJUFBST1RPX0ZSQUdNRU5UID0gNDQsCgog
ICAgSVBQUk9UT19SU1ZQID0gNDYsCgogICAgSVBQUk9UT19HUkUgPSA0NywKCiAgICBJUFBST1RP
X0VTUCA9IDUwLAoKICAgIElQUFJPVE9fQUggPSA1MSwKCiAgICBJUFBST1RPX0lDTVBWNiA9IDU4
LAoKICAgIElQUFJPVE9fTk9ORSA9IDU5LAoKICAgIElQUFJPVE9fRFNUT1BUUyA9IDYwLAoKICAg
IElQUFJPVE9fTVRQID0gOTIsCgogICAgSVBQUk9UT19FTkNBUCA9IDk4LAoKICAgIElQUFJPVE9f
UElNID0gMTAzLAoKICAgIElQUFJPVE9fQ09NUCA9IDEwOCwKCiAgICBJUFBST1RPX1JBVyA9IDI1
NSwKCiAgICBJUFBST1RPX01BWAogIH07CgoKCnR5cGVkZWYgdWludDE2X3QgaW5fcG9ydF90OwoK
CmVudW0KICB7CiAgICBJUFBPUlRfRUNITyA9IDcsCiAgICBJUFBPUlRfRElTQ0FSRCA9IDksCiAg
ICBJUFBPUlRfU1lTVEFUID0gMTEsCiAgICBJUFBPUlRfREFZVElNRSA9IDEzLAogICAgSVBQT1JU
X05FVFNUQVQgPSAxNSwKICAgIElQUE9SVF9GVFAgPSAyMSwKICAgIElQUE9SVF9URUxORVQgPSAy
MywKICAgIElQUE9SVF9TTVRQID0gMjUsCiAgICBJUFBPUlRfVElNRVNFUlZFUiA9IDM3LAogICAg
SVBQT1JUX05BTUVTRVJWRVIgPSA0MiwKICAgIElQUE9SVF9XSE9JUyA9IDQzLAogICAgSVBQT1JU
X01UUCA9IDU3LAoKICAgIElQUE9SVF9URlRQID0gNjksCiAgICBJUFBPUlRfUkpFID0gNzcsCiAg
ICBJUFBPUlRfRklOR0VSID0gNzksCiAgICBJUFBPUlRfVFRZTElOSyA9IDg3LAogICAgSVBQT1JU
X1NVUERVUCA9IDk1LAoKCiAgICBJUFBPUlRfRVhFQ1NFUlZFUiA9IDUxMiwKICAgIElQUE9SVF9M
T0dJTlNFUlZFUiA9IDUxMywKICAgIElQUE9SVF9DTURTRVJWRVIgPSA1MTQsCiAgICBJUFBPUlRf
RUZTU0VSVkVSID0gNTIwLAoKCiAgICBJUFBPUlRfQklGRlVEUCA9IDUxMiwKICAgIElQUE9SVF9X
SE9TRVJWRVIgPSA1MTMsCiAgICBJUFBPUlRfUk9VVEVTRVJWRVIgPSA1MjAsCgoKICAgIElQUE9S
VF9SRVNFUlZFRCA9IDEwMjQsCgoKICAgIElQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCiAgfTsK
CgoKdHlwZWRlZiB1aW50MzJfdCBpbl9hZGRyX3Q7CnN0cnVjdCBpbl9hZGRyCiAgewogICAgaW5f
YWRkcl90IHNfYWRkcjsKICB9OwojIDE5MCAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQvaW4u
aCIgMwpzdHJ1Y3QgaW42X2FkZHIKICB7CiAgICB1bmlvbgogICAgICB7CiAgICAgICAgdWludDhf
dCB1Nl9hZGRyOFsxNl07CiAgICAgICAgdWludDE2X3QgdTZfYWRkcjE2WzhdOwogICAgICAgIHVp
bnQzMl90IHU2X2FkZHIzMls0XTsKICAgICAgfSBpbjZfdTsKCgoKICB9OwoKZXh0ZXJuIGNvbnN0
IHN0cnVjdCBpbjZfYWRkciBpbjZhZGRyX2FueTsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbjZfYWRk
ciBpbjZhZGRyX2xvb3BiYWNrOwoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9z
b2NrZXQuaCIgMSAzCiMgMjEzICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMK
CgoKc3RydWN0IHNvY2thZGRyX2luCiAgewogICAgc2FfZmFtaWx5X3Qgc2luX2ZhbWlseTsKICAg
IGluX3BvcnRfdCBzaW5fcG9ydDsKICAgIHN0cnVjdCBpbl9hZGRyIHNpbl9hZGRyOwoKCiAgICB1
bnNpZ25lZCBjaGFyIHNpbl96ZXJvW3NpemVvZiAoc3RydWN0IHNvY2thZGRyKSAtCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzaXplb2YgKHVuc2lnbmVkIHNob3J0IGludCkpIC0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChpbl9wb3J0X3QpIC0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZW9mIChzdHJ1Y3QgaW5fYWRkcildOwogIH07CgoKc3RydWN0IHNvY2th
ZGRyX2luNgogIHsKICAgIHNhX2ZhbWlseV90IHNpbjZfZmFtaWx5OwogICAgaW5fcG9ydF90IHNp
bjZfcG9ydDsKICAgIHVpbnQzMl90IHNpbjZfZmxvd2luZm87CiAgICBzdHJ1Y3QgaW42X2FkZHIg
c2luNl9hZGRyOwogICAgdWludDMyX3Qgc2luNl9zY29wZV9pZDsKICB9OwoKCnN0cnVjdCBpcHY2
X21yZXEKICB7CgogICAgc3RydWN0IGluNl9hZGRyIGlwdjZtcl9tdWx0aWFkZHI7CgoKICAgIHVu
c2lnbmVkIGludCBpcHY2bXJfaW50ZXJmYWNlOwogIH07CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy9pbi5oIiAxIDMKIyA2NiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvaW4uaCIgMwpz
dHJ1Y3QgaXBfb3B0cwogIHsKICAgIHN0cnVjdCBpbl9hZGRyIGlwX2RzdDsKICAgIGNoYXIgaXBf
b3B0c1s0MF07CiAgfTsKCgpzdHJ1Y3QgaXBfbXJlcQogIHsKICAgIHN0cnVjdCBpbl9hZGRyIGlt
cl9tdWx0aWFkZHI7CiAgICBzdHJ1Y3QgaW5fYWRkciBpbXJfaW50ZXJmYWNlOwogIH07CgoKc3Ry
dWN0IGlwX21yZXFuCiAgewogICAgc3RydWN0IGluX2FkZHIgaW1yX211bHRpYWRkcjsKICAgIHN0
cnVjdCBpbl9hZGRyIGltcl9hZGRyZXNzOwogICAgaW50IGltcl9pZmluZGV4OwogIH07CgoKc3Ry
dWN0IGluX3BrdGluZm8KICB7CiAgICBpbnQgaXBpX2lmaW5kZXg7CiAgICBzdHJ1Y3QgaW5fYWRk
ciBpcGlfc3BlY19kc3Q7CiAgICBzdHJ1Y3QgaW5fYWRkciBpcGlfYWRkcjsKICB9OwojIDI1MSAi
L3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQvaW4uaCIgMiAzCiMgMjU5ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvbmV0aW5ldC9pbi5oIiAzCmV4dGVybiB1aW50MzJfdCBudG9obCAodWludDMyX3QgX19u
ZXRsb25nKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiB1aW50MTZfdCBudG9o
cyAodWludDE2X3QgX19uZXRzaG9ydCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKZXh0ZXJuIHVpbnQzMl90IGh0b25sICh1aW50MzJfdCBfX2hvc3Rsb25nKQogICAg
ICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gdWludDE2X3QgaHRv
bnMgKHVpbnQxNl90IF9faG9zdHNob3J0KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDI2OCAi
L3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQvaW4uaCIgMiAzCgoKIyAxICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAxIDMKIyAyNzEgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRp
bmV0L2luLmgiIDIgMwojIDMzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQvaW4uaCIgMwpl
eHRlcm4gaW50IGJpbmRyZXN2cG9ydCAoaW50IF9fc29ja2ZkLCBzdHJ1Y3Qgc29ja2FkZHJfaW4g
Kl9fc29ja19pbikgOwoKCmV4dGVybiBpbnQgYmluZHJlc3Zwb3J0NiAoaW50IF9fc29ja2ZkLCBz
dHJ1Y3Qgc29ja2FkZHJfaW42ICpfX3NvY2tfaW4pCiAgICAgICAgICAgIDsKIyAzNjEgIi91c3Iv
bG9jYWwvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMKc3RydWN0IGluNl9wa3RpbmZvCiAgewogICAg
c3RydWN0IGluNl9hZGRyIGlwaTZfYWRkcjsKICAgIHVuc2lnbmVkIGludCBpcGk2X2lmaW5kZXg7
CiAgfTsKIyA4ICJoZWFkZXJzL2xpbnV4ZGVmLmgiIDIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUv
YXJwYS9pbmV0LmgiIDEgMwojIDIyICIvdXNyL2xvY2FsL2luY2x1ZGUvYXJwYS9pbmV0LmgiIDMK
IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjMgIi91c3IvbG9jYWwv
aW5jbHVkZS9hcnBhL2luZXQuaCIgMiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQv
aW4uaCIgMSAzCiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9hcnBhL2luZXQuaCIgMiAzCiMgMzUg
Ii91c3IvbG9jYWwvaW5jbHVkZS9hcnBhL2luZXQuaCIgMwpleHRlcm4gaW5fYWRkcl90IGluZXRf
YWRkciAoX19jb25zdCBjaGFyICpfX2NwKSA7CgoKZXh0ZXJuIGluX2FkZHJfdCBpbmV0X2xuYW9m
IChzdHJ1Y3QgaW5fYWRkciBfX2luKSA7CgoKCmV4dGVybiBzdHJ1Y3QgaW5fYWRkciBpbmV0X21h
a2VhZGRyIChpbl9hZGRyX3QgX19uZXQsIGluX2FkZHJfdCBfX2hvc3QpCiAgICAgICAgICAgIDsK
CgpleHRlcm4gaW5fYWRkcl90IGluZXRfbmV0b2YgKHN0cnVjdCBpbl9hZGRyIF9faW4pIDsKCgoK
ZXh0ZXJuIGluX2FkZHJfdCBpbmV0X25ldHdvcmsgKF9fY29uc3QgY2hhciAqX19jcCkgOwoKCgpl
eHRlcm4gY2hhciAqaW5ldF9udG9hIChzdHJ1Y3QgaW5fYWRkciBfX2luKSA7CgoKCgpleHRlcm4g
aW50IGluZXRfcHRvbiAoaW50IF9fYWYsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2NwLAog
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKZXh0ZXJu
IF9fY29uc3QgY2hhciAqaW5ldF9udG9wIChpbnQgX19hZiwgX19jb25zdCB2b2lkICpfX3Jlc3Ry
aWN0IF9fY3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmlj
dCBfX2J1Ziwgc29ja2xlbl90IF9fbGVuKQogICAgICAgICAgICA7CgoKCgoKCmV4dGVybiBpbl9h
ZGRyX3QgaW5ldF9hdG9uIChfX2NvbnN0IGNoYXIgKl9fY3AsIHN0cnVjdCBpbl9hZGRyICpfX2lu
cCkgOwoKCgpleHRlcm4gY2hhciAqaW5ldF9uZXRhIChpbl9hZGRyX3QgX19uZXQsIGNoYXIgKl9f
YnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCmV4dGVybiBjaGFyICppbmV0X25ldF9udG9wIChpbnQg
X19hZiwgX19jb25zdCB2b2lkICpfX2NwLCBpbnQgX19iaXRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgOwoKCgoKZXh0ZXJuIGludCBpbmV0
X25ldF9wdG9uIChpbnQgX19hZiwgX19jb25zdCBjaGFyICpfX2NwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKl9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCmV4dGVybiB1bnNpZ25l
ZCBpbnQgaW5ldF9uc2FwX2FkZHIgKF9fY29uc3QgY2hhciAqX19jcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX19idWYsIGludCBfX2xlbikgOwoK
CgpleHRlcm4gY2hhciAqaW5ldF9uc2FwX250b2EgKGludCBfX2xlbiwgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICpfX2NwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fYnVmKSA7
CiMgOSAiaGVhZGVycy9saW51eGRlZi5oIiAyCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9mY250
bC5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2ZjbnRsLmgiIDMKIyAxICIvdXNyL2xv
Y2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvbG9jYWwvaW5jbHVkZS9mY250
bC5oIiAyIDMKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9mY250bC5oIiAxIDMK
IyAyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMwojIDEgIi91c3IvbG9jYWwv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2Zj
bnRsLmgiIDIgMwojIDEzNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMwpzdHJ1
Y3QgZmxvY2sKICB7CiAgICBzaG9ydCBpbnQgbF90eXBlOwogICAgc2hvcnQgaW50IGxfd2hlbmNl
OwoKICAgIF9fb2ZmX3QgbF9zdGFydDsKICAgIF9fb2ZmX3QgbF9sZW47CgoKCgogICAgX19waWRf
dCBsX3BpZDsKICB9OwojIDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvZmNudGwuaCIgMiAzCiMgNjAg
Ii91c3IvbG9jYWwvaW5jbHVkZS9mY250bC5oIiAzCmV4dGVybiBpbnQgZmNudGwgKGludCBfX2Zk
LCBpbnQgX19jbWQsIC4uLikgOwoKCgoKCmV4dGVybiBpbnQgb3BlbiAoX19jb25zdCBjaGFyICpf
X2ZpbGUsIGludCBfX29mbGFnLCAuLi4pIDsKIyA4MyAiL3Vzci9sb2NhbC9pbmNsdWRlL2ZjbnRs
LmgiIDMKZXh0ZXJuIGludCBjcmVhdCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9f
bW9kZSkgOwojIDExICJoZWFkZXJzL2xpbnV4ZGVmLmgiIDIKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvc3lzL2ZpbGUuaCIgMSAzCiMgMjIgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvZmlsZS5oIiAz
CiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2xvY2Fs
L2luY2x1ZGUvc3lzL2ZpbGUuaCIgMiAzCiMgNTEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvZmls
ZS5oIiAzCmV4dGVybiBpbnQgZmxvY2sgKGludCBfX2ZkLCBpbnQgX19vcGVyYXRpb24pIDsKIyAx
MiAiaGVhZGVycy9saW51eGRlZi5oIiAyCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9pb2N0
bC5oIiAxIDMKIyAyMiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9pb2N0bC5oIiAzCiMgMSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3lzL2lvY3RsLmgiIDIgMwoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9pb2N0bHMu
aCIgMSAzCiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2lvY3Rscy5oIiAzCiMgMSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2FzbS9pb2N0bHMuaCIgMSAzCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNs
dWRlL2FzbS9pb2N0bC5oIiAxIDMKIyA1ICIvdXNyL2xvY2FsL2luY2x1ZGUvYXNtL2lvY3Rscy5o
IiAyIDMKIyAyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvaW9jdGxzLmgiIDIgMwojIDI4ICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNs
dWRlL2JpdHMvaW9jdGwtdHlwZXMuaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRz
L2lvY3RsLXR5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYXNtL2lvY3Rscy5oIiAx
IDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvaW9jdGwtdHlwZXMuaCIgMiAzCgoKc3Ry
dWN0IHdpbnNpemUKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgd3Nfcm93OwogICAgdW5zaWdu
ZWQgc2hvcnQgaW50IHdzX2NvbDsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c194cGl4ZWw7CiAg
ICB1bnNpZ25lZCBzaG9ydCBpbnQgd3NfeXBpeGVsOwogIH07CgoKc3RydWN0IHRlcm1pbwogIHsK
ICAgIHVuc2lnbmVkIHNob3J0IGludCBjX2lmbGFnOwogICAgdW5zaWduZWQgc2hvcnQgaW50IGNf
b2ZsYWc7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgY19jZmxhZzsKICAgIHVuc2lnbmVkIHNob3J0
IGludCBjX2xmbGFnOwogICAgdW5zaWduZWQgY2hhciBjX2xpbmU7CiAgICB1bnNpZ25lZCBjaGFy
IGNfY2NbOF07Cn07CiMgMzEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvaW9jdGwuaCIgMiAzCgoK
CgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90dHlkZWZhdWx0cy5oIiAxIDMKIyAzOCAi
L3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9pb2N0bC5oIiAyIDMKCgoKCmV4dGVybiBpbnQgaW9jdGwg
KGludCBfX2ZkLCB1bnNpZ25lZCBsb25nIGludCBfX3JlcXVlc3QsIC4uLikgOwojIDEzICJoZWFk
ZXJzL2xpbnV4ZGVmLmgiIDIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3RpbWUuaCIgMSAz
CiMgMjIgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdGltZS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9p
bmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3RpbWUu
aCIgMiAzCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI1ICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgojIDEgIi91c3IvbG9jYWwvaW5jbHVk
ZS90aW1lLmgiIDEgMwojIDI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoj
IDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwv
aW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxl
Y3QuaCIgMSAzCiMgMzEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKIyA1NiAi
L3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90aW1lLmgiIDMKc3RydWN0IHRpbWV6b25lCiAgewogICAg
aW50IHR6X21pbnV0ZXN3ZXN0OwogICAgaW50IHR6X2RzdHRpbWU7CiAgfTsKCnR5cGVkZWYgc3Ry
dWN0IHRpbWV6b25lICpfX3Jlc3RyaWN0IF9fdGltZXpvbmVfcHRyX3Q7CiMgNzIgIi91c3IvbG9j
YWwvaW5jbHVkZS9zeXMvdGltZS5oIiAzCmV4dGVybiBpbnQgZ2V0dGltZW9mZGF5IChzdHJ1Y3Qg
dGltZXZhbCAqX19yZXN0cmljdCBfX3R2LAogICAgICAgICAgICAgICAgICAgICAgICAgX190aW1l
em9uZV9wdHJfdCBfX3R6KSA7CgoKCgpleHRlcm4gaW50IHNldHRpbWVvZmRheSAoX19jb25zdCBz
dHJ1Y3QgdGltZXZhbCAqX190diwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3Ry
dWN0IHRpbWV6b25lICpfX3R6KSA7CgoKCgoKZXh0ZXJuIGludCBhZGp0aW1lIChfX2NvbnN0IHN0
cnVjdCB0aW1ldmFsICpfX2RlbHRhLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFs
ICpfX29sZGRlbHRhKSA7CgoKCgplbnVtIF9faXRpbWVyX3doaWNoCiAgewoKICAgIElUSU1FUl9S
RUFMID0gMCwKCgogICAgSVRJTUVSX1ZJUlRVQUwgPSAxLAoKCgogICAgSVRJTUVSX1BST0YgPSAy
CgogIH07CgoKCnN0cnVjdCBpdGltZXJ2YWwKICB7CgogICAgc3RydWN0IHRpbWV2YWwgaXRfaW50
ZXJ2YWw7CgogICAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7CiAgfTsKCgoKCgoKdHlwZWRlZiBp
bnQgX19pdGltZXJfd2hpY2hfdDsKCgoKCmV4dGVybiBpbnQgZ2V0aXRpbWVyIChfX2l0aW1lcl93
aGljaF90IF9fd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVydmFsICpf
X3ZhbHVlKSA7CgoKCgpleHRlcm4gaW50IHNldGl0aW1lciAoX19pdGltZXJfd2hpY2hfdCBfX3do
aWNoLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgaXRpbWVydmFsICpfX3Jl
c3RyaWN0IF9fbmV3LAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl0aW1lcnZhbCAqX19y
ZXN0cmljdCBfX29sZCkgOwoKCgpleHRlcm4gaW50IHV0aW1lcyAoX19jb25zdCBjaGFyICpfX2Zp
bGUsIF9fY29uc3Qgc3RydWN0IHRpbWV2YWwgX190dnBbMl0pCiAgICAgICAgICAgIDsKIyAxNCAi
aGVhZGVycy9saW51eGRlZi5oIiAyCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc2hhZG93Lmgi
IDEgMwojIDI0ICIvdXNyL2xvY2FsL2luY2x1ZGUvc2hhZG93LmgiIDMKIyAxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwvaW5jbHVkZS9zaGFkb3cu
aCIgMiAzCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9wYXRocy5oIiAxIDMKIyAyNyAiL3Vzci9s
b2NhbC9pbmNsdWRlL3NoYWRvdy5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRp
by5oIiAxIDMKIyAzMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3NoYWRvdy5oIiAyIDMKCiMgMSAiL3Vz
ci9sb2NhbC9nY2MvMy4wLjQvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjQvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCiMgMzIgIi91c3IvbG9jYWwvaW5jbHVkZS9zaGFkb3cuaCIgMiAz
CiMgNDAgIi91c3IvbG9jYWwvaW5jbHVkZS9zaGFkb3cuaCIgMwpzdHJ1Y3Qgc3B3ZAogIHsKICAg
IGNoYXIgKnNwX25hbXA7CiAgICBjaGFyICpzcF9wd2RwOwogICAgbG9uZyBpbnQgc3BfbHN0Y2hn
OwogICAgbG9uZyBpbnQgc3BfbWluOwogICAgbG9uZyBpbnQgc3BfbWF4OwogICAgbG9uZyBpbnQg
c3Bfd2FybjsKCiAgICBsb25nIGludCBzcF9pbmFjdDsKCiAgICBsb25nIGludCBzcF9leHBpcmU7
CgogICAgdW5zaWduZWQgbG9uZyBpbnQgc3BfZmxhZzsKICB9OwoKCgpleHRlcm4gdm9pZCBzZXRz
cGVudCAodm9pZCkgOwoKCmV4dGVybiB2b2lkIGVuZHNwZW50ICh2b2lkKSA7CgoKZXh0ZXJuIHN0
cnVjdCBzcHdkICpnZXRzcGVudCAodm9pZCkgOwoKCmV4dGVybiBzdHJ1Y3Qgc3B3ZCAqZ2V0c3Bu
YW0gKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKZXh0ZXJuIHN0cnVjdCBzcHdkICpzZ2V0c3Bl
bnQgKF9fY29uc3QgY2hhciAqX19zdHJpbmcpIDsKCgpleHRlcm4gc3RydWN0IHNwd2QgKmZnZXRz
cGVudCAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IHB1dHNwZW50IChfX2NvbnN0IHN0
cnVjdCBzcHdkICpfX3AsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGdldHNwZW50
X3IgKHN0cnVjdCBzcHdkICpfX3Jlc3VsdF9idWYsIGNoYXIgKl9fYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX2J1Zmxlbiwgc3RydWN0IHNwd2QgKipfX3Jlc3VsdCkgOwoK
ZXh0ZXJuIGludCBnZXRzcG5hbV9yIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc3RydWN0IHNwd2Qg
Kl9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX2J1ZmZlciwgc2l6
ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzcHdkICoqX19yZXN1
bHQpOwoKZXh0ZXJuIGludCBzZ2V0c3BlbnRfciAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc3Ry
dWN0IHNwd2QgKl9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19i
dWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNw
d2QgKipfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBmZ2V0c3BlbnRfciAoRklMRSAqX19zdHJlYW0s
IHN0cnVjdCBzcHdkICpfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
Kl9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBzcHdkICoqX19yZXN1bHQpIDsKCgoKZXh0ZXJuIGludCBsY2twd2RmICh2b2lkKSA7CgoKZXh0
ZXJuIGludCB1bGNrcHdkZiAodm9pZCkgOwojIDE3ICJoZWFkZXJzL2xpbnV4ZGVmLmgiIDIKCgoK
CgpjaGFyICpjcnlwdCAoKTsKCnVpZF90IGdldHVpZCAoKTsKIyAyMiAiQnJlYWtEb3duLmMiIDIK
CgoKCgoKIyAxICJoZWFkZXJzL2dsb2JhbHZhcnMuaCIgMQoKaW50IHNob3dudW07CmNoYXIgZ2Vu
ZXJhdGUgPSAwOwoKY2hhciBjcmFjayA9IDA7CmNoYXIgZGlzdHJpYnV0ZWQgPSAwOwpjaGFyIHN0
YXJ0ZGlzdHJpYnV0ZWQgPSAwOwpjaGFyIHN0YW5kYWxvbmUgPSAwOwpjaGFyIHJlc3VtZSA9IDA7
CmNoYXIgYW55YXR0YWNrID0gMDsKY2hhciBkaWN0YXR0YWNrID0gMDsKY2hhciBicnV0ZWZvcmNl
ID0gMDsKY2hhciBnZXRjdXN0b21maWxlID0gMDsKY2hhciBnZXRwYXNzd2RmaWxlID0gMDsKY2hh
ciBnZXRzaGFkb3dmaWxlID0gMDsKY2hhciBzcGVjaWZ5c2hhZG93ZmlsZSA9IDA7CmNoYXIgcGFy
c2VhbGwgPSAwOwpjaGFyIGdldHVzZXJzID0gMDsKY2hhciBsb2djcmFja2VkdG9maWxlID0gMDsK
Y2hhciBsb2djcmFja2VkdG9zY3JlZW4gPSAwOwpjaGFyIHdyaXRlZ2VudG9maWxlID0gMDsKY2hh
ciBwcmludGdlbnRvc2NyZWVuID0gMDsKY2hhciB3cml0ZWFueXRvZmlsZSA9IDA7CgpjaGFyIHJ1
bmRpY3RhdHRhY2sgPSAwOwpjaGFyIHJ1bmJydXRlZm9yY2UgPSAwOwpjaGFyIHN0YXJ0YnJ1dGVm
b3JjZSA9IDA7CmNoYXIgY3JhY2tpbmdoYXNzdGFydGVkID0gMDsKCmNoYXIgdXNlZHN0YXRpY3Bh
ZGRyZXNzID0gMDsKY2hhciB1c2Vkc3RhdGljZGFkZHJlc3MgPSAwOwpjaGFyIG1vcmV0aGFub25l
cGFzc3dvcmQgPSAwOwpjaGFyIG1vcmV0aGFub25lZHdvcmQgPSAwOwoKaW50IG1pbmxlbmd0aCA9
IDA7CmludCBtYXhsZW5ndGggPSAwOwoKaW50IFNMVkw9MDsKaW50IG15dWlkPS0xOwoKY2hhciBz
ZXNzaW9uWzI1Nl0gPSAiXDAiOwpjaGFyIGluZmlsZW5hbWVbMjU2XSA9ICJcMCI7CmNoYXIgb3V0
ZmlsZW5hbWVbMjU2XSA9ICJcMCI7CmNoYXIgZGljdGluZmlsZW5hbWVbMjU2XSA9ICJcMCI7CmNo
YXIgY3JhY2tlZGxvZ1syNTZdID0gIlwwIjsKY2hhciBsYXN0d29yZHRlc3RlZFsyNTZdID0gIlww
IjsKCmNoYXIgdGVzdHBhc3NbMTYzODRdID0gIlwwIjsKY2hhciBwYXJzZWZpbGVbMjU2XSA9ICJc
MCI7CgplbnVtIHN0YXR1cyB7aWdub3JlID0gLTEsIHVuY3JhY2tlZCA9IDAsIHBlbmRpbmcgPSAx
LCBjcmFja2VkID0gMn07CgppbnQgZF9sZW5ndGggPSAwOwppbnQgZF9ibG9ja19zaXplID0gMDsK
aW50IGRfYmxvY2tfbnVtID0gMDsKY2hhciBzZXJ2ZXJfaXBbMTZdOwppbnQgc2VydmVyX3BvcnQg
PSAzMTEyMzsKaW50IGNsaWVudFNvY2s9MDsKIyAyOSAiQnJlYWtEb3duLmMiIDIKIyAxICJoZWFk
ZXJzL3N0cnVjdHMuaCIgMQp0eXBlZGVmIHN0cnVjdCBzdG9yZXB3CnsKICAgICAgICBzdHJ1Y3Qg
c3RvcmVwdyAqcHJldjsKICAgICAgICBjaGFyIGluZm9bODE5M107CiAgICAgICAgY2hhciBob3N0
bmFtZVs1MTNdOwogICAgICAgIGNoYXIgdXNlcm5hbWVbMTI4XTsKICAgICAgICBjaGFyIHN0b3Jl
ZHB3b3JkWzI1N107CiAgICAgICAgY2hhciBjcmFja2VkcHdvcmRbMjU3XTsKICAgICAgICBpbnQg
cHJpb3JpdHk7CiAgICAgICAgaW50IHNlY2x2bDsKICAgICAgICBpbnQgbWluLCBtYXg7CiAgICAg
ICAgaW50IHRvdGFsYmxvY2tzOwogICAgICAgIGludCBjdXJyZW50bGV2ZWw7CiAgICAgICAgaW50
IG5leHRibG9jazsKICAgICAgICBlbnVtIHN0YXR1cyBzdGF0dXNhcnJheVsyNTVdOwogICAgICAg
IGNoYXIgZGlzdHJpYnN0YXJ0WzEyOF07CiAgICAgICAgY2hhciBkaXN0cmliZW5kWzEyOF07CiAg
ICAgICAgc3RydWN0IHN0b3JlcHcgKm5leHQ7Cn1zdG9yZXB3X3Q7CgpzdG9yZXB3X3QgcHdsaXN0
OwpzdGF0aWMgY29uc3Qgc3RvcmVwd190ICpwaGVhZCA9ICZwd2xpc3Q7CnN0b3JlcHdfdCAqcGN1
cnI7CnN0b3JlcHdfdCAqY3JhY2tlZF9hZGRyZXNzOwpzdG9yZXB3X3QgKnB0ZW1wOwoKc3RvcmVw
d190IGRpc3RyaWJfcHdsaXN0OwpzdGF0aWMgY29uc3Qgc3RvcmVwd190ICpoX2Rpc3RyaWJfcHds
aXN0ID0gJmRpc3RyaWJfcHdsaXN0OwoKdHlwZWRlZiBzdHJ1Y3QgRGljdGlvbmFyeQp7CiAgICAg
ICAgc3RydWN0IERpY3Rpb25hcnkgKnByZXY7CiAgICAgICAgY2hhciB0ZXN0ZHdvcmRbMjU3XTsK
ICAgICAgICBzdHJ1Y3QgRGljdGlvbmFyeSAqbmV4dDsKfWRpY3RfdDsKCmRpY3RfdCBteWRpY3Q7
CnN0YXRpYyBjb25zdCBkaWN0X3QgKmRoZWFkID0gJm15ZGljdDsKZGljdF90ICpkY3VycjsKZGlj
dF90ICpkdGVtcDsKIyAzMCAiQnJlYWtEb3duLmMiIDIKIyAxICJoZWFkZXJzL3Byb3RvLmgiIDEK
aW50IGNoZWNrZm9yYWxsY3JhY2tlZCgpOwp2b2lkIHBhcnNlcHdvcmRzIChjaGFyIGlucGZpbGVb
MjU3XSk7CnZvaWQgcGFyc2Vkd29yZHMgKGNoYXIgaW5kZmlsZVsyNTddKTsKdm9pZCBhZGRwdyAo
Y2hhciBwYXNzd29yZHRvYWRkWzI1Nl0pOwp2b2lkIGFkZGR3IChjaGFyIGR3b3JkdG9hZGRbMjU2
XSk7CnN0b3JlcHdfdCogTXlBbGxvY2F0ZSAoKTsKZGljdF90KiBNeUR3b3JkQWxsb2NhdGUgKCk7
CnZvaWQgc29ydHJhbmdlIChjaGFyIHJhbmdlWzE1XSk7CnZvaWQgc2hpZnRyaWdodCAodW5zaWdu
ZWQgY2hhciAqIHRlbXApOwppbnQgZ2V0bmV4dHZhbGlkY2hhciAodW5zaWduZWQgY2hhciBvbGQp
OwppbnQgYzJpIChjaGFyIGcpOwpjaGFyIGkyYyAoaW50IGcpOwp2b2lkIHNldHBhcmFtZXRlcnMg
KCk7CmNoYXIgKkdldFNoYWRvd1Bhc3MgKGNoYXIgKnVzZXJuYW1lKTsKY2hhciAqR2V0Tm9ybWFs
UGFzcyAoY2hhciAqdXNlcm5hbWUpOwppbnQgcHdvcmRleGlzdCAodW5zaWduZWQgY2hhciBuZXdw
d1syNTZdKTsKaW50IGR3b3JkZXhpc3QgKHVuc2lnbmVkIGNoYXIgbmV3ZHdbMjU2XSk7CnZvaWQg
c2V0c2lnbmFscyAoKTsKdm9pZCBzYXZlX2V4aXQgKGludCBzaWdudW0pOwp2b2lkIHNhdmVzZXNz
aW9uICgpOwp2b2lkIHBhcnNlc2Vzc2lvbmZpbGUgKCk7CiMgMzEgIkJyZWFrRG93bi5jIiAyCiMg
MSAiaGVhZGVycy9zb21lZnVuY3RzLmgiIDEKdm9pZCBhZGRwdyAoY2hhciBwYXNzd29yZHRvYWRk
WzI1Nl0pCnsKICAgICAgICBwdGVtcCA9IHBjdXJyOwogICAgICAgIHBjdXJyLT5uZXh0ID0gTXlB
bGxvY2F0ZSgpOwogICAgICAgIHBjdXJyID0gcGN1cnItPm5leHQ7CiAgICAgICAgKF9fZXh0ZW5z
aW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChwYXNzd29yZHRvYWRkKSA/ICgoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgocGFzc3dvcmR0b2FkZCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikocGFzc3dvcmR0b2FkZCkgPT0gMSkgJiYgc3RybGVuIChwYXNzd29yZHRvYWRkKSArIDEgPD0g
OCA/IF9fc3RyY3B5X3NtYWxsIChwY3Vyci0+c3RvcmVkcHdvcmQsIF9fZXh0ZW5zaW9uX18gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBhc3N3b3JkdG9hZGQp
KVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHBhc3N3b3JkdG9hZGQpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBhc3N3b3JkdG9hZGQpKVs0ICsgMV0gPDwgOCB8
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBhc3N3b3JkdG9h
ZGQpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAocGFzc3dvcmR0b2FkZCkpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocGFzc3dvcmR0b2FkZCkpWzAgKyAyXSkg
PDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBhc3N3
b3JkdG9hZGQpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChwYXNzd29yZHRvYWRkKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBhc3N3b3JkdG9hZGQpKVs0
ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHBhc3N3b3JkdG9hZGQpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChwYXNzd29yZHRvYWRkKSlbNCArIDFdKSA8PCA4IHwgKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocGFzc3dvcmR0b2FkZCkpWzRd
KSwgc3RybGVuIChwYXNzd29yZHRvYWRkKSArIDEpIDogKGNoYXIgKikgbWVtY3B5IChwY3Vyci0+
c3RvcmVkcHdvcmQsIHBhc3N3b3JkdG9hZGQsIHN0cmxlbiAocGFzc3dvcmR0b2FkZCkgKyAxKSkg
OiBzdHJjcHkgKHBjdXJyLT5zdG9yZWRwd29yZCwgcGFzc3dvcmR0b2FkZCkpKTsKICAgICAgICBw
Y3Vyci0+Y3JhY2tlZHB3b3JkWzBdID0gJ1wwJzsKICAgICAgICBwY3Vyci0+cHJldiA9IHB0ZW1w
Owp9Cgp2b2lkIGFkZGR3IChjaGFyIGR3b3JkdG9hZGRbMjU2XSkKewogICAgICAgIGR0ZW1wID0g
ZGN1cnI7CiAgICAgICAgZGN1cnItPm5leHQgPSBNeUR3b3JkQWxsb2NhdGUoKTsKICAgICAgICBk
Y3VyciA9IGRjdXJyLT5uZXh0OwogICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29u
c3RhbnRfcCAoZHdvcmR0b2FkZCkgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGR3b3JkdG9h
ZGQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGR3b3JkdG9hZGQpID09IDEpICYmIHN0
cmxlbiAoZHdvcmR0b2FkZCkgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAoZGN1cnItPnRlc3Rk
d29yZCwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoZHdvcmR0b2FkZCkpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoZHdvcmR0b2FkZCkpWzBdKSwgX19leHRlbnNpb25fXyAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZHdvcmR0b2FkZCkp
WzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoZHdvcmR0b2FkZCkpWzRdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChkd29yZHRvYWRkKSlbMCArIDNdIDw8IDggfCAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkd29yZHRvYWRkKSlbMCAr
IDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
ZHdvcmR0b2FkZCkpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKGR3b3JkdG9hZGQpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZHdvcmR0b2FkZCkpWzQgKyAz
XSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZHdv
cmR0b2FkZCkpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGR3b3JkdG9hZGQpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkd29yZHRvYWRkKSlbNF0pLCBzdHJsZW4gKGR3
b3JkdG9hZGQpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKGRjdXJyLT50ZXN0ZHdvcmQsIGR3b3Jk
dG9hZGQsIHN0cmxlbiAoZHdvcmR0b2FkZCkgKyAxKSkgOiBzdHJjcHkgKGRjdXJyLT50ZXN0ZHdv
cmQsIGR3b3JkdG9hZGQpKSk7CiAgICAgICAgZGN1cnItPnByZXYgPSBkdGVtcDsKfQoKc3RvcmVw
d190KiBNeUFsbG9jYXRlICgpCnsKICAgICAgICBzdG9yZXB3X3QgKm5ld05vZGU7CgoKICAgICAg
ICBuZXdOb2RlID0gKHN0b3JlcHdfdCopbWFsbG9jKHNpemVvZihzdG9yZXB3X3QpKTsKCgogICAg
ICAgIGlmIChuZXdOb2RlID09ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAge3ByaW50Zigi
RXJyb3I6IFVuYWJsZSB0byBhbGxvY2F0ZSBuZXcgbm9kZS5cbiIpOyBleGl0KDApO30KICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICBuZXdOb2RlLT5uZXh0ID0gKCh2b2lkICopMCk7CgogICAg
ICAgIHJldHVybiBuZXdOb2RlOwp9CgpkaWN0X3QqIE15RHdvcmRBbGxvY2F0ZSAoKQp7CiAgICAg
ICAgZGljdF90ICpuZXdOb2RlOwoKCiAgICAgICAgbmV3Tm9kZSA9IChkaWN0X3QqKW1hbGxvYyhz
aXplb2YoZGljdF90KSk7CgoKICAgICAgICBpZiAobmV3Tm9kZSA9PSAoKHZvaWQgKikwKSkKICAg
ICAgICAgICAgICAgIHtwcmludGYoIkVycm9yOiBVbmFibGUgdG8gYWxsb2NhdGUgbmV3IG5vZGUu
XG4iKTsgZXhpdCgwKTt9CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbmV3Tm9kZS0+bmV4
dCA9ICgodm9pZCAqKTApOwoKICAgICAgICByZXR1cm4gbmV3Tm9kZTsKfQoKdm9pZCBzb3J0cmFu
Z2UgKGNoYXIgcmFuZ2VbMTVdKQp7CiAgICAgICAgaW50IG9uZXM9MDsKICAgICAgICBpbnQgdGVu
cz0wOwogICAgICAgIGludCBodW5zPTA7CiAgICAgICAgaW50IGk7CiAgICAgICAgaW50IGs7CiAg
ICAgICAgaW50IGo7CgogICAgICAgIGludCBkYXNoY29vcmQgPSAtMTsKICAgICAgICBpbnQgcGxh
Y2Vjb3VudGVyID0gMTsKCgogICAgICAgIGZvciAoaT1zdHJsZW4gKHJhbmdlKTsgaT4wOyBpLS0p
CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYW5nZVtpXSA9
PSAnLScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGNvb3JkID0gaTsKICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgaWYgKGRhc2hjb29yZCAhPSAtMSkKICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPWRhc2hjb29yZC0xOyBqPj0wOyBq
LS0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHBsYWNlY291bnRlciA9PSAxKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lcyA9IGMyaSAocmFuZ2Vbal0p
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBsYWNlY291bnRlcisrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocGxhY2Vjb3VudGVyID09IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZW5zID0gYzJpIChyYW5nZVtqXSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vjb3VudGVyKys7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwbGFjZWNvdW50ZXIg
PT0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh1
bnMgPSBjMmkgKHJhbmdlW2pdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwbGFjZWNvdW50ZXIrKzsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbWlubGVuZ3RoID0gKG9uZXMpICsg
KHRlbnMqMTApICsgKGh1bnMqMTAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vjb3Vu
dGVyID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgb25lcz0wOwogICAgICAgICAgICAgICAg
ICAgICAgICB0ZW5zPTA7CiAgICAgICAgICAgICAgICAgICAgICAgIGh1bnM9MDsKCiAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoaz1zdHJsZW4gKHJhbmdlKS0xOyBrPmRhc2hjb29yZDsgay0t
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChwbGFjZWNvdW50ZXIgPT0gMSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXMgPSBjMmkgKHJhbmdlW2tdKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
bGFjZWNvdW50ZXIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHBsYWNlY291bnRlciA9PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVucyA9IGMyaSAocmFuZ2Vba10pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlY291bnRlcisrOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGxhY2Vjb3VudGVyID09
IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodW5z
ID0gYzJpIChyYW5nZVtrXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGxhY2Vjb3VudGVyKys7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aCA9IChvbmVzKSArICh0
ZW5zKjEwKSArIChodW5zKjEwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGs9c3RybGVuIChyYW5n
ZSktMTsgaz49MDsgay0tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwbGFjZWNvdW50ZXIgPT0gMSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXMgPSBj
MmkgKHJhbmdlW2tdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwbGFjZWNvdW50ZXIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHBsYWNlY291bnRlciA9PSAyKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVucyA9IGMyaSAocmFuZ2Vba10pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNl
Y291bnRlcisrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cGxhY2Vjb3VudGVyID09IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBodW5zID0gYzJpIChyYW5nZVtrXSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vjb3VudGVyKys7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0
aCA9IChvbmVzKSArICh0ZW5zKjEwKSArIChodW5zKjEwMCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIG1heGxlbmd0aCA9IChvbmVzKSArICh0ZW5zKjEwKSArIChodW5zKjEwMCk7CiAgICAgICAg
ICAgICAgICB9Cn0KCnZvaWQgc2hpZnRyaWdodCAodW5zaWduZWQgY2hhciAqIHRlbXApCnsKICAg
ICAgICBpbnQgbnVtb2ZjaGFycyA9IDA7CiAgICAgICAgaW50IGNvb3JkbGFzdCA9IDA7CiAgICAg
ICAgaW50IGNvb3JkdGVybSA9IDA7CgogICAgICAgIGludCBqOwoKICAgICAgICBuZXh0OjsKICAg
ICAgICBpZiAodGVtcFtudW1vZmNoYXJzXSAhPSAnXDAnKQogICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICAgICBudW1vZmNoYXJzKys7CiAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gbmV4dDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgY29vcmRsYXN0ID0gbnVtb2Zj
aGFycyAtIDE7CiAgICAgICAgY29vcmR0ZXJtID0gbnVtb2ZjaGFyczsKCiAgICAgICAgZm9yIChq
PWNvb3JkdGVybTsgaj49MDsgai0tKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAg
ICAgICAgICAgdGVtcFtqKzFdID0gdGVtcFtqXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB0
ZW1wWzBdID0gJ1wwJzsKfQoKaW50IGdldG5leHR2YWxpZGNoYXIgKHVuc2lnbmVkIGNoYXIgb2xk
KQp7CiAgICAgICAgaWYgKFNMVkwgPT0gMSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG9sZCA8IDQ4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiA0ODsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvbGQgPj0gNDgpICYmIChv
bGQgPCA1NykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9sZCsxOwog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob2xkID49IDU3KQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICBpZiAoU0xW
TCA9PSAyKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAob2xk
IDwgNjUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDY1OwogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKG9sZCA+PSA2NSkgJiYgKG9sZCA8IDkwKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2xkKzE7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgob2xkID49IDkwKSAmJiAob2xkIDwgOTcpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiA5NzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvbGQgPj0g
OTcpICYmIChvbGQgPCAxMjIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBvbGQrMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZCA+PSAxMjIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgfQogICAg
ICAgIGlmIChTTFZMID09IDMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChvbGQgPCA0OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
NDg7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgob2xkID49IDQ4KSAmJiAob2xkIDwgNTcp
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbGQrMTsKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKChvbGQgPj0gNTcpICYmIChvbGQgPCA2NSkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDY1OwogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoKG9sZCA+PSA2NSkgJiYgKG9sZCA8IDkwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gb2xkKzE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgob2xkID49IDkw
KSAmJiAob2xkIDwgOTcpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA5
NzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvbGQgPj0gOTcpICYmIChvbGQgPCAxMjIp
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbGQrMTsKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG9sZCA+PSAxMjIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgfQogICAgICAgIGlmIChTTFZMID09IDQp
CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvbGQgPCAzMykK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzM7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgob2xkID49IDMzKSAmJiAob2xkIDwgMzUpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAzNTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChv
bGQgPj0gMzUpICYmIChvbGQgPCAzOCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG9sZCsxOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG9sZCA+PTM4KSAmJiAo
b2xkIDwgNDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0MDsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKChvbGQgPj0gNDApICYmIChvbGQgPCA0MikpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9sZCsxOwogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKG9sZCA+PSA0MikgJiYgKG9sZCA8IDQ4KSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gNDg7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgob2xk
ID49IDQ4KSAmJiAob2xkIDwgNTcpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBvbGQrMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvbGQgPj0gNTcpICYmIChv
bGQgPCA2NCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDY0OwogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKG9sZCA+PSA2NCkgJiYgKG9sZCA8IDkwKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2xkKzE7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgob2xkID49IDkwKSAmJiAob2xkIDwgOTQpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiA5NDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvbGQg
Pj0gOTQpICYmIChvbGQgPCA5NikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDk2OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG9sZCA+PSA5NikgJiYgKG9sZCA8
IDEyMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9sZCsxOwogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKG9sZCA+PSAxMjIpICYmIChvbGQgPCAxMjYpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxMjY7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChvbGQgPj0gMTI2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAtMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICBpZiAoU0xWTCA9PSA1KQogICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAob2xkIDwgMzIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDMyOwogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoKG9sZCA+PSAzMikgJiYgKG9sZCA8IDEyNikpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG9sZCsxOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAob2xkID49
IDEyNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgaWYgKFNMVkwgPT0gNikKICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG9sZCA9PSAyNTUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBv
bGQrMTsKICAgICAgICAgICAgICAgIH0KfQoKaW50IGMyaSAoY2hhciBnKQp7CiAgICAgICAgaW50
IHJldG51bTsKICAgICAgICBpZiAoZz09JzAnKQogICAgICAgICAgICAgICAgcmV0bnVtID0gMDsK
ICAgICAgICBpZiAoZz09JzEnKQogICAgICAgICAgICAgICAgcmV0bnVtID0gMTsKICAgICAgICBp
ZiAoZz09JzInKQogICAgICAgICAgICAgICAgcmV0bnVtID0gMjsKICAgICAgICBpZiAoZz09JzMn
KQogICAgICAgICAgICAgICAgcmV0bnVtID0gMzsKICAgICAgICBpZiAoZz09JzQnKQogICAgICAg
ICAgICAgICAgcmV0bnVtID0gNDsKICAgICAgICBpZiAoZz09JzUnKQogICAgICAgICAgICAgICAg
cmV0bnVtID0gNTsKICAgICAgICBpZiAoZz09JzYnKQogICAgICAgICAgICAgICAgcmV0bnVtID0g
NjsKICAgICAgICBpZiAoZz09JzcnKQogICAgICAgICAgICAgICAgcmV0bnVtID0gNzsKICAgICAg
ICBpZiAoZz09JzgnKQogICAgICAgICAgICAgICAgcmV0bnVtID0gODsKICAgICAgICBpZiAoZz09
JzknKQogICAgICAgICAgICAgICAgcmV0bnVtID0gOTsKICAgICAgICByZXR1cm4gcmV0bnVtOwp9
CgpjaGFyIGkyYyAoaW50IGcpCnsKICAgICAgICBpbnQgcmV0bnVtOwogICAgICAgIGlmIChnPT0w
KQogICAgICAgICAgICAgICAgcmV0bnVtID0gJzAnOwogICAgICAgIGlmIChnPT0xKQogICAgICAg
ICAgICAgICAgcmV0bnVtID0gJzEnOwogICAgICAgIGlmIChnPT0yKQogICAgICAgICAgICAgICAg
cmV0bnVtID0gJzInOwogICAgICAgIGlmIChnPT0zKQogICAgICAgICAgICAgICAgcmV0bnVtID0g
JzMnOwogICAgICAgIGlmIChnPT00KQogICAgICAgICAgICAgICAgcmV0bnVtID0gJzQnOwogICAg
ICAgIGlmIChnPT01KQogICAgICAgICAgICAgICAgcmV0bnVtID0gJzUnOwogICAgICAgIGlmIChn
PT02KQogICAgICAgICAgICAgICAgcmV0bnVtID0gJzYnOwogICAgICAgIGlmIChnPT03KQogICAg
ICAgICAgICAgICAgcmV0bnVtID0gJzcnOwogICAgICAgIGlmIChnPT04KQogICAgICAgICAgICAg
ICAgcmV0bnVtID0gJzgnOwogICAgICAgIGlmIChnPT05KQogICAgICAgICAgICAgICAgcmV0bnVt
ID0gJzknOwogICAgICAgIHJldHVybiByZXRudW07Cn0KCgpjaGFyICpHZXRTaGFkb3dQYXNzIChj
aGFyICp1c2VybmFtZSkKewogICAgICAgIHN0cnVjdCBzcHdkICpwd3M7CiAgICAgICAgcHdzID0g
Z2V0c3BuYW0odXNlcm5hbWUpOwogICAgICAgIGlmICghcHdzKQogICAgICAgIHsKICAgICAgICAg
ICAgcHJpbnRmKCJ1bmFibGUgdG8gZmlsbCB0aGUgcHdzIHN0cnVjdHVyZVxuIik7CiAgICAgICAg
ICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHB3cy0+c3Bf
cHdkcDsKfQoKCmNoYXIgKkdldE5vcm1hbFBhc3MgKGNoYXIgKnVzZXJuYW1lKQp7CiAgICAgICAg
c3RydWN0IHBhc3N3ZCAqcHdzOwogICAgICAgIHB3cyA9IGdldHB3bmFtKHVzZXJuYW1lKTsKICAg
IGlmICghcHdzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoInVuYWJsZSB0
byBmaWxsIHRoZSBwd3Mgc3RydWN0dXJlXG4iKTsKICAgICAgICAgICAgICAgIHJldHVybiAoKHZv
aWQgKikwKTsKICAgICAgICAgICAgfQogICAgcmV0dXJuIHB3cy0+cHdfcGFzc3dkOwp9CgppbnQg
cHdvcmRleGlzdCAodW5zaWduZWQgY2hhciBuZXdwd1syNTZdKQp7CiAgICAgICAgc3RvcmVwd190
ICpsb2NhbHBjdXJyID0gKHN0cnVjdCBzdG9yZXB3ICopcGhlYWQ7CiAgICAgICAgaW50IHJldG51
bSA9IDA7CgogICAgICAgIHN0YXJ0OgogICAgICAgIGlmIChfX2V4dGVuc2lvbl9fICh7IHNpemVf
dCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobG9jYWxwY3Vyci0+
c3RvcmVkcHdvcmQpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChuZXdwdykgJiYgKF9fczFfbGVu
ID0gc3RybGVuIChsb2NhbHBjdXJyLT5zdG9yZWRwd29yZCksIF9fczJfbGVuID0gc3RybGVuIChu
ZXdwdyksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGxvY2FscGN1cnItPnN0b3JlZHB3b3Jk
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShsb2NhbHBjdXJyLT5zdG9yZWRwd29yZCkg
PT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmV3
cHcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5ld3B3KSA9PSAxKSB8fCBfX3MyX2xl
biA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKGxvY2FscGN1cnItPnN0b3JlZHB3
b3JkKSwgKF9fY29uc3QgY2hhciAqKSAobmV3cHcpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9f
czFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKGxvY2FscGN1
cnItPnN0b3JlZHB3b3JkKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobG9jYWxwY3Vyci0+
c3RvcmVkcHdvcmQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGxvY2FscGN1cnItPnN0
b3JlZHB3b3JkKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKGxvY2FscGN1cnItPnN0b3Jl
ZHB3b3JkKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmV3cHcpICYm
ICgoc2l6ZV90KShjb25zdCB2b2lkICopKChuZXdwdykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikobmV3cHcpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGxvY2Fs
cGN1cnItPnN0b3JlZHB3b3JkKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopKG5ld3B3KSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAobG9jYWxwY3Vyci0+c3RvcmVkcHdvcmQpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5ld3B3KSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobG9jYWxwY3Vyci0+c3RvcmVkcHdvcmQpKVsyXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5ld3B3KSlbMl0pOyBpZiAoX19z
MV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGxvY2FscGN1cnItPnN0b3JlZHB3b3JkKSlbM10g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuZXdwdykpWzNd
KTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5ld3B3KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKGxvY2FscGN1cnItPnN0b3JlZHB3b3JkKSlbMF0gLSBfX3My
WzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGxvY2FscGN1cnItPnN0
b3JlZHB3b3JkKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGxvY2FscGN1cnItPnN0b3JlZHB3b3JkKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFf
bGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChsb2NhbHBjdXJyLT5zdG9yZWRwd29yZCkpWzNdIC0g
X19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmV3
cHcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChuZXdwdykgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikobmV3cHcpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAobmV3cHcpLCBf
X3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChsb2NhbHBjdXJyLT5zdG9yZWRw
d29yZCkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGxvY2FscGN1cnItPnN0b3JlZHB3b3Jk
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShsb2NhbHBjdXJyLT5zdG9yZWRwd29yZCkg
PT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobG9jYWxwY3Vyci0+c3RvcmVk
cHdvcmQpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKiko
bmV3cHcpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChsb2NhbHBj
dXJyLT5zdG9yZWRwd29yZCkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAobmV3cHcpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChsb2NhbHBjdXJyLT5zdG9yZWRwd29yZCkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAobmV3cHcpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYg
X19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAobG9jYWxwY3Vyci0+c3RvcmVkcHdvcmQpKVszXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5ld3B3KSlbM10pOyB9IH0gX19yZXN1
bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9
IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobG9jYWxwY3Vyci0+
c3RvcmVkcHdvcmQpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmV3cHcpKVswXTsgaWYgKF9fczJf
bGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuZXdwdykpWzFdKTsgaWYgKF9f
czJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuZXdwdykpWzJdKTsgaWYg
KF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmV3cHcpKVszXSk7IH0g
fSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAobG9jYWxwY3Vyci0+c3RvcmVkcHdvcmQsIG5ld3B3
KSkpKTsgfSkgPT0gMCkKICAgICAgICAgICAgICAgIHJldG51bSA9IDE7CiAgICAgICAgaWYgKGxv
Y2FscGN1cnItPm5leHQgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2FscGN1cnIgPSBsb2NhbHBjdXJyLT5uZXh0OwogICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHN0YXJ0OwogICAgICAgICAgICAgICAgfQogICAgICAgIHJldHVy
biByZXRudW07Cn0KCmludCBkd29yZGV4aXN0ICh1bnNpZ25lZCBjaGFyIG5ld2R3WzI1Nl0pCnsK
ICAgICAgICBkaWN0X3QgKmxvY2FsZGN1cnIgPSAoc3RydWN0IHN0b3JlZHcgKilkaGVhZDsKICAg
ICAgICBpbnQgcmV0bnVtID0gMDsKCiAgICAgICAgc3RhcnQ6CiAgICAgICAgaWYgKF9fZXh0ZW5z
aW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9w
IChsb2NhbGRjdXJyLT50ZXN0ZHdvcmQpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChuZXdkdykg
JiYgKF9fczFfbGVuID0gc3RybGVuIChsb2NhbGRjdXJyLT50ZXN0ZHdvcmQpLCBfX3MyX2xlbiA9
IHN0cmxlbiAobmV3ZHcpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChsb2NhbGRjdXJyLT50
ZXN0ZHdvcmQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGxvY2FsZGN1cnItPnRlc3Rk
d29yZCkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgobmV3ZHcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5ld2R3KSA9PSAxKSB8fCBf
X3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKGxvY2FsZGN1cnItPnRl
c3Rkd29yZCksIChfX2NvbnN0IGNoYXIgKikgKG5ld2R3KSwgKF9fczFfbGVuIDwgX19zMl9sZW4g
PyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChsb2Nh
bGRjdXJyLT50ZXN0ZHdvcmQpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChsb2NhbGRjdXJy
LT50ZXN0ZHdvcmQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGxvY2FsZGN1cnItPnRl
c3Rkd29yZCkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChsb2NhbGRjdXJyLT50ZXN0ZHdv
cmQpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChuZXdkdykgJiYgKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKG5ld2R3KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShuZXdkdykgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobG9jYWxkY3Vy
ci0+dGVzdGR3b3JkKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopKG5ld2R3KSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
bG9jYWxkY3Vyci0+dGVzdGR3b3JkKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuZXdkdykpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKGxvY2FsZGN1cnItPnRlc3Rkd29yZCkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmV3ZHcpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIg
JiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobG9jYWxkY3Vyci0+dGVzdGR3b3JkKSlbM10gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuZXdkdykpWzNdKTsgfSB9IF9fcmVz
dWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIg
PSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5ld2R3KTsgcmVn
aXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKGxvY2FsZGN1cnItPnRlc3Rkd29yZCkpWzBdIC0gX19zMlswXSk7IGlmIChfX3Mx
X2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChsb2NhbGRjdXJyLT50ZXN0ZHdvcmQpKVsxXSAt
IF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobG9jYWxkY3Vy
ci0+dGVzdGR3b3JkKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3Vs
dCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChsb2NhbGRjdXJyLT50ZXN0ZHdvcmQpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1
bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKG5ld2R3KSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgobmV3ZHcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5ld2R3KSA9
PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKG5ld2R3KSwgX19zMl9sZW4gPCA0KSA/IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAobG9jYWxkY3Vyci0+dGVzdGR3b3JkKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgobG9jYWxkY3Vyci0+dGVzdGR3b3JkKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKShsb2NhbGRjdXJyLT50ZXN0ZHdvcmQpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGxvY2FsZGN1cnItPnRlc3Rkd29yZCkpWzBdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShuZXdkdykpWzBdKTsgaWYgKF9fczJfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKGxvY2FsZGN1cnItPnRlc3Rkd29yZCkpWzFdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmV3ZHcpKVsxXSk7IGlmIChf
X3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChsb2NhbGRjdXJyLT50ZXN0ZHdvcmQpKVsy
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5ld2R3KSlb
Ml0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGxvY2FsZGN1cnItPnRlc3Rk
d29yZCkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
bmV3ZHcpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25z
dCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChsb2NhbGRjdXJyLT50ZXN0ZHdvcmQpOyByZWdpc3RlciBpbnQgX19yZXN1bHQg
PSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
bmV3ZHcpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChuZXdkdykpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChuZXdkdykpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl
c3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAobmV3ZHcpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAobG9jYWxkY3Vy
ci0+dGVzdGR3b3JkLCBuZXdkdykpKSk7IH0pID09IDApCiAgICAgICAgICAgICAgICByZXRudW0g
PSAxOwogICAgICAgIGlmIChsb2NhbGRjdXJyLT5uZXh0ICE9ICgodm9pZCAqKTApKQogICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGRjdXJyID0gbG9jYWxkY3Vy
ci0+bmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydDsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICByZXR1cm4gcmV0bnVtOwp9Cgp2b2lkIHNldHNpZ25hbHMgKCkKewogICAg
ICAgIGlmIChzaWduYWwgKDIsICZzYXZlX2V4aXQpID09ICgoX19zaWdoYW5kbGVyX3QpIC0xKSkK
ICAgICAgICAgICAgICAgIHByaW50ZiAoIlxuQ291bGRuJ3QgcmVnaXN0ZXIgc2lnbmFsIGhhbmRs
ZXIuLi5cbiIpOwoKICAgICAgICBpZiAoc2lnbmFsICgxNSwgJnNhdmVfZXhpdCkgPT0gKChfX3Np
Z2hhbmRsZXJfdCkgLTEpKQogICAgICAgICAgICAgICAgcHJpbnRmICgiXG5Db3VsZG4ndCByZWdp
c3RlciBzaWduYWwgaGFuZGxlci4uLlxuIik7Cn0KCmludCBmaWxlZXhpc3RzIChjaGFyIGZpbGVu
YW1lWzI1Nl0pCnsKICAgICAgICBGSUxFICp0ZXN0ZmlsZTsKICAgICAgICB0ZXN0ZmlsZSA9IGZv
cGVuIChmaWxlbmFtZSwgInIiKTsKICAgICAgICBpZiAodGVzdGZpbGUgPT0gKCh2b2lkICopMCkp
CiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGZjbG9zZSAodGVzdGZpbGUpOwogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMTsKICAgICAgICAgICAgICAgIH0KfQojIDMyICJCcmVha0Rvd24uYyIgMgojIDEgImhl
YWRlcnMvcGFyYW0uaCIgMQp2b2lkIHBfY2hvb3NlX2FjdGlvbiAoKQp7CiAgICAgICAgY2hhciBj
aG9pY2VbNF07CgoKICAgICAgICByZWNob29zZWFjdGlvbjoKICAgICAgICBwcmludGYgKCJcblNo
YWxsIHdlXG4iKTsKICAgICAgICBwcmludGYgKCIxKSBHZW5lcmF0ZSBTZXF1ZW5jZXNcbiIpOwog
ICAgICAgIHByaW50ZiAoIjIpIENyYWNrIFBhc3N3b3Jkc1xuIik7CiAgICAgICAgcHJpbnRmICgi
MykgUmVzdW1lIGEgUHJldmlvdXMgU2Vzc2lvblxuPyIpOwogICAgICAgIHNjYW5mICgiJXMiLCBj
aG9pY2UpOwoKICAgICAgICBpZiAoY2hvaWNlWzBdID09ICcxJykKICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgPSAxOwogICAgICAgICAgICAgICAgICAg
ICAgICBzdGFuZGFsb25lID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRicnV0ZWZv
cmNlID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICBpZiAoY2hvaWNlWzBdID09ICcyJykK
ICAgICAgICAgICAgICAgIGNyYWNrID0gMTsKICAgICAgICBpZiAoY2hvaWNlWzBdID09ICczJykK
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lID0gMTsKICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhbmRhbG9uZSA9IDE7CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgIGlmICgoIWdlbmVyYXRlKSAmJiAoIWNyYWNrKSAmJiAoIXJlc3VtZSkpCiAgICAgICAg
ICAgICAgICBnb3RvIHJlY2hvb3NlYWN0aW9uOwp9Cgp2b2lkIHBfY2hvb3NlX2NsaWVudF9tb2Rl
ICgpCnsKICAgICAgICBjaGFyIGNob2ljZVs0XTsKCgogICAgICAgIHJlY2hvb3NlY2xpZW50Ogog
ICAgICAgIHByaW50ZiAoIlxuSG93IHNoYWxsIHdlIHByb2NlZWQ/XG4iKTsKICAgICAgICBwcmlu
dGYgKCIxKSBEaXN0cmlidXRlZCBDcmFja2luZ1xuIik7CiAgICAgICAgcHJpbnRmICgiMikgU3Rh
bmRhbG9uZVxuPyIpOwogICAgICAgIHNjYW5mICgiJXMiLCBjaG9pY2UpOwoKICAgICAgICBpZiAo
Y2hvaWNlWzBdID09ICcxJykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgcHJpbnRmICgiXG5UaGlzIGZlYXR1cmUgd2lsbCBiZSBpbXBsZW1lbnRlZCB3aGVuIEkgZ2V0
IHRoZSBzZXJ2ZXIgd3JpdHRlblxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVj
aG9vc2VjbGllbnQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgIGlmIChjaG9pY2VbMF0gPT0g
JzInKQogICAgICAgICAgICAgICAgc3RhbmRhbG9uZSA9IDE7CgogICAgICAgIGlmICgoIWRpc3Ry
aWJ1dGVkKSAmJiAoIXN0YW5kYWxvbmUpKQogICAgICAgICAgICAgICAgZ290byByZWNob29zZWNs
aWVudDsKfQoKdm9pZCBwX2Nob29zZV9zZXJ2ZXIgKCkKewogICAgICAgIHJlY2hvb3NlcnNlcnZl
cjoKICAgICAgICBwcmludGYgKCJcbldoYXQgaXMgdGhlIHNlcnZlciBpcDogIik7CiAgICAgICAg
c2NhbmYgKCIlcyIsIHNlcnZlcl9pcCk7CiAgICAgICAgc2VydmVyX2lwWzE1XSA9ICdcMCc7CgoK
CgoKCn0KCnZvaWQgcF9jaG9vc2VfcmVzdW1lX3Nlc3Npb24gKCkKewogICAgICAgIHJlY2hvb3Nl
X3Jlc3VtZV9zZXNzaW9uOgogICAgICAgIHByaW50ZiAoIlxuRW50ZXIgYSBTZXNzaW9uIG5hbWUg
dG8gcmVzdW1lOiAiKTsKICAgICAgICBzY2FuZiAoIiVzIiwgc2Vzc2lvbik7CiAgICAgICAgaWYg
KCFmaWxlZXhpc3RzKHNlc3Npb24pKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgICBwcmludGYgKCJcblxuXHRTZXNzaW9uIGZpbGUgZG9lc24ndCBleGlzdCEiKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byByZWNob29zZV9yZXN1bWVfc2Vzc2lvbjsKICAgICAg
ICAgICAgICAgIH0KfQoKdm9pZCBwX25ld19zZXNzaW9uICgpCnsKICAgICAgICByZWNob29zZV9u
ZXdfc2Vzc2lvbnc6CiAgICAgICAgcHJpbnRmICgiXG5HaXZlIHRoaXMgc2Vzc2lvbiBhIHRpdGxl
OiAiKTsKICAgICAgICBzY2FuZiAoIiVzIiwgc2Vzc2lvbik7CiAgICAgICAgaWYgKGZpbGVleGlz
dHMoc2Vzc2lvbikpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBy
aW50ZiAoIlxuXG5cdFNlc3Npb24gZmlsZSBleGlzdHMhIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gcmVjaG9vc2VfbmV3X3Nlc3Npb253OwogICAgICAgICAgICAgICAgfQoKICAgICAg
ICBhbnlhdHRhY2sgPSAxOwp9Cgp2b2lkIHBfY2hvb3NlX2F0dGFjayAoKQp7CiAgICAgICAgY2hh
ciBjaG9pY2VbNF07CiAgICAgICAgaW50IG9jb3VudGVyOwoKCiAgICAgICAgcmVjaG9vc2VhdHRh
Y2s6CiAgICAgICAgcHJpbnRmICgiXG5XaGF0IEF0dGFjayhzKSBzaG91bGQgd2UgcnVuP1xuIik7
CiAgICAgICAgcHJpbnRmICgiMSkgRGljdGlvbmFyeSBBdHRhY2tcbiIpOwogICAgICAgIHByaW50
ZiAoIjIpIEJydXRlIEZvcmNlXG4iKTsKICAgICAgICBwcmludGYgKCIoWW91IG1heSB1c2UgYW55
IGNvbWJpbmF0aW9uIG9mIDEsIDIsIG9yIDEyIChpZSAxMiBmb3IgYm90aCkpPyIpOwogICAgICAg
IHNjYW5mICgiJXMiLCBjaG9pY2UpOwoKICAgICAgICBvY291bnRlciA9IDA7CiAgICAgICAgd2hp
bGUgKGNob2ljZVtvY291bnRlcl0gIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAgICAgICAgICBp
ZiAoY2hvaWNlW29jb3VudGVyXSA9PSAnMScpCiAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rh
dHRhY2sgPSAxOwogICAgICAgICAgICAgICAgaWYgKGNob2ljZVtvY291bnRlcl0gPT0gJzInKQog
ICAgICAgICAgICAgICAgICAgICAgICB7IGJydXRlZm9yY2UgPSAxOyBzdGFydGJydXRlZm9yY2Ug
PSAxOyB9CiAgICAgICAgICAgICAgICBvY291bnRlcisrOwogICAgICAgIH0KCiAgICAgICAgaWYg
KCghZGljdGF0dGFjaykgJiYgKCFicnV0ZWZvcmNlKSkKICAgICAgICAgICAgICAgIGdvdG8gcmVj
aG9vc2VhdHRhY2s7CgogICAgICAgIGlmIChkaWN0YXR0YWNrKQogICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgICByZWNob29zZWRpY3RyOgogICAgICAgICAgICAgICAgICAg
ICAgICBwcmludGYgKCJcbkNob29zZSBhIGRpY3Rpb25hcnkgZmlsZTogIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHNjYW5mICgiJXMiLCBkaWN0aW5maWxlbmFtZSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghZmlsZWV4aXN0cyhkaWN0aW5maWxlbmFtZSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJpbnRmICgiXG5cblx0RGljdGlvbmFyeSBmaWxlIGRvZXNuJ3QgZXhpc3QhIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlY2hvb3NlZGljdHI7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQp9Cgp2b2lk
IHBfY2hvb3NlX2lucHV0ICgpCnsKICAgICAgICBjaGFyIGNob2ljZVs0XTsKCgogICAgICAgIHJl
Y2hvb3NlaW5wdXQ6CiAgICAgICAgcHJpbnRmICgiXG5TaGFsbCB3ZVxuIik7CiAgICAgICAgcHJp
bnRmICgiMSkgR2V0IFBhc3N3b3JkcyBmcm9tIGEgY3VzdG9tIGZpbGVcbiIpOwogICAgICAgIGlm
IChteXVpZCA9PSAwKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiMikgR2V0IFBh
c3N3b3JkcyBmcm9tIC9ldGMvcGFzc3dkXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiMikgR2V0IFBhc3N3
b3JkcyBmcm9tIC9ldGMvc2hhZG93XG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIjIpIE9u
bHkgcm9vdCBjYW4gcmVhZCB0aGUgcGFzc3dkIG9yIHNoYWRvdyBmaWxlc1xuIik7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgcHJpbnRmICgiMykgU3BlY2lmeSBhIHBhc3N3ZC9zaGFkb3cgaW4g
YSBkaWZmZXJlbnQgbG9jYXRpb24gKGkuZS4gTk9UIC9ldGMvc2hhZG93KVxuPyIpOwogICAgICAg
IHNjYW5mICgiJXMiLCBjaG9pY2UpOwoKICAgICAgICBpZiAoY2hvaWNlWzBdID09ICcxJykKICAg
ICAgICAgICAgICAgIGdldGN1c3RvbWZpbGUgPSAxOwogICAgICAgIGlmIChjaG9pY2VbMF0gPT0g
JzInKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobXl1aWQg
PT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdldHBhc3N3ZGZpbGUgPSAxOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdldHNoYWRvd2ZpbGUgPSAxOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICBpZiAoY2hvaWNlWzBd
ID09ICczJykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lm
eXNoYWRvd2ZpbGUgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWFsbCA9IDE7CiAg
ICAgICAgICAgICAgICB9CgogICAgICAgIGlmICgoIWdldGN1c3RvbWZpbGUpICYmICghZ2V0cGFz
c3dkZmlsZSkgJiYgKCFnZXRzaGFkb3dmaWxlKSAmJiAoIXNwZWNpZnlzaGFkb3dmaWxlKSkKICAg
ICAgICAgICAgICAgIGdvdG8gcmVjaG9vc2VpbnB1dDsKCiAgICAgICAgaWYgKGdldHBhc3N3ZGZp
bGUpCiAgICAgICAgICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3Ag
KCIvZXRjL3Bhc3N3ZCIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiL2V0Yy9wYXNzd2Qi
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiL2V0Yy9wYXNzd2QiKSA9PSAxKSAmJiBz
dHJsZW4gKCIvZXRjL3Bhc3N3ZCIpICsgMSA8PSA4ID8gX19zdHJjcHlfc21hbGwgKHBhcnNlZmls
ZSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIi9ldGMvcGFzc3dkIikpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi9ldGMvcGFzc3dkIikpWzBdKSwgX19leHRlbnNpb25f
XyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi9ldGMvcGFz
c3dkIikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIi9ldGMvcGFzc3dkIikpWzRdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiL2V0Yy9wYXNzd2QiKSlbMCArIDNd
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiL2V0
Yy9wYXNzd2QiKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIi9ldGMvcGFzc3dkIikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIvZXRjL3Bhc3N3ZCIpKVswXSksIF9f
ZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIi9ldGMvcGFzc3dkIikpWzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIi9ldGMvcGFzc3dkIikpWzQgKyAyXSkgPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIvZXRjL3Bhc3N3ZCIpKVs0
ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiL2V0Yy9wYXNzd2QiKSlbNF0pLCBzdHJsZW4gKCIvZXRjL3Bhc3N3ZCIpICsgMSkgOiAoY2hh
ciAqKSBtZW1jcHkgKHBhcnNlZmlsZSwgIi9ldGMvcGFzc3dkIiwgc3RybGVuICgiL2V0Yy9wYXNz
d2QiKSArIDEpKSA6IHN0cmNweSAocGFyc2VmaWxlLCAiL2V0Yy9wYXNzd2QiKSkpOwogICAgICAg
IGlmIChnZXRzaGFkb3dmaWxlKQogICAgICAgICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVp
bHRpbl9jb25zdGFudF9wICgiL2V0Yy9zaGFkb3ciKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgoIi9ldGMvc2hhZG93IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIi9ldGMvc2hh
ZG93IikgPT0gMSkgJiYgc3RybGVuICgiL2V0Yy9zaGFkb3ciKSArIDEgPD0gOCA/IF9fc3RyY3B5
X3NtYWxsIChwYXJzZWZpbGUsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCIvZXRjL3NoYWRvdyIpKVswICsgMV0gPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIvZXRjL3NoYWRvdyIpKVsw
XSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCIvZXRjL3NoYWRvdyIpKVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIvZXRjL3NoYWRvdyIpKVs0XSksIF9fZXh0ZW5zaW9u
X18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi9ldGMv
c2hhZG93IikpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIi9ldGMvc2hhZG93IikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIvZXRjL3NoYWRvdyIpKVswICsgMV0pIDw8
IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiL2V0Yy9z
aGFkb3ciKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIvZXRjL3NoYWRvdyIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIvZXRjL3NoYWRvdyIpKVs0ICsg
Ml0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
L2V0Yy9zaGFkb3ciKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIi9ldGMvc2hhZG93IikpWzRdKSwgc3RybGVuICgiL2V0Yy9zaGFk
b3ciKSArIDEpIDogKGNoYXIgKikgbWVtY3B5IChwYXJzZWZpbGUsICIvZXRjL3NoYWRvdyIsIHN0
cmxlbiAoIi9ldGMvc2hhZG93IikgKyAxKSkgOiBzdHJjcHkgKHBhcnNlZmlsZSwgIi9ldGMvc2hh
ZG93IikpKTsKCiAgICAgICAgaWYgKGdldGN1c3RvbWZpbGUpCiAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY2hvb3NlY3VzdG9tcjoKICAgICAgICAgICAgICAgICAg
ICAgICAgcHJpbnRmICgiXG5DaG9vc2UgYW4gaW5wdXQgZmlsZTogIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHNjYW5mICgiJXMiLCBpbmZpbGVuYW1lKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFmaWxlZXhpc3RzKGluZmlsZW5hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAo
IlxuXG5cdEN1c3RvbSBmaWxlIGRvZXNuJ3QgZXhpc3QhIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIHJlY2hvb3NlY3VzdG9tcjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgaWYgKHNwZWNpZnlz
aGFkb3dmaWxlKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICByZWNo
b29zZXBhcnNlcjoKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiXG5DaG9vc2UgYW4g
aW5wdXQgZmlsZTogIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mICgiJXMiLCBwYXJz
ZWZpbGUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGVleGlzdHMocGFyc2VmaWxl
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmludGYgKCJcblxuXHRUaGF0IGZpbGUgZG9lc24ndCBleGlz
dCEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVjaG9v
c2VwYXJzZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQoKICAgICAgICBpZiAoIWdldGN1c3RvbWZpbGUgJiYgIXNwZWNpZnlzaGFkb3dmaWxlKQog
ICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiXG5TaGFs
bCB3ZVxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIjEpIFBhcnNlIG91dCB0
aGUgd2hvbGUgJXMgZmlsZVxuIiwgcGFyc2VmaWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
cHJpbnRmICgiMikgT25seSBncmFiIHNwZWNpZmljIHVzZXJzIHBhc3N3b3Jkc1xuPyIpOwogICAg
ICAgICAgICAgICAgICAgICAgICBzY2FuZiAoIiVzIiwgY2hvaWNlKTsKCiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChjaG9pY2VbMF0gPT0gJzEnKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcnNlYWxsID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNob2ljZVsw
XSA9PSAnMicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dXNlcnMgPSAxOwog
ICAgICAgICAgICAgICAgfQp9Cgp2b2lkIHBfY2hvb3NlX2xvZ2dpbmcgKCkKewogICAgICAgIGNo
YXIgY2hvaWNlWzRdOwogICAgICAgIGludCBvY291bnRlcjsKICAgICAgICBjaGFyIG92ZXJ3cml0
ZVsyXTsKCgogICAgICAgIHJlY2hvb3NlY3JhY2tsb2c6CiAgICAgICAgcHJpbnRmICgiXG5XaGVy
ZSBzaGFsbCB3ZSBsb2cgdGhlIGNyYWNrZWQgcGFzc3dvcmRzIHRvP1xuIik7CiAgICAgICAgcHJp
bnRmICgiMSkgV3JpdGUgdG8gZmlsZVxuIik7CiAgICAgICAgcHJpbnRmICgiMikgUHJpbnQgdG8g
U2NyZWVuXG4iKTsKICAgICAgICBwcmludGYgKCIoWW91IG1heSB1c2UgYW55IGNvbWJpbmF0aW9u
IG9mIDEsIDIsIG9yIDEyIChpZSAxMiBmb3IgYm90aCkpPyIpOwogICAgICAgIHNjYW5mICgiJXMi
LCBjaG9pY2UpOwoKICAgICAgICBvY291bnRlciA9IDA7CiAgICAgICAgd2hpbGUgKGNob2ljZVtv
Y291bnRlcl0gIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoY2hvaWNlW29j
b3VudGVyXSA9PSAnMScpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2djcmFja2VkdG9maWxlID0gMTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZWFueXRvZmlsZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIGlmIChjaG9pY2Vbb2NvdW50ZXJdID09ICcyJykKICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nY3JhY2tlZHRvc2NyZWVuID0gMTsKICAgICAgICAgICAgICAgIG9j
b3VudGVyKys7CiAgICAgICAgfQoKICAgICAgICBpZiAoKCFsb2djcmFja2VkdG9maWxlKSAmJiAo
IWxvZ2NyYWNrZWR0b3NjcmVlbikpCiAgICAgICAgICAgICAgICBnb3RvIHJlY2hvb3NlY3JhY2ts
b2c7CgogICAgICAgIGlmIChsb2djcmFja2VkdG9maWxlKQogICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICAgICByZWNob29zZW91dHB1dHc6CiAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW50ZiAoIlxuQ2hvb3NlIGFuIG91dHB1dCBmaWxlICh0eXBlIFwiZGVmXCIgdG8gdXNl
IHRoZSBkZWZhdWx0IGZpbGUgXCJjcmFja2VkXCIpOiAiKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgc2NhbmYgKCIlcyIsIGNyYWNrZWRsb2cpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
X19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKGNyYWNrZWRsb2cpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiZGVmIikgJiYg
KF9fczFfbGVuID0gc3RybGVuIChjcmFja2VkbG9nKSwgX19zMl9sZW4gPSBzdHJsZW4gKCJkZWYi
KSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoY3JhY2tlZGxvZykgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoY3JhY2tlZGxvZykgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImRlZiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCJkZWYiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNo
YXIgKikgKGNyYWNrZWRsb2cpLCAoX19jb25zdCBjaGFyICopICgiZGVmIiksIChfX3MxX2xlbiA8
IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoY3JhY2tlZGxvZykgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGNyYWNrZWRsb2cp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGNyYWNrZWRsb2cpID09IDEpICYmIChfX3Mx
X2xlbiA9IHN0cmxlbiAoY3JhY2tlZGxvZyksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKCJkZWYiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImRlZiIpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJkZWYiKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7
IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChjcmFja2VkbG9nKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopKCJkZWYiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoY3JhY2tlZGxvZykpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoImRlZiIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChjcmFja2VkbG9nKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiZGVmIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3Vs
dCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChjcmFja2VkbG9nKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgiZGVmIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJkZWYiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGNyYWNrZWRsb2cp
KVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoY3Jh
Y2tlZGxvZykpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChjcmFja2VkbG9nKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChjcmFja2VkbG9nKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkp
IDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiZGVmIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCJkZWYiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiZGVmIikgPT0gMSkgJiYg
KF9fczJfbGVuID0gc3RybGVuICgiZGVmIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKGNyYWNrZWRsb2cpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChjcmFja2Vk
bG9nKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShjcmFja2VkbG9nKSA9PSAxKSA/IChf
X2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChjcmFja2VkbG9nKSlbMF0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJkZWYiKSlbMF0pOyBpZiAoX19zMl9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoY3JhY2tlZGxvZykpWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRlZiIpKVsxXSk7IGlmIChfX3MyX2xl
biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChjcmFja2VkbG9nKSlbMl0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZGVmIikpWzJdKTsgaWYgKF9fczJfbGVu
ID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChjcmFja2VkbG9nKSlbM10gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZGVmIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9
KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGNyYWNrZWRsb2cpOyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoImRlZiIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiZGVmIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiZGVmIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRlZiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6
IHN0cmNtcCAoY3JhY2tlZGxvZywgImRlZiIpKSkpOyB9KSA9PSAwKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImNy
YWNrZWQiKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImNyYWNrZWQiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgiY3JhY2tlZCIpID09IDEpICYmIHN0cmxlbiAoImNyYWNrZWQi
KSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsIChjcmFja2VkbG9nLCBfX2V4dGVuc2lvbl9fICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY3JhY2tlZCIpKVsw
ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJjcmFja2VkIikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoImNyYWNrZWQiKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY3JhY2tlZCIpKVs0XSksIF9fZXh0
ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
ImNyYWNrZWQiKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgiY3JhY2tlZCIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY3JhY2tlZCIpKVswICsgMV0pIDw8IDggfCAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY3JhY2tlZCIpKVsw
XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoImNyYWNrZWQiKSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiY3JhY2tlZCIpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY3JhY2tlZCIpKVs0ICsgMV0p
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiY3Jh
Y2tlZCIpKVs0XSksIHN0cmxlbiAoImNyYWNrZWQiKSArIDEpIDogKGNoYXIgKikgbWVtY3B5IChj
cmFja2VkbG9nLCAiY3JhY2tlZCIsIHN0cmxlbiAoImNyYWNrZWQiKSArIDEpKSA6IHN0cmNweSAo
Y3JhY2tlZGxvZywgImNyYWNrZWQiKSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmls
ZWV4aXN0cyhjcmFja2VkbG9nKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCJcblx0VGhhdCBm
aWxlIGV4aXN0cyFcbk92ZXJ3cml0ZSAlcyAoeS9uKT8iLCBjcmFja2VkbG9nKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5mICgiJXMiLCBvdmVyd3JpdGUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChfX2V4dGVuc2lvbl9f
ICh7IGludCBfX3JlczsgaWYgKHNpemVvZiAob3ZlcndyaXRlWzBdKSA+IDEpIHsgaWYgKF9fYnVp
bHRpbl9jb25zdGFudF9wIChvdmVyd3JpdGVbMF0pKSB7IGludCBfX2MgPSAob3ZlcndyaXRlWzBd
KTsgX19yZXMgPSBfX2MgPCAtMTI4IHx8IF9fYyA+IDI1NSA/IF9fYyA6IF9fY3R5cGVfdG91cHBl
cltfX2NdOyB9IGVsc2UgX19yZXMgPSB0b3VwcGVyIChvdmVyd3JpdGVbMF0pOyB9IGVsc2UgX19y
ZXMgPSBfX2N0eXBlX3RvdXBwZXJbKGludCkgKG92ZXJ3cml0ZVswXSldOyBfX3JlczsgfSkpICE9
ICdZJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290
byByZWNob29zZW91dHB1dHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQp9Cgp2b2lkIHBfY2hvb3NlX2dlbl9vdXRwdXQgKCkKewogICAgICAgIGNo
YXIgY2hvaWNlWzRdOwogICAgICAgIGludCBvY291bnRlcjsKICAgICAgICBjaGFyIG92ZXJ3cml0
ZVsyXTsKCgogICAgICAgIHJlY2hvb3Nlb3V0cHV0OgogICAgICAgIHByaW50ZiAoIlxuV2hlcmUg
U2hhbGwgd2UgZGlyZWN0IHRoZSBvdXRwdXRcbiIpOwogICAgICAgIHByaW50ZiAoIjEpIFdyaXRl
IHRvIGZpbGVcbiIpOwogICAgICAgIHByaW50ZiAoIjIpIFByaW50IHRvIHNjcmVlblxuIik7CiAg
ICAgICAgcHJpbnRmICgiKFlvdSBtYXkgdXNlIGFueSBjb21iaW5hdGlvbiBvZiAxLCAyLCBvciAx
MiAoaWUgMTIgZm9yIGJvdGgpKT8iKTsKICAgICAgICBzY2FuZiAoIiVzIiwgY2hvaWNlKTsKCiAg
ICAgICAgb2NvdW50ZXIgPSAwOwogICAgICAgIHdoaWxlIChjaG9pY2Vbb2NvdW50ZXJdICE9ICdc
MCcpCiAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGNob2ljZVtvY291bnRlcl0gPT0gJzEn
KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB3cml0ZWdlbnRvZmls
ZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlYW55dG9maWxlID0gMTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChjaG9pY2Vbb2NvdW50ZXJdID09ICcyJykK
ICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRnZW50b3NjcmVlbiA9IDE7CiAgICAgICAgICAg
ICAgICBvY291bnRlcisrOwogICAgICAgIH0KCiAgICAgICAgaWYgKCghd3JpdGVnZW50b2ZpbGUp
ICYmICghcHJpbnRnZW50b3NjcmVlbikpCiAgICAgICAgICAgICAgICBnb3RvIHJlY2hvb3Nlb3V0
cHV0OwoKICAgICAgICBpZiAod3JpdGVnZW50b2ZpbGUpCiAgICAgICAgewogICAgICAgICAgICAg
ICAgcmVjaG9vc2VnZW5vdXRwdXR3OgogICAgICAgICAgICAgICAgcHJpbnRmICgiXG5DaG9vc2Ug
YW4gb3V0cHV0IGZpbGU6ICIpOwogICAgICAgICAgICAgICAgc2NhbmYgKCIlcyIsIG91dGZpbGVu
YW1lKTsKICAgICAgICAgICAgICAgIGlmIChmaWxlZXhpc3RzKG91dGZpbGVuYW1lKSkKICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiXG5cdFRoYXQgZmls
ZSBleGlzdHMhXG5PdmVyd3JpdGUgJXMgKHkvbik/Iiwgb3V0ZmlsZW5hbWUpOwogICAgICAgICAg
ICAgICAgICAgICAgICBzY2FuZiAoIiVzIiwgb3ZlcndyaXRlKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKChfX2V4dGVuc2lvbl9fICh7IGludCBfX3JlczsgaWYgKHNpemVvZiAob3Zlcndy
aXRlWzBdKSA+IDEpIHsgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wIChvdmVyd3JpdGVbMF0pKSB7
IGludCBfX2MgPSAob3ZlcndyaXRlWzBdKTsgX19yZXMgPSBfX2MgPCAtMTI4IHx8IF9fYyA+IDI1
NSA/IF9fYyA6IF9fY3R5cGVfdG91cHBlcltfX2NdOyB9IGVsc2UgX19yZXMgPSB0b3VwcGVyIChv
dmVyd3JpdGVbMF0pOyB9IGVsc2UgX19yZXMgPSBfX2N0eXBlX3RvdXBwZXJbKGludCkgKG92ZXJ3
cml0ZVswXSldOyBfX3JlczsgfSkpICE9ICdZJykKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIHJlY2hvb3NlZ2Vub3V0cHV0dzsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9
Cn0KCnZvaWQgcF9jaG9vc2VfbGVuZ3RoICgpCnsKCiAgICAgICAgY2hhciByYW5nZVsxNV07CiAg
ICAgICAgcmFuZ2VbMF0gPSAnXDAnOwogICAgICAgIHByaW50ZiAoIlxuSWYgeW91IGtub3cgdGhl
IGxlbmd0aCBvZiB0aGUgcGFzc3dvcmQsIHR5cGUgdGhlIG51bWJlciBpZSA2LCBvdGhlcndpc2Ui
KTsKICAgICAgICBwcmludGYgKCJcbkdpdmUgYSByYW5nZSBvZiBsZW5ndGhzIHRvIHRlc3Q6IGll
IDItOCBvciA1LTIwXG4iKTsKCiAgICAgICAgcmVjaG9vc2U6cHJpbnRmICgiXG5UeXBlIHRoZSBu
dW1iZXIgb2YgY2hhcmFjZXJzIHRvIHRyeTogIik7CiAgICAgICAgcmVjaG9vc2VyYW5nZTpzY2Fu
ZiAoIiVzIiwgcmFuZ2UpOwogICAgICAgIGlmIChyYW5nZVswXSA9PSAnXDAnKQogICAgICAgICAg
ICAgICAgZ290byByZWNob29zZXJhbmdlOwoKICAgICAgICBzb3J0cmFuZ2UgKHJhbmdlKTsKCiAg
ICAgICAgcHJpbnRmICgiXG5taW5sZW5ndGg6ICVpIFxubWF4bGVuZ3RoOiAlaVxuIiwgbWlubGVu
Z3RoLCBtYXhsZW5ndGgpOwoKICAgICAgICBpZiAobWlubGVuZ3RoID4gbWF4bGVuZ3RoKQogICAg
ICAgICAgICAgICAgZ290byByZWNob29zZTsKICAgICAgICBpZiAoKG1pbmxlbmd0aCA8IDEpIHx8
IChtaW5sZW5ndGggPiAyNTYpKQogICAgICAgICAgICAgICAgZ290byByZWNob29zZTsKICAgICAg
ICBpZiAoKG1heGxlbmd0aCA8IDEpIHx8IChtYXhsZW5ndGggPiAyNTYpKQogICAgICAgICAgICAg
ICAgZ290byByZWNob29zZTsKfQoKdm9pZCBwX2Nob29zZV9zZWNsZXZlbCAoKQp7CiAgICAgICAg
Y2hhciBjaG9pY2VbNF07CgoKICAgICAgICBTZWN1cml0eToKICAgICAgICBwcmludGYgKCJcblxu
Q2hvb3NlIGEgc2VjdXJpdHkgbGV2ZWw6Iik7CiAgICAgICAgcHJpbnRmICgiXG4xKSAwLTkiKTsK
ICAgICAgICBwcmludGYgKCJcbjIpIGEteiAmJiBBLVoiKTsKICAgICAgICBwcmludGYgKCJcbjMp
IGEteiAmJiBBLVogJiYgMC05Iik7CiAgICAgICAgcHJpbnRmICgiXG40KSBhLXogJiYgQS1aICYm
IDAtOSAmJiBTSElGVCAwLTkgJiYgYCAmJiB+Iik7CiAgICAgICAgcHJpbnRmICgiXG41KSBNb3N0
IE5vcm1hbCBDaGFyYWN0ZXJzIik7CiAgICAgICAgcHJpbnRmICgiXG42KSBBbGwgUG9zc2libGUg
Q2hhcmFjdGVycyIpOwogICAgICAgIHByaW50ZiAoIlxuPyAiKTsKICAgICAgICBzY2FuZiAoIiVz
IiwgY2hvaWNlKTsKICAgICAgICBTTFZMID0gYzJpIChjaG9pY2VbMF0pOwoKCiAgICAgICAgaWYg
KChTTFZMICE9IDEpICYmIChTTFZMICE9IDIpICYmIChTTFZMICE9IDMpICYmIChTTFZMICE9IDQp
ICYmIChTTFZMICE9IDUpICYmIChTTFZMICE9IDYpKQogICAgICAgICAgICAgICAgZ290byBTZWN1
cml0eTsKfQoKdm9pZCBzZXRwYXJhbWV0ZXJzICgpCnsKICAgICAgICBwX2Nob29zZV9hY3Rpb24g
KCk7CgogICAgICAgIGlmIChyZXN1bWUpCiAgICAgICAgewogICAgICAgICAgICAgICAgcF9jaG9v
c2VfcmVzdW1lX3Nlc3Npb24gKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoY3JhY2spCiAgICAg
ICAgewogICAgICAgICAgICAgICAgcF9jaG9vc2VfY2xpZW50X21vZGUgKCk7CgogICAgICAgICAg
ICAgICAgaWYgKGRpc3RyaWJ1dGVkKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgICBwX2Nob29zZV9zZXJ2ZXIgKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgaWYgKHN0YW5kYWxvbmUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHBfbmV3X3Nlc3Npb24gKCk7CgogICAgICAgICAgICAgICAgICAgICAgICBwX2Nob29z
ZV9hdHRhY2sgKCk7CgogICAgICAgICAgICAgICAgICAgICAgICBwX2Nob29zZV9pbnB1dCAoKTsK
CiAgICAgICAgICAgICAgICAgICAgICAgIHBfY2hvb3NlX2xvZ2dpbmcgKCk7CgogICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZWFueXRvZmlsZSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgfQoKICAgICAgICBpZiAoZ2VuZXJhdGUpCiAgICAgICAgewogICAgICAgICAgICAgICAgcF9j
aG9vc2VfZ2VuX291dHB1dCAoKTsKICAgICAgICB9CgogICAgICAgIGlmIChnZW5lcmF0ZSB8fCAo
YnJ1dGVmb3JjZSAmJiBzdGFuZGFsb25lKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgcF9jaG9vc2VfbGVuZ3RoICgpOwoKICAgICAgICAgICAgICAgICAgICAgICAg
cF9jaG9vc2Vfc2VjbGV2ZWwgKCk7CiAgICAgICAgICAgICAgICB9Cn0KIyAzMyAiQnJlYWtEb3du
LmMiIDIKIyAxICJoZWFkZXJzL2Rpc3RyaWIuaCIgMQp2b2lkIHNlcnZpY2UgKGludCB2YWx1ZSk7
CnZvaWQgc2VuZF9yZXF1ZXN0IChpbnQgYnMpOwoKdm9pZCBjYWxjdWxhdGVfYmxvY2tfc2l6ZSAo
KQp7CiAgICAgICAgZF9ibG9ja19zaXplID0gMjA7Cn0KCmNyZWF0ZV9jb25uZWN0aW9uICgpCnsK
CgogICAgICAgIGludCBwZ3JwOwogICAgICAgIGludCBvcHQgPSAxOwogICAgICAgIHN0cnVjdCBz
b2NrYWRkcl9pbiBzYWRkcjsKCiAgICAgICAgaWYgKHNpZ25hbCAoMjksIHNlcnZpY2UpKQogICAg
ICAgIHsKICAgICAgICAgICAgICAgIHByaW50ZigiRXJyb3Igb24gc2V0dGluZyB1cCB0aGUgU0lH
SU8gc2lnbmFsLi4uXG5FeGl0aW5nXG4iKTsKICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAg
ICAgfQoKCiAgICAgICAgaWYgKChjbGllbnRTb2NrPXNvY2tldCgyLCBTT0NLX1NUUkVBTSwgMCkp
ID09IC0xKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHByaW50ZigiRXJyb3IgYWxsb2NhdGlu
ZyBhIHNvY2tldC4uLlxuRXhpdGluZ1xuIik7CiAgICAgICAgICAgICAgICBleGl0KDEpOwogICAg
ICAgIH0KCiAgICAgICAgc2FkZHIuc2luX2ZhbWlseSA9IDI7CiAgICAgICAgc2FkZHIuc2luX2Fk
ZHIuc19hZGRyID0gaW5ldF9hZGRyKHNlcnZlcl9pcCk7CiAgICAgICAgc2FkZHIuc2luX3BvcnQg
PSAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciB1bnNpZ25lZCBzaG9ydCBpbnQgX192OyBpZiAo
X19idWlsdGluX2NvbnN0YW50X3AgKHNlcnZlcl9wb3J0KSkgX192ID0gKCgoKHNlcnZlcl9wb3J0
KSA+PiA4KSAmIDB4ZmYpIHwgKCgoc2VydmVyX3BvcnQpICYgMHhmZikgPDwgOCkpOyBlbHNlIF9f
YXNtX18gX192b2xhdGlsZV9fICgicm9ydyAkOCwgJXcwIiA6ICI9ciIgKF9fdikgOiAiMCIgKCh1
bnNpZ25lZCBzaG9ydCBpbnQpIChzZXJ2ZXJfcG9ydCkpIDogImNjIik7IF9fdjsgfSkpOwoKCiAg
ICAgICAgcGdycCA9IGdldHBpZCgpOwogICAgICAgIGlmIChpb2N0bCAoY2xpZW50U29jaywgMHg4
OTAyLCAoY2hhciAqKSYocGdycCkpIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmlu
dGYoIkVycm9yIGluIGlvY3RsIGZ1bmN0aW9uLi4uXG5FeGl0aW5nXG4iKTsKICAgICAgICAgICAg
ICAgIGV4aXQoMSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZmNudGwgKGNsaWVudFNvY2ssIDgs
IHBncnApIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoIkVycm9yIGluIGZj
bnRsIGZ1bmN0aW9uIChGX1NFVE9XTikuLi5cbkV4aXRpbmdcbiIpOwogICAgICAgICAgICAgICAg
ZXhpdCgxKTsKICAgICAgICB9CgogICAgICAgIGlmIChmY250bCAoY2xpZW50U29jaywgNCwgMDIw
MDAwKSA8IDApCiAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnRmKCJFcnJvciBmY250bCBm
dW5jdGlvbiAoRl9TRVRGTCkuLi5cbkV4aXRpbmdcbiIpOwogICAgICAgICAgICAgICAgZXhpdCgx
KTsKICAgICAgICB9CgogICAgICAgIGlmICgoc2V0c29ja29wdChjbGllbnRTb2NrLCAxLCAyLCAm
b3B0LCBzaXplb2Yob3B0KSkgPCAwKSB8fCAoc2V0c29ja29wdChjbGllbnRTb2NrLCAxLCA5LCAm
b3B0LCBzaXplb2Yob3B0KSkgPCAwKSkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYo
IkVycm9yIGluIHNldHNvY2tvcHQuLi5cbkV4aXRpbmdcbiIpOwogICAgICAgICAgICAgICAgZXhp
dCgxKTsKICAgICAgICB9CgogICAgICAgIGlmIChjb25uZWN0KGNsaWVudFNvY2ssJnNhZGRyLHNp
emVvZihzYWRkcikpID09IC0xKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHByaW50ZigiVW5h
YmxlIHRvIGNvbm5lY3QgdG8gcmVtb3RlIGhvc3QuLi5cbkV4aXRpbmdcbiIpOwogICAgICAgICAg
ICAgICAgZXhpdCgxKTsKICAgICAgICB9CgoKfQoKdm9pZCBzZW5kX3JlcXVlc3QgKGludCBicykK
ewogICAgICAgIGNoYXIgcmVxdWVzdFsyXTsKCiAgICAgICAgcmVxdWVzdFswXSA9ICdyJzsKICAg
ICAgICByZXF1ZXN0WzFdID0gYnM7CgogICAgICAgIHNlbmQoY2xpZW50U29jayxyZXF1ZXN0LDIs
MCk7Cn0KCmNoZWNrX2Zvcl9hbGxfZGF0YSAoKQp7CgoKICAgICAgICBjaGFyIGFsbF9pc19yZWFk
eTsKCgogICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIiQxJDBr
NlN2NzBoJGR5TWpVd1J0MFdBMnZKeUlWV0J4cTEiKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgoIiQxJDBrNlN2NzBoJGR5TWpVd1J0MFdBMnZKeUlWV0J4cTEiKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgiJDEkMGs2U3Y3MGgkZHlNalV3UnQwV0Eydkp5SVZXQnhxMSIpID09IDEp
ICYmIHN0cmxlbiAoIiQxJDBrNlN2NzBoJGR5TWpVd1J0MFdBMnZKeUlWV0J4cTEiKSArIDEgPD0g
OCA/IF9fc3RyY3B5X3NtYWxsIChkaXN0cmliX3B3bGlzdC5zdG9yZWRwd29yZCwgX19leHRlbnNp
b25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIiQxJDBr
NlN2NzBoJGR5TWpVd1J0MFdBMnZKeUlWV0J4cTEiKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiJDEkMGs2U3Y3MGgkZHlNalV3UnQw
V0Eydkp5SVZXQnhxMSIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIkMSQwazZTdjcwaCRkeU1qVXdSdDBXQTJ2SnlJVldC
eHExIikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIiQxJDBrNlN2NzBoJGR5TWpVd1J0MFdBMnZKeUlWV0J4cTEiKSlbNF0pLCBfX2V4
dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCIkMSQwazZTdjcwaCRkeU1qVXdSdDBXQTJ2SnlJVldCeHExIikpWzAgKyAzXSA8PCA4IHwgKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIiQxJDBrNlN2NzBoJGR5
TWpVd1J0MFdBMnZKeUlWV0J4cTEiKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIiQxJDBrNlN2NzBoJGR5TWpVd1J0MFdBMnZKeUlW
V0J4cTEiKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIiQxJDBrNlN2NzBoJGR5TWpVd1J0MFdBMnZKeUlWV0J4cTEiKSlbMF0pLCBf
X2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCIkMSQwazZTdjcwaCRkeU1qVXdSdDBXQTJ2SnlJVldCeHExIikpWzQgKyAzXSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIiQxJDBrNlN2NzBo
JGR5TWpVd1J0MFdBMnZKeUlWV0J4cTEiKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIiQxJDBrNlN2NzBoJGR5TWpVd1J0MFdBMnZK
eUlWV0J4cTEiKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIiQxJDBrNlN2NzBoJGR5TWpVd1J0MFdBMnZKeUlWV0J4cTEiKSlbNF0p
LCBzdHJsZW4gKCIkMSQwazZTdjcwaCRkeU1qVXdSdDBXQTJ2SnlJVldCeHExIikgKyAxKSA6IChj
aGFyICopIG1lbWNweSAoZGlzdHJpYl9wd2xpc3Quc3RvcmVkcHdvcmQsICIkMSQwazZTdjcwaCRk
eU1qVXdSdDBXQTJ2SnlJVldCeHExIiwgc3RybGVuICgiJDEkMGs2U3Y3MGgkZHlNalV3UnQwV0Ey
dkp5SVZXQnhxMSIpICsgMSkpIDogc3RyY3B5IChkaXN0cmliX3B3bGlzdC5zdG9yZWRwd29yZCwg
IiQxJDBrNlN2NzBoJGR5TWpVd1J0MFdBMnZKeUlWV0J4cTEiKSkpOwogICAgICAgIGRfbGVuZ3Ro
ID0gbWlubGVuZ3RoID0gbWF4bGVuZ3RoID0gNTsKICAgICAgICBkX2Jsb2NrX251bSA9IDQ7CiAg
ICAgICAgU0xWTCA9IDI7CiAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFu
dF9wICgiYWFhYWEiKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImFhYWFhIikgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikoImFhYWFhIikgPT0gMSkgJiYgc3RybGVuICgiYWFhYWEi
KSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsIChkaXN0cmliX3B3bGlzdC5kaXN0cmlic3RhcnQs
IF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJhYWFhYSIpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJhYWFhYSIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhYWFhYSIpKVs0ICsgMV0gPDwgOCB8
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhYWFhYSIpKVs0
XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoImFhYWFhIikpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoImFhYWFhIikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhYWFhYSIpKVswICsgMV0pIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYWFhYWEiKSlb
MF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJhYWFhYSIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCJhYWFhYSIpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYWFhYWEiKSlbNCArIDFdKSA8PCA4
IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImFhYWFhIikp
WzRdKSwgc3RybGVuICgiYWFhYWEiKSArIDEpIDogKGNoYXIgKikgbWVtY3B5IChkaXN0cmliX3B3
bGlzdC5kaXN0cmlic3RhcnQsICJhYWFhYSIsIHN0cmxlbiAoImFhYWFhIikgKyAxKSkgOiBzdHJj
cHkgKGRpc3RyaWJfcHdsaXN0LmRpc3RyaWJzdGFydCwgImFhYWFhIikpKTsKICAgICAgICAoX19l
eHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJlYWFhYSIpID8gKCgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgiZWFhYWEiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiZWFh
YWEiKSA9PSAxKSAmJiBzdHJsZW4gKCJlYWFhYSIpICsgMSA8PSA4ID8gX19zdHJjcHlfc21hbGwg
KGRpc3RyaWJfcHdsaXN0LmRpc3RyaWJlbmQsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlYWFhYSIpKVswICsgMV0gPDwgOCB8ICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlYWFhYSIpKVswXSks
IF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJlYWFhYSIpKVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJlYWFhYSIpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImVhYWFhIikpWzAgKyAzXSA8PCA4
IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImVhYWFhIikp
WzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJlYWFhYSIpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiZWFhYWEiKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlYWFhYSIpKVs0ICsgM10gPDwg
OCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlYWFhYSIp
KVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiZWFhYWEiKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoImVhYWFhIikpWzRdKSwgc3RybGVuICgiZWFhYWEiKSArIDEpIDog
KGNoYXIgKikgbWVtY3B5IChkaXN0cmliX3B3bGlzdC5kaXN0cmliZW5kLCAiZWFhYWEiLCBzdHJs
ZW4gKCJlYWFhYSIpICsgMSkpIDogc3RyY3B5IChkaXN0cmliX3B3bGlzdC5kaXN0cmliZW5kLCAi
ZWFhYWEiKSkpOwoKICAgICAgICBicnV0ZWZvcmNlID0gMTsKICAgICAgICBydW5icnV0ZWZvcmNl
ID0gMTsKICAgICAgICBhbnlhdHRhY2sgPSAxOwogICAgICAgIHN0YXJ0ZGlzdHJpYnV0ZWQgPSAx
OwoKCiAgICAgICAgcHJpbnRmICgiXG5XYWl0aW5nIGZvciBkYXRhIGZyb20gc2VydmVyLi4uIik7
CiAgICAgICAgZG8KICAgICAgICB7CiAgICAgICAgICAgICAgICBhbGxfaXNfcmVhZHkgPSAxOwoK
ICAgICAgICAgICAgICAgIGlmIChkaXN0cmliX3B3bGlzdC5zdG9yZWRwd29yZFswXSA9PSAnXDAn
KQogICAgICAgICAgICAgICAgICAgICAgICBhbGxfaXNfcmVhZHkgPSAwOwoKICAgICAgICAgICAg
ICAgIGlmIChkX2xlbmd0aCA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICBhbGxfaXNfcmVh
ZHkgPSAwOwoKICAgICAgICAgICAgICAgIGlmIChtaW5sZW5ndGggPT0gMCkKICAgICAgICAgICAg
ICAgICAgICAgICAgYWxsX2lzX3JlYWR5ID0gMDsKCiAgICAgICAgICAgICAgICBpZiAobWF4bGVu
Z3RoID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGFsbF9pc19yZWFkeSA9IDA7CgogICAg
ICAgICAgICAgICAgaWYgKGRfYmxvY2tfbnVtID09IDApCiAgICAgICAgICAgICAgICAgICAgICAg
IGFsbF9pc19yZWFkeSA9IDA7CgogICAgICAgICAgICAgICAgaWYgKFNMVkwgPT0gMCkKICAgICAg
ICAgICAgICAgICAgICAgICAgYWxsX2lzX3JlYWR5ID0gMDsKCiAgICAgICAgICAgICAgICBpZiAo
ZGlzdHJpYl9wd2xpc3QuZGlzdHJpYnN0YXJ0WzBdID09ICdcMCcpCiAgICAgICAgICAgICAgICAg
ICAgICAgIGFsbF9pc19yZWFkeSA9IDA7CgogICAgICAgICAgICAgICAgaWYgKGRpc3RyaWJfcHds
aXN0LmRpc3RyaWJlbmRbMF0gPT0gJ1wwJykKICAgICAgICAgICAgICAgICAgICAgICAgYWxsX2lz
X3JlYWR5ID0gMDsKCiAgICAgICAgfXdoaWxlKCFhbGxfaXNfcmVhZHkpOwogICAgICAgIHByaW50
ZiAoIlxuUmVhZHkhIik7Cn0KCnZvaWQgc2VydmljZSAoaW50IHZhbHVlKQp7CgoKICAgICAgICBj
aGFyIHJlY3ZCdWZbMjU2XT0iIjsKICAgICAgICBpbnQgbiwgbTsKICAgICAgICBmZF9zZXQgcnNl
dDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqdGltbzsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0
aW1lb3V0OwogICAgICAgIHRpbW8gPSAmdGltZW91dDsKICAgICAgICB0aW1vLT50dl9zZWMgPSAw
OwogICAgICAgIHRpbW8tPnR2X3VzZWMgPSAwOwoKCiAgICAgICAgZG8geyBpbnQgX19kMCwgX19k
MTsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJjbGQ7IHJlcDsgc3Rvc2wiIDogIj1jIiAoX19kMCks
ICI9RCIgKF9fZDEpIDogImEiICgwKSwgIjAiIChzaXplb2YgKGZkX3NldCkgLyBzaXplb2YgKF9f
ZmRfbWFzaykpLCAiMSIgKCYoKCZyc2V0KS0+X19mZHNfYml0cylbMF0pIDogIm1lbW9yeSIpOyB9
IHdoaWxlICgwKTsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImJ0c2wgJTEsJTAiIDog
Ij1tIiAoKCgmcnNldCktPl9fZmRzX2JpdHMpWygoY2xpZW50U29jaykgLyAoOCAqIHNpemVvZiAo
X19mZF9tYXNrKSkpXSkgOiAiciIgKCgoaW50KSAoY2xpZW50U29jaykpICUgKDggKiBzaXplb2Yg
KF9fZmRfbWFzaykpKSA6ICJjYyIsIm1lbW9yeSIpOwoKCiAgICAgICAgaWYgKChuID0gc2VsZWN0
KGNsaWVudFNvY2srMSwgJnJzZXQsICgodm9pZCAqKTApLCAoKHZvaWQgKikwKSwgdGltbykpIDwg
MCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoIkVycm9yIGluIGNhbGxpbmcgdGhl
IHNlbGVjdCBmdW5jdGlvbi4uLlxuRXhpdGluZ1xuIik7CiAgICAgICAgICAgICAgICBleGl0KDEp
OwogICAgICAgIH0KCiAgICAgICAgaWYgKG4gPiAwKQogICAgICAgIHsKICAgICAgICAgICAgICAg
IGlmICgoX19leHRlbnNpb25fXyAoe3JlZ2lzdGVyIGNoYXIgX19yZXN1bHQ7IF9fYXNtX18gX192
b2xhdGlsZV9fICgiYnRsICUxLCUyIDsgc2V0Y2IgJWIwIiA6ICI9cSIgKF9fcmVzdWx0KSA6ICJy
IiAoKChpbnQpIChjbGllbnRTb2NrKSkgJSAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSkpLCAibSIg
KCgoJnJzZXQpLT5fX2Zkc19iaXRzKVsoKGNsaWVudFNvY2spIC8gKDggKiBzaXplb2YgKF9fZmRf
bWFzaykpKV0pIDogImNjIik7IF9fcmVzdWx0OyB9KSkpCiAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIG0gPSByZWN2KGNsaWVudFNvY2sscmVjdkJ1ZiwyNTYsMCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtID4gMCkKICAgICAgICAgICAgICAgICAgICAgICAg
ewoKCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAobSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnRmKCJcbkNvbm5lY3Rpb24gbG9zdCB0byByZW1vdGUgaG9zdC4u
LlxuRXhpdGluZ1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCgp9
CiMgMzQgIkJyZWFrRG93bi5jIiAyCgp2b2lkIHByaW50X3dlbGNvbWVfbWVzc2FnZSAoKQp7CiAg
ICAgICAgcHJpbnRmICgiV2VsY29tZSB0byBCcmVha0Rvd24hXG4iKTsKICAgICAgICBwcmludGYg
KCJCcm91Z2h0IHRvIHlvdSBieSBEZWVwIFNwYWNlIFByb2R1Y3Rpb25zIEluYy5cbiIpOwogICAg
ICAgIHByaW50ZiAoIkF0IGh0dHA6Ly93d3cuZHNwaS5vcmdcbiIpOwogICAgICAgIHByaW50ZiAo
IldyaXR0ZW4gYnkgJXNcbiIsICJCcmV0dCBLdXNraWUgJiYgQW50aG9ueSBNYWduZXIiKTsKICAg
ICAgICBwcmludGYgKCJWZXJzaW9uOiAlcyAtLSBEQVRFOiAlc1xuIiwgIjEuNGIxIiwgIjMvMi8y
MDAyIik7Cn0KCmludCBtYWluICgpCnsKICAgICAgICBpbnQgaTsKICAgICAgICBpbnQgazsKICAg
ICAgICBpbnQgbDsKICAgICAgICBpbnQgY291bnRlcjsKCiAgICAgICAgY2hhciBjcmFja291dHN0
cmluZ1s4MTkyXTsKICAgICAgICBjaGFyIGdlbm91dHN0cmluZ1s4MTkyXTsKICAgICAgICBjaGFy
IHBhc3NtYXRjaCA9IDA7CiAgICAgICAgaW50IHRlbXB1Y2hhcjsKICAgICAgICBjaGFyIGRvc2hp
ZnQgPSAwOwogICAgICAgIGNoYXIgb2xkWzI1NV07CiAgICAgICAgY2hhciAqdW5lbmNyeXB0ZWRf
cHRyLCAqZW5jcnlwdGVkX3B0cjsKICAgICAgICBjaGFyIGVuY1syNTVdOwogICAgICAgIGNoYXIg
c2luZ2xlZW5jWzI1NV07CgogICAgICAgIGNoYXIgYWxsY3JhY2tlZCA9IDA7CiAgICAgICAgY2hh
ciBkaWN0ZXh0aW5ndWlzaGVkID0gMDsKICAgICAgICBjaGFyIGNvbnRpbnVlbG9vcCA9IDE7Cgog
ICAgICAgIEZJTEUgKndyaXRlY3JhY2tlZDsKICAgICAgICBGSUxFICp3cml0ZWdlbjsKCiAgICAg
ICAgcHdsaXN0LnByZXYgPSAoKHZvaWQgKikwKTsKICAgICAgICBwd2xpc3QubmV4dCA9ICgodm9p
ZCAqKTApOwogICAgICAgIHB3bGlzdC5zdG9yZWRwd29yZFswXSA9ICdcMCc7CiAgICAgICAgcHds
aXN0LmNyYWNrZWRwd29yZFswXSA9ICdcMCc7CiAgICAgICAgcGN1cnIgPSAoc3RydWN0IHN0b3Jl
cHcgKilwaGVhZDsKICAgICAgICBkY3VyciA9IChzdHJ1Y3Qgc3RvcmVkdyAqKWRoZWFkOwogICAg
ICAgIG15ZGljdC5wcmV2ID0gKCh2b2lkICopMCk7CiAgICAgICAgbXlkaWN0Lm5leHQgPSAoKHZv
aWQgKikwKTsKICAgICAgICBteWRpY3QudGVzdGR3b3JkWzBdID0gJ1wwJzsKCiAgICAgICAgaWYg
KG15dWlkID09IC0xKQogICAgICAgIG15dWlkID0gZ2V0dWlkICgpOwoKICAgIHNldHNpZ25hbHMg
KCk7CgogICAgICAgIHByaW50X3dlbGNvbWVfbWVzc2FnZSAoKTsKCiAgICAgICAgc2V0cGFyYW1l
dGVycyAoKTsKCiAgICAgICAgaWYgKHN0YW5kYWxvbmUpCiAgICAgICAgewogICAgICAgICAgICAg
ICAgaWYgKCFyZXN1bWUpCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYW55YXR0YWNrKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRmICgiXG5QYXJzaW5nIFBhc3N3b3JkcyAoTG9hZGluZyBp
bnRvIFJBTSkuLi5cbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcHdv
cmRzIChpbmZpbGVuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYg
KCJcbkRvbmUhXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChkaWN0YXR0YWNrKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiXG5QYXJzaW5nIERpY3Rpb25hcnkg
KExvYWRpbmcgaW50byBSQU0pLi4uXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJzZWR3b3JkcyAoZGljdGluZmlsZW5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bmRpY3RhdHRhY2sgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRjdXJyID0gKHN0cnVjdCBzdG9yZWR3ICopZGhlYWQ7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJpbnRmICgiXG5Eb25lIVxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmZsdXNoIChzdGRvdXQpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHJlc3VtZSkKICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VzZXNzaW9uZmlsZSAoKTsKICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoKCFkaWN0YXR0YWNrKSAmJiAoYnJ1dGVmb3JjZSkp
CiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bmJydXRlZm9yY2UgPSAxOwogICAgICAgIH0KCiAg
ICAgICAgaWYgKGRpc3RyaWJ1dGVkKQogICAgICAgIHsKICAgICAgICAgICAgICAgIGNhbGN1bGF0
ZV9ibG9ja19zaXplICgpOwogICAgICAgICAgICAgICAgY3JlYXRlX2Nvbm5lY3Rpb24gKCk7CiAg
ICAgICAgICAgICAgICBzZW5kX3JlcXVlc3QgKGRfYmxvY2tfc2l6ZSk7CiAgICAgICAgICAgICAg
ICBjaGVja19mb3JfYWxsX2RhdGEgKCk7CiAgICAgICAgfQoKCgogICAgICAgIGlmICh3cml0ZWFu
eXRvZmlsZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxv
Z2NyYWNrZWR0b2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVjcmFja2VkID0gZm9wZW4gKGNy
YWNrZWRsb2csICJhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlZ2VudG9maWxlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdy
aXRlZ2VuID0gZm9wZW4gKG91dGZpbGVuYW1lLCAidyIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgcHJpbnRmICgiXG5SdW5uaW5n
Li4uXG4iKTsKCiAgICAgICAgaWYgKHN0YW5kYWxvbmUpCiAgICAgICAgewogICAgICAgICAgICAg
ICAgaWYgKCFyZXN1bWUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChkaWN0YXR0YWNrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAo
IkNyYWNraW5nIERpY3Rpb25hcnkgZmlsZS4uLlxuIik7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBpZiAocmVzdW1lKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocnVuZGljdGF0dGFjaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmludGYgKCJDb250aW51aW5nIENyYWNraW5nIERpY3Rpb25hcnkgZmlsZSBAICVzLi4uXG4i
LCB0ZXN0cGFzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydW5icnV0ZWZvcmNlKQog
ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJpbnRmICgiQ29udGludWluZyBCcnV0ZSBGb3JjZS4uLlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnRmICgiTnVtYmVyIG9mIENoYXJhY3RlcnMgaW4gdGVzdCBzdHJp
bmc6ICVpXG4iLCBzdHJsZW4gKHRlc3RwYXNzKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY291bnRlciA9IHN0cmxlbih0ZXN0cGFzcyktMTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydGJydXRlZm9yY2UgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjcmFja2luZ2hhc3N0YXJ0ZWQg
PSAxOwoKCiAgICAgICAgZG8KICAgICAgICB7CiAgICAgICAgICAgICAgICBjcmFja291dHN0cmlu
Z1swXSA9ICdcMCc7CiAgICAgICAgICAgICAgICBnZW5vdXRzdHJpbmdbMF0gPSAnXDAnOwogICAg
ICAgICAgICAgICAgcGFzc21hdGNoID0gMDsKCiAgICAgICAgICAgICAgICBpZiAocnVuZGljdGF0
dGFjaykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgKF9fZXh0ZW5z
aW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChkY3Vyci0+dGVzdGR3b3JkKSA/ICgoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgoZGN1cnItPnRlc3Rkd29yZCkgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikoZGN1cnItPnRlc3Rkd29yZCkgPT0gMSkgJiYgc3RybGVuIChkY3Vyci0+dGVzdGR3
b3JkKSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsICh0ZXN0cGFzcywgX19leHRlbnNpb25fXyAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGN1cnItPnRlc3Rk
d29yZCkpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoZGN1cnItPnRlc3Rkd29yZCkpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGN1cnItPnRlc3Rkd29yZCkpWzQg
KyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
ZGN1cnItPnRlc3Rkd29yZCkpWzRdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkY3Vyci0+dGVzdGR3b3JkKSlbMCArIDNdIDw8
IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkY3Vyci0+
dGVzdGR3b3JkKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoZGN1cnItPnRlc3Rkd29yZCkpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRjdXJyLT50ZXN0ZHdvcmQpKVsw
XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoZGN1cnItPnRlc3Rkd29yZCkpWzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGN1cnItPnRlc3Rkd29yZCkpWzQgKyAyXSkg
PDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRjdXJy
LT50ZXN0ZHdvcmQpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChkY3Vyci0+dGVzdGR3b3JkKSlbNF0pLCBzdHJsZW4gKGRjdXJyLT50
ZXN0ZHdvcmQpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKHRlc3RwYXNzLCBkY3Vyci0+dGVzdGR3
b3JkLCBzdHJsZW4gKGRjdXJyLT50ZXN0ZHdvcmQpICsgMSkpIDogc3RyY3B5ICh0ZXN0cGFzcywg
ZGN1cnItPnRlc3Rkd29yZCkpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBp
ZiAocnVuYnJ1dGVmb3JjZSB8fCBnZW5lcmF0ZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHN0YXJ0YnJ1dGVmb3JjZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bWUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh0ZXN0cGFzc1tjb3VudGVyXSAhPSAwKSB7IHRlc3RwYXNzW2NvdW50ZXJd
LS07IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJsZW4g
KHRlc3RwYXNzKSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmludGYgKCJOdW1iZXIgb2YgQ2hhcmFjdGVycyBpbiB0ZXN0IHN0cmluZzogJWlc
biIsIHN0cmxlbiAodGVzdHBhc3MpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIChpPTA7IGk8MjU2OyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RwYXNzW2ldID0gJ1wwJzsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb3VudGVyID0gbWlubGVuZ3RoLTE7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKGw9Y291bnRlci0xOyBsPj0wOyBsLS0pCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RwYXNzW2xdID0gZ2V0bmV4dHZhbGlkY2hhcih0ZXN0cGFzc1tsXSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGJydXRlZm9yY2UgPSAw
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dudW09MTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmludGYgKCJTdGFydGluZyBCcnV0ZSBGb3JjZS4uLlxuIik7
CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dGFydGRpc3RyaWJ1dGVkKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhcnRkaXN0cmlidXRlZCA9IDA7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY291bnRlciA9IG1pbmxlbmd0aC0xOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoZGlzdHJp
Yl9wd2xpc3QuZGlzdHJpYnN0YXJ0KSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoZGlzdHJp
Yl9wd2xpc3QuZGlzdHJpYnN0YXJ0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShkaXN0
cmliX3B3bGlzdC5kaXN0cmlic3RhcnQpID09IDEpICYmIHN0cmxlbiAoZGlzdHJpYl9wd2xpc3Qu
ZGlzdHJpYnN0YXJ0KSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsICh0ZXN0cGFzcywgX19leHRl
bnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGlz
dHJpYl9wd2xpc3QuZGlzdHJpYnN0YXJ0KSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkaXN0cmliX3B3bGlzdC5kaXN0cmlic3RhcnQp
KVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKGRpc3RyaWJfcHdsaXN0LmRpc3RyaWJzdGFydCkpWzQgKyAxXSA8PCA4IHwgKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGlzdHJpYl9wd2xpc3Qu
ZGlzdHJpYnN0YXJ0KSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRpc3RyaWJfcHdsaXN0LmRpc3RyaWJzdGFydCkpWzAg
KyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
ZGlzdHJpYl9wd2xpc3QuZGlzdHJpYnN0YXJ0KSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGlzdHJpYl9wd2xpc3QuZGlzdHJpYnN0
YXJ0KSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoZGlzdHJpYl9wd2xpc3QuZGlzdHJpYnN0YXJ0KSlbMF0pLCBfX2V4dGVuc2lvbl9f
ICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRpc3RyaWJf
cHdsaXN0LmRpc3RyaWJzdGFydCkpWzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGlzdHJpYl9wd2xpc3QuZGlzdHJpYnN0YXJ0KSlbNCAr
IDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
ZGlzdHJpYl9wd2xpc3QuZGlzdHJpYnN0YXJ0KSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGlzdHJpYl9wd2xpc3QuZGlzdHJpYnN0
YXJ0KSlbNF0pLCBzdHJsZW4gKGRpc3RyaWJfcHdsaXN0LmRpc3RyaWJzdGFydCkgKyAxKSA6IChj
aGFyICopIG1lbWNweSAodGVzdHBhc3MsIGRpc3RyaWJfcHdsaXN0LmRpc3RyaWJzdGFydCwgc3Ry
bGVuIChkaXN0cmliX3B3bGlzdC5kaXN0cmlic3RhcnQpICsgMSkpIDogc3RyY3B5ICh0ZXN0cGFz
cywgZGlzdHJpYl9wd2xpc3QuZGlzdHJpYnN0YXJ0KSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RwYXNzW2NvdW50ZXJdID0gJ1wwJzsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcHVjaGFyID0gZ2V0bmV4dHZhbGlkY2hh
cih0ZXN0cGFzc1tjb3VudGVyXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wdWNo
YXIgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3NoaWZ0ID0g
MTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RwYXNzWzBdID0g
MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RwYXNzWzBdID0g
Z2V0bmV4dHZhbGlkY2hhcih0ZXN0cGFzc1swXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKGs9Y291bnRlcjsgaz49MDsgay0tKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZW1wdWNoYXIgPSBnZXRuZXh0dmFsaWRjaGFyKHRlc3RwYXNzW2tdKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0ZW1wdWNoYXIg
PT0gLTEpICYmIChrID09IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9zaGlmdCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHBhc3Nba10gPSAwOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RwYXNzW2tdID0gZ2V0
bmV4dHZhbGlkY2hhciAodGVzdHBhc3Nba10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wdWNoYXIgPT0gLTEpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cGFzc1trXSA9IDA7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHBhc3Nb
a10gPSBnZXRuZXh0dmFsaWRjaGFyICh0ZXN0cGFzc1trXSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHBhc3Nba10gPSBnZXRuZXh0dmFsaWRjaGFy
ICh0ZXN0cGFzc1trXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChkb3NoaWZ0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0cmlnaHQgKHRlc3Rw
YXNzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RwYXNzWzBdID0gMDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RwYXNzWzBdID0gZ2V0
bmV4dHZhbGlkY2hhciAodGVzdHBhc3NbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9zaGlmdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaG93bnVtPTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cGFzc1tjb3VudGVyXSA9IHRlbXB1Y2hhcjsK
ICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgaWYgKChzaG93bnVtID09IDEpICYm
ICh0ZXN0cGFzc1ttYXhsZW5ndGhdID09IDApKQogICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgICBwcmludGYgKCJOdW1iZXIgb2YgQ2hhcmFjdGVycyBpbiB0ZXN0IHN0cmlu
ZzogJWlcbiIsIHN0cmxlbiAodGVzdHBhc3MpKTsKICAgICAgICAgICAgICAgICAgICAgICAgc2hv
d251bT0wOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChhbnlhdHRhY2sp
CiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZpcnN0ID0g
MTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXN0cmlidXRlZCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwY3VyciA9IChzdHJ1Y3Qgc3RvcmVwdyAqKWhfZGlzdHJpYl9w
d2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFuZGFsb25lKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBjdXJyID0gKHN0cnVjdCBzdG9yZXB3ICopcGhlYWQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3QpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmly
c3QgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwY3VyciA9IHBjdXJyLT5uZXh0OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHBjdXJyLT5zdG9yZWRwd29y
ZCkgPyAoKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHBjdXJyLT5zdG9yZWRwd29yZCkgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikocGN1cnItPnN0b3JlZHB3b3JkKSA9PSAxKSAmJiBzdHJs
ZW4gKHBjdXJyLT5zdG9yZWRwd29yZCkgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAob2xkLCBf
X2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChwY3Vyci0+c3RvcmVkcHdvcmQpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBjdXJyLT5zdG9yZWRwd29yZCkpWzBdKSwgX19leHRl
bnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocGN1
cnItPnN0b3JlZHB3b3JkKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChwY3Vyci0+c3RvcmVkcHdvcmQpKVs0XSksIF9fZXh0ZW5zaW9u
X18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocGN1cnIt
PnN0b3JlZHB3b3JkKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChwY3Vyci0+c3RvcmVkcHdvcmQpKVswICsgMl0pIDw8IDggfCAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwY3Vyci0+c3RvcmVkcHdv
cmQpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChwY3Vyci0+c3RvcmVkcHdvcmQpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocGN1cnItPnN0b3JlZHB3b3Jk
KSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChwY3Vyci0+c3RvcmVkcHdvcmQpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwY3Vyci0+c3RvcmVkcHdvcmQpKVs0ICsgMV0p
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwY3Vy
ci0+c3RvcmVkcHdvcmQpKVs0XSksIHN0cmxlbiAocGN1cnItPnN0b3JlZHB3b3JkKSArIDEpIDog
KGNoYXIgKikgbWVtY3B5IChvbGQsIHBjdXJyLT5zdG9yZWRwd29yZCwgc3RybGVuIChwY3Vyci0+
c3RvcmVkcHdvcmQpICsgMSkpIDogc3RyY3B5IChvbGQsIHBjdXJyLT5zdG9yZWRwd29yZCkpKTsK
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jcnlwdGVkX3B0ciA9IGNyeXB0ICh0
ZXN0cGFzcywgb2xkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19leHRlbnNp
b25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKGVuY3J5cHRlZF9wdHIpID8gKCgoc2l6ZV90KShj
b25zdCB2b2lkICopKChlbmNyeXB0ZWRfcHRyKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShlbmNyeXB0ZWRfcHRyKSA9PSAxKSAmJiBzdHJsZW4gKGVuY3J5cHRlZF9wdHIpICsgMSA8PSA4
ID8gX19zdHJjcHlfc21hbGwgKGVuYywgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW5jcnlwdGVkX3B0cikpWzAgKyAxXSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW5jcnlwdGVkX3B0
cikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoZW5jcnlwdGVkX3B0cikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW5jcnlwdGVkX3B0cikpWzRdKSwgX19leHRl
bnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChl
bmNyeXB0ZWRfcHRyKSlbMCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChlbmNyeXB0ZWRfcHRyKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW5jcnlwdGVkX3B0cikpWzAgKyAx
XSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVu
Y3J5cHRlZF9wdHIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW5jcnlwdGVkX3B0cikpWzQgKyAzXSA8PCA4IHwgKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW5jcnlwdGVkX3B0cikp
WzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKGVuY3J5cHRlZF9wdHIpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChlbmNyeXB0ZWRfcHRyKSlbNF0pLCBzdHJsZW4gKGVuY3J5
cHRlZF9wdHIpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKGVuYywgZW5jcnlwdGVkX3B0ciwgc3Ry
bGVuIChlbmNyeXB0ZWRfcHRyKSArIDEpKSA6IHN0cmNweSAoZW5jLCBlbmNyeXB0ZWRfcHRyKSkp
OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX19leHRlbnNpb25fXyAoeyBz
aXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKGVuY3J5cHRl
ZF9wdHIpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChvbGQpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAoZW5jcnlwdGVkX3B0ciksIF9fczJfbGVuID0gc3RybGVuIChvbGQpLCAoISgoc2l6ZV90KShj
b25zdCB2b2lkICopKChlbmNyeXB0ZWRfcHRyKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShlbmNyeXB0ZWRfcHRyKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShj
b25zdCB2b2lkICopKChvbGQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG9sZCkgPT0g
MSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChlbmNyeXB0
ZWRfcHRyKSwgKF9fY29uc3QgY2hhciAqKSAob2xkKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBf
X3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChlbmNyeXB0
ZWRfcHRyKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoZW5jcnlwdGVkX3B0cikgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikoZW5jcnlwdGVkX3B0cikgPT0gMSkgJiYgKF9fczFfbGVu
ID0gc3RybGVuIChlbmNyeXB0ZWRfcHRyKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29u
c3RhbnRfcCAob2xkKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgob2xkKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKShvbGQpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGVuY3J5cHRlZF9wdHIpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikob2xkKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoZW5jcnlwdGVkX3B0cikpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAob2xkKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoZW5jcnlwdGVkX3B0cikpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAob2xkKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09
IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKGVuY3J5cHRlZF9wdHIpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG9sZCkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25f
XyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKG9sZCk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChlbmNyeXB0ZWRfcHRyKSlb
MF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVuY3J5
cHRlZF9wdHIpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoZW5jcnlwdGVkX3B0cikpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYg
X19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoZW5jcnlwdGVkX3B0cikpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3Vs
dDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAob2xkKSAmJiAoKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgob2xkKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShvbGQpID09IDEpICYm
IChfX3MyX2xlbiA9IHN0cmxlbiAob2xkKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29u
c3RhbnRfcCAoZW5jcnlwdGVkX3B0cikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGVuY3J5
cHRlZF9wdHIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGVuY3J5cHRlZF9wdHIpID09
IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVuY3J5cHRlZF9wdHIpKVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikob2xkKSlbMF0pOyBp
ZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW5jcnlwdGVkX3B0cikpWzFdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob2xkKSlbMV0pOyBp
ZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW5jcnlwdGVkX3B0cikpWzJdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob2xkKSlbMl0pOyBp
ZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVuY3J5cHRlZF9wdHIpKVszXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9sZCkpWzNdKTsgfSB9
IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
Kl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVuY3J5
cHRlZF9wdHIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob2xkKSlbMF07IGlmIChfX3MyX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob2xkKSlbMV0pOyBpZiAoX19zMl9sZW4g
PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG9sZCkpWzJdKTsgaWYgKF9fczJfbGVu
ID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAob2xkKSlbM10pOyB9IH0gX19yZXN1bHQ7
IH0pKSkgOiBzdHJjbXAgKGVuY3J5cHRlZF9wdHIsIG9sZCkpKSk7IH0pID09IDApCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFzc21hdGNoKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHRlc3RwYXNzKSA/ICgo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgodGVzdHBhc3MpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2
b2lkICopKHRlc3RwYXNzKSA9PSAxKSAmJiBzdHJsZW4gKHRlc3RwYXNzKSArIDEgPD0gOCA/IF9f
c3RyY3B5X3NtYWxsIChwY3Vyci0+Y3JhY2tlZHB3b3JkLCBfX2V4dGVuc2lvbl9fICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0ZXN0cGFzcykpWzAgKyAxXSA8
PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodGVzdHBh
c3MpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKHRlc3RwYXNzKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICh0ZXN0cGFzcykpWzRdKSwgX19leHRlbnNpb25fXyAo
KCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0ZXN0cGFzcykp
WzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAodGVzdHBhc3MpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICh0ZXN0cGFzcykpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRlc3RwYXNzKSlbMF0pLCBfX2V4dGVuc2lv
bl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRlc3Rw
YXNzKSlbNCArIDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICh0ZXN0cGFzcykpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKHRlc3RwYXNzKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodGVzdHBhc3MpKVs0XSksIHN0cmxl
biAodGVzdHBhc3MpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKHBjdXJyLT5jcmFja2VkcHdvcmQs
IHRlc3RwYXNzLCBzdHJsZW4gKHRlc3RwYXNzKSArIDEpKSA6IHN0cmNweSAocGN1cnItPmNyYWNr
ZWRwd29yZCwgdGVzdHBhc3MpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocGFzc21hdGNoID09IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoZW5j
KSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoZW5jKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKShlbmMpID09IDEpICYmIHN0cmxlbiAoZW5jKSArIDEgPD0gOCA/IF9fc3RyY3B5X3Nt
YWxsIChzaW5nbGVlbmMsIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKGVuYykpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZW5jKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChlbmMpKVs0ICsgMV0gPDwg
OCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVuYykpWzRd
KSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChlbmMpKVswICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKGVuYykpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVuYykpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGVuYykpWzBdKSwgX19leHRlbnNpb25f
XyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChlbmMpKVs0
ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KGVuYykpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKGVuYykpWzQgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKGVuYykpWzRdKSwgc3RybGVuIChlbmMpICsgMSkgOiAoY2hhciAq
KSBtZW1jcHkgKHNpbmdsZWVuYywgZW5jLCBzdHJsZW4gKGVuYykgKyAxKSkgOiBzdHJjcHkgKHNp
bmdsZWVuYywgZW5jKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHN0YW5kYWxvbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsbGNyYWNrZWQgPSBjaGVja2ZvcmFsbGNyYWNrZWQoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWxsY3JhY2tlZCA9IDE7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9d2hpbGUgKHBjdXJyLT5uZXh0
ICE9ICgodm9pZCAqKTApKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXN0cmlidXRl
ZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY3VyciA9IChzdHJ1Y3Qgc3RvcmVw
dyAqKWhfZGlzdHJpYl9wd2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFuZGFs
b25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjdXJyID0gKHN0cnVjdCBzdG9y
ZXB3ICopcGhlYWQ7CiAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgICAgcHJpbnRm
KCIlc1xuIiwgdGVzdHBhc3MpOwoKCiAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGUpCiAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNhdCAoZ2Vub3V0c3RyaW5n
LCB0ZXN0cGFzcyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHBhc3Nt
YXRjaCAhPSAwKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
c3RhbmRhbG9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChwYXNzbWF0Y2ggPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjYXQg
KGNyYWNrb3V0c3RyaW5nLCB0ZXN0cGFzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJjYXQgKGNyYWNrb3V0c3RyaW5nLCAiOiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RyY2F0IChjcmFja291dHN0cmluZywgc2luZ2xlZW5j
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNhdCAoY3JhY2tv
dXRzdHJpbmcsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3NtYXRjaCA+IDEpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGZpcnN0ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBjdXJyID0gKHN0cnVjdCBzdG9yZXB3ICopcGhlYWQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZmlyc3QgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpcnN0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGN1cnIgPSBwY3Vyci0+bmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHBjdXJyLT5jcmFja2VkcHdvcmRbMF0gIT0gJ1wwJykKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNhdCAoY3Jh
Y2tvdXRzdHJpbmcsIHBjdXJyLT5jcmFja2VkcHdvcmQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNhdCAoY3JhY2tvdXRzdHJpbmcs
ICI6Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyY2F0IChjcmFja291dHN0cmluZywgcGN1cnItPnN0b3JlZHB3b3JkKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjYXQg
KGNyYWNrb3V0c3RyaW5nLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fXdoaWxlIChwY3Vyci0+bmV4dCAhPSAoKHZvaWQgKikwKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwY3VyciA9IChzdHJ1Y3Qgc3RvcmVwdyAqKXBoZWFkOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpc3RyaWJ1dGVkKQogICAgICAgICAgICAgICAg
ICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyYWNrb3V0c3RyaW5n
WzBdID0gJ2MnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyYWNrb3V0c3RyaW5n
WzBdID0gJzonOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNhdCAoY3JhY2tv
dXRzdHJpbmcsIHRlc3RwYXNzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJj
YXQgKGNyYWNrb3V0c3RyaW5nLCAiOiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmNhdCAoY3JhY2tvdXRzdHJpbmcsIHNpbmdsZWVuYyk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyY2F0IChjcmFja291dHN0cmluZywgIlwwIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VuZCAoY2xpZW50U29jaywgY3JhY2tvdXRzdHJpbmcsIHN0cmxl
bihjcmFja291dHN0cmluZyksIDApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHN0YW5kYWxvbmUpCiAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJjYXQgKGdlbm91dHN0cmluZywgIlxuIik7CgogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAod3JpdGVnZW50b2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZndyaXRl
IChnZW5vdXRzdHJpbmcsIHN0cmxlbiAoZ2Vub3V0c3RyaW5nKSwgMSwgd3JpdGVnZW4pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChsb2djcmFja2VkdG9maWxlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ3cml0ZSAoY3JhY2tvdXRzdHJp
bmcsIHN0cmxlbiAoY3JhY2tvdXRzdHJpbmcpLCAxLCB3cml0ZWNyYWNrZWQpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZsdXNoKHdyaXRlY3JhY2tlZCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cHJpbnRnZW50b3NjcmVlbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYg
KCIlcyIsIGdlbm91dHN0cmluZyk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9nY3Jh
Y2tlZHRvc2NyZWVuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiVz
IiwgY3JhY2tvdXRzdHJpbmcpOwogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICBp
ZiAocnVuZGljdGF0dGFjaykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGRjdXJyLT5uZXh0ICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGN1cnIgPSBkY3Vyci0+bmV4dDsK
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWN0ZXh0aW5ndWlzaGVkID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YnJ1dGVmb3JjZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5kaWN0YXR0YWNrID0gMDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bmJydXRlZm9yY2UgPSAxOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRicnV0ZWZvcmNlID0gMTsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTwyNTY7IGkr
KykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHBh
c3NbaV0gPSAnXDAnOwojIDQyOCAiQnJlYWtEb3duLmMiCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgaWYgKHN0YW5kYWxvbmUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghcnVuZGljdGF0dGFjayAmJiB0ZXN0cGFzc1ttYXhsZW5ndGhd
ICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWVsb29wID0gMDsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpY3RhdHRhY2sgJiYgIWJydXRlZm9yY2UpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGRpY3RleHRpbmd1aXNoZWQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlbG9vcCA9IDA7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnJ1dGVm
b3JjZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsY3JhY2tlZCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlbG9vcCA9IDA7CiAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGRpc3RyaWJ1dGVkKQogICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIChfX2V4dGVuc2lvbl9fICh7
IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAodGVzdHBh
c3MpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChkaXN0cmliX3B3bGlzdC5kaXN0cmliZW5kKSAm
JiAoX19zMV9sZW4gPSBzdHJsZW4gKHRlc3RwYXNzKSwgX19zMl9sZW4gPSBzdHJsZW4gKGRpc3Ry
aWJfcHdsaXN0LmRpc3RyaWJlbmQpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCh0ZXN0cGFz
cykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodGVzdHBhc3MpID09IDEpIHx8IF9fczFf
bGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGRpc3RyaWJfcHdsaXN0LmRp
c3RyaWJlbmQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGRpc3RyaWJfcHdsaXN0LmRp
c3RyaWJlbmQpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hh
ciAqKSAodGVzdHBhc3MpLCAoX19jb25zdCBjaGFyICopIChkaXN0cmliX3B3bGlzdC5kaXN0cmli
ZW5kKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDog
KF9fYnVpbHRpbl9jb25zdGFudF9wICh0ZXN0cGFzcykgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKHRlc3RwYXNzKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSh0ZXN0cGFzcykgPT0g
MSkgJiYgKF9fczFfbGVuID0gc3RybGVuICh0ZXN0cGFzcyksIF9fczFfbGVuIDwgNCkgPyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKGRpc3RyaWJfcHdsaXN0LmRpc3RyaWJlbmQpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKChkaXN0cmliX3B3bGlzdC5kaXN0cmliZW5kKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKShkaXN0cmliX3B3bGlzdC5kaXN0cmliZW5kKSA9PSAxKSA/IChfX2V4
dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICh0ZXN0cGFzcykpWzBdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShkaXN0cmliX3B3bGlzdC5kaXN0cmliZW5kKSlb
MF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodGVzdHBhc3MpKVsxXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRpc3RyaWJfcHds
aXN0LmRpc3RyaWJlbmQpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICh0ZXN0cGFzcykpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoZGlzdHJpYl9wd2xpc3QuZGlzdHJpYmVuZCkpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAm
JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICh0ZXN0cGFzcykpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoZGlzdHJpYl9wd2xpc3QuZGlzdHJpYmVuZCkpWzNdKTsgfSB9
IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
Kl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRpc3Ry
aWJfcHdsaXN0LmRpc3RyaWJlbmQpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodGVzdHBhc3MpKVswXSAtIF9fczJb
MF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodGVzdHBhc3MpKVsxXSAt
IF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodGVzdHBhc3Mp
KVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRlc3Rw
YXNzKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25z
dGFudF9wIChkaXN0cmliX3B3bGlzdC5kaXN0cmliZW5kKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoZGlzdHJpYl9wd2xpc3QuZGlzdHJpYmVuZCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoZGlzdHJpYl9wd2xpc3QuZGlzdHJpYmVuZCkgPT0gMSkgJiYgKF9fczJfbGVuID0gc3Ry
bGVuIChkaXN0cmliX3B3bGlzdC5kaXN0cmliZW5kKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAodGVzdHBhc3MpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCh0ZXN0
cGFzcykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikodGVzdHBhc3MpID09IDEpID8gKF9f
ZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHRlc3RwYXNzKSlbMF0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKGRpc3RyaWJfcHdsaXN0LmRpc3RyaWJlbmQp
KVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICh0ZXN0cGFzcykpWzFd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGlzdHJpYl9w
d2xpc3QuZGlzdHJpYmVuZCkpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHRlc3RwYXNzKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChkaXN0cmliX3B3bGlzdC5kaXN0cmliZW5kKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHRlc3RwYXNzKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChkaXN0cmliX3B3bGlzdC5kaXN0cmliZW5kKSlbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAodGVz
dHBhc3MpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGlzdHJpYl9wd2xpc3QuZGlzdHJpYmVuZCkp
WzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19z
MVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRpc3Ry
aWJfcHdsaXN0LmRpc3RyaWJlbmQpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoZGlzdHJpYl9wd2xpc3QuZGlzdHJpYmVuZCkpWzJdKTsgaWYgKF9f
czJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGlzdHJpYl9wd2xpc3QuZGlz
dHJpYmVuZCkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wICh0ZXN0cGFzcywgZGlz
dHJpYl9wd2xpc3QuZGlzdHJpYmVuZCkpKSk7IH0pID09IDApIHx8IChhbGxjcmFja2VkKSApCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWVsb29wID0gMDsKICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgfXdoaWxlIChjb250aW51ZWxvb3ApOwoKICAgICAgICBpZiAod3Jp
dGVhbnl0b2ZpbGUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChsb2djcmFja2VkdG9maWxlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSAod3JpdGVjcmFja2Vk
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAod3JpdGVnZW50b2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlICh3cml0ZWdl
bik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoK
ICAgICAgICBpZiAoYW55YXR0YWNrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZGlzdHJpYnV0ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGN1cnIgPSAoc3RydWN0IHN0b3JlcHcgKiloX2Rpc3RyaWJfcHdsaXN0OwogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RhbmRhbG9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwY3VyciA9IChzdHJ1Y3Qgc3RvcmVwdyAqKXBoZWFkOwogICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAocGN1cnItPm5leHQgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY3VyciA9IHBjdXJyLT5uZXh0
OwogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB3aGls
ZSAocGN1cnIgIT0gcGhlYWQpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdGVtcCA9IHBjdXJyOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBjdXJyID0gcGN1cnItPnByZXY7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnJlZSAocHRlbXApOwogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAg
ICAgICAgfQoKICAgICAgICBpZiAoZGljdGF0dGFjaykKICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgZGN1cnIgPSAoc3RydWN0IHN0b3JlZHcgKilkaGVhZDsKICAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKGRjdXJyLT5uZXh0ICE9ICgodm9pZCAqKTApKQogICAg
ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGN1
cnIgPSBkY3Vyci0+bmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKGRjdXJyICE9IGRoZWFkKQogICAgICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHRlbXAgPSBkY3VycjsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkY3VyciA9IGRjdXJyLT5wcmV2OwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyZWUgKGR0ZW1wKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgcHJpbnRmICgiXG5Eb25lIVxuIik7Cgog
ICAgICAgIHJldHVybiAwOwp9CgppbnQgY2hlY2tmb3JhbGxjcmFja2VkKCkKewogICAgICAgIHN0
b3JlcHdfdCAqbG9jYWxwY3VyciA9IChzdHJ1Y3Qgc3RvcmVwdyAqKXBoZWFkOwogICAgICAgIGlu
dCByZXRudW0gPSAwOwoKICAgICAgICBkbwogICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChs
b2NhbHBjdXJyLT5jcmFja2VkcHdvcmRbMF0gPT0gJ1wwJykKICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICBpZiAobG9jYWxwY3Vyci0+bmV4dCAhPSAoKHZvaWQg
KikwKSkKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxwY3VyciA9IGxvY2FscGN1cnItPm5l
eHQ7CiAgICAgICAgfXdoaWxlIChsb2NhbHBjdXJyLT5uZXh0ICE9ICgodm9pZCAqKTApKTsKICAg
ICAgICBpZiAoKGxvY2FscGN1cnItPm5leHQgPT0gKCh2b2lkICopMCkpICYmIChsb2NhbHBjdXJy
LT5jcmFja2VkcHdvcmRbMF0gIT0gJ1wwJykpCiAgICAgICAgICAgICAgICByZXRudW0gPSAxOwog
ICAgICAgIHJldHVybiByZXRudW07Cn0KCnZvaWQgcGFyc2Vwd29yZHMgKGNoYXIgaW5wZmlsZVsy
NTddKQp7CiAgICAgICAgY2hhciBjaG9pY2VbMl07CiAgICAgICAgY2hhciBidWZmZXJbMjU2XTsK
ICAgICAgICBjaGFyIGlucHV0Y2hhclsxXTsKICAgICAgICBjaGFyIHVzZXJuYW1lWzI1Nl07Cgog
ICAgICAgIEZJTEUgKnJlYWQ7CiAgICAgICAgaW50IGNvdW50ZXI9MDsKICAgICAgICBpbnQgY29s
b25jb3VudGVyID0gMDsKCiAgICAgICAgaWYgKGdldGN1c3RvbWZpbGUpCiAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQgPSBmb3BlbiAoaW5wZmlsZSwgInIiKTsK
CiAgICAgICAgICAgICAgICAgICAgICAgIHBzdGFydG92ZXI6CiAgICAgICAgICAgICAgICAgICAg
ICAgIGZyZWFkIChpbnB1dGNoYXIsIDEsIDEsIHJlYWQpOwogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZmVvZihyZWFkKSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gcGVuZDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0Y2hhclswXSA9PSAnIycp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJl
YWQgKGlucHV0Y2hhciwgMSwgMSwgcmVhZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChmZW9mKHJlYWQpICE9IDApCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRjaGFyWzBdID0gMTM7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9d2hpbGUgKChpbnB1dGNo
YXJbMF0gIT0gMTMpICYmIChpbnB1dGNoYXJbMF0gIT0gMTApKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcHN0YXJ0b3ZlcjsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChmZW9mKHJlYWQp
ID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBidWZmZXJbY291bnRlcl0gPSBpbnB1dGNoYXJbMF07CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY291bnRlcisrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZyZWFkIChpbnB1dGNoYXIsIDEsIDEsIHJlYWQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpbnB1dGNoYXJbMF0gPT0gJyMnKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJlYWQgKGlucHV0Y2hhciwgMSwgMSwgcmVhZCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlb2YocmVhZCkgIT0gMCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlucHV0Y2hhclswXSA9IDEzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9d2hpbGUgKChpbnB1dGNoYXJbMF0gIT0gMTMpICYmIChpbnB1dGNoYXJb
MF0gIT0gMTApKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGlucHV0Y2hhclswXSA9PSAxMykgfHwg
KGlucHV0Y2hhclswXSA9PSAxMCkgfHwgZmVvZihyZWFkKSAhPSAwKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBidWZmZXJbY291bnRlcl0gPSAnXDAnOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZWRzdGF0aWNwYWRkcmVzcykK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKGJ1ZmZlcikgPyAo
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGJ1ZmZlcikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoYnVmZmVyKSA9PSAxKSAmJiBzdHJsZW4gKGJ1ZmZlcikgKyAxIDw9IDggPyBfX3N0cmNw
eV9zbWFsbCAocGN1cnItPnN0b3JlZHB3b3JkLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVswICsgMV0gPDwgOCB8ICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzBdKSwg
X19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoYnVmZmVyKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChidWZmZXIpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMCArIDNdIDw8IDggfCAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVswICsg
Ml0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChi
dWZmZXIpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChidWZmZXIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbNCArIDNdIDw8IDggfCAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVs0ICsgMl0p
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZm
ZXIpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChidWZmZXIpKVs0XSksIHN0cmxlbiAoYnVmZmVyKSArIDEpIDogKGNoYXIgKikgbWVt
Y3B5IChwY3Vyci0+c3RvcmVkcHdvcmQsIGJ1ZmZlciwgc3RybGVuIChidWZmZXIpICsgMSkpIDog
c3RyY3B5IChwY3Vyci0+c3RvcmVkcHdvcmQsIGJ1ZmZlcikpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRzdGF0aWNw
YWRkcmVzcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkcHcgKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JldGhhbm9uZXBhc3N3
b3JkID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3VudGVyID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVmZmVyWzBdID0gJ1wwJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJlYWRhZ2FpbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJlYWQgKGlucHV0Y2hhciwgMSwgMSwgcmVhZCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dGNoYXJbMF0g
PT0gJyMnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWFkIChpbnB1dGNo
YXIsIDEsIDEsIHJlYWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmVvZihyZWFkKSAhPSAwKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlucHV0Y2hhclswXSA9IDEzOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfXdoaWxlICgoaW5w
dXRjaGFyWzBdICE9IDEzKSAmJiAoaW5wdXRjaGFyWzBdICE9IDEwKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHBy
ZWFkYWdhaW47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAgICAgcGVuZDoKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHBoZWFkLT5zdG9yZWRwd29yZFswXSA9PSAnXDAnKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByaW50ZiAoIlxhXG5cdFRoZXJlIGFyZSBubyBwYXNzd29yZHMgdG8g
Y3JhY2shIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg
ICAgIGZjbG9zZSAocmVhZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgaWYgKCFnZXRjdXN0
b21maWxlKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0
dXNlcnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
ZiAoIlxuTmFtZSBvZiB0aGUgdXNlcjogIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzY2FuZiAoIiVzIiwgdXNlcm5hbWUpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGdldHBhc3N3ZGZpbGUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKEdldE5vcm1hbFBhc3MgKHVzZXJuYW1lKSkgPyAoKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKEdldE5vcm1hbFBhc3MgKHVzZXJuYW1lKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoR2V0Tm9ybWFsUGFzcyAodXNlcm5hbWUpKSA9PSAxKSAmJiBzdHJsZW4gKEdldE5vcm1h
bFBhc3MgKHVzZXJuYW1lKSkgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAoYnVmZmVyLCBfX2V4
dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChH
ZXROb3JtYWxQYXNzICh1c2VybmFtZSkpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKEdldE5vcm1hbFBhc3MgKHVzZXJuYW1lKSkpWzBd
KSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoR2V0Tm9ybWFsUGFzcyAodXNlcm5hbWUpKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChHZXROb3JtYWxQYXNzICh1c2VybmFt
ZSkpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoR2V0Tm9ybWFsUGFzcyAodXNlcm5hbWUpKSlbMCArIDNdIDw8IDggfCAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChHZXROb3JtYWxQYXNz
ICh1c2VybmFtZSkpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChHZXROb3JtYWxQYXNzICh1c2VybmFtZSkpKVswICsgMV0pIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChHZXROb3JtYWxQ
YXNzICh1c2VybmFtZSkpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoR2V0Tm9ybWFsUGFzcyAodXNlcm5hbWUpKSlbNCAr
IDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChH
ZXROb3JtYWxQYXNzICh1c2VybmFtZSkpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChHZXROb3JtYWxQYXNzICh1c2VybmFtZSkpKVs0
ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChHZXROb3JtYWxQYXNzICh1c2VybmFtZSkpKVs0XSksIHN0cmxlbiAoR2V0Tm9ybWFsUGFzcyAo
dXNlcm5hbWUpKSArIDEpIDogKGNoYXIgKikgbWVtY3B5IChidWZmZXIsIEdldE5vcm1hbFBhc3Mg
KHVzZXJuYW1lKSwgc3RybGVuIChHZXROb3JtYWxQYXNzICh1c2VybmFtZSkpICsgMSkpIDogc3Ry
Y3B5IChidWZmZXIsIEdldE5vcm1hbFBhc3MgKHVzZXJuYW1lKSkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGdldHNoYWRvd2ZpbGUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKEdldFNoYWRvd1Bhc3MgKHVzZXJuYW1lKSkgPyAoKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKEdldFNoYWRvd1Bhc3MgKHVzZXJuYW1lKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoR2V0U2hhZG93UGFzcyAodXNlcm5hbWUpKSA9PSAxKSAmJiBzdHJsZW4gKEdldFNoYWRv
d1Bhc3MgKHVzZXJuYW1lKSkgKyAxIDw9IDggPyBfX3N0cmNweV9zbWFsbCAoYnVmZmVyLCBfX2V4
dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChH
ZXRTaGFkb3dQYXNzICh1c2VybmFtZSkpKVswICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKEdldFNoYWRvd1Bhc3MgKHVzZXJuYW1lKSkpWzBd
KSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoR2V0U2hhZG93UGFzcyAodXNlcm5hbWUpKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChHZXRTaGFkb3dQYXNzICh1c2VybmFt
ZSkpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoR2V0U2hhZG93UGFzcyAodXNlcm5hbWUpKSlbMCArIDNdIDw8IDggfCAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChHZXRTaGFkb3dQYXNz
ICh1c2VybmFtZSkpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChHZXRTaGFkb3dQYXNzICh1c2VybmFtZSkpKVswICsgMV0pIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChHZXRTaGFkb3dQ
YXNzICh1c2VybmFtZSkpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoR2V0U2hhZG93UGFzcyAodXNlcm5hbWUpKSlbNCAr
IDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChH
ZXRTaGFkb3dQYXNzICh1c2VybmFtZSkpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChHZXRTaGFkb3dQYXNzICh1c2VybmFtZSkpKVs0
ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChHZXRTaGFkb3dQYXNzICh1c2VybmFtZSkpKVs0XSksIHN0cmxlbiAoR2V0U2hhZG93UGFzcyAo
dXNlcm5hbWUpKSArIDEpIDogKGNoYXIgKikgbWVtY3B5IChidWZmZXIsIEdldFNoYWRvd1Bhc3Mg
KHVzZXJuYW1lKSwgc3RybGVuIChHZXRTaGFkb3dQYXNzICh1c2VybmFtZSkpICsgMSkpIDogc3Ry
Y3B5IChidWZmZXIsIEdldFNoYWRvd1Bhc3MgKHVzZXJuYW1lKSkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXJbMF0gPT0gJyonKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiXG4lcyBoYWQgbm8gcGFz
c3dvcmQsIGNhbm5vdCBsb2FkIiwgdXNlcm5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIXB3b3JkZXhpc3QoYnVmZmVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCF1c2Vkc3RhdGljcGFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9w
IChidWZmZXIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKChidWZmZXIpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKGJ1ZmZlcikgPT0gMSkgJiYgc3RybGVuIChidWZmZXIpICsgMSA8
PSA4ID8gX19zdHJjcHlfc21hbGwgKHBjdXJyLT5zdG9yZWRwd29yZCwgX19leHRlbnNpb25fXyAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMCAr
IDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChi
dWZmZXIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgo
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzAg
KyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
YnVmZmVyKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoYnVmZmVyKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzQgKyAz
XSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVm
ZmVyKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoYnVmZmVyKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbNF0pLCBzdHJsZW4gKGJ1ZmZlcikgKyAxKSA6
IChjaGFyICopIG1lbWNweSAocGN1cnItPnN0b3JlZHB3b3JkLCBidWZmZXIsIHN0cmxlbiAoYnVm
ZmVyKSArIDEpKSA6IHN0cmNweSAocGN1cnItPnN0b3JlZHB3b3JkLCBidWZmZXIpKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vkc3RhdGljcGFkZHJlc3MgPSAxOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHB3IChidWZmZXIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZXRoYW5vbmVwYXNzd29yZCA9IDE7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCJcbiVzIiwgYnVmZmVy
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIlRoYXQgcGFz
c3dvcmQgYWxyZWFkeSBleGlzdCBpbiBtZW1vcnkuLi5cbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCJcbkFub3RoZXIgKHkvbik/Iik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuZiAoIiVzIiwgY2hvaWNlKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH13aGlsZSAoKGNob2ljZVsw
XSAhPSAnbicpICYmIChjaG9pY2VbMF0gIT0gJ04nKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VhbGwpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY291bnRlcj0wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29sb25jb3VudGVyID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1ZmZlclswXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnB1dGNoYXJbMF0gPSAnXDAnOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlYWQgPSBmb3BlbiAocGFyc2VmaWxlLCAiciIpOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWFkIChpbnB1dGNoYXIsIDEsIDEsIHJlYWQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGZlb2YocmVhZCkg
PT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbG9uY291bnRlciA9
PSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ1ZmZlcltjb3VudGVyXSA9IGlucHV0Y2hhclswXTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50
ZXIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZy
ZWFkIChpbnB1dGNoYXIsIDEsIDEsIHJlYWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRjaGFyWzBdID09ICc6JykKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xv
bmNvdW50ZXIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZyZWFkIChpbnB1dGNoYXIsIDEsIDEsIHJlYWQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGNvbG9uY291bnRlciA+IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyZWFkIChpbnB1dGNoYXIsIDEsIDEsIHJlYWQpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGZlb2YocmVhZCkgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5wdXRjaGFyWzBdID0gMTM7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fXdoaWxlICgoaW5wdXRjaGFyWzBdICE9IDEzKSAmJiAoaW5wdXRjaGFyWzBdICE9IDEwKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKGlucHV0Y2hhclswXSA9PSAxMykgfHwgKGlucHV0Y2hhclswXSA9PSAxMCkg
fHwgZmVvZihyZWFkKSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltjb3VudGVyXSA9ICdcMCc7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYnVmZmVyWzBdID09ICcqJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBza2lwOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFwd29yZGV4aXN0KGJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIXVzZWRzdGF0aWNwYWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fZXh0ZW5z
aW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChidWZmZXIpID8gKCgoc2l6ZV90KShjb25zdCB2
b2lkICopKChidWZmZXIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGJ1ZmZlcikgPT0g
MSkgJiYgc3RybGVuIChidWZmZXIpICsgMSA8PSA4ID8gX19zdHJjcHlfc21hbGwgKHBjdXJyLT5z
dG9yZWRwd29yZCwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzQgKyAx
XSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVm
ZmVyKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzAgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMCArIDJdKSA8PCA4IHwgKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMCArIDFdKSA8
PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVy
KSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGJ1ZmZlcikpWzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbNCArIDJdKSA8PCA4IHwgKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbNCArIDFdKSA8PCA4
IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlb
NF0pLCBzdHJsZW4gKGJ1ZmZlcikgKyAxKSA6IChjaGFyICopIG1lbWNweSAocGN1cnItPnN0b3Jl
ZHB3b3JkLCBidWZmZXIsIHN0cmxlbiAoYnVmZmVyKSArIDEpKSA6IHN0cmNweSAocGN1cnItPnN0
b3JlZHB3b3JkLCBidWZmZXIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVzZWRzdGF0aWNwYWRkcmVzcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRwdyAoYnVm
ZmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZXRoYW5vbmVw
YXNzd29yZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnRmICgiXG4lcyIsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNraXA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb3VudGVyID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9uY291bnRlciA9IDA7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBidWZmZXJbMF0gPSAnXDAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlYWQgKGlucHV0Y2hhciwgMSwgMSwgcmVh
ZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlIChy
ZWFkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH0KfQoKdm9pZCBwYXJzZWR3b3JkcyAoY2hhciBpbmRmaWxlWzI1N10pCnsKICAgICAg
ICBGSUxFICpyZWFkOwogICAgICAgIGNoYXIgaW5wdXRjaGFyWzFdOwogICAgICAgIGNoYXIgYnVm
ZmVyWzI1Nl07CiAgICAgICAgaW50IGNvdW50ZXI9MDsKCiAgICAgICAgcmVhZCA9IGZvcGVuIChp
bmRmaWxlLCAiciIpOwoKICAgICAgICBkc3RhcnRvdmVyOgogICAgICAgIGZyZWFkIChpbnB1dGNo
YXIsIDEsIDEsIHJlYWQpOwogICAgICAgIGlmIChmZW9mKHJlYWQpICE9IDApCiAgICAgICAgICAg
ICAgICBnb3RvIGRlbmQ7CiAgICAgICAgaWYgKGlucHV0Y2hhclswXSA9PSAnIycpCiAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVhZCAoaW5wdXRjaGFyLCAx
LCAxLCByZWFkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmVvZihyZWFk
KSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRjaGFy
WzBdID0gMTM7CiAgICAgICAgICAgICAgICAgICAgICAgIH13aGlsZSAoKGlucHV0Y2hhclswXSAh
PSAxMykgJiYgKGlucHV0Y2hhclswXSAhPSAxMCkpOwogICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIGRzdGFydG92ZXI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgd2hpbGUgKGZlb2YocmVh
ZCkgPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBidWZmZXJbY291bnRlcl0gPSBpbnB1
dGNoYXJbMF07CiAgICAgICAgICAgICAgICBjb3VudGVyKys7CiAgICAgICAgICAgICAgICBmcmVh
ZCAoaW5wdXRjaGFyLCAxLCAxLCByZWFkKTsKICAgICAgICAgICAgICAgIGlmIChpbnB1dGNoYXJb
MF0gPT0gJyMnKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVhZCAoaW5wdXRjaGFyLCAxLCAxLCBy
ZWFkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZW9mKHJl
YWQpICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlucHV0Y2hhclswXSA9IDEzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH13aGls
ZSAoKGlucHV0Y2hhclswXSAhPSAxMykgJiYgKGlucHV0Y2hhclswXSAhPSAxMCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKGlucHV0Y2hhclswXSA9PSAx
MykgfHwgKGlucHV0Y2hhclswXSA9PSAxMCkgfHwgZmVvZihyZWFkKSAhPSAwKQogICAgICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2Nv
dW50ZXJdID0gJ1wwJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWR3b3Jk
ZXhpc3QoYnVmZmVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2Vk
c3RhdGljZGFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFu
dF9wIChidWZmZXIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKChidWZmZXIpICsgMSkgLSAo
c2l6ZV90KShjb25zdCB2b2lkICopKGJ1ZmZlcikgPT0gMSkgJiYgc3RybGVuIChidWZmZXIpICsg
MSA8PSA4ID8gX19zdHJjcHlfc21hbGwgKGRjdXJyLT50ZXN0ZHdvcmQsIF9fZXh0ZW5zaW9uX18g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzAg
KyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
YnVmZmVyKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChidWZmZXIpKVs0ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzRdKSwgX19leHRlbnNpb25fXyAo
KCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVsw
ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KGJ1ZmZlcikpWzAgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGJ1ZmZlcikpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzBdKSwgX19leHRlbnNpb25fXyAoKCgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVs0ICsg
M10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1
ZmZlcikpWzQgKyAyXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKGJ1ZmZlcikpWzQgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzRdKSwgc3RybGVuIChidWZmZXIpICsgMSkg
OiAoY2hhciAqKSBtZW1jcHkgKGRjdXJyLT50ZXN0ZHdvcmQsIGJ1ZmZlciwgc3RybGVuIChidWZm
ZXIpICsgMSkpIDogc3RyY3B5IChkY3Vyci0+dGVzdGR3b3JkLCBidWZmZXIpKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2Vkc3RhdGljZGFkZHJlc3MgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGR3IChidWZmZXIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZXRo
YW5vbmVkd29yZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyID0gMDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJbMF0gPSAnXDAnOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRyZWFkYWdhaW46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJlYWQgKGlucHV0Y2hhciwgMSwgMSwgcmVhZCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlucHV0Y2hhclswXSA9PSAnIycpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcmVhZCAoaW5wdXRjaGFyLCAxLCAxLCByZWFkKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfXdoaWxlICgoaW5wdXRjaGFyWzBdICE9IDEzKSAm
JiAoaW5wdXRjaGFyWzBdICE9IDEwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gZHJlYWRhZ2FpbjsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgIH07Cgog
ICAgICAgIGRlbmQ6CiAgICAgICAgaWYgKGRoZWFkLT50ZXN0ZHdvcmRbMF0gPT0gJ1wwJykKICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiXGFcblx0VGhl
cmUgYXJlIG5vIGRpY3Rpb25hcnkgd29yZHMgdG8gdXNlISIpOwogICAgICAgICAgICAgICAgICAg
ICAgICBleGl0KDEpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICBmY2xvc2UgKHJlYWQpOwp9
Cgp2b2lkIHNhdmVfZXhpdCAoaW50IHNpZ251bSkKewogICAgICAgIHByaW50ZiAoIlxuQ2F1Z2h0
IFNJR0lOVFxuIik7CiAgICAgICAgaWYgKGNyYWNraW5naGFzc3RhcnRlZCAmJiBzdGFuZGFsb25l
ICYmICFnZW5lcmF0ZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
cHJpbnRmICgic2F2aW5nLi4uXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZXNlc3Np
b24gKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgZXhpdCAoMCk7Cn0KCnZvaWQgc2F2ZXNl
c3Npb24gKCkKewogICAgICAgIGNoYXIgb3V0c3RyWzI1Nl07CiAgICAgICAgY2hhciBjaFsyXTsK
ICAgICAgICBpbnQgdGVtcCwgdGVtcDI7CiAgICAgICAgRklMRSAqd3JpdGVzZXM7CiAgICAgICAg
c3RvcmVwd190ICpsb2NhbHBjdXJyOwogICAgICAgIGRpY3RfdCAqbG9jYWxkY3VycjsKICAgICAg
ICBvdXRzdHJbMF0gPSAnXDAnOwogICAgICAgIGNoWzFdID0gJ1wwJzsKCiAgICAgICAgbG9jYWxw
Y3VyciA9IChzdHJ1Y3Qgc3RvcmVwdyAqKXBoZWFkOwogICAgICAgIGxvY2FsZGN1cnIgPSAoc3Ry
dWN0IHN0b3JlZHcgKilkaGVhZDsKICAgICAgICB3cml0ZXNlcyA9IGZvcGVuIChzZXNzaW9uLCAi
dyIpOwoKICAgICAgICBpZiAoZGljdGF0dGFjaykKICAgICAgICAgICAgICAgIHN0cmNhdCAob3V0
c3RyLCAiZCIpOwogICAgICAgIGlmIChicnV0ZWZvcmNlKQogICAgICAgICAgICAgICAgc3RyY2F0
IChvdXRzdHIsICJiIik7CgoKICAgICAgICBpZiAoYnJ1dGVmb3JjZSkKICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RyY2F0IChvdXRzdHIsICIvIik7CiMgODQxICJC
cmVha0Rvd24uYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAg
PSAoaW50KShtaW5sZW5ndGgvMTApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVtcDIgPSBtaW5sZW5ndGggLSAodGVtcCoxMCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaFswXSA9IGkyYyAodGVtcCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJjYXQgKG91dHN0ciwgY2gpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hbMF0gPSBpMmMgKHRlbXAyKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNhdCAob3V0c3RyLCBjaCk7CgoKICAg
ICAgICAgICAgICAgICAgICAgICAgc3RyY2F0IChvdXRzdHIsICIvIik7CiMgODYxICJCcmVha0Rv
d24uYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSAoaW50
KShtYXhsZW5ndGgvMTApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVtcDIgPSBtYXhsZW5ndGggLSAodGVtcCoxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaFswXSA9IGkyYyAodGVtcCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJjYXQgKG91dHN0ciwgY2gpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hbMF0gPSBpMmMgKHRlbXAyKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNhdCAob3V0c3RyLCBjaCk7CgoKICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyY2F0IChvdXRzdHIsICIvIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGNoWzBdID0gaTJjIChTTFZMKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RyY2F0IChv
dXRzdHIsIGNoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICBzdHJjYXQgKG91dHN0ciwgIlxu
Iik7CiAgICAgICAgZndyaXRlIChvdXRzdHIsIHN0cmxlbiAob3V0c3RyKSwgMSwgd3JpdGVzZXMp
OwoKICAgICAgICBvdXRzdHJbMF0gPSAnXDAnOwogICAgICAgIGlmIChsb2djcmFja2VkdG9zY3Jl
ZW4pCiAgICAgICAgICAgICAgICBzdHJjYXQgKG91dHN0ciwgInMiKTsKICAgICAgICBpZiAobG9n
Y3JhY2tlZHRvZmlsZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
c3RyY2F0IChvdXRzdHIsICJmOiIpOwogICAgICAgICAgICAgICAgICAgICAgICBzdHJjYXQgKG91
dHN0ciwgY3JhY2tlZGxvZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgc3RyY2F0IChvdXRz
dHIsICJcbiIpOwogICAgICAgIGZ3cml0ZSAob3V0c3RyLCBzdHJsZW4gKG91dHN0ciksIDEsIHdy
aXRlc2VzKTsKCiAgICAgICAgb3V0c3RyWzBdID0gJ1wwJzsKICAgICAgICBpZiAocnVuYnJ1dGVm
b3JjZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RyY2F0IChv
dXRzdHIsICJiIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgaWYgKHJ1bmRpY3RhdHRhY2sp
CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNhdCAob3V0c3Ry
LCAiZCIpOwogICAgICAgICAgICAgICAgfQogICAgICAgIHN0cmNhdCAob3V0c3RyLCAiXG4iKTsK
ICAgICAgICBmd3JpdGUgKG91dHN0ciwgc3RybGVuIChvdXRzdHIpLCAxLCB3cml0ZXNlcyk7CiMg
OTE0ICJCcmVha0Rvd24uYyIKICAgICAgICBvdXRzdHJbMF0gPSAnXDAnOwogICAgICAgIGlmIChk
aWN0YXR0YWNrKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgZndy
aXRlIChkaWN0aW5maWxlbmFtZSwgc3RybGVuIChkaWN0aW5maWxlbmFtZSksIDEsIHdyaXRlc2Vz
KTsKICAgICAgICAgICAgICAgICAgICAgICAgZndyaXRlICgiXG4iLCAxLCAxLCB3cml0ZXNlcyk7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgIGZ3cml0ZSAoIlBhc3N3b3JkczpcbiIsIHN0cmxl
biAoIlBhc3N3b3JkczpcbiIpLCAxLCB3cml0ZXNlcyk7CiAgICAgICAgc3RhcnRwOgogICAgICAg
IGZ3cml0ZSAobG9jYWxwY3Vyci0+c3RvcmVkcHdvcmQsIHN0cmxlbiAobG9jYWxwY3Vyci0+c3Rv
cmVkcHdvcmQpLCAxLCB3cml0ZXNlcyk7CiAgICAgICAgZndyaXRlICgiXG4iLCAxLCAxLCB3cml0
ZXNlcyk7CiAgICAgICAgaWYgKGxvY2FscGN1cnItPm5leHQgIT0gKCh2b2lkICopMCkpCiAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscGN1cnIgPSBsb2NhbHBj
dXJyLT5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0cDsKICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgZndyaXRlICgiTGFzdCBXb3JkOlxuIiwgc3RybGVuICgiTGFzdCBX
b3JkOlxuIiksIDEsIHdyaXRlc2VzKTsKICAgICAgICBmd3JpdGUgKHRlc3RwYXNzLCBzdHJsZW4g
KHRlc3RwYXNzKSwgMSwgd3JpdGVzZXMpOwoKICAgICAgICBmZmx1c2ggKHdyaXRlc2VzKTsKICAg
ICAgICBmY2xvc2UgKHdyaXRlc2VzKTsKfQoKdm9pZCBwYXJzZXNlc3Npb25maWxlICgpCnsKICAg
ICAgICBpbnQgY291bnRlciA9IDA7CiAgICAgICAgRklMRSAqcmVhZHNlczsKICAgICAgICBjaGFy
IGlucHV0Y2hhclsxXTsKICAgICAgICBjaGFyIGJ1ZmZlclsyNTZdOwogICAgICAgIHN0b3JlcHdf
dCAqbG9jYWxwY3VyciA9IChzdHJ1Y3Qgc3RvcmVwdyAqKXBoZWFkOwogICAgICAgIGRpY3RfdCAq
bG9jYWxkY3VyciA9IChzdHJ1Y3Qgc3RvcmVkdyAqKWRoZWFkOwoKICAgICAgICBhbnlhdHRhY2sg
PSAxOwoKICAgICAgICByZWFkc2VzID0gZm9wZW4gKHNlc3Npb24sICJyIik7CgogICAgICAgIGx2
bDE6CiAgICAgICAgZnJlYWQgKGlucHV0Y2hhciwgMSwgMSwgcmVhZHNlcyk7CiAgICAgICAgaWYg
KGlucHV0Y2hhclswXSA9PSAnYicpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW50ZiAoIlxuQnJ1dGVGb3JjZSBBdHRhY2sgPSB0cnVlIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGJydXRlZm9yY2UgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dGJydXRlZm9yY2UgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGx2bDE7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgaWYgKGlucHV0Y2hhclswXSA9PSAnZCcpCiAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIlxuRGljdG9uYXJ5IEF0dGFj
ayA9IHRydWUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZGljdGF0dGFjayA9IDE7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gbHZsMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
Y291bnRlcj0wOwogICAgICAgIGx2bDI6CiAgICAgICAgaWYgKGJydXRlZm9yY2UpCiAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZyZWFkIChpbnB1dGNoYXIsIDEsIDEs
IHJlYWRzZXMpOwogICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGggPSAxMCAqIGMyaSAo
aW5wdXRjaGFyWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZnJlYWQgKGlucHV0Y2hhciwg
MSwgMSwgcmVhZHNlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aCArPSBjMmkg
KGlucHV0Y2hhclswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIlxubWlubGVu
Z3RoOiAlaSIsIG1pbmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZyZWFkIChpbnB1
dGNoYXIsIDEsIDEsIHJlYWRzZXMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZnJlYWQgKGlu
cHV0Y2hhciwgMSwgMSwgcmVhZHNlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0
aCA9IDEwICogYzJpIChpbnB1dGNoYXJbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICBmcmVh
ZCAoaW5wdXRjaGFyLCAxLCAxLCByZWFkc2VzKTsKICAgICAgICAgICAgICAgICAgICAgICAgbWF4
bGVuZ3RoICs9IGMyaSAoaW5wdXRjaGFyWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgcHJp
bnRmICgiXG5tYXhsZW5ndGg6ICVpIiwgbWF4bGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgZnJlYWQgKGlucHV0Y2hhciwgMSwgMSwgcmVhZHNlcyk7CgogICAgICAgICAgICAgICAgICAg
ICAgICBmcmVhZCAoaW5wdXRjaGFyLCAxLCAxLCByZWFkc2VzKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgU0xWTCA9IGMyaSAoaW5wdXRjaGFyWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAg
cHJpbnRmICgiXG5TZWN1cml0eSBMZXZlbDogJWkiLCBTTFZMKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgZnJlYWQgKGlucHV0Y2hhciwgMSwgMSwgcmVhZHNlcyk7CiAgICAgICAgICAgICAgICB9
CgogICAgICAgIGx2bDM6CiAgICAgICAgZnJlYWQgKGlucHV0Y2hhciwgMSwgMSwgcmVhZHNlcyk7
CiAgICAgICAgaWYgKGlucHV0Y2hhclswXSA9PSAncycpCiAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2NyYWNrZWR0b3NjcmVlbiA9IDE7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHByaW50ZiAoIlxuTG9nIENyYWNrZWQgdG8gU2NyZWVuID0gdHJ1ZSIpOwogICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIGx2bDM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
aWYgKGlucHV0Y2hhclswXSA9PSAnZicpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHdyaXRlYW55dG9maWxlID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgbG9n
Y3JhY2tlZHRvZmlsZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIlxuTG9n
IENyYWtlZCB0byBmaWxlID0gdHJ1ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICBmcmVhZCAo
aW5wdXRjaGFyLCAxLCAxLCByZWFkc2VzKTsKICAgICAgICAgICAgICAgICAgICAgICAgZnJlYWQg
KGlucHV0Y2hhciwgMSwgMSwgcmVhZHNlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxl
ICgoaW5wdXRjaGFyWzBdICE9IDEwKSAmJiAoaW5wdXRjaGFyWzBdICE9IDEzKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltj
b3VudGVyXSA9IGlucHV0Y2hhclswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b3VudGVyKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlYWQgKGlucHV0Y2hh
ciwgMSwgMSwgcmVhZHNlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgYnVmZmVyW2NvdW50ZXJdID0gJ1wwJzsKICAgICAgICAgICAgICAgICAgICAg
ICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChidWZmZXIpID8gKCgoc2l6
ZV90KShjb25zdCB2b2lkICopKChidWZmZXIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KGJ1ZmZlcikgPT0gMSkgJiYgc3RybGVuIChidWZmZXIpICsgMSA8PSA4ID8gX19zdHJjcHlfc21h
bGwgKGNyYWNrZWRsb2csIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMF0pLCBfX2V4dGVuc2lvbl9f
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVs0
ICsgMV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KGJ1ZmZlcikpWzRdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVswICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzAgKyAyXSkgPDwgOCB8ICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzAgKyAx
XSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1
ZmZlcikpWzBdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChidWZmZXIpKVs0ICsgM10gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzQgKyAyXSkgPDwgOCB8ICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzQgKyAxXSkg
PDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZl
cikpWzRdKSwgc3RybGVuIChidWZmZXIpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKGNyYWNrZWRs
b2csIGJ1ZmZlciwgc3RybGVuIChidWZmZXIpICsgMSkpIDogc3RyY3B5IChjcmFja2VkbG9nLCBi
dWZmZXIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIlxuQ3JhY2tlZCBMb2cg
ZmlsZSA9ICVzIiwgY3JhY2tlZGxvZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXI9
MDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgbHZsNDoKICAgICAgICBmcmVhZCAoaW5wdXRj
aGFyLCAxLCAxLCByZWFkc2VzKTsKICAgICAgICBpZiAoaW5wdXRjaGFyWzBdID09ICdiJykKICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiXG5CcnV0ZUZv
cmNlIEF0dGFjayB3YXMgaW4gc2Vzc2lvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICBydW5i
cnV0ZWZvcmNlID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgcnVuZGljdGF0dGFjayA9IDA7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgaWYgKGlucHV0Y2hhclswXSA9PSAnZCcpCiAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIlxuRGljdG9uYXJ5
IEF0dGFjayB3YXMgaW4gc2Vzc2lvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICBydW5kaWN0
YXR0YWNrID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgcnVuYnJ1dGVmb3JjZSA9IDA7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgZnJlYWQgKGlucHV0Y2hhciwgMSwgMSwgcmVhZHNlcyk7
CgogICAgICAgIGx2bDU6CgoKCiAgICAgICAgZnJlYWQgKGlucHV0Y2hhciwgMSwgMSwgcmVhZHNl
cyk7CiAgICAgICAgd2hpbGUgKChpbnB1dGNoYXJbMF0gIT0gMTApICYmIChpbnB1dGNoYXJbMF0g
IT0gMTMpKQogICAgICAgIHsKICAgICAgICAgICAgICAgIGJ1ZmZlcltjb3VudGVyXSA9IGlucHV0
Y2hhclswXTsKICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAgICAgICAgICAgIGZyZWFk
IChpbnB1dGNoYXIsIDEsIDEsIHJlYWRzZXMpOwogICAgICAgIH0KICAgICAgICBidWZmZXJbY291
bnRlcl0gPSAnXDAnOwoKICAgICAgICBpZiAoIWRpY3RhdHRhY2spCiAgICAgICAgICAgICAgICBw
cmludGYgKCJcblxuJXMiLCBidWZmZXIpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFu
dF9wIChidWZmZXIpID8gKCgoc2l6ZV90KShjb25zdCB2b2lkICopKChidWZmZXIpICsgMSkgLSAo
c2l6ZV90KShjb25zdCB2b2lkICopKGJ1ZmZlcikgPT0gMSkgJiYgc3RybGVuIChidWZmZXIpICsg
MSA8PSA4ID8gX19zdHJjcHlfc21hbGwgKGRpY3RpbmZpbGVuYW1lLCBfX2V4dGVuc2lvbl9fICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVswICsg
MV0gPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1
ZmZlcikpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoYnVmZmVyKSlbNCArIDFdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVs0XSksIF9fZXh0ZW5zaW9uX18gKCgo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMCAr
IDNdIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChi
dWZmZXIpKVswICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChidWZmZXIpKVswICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVswXSksIF9fZXh0ZW5zaW9uX18gKCgoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbNCArIDNd
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZm
ZXIpKVs0ICsgMl0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChidWZmZXIpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVs0XSksIHN0cmxlbiAoYnVmZmVyKSArIDEpIDog
KGNoYXIgKikgbWVtY3B5IChkaWN0aW5maWxlbmFtZSwgYnVmZmVyLCBzdHJsZW4gKGJ1ZmZlcikg
KyAxKSkgOiBzdHJjcHkgKGRpY3RpbmZpbGVuYW1lLCBidWZmZXIpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGNvdW50ZXI9MDsKCgogICAgICAgICAgICAgICAgICAgICAgICBmcmVhZCAoaW5w
dXRjaGFyLCAxLCAxLCByZWFkc2VzKTsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChp
bnB1dGNoYXJbMF0gIT0gMTApICYmIChpbnB1dGNoYXJbMF0gIT0gMTMpKQogICAgICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2NvdW50
ZXJdID0gaW5wdXRjaGFyWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50
ZXIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVhZCAoaW5wdXRjaGFyLCAx
LCAxLCByZWFkc2VzKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICBidWZmZXJbY291bnRlcl0gPSAnXDAnOwogICAgICAgICAgICAgICAgICAgICAgICBw
cmludGYgKCJcblxuJXMiLCBidWZmZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgIGNvdW50
ZXI9MDsKCiAgICAgICAgaWYgKGRpY3RhdHRhY2spCiAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChydW5kaWN0YXR0YWNrKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
ZiAoIlxuUGFyc2luZyBEaWN0aW9uYXJ5IChMb2FkaW5nIGludG8gUkFNKS4uLlxuIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWR3b3JkcyAoZGljdGluZmls
ZW5hbWUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjdXJyID0g
KHN0cnVjdCBzdG9yZWR3ICopZGhlYWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmludGYgKCJcbkRvbmUhXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZmbHVzaCAoc3Rkb3V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiMgMTExMSAiQnJlYWtEb3duLmMiCiAgICAgICAgICAgICAgICB9CgoKICAgICAgICBs
dmw2OgogICAgICAgIHdoaWxlIChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19z
Ml9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYnVmZmVyKSAmJiBfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoIkxhc3QgV29yZDoiKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKGJ1ZmZlciksIF9fczJf
bGVuID0gc3RybGVuICgiTGFzdCBXb3JkOiIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChi
dWZmZXIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGJ1ZmZlcikgPT0gMSkgfHwgX19z
MV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIkxhc3QgV29yZDoiKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiTGFzdCBXb3JkOiIpID09IDEpIHx8IF9fczJf
bGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSwgKF9fY29uc3Qg
Y2hhciAqKSAoIkxhc3QgV29yZDoiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6
IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChidWZmZXIpICYmICgoc2l6
ZV90KShjb25zdCB2b2lkICopKChidWZmZXIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KGJ1ZmZlcikgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChidWZmZXIpLCBfX3MxX2xlbiA8
IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiTGFzdCBXb3JkOiIpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgiTGFzdCBXb3JkOiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KCJMYXN0IFdvcmQ6IikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVm
ZmVyKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJM
YXN0IFdvcmQ6IikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1
ZmZlcikpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ikxhc3QgV29yZDoiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
YnVmZmVyKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiTGFzdCBXb3JkOiIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
YnVmZmVyKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiTGFzdCBXb3JkOiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18g
KHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiTGFzdCBXb3JkOiIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlb
MF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZl
cikpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChi
dWZmZXIpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KGJ1ZmZlcikpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoIkxhc3QgV29yZDoiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIkxh
c3QgV29yZDoiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiTGFzdCBXb3JkOiIpID09
IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIkxhc3QgV29yZDoiKSwgX19zMl9sZW4gPCA0KSA/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYnVmZmVyKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgoYnVmZmVyKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShidWZmZXIpID09IDEpID8g
KF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzBdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiTGFzdCBXb3JkOiIpKVswXSk7IGlmIChf
X3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVsxXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJMYXN0IFdvcmQ6IikpWzFdKTsgaWYg
KF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkxhc3QgV29yZDoiKSlbMl0pOyBp
ZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzNdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkxhc3QgV29yZDoiKSlbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVm
ZmVyKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJMYXN0IFdvcmQ6IikpWzBdOyBpZiAoX19zMl9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJMYXN0IFdvcmQ6IikpWzFdKTsg
aWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiTGFzdCBXb3Jk
OiIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
X19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJM
YXN0IFdvcmQ6IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChidWZmZXIsICJM
YXN0IFdvcmQ6IikpKSk7IH0pICE9IDApCiAgICAgICAgewogICAgICAgICAgICAgICAgZnJlYWQg
KGlucHV0Y2hhciwgMSwgMSwgcmVhZHNlcyk7CiAgICAgICAgICAgICAgICB3aGlsZSAoKGlucHV0
Y2hhclswXSAhPSAxMCkgJiYgKGlucHV0Y2hhclswXSAhPSAxMykpCiAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltjb3VudGVyXSA9IGlucHV0Y2hhclswXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcisrOwogICAgICAgICAgICAgICAgICAgICAg
ICBmcmVhZCAoaW5wdXRjaGFyLCAxLCAxLCByZWFkc2VzKTsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIGJ1ZmZlcltjb3VudGVyXSA9ICdcMCc7CiAgICAgICAgICAgICAgICBpZiAo
X19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKGJ1ZmZlcikgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCJMYXN0IFdvcmQ6Iikg
JiYgKF9fczFfbGVuID0gc3RybGVuIChidWZmZXIpLCBfX3MyX2xlbiA9IHN0cmxlbiAoIkxhc3Qg
V29yZDoiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoYnVmZmVyKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKShidWZmZXIpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKCJMYXN0IFdvcmQ6IikgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikoIkxhc3QgV29yZDoiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAg
KChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlciksIChfX2NvbnN0IGNoYXIgKikgKCJMYXN0IFdvcmQ6
IiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChf
X2J1aWx0aW5fY29uc3RhbnRfcCAoYnVmZmVyKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
YnVmZmVyKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShidWZmZXIpID09IDEpICYmIChf
X3MxX2xlbiA9IHN0cmxlbiAoYnVmZmVyKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29u
c3RhbnRfcCAoIkxhc3QgV29yZDoiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIkxhc3Qg
V29yZDoiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiTGFzdCBXb3JkOiIpID09IDEp
ID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSgiTGFzdCBXb3JkOiIpKVswXSk7IGlm
IChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVsxXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJMYXN0IFdvcmQ6IikpWzFdKTsg
aWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzJdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkxhc3QgV29yZDoiKSlbMl0p
OyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzNdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkxhc3QgV29yZDoiKSlbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ikxhc3QgV29yZDoiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzBdIC0gX19zMlswXSk7IGlmIChf
X3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVsxXSAtIF9fczJbMV0pOyBp
ZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMl0gLSBfX3MyWzJd
KTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVszXSAtIF9fczJb
M10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJMYXN0IFdv
cmQ6IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJMYXN0IFdvcmQ6IikgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoIkxhc3QgV29yZDoiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBz
dHJsZW4gKCJMYXN0IFdvcmQ6IiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50
X3AgKGJ1ZmZlcikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGJ1ZmZlcikgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoYnVmZmVyKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJl
Z2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChidWZmZXIpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikoIkxhc3QgV29yZDoiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoYnVmZmVyKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgiTGFzdCBXb3JkOiIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChidWZmZXIpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJMYXN0IFdvcmQ6IikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChidWZmZXIpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJMYXN0IFdvcmQ6IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAo
X19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcik7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiTGFzdCBXb3JkOiIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiTGFzdCBXb3JkOiIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIkxhc3QgV29yZDoiKSlbMl0pOyBpZiAoX19zMl9s
ZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiTGFzdCBXb3JkOiIpKVszXSk7IH0g
fSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoYnVmZmVyLCAiTGFzdCBXb3JkOiIpKSkpOyB9KSAh
PSAwKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCF1c2Vkc3RhdGljcGFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYnVmZmVyKSA/ICgo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoYnVmZmVyKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShidWZmZXIpID09IDEpICYmIHN0cmxlbiAoYnVmZmVyKSArIDEgPD0gOCA/IF9fc3RyY3B5
X3NtYWxsIChsb2NhbHBjdXJyLT5zdG9yZWRwd29yZCwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMCArIDFdIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVsw
XSksIF9fZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGJ1ZmZlcikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzAgKyAzXSA8PCA4
IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlb
MCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoYnVmZmVyKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzQgKyAzXSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbNCAr
IDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
YnVmZmVyKSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoYnVmZmVyKSlbNF0pLCBzdHJsZW4gKGJ1ZmZlcikgKyAxKSA6IChjaGFyICop
IG1lbWNweSAobG9jYWxwY3Vyci0+c3RvcmVkcHdvcmQsIGJ1ZmZlciwgc3RybGVuIChidWZmZXIp
ICsgMSkpIDogc3RyY3B5IChsb2NhbHBjdXJyLT5zdG9yZWRwd29yZCwgYnVmZmVyKSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vkc3RhdGljcGFk
ZHJlc3MgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkcHcgKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vcmV0aGFub25lcGFzc3dvcmQgPSAxOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIlxuIik7CiAg
ICAgICAgICAgICAgICBwcmludGYgKCJcbiVzIiwgYnVmZmVyKTsKICAgICAgICAgICAgICAgIGNv
dW50ZXIgPSAwOwogICAgICAgIH0KCgogICAgICAgIGx2bDc6CiAgICAgICAgZnJlYWQgKGlucHV0
Y2hhciwgMSwgMSwgcmVhZHNlcyk7CiAgICAgICAgd2hpbGUgKChpbnB1dGNoYXJbMF0gIT0gMTAp
ICYmIChpbnB1dGNoYXJbMF0gIT0gMTMpICYmIChmZW9mKHJlYWRzZXMpID09IDApKQogICAgICAg
IHsKICAgICAgICAgICAgICAgIGJ1ZmZlcltjb3VudGVyXSA9IGlucHV0Y2hhclswXTsKICAgICAg
ICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAgICAgICAgICAgIGZyZWFkIChpbnB1dGNoYXIsIDEs
IDEsIHJlYWRzZXMpOwogICAgICAgIH0KICAgICAgICBidWZmZXJbY291bnRlcl0gPSAnXDAnOwog
ICAgICAgIHByaW50ZiAoIiVzIiwgYnVmZmVyKTsKICAgICAgICBpZiAocnVuYnJ1dGVmb3JjZSkK
ICAgICAgICAgICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYnVm
ZmVyKSA/ICgoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoYnVmZmVyKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKShidWZmZXIpID09IDEpICYmIHN0cmxlbiAoYnVmZmVyKSArIDEgPD0gOCA/
IF9fc3RyY3B5X3NtYWxsICh0ZXN0cGFzcywgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMCArIDFdIDw8IDggfCAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVswXSksIF9f
ZXh0ZW5zaW9uX18gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KGJ1ZmZlcikpWzQgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoYnVmZmVyKSlbNF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzAgKyAzXSA8PCA4IHwgKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbMCArIDJd
KSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVm
ZmVyKSlbMCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoYnVmZmVyKSlbMF0pLCBfX2V4dGVuc2lvbl9fICgoKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzQgKyAzXSA8PCA4IHwgKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVyKSlbNCArIDJdKSA8
PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoYnVmZmVy
KSlbNCArIDFdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoYnVmZmVyKSlbNF0pLCBzdHJsZW4gKGJ1ZmZlcikgKyAxKSA6IChjaGFyICopIG1lbWNw
eSAodGVzdHBhc3MsIGJ1ZmZlciwgc3RybGVuIChidWZmZXIpICsgMSkpIDogc3RyY3B5ICh0ZXN0
cGFzcywgYnVmZmVyKSkpOwogICAgICAgIGlmIChydW5kaWN0YXR0YWNrKQogICAgICAgICAgICAg
ICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKF9fZXh0ZW5zaW9uX18gKHsgc2l6
ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChkY3Vyci0+dGVz
dGR3b3JkKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoYnVmZmVyKSAmJiAoX19zMV9sZW4gPSBz
dHJsZW4gKGRjdXJyLT50ZXN0ZHdvcmQpLCBfX3MyX2xlbiA9IHN0cmxlbiAoYnVmZmVyKSwgKCEo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoZGN1cnItPnRlc3Rkd29yZCkgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoZGN1cnItPnRlc3Rkd29yZCkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkg
JiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoYnVmZmVyKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKShidWZmZXIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9f
Y29uc3QgY2hhciAqKSAoZGN1cnItPnRlc3Rkd29yZCksIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZl
ciksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChf
X2J1aWx0aW5fY29uc3RhbnRfcCAoZGN1cnItPnRlc3Rkd29yZCkgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKGRjdXJyLT50ZXN0ZHdvcmQpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KGRjdXJyLT50ZXN0ZHdvcmQpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoZGN1cnItPnRl
c3Rkd29yZCksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKGJ1ZmZlcikg
JiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGJ1ZmZlcikgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikoYnVmZmVyKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChk
Y3Vyci0+dGVzdGR3b3JkKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopKGJ1ZmZlcikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKGRjdXJyLT50ZXN0ZHdvcmQpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKGRjdXJyLT50ZXN0ZHdvcmQpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChkY3Vyci0+dGVzdGR3b3JkKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkp
IDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChidWZmZXIpOyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoZGN1cnItPnRlc3Rkd29yZCkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChkY3Vyci0+dGVzdGR3b3JkKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9f
czFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRjdXJyLT50ZXN0ZHdvcmQpKVsyXSAtIF9f
czJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRjdXJyLT50ZXN0ZHdv
cmQpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0
YW50X3AgKGJ1ZmZlcikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGJ1ZmZlcikgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikoYnVmZmVyKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJs
ZW4gKGJ1ZmZlciksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKGRjdXJy
LT50ZXN0ZHdvcmQpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChkY3Vyci0+dGVzdGR3b3Jk
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShkY3Vyci0+dGVzdGR3b3JkKSA9PSAxKSA/
IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkY3Vyci0+dGVzdGR3b3JkKSlbMF0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKGJ1ZmZlcikpWzBdKTsg
aWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRjdXJyLT50ZXN0ZHdvcmQpKVsx
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1ZmZlcikp
WzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRjdXJyLT50ZXN0ZHdv
cmQpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1
ZmZlcikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkY3Vyci0+dGVz
dGR3b3JkKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChidWZmZXIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19j
b25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChkY3Vyci0+dGVzdGR3b3JkKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
X19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGJ1
ZmZlcikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KGJ1ZmZlcikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChidWZmZXIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGJ1ZmZlcikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChkY3Vyci0+
dGVzdGR3b3JkLCBidWZmZXIpKSkpOyB9KSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGN1cnI9ZGN1cnItPm5leHQ7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgKF9fZXh0ZW5zaW9u
X18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChkY3Vyci0+dGVzdGR3b3JkKSA/ICgoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgoZGN1cnItPnRlc3Rkd29yZCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoZGN1cnItPnRlc3Rkd29yZCkgPT0gMSkgJiYgc3RybGVuIChkY3Vyci0+dGVzdGR3b3Jk
KSArIDEgPD0gOCA/IF9fc3RyY3B5X3NtYWxsICh0ZXN0cGFzcywgX19leHRlbnNpb25fXyAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGN1cnItPnRlc3Rkd29y
ZCkpWzAgKyAxXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoZGN1cnItPnRlc3Rkd29yZCkpWzBdKSwgX19leHRlbnNpb25fXyAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGN1cnItPnRlc3Rkd29yZCkpWzQgKyAx
XSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGN1
cnItPnRlc3Rkd29yZCkpWzRdKSwgX19leHRlbnNpb25fXyAoKCgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChkY3Vyci0+dGVzdGR3b3JkKSlbMCArIDNdIDw8IDgg
fCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkY3Vyci0+dGVz
dGR3b3JkKSlbMCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoZGN1cnItPnRlc3Rkd29yZCkpWzAgKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRjdXJyLT50ZXN0ZHdvcmQpKVswXSks
IF9fZXh0ZW5zaW9uX18gKCgoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoZGN1cnItPnRlc3Rkd29yZCkpWzQgKyAzXSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGN1cnItPnRlc3Rkd29yZCkpWzQgKyAyXSkgPDwg
OCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGRjdXJyLT50
ZXN0ZHdvcmQpKVs0ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChkY3Vyci0+dGVzdGR3b3JkKSlbNF0pLCBzdHJsZW4gKGRjdXJyLT50ZXN0
ZHdvcmQpICsgMSkgOiAoY2hhciAqKSBtZW1jcHkgKHRlc3RwYXNzLCBkY3Vyci0+dGVzdGR3b3Jk
LCBzdHJsZW4gKGRjdXJyLT50ZXN0ZHdvcmQpICsgMSkpIDogc3RyY3B5ICh0ZXN0cGFzcywgZGN1
cnItPnRlc3Rkd29yZCkpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICBjb3VudGVyPTA7CgoK
CiAgICAgICAgZmZsdXNoIChyZWFkc2VzKTsKICAgICAgICBmY2xvc2UgKHJlYWRzZXMpOwoKfQo=


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