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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

target/9552: X86-64 cross compiler internal compiler error at varasm.c


>Number:         9552
>Category:       target
>Synopsis:       X86-64 cross compiler internal compiler error at varasm.c
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Feb 03 19:16:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Christian Daudt
>Release:        cvs gcc-3_3-branch Feb 3 checkout (and gcc-20030203 snapshot)
>Organization:
>Environment:
linux i386
>Description:
(resubmitting email sent to gcc-bugs through gnats)
Hi,
 In trying to set up an environment for x86_64, I've run into the the error above in compiling the glibc (set for x86_64-unknown-linux crosscompile from i686-pc-linux-gnu host as suggested in the x86-64.org website).
 I have latest cvs sources from the gcc-3_3-branch. I've tracked the error down to being caused by the fact that the define HAVE_LD_RO_RW_SECTION_MIXING is being set to 1 by the configure scripts, and because of that  the  default_eh_frame_section function (in dwarf2out.c) is calling named_section_flags with flags that varasm.c doesn't like (because they differ from previous calls). 
 I found that manually removing that HAVE_LD_RO_RW_SECTION_MIXING define causes everything to compile ok and intuitively it seems to me from the  comments that that define shouldn't be set for the x86_64 tools, but I don't know enough about gcc to know that for sure. 
 Anyone know what the proper fix for this would be? Here is the error line:
/home/csd/dvl5/x86-64/bin/x86_64-unknown-linux-gcc soinit.c -c -O2 -Wall -Winlin
e -Wstrict-prototypes -Wwrite-strings -g   -fPIC    -I../include -I. -I/home/csd
/dvl5/glibc/build/elf -I.. -I../libio  -I/home/csd/dvl5/glibc/build -I../sysdeps
/x86_64/elf -I../linuxthreads/sysdeps/unix/sysv/linux/x86_64 -I../linuxthreads/s
ysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I
../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthrea
ds/sysdeps/x86_64 -I../sysdeps/unix/sysv/linux/x86_64 -I../sysdeps/unix/sysv/lin
ux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps
/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/x86_64 -I../sysdeps/unix -I.
./sysdeps/posix -I../sysdeps/x86_64/fpu -I../sysdeps/x86_64 -I../sysdeps/wordsiz
e-64 -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee7
54/flt-32 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic   -
D_LIBC_REENTRANT -include ../include/libc-symbols.h  -DPIC -DSHARED   -o /home/c
sd/dvl5/glibc/build/elf/soinit.os
soinit.c:25: internal compiler error: in named_section_flags, at varasm.c:412
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

I've attached a script which grabs binutils, gcc and glibc which I'm running when I hit this problem. I also just tried with the gcc-20030203 snapshot and the same happens

 thanks, 
  csd
>How-To-Repeat:
run the getBuildAll script provided
>Fix:

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

VGhlcmUgYXJlIDMgZmlsZXMgaGVyZSwgZmlyc3QgaXMgdGhlIEMgc291cmNlLCB0aGVuIHRoZSBF
IHByZXByb2Nlc3NlZApmaWxlIGFuZCBmaW5hbGx5IGEgc2NyaXB0IHRvIHJlcHJvZHVjZSB0aGUg
ZXJyb3I6Cgpzb2luaXQuYzoKLS0tLS0tLS0KCi8qIEluaXRpYWxpemVyIG1vZHVsZSBmb3IgYnVp
bGRpbmcgdGhlIEVMRiBzaGFyZWQgQyBsaWJyYXJ5LiAgVGhpcyBmaWxlIGFuZAogICBzb2Zpbmku
YyBkbyB0aGUgd29yayBub3JtYWxseSBkb25lIGJ5IGNydGJlZ2luUy5vIGFuZCBjcnRlbmRTLm8s
IHRvIHdyYXAKICAgdGhlIGAuY3RvcnMnIGFuZCBgLmR0b3JzJyBzZWN0aW9ucyBzbyB0aGUgbGlz
dHMgYXJlIHRlcm1pbmF0ZWQsIGFuZAogICBjYWxsaW5nIHRob3NlIGxpc3RzIG9mIGZ1bmN0aW9u
cy4gICovCgojaW5jbHVkZSA8bGliYy1pbnRlcm5hbC5oPgojaW5jbHVkZSA8c3RkbGliLmg+Cgoj
aWZkZWYgSEFWRV9EV0FSRjJfVU5XSU5EX0lORk9fU1RBVElDCiMgaW5jbHVkZSA8Z2NjZnJhbWUu
aD4KI2VuZGlmCgpzdGF0aWMgdm9pZCAoKmNvbnN0IF9fQ1RPUl9MSVNUX19bMV0pICh2b2lkKQog
ICAgIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmN0b3JzIikpKQogICAgID0geyAodm9pZCAo
KikgKHZvaWQpKSAtMSB9OwpzdGF0aWMgdm9pZCAoKmNvbnN0IF9fRFRPUl9MSVNUX19bMV0pICh2
b2lkKQogICAgIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmR0b3JzIikpKQogICAgID0geyAo
dm9pZCAoKikgKHZvaWQpKSAtMSB9OwoKc3RhdGljIGlubGluZSB2b2lkCnJ1bl9ob29rcyAodm9p
ZCAoKmNvbnN0IGxpc3RbXSkgKHZvaWQpKQp7CiAgd2hpbGUgKCorK2xpc3QpCiAgICAoKipsaXN0
KSAoKTsKfQoKI2lmZGVmIEhBVkVfRFdBUkYyX1VOV0lORF9JTkZPCnN0YXRpYyBjaGFyIF9fRUhf
RlJBTUVfQkVHSU5fX1tdCiAgICAgX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZWhfZnJhbWUi
KSkpCiAgICAgPSB7IH07CiMgaWZkZWYgSEFWRV9EV0FSRjJfVU5XSU5EX0lORk9fU1RBVElDCmV4
dGVybiB2b2lkIF9fcmVnaXN0ZXJfZnJhbWVfaW5mbyAoY29uc3Qgdm9pZCAqLCBzdHJ1Y3Qgb2Jq
ZWN0ICopOwpleHRlcm4gdm9pZCBfX3JlZ2lzdGVyX2ZyYW1lX2luZm9fYmFzZXMgKGNvbnN0IHZv
aWQgKiwgc3RydWN0IG9iamVjdCAqLAoJCQkJCSB2b2lkICosIHZvaWQgKik7CmV4dGVybiB2b2lk
IF9fZGVyZWdpc3Rlcl9mcmFtZV9pbmZvIChjb25zdCB2b2lkICopOwpleHRlcm4gdm9pZCBfX2Rl
cmVnaXN0ZXJfZnJhbWVfaW5mb19iYXNlcyAoY29uc3Qgdm9pZCAqKTsKIyBlbHNlCmV4dGVybiB2
b2lkIF9fcmVnaXN0ZXJfZnJhbWUgKGNvbnN0IHZvaWQgKik7CmV4dGVybiB2b2lkIF9fZGVyZWdp
c3Rlcl9mcmFtZSAoY29uc3Qgdm9pZCAqKTsKIyBlbmRpZgojZW5kaWYKCi8qIFRoaXMgZnVuY3Rp
b24gd2lsbCBiZSBjYWxsZWQgZnJvbSBfaW5pdCBpbiBpbml0LWZpcnN0LmMuICAqLwp2b2lkCl9f
bGliY19nbG9iYWxfY3RvcnMgKHZvaWQpCnsKICAvKiBDYWxsIGNvbnN0cnVjdG9yIGZ1bmN0aW9u
cy4gICovCiAgcnVuX2hvb2tzIChfX0NUT1JfTElTVF9fKTsKCiNpZmRlZiBIQVZFX0RXQVJGMl9V
TldJTkRfSU5GTwojIGlmZGVmIEhBVkVfRFdBUkYyX1VOV0lORF9JTkZPX1NUQVRJQwogIHsKICAg
IHN0YXRpYyBzdHJ1Y3Qgb2JqZWN0IG9iOwojICBpZiBkZWZpbmVkIENSVF9HRVRfUkZJQl9URVhU
IHx8IGRlZmluZWQgQ1JUX0dFVF9SRklCX0RBVEEKICAgIHZvaWQgKnRiYXNlLCAqZGJhc2U7Cgoj
ICAgaWZkZWYgQ1JUX0dFVF9SRklCX1RFWFQKICAgIENSVF9HRVRfUkZJQl9URVhUICh0YmFzZSk7
CiMgICBlbHNlCiAgICB0YmFzZSA9IE5VTEw7CiMgICBlbmRpZgojICAgaWZkZWYgQ1JUX0dFVF9S
RklCX0RBVEEKICAgIENSVF9HRVRfUkZJQl9EQVRBIChkYmFzZSk7CiMgICBlbHNlCiAgICBkYmFz
ZSA9IE5VTEw7CiMgICBlbmRpZgogICAgX19yZWdpc3Rlcl9mcmFtZV9pbmZvX2Jhc2VzIChfX0VI
X0ZSQU1FX0JFR0lOX18sICZvYiwgdGJhc2UsIGRiYXNlKTsKIyAgZWxzZQogICAgX19yZWdpc3Rl
cl9mcmFtZV9pbmZvIChfX0VIX0ZSQU1FX0JFR0lOX18sICZvYik7CiMgIGVuZGlmCiAgfQojIGVs
c2UKICBfX3JlZ2lzdGVyX2ZyYW1lIChfX0VIX0ZSQU1FX0JFR0lOX18pOwojIGVuZGlmCiNlbmRp
Zgp9CgoKLyogVGhpcyBmdW5jdGlvbiBiZWNvbWVzIHRoZSBEVF9GSU5JIHRlcm1pbmF0aW9uIGZ1
bmN0aW9uCiAgIGZvciB0aGUgQyBsaWJyYXJ5LiAgKi8Kdm9pZCBfZmluaSAodm9pZCkgX19hdHRy
aWJ1dGVfXyAoKHNlY3Rpb24gKCIuZmluaSIpKSk7IC8qIEp1c3QgZm9yIGtpY2tzLiAgKi8Kdm9p
ZApfZmluaSAodm9pZCkKewogIC8qIENhbGwgZGVzdHJ1Y3RvciBmdW5jdGlvbnMuICAqLwogIHJ1
bl9ob29rcyAoX19EVE9SX0xJU1RfXyk7CiNpZmRlZiBIQVZFX0RXQVJGMl9VTldJTkRfSU5GTwoj
IGlmZGVmIEhBVkVfRFdBUkYyX1VOV0lORF9JTkZPX1NUQVRJQwojICBpZiBkZWZpbmVkIENSVF9H
RVRfUkZJQl9URVhUIHx8IGRlZmluZWQgQ1JUX0dFVF9SRklCX0RBVEEKICBfX2RlcmVnaXN0ZXJf
ZnJhbWVfaW5mb19iYXNlcyAoX19FSF9GUkFNRV9CRUdJTl9fKTsKIyAgZWxzZQogIF9fZGVyZWdp
c3Rlcl9mcmFtZV9pbmZvIChfX0VIX0ZSQU1FX0JFR0lOX18pOwojICBlbmRpZgojIGVsc2UKICBf
X2RlcmVnaXN0ZXJfZnJhbWUgKF9fRUhfRlJBTUVfQkVHSU5fXyk7CiMgZW5kaWYKI2VuZGlmCn0K
CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpzb2luaXQuRToKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgMSAic29pbml0LmMiCiMgMSAiPGJ1aWx0
LWluPiIKIyAxICI8Y29tbWFuZCBsaW5lPiIKCgoKCgoKIyAxICIuLi9pbmNsdWRlL2xpYmMtc3lt
Ym9scy5oIiAxCiMgNTQgIi4uL2luY2x1ZGUvbGliYy1zeW1ib2xzLmgiCiMgMSAiL2hvbWUvY3Nk
L2R2bDMvZ2xpYmMvYnVpbGQvY29uZmlnLmgiIDEKIyA1NSAiLi4vaW5jbHVkZS9saWJjLXN5bWJv
bHMuaCIgMgojIDggIjxjb21tYW5kIGxpbmU+IiAyCiMgMSAic29pbml0LmMiCgoKCgoKIyAxICIu
Li9pbmNsdWRlL2xpYmMtaW50ZXJuYWwuaCIgMQoKCgoKCgojIDEgIi4uL3N5c2RlcHMveDg2XzY0
L2hwLXRpbWluZy5oIiAxCgojIDEgIi4uL3N5c2RlcHMvaTM4Ni9pNjg2L2hwLXRpbWluZy5oIiAx
CiMgMjQgIi4uL3N5c2RlcHMvaTM4Ni9pNjg2L2hwLXRpbWluZy5oIgojIDEgIi4uL2luY2x1ZGUv
c3RyaW5nLmgiIDEKCgojIDEgIi4uL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEKIyAxICIuLi9wb3Np
eC9zeXMvdHlwZXMuaCIgMQojIDI2ICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIKIyAxICIuLi9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDEKIyAyODMgIi4uL2luY2x1ZGUvZmVhdHVyZXMuaCIKIyAxICIuLi9p
bmNsdWRlL3N5cy9jZGVmcy5oIiAxCiMgMSAiLi4vbWlzYy9zeXMvY2RlZnMuaCIgMQojIDIgIi4u
L2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIKIyAyODQgIi4uL2luY2x1ZGUvZmVhdHVyZXMuaCIgMgoj
IDI3ICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIgMgoKCgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2
L2xpbnV4L3g4Nl82NC9iaXRzL3R5cGVzLmgiIDEKIyAyOSAiLi4vc3lzZGVwcy91bml4L3N5c3Yv
bGludXgveDg2XzY0L2JpdHMvdHlwZXMuaCIKIyAxICIvaG9tZS9jc2QvZHZsMy94ODYtNjQvbGli
L2djYy1saWIveDg2XzY0LXVua25vd24tbGludXgvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0
CiMgMjEzICIvaG9tZS9jc2QvZHZsMy94ODYtNjQvbGliL2djYy1saWIveDg2XzY0LXVua25vd24t
bGludXgvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIGxvbmcgdW5zaWduZWQgaW50
IHNpemVfdDsKIyAzMCAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L2JpdHMvdHlw
ZXMuaCIgMgojIDEgIi4uL3N5c2RlcHMveDg2XzY0L2JpdHMvd29yZHNpemUuaCIgMQojIDMxICIu
Li9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvYml0cy90eXBlcy5oIiAyCgoKdHlwZWRl
ZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3Vf
c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBpbnQgX191X2xvbmc7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdV9xdWFkX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNTUgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L3g4Nl82NC9iaXRzL3R5cGVzLmgiCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVk
ZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2lu
dDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2ln
bmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7Cgp0eXBl
ZGVmIHNpZ25lZCBsb25nIGludCBfX2ludDY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
X191aW50NjRfdDsKCgoKCgoKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKCnR5cGVkZWYg
X191aW50NjRfdCBfX2Rldl90OwoKCgp0eXBlZGVmIF9fdWludDMyX3QgX191aWRfdDsKdHlwZWRl
ZiBfX3VpbnQzMl90IF9fZ2lkX3Q7Cgp0eXBlZGVmIF9fdWludDY0X3QgX19pbm9fdDsKdHlwZWRl
ZiBfX3VpbnQ2NF90IF9faW5vNjRfdDsKCgoKCnR5cGVkZWYgX191aW50MzJfdCBfX21vZGVfdDsK
CnR5cGVkZWYgX191aW50NjRfdCBfX25saW5rX3Q7CnR5cGVkZWYgX19pbnQ2NF90IF9fb2ZmX3Q7
CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoK
CgoKCgp0eXBlZGVmIF9faW50MzJfdCBfX3BpZF90OwoKdHlwZWRlZiBfX2ludDY0X3QgX19zc2l6
ZV90Owp0eXBlZGVmIF9fdWludDY0X3QgX19ybGltX3Q7CnR5cGVkZWYgX191aW50NjRfdCBfX3Js
aW02NF90Owp0eXBlZGVmIF9faW50NjRfdCBfX2Jsa2NudF90Owp0eXBlZGVmIF9faW50NjRfdCBf
X2Jsa2NudDY0X3Q7CnR5cGVkZWYgX191aW50NjRfdCBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191
aW50NjRfdCBfX2ZzYmxrY250NjRfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IF9fZnNmaWxjbnRfdDsK
dHlwZWRlZiBfX3VpbnQ2NF90IF9fZnNmaWxjbnQ2NF90Owp0eXBlZGVmIF9fdWludDMyX3QgX19p
ZF90OwojIDEyMyAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L2JpdHMvdHlwZXMu
aCIKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsKCgp0
eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxv
bmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVk
ZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX19jbG9ja190Owp0eXBlZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYg
aW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKdHlwZWRlZiBpbnQg
X19pcGNfcGlkX3Q7CgoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsKIyAxNjMgIi4u
L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9iaXRzL3R5cGVzLmgiCnR5cGVkZWYgaW50
IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX190X3VzY2FsYXJfdDsKCgoKCgoK
CnR5cGVkZWYgbG9uZyBpbnQgX19pbnRwdHJfdDsKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBf
X3NvY2tsZW5fdDsKCgoKIyAxICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy9wdGhyZWFkL2JpdHMv
cHRocmVhZHR5cGVzLmgiIDEKIyAyMyAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9i
aXRzL3B0aHJlYWR0eXBlcy5oIgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMv
c2NoZWQuaCIgMQojIDY4ICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NjaGVkLmgi
CnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsK
IyAyNCAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL3B0aHJlYWR0eXBlcy5o
IiAyCgoKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsKICBp
bnQgX19zcGlubG9jazsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVj
dCAqX3B0aHJlYWRfZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7
CiAgaW50IF9fZGV0YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2No
ZWRfcGFyYW0gX19zY2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29w
ZTsKICBzaXplX3QgX19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpf
X3N0YWNrYWRkcjsKICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5
cGVkZWYgc3RydWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0
aHJlYWRfZGVzY3IgX19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3Ry
dWN0CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9y
ZXNlcnZlZDsKICBpbnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBp
bnQgX19tX2tpbmQ7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJl
YWRfbXV0ZXhfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhy
ZWFkX211dGV4YXR0cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoKCnR5cGVk
ZWYgc3RydWN0IF9wdGhyZWFkX3J3bG9ja190CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sg
X19yd19sb2NrOwogIGludCBfX3J3X3JlYWRlcnM7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0
ZXI7CiAgX3B0aHJlYWRfZGVzY3IgX19yd19yZWFkX3dhaXRpbmc7CiAgX3B0aHJlYWRfZGVzY3Ig
X19yd193cml0ZV93YWl0aW5nOwogIGludCBfX3J3X2tpbmQ7CiAgaW50IF9fcndfcHNoYXJlZDsK
fSBwdGhyZWFkX3J3bG9ja190OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbG9ja2tpbmQ7
CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCnR5cGVkZWYgdm9s
YXRpbGUgaW50IHB0aHJlYWRfc3BpbmxvY2tfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgc3RydWN0
IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fYmFfbG9jazsKICBpbnQgX19iYV9yZXF1aXJlZDsKICBpbnQg
X19iYV9wcmVzZW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsKfSBwdGhyZWFkX2Jh
cnJpZXJfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX2Jh
cnJpZXJhdHRyX3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7CiMg
MTgzICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvYml0cy90eXBlcy5oIiAyCiMg
MzEgIi4uL3Bvc2l4L3N5cy90eXBlcy5oIiAyCgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0
eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYg
X191X2xvbmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVh
ZF90IHVfcXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgoKCnR5cGVkZWYgX19sb2Zm
X3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3QgaW5vX3Q7CgoKCgoKCnR5cGVkZWYgX19pbm82
NF90IGlubzY0X3Q7CgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lk
X3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlu
a190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29m
Zl90IG9mZl90OwoKCgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBf
X3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6
ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2Nh
ZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIuLi9wb3Np
eC9zeXMvdHlwZXMuaCIKIyAxICIuLi9pbmNsdWRlL3RpbWUuaCIgMQoKCiMgMSAiLi4vdGltZS90
aW1lLmgiIDEKIyA1OSAiLi4vdGltZS90aW1lLmgiCnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7
CiMgNzAgIi4uL3RpbWUvdGltZS5oIgp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsKIyA4MiAiLi4v
dGltZS90aW1lLmgiCnR5cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDk0ICIuLi90aW1l
L3RpbWUuaCIKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKIyA0ICIuLi9pbmNsdWRlL3RpbWUu
aCIgMgojIDEzMyAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiIDIKCgoKdHlwZWRlZiBfX3VzZWNvbmRz
X3QgdXNlY29uZHNfdDsKCgoKdHlwZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCgoK
CiMgMSAiL2hvbWUvY3NkL2R2bDMveDg2LTY0L2xpYi9nY2MtbGliL3g4Nl82NC11bmtub3duLWxp
bnV4LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDE0NyAiLi4vcG9zaXgvc3lzL3R5cGVz
LmgiIDIKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE5MCAiLi4v
cG9zaXgvc3lzL3R5cGVzLmgiCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fRElfXykpKTsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQx
Nl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVk
IGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElf
XykpKTsKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChf
X3dvcmRfXykpKTsKIyAyMTIgIi4uL3Bvc2l4L3N5cy90eXBlcy5oIgojIDEgIi4uL2luY2x1ZGUv
ZW5kaWFuLmgiIDEKIyAxICIuLi9zdHJpbmcvZW5kaWFuLmgiIDEKIyAzNyAiLi4vc3RyaW5nL2Vu
ZGlhbi5oIgojIDEgIi4uL3N5c2RlcHMveDg2XzY0L2JpdHMvZW5kaWFuLmgiIDEKIyAzOCAiLi4v
c3RyaW5nL2VuZGlhbi5oIiAyCiMgMiAiLi4vaW5jbHVkZS9lbmRpYW4uaCIgMgojIDIxMyAiLi4v
cG9zaXgvc3lzL3R5cGVzLmgiIDIKCgojIDEgIi4uL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxCgoj
IDEgIi4uL21pc2Mvc3lzL3NlbGVjdC5oIiAxCiMgMzEgIi4uL21pc2Mvc3lzL3NlbGVjdC5oIgoj
IDEgIi4uL3N5c2RlcHMvZ2VuZXJpYy9iaXRzL3NlbGVjdC5oIiAxCiMgMzIgIi4uL21pc2Mvc3lz
L3NlbGVjdC5oIiAyCgoKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NpZ3Nl
dC5oIiAxCiMgMjMgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc2lnc2V0LmgiCnR5
cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNp
Z25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGlu
dCkpKV07CiAgfSBfX3NpZ3NldF90OwojIDM1ICIuLi9taXNjL3N5cy9zZWxlY3QuaCIgMgoKCgp0
eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKCgoKIyAxICIuLi9pbmNsdWRlL3RpbWUuaCIg
MQoKCiMgMSAiLi4vdGltZS90aW1lLmgiIDEKIyAxMDYgIi4uL3RpbWUvdGltZS5oIgpzdHJ1Y3Qg
dGltZXNwZWMKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwog
IH07CiMgNCAiLi4vaW5jbHVkZS90aW1lLmgiIDIKIyA0NSAiLi4vbWlzYy9zeXMvc2VsZWN0Lmgi
IDIKCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L2JpdHMvdGltZS5oIiAx
CiMgNjcgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9iaXRzL3RpbWUuaCIKc3Ry
dWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1c2Vjb25kc190IHR2
X3VzZWM7CiAgfTsKIyA0NyAiLi4vbWlzYy9zeXMvc2VsZWN0LmgiIDIKIyA1NSAiLi4vbWlzYy9z
eXMvc2VsZWN0LmgiCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwoKCgoKCgoKdHlwZWRlZiBz
dHJ1Y3QKICB7CgoKCiAgICBfX2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChf
X2ZkX21hc2spKV07CgoKCgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRf
bWFzazsKIyA5NSAiLi4vbWlzYy9zeXMvc2VsZWN0LmgiCgoKCgoKCgpleHRlcm4gaW50IHNlbGVj
dCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAgICAg
ICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAg
ZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAgICAgICAgICAgc3RydWN0
IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KSA7CgoKCgoKZXh0ZXJuIGludCBwc2VsZWN0
IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAg
ICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAg
IGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0LAogICAgICAgICAgICAgICAg
ICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNrKSA7CgoKCiMgMyAiLi4v
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIKCgpleHRlcm4gaW50IF9fcHNlbGVjdCAoaW50IF9fbmZk
cywgZmRfc2V0ICpfX3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fd3Jp
dGVmZHMsIGZkX3NldCAqX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dHJ1Y3QgdGltZXNwZWMgKl9fdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9f
c2lnc2V0X3QgKl9fc2lnbWFzayk7CgpleHRlcm4gaW50IF9fc2VsZWN0IChpbnQgX19uZmRzLCBm
ZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAgICBmZF9zZXQg
Kl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jl
c3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAq
X19yZXN0cmljdCBfX3RpbWVvdXQpOwojIDIxNiAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiIDIKCgoj
IDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3N5cy9zeXNtYWNyb3MuaCIgMQojIDIxOSAi
Li4vcG9zaXgvc3lzL3R5cGVzLmgiIDIKCgoKCnR5cGVkZWYgX19ibGtzaXplX3QgYmxrc2l6ZV90
OwoKCgoKCgp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2Jsa2Nu
dF90IGZzYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250X3Q7CiMgMjU3
ICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsK
dHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0
X3QgZnNmaWxjbnQ2NF90OwoKCgojIDIgIi4uL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIKIyA0ICIu
Li9pbmNsdWRlL3N0cmluZy5oIiAyCgpleHRlcm4gdm9pZCAqX19tZW1jY3B5ICh2b2lkICpfX2Rl
c3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
Yywgc2l6ZV90IF9fbik7CgpleHRlcm4gc2l6ZV90IF9fc3RybmxlbiAoX19jb25zdCBjaGFyICpf
X3N0cmluZywgc2l6ZV90IF9fbWF4bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKZXh0ZXJuIGNoYXIgKl9fc3Ryc2VwIChjaGFyICoqX19zdHJpbmdwLCBfX2NvbnN0IGNoYXIg
Kl9fZGVsaW0pOwoKZXh0ZXJuIGludCBfX3N0cnZlcnNjbXAgKF9fY29uc3QgY2hhciAqX19zMSwg
X19jb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0
ZXJuIGludCBfX3N0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq
X19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKQogICAgIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBfX3N0cmNhc2VjbXAgKF9fY29uc3QgY2hh
ciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKZXh0ZXJuIGNoYXIgKl9fc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNr
LCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKZXh0ZXJuIGNoYXIgKl9fc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nKQogICAgIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29u
c3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFs
bG9jX18pKTsKCmV4dGVybiB2b2lkICpfX3Jhd21lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGlu
dCBfX2MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqX19z
dHJjaHJudWwgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKQogICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIHZvaWQgKl9fbWVtcmNociAoX19jb25zdCB2b2lkICpfX3Ms
IGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7Cgpl
eHRlcm4gdm9pZCAqX19tZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3Qg
X19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBfX2ZmcyAo
aW50IF9faSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgpleHRlcm4gY2hhciAqX19zdHJlcnJv
cl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pOwoKCgojIDEg
Ii4uL3N0cmluZy9zdHJpbmcuaCIgMQojIDI4ICIuLi9zdHJpbmcvc3RyaW5nLmgiCgoKCgoKIyAx
ICIvaG9tZS9jc2QvZHZsMy94ODYtNjQvbGliL2djYy1saWIveDg2XzY0LXVua25vd24tbGludXgv
My4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzQgIi4uL3N0cmluZy9zdHJpbmcuaCIgMgoK
CgpleHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7
CgoKZXh0ZXJuIHZvaWQgKm1lbW1vdmUgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3Ny
Yywgc2l6ZV90IF9fbikKICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQgKl9f
cmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAg
ICAgICAgICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgIDsKCgoKCmV4dGVybiB2b2lk
ICptZW1zZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQg
bWVtY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9f
bikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtY2hy
IChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gdm9pZCAqcmF3bWVtY2hyIChfX2NvbnN0IHZv
aWQgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZv
aWQgKm1lbXJjaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjcHkgKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAg
ICAgOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3Qg
X19uKSA7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNh
dCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny
YywKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHN0cmNt
cCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2Nv
bnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4g
c2l6ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoK
CiMgMSAiLi4vaW5jbHVkZS94bG9jYWxlLmgiIDEKIyAxICIuLi9sb2NhbGUveGxvY2FsZS5oIiAx
CiMgMjggIi4uL2xvY2FsZS94bG9jYWxlLmgiCnR5cGVkZWYgc3RydWN0IF9fbG9jYWxlX3N0cnVj
dAp7CgogIHN0cnVjdCBsb2NhbGVfZGF0YSAqX19sb2NhbGVzWzEzXTsKCgogIGNvbnN0IHVuc2ln
bmVkIHNob3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0IGludCAqX19jdHlwZV90b2xvd2VyOwog
IGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVyOwp9ICpfX2xvY2FsZV90OwojIDIgIi4uL2luY2x1
ZGUveGxvY2FsZS5oIiAyCiMgMTA5ICIuLi9zdHJpbmcvc3RyaW5nLmgiIDIKCgpleHRlcm4gaW50
IF9fc3RyY29sbF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgX19s
b2NhbGVfdCBfX2wpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6
ZV90IF9fc3RyeGZybV9sIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19zcmMsIHNpemVf
dCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sKSA7CgoKCgpl
eHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9f
bWFsbG9jX18pKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKnN0cm5kdXAgKF9fY29uc3QgY2hhciAqX19z
dHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAx
NTUgIi4uL3N0cmluZy9zdHJpbmcuaCIKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIg
KnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJudWwgKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBzaXplX3Qgc3Ry
Y3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29uc3Qg
Y2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2Nv
bnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0
ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIg
Kl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hh
ciAqc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9f
bmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hhciAq
c3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVsaW0pCiAgICAgOwoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hhciAqX19yZXN0cmlj
dCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2
ZV9wdHIpIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgKm1lbW1lbSAo
X19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlzdGFja2xlbiwKICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVuKQog
ICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9pZCAqX19tZW1wY3B5
ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CmV4dGVybiB2b2lkICptZW1w
Y3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoKZXh0ZXJuIHNpemVf
dCBzdHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90
IF9fbWF4bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNo
YXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIDsKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3Ig
KGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCgoKZXh0ZXJu
IHZvaWQgX19iemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCmV4dGVybiB2b2lkIGJj
b3B5IChfX2NvbnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVfdCBfX24pIDsKCgpl
eHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBi
Y21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqaW5kZXggKF9f
Y29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl
eHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcgaW50IF9fbCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xs
IChsb25nIGxvbmcgaW50IF9fbGwpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hh
ciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0
cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90
IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gaW50IF9f
c3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IF9fc3RybmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwK
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIDsK
CgoKCmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIg
KnN0cnNpZ25hbCAoaW50IF9fc2lnKSA7CgoKZXh0ZXJuIGNoYXIgKl9fc3RwY3B5IChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsK
ZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgoKCmV4dGVybiBjaGFyICpfX3N0cG5jcHkgKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKZXh0ZXJuIGNoYXIgKnN0cG5jcHkg
KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGNoYXIgKnN0cmZy
eSAoY2hhciAqX19zdHJpbmcpIDsKCgpleHRlcm4gdm9pZCAqbWVtZnJvYiAodm9pZCAqX19zLCBz
aXplX3QgX19uKSA7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNlbmFtZSAoX19jb25zdCBjaGFyICpf
X2ZpbGVuYW1lKSA7CiMgMzU3ICIuLi9zdHJpbmcvc3RyaW5nLmgiCiMgMSAiLi4vc3lzZGVwcy94
ODZfNjQvYml0cy9zdHJpbmcuaCIgMQojIDM1OCAiLi4vc3RyaW5nL3N0cmluZy5oIiAyCgoKIyAx
ICIuLi9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAxCiMgMSAiLi4vc3RyaW5nL2JpdHMvc3RyaW5n
Mi5oIiAxCiMgNTIgIi4uL3N0cmluZy9iaXRzL3N0cmluZzIuaCIKIyAxICIuLi9pbmNsdWRlL2Vu
ZGlhbi5oIiAxCiMgNTMgIi4uL3N0cmluZy9iaXRzL3N0cmluZzIuaCIgMgojIDM4NyAiLi4vc3Ry
aW5nL2JpdHMvc3RyaW5nMi5oIgpleHRlcm4gdm9pZCAqX19yYXdtZW1jaHIgKGNvbnN0IHZvaWQg
Kl9fcywgaW50IF9fYyk7CiMgOTE3ICIuLi9zdHJpbmcvYml0cy9zdHJpbmcyLmgiCmV4dGVybiBf
X2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVq
ZWN0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19yZWplY3QpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdo
aWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkK
ICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6
ZV90IF9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19yZWplY3QyKTsKZXh0ZXJuIF9f
aW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWpl
Y3QxLCBpbnQgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3
aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3Qx
CiAgICAgICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyKQogICAgKytfX3Jlc3VsdDsK
ICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2Mz
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX3JlamVjdDIsIGludCBfX3JlamVjdDMpOwpleHRlcm4gX19p
bmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVj
dDEsIGludCBfX3JlamVjdDIsCiAgICAgICAgICAgICAgaW50IF9fcmVqZWN0MykKewogIHJlZ2lz
dGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAm
JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9
IF9fcmVqZWN0MiAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MykKICAgICsrX19yZXN1bHQ7
CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgOTc0ICIuLi9zdHJpbmcvYml0cy9zdHJpbmcyLmgiCmV4
dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQg
X19hY2NlcHQpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MxIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fYWNjZXB0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsK
CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQpCiAgICArK19fcmVzdWx0OwogIHJl
dHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMiAoX19j
b25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBfX2FjY2VwdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3Bu
X2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MikKewog
IHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09
IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MikKICAgICsrX19yZXN1bHQ7
CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2Mz
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lu
bGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQx
LCBpbnQgX19hY2NlcHQyLCBpbnQgX19hY2NlcHQzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVz
dWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jl
c3VsdF0gPT0gX19hY2NlcHQyCiAgICAgICAgIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQz
KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyAxMDMxICIuLi9zdHJpbmcv
Yml0cy9zdHJpbmcyLmgiCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIgKF9fY29u
c3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJr
X2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MikKewoK
ICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19h
Y2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDog
KGNoYXIgKikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJwYnJr
X2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRlcm4g
X19pbmxpbmUgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Fj
Y2VwdDEsIGludCBfX2FjY2VwdDIsCiAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MykKewoKICB3
aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2Nl
cHQyCiAgICAgICAgICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0dXJuICpf
X3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CiMgMTA4
MyAiLi4vc3RyaW5nL2JpdHMvc3RyaW5nMi5oIgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJ0
b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCk7CmV4dGVybiBf
X2lubGluZSBjaGFyICoKX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFy
ICoqX19uZXh0cCkKewogIGNoYXIgKl9fcmVzdWx0OwogIGlmIChfX3MgPT0gKCh2b2lkICopMCkp
CiAgICBfX3MgPSAqX19uZXh0cDsKICB3aGlsZSAoKl9fcyA9PSBfX3NlcCkKICAgICsrX19zOwog
IF9fcmVzdWx0ID0gKCh2b2lkICopMCk7CiAgaWYgKCpfX3MgIT0gJ1wwJykKICAgIHsKICAgICAg
X19yZXN1bHQgPSBfX3MrKzsKICAgICAgd2hpbGUgKCpfX3MgIT0gJ1wwJykKICAgICAgICBpZiAo
Kl9fcysrID09IF9fc2VwKQogICAgICAgICAgewogICAgICAgICAgICBfX3NbLTFdID0gJ1wwJzsK
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICpfX25leHRwID0gX19zOwogICAg
fQogIHJldHVybiBfX3Jlc3VsdDsKfQojIDExMTUgIi4uL3N0cmluZy9iaXRzL3N0cmluZzIuaCIK
ZXh0ZXJuIGNoYXIgKl9fc3Ryc2VwX2cgKGNoYXIgKipfX3N0cmluZ3AsIF9fY29uc3QgY2hhciAq
X19kZWxpbSk7CiMgMTEzMyAiLi4vc3RyaW5nL2JpdHMvc3RyaW5nMi5oIgpleHRlcm4gX19pbmxp
bmUgY2hhciAqX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4g
X19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7
CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZv
aWQgKikwKSAmJiAoKl9fcyA9IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
X19yZWplY3QpICYmIChfX3JlamVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChf
X3JldHZhbCwgX19yZWplY3QpIDogc3RyY2hyIChfX3JldHZhbCwgX19yZWplY3QpKSkpICE9ICgo
dm9pZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVj
dDEsIGNoYXIgX19yZWplY3QyKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8yYyAo
Y2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIg
Y2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkKICAg
IHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoMSkK
ICAgICAgICB7CiAgICAgICAgICBpZiAoKl9fY3AgPT0gJ1wwJykKICAgICAgICAgICAgewogICAg
ICAgICAgICAgIF9fY3AgPSAoKHZvaWQgKikwKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICB9CiAgICAgICAgICBpZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0
MikKICAgICAgICAgICAgewogICAgICAgICAgICAgICpfX2NwKysgPSAnXDAnOwogICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICArK19fY3A7CiAgICAgICAgfQogICAg
ICAqX19zID0gX19jcDsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGlu
ZSBjaGFyICpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19y
ZWplY3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3Qz
KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBf
X3JlamVjdDEsIGNoYXIgX19yZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIGNo
YXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7
CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiAg
ICAgICAgewogICAgICAgICAgaWYgKCpfX2NwID09ICdcMCcpCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICBfX2NwID0gKCh2b2lkICopMCk7CiAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
fQogICAgICAgICAgaWYgKCpfX2NwID09IF9fcmVqZWN0MSB8fCAqX19jcCA9PSBfX3JlamVjdDIg
fHwgKl9fY3AgPT0gX19yZWplY3QzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgKl9fY3Ar
KyA9ICdcMCc7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICsr
X19jcDsKICAgICAgICB9CiAgICAgICpfX3MgPSBfX2NwOwogICAgfQogIHJldHVybiBfX3JldHZh
bDsKfQojIDEyMDkgIi4uL3N0cmluZy9iaXRzL3N0cmluZzIuaCIKIyAxICIuLi9pbmNsdWRlL3N0
ZGxpYi5oIiAxCgoKCgoKCiMgMSAiLi4vc3RkbGliL3N0ZGxpYi5oIiAxCiMgMzMgIi4uL3N0ZGxp
Yi9zdGRsaWIuaCIKIyAxICIvaG9tZS9jc2QvZHZsMy94ODYtNjQvbGliL2djYy1saWIveDg2XzY0
LXVua25vd24tbGludXgvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzQgIi4uL3N0ZGxp
Yi9zdGRsaWIuaCIgMgoKCiMgNTI3ICIuLi9zdGRsaWIvc3RkbGliLmgiCmV4dGVybiB2b2lkICpt
YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRl
cm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDg2NCAiLi4vc3RkbGliL3N0ZGxpYi5oIgoKIyA4
ICIuLi9pbmNsdWRlL3N0ZGxpYi5oIiAyCiMgMTIxMCAiLi4vc3RyaW5nL2JpdHMvc3RyaW5nMi5o
IiAyCgoKCgpleHRlcm4gY2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcpIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTIzMyAiLi4vc3RyaW5nL2JpdHMvc3RyaW5n
Mi5oIgpleHRlcm4gY2hhciAqX19zdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXpl
X3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMiAiLi4vaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMgojIDM2MSAiLi4vc3RyaW5nL3N0cmluZy5oIiAyCgoKCgojIDUw
ICIuLi9pbmNsdWRlL3N0cmluZy5oIiAyCiMgMjUgIi4uL3N5c2RlcHMvaTM4Ni9pNjg2L2hwLXRp
bWluZy5oIiAyCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvc3lzL3BhcmFtLmgiIDEK
IyAyMiAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvc3lzL3BhcmFtLmgiCiMgMSAiLi4vaW5j
bHVkZS9saW1pdHMuaCIgMQojIDEyNCAiLi4vaW5jbHVkZS9saW1pdHMuaCIKIyAxICIvaG9tZS9j
c2QvZHZsMy94ODYtNjQvbGliL2djYy1saWIveDg2XzY0LXVua25vd24tbGludXgvMy4zL2luY2x1
ZGUvbGltaXRzLmgiIDEgMyA0CiMgMTI1ICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAyCiMgMTQ0ICIu
Li9pbmNsdWRlL2xpbWl0cy5oIgojIDEgIi4uL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEK
IyAxICIuLi9wb3NpeC9iaXRzL3Bvc2l4MV9saW0uaCIgMQojIDEyNiAiLi4vcG9zaXgvYml0cy9w
b3NpeDFfbGltLmgiCiMgMSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L2JpdHMvbG9jYWxfbGltLmgiIDEKIyAzNiAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvdW5peC9z
eXN2L2xpbnV4L2JpdHMvbG9jYWxfbGltLmgiCiMgMSAiL2hvbWUvY3NkL2R2bDMveDg2LTY0L3g4
Nl82NC11bmtub3duLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMgNAojIDM3
ICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9sb2NhbF9saW0u
aCIgMgojIDEyNyAiLi4vcG9zaXgvYml0cy9wb3NpeDFfbGltLmgiIDIKIyAyICIuLi9pbmNsdWRl
L2JpdHMvcG9zaXgxX2xpbS5oIiAyCiMgMTQ1ICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAyCgoKCiMg
MSAiLi4vaW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMQojIDEgIi4uL3Bvc2l4L2JpdHMvcG9z
aXgyX2xpbS5oIiAxCiMgMiAiLi4vaW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMgojIDE0OSAi
Li4vaW5jbHVkZS9saW1pdHMuaCIgMgoKCgojIDEgIi4uL2luY2x1ZGUvYml0cy94b3Blbl9saW0u
aCIgMQojIDM0ICIuLi9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiCiMgMSAiL2hvbWUvY3NkL2R2
bDMvZ2xpYmMvYnVpbGQvYml0cy9zdGRpb19saW0uaCIgMQojIDM1ICIuLi9pbmNsdWRlL2JpdHMv
eG9wZW5fbGltLmgiIDIKIyAxNTMgIi4uL2luY2x1ZGUvbGltaXRzLmgiIDIKIyAyMyAiLi4vc3lz
ZGVwcy91bml4L3N5c3YvbGludXgvc3lzL3BhcmFtLmgiIDIKCiMgMSAiL2hvbWUvY3NkL2R2bDMv
eDg2LTY0L3g4Nl82NC11bmtub3duLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3BhcmFtLmgiIDEg
MyA0CgoKCiMgMSAiL2hvbWUvY3NkL2R2bDMveDg2LTY0L3g4Nl82NC11bmtub3duLWxpbnV4L3N5
cy1pbmNsdWRlL2FzbS9wYXJhbS5oIiAxIDMgNAojIDUgIi9ob21lL2NzZC9kdmwzL3g4Ni02NC94
ODZfNjQtdW5rbm93bi1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wYXJhbS5oIiAyIDMgNAojIDI1
ICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zeXMvcGFyYW0uaCIgMgojIDQyICIuLi9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC9zeXMvcGFyYW0uaCIKIyAxICIuLi9pbmNsdWRlL3N5cy90eXBl
cy5oIiAxCiMgNDMgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3N5cy9wYXJhbS5oIiAyCiMg
MjYgIi4uL3N5c2RlcHMvaTM4Ni9pNjg2L2hwLXRpbWluZy5oIiAyCiMgMSAiLi4vc3RkaW8tY29t
bW9uL19pdG9hLmgiIDEKIyAyMiAiLi4vc3RkaW8tY29tbW9uL19pdG9hLmgiCiMgMSAiLi4vaW5j
bHVkZS9zeXMvY2RlZnMuaCIgMQojIDIzICIuLi9zdGRpby1jb21tb24vX2l0b2EuaCIgMgoKCgoK
CgpleHRlcm4gY2hhciAqX2l0b2EgKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdmFsdWUsIGNoYXIg
KmJ1ZmxpbSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFzZSwgaW50IHVwcGVy
X2Nhc2UpOwoKc3RhdGljIGlubGluZSBjaGFyICogX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCl9p
dG9hX3dvcmQgKHVuc2lnbmVkIGxvbmcgdmFsdWUsIGNoYXIgKmJ1ZmxpbSwKICAgICAgICAgICAg
dW5zaWduZWQgaW50IGJhc2UsIGludCB1cHBlcl9jYXNlKQp7CiAgZXh0ZXJuIGNvbnN0IGNoYXIg
X2l0b2FfdXBwZXJfZGlnaXRzW10sIF9pdG9hX2xvd2VyX2RpZ2l0c1tdOwogIGNvbnN0IGNoYXIg
KmRpZ2l0cyA9IHVwcGVyX2Nhc2UgPyBfaXRvYV91cHBlcl9kaWdpdHMgOiBfaXRvYV9sb3dlcl9k
aWdpdHM7CiAgY2hhciAqYnAgPSBidWZsaW07CgogIHN3aXRjaCAoYmFzZSkKICAgIHsKCgoKCgoK
CiAgICAgIGNhc2UgMTA6IGRvICotLWJwID0gZGlnaXRzW3ZhbHVlICUgMTBdOyB3aGlsZSAoKHZh
bHVlIC89IDEwKSAhPSAwKTsgYnJlYWs7CiAgICAgIGNhc2UgMTY6IGRvICotLWJwID0gZGlnaXRz
W3ZhbHVlICUgMTZdOyB3aGlsZSAoKHZhbHVlIC89IDE2KSAhPSAwKTsgYnJlYWs7CiAgICAgIGNh
c2UgODogZG8gKi0tYnAgPSBkaWdpdHNbdmFsdWUgJSA4XTsgd2hpbGUgKCh2YWx1ZSAvPSA4KSAh
PSAwKTsgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICBkbwogICAgICAgICotLWJwID0gZGlnaXRz
W3ZhbHVlICUgYmFzZV07CiAgICAgIHdoaWxlICgodmFsdWUgLz0gYmFzZSkgIT0gMCk7CiAgICB9
CiAgcmV0dXJuIGJwOwp9CgpzdGF0aWMgaW5saW5lIGNoYXIgKiBfX2F0dHJpYnV0ZV9fICgodW51
c2VkKSkKX2ZpdG9hX3dvcmQgKHVuc2lnbmVkIGxvbmcgdmFsdWUsIGNoYXIgKmJ1ZiwgdW5zaWdu
ZWQgaW50IGJhc2UsIGludCB1cHBlcl9jYXNlKQp7CiAgY2hhciB0bXBidWZbc2l6ZW9mICh2YWx1
ZSkgKiA0XTsKICBjaGFyICpjcCA9IF9pdG9hX3dvcmQgKHZhbHVlLCB0bXBidWYgKyBzaXplb2Yg
KHZhbHVlKSAqIDQsIGJhc2UsIHVwcGVyX2Nhc2UpOwogIHdoaWxlIChjcCA8IHRtcGJ1ZiArIHNp
emVvZiAodmFsdWUpICogNCkKICAgICpidWYrKyA9ICpjcCsrOwogIHJldHVybiBidWY7Cn0KCnN0
YXRpYyBpbmxpbmUgY2hhciAqIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQpfZml0b2EgKHVuc2ln
bmVkIGxvbmcgbG9uZyB2YWx1ZSwgY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgYmFzZSwgaW50IHVw
cGVyX2Nhc2UpCnsKICBjaGFyIHRtcGJ1ZltzaXplb2YgKHZhbHVlKSAqIDRdOwogIGNoYXIgKmNw
ID0gX2l0b2EgKHZhbHVlLCB0bXBidWYgKyBzaXplb2YgKHZhbHVlKSAqIDQsIGJhc2UsIHVwcGVy
X2Nhc2UpOwogIHdoaWxlIChjcCA8IHRtcGJ1ZiArIHNpemVvZiAodmFsdWUpICogNCkKICAgICpi
dWYrKyA9ICpjcCsrOwogIHJldHVybiBidWY7Cn0KIyAyNyAiLi4vc3lzZGVwcy9pMzg2L2k2ODYv
aHAtdGltaW5nLmgiIDIKIyA4NSAiLi4vc3lzZGVwcy9pMzg2L2k2ODYvaHAtdGltaW5nLmgiCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBocF90aW1pbmdfdDsKCgoKZXh0ZXJuIGhwX3Rp
bWluZ190IF9fbGliY19ocF90aW1pbmdfb3ZlcmhlYWQ7CiMgMyAiLi4vc3lzZGVwcy94ODZfNjQv
aHAtdGltaW5nLmgiIDIKIyA4ICIuLi9pbmNsdWRlL2xpYmMtaW50ZXJuYWwuaCIgMgoKCmV4dGVy
biB2b2lkIF9fbGliY19pbml0X3NlY3VyZSAodm9pZCk7CgoKZXh0ZXJuIHZvaWQgX19saWJjX2ds
b2JhbF9jdG9ycyAodm9pZCk7CgoKCmV4dGVybiBpbnQgX19wcm9maWxlX2ZyZXF1ZW5jeSAodm9p
ZCk7CgoKZXh0ZXJuIHZvaWQgX19jeWdfcHJvZmlsZV9mdW5jX2VudGVyICh2b2lkICp0aGlzX2Zu
LCB2b2lkICpjYWxsX3NpdGUpOwpleHRlcm4gdm9pZCBfX2N5Z19wcm9maWxlX2Z1bmNfZXhpdCAo
dm9pZCAqdGhpc19mbiwgdm9pZCAqY2FsbF9zaXRlKTsKCgpleHRlcm4gaHBfdGltaW5nX3QgX19n
ZXRfY2xvY2tmcmVxICh2b2lkKTsKCgpleHRlcm4gdm9pZCBfX2xpYmNfZnJlZXJlcyAodm9pZCk7
CiMgNyAic29pbml0LmMiIDIKIyAxICIuLi9pbmNsdWRlL3N0ZGxpYi5oIiAxCgoKCgoKCiMgMSAi
Li4vc3RkbGliL3N0ZGxpYi5oIiAxCiMgMzMgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKIyAxICIvaG9t
ZS9jc2QvZHZsMy94ODYtNjQvbGliL2djYy1saWIveDg2XzY0LXVua25vd24tbGludXgvMy4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzI1ICIvaG9tZS9jc2QvZHZsMy94ODYtNjQvbGliL2dj
Yy1saWIveDg2XzY0LXVua25vd24tbGludXgvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBl
ZGVmIGludCB3Y2hhcl90OwojIDM0ICIuLi9zdGRsaWIvc3RkbGliLmgiIDIKCgoKCgoKCgojIDEg
Ii4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvd2FpdGZsYWdzLmgiIDEKIyA0MyAiLi4v
c3RkbGliL3N0ZGxpYi5oIiAyCiMgMSAiLi4vc3lzZGVwcy9nZW5lcmljL2JpdHMvd2FpdHN0YXR1
cy5oIiAxCiMgNjMgIi4uL3N5c2RlcHMvZ2VuZXJpYy9iaXRzL3dhaXRzdGF0dXMuaCIKIyAxICIu
Li9pbmNsdWRlL2VuZGlhbi5oIiAxCiMgNjQgIi4uL3N5c2RlcHMvZ2VuZXJpYy9iaXRzL3dhaXRz
dGF0dXMuaCIgMgoKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAgIHN0cnVjdAog
ICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAgICAgIHVuc2ln
bmVkIGludCBfX3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3JldGNvZGU6
ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90ZXJtaW5h
dGVkOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wdmFs
Ojg7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAgdW5zaWduZWQg
aW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi4uL3N0ZGxp
Yi9zdGRsaWIuaCIgMgojIDY4ICIuLi9zdGRsaWIvc3RkbGliLmgiCnR5cGVkZWYgdW5pb24KICB7
CiAgICB1bmlvbiB3YWl0ICpfX3VwdHI7CiAgICBpbnQgKl9faXB0cjsKICB9IF9fV0FJVF9TVEFU
VVMgX19hdHRyaWJ1dGVfXyAoKF9fdHJhbnNwYXJlbnRfdW5pb25fXykpOwojIDk0ICIuLi9zdGRs
aWIvc3RkbGliLmgiCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVt
OwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsKICAg
IGxvbmcgaW50IHJlbTsKICB9IGxkaXZfdDsKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc3Ry
dWN0CiAgewogICAgbG9uZyBsb25nIGludCBxdW90OwogICAgbG9uZyBsb25nIGludCByZW07CiAg
fSBsbGRpdl90OwojIDEzMyAiLi4vc3RkbGliL3N0ZGxpYi5oIgpleHRlcm4gc2l6ZV90IF9fY3R5
cGVfZ2V0X21iX2N1cl9tYXggKHZvaWQpIDsKCgoKZXh0ZXJuIGRvdWJsZSBhdG9mIChfX2NvbnN0
IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IGF0
b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4
dGVybiBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwg
KF9fY29uc3QgY2hhciAqX19ucHRyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
CgpleHRlcm4gZG91YmxlIHN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7CgoKCmV4
dGVybiBmbG9hdCBzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7CgpleHRlcm4gbG9u
ZyBkb3VibGUgc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7CgoKCmV4
dGVybiBsb25nIGludCBzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19i
YXNlKSA7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIDsKCgoKX19leHRlbnNpb25f
XwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
bG9uZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsIGludCBfX2Jhc2UpCiAgICAgOwoKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19i
YXNlKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRv
dWxsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jh
c2UpCiAgICAgOwojIDIxMSAiLi4vc3RkbGliL3N0ZGxpYi5oIgojIDEgIi4uL2luY2x1ZGUveGxv
Y2FsZS5oIiAxCiMgMjEyICIuLi9zdGRsaWIvc3RkbGliLmgiIDIKCgoKZXh0ZXJuIGxvbmcgaW50
IF9fc3RydG9sX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCmV4dGVybiB1
bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
X19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IF9fc3RydG9sbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
IGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90
IF9fbG9jKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9f
c3RydG91bGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNl
LCBfX2xvY2FsZV90IF9fbG9jKQogICAgIDsKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICA7CgpleHRl
cm4gZmxvYXQgX19zdHJ0b2ZfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2Fs
ZV90IF9fbG9jKSA7CgpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2wgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19sb2NhbGVfdCBfX2xvYykgOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFs
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAg
OwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgIDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3Ry
dG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKSA7Cgpl
eHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91
bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jh
c2UsIGludCBfX2dyb3VwKSA7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50
IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19i
YXNlLCBpbnQgX19ncm91cCkgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25n
IGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgOwoKCgoKCgoK
ZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9kX2lu
dGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQK
c3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVy
bmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNp
Z25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVy
biBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgpl
eHRlcm4gX19pbmxpbmUgZmxvYXQKc3RydG9mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRvZl9pbnRl
cm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91Ymxl
CnN0cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9sZF9pbnRlcm5hbCAoX19ucHRyLCBfX2Vu
ZHB0ciwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGlu
dApzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2lu
dGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0
ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91cSAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg
IGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2Vu
ZHB0ciwgX19iYXNlLCAwKTsKfQoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25n
IGxvbmcgaW50CnN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9f
c3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVu
c2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdWxsIChf
X2NvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwg
KF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgZG91Ymxl
CmF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvZCAoX19ucHRyLCAo
Y2hhciAqKikgKCh2b2lkICopMCkpOwp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAoX19jb25z
dCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoq
KSAoKHZvaWQgKikwKSwgMTApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludAphdG9sIChfX2Nv
bnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgo
dm9pZCAqKTApLCAxMCk7Cn0KCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxv
bmcgaW50CmF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2xsIChf
X25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CiMgMzg0ICIuLi9zdGRsaWIvc3Rk
bGliLmgiCmV4dGVybiBjaGFyICpsNjRhIChsb25nIGludCBfX24pIDsKCgpleHRlcm4gbG9uZyBp
bnQgYTY0bCAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
CiMgMSAiLi4vaW5jbHVkZS9zeXMvdHlwZXMuaCIgMQojIDM5MSAiLi4vc3RkbGliL3N0ZGxpYi5o
IiAyCgoKCgoKCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBz
cmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmluaXRzdGF0
ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pIDsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChj
aGFyICpfX3N0YXRlYnVmKSA7CgoKCgoKCgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQz
Ml90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGludDMyX3QgKnN0YXRlOwogICAgaW50
IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGludCByYW5kX3NlcDsKICAgIGludDMy
X3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0
YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAqX19yZXN0
cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3Nl
ZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIDsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3Ig
KHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKZXh0ZXJuIGludCBz
ZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgoKZXh0ZXJu
IGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2Vl
ZCkgOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIDsKCgoKCgoK
CmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVu
c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDgg
KHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcg
aW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIHZv
aWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBp
bnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgOwpleHRlcm4gdm9p
ZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgOwoKCgoKCnN0cnVjdCBk
cmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fb2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19jOwogICAg
dW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19h
OwogIH07CgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVz
dHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3Qg
X19yZXN1bHQpIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBf
X3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf
X3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVz
dHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jl
c3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGlu
dCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGpyYW5kNDhfciAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBp
bnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBp
bnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICA7CgpleHRl
cm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwoKZXh0ZXJuIGlu
dCBsY29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLAogICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsKIyA1MzYgIi4uL3N0ZGxp
Yi9zdGRsaWIuaCIKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19z
aXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAodm9p
ZCAqX19wdHIpIDsKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSA7CgoKCiMgMSAi
Li4vaW5jbHVkZS9hbGxvY2EuaCIgMQoKCiMgMSAiLi4vc3RkbGliL2FsbG9jYS5oIiAxCiMgMjUg
Ii4uL3N0ZGxpYi9hbGxvY2EuaCIKIyAxICIvaG9tZS9jc2QvZHZsMy94ODYtNjQvbGliL2djYy1s
aWIveDg2XzY0LXVua25vd24tbGludXgvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMjYg
Ii4uL3N0ZGxpYi9hbGxvY2EuaCIgMgoKCgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90
IF9fc2l6ZSkgOwoKCgoKCgojIDQgIi4uL2luY2x1ZGUvYWxsb2NhLmgiIDIKCgoKCmV4dGVybiB2
b2lkICpfX2FsbG9jYSAoc2l6ZV90IF9fc2l6ZSk7CiMgNTQ3ICIuLi9zdGRsaWIvc3RkbGliLmgi
IDIKCgoKCmV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18g
KChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IHBvc2l4X21lbWFsaWduICh2b2lkICoqX19t
ZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCBhYm9ydCAodm9pZCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgpleHRlcm4gaW50IGF0ZXhpdCAodm9pZCAoKl9fZnVu
YykgKHZvaWQpKSA7CgoKCgpleHRlcm4gaW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQg
X19zdGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCiAgICAgOwoKCgoKCmV4dGVybiB2
b2lkIGV4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
CgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUp
IDsKCgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUp
IDsKCgoKCgpleHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIDsKCgoKCgpleHRlcm4g
aW50IHNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwg
aW50IF9fcmVwbGFjZSkKICAgICA7CgoKZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25zdCBjaGFy
ICpfX25hbWUpIDsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgOwojIDYyMyAiLi4v
c3RkbGliL3N0ZGxpYi5oIgpleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7
CgoKCgoKCgpleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKIyA2NDAgIi4u
L3N0ZGxpYi9zdGRsaWIuaCIKZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIgKl9fdGVtcGxhdGUp
IDsKIyA2NTAgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIg
Kl9fdGVtcGxhdGUpIDsKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29t
bWFuZCkgOwoKCgoKCgpleHRlcm4gY2hhciAqY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoX19jb25z
dCBjaGFyICpfX25hbWUpIDsKIyA2NzIgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKZXh0ZXJuIGNoYXIg
KnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkgOwoKCgoKCgp0eXBlZGVmIGlu
dCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQgKiwgX19jb25zdCB2b2lkICopOwoKCnR5
cGVkZWYgX19jb21wYXJfZm5fdCBjb21wYXJpc29uX2ZuX3Q7CgoKCgoKZXh0ZXJuIHZvaWQgKmJz
ZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXksIF9fY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2Zu
X3QgX19jb21wYXIpOwoKCgpleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3Qg
X19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgIF9fY29tcGFyX2ZuX3Qg
X19jb21wYXIpOwoKCgpleHRlcm4gaW50IGFicyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGxs
YWJzIChsb25nIGxvbmcgaW50IF9feCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgoKCmV4dGVybiBkaXZfdCBkaXYgKGludCBfX251bWVyLCBpbnQgX19kZW5vbSkKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsZGl2X3QgbGRpdiAobG9uZyBpbnQg
X19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90IGxsZGl2IChsb25nIGxvbmcgaW50IF9f
bnVtZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBpbnQg
X19kZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNzI4ICIuLi9zdGRs
aWIvc3RkbGliLmgiCmV4dGVybiBjaGFyICplY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19y
ZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwg
aW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAg
IGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoKZXh0ZXJuIGNoYXIgKnFl
Y3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAg
ICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0
ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAg
ICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBf
X3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFnY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsIGNoYXIgKl9fYnVmKSA7CgoKCgpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFs
dWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAg
ICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAg
ICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs
CiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4pIDsKCmV4dGVybiBpbnQgcWVjdnRfciAo
bG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGlu
dCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAgICAgICAg
ICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgOwpleHRlcm4g
aW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAg
ICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
biwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19s
ZW4pIDsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBf
X24pIDsKCgpleHRlcm4gaW50IG1idG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24p
IDsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIDsKCgoK
ZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBf
X24pIDsKCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLCBz
aXplX3QgX19uKQogICAgIDsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFy
ICpfX3Jlc3BvbnNlKSA7CiMgODA4ICIuLi9zdGRsaWIvc3RkbGliLmgiCmV4dGVybiBpbnQgZ2V0
c3Vib3B0IChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsCiAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICpfX2NvbnN0ICpfX3Jlc3RyaWN0IF9fdG9rZW5zLAogICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX192YWx1ZXApIDsKCgoKCgpleHRlcm4gdm9pZCBzZXRrZXkg
KF9fY29uc3QgY2hhciAqX19rZXkpIDsKCgoKCgoKCmV4dGVybiBpbnQgcG9zaXhfb3BlbnB0IChp
bnQgX19vZmxhZykgOwoKCgoKCgoKZXh0ZXJuIGludCBncmFudHB0IChpbnQgX19mZCkgOwoKCgpl
eHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19mZCkgOwoKCgoKZXh0ZXJuIGNoYXIgKnB0c25hbWUg
KGludCBfX2ZkKSA7CgoKCgoKCmV4dGVybiBpbnQgcHRzbmFtZV9yIChpbnQgX19mZCwgY2hhciAq
X19idWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIDsKCgoK
CgoKZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUgX19sb2FkYXZnW10sIGludCBfX25lbGVt
KSA7CgoKCgoKCiMgOCAiLi4vaW5jbHVkZS9zdGRsaWIuaCIgMgoKCgpleHRlcm4gbG9uZyBpbnQg
X19yYW5kb20gKHZvaWQpOwpleHRlcm4gdm9pZCBfX3NyYW5kb20gKHVuc2lnbmVkIGludCBfX3Nl
ZWQpOwpleHRlcm4gY2hhciAqX19pbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIg
Kl9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4p
OwpleHRlcm4gY2hhciAqX19zZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1Zik7CmV4dGVybiBpbnQg
X19yYW5kb21fciAoc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZiwgaW50MzJfdCAqX19yZXN1bHQp
OwpleHRlcm4gaW50IF9fc3JhbmRvbV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFu
ZG9tX2RhdGEgKl9fYnVmKTsKZXh0ZXJuIGludCBfX2luaXRzdGF0ZV9yICh1bnNpZ25lZCBpbnQg
X19zZWVkLCBjaGFyICpfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX3N0YXRlbGVuLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKTsKZXh0ZXJuIGludCBfX3Nl
dHN0YXRlX3IgKGNoYXIgKl9fc3RhdGVidWYsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpOwpl
eHRlcm4gaW50IF9fcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCk7CmV4dGVybiBpbnQgX19l
cmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlciwgZG91YmxlICpfX3Jlc3VsdCk7
CmV4dGVybiBpbnQgX19ucmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAog
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdWx0KTsKZXh0ZXJuIGludCBfX2py
YW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICBsb25nIGludCAqX19yZXN1bHQpOwpleHRlcm4gaW50IF9fc3JhbmQ0OF9yIChsb25nIGlu
dCBfX3NlZWR2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEg
Kl9fYnVmZmVyKTsKZXh0ZXJuIGludCBfX3NlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19z
ZWVkMTZ2WzNdLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
YnVmZmVyKTsKZXh0ZXJuIGludCBfX2xjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFy
YW1bN10sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVm
ZmVyKTsKCgpleHRlcm4gaW50IF9fZHJhbmQ0OF9pdGVyYXRlICh1bnNpZ25lZCBzaG9ydCBpbnQg
X194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhf
ZGF0YSAqX19idWZmZXIpOwoKZXh0ZXJuIGludCBfX3NldGVudiAoX19jb25zdCBjaGFyICpfX25h
bWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgaW50IF9fcmVw
bGFjZSk7CmV4dGVybiBpbnQgX191bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpOwpleHRl
cm4gaW50IF9fY2xlYXJlbnYgKHZvaWQpOwpleHRlcm4gY2hhciAqX19jYW5vbmljYWxpemVfZmls
ZV9uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSk7CmV4dGVybiBjaGFyICpfX3JlYWxwYXRoIChf
X2NvbnN0IGNoYXIgKl9fbmFtZSwgY2hhciAqX19yZXNvbHZlZCk7CmV4dGVybiBpbnQgX19wdHNu
YW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKTsKZXh0ZXJuIGlu
dCBfX2dldHB0ICh2b2lkKTsKZXh0ZXJuIGludCBfX3Bvc2l4X29wZW5wdCAoaW50IF9fb2ZsYWcp
OwoKZXh0ZXJuIGludCBfX2FkZF90b19lbnZpcm9uIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBj
aGFyICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb21i
aW5lcywgaW50IHJlcGxhY2UpOwoKZXh0ZXJuIHZvaWQgX3F1aWNrc29ydCAodm9pZCAqY29uc3Qg
cGJhc2UsIHNpemVfdCB0b3RhbF9lbGVtcywKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNpemUsIF9fY29tcGFyX2ZuX3QgY21wKTsKCmV4dGVybiBpbnQgX19vbl9leGl0ICh2b2lkICgq
X19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKTsKCmV4dGVy
biBpbnQgX19jeGFfYXRleGl0ICh2b2lkICgqZnVuYykgKHZvaWQgKiksIHZvaWQgKmFyZywgdm9p
ZCAqZCk7CgpleHRlcm4gdm9pZCBfX2N4YV9maW5hbGl6ZSAodm9pZCAqZCk7CgpleHRlcm4gaW50
IF9fcG9zaXhfbWVtYWxpZ24gKHZvaWQgKiptZW1wdHIsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVf
dCBzaXplKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gaW50IF9f
bGliY19zeXN0ZW0gKGNvbnN0IGNoYXIgKmxpbmUpOwojIDggInNvaW5pdC5jIiAyCgoKIyAxICIu
Li9zeXNkZXBzL2dlbmVyaWMvZ2NjZnJhbWUuaCIgMQojIDIwICIuLi9zeXNkZXBzL2dlbmVyaWMv
Z2NjZnJhbWUuaCIKIyAxICIuLi9pbmNsdWRlL3N5cy90eXBlcy5oIiAxCiMgMjEgIi4uL3N5c2Rl
cHMvZ2VuZXJpYy9nY2NmcmFtZS5oIiAyCgpzdHJ1Y3QgZHdhcmZfZmRlOwpzdHJ1Y3QgZmRlX3Zl
Y3RvcjsKCnN0cnVjdCBvYmplY3QKewogIHZvaWQgKnBjX2JlZ2luOwogIHZvaWQgKnRiYXNlOwog
IHZvaWQgKmRiYXNlOwogIHVuaW9uIHsKICAgIHN0cnVjdCBkd2FyZl9mZGUgKnNpbmdsZTsKICAg
IHN0cnVjdCBkd2FyZl9mZGUgKiphcnJheTsKICAgIHN0cnVjdCBmZGVfdmVjdG9yICpzb3J0Owog
IH0gdTsKCiAgdW5pb24gewogICAgc3RydWN0IHsKICAgICAgdW5zaWduZWQgbG9uZyBzb3J0ZWQg
OiAxOwogICAgICB1bnNpZ25lZCBsb25nIGZyb21fYXJyYXkgOiAxOwogICAgICB1bnNpZ25lZCBs
b25nIG1peGVkX2VuY29kaW5nIDogMTsKICAgICAgdW5zaWduZWQgbG9uZyBlbmNvZGluZyA6IDg7
CgoKICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCA6IDIxOwogICAgfSBiOwogICAgc2l6ZV90IGk7
CiAgfSBzOwoKICBzdHJ1Y3Qgb2JqZWN0ICpuZXh0Owp9OwojIDExICJzb2luaXQuYyIgMgoKCnN0
YXRpYyB2b2lkICgqY29uc3QgX19DVE9SX0xJU1RfX1sxXSkgKHZvaWQpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKHNlY3Rpb24gKCIuY3RvcnMiKSkpCiAgICAgPSB7ICh2b2lkICgqKSAodm9pZCkpIC0x
IH07CnN0YXRpYyB2b2lkICgqY29uc3QgX19EVE9SX0xJU1RfX1sxXSkgKHZvaWQpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZHRvcnMiKSkpCiAgICAgPSB7ICh2b2lkICgqKSAodm9p
ZCkpIC0xIH07CgpzdGF0aWMgaW5saW5lIHZvaWQKcnVuX2hvb2tzICh2b2lkICgqY29uc3QgbGlz
dFtdKSAodm9pZCkpCnsKICB3aGlsZSAoKisrbGlzdCkKICAgICgqKmxpc3QpICgpOwp9CgoKc3Rh
dGljIGNoYXIgX19FSF9GUkFNRV9CRUdJTl9fW10KICAgICBfX2F0dHJpYnV0ZV9fICgoc2VjdGlv
biAoIi5laF9mcmFtZSIpKSkKICAgICA9IHsgfTsKCmV4dGVybiB2b2lkIF9fcmVnaXN0ZXJfZnJh
bWVfaW5mbyAoY29uc3Qgdm9pZCAqLCBzdHJ1Y3Qgb2JqZWN0ICopOwpleHRlcm4gdm9pZCBfX3Jl
Z2lzdGVyX2ZyYW1lX2luZm9fYmFzZXMgKGNvbnN0IHZvaWQgKiwgc3RydWN0IG9iamVjdCAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiwgdm9pZCAqKTsK
ZXh0ZXJuIHZvaWQgX19kZXJlZ2lzdGVyX2ZyYW1lX2luZm8gKGNvbnN0IHZvaWQgKik7CmV4dGVy
biB2b2lkIF9fZGVyZWdpc3Rlcl9mcmFtZV9pbmZvX2Jhc2VzIChjb25zdCB2b2lkICopOwoKCgoK
CgoKdm9pZApfX2xpYmNfZ2xvYmFsX2N0b3JzICh2b2lkKQp7CgogIHJ1bl9ob29rcyAoX19DVE9S
X0xJU1RfXyk7CgoKCiAgewogICAgc3RhdGljIHN0cnVjdCBvYmplY3Qgb2I7CiMgNjkgInNvaW5p
dC5jIgogICAgX19yZWdpc3Rlcl9mcmFtZV9pbmZvIChfX0VIX0ZSQU1FX0JFR0lOX18sICZvYik7
CgogIH0KCgoKCn0KCgoKCnZvaWQgX2ZpbmkgKHZvaWQpIF9fYXR0cmlidXRlX18gKChzZWN0aW9u
ICgiLmZpbmkiKSkpOwp2b2lkCl9maW5pICh2b2lkKQp7CgogIHJ1bl9ob29rcyAoX19EVE9SX0xJ
U1RfXyk7CgoKCgoKICBfX2RlcmVnaXN0ZXJfZnJhbWVfaW5mbyAoX19FSF9GUkFNRV9CRUdJTl9f
KTsKCgoKCgp9CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmJ1aWxkQWxsLnNoCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgVG9wIGxldmVs
IG91dHB1dCBkaXIKQ1VSPWBwd2RgCk9VVFBVVD0kQ1VSL3g4Ni02NApta2RpciAtcCAkT1VUUFVU
CmV4cG9ydCBQQVRIPSRQQVRIOiRPVVRQVVQvYmluCmV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9JE9V
VFBVVC9saWIKCiMgIEdldCBiaW51dGlscyBnb2luZwplY2hvICJCdWlsZGluZyBiaW51dGlscyIK
QlVESVI9JENVUi9iaW51dGlscwpCVUJVSUxEPSRCVURJUi9idWlsZAoKbWtkaXIgLXAgJEJVRElS
CmNkICRCVURJUgpjdnMgLWQgOnBzZXJ2ZXI6YW5vbmN2c0Bzb3VyY2VzLnJlZGhhdC5jb206L2N2
cy9zcmMgZ2V0IGJpbnV0aWxzCmlmIFsgJD8gLW5lIDAgXQp0aGVuCgllY2hvIEZhaWxlZCBjdnMK
CWV4aXQgMQpmaQoKbWtkaXIgLXAgJEJVQlVJTEQKY2QgJEJVQlVJTEQKLi4vc3JjL2NvbmZpZ3Vy
ZSAtLXRhcmdldD14ODZfNjQtdW5rbm93bi1saW51eCAtLXByZWZpeD0kT1VUUFVUCmlmIFsgJD8g
LW5lIDAgXQp0aGVuCgllY2hvIEZhaWxlZCBjb25maWd1cmUKCWV4aXQgMQpmaQoKbWFrZSAmJiBt
YWtlIGluc3RhbGwKaWYgWyAkPyAtbmUgMCBdCnRoZW4KCWVjaG8gRmFpbGVkIG1ha2UKCWV4aXQg
MQpmaQoKCgojICBHZXQgZ2NjIGdvaW5nCmVjaG8gIkJ1aWxkaW5nIGdjYyIKR0NDRElSPSRDVVIv
Z2NjCkdDQ1NSQ0RJUj0kR0NDRElSL2djYwpHQ0NCVUlMRD0kR0NDRElSL2J1aWxkCgpta2RpciAt
cCAkR0NDRElSCmNkICRHQ0NESVIKY3ZzIC1kIDpwc2VydmVyOmFub25jdnNAc3VidmVyc2lvbnMu
Z251Lm9yZzovY3Zzcm9vdC9nY2MgZ2V0IC1yIGdjYy0zXzMtYnJhbmNoIGdjYwppZiBbICQ/IC1u
ZSAwIF0KdGhlbgoJZWNobyBGYWlsZWQgY3ZzCglleGl0IDEKZmkKCmNkICRHQ0NTUkNESVIKaWYg
WyAkPyAtbmUgMCBdCnRoZW4KCWVjaG8gRmFpbGVkIHBhdGNoIGdjYwoJZXhpdCAxCmZpCgpta2Rp
ciAtcCAkR0NDQlVJTEQKY2QgJEdDQ0JVSUxECkNGTEFHUz0iLU8yIC1EaW5oaWJpdF9saWJjIiAu
Li9nY2MvY29uZmlndXJlIC0tdGFyZ2V0PXg4Nl82NC11bmtub3duLWxpbnV4IFwKICAtLXByZWZp
eD0kT1VUUFVUIC0tZW5hYmxlLWxhbmd1YWdlcz1jIC0tZGlzYWJsZS1zaGFyZWQgXAogIC0tZGlz
YWJsZS1tdWx0aWxpYiAtLWVuYWJsZS10aHJlYWRzPXNpbmdsZQppZiBbICQ/IC1uZSAwIF0KdGhl
bgoJZWNobyBGYWlsZWQgY29uZmlndXJlCglleGl0IDEKZmkKCm1ha2UgJiYgbWFrZSBpbnN0YWxs
CmlmIFsgJD8gLW5lIDAgXQp0aGVuCgllY2hvIEZhaWxlZCBtYWtlCglleGl0IDEKZmkKCiMgIEdl
dCBrZXJuZWwKZWNobyAiR2V0dGluZyB0aGUga2VybmVsIgpLRElSPSRDVVIva2VybmVsCktCVUlM
RD0kS0RJUi9saW51eApLSU5DQkFTRT0kT1VUUFVUL3g4Nl82NC11bmtub3duLWxpbnV4Cgpta2Rp
ciAtcCAkS0RJUgpjZCAkS0RJUgpjdnMgLWQgOnBzZXJ2ZXI6YW5vbmN2c0BjdnMueDg2LTY0Lm9y
ZzovY3ZzL1JlcG9zaXRvcnkgZ2V0IGxpbnV4CmlmIFsgJD8gLW5lIDAgXQp0aGVuCgllY2hvIEZh
aWxlZCBjdnMKCWV4aXQgMQpmaQoKCgpjZCAkS0JVSUxECmlmIFsgJD8gLW5lIDAgXQp0aGVuCgll
Y2hvIEZhaWxlZCBwYXRjaCBrZXJuZWwKCWV4aXQgMQpmaQoKbWFrZSBpbmNsdWRlL2xpbnV4L3Zl
cnNpb24uaAppZiBbICQ/IC1uZSAwIF0KdGhlbgoJZWNobyBGYWlsZWQgbWFrZSB2ZXJzaW9uCgll
eGl0IDEKZmkKCm1rZGlyIC1wICRLSU5DQkFTRS9pbmNsdWRlCmNkICRLSU5DQkFTRQppZiBbICEg
LUwgc3lzLWluY2x1ZGUgXQp0aGVuCglsbiAtcyBpbmNsdWRlIHN5cy1pbmNsdWRlCmZpCmNkIGlu
Y2x1ZGUKCiNsaW5rIGxpbnV4CmlmIFsgISAtTCBsaW51eCBdCnRoZW4KCWxuIC1zICRLQlVJTEQv
aW5jbHVkZS9saW51eCBsaW51eApmaQppZiBbICQ/IC1uZSAwIF0KdGhlbgoJZWNobyBGYWlsZWQg
bGluawoJZXhpdCAxCmZpCgojbGluayBhc20KaWYgWyAhIC1MIGFzbSBdCnRoZW4KCWxuIC1zICRL
QlVJTEQvaW5jbHVkZS9hc20teDg2XzY0IGFzbQpmaQppZiBbICQ/IC1uZSAwIF0KdGhlbgoJZWNo
byBGYWlsZWQgbGluawoJZXhpdCAxCmZpCgojICBHZXQgZ2xpYmMgZ29pbmcKZWNobyAiQnVpbGRp
bmcgZ2xpYmMiCkdMSUJESVI9JENVUi9nbGliYwpHTElCQlVJTEQ9JEdMSUJESVIvYnVpbGQKCm1r
ZGlyIC1wICRHTElCRElSCmNkICRHTElCRElSCmN2cyAtZCA6cHNlcnZlcjphbm9uY3ZzQHNvdXJj
ZXMucmVkaGF0LmNvbTovY3ZzL2dsaWJjIGdldCAtciBnbGliYy0yLTItYnJhbmNoIGdsaWJjIApp
ZiBbICQ/IC1uZSAwIF0KdGhlbgoJZWNobyBGYWlsZWQgY3ZzCglleGl0IDEKZmkKCm1rZGlyIC1w
ICRHTElCQlVJTEQKY2QgJEdMSUJCVUlMRApDQz0kT1VUUFVUL2Jpbi94ODZfNjQtdW5rbm93bi1s
aW51eC1nY2MgXAogIC4uL2xpYmMvY29uZmlndXJlIC0tZGlzYWJsZS1wcm9maWxlIFwKICAtLXBy
ZWZpeD0kT1VUUFVUL3g4Nl82NC11bmtub3duLWxpbnV4IC0td2l0aG91dC1jdnMgXAogIC0tZW5h
YmxlLWFkZC1vbnMgeDg2XzY0LXVua25vd24tbGludXgKaWYgWyAkPyAtbmUgMCBdCnRoZW4KCWVj
aG8gRmFpbGVkIGNvbmZpZ3VyZQoJZXhpdCAxCmZpCgptYWtlICYmIG1ha2UgaW5zdGFsbAppZiBb
ICQ/IC1uZSAwIF0KdGhlbgoJZWNobyBGYWlsZWQgbWFrZQoJZXhpdCAxCmZpCg==


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