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]

preprocessor/2580: Unnecessary warnings if -O2 and -Wconversion are specified



>Number:         2580
>Category:       preprocessor
>Synopsis:       Unnecessary warnings if -O2 and -Wconversion are specified
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Wed Apr 18 07:56:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Claas Bontus
>Release:        gcc version 2.95.3 20010315
>Organization:
>Environment:
Pentium III, Linux 2.4.0, i686-pc-linux-gnu/2.95.3/specs
>Description:
Specifying the -O2 and -Wconversion options and including
math.h and string.h the following warnings arise:

In file included from /usr/include/math.h:348,
                 from bug.c:2:
/usr/include/bits/mathinline.h: In function `fabsf':
/usr/include/bits/mathinline.h:495: warning: passing arg 1 of `__builtin_fabsf' as `float' rather than `double' due to prototype
In file included from /usr/include/string.h:361,
                 from bug.c:3:
/usr/include/bits/string2.h: In function `__strsep_g':
/usr/include/bits/string2.h:1172: warning: passing arg 2 of `__strpbrk_c2' with different width due to prototype
/usr/include/bits/string2.h:1172: warning: passing arg 3 of `__strpbrk_c2' with different width due to prototype
/usr/include/bits/string2.h:1172: warning: passing arg 2 of `__strpbrk_c3' with different width due to prototype
/usr/include/bits/string2.h:1172: warning: passing arg 3 of `__strpbrk_c3' with different width due to prototype
/usr/include/bits/string2.h:1172: warning: passing arg 4 of `__strpbrk_c3' with different width due to prototype
>How-To-Repeat:
gcc -v -save-temps -O2 -Wconversion bug.c -o bug -lm

/* bug.c */
#include <stdio.h>
#include <math.h>
#include <string.h>

int main()
{
  printf( "Hello world\n" );
  return 0;
}
>Fix:

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

IyAxICJidWcuYyIKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKIAoK
CgoKCgoKIAojIDE0MiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKCgogCgoKCgoKCgoKCiAK
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjA4ICIvdXNyL2luY2x1ZGUv
ZmVhdHVyZXMuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCgoK
IAoKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgojIDEgIi91c3IvaW5jbHVkZS9z
eXMvY2RlZnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCiAKCgoK
CgogCgoKCgoKCgoKIAoKCgojIDY1ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKCgogCgoK
CgoKIAoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAK
CgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKIAoKCgoK
CgojIDI4MyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwoKCgogCgoKCgoKCgoKIAoKCgoK
IAoKIAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMxMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi
IDIgMwoKCgoKIyAyNyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCiAKCgoKIyAxICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2
MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoj
IDEzMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CiAKCiMgMjcxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAi
L3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgp0eXBl
ZGVmIHZvaWQgKl9fZ251Y192YV9saXN0OwoKCgogCgojIDEyMiAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKCgoK
CgoKCgoKCgoKCgoKCiMgMjA5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKCgojIDM4ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91
c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgoj
IDE4OCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgogCnR5cGVkZWYg
dW5zaWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7
CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3Vf
bG9uZzsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9x
dWFkX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ4
ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCgp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50
OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9y
dCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0
eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQz
Ml90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRf
dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRf
dDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rl
dl90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9fZ2lk
X3Q7CQkgCnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9fbW9k
ZV90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190OyAJCSAKdHlwZWRlZiBsb25nIGludCBf
X29mZl90OwkJIAp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90OwkJIAp0eXBlZGVmIGludCBfX3Bp
ZF90OwkJCSAKdHlwZWRlZiBpbnQgX19zc2l6ZV90OwkJCSAKdHlwZWRlZiBfX3VfbG9uZyBfX3Js
aW1fdDsJCSAKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7CQkgCnR5cGVkZWYgX191X2lu
dCBfX2lkX3Q7CQkJIAoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBf
X2ZzaWRfdDsJCQkJIAoKIAp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CQkJIAp0eXBlZGVmIGNoYXIg
Kl9fY2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYg
bG9uZyBpbnQgX19zd2Jsa190OwkJIAoMCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKIAp0
eXBlZGVmIGludCBfX2Nsb2NraWRfdDsKCiAKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCiAKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZkX21hc2s7CgogCgoKIAoKCgoKIAp0eXBlZGVmIHN0
cnVjdAogIHsKICAgICAKCgoKCgogICAgX19mZF9tYXNrIF9fZmRzX2JpdHNbMTAyNCAgLyAoOCAq
IHNpemVvZiAoX19mZF9tYXNrKSkgXTsKCgogIH0gX19mZF9zZXQ7CgoKdHlwZWRlZiBpbnQgX19r
ZXlfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKIAp0eXBl
ZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKIAoKIAp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250
X3Q7CnR5cGVkZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90OwoKIAp0eXBlZGVmIF9fdV9sb25nIF9f
ZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKIAp0eXBlZGVm
IF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90
OwoKIAp0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82NF90OwoKIAp0eXBlZGVmIF9fbG9mZl90IF9f
b2ZmNjRfdDsKCiAKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCiAKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCiAK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKIAoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCgoKCgoK
CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKIyA2MiAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMwoKCgoKCiAKc3RydWN0IF9fc2No
ZWRfcGFyYW0KICB7CiAgICBpbnQgc2NoZWRfcHJpb3JpdHk7CiAgfTsKCgojIDIzICIvdXNyL2lu
Y2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKIApzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxv
Y2sKewogIGxvbmcgaW50IF9fc3RhdHVzOyAgICAKICBpbnQgX19zcGlubG9jazsgICAgICAgCgp9
OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNj
cjsKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3Nj
aGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19p
bmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBf
X3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXpl
Owp9IHB0aHJlYWRfYXR0cl90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVh
ZF9mYXN0bG9jayBfX2NfbG9jazsgIAogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOyAgICAg
ICAgIAp9IHB0aHJlYWRfY29uZF90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15
Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9r
ZXlfdDsKCgogCiAKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOyAgICAgICAg
ICAgICAgICAKICBpbnQgX19tX2NvdW50OyAgICAgICAgICAgICAgICAgICAKICBfcHRocmVhZF9k
ZXNjciBfX21fb3duZXI7ICAgICAgICAKICBpbnQgX19tX2tpbmQ7ICAgICAgICAgICAgICAgICAg
ICAKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7ICAKfSBwdGhyZWFkX211dGV4
X3Q7CgoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0
ZXhhdHRyX3Q7CgoKIAp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgojIDExNyAiL3Vzci9p
bmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKCgojIDEzNiAiL3Vzci9pbmNsdWRlL2JpdHMv
cHRocmVhZHR5cGVzLmgiIDMKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRf
dDsKCgojIDE2NSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKCgojIDQwICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgoKCgoKIAp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBG
SUxFOwoKCgoKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX19GSUxFOwoKCgoKCgoKCgoj
IDEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIyAxICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwogCgoKCgoKIAoKCgoKCgojIDEg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAK
CgojIDYxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAK
CiAKCiMgMTMxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5
cGVkZWYgdW5zaWduZWQgaW50ICB3aW50X3Q7CgoKCgogCgogCgojIDMxNyAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDE0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDIgMwoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgoKIyA0MyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKCgojIDEg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAK
CgojIDYxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAK
CiAKCiMgMTMxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAxOTAgIi91c3IvbG9jYWwvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCgoK
IAoKIyAyNzEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4z
L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDQ1ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg
MiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIyA0NyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKCiAKCgoKCgoKCgoK
CgoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAgewogICAgd2lu
dF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAgfSBfX3ZhbHVlOwkJIAp9IF9fbWJzdGF0
ZV90OwoKCgoKIAoKIyA2ODEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCgoKCiMgMjQgIi91c3Iv
aW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19w
b3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsK
ICBfX29mZjY0X3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsK
CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgojIDQzICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwoKCiMgMSAiL3Vz
ci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMg
NjEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoK
IyAxMzEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDE5MCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKCgogCgoj
IDI3MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDUgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMK
CgoKCiAKCgoKCgoKCgoKCgojIDczICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwoKCgoKIAoKIyA2
ODEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCgoKCiMgMjggIi91c3IvaW5jbHVkZS9nY29udi5o
IiAyIDMKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45
NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgog
CgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CiAKCiAKCiMgMzE3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzAg
Ii91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCgogCgoKIAplbnVtCnsKICBfX0dDT05WX09LID0g
MCwKICBfX0dDT05WX05PQ09OViwKICBfX0dDT05WX05PREIsCiAgX19HQ09OVl9OT01FTSwKCiAg
X19HQ09OVl9FTVBUWV9JTlBVVCwKICBfX0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZfSUxM
RUdBTF9JTlBVVCwKICBfX0dDT05WX0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxMRUdB
TF9ERVNDUklQVE9SLAogIF9fR0NPTlZfSU5URVJOQUxfRVJST1IKfTsKCgogCmVudW0KewogIF9f
R0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9FUlJPUlMgPSAweDAwMDIK
fTsKCgogCnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YTsKc3Ry
dWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YTsKCgog
CnR5cGVkZWYgaW50ICgqX19nY29udl9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosIHN0cnVj
dCBfX2djb252X3N0ZXBfZGF0YSAqLAoJCQkgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKCQkJICAgIHVuc2lnbmVkIGNoYXIgKiosIHNpemVfdCAq
LCBpbnQsIGludCk7CgogCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBf
X2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBf
X2djb252X3N0ZXAgKik7CgoKIAp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3Ry
dWN0IF9fZ2NvbnZfc3RlcCAqLAoJCQkJICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9p
ZCAqLAoJCQkJICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKCQkJCSAgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICoqLAoJCQkJICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAq
KiwKCQkJCSAgc2l6ZV90ICopOwoKIAp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfY29udGV4
dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAoJCQkJCSAgX19jb25zdCB1
bnNpZ25lZCBjaGFyICosCgkJCQkJICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKik7
CgogCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIg
KiwgX19jb25zdCBjaGFyICoqKiwKCQkJCQlzaXplX3QgKik7CgogCnR5cGVkZWYgaW50ICgqX19n
Y29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQgKiosIGNvbnN0IGNoYXIgKik7CnR5cGVkZWYgdm9p
ZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZvaWQgKik7CgpzdHJ1Y3QgX19nY29udl90cmFu
c19kYXRhCnsKICAgCiAgX19nY29udl90cmFuc19mY3QgX190cmFuc19mY3Q7CiAgX19nY29udl90
cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0OwogIF9fZ2NvbnZfdHJhbnNfZW5k
X2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAqX19kYXRhOwogIHN0cnVjdCBfX2djb252X3Ry
YW5zX2RhdGEgKl9fbmV4dDsKfTsKCgogCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVjdCBf
X2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAqX19t
b2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBfX2NvbnN0IGNoYXIgKl9fZnJvbV9uYW1lOwog
IF9fY29uc3QgY2hhciAqX190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252
X2luaXRfZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCiAgIAoK
ICBpbnQgX19taW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBf
X21pbl9uZWVkZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsKCiAgIAogIGludCBfX3N0YXRl
ZnVsOwoKICB2b2lkICpfX2RhdGE7CQkgCn07CgogCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEK
ewogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmOyAgICAgCiAgdW5zaWduZWQgY2hhciAqX19vdXRi
dWZlbmQ7ICAKCgogICAKICBpbnQgX19mbGFnczsKCiAgIAoKICBpbnQgX19pbnZvY2F0aW9uX2Nv
dW50ZXI7CgogICAKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBfX21ic3RhdGVfdCAqX19zdGF0
ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsJIAoKCiAgIAogIHN0cnVjdCBfX2djb252X3RyYW5z
X2RhdGEgKl9fdHJhbnM7Cn07CgoKIAp0eXBlZGVmIHN0cnVjdCBfX2djb252X2luZm8KewogIHNp
emVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBzOwogIF9fZXh0ZW5z
aW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YVswXTsKfSAqX19nY29udl90OwoK
CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHVuaW9uCnsKICBz
dHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAgc3RydWN0IF9fZ2NvbnZf
aW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YTsKICB9IF9fY29t
YmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQx
Nl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVk
IGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgMzAgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAyIDMKCiAKCgoKCgoKCgoKCgoKCgoKCgogCgojIDEgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkYXJnLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgojIDEyMiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKCgoKCgoKCgoK
CgoKCgoKCiMgMjA5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKCgojIDUxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIg
MiAzCgoKCgoKCgojIDcwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCiAKCgoKCgoKCgoKCgoK
CgoKCgojIDEwMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKCgoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgpzdHJ1Y3QgX0lPX2p1bXBfdDsg
IHN0cnVjdCBfSU9fRklMRTsKCiAKCgoKCgoKCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgog
CgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVj
dCBfSU9fRklMRSAqX3NidWY7CiAgIAoKICAgCiAgaW50IF9wb3M7CiMgMTkwICIvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMwoKfTsKCiAKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRf
b2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9u
b2NvbnYKfTsKCiMgMjYxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCnN0cnVjdCBfSU9fRklM
RSB7CiAgaW50IF9mbGFnczsJCSAKCgogICAKICAgCiAgY2hhciogX0lPX3JlYWRfcHRyOwkgCiAg
Y2hhciogX0lPX3JlYWRfZW5kOwkgCiAgY2hhciogX0lPX3JlYWRfYmFzZTsJIAogIGNoYXIqIF9J
T193cml0ZV9iYXNlOwkgCiAgY2hhciogX0lPX3dyaXRlX3B0cjsJIAogIGNoYXIqIF9JT193cml0
ZV9lbmQ7CSAKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CSAKICBjaGFyKiBfSU9fYnVmX2VuZDsJIAog
ICAKICBjaGFyICpfSU9fc2F2ZV9iYXNlOyAgCiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOyAgIAog
IGNoYXIgKl9JT19zYXZlX2VuZDsgIAoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7Cgog
IHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7
CiAgX19vZmZfdCAgIF9vbGRfb2Zmc2V0OyAgCgoKICAgCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9j
b2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07
CgogICAKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CgoKCgoKCgoKICBfX29mZjY0X3QgICBfb2Zmc2V0
OwoKCgoKCiAgdm9pZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwogICAK
ICBjaGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07
Cgp9OwoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVjdCBfSU9fRklM
RV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRl
cm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9J
T19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwoKCgoKCgoKCgoKCiAKCiAKCnR5cGVkZWYgX19z
c2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3Qg
X19uYnl0ZXMpOwoKIAoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQg
Kl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAoJCQkJIHNpemVfdCBfX24pOwoKIAoKCgoK
CnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAgICpf
X3BvcywgaW50IF9fdyk7CgogCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29v
a2llKTsKCgojIDM5MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKCgoKCgoKCmV4dGVybiBpbnQg
X191bmRlcmZsb3cgKF9JT19GSUxFICopICA7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUg
KikgIDsKZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpICA7CmV4dGVybiB3
aW50X3QgICBfX3d1bmRlcmZsb3cgKF9JT19GSUxFICopICA7CmV4dGVybiB3aW50X3QgICBfX3d1
ZmxvdyAoX0lPX0ZJTEUgKikgIDsKZXh0ZXJuIHdpbnRfdCAgIF9fd292ZXJmbG93IChfSU9fRklM
RSAqLCB3aW50X3QgICkgIDsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9f
Z2V0YyAoX0lPX0ZJTEUgKl9fZnApICA7CmV4dGVybiBpbnQgX0lPX3B1dGMgKGludCBfX2MsIF9J
T19GSUxFICpfX2ZwKSAgOwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgIDsK
ZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgIDsKCmV4dGVybiBpbnQgX0lP
X3BlZWtjX2xvY2tlZCAoX0lPX0ZJTEUgKl9fZnApICA7CgogCgoKCmV4dGVybiB2b2lkIF9JT19m
bG9ja2ZpbGUgKF9JT19GSUxFICopICA7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lP
X0ZJTEUgKikgIDsKZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSAgOwoK
CgoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3Ry
aWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKCQkJX19nbnVjX3ZhX2xpc3QgLCBpbnQgKl9f
cmVzdHJpY3QpICA7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19yZXN0cmlj
dCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKCQkJIF9fZ251Y192YV9saXN0ICkgIDsKZXh0ZXJu
IF9fc3NpemVfdCAgIF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCAgKSAgOwpl
eHRlcm4gc2l6ZV90ICAgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCAgKSAg
OwoKZXh0ZXJuIF9fb2ZmNjRfdCAgIF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3Qg
ICwgaW50LCBpbnQpICA7CmV4dGVybiBfX29mZjY0X3QgICBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUg
KiwgX19vZmY2NF90ICAsIGludCkgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVh
IChfSU9fRklMRSAqKSAgOwoKIyA1MTEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoKCgoKCgoj
IDY5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKIAoKdHlwZWRlZiBfR19mcG9zX3QgZnBv
c190OwoKCgoKCgoKIAoKCgoKCiAKCgoKCgogCgoKCgoKCiAKCgoKCgoKCiAKCgoKCiAKCgoKCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxMjIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAy
IDMKCgoKIApleHRlcm4gRklMRSAqc3RkaW47CQkgCmV4dGVybiBGSUxFICpzdGRvdXQ7CQkgCmV4
dGVybiBGSUxFICpzdGRlcnI7CQkgCiAKCgoKCiAKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3Qg
Y2hhciAqX19maWxlbmFtZSkgIDsKIApleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpf
X29sZCwgX19jb25zdCBjaGFyICpfX25ldykgIDsKCgogCgpleHRlcm4gRklMRSAqdG1wZmlsZSAo
dm9pZCkgIDsKCgoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSAgOwoK
CiAKCmV4dGVybiBjaGFyICp0bXBuYW1fciAoY2hhciAqX19zKSAgOwoKCgoKIAoKCgoKCgpleHRl
cm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3Bm
eCkKICAgICAgICA7CgoKCiAKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSAgOwog
CmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgIDsKCgogCmV4dGVybiBpbnQgZmZs
dXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgIDsKCgoKCgoKCgoKIApleHRlcm4gRklMRSAq
Zm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJCSAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgIDsKIApleHRlcm4gRklMRSAqZnJlb3BlbiAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCgkJICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbW9kZXMsCgkJICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgIDsK
IyAyMTMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCgoKCgoKCgogCmV4dGVybiBGSUxFICpm
ZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpICA7CgoKIyAyNDIgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAzCgoKCiAKCmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgIDsKIAoKCmV4dGVybiBpbnQg
c2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZiwKCQkgICAgaW50IF9fbW9kZXMsIHNpemVfdCBfX24pICA7CgoKIAoKZXh0ZXJuIHZvaWQgc2V0
YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVm
LAoJCSAgICAgICBzaXplX3QgX19zaXplKSAgOwoKIApleHRlcm4gdm9pZCBzZXRsaW5lYnVmIChG
SUxFICpfX3N0cmVhbSkgIDsKCgoKIApleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sCgkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u
KSAgOwogCmV4dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsIC4uLikgIDsKIApleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJ
CSAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgIDsKCiAKZXh0ZXJu
IGludCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwKCQkgICAgIF9fZ251Y192YV9saXN0ICBfX2FyZykgIDsKIApleHRlcm4g
aW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3Zh
X2xpc3QgIF9fYXJnKQogICAgICA7CiAKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0
cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkgICAgIF9fZ251
Y192YV9saXN0ICBfX2FyZykgIDsKCgogCmV4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKl9fcmVz
dHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCgkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIC4uLikKICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3By
aW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCBfX3ZzbnByaW50ZiAoY2hhciAqX19yZXN0cmlj
dCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LCBfX2dudWNfdmFfbGlzdCAgX19hcmcpCiAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCgkJICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCAgX19hcmcpCiAgICAgICBfX2F0dHJpYnV0
ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKCgojIDMxNyAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMKCgoKIApleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSwKCQkgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgIDsK
IApleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4u
LikgIDsKIApleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywK
CQkgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgIDsKCiMgMzQzICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgogCmV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3Ry
ZWFtKSAgOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFtKSAgOwoKIApleHRlcm4gaW50
IGdldGNoYXIgKHZvaWQpICA7CgogCgoKCgogCmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pICA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgIDsKCgoK
IApleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgIDsKCgoKIApleHRl
cm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIDsKZXh0ZXJuIGludCBwdXRj
IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIDsKCiAKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQg
X19jKSAgOwoKIAoKCgoKIApleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSkgIDsKCgoKIApleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJ
TEUgKl9fc3RyZWFtKSAgOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpICA7
CgoKCgogCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pICA7CgogCmV4dGVybiBpbnQg
cHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pICA7CgoKCiAKZXh0ZXJuIGNoYXIgKmZnZXRz
IChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSkKICAgICAgOwoKCgoKCgoKIAoKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgIDsKCgoj
IDQzMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKIApleHRlcm4gaW50IGZwdXRzIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAg
ICA7CgoKCgoKCgogCmV4dGVybiBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpICA7CgoKIApl
eHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICA7CgoKIApleHRlcm4g
c2l6ZV90IGZyZWFkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAoJCSAg
ICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgIDsKIApleHRlcm4gc2l6
ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXpl
LAoJCSAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSAgOwoKCiAKZXh0ZXJu
IHNpemVfdCBmcmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9f
c2l6ZSwKCQkJICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgIDsK
ZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBf
X3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pICA7CgoKCiAKZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxv
bmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpICA7CiAKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChG
SUxFICpfX3N0cmVhbSkgIDsKIApleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSAg
OwoKIAoKCgoKIAoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvc190ICpf
X3Jlc3RyaWN0IF9fcG9zKQogICAgICA7CiAKZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0
cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSAgOwojIDUzMiAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDMKCgoKCgoKCgoKCiAKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9fc3RyZWFtKSAg
OwogCmV4dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pICA7CiAKZXh0ZXJuIGludCBmZXJy
b3IgKEZJTEUgKl9fc3RyZWFtKSAgOwoKCiAKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQg
KEZJTEUgKl9fc3RyZWFtKSAgOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3Ry
ZWFtKSAgOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pICA7CgoK
CiAKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgIDsKCiAKCgpleHRlcm4g
aW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107
CgoKCgoKCgoKIApleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pICA7CgoKCiAKZXh0
ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSAgOwoKCgoKCiAKZXh0ZXJu
IEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBjaGFyICpfX21v
ZGVzKSAgOwoKIApleHRlcm4gaW50IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pICA7CgoKCgogCmV4
dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpICA7CgoKCgoKCgoKCiMgNjE0ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwoKCgoKIAoKIApleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9f
c3RyZWFtKSAgOwoKIAoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSAg
OwoKIApleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pICA7CgoKCgoKCgoK
CgogCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKZXh0ZXJuIF9faW5saW5lICBpbnQKdnByaW50ZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCAgX19hcmcpICAKewogIHJldHVy
biB2ZnByaW50ZiAoc3Rkb3V0ICwgX19mbXQsIF9fYXJnKTsKfQoKIApleHRlcm4gX19pbmxpbmUg
IGludApnZXRjaGFyICh2b2lkKSAgCnsKICByZXR1cm4gX0lPX2dldGMgKHN0ZGluICk7Cn0KCgoK
IApleHRlcm4gX19pbmxpbmUgIGludApnZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKSAgCnsKICBy
ZXR1cm4gKCggX19mcCApLT5fSU9fcmVhZF9wdHIgPj0gKCBfX2ZwICktPl9JT19yZWFkX2VuZCA/
IF9fdWZsb3cgKCBfX2ZwICkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKCBfX2ZwICktPl9JT19yZWFk
X3B0cisrKSA7Cn0KCiAKZXh0ZXJuIF9faW5saW5lICBpbnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9p
ZCkgIAp7CiAgcmV0dXJuICgoIHN0ZGluICApLT5fSU9fcmVhZF9wdHIgPj0gKCBzdGRpbiAgKS0+
X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoIHN0ZGluICApIDogKih1bnNpZ25lZCBjaGFyICopICgg
c3RkaW4gICktPl9JT19yZWFkX3B0cisrKSA7Cn0KCgoKIApleHRlcm4gX19pbmxpbmUgIGludApw
dXRjaGFyIChpbnQgX19jKSAgCnsKICByZXR1cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0ICk7Cn0K
CgoKIApleHRlcm4gX19pbmxpbmUgIGludApmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pICAKewogIHJldHVybiAoKCggIF9fc3RyZWFtICktPl9JT193cml0ZV9wdHIgPj0g
KCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93ICggIF9fc3RyZWFtICwg
KHVuc2lnbmVkIGNoYXIpICggX19jICkpIDogKHVuc2lnbmVkIGNoYXIpICgqKCAgX19zdHJlYW0g
KS0+X0lPX3dyaXRlX3B0cisrID0gKCBfX2MgKSkpIDsKfQoKCgoKIApleHRlcm4gX19pbmxpbmUg
IGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIAp7CiAgcmV0dXJu
ICgoKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX3B0ciA+PSAoICBfX3N0cmVhbSApLT5fSU9fd3Jp
dGVfZW5kKSA/IF9fb3ZlcmZsb3cgKCAgX19zdHJlYW0gLCAodW5zaWduZWQgY2hhcikgKCBfX2Mg
KSkgOiAodW5zaWduZWQgY2hhcikgKCooICBfX3N0cmVhbSApLT5fSU9fd3JpdGVfcHRyKysgPSAo
IF9fYyApKSkgOwp9CgogCmV4dGVybiBfX2lubGluZSAgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGlu
dCBfX2MpICAKewogIHJldHVybiAoKCggIHN0ZG91dCAgKS0+X0lPX3dyaXRlX3B0ciA+PSAoICBz
dGRvdXQgICktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoICBzdGRvdXQgICwgKHVuc2ln
bmVkIGNoYXIpICggX19jICkpIDogKHVuc2lnbmVkIGNoYXIpICgqKCAgc3Rkb3V0ICApLT5fSU9f
d3JpdGVfcHRyKysgPSAoIF9fYyApKSkgOwp9CgoKCgoKCgoKCgoKCgoKIApleHRlcm4gX19pbmxp
bmUgIGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgIAp7CiAgcmV0dXJuICgoKCBf
X3N0cmVhbSApLT5fZmxhZ3MgJiAweDEwICkgIT0gMCkgOwp9CgogCmV4dGVybiBfX2lubGluZSAg
aW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pICAKewogIHJldHVybiAoKCggX19z
dHJlYW0gKS0+X2ZsYWdzICYgMHgyMCApICE9IDApIDsKfQoKCgoKCgogCgojIDE0OSAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RkaW8uaCIgMwoKCiMgMTY1ICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5o
IiAzCgoKIAoKIyA2NDIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKIAoKCgoKIyAxICJi
dWcuYyIgMgoKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKIAoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCiMgODEgIi91
c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDMKCiMgMzMgIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDIgMwoKCiAKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIyA0NyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGRlZi5oIiAzCgoj
IDQwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAg
ICAgICBhY29zICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9fYWNvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgICA7CiAKZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgIGFzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX19hc2luICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICAgIDsK
IApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbiAgICAgICAgICAoZG91YmxlICBfX3gpICAg
ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2F0YW4gICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhdGFuMiAgICAgICAgICAoZG91
YmxlICBfX3ksIGRvdWJsZSAgX194KSAgICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19h
dGFuMiAgICAgICAgICAoZG91YmxlICBfX3ksIGRvdWJsZSAgX194KSAgICAgICAgOwoKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgY29zICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7IGV4
dGVybiAgIGRvdWJsZSAgICAgICAgIF9fY29zICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICAg
IDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc2luICAgICAgICAgIChkb3VibGUgIF9feCkg
ICAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2luICAgICAgICAgIChkb3VibGUgIF9f
eCkgICAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgdGFuICAgICAgICAgIChkb3Vi
bGUgIF9feCkgICAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fdGFuICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgICAgIDsKCgoKCgoKCiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IGNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19jb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICAgIDsKIApleHRlcm4gICBkb3Vi
bGUgICAgICAgICAgc2luaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX3NpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgICAgOwogCmV4
dGVybiAgIGRvdWJsZSAgICAgICAgICB0YW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAg
ICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYWNvc2ggICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19hY29zaCAgICAgICAgICAo
ZG91YmxlICBfX3gpICAgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFzaW5oICAg
ICAgICAgIChkb3VibGUgIF9feCkgICAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNp
bmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAg
ICAgICBhdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOyBleHRlcm4gICBkb3VibGUg
ICAgICAgICBfX2F0YW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICAgIDsKCgogCgogCmV4
dGVybiAgIGRvdWJsZSAgICAgICAgICBleHAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsg
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19leHAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAg
ICAgOwoKCgoKCgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGZyZXhwICAgICAgICAgIChk
b3VibGUgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19mcmV4cCAgICAgICAgICAoZG91YmxlICBfX3gsIGludCAqX19leHBvbmVudCkgICAgICAg
IDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxkZXhwICAgICAgICAgIChkb3VibGUgIF9f
eCwgaW50IF9fZXhwb25lbnQpICAgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xkZXhw
ICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fZXhwb25lbnQpICAgICAgICA7CgogCmV4dGVy
biAgIGRvdWJsZSAgICAgICAgICBsb2cgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19sb2cgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgICAg
OwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nMTAgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sb2cxMCAgICAgICAgICAoZG91Ymxl
ICBfX3gpICAgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBtb2RmICAgICAgICAg
IChkb3VibGUgIF9feCwgZG91YmxlICAqX19pcHRyKSAgICAgIDsgZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgX19tb2RmICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICAqX19pcHRyKSAgICAg
ICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGV4cG0xICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZXhwbTEgICAgICAgICAgKGRv
dWJsZSAgX194KSAgICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nMXAgICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sb2cx
cCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAg
ICAgICBsb2diICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9fbG9nYiAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgICA7CgoKCgoKCgoKCgoK
IAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgcG93ICAgICAgICAgIChkb3VibGUgIF9feCwg
ZG91YmxlICBfX3kpICAgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3BvdyAgICAgICAg
ICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICAgICAgOwoKIApleHRlcm4gICBkb3VibGUg
ICAgICAgICAgc3FydCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOyBleHRlcm4gICBkb3Vi
bGUgICAgICAgICBfX3NxcnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgICAgOwoKCiAKZXh0
ZXJuICAgZG91YmxlICAgICAgICAgIGh5cG90ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91Ymxl
ICBfX3kpICAgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2h5cG90ICAgICAgICAgIChk
b3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgICA7CgoKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGNicnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19jYnJ0ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICAgIDsKCgoKIAoKIApl
eHRlcm4gICBkb3VibGUgICAgICAgICAgY2VpbCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAg
OyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NlaWwgICAgICAgICAgKGRvdWJsZSAgX194KSAg
ICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZmFicyAgICAgICAgICAoZG91Ymxl
ICBfX3gpICAgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX19mYWJzICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICAgX19hdHRy
aWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg
ICBmbG9vciAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOyBleHRlcm4gICBkb3VibGUgICAg
ICAgICBfX2Zsb29yICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICAgIDsKCiAKZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgIGZtb2QgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkg
ICAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZm1vZCAgICAgICAgICAoZG91YmxlICBf
X3gsIGRvdWJsZSAgX195KSAgICAgICAgOwoKCiAKCmV4dGVybiAgaW50ICAgICBfX2lzaW5mICAg
ICAgKGRvdWJsZSAgX192YWx1ZSkgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAK
ZXh0ZXJuICBpbnQgICAgIF9fZmluaXRlICAgICAgKGRvdWJsZSAgX192YWx1ZSkgICAgIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCgpleHRlcm4gIGludCAgICAgaXNpbmYgICAgICAo
ZG91YmxlICBfX3ZhbHVlKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRl
cm4gIGludCAgICAgZmluaXRlICAgICAgKGRvdWJsZSAgX192YWx1ZSkgICAgIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCiAKCgoKCgpleHRlcm4gICBkb3VibGUgICAgICAgICAgaW5mbmFu
ICAgICAgICAgIChpbnQgX19lcnJvcikgICAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0
X18pICApOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2luZm5hbiAgICAgICAgICAoaW50IF9f
ZXJyb3IpICAgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgZHJlbSAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAg
X195KSAgICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19kcmVtICAgICAgICAgIChkb3Vi
bGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAg
ICAgc2lnbmlmaWNhbmQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsgZXh0ZXJuICAgZG91
YmxlICAgICAgICAgX19zaWduaWZpY2FuZCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgICA7
CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvcHlzaWduICAgICAgICAgIChkb3VibGUg
IF9feCwgZG91YmxlICBfX3kpICAgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAg
KTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19jb3B5c2lnbiAgICAgICAgICAoZG91YmxlICBf
X3gsIGRvdWJsZSAgX195KSAgICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkg
IDsKCgoKCgoKCgogCmV4dGVybiAgaW50ICAgICBfX2lzbmFuICAgICAgKGRvdWJsZSAgX192YWx1
ZSkgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgaW50ICAgICBp
c25hbiAgICAgIChkb3VibGUgIF9fdmFsdWUpICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBqMCAgICAgICAgICAoZG91YmxlICkgICAg
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fajAgICAgICAgICAgKGRvdWJsZSApICAgICAg
ICA7CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBqMSAgICAgICAgICAoZG91YmxlICkgICAgICA7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fajEgICAgICAgICAgKGRvdWJsZSApICAgICAgICA7
CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBqbiAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICAg
IDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19qbiAgICAgICAgICAoaW50LCBkb3VibGUgKSAg
ICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgeTAgICAgICAgICAgKGRvdWJsZSApICAg
ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3kwICAgICAgICAgIChkb3VibGUgKSAgICAg
ICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgeTEgICAgICAgICAgKGRvdWJsZSApICAgICAg
OyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3kxICAgICAgICAgIChkb3VibGUgKSAgICAgICAg
OwpleHRlcm4gICBkb3VibGUgICAgICAgICAgeW4gICAgICAgICAgKGludCwgZG91YmxlICkgICAg
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9feW4gICAgICAgICAgKGludCwgZG91YmxlICkg
ICAgICAgIDsKCgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGVyZiAgICAgICAgICAoZG91
YmxlICkgICAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZXJmICAgICAgICAgIChkb3Vi
bGUgKSAgICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgZXJmYyAgICAgICAgICAoZG91
YmxlICkgICAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZXJmYyAgICAgICAgICAoZG91
YmxlICkgICAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxnYW1tYSAgICAgICAgICAo
ZG91YmxlICkgICAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbGdhbW1hICAgICAgICAg
IChkb3VibGUgKSAgICAgICAgOwoKCgoKCgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZ2Ft
bWEgICAgICAgICAgKGRvdWJsZSApICAgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2dh
bW1hICAgICAgICAgIChkb3VibGUgKSAgICAgICAgOwoKCgogCgoKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGxnYW1tYV9yICAgICAgICAgICAgICAoZG91YmxlICwgaW50ICpfX3NpZ25nYW1wKSAg
ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sZ2FtbWFfciAgICAgICAgICAgICAgKGRv
dWJsZSAsIGludCAqX19zaWduZ2FtcCkgICAgICAgIDsKCgoKCiAKCmV4dGVybiAgIGRvdWJsZSAg
ICAgICAgICByaW50ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7IGV4dGVybiAgIGRvdWJs
ZSAgICAgICAgIF9fcmludCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgICA7CgogCmV4dGVy
biAgIGRvdWJsZSAgICAgICAgICBuZXh0YWZ0ZXIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3Vi
bGUgIF9feSkgICAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX25leHRhZnRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJs
ZSAgX195KSAgICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCiAK
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHJlbWFpbmRlciAgICAgICAgICAoZG91YmxlICBfX3gs
IGRvdWJsZSAgX195KSAgICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yZW1haW5kZXIg
ICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICAgIDsKCgogCmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICBzY2FsYiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX19u
KSAgICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19zY2FsYiAgICAgICAgICAoZG91Ymxl
ICBfX3gsIGRvdWJsZSAgX19uKSAgICAgICAgOwoKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg
ICBzY2FsYm4gICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQgX19uKSAgICAgIDsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX19zY2FsYm4gICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQgX19uKSAg
ICAgICAgOwoKCiAKZXh0ZXJuICAgaW50ICAgICAgICBpbG9nYiAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgOyBleHRlcm4gICBpbnQgICAgICAgIF9faWxvZ2IgICAgICAgIChkb3VibGUgIF9feCkg
ICAgICA7CgoKIyAzNDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCgojIDYzICIv
dXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgYWNvc2Yg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYWNv
c2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAg
ICAgYXNpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAg
ICAgIF9fYXNpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgICA7CiAKZXh0ZXJuICAgZmxv
YXQgICAgICAgICAgYXRhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4gICBm
bG9hdCAgICAgICAgIF9fYXRhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgICA7CiAKZXh0
ZXJuICAgZmxvYXQgICAgICAgICAgYXRhbjJmICAgICAgICAgKGZsb2F0ICAgX195LCBmbG9hdCAg
IF9feCkgICAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hdGFuMmYgICAgICAgICAoZmxv
YXQgICBfX3ksIGZsb2F0ICAgX194KSAgICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAg
ICBjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAg
ICBfX2Nvc2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQg
ICAgICAgICAgc2luZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX19zaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgICAgOwogCmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIHRhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4g
ICBmbG9hdCAgICAgICAgIF9fdGFuZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICAgIDsKCgoK
CgoKCiAKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgY29zaGYgICAgICAgICAoZmxvYXQgICBf
X3gpICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY29zaGYgICAgICAgICAoZmxvYXQg
ICBfX3gpICAgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2luaGYgICAgICAgICAo
ZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2luaGYgICAgICAg
ICAoZmxvYXQgICBfX3gpICAgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgdGFuaGYg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fdGFu
aGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAg
ICAgICBhY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fYWNvc2hmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgICAgOwogCmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIGFzaW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19hc2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgICA7
CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgYXRhbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAg
ICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2F0YW5oZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgICAgIDsKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGV4cGYgICAgICAgICAo
ZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXhwZiAgICAgICAg
IChmbG9hdCAgIF9feCkgICAgICAgIDsKCgoKCgoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg
IGZyZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICAgIDsgZXh0
ZXJuICAgZmxvYXQgICAgICAgICBfX2ZyZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50ICpf
X2V4cG9uZW50KSAgICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBsZGV4cGYgICAg
ICAgICAoZmxvYXQgICBfX3gsIGludCBfX2V4cG9uZW50KSAgICAgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX2xkZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fZXhwb25lbnQpICAg
ICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxvZ2YgICAgICAgICAoZmxvYXQgICBf
X3gpICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbG9nZiAgICAgICAgIChmbG9hdCAg
IF9feCkgICAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbG9nMTBmICAgICAgICAg
KGZsb2F0ICAgX194KSAgICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZzEwZiAgICAg
ICAgIChmbG9hdCAgIF9feCkgICAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbW9k
ZmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgKl9faXB0cikgICAgICA7IGV4dGVybiAg
IGZsb2F0ICAgICAgICAgX19tb2RmZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICAqX19p
cHRyKSAgICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZXhwbTFmICAgICAgICAg
KGZsb2F0ICAgX194KSAgICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2V4cG0xZiAgICAg
ICAgIChmbG9hdCAgIF9feCkgICAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbG9n
MXBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBf
X2xvZzFwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQg
ICAgICAgICAgbG9nYmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fbG9nYmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgICA7CgoKCgoKCgoK
CgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBwb3dmICAgICAgICAgKGZsb2F0ICAgX194
LCBmbG9hdCAgIF9feSkgICAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19wb3dmICAgICAg
ICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQg
ICAgICAgICAgc3FydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fc3FydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgICA7CgoKIApleHRl
cm4gICBmbG9hdCAgICAgICAgICBoeXBvdGYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAg
X195KSAgICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2h5cG90ZiAgICAgICAgIChmbG9h
dCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAgICA7CgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAg
ICAgY2JydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAg
ICAgIF9fY2JydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgICA7CgoKCiAKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgY2VpbGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOyBleHRl
cm4gICBmbG9hdCAgICAgICAgIF9fY2VpbGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgICA7
CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZhYnNmICAgICAgICAgKGZsb2F0ICAgX194KSAg
ICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0ICAg
ICAgICAgX19mYWJzZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICAgX19hdHRyaWJ1dGVfXyAo
ICAgIChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZsb29yZiAg
ICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19mbG9v
cmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGZtb2RmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19mbW9kZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBf
X3kpICAgICAgICA7CgoKIAoKZXh0ZXJuICBpbnQgICAgX19pc2luZmYgICAgIChmbG9hdCAgIF9f
dmFsdWUpICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgaW50ICAg
IF9fZmluaXRlZiAgICAgKGZsb2F0ICAgX192YWx1ZSkgICAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgogCgpleHRlcm4gIGludCAgICBpc2luZmYgICAgIChmbG9hdCAgIF9fdmFsdWUp
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgaW50ICAgIGZpbml0
ZWYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgogCgoKCgoKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgaW5mbmFuZiAgICAgICAgIChpbnQgX19l
cnJvcikgICAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBm
bG9hdCAgICAgICAgIF9faW5mbmFuZiAgICAgICAgIChpbnQgX19lcnJvcikgICAgICAgX19hdHRy
aWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg
IGRyZW1mICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7IGV4dGVybiAg
IGZsb2F0ICAgICAgICAgX19kcmVtZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kp
ICAgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBzaWduaWZpY2FuZGYgICAgICAg
ICAoZmxvYXQgICBfX3gpICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2lnbmlmaWNh
bmRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAg
ICAgICAgIGNvcHlzaWduZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAg
IF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZmxvYXQgICAgICAg
ICBfX2NvcHlzaWduZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAgIF9f
YXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKCgoKCgoKCiAKZXh0ZXJuICBpbnQg
ICAgX19pc25hbmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgICBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKIApleHRlcm4gIGludCAgICBpc25hbmYgICAgIChmbG9hdCAgIF9fdmFsdWUp
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGowZiAgICAgICAgIChmbG9hdCAgKSAgICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBf
X2owZiAgICAgICAgIChmbG9hdCAgKSAgICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICBq
MWYgICAgICAgICAoZmxvYXQgICkgICAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19qMWYg
ICAgICAgICAoZmxvYXQgICkgICAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgam5mICAg
ICAgICAgKGludCwgZmxvYXQgICkgICAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19qbmYg
ICAgICAgICAoaW50LCBmbG9hdCAgKSAgICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICB5
MGYgICAgICAgICAoZmxvYXQgICkgICAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX195MGYg
ICAgICAgICAoZmxvYXQgICkgICAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgeTFmICAg
ICAgICAgKGZsb2F0ICApICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9feTFmICAgICAg
ICAgKGZsb2F0ICApICAgICAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHluZiAgICAgICAg
IChpbnQsIGZsb2F0ICApICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9feW5mICAgICAg
ICAgKGludCwgZmxvYXQgICkgICAgICAgIDsKCgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAg
ZXJmZiAgICAgICAgIChmbG9hdCAgKSAgICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2Vy
ZmYgICAgICAgICAoZmxvYXQgICkgICAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZXJm
Y2YgICAgICAgICAoZmxvYXQgICkgICAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19lcmZj
ZiAgICAgICAgIChmbG9hdCAgKSAgICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICBsZ2Ft
bWFmICAgICAgICAgKGZsb2F0ICApICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGdh
bW1hZiAgICAgICAgIChmbG9hdCAgKSAgICAgICAgOwoKCgoKCgoKIApleHRlcm4gICBmbG9hdCAg
ICAgICAgICBnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgICA7IGV4dGVybiAgIGZsb2F0ICAg
ICAgICAgX19nYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgICAgIDsKCgoKIAoKCmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIGxnYW1tYWZfciAgICAgICAgICAgIChmbG9hdCAgLCBpbnQgKl9fc2ln
bmdhbXApICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGdhbW1hZl9yICAgICAgICAg
ICAgKGZsb2F0ICAsIGludCAqX19zaWduZ2FtcCkgICAgICAgIDsKCgoKCiAKCmV4dGVybiAgIGZs
b2F0ICAgICAgICAgIHJpbnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX3JpbnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgICAgOwoKIApl
eHRlcm4gICBmbG9hdCAgICAgICAgICBuZXh0YWZ0ZXJmICAgICAgICAgKGZsb2F0ICAgX194LCBm
bG9hdCAgIF9feSkgICAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRl
cm4gICBmbG9hdCAgICAgICAgIF9fbmV4dGFmdGVyZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxv
YXQgICBfX3kpICAgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKCgoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICByZW1haW5kZXJmICAgICAgICAgKGZsb2F0ICAgX194
LCBmbG9hdCAgIF9feSkgICAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19yZW1haW5kZXJm
ICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICAgIDsKCgogCmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIHNjYWxiZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX24p
ICAgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2NhbGJmICAgICAgICAgKGZsb2F0ICAg
X194LCBmbG9hdCAgIF9fbikgICAgICAgIDsKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBz
Y2FsYm5mICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19uKSAgICAgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX3NjYWxibmYgICAgICAgICAoZmxvYXQgICBfX3gsIGludCBfX24pICAgICAg
ICA7CgoKIApleHRlcm4gICBpbnQgICAgICAgaWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkgICAg
IDsgZXh0ZXJuICAgaW50ICAgICAgIF9faWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7
CgoKIyAzNDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCgojIDgyICIvdXNyL2lu
Y2x1ZGUvbWF0aC5oIiAyIDMKCgoKCgogCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9tYXRoY2FsbHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGFjb3NsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg
ICAgICBfX2Fjb3NsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgICAgOwogCmV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgIGFzaW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
KSAgICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2FzaW5sICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194KSAgICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAg
IGF0YW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsgZXh0ZXJuICAgbG9uZyBk
b3VibGUgICAgICAgICBfX2F0YW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgICAg
OwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGF0YW4ybCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feSwgbG9uZyBkb3VibGUgICBfX3gpICAgICAgOyBleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgIF9fYXRhbjJsICAgICAgICAgKGxvbmcgZG91YmxlICAgX195LCBsb25nIGRvdWJs
ZSAgIF9feCkgICAgICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY29zbCAg
ICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgX19jb3NsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgICAgOwogCmV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgIHNpbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gp
ICAgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc2lubCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCkgICAgICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICB0
YW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsgZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICBfX3RhbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgICA7CgoK
CgoKCgogCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGNvc2hsICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194KSAgICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Nv
c2hsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgICAgOwogCmV4dGVybiAgIGxvbmcg
ZG91YmxlICAgICAgICAgIHNpbmhsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsg
ZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3NpbmhsICAgICAgICAgKGxvbmcgZG91Ymxl
ICAgX194KSAgICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHRhbmhsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg
ICAgICBfX3RhbmhsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgICAgOwoKCiAKZXh0
ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgYWNvc2hsICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194KSAgICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Fjb3NobCAgICAgICAg
IChsb25nIGRvdWJsZSAgIF9feCkgICAgICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAg
ICAgICBhc2luaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOyBleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgIF9fYXNpbmhsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAg
ICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGF0YW5obCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCkgICAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19h
dGFuaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgICA7CgoKIAoKIApleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgICBleHBsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAg
ICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2V4cGwgICAgICAgICAobG9uZyBk
b3VibGUgICBfX3gpICAgICAgICA7CgoKCgoKCgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAg
ICAgICBmcmV4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGludCAqX19leHBvbmVudCkg
ICAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19mcmV4cGwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gsIGludCAqX19leHBvbmVudCkgICAgICAgIDsKCiAKZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICAgbGRleHBsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBpbnQg
X19leHBvbmVudCkgICAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19sZGV4cGwg
ICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGludCBfX2V4cG9uZW50KSAgICAgICAgOwoKIApl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsb2dsICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194KSAgICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xvZ2wgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gpICAgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIGxvZzEwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7IGV4dGVybiAgIGxv
bmcgZG91YmxlICAgICAgICAgX19sb2cxMGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAg
ICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIG1vZGZsICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgICpfX2lwdHIpICAgICAgOyBleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgIF9fbW9kZmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxv
bmcgZG91YmxlICAgKl9faXB0cikgICAgICAgIDsKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgIGV4cG0xbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19leHBtMWwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gp
ICAgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGxvZzFwbCAgICAgICAg
IChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAg
X19sb2cxcGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgICA7CgogCmV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgIGxvZ2JsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAg
ICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xvZ2JsICAgICAgICAgKGxvbmcg
ZG91YmxlICAgX194KSAgICAgICAgOwoKCgoKCgoKCgoKCiAKCiAKZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICAgcG93bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUg
ICBfX3kpICAgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fcG93bCAgICAgICAg
IChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICAgICA7CgogCmV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgIHNxcnRsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
KSAgICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3NxcnRsICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194KSAgICAgICAgOwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICAgaHlwb3RsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkg
ICAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19oeXBvdGwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgICAgOwoKCgogCmV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgIGNicnRsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAg
ICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2NicnRsICAgICAgICAgKGxvbmcg
ZG91YmxlICAgX194KSAgICAgICAgOwoKCgogCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIGNlaWxsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsgZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICBfX2NlaWxsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAg
ICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBmYWJzbCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCkgICAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZmFic2wgICAgICAgICAobG9uZyBkb3VibGUg
ICBfX3gpICAgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKIApleHRl
cm4gICBsb25nIGRvdWJsZSAgICAgICAgICBmbG9vcmwgICAgICAgICAobG9uZyBkb3VibGUgICBf
X3gpICAgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZmxvb3JsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194KSAgICAgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAg
ICAgICBmbW9kbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kp
ICAgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZm1vZGwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgICAgOwoKCiAKCmV4dGVybiAg
aW50ICAgIF9faXNpbmZsICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICBfX2Zpbml0ZWwgICAgIChsb25n
IGRvdWJsZSAgIF9fdmFsdWUpICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIAoK
ZXh0ZXJuICBpbnQgICAgaXNpbmZsICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICBmaW5pdGVsICAgICAo
bG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
IAoKCgoKCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGluZm5hbmwgICAgICAgICAoaW50
IF9fZXJyb3IpICAgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJu
ICAgbG9uZyBkb3VibGUgICAgICAgICBfX2luZm5hbmwgICAgICAgICAoaW50IF9fZXJyb3IpICAg
ICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKIApleHRlcm4gICBsb25n
IGRvdWJsZSAgICAgICAgICBkcmVtbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBk
b3VibGUgICBfX3kpICAgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fZHJlbWwg
ICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgICAgOwoK
CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgc2lnbmlmaWNhbmRsICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194KSAgICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3Np
Z25pZmljYW5kbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICAgIDsKCgoKIApleHRl
cm4gICBsb25nIGRvdWJsZSAgICAgICAgICBjb3B5c2lnbmwgICAgICAgICAobG9uZyBkb3VibGUg
ICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29u
c3RfXykgICk7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19jb3B5c2lnbmwgICAgICAg
ICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICAgICBfX2F0dHJpYnV0
ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCgoKCgogCmV4dGVybiAgaW50ICAgIF9faXNu
YW5sICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCiAKZXh0ZXJuICBpbnQgICAgaXNuYW5sICAgICAobG9uZyBkb3VibGUgICBfX3Zh
bHVlKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgICBqMGwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19qMGwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICAg
IDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgajFsICAgICAgICAgKGxvbmcgZG91Ymxl
ICApICAgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fajFsICAgICAgICAgKGxv
bmcgZG91YmxlICApICAgICAgICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGpubCAg
ICAgICAgIChpbnQsIGxvbmcgZG91YmxlICApICAgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAg
ICAgICAgIF9fam5sICAgICAgICAgKGludCwgbG9uZyBkb3VibGUgICkgICAgICAgIDsKZXh0ZXJu
ICAgbG9uZyBkb3VibGUgICAgICAgICAgeTBsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgICAg
OyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9feTBsICAgICAgICAgKGxvbmcgZG91Ymxl
ICApICAgICAgICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHkxbCAgICAgICAgIChs
b25nIGRvdWJsZSAgKSAgICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3kxbCAg
ICAgICAgIChsb25nIGRvdWJsZSAgKSAgICAgICAgOwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAg
ICAgICB5bmwgICAgICAgICAoaW50LCBsb25nIGRvdWJsZSAgKSAgICAgIDsgZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICBfX3lubCAgICAgICAgIChpbnQsIGxvbmcgZG91YmxlICApICAgICAg
ICA7CgoKCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGVyZmwgICAgICAgICAobG9u
ZyBkb3VibGUgICkgICAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19lcmZsICAg
ICAgICAgKGxvbmcgZG91YmxlICApICAgICAgICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIGVyZmNsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgICAgOyBleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgIF9fZXJmY2wgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICAgIDsKZXh0
ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgbGdhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAg
KSAgICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xnYW1tYWwgICAgICAgICAo
bG9uZyBkb3VibGUgICkgICAgICAgIDsKCgoKCgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg
ICAgICAgZ2FtbWFsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgICAgOyBleHRlcm4gICBsb25n
IGRvdWJsZSAgICAgICAgIF9fZ2FtbWFsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgICAgICA7
CgoKCiAKCgpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsZ2FtbWFsX3IgICAgICAgICAg
ICAobG9uZyBkb3VibGUgICwgaW50ICpfX3NpZ25nYW1wKSAgICAgIDsgZXh0ZXJuICAgbG9uZyBk
b3VibGUgICAgICAgICBfX2xnYW1tYWxfciAgICAgICAgICAgIChsb25nIGRvdWJsZSAgLCBpbnQg
Kl9fc2lnbmdhbXApICAgICAgICA7CgoKCgogCgpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAg
ICByaW50bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7IGV4dGVybiAgIGxvbmcg
ZG91YmxlICAgICAgICAgX19yaW50bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICAg
IDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgbmV4dGFmdGVybCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICAgIF9fYXR0cmlidXRlX18g
KCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX25leHRh
ZnRlcmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICAg
ICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCiAKZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICAgcmVtYWluZGVybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwg
bG9uZyBkb3VibGUgICBfX3kpICAgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9f
cmVtYWluZGVybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kp
ICAgICAgICA7CgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBzY2FsYmwgICAgICAg
ICAobG9uZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX19uKSAgICAgIDsgZXh0ZXJuICAg
bG9uZyBkb3VibGUgICAgICAgICBfX3NjYWxibCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwg
bG9uZyBkb3VibGUgICBfX24pICAgICAgICA7CgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAg
ICAgICAgc2NhbGJubCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50IF9fbikgICAgICA7
IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19zY2FsYm5sICAgICAgICAgKGxvbmcgZG91
YmxlICAgX194LCBpbnQgX19uKSAgICAgICAgOwoKCiAKZXh0ZXJuICAgaW50ICAgICAgIGlsb2di
bCAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICA7IGV4dGVybiAgIGludCAgICAgICBfX2ls
b2dibCAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKCiMgMzQxICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwoKIyA5OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoK
CgoKCgoKCgoKCgogCmV4dGVybiBpbnQgc2lnbmdhbTsKCgoKIAojIDIzMiAiL3Vzci9pbmNsdWRl
L21hdGguaCIgMwoKCgogCnR5cGVkZWYgZW51bQp7CiAgX0lFRUVfID0gLTEsCSAKICBfU1ZJRF8s
CSAKICBfWE9QRU5fLAkgCiAgX1BPU0lYXywKICBfSVNPQ18JIAp9IF9MSUJfVkVSU0lPTl9UWVBF
OwoKIAoKCmV4dGVybiBfTElCX1ZFUlNJT05fVFlQRSBfTElCX1ZFUlNJT047CgoKCgogCgoKCgoK
CgpzdHJ1Y3QgZXhjZXB0aW9uCgogIHsKICAgIGludCB0eXBlOwogICAgY2hhciAqbmFtZTsKICAg
IGRvdWJsZSBhcmcxOwogICAgZG91YmxlIGFyZzI7CiAgICBkb3VibGUgcmV0dmFsOwogIH07CgoK
CgpleHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBleGNlcHRpb24gKl9fZXhjKTsKCgoKCiAKCgoK
CgoKCiAKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1
LjMvaW5jbHVkZS9mbG9hdC5oIiAxIDMKIAoKCgogCgogICAgCgoKICAgIAoKCiAgICAKCgogICAg
CgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCgogICAg
CgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAK
CgoKICAgIAoKCiAgICAKCgogICAgCgoKCnVuaW9uIF9fY29udmVydF9sb25nX2RvdWJsZSB7CiAg
dW5zaWduZWQgX19jb252ZXJ0X2xvbmdfZG91YmxlX2lbNF07CiAgbG9uZyBkb3VibGUgX19jb252
ZXJ0X2xvbmdfZG91YmxlX2Q7Cn07CgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAK
CgogICAgCgoKCgojIDI4OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKIyAyOTkgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDMKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgMzM2ICIvdXNyL2lu
Y2x1ZGUvbWF0aC5oIiAzCgoKCiAKCgoKCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRo
aW5saW5lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTQ2ICIvdXNy
L2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKCgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojIDI1MiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgpleHRlcm4gX19pbmxpbmUgICBkb3Vi
bGUgICAgIF9fc2duICAgKCBkb3VibGUgKSAgOwlleHRlcm4gX19pbmxpbmUgICAgZG91YmxlICAg
ICAgICBfX3NnbiAgICAoICBkb3VibGUgICAgICAgICBfX3ggICApICAJewkgICAgICAgIHJldHVy
biBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApICAgOwl9ICAJZXh0
ZXJuIF9faW5saW5lICAgZmxvYXQgICAgICBfX3NnbmYgICAgKCBmbG9hdCApICA7CWV4dGVybiBf
X2lubGluZSAgICBmbG9hdCAgICAgICAgIF9fc2duZiAgICAgKCAgZmxvYXQgICAgICAgICBfX3gg
ICApICAJewkgICAgICAgIHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEu
MCA6IC0xLjApICAgOwl9ICAJZXh0ZXJuIF9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBfX3Nn
bmwgICAgKCBsb25nIGRvdWJsZSApICA7CWV4dGVybiBfX2lubGluZSAgICBsb25nIGRvdWJsZSAg
ICAgICAgIF9fc2dubCAgICAgKCAgbG9uZyBkb3VibGUgICAgICAgICBfX3ggICApICAJewkgICAg
ICAgIHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApICAg
Owl9ICAgCgoKIAojIDQ2NiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCgoKCgoK
CgoKCmV4dGVybiBfX2lubGluZSAgIGRvdWJsZSAgICAgYXRhbjIgICAoIGRvdWJsZSAgICAgIF9f
eSAgLCAgZG91YmxlICAgICAgX194ICApICAgewkgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsJX19hc20gX192b2xhdGlsZV9fCSgiZnBhdGFuIgk6ICI9dCIgKF9fdmFsdWUpIDogIjAi
IChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsJcmV0dXJuIF9fdmFsdWUgICA7CX0gCWV4dGVy
biBfX2lubGluZSAgIGZsb2F0ICAgICAgYXRhbjJmICAgICggZmxvYXQgICAgICBfX3kgICwgIGZs
b2F0ICAgICAgX194ICApICAgewkgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJX19h
c20gX192b2xhdGlsZV9fCSgiZnBhdGFuIgk6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAi
dSIgKF9feSkgOiAic3QoMSkiKTsJcmV0dXJuIF9fdmFsdWUgICA7CX0gCWV4dGVybiBfX2lubGlu
ZSAgIGxvbmcgZG91YmxlICAgICAgYXRhbjJsICAgICggbG9uZyBkb3VibGUgICAgICBfX3kgICwg
IGxvbmcgZG91YmxlICAgICAgX194ICApICAgewkgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsJX19hc20gX192b2xhdGlsZV9fCSgiZnBhdGFuIgk6ICI9dCIgKF9fdmFsdWUpIDogIjAi
IChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsJcmV0dXJuIF9fdmFsdWUgICA7CX0gIApleHRl
cm4gX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICBfX2F0YW4ybCAgKCBsb25nIGRvdWJsZSAgICBf
X3kgLCAgbG9uZyBkb3VibGUgICAgX194ICkgICB7CSAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsJX19hc20gX192b2xhdGlsZV9fCSgiZnBhdGFuIgk6ICI9dCIgKF9fdmFsdWUpIDogIjAi
IChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsJcmV0dXJuIF9fdmFsdWUgIDsJfSAKCgpleHRl
cm4gX19pbmxpbmUgICBkb3VibGUgICAgIGZtb2QgICAoIGRvdWJsZSAgICAgIF9feCAgLCAgZG91
YmxlICAgICAgX195ICApICAgewkgICAgICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOwkJ
CQkJCSAgICAgICAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAgICAoIjE6CWZwcmVt
XG5cdCIJCQkJCQkgICAgICAgICAgICJmbnN0c3cJJSVheFxuXHQiCQkJCQkJICAgICAgICAgICAi
c2FoZlxuXHQiCQkJCQkJCQkgICAgICAgICAgICJqcAkxYiIJCQkJCQkJICAgICAgICAgICA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsJCSAgICAg
ICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAJZXh0ZXJuIF9faW5saW5lICAgZmxvYXQgICAgICBmbW9k
ZiAgICAoIGZsb2F0ICAgICAgX194ICAsICBmbG9hdCAgICAgIF9feSAgKSAgIHsJICAgICAgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJCQkJCQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGVf
XwkJCQkJCQkgICAgICAgICAgKCIxOglmcHJlbVxuXHQiCQkJCQkJICAgICAgICAgICAiZm5zdHN3
CSUlYXhcblx0IgkJCQkJCSAgICAgICAgICAgInNhaGZcblx0IgkJCQkJCQkJICAgICAgICAgICAi
anAJMWIiCQkJCQkJCSAgICAgICAgICAgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUi
IChfX3kpIDogImF4IiwgImNjIik7CQkgICAgICAgIHJldHVybiBfX3ZhbHVlICA7CX0gCWV4dGVy
biBfX2lubGluZSAgIGxvbmcgZG91YmxlICAgICAgZm1vZGwgICAgKCBsb25nIGRvdWJsZSAgICAg
IF9feCAgLCAgbG9uZyBkb3VibGUgICAgICBfX3kgICkgICB7CSAgICAgIHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlX18JCQkJCQkJICAg
ICAgICAgICgiMToJZnByZW1cblx0IgkJCQkJCSAgICAgICAgICAgImZuc3RzdwklJWF4XG5cdCIJ
CQkJCQkgICAgICAgICAgICJzYWhmXG5cdCIJCQkJCQkJCSAgICAgICAgICAgImpwCTFiIgkJCQkJ
CQkgICAgICAgICAgIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJh
eCIsICJjYyIpOwkJICAgICAgICByZXR1cm4gX192YWx1ZSAgOwl9ICAKIyA0ODggIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwoKCmV4dGVybiBfX2lubGluZSAgICBkb3VibGUgICAg
ICAgIHNxcnQgICAgKCAgZG91YmxlICAgX194KSAgCXsJcmVnaXN0ZXIgICBkb3VibGUgICBfX3Jl
c3VsdDsJX19hc20gX192b2xhdGlsZV9fICggICAgICAiZnNxcnQiICAgIDogIj10IiAoX19yZXN1
bHQpIDogICAiMCIgKF9feCkgKTsJcmV0dXJuIF9fcmVzdWx0Owl9ICAJZXh0ZXJuIF9faW5saW5l
ICAgIGZsb2F0ICAgICAgICAgc3FydGYgICAgICggIGZsb2F0ICAgX194KSAgCXsJcmVnaXN0ZXIg
ICBmbG9hdCAgIF9fcmVzdWx0OwlfX2FzbSBfX3ZvbGF0aWxlX18gKCAgICAgICJmc3FydCIgICAg
OiAiPXQiIChfX3Jlc3VsdCkgOiAgICIwIiAoX194KSApOwlyZXR1cm4gX19yZXN1bHQ7CX0gIAll
eHRlcm4gX19pbmxpbmUgICAgbG9uZyBkb3VibGUgICAgICAgICBzcXJ0bCAgICAgKCAgbG9uZyBk
b3VibGUgICBfX3gpICAJewlyZWdpc3RlciAgIGxvbmcgZG91YmxlICAgX19yZXN1bHQ7CV9fYXNt
IF9fdm9sYXRpbGVfXyAoICAgICAgImZzcXJ0IiAgICA6ICI9dCIgKF9fcmVzdWx0KSA6ICAgIjAi
IChfX3gpICk7CXJldHVybiBfX3Jlc3VsdDsJfSAgIApleHRlcm4gX19pbmxpbmUgICAgbG9uZyBk
b3VibGUgICAgICAgX19zcXJ0bCAgICggIGxvbmcgZG91YmxlICAgX194KSAgCXsJcmVnaXN0ZXIg
ICBsb25nIGRvdWJsZSAgIF9fcmVzdWx0OwlfX2FzbSBfX3ZvbGF0aWxlX18gKCAgICAiZnNxcnQi
ICAgOiAiPXQiIChfX3Jlc3VsdCkgOiAgICIwIiAoX194KSApOwlyZXR1cm4gX19yZXN1bHQ7CX0g
IAoKCmV4dGVybiBfX2lubGluZSAgIGRvdWJsZSAgICBmYWJzICAoIGRvdWJsZSAgICBfX3ggKSAg
CXsJICByZXR1cm4gX19idWlsdGluX2ZhYnMgKF9feCkgOwl9IApleHRlcm4gX19pbmxpbmUgICBm
bG9hdCAgICBmYWJzZiAgKCBmbG9hdCAgICBfX3ggKSAgCXsJICByZXR1cm4gX19idWlsdGluX2Zh
YnNmIChfX3gpIDsJfSAKZXh0ZXJuIF9faW5saW5lICAgbG9uZyBkb3VibGUgICAgZmFic2wgICgg
bG9uZyBkb3VibGUgICAgX194ICkgIAl7CSAgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194KSA7
CX0gCmV4dGVybiBfX2lubGluZSAgIGxvbmcgZG91YmxlICAgIF9fZmFic2wgICggbG9uZyBkb3Vi
bGUgICAgX194ICkgIAl7CSAgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194KSA7CX0gCgoKCgoK
IyA1MTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwoKCmV4dGVybiBfX2lubGlu
ZSAgIGRvdWJsZSAgICAgYXRhbiAgICggZG91YmxlICBfX3gpICAJewlyZWdpc3RlciAgZG91Ymxl
ICBfX3Jlc3VsdDsJX19hc20gX192b2xhdGlsZV9fICggICAgImZsZDE7IGZwYXRhbiIgICA6ICI9
dCIgKF9fcmVzdWx0KSA6ICAgICAiMCIgKF9feCkgOiAic3QoMSkiICApOwlyZXR1cm4gX19yZXN1
bHQ7CX0gCWV4dGVybiBfX2lubGluZSAgIGZsb2F0ICAgICAgYXRhbmYgICAgKCBmbG9hdCAgX194
KSAgCXsJcmVnaXN0ZXIgIGZsb2F0ICBfX3Jlc3VsdDsJX19hc20gX192b2xhdGlsZV9fICggICAg
ImZsZDE7IGZwYXRhbiIgICA6ICI9dCIgKF9fcmVzdWx0KSA6ICAgICAiMCIgKF9feCkgOiAic3Qo
MSkiICApOwlyZXR1cm4gX19yZXN1bHQ7CX0gCWV4dGVybiBfX2lubGluZSAgIGxvbmcgZG91Ymxl
ICAgICAgYXRhbmwgICAgKCBsb25nIGRvdWJsZSAgX194KSAgCXsJcmVnaXN0ZXIgIGxvbmcgZG91
YmxlICBfX3Jlc3VsdDsJX19hc20gX192b2xhdGlsZV9fICggICAgImZsZDE7IGZwYXRhbiIgICA6
ICI9dCIgKF9fcmVzdWx0KSA6ICAgICAiMCIgKF9feCkgOiAic3QoMSkiICApOwlyZXR1cm4gX19y
ZXN1bHQ7CX0gIAoKZXh0ZXJuIF9faW5saW5lICAgbG9uZyBkb3VibGUgICAgX19zZ24xbCAgKCBs
b25nIGRvdWJsZSApICA7CWV4dGVybiBfX2lubGluZSAgICBsb25nIGRvdWJsZSAgICAgICBfX3Nn
bjFsICAgKCAgbG9uZyBkb3VibGUgICAgICAgX194ICApICAJewkgICAgICBfX2V4dGVuc2lvbl9f
IHVuaW9uIHsgbG9uZyBkb3VibGUgX194bGQ7IHVuc2lnbmVkIGludCBfX3hpWzNdOyB9IF9fbiA9
ICAgICAgICAgIHsgX194bGQ6IF9feCB9OwkJCQkJCQkgICAgICAgIF9fbi5fX3hpWzJdID0gKF9f
bi5fX3hpWzJdICYgMHg4MDAwKSB8IDB4M2ZmZjsJCQkgICAgICAgIF9fbi5fX3hpWzFdID0gMHg4
MDAwMDAwMDsJCQkJCQkgICAgICAgIF9fbi5fX3hpWzBdID0gMDsJCQkJCQkJICAgICAgICByZXR1
cm4gX19uLl9feGxkICA7CX0gIAoKCgoKCgoKCiMgNTQwICIvdXNyL2luY2x1ZGUvYml0cy9tYXRo
aW5saW5lLmgiIDMKCgpleHRlcm4gX19pbmxpbmUgICBkb3VibGUgICAgIGZsb29yICAgKCBkb3Vi
bGUgICAgICBfX3ggICkgIAl7CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CQkJ
CQkJICAgICAgICBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OwkJCQkJICAgICAg
ICBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOwkJCQkgICAgICAgIF9fYXNt
IF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOwkJCQkgICAgICAgIF9fY3d0
bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7ICAJCSAgICAgICAgX19hc20gX192b2xhdGls
ZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7CQkJICAgICAgICBfX2FzbSBfX3ZvbGF0
aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7CQkgICAgICAgIF9f
YXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOwkJCQkgICAgICAgIHJl
dHVybiBfX3ZhbHVlICA7CX0gCWV4dGVybiBfX2lubGluZSAgIGZsb2F0ICAgICAgZmxvb3JmICAg
ICggZmxvYXQgICAgICBfX3ggICkgIAl7CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7CQkJCQkJICAgICAgICBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OwkJCQkJ
ICAgICAgICBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOwkJCQkgICAgICAg
IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOwkJCQkgICAgICAg
IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7ICAJCSAgICAgICAgX19hc20gX192
b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7CQkJICAgICAgICBfX2FzbSBf
X3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7CQkgICAg
ICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOwkJCQkgICAg
ICAgIHJldHVybiBfX3ZhbHVlICA7CX0gCWV4dGVybiBfX2lubGluZSAgIGxvbmcgZG91YmxlICAg
ICAgZmxvb3JsICAgICggbG9uZyBkb3VibGUgICAgICBfX3ggICkgIAl7CSAgICAgIHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgICBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0IGludCBfX2N3OwkJCQkJICAgICAgICBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBf
X2N3dG1wOwkJCQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAo
X19jdykpOwkJCQkgICAgICAgIF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7ICAJ
CSAgICAgICAgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7
CQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6
ICIwIiAoX194KSk7CQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJt
IiAoX19jdykpOwkJCQkgICAgICAgIHJldHVybiBfX3ZhbHVlICA7CX0gIAojIDU1MiAiL3Vzci9p
bmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCgpleHRlcm4gX19pbmxpbmUgICBkb3VibGUgICAg
IGNlaWwgICAoIGRvdWJsZSAgICAgIF9feCAgKSAgCXsJICAgICAgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX192YWx1ZTsJCQkJCQkgICAgICAgIF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9f
Y3c7CQkJCQkgICAgICAgIF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7CQkJ
CSAgICAgICAgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7CQkJ
CSAgICAgICAgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgIAkJCSAgICAgICAg
X19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7CQkJICAgICAg
ICBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194
KSk7CQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykp
OwkJCQkgICAgICAgIHJldHVybiBfX3ZhbHVlICA7CX0gCWV4dGVybiBfX2lubGluZSAgIGZsb2F0
ICAgICAgY2VpbGYgICAgKCBmbG9hdCAgICAgIF9feCAgKSAgCXsJICAgICAgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTsJCQkJCQkgICAgICAgIF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQg
aW50IF9fY3c7CQkJCQkgICAgICAgIF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0
bXA7CQkJCSAgICAgICAgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3
KSk7CQkJCSAgICAgICAgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgIAkJCSAg
ICAgICAgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7CQkJ
ICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIw
IiAoX194KSk7CQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAo
X19jdykpOwkJCQkgICAgICAgIHJldHVybiBfX3ZhbHVlICA7CX0gCWV4dGVybiBfX2lubGluZSAg
IGxvbmcgZG91YmxlICAgICAgY2VpbGwgICAgKCBsb25nIGRvdWJsZSAgICAgIF9feCAgKSAgCXsJ
ICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJCQkJCQkgICAgICAgIF9fdm9sYXRp
bGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7CQkJCQkgICAgICAgIF9fdm9sYXRpbGUgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fY3d0bXA7CQkJCSAgICAgICAgX19hc20gX192b2xhdGlsZSAoImZuc3Rj
dyAlMCIgOiAiPW0iIChfX2N3KSk7CQkJCSAgICAgICAgX19jd3RtcCA9IChfX2N3ICYgMHhmM2Zm
KSB8IDB4MDgwMDsgIAkJCSAgICAgICAgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDog
Im0iIChfX2N3dG1wKSk7CQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAi
PXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7CQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCJm
bGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOwkJCQkgICAgICAgIHJldHVybiBfX3ZhbHVlICA7CX0g
IAojIDU2MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCgoKCgoKCgoKZXh0ZXJu
IF9faW5saW5lICBkb3VibGUKbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpICAKewogIHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CV9fYXNtIF9fdm9sYXRpbGVfXwkoImZzY2FsZSIJOiAi
PXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgobG9uZyBkb3VibGUpIF9feSkpOwlyZXR1
cm4gX192YWx1ZSA7Cn0KCgogCgoKCgoKCiAKCgoKZXh0ZXJuIF9faW5saW5lICAgZG91YmxlICAg
ICBsb2cxcCAgICggZG91YmxlICAgICAgX194ICApICAJewkgICAgICByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41
ICogMS40MTQyMTM1NjIzNzMwOTUwNDg4MEwgKQkJCQkgICAgICAgICAgX192YWx1ZSA9IGxvZ2wg
KDEuMCArIF9feCk7CQkJCQkJICAgICAgICBlbHNlCQkJCQkJCQkJICAgICAgICAgIF9fYXNtIF9f
dm9sYXRpbGVfXwkJCQkJCQkgICAgICAgICAgICAoImZsZGxuMlxuXHQiCQkJCQkJCSAgICAgICAg
ICAgICAiZnhjaFxuXHQiCQkJCQkJCSAgICAgICAgICAgICAiZnlsMnhwMSIJCQkJCQkJICAgICAg
ICAgICAgIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsJCQkJICAgICAg
ICByZXR1cm4gX192YWx1ZSAgOwl9IAlleHRlcm4gX19pbmxpbmUgICBmbG9hdCAgICAgIGxvZzFw
ZiAgICAoIGZsb2F0ICAgICAgX194ICApICAJewkgICAgICByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3ZhbHVlOwkJCQkJCSAgICAgICAgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40
MTQyMTM1NjIzNzMwOTUwNDg4MEwgKQkJCQkgICAgICAgICAgX192YWx1ZSA9IGxvZ2wgKDEuMCAr
IF9feCk7CQkJCQkJICAgICAgICBlbHNlCQkJCQkJCQkJICAgICAgICAgIF9fYXNtIF9fdm9sYXRp
bGVfXwkJCQkJCQkgICAgICAgICAgICAoImZsZGxuMlxuXHQiCQkJCQkJCSAgICAgICAgICAgICAi
ZnhjaFxuXHQiCQkJCQkJCSAgICAgICAgICAgICAiZnlsMnhwMSIJCQkJCQkJICAgICAgICAgICAg
IDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsJCQkJICAgICAgICByZXR1
cm4gX192YWx1ZSAgOwl9IAlleHRlcm4gX19pbmxpbmUgICBsb25nIGRvdWJsZSAgICAgIGxvZzFw
bCAgICAoIGxvbmcgZG91YmxlICAgICAgX194ICApICAJewkgICAgICByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41
ICogMS40MTQyMTM1NjIzNzMwOTUwNDg4MEwgKQkJCQkgICAgICAgICAgX192YWx1ZSA9IGxvZ2wg
KDEuMCArIF9feCk7CQkJCQkJICAgICAgICBlbHNlCQkJCQkJCQkJICAgICAgICAgIF9fYXNtIF9f
dm9sYXRpbGVfXwkJCQkJCQkgICAgICAgICAgICAoImZsZGxuMlxuXHQiCQkJCQkJCSAgICAgICAg
ICAgICAiZnhjaFxuXHQiCQkJCQkJCSAgICAgICAgICAgICAiZnlsMnhwMSIJCQkJCQkJICAgICAg
ICAgICAgIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsJCQkJICAgICAg
ICByZXR1cm4gX192YWx1ZSAgOwl9ICAKIyA2MDAgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxp
bmUuaCIgMwoKCiAKZXh0ZXJuIF9faW5saW5lICAgZG91YmxlICAgICBhc2luaCAgICggZG91Ymxl
ICAgICAgX194ICApICAJewkgICAgICByZWdpc3RlciBsb25nIGRvdWJsZSAgX195ID0gX19mYWJz
bCAoX194KTsJCQkJICAgICAgICByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwg
KF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KQkgICAgICAJICAqIF9fc2duMWwgKF9feCkp
ICA7CX0gCWV4dGVybiBfX2lubGluZSAgIGZsb2F0ICAgICAgYXNpbmhmICAgICggZmxvYXQgICAg
ICBfX3ggICkgIAl7CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlICBfX3kgPSBfX2ZhYnNsIChf
X3gpOwkJCQkgICAgICAgIHJldHVybiAobG9nMXBsIChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195
ICogX195ICsgMS4wKSArIDEuMCkgKyBfX3kpCSAgICAgIAkgICogX19zZ24xbCAoX194KSkgIDsJ
fSAJZXh0ZXJuIF9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBhc2luaGwgICAgKCBsb25nIGRv
dWJsZSAgICAgIF9feCAgKSAgCXsJICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgIF9feSA9IF9f
ZmFic2wgKF9feCk7CQkJCSAgICAgICAgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3Nx
cnRsIChfX3kgKiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkJICAgICAgCSAgKiBfX3NnbjFsIChf
X3gpKSAgOwl9ICAKCgoKCmV4dGVybiBfX2lubGluZSAgIGRvdWJsZSAgICAgYWNvc2ggICAoIGRv
dWJsZSAgICAgIF9feCAgKSAgCXsJICAgICAgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9f
eCAtIDEuMCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKSAgOwl9IAlleHRlcm4gX19pbmxpbmUgICBm
bG9hdCAgICAgIGFjb3NoZiAgICAoIGZsb2F0ICAgICAgX194ICApICAJewkgICAgICByZXR1cm4g
bG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpICA7
CX0gCWV4dGVybiBfX2lubGluZSAgIGxvbmcgZG91YmxlICAgICAgYWNvc2hsICAgICggbG9uZyBk
b3VibGUgICAgICBfX3ggICkgIAl7CSAgICAgIHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChf
X3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSkgIDsJfSAgCgoKZXh0ZXJuIF9faW5saW5l
ICAgZG91YmxlICAgICBhdGFuaCAgICggZG91YmxlICAgICAgX194ICApICAJewkgICAgICByZWdp
c3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOwkJCQkgICAgICAgIHJldHVybiAt
MC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gp
ICA7CX0gCWV4dGVybiBfX2lubGluZSAgIGZsb2F0ICAgICAgYXRhbmhmICAgICggZmxvYXQgICAg
ICBfX3ggICkgIAl7CSAgICAgIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9f
eCk7CQkJCSAgICAgICAgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAg
KyBfX3kpKSAqIF9fc2duMWwgKF9feCkgIDsJfSAJZXh0ZXJuIF9faW5saW5lICAgbG9uZyBkb3Vi
bGUgICAgICBhdGFuaGwgICAgKCBsb25nIGRvdWJsZSAgICAgIF9feCAgKSAgCXsJICAgICAgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194KTsJCQkJICAgICAgICByZXR1cm4g
LTAuNSAqIGxvZzFwbCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194
KSAgOwl9ICAKCgoKIApleHRlcm4gX19pbmxpbmUgICBkb3VibGUgICAgIGh5cG90ICAgKCBkb3Vi
bGUgICAgICBfX3ggICwgIGRvdWJsZSAgICAgIF9feSAgKSAgIHsJICAgIHJldHVybiBfX3NxcnRs
IChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpICA7CX0gCWV4dGVybiBfX2lubGluZSAgIGZsb2F0ICAg
ICAgaHlwb3RmICAgICggZmxvYXQgICAgICBfX3ggICwgIGZsb2F0ICAgICAgX195ICApICAgewkg
ICAgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSkgIDsJfSAJZXh0ZXJuIF9f
aW5saW5lICAgbG9uZyBkb3VibGUgICAgICBoeXBvdGwgICAgKCBsb25nIGRvdWJsZSAgICAgIF9f
eCAgLCAgbG9uZyBkb3VibGUgICAgICBfX3kgICkgICB7CSAgICByZXR1cm4gX19zcXJ0bCAoX194
ICogX194ICsgX195ICogX195KSAgOwl9ICAKCmV4dGVybiBfX2lubGluZSAgIGRvdWJsZSAgICAg
bG9nYiAgICggZG91YmxlICAgICAgX194ICApICAJewkgICAgICByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOwkJCQkJ
CSAgICAgICAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAgICAoImZ4dHJhY3Rcblx0
IgkJCQkJCQkgICAgICAgICAgIDogIj10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIg
KF9feCkpOwkJCSAgICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAJZXh0ZXJuIF9faW5saW5lICAg
ZmxvYXQgICAgICBsb2diZiAgICAoIGZsb2F0ICAgICAgX194ICApICAJewkgICAgICByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X19qdW5rOwkJCQkJCSAgICAgICAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAgICAo
ImZ4dHJhY3Rcblx0IgkJCQkJCQkgICAgICAgICAgIDogIj10IiAoX19qdW5rKSwgIj11IiAoX192
YWx1ZSkgOiAiMCIgKF9feCkpOwkJCSAgICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAJZXh0ZXJu
IF9faW5saW5lICAgbG9uZyBkb3VibGUgICAgICBsb2dibCAgICAoIGxvbmcgZG91YmxlICAgICAg
X194ICApICAJewkgICAgICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAg
ICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOwkJCQkJCSAgICAgICAgX19hc20gX192b2xh
dGlsZV9fCQkJCQkJCSAgICAgICAgICAoImZ4dHJhY3Rcblx0IgkJCQkJCQkgICAgICAgICAgIDog
Ij10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOwkJCSAgICAgICAgcmV0
dXJuIF9fdmFsdWUgIDsJfSAgCgoKCgoKCgoKCiMgNjk3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRo
aW5saW5lLmgiIDMKCgoKCgpleHRlcm4gX19pbmxpbmUgICBkb3VibGUgICAgIGRyZW0gICAoIGRv
dWJsZSAgICAgIF9feCAgLCAgZG91YmxlICAgICAgX195ICApICAgewkgICAgICByZWdpc3RlciBk
b3VibGUgX192YWx1ZTsJCQkJCQkgICAgICAgIHJlZ2lzdGVyIGludCBfX2Nsb2JiZXJlZDsJCQkJ
CQkgICAgICAgIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAgICAgICAgKCIxOglmcHJlbTFc
blx0IgkJCQkJCSAgICAgICAgICAgImZzdHN3CSUlYXhcblx0IgkJCQkJCSAgICAgICAgICAgInNh
aGZcblx0IgkJCQkJCQkJICAgICAgICAgICAianAJMWIiCQkJCQkJCSAgICAgICAgICAgOiAiPXQi
IChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDog
ImNjIik7ICAgICAgcmV0dXJuIF9fdmFsdWUgIDsJfSAJZXh0ZXJuIF9faW5saW5lICAgZmxvYXQg
ICAgICBkcmVtZiAgICAoIGZsb2F0ICAgICAgX194ICAsICBmbG9hdCAgICAgIF9feSAgKSAgIHsJ
ICAgICAgcmVnaXN0ZXIgZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgICByZWdpc3RlciBpbnQg
X19jbG9iYmVyZWQ7CQkJCQkJICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlX18JCQkJCQkJICAgICAg
ICAgICgiMToJZnByZW0xXG5cdCIJCQkJCQkgICAgICAgICAgICJmc3RzdwklJWF4XG5cdCIJCQkJ
CQkgICAgICAgICAgICJzYWhmXG5cdCIJCQkJCQkJCSAgICAgICAgICAgImpwCTFiIgkJCQkJCQkg
ICAgICAgICAgIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9f
eCksICJ1IiAoX195KSA6ICJjYyIpOyAgICAgIHJldHVybiBfX3ZhbHVlICA7CX0gCWV4dGVybiBf
X2lubGluZSAgIGxvbmcgZG91YmxlICAgICAgZHJlbWwgICAgKCBsb25nIGRvdWJsZSAgICAgIF9f
eCAgLCAgbG9uZyBkb3VibGUgICAgICBfX3kgICkgICB7CSAgICAgIHJlZ2lzdGVyIGRvdWJsZSBf
X3ZhbHVlOwkJCQkJCSAgICAgICAgcmVnaXN0ZXIgaW50IF9fY2xvYmJlcmVkOwkJCQkJCSAgICAg
ICAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgICAgICAoIjE6CWZwcmVtMVxuXHQiCQkJ
CQkJICAgICAgICAgICAiZnN0c3cJJSVheFxuXHQiCQkJCQkJICAgICAgICAgICAic2FoZlxuXHQi
CQkJCQkJCQkgICAgICAgICAgICJqcAkxYiIJCQkJCQkJICAgICAgICAgICA6ICI9dCIgKF9fdmFs
dWUpLCAiPSZhIiAoX19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsg
ICAgICByZXR1cm4gX192YWx1ZSAgOwl9ICAKIyA3MTIgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhp
bmxpbmUuaCIgMwoKCiAKZXh0ZXJuIF9faW5saW5lICBpbnQKX19maW5pdGUgKGRvdWJsZSBfX3gp
ICAKewogIHJldHVybiAoX19leHRlbnNpb25fXwoJICAoKCgoKHVuaW9uIHsgZG91YmxlIF9fZDsg
aW50IF9faVsyXTsgfSkge19fZDogX194fSkuX19pWzFdCgkgICAgIHwgMHg4MDBmZmZmZnUpICsg
MSkgPj4gMzEpKTsKfQoKIAojIDczMiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAz
CgoKCiAKCgoKCgoKCgoKCiAKIyA3NTUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIg
MwoKCgojIDM0OCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgojIDQwNyAiL3Vzci9pbmNs
dWRlL21hdGguaCIgMwoKCiAKCgoKIyAyICJidWcuYyIgMgoKIyAxICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCiAKCgojIDEgIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYx
ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMg
MTMxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNs
dWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoK
IyAyNzEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMiAzCgoKCiAKZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rl
c3QsCgkJICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICA7
CiAKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19z
cmMsIHNpemVfdCBfX24pCiAgICAgIDsKCiAKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQg
Kl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCgkJICAg
ICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgOwoKCgogCmV4dGVybiB2b2lkICptZW1zZXQg
KHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgIDsKCiAKZXh0ZXJuIGludCBtZW1jbXAg
KF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAg
ICAgIDsKCiAKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2Ms
IHNpemVfdCBfX24pCiAgICAgICAgIDsKCiMgNzMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoK
CgogCmV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgIDsKIApleHRlcm4gY2hhciAqc3RybmNweSAo
Y2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3JjLCBzaXplX3QgX19uKSAgOwoKIApleHRlcm4gY2hhciAqc3RyY2F0IChjaGFyICpfX3Jl
c3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgICA7CiAK
ZXh0ZXJuIGNoYXIgKnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zcmMsCgkJICAgICAgc2l6ZV90IF9fbikgIDsKCiAKZXh0ZXJuIGlu
dCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgICAg
IDsKIApleHRlcm4gaW50IHN0cm5jbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFy
ICpfX3MyLCBzaXplX3QgX19uKQogICAgICAgIDsKCiAKZXh0ZXJuIGludCBzdHJjb2xsIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICAgICA7CiAKZXh0ZXJuIHNp
emVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgOwoKIyAxMTYgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMwoKCgogCmV4dGVybiBjaGFyICpzdHJkdXAgKF9fY29uc3QgY2hhciAqX19z
KSAgICA7CgoKIAoKCgoKCgoKIyAxNTIgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCiAKZXh0
ZXJuIGNoYXIgKnN0cmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAgIDsKIApleHRl
cm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAgIDsKCgoKCgoK
CiAKCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hh
ciAqX19yZWplY3QpCiAgICAgICAgOwogCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAoX19jb25zdCBj
aGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgICAgOwogCmV4dGVybiBjaGFy
ICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAg
ICAgICA7CiAKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBf
X2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgICAgIDsKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0
cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Rl
bGltKQogICAgICA7CgogCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hhciAqX19yZXN0cmlj
dCBfX3MsCgkJCSBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKCQkJIGNoYXIgKipf
X3Jlc3RyaWN0IF9fc2F2ZV9wdHIpICA7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKCQkgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgIDsKCgojIDIxNCAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAzCgoKCiAKZXh0ZXJuIHNpemVfdCBzdHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSAg
ICA7CgoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pICA7Cgog
CgpleHRlcm4gY2hhciAqX19zdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBz
aXplX3QgX19idWZsZW4pICA7CmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0s
IGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICA7CgoKIAoKZXh0ZXJuIHZvaWQgX19iemVy
byAodm9pZCAqX19zLCBzaXplX3QgX19uKSAgOwoKCiAKZXh0ZXJuIHZvaWQgYmNvcHkgKF9fY29u
c3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikgIDsKCiAKZXh0ZXJuIHZv
aWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgIDsKCiAKZXh0ZXJuIGludCBiY21wIChf
X2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICAg
ICA7CgogCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAg
IDsKCiAKZXh0ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAg
IDsKCiAKCmV4dGVybiBpbnQgX19mZnMgKGludCBfX2kpICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0
KSk7CmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSAgIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
IAoKCgoKCgoKCgogCmV4dGVybiBpbnQgc3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBf
X2NvbnN0IGNoYXIgKl9fczIpCiAgICAgICAgOwoKIApleHRlcm4gaW50IHN0cm5jYXNlY21wIChf
X2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICAg
ICA7CgoKIyAyOTEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgogCgpleHRlcm4gY2hhciAq
c3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCgkJICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSkgIDsKCgojIDMzNCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAz
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcu
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKIyA5MDQgIi91c3IvaW5jbHVk
ZS9iaXRzL3N0cmluZy5oIiAzCgojIDM1OCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgog
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvZW5k
aWFuLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKIAojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL2VuZGlhbi5oIiAxIDMKIAoKCgoKCgojIDM3ICIvdXNyL2luY2x1ZGUv
ZW5kaWFuLmgiIDIgMwoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNTIgIi91c3IvaW5jbHVkZS9i
aXRzL3N0cmluZzIuaCIgMiAzCgoKCgoKCgoKCgoKCiMgNzMgIi91c3IvaW5jbHVkZS9iaXRzL3N0
cmluZzIuaCIgMwoKIyA4OCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKIAoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKIyAxODAgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoK
CgoKCgoKIAoKCgoKCgoKCiAKCiMgMzY2ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
CgoKIAoKZXh0ZXJuIHZvaWQgKl9fcmF3bWVtY2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2Mp
OwoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgpleHRlcm4gX19pbmxpbmUgIGNoYXIgKl9fc3RyY3B5
X3NtYWxsIChjaGFyICosIF9fdWludDE2X3QsIF9fdWludDE2X3QsCgkJCQkgICAgICBfX3VpbnQz
Ml90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgIGNoYXIgKgpfX3N0cmNw
eV9zbWFsbCAoY2hhciAqX19kZXN0LAoJCV9fdWludDE2X3QgX19zcmMwXzIsIF9fdWludDE2X3Qg
X19zcmM0XzIsCgkJX191aW50MzJfdCBfX3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKCQlz
aXplX3QgX19zcmNsZW4pCnsKICB1bmlvbiB7CiAgICBfX3VpbnQzMl90IF9fdWk7CiAgICBfX3Vp
bnQxNl90IF9fdXNpOwogICAgdW5zaWduZWQgY2hhciBfX3VjOwogIH0gKl9fdSA9ICh2b2lkICop
IF9fZGVzdDsKICBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIF9fc3JjbGVuKQogICAgewogICAgY2Fz
ZSAxOgogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgMjoKICAg
ICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAg
X191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNl
IDQ6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBicmVhazsKICAgIGNhc2UgNToK
ICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAg
IGNhc2UgNjoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAg
ICAgIGJyZWFrOwogICAgY2FzZSA3OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAg
X191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kg
PSBfX3NyYzRfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7
CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA4OgogICAgICBf
X3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7CiAgICAgIF9fdS0+X191aSA9IF9fc3JjNF80OwogICAgICBicmVhazsKICAgIH0K
ICByZXR1cm4gX19kZXN0Owp9CiMgNTMwICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
CgoKCiAKIyA2OTYgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCgogCgojIDcxMSAi
L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKCgoKCgoKIAoKIyA3MzMgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCgoKCgoKCgoKCiAKCgojIDc2NiAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKIyA3OTMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMwoKCiMgODE1ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgojIDg0MCAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCiAKCgoKCgoKCgoKCgogCgoKCiMgODcyICIv
dXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCmV4dGVybiBfX2lubGluZSAgc2l6ZV90IF9f
c3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19p
bmxpbmUgIHNpemVfdApfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVq
ZWN0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVz
dWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QpCiAgICArK19fcmVzdWx0
OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lICBzaXplX3QgX19zdHJjc3Bu
X2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdDEsCgkJCQkgICAgIGNoYXIgX19y
ZWplY3QyKTsKZXh0ZXJuIF9faW5saW5lICBzaXplX3QKX19zdHJjc3BuX2MyIChfX2NvbnN0IGNo
YXIgKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgc2l6
ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tf
X3Jlc3VsdF0gIT0gX19yZWplY3QxCgkgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDIpCiAg
ICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lICBzaXpl
X3QgX19zdHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdDEsCgkJCQkg
ICAgIGNoYXIgX19yZWplY3QyLCBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSAgc2l6
ZV90Cl9fc3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFy
IF9fcmVqZWN0MiwKCSAgICAgIGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9f
cmVzdWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3Vs
dF0gIT0gX19yZWplY3QxCgkgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDIgJiYgX19zW19f
cmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsK
fQoKCgogCgoKCiMgOTI3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCmV4dGVybiBf
X2lubGluZSAgc2l6ZV90IF9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2Fj
Y2VwdCk7CmV4dGVybiBfX2lubGluZSAgc2l6ZV90Cl9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIg
Kl9fcywgY2hhciBfX2FjY2VwdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAg
IAogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0KQogICAgKytfX3Jlc3VsdDsKICBy
ZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSAgc2l6ZV90IF9fc3Ryc3BuX2MyIChf
X2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCgkJCQkgICAgY2hhciBfX2FjY2VwdDIp
OwpleHRlcm4gX19pbmxpbmUgIHNpemVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3Ms
IGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jl
c3VsdCA9IDA7CiAgIAogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3Nb
X19yZXN1bHRdID09IF9fYWNjZXB0MikKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0
Owp9CgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpf
X3MsIGNoYXIgX19hY2NlcHQxLAoJCQkJICAgIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0
Myk7CmV4dGVybiBfX2lubGluZSAgc2l6ZV90Cl9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9f
cywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0MykKewogIHJl
Z2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgIAogIHdoaWxlIChfX3NbX19yZXN1bHRdID09
IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MgoJIHx8IF9fc1tfX3Jlc3Vs
dF0gPT0gX19hY2NlcHQzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCgoK
IAoKCiMgOTgyICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCmV4dGVybiBfX2lubGlu
ZSAgY2hhciAqX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEs
CgkJCQkgICAgIGNoYXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lICBjaGFyICoKX19zdHJw
YnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQy
KQp7CiAgIAogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9f
cyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lk
ICopMCkgIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4gX19pbmxpbmUgIGNoYXIg
Kl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLAoJCQkJICAg
ICBjaGFyIF9fYWNjZXB0MiwgY2hhciBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgIGNoYXIg
KgpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBf
X2FjY2VwdDIsCgkgICAgICBjaGFyIF9fYWNjZXB0MykKewogICAKICB3aGlsZSAoKl9fcyAhPSAn
XDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyCgkgJiYgKl9fcyAh
PSBfX2FjY2VwdDMpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICop
MCkgIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CgoKCiAKCgoKIyAxMDIxICIvdXNyL2luY2x1
ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgoKIyAxMDMzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcy
LmgiIDMKCgoKCgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnRva19yXzFjIChj
aGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0ZXJuIF9faW5saW5lICBj
aGFyICoKX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0
cCkKewogIGNoYXIgKl9fcmVzdWx0OwogIGlmIChfX3MgPT0gKCh2b2lkICopMCkgKQogICAgX19z
ID0gKl9fbmV4dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXApCiAgICArK19fczsKICBpZiAoKl9f
cyA9PSAnXDAnKQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikwKSA7CiAgZWxzZQogICAgewogICAg
ICBfX3Jlc3VsdCA9IF9fczsKICAgICAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9f
c2VwKQoJKytfX3M7CiAgICAgIGlmICgqX19zID09ICdcMCcpCgkqX19uZXh0cCA9IF9fczsKICAg
ICAgZWxzZQoJewoJICAqX19zID0gJ1wwJzsKCSAgKl9fbmV4dHAgPSBfX3MgKyAxOwoJfQogICAg
fQogIHJldHVybiBfX3Jlc3VsdDsKfQoKCgoKCgoKCgojIDEwOTQgIi91c3IvaW5jbHVkZS9iaXRz
L3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnNlcF8xYyAoY2hhciAq
Kl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSAgY2hhciAqCl9fc3Ryc2VwXzFj
IChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwg
PSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSApCiAgICByZXR1cm4gKl9fcyA9
ICgodm9pZCAqKTApIDsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0KQogICAgKigqX19zKSsr
ID0gJ1wwJzsKICBlbHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRlbnNpb25fXyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKCAgX19yZWplY3QgKSAmJiAoICBfX3JlamVjdCApID09ICdcMCcJPyAoY2hh
ciAqKSBfX3Jhd21lbWNociAoIF9fcmV0dmFsICwgICBfX3JlamVjdCApCTogc3RyY2hyICggX19y
ZXR2YWwgLCAgIF9fcmVqZWN0ICkpKSApICE9ICgodm9pZCAqKTApICkKICAgICAgKigqX19zKSsr
ID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAqKTApIDsKICByZXR1cm4gX19y
ZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSAgY2hhciAqX19zdHJzZXBfMmMgKGNoYXIgKipfX3Ms
IGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSAgY2hhciAq
Cl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIp
CnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgo
dm9pZCAqKTApICkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCkgOwogIGlmICgqX19yZXR2
YWwgPT0gX19yZWplY3QxIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDIpCiAgICAqKCpfX3MpKysg
PSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFs
OwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9f
Y3AgIT0gX19yZWplY3QyKQoJKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKCXsKCSAg
Kl9fcyA9IF9fY3A7CgkgICooKl9fcykrKyA9ICdcMCc7Cgl9CiAgICAgIGVsc2UKCSpfX3MgPSAo
KHZvaWQgKikwKSA7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUg
IGNoYXIgKl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3Jl
amVjdDIsCgkJCQkgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSAgY2hhciAqCl9f
c3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsIGNo
YXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChf
X3JldHZhbCA9PSAoKHZvaWQgKikwKSApCiAgICByZXR1cm4gKl9fcyA9ICgodm9pZCAqKTApIDsK
ICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QyCiAg
ICAgIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDMpCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIGVs
c2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGls
ZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9fY3AgIT0gX19yZWpl
Y3QyCgkgICAgICYmICpfX2NwICE9IF9fcmVqZWN0MykKCSsrX19jcDsKICAgICAgaWYgKCpfX2Nw
ICE9ICdcMCcpCgl7CgkgICpfX3MgPSBfX2NwOwoJICAqKCpfX3MpKysgPSAnXDAnOwoJfQogICAg
ICBlbHNlCgkqX19zID0gKCh2b2lkICopMCkgOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQoK
ZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnNlcF9nIChjaGFyICoqX19zLCBfX2NvbnN0IGNo
YXIgKl9fcmVqZWN0KTsKZXh0ZXJuIF9faW5saW5lICBjaGFyICoKX19zdHJzZXBfZyAoY2hhciAq
Kl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFs
ID0gKl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkgKQogICAgcmV0dXJuICgodm9p
ZCAqKTApIDsKICBpZiAoKCpfX3MgPSBfX2V4dGVuc2lvbl9fCSh7IGNoYXIgX19hMCwgX19hMSwg
X19hMjsJKF9fYnVpbHRpbl9jb25zdGFudF9wICggIF9fcmVqZWN0ICkgJiYgKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCAgIF9fcmVqZWN0ICApICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KCAgIF9fcmVqZWN0ICApID09IDEpIAk/ICgoX19hMCA9ICgoX19jb25zdCBjaGFyICAqKSAoICBf
X3JlamVjdCApKVswXSwgX19hMCA9PSAnXDAnKQk/ICgodm9pZCkgKCBfX3JldHZhbCApLCAoKHZv
aWQgKikwKSApCTogKChfX2ExID0gKChfX2NvbnN0IGNoYXIgKikgKCAgX19yZWplY3QgKSlbMV0s
IF9fYTEgPT0gJ1wwJykJPyAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCAg
X19hMCApICYmICggIF9fYTAgKSA9PSAnXDAnCT8gKGNoYXIgKikgX19yYXdtZW1jaHIgKCAgX19y
ZXR2YWwgICwgICBfX2EwICkJOiBzdHJjaHIgKCAgX19yZXR2YWwgICwgICBfX2EwICkpKSAJOiAo
KF9fYTIgPSAoKF9fY29uc3QgY2hhciAqKSAoICBfX3JlamVjdCApKVsyXSwgX19hMiA9PSAnXDAn
KQk/IF9fc3RycGJya19jMiAoIF9fcmV0dmFsICwgX19hMCwgX19hMSkJOiAoKChfX2NvbnN0IGNo
YXIgKikgKCAgX19yZWplY3QgKSlbM10gPT0gJ1wwJwk/IF9fc3RycGJya19jMyAoIF9fcmV0dmFs
ICwgX19hMCwgX19hMSwgX19hMikJOiBzdHJwYnJrICggX19yZXR2YWwgLCAgIF9fcmVqZWN0ICkp
KSkpCTogc3RycGJyayAoIF9fcmV0dmFsICwgICBfX3JlamVjdCApKTsgfSkgKSAhPSAoKHZvaWQg
KikwKSApCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIHJldHVybiBfX3JldHZhbDsKfQoKCgoKCiAK
CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKIAoKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODgg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIyAzMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgogCgojIDUyMSAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCgoKCgogCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUp
ICAgIDsKIApleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6
ZSkKICAgICAgICA7CgoKIyA4NTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgogCgoKIyAx
MTg4ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwoKCgoKCmV4dGVybiBjaGFyICpf
X3N0cmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZykgICAgOwoKIyAxMjA0ICIvdXNyL2luY2x1
ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgoKCgoKCgpleHRlcm4gY2hhciAqX19zdHJuZHVwIChfX2Nv
bnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgICAgIDsKCiMgMTIzMiAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKCgoKCgoKCgojIDM2MSAiL3Vzci9pbmNsdWRl
L3N0cmluZy5oIiAyIDMKCgoKCiAKCgojIDMgImJ1Zy5jIiAyCgoKaW50IG1haW4oKQp7CiAgcHJp
bnRmKCAiSGVsbG8gd29ybGRcbiIgKTsKICByZXR1cm4gMDsKfQo=


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