public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* target/10673: Internal Compiler Error for x86-64 on freebsd libc vfprintf.c source
@ 2003-05-08  1:26 peter
  0 siblings, 0 replies; only message in thread
From: peter @ 2003-05-08  1:26 UTC (permalink / raw)
  To: gcc-gnats; +Cc: rth


>Number:         10673
>Category:       target
>Synopsis:       Internal Compiler Error for x86-64 on freebsd libc vfprintf.c source
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu May 08 01:26:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Peter Wemm
>Release:        gcc version 3.3 20030505 (prerelease)
>Organization:
>Environment:
Target is FreeBSD/amd64, bug appears both when cross compiling and when natively hosted.  Native compiler passes 'make bootstrap' tests.
>Description:
gcc ICE's on src/lib/libc/stdio/vfprintf.c in the FreeBSD source tree.  vp.c is a preprocessed copy of the file:

hammer# gcc -c vp.c
hammer# gcc -c -O vp.c
vp.c: In function `__vfprintf':
vp.c:2904: internal compiler error: in change_address_1, at emit-rtl.c:2017
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
>How-To-Repeat:
Compile as above, with -O or higher.
>Fix:
Not-really-a-fix: remove -O.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="vp.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="vp.c"

X19hc21fXygiLmlkZW50XHRcIiIgIiRGcmVlQlNEOiBzcmMvbGliL2xpYmMvc3RkaW8vdmZwcmlu
dGYuYyx2IDEuNTkgMjAwMy8wNC8xOSAyMzo1MzoxOSBkYXMgRXhwICQiICJcIiIpOwoKCgoKCgoK
dHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWlu
dDhfdDsKdHlwZWRlZiBzaG9ydCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191
aW50MTZfdDsKdHlwZWRlZiBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Vp
bnQzMl90Owp0eXBlZGVmIGxvbmcgX19pbnQ2NF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191
aW50NjRfdDsKCgoKCnR5cGVkZWYgX19pbnQzMl90IF9fY2xvY2tfdDsKdHlwZWRlZiBfX2ludDY0
X3QgX19jcml0aWNhbF90Owp0eXBlZGVmIGRvdWJsZSBfX2RvdWJsZV90Owp0eXBlZGVmIGRvdWJs
ZSBfX2Zsb2F0X3Q7CnR5cGVkZWYgX19pbnQ2NF90IF9faW50ZnB0cl90Owp0eXBlZGVmIF9faW50
NjRfdCBfX2ludG1heF90Owp0eXBlZGVmIF9faW50NjRfdCBfX2ludHB0cl90Owp0eXBlZGVmIF9f
aW50MzJfdCBfX2ludF9mYXN0OF90Owp0eXBlZGVmIF9faW50MzJfdCBfX2ludF9mYXN0MTZfdDsK
dHlwZWRlZiBfX2ludDMyX3QgX19pbnRfZmFzdDMyX3Q7CnR5cGVkZWYgX19pbnQ2NF90IF9faW50
X2Zhc3Q2NF90Owp0eXBlZGVmIF9faW50OF90IF9faW50X2xlYXN0OF90Owp0eXBlZGVmIF9faW50
MTZfdCBfX2ludF9sZWFzdDE2X3Q7CnR5cGVkZWYgX19pbnQzMl90IF9faW50X2xlYXN0MzJfdDsK
dHlwZWRlZiBfX2ludDY0X3QgX19pbnRfbGVhc3Q2NF90Owp0eXBlZGVmIF9faW50NjRfdCBfX3B0
cmRpZmZfdDsKdHlwZWRlZiBfX2ludDY0X3QgX19yZWdpc3Rlcl90Owp0eXBlZGVmIF9faW50NjRf
dCBfX3NlZ3N6X3Q7CnR5cGVkZWYgX191aW50NjRfdCBfX3NpemVfdDsKdHlwZWRlZiBfX2ludDY0
X3QgX19zc2l6ZV90Owp0eXBlZGVmIF9faW50NjRfdCBfX3RpbWVfdDsKdHlwZWRlZiBfX3VpbnQ2
NF90IF9fdWludGZwdHJfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IF9fdWludG1heF90Owp0eXBlZGVm
IF9fdWludDY0X3QgX191aW50cHRyX3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX3VpbnRfZmFzdDhf
dDsKdHlwZWRlZiBfX3VpbnQzMl90IF9fdWludF9mYXN0MTZfdDsKdHlwZWRlZiBfX3VpbnQzMl90
IF9fdWludF9mYXN0MzJfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IF9fdWludF9mYXN0NjRfdDsKdHlw
ZWRlZiBfX3VpbnQ4X3QgX191aW50X2xlYXN0OF90Owp0eXBlZGVmIF9fdWludDE2X3QgX191aW50
X2xlYXN0MTZfdDsKdHlwZWRlZiBfX3VpbnQzMl90IF9fdWludF9sZWFzdDMyX3Q7CnR5cGVkZWYg
X191aW50NjRfdCBfX3VpbnRfbGVhc3Q2NF90Owp0eXBlZGVmIF9fdWludDY0X3QgX191X3JlZ2lz
dGVyX3Q7CnR5cGVkZWYgX191aW50NjRfdCBfX3ZtX29mZnNldF90Owp0eXBlZGVmIF9faW50NjRf
dCBfX3ZtX29vZmZzZXRfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IF9fdm1fcGFkZHJfdDsKdHlwZWRl
ZiBfX3VpbnQ2NF90IF9fdm1fcGluZGV4X3Q7CnR5cGVkZWYgX191aW50NjRfdCBfX3ZtX3NpemVf
dDsKCgoKCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX192YV9saXN0OwoKCnR5cGVkZWYgX192
YV9saXN0IF9fZ251Y192YV9saXN0OwoKCgoKdHlwZWRlZiBfX2ludDMyX3QgX19jbG9ja2lkX3Q7
CnR5cGVkZWYgX191aW50MzJfdCBfX2ZmbGFnc190Owp0eXBlZGVmIF9fdWludDY0X3QgX19mc2Js
a2NudF90Owp0eXBlZGVmIF9fdWludDY0X3QgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdWludDMy
X3QgX19naWRfdDsKdHlwZWRlZiBfX2ludDY0X3QgX19pZF90Owp0eXBlZGVmIF9fdWludDMyX3Qg
X19pbm9fdDsKdHlwZWRlZiBsb25nIF9fa2V5X3Q7CnR5cGVkZWYgX191aW50MTZfdCBfX21vZGVf
dDsKdHlwZWRlZiBpbnQgX19ubF9pdGVtOwp0eXBlZGVmIF9fdWludDE2X3QgX19ubGlua190Owp0
eXBlZGVmIF9faW50NjRfdCBfX29mZl90Owp0eXBlZGVmIF9faW50MzJfdCBfX3BpZF90Owp0eXBl
ZGVmIF9faW50NjRfdCBfX3JsaW1fdDsKdHlwZWRlZiBfX3VpbnQ4X3QgX19zYV9mYW1pbHlfdDsK
dHlwZWRlZiBfX3VpbnQzMl90IF9fc29ja2xlbl90Owp0eXBlZGVmIGxvbmcgX19zdXNlY29uZHNf
dDsKdHlwZWRlZiBfX2ludDMyX3QgX190aW1lcl90Owp0eXBlZGVmIF9fdWludDMyX3QgX191ZGV2
X3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX3VpZF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Vz
ZWNvbmRzX3Q7CnR5cGVkZWYgaW50IF9fY3RfcnVuZV90Owp0eXBlZGVmIF9fY3RfcnVuZV90IF9f
cnVuZV90Owp0eXBlZGVmIF9fY3RfcnVuZV90IF9fd2NoYXJfdDsKdHlwZWRlZiBfX2N0X3J1bmVf
dCBfX3dpbnRfdDsKdHlwZWRlZiBfX3VkZXZfdCBfX2Rldl90OwoKCgoKCgp0eXBlZGVmIHVuaW9u
IHsKICAgICAgICBjaGFyIF9fbWJzdGF0ZThbMTI4XTsKICAgICAgICBfX2ludDY0X3QgX21ic3Rh
dGVMOwp9IF9fbWJzdGF0ZV90OwpzdGF0aWMgX19pbmxpbmUgX191aW50NjRfdApfX2Jzd2FwNjQo
X191aW50NjRfdCBfeCkKewoKICAgICAgICByZXR1cm4gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0
ZXIgX191aW50NjRfdCBfX1ggPSAoX3gpOyBfX2FzbSAoImJzd2FwICUwIiA6ICIrciIgKF9fWCkp
OyBfX1g7IH0pKTsKfQoKc3RhdGljIF9faW5saW5lIF9fdWludDMyX3QKX19ic3dhcDMyKF9fdWlu
dDMyX3QgX3gpCnsKCiAgICAgICAgcmV0dXJuIChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIF9f
dWludDMyX3QgX19YID0gKF94KTsgX19hc20gKCJic3dhcCAlMCIgOiAiK3IiIChfX1gpKTsgX19Y
OyB9KSk7Cn0KCnN0YXRpYyBfX2lubGluZSBfX3VpbnQxNl90Cl9fYnN3YXAxNihfX3VpbnQxNl90
IF94KQp7CgogICAgICAgIHJldHVybiAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBfX3VpbnQx
Nl90IF9fWCA9IChfeCk7IF9fYXNtICgieGNoZ2IgJWgwLCAlYjAiIDogIitRIiAoX19YKSk7IF9f
WDsgfSkpOwp9CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2NoYXI7CnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ7CnR5cGVkZWYgdW5z
aWduZWQgbG9uZyB1X2xvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0Owp0eXBlZGVm
IHVuc2lnbmVkIGludCB1aW50OwoKCgoKCgp0eXBlZGVmIF9faW50OF90IGludDhfdDsKCgoKCnR5
cGVkZWYgX19pbnQxNl90IGludDE2X3Q7CgoKCgp0eXBlZGVmIF9faW50MzJfdCBpbnQzMl90OwoK
CgoKdHlwZWRlZiBfX2ludDY0X3QgaW50NjRfdDsKCgoKCnR5cGVkZWYgX191aW50OF90IHVpbnQ4
X3Q7CgoKCgp0eXBlZGVmIF9fdWludDE2X3QgdWludDE2X3Q7CgoKCgp0eXBlZGVmIF9fdWludDMy
X3QgdWludDMyX3Q7CgoKCgp0eXBlZGVmIF9fdWludDY0X3QgdWludDY0X3Q7CgoKCgp0eXBlZGVm
IF9faW50cHRyX3QgaW50cHRyX3Q7CnR5cGVkZWYgX191aW50cHRyX3QgdWludHB0cl90OwoKCgp0
eXBlZGVmIF9fdWludDhfdCB1X2ludDhfdDsKdHlwZWRlZiBfX3VpbnQxNl90IHVfaW50MTZfdDsK
dHlwZWRlZiBfX3VpbnQzMl90IHVfaW50MzJfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IHVfaW50NjRf
dDsKCnR5cGVkZWYgX191aW50NjRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ludDY0X3QgcXVhZF90
Owp0eXBlZGVmIHF1YWRfdCAqIHFhZGRyX3Q7Cgp0eXBlZGVmIGNoYXIgKiBjYWRkcl90Owp0eXBl
ZGVmIGNvbnN0IGNoYXIgKiBjX2NhZGRyX3Q7CnR5cGVkZWYgdm9sYXRpbGUgY2hhciAqdl9jYWRk
cl90OwoKCnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCgp0eXBlZGVmIF9fY2xvY2tpZF90
IGNsb2NraWRfdDsKCgoKdHlwZWRlZiBfX2NyaXRpY2FsX3QgY3JpdGljYWxfdDsKdHlwZWRlZiBf
X2ludDY0X3QgZGFkZHJfdDsKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0eXBlZGVmIF9f
ZmZsYWdzX3QgZmZsYWdzX3Q7CgoKCnR5cGVkZWYgX191aW50MzJfdCBmaXhwdF90OwoKCnR5cGVk
ZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7CnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250
X3Q7CgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fdWludDMyX3QgaW5f
YWRkcl90OwoKCgoKdHlwZWRlZiBfX3VpbnQxNl90IGluX3BvcnRfdDsKCgoKCnR5cGVkZWYgX19p
ZF90IGlkX3Q7CgoKCgp0eXBlZGVmIF9faW5vX3QgaW5vX3Q7CgoKCgp0eXBlZGVmIF9fa2V5X3Qg
a2V5X3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlua190
IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgp0eXBlZGVmIF9fcGlkX3Qg
cGlkX3Q7CgoKCnR5cGVkZWYgX19yZWdpc3Rlcl90IHJlZ2lzdGVyX3Q7CgoKdHlwZWRlZiBfX3Js
aW1fdCBybGltX3Q7CgoKCnR5cGVkZWYgX19zZWdzel90IHNlZ3N6X3Q7CgoKdHlwZWRlZiBfX3Np
emVfdCBzaXplX3Q7CgoKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBf
X3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCgoKdHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7CgoK
Cgp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwoKCgp0eXBlZGVmIF9fdV9yZWdpc3Rlcl90IHVf
cmVnaXN0ZXJfdDsKdHlwZWRlZiBfX3VkZXZfdCB1ZGV2X3Q7CgoKdHlwZWRlZiBfX3VpZF90IHVp
ZF90OwoKCgoKdHlwZWRlZiBfX3VzZWNvbmRzX3QgdXNlY29uZHNfdDsKCgoKdHlwZWRlZiBfX3Zt
X29mZnNldF90IHZtX29mZnNldF90Owp0eXBlZGVmIF9fdm1fb29mZnNldF90IHZtX29vZmZzZXRf
dDsKdHlwZWRlZiBfX3ZtX3BhZGRyX3Qgdm1fcGFkZHJfdDsKdHlwZWRlZiBfX3ZtX3BpbmRleF90
IHZtX3BpbmRleF90Owp0eXBlZGVmIF9fdm1fc2l6ZV90IHZtX3NpemVfdDsKdHlwZWRlZiBzdHJ1
Y3QgX19zaWdzZXQgewogICAgICAgIF9fdWludDMyX3QgX19iaXRzWzRdOwp9IF9fc2lnc2V0X3Q7
CnN0cnVjdCB0aW1ldmFsIHsKICAgICAgICBsb25nIHR2X3NlYzsKICAgICAgICBzdXNlY29uZHNf
dCB0dl91c2VjOwp9OwpzdHJ1Y3QgdGltZXNwZWMgewogICAgICAgIHRpbWVfdCB0dl9zZWM7CiAg
ICAgICAgbG9uZyB0dl9uc2VjOwp9OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fZmRfbWFzazsK
CnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0
X3Q7CnR5cGVkZWYgc3RydWN0IGZkX3NldCB7CiAgICAgICAgX19mZF9tYXNrIF9fZmRzX2JpdHNb
KCgoMTAyNFUpICsgKCgoc2l6ZW9mKF9fZmRfbWFzaykgKiA4KSkgLSAxKSkgLyAoKHNpemVvZihf
X2ZkX21hc2spICogOCkpKV07Cn0gZmRfc2V0OwoKaW50IHBzZWxlY3QoaW50LCBmZF9zZXQgKiwg
ZmRfc2V0ICosIGZkX3NldCAqLAogICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqLCBjb25z
dCBzaWdzZXRfdCAqKTsKCgoKaW50IF9zZWxlY3QoaW50LCBmZF9zZXQgKiwgZmRfc2V0ICosIGZk
X3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKCgoKCgppbnQgZnRydW5jYXRlKGludCwgb2ZmX3Qp
OwoKCgpvZmZfdCBsc2VlayhpbnQsIG9mZl90LCBpbnQpOwoKCgp2b2lkICogbW1hcCh2b2lkICos
IHNpemVfdCwgaW50LCBpbnQsIGludCwgb2ZmX3QpOwoKCgppbnQgdHJ1bmNhdGUoY29uc3QgY2hh
ciAqLCBvZmZfdCk7CgoKCgppbnQgaXNhbG51bShpbnQpOwppbnQgaXNhbHBoYShpbnQpOwppbnQg
aXNjbnRybChpbnQpOwppbnQgaXNkaWdpdChpbnQpOwppbnQgaXNncmFwaChpbnQpOwppbnQgaXNs
b3dlcihpbnQpOwppbnQgaXNwcmludChpbnQpOwppbnQgaXNwdW5jdChpbnQpOwppbnQgaXNzcGFj
ZShpbnQpOwppbnQgaXN1cHBlcihpbnQpOwppbnQgaXN4ZGlnaXQoaW50KTsKaW50IHRvbG93ZXIo
aW50KTsKaW50IHRvdXBwZXIoaW50KTsKCgppbnQgX3RvbG93ZXIoaW50KTsKaW50IF90b3VwcGVy
KGludCk7CmludCBpc2FzY2lpKGludCk7CmludCB0b2FzY2lpKGludCk7CgoKCmludCBkaWdpdHRv
aW50KGludCk7CmludCBpc2JsYW5rKGludCk7CmludCBpc2hleG51bWJlcihpbnQpOwppbnQgaXNp
ZGVvZ3JhbShpbnQpOwppbnQgaXNudW1iZXIoaW50KTsKaW50IGlzcGhvbm9ncmFtKGludCk7Cmlu
dCBpc3J1bmUoaW50KTsKaW50IGlzc3BlY2lhbChpbnQpOwoKCgp1bnNpZ25lZCBsb25nIF9fX3J1
bmV0eXBlKF9fY3RfcnVuZV90KTsKX19jdF9ydW5lX3QgX19fdG9sb3dlcihfX2N0X3J1bmVfdCk7
Cl9fY3RfcnVuZV90IF9fX3RvdXBwZXIoX19jdF9ydW5lX3QpOwoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIF9fcnVuZV90IG1pbjsKICAgICAgICBfX3J1bmVfdCBtYXg7CiAgICAgICAgX19ydW5l
X3QgbWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnR5cGVzOwp9IF9SdW5lRW50cnk7Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG5yYW5nZXM7CiAgICAgICAgX1J1bmVFbnRyeSAqcmFu
Z2VzOwp9IF9SdW5lUmFuZ2U7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgY2hhciBtYWdpY1s4
XTsKICAgICAgICBjaGFyIGVuY29kaW5nWzMyXTsKCiAgICAgICAgX19ydW5lX3QgKCpzZ2V0cnVu
ZSkoY29uc3QgY2hhciAqLCBfX3NpemVfdCwgY2hhciBjb25zdCAqKik7CiAgICAgICAgaW50ICgq
c3B1dHJ1bmUpKF9fcnVuZV90LCBjaGFyICosIF9fc2l6ZV90LCBjaGFyICoqKTsKICAgICAgICBf
X3J1bmVfdCBpbnZhbGlkX3J1bmU7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgcnVuZXR5cGVbKDEg
PDw4ICldOwogICAgICAgIF9fcnVuZV90IG1hcGxvd2VyWygxIDw8OCApXTsKICAgICAgICBfX3J1
bmVfdCBtYXB1cHBlclsoMSA8PDggKV07CgoKCgoKCiAgICAgICAgX1J1bmVSYW5nZSBydW5ldHlw
ZV9leHQ7CiAgICAgICAgX1J1bmVSYW5nZSBtYXBsb3dlcl9leHQ7CiAgICAgICAgX1J1bmVSYW5n
ZSBtYXB1cHBlcl9leHQ7CgogICAgICAgIHZvaWQgKnZhcmlhYmxlOwogICAgICAgIGludCB2YXJp
YWJsZV9sZW47Cn0gX1J1bmVMb2NhbGU7CgoKCmV4dGVybiBfUnVuZUxvY2FsZSBfRGVmYXVsdFJ1
bmVMb2NhbGU7CmV4dGVybiBfUnVuZUxvY2FsZSAqX0N1cnJlbnRSdW5lTG9jYWxlOwoKc3RhdGlj
IF9faW5saW5lIGludApfX21hc2tydW5lKF9fY3RfcnVuZV90IF9jLCB1bnNpZ25lZCBsb25nIF9m
KQp7CiAgICAgICAgcmV0dXJuICgoX2MgPCAwIHx8IF9jID49ICgxIDw8OCApKSA/IF9fX3J1bmV0
eXBlKF9jKSA6CiAgICAgICAgICAgICAgICBfQ3VycmVudFJ1bmVMb2NhbGUtPnJ1bmV0eXBlW19j
XSkgJiBfZjsKfQoKc3RhdGljIF9faW5saW5lIGludApfX2lzdHlwZShfX2N0X3J1bmVfdCBfYywg
dW5zaWduZWQgbG9uZyBfZikKewogICAgICAgIHJldHVybiAoISFfX21hc2tydW5lKF9jLCBfZikp
Owp9CgpzdGF0aWMgX19pbmxpbmUgaW50Cl9faXNjdHlwZShfX2N0X3J1bmVfdCBfYywgdW5zaWdu
ZWQgbG9uZyBfZikKewogICAgICAgIHJldHVybiAoX2MgPCAwIHx8IF9jID49ICgxIDw8OCApKSA/
IDAgOgogICAgICAgICAgICAgICAhIShfRGVmYXVsdFJ1bmVMb2NhbGUucnVuZXR5cGVbX2NdICYg
X2YpOwp9CgpzdGF0aWMgX19pbmxpbmUgX19jdF9ydW5lX3QKX190b3VwcGVyKF9fY3RfcnVuZV90
IF9jKQp7CiAgICAgICAgcmV0dXJuIChfYyA8IDAgfHwgX2MgPj0gKDEgPDw4ICkpID8gX19fdG91
cHBlcihfYykgOgogICAgICAgICAgICAgICBfQ3VycmVudFJ1bmVMb2NhbGUtPm1hcHVwcGVyW19j
XTsKfQoKc3RhdGljIF9faW5saW5lIF9fY3RfcnVuZV90Cl9fdG9sb3dlcihfX2N0X3J1bmVfdCBf
YykKewogICAgICAgIHJldHVybiAoX2MgPCAwIHx8IF9jID49ICgxIDw8OCApKSA/IF9fX3RvbG93
ZXIoX2MpIDoKICAgICAgICAgICAgICAgX0N1cnJlbnRSdW5lTG9jYWxlLT5tYXBsb3dlcltfY107
Cn0KCgpzdHJ1Y3QgbGNvbnYgewogICAgICAgIGNoYXIgKmRlY2ltYWxfcG9pbnQ7CiAgICAgICAg
Y2hhciAqdGhvdXNhbmRzX3NlcDsKICAgICAgICBjaGFyICpncm91cGluZzsKICAgICAgICBjaGFy
ICppbnRfY3Vycl9zeW1ib2w7CiAgICAgICAgY2hhciAqY3VycmVuY3lfc3ltYm9sOwogICAgICAg
IGNoYXIgKm1vbl9kZWNpbWFsX3BvaW50OwogICAgICAgIGNoYXIgKm1vbl90aG91c2FuZHNfc2Vw
OwogICAgICAgIGNoYXIgKm1vbl9ncm91cGluZzsKICAgICAgICBjaGFyICpwb3NpdGl2ZV9zaWdu
OwogICAgICAgIGNoYXIgKm5lZ2F0aXZlX3NpZ247CiAgICAgICAgY2hhciBpbnRfZnJhY19kaWdp
dHM7CiAgICAgICAgY2hhciBmcmFjX2RpZ2l0czsKICAgICAgICBjaGFyIHBfY3NfcHJlY2VkZXM7
CiAgICAgICAgY2hhciBwX3NlcF9ieV9zcGFjZTsKICAgICAgICBjaGFyIG5fY3NfcHJlY2VkZXM7
CiAgICAgICAgY2hhciBuX3NlcF9ieV9zcGFjZTsKICAgICAgICBjaGFyIHBfc2lnbl9wb3NuOwog
ICAgICAgIGNoYXIgbl9zaWduX3Bvc247CiAgICAgICAgY2hhciBpbnRfcF9jc19wcmVjZWRlczsK
ICAgICAgICBjaGFyIGludF9uX2NzX3ByZWNlZGVzOwogICAgICAgIGNoYXIgaW50X3Bfc2VwX2J5
X3NwYWNlOwogICAgICAgIGNoYXIgaW50X25fc2VwX2J5X3NwYWNlOwogICAgICAgIGNoYXIgaW50
X3Bfc2lnbl9wb3NuOwogICAgICAgIGNoYXIgaW50X25fc2lnbl9wb3NuOwp9OwoKc3RydWN0IGxj
b252ICpsb2NhbGVjb252KHZvaWQpOwpjaGFyICpzZXRsb2NhbGUoaW50LCBjb25zdCBjaGFyICop
OwoKdHlwZWRlZiBfX3B0cmRpZmZfdCBwdHJkaWZmX3Q7CgoKCnR5cGVkZWYgX19ydW5lX3QgcnVu
ZV90Owp0eXBlZGVmIF9fd2NoYXJfdCB3Y2hhcl90Owp0eXBlZGVmIF9faW50X2xlYXN0OF90IGlu
dF9sZWFzdDhfdDsKdHlwZWRlZiBfX2ludF9sZWFzdDE2X3QgaW50X2xlYXN0MTZfdDsKdHlwZWRl
ZiBfX2ludF9sZWFzdDMyX3QgaW50X2xlYXN0MzJfdDsKdHlwZWRlZiBfX2ludF9sZWFzdDY0X3Qg
aW50X2xlYXN0NjRfdDsKCnR5cGVkZWYgX191aW50X2xlYXN0OF90IHVpbnRfbGVhc3Q4X3Q7CnR5
cGVkZWYgX191aW50X2xlYXN0MTZfdCB1aW50X2xlYXN0MTZfdDsKdHlwZWRlZiBfX3VpbnRfbGVh
c3QzMl90IHVpbnRfbGVhc3QzMl90Owp0eXBlZGVmIF9fdWludF9sZWFzdDY0X3QgdWludF9sZWFz
dDY0X3Q7Cgp0eXBlZGVmIF9faW50X2Zhc3Q4X3QgaW50X2Zhc3Q4X3Q7CnR5cGVkZWYgX19pbnRf
ZmFzdDE2X3QgaW50X2Zhc3QxNl90Owp0eXBlZGVmIF9faW50X2Zhc3QzMl90IGludF9mYXN0MzJf
dDsKdHlwZWRlZiBfX2ludF9mYXN0NjRfdCBpbnRfZmFzdDY0X3Q7Cgp0eXBlZGVmIF9fdWludF9m
YXN0OF90IHVpbnRfZmFzdDhfdDsKdHlwZWRlZiBfX3VpbnRfZmFzdDE2X3QgdWludF9mYXN0MTZf
dDsKdHlwZWRlZiBfX3VpbnRfZmFzdDMyX3QgdWludF9mYXN0MzJfdDsKdHlwZWRlZiBfX3VpbnRf
ZmFzdDY0X3QgdWludF9mYXN0NjRfdDsKCnR5cGVkZWYgX19pbnRtYXhfdCBpbnRtYXhfdDsKdHlw
ZWRlZiBfX3VpbnRtYXhfdCB1aW50bWF4X3Q7CnR5cGVkZWYgX19vZmZfdCBmcG9zX3Q7CnR5cGVk
ZWYgX192YV9saXN0IHZhX2xpc3Q7CnN0cnVjdCBfX3NidWYgewogICAgICAgIHVuc2lnbmVkIGNo
YXIgKl9iYXNlOwogICAgICAgIGludCBfc2l6ZTsKfTsKCgpzdHJ1Y3QgX19zRklMRVg7CnR5cGVk
ZWYgc3RydWN0IF9fc0ZJTEUgewogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9wOwogICAgICAgIGlu
dCBfcjsKICAgICAgICBpbnQgX3c7CiAgICAgICAgc2hvcnQgX2ZsYWdzOwogICAgICAgIHNob3J0
IF9maWxlOwogICAgICAgIHN0cnVjdCBfX3NidWYgX2JmOwogICAgICAgIGludCBfbGJmc2l6ZTsK
CgogICAgICAgIHZvaWQgKl9jb29raWU7CiAgICAgICAgaW50ICgqX2Nsb3NlKSh2b2lkICopOwog
ICAgICAgIGludCAoKl9yZWFkKSh2b2lkICosIGNoYXIgKiwgaW50KTsKICAgICAgICBmcG9zX3Qg
KCpfc2Vlaykodm9pZCAqLCBmcG9zX3QsIGludCk7CiAgICAgICAgaW50ICgqX3dyaXRlKSh2b2lk
ICosIGNvbnN0IGNoYXIgKiwgaW50KTsKCgogICAgICAgIHN0cnVjdCBfX3NidWYgX3ViOwogICAg
ICAgIHN0cnVjdCBfX3NGSUxFWCAqX2V4dHJhOwogICAgICAgIGludCBfdXI7CgoKICAgICAgICB1
bnNpZ25lZCBjaGFyIF91YnVmWzNdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgX25idWZbMV07CgoK
ICAgICAgICBzdHJ1Y3QgX19zYnVmIF9sYjsKCgogICAgICAgIGludCBfYmxrc2l6ZTsKICAgICAg
ICBmcG9zX3QgX29mZnNldDsKfSBGSUxFOwoKCmV4dGVybiBGSUxFICpfX3N0ZGlucDsKZXh0ZXJu
IEZJTEUgKl9fc3Rkb3V0cDsKZXh0ZXJuIEZJTEUgKl9fc3RkZXJycDsKCgoKCgp2b2lkIGNsZWFy
ZXJyKEZJTEUgKik7CmludCBmY2xvc2UoRklMRSAqKTsKaW50IGZlb2YoRklMRSAqKTsKaW50IGZl
cnJvcihGSUxFICopOwppbnQgZmZsdXNoKEZJTEUgKik7CmludCBmZ2V0YyhGSUxFICopOwppbnQg
ZmdldHBvcyhGSUxFICogLCBmcG9zX3QgKiApOwpjaGFyICpmZ2V0cyhjaGFyICogLCBpbnQsIEZJ
TEUgKiApOwpGSUxFICpmb3Blbihjb25zdCBjaGFyICogLCBjb25zdCBjaGFyICogKTsKaW50IGZw
cmludGYoRklMRSAqICwgY29uc3QgY2hhciAqICwgLi4uKTsKaW50IGZwdXRjKGludCwgRklMRSAq
KTsKaW50IGZwdXRzKGNvbnN0IGNoYXIgKiAsIEZJTEUgKiApOwpzaXplX3QgZnJlYWQodm9pZCAq
ICwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKiApOwpGSUxFICpmcmVvcGVuKGNvbnN0IGNoYXIgKiAs
IGNvbnN0IGNoYXIgKiAsIEZJTEUgKiApOwppbnQgZnNjYW5mKEZJTEUgKiAsIGNvbnN0IGNoYXIg
KiAsIC4uLik7CmludCBmc2VlayhGSUxFICosIGxvbmcsIGludCk7CmludCBmc2V0cG9zKEZJTEUg
KiwgY29uc3QgZnBvc190ICopOwpsb25nIGZ0ZWxsKEZJTEUgKik7CnNpemVfdCBmd3JpdGUoY29u
c3Qgdm9pZCAqICwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKiApOwppbnQgZ2V0YyhGSUxFICopOwpp
bnQgZ2V0Y2hhcih2b2lkKTsKY2hhciAqZ2V0cyhjaGFyICopOwp2b2lkIHBlcnJvcihjb25zdCBj
aGFyICopOwppbnQgcHJpbnRmKGNvbnN0IGNoYXIgKiAsIC4uLik7CmludCBwdXRjKGludCwgRklM
RSAqKTsKaW50IHB1dGNoYXIoaW50KTsKaW50IHB1dHMoY29uc3QgY2hhciAqKTsKaW50IHJlbW92
ZShjb25zdCBjaGFyICopOwppbnQgcmVuYW1lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK
dm9pZCByZXdpbmQoRklMRSAqKTsKaW50IHNjYW5mKGNvbnN0IGNoYXIgKiAsIC4uLik7CnZvaWQg
c2V0YnVmKEZJTEUgKiAsIGNoYXIgKiApOwppbnQgc2V0dmJ1ZihGSUxFICogLCBjaGFyICogLCBp
bnQsIHNpemVfdCk7CmludCBzcHJpbnRmKGNoYXIgKiAsIGNvbnN0IGNoYXIgKiAsIC4uLik7Cmlu
dCBzc2NhbmYoY29uc3QgY2hhciAqICwgY29uc3QgY2hhciAqICwgLi4uKTsKRklMRSAqdG1wZmls
ZSh2b2lkKTsKY2hhciAqdG1wbmFtKGNoYXIgKik7CmludCB1bmdldGMoaW50LCBGSUxFICopOwpp
bnQgdmZwcmludGYoRklMRSAqICwgY29uc3QgY2hhciAqICwKICAgICAgICAgICAgX192YV9saXN0
KTsKaW50IHZwcmludGYoY29uc3QgY2hhciAqICwgX192YV9saXN0KTsKaW50IHZzcHJpbnRmKGNo
YXIgKiAsIGNvbnN0IGNoYXIgKiAsCiAgICAgICAgICAgIF9fdmFfbGlzdCk7CgoKaW50IHNucHJp
bnRmKGNoYXIgKiAsIHNpemVfdCwgY29uc3QgY2hhciAqICwKICAgICAgICAgICAgLi4uKSBfX2F0
dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwppbnQgdmZzY2FuZihG
SUxFICogLCBjb25zdCBjaGFyICogLCBfX3ZhX2xpc3QpCiAgICAgICAgICAgIF9fYXR0cmlidXRl
X18oKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKaW50IHZzY2FuZihjb25zdCBjaGFy
ICogLCBfX3ZhX2xpc3QpIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwg
MCkpKTsKaW50IHZzbnByaW50ZihjaGFyICogLCBzaXplX3QsIGNvbnN0IGNoYXIgKiAsCiAgICAg
ICAgICAgIF9fdmFfbGlzdCkgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywg
MywgMCkpKTsKaW50IHZzc2NhbmYoY29uc3QgY2hhciAqICwgY29uc3QgY2hhciAqICwgX192YV9s
aXN0KQogICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIs
IDApKSk7CmNoYXIgKmN0ZXJtaWQoY2hhciAqKTsKRklMRSAqZmRvcGVuKGludCwgY29uc3QgY2hh
ciAqKTsKaW50IGZpbGVubyhGSUxFICopOwoKCgppbnQgcGNsb3NlKEZJTEUgKik7CkZJTEUgKnBv
cGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgoKaW50IGZ0cnlsb2NrZmlsZShGSUxF
ICopOwp2b2lkIF9mbG9ja2ZpbGUoRklMRSAqKTsKdm9pZCBfZnVubG9ja2ZpbGUoRklMRSAqKTsK
CgoKCgppbnQgZ2V0Y191bmxvY2tlZChGSUxFICopOwppbnQgZ2V0Y2hhcl91bmxvY2tlZCh2b2lk
KTsKaW50IHB1dGNfdW5sb2NrZWQoaW50LCBGSUxFICopOwppbnQgcHV0Y2hhcl91bmxvY2tlZChp
bnQpOwoKCnZvaWQgY2xlYXJlcnJfdW5sb2NrZWQoRklMRSAqKTsKaW50IGZlb2ZfdW5sb2NrZWQo
RklMRSAqKTsKaW50IGZlcnJvcl91bmxvY2tlZChGSUxFICopOwppbnQgZmlsZW5vX3VubG9ja2Vk
KEZJTEUgKik7CgoKCmludCBmc2Vla28oRklMRSAqLCBfX29mZl90LCBpbnQpOwpfX29mZl90IGZ0
ZWxsbyhGSUxFICopOwoKCgppbnQgZ2V0dyhGSUxFICopOwppbnQgcHV0dyhpbnQsIEZJTEUgKik7
CgoKCmNoYXIgKnRlbXBuYW0oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCgoKCgppbnQg
YXNwcmludGYoY2hhciAqKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmNoYXIgKmN0ZXJtaWRfcihjaGFyICopOwpjaGFy
ICpmZ2V0bG4oRklMRSAqLCBzaXplX3QgKik7CgoKCgoKY29uc3QgY2hhciAqZm10Y2hlY2soY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICopIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X2FyZ19fKDIp
KSk7CmludCBmcHVyZ2UoRklMRSAqKTsKdm9pZCBzZXRidWZmZXIoRklMRSAqLCBjaGFyICosIGlu
dCk7CmludCBzZXRsaW5lYnVmKEZJTEUgKik7CmludCB2YXNwcmludGYoY2hhciAqKiwgY29uc3Qg
Y2hhciAqLCBfX3ZhX2xpc3QpCiAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18g
KF9fcHJpbnRmX18sIDIsIDApKSk7CgoKCgoKCmV4dGVybiBjb25zdCBpbnQgc3lzX25lcnI7CmV4
dGVybiBjb25zdCBjaGFyICpjb25zdCBzeXNfZXJybGlzdFtdOwoKCgoKRklMRSAqZnVub3Blbihj
b25zdCB2b2lkICosCiAgICAgICAgICAgIGludCAoKikodm9pZCAqLCBjaGFyICosIGludCksCiAg
ICAgICAgICAgIGludCAoKikodm9pZCAqLCBjb25zdCBjaGFyICosIGludCksCiAgICAgICAgICAg
IGZwb3NfdCAoKikodm9pZCAqLCBmcG9zX3QsIGludCksCiAgICAgICAgICAgIGludCAoKikodm9p
ZCAqKSk7CmludCBfX3NyZ2V0KEZJTEUgKik7CmludCBfX3N3YnVmKGludCwgRklMRSAqKTsKCgoK
CgoKCnN0YXRpYyBfX2lubGluZSBpbnQgX19zcHV0YyhpbnQgX2MsIEZJTEUgKl9wKSB7CiAgICAg
ICAgaWYgKC0tX3AtPl93ID49IDAgfHwgKF9wLT5fdyA+PSBfcC0+X2xiZnNpemUgJiYgKGNoYXIp
X2MgIT0gJ1xuJykpCiAgICAgICAgICAgICAgICByZXR1cm4gKCpfcC0+X3ArKyA9IF9jKTsKICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gKF9fc3didWYoX2MsIF9wKSk7Cn0KCnR5
cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgcXVvdDsKICAgICAgICBpbnQgcmVtOwp9IGRpdl90
OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGxvbmcgcXVvdDsKICAgICAgICBsb25nIHJlbTsK
fSBsZGl2X3Q7CmV4dGVybiBpbnQgX19tYl9jdXJfbWF4OwoKCgp2b2lkIGFib3J0KHZvaWQpIF9f
YXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwppbnQgYWJzKGludCkgX19hdHRyaWJ1dGVfXygo
X19jb25zdF9fKSk7CmludCBhdGV4aXQodm9pZCAoKikodm9pZCkpOwpkb3VibGUgYXRvZihjb25z
dCBjaGFyICopOwppbnQgYXRvaShjb25zdCBjaGFyICopOwpsb25nIGF0b2woY29uc3QgY2hhciAq
KTsKdm9pZCAqYnNlYXJjaChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LAogICAg
ICAgICAgICBzaXplX3QsIGludCAoKikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKdm9p
ZCAqY2FsbG9jKHNpemVfdCwgc2l6ZV90KTsKZGl2X3QgZGl2KGludCwgaW50KSBfX2F0dHJpYnV0
ZV9fKChfX2NvbnN0X18pKTsKdm9pZCBleGl0KGludCkgX19hdHRyaWJ1dGVfXygoX19ub3JldHVy
bl9fKSk7CnZvaWQgZnJlZSh2b2lkICopOwpjaGFyICpnZXRlbnYoY29uc3QgY2hhciAqKTsKbG9u
ZyBsYWJzKGxvbmcpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwpsZGl2X3QgbGRpdihsb25n
LCBsb25nKSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKTsKdm9pZCAqbWFsbG9jKHNpemVfdCk7
CmludCBtYmxlbihjb25zdCBjaGFyICosIHNpemVfdCk7CnNpemVfdCBtYnN0b3djcyh3Y2hhcl90
ICogLCBjb25zdCBjaGFyICogLCBzaXplX3QpOwppbnQgbWJ0b3djKHdjaGFyX3QgKiAsIGNvbnN0
IGNoYXIgKiAsIHNpemVfdCk7CnZvaWQgcXNvcnQodm9pZCAqLCBzaXplX3QsIHNpemVfdCwKICAg
ICAgICAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwppbnQgcmFuZCh2
b2lkKTsKdm9pZCAqcmVhbGxvYyh2b2lkICosIHNpemVfdCk7CnZvaWQgc3JhbmQodW5zaWduZWQp
Owpkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIgKiAsIGNoYXIgKiogKTsKZmxvYXQgc3RydG9mKGNv
bnN0IGNoYXIgKiAsIGNoYXIgKiogKTsKbG9uZyBzdHJ0b2woY29uc3QgY2hhciAqICwgY2hhciAq
KiAsIGludCk7CmxvbmcgZG91YmxlCiAgICAgICAgIHN0cnRvbGQoY29uc3QgY2hhciAqICwgY2hh
ciAqKiApOwp1bnNpZ25lZCBsb25nCiAgICAgICAgIHN0cnRvdWwoY29uc3QgY2hhciAqICwgY2hh
ciAqKiAsIGludCk7CmludCBzeXN0ZW0oY29uc3QgY2hhciAqKTsKaW50IHdjdG9tYihjaGFyICos
IHdjaGFyX3QpOwpzaXplX3Qgd2NzdG9tYnMoY2hhciAqICwgY29uc3Qgd2NoYXJfdCAqICwgc2l6
ZV90KTsKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGxvbmcgbG9uZyBxdW90OwogICAgICAgIGxv
bmcgbG9uZyByZW07Cn0gbGxkaXZfdDsKCgpsb25nIGxvbmcKICAgICAgICAgYXRvbGwoY29uc3Qg
Y2hhciAqKTsKCmxvbmcgbG9uZwogICAgICAgICBsbGFicyhsb25nIGxvbmcpIF9fYXR0cmlidXRl
X18oKF9fY29uc3RfXykpOwoKbGxkaXZfdCBsbGRpdihsb25nIGxvbmcsIGxvbmcgbG9uZykgX19h
dHRyaWJ1dGVfXygoX19jb25zdF9fKSk7Cgpsb25nIGxvbmcKICAgICAgICAgc3RydG9sbChjb25z
dCBjaGFyICogLCBjaGFyICoqICwgaW50KTsKCnVuc2lnbmVkIGxvbmcgbG9uZwogICAgICAgICBz
dHJ0b3VsbChjb25zdCBjaGFyICogLCBjaGFyICoqICwgaW50KTsKCgp2b2lkIF9FeGl0KGludCkg
X19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CmludCByYW5kX3IodW5zaWduZWQgKik7Cmlu
dCBzZXRlbnYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CnZvaWQgdW5zZXRlbnYo
Y29uc3QgY2hhciAqKTsKZG91YmxlIGRyYW5kNDgodm9pZCk7Cgpkb3VibGUgZXJhbmQ0OCh1bnNp
Z25lZCBzaG9ydFszXSk7CgoKCmludCBnZXRzdWJvcHQoY2hhciAqKiwgY2hhciAqY29uc3QgKiwg
Y2hhciAqKik7CgoKaW50IGdyYW50cHQoaW50KTsKY2hhciAqaW5pdHN0YXRlKHVuc2lnbmVkIGxv
bmcgLCBjaGFyICosIGxvbmcpOwpsb25nIGpyYW5kNDgodW5zaWduZWQgc2hvcnRbM10pOwoKdm9p
ZCBsY29uZzQ4KHVuc2lnbmVkIHNob3J0WzddKTsKbG9uZyBscmFuZDQ4KHZvaWQpOwoKaW50IG1r
c3RlbXAoY2hhciAqKTsKCgoKY2hhciAqbWt0ZW1wKGNoYXIgKik7CgoKbG9uZyBtcmFuZDQ4KHZv
aWQpOwpsb25nIG5yYW5kNDgodW5zaWduZWQgc2hvcnRbM10pOwppbnQgcG9zaXhfb3BlbnB0KGlu
dCk7CmNoYXIgKnB0c25hbWUoaW50KTsKaW50IHB1dGVudihjb25zdCBjaGFyICopOwpsb25nIHJh
bmRvbSh2b2lkKTsKY2hhciAqcmVhbHBhdGgoY29uc3QgY2hhciAqLCBjaGFyIHJlc29sdmVkX3Bh
dGhbXSk7CnVuc2lnbmVkIHNob3J0CiAgICAgICAgKnNlZWQ0OCh1bnNpZ25lZCBzaG9ydFszXSk7
CgppbnQgc2V0a2V5KGNvbnN0IGNoYXIgKik7CgoKY2hhciAqc2V0c3RhdGUoIGNoYXIgKik7CnZv
aWQgc3JhbmQ0OChsb25nKTsKdm9pZCBzcmFuZG9tKHVuc2lnbmVkIGxvbmcpOwppbnQgdW5sb2Nr
cHQoaW50KTsKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKl9tYWxsb2Nfb3B0aW9uczsKZXh0ZXJuIHZv
aWQgKCpfbWFsbG9jX21lc3NhZ2UpKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBj
aGFyICosCiAgICAgICAgICAgIGNvbnN0IGNoYXIgKik7Cgp2b2lkICphbGxvY2Eoc2l6ZV90KTsK
X191aW50MzJfdAogICAgICAgICBhcmM0cmFuZG9tKHZvaWQpOwp2b2lkIGFyYzRyYW5kb21fYWRk
cmFuZG9tKHVuc2lnbmVkIGNoYXIgKmRhdCwgaW50IGRhdGxlbik7CnZvaWQgYXJjNHJhbmRvbV9z
dGlyKHZvaWQpOwpjaGFyICpnZXRic2l6ZShpbnQgKiwgbG9uZyAqKTsKCmNoYXIgKmNnZXRjYXAo
Y2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CmludCBjZ2V0Y2xvc2Uodm9pZCk7CmludCBjZ2V0
ZW50KGNoYXIgKiosIGNoYXIgKiosIGNvbnN0IGNoYXIgKik7CmludCBjZ2V0Zmlyc3QoY2hhciAq
KiwgY2hhciAqKik7CmludCBjZ2V0bWF0Y2goY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpp
bnQgY2dldG5leHQoY2hhciAqKiwgY2hhciAqKik7CmludCBjZ2V0bnVtKGNoYXIgKiwgY29uc3Qg
Y2hhciAqLCBsb25nICopOwppbnQgY2dldHNldChjb25zdCBjaGFyICopOwppbnQgY2dldHN0cihj
aGFyICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CmludCBjZ2V0dXN0cihjaGFyICosIGNvbnN0
IGNoYXIgKiwgY2hhciAqKik7CgppbnQgZGFlbW9uKGludCwgaW50KTsKY2hhciAqZGV2bmFtZShp
bnQsIGludCk7CmludCBnZXRsb2FkYXZnKGRvdWJsZSBbXSwgaW50KTsKY29uc3QgY2hhciAqCiAg
ICAgICAgIF9nZXRwcm9nbmFtZSh2b2lkKTsKCmludCBoZWFwc29ydCh2b2lkICosIHNpemVfdCwg
c2l6ZV90LCBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CmludCBtZXJnZXNv
cnQodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZv
aWQgKikpOwp2b2lkIHFzb3J0X3Iodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgdm9pZCAqLAogICAg
ICAgICAgICBpbnQgKCopKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKaW50
IHJhZGl4c29ydChjb25zdCB1bnNpZ25lZCBjaGFyICoqLCBpbnQsIGNvbnN0IHVuc2lnbmVkIGNo
YXIgKiwKICAgICAgICAgICAgdW5zaWduZWQpOwp2b2lkICpyZWFsbG9jZih2b2lkICosIHNpemVf
dCk7CnZvaWQgc2V0cHJvZ25hbWUoY29uc3QgY2hhciAqKTsKaW50IHNyYWRpeHNvcnQoY29uc3Qg
dW5zaWduZWQgY2hhciAqKiwgaW50LCBjb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAg
IHVuc2lnbmVkKTsKdm9pZCBzcmFuZGRldih2b2lkKTsKdm9pZCBzcmFuZG9tZGV2KHZvaWQpOwoK
Cl9faW50NjRfdAogICAgICAgICBzdHJ0b3EoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpf
X3VpbnQ2NF90CiAgICAgICAgIHN0cnRvdXEoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwoK
CgppbnQgYmNtcChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKdm9pZCBiY29w
eShjb25zdCB2b2lkICosIHZvaWQgKiwgc2l6ZV90KTsKdm9pZCBiemVybyh2b2lkICosIHNpemVf
dCk7CmludCBmZnMoaW50KTsKY2hhciAqaW5kZXgoY29uc3QgY2hhciAqLCBpbnQpOwpjaGFyICpy
aW5kZXgoY29uc3QgY2hhciAqLCBpbnQpOwppbnQgc3RyY2FzZWNtcChjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKik7CmludCBzdHJuY2FzZWNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg
c2l6ZV90KTsKCgoKdm9pZCAqbWVtY2NweSh2b2lkICogLCBjb25zdCB2b2lkICogLCBpbnQsIHNp
emVfdCk7Cgp2b2lkICptZW1jaHIoY29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7CmludCBtZW1j
bXAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgKm1lbWNweSh2b2lk
ICogLCBjb25zdCB2b2lkICogLCBzaXplX3QpOwp2b2lkICptZW1tb3ZlKHZvaWQgKiwgY29uc3Qg
dm9pZCAqLCBzaXplX3QpOwp2b2lkICptZW1zZXQodm9pZCAqLCBpbnQsIHNpemVfdCk7CgpjaGFy
ICpzdHBjcHkoY2hhciAqLCBjb25zdCBjaGFyICopOwpjaGFyICpzdHJjYXNlc3RyKGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqKTsKCmNoYXIgKnN0cmNhdChjaGFyICogLCBjb25zdCBjaGFyICog
KTsKY2hhciAqc3RyY2hyKGNvbnN0IGNoYXIgKiwgaW50KTsKaW50IHN0cmNtcChjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKik7CmludCBzdHJjb2xsKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
KTsKY2hhciAqc3RyY3B5KGNoYXIgKiAsIGNvbnN0IGNoYXIgKiApOwpzaXplX3Qgc3RyY3Nwbihj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgpjaGFyICpzdHJkdXAoY29uc3QgY2hhciAqKTsK
CmNoYXIgKnN0cmVycm9yKGludCk7CgppbnQgc3RyZXJyb3JfcihpbnQsIGNoYXIgKiwgc2l6ZV90
KTsKCgpzaXplX3Qgc3RybGNhdChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKc2l6ZV90
IHN0cmxjcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CgpzaXplX3Qgc3RybGVuKGNv
bnN0IGNoYXIgKik7Cgp2b2lkIHN0cm1vZGUoaW50LCBjaGFyICopOwoKY2hhciAqc3RybmNhdChj
aGFyICogLCBjb25zdCBjaGFyICogLCBzaXplX3QpOwppbnQgc3RybmNtcChjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3RybmNweShjaGFyICogLCBjb25zdCBjaGFy
ICogLCBzaXplX3QpOwoKY2hhciAqc3RybnN0cihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg
c2l6ZV90KTsKCmNoYXIgKnN0cnBicmsoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpjaGFy
ICpzdHJyY2hyKGNvbnN0IGNoYXIgKiwgaW50KTsKCmNoYXIgKnN0cnNlcChjaGFyICoqLCBjb25z
dCBjaGFyICopOwpjaGFyICpzdHJzaWduYWwoaW50KTsKCnNpemVfdCBzdHJzcG4oY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICopOwpjaGFyICpzdHJzdHIoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICopOwpjaGFyICpzdHJ0b2soY2hhciAqICwgY29uc3QgY2hhciAqICk7CgpjaGFyICpzdHJ0b2tf
cihjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CgpzaXplX3Qgc3RyeGZybShjaGFyICog
LCBjb25zdCBjaGFyICogLCBzaXplX3QpOwoKdm9pZCBzd2FiKGNvbnN0IHZvaWQgKiwgdm9pZCAq
LCBzaXplX3QpOwoKCnR5cGVkZWYgX19tYnN0YXRlX3QgbWJzdGF0ZV90Owp0eXBlZGVmIF9fd2lu
dF90IHdpbnRfdDsKc3RydWN0IF9fc0ZJTEU7CnN0cnVjdCB0bTsKCgp3aW50X3QgYnRvd2MoaW50
KTsKd2ludF90IGZnZXR3YyhzdHJ1Y3QgX19zRklMRSAqKTsKd2NoYXJfdCAqCiAgICAgICAgZmdl
dHdzKHdjaGFyX3QgKiAsIGludCwgc3RydWN0IF9fc0ZJTEUgKiApOwp3aW50X3QgZnB1dHdjKHdj
aGFyX3QsIHN0cnVjdCBfX3NGSUxFICopOwppbnQgZnB1dHdzKGNvbnN0IHdjaGFyX3QgKiAsIHN0
cnVjdCBfX3NGSUxFICogKTsKaW50IGZ3aWRlKHN0cnVjdCBfX3NGSUxFICosIGludCk7CmludCBm
d3ByaW50ZihzdHJ1Y3QgX19zRklMRSAqICwgY29uc3Qgd2NoYXJfdCAqICwgLi4uKTsKaW50IGZ3
c2NhbmYoc3RydWN0IF9fc0ZJTEUgKiAsIGNvbnN0IHdjaGFyX3QgKiAsIC4uLik7CndpbnRfdCBn
ZXR3YyhzdHJ1Y3QgX19zRklMRSAqKTsKd2ludF90IGdldHdjaGFyKHZvaWQpOwpzaXplX3QgbWJy
bGVuKGNvbnN0IGNoYXIgKiAsIHNpemVfdCwgbWJzdGF0ZV90ICogKTsKc2l6ZV90IG1icnRvd2Mo
d2NoYXJfdCAqICwgY29uc3QgY2hhciAqICwgc2l6ZV90LAogICAgICAgICAgICBtYnN0YXRlX3Qg
KiApOwppbnQgbWJzaW5pdChjb25zdCBtYnN0YXRlX3QgKik7CnNpemVfdCBtYnNydG93Y3Mod2No
YXJfdCAqICwgY29uc3QgY2hhciAqKiAsIHNpemVfdCwKICAgICAgICAgICAgbWJzdGF0ZV90ICog
KTsKd2ludF90IHB1dHdjKHdjaGFyX3QsIHN0cnVjdCBfX3NGSUxFICopOwp3aW50X3QgcHV0d2No
YXIod2NoYXJfdCk7CmludCBzd3ByaW50Zih3Y2hhcl90ICogLCBzaXplX3QgbiwgY29uc3Qgd2No
YXJfdCAqICwKICAgICAgICAgICAgLi4uKTsKaW50IHN3c2NhbmYoY29uc3Qgd2NoYXJfdCAqICwg
Y29uc3Qgd2NoYXJfdCAqICwgLi4uKTsKd2ludF90IHVuZ2V0d2Mod2ludF90LCBzdHJ1Y3QgX19z
RklMRSAqKTsKaW50IHZmd3ByaW50ZihzdHJ1Y3QgX19zRklMRSAqICwgY29uc3Qgd2NoYXJfdCAq
ICwKICAgICAgICAgICAgX192YV9saXN0KTsKaW50IHZzd3ByaW50Zih3Y2hhcl90ICogLCBzaXpl
X3QgbiwgY29uc3Qgd2NoYXJfdCAqICwKICAgICAgICAgICAgX192YV9saXN0KTsKaW50IHZ3cHJp
bnRmKGNvbnN0IHdjaGFyX3QgKiAsIF9fdmFfbGlzdCk7CnNpemVfdCB3Y3J0b21iKGNoYXIgKiAs
IHdjaGFyX3QsIG1ic3RhdGVfdCAqICk7CndjaGFyX3QgKndjc2NhdCh3Y2hhcl90ICogLCBjb25z
dCB3Y2hhcl90ICogKTsKd2NoYXJfdCAqd2NzY2hyKGNvbnN0IHdjaGFyX3QgKiwgd2NoYXJfdCk7
CmludCB3Y3NjbXAoY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwppbnQgd2NzY29s
bChjb25zdCB3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKik7CndjaGFyX3QgKndjc2NweSh3Y2hh
cl90ICogLCBjb25zdCB3Y2hhcl90ICogKTsKc2l6ZV90IHdjc2NzcG4oY29uc3Qgd2NoYXJfdCAq
LCBjb25zdCB3Y2hhcl90ICopOwpzaXplX3Qgd2NzZnRpbWUod2NoYXJfdCAqICwgc2l6ZV90LCBj
b25zdCB3Y2hhcl90ICogLAogICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdG0gKiApOwpzaXplX3Qg
d2NzbGVuKGNvbnN0IHdjaGFyX3QgKik7CndjaGFyX3QgKndjc25jYXQod2NoYXJfdCAqICwgY29u
c3Qgd2NoYXJfdCAqICwKICAgICAgICAgICAgc2l6ZV90KTsKaW50IHdjc25jbXAoY29uc3Qgd2No
YXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CndjaGFyX3QgKndjc25jcHkod2NoYXJf
dCAqICwgY29uc3Qgd2NoYXJfdCAqICwgc2l6ZV90KTsKd2NoYXJfdCAqd2NzcGJyayhjb25zdCB3
Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKik7CndjaGFyX3QgKndjc3JjaHIoY29uc3Qgd2NoYXJf
dCAqLCB3Y2hhcl90KTsKc2l6ZV90IHdjc3J0b21icyhjaGFyICogLCBjb25zdCB3Y2hhcl90ICoq
ICwgc2l6ZV90LAogICAgICAgICAgICBtYnN0YXRlX3QgKiApOwpzaXplX3Qgd2Nzc3BuKGNvbnN0
IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKd2NoYXJfdCAqd2Nzc3RyKGNvbnN0IHdjaGFy
X3QgKiAsIGNvbnN0IHdjaGFyX3QgKiApOwpzaXplX3Qgd2NzeGZybSh3Y2hhcl90ICogLCBjb25z
dCB3Y2hhcl90ICogLCBzaXplX3QpOwppbnQgd2N0b2Iod2ludF90KTsKZG91YmxlIHdjc3RvZChj
b25zdCB3Y2hhcl90ICogLCB3Y2hhcl90ICoqICk7CndjaGFyX3QgKndjc3Rvayh3Y2hhcl90ICog
LCBjb25zdCB3Y2hhcl90ICogLAogICAgICAgICAgICB3Y2hhcl90ICoqICk7Cmxvbmcgd2NzdG9s
KGNvbnN0IHdjaGFyX3QgKiAsIHdjaGFyX3QgKiogLCBpbnQpOwp1bnNpZ25lZCBsb25nCiAgICAg
ICAgIHdjc3RvdWwoY29uc3Qgd2NoYXJfdCAqICwgd2NoYXJfdCAqKiAsIGludCk7CndjaGFyX3Qg
KndtZW1jaHIoY29uc3Qgd2NoYXJfdCAqLCB3Y2hhcl90LCBzaXplX3QpOwppbnQgd21lbWNtcChj
b25zdCB3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKd2NoYXJfdCAqd21lbWNw
eSh3Y2hhcl90ICogLCBjb25zdCB3Y2hhcl90ICogLCBzaXplX3QpOwp3Y2hhcl90ICp3bWVtbW92
ZSh3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKd2NoYXJfdCAqd21lbXNldCh3
Y2hhcl90ICosIHdjaGFyX3QsIHNpemVfdCk7CmludCB3cHJpbnRmKGNvbnN0IHdjaGFyX3QgKiAs
IC4uLik7CmludCB3c2NhbmYoY29uc3Qgd2NoYXJfdCAqICwgLi4uKTsKCgppbnQgdmZ3c2NhbmYo
c3RydWN0IF9fc0ZJTEUgKiAsIGNvbnN0IHdjaGFyX3QgKiAsCiAgICAgICAgICAgIF9fdmFfbGlz
dCk7CmludCB2c3dzY2FuZihjb25zdCB3Y2hhcl90ICogLCBjb25zdCB3Y2hhcl90ICogLAogICAg
ICAgICAgICBfX3ZhX2xpc3QpOwppbnQgdndzY2FuZihjb25zdCB3Y2hhcl90ICogLCBfX3ZhX2xp
c3QpOwpmbG9hdCB3Y3N0b2YoY29uc3Qgd2NoYXJfdCAqICwgd2NoYXJfdCAqKiApOwpsb25nIGRv
dWJsZQogICAgICAgIHdjc3RvbGQoY29uc3Qgd2NoYXJfdCAqICwgd2NoYXJfdCAqKiApOwoKCmxv
bmcgbG9uZwogICAgICAgIHdjc3RvbGwoY29uc3Qgd2NoYXJfdCAqICwgd2NoYXJfdCAqKiAsIGlu
dCk7Cgp1bnNpZ25lZCBsb25nIGxvbmcKICAgICAgICAgd2NzdG91bGwoY29uc3Qgd2NoYXJfdCAq
ICwgd2NoYXJfdCAqKiAsIGludCk7CgoKCgppbnQgd2Nzd2lkdGgoY29uc3Qgd2NoYXJfdCAqLCBz
aXplX3QpOwppbnQgd2N3aWR0aCh3Y2hhcl90KTsKCgoKc2l6ZV90IHdjc2xjYXQod2NoYXJfdCAq
LCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CnNpemVfdCB3Y3NsY3B5KHdjaGFyX3QgKiwgY29u
c3Qgd2NoYXJfdCAqLCBzaXplX3QpOwoKCgoKZXh0ZXJuIGludCBfX2lzdGhyZWFkZWQ7CnR5cGVk
ZWYgZW51bSB7CiAgICAgICAgUEpUX0NPTkRfQlJPQURDQVNULAogICAgICAgIFBKVF9DT05EX0RF
U1RST1ksCiAgICAgICAgUEpUX0NPTkRfSU5JVCwKICAgICAgICBQSlRfQ09ORF9TSUdOQUwsCiAg
ICAgICAgUEpUX0NPTkRfV0FJVCwKICAgICAgICBQSlRfR0VUU1BFQ0lGSUMsCiAgICAgICAgUEpU
X0tFWV9DUkVBVEUsCiAgICAgICAgUEpUX0tFWV9ERUxFVEUsCiAgICAgICAgUEpUX01BSU5fTlAs
CiAgICAgICAgUEpUX01VVEVYX0RFU1RST1ksCiAgICAgICAgUEpUX01VVEVYX0lOSVQsCiAgICAg
ICAgUEpUX01VVEVYX0xPQ0ssCiAgICAgICAgUEpUX01VVEVYX1RSWUxPQ0ssCiAgICAgICAgUEpU
X01VVEVYX1VOTE9DSywKICAgICAgICBQSlRfTVVURVhBVFRSX0RFU1RST1ksCiAgICAgICAgUEpU
X01VVEVYQVRUUl9JTklULAogICAgICAgIFBKVF9NVVRFWEFUVFJfU0VUVFlQRSwKICAgICAgICBQ
SlRfT05DRSwKICAgICAgICBQSlRfUldMT0NLX0RFU1RST1ksCiAgICAgICAgUEpUX1JXTE9DS19J
TklULAogICAgICAgIFBKVF9SV0xPQ0tfUkRMT0NLLAogICAgICAgIFBKVF9SV0xPQ0tfVFJZUkRM
T0NLLAogICAgICAgIFBKVF9SV0xPQ0tfVFJZV1JMT0NLLAogICAgICAgIFBKVF9SV0xPQ0tfVU5M
T0NLLAogICAgICAgIFBKVF9SV0xPQ0tfV1JMT0NLLAogICAgICAgIFBKVF9TRUxGLAogICAgICAg
IFBKVF9TRVRTUEVDSUZJQywKICAgICAgICBQSlRfU0lHTUFTSywKICAgICAgICBQSlRfTUFYCn0g
cGp0X2luZGV4X3Q7Cgp0eXBlZGVmIGludCAoKnB0aHJlYWRfZnVuY190KSh2b2lkKTsKdHlwZWRl
ZiBwdGhyZWFkX2Z1bmNfdCBwdGhyZWFkX2Z1bmNfZW50cnlfdFsyXTsKCmV4dGVybiBwdGhyZWFk
X2Z1bmNfZW50cnlfdCBfX3Rocl9qdGFibGVbXTsKCgoKCgppbnQgX3lwX2NoZWNrKGNoYXIgKiop
OwoKCgoKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKl9fcHJvZ25hbWU7CnN0cnVjdCB0aW1lem9uZSB7
CiAgICAgICAgaW50IHR6X21pbnV0ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9Owpz
dHJ1Y3QgYmludGltZSB7CiAgICAgICAgdGltZV90IHNlYzsKICAgICAgICB1aW50NjRfdCBmcmFj
Owp9OwoKc3RhdGljIF9faW5saW5lIHZvaWQKYmludGltZV9hZGR4KHN0cnVjdCBiaW50aW1lICpi
dCwgdWludDY0X3QgeCkKewogICAgICAgIHVpbnQ2NF90IHU7CgogICAgICAgIHUgPSBidC0+ZnJh
YzsKICAgICAgICBidC0+ZnJhYyArPSB4OwogICAgICAgIGlmICh1ID4gYnQtPmZyYWMpCiAgICAg
ICAgICAgICAgICBidC0+c2VjKys7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkCmJpbnRpbWVfYWRk
KHN0cnVjdCBiaW50aW1lICpidCwgc3RydWN0IGJpbnRpbWUgKmJ0MikKewogICAgICAgIHVpbnQ2
NF90IHU7CgogICAgICAgIHUgPSBidC0+ZnJhYzsKICAgICAgICBidC0+ZnJhYyArPSBidDItPmZy
YWM7CiAgICAgICAgaWYgKHUgPiBidC0+ZnJhYykKICAgICAgICAgICAgICAgIGJ0LT5zZWMrKzsK
ICAgICAgICBidC0+c2VjICs9IGJ0Mi0+c2VjOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZApiaW50
aW1lX3N1YihzdHJ1Y3QgYmludGltZSAqYnQsIHN0cnVjdCBiaW50aW1lICpidDIpCnsKICAgICAg
ICB1aW50NjRfdCB1OwoKICAgICAgICB1ID0gYnQtPmZyYWM7CiAgICAgICAgYnQtPmZyYWMgLT0g
YnQyLT5mcmFjOwogICAgICAgIGlmICh1IDwgYnQtPmZyYWMpCiAgICAgICAgICAgICAgICBidC0+
c2VjLS07CiAgICAgICAgYnQtPnNlYyAtPSBidDItPnNlYzsKfQpzdGF0aWMgX19pbmxpbmUgdm9p
ZApiaW50aW1lMnRpbWVzcGVjKHN0cnVjdCBiaW50aW1lICpidCwgc3RydWN0IHRpbWVzcGVjICp0
cykKewoKICAgICAgICB0cy0+dHZfc2VjID0gYnQtPnNlYzsKICAgICAgICB0cy0+dHZfbnNlYyA9
ICgodWludDY0X3QpMTAwMDAwMDAwMCAqICh1aW50MzJfdCkoYnQtPmZyYWMgPj4gMzIpKSA+PiAz
MjsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQKdGltZXNwZWMyYmludGltZShzdHJ1Y3QgdGltZXNw
ZWMgKnRzLCBzdHJ1Y3QgYmludGltZSAqYnQpCnsKCiAgICAgICAgYnQtPnNlYyA9IHRzLT50dl9z
ZWM7CgogICAgICAgIGJ0LT5mcmFjID0gdHMtPnR2X25zZWMgKiAodWludDY0X3QpMTg0NDY3NDQw
NzNMTDsKfQoKc3RhdGljIF9faW5saW5lIHZvaWQKYmludGltZTJ0aW1ldmFsKHN0cnVjdCBiaW50
aW1lICpidCwgc3RydWN0IHRpbWV2YWwgKnR2KQp7CgogICAgICAgIHR2LT50dl9zZWMgPSBidC0+
c2VjOwogICAgICAgIHR2LT50dl91c2VjID0gKCh1aW50NjRfdCkxMDAwMDAwICogKHVpbnQzMl90
KShidC0+ZnJhYyA+PiAzMikpID4+IDMyOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZAp0aW1ldmFs
MmJpbnRpbWUoc3RydWN0IHRpbWV2YWwgKnR2LCBzdHJ1Y3QgYmludGltZSAqYnQpCnsKCiAgICAg
ICAgYnQtPnNlYyA9IHR2LT50dl9zZWM7CgogICAgICAgIGJ0LT5mcmFjID0gdHYtPnR2X3VzZWMg
KiAodWludDY0X3QpMTg0NDY3NDQwNzM3MDlMTDsKfQpzdHJ1Y3QgaXRpbWVydmFsIHsKICAgICAg
ICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92
YWx1ZTsKfTsKCgoKCnN0cnVjdCBjbG9ja2luZm8gewogICAgICAgIGludCBoejsKICAgICAgICBp
bnQgdGljazsKICAgICAgICBpbnQgc3BhcmU7CiAgICAgICAgaW50IHN0YXRoejsKICAgICAgICBp
bnQgcHJvZmh6Owp9OwpzdHJ1Y3QgdG0gewogICAgICAgIGludCB0bV9zZWM7CiAgICAgICAgaW50
IHRtX21pbjsKICAgICAgICBpbnQgdG1faG91cjsKICAgICAgICBpbnQgdG1fbWRheTsKICAgICAg
ICBpbnQgdG1fbW9uOwogICAgICAgIGludCB0bV95ZWFyOwogICAgICAgIGludCB0bV93ZGF5Owog
ICAgICAgIGludCB0bV95ZGF5OwogICAgICAgIGludCB0bV9pc2RzdDsKICAgICAgICBsb25nIHRt
X2dtdG9mZjsKICAgICAgICBjaGFyICp0bV96b25lOwp9OwoKCmV4dGVybiBjaGFyICp0em5hbWVb
XTsKCgoKY2hhciAqYXNjdGltZShjb25zdCBzdHJ1Y3QgdG0gKik7CmNsb2NrX3QgY2xvY2sodm9p
ZCk7CmNoYXIgKmN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKZG91YmxlIGRpZmZ0aW1lKHRpbWVfdCwg
dGltZV90KTsKc3RydWN0IHRtICpnbXRpbWUoY29uc3QgdGltZV90ICopOwpzdHJ1Y3QgdG0gKmxv
Y2FsdGltZShjb25zdCB0aW1lX3QgKik7CnRpbWVfdCBta3RpbWUoc3RydWN0IHRtICopOwpzaXpl
X3Qgc3RyZnRpbWUoY2hhciAqICwgc2l6ZV90LCBjb25zdCBjaGFyICogLAogICAgY29uc3Qgc3Ry
dWN0IHRtICogKTsKdGltZV90IHRpbWUodGltZV90ICopOwoKCnZvaWQgdHpzZXQodm9pZCk7CgoK
CmludCBjbG9ja19nZXRyZXMoY2xvY2tpZF90LCBzdHJ1Y3QgdGltZXNwZWMgKik7CmludCBjbG9j
a19nZXR0aW1lKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOwppbnQgY2xvY2tfc2V0dGlt
ZShjbG9ja2lkX3QsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqKTsKaW50IG5hbm9zbGVlcChjb25z
dCBzdHJ1Y3QgdGltZXNwZWMgKiwgc3RydWN0IHRpbWVzcGVjICopOwoKCgpjaGFyICphc2N0aW1l
X3IoY29uc3Qgc3RydWN0IHRtICosIGNoYXIgKik7CmNoYXIgKmN0aW1lX3IoY29uc3QgdGltZV90
ICosIGNoYXIgKik7CnN0cnVjdCB0bSAqZ210aW1lX3IoY29uc3QgdGltZV90ICosIHN0cnVjdCB0
bSAqKTsKc3RydWN0IHRtICpsb2NhbHRpbWVfcihjb25zdCB0aW1lX3QgKiwgc3RydWN0IHRtICop
OwoKCgpjaGFyICpzdHJwdGltZShjb25zdCBjaGFyICogLCBjb25zdCBjaGFyICogLAogICAgc3Ry
dWN0IHRtICogKTsKCgoKY2hhciAqdGltZXpvbmUoaW50LCBpbnQpOwp2b2lkIHR6c2V0d2FsbCh2
b2lkKTsKdGltZV90IHRpbWVsb2NhbChzdHJ1Y3QgdG0gKiBjb25zdCk7CnRpbWVfdCB0aW1lZ20o
c3RydWN0IHRtICogY29uc3QpOwoKCgoKCgppbnQgYWRqdGltZShjb25zdCBzdHJ1Y3QgdGltZXZh
bCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKaW50IGZ1dGltZXMoaW50LCBjb25zdCBzdHJ1Y3QgdGlt
ZXZhbCAqKTsKaW50IGdldGl0aW1lcihpbnQsIHN0cnVjdCBpdGltZXJ2YWwgKik7CmludCBnZXR0
aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV6b25lICopOwppbnQgbHV0aW1l
cyhjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwppbnQgc2V0aXRpbWVyKGlu
dCwgY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgc2V0
dGltZW9mZGF5KGNvbnN0IHN0cnVjdCB0aW1ldmFsICosIGNvbnN0IHN0cnVjdCB0aW1lem9uZSAq
KTsKaW50IHV0aW1lcyhjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwoKdHlw
ZWRlZiBsb25nIHNpZ19hdG9taWNfdDsKc3RydWN0IHNpZ2NvbnRleHQgewogICAgICAgIHN0cnVj
dCBfX3NpZ3NldCBzY19tYXNrOwogICAgICAgIGxvbmcgc2Nfb25zdGFjazsKICAgICAgICBsb25n
IHNjX3IxNTsKICAgICAgICBsb25nIHNjX3IxNDsKICAgICAgICBsb25nIHNjX3IxMzsKICAgICAg
ICBsb25nIHNjX3IxMjsKICAgICAgICBsb25nIHNjX3IxMTsKICAgICAgICBsb25nIHNjX3IxMDsK
ICAgICAgICBsb25nIHNjX3I5OwogICAgICAgIGxvbmcgc2Nfcjg7CiAgICAgICAgbG9uZyBzY19y
ZGk7CiAgICAgICAgbG9uZyBzY19yc2k7CiAgICAgICAgbG9uZyBzY19yYnA7CiAgICAgICAgbG9u
ZyBzY19yYng7CiAgICAgICAgbG9uZyBzY19yZHg7CiAgICAgICAgbG9uZyBzY19yY3g7CiAgICAg
ICAgbG9uZyBzY19yYXg7CiAgICAgICAgbG9uZyBzY190cmFwbm87CiAgICAgICAgbG9uZyBzY19l
cnI7CiAgICAgICAgbG9uZyBzY19yaXA7CiAgICAgICAgbG9uZyBzY19jczsKICAgICAgICBsb25n
IHNjX3JmbGFnczsKICAgICAgICBsb25nIHNjX3JzcDsKICAgICAgICBsb25nIHNjX3NzOwogICAg
ICAgIGxvbmcgc2NfbGVuOwoKCgoKICAgICAgICBsb25nIHNjX2ZwZm9ybWF0OwogICAgICAgIGxv
bmcgc2Nfb3duZWRmcDsKICAgICAgICBsb25nIHNjX3NwYXJlMVsxXTsKICAgICAgICBsb25nIHNj
X2Zwc3RhdGVbMTI4XSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxNikpKTsKICAgICAgICBs
b25nIHNjX3NwYXJlMls4XTsKfTsKdHlwZWRlZiB2b2lkIF9fc2lnaGFuZGxlcl90KGludCk7CnVu
aW9uIHNpZ3ZhbCB7CgogICAgICAgIGludCBzaWd2YWxfaW50OwogICAgICAgIHZvaWQgKnNpZ3Zh
bF9wdHI7Cn07CgoKCnN0cnVjdCBzaWdldmVudCB7CiAgICAgICAgaW50IHNpZ2V2X25vdGlmeTsK
ICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgX19zaWdldl9zaWdubzsKICAgICAg
ICAgICAgICAgIGludCBfX3NpZ2V2X25vdGlmeV9rcXVldWU7CiAgICAgICAgfSBfX3NpZ2V2X3U7
CiAgICAgICAgdW5pb24gc2lndmFsIHNpZ2V2X3ZhbHVlOwoKCgp9Owp0eXBlZGVmIHN0cnVjdCBf
X3NpZ2luZm8gewogICAgICAgIGludCBzaV9zaWdubzsKICAgICAgICBpbnQgc2lfZXJybm87CgoK
CgoKCiAgICAgICAgaW50IHNpX2NvZGU7CiAgICAgICAgX19waWRfdCBzaV9waWQ7CiAgICAgICAg
X191aWRfdCBzaV91aWQ7CiAgICAgICAgaW50IHNpX3N0YXR1czsKICAgICAgICB2b2lkICpzaV9h
ZGRyOwogICAgICAgIHVuaW9uIHNpZ3ZhbCBzaV92YWx1ZTsKICAgICAgICBsb25nIHNpX2JhbmQ7
CiAgICAgICAgaW50IF9fc3BhcmVfX1s3XTsKfSBzaWdpbmZvX3Q7CgoKCnN0cnVjdCBfX3NpZ2lu
Zm87CgoKCgpzdHJ1Y3Qgc2lnYWN0aW9uIHsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAg
ICB2b2lkICgqX19zYV9oYW5kbGVyKShpbnQpOwogICAgICAgICAgICAgICAgdm9pZCAoKl9fc2Ff
c2lnYWN0aW9uKShpbnQsIHN0cnVjdCBfX3NpZ2luZm8gKiwgdm9pZCAqKTsKICAgICAgICB9IF9f
c2lnYWN0aW9uX3U7CiAgICAgICAgaW50IHNhX2ZsYWdzOwogICAgICAgIHNpZ3NldF90IHNhX21h
c2s7Cn07CnR5cGVkZWYgX19zaWdoYW5kbGVyX3QgKnNpZ190Owp0eXBlZGVmIHZvaWQgX19zaWdp
bmZvaGFuZGxlcl90KGludCwgc3RydWN0IF9fc2lnaW5mbyAqLCB2b2lkICopOwoKCgoKCgoKdHlw
ZWRlZiBzdHJ1Y3Qgc2lnYWx0c3RhY2sgewoKCgogICAgICAgIGNoYXIgKnNzX3NwOwogICAgICAg
IF9fc2l6ZV90IHNzX3NpemU7CiAgICAgICAgaW50IHNzX2ZsYWdzOwp9IHN0YWNrX3Q7CnN0cnVj
dCBzaWd2ZWMgewogICAgICAgIF9fc2lnaGFuZGxlcl90ICpzdl9oYW5kbGVyOwogICAgICAgIGlu
dCBzdl9tYXNrOwogICAgICAgIGludCBzdl9mbGFnczsKfTsKc3RydWN0IHNpZ3N0YWNrIHsKCiAg
ICAgICAgY2hhciAqc3Nfc3A7CiAgICAgICAgaW50IHNzX29uc3RhY2s7Cn07CgpfX3NpZ2hhbmRs
ZXJfdCAqc2lnbmFsKGludCwgX19zaWdoYW5kbGVyX3QgKik7CgoKc3RydWN0IHNjaGVkX3BhcmFt
IHsKICAgICAgICBpbnQgc2NoZWRfcHJpb3JpdHk7Cn07CgoKCgpzdHJ1Y3QgdGltZXNwZWM7CgoK
aW50IHNjaGVkX2dldF9wcmlvcml0eV9tYXgoaW50KTsKaW50IHNjaGVkX2dldF9wcmlvcml0eV9t
aW4oaW50KTsKaW50IHNjaGVkX2dldHBhcmFtKHBpZF90LCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKik7
CmludCBzY2hlZF9nZXRzY2hlZHVsZXIocGlkX3QpOwppbnQgc2NoZWRfcnJfZ2V0X2ludGVydmFs
KHBpZF90LCBzdHJ1Y3QgdGltZXNwZWMgKik7CmludCBzY2hlZF9zZXRwYXJhbShwaWRfdCwgY29u
c3Qgc3RydWN0IHNjaGVkX3BhcmFtICopOwppbnQgc2NoZWRfc2V0c2NoZWR1bGVyKHBpZF90LCBp
bnQsIGNvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsKaW50IHNjaGVkX3lpZWxkKHZvaWQpOwoK
c3RydWN0IHB0aHJlYWQ7CnN0cnVjdCBwdGhyZWFkX2F0dHI7CnN0cnVjdCBwdGhyZWFkX2NvbmQ7
CnN0cnVjdCBwdGhyZWFkX2NvbmRfYXR0cjsKc3RydWN0IHB0aHJlYWRfbXV0ZXg7CnN0cnVjdCBw
dGhyZWFkX211dGV4X2F0dHI7CnN0cnVjdCBwdGhyZWFkX29uY2U7CnN0cnVjdCBwdGhyZWFkX3J3
bG9jazsKc3RydWN0IHB0aHJlYWRfcndsb2NrYXR0cjsKdHlwZWRlZiBzdHJ1Y3QgcHRocmVhZCAq
cHRocmVhZF90Owp0eXBlZGVmIHN0cnVjdCBwdGhyZWFkX2F0dHIgKnB0aHJlYWRfYXR0cl90Owp0
eXBlZGVmIHN0cnVjdCBwdGhyZWFkX211dGV4ICpwdGhyZWFkX211dGV4X3Q7CnR5cGVkZWYgc3Ry
dWN0IHB0aHJlYWRfbXV0ZXhfYXR0ciAqcHRocmVhZF9tdXRleGF0dHJfdDsKdHlwZWRlZiBzdHJ1
Y3QgcHRocmVhZF9jb25kICpwdGhyZWFkX2NvbmRfdDsKdHlwZWRlZiBzdHJ1Y3QgcHRocmVhZF9j
b25kX2F0dHIgKnB0aHJlYWRfY29uZGF0dHJfdDsKdHlwZWRlZiBpbnQgcHRocmVhZF9rZXlfdDsK
dHlwZWRlZiBzdHJ1Y3QgcHRocmVhZF9vbmNlIHB0aHJlYWRfb25jZV90Owp0eXBlZGVmIHN0cnVj
dCBwdGhyZWFkX3J3bG9jayAqcHRocmVhZF9yd2xvY2tfdDsKdHlwZWRlZiBzdHJ1Y3QgcHRocmVh
ZF9yd2xvY2thdHRyICpwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCgoKCnR5cGVkZWYgdm9pZCAq
cHRocmVhZF9hZGRyX3Q7CnR5cGVkZWYgdm9pZCAqKCpwdGhyZWFkX3N0YXJ0cm91dGluZV90KSh2
b2lkICopOwoKCgoKc3RydWN0IHB0aHJlYWRfb25jZSB7CiAgICAgICAgaW50IHN0YXRlOwogICAg
ICAgIHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKfTsKZW51bSBwdGhyZWFkX211dGV4dHlwZSB7CiAg
ICAgICAgUFRIUkVBRF9NVVRFWF9FUlJPUkNIRUNLID0gMSwKICAgICAgICBQVEhSRUFEX01VVEVY
X1JFQ1VSU0lWRSA9IDIsCiAgICAgICAgUFRIUkVBRF9NVVRFWF9OT1JNQUwgPSAzLAogICAgICAg
IE1VVEVYX1RZUEVfTUFYCn07CgppbnQgcHRocmVhZF9hdHRyX2Rlc3Ryb3kocHRocmVhZF9hdHRy
X3QgKik7CmludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2soY29uc3QgcHRocmVhZF9hdHRyX3QgKiAs
CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiogc3RhY2thZGRyLAogICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgKiBzdGFja3NpemUpOwppbnQgcHRocmVhZF9hdHRyX2dldHN0YWNr
c2l6ZShjb25zdCBwdGhyZWFkX2F0dHJfdCAqLCBzaXplX3QgKik7CmludCBwdGhyZWFkX2F0dHJf
Z2V0Z3VhcmRzaXplKGNvbnN0IHB0aHJlYWRfYXR0cl90ICosIHNpemVfdCAqKTsKaW50IHB0aHJl
YWRfYXR0cl9nZXRzdGFja2FkZHIoY29uc3QgcHRocmVhZF9hdHRyX3QgKiwgdm9pZCAqKik7Cmlu
dCBwdGhyZWFkX2F0dHJfZ2V0ZGV0YWNoc3RhdGUoY29uc3QgcHRocmVhZF9hdHRyX3QgKiwgaW50
ICopOwppbnQgcHRocmVhZF9hdHRyX2luaXQocHRocmVhZF9hdHRyX3QgKik7CmludCBwdGhyZWFk
X2F0dHJfc2V0c3RhY2tzaXplKHB0aHJlYWRfYXR0cl90ICosIHNpemVfdCk7CmludCBwdGhyZWFk
X2F0dHJfc2V0Z3VhcmRzaXplKHB0aHJlYWRfYXR0cl90ICosIHNpemVfdCk7CmludCBwdGhyZWFk
X2F0dHJfc2V0c3RhY2socHRocmVhZF9hdHRyX3QgKiwgdm9pZCAqLCBzaXplX3QpOwppbnQgcHRo
cmVhZF9hdHRyX3NldHN0YWNrYWRkcihwdGhyZWFkX2F0dHJfdCAqLCB2b2lkICopOwppbnQgcHRo
cmVhZF9hdHRyX3NldGRldGFjaHN0YXRlKHB0aHJlYWRfYXR0cl90ICosIGludCk7CnZvaWQgcHRo
cmVhZF9jbGVhbnVwX3BvcChpbnQpOwp2b2lkIHB0aHJlYWRfY2xlYW51cF9wdXNoKHZvaWQgKCop
ICh2b2lkICopLCB2b2lkICpyb3V0aW5lX2FyZyk7CmludCBwdGhyZWFkX2NvbmRhdHRyX2Rlc3Ry
b3kocHRocmVhZF9jb25kYXR0cl90ICopOwppbnQgcHRocmVhZF9jb25kYXR0cl9pbml0KHB0aHJl
YWRfY29uZGF0dHJfdCAqKTsKCmludCBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KHB0aHJlYWRfY29u
ZF90ICopOwppbnQgcHRocmVhZF9jb25kX2Rlc3Ryb3kocHRocmVhZF9jb25kX3QgKik7CmludCBw
dGhyZWFkX2NvbmRfaW5pdChwdGhyZWFkX2NvbmRfdCAqLAogICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBwdGhyZWFkX2NvbmRhdHRyX3QgKik7CmludCBwdGhyZWFkX2NvbmRfc2lnbmFsKHB0
aHJlYWRfY29uZF90ICopOwppbnQgcHRocmVhZF9jb25kX3RpbWVkd2FpdChwdGhyZWFkX2NvbmRf
dCAqLAogICAgICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X3QgKiwgY29uc3Qgc3Ry
dWN0IHRpbWVzcGVjICopOwppbnQgcHRocmVhZF9jb25kX3dhaXQocHRocmVhZF9jb25kX3QgKiwg
cHRocmVhZF9tdXRleF90ICopOwppbnQgcHRocmVhZF9jcmVhdGUocHRocmVhZF90ICosIGNvbnN0
IHB0aHJlYWRfYXR0cl90ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKigqKSAodm9p
ZCAqKSwgdm9pZCAqKTsKaW50IHB0aHJlYWRfZGV0YWNoKHB0aHJlYWRfdCk7CmludCBwdGhyZWFk
X2VxdWFsKHB0aHJlYWRfdCwgcHRocmVhZF90KTsKdm9pZCBwdGhyZWFkX2V4aXQodm9pZCAqKSBf
X2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKdm9pZCAqcHRocmVhZF9nZXRzcGVjaWZpYyhw
dGhyZWFkX2tleV90KTsKaW50IHB0aHJlYWRfam9pbihwdGhyZWFkX3QsIHZvaWQgKiopOwppbnQg
cHRocmVhZF9rZXlfY3JlYXRlKHB0aHJlYWRfa2V5X3QgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAoKikgKHZvaWQgKikpOwppbnQgcHRocmVhZF9rZXlfZGVsZXRlKHB0aHJlYWRfa2V5
X3QpOwppbnQgcHRocmVhZF9raWxsKHB0aHJlYWRfdCwgaW50KTsKaW50IHB0aHJlYWRfbXV0ZXhh
dHRyX2luaXQocHRocmVhZF9tdXRleGF0dHJfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2Rl
c3Ryb3kocHRocmVhZF9tdXRleGF0dHJfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHR5
cGUocHRocmVhZF9tdXRleGF0dHJfdCAqLCBpbnQgKik7CmludCBwdGhyZWFkX211dGV4YXR0cl9z
ZXR0eXBlKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKiwgaW50KTsKaW50IHB0aHJlYWRfbXV0ZXhfZGVz
dHJveShwdGhyZWFkX211dGV4X3QgKik7CmludCBwdGhyZWFkX211dGV4X2luaXQocHRocmVhZF9t
dXRleF90ICosCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRy
X3QgKik7CmludCBwdGhyZWFkX211dGV4X2xvY2socHRocmVhZF9tdXRleF90ICopOwppbnQgcHRo
cmVhZF9tdXRleF90cnlsb2NrKHB0aHJlYWRfbXV0ZXhfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhf
dW5sb2NrKHB0aHJlYWRfbXV0ZXhfdCAqKTsKaW50IHB0aHJlYWRfb25jZShwdGhyZWFkX29uY2Vf
dCAqLCB2b2lkICgqKSAodm9pZCkpOwppbnQgcHRocmVhZF9yd2xvY2tfZGVzdHJveShwdGhyZWFk
X3J3bG9ja190ICopOwppbnQgcHRocmVhZF9yd2xvY2tfaW5pdChwdGhyZWFkX3J3bG9ja190ICos
CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHB0aHJlYWRfcndsb2NrYXR0cl90ICopOwpp
bnQgcHRocmVhZF9yd2xvY2tfcmRsb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmludCBwdGhyZWFk
X3J3bG9ja190cnlyZGxvY2socHRocmVhZF9yd2xvY2tfdCAqKTsKaW50IHB0aHJlYWRfcndsb2Nr
X3RyeXdybG9jayhwdGhyZWFkX3J3bG9ja190ICopOwppbnQgcHRocmVhZF9yd2xvY2tfdW5sb2Nr
KHB0aHJlYWRfcndsb2NrX3QgKik7CmludCBwdGhyZWFkX3J3bG9ja193cmxvY2socHRocmVhZF9y
d2xvY2tfdCAqKTsKaW50IHB0aHJlYWRfcndsb2NrYXR0cl9pbml0KHB0aHJlYWRfcndsb2NrYXR0
cl90ICopOwppbnQgcHRocmVhZF9yd2xvY2thdHRyX2dldHBzaGFyZWQoY29uc3QgcHRocmVhZF9y
d2xvY2thdHRyX3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgaW50ICopOwppbnQgcHRocmVh
ZF9yd2xvY2thdHRyX3NldHBzaGFyZWQocHRocmVhZF9yd2xvY2thdHRyX3QgKiwgaW50KTsKaW50
IHB0aHJlYWRfcndsb2NrYXR0cl9kZXN0cm95KHB0aHJlYWRfcndsb2NrYXR0cl90ICopOwpwdGhy
ZWFkX3QgcHRocmVhZF9zZWxmKHZvaWQpOwppbnQgcHRocmVhZF9zZXRzcGVjaWZpYyhwdGhyZWFk
X2tleV90LCBjb25zdCB2b2lkICopOwppbnQgcHRocmVhZF9zaWdtYXNrKGludCwgY29uc3Qgc2ln
c2V0X3QgKiwgc2lnc2V0X3QgKik7CgppbnQgcHRocmVhZF9jYW5jZWwocHRocmVhZF90KTsKaW50
IHB0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUoaW50LCBpbnQgKik7CmludCBwdGhyZWFkX3NldGNhbmNl
bHR5cGUoaW50LCBpbnQgKik7CnZvaWQgcHRocmVhZF90ZXN0Y2FuY2VsKHZvaWQpOwoKaW50IHB0
aHJlYWRfZ2V0cHJpbyhwdGhyZWFkX3QpOwppbnQgcHRocmVhZF9zZXRwcmlvKHB0aHJlYWRfdCwg
aW50KTsKdm9pZCBwdGhyZWFkX3lpZWxkKHZvaWQpOwoKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dl
dHByaW9jZWlsaW5nKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ICopOwppbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0cHJpb2NlaWxpbmcocHRocmVhZF9t
dXRleGF0dHJfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQpOwppbnQgcHRocmVhZF9t
dXRleF9nZXRwcmlvY2VpbGluZyhwdGhyZWFkX211dGV4X3QgKiwgaW50ICopOwppbnQgcHRocmVh
ZF9tdXRleF9zZXRwcmlvY2VpbGluZyhwdGhyZWFkX211dGV4X3QgKiwgaW50LCBpbnQgKik7Cgpp
bnQgcHRocmVhZF9tdXRleGF0dHJfZ2V0cHJvdG9jb2wocHRocmVhZF9tdXRleGF0dHJfdCAqLCBp
bnQgKik7CmludCBwdGhyZWFkX211dGV4YXR0cl9zZXRwcm90b2NvbChwdGhyZWFkX211dGV4YXR0
cl90ICosIGludCk7CgppbnQgcHRocmVhZF9hdHRyX2dldGluaGVyaXRzY2hlZChjb25zdCBwdGhy
ZWFkX2F0dHJfdCAqLCBpbnQgKik7CmludCBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRwYXJhbShjb25z
dCBwdGhyZWFkX2F0dHJfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRf
cGFyYW0gKik7CmludCBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRwb2xpY3koY29uc3QgcHRocmVhZF9h
dHRyX3QgKiwgaW50ICopOwppbnQgcHRocmVhZF9hdHRyX2dldHNjb3BlKGNvbnN0IHB0aHJlYWRf
YXR0cl90ICosIGludCAqKTsKaW50IHB0aHJlYWRfYXR0cl9zZXRpbmhlcml0c2NoZWQocHRocmVh
ZF9hdHRyX3QgKiwgaW50KTsKaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBhcmFtKHB0aHJlYWRf
YXR0cl90ICosCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzY2hlZF9wYXJh
bSAqKTsKaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBvbGljeShwdGhyZWFkX2F0dHJfdCAqLCBp
bnQpOwppbnQgcHRocmVhZF9hdHRyX3NldHNjb3BlKHB0aHJlYWRfYXR0cl90ICosIGludCk7Cmlu
dCBwdGhyZWFkX2dldHNjaGVkcGFyYW0ocHRocmVhZF90IHB0aHJlYWQsIGludCAqLAogICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKik7CmludCBwdGhyZWFkX3NldHNj
aGVkcGFyYW0ocHRocmVhZF90LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
cnVjdCBzY2hlZF9wYXJhbSAqKTsKaW50IHB0aHJlYWRfZ2V0Y29uY3VycmVuY3kodm9pZCk7Cmlu
dCBwdGhyZWFkX3NldGNvbmN1cnJlbmN5KGludCk7CgpleHRlcm4gaW50IF9zcmVhZChGSUxFICos
IGNoYXIgKiwgaW50KTsKZXh0ZXJuIGludCBfc3dyaXRlKEZJTEUgKiwgY2hhciBjb25zdCAqLCBp
bnQpOwpleHRlcm4gZnBvc190IF9zc2VlayhGSUxFICosIGZwb3NfdCwgaW50KTsKZXh0ZXJuIGlu
dCBfZnRlbGxvKEZJTEUgKiwgZnBvc190ICopOwpleHRlcm4gaW50IF9mc2Vla28oRklMRSAqLCBv
ZmZfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IF9fZmZsdXNoKEZJTEUgKmZwKTsKZXh0ZXJuIHdp
bnRfdCBfX2ZnZXR3YyhGSUxFICopOwpleHRlcm4gd2ludF90IF9fZnB1dHdjKHdjaGFyX3QsIEZJ
TEUgKik7CmV4dGVybiBpbnQgX19zZmx1c2goRklMRSAqKTsKZXh0ZXJuIEZJTEUgKl9fc2ZwKHZv
aWQpOwpleHRlcm4gaW50IF9fc3JlZmlsbChGSUxFICopOwpleHRlcm4gaW50IF9fc3JlYWQodm9p
ZCAqLCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgX19zd3JpdGUodm9pZCAqLCBjaGFyIGNvbnN0
ICosIGludCk7CmV4dGVybiBmcG9zX3QgX19zc2Vlayh2b2lkICosIGZwb3NfdCwgaW50KTsKZXh0
ZXJuIGludCBfX3NjbG9zZSh2b2lkICopOwpleHRlcm4gdm9pZCBfX3Npbml0KHZvaWQpOwpleHRl
cm4gdm9pZCBfY2xlYW51cCh2b2lkKTsKZXh0ZXJuIHZvaWQgKCpfX2NsZWFudXApKHZvaWQpOwpl
eHRlcm4gdm9pZCBfX3NtYWtlYnVmKEZJTEUgKik7CmV4dGVybiBpbnQgX19zd2hhdGJ1ZihGSUxF
ICosIHNpemVfdCAqLCBpbnQgKik7CmV4dGVybiBpbnQgX2Z3YWxrKGludCAoKikoRklMRSAqKSk7
CmV4dGVybiBpbnQgX19zdmZzY2FuZihGSUxFICosIGNvbnN0IGNoYXIgKiwgX192YV9saXN0KTsK
ZXh0ZXJuIGludCBfX3N3c2V0dXAoRklMRSAqKTsKZXh0ZXJuIGludCBfX3NmbGFncyhjb25zdCBj
aGFyICosIGludCAqKTsKZXh0ZXJuIGludCBfX3VuZ2V0YyhpbnQsIEZJTEUgKik7CmV4dGVybiB3
aW50X3QgX191bmdldHdjKHdpbnRfdCwgRklMRSAqKTsKZXh0ZXJuIGludCBfX3ZmcHJpbnRmKEZJ
TEUgKiwgY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOwpleHRlcm4gaW50IF9fdmZzY2FuZihGSUxF
ICosIGNvbnN0IGNoYXIgKiwgX192YV9saXN0KTsKZXh0ZXJuIGludCBfX3Zmd3ByaW50ZihGSUxF
ICosIGNvbnN0IHdjaGFyX3QgKiwgX192YV9saXN0KTsKZXh0ZXJuIGludCBfX3Zmd3NjYW5mKEZJ
TEUgKiAsIGNvbnN0IHdjaGFyX3QgKiAsCiAgICAgICAgICAgICAgICAgICAgX192YV9saXN0KTsK
CmV4dGVybiBpbnQgX19zZGlkaW5pdDsKCgoKc3RydWN0IF9fc0ZJTEVYIHsKICAgICAgICB1bnNp
Z25lZCBjaGFyICpfdXA7CiAgICAgICAgcHRocmVhZF9tdXRleF90IGZsX211dGV4OwogICAgICAg
IHB0aHJlYWRfdCBmbF9vd25lcjsKICAgICAgICBpbnQgZmxfY291bnQ7CiAgICAgICAgaW50IG9y
aWVudGF0aW9uOwp9OwpzdHJ1Y3QgX19zaW92IHsKICAgICAgICB2b2lkICppb3ZfYmFzZTsKICAg
ICAgICBzaXplX3QgaW92X2xlbjsKfTsKc3RydWN0IF9fc3VpbyB7CiAgICAgICAgc3RydWN0IF9f
c2lvdiAqdWlvX2lvdjsKICAgICAgICBpbnQgdWlvX2lvdmNudDsKICAgICAgICBpbnQgdWlvX3Jl
c2lkOwp9OwoKZXh0ZXJuIGludCBfX3NmdndyaXRlKEZJTEUgKiwgc3RydWN0IF9fc3VpbyAqKTsK
CgoKCnVuaW9uIGFyZyB7CiAgICAgICAgaW50IGludGFyZzsKICAgICAgICB1X2ludCB1aW50YXJn
OwogICAgICAgIGxvbmcgbG9uZ2FyZzsKICAgICAgICB1X2xvbmcgdWxvbmdhcmc7CiAgICAgICAg
bG9uZyBsb25nIGxvbmdsb25nYXJnOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bG9uZ2xv
bmdhcmc7CiAgICAgICAgcHRyZGlmZl90IHB0cmRpZmZhcmc7CiAgICAgICAgc2l6ZV90IHNpemVh
cmc7CiAgICAgICAgaW50bWF4X3QgaW50bWF4YXJnOwogICAgICAgIHVpbnRtYXhfdCB1aW50bWF4
YXJnOwogICAgICAgIHZvaWQgKnB2b2lkYXJnOwogICAgICAgIGNoYXIgKnBjaGFyYXJnOwogICAg
ICAgIHNpZ25lZCBjaGFyICpwc2NoYXJhcmc7CiAgICAgICAgc2hvcnQgKnBzaG9ydGFyZzsKICAg
ICAgICBpbnQgKnBpbnRhcmc7CiAgICAgICAgbG9uZyAqcGxvbmdhcmc7CiAgICAgICAgbG9uZyBs
b25nICpwbG9uZ2xvbmdhcmc7CiAgICAgICAgcHRyZGlmZl90ICpwcHRyZGlmZmFyZzsKICAgICAg
ICBzaXplX3QgKnBzaXplYXJnOwogICAgICAgIGludG1heF90ICpwaW50bWF4YXJnOwoKICAgICAg
ICBkb3VibGUgZG91YmxlYXJnOwogICAgICAgIGxvbmcgZG91YmxlIGxvbmdkb3VibGVhcmc7Cgog
ICAgICAgIHdpbnRfdCB3aW50YXJnOwogICAgICAgIHdjaGFyX3QgKnB3Y2hhcmFyZzsKfTsKCgoK
CmVudW0gdHlwZWlkIHsKICAgICAgICBUX1VOVVNFRCwgVFBfU0hPUlQsIFRfSU5ULCBUX1VfSU5U
LCBUUF9JTlQsCiAgICAgICAgVF9MT05HLCBUX1VfTE9ORywgVFBfTE9ORywgVF9MTE9ORywgVF9V
X0xMT05HLCBUUF9MTE9ORywKICAgICAgICBUX1BUUkRJRkZULCBUUF9QVFJESUZGVCwgVF9TSVpF
VCwgVFBfU0laRVQsCiAgICAgICAgVF9JTlRNQVhULCBUX1VJTlRNQVhULCBUUF9JTlRNQVhULCBU
UF9WT0lELCBUUF9DSEFSLCBUUF9TQ0hBUiwKICAgICAgICBUX0RPVUJMRSwgVF9MT05HX0RPVUJM
RSwgVF9XSU5ULCBUUF9XQ0hBUgp9OwoKc3RhdGljIGludCBfX3NwcmludChGSUxFICosIHN0cnVj
dCBfX3N1aW8gKik7CnN0YXRpYyBpbnQgX19zYnByaW50ZihGSUxFICosIGNvbnN0IGNoYXIgKiwg
dmFfbGlzdCkgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsK
c3RhdGljIGNoYXIgKl9fdWp0b2EodWludG1heF90LCBjaGFyICosIGludCwgaW50LCBjb25zdCBj
aGFyICosIGludCwgY2hhciwKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICopOwpzdGF0
aWMgY2hhciAqX191bHRvYSh1X2xvbmcsIGNoYXIgKiwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwg
aW50LCBjaGFyLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKik7CnN0YXRpYyBjaGFy
ICpfX3djc2NvbnYod2NoYXJfdCAqLCBpbnQpOwpzdGF0aWMgdm9pZCBfX2ZpbmRfYXJndW1lbnRz
KGNvbnN0IGNoYXIgKiwgdmFfbGlzdCwgdW5pb24gYXJnICoqKTsKc3RhdGljIHZvaWQgX19ncm93
X3R5cGVfdGFibGUoaW50LCBlbnVtIHR5cGVpZCAqKiwgaW50ICopOwoKCgoKCnN0YXRpYyBpbnQK
X19zcHJpbnQoRklMRSAqZnAsIHN0cnVjdCBfX3N1aW8gKnVpbykKewogICAgICAgIGludCBlcnI7
CgogICAgICAgIGlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7CiAgICAgICAgICAgICAgICB1aW8t
PnVpb19pb3ZjbnQgPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKICAgICAgICB9CiAg
ICAgICAgZXJyID0gX19zZnZ3cml0ZShmcCwgdWlvKTsKICAgICAgICB1aW8tPnVpb19yZXNpZCA9
IDA7CiAgICAgICAgdWlvLT51aW9faW92Y250ID0gMDsKICAgICAgICByZXR1cm4gKGVycik7Cn0K
CgoKCgoKc3RhdGljIGludApfX3NicHJpbnRmKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmbXQsIHZh
X2xpc3QgYXApCnsKICAgICAgICBpbnQgcmV0OwogICAgICAgIEZJTEUgZmFrZTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGJ1ZlsxMDI0XTsKCgogICAgICAgIGZha2UuX2ZsYWdzID0gZnAtPl9mbGFn
cyAmIH4weDAwMDI7CiAgICAgICAgZmFrZS5fZmlsZSA9IGZwLT5fZmlsZTsKICAgICAgICBmYWtl
Ll9jb29raWUgPSBmcC0+X2Nvb2tpZTsKICAgICAgICBmYWtlLl93cml0ZSA9IGZwLT5fd3JpdGU7
CiAgICAgICAgZmFrZS5fZXh0cmEgPSBmcC0+X2V4dHJhOwoKCiAgICAgICAgZmFrZS5fYmYuX2Jh
c2UgPSBmYWtlLl9wID0gYnVmOwogICAgICAgIGZha2UuX2JmLl9zaXplID0gZmFrZS5fdyA9IHNp
emVvZihidWYpOwogICAgICAgIGZha2UuX2xiZnNpemUgPSAwOwoKCiAgICAgICAgcmV0ID0gX192
ZnByaW50ZigmZmFrZSwgZm10LCBhcCk7CiAgICAgICAgaWYgKHJldCA+PSAwICYmIF9fZmZsdXNo
KCZmYWtlKSkKICAgICAgICAgICAgICAgIHJldCA9ICgtMSk7CiAgICAgICAgaWYgKGZha2UuX2Zs
YWdzICYgMHgwMDQwKQogICAgICAgICAgICAgICAgZnAtPl9mbGFncyB8PSAweDAwNDA7CiAgICAg
ICAgcmV0dXJuIChyZXQpOwp9CnN0YXRpYyBjaGFyICoKX191bHRvYSh1X2xvbmcgdmFsLCBjaGFy
ICplbmRwLCBpbnQgYmFzZSwgaW50IG9jdHplcm8sIGNvbnN0IGNoYXIgKnhkaWdzLAogICAgICAg
IGludCBuZWVkZ3JwLCBjaGFyIHRob3VzZXAsIGNvbnN0IGNoYXIgKmdycCkKewogICAgICAgIGNo
YXIgKmNwID0gZW5kcDsKICAgICAgICBsb25nIHN2YWw7CiAgICAgICAgaW50IG5kaWc7CgoKCgoK
ICAgICAgICBzd2l0Y2ggKGJhc2UpIHsKICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgICAg
aWYgKHZhbCA8IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICotLWNwID0gKCh2YWwpICsg
JzAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChjcCk7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICBuZGlnID0gMDsKCgoKCgoKICAgICAgICAgICAgICAgIGlmICh2
YWwgPiAweDdmZmZmZmZmZmZmZmZmZmZMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICotLWNw
ID0gKCh2YWwgJSAxMCkgKyAnMCcpOwogICAgICAgICAgICAgICAgICAgICAgICBuZGlnKys7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHN2YWwgPSB2YWwgLyAxMDsKICAgICAgICAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBzdmFsID0gdmFsOwogICAgICAgICAgICAgICAg
ZG8gewogICAgICAgICAgICAgICAgICAgICAgICAqLS1jcCA9ICgoc3ZhbCAlIDEwKSArICcwJyk7
CiAgICAgICAgICAgICAgICAgICAgICAgIG5kaWcrKzsKCgoKCiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChuZWVkZ3JwICYmIG5kaWcgPT0gKmdycCAmJiAqZ3JwICE9IDB4N2YKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN2YWwgPiA5KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi0tY3AgPSB0aG91c2VwOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5kaWcgPSAwOwoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCooZ3JwKzEpICE9ICdcMCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBncnArKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICBzdmFsIC89IDEwOwogICAgICAgICAgICAgICAgfSB3aGlsZSAoc3ZhbCAhPSAwKTsK
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICBk
byB7CiAgICAgICAgICAgICAgICAgICAgICAgICotLWNwID0gKCh2YWwgJiA3KSArICcwJyk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbCA+Pj0gMzsKICAgICAgICAgICAgICAgIH0gd2hpbGUg
KHZhbCk7CiAgICAgICAgICAgICAgICBpZiAob2N0emVybyAmJiAqY3AgIT0gJzAnKQogICAgICAg
ICAgICAgICAgICAgICAgICAqLS1jcCA9ICcwJzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICBjYXNlIDE2OgogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAg
ICAqLS1jcCA9IHhkaWdzW3ZhbCAmIDE1XTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsID4+
PSA0OwogICAgICAgICAgICAgICAgfSB3aGlsZSAodmFsKTsKICAgICAgICAgICAgICAgIGJyZWFr
OwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgYWJvcnQoKTsKICAgICAgICB9CiAg
ICAgICAgcmV0dXJuIChjcCk7Cn0KCgpzdGF0aWMgY2hhciAqCl9fdWp0b2EodWludG1heF90IHZh
bCwgY2hhciAqZW5kcCwgaW50IGJhc2UsIGludCBvY3R6ZXJvLCBjb25zdCBjaGFyICp4ZGlncywK
ICAgICAgICBpbnQgbmVlZGdycCwgY2hhciB0aG91c2VwLCBjb25zdCBjaGFyICpncnApCnsKICAg
ICAgICBjaGFyICpjcCA9IGVuZHA7CiAgICAgICAgaW50bWF4X3Qgc3ZhbDsKICAgICAgICBpbnQg
bmRpZzsKCgoKICAgICAgICBpZiAodmFsIDw9IDB4ZmZmZmZmZmZmZmZmZmZmZlVMKQogICAgICAg
ICAgICAgICAgcmV0dXJuIChfX3VsdG9hKCh1X2xvbmcpdmFsLCBlbmRwLCBiYXNlLCBvY3R6ZXJv
LCB4ZGlncywKICAgICAgICAgICAgICAgICAgICBuZWVkZ3JwLCB0aG91c2VwLCBncnApKTsKICAg
ICAgICBzd2l0Y2ggKGJhc2UpIHsKICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgICAgaWYg
KHZhbCA8IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICotLWNwID0gKCh2YWwgJSAxMCkg
KyAnMCcpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGNwKTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIG5kaWcgPSAwOwogICAgICAgICAgICAgICAgaWYgKHZhbCA+
IDB4N2ZmZmZmZmZmZmZmZmZmZkwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgKi0tY3AgPSAo
KHZhbCAlIDEwKSArICcwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5kaWcrKzsKICAgICAg
ICAgICAgICAgICAgICAgICAgc3ZhbCA9IHZhbCAvIDEwOwogICAgICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgICAgICAgIHN2YWwgPSB2YWw7CiAgICAgICAgICAgICAgICBkbyB7
CiAgICAgICAgICAgICAgICAgICAgICAgICotLWNwID0gKChzdmFsICUgMTApICsgJzAnKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgbmRpZysrOwoKCgoKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG5lZWRncnAgJiYgKmdycCAhPSAweDdmICYmIG5kaWcgPT0gKmdycAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3ZhbCA+IDkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLS1jcCA9IHRob3VzZXA7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmRpZyA9IDA7CgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoKihncnArMSkgIT0gJ1wwJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdycCsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgIHN2YWwgLz0gMTA7CiAgICAgICAgICAgICAgICB9IHdoaWxlIChzdmFsICE9IDApOwogICAg
ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgIGRvIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgKi0tY3AgPSAoKHZhbCAmIDcpICsgJzAnKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsID4+PSAzOwogICAgICAgICAgICAgICAgfSB3aGlsZSAodmFs
KTsKICAgICAgICAgICAgICAgIGlmIChvY3R6ZXJvICYmICpjcCAhPSAnMCcpCiAgICAgICAgICAg
ICAgICAgICAgICAgICotLWNwID0gJzAnOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAg
IGNhc2UgMTY6CiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICot
LWNwID0geGRpZ3NbdmFsICYgMTVdOwogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPj49IDQ7
CiAgICAgICAgICAgICAgICB9IHdoaWxlICh2YWwpOwogICAgICAgICAgICAgICAgYnJlYWs7Cgog
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBhYm9ydCgpOwogICAgICAgIH0KICAgICAg
ICByZXR1cm4gKGNwKTsKfQoKCgoKCgoKc3RhdGljIGNoYXIgKgpfX3djc2NvbnYod2NoYXJfdCAq
d2NzYXJnLCBpbnQgcHJlYykKewogICAgICAgIGNoYXIgYnVmWzZdOwogICAgICAgIHdjaGFyX3Qg
KnA7CiAgICAgICAgY2hhciAqY29udmJ1ZiwgKm1icDsKICAgICAgICBzaXplX3QgY2xlbiwgbmJ5
dGVzOwogICAgICAgIG1ic3RhdGVfdCBtYnM7CgoKCgoKICAgICAgICBtZW1zZXQoJm1icywgMCwg
c2l6ZW9mKG1icykpOwogICAgICAgIGlmIChwcmVjID49IDApIHsKICAgICAgICAgICAgICAgIG5i
eXRlcyA9IDA7CiAgICAgICAgICAgICAgICBwID0gd2NzYXJnOwogICAgICAgICAgICAgICAgZm9y
ICg7OykgewogICAgICAgICAgICAgICAgICAgICAgICBjbGVuID0gd2NydG9tYihidWYsICpwKyss
ICZtYnMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xlbiA9PSAwIHx8IGNsZW4gPT0g
KHNpemVfdCktMSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJ5dGVzICsgY2xlbiA+
IHByZWMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgICAgIG5ieXRlcyArPSBjbGVuOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICBwID0gd2NzYXJnOwogICAgICAgICAgICAgICAgbmJ5dGVz
ID0gd2NzcnRvbWJzKDAsIChjb25zdCB3Y2hhcl90ICoqKSZwLCAwLCAmbWJzKTsKICAgICAgICAg
ICAgICAgIGlmIChuYnl0ZXMgPT0gKHNpemVfdCktMSkKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICgwKTsKICAgICAgICB9CiAgICAgICAgaWYgKChjb252YnVmID0gbWFsbG9jKG5ieXRl
cyArIDEpKSA9PSAwKQogICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKCgoKCgogICAgICAgIG1i
cCA9IGNvbnZidWY7CiAgICAgICAgcCA9IHdjc2FyZzsKICAgICAgICBtZW1zZXQoJm1icywgMCwg
c2l6ZW9mKG1icykpOwogICAgICAgIHdoaWxlIChtYnAgLSBjb252YnVmIDwgbmJ5dGVzKSB7CiAg
ICAgICAgICAgICAgICBjbGVuID0gd2NydG9tYihtYnAsICpwKyssICZtYnMpOwogICAgICAgICAg
ICAgICAgaWYgKGNsZW4gPT0gMCB8fCBjbGVuID09IChzaXplX3QpLTEpCiAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgbWJwICs9IGNsZW47CiAgICAgICAgfQog
ICAgICAgIGlmIChjbGVuID09IChzaXplX3QpLTEpIHsKICAgICAgICAgICAgICAgIGZyZWUoY29u
dmJ1Zik7CiAgICAgICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgIH0KICAgICAgICAqbWJw
ID0gJ1wwJzsKCiAgICAgICAgcmV0dXJuIChjb252YnVmKTsKfQoKCgoKaW50CnZmcHJpbnRmKEZJ
TEUgKiBmcCwgY29uc3QgY2hhciAqIGZtdDAsIHZhX2xpc3QgYXApCgp7CiAgICAgICAgaW50IHJl
dDsKCiAgICAgICAgaWYgKF9faXN0aHJlYWRlZCkgX2Zsb2NrZmlsZShmcCk7CiAgICAgICAgcmV0
ID0gX192ZnByaW50ZihmcCwgZm10MCwgYXApOwogICAgICAgIGlmIChfX2lzdGhyZWFkZWQpIF9m
dW5sb2NrZmlsZShmcCk7CiAgICAgICAgcmV0dXJuIChyZXQpOwp9CgoKCgoKCmV4dGVybiBjb25z
dCB1bmlvbiBfX2luZmluaXR5X3VuIHsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9fdWNbOF07CiAg
ICAgICAgZG91YmxlIF9fdWQ7Cn0gX19pbmZpbml0eTsKCmV4dGVybiBjb25zdCB1bmlvbiBfX25h
bl91biB7CiAgICAgICAgdW5zaWduZWQgY2hhciBfX3VjW3NpemVvZihmbG9hdCldOwogICAgICAg
IGZsb2F0IF9fdWY7Cn0gX19uYW47CnR5cGVkZWYgX19kb3VibGVfdCBkb3VibGVfdDsKdHlwZWRl
ZiBfX2Zsb2F0X3QgZmxvYXRfdDsKZXh0ZXJuIGludCBzaWduZ2FtOwoKCmVudW0gZmR2ZXJzaW9u
IHtmZGxpYm1faWVlZSA9IC0xLCBmZGxpYm1fc3ZpZCwgZmRsaWJtX3hvcGVuLCBmZGxpYm1fcG9z
aXh9OwpleHRlcm4gZW51bSBmZHZlcnNpb24gX2ZkbGliX3ZlcnNpb247CnN0cnVjdCBleGNlcHRp
b24gewogICAgICAgIGludCB0eXBlOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgZG91Ymxl
IGFyZzE7CiAgICAgICAgZG91YmxlIGFyZzI7CiAgICAgICAgZG91YmxlIHJldHZhbDsKfTsKCgoK
CmludCBfX2ZwY2xhc3NpZnlkKGRvdWJsZSkgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSk7Cmlu
dCBfX2ZwY2xhc3NpZnlmKGZsb2F0KSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKTsKaW50IF9f
ZnBjbGFzc2lmeWwobG9uZyBkb3VibGUpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwppbnQg
X19zaWduYml0KGRvdWJsZSkgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSk7Cgpkb3VibGUgYWNv
cyhkb3VibGUpOwpkb3VibGUgYXNpbihkb3VibGUpOwpkb3VibGUgYXRhbihkb3VibGUpOwpkb3Vi
bGUgYXRhbjIoZG91YmxlLCBkb3VibGUpOwpkb3VibGUgY29zKGRvdWJsZSk7CmRvdWJsZSBzaW4o
ZG91YmxlKTsKZG91YmxlIHRhbihkb3VibGUpOwoKZG91YmxlIGNvc2goZG91YmxlKTsKZG91Ymxl
IHNpbmgoZG91YmxlKTsKZG91YmxlIHRhbmgoZG91YmxlKTsKCmRvdWJsZSBleHAoZG91YmxlKTsK
ZG91YmxlIGZyZXhwKGRvdWJsZSwgaW50ICopOwpkb3VibGUgbGRleHAoZG91YmxlLCBpbnQpOwpk
b3VibGUgbG9nKGRvdWJsZSk7CmRvdWJsZSBsb2cxMChkb3VibGUpOwpkb3VibGUgbW9kZihkb3Vi
bGUsIGRvdWJsZSAqKTsKCmRvdWJsZSBwb3coZG91YmxlLCBkb3VibGUpOwpkb3VibGUgc3FydChk
b3VibGUpOwoKZG91YmxlIGNlaWwoZG91YmxlKTsKZG91YmxlIGZhYnMoZG91YmxlKTsKZG91Ymxl
IGZsb29yKGRvdWJsZSk7CmRvdWJsZSBmbW9kKGRvdWJsZSwgZG91YmxlKTsKCgoKCgoKZG91Ymxl
IGVyZihkb3VibGUpOwpkb3VibGUgZXJmYyhkb3VibGUpIF9fYXR0cmlidXRlX18oKF9fY29uc3Rf
XykpOwppbnQgZmluaXRlKGRvdWJsZSkgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSk7CmRvdWJs
ZSBnYW1tYShkb3VibGUpOwpkb3VibGUgaHlwb3QoZG91YmxlLCBkb3VibGUpOwpkb3VibGUgajAo
ZG91YmxlKTsKZG91YmxlIGoxKGRvdWJsZSk7CmRvdWJsZSBqbihpbnQsIGRvdWJsZSk7CmRvdWJs
ZSBsZ2FtbWEoZG91YmxlKTsKZG91YmxlIHkwKGRvdWJsZSk7CmRvdWJsZSB5MShkb3VibGUpOwpk
b3VibGUgeW4oaW50LCBkb3VibGUpOwoKCmRvdWJsZSBhY29zaChkb3VibGUpOwpkb3VibGUgYXNp
bmgoZG91YmxlKTsKZG91YmxlIGF0YW5oKGRvdWJsZSk7CmRvdWJsZSBjYnJ0KGRvdWJsZSkgX19h
dHRyaWJ1dGVfXygoX19jb25zdF9fKSk7CmRvdWJsZSBsb2diKGRvdWJsZSkgX19hdHRyaWJ1dGVf
XygoX19jb25zdF9fKSk7CmRvdWJsZSBuZXh0YWZ0ZXIoZG91YmxlLCBkb3VibGUpOwpkb3VibGUg
cmVtYWluZGVyKGRvdWJsZSwgZG91YmxlKTsKZG91YmxlIHNjYWxiKGRvdWJsZSwgZG91YmxlKTsK
ZG91YmxlIHRnYW1tYShkb3VibGUpOwoKCmludCBtYXRoZXJyKHN0cnVjdCBleGNlcHRpb24gKik7
CgoKCgoKZG91YmxlIHNpZ25pZmljYW5kKGRvdWJsZSk7CgoKCgpkb3VibGUgY29weXNpZ24oZG91
YmxlLCBkb3VibGUpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwppbnQgaWxvZ2IoZG91Ymxl
KTsKZG91YmxlIHJpbnQoZG91YmxlKSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKTsKZG91Ymxl
IHNjYWxibihkb3VibGUsIGludCk7CgoKCgpkb3VibGUgZHJlbShkb3VibGUsIGRvdWJsZSk7CmRv
dWJsZSBleHBtMShkb3VibGUpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwpkb3VibGUgbG9n
MXAoZG91YmxlKSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKTsKCgoKCgoKZG91YmxlIGdhbW1h
X3IoZG91YmxlLCBpbnQgKik7CmRvdWJsZSBsZ2FtbWFfcihkb3VibGUsIGludCAqKTsKCgoKZmxv
YXQgYWNvc2YoZmxvYXQpOwpmbG9hdCBhc2luZihmbG9hdCk7CmZsb2F0IGF0YW5mKGZsb2F0KTsK
ZmxvYXQgYXRhbjJmKGZsb2F0LCBmbG9hdCk7CmZsb2F0IGNvc2YoZmxvYXQpOwpmbG9hdCBzaW5m
KGZsb2F0KTsKZmxvYXQgdGFuZihmbG9hdCk7CgpmbG9hdCBjb3NoZihmbG9hdCk7CmZsb2F0IHNp
bmhmKGZsb2F0KTsKZmxvYXQgdGFuaGYoZmxvYXQpOwoKZmxvYXQgZXhwZihmbG9hdCk7CmZsb2F0
IGZyZXhwZihmbG9hdCwgaW50ICopOwpmbG9hdCBsZGV4cGYoZmxvYXQsIGludCk7CmZsb2F0IGxv
Z2YoZmxvYXQpOwpmbG9hdCBsb2cxMGYoZmxvYXQpOwpmbG9hdCBtb2RmZihmbG9hdCwgZmxvYXQg
Kik7CgpmbG9hdCBwb3dmKGZsb2F0LCBmbG9hdCk7CmZsb2F0IHNxcnRmKGZsb2F0KTsKCmZsb2F0
IGNlaWxmKGZsb2F0KTsKZmxvYXQgZmFic2YoZmxvYXQpOwpmbG9hdCBmbG9vcmYoZmxvYXQpOwpm
bG9hdCBmbW9kZihmbG9hdCwgZmxvYXQpOwoKZmxvYXQgZXJmZihmbG9hdCk7CmZsb2F0IGVyZmNm
KGZsb2F0KSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKTsKaW50IGZpbml0ZWYoZmxvYXQpIF9f
YXR0cmlidXRlX18oKF9fY29uc3RfXykpOwpmbG9hdCBnYW1tYWYoZmxvYXQpOwpmbG9hdCBoeXBv
dGYoZmxvYXQsIGZsb2F0KSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKTsKZmxvYXQgajBmKGZs
b2F0KTsKZmxvYXQgajFmKGZsb2F0KTsKZmxvYXQgam5mKGludCwgZmxvYXQpOwpmbG9hdCBsZ2Ft
bWFmKGZsb2F0KTsKZmxvYXQgeTBmKGZsb2F0KTsKZmxvYXQgeTFmKGZsb2F0KTsKZmxvYXQgeW5m
KGludCwgZmxvYXQpOwoKZmxvYXQgYWNvc2hmKGZsb2F0KTsKZmxvYXQgYXNpbmhmKGZsb2F0KTsK
ZmxvYXQgYXRhbmhmKGZsb2F0KTsKZmxvYXQgY2JydGYoZmxvYXQpIF9fYXR0cmlidXRlX18oKF9f
Y29uc3RfXykpOwpmbG9hdCBsb2diZihmbG9hdCkgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSk7
CmZsb2F0IG5leHRhZnRlcmYoZmxvYXQsIGZsb2F0KTsKZmxvYXQgcmVtYWluZGVyZihmbG9hdCwg
ZmxvYXQpOwpmbG9hdCBzY2FsYmYoZmxvYXQsIGZsb2F0KTsKCgoKCmZsb2F0IHNpZ25pZmljYW5k
ZihmbG9hdCk7CgoKCgoKZmxvYXQgY29weXNpZ25mKGZsb2F0LCBmbG9hdCkgX19hdHRyaWJ1dGVf
XygoX19jb25zdF9fKSk7CmludCBpbG9nYmYoZmxvYXQpOwpmbG9hdCByaW50ZihmbG9hdCk7CmZs
b2F0IHNjYWxibmYoZmxvYXQsIGludCk7CgoKCgpmbG9hdCBkcmVtZihmbG9hdCwgZmxvYXQpOwpm
bG9hdCBleHBtMWYoZmxvYXQpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwpmbG9hdCBsb2cx
cGYoZmxvYXQpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwoKCgoKCgoKZmxvYXQgZ2FtbWFm
X3IoZmxvYXQsIGludCAqKTsKZmxvYXQgbGdhbW1hZl9yKGZsb2F0LCBpbnQgKik7CgoKCgoKY2hh
ciAqX19sZHRvYShsb25nIGRvdWJsZSAqLCBpbnQsIGludCwgaW50ICosIGludCAqLCBjaGFyICoq
KTsKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVUxvbmc7CgoKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBVU2hvcnQ7CiBlbnVtIHsKICAgICAgICBTVFJUT0dfWmVybyA9IDAsCiAgICAgICAgU1RS
VE9HX05vcm1hbCA9IDEsCiAgICAgICAgU1RSVE9HX0Rlbm9ybWFsID0gMiwKICAgICAgICBTVFJU
T0dfSW5maW5pdGUgPSAzLAogICAgICAgIFNUUlRPR19OYU4gPSA0LAogICAgICAgIFNUUlRPR19O
YU5iaXRzID0gNSwKICAgICAgICBTVFJUT0dfTm9OdW1iZXIgPSA2LAogICAgICAgIFNUUlRPR19S
ZXRtYXNrID0gNywKCgoKICAgICAgICBTVFJUT0dfTmVnID0gMHgwOCwKICAgICAgICBTVFJUT0df
SW5leGxvID0gMHgxMCwKICAgICAgICBTVFJUT0dfSW5leGhpID0gMHgyMCwKICAgICAgICBTVFJU
T0dfSW5leGFjdCA9IDB4MzAsCiAgICAgICAgU1RSVE9HX1VuZGVyZmxvdz0gMHg0MCwKICAgICAg
ICBTVFJUT0dfT3ZlcmZsb3cgPSAweDgwCiAgICAgICAgfTsKCiB0eXBlZGVmIHN0cnVjdApGUEkg
ewogICAgICAgIGludCBuYml0czsKICAgICAgICBpbnQgZW1pbjsKICAgICAgICBpbnQgZW1heDsK
ICAgICAgICBpbnQgcm91bmRpbmc7CiAgICAgICAgaW50IHN1ZGRlbl91bmRlcmZsb3c7CiAgICAg
ICAgfSBGUEk7CgplbnVtIHsKICAgICAgICBGUElfUm91bmRfemVybyA9IDAsCiAgICAgICAgRlBJ
X1JvdW5kX25lYXIgPSAxLAogICAgICAgIEZQSV9Sb3VuZF91cCA9IDIsCiAgICAgICAgRlBJX1Jv
dW5kX2Rvd24gPSAzCiAgICAgICAgfTsKCgoKCgpleHRlcm4gY2hhciogX19kdG9hIChkb3VibGUg
ZCwgaW50IG1vZGUsIGludCBuZGlnaXRzLCBpbnQgKmRlY3B0LCBpbnQgKnNpZ24sIGNoYXIgKipy
dmUpOwoKZXh0ZXJuIGNoYXIqIGdkdG9hIChGUEkgKmZwaSwgaW50IGJlLCBVTG9uZyAqYml0cywg
aW50ICpraW5kcCwgaW50IG1vZGUsIGludCBuZGlnaXRzLCBpbnQgKmRlY3B0LCBjaGFyICoqcnZl
KTsKCmV4dGVybiB2b2lkIF9fZnJlZWR0b2EgKGNoYXIqKTsKZXh0ZXJuIGZsb2F0IHN0cnRvZiAo
Y29uc3QgY2hhciAqLCBjaGFyICoqKTsKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKGNvbnN0IGNoYXIg
KiwgY2hhciAqKik7CmV4dGVybiBpbnQgc3RydG9kZyAoY29uc3QgY2hhciosIGNoYXIqKiwgRlBJ
KiwgbG9uZyosIFVMb25nKik7CgpleHRlcm4gY2hhciogZ19kZGZtdCAoY2hhciosIGRvdWJsZSos
IGludCwgdW5zaWduZWQpOwpleHRlcm4gY2hhciogZ19kZm10IChjaGFyKiwgZG91YmxlKiwgaW50
LCB1bnNpZ25lZCk7CmV4dGVybiBjaGFyKiBnX2ZmbXQgKGNoYXIqLCBmbG9hdCosIGludCwgdW5z
aWduZWQpOwpleHRlcm4gY2hhciogZ19RZm10IChjaGFyKiwgdm9pZCosIGludCwgdW5zaWduZWQp
OwpleHRlcm4gY2hhciogZ194Zm10IChjaGFyKiwgdm9pZCosIGludCwgdW5zaWduZWQpOwpleHRl
cm4gY2hhciogZ194TGZtdCAoY2hhciosIHZvaWQqLCBpbnQsIHVuc2lnbmVkKTsKCmV4dGVybiBp
bnQgc3RydG9JZCAoY29uc3QgY2hhciosIGNoYXIqKiwgZG91YmxlKiwgZG91YmxlKik7CmV4dGVy
biBpbnQgc3RydG9JZGQgKGNvbnN0IGNoYXIqLCBjaGFyKiosIGRvdWJsZSosIGRvdWJsZSopOwpl
eHRlcm4gaW50IHN0cnRvSWYgKGNvbnN0IGNoYXIqLCBjaGFyKiosIGZsb2F0KiwgZmxvYXQqKTsK
ZXh0ZXJuIGludCBzdHJ0b0lRIChjb25zdCBjaGFyKiwgY2hhcioqLCB2b2lkKiwgdm9pZCopOwpl
eHRlcm4gaW50IHN0cnRvSXggKGNvbnN0IGNoYXIqLCBjaGFyKiosIHZvaWQqLCB2b2lkKik7CmV4
dGVybiBpbnQgc3RydG9JeEwgKGNvbnN0IGNoYXIqLCBjaGFyKiosIHZvaWQqLCB2b2lkKik7CmV4
dGVybiBpbnQgc3RydG9yZCAoY29uc3QgY2hhciosIGNoYXIqKiwgaW50LCBkb3VibGUqKTsKZXh0
ZXJuIGludCBzdHJ0b3JkZCAoY29uc3QgY2hhciosIGNoYXIqKiwgaW50LCBkb3VibGUqKTsKZXh0
ZXJuIGludCBzdHJ0b3JmIChjb25zdCBjaGFyKiwgY2hhcioqLCBpbnQsIGZsb2F0Kik7CmV4dGVy
biBpbnQgc3RydG9yUSAoY29uc3QgY2hhciosIGNoYXIqKiwgaW50LCB2b2lkKik7CmV4dGVybiBp
bnQgc3RydG9yeCAoY29uc3QgY2hhciosIGNoYXIqKiwgaW50LCB2b2lkKik7CmV4dGVybiBpbnQg
c3RydG9yeEwgKGNvbnN0IGNoYXIqLCBjaGFyKiosIGludCwgdm9pZCopOwoKZXh0ZXJuIGludCBz
dHJ0b2RJIChjb25zdCBjaGFyKiwgY2hhcioqLCBkb3VibGUqKTsKZXh0ZXJuIGludCBzdHJ0b3Bk
IChjb25zdCBjaGFyKiwgY2hhcioqLCBkb3VibGUqKTsKZXh0ZXJuIGludCBzdHJ0b3BkZCAoY29u
c3QgY2hhciosIGNoYXIqKiwgZG91YmxlKik7CmV4dGVybiBpbnQgc3RydG9wZiAoY29uc3QgY2hh
ciosIGNoYXIqKiwgZmxvYXQqKTsKZXh0ZXJuIGludCBzdHJ0b3BRIChjb25zdCBjaGFyKiwgY2hh
cioqLCB2b2lkKik7CmV4dGVybiBpbnQgc3RydG9weCAoY29uc3QgY2hhciosIGNoYXIqKiwgdm9p
ZCopOwpleHRlcm4gaW50IHN0cnRvcHhMIChjb25zdCBjaGFyKiwgY2hhcioqLCB2b2lkKik7CgoK
CnN0YXRpYyBpbnQgZXhwb25lbnQoY2hhciAqLCBpbnQsIGludCk7CmludApfX3ZmcHJpbnRmKEZJ
TEUgKmZwLCBjb25zdCBjaGFyICpmbXQwLCB2YV9saXN0IGFwKQp7CiAgICAgICAgY2hhciAqZm10
OwogICAgICAgIGludCBjaDsKICAgICAgICBpbnQgbiwgbjI7CiAgICAgICAgY2hhciAqY3A7CiAg
ICAgICAgc3RydWN0IF9fc2lvdiAqaW92cDsKICAgICAgICBpbnQgZmxhZ3M7CiAgICAgICAgaW50
IHJldDsKICAgICAgICBpbnQgd2lkdGg7CiAgICAgICAgaW50IHByZWM7CiAgICAgICAgY2hhciBz
aWduOwogICAgICAgIGNoYXIgdGhvdXNhbmRzX3NlcDsKICAgICAgICBjb25zdCBjaGFyICpncm91
cGluZzsKICAgICAgICBjaGFyICpkZWNpbWFsX3BvaW50OwogICAgICAgIGludCBzaWduZmxhZzsK
ICAgICAgICBkb3VibGUgZGJsOwogICAgICAgIGxvbmcgZG91YmxlIGxkYmw7CiAgICAgICAgaW50
IGV4cHQ7CiAgICAgICAgY2hhciBleHBjaGFyOwogICAgICAgIGNoYXIgKmR0b2FlbmQ7CiAgICAg
ICAgaW50IGV4cHNpemU7CiAgICAgICAgaW50IGxlYWQ7CiAgICAgICAgaW50IG5kaWc7CiAgICAg
ICAgY2hhciBleHBzdHJbNiArMl07CiAgICAgICAgY2hhciAqZHRvYXJlc3VsdDsKICAgICAgICBp
bnQgbnNlcHM7CiAgICAgICAgaW50IG5yZXBlYXRzOwoKICAgICAgICB1X2xvbmcgdWx2YWw7CiAg
ICAgICAgdWludG1heF90IHVqdmFsOwogICAgICAgIGludCBiYXNlOwogICAgICAgIGludCBkcHJl
YzsKICAgICAgICBpbnQgcmVhbHN6OwogICAgICAgIGludCBzaXplOwogICAgICAgIGludCBwcnNp
emU7CiAgICAgICAgY29uc3QgY2hhciAqeGRpZ3M7CgogICAgICAgIHN0cnVjdCBfX3N1aW8gdWlv
OwogICAgICAgIHN0cnVjdCBfX3Npb3YgaW92WzhdOwogICAgICAgIGNoYXIgYnVmWzEwMF07CiAg
ICAgICAgY2hhciBveFsyXTsKICAgICAgICB1bmlvbiBhcmcgKmFyZ3RhYmxlOwogICAgICAgIHVu
aW9uIGFyZyBzdGF0YXJndGFibGUgWzhdOwogICAgICAgIGludCBuZXh0YXJnOwogICAgICAgIHZh
X2xpc3Qgb3JnYXA7CiAgICAgICAgY2hhciAqY29udmJ1ZjsKCgoKCgoKCiAgICAgICAgc3RhdGlj
IGNoYXIgYmxhbmtzWzE2XSA9CiAgICAgICAgIHsnICcsJyAnLCcgJywnICcsJyAnLCcgJywnICcs
JyAnLCcgJywnICcsJyAnLCcgJywnICcsJyAnLCcgJywnICd9OwogICAgICAgIHN0YXRpYyBjaGFy
IHplcm9lc1sxNl0gPQogICAgICAgICB7JzAnLCcwJywnMCcsJzAnLCcwJywnMCcsJzAnLCcwJywn
MCcsJzAnLCcwJywnMCcsJzAnLCcwJywnMCcsJzAnfTsKCiAgICAgICAgc3RhdGljIGNvbnN0IGNo
YXIgeGRpZ3NfbG93ZXJbMTZdID0gIjAxMjM0NTY3ODlhYmNkZWYiOwogICAgICAgIHN0YXRpYyBj
b25zdCBjaGFyIHhkaWdzX3VwcGVyWzE2XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKICAgICAgICB0
aG91c2FuZHNfc2VwID0gJ1wwJzsKICAgICAgICBncm91cGluZyA9IDA7CiAgICAgICAgY29udmJ1
ZiA9IDA7CgogICAgICAgIGR0b2FyZXN1bHQgPSAwOwogICAgICAgIGRlY2ltYWxfcG9pbnQgPSBs
b2NhbGVjb252KCktPmRlY2ltYWxfcG9pbnQ7CgoKICAgICAgICBpZiAoKCgoKGZwKS0+X2ZsYWdz
ICYgMHgwMDA4KSA9PSAwIHx8ICgoZnApLT5fYmYuX2Jhc2UgPT0gMCAmJiAoKGZwKS0+X2ZsYWdz
ICYgMHgwMjAwKSA9PSAwKSkgJiYgX19zd3NldHVwKGZwKSkpCiAgICAgICAgICAgICAgICByZXR1
cm4gKCgtMSkpOwoKCiAgICAgICAgaWYgKChmcC0+X2ZsYWdzICYgKDB4MDAwMnwweDAwMDh8MHgw
MDEwKSkgPT0gKDB4MDAwMnwweDAwMDgpICYmCiAgICAgICAgICAgIGZwLT5fZmlsZSA+PSAwKQog
ICAgICAgICAgICAgICAgcmV0dXJuIChfX3NicHJpbnRmKGZwLCBmbXQwLCBhcCkpOwoKICAgICAg
ICBmbXQgPSAoY2hhciAqKWZtdDA7CiAgICAgICAgYXJndGFibGUgPSAwOwogICAgICAgIG5leHRh
cmcgPSAxOwogICAgICAgIF9fYnVpbHRpbl92YV9jb3B5KChvcmdhcCksIChhcCkpOwogICAgICAg
IHVpby51aW9faW92ID0gaW92cCA9IGlvdjsKICAgICAgICB1aW8udWlvX3Jlc2lkID0gMDsKICAg
ICAgICB1aW8udWlvX2lvdmNudCA9IDA7CiAgICAgICAgcmV0ID0gMDsKCgoKCiAgICAgICAgZm9y
ICg7OykgewogICAgICAgICAgICAgICAgZm9yIChjcCA9IGZtdDsgKGNoID0gKmZtdCkgIT0gJ1ww
JyAmJiBjaCAhPSAnJSc7IGZtdCsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OwogICAgICAgICAgICAgICAgaWYgKChuID0gZm10IC0gY3ApICE9IDApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCh1bnNpZ25lZClyZXQgKyBuID4gMHg3ZmZmZmZmZikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9ICgtMSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICB7IGlvdnAtPmlvdl9iYXNlID0gKGNwKTsgaW92cC0+aW92X2xlbiA9
IChuKTsgdWlvLnVpb19yZXNpZCArPSAobik7IGlvdnArKzsgaWYgKCsrdWlvLnVpb19pb3ZjbnQg
Pj0gOCkgeyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3RvIGVycm9yOyBpb3ZwID0gaW92OyB9
IH07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldCArPSBuOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgaWYgKGNoID09ICdcMCcpCiAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gZG9uZTsKICAgICAgICAgICAgICAgIGZtdCsrOwoKICAgICAgICAgICAgICAgIGZsYWdzID0g
MDsKICAgICAgICAgICAgICAgIGRwcmVjID0gMDsKICAgICAgICAgICAgICAgIHdpZHRoID0gMDsK
ICAgICAgICAgICAgICAgIHByZWMgPSAtMTsKICAgICAgICAgICAgICAgIHNpZ24gPSAnXDAnOwog
ICAgICAgICAgICAgICAgb3hbMV0gPSAnXDAnOwoKcmZsYWc6IGNoID0gKmZtdCsrOwpyZXN3aXRj
aDogc3dpdGNoIChjaCkgewogICAgICAgICAgICAgICAgY2FzZSAnICc6CgoKCgoKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFzaWduKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpZ24gPSAnICc7CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmZsYWc7CiAgICAgICAg
ICAgICAgICBjYXNlICcjJzoKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHgwMDE7
CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmZsYWc7CiAgICAgICAgICAgICAgICBjYXNl
ICcqJzoKCgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgbjIgPSAwOyBjcCA9IGZtdDsgd2hp
bGUgKCgodW5zaWduZWQpKCgqY3ApIC0gJzAnKSA8PSA5KSkgeyBuMiA9IDEwICogbjIgKyAoKCpj
cCkgLSAnMCcpOyBjcCsrOyB9IGlmICgqY3AgPT0gJyQnKSB7IGludCBob2xkID0gbmV4dGFyZzsg
aWYgKGFyZ3RhYmxlID09IDApIHsgYXJndGFibGUgPSBzdGF0YXJndGFibGU7IF9fZmluZF9hcmd1
bWVudHMgKGZtdDAsIG9yZ2FwLCAmYXJndGFibGUpOyB9IG5leHRhcmcgPSBuMjsgd2lkdGggPSAo
KGFyZ3RhYmxlICE9IDApID8gKigoaW50KikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0
YXJnKyssIF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgaW50KSkpOyBuZXh0YXJnID0gaG9sZDsgZm10
ID0gKytjcDsgfSBlbHNlIHsgd2lkdGggPSAoKGFyZ3RhYmxlICE9IDApID8gKigoaW50KikoJmFy
Z3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJnKyssIF9fYnVpbHRpbl92YV9hcmcoKGFwKSwg
aW50KSkpOyB9OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPj0gMCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJmbGFnOwogICAgICAgICAgICAgICAgICAg
ICAgICB3aWR0aCA9IC13aWR0aDsKCiAgICAgICAgICAgICAgICBjYXNlICctJzoKICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHgwMDQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gcmZsYWc7CiAgICAgICAgICAgICAgICBjYXNlICcrJzoKICAgICAgICAgICAgICAgICAgICAg
ICAgc2lnbiA9ICcrJzsKICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZmxhZzsKICAgICAg
ICAgICAgICAgIGNhc2UgJ1wnJzoKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHgy
MDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHRob3VzYW5kc19zZXAgPSAqKGxvY2FsZWNvbnYo
KS0+dGhvdXNhbmRzX3NlcCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwaW5nID0gbG9j
YWxlY29udigpLT5ncm91cGluZzsKICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZmxhZzsK
ICAgICAgICAgICAgICAgIGNhc2UgJy4nOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNo
ID0gKmZtdCsrKSA9PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuMiA9
IDA7IGNwID0gZm10OyB3aGlsZSAoKCh1bnNpZ25lZCkoKCpjcCkgLSAnMCcpIDw9IDkpKSB7IG4y
ID0gMTAgKiBuMiArICgoKmNwKSAtICcwJyk7IGNwKys7IH0gaWYgKCpjcCA9PSAnJCcpIHsgaW50
IGhvbGQgPSBuZXh0YXJnOyBpZiAoYXJndGFibGUgPT0gMCkgeyBhcmd0YWJsZSA9IHN0YXRhcmd0
YWJsZTsgX19maW5kX2FyZ3VtZW50cyAoZm10MCwgb3JnYXAsICZhcmd0YWJsZSk7IH0gbmV4dGFy
ZyA9IG4yOyBwcmVjID0gKChhcmd0YWJsZSAhPSAwKSA/ICooKGludCopKCZhcmd0YWJsZVtuZXh0
YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIGludCkpKTsgbmV4
dGFyZyA9IGhvbGQ7IGZtdCA9ICsrY3A7IH0gZWxzZSB7IHByZWMgPSAoKGFyZ3RhYmxlICE9IDAp
ID8gKigoaW50KikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJnKyssIF9fYnVpbHRp
bl92YV9hcmcoKGFwKSwgaW50KSkpOyB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gcmZsYWc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgcHJlYyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoKHVuc2lnbmVk
KSgoY2gpIC0gJzAnKSA8PSA5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
ZWMgPSAxMCAqIHByZWMgKyAoKGNoKSAtICcwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2ggPSAqZm10Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byByZXN3aXRjaDsKICAgICAgICAgICAgICAgIGNhc2UgJzAnOgoKCgoK
CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IDB4MDgwOwogICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIHJmbGFnOwogICAgICAgICAgICAgICAgY2FzZSAnMSc6IGNhc2UgJzInOiBj
YXNlICczJzogY2FzZSAnNCc6CiAgICAgICAgICAgICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNh
c2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAw
OwogICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbiA9IDEwICogbiArICgoY2gpIC0gJzAnKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaCA9ICpmbXQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoKCh1
bnNpZ25lZCkoKGNoKSAtICcwJykgPD0gOSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Y2ggPT0gJyQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGFyZyA9IG47
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3RhYmxlID09IDApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3RhYmxlID0gc3RhdGFyZ3Rh
YmxlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19maW5kX2FyZ3Vt
ZW50cyAoZm10MCwgb3JnYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmFyZ3RhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZmxhZzsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG47CiAgICAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7CgogICAgICAgICAgICAgICAgY2FzZSAnTCc6CiAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IDB4MDA4OwogICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHJmbGFnOwoKICAgICAgICAgICAgICAgIGNhc2UgJ2gnOgogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZmxhZ3MgJiAweDA0MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdzICY9IH4weDA0MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cyB8PSAweDIwMDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IDB4MDQwOwogICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHJmbGFnOwogICAgICAgICAgICAgICAgY2FzZSAnaic6CiAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdzIHw9IDB4MTAwMDsKICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZmxh
ZzsKICAgICAgICAgICAgICAgIGNhc2UgJ2wnOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ZmxhZ3MgJiAweDAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICY9
IH4weDAxMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSAweDAyMDsK
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MgfD0gMHgwMTA7CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmZsYWc7
CiAgICAgICAgICAgICAgICBjYXNlICdxJzoKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mg
fD0gMHgwMjA7CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmZsYWc7CiAgICAgICAgICAg
ICAgICBjYXNlICd0JzoKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHg4MDA7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmZsYWc7CiAgICAgICAgICAgICAgICBjYXNlICd6
JzoKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHg0MDA7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gcmZsYWc7CiAgICAgICAgICAgICAgICBjYXNlICdDJzoKICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHgwMTA7CgogICAgICAgICAgICAgICAgY2FzZSAnYyc6
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIDB4MDEwKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWJzdGF0ZV90IG1iczsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbWJzZXFsZW47CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lbXNldCgmbWJzLCAwLCBzaXplb2YobWJzKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWJzZXFsZW4gPSB3Y3J0b21iKGNwID0gYnVmLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAod2NoYXJfdCkoKGFyZ3RhYmxlICE9IDApID8gKigod2ludF90Kiko
JmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJnKyssIF9fYnVpbHRpbl92YV9hcmcoKGFw
KSwgd2ludF90KSkpLCAmbWJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bWJzZXFsZW4gPT0gKHNpemVfdCktMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnAtPl9mbGFncyB8PSAweDAwNDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gKGludCltYnNlcWxlbjsK
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqKGNwID0gYnVmKSA9ICgoYXJndGFibGUgIT0gMCkgPyAqKChpbnQqKSgmYXJndGFi
bGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywgX19idWlsdGluX3ZhX2FyZygoYXApLCBpbnQp
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDE7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICdcMCc7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnRCc6CiAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IDB4MDEwOwoKICAgICAgICAgICAgICAgIGNhc2Ug
J2QnOgogICAgICAgICAgICAgICAgY2FzZSAnaSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChmbGFncyAmICgweDEwMDB8MHg0MDB8MHg4MDB8MHgwMjApKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWp2YWwgPSAoZmxhZ3MmMHgxMDAwID8gKChhcmd0YWJsZSAhPSAwKSA/
ICooKGludG1heF90KikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJnKyssIF9fYnVp
bHRpbl92YV9hcmcoKGFwKSwgaW50bWF4X3QpKSkgOiBmbGFncyYweDQwMCA/IChpbnRtYXhfdCko
KGFyZ3RhYmxlICE9IDApID8gKigoc2l6ZV90KikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChu
ZXh0YXJnKyssIF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgc2l6ZV90KSkpIDogZmxhZ3MmMHg4MDAg
PyAoaW50bWF4X3QpKChhcmd0YWJsZSAhPSAwKSA/ICooKHB0cmRpZmZfdCopKCZhcmd0YWJsZVtu
ZXh0YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIHB0cmRpZmZf
dCkpKSA6IChpbnRtYXhfdCkoKGFyZ3RhYmxlICE9IDApID8gKigobG9uZyBsb25nKikoJmFyZ3Rh
YmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJnKyssIF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgbG9u
ZyBsb25nKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGludG1heF90
KXVqdmFsIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWp2
YWwgPSAtdWp2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdu
ID0gJy0nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bHZhbCA9
IChmbGFncyYweDAxMCA/ICgoYXJndGFibGUgIT0gMCkgPyAqKChsb25nKikoJmFyZ3RhYmxlW25l
eHRhcmcrK10pKSA6IChuZXh0YXJnKyssIF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgbG9uZykpKSA6
IGZsYWdzJjB4MDQwID8gKGxvbmcpKHNob3J0KSgoYXJndGFibGUgIT0gMCkgPyAqKChpbnQqKSgm
YXJndGFibGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywgX19idWlsdGluX3ZhX2FyZygoYXAp
LCBpbnQpKSkgOiBmbGFncyYweDIwMDAgPyAobG9uZykoc2lnbmVkIGNoYXIpKChhcmd0YWJsZSAh
PSAwKSA/ICooKGludCopKCZhcmd0YWJsZVtuZXh0YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1
aWx0aW5fdmFfYXJnKChhcCksIGludCkpKSA6IChsb25nKSgoYXJndGFibGUgIT0gMCkgPyAqKChp
bnQqKSgmYXJndGFibGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywgX19idWlsdGluX3ZhX2Fy
ZygoYXApLCBpbnQpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobG9u
Zyl1bHZhbCA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVs
dmFsID0gLXVsdmFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ln
biA9ICctJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDEwOwogICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIG51bWJlcjsKICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAg
ICAgICAgICAgICAgY2FzZSAnRSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGNoYXIgPSBj
aDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWMgPCAwKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByZWMgPSA2ICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWMrKzsKICAgICAgICAgICAgICAg
ICAgICAgICAgZ290byBmcF9iZWdpbjsKICAgICAgICAgICAgICAgIGNhc2UgJ2YnOgogICAgICAg
ICAgICAgICAgY2FzZSAnRic6CiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGNoYXIgPSAnXDAn
OwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZwX2JlZ2luOwogICAgICAgICAgICAgICAg
Y2FzZSAnZyc6CiAgICAgICAgICAgICAgICBjYXNlICdHJzoKICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwY2hhciA9IGNoIC0gKCdnJyAtICdlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChwcmVjID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYyA9IDE7CmZw
X2JlZ2luOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlYyA8IDApCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJlYyA9IDY7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChkdG9hcmVzdWx0ICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mcmVl
ZHRvYShkdG9hcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgMHgw
MDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZGJsID0gKChhcmd0YWJsZSAh
PSAwKSA/ICooKGxvbmcgZG91YmxlKikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJn
KyssIF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgbG9uZyBkb3VibGUpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZHRvYXJlc3VsdCA9IGNwID0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19sZHRvYSgmbGRibCwgZXhwY2hhciA/IDIgOiAzLCBwcmVjLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhwdCwgJnNpZ25mbGFnLCAmZHRvYWVu
ZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGJsID0gKChhcmd0YWJsZSAhPSAwKSA/ICooKGRvdWJsZSopKCZhcmd0YWJs
ZVtuZXh0YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIGRvdWJs
ZSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdG9hcmVzdWx0ID0gY3AgPQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2R0b2EoZGJsLCBleHBjaGFyID8g
MiA6IDMsIHByZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleHB0LCAm
c2lnbmZsYWcsICZkdG9hZW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ZXhwdCA9PSA5OTk5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw
dCA9IDB4N2ZmZmZmZmY7CnsKICAgICAgICBpbnQgUTsKICAgICAgICBjaGFyIFFidWZbODBdOwog
ICAgICAgIGZvciAoUSA9IDA7IFEgPCA4OyBRKyspIHsKICAgICAgICAgICAgICAgIHNwcmludGYo
UWJ1ZiArIFEgKiAyLCAiJTAyeFxuIiwgKCh1bnNpZ25lZCBjaGFyICopJmRibClbUV0pOwogICAg
ICAgIH0KICAgICAgICB3cml0ZSgyLCBRYnVmLCAxNyk7Cn0KICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2lnbmZsYWcpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2lnbiA9ICctJzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGV4cHQgPT0gMHg3ZmZmZmZmZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgqY3AgPT0gJ04nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cCA9IChjaCA+PSAnYScpID8gIm5hbiIgOiAiTkFOIjsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpZ24gPSAnXDAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3AgPSAo
Y2ggPj0gJ2EnKSA/ICJpbmYiIDogIklORiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZSA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHgx
MDA7CiAgICAgICAgICAgICAgICAgICAgICAgIG5kaWcgPSBkdG9hZW5kIC0gY3A7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnZycgfHwgY2ggPT0gJ0cnKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHQgPiAtNCAmJiBleHB0IDw9IHByZWMpIHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBjaGFyID0gJ1wwJzsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIDB4MDAxKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjIC09IGV4
cHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSBuZGlnIC0gZXhw
dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjIDwgMCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYyA9IDA7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCgoKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShmbGFncyAmIDB4MDAxKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYyA9IG5kaWc7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBjaGFyKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhwc2l6ZSA9IGV4cG9uZW50KGV4cHN0ciwgZXhwdCAtIDEsIGV4cGNo
YXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBleHBzaXplICsgcHJl
YzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlYyA+IDEgfHwgZmxhZ3Mg
JiAweDAwMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrc2l6ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4cHQgPiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZSA9IGV4cHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDE7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjIHx8IGZsYWdzICYgMHgwMDEpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplICs9IHByZWMgKyAxOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cGluZyAmJiBleHB0ID4gMCkgewoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zZXBzID0gbnJlcGVhdHMg
PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhZCA9IGV4cHQ7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKmdyb3VwaW5n
ICE9IDB4N2YpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGxlYWQgPD0gKmdyb3VwaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZWFkIC09ICpncm91cGluZzsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCooZ3JvdXBpbmcrMSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc2Vw
cysrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdyb3VwaW5nKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5yZXBlYXRzKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplICs9
IG5zZXBzICsgbnJlcGVhdHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWFkID0gZXhwdDsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAg
ICAgICAgICAgICAgICBjYXNlICduJzoKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ZmxhZ3MgJiAweDAyMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKChhcmd0YWJs
ZSAhPSAwKSA/ICooKGxvbmcgbG9uZyAqKikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0
YXJnKyssIF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgbG9uZyBsb25nICopKSkgPSByZXQ7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgMHg0MDApCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKigoYXJndGFibGUgIT0gMCkgPyAqKChzc2l6ZV90ICoqKSgmYXJn
dGFibGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywgX19idWlsdGluX3ZhX2FyZygoYXApLCBz
c2l6ZV90ICopKSkgPSAoc3NpemVfdClyZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGZsYWdzICYgMHg4MDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKigoYXJn
dGFibGUgIT0gMCkgPyAqKChwdHJkaWZmX3QgKiopKCZhcmd0YWJsZVtuZXh0YXJnKytdKSkgOiAo
bmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIHB0cmRpZmZfdCAqKSkpID0gcmV0Owog
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIDB4MTAwMCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqKChhcmd0YWJsZSAhPSAwKSA/ICooKGludG1heF90ICoq
KSgmYXJndGFibGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywgX19idWlsdGluX3ZhX2FyZygo
YXApLCBpbnRtYXhfdCAqKSkpID0gcmV0OwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChmbGFncyAmIDB4MDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooKGFyZ3Rh
YmxlICE9IDApID8gKigobG9uZyAqKikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJn
KyssIF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgbG9uZyAqKSkpID0gcmV0OwogICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIDB4MDQwKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICooKGFyZ3RhYmxlICE9IDApID8gKigoc2hvcnQgKiopKCZhcmd0YWJsZVtuZXh0
YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIHNob3J0ICopKSkg
PSByZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgMHgyMDAwKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooKGFyZ3RhYmxlICE9IDApID8gKigoc2ln
bmVkIGNoYXIgKiopKCZhcmd0YWJsZVtuZXh0YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0
aW5fdmFfYXJnKChhcCksIHNpZ25lZCBjaGFyICopKSkgPSByZXQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKChhcmd0YWJsZSAh
PSAwKSA/ICooKGludCAqKikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJnKyssIF9f
YnVpbHRpbl92YV9hcmcoKGFwKSwgaW50ICopKSkgPSByZXQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgY2FzZSAnTyc6CiAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdzIHw9IDB4MDEwOwoKICAgICAgICAgICAgICAgIGNhc2UgJ28nOgogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiAoMHgxMDAwfDB4NDAwfDB4ODAwfDB4MDIwKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1anZhbCA9IChmbGFncyYweDEwMDAgPyAo
KGFyZ3RhYmxlICE9IDApID8gKigodWludG1heF90KikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6
IChuZXh0YXJnKyssIF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgdWludG1heF90KSkpIDogZmxhZ3Mm
MHg0MDAgPyAodWludG1heF90KSgoYXJndGFibGUgIT0gMCkgPyAqKChzaXplX3QqKSgmYXJndGFi
bGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywgX19idWlsdGluX3ZhX2FyZygoYXApLCBzaXpl
X3QpKSkgOiBmbGFncyYweDgwMCA/ICh1aW50bWF4X3QpKChhcmd0YWJsZSAhPSAwKSA/ICooKHB0
cmRpZmZfdCopKCZhcmd0YWJsZVtuZXh0YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0aW5f
dmFfYXJnKChhcCksIHB0cmRpZmZfdCkpKSA6ICh1aW50bWF4X3QpKChhcmd0YWJsZSAhPSAwKSA/
ICooKHVuc2lnbmVkIGxvbmcgbG9uZyopKCZhcmd0YWJsZVtuZXh0YXJnKytdKSkgOiAobmV4dGFy
ZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIHVuc2lnbmVkIGxvbmcgbG9uZykpKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bHZhbCA9IChmbGFncyYweDAxMCA/ICgoYXJndGFibGUgIT0gMCkgPyAqKCh1X2xvbmcqKSgmYXJn
dGFibGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywgX19idWlsdGluX3ZhX2FyZygoYXApLCB1
X2xvbmcpKSkgOiBmbGFncyYweDA0MCA/ICh1X2xvbmcpKHVfc2hvcnQpKChhcmd0YWJsZSAhPSAw
KSA/ICooKGludCopKCZhcmd0YWJsZVtuZXh0YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0
aW5fdmFfYXJnKChhcCksIGludCkpKSA6IGZsYWdzJjB4MjAwMCA/ICh1X2xvbmcpKHVfY2hhciko
KGFyZ3RhYmxlICE9IDApID8gKigoaW50KikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0
YXJnKyssIF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgaW50KSkpIDogKHVfbG9uZykoKGFyZ3RhYmxl
ICE9IDApID8gKigodV9pbnQqKSgmYXJndGFibGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywg
X19idWlsdGluX3ZhX2FyZygoYXApLCB1X2ludCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2UgPSA4OwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5vc2lnbjsKICAgICAgICAg
ICAgICAgIGNhc2UgJ3AnOgoKCgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgdWp2YWwgPSAo
dWludG1heF90KSh1aW50cHRyX3QpKChhcmd0YWJsZSAhPSAwKSA/ICooKHZvaWQgKiopKCZhcmd0
YWJsZVtuZXh0YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIHZv
aWQgKikpKTsKICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDE2OwogICAgICAgICAgICAg
ICAgICAgICAgICB4ZGlncyA9IHhkaWdzX2xvd2VyOwogICAgICAgICAgICAgICAgICAgICAgICBm
bGFncyA9IGZsYWdzIHwgMHgxMDAwOwogICAgICAgICAgICAgICAgICAgICAgICBveFsxXSA9ICd4
JzsKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBub3NpZ247CiAgICAgICAgICAgICAgICBj
YXNlICdTJzoKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHgwMTA7CgogICAgICAg
ICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIDB4
MDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqd2NwOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udmJ1ZiAhPSAwKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShjb252YnVmKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKHdjcCA9ICgoYXJndGFibGUgIT0gMCkgPyAqKCh3Y2hh
cl90ICoqKSgmYXJndGFibGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywgX19idWlsdGluX3Zh
X2FyZygoYXApLCB3Y2hhcl90ICopKSkpID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcCA9ICIobnVsbCkiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmJ1
ZiA9IF9fd2NzY29udih3Y3AsIHByZWMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnZidWYgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmcC0+X2ZsYWdzIHw9IDB4MDA0MDsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNwID0gY29udmJ1ZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGNwID0gKChhcmd0YWJsZSAh
PSAwKSA/ICooKGNoYXIgKiopKCZhcmd0YWJsZVtuZXh0YXJnKytdKSkgOiAobmV4dGFyZysrLCBf
X2J1aWx0aW5fdmFfYXJnKChhcCksIGNoYXIgKikpKSkgPT0gMCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcCA9ICIobnVsbCkiOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cHJlYyA+PSAwKSB7CgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpw
ID0gbWVtY2hyKGNwLCAwLCAoc2l6ZV90KXByZWMpOwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocCAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplID0gcCAtIGNwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHNpemUgPiBwcmVjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplID0gcHJlYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBwcmVj
OwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplID0gc3RybGVuKGNwKTsKICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9
ICdcMCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2Fz
ZSAnVSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IDB4MDEwOwoKICAgICAgICAg
ICAgICAgIGNhc2UgJ3UnOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiAoMHgx
MDAwfDB4NDAwfDB4ODAwfDB4MDIwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
anZhbCA9IChmbGFncyYweDEwMDAgPyAoKGFyZ3RhYmxlICE9IDApID8gKigodWludG1heF90Kiko
JmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJnKyssIF9fYnVpbHRpbl92YV9hcmcoKGFw
KSwgdWludG1heF90KSkpIDogZmxhZ3MmMHg0MDAgPyAodWludG1heF90KSgoYXJndGFibGUgIT0g
MCkgPyAqKChzaXplX3QqKSgmYXJndGFibGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywgX19i
dWlsdGluX3ZhX2FyZygoYXApLCBzaXplX3QpKSkgOiBmbGFncyYweDgwMCA/ICh1aW50bWF4X3Qp
KChhcmd0YWJsZSAhPSAwKSA/ICooKHB0cmRpZmZfdCopKCZhcmd0YWJsZVtuZXh0YXJnKytdKSkg
OiAobmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIHB0cmRpZmZfdCkpKSA6ICh1aW50
bWF4X3QpKChhcmd0YWJsZSAhPSAwKSA/ICooKHVuc2lnbmVkIGxvbmcgbG9uZyopKCZhcmd0YWJs
ZVtuZXh0YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIHVuc2ln
bmVkIGxvbmcgbG9uZykpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bHZhbCA9IChmbGFncyYweDAxMCA/ICgoYXJndGFibGUg
IT0gMCkgPyAqKCh1X2xvbmcqKSgmYXJndGFibGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywg
X19idWlsdGluX3ZhX2FyZygoYXApLCB1X2xvbmcpKSkgOiBmbGFncyYweDA0MCA/ICh1X2xvbmcp
KHVfc2hvcnQpKChhcmd0YWJsZSAhPSAwKSA/ICooKGludCopKCZhcmd0YWJsZVtuZXh0YXJnKytd
KSkgOiAobmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIGludCkpKSA6IGZsYWdzJjB4
MjAwMCA/ICh1X2xvbmcpKHVfY2hhcikoKGFyZ3RhYmxlICE9IDApID8gKigoaW50KikoJmFyZ3Rh
YmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJnKyssIF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgaW50
KSkpIDogKHVfbG9uZykoKGFyZ3RhYmxlICE9IDApID8gKigodV9pbnQqKSgmYXJndGFibGVbbmV4
dGFyZysrXSkpIDogKG5leHRhcmcrKywgX19idWlsdGluX3ZhX2FyZygoYXApLCB1X2ludCkpKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBub3NpZ247CiAgICAgICAgICAgICAgICBjYXNlICdYJzoKICAgICAgICAgICAgICAg
ICAgICAgICAgeGRpZ3MgPSB4ZGlnc191cHBlcjsKICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBoZXg7CiAgICAgICAgICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgICAgICAgICAgICAg
eGRpZ3MgPSB4ZGlnc19sb3dlcjsKaGV4OgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxh
Z3MgJiAoMHgxMDAwfDB4NDAwfDB4ODAwfDB4MDIwKSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1anZhbCA9IChmbGFncyYweDEwMDAgPyAoKGFyZ3RhYmxlICE9IDApID8gKigodWlu
dG1heF90KikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJnKyssIF9fYnVpbHRpbl92
YV9hcmcoKGFwKSwgdWludG1heF90KSkpIDogZmxhZ3MmMHg0MDAgPyAodWludG1heF90KSgoYXJn
dGFibGUgIT0gMCkgPyAqKChzaXplX3QqKSgmYXJndGFibGVbbmV4dGFyZysrXSkpIDogKG5leHRh
cmcrKywgX19idWlsdGluX3ZhX2FyZygoYXApLCBzaXplX3QpKSkgOiBmbGFncyYweDgwMCA/ICh1
aW50bWF4X3QpKChhcmd0YWJsZSAhPSAwKSA/ICooKHB0cmRpZmZfdCopKCZhcmd0YWJsZVtuZXh0
YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIHB0cmRpZmZfdCkp
KSA6ICh1aW50bWF4X3QpKChhcmd0YWJsZSAhPSAwKSA/ICooKHVuc2lnbmVkIGxvbmcgbG9uZyop
KCZhcmd0YWJsZVtuZXh0YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChh
cCksIHVuc2lnbmVkIGxvbmcgbG9uZykpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bHZhbCA9IChmbGFncyYweDAxMCA/ICgo
YXJndGFibGUgIT0gMCkgPyAqKCh1X2xvbmcqKSgmYXJndGFibGVbbmV4dGFyZysrXSkpIDogKG5l
eHRhcmcrKywgX19idWlsdGluX3ZhX2FyZygoYXApLCB1X2xvbmcpKSkgOiBmbGFncyYweDA0MCA/
ICh1X2xvbmcpKHVfc2hvcnQpKChhcmd0YWJsZSAhPSAwKSA/ICooKGludCopKCZhcmd0YWJsZVtu
ZXh0YXJnKytdKSkgOiAobmV4dGFyZysrLCBfX2J1aWx0aW5fdmFfYXJnKChhcCksIGludCkpKSA6
IGZsYWdzJjB4MjAwMCA/ICh1X2xvbmcpKHVfY2hhcikoKGFyZ3RhYmxlICE9IDApID8gKigoaW50
KikoJmFyZ3RhYmxlW25leHRhcmcrK10pKSA6IChuZXh0YXJnKyssIF9fYnVpbHRpbl92YV9hcmco
KGFwKSwgaW50KSkpIDogKHVfbG9uZykoKGFyZ3RhYmxlICE9IDApID8gKigodV9pbnQqKSgmYXJn
dGFibGVbbmV4dGFyZysrXSkpIDogKG5leHRhcmcrKywgX19idWlsdGluX3ZhX2FyZygoYXApLCB1
X2ludCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxNjsKCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmbGFncyAmIDB4MDAxICYmCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoZmxhZ3MgJiAoMHgxMDAwfDB4NDAwfDB4ODAwfDB4MDIwKSA/IHVqdmFsICE9IDAgOiB1
bHZhbCAhPSAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBveFsxXSA9IGNoOwoK
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gfjB4MjAwOwoKbm9zaWduOiBzaWduID0g
J1wwJzsKCgoKCgpudW1iZXI6IGlmICgoZHByZWMgPSBwcmVjKSA+PSAwKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzICY9IH4weDA4MDsKCgoKCgoKICAgICAgICAgICAgICAg
ICAgICAgICAgY3AgPSBidWYgKyAxMDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFn
cyAmICgweDEwMDB8MHg0MDB8MHg4MDB8MHgwMjApKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHVqdmFsICE9IDAgfHwgcHJlYyAhPSAwKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3AgPSBfX3VqdG9hKHVqdmFsLCBjcCwgYmFzZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmIDB4MDAxLCB4ZGln
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmIDB4
MjAwLCB0aG91c2FuZHNfc2VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdyb3VwaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodWx2YWwgIT0gMCB8fCBwcmVjICE9IDApCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcCA9IF9fdWx0b2EodWx2YWws
IGNwLCBiYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzICYgMHgwMDEsIHhkaWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdzICYgMHgyMDAsIHRob3VzYW5kc19zZXAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBpbmcpOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBidWYgKyAxMDAgLSBjcDsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNpemUgPiAxMDApCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWJvcnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ1wwJykK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CgogICAgICAgICAgICAg
ICAgICAgICAgICBjcCA9IGJ1ZjsKICAgICAgICAgICAgICAgICAgICAgICAgKmNwID0gY2g7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBz
aWduID0gJ1wwJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICByZWFsc3ogPSBkcHJlYyA+IHNpemUgPyBkcHJlYyA6IHNpemU7
CiAgICAgICAgICAgICAgICBpZiAoc2lnbikKICAgICAgICAgICAgICAgICAgICAgICAgcmVhbHN6
Kys7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChveFsxXSkKICAgICAgICAgICAgICAgICAgICAg
ICAgcmVhbHN6ICs9IDI7CgogICAgICAgICAgICAgICAgcHJzaXplID0gd2lkdGggPiByZWFsc3og
PyB3aWR0aCA6IHJlYWxzejsKICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpcmV0ICsgcHJz
aXplID4gMHg3ZmZmZmZmZikgewogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAoLTEpOwog
ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgfQoKCiAg
ICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgKDB4MDA0fDB4MDgwKSkgPT0gMCkKICAgICAgICAg
ICAgICAgICAgICAgICAgeyBpZiAoKG4gPSAod2lkdGggLSByZWFsc3opKSA+IDApIHsgd2hpbGUg
KG4gPiAxNikgeyB7IGlvdnAtPmlvdl9iYXNlID0gKGJsYW5rcyk7IGlvdnAtPmlvdl9sZW4gPSAo
MTYpOyB1aW8udWlvX3Jlc2lkICs9ICgxNik7IGlvdnArKzsgaWYgKCsrdWlvLnVpb19pb3ZjbnQg
Pj0gOCkgeyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3RvIGVycm9yOyBpb3ZwID0gaW92OyB9
IH07IG4gLT0gMTY7IH0geyBpb3ZwLT5pb3ZfYmFzZSA9IChibGFua3MpOyBpb3ZwLT5pb3ZfbGVu
ID0gKG4pOyB1aW8udWlvX3Jlc2lkICs9IChuKTsgaW92cCsrOyBpZiAoKyt1aW8udWlvX2lvdmNu
dCA+PSA4KSB7IGlmIChfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7IGlvdnAgPSBpb3Y7
IH0gfTsgfSB9OwoKCiAgICAgICAgICAgICAgICBpZiAoc2lnbikgewogICAgICAgICAgICAgICAg
ICAgICAgICB7IGlvdnAtPmlvdl9iYXNlID0gKCZzaWduKTsgaW92cC0+aW92X2xlbiA9ICgxKTsg
dWlvLnVpb19yZXNpZCArPSAoMSk7IGlvdnArKzsgaWYgKCsrdWlvLnVpb19pb3ZjbnQgPj0gOCkg
eyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3RvIGVycm9yOyBpb3ZwID0gaW92OyB9IH07CiAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKG94WzFdKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IG94WzBdID0gJzAnOwogICAgICAgICAgICAgICAgICAgICAgICB7IGlvdnAtPmlvdl9iYXNlID0g
KG94KTsgaW92cC0+aW92X2xlbiA9ICgyKTsgdWlvLnVpb19yZXNpZCArPSAoMik7IGlvdnArKzsg
aWYgKCsrdWlvLnVpb19pb3ZjbnQgPj0gOCkgeyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3Rv
IGVycm9yOyBpb3ZwID0gaW92OyB9IH07CiAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAg
ICAgIGlmICgoZmxhZ3MgJiAoMHgwMDR8MHgwODApKSA9PSAweDA4MCkKICAgICAgICAgICAgICAg
ICAgICAgICAgeyBpZiAoKG4gPSAod2lkdGggLSByZWFsc3opKSA+IDApIHsgd2hpbGUgKG4gPiAx
NikgeyB7IGlvdnAtPmlvdl9iYXNlID0gKHplcm9lcyk7IGlvdnAtPmlvdl9sZW4gPSAoMTYpOyB1
aW8udWlvX3Jlc2lkICs9ICgxNik7IGlvdnArKzsgaWYgKCsrdWlvLnVpb19pb3ZjbnQgPj0gOCkg
eyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3RvIGVycm9yOyBpb3ZwID0gaW92OyB9IH07IG4g
LT0gMTY7IH0geyBpb3ZwLT5pb3ZfYmFzZSA9ICh6ZXJvZXMpOyBpb3ZwLT5pb3ZfbGVuID0gKG4p
OyB1aW8udWlvX3Jlc2lkICs9IChuKTsgaW92cCsrOyBpZiAoKyt1aW8udWlvX2lvdmNudCA+PSA4
KSB7IGlmIChfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7IGlvdnAgPSBpb3Y7IH0gfTsg
fSB9OwoKCiAgICAgICAgICAgICAgICB7IGlmICgobiA9IChkcHJlYyAtIHNpemUpKSA+IDApIHsg
d2hpbGUgKG4gPiAxNikgeyB7IGlvdnAtPmlvdl9iYXNlID0gKHplcm9lcyk7IGlvdnAtPmlvdl9s
ZW4gPSAoMTYpOyB1aW8udWlvX3Jlc2lkICs9ICgxNik7IGlvdnArKzsgaWYgKCsrdWlvLnVpb19p
b3ZjbnQgPj0gOCkgeyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3RvIGVycm9yOyBpb3ZwID0g
aW92OyB9IH07IG4gLT0gMTY7IH0geyBpb3ZwLT5pb3ZfYmFzZSA9ICh6ZXJvZXMpOyBpb3ZwLT5p
b3ZfbGVuID0gKG4pOyB1aW8udWlvX3Jlc2lkICs9IChuKTsgaW92cCsrOyBpZiAoKyt1aW8udWlv
X2lvdmNudCA+PSA4KSB7IGlmIChfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7IGlvdnAg
PSBpb3Y7IH0gfTsgfSB9OwoKCgogICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIDB4MTAwKSA9
PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHsgaW92cC0+aW92X2Jhc2UgPSAoY3ApOyBp
b3ZwLT5pb3ZfbGVuID0gKHNpemUpOyB1aW8udWlvX3Jlc2lkICs9IChzaXplKTsgaW92cCsrOyBp
ZiAoKyt1aW8udWlvX2lvdmNudCA+PSA4KSB7IGlmIChfX3NwcmludChmcCwgJnVpbykpIGdvdG8g
ZXJyb3I7IGlvdnAgPSBpb3Y7IH0gfTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghZXhwY2hhcikgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChleHB0IDw9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsgaW92cC0+aW92X2Jhc2UgPSAoemVyb2VzKTsgaW92cC0+aW92X2xlbiA9ICgxKTsg
dWlvLnVpb19yZXNpZCArPSAoMSk7IGlvdnArKzsgaWYgKCsrdWlvLnVpb19pb3ZjbnQgPj0gOCkg
eyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3RvIGVycm9yOyBpb3ZwID0gaW92OyB9IH07CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlYyB8fCBmbGFncyAm
IDB4MDAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
IGlvdnAtPmlvdl9iYXNlID0gKGRlY2ltYWxfcG9pbnQpOyBpb3ZwLT5pb3ZfbGVuID0gKDEpOyB1
aW8udWlvX3Jlc2lkICs9ICgxKTsgaW92cCsrOyBpZiAoKyt1aW8udWlvX2lvdmNudCA+PSA4KSB7
IGlmIChfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7IGlvdnAgPSBpb3Y7IH0gfTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWYgKChuID0gKC1leHB0KSkg
PiAwKSB7IHdoaWxlIChuID4gMTYpIHsgeyBpb3ZwLT5pb3ZfYmFzZSA9ICh6ZXJvZXMpOyBpb3Zw
LT5pb3ZfbGVuID0gKDE2KTsgdWlvLnVpb19yZXNpZCArPSAoMTYpOyBpb3ZwKys7IGlmICgrK3Vp
by51aW9faW92Y250ID49IDgpIHsgaWYgKF9fc3ByaW50KGZwLCAmdWlvKSkgZ290byBlcnJvcjsg
aW92cCA9IGlvdjsgfSB9OyBuIC09IDE2OyB9IHsgaW92cC0+aW92X2Jhc2UgPSAoemVyb2VzKTsg
aW92cC0+aW92X2xlbiA9IChuKTsgdWlvLnVpb19yZXNpZCArPSAobik7IGlvdnArKzsgaWYgKCsr
dWlvLnVpb19pb3ZjbnQgPj0gOCkgeyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3RvIGVycm9y
OyBpb3ZwID0gaW92OyB9IH07IH0gfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmVjICs9IGV4cHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgbjIgPSAo
ZHRvYWVuZCkgLSAoY3ApOyBpZiAobjIgPiAobGVhZCkpIG4yID0gKGxlYWQpOyBpZiAobjIgPiAw
KSB7IGlvdnAtPmlvdl9iYXNlID0gKChjcCkpOyBpb3ZwLT5pb3ZfbGVuID0gKG4yKTsgdWlvLnVp
b19yZXNpZCArPSAobjIpOyBpb3ZwKys7IGlmICgrK3Vpby51aW9faW92Y250ID49IDgpIHsgaWYg
KF9fc3ByaW50KGZwLCAmdWlvKSkgZ290byBlcnJvcjsgaW92cCA9IGlvdjsgfSB9OyB7IGlmICgo
biA9ICgobGVhZCkgLSAobjIgPiAwID8gbjIgOiAwKSkpID4gMCkgeyB3aGlsZSAobiA+IDE2KSB7
IHsgaW92cC0+aW92X2Jhc2UgPSAoKHplcm9lcykpOyBpb3ZwLT5pb3ZfbGVuID0gKDE2KTsgdWlv
LnVpb19yZXNpZCArPSAoMTYpOyBpb3ZwKys7IGlmICgrK3Vpby51aW9faW92Y250ID49IDgpIHsg
aWYgKF9fc3ByaW50KGZwLCAmdWlvKSkgZ290byBlcnJvcjsgaW92cCA9IGlvdjsgfSB9OyBuIC09
IDE2OyB9IHsgaW92cC0+aW92X2Jhc2UgPSAoKHplcm9lcykpOyBpb3ZwLT5pb3ZfbGVuID0gKG4p
OyB1aW8udWlvX3Jlc2lkICs9IChuKTsgaW92cCsrOyBpZiAoKyt1aW8udWlvX2lvdmNudCA+PSA4
KSB7IGlmIChfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7IGlvdnAgPSBpb3Y7IH0gfTsg
fSB9OyB9IHdoaWxlKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3AgKz0gbGVhZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChn
cm91cGluZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAobnNlcHM+MCB8fCBucmVwZWF0cz4wKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5yZXBlYXRzID4gMCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5yZXBlYXRzLS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cGluZy0tOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNlcHMtLTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBp
b3ZwLT5pb3ZfYmFzZSA9ICgmdGhvdXNhbmRzX3NlcCk7IGlvdnAtPmlvdl9sZW4gPSAoMSk7IHVp
by51aW9fcmVzaWQgKz0gKDEpOyBpb3ZwKys7IGlmICgrK3Vpby51aW9faW92Y250ID49IDgpIHsg
aWYgKF9fc3ByaW50KGZwLCAmdWlvKSkgZ290byBlcnJvcjsgaW92cCA9IGlvdjsgfSB9OwoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7
IG4yID0gKGR0b2FlbmQpIC0gKGNwKTsgaWYgKG4yID4gKCpncm91cGluZykpIG4yID0gKCpncm91
cGluZyk7IGlmIChuMiA+IDApIHsgaW92cC0+aW92X2Jhc2UgPSAoKGNwKSk7IGlvdnAtPmlvdl9s
ZW4gPSAobjIpOyB1aW8udWlvX3Jlc2lkICs9IChuMik7IGlvdnArKzsgaWYgKCsrdWlvLnVpb19p
b3ZjbnQgPj0gOCkgeyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3RvIGVycm9yOyBpb3ZwID0g
aW92OyB9IH07IHsgaWYgKChuID0gKCgqZ3JvdXBpbmcpIC0gKG4yID4gMCA/IG4yIDogMCkpKSA+
IDApIHsgd2hpbGUgKG4gPiAxNikgeyB7IGlvdnAtPmlvdl9iYXNlID0gKCh6ZXJvZXMpKTsgaW92
cC0+aW92X2xlbiA9ICgxNik7IHVpby51aW9fcmVzaWQgKz0gKDE2KTsgaW92cCsrOyBpZiAoKyt1
aW8udWlvX2lvdmNudCA+PSA4KSB7IGlmIChfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7
IGlvdnAgPSBpb3Y7IH0gfTsgbiAtPSAxNjsgfSB7IGlvdnAtPmlvdl9iYXNlID0gKCh6ZXJvZXMp
KTsgaW92cC0+aW92X2xlbiA9IChuKTsgdWlvLnVpb19yZXNpZCArPSAobik7IGlvdnArKzsgaWYg
KCsrdWlvLnVpb19pb3ZjbnQgPj0gOCkgeyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3RvIGVy
cm9yOyBpb3ZwID0gaW92OyB9IH07IH0gfTsgfSB3aGlsZSgwKTsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3AgKz0gKmdyb3VwaW5nOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjcCA+IGR0b2FlbmQp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3AgPSBkdG9hZW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWMgfHwgZmxhZ3Mg
JiAweDAwMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eyBpb3ZwLT5pb3ZfYmFzZSA9IChkZWNpbWFsX3BvaW50KTsgaW92cC0+aW92X2xlbiA9ICgxKTsg
dWlvLnVpb19yZXNpZCArPSAoMSk7IGlvdnArKzsgaWYgKCsrdWlvLnVpb19pb3ZjbnQgPj0gOCkg
eyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3RvIGVycm9yOyBpb3ZwID0gaW92OyB9IH07CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvIHsgbjIgPSAoZHRvYWVuZCkgLSAoY3ApOyBpZiAobjIgPiAocHJlYykpIG4yID0g
KHByZWMpOyBpZiAobjIgPiAwKSB7IGlvdnAtPmlvdl9iYXNlID0gKChjcCkpOyBpb3ZwLT5pb3Zf
bGVuID0gKG4yKTsgdWlvLnVpb19yZXNpZCArPSAobjIpOyBpb3ZwKys7IGlmICgrK3Vpby51aW9f
aW92Y250ID49IDgpIHsgaWYgKF9fc3ByaW50KGZwLCAmdWlvKSkgZ290byBlcnJvcjsgaW92cCA9
IGlvdjsgfSB9OyB7IGlmICgobiA9ICgocHJlYykgLSAobjIgPiAwID8gbjIgOiAwKSkpID4gMCkg
eyB3aGlsZSAobiA+IDE2KSB7IHsgaW92cC0+aW92X2Jhc2UgPSAoKHplcm9lcykpOyBpb3ZwLT5p
b3ZfbGVuID0gKDE2KTsgdWlvLnVpb19yZXNpZCArPSAoMTYpOyBpb3ZwKys7IGlmICgrK3Vpby51
aW9faW92Y250ID49IDgpIHsgaWYgKF9fc3ByaW50KGZwLCAmdWlvKSkgZ290byBlcnJvcjsgaW92
cCA9IGlvdjsgfSB9OyBuIC09IDE2OyB9IHsgaW92cC0+aW92X2Jhc2UgPSAoKHplcm9lcykpOyBp
b3ZwLT5pb3ZfbGVuID0gKG4pOyB1aW8udWlvX3Jlc2lkICs9IChuKTsgaW92cCsrOyBpZiAoKyt1
aW8udWlvX2lvdmNudCA+PSA4KSB7IGlmIChfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7
IGlvdnAgPSBpb3Y7IH0gfTsgfSB9OyB9IHdoaWxlKDApOwogICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjID4gMSB8
fCBmbGFncyAmIDB4MDAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWZbMF0gPSAqY3ArKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJ1ZlsxXSA9ICpkZWNpbWFsX3BvaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeyBpb3ZwLT5pb3ZfYmFzZSA9IChidWYpOyBpb3ZwLT5pb3ZfbGVuID0gKDIpOyB1
aW8udWlvX3Jlc2lkICs9ICgyKTsgaW92cCsrOyBpZiAoKyt1aW8udWlvX2lvdmNudCA+PSA4KSB7
IGlmIChfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7IGlvdnAgPSBpb3Y7IH0gfTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaW92cC0+aW92X2Jhc2UgPSAo
Y3ApOyBpb3ZwLT5pb3ZfbGVuID0gKG5kaWctMSk7IHVpby51aW9fcmVzaWQgKz0gKG5kaWctMSk7
IGlvdnArKzsgaWYgKCsrdWlvLnVpb19pb3ZjbnQgPj0gOCkgeyBpZiAoX19zcHJpbnQoZnAsICZ1
aW8pKSBnb3RvIGVycm9yOyBpb3ZwID0gaW92OyB9IH07CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7IGlmICgobiA9IChwcmVjIC0gbmRpZykpID4gMCkgeyB3aGlsZSAo
biA+IDE2KSB7IHsgaW92cC0+aW92X2Jhc2UgPSAoemVyb2VzKTsgaW92cC0+aW92X2xlbiA9ICgx
Nik7IHVpby51aW9fcmVzaWQgKz0gKDE2KTsgaW92cCsrOyBpZiAoKyt1aW8udWlvX2lvdmNudCA+
PSA4KSB7IGlmIChfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7IGlvdnAgPSBpb3Y7IH0g
fTsgbiAtPSAxNjsgfSB7IGlvdnAtPmlvdl9iYXNlID0gKHplcm9lcyk7IGlvdnAtPmlvdl9sZW4g
PSAobik7IHVpby51aW9fcmVzaWQgKz0gKG4pOyBpb3ZwKys7IGlmICgrK3Vpby51aW9faW92Y250
ID49IDgpIHsgaWYgKF9fc3ByaW50KGZwLCAmdWlvKSkgZ290byBlcnJvcjsgaW92cCA9IGlvdjsg
fSB9OyB9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlvdnAtPmlvdl9iYXNlID0gKGNwKTsg
aW92cC0+aW92X2xlbiA9ICgxKTsgdWlvLnVpb19yZXNpZCArPSAoMSk7IGlvdnArKzsgaWYgKCsr
dWlvLnVpb19pb3ZjbnQgPj0gOCkgeyBpZiAoX19zcHJpbnQoZnAsICZ1aW8pKSBnb3RvIGVycm9y
OyBpb3ZwID0gaW92OyB9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpb3Zw
LT5pb3ZfYmFzZSA9IChleHBzdHIpOyBpb3ZwLT5pb3ZfbGVuID0gKGV4cHNpemUpOyB1aW8udWlv
X3Jlc2lkICs9IChleHBzaXplKTsgaW92cCsrOyBpZiAoKyt1aW8udWlvX2lvdmNudCA+PSA4KSB7
IGlmIChfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7IGlvdnAgPSBpb3Y7IH0gfTsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKCgoKICAgICAgICAgICAg
ICAgIGlmIChmbGFncyAmIDB4MDA0KQogICAgICAgICAgICAgICAgICAgICAgICB7IGlmICgobiA9
ICh3aWR0aCAtIHJlYWxzeikpID4gMCkgeyB3aGlsZSAobiA+IDE2KSB7IHsgaW92cC0+aW92X2Jh
c2UgPSAoYmxhbmtzKTsgaW92cC0+aW92X2xlbiA9ICgxNik7IHVpby51aW9fcmVzaWQgKz0gKDE2
KTsgaW92cCsrOyBpZiAoKyt1aW8udWlvX2lvdmNudCA+PSA4KSB7IGlmIChfX3NwcmludChmcCwg
JnVpbykpIGdvdG8gZXJyb3I7IGlvdnAgPSBpb3Y7IH0gfTsgbiAtPSAxNjsgfSB7IGlvdnAtPmlv
dl9iYXNlID0gKGJsYW5rcyk7IGlvdnAtPmlvdl9sZW4gPSAobik7IHVpby51aW9fcmVzaWQgKz0g
KG4pOyBpb3ZwKys7IGlmICgrK3Vpby51aW9faW92Y250ID49IDgpIHsgaWYgKF9fc3ByaW50KGZw
LCAmdWlvKSkgZ290byBlcnJvcjsgaW92cCA9IGlvdjsgfSB9OyB9IH07CgoKICAgICAgICAgICAg
ICAgIHJldCArPSBwcnNpemU7CgogICAgICAgICAgICAgICAgeyBpZiAodWlvLnVpb19yZXNpZCAm
JiBfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7IHVpby51aW9faW92Y250ID0gMDsgaW92
cCA9IGlvdjsgfTsKICAgICAgICB9CmRvbmU6CiAgICAgICAgeyBpZiAodWlvLnVpb19yZXNpZCAm
JiBfX3NwcmludChmcCwgJnVpbykpIGdvdG8gZXJyb3I7IHVpby51aW9faW92Y250ID0gMDsgaW92
cCA9IGlvdjsgfTsKZXJyb3I6CgogICAgICAgIGlmIChkdG9hcmVzdWx0ICE9IDApCiAgICAgICAg
ICAgICAgICBfX2ZyZWVkdG9hKGR0b2FyZXN1bHQpOwoKICAgICAgICBpZiAoY29udmJ1ZiAhPSAw
KQogICAgICAgICAgICAgICAgZnJlZShjb252YnVmKTsKICAgICAgICBpZiAoKCgoZnApLT5fZmxh
Z3MgJiAweDAwNDApICE9IDApKQogICAgICAgICAgICAgICAgcmV0ID0gKC0xKTsKICAgICAgICBp
ZiAoKGFyZ3RhYmxlICE9IDApICYmIChhcmd0YWJsZSAhPSBzdGF0YXJndGFibGUpKQogICAgICAg
ICAgICAgICAgZnJlZSAoYXJndGFibGUpOwogICAgICAgIHJldHVybiAocmV0KTsKCn0KCgoKCgoK
CnN0YXRpYyB2b2lkCl9fZmluZF9hcmd1bWVudHMgKGNvbnN0IGNoYXIgKmZtdDAsIHZhX2xpc3Qg
YXAsIHVuaW9uIGFyZyAqKmFyZ3RhYmxlKQp7CiAgICAgICAgY2hhciAqZm10OwogICAgICAgIGlu
dCBjaDsKICAgICAgICBpbnQgbiwgbjI7CiAgICAgICAgY2hhciAqY3A7CiAgICAgICAgaW50IGZs
YWdzOwogICAgICAgIGludCB3aWR0aDsKICAgICAgICBlbnVtIHR5cGVpZCAqdHlwZXRhYmxlOwog
ICAgICAgIGVudW0gdHlwZWlkIHN0YXR0eXBldGFibGUgWzhdOwogICAgICAgIGludCB0YWJsZXNp
emU7CiAgICAgICAgaW50IHRhYmxlbWF4OwogICAgICAgIGludCBuZXh0YXJnOwogICAgICAgIGZt
dCA9IChjaGFyICopZm10MDsKICAgICAgICB0eXBldGFibGUgPSBzdGF0dHlwZXRhYmxlOwogICAg
ICAgIHRhYmxlc2l6ZSA9IDg7CiAgICAgICAgdGFibGVtYXggPSAwOwogICAgICAgIG5leHRhcmcg
PSAxOwogICAgICAgIG1lbXNldCAodHlwZXRhYmxlLCBUX1VOVVNFRCwgOCk7CgoKCgogICAgICAg
IGZvciAoOzspIHsKICAgICAgICAgICAgICAgIGZvciAoY3AgPSBmbXQ7IChjaCA9ICpmbXQpICE9
ICdcMCcgJiYgY2ggIT0gJyUnOyBmbXQrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDsKICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnXDAnKQogICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICAgICBmbXQrKzsKCiAgICAgICAgICAgICAgICBm
bGFncyA9IDA7CiAgICAgICAgICAgICAgICB3aWR0aCA9IDA7CgpyZmxhZzogY2ggPSAqZm10Kys7
CnJlc3dpdGNoOiBzd2l0Y2ggKGNoKSB7CiAgICAgICAgICAgICAgICBjYXNlICcgJzoKICAgICAg
ICAgICAgICAgIGNhc2UgJyMnOgogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJmbGFnOwog
ICAgICAgICAgICAgICAgY2FzZSAnKic6CiAgICAgICAgICAgICAgICAgICAgICAgIG4yID0gMDsg
Y3AgPSBmbXQ7IHdoaWxlICgoKHVuc2lnbmVkKSgoKmNwKSAtICcwJykgPD0gOSkpIHsgbjIgPSAx
MCAqIG4yICsgKCgqY3ApIC0gJzAnKTsgY3ArKzsgfSBpZiAoKmNwID09ICckJykgeyBpbnQgaG9s
ZCA9IG5leHRhcmc7IG5leHRhcmcgPSBuMjsgKChuZXh0YXJnID49IHRhYmxlc2l6ZSkgPyBfX2dy
b3dfdHlwZV90YWJsZShuZXh0YXJnLCAmdHlwZXRhYmxlLCAmdGFibGVzaXplKSA6IDAsIChuZXh0
YXJnID4gdGFibGVtYXgpID8gdGFibGVtYXggPSBuZXh0YXJnIDogMCwgdHlwZXRhYmxlW25leHRh
cmcrK10gPSBUX0lOVCk7IG5leHRhcmcgPSBob2xkOyBmbXQgPSArK2NwOyB9IGVsc2UgeyAoKG5l
eHRhcmcgPj0gdGFibGVzaXplKSA/IF9fZ3Jvd190eXBlX3RhYmxlKG5leHRhcmcsICZ0eXBldGFi
bGUsICZ0YWJsZXNpemUpIDogMCwgKG5leHRhcmcgPiB0YWJsZW1heCkgPyB0YWJsZW1heCA9IG5l
eHRhcmcgOiAwLCB0eXBldGFibGVbbmV4dGFyZysrXSA9IFRfSU5UKTsgfTsKICAgICAgICAgICAg
ICAgICAgICAgICAgZ290byByZmxhZzsKICAgICAgICAgICAgICAgIGNhc2UgJy0nOgogICAgICAg
ICAgICAgICAgY2FzZSAnKyc6CiAgICAgICAgICAgICAgICBjYXNlICdcJyc6CiAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gcmZsYWc7CiAgICAgICAgICAgICAgICBjYXNlICcuJzoKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKChjaCA9ICpmbXQrKykgPT0gJyonKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbjIgPSAwOyBjcCA9IGZtdDsgd2hpbGUgKCgodW5zaWduZWQp
KCgqY3ApIC0gJzAnKSA8PSA5KSkgeyBuMiA9IDEwICogbjIgKyAoKCpjcCkgLSAnMCcpOyBjcCsr
OyB9IGlmICgqY3AgPT0gJyQnKSB7IGludCBob2xkID0gbmV4dGFyZzsgbmV4dGFyZyA9IG4yOyAo
KG5leHRhcmcgPj0gdGFibGVzaXplKSA/IF9fZ3Jvd190eXBlX3RhYmxlKG5leHRhcmcsICZ0eXBl
dGFibGUsICZ0YWJsZXNpemUpIDogMCwgKG5leHRhcmcgPiB0YWJsZW1heCkgPyB0YWJsZW1heCA9
IG5leHRhcmcgOiAwLCB0eXBldGFibGVbbmV4dGFyZysrXSA9IFRfSU5UKTsgbmV4dGFyZyA9IGhv
bGQ7IGZtdCA9ICsrY3A7IH0gZWxzZSB7ICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19ncm93
X3R5cGVfdGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4dGFy
ZyA+IHRhYmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0YXJn
KytdID0gVF9JTlQpOyB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmZs
YWc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKCgodW5zaWduZWQpKChjaCkgLSAnMCcpIDw9IDkpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2ggPSAqZm10Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKICAgICAgICAgICAgICAgIGNhc2UgJzAn
OgogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJmbGFnOwogICAgICAgICAgICAgICAgY2Fz
ZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CiAgICAgICAgICAgICAgICBjYXNl
ICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6CiAgICAgICAgICAg
ICAgICAgICAgICAgIG4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDEwICogbiArICgoY2gpIC0gJzAnKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9ICpmbXQrKzsKICAgICAgICAgICAgICAgICAg
ICAgICAgfSB3aGlsZSAoKCh1bnNpZ25lZCkoKGNoKSAtICcwJykgPD0gOSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY2ggPT0gJyQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV4dGFyZyA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBy
ZmxhZzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB3
aWR0aCA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7CgogICAgICAg
ICAgICAgICAgY2FzZSAnTCc6CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IDB4MDA4
OwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJmbGFnOwoKICAgICAgICAgICAgICAgIGNh
c2UgJ2gnOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiAweDA0MCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICY9IH4weDA0MDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSAweDIwMDA7CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IDB4MDQw
OwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJmbGFnOwogICAgICAgICAgICAgICAgY2Fz
ZSAnaic6CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IDB4MTAwMDsKICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byByZmxhZzsKICAgICAgICAgICAgICAgIGNhc2UgJ2wnOgogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiAweDAxMCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzICY9IH4weDAxMDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncyB8PSAweDAyMDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHgwMTA7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gcmZsYWc7CiAgICAgICAgICAgICAgICBjYXNlICdxJzoKICAgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHgwMjA7CiAgICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gcmZsYWc7CiAgICAgICAgICAgICAgICBjYXNlICd0JzoKICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MgfD0gMHg4MDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmZsYWc7
CiAgICAgICAgICAgICAgICBjYXNlICd6JzoKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mg
fD0gMHg0MDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmZsYWc7CiAgICAgICAgICAg
ICAgICBjYXNlICdDJzoKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHgwMTA7Cgog
ICAgICAgICAgICAgICAgY2FzZSAnYyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFn
cyAmIDB4MDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobmV4dGFyZyA+PSB0
YWJsZXNpemUpID8gX19ncm93X3R5cGVfdGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxl
c2l6ZSkgOiAwLCAobmV4dGFyZyA+IHRhYmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAs
IHR5cGV0YWJsZVtuZXh0YXJnKytdID0gVF9XSU5UKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobmV4dGFyZyA+PSB0YWJsZXNp
emUpID8gX19ncm93X3R5cGVfdGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkg
OiAwLCAobmV4dGFyZyA+IHRhYmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0
YWJsZVtuZXh0YXJnKytdID0gVF9JTlQpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgIGNhc2UgJ0QnOgogICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8
PSAweDAxMDsKCiAgICAgICAgICAgICAgICBjYXNlICdkJzoKICAgICAgICAgICAgICAgIGNhc2Ug
J2knOgogICAgICAgICAgICAgICAgICAgICAgICAoKGZsYWdzJjB4MTAwMCkgPyAoKG5leHRhcmcg
Pj0gdGFibGVzaXplKSA/IF9fZ3Jvd190eXBlX3RhYmxlKG5leHRhcmcsICZ0eXBldGFibGUsICZ0
YWJsZXNpemUpIDogMCwgKG5leHRhcmcgPiB0YWJsZW1heCkgPyB0YWJsZW1heCA9IG5leHRhcmcg
OiAwLCB0eXBldGFibGVbbmV4dGFyZysrXSA9IFRfSU5UTUFYVCkgOiAoKGZsYWdzJjB4NDAwKSA/
ICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19ncm93X3R5cGVfdGFibGUobmV4dGFyZywgJnR5
cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4dGFyZyA+IHRhYmxlbWF4KSA/IHRhYmxlbWF4
ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0YXJnKytdID0gVF9TSVpFVCkgOiAoKGZsYWdz
JjB4ODAwKSA/ICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19ncm93X3R5cGVfdGFibGUobmV4
dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4dGFyZyA+IHRhYmxlbWF4KSA/
IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0YXJnKytdID0gVF9QVFJESUZG
VCkgOiAoKGZsYWdzJjB4MDIwKSA/ICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19ncm93X3R5
cGVfdGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4dGFyZyA+
IHRhYmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0YXJnKytd
ID0gVF9MTE9ORykgOiAoKGZsYWdzJjB4MDEwKSA/ICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8g
X19ncm93X3R5cGVfdGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAo
bmV4dGFyZyA+IHRhYmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtu
ZXh0YXJnKytdID0gVF9MT05HKSA6ICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19ncm93X3R5
cGVfdGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4dGFyZyA+
IHRhYmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0YXJnKytd
ID0gVF9JTlQpKSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKCgoKCiAgICAg
ICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgIGNhc2UgJ0UnOgogICAgICAgICAg
ICAgICAgY2FzZSAnZic6CiAgICAgICAgICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgICAg
IGNhc2UgJ0cnOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiAweDAwOCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5leHRhcmcgPj0gdGFibGVzaXplKSA/IF9f
Z3Jvd190eXBlX3RhYmxlKG5leHRhcmcsICZ0eXBldGFibGUsICZ0YWJsZXNpemUpIDogMCwgKG5l
eHRhcmcgPiB0YWJsZW1heCkgPyB0YWJsZW1heCA9IG5leHRhcmcgOiAwLCB0eXBldGFibGVbbmV4
dGFyZysrXSA9IFRfTE9OR19ET1VCTEUpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChuZXh0YXJnID49IHRhYmxlc2l6ZSkgPyBf
X2dyb3dfdHlwZV90YWJsZShuZXh0YXJnLCAmdHlwZXRhYmxlLCAmdGFibGVzaXplKSA6IDAsIChu
ZXh0YXJnID4gdGFibGVtYXgpID8gdGFibGVtYXggPSBuZXh0YXJnIDogMCwgdHlwZXRhYmxlW25l
eHRhcmcrK10gPSBUX0RPVUJMRSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3Mg
JiAweDEwMDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChuZXh0YXJnID49IHRh
Ymxlc2l6ZSkgPyBfX2dyb3dfdHlwZV90YWJsZShuZXh0YXJnLCAmdHlwZXRhYmxlLCAmdGFibGVz
aXplKSA6IDAsIChuZXh0YXJnID4gdGFibGVtYXgpID8gdGFibGVtYXggPSBuZXh0YXJnIDogMCwg
dHlwZXRhYmxlW25leHRhcmcrK10gPSBUUF9JTlRNQVhUKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoZmxhZ3MgJiAweDgwMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoKG5leHRhcmcgPj0gdGFibGVzaXplKSA/IF9fZ3Jvd190eXBlX3RhYmxlKG5leHRhcmcsICZ0
eXBldGFibGUsICZ0YWJsZXNpemUpIDogMCwgKG5leHRhcmcgPiB0YWJsZW1heCkgPyB0YWJsZW1h
eCA9IG5leHRhcmcgOiAwLCB0eXBldGFibGVbbmV4dGFyZysrXSA9IFRQX1BUUkRJRkZUKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiAweDQwMCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoKG5leHRhcmcgPj0gdGFibGVzaXplKSA/IF9fZ3Jvd190eXBl
X3RhYmxlKG5leHRhcmcsICZ0eXBldGFibGUsICZ0YWJsZXNpemUpIDogMCwgKG5leHRhcmcgPiB0
YWJsZW1heCkgPyB0YWJsZW1heCA9IG5leHRhcmcgOiAwLCB0eXBldGFibGVbbmV4dGFyZysrXSA9
IFRQX1NJWkVUKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiAweDAy
MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5leHRhcmcgPj0gdGFibGVzaXpl
KSA/IF9fZ3Jvd190eXBlX3RhYmxlKG5leHRhcmcsICZ0eXBldGFibGUsICZ0YWJsZXNpemUpIDog
MCwgKG5leHRhcmcgPiB0YWJsZW1heCkgPyB0YWJsZW1heCA9IG5leHRhcmcgOiAwLCB0eXBldGFi
bGVbbmV4dGFyZysrXSA9IFRQX0xMT05HKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZmxhZ3MgJiAweDAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5leHRh
cmcgPj0gdGFibGVzaXplKSA/IF9fZ3Jvd190eXBlX3RhYmxlKG5leHRhcmcsICZ0eXBldGFibGUs
ICZ0YWJsZXNpemUpIDogMCwgKG5leHRhcmcgPiB0YWJsZW1heCkgPyB0YWJsZW1heCA9IG5leHRh
cmcgOiAwLCB0eXBldGFibGVbbmV4dGFyZysrXSA9IFRQX0xPTkcpOwogICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChmbGFncyAmIDB4MDQwKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19ncm93X3R5cGVfdGFibGUobmV4dGFy
ZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4dGFyZyA+IHRhYmxlbWF4KSA/IHRh
YmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0YXJnKytdID0gVFBfU0hPUlQpOwog
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIDB4MjAwMCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoKG5leHRhcmcgPj0gdGFibGVzaXplKSA/IF9fZ3Jvd190
eXBlX3RhYmxlKG5leHRhcmcsICZ0eXBldGFibGUsICZ0YWJsZXNpemUpIDogMCwgKG5leHRhcmcg
PiB0YWJsZW1heCkgPyB0YWJsZW1heCA9IG5leHRhcmcgOiAwLCB0eXBldGFibGVbbmV4dGFyZysr
XSA9IFRQX1NDSEFSKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19ncm93X3R5cGVf
dGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4dGFyZyA+IHRh
YmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0YXJnKytdID0g
VFBfSU5UKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICBjYXNlICdPJzoKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gMHgwMTA7CgogICAg
ICAgICAgICAgICAgY2FzZSAnbyc6CiAgICAgICAgICAgICAgICAgICAgICAgICgoZmxhZ3MmMHgx
MDAwKSA/ICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19ncm93X3R5cGVfdGFibGUobmV4dGFy
ZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4dGFyZyA+IHRhYmxlbWF4KSA/IHRh
YmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0YXJnKytdID0gVF9VSU5UTUFYVCkg
OiAoKGZsYWdzJjB4NDAwKSA/ICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19ncm93X3R5cGVf
dGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4dGFyZyA+IHRh
YmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0YXJnKytdID0g
VF9TSVpFVCkgOiAoKGZsYWdzJjB4ODAwKSA/ICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19n
cm93X3R5cGVfdGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4
dGFyZyA+IHRhYmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0
YXJnKytdID0gVF9QVFJESUZGVCkgOiAoKGZsYWdzJjB4MDIwKSA/ICgobmV4dGFyZyA+PSB0YWJs
ZXNpemUpID8gX19ncm93X3R5cGVfdGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6
ZSkgOiAwLCAobmV4dGFyZyA+IHRhYmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5
cGV0YWJsZVtuZXh0YXJnKytdID0gVF9VX0xMT05HKSA6ICgoZmxhZ3MmMHgwMTApID8gKChuZXh0
YXJnID49IHRhYmxlc2l6ZSkgPyBfX2dyb3dfdHlwZV90YWJsZShuZXh0YXJnLCAmdHlwZXRhYmxl
LCAmdGFibGVzaXplKSA6IDAsIChuZXh0YXJnID4gdGFibGVtYXgpID8gdGFibGVtYXggPSBuZXh0
YXJnIDogMCwgdHlwZXRhYmxlW25leHRhcmcrK10gPSBUX1VfTE9ORykgOiAoKG5leHRhcmcgPj0g
dGFibGVzaXplKSA/IF9fZ3Jvd190eXBlX3RhYmxlKG5leHRhcmcsICZ0eXBldGFibGUsICZ0YWJs
ZXNpemUpIDogMCwgKG5leHRhcmcgPiB0YWJsZW1heCkgPyB0YWJsZW1heCA9IG5leHRhcmcgOiAw
LCB0eXBldGFibGVbbmV4dGFyZysrXSA9IFRfVV9JTlQpKSkpKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAncCc6CiAgICAgICAgICAgICAgICAg
ICAgICAgICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19ncm93X3R5cGVfdGFibGUobmV4dGFy
ZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4dGFyZyA+IHRhYmxlbWF4KSA/IHRh
YmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0YXJnKytdID0gVFBfVk9JRCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnUyc6CiAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IDB4MDEwOwoKICAgICAgICAgICAgICAgIGNh
c2UgJ3MnOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiAweDAxMCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5leHRhcmcgPj0gdGFibGVzaXplKSA/IF9fZ3Jv
d190eXBlX3RhYmxlKG5leHRhcmcsICZ0eXBldGFibGUsICZ0YWJsZXNpemUpIDogMCwgKG5leHRh
cmcgPiB0YWJsZW1heCkgPyB0YWJsZW1heCA9IG5leHRhcmcgOiAwLCB0eXBldGFibGVbbmV4dGFy
ZysrXSA9IFRQX1dDSEFSKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgobmV4dGFyZyA+PSB0YWJsZXNpemUpID8gX19ncm93X3R5
cGVfdGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6ZSkgOiAwLCAobmV4dGFyZyA+
IHRhYmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5cGV0YWJsZVtuZXh0YXJnKytd
ID0gVFBfQ0hBUik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgY2FzZSAnVSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IDB4MDEwOwoKICAg
ICAgICAgICAgICAgIGNhc2UgJ3UnOgogICAgICAgICAgICAgICAgY2FzZSAnWCc6CiAgICAgICAg
ICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgICAgICAgICAgICAgKChmbGFncyYweDEwMDAp
ID8gKChuZXh0YXJnID49IHRhYmxlc2l6ZSkgPyBfX2dyb3dfdHlwZV90YWJsZShuZXh0YXJnLCAm
dHlwZXRhYmxlLCAmdGFibGVzaXplKSA6IDAsIChuZXh0YXJnID4gdGFibGVtYXgpID8gdGFibGVt
YXggPSBuZXh0YXJnIDogMCwgdHlwZXRhYmxlW25leHRhcmcrK10gPSBUX1VJTlRNQVhUKSA6ICgo
ZmxhZ3MmMHg0MDApID8gKChuZXh0YXJnID49IHRhYmxlc2l6ZSkgPyBfX2dyb3dfdHlwZV90YWJs
ZShuZXh0YXJnLCAmdHlwZXRhYmxlLCAmdGFibGVzaXplKSA6IDAsIChuZXh0YXJnID4gdGFibGVt
YXgpID8gdGFibGVtYXggPSBuZXh0YXJnIDogMCwgdHlwZXRhYmxlW25leHRhcmcrK10gPSBUX1NJ
WkVUKSA6ICgoZmxhZ3MmMHg4MDApID8gKChuZXh0YXJnID49IHRhYmxlc2l6ZSkgPyBfX2dyb3df
dHlwZV90YWJsZShuZXh0YXJnLCAmdHlwZXRhYmxlLCAmdGFibGVzaXplKSA6IDAsIChuZXh0YXJn
ID4gdGFibGVtYXgpID8gdGFibGVtYXggPSBuZXh0YXJnIDogMCwgdHlwZXRhYmxlW25leHRhcmcr
K10gPSBUX1BUUkRJRkZUKSA6ICgoZmxhZ3MmMHgwMjApID8gKChuZXh0YXJnID49IHRhYmxlc2l6
ZSkgPyBfX2dyb3dfdHlwZV90YWJsZShuZXh0YXJnLCAmdHlwZXRhYmxlLCAmdGFibGVzaXplKSA6
IDAsIChuZXh0YXJnID4gdGFibGVtYXgpID8gdGFibGVtYXggPSBuZXh0YXJnIDogMCwgdHlwZXRh
YmxlW25leHRhcmcrK10gPSBUX1VfTExPTkcpIDogKChmbGFncyYweDAxMCkgPyAoKG5leHRhcmcg
Pj0gdGFibGVzaXplKSA/IF9fZ3Jvd190eXBlX3RhYmxlKG5leHRhcmcsICZ0eXBldGFibGUsICZ0
YWJsZXNpemUpIDogMCwgKG5leHRhcmcgPiB0YWJsZW1heCkgPyB0YWJsZW1heCA9IG5leHRhcmcg
OiAwLCB0eXBldGFibGVbbmV4dGFyZysrXSA9IFRfVV9MT05HKSA6ICgobmV4dGFyZyA+PSB0YWJs
ZXNpemUpID8gX19ncm93X3R5cGVfdGFibGUobmV4dGFyZywgJnR5cGV0YWJsZSwgJnRhYmxlc2l6
ZSkgOiAwLCAobmV4dGFyZyA+IHRhYmxlbWF4KSA/IHRhYmxlbWF4ID0gbmV4dGFyZyA6IDAsIHR5
cGV0YWJsZVtuZXh0YXJnKytdID0gVF9VX0lOVCkpKSkpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY2ggPT0gJ1wwJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGRv
bmU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAg
ICAgIH0KZG9uZToKCgoKICAgICAgICBpZiAodGFibGVtYXggPj0gOCkgewogICAgICAgICAgICAg
ICAgKmFyZ3RhYmxlID0gKHVuaW9uIGFyZyAqKQogICAgICAgICAgICAgICAgICAgIG1hbGxvYyAo
c2l6ZW9mICh1bmlvbiBhcmcpICogKHRhYmxlbWF4ICsgMSkpOwogICAgICAgIH0KCiAgICAgICAg
KCphcmd0YWJsZSkgWzBdLmludGFyZyA9IDA7CiAgICAgICAgZm9yIChuID0gMTsgbiA8PSB0YWJs
ZW1heDsgbisrKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGV0YWJsZSBbbl0pIHsKICAg
ICAgICAgICAgICAgICAgICBjYXNlIFRfVU5VU0VEOgogICAgICAgICAgICAgICAgICAgICAgICAo
KmFyZ3RhYmxlKSBbbl0uaW50YXJnID0gX19idWlsdGluX3ZhX2FyZygoYXApLCBpbnQpOwogICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIFRQX1ND
SEFSOgogICAgICAgICAgICAgICAgICAgICAgICAoKmFyZ3RhYmxlKSBbbl0ucHNjaGFyYXJnID0g
X19idWlsdGluX3ZhX2FyZygoYXApLCBzaWduZWQgY2hhciAqKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBUUF9TSE9SVDoKICAgICAgICAg
ICAgICAgICAgICAgICAgKCphcmd0YWJsZSkgW25dLnBzaG9ydGFyZyA9IF9fYnVpbHRpbl92YV9h
cmcoKGFwKSwgc2hvcnQgKik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgIGNhc2UgVF9JTlQ6CiAgICAgICAgICAgICAgICAgICAgICAgICgqYXJndGFi
bGUpIFtuXS5pbnRhcmcgPSBfX2J1aWx0aW5fdmFfYXJnKChhcCksIGludCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgVF9VX0lOVDoKICAg
ICAgICAgICAgICAgICAgICAgICAgKCphcmd0YWJsZSkgW25dLnVpbnRhcmcgPSBfX2J1aWx0aW5f
dmFfYXJnKChhcCksIHVuc2lnbmVkIGludCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgIGNhc2UgVFBfSU5UOgogICAgICAgICAgICAgICAgICAgICAg
ICAoKmFyZ3RhYmxlKSBbbl0ucGludGFyZyA9IF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgaW50ICop
OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNl
IFRfTE9ORzoKICAgICAgICAgICAgICAgICAgICAgICAgKCphcmd0YWJsZSkgW25dLmxvbmdhcmcg
PSBfX2J1aWx0aW5fdmFfYXJnKChhcCksIGxvbmcpOwogICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIFRfVV9MT05HOgogICAgICAgICAgICAgICAg
ICAgICAgICAoKmFyZ3RhYmxlKSBbbl0udWxvbmdhcmcgPSBfX2J1aWx0aW5fdmFfYXJnKChhcCks
IHVuc2lnbmVkIGxvbmcpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRQX0xPTkc6CiAgICAgICAgICAgICAgICAgICAgICAgICgqYXJndGFi
bGUpIFtuXS5wbG9uZ2FyZyA9IF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgbG9uZyAqKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBUX0xMT05H
OgogICAgICAgICAgICAgICAgICAgICAgICAoKmFyZ3RhYmxlKSBbbl0ubG9uZ2xvbmdhcmcgPSBf
X2J1aWx0aW5fdmFfYXJnKChhcCksIGxvbmcgbG9uZyk7CiAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgVF9VX0xMT05HOgogICAgICAgICAgICAg
ICAgICAgICAgICAoKmFyZ3RhYmxlKSBbbl0udWxvbmdsb25nYXJnID0gX19idWlsdGluX3ZhX2Fy
ZygoYXApLCB1bnNpZ25lZCBsb25nIGxvbmcpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICBjYXNlIFRQX0xMT05HOgogICAgICAgICAgICAgICAgICAg
ICAgICAoKmFyZ3RhYmxlKSBbbl0ucGxvbmdsb25nYXJnID0gX19idWlsdGluX3ZhX2FyZygoYXAp
LCBsb25nIGxvbmcgKik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgIGNhc2UgVF9QVFJESUZGVDoKICAgICAgICAgICAgICAgICAgICAgICAgKCphcmd0
YWJsZSkgW25dLnB0cmRpZmZhcmcgPSBfX2J1aWx0aW5fdmFfYXJnKChhcCksIHB0cmRpZmZfdCk7
CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2Ug
VFBfUFRSRElGRlQ6CiAgICAgICAgICAgICAgICAgICAgICAgICgqYXJndGFibGUpIFtuXS5wcHRy
ZGlmZmFyZyA9IF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgcHRyZGlmZl90ICopOwogICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIFRfU0laRVQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICgqYXJndGFibGUpIFtuXS5zaXplYXJnID0gX19idWlsdGlu
X3ZhX2FyZygoYXApLCBzaXplX3QpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICBjYXNlIFRQX1NJWkVUOgogICAgICAgICAgICAgICAgICAgICAgICAo
KmFyZ3RhYmxlKSBbbl0ucHNpemVhcmcgPSBfX2J1aWx0aW5fdmFfYXJnKChhcCksIHNzaXplX3Qg
Kik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNh
c2UgVF9JTlRNQVhUOgogICAgICAgICAgICAgICAgICAgICAgICAoKmFyZ3RhYmxlKSBbbl0uaW50
bWF4YXJnID0gX19idWlsdGluX3ZhX2FyZygoYXApLCBpbnRtYXhfdCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgVF9VSU5UTUFYVDoKICAg
ICAgICAgICAgICAgICAgICAgICAgKCphcmd0YWJsZSkgW25dLnVpbnRtYXhhcmcgPSBfX2J1aWx0
aW5fdmFfYXJnKChhcCksIHVpbnRtYXhfdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgIGNhc2UgVFBfSU5UTUFYVDoKICAgICAgICAgICAgICAgICAg
ICAgICAgKCphcmd0YWJsZSkgW25dLnBpbnRtYXhhcmcgPSBfX2J1aWx0aW5fdmFfYXJnKChhcCks
IGludG1heF90ICopOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUX0RPVUJMRToKICAgICAgICAgICAgICAgICAgICAgICAgKCphcmd0YWJs
ZSkgW25dLmRvdWJsZWFyZyA9IF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgZG91YmxlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBUX0xPTkdf
RE9VQkxFOgogICAgICAgICAgICAgICAgICAgICAgICAoKmFyZ3RhYmxlKSBbbl0ubG9uZ2RvdWJs
ZWFyZyA9IF9fYnVpbHRpbl92YV9hcmcoKGFwKSwgbG9uZyBkb3VibGUpOwogICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSBUUF9DSEFSOgogICAg
ICAgICAgICAgICAgICAgICAgICAoKmFyZ3RhYmxlKSBbbl0ucGNoYXJhcmcgPSBfX2J1aWx0aW5f
dmFfYXJnKChhcCksIGNoYXIgKik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgIGNhc2UgVFBfVk9JRDoKICAgICAgICAgICAgICAgICAgICAgICAgKCph
cmd0YWJsZSkgW25dLnB2b2lkYXJnID0gX19idWlsdGluX3ZhX2FyZygoYXApLCB2b2lkICopOwog
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIFRf
V0lOVDoKICAgICAgICAgICAgICAgICAgICAgICAgKCphcmd0YWJsZSkgW25dLndpbnRhcmcgPSBf
X2J1aWx0aW5fdmFfYXJnKChhcCksIHdpbnRfdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgVFBfV0NIQVI6CiAgICAgICAgICAgICAgICAg
ICAgICAgICgqYXJndGFibGUpIFtuXS5wd2NoYXJhcmcgPSBfX2J1aWx0aW5fdmFfYXJnKChhcCks
IHdjaGFyX3QgKik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCh0eXBldGFibGUgIT0gMCkgJiYgKHR5cGV0YWJs
ZSAhPSBzdGF0dHlwZXRhYmxlKSkKICAgICAgICAgICAgICAgIGZyZWUgKHR5cGV0YWJsZSk7Cn0K
CgoKCnN0YXRpYyB2b2lkCl9fZ3Jvd190eXBlX3RhYmxlIChpbnQgbmV4dGFyZywgZW51bSB0eXBl
aWQgKip0eXBldGFibGUsIGludCAqdGFibGVzaXplKQp7CiAgICAgICAgZW51bSB0eXBlaWQgKmNv
bnN0IG9sZHRhYmxlID0gKnR5cGV0YWJsZTsKICAgICAgICBjb25zdCBpbnQgb2xkc2l6ZSA9ICp0
YWJsZXNpemU7CiAgICAgICAgZW51bSB0eXBlaWQgKm5ld3RhYmxlOwogICAgICAgIGludCBuZXdz
aXplID0gb2xkc2l6ZSAqIDI7CgogICAgICAgIGlmIChuZXdzaXplIDwgbmV4dGFyZyArIDEpCiAg
ICAgICAgICAgICAgICBuZXdzaXplID0gbmV4dGFyZyArIDE7CiAgICAgICAgaWYgKG9sZHNpemUg
PT0gOCkgewogICAgICAgICAgICAgICAgaWYgKChuZXd0YWJsZSA9IG1hbGxvYyhuZXdzaXplKSkg
PT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnQoKTsKICAgICAgICAgICAgICAgIGJj
b3B5KG9sZHRhYmxlLCBuZXd0YWJsZSwgb2xkc2l6ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgIGlmICgobmV3dGFibGUgPSByZWFsbG9jZihvbGR0YWJsZSwgbmV3c2l6ZSkpID09
IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0KCk7CiAgICAgICAgfQogICAgICAgIG1l
bXNldCgmbmV3dGFibGVbb2xkc2l6ZV0sIFRfVU5VU0VELCBuZXdzaXplIC0gb2xkc2l6ZSk7Cgog
ICAgICAgICp0eXBldGFibGUgPSBuZXd0YWJsZTsKICAgICAgICAqdGFibGVzaXplID0gbmV3c2l6
ZTsKfQoKCgoKc3RhdGljIGludApleHBvbmVudChjaGFyICpwMCwgaW50IGV4cCwgaW50IGZtdGNo
KQp7CiAgICAgICAgY2hhciAqcCwgKnQ7CiAgICAgICAgY2hhciBleHBidWZbNl07CgogICAgICAg
IHAgPSBwMDsKICAgICAgICAqcCsrID0gZm10Y2g7CiAgICAgICAgaWYgKGV4cCA8IDApIHsKICAg
ICAgICAgICAgICAgIGV4cCA9IC1leHA7CiAgICAgICAgICAgICAgICAqcCsrID0gJy0nOwogICAg
ICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAqcCsrID0gJysnOwogICAgICAgIHQg
PSBleHBidWYgKyA2OwogICAgICAgIGlmIChleHAgPiA5KSB7CiAgICAgICAgICAgICAgICBkbyB7
CiAgICAgICAgICAgICAgICAgICAgICAgICotLXQgPSAoKGV4cCAlIDEwKSArICcwJyk7CiAgICAg
ICAgICAgICAgICB9IHdoaWxlICgoZXhwIC89IDEwKSA+IDkpOwogICAgICAgICAgICAgICAgKi0t
dCA9ICgoZXhwKSArICcwJyk7CiAgICAgICAgICAgICAgICBmb3IgKDsgdCA8IGV4cGJ1ZiArIDY7
ICpwKysgPSAqdCsrKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgoKCgoKCiAgICAgICAgICAg
ICAgICBpZiAoZm10Y2ggPT0gJ2UnIHx8IGZtdGNoID09ICdFJykKICAgICAgICAgICAgICAgICAg
ICAgICAgKnArKyA9ICcwJzsKICAgICAgICAgICAgICAgICpwKysgPSAoKGV4cCkgKyAnMCcpOwog
ICAgICAgIH0KICAgICAgICByZXR1cm4gKHAgLSBwMCk7Cn0K


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-05-08  1:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-08  1:26 target/10673: Internal Compiler Error for x86-64 on freebsd libc vfprintf.c source peter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).