public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* optimization/7642: optimization problem with signbit() of a
@ 2002-08-19 23:46 anonymous
  0 siblings, 0 replies; only message in thread
From: anonymous @ 2002-08-19 23:46 UTC (permalink / raw)
  To: gcc-gnats; +Cc: galexander


>Number:         7642
>Category:       optimization
>Synopsis:       optimization problem with signbit() of a
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Mon Aug 19 23:06:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Geoff Alexander
>Release:        gcc 3.2
>Organization:
>Environment:
gcc 3.2 on SuSE Linux/x86 7.1 (kernel 2.4.0 and glibc 2.2)
>Description:
The following program illustrates an optimization problem with signbit() of a
long double NAN:

  #include <math.h>
  #include <stdio.h>
  #include <stdlib.h>
  int main(int argc, char* argv[])
  {
    long double n = NAN;
    if (signbit(n))
    {
      fprintf(stdout, "n is negative\n");
    }
    else
    {
      fprintf(stdout, "n is positive\n");
   }
    exit(0);
  }

When compiled with

  gcc -D_XOPEN_SOURCE=600 -o Test1 Test1.c

the resulting Test1 correctly prints "n is positive".  When compiled with

  gcc -D_XOPEN_SOURCE=600 -O -o Test1 Test1.c

or

  gcc -D_XOPEN_SOURCE=600 -O2 -o Test1 Test1.c

the resulting Test1 incorrectly prints "n is negative".  I am using gcc 3.2
on SuSE Linux/x86 7.1 (Linux kernel 2.4.0 and glibc 2.2).
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
 long double NAN
 From: gdlxn@us.ibm.com
 Reply-To: gdlxn@us.ibm.com
 X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31)
 X-GNATS-Notify: galexander@nc.rr.com
 
 long double NAN
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="Test1.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Test1.i"

IyAxICJUZXN0MS5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4iCiMgMSAi
VGVzdDEuYyIKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRl
L21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyODMgIi91c3Iv
aW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMK
IyAyODQgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAzMTEgIi91c3IvaW5jbHVkZS9m
ZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIyAzMTIgIi91
c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAyOCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAz
CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAxIDMKIyAzNCAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbmFuLmgiIDEgMwoj
IDM4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21h
dGhkZWYuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMwp0eXBlZGVm
IGxvbmcgZG91YmxlIGZsb2F0X3Q7Cgp0eXBlZGVmIGxvbmcgZG91YmxlIGRvdWJsZV90OwojIDQx
ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA2MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3VibGUgX194KSA7IGV4
dGVybiBkb3VibGUgX19hY29zIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGFzaW4gKGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2FzaW4gKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBk
b3VibGUgYXRhbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRhbiAoZG91YmxlIF9f
eCkgOwoKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgOyBleHRl
cm4gZG91YmxlIF9fYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91
YmxlIGNvcyAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fY29zIChkb3VibGUgX194KSA7
CgpleHRlcm4gZG91YmxlIHNpbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc2luIChk
b3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91
YmxlIF9fdGFuIChkb3VibGUgX194KSA7CiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxs
cy5oIiAzCmV4dGVybiBkb3VibGUgY29zaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9f
Y29zaCAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBzaW5oIChkb3VibGUgX194KSA7IGV4
dGVybiBkb3VibGUgX19zaW5oIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHRhbmggKGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3RhbmggKGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJu
IGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYWNvc2ggKGRvdWJs
ZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJs
ZSBfX2FzaW5oIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGF0YW5oIChkb3VibGUgX194
KSA7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoZG91YmxlIF9feCkgOwoKCgoKCmV4dGVybiBkb3Vi
bGUgZXhwIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHAgKGRvdWJsZSBfX3gpIDsK
IyAxMDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgZnJl
eHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4gZG91YmxlIF9fZnJleHAg
KGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOwoKCmV4dGVybiBkb3VibGUgbGRleHAgKGRv
dWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7IGV4dGVybiBkb3VibGUgX19sZGV4cCAoZG91Ymxl
IF9feCwgaW50IF9fZXhwb25lbnQpIDsKCgpleHRlcm4gZG91YmxlIGxvZyAoZG91YmxlIF9feCkg
OyBleHRlcm4gZG91YmxlIF9fbG9nIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2cx
MCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJsZSBfX3gpIDsKCgpl
eHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKSA7IGV4dGVybiBk
b3VibGUgX19tb2RmIChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgOwoKCgpleHRlcm4gZG91
YmxlIGV4cG0xIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHBtMSAoZG91YmxlIF9f
eCkgOwoKCmV4dGVybiBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBf
X2xvZzFwIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2diIChkb3VibGUgX194KSA7
IGV4dGVybiBkb3VibGUgX19sb2diIChkb3VibGUgX194KSA7CgoKCgpleHRlcm4gZG91YmxlIGV4
cDIgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2V4cDIgKGRvdWJsZSBfX3gpIDsKCgpl
eHRlcm4gZG91YmxlIGxvZzIgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRv
dWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBwb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBf
X3kpIDsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCmV4
dGVybiBkb3VibGUgc3FydCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc3FydCAoZG91
YmxlIF9feCkgOwoKCgpleHRlcm4gZG91YmxlIGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195
KSA7IGV4dGVybiBkb3VibGUgX19oeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgoK
ZXh0ZXJuIGRvdWJsZSBjYnJ0IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19jYnJ0IChk
b3VibGUgX194KSA7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoZG91YmxlIF9feCkgOyBleHRl
cm4gZG91YmxlIF9fY2VpbCAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgZmFicyAoZG91
YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmFi
cyAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3Vi
bGUgZmxvb3IgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194
KSA7CgoKZXh0ZXJuIGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVy
biBkb3VibGUgX19mbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKCgpleHRlcm4gaW50
IF9faXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
ZXh0ZXJuIGludCBfX2Zpbml0ZSAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKIyAyMDcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBk
b3VibGUgY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2NvcHlzaWduIChkb3VibGUgX194LCBkb3VibGUg
X195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZG91YmxlIG5hbiAo
X19jb25zdCBjaGFyICpfX3RhZ2IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJu
IGRvdWJsZSBfX25hbiAoX19jb25zdCBjaGFyICpfX3RhZ2IpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgoKCmV4dGVybiBpbnQgX19pc25hbiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbiAoZG91YmxlIF9fdmFsdWUp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGowIChkb3VibGUp
IDsgZXh0ZXJuIGRvdWJsZSBfX2owIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSBqMSAoZG91Ymxl
KSA7IGV4dGVybiBkb3VibGUgX19qMSAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgam4gKGludCwg
ZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19qbiAoaW50LCBkb3VibGUpIDsKZXh0ZXJuIGRvdWJs
ZSB5MCAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX195MCAoZG91YmxlKSA7CmV4dGVybiBkb3Vi
bGUgeTEgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9feTEgKGRvdWJsZSkgOwpleHRlcm4gZG91
YmxlIHluIChpbnQsIGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9feW4gKGludCwgZG91YmxlKSA7
CgoKCgoKZXh0ZXJuIGRvdWJsZSBlcmYgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fZXJmIChk
b3VibGUpIDsKZXh0ZXJuIGRvdWJsZSBlcmZjIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2Vy
ZmMgKGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIGxnYW1tYSAoZG91YmxlKSA7IGV4dGVybiBkb3Vi
bGUgX19sZ2FtbWEgKGRvdWJsZSkgOwoKCgpleHRlcm4gZG91YmxlIHRnYW1tYSAoZG91YmxlKSA7
IGV4dGVybiBkb3VibGUgX190Z2FtbWEgKGRvdWJsZSkgOwoKCgoKZXh0ZXJuIGRvdWJsZSBnYW1t
YSAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19nYW1tYSAoZG91YmxlKSA7CiMgMjYwICIvdXNy
L2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIHJpbnQgKGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3JpbnQgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91Ymxl
IG5leHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dGFmdGVyIChkb3VibGUgX194LCBkb3VibGUgX195
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4gZG91YmxlIG5leHR0b3dhcmQg
KGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OyBleHRlcm4gZG91YmxlIF9fbmV4dHRvd2FyZCAoZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBkb3VibGUgcmVtYWluZGVy
IChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19yZW1haW5kZXIgKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYiAoZG91YmxlIF9f
eCwgZG91YmxlIF9fbikgOyBleHRlcm4gZG91YmxlIF9fc2NhbGIgKGRvdWJsZSBfX3gsIGRvdWJs
ZSBfX24pIDsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJuIChkb3VibGUgX194LCBpbnQgX19uKSA7
IGV4dGVybiBkb3VibGUgX19zY2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24pIDsKCgoKZXh0ZXJu
IGludCBpbG9nYiAoZG91YmxlIF9feCkgOyBleHRlcm4gaW50IF9faWxvZ2IgKGRvdWJsZSBfX3gp
IDsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJsbiAoZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSA7
IGV4dGVybiBkb3VibGUgX19zY2FsYmxuIChkb3VibGUgX194LCBsb25nIGludCBfX24pIDsKCgoK
ZXh0ZXJuIGRvdWJsZSBuZWFyYnlpbnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX25l
YXJieWludCAoZG91YmxlIF9feCkgOwoKCgpleHRlcm4gZG91YmxlIHJvdW5kIChkb3VibGUgX194
KSA7IGV4dGVybiBkb3VibGUgX19yb3VuZCAoZG91YmxlIF9feCkgOwoKCgpleHRlcm4gZG91Ymxl
IHRydW5jIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBk
b3VibGUgX190cnVuYyAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgoKZXh0ZXJuIGRvdWJsZSByZW1xdW8gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGludCAqX19x
dW8pIDsgZXh0ZXJuIGRvdWJsZSBfX3JlbXF1byAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgaW50
ICpfX3F1bykgOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnQgKGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGxvbmcgaW50IF9fbHJpbnQgKGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
bGxyaW50IChkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50IChkb3Vi
bGUgX194KSA7CgoKCmV4dGVybiBsb25nIGludCBscm91bmQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJu
IGxvbmcgaW50IF9fbHJvdW5kIChkb3VibGUgX194KSA7CmV4dGVybiBsb25nIGxvbmcgaW50IGxs
cm91bmQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kIChkb3Vi
bGUgX194KSA7CgoKCmV4dGVybiBkb3VibGUgZmRpbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg
OyBleHRlcm4gZG91YmxlIF9fZmRpbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCmV4dGVy
biBkb3VibGUgZm1heCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9f
Zm1heCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCmV4dGVybiBkb3VibGUgZm1pbiAoZG91
YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9fZm1pbiAoZG91YmxlIF9feCwg
ZG91YmxlIF9feSkgOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeSAoZG91YmxlIF9fdmFsdWUp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0
IChkb3VibGUgX192YWx1ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4
dGVybiBkb3VibGUgZm1hIChkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSA7IGV4
dGVybiBkb3VibGUgX19mbWEgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3opIDsK
IyA2NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgODIgIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBhY29zZiAoZmxvYXQgX194KSA7
IGV4dGVybiBmbG9hdCBfX2Fjb3NmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCBhc2luZiAo
ZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2FzaW5mIChmbG9hdCBfX3gpIDsKCmV4dGVybiBm
bG9hdCBhdGFuZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2F0YW5mIChmbG9hdCBfX3gp
IDsKCmV4dGVybiBmbG9hdCBhdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSA7IGV4dGVybiBm
bG9hdCBfX2F0YW4yZiAoZmxvYXQgX195LCBmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgY29z
ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Nvc2YgKGZsb2F0IF9feCkgOwoKZXh0ZXJu
IGZsb2F0IHNpbmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19zaW5mIChmbG9hdCBfX3gp
IDsKCmV4dGVybiBmbG9hdCB0YW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fdGFuZiAo
ZmxvYXQgX194KSA7CiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVy
biBmbG9hdCBjb3NoZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Nvc2hmIChmbG9hdCBf
X3gpIDsKCmV4dGVybiBmbG9hdCBzaW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3Np
bmhmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCB0YW5oZiAoZmxvYXQgX194KSA7IGV4dGVy
biBmbG9hdCBfX3RhbmhmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxv
YXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Fjb3NoZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxv
YXQgYXNpbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmIChmbG9hdCBfX3gp
IDsKCmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hdGFu
aGYgKGZsb2F0IF9feCkgOwoKCgoKCmV4dGVybiBmbG9hdCBleHBmIChmbG9hdCBfX3gpIDsgZXh0
ZXJuIGZsb2F0IF9fZXhwZiAoZmxvYXQgX194KSA7CiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoY2FsbHMuaCIgMwpleHRlcm4gZmxvYXQgZnJleHBmIChmbG9hdCBfX3gsIGludCAqX19leHBv
bmVudCkgOyBleHRlcm4gZmxvYXQgX19mcmV4cGYgKGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50
KSA7CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBpbnQgX19leHBvbmVudCkgOyBl
eHRlcm4gZmxvYXQgX19sZGV4cGYgKGZsb2F0IF9feCwgaW50IF9fZXhwb25lbnQpIDsKCgpleHRl
cm4gZmxvYXQgbG9nZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2xvZ2YgKGZsb2F0IF9f
eCkgOwoKCmV4dGVybiBmbG9hdCBsb2cxMGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19s
b2cxMGYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQgX194LCBmbG9h
dCAqX19pcHRyKSA7IGV4dGVybiBmbG9hdCBfX21vZGZmIChmbG9hdCBfX3gsIGZsb2F0ICpfX2lw
dHIpIDsKCgoKZXh0ZXJuIGZsb2F0IGV4cG0xZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBf
X2V4cG0xZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSA7
IGV4dGVybiBmbG9hdCBfX2xvZzFwZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGxvZ2Jm
IChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nYmYgKGZsb2F0IF9feCkgOwoKCgoKZXh0
ZXJuIGZsb2F0IGV4cDJmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fZXhwMmYgKGZsb2F0
IF9feCkgOwoKCmV4dGVybiBmbG9hdCBsb2cyZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBf
X2xvZzJmIChmbG9hdCBfX3gpIDsKCgoKCgoKZXh0ZXJuIGZsb2F0IHBvd2YgKGZsb2F0IF9feCwg
ZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX3Bvd2YgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7
CgoKZXh0ZXJuIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fc3FydGYg
KGZsb2F0IF9feCkgOwoKCgpleHRlcm4gZmxvYXQgaHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9f
eSkgOyBleHRlcm4gZmxvYXQgX19oeXBvdGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKCgpl
eHRlcm4gZmxvYXQgY2JydGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19jYnJ0ZiAoZmxv
YXQgX194KSA7CgoKCgoKCmV4dGVybiBmbG9hdCBjZWlsZiAoZmxvYXQgX194KSA7IGV4dGVybiBm
bG9hdCBfX2NlaWxmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgZmFic2YgKGZsb2F0IF9f
eCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19mYWJzZiAoZmxv
YXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZsb29y
ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Zsb29yZiAoZmxvYXQgX194KSA7CgoKZXh0
ZXJuIGZsb2F0IGZtb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19m
bW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgoKCmV4dGVybiBpbnQgX19pc2luZmYgKGZs
b2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9f
ZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDIw
NyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGNvcHlzaWdu
ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGZsb2F0IF9fY29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGZsb2F0IG5hbmYgKF9fY29uc3QgY2hhciAqX190
YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25hbmYgKF9f
Y29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRl
cm4gaW50IF9faXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKCmV4dGVybiBpbnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGowZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9f
ajBmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgajFmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19q
MWYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBqbmYgKGludCwgZmxvYXQpIDsgZXh0ZXJuIGZsb2F0
IF9fam5mIChpbnQsIGZsb2F0KSA7CmV4dGVybiBmbG9hdCB5MGYgKGZsb2F0KSA7IGV4dGVybiBm
bG9hdCBfX3kwZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IHkxZiAoZmxvYXQpIDsgZXh0ZXJuIGZs
b2F0IF9feTFmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgeW5mIChpbnQsIGZsb2F0KSA7IGV4dGVy
biBmbG9hdCBfX3luZiAoaW50LCBmbG9hdCkgOwoKCgoKCmV4dGVybiBmbG9hdCBlcmZmIChmbG9h
dCkgOyBleHRlcm4gZmxvYXQgX19lcmZmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgZXJmY2YgKGZs
b2F0KSA7IGV4dGVybiBmbG9hdCBfX2VyZmNmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgbGdhbW1h
ZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fbGdhbW1hZiAoZmxvYXQpIDsKCgoKZXh0ZXJuIGZs
b2F0IHRnYW1tYWYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX3RnYW1tYWYgKGZsb2F0KSA7CgoK
CgpleHRlcm4gZmxvYXQgZ2FtbWFmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19nYW1tYWYgKGZs
b2F0KSA7CiMgMjYwICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxv
YXQgcmludGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19yaW50ZiAoZmxvYXQgX194KSA7
CgoKZXh0ZXJuIGZsb2F0IG5leHRhZnRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25leHRhZnRlcmYgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4gZmxvYXQg
bmV4dHRvd2FyZGYgKGZsb2F0IF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25leHR0b3dhcmRmIChmbG9hdCBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQg
cmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fcmVtYWlu
ZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgoKZXh0ZXJuIGZsb2F0IHNjYWxiZiAoZmxv
YXQgX194LCBmbG9hdCBfX24pIDsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmIChmbG9hdCBfX3gsIGZs
b2F0IF9fbikgOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikg
OyBleHRlcm4gZmxvYXQgX19zY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIDsKCgoKZXh0ZXJu
IGludCBpbG9nYmYgKGZsb2F0IF9feCkgOyBleHRlcm4gaW50IF9faWxvZ2JmIChmbG9hdCBfX3gp
IDsKCgoKCmV4dGVybiBmbG9hdCBzY2FsYmxuZiAoZmxvYXQgX194LCBsb25nIGludCBfX24pIDsg
ZXh0ZXJuIGZsb2F0IF9fc2NhbGJsbmYgKGZsb2F0IF9feCwgbG9uZyBpbnQgX19uKSA7CgoKCmV4
dGVybiBmbG9hdCBuZWFyYnlpbnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbmVhcmJ5
aW50ZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCByb3VuZGYgKGZsb2F0IF9feCkgOyBl
eHRlcm4gZmxvYXQgX19yb3VuZGYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4gZmxvYXQgdHJ1bmNm
IChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9f
dHJ1bmNmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVy
biBmbG9hdCByZW1xdW9mIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgaW50ICpfX3F1bykgOyBleHRl
cm4gZmxvYXQgX19yZW1xdW9mIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgaW50ICpfX3F1bykgOwoK
CgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGxvbmcgaW50
IF9fbHJpbnRmIChmbG9hdCBfX3gpIDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50ZiAoZmxv
YXQgX194KSA7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50ZiAoZmxvYXQgX194KSA7CgoK
CmV4dGVybiBsb25nIGludCBscm91bmRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGxvbmcgaW50IF9f
bHJvdW5kZiAoZmxvYXQgX194KSA7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91bmRmIChmbG9h
dCBfX3gpIDsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kZiAoZmxvYXQgX194KSA7CgoK
CmV4dGVybiBmbG9hdCBmZGltZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0
IF9fZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKZXh0ZXJuIGZsb2F0IGZtYXhmIChm
bG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19mbWF4ZiAoZmxvYXQgX194LCBm
bG9hdCBfX3kpIDsKCgpleHRlcm4gZmxvYXQgZm1pbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7
IGV4dGVybiBmbG9hdCBfX2ZtaW5mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoKCgpleHRlcm4g
aW50IF9fZnBjbGFzc2lmeWYgKGZsb2F0IF9fdmFsdWUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0ZiAoZmxvYXQgX192YWx1ZSkKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBmbG9hdCBmbWFmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSwgZmxvYXQgX196KSA7IGV4dGVybiBmbG9hdCBfX2ZtYWYgKGZsb2F0IF9f
eCwgZmxvYXQgX195LCBmbG9hdCBfX3opIDsKIyA4MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAz
CiMgOTkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRo
Y2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVy
biBsb25nIGRvdWJsZSBhY29zbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2Fjb3NsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAo
bG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5sIChsb25nIGRvdWJs
ZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25n
IGRvdWJsZSBhdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSA7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gp
IDsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2Nvc2wgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNpbmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sIChsb25n
IGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5sIChsb25nIGRvdWJsZSBfX3gp
IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFubCAobG9uZyBkb3VibGUgX194KSA7CiMgNzggIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBjb3NobCAo
bG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2hsIChsb25nIGRvdWJs
ZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3NpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25n
IGRvdWJsZSB0YW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Rh
bmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NobCAobG9u
ZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NobCAobG9uZyBkb3VibGUg
X194KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25n
IGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19h
dGFuaGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBsIChs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbCAobG9uZyBkb3VibGUg
X194KSA7CiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9u
ZyBkb3VibGUgZnJleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOyBleHRl
cm4gbG9uZyBkb3VibGUgX19mcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50
KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19l
eHBvbmVudCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZGV4cGwgKGxvbmcgZG91YmxlIF9feCwg
aW50IF9fZXhwb25lbnQpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUg
X194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBsb2cxMGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBk
b3VibGUgX19sb2cxMGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBt
b2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKSA7IGV4dGVybiBsb25n
IGRvdWJsZSBfX21vZGZsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIDsK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cG0xbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2V4cG0xbCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91
YmxlIGxvZzFwbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFw
bCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2JsIChsb25nIGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nYmwgKGxvbmcgZG91YmxlIF9feCkg
OwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDJsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fZXhwMmwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRv
dWJsZSBsb2cybCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzJs
IChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Bvd2wg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3FydGwgKGxv
bmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgaHlwb3RsIChsb25nIGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxv
bmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUg
Y2JydGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19jYnJ0bCAobG9u
ZyBkb3VibGUgX194KSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3Vi
bGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NlaWxsIChsb25nIGRvdWJsZSBfX3gpIDsK
CgpleHRlcm4gbG9uZyBkb3VibGUgZmFic2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mYWJzbCAobG9uZyBkb3VibGUg
X194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZs
b29ybCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Zsb29ybCAobG9u
ZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbW9kbCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgoKCmV4dGVybiBpbnQgX19pc2luZmwgKGxv
bmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g
aW50IF9fZmluaXRlbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwojIDIwNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxv
bmcgZG91YmxlIGNvcHlzaWdubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29weXNpZ25s
IChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5hbmwgKF9fY29uc3QgY2hhciAqX190YWdi
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25hbmwg
KF9fY29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpl
eHRlcm4gaW50IF9faXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGowbCAobG9u
ZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajBsIChsb25nIGRvdWJsZSkgOwpleHRl
cm4gbG9uZyBkb3VibGUgajFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19q
MWwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSBqbmwgKGludCwgbG9uZyBkb3Vi
bGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fam5sIChpbnQsIGxvbmcgZG91YmxlKSA7CmV4dGVy
biBsb25nIGRvdWJsZSB5MGwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kw
bCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHkxbCAobG9uZyBkb3VibGUpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9feTFsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3Vi
bGUgeW5sIChpbnQsIGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3lubCAoaW50
LCBsb25nIGRvdWJsZSkgOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBlcmZsIChsb25nIGRvdWJs
ZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19lcmZsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9u
ZyBkb3VibGUgZXJmY2wgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmNs
IChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbCAobG9uZyBkb3VibGUp
IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbCAobG9uZyBkb3VibGUpIDsKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIHRnYW1tYWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBf
X3RnYW1tYWwgKGxvbmcgZG91YmxlKSA7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZ2FtbWFsIChs
b25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19nYW1tYWwgKGxvbmcgZG91YmxlKSA7
CiMgMjYwICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBkb3Vi
bGUgcmludGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19yaW50bCAo
bG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5leHRhZnRlcmwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHR0b3dhcmRsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmVtYWluZGVybCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxi
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fc2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbikgOwoKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIHNjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19zY2FsYm5sIChsb25nIGRvdWJsZSBfX3gsIGludCBfX24pIDsKCgoKZXh0
ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gaW50IF9faWxvZ2JsIChs
b25nIGRvdWJsZSBfX3gpIDsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYmxubCAobG9uZyBk
b3VibGUgX194LCBsb25nIGludCBfX24pIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsbmwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBu
ZWFyYnlpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmVhcmJ5
aW50bCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSByb3VuZGwgKGxv
bmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19yb3VuZGwgKGxvbmcgZG91Ymxl
IF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgdHJ1bmNsIChsb25nIGRvdWJsZSBfX3gpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdHJ1bmNsIChs
b25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBs
b25nIGRvdWJsZSByZW1xdW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgaW50
ICpfX3F1bykgOyBleHRlcm4gbG9uZyBkb3VibGUgX19yZW1xdW9sIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9feSwgaW50ICpfX3F1bykgOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJp
bnRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnRsIChsb25nIGRv
dWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50bCAobG9uZyBkb3VibGUgX194
KSA7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50bCAobG9uZyBkb3VibGUgX194KSA7CgoK
CmV4dGVybiBsb25nIGludCBscm91bmRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcg
aW50IF9fbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSA7CmV4dGVybiBsb25nIGxvbmcgaW50IGxs
cm91bmRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5k
bCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmZGltbCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmRpbWwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IGZtYXhsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBk
b3VibGUgX19mbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgpleHRl
cm4gbG9uZyBkb3VibGUgZm1pbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZtaW5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
IF9feSkgOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWwgKGxvbmcgZG91YmxlIF9fdmFsdWUp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0
bCAobG9uZyBkb3VibGUgX192YWx1ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWFsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
IF9feSwgbG9uZyBkb3VibGUgX196KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZtYWwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3opIDsKIyAxMDAgIi91
c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDExMyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpleHRl
cm4gaW50IHNpZ25nYW07CiMgMTU0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmVudW0KICB7CiAg
ICBGUF9OQU4sCgogICAgRlBfSU5GSU5JVEUsCgogICAgRlBfWkVSTywKCiAgICBGUF9TVUJOT1JN
QUwsCgogICAgRlBfTk9STUFMCgogIH07CiMgMjk2ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMg
MSAiL3Vzci9sb2NhbC9nY2MtMy4yL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi9p
bmNsdWRlL2Zsb2F0LmgiIDEgMwojIDI5NyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgMzQ4
ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGlu
ZS5oIiAxIDMKIyAxMjcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4g
X19pbmxpbmUgaW50Cl9fc2lnbmJpdGYgKGZsb2F0IF9feCkKewogIF9fZXh0ZW5zaW9uX18gdW5p
b24geyBmbG9hdCBfX2Y7IGludCBfX2k7IH0gX191ID0geyBfX2Y6IF9feCB9OwogIHJldHVybiBf
X3UuX19pIDwgMDsKfQpleHRlcm4gX19pbmxpbmUgaW50Cl9fc2lnbmJpdCAoZG91YmxlIF9feCkK
ewogIF9fZXh0ZW5zaW9uX18gdW5pb24geyBkb3VibGUgX19kOyBpbnQgX19pWzJdOyB9IF9fdSA9
IHsgX19kOiBfX3ggfTsKICByZXR1cm4gX191Ll9faVsxXSA8IDA7Cn0KZXh0ZXJuIF9faW5saW5l
IGludApfX3NpZ25iaXRsIChsb25nIGRvdWJsZSBfX3gpCnsKICBfX2V4dGVuc2lvbl9fIHVuaW9u
IHsgbG9uZyBkb3VibGUgX19sOyBpbnQgX19pWzNdOyB9IF9fdSA9IHsgX19sOiBfX3ggfTsKICBy
ZXR1cm4gKF9fdS5fX2lbMl0gJiAweDgwMDApICE9IDA7Cn0KIyAyOTEgIi91c3IvaW5jbHVkZS9i
aXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3VibGUp
IDsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBfX3NnbiAoZG91YmxlIF9feCkgeyByZXR1cm4gX194
ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfSBleHRlcm4gX19pbmxp
bmUgZmxvYXQgX19zZ25mIChmbG9hdCkgOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgX19zZ25mIChm
bG9hdCBfX3gpIHsgcmV0dXJuIF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDog
LTEuMCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2dubCAobG9uZyBkb3VibGUp
IDsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2dubCAobG9uZyBkb3VibGUgX194KSB7
IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9CiMg
NDc1ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRv
dWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkg
OiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10
IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192
YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbjJsIChsb25nIGRvdWJsZSBf
X3ksIGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1
IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfQpleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIg
OiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVy
biBfX3ZhbHVlOyB9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBk
b3VibGUgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIi
IDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyBy
ZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZm1vZGYgKGZsb2F0IF9feCwg
ZmxvYXQgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIi
IDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyBy
ZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIg
InNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195
KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQojIDQ5MCAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgc3FydCAoZG91YmxlIF9f
eCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0
IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgc3FydGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBmbG9hdCBfX3Jl
c3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAi
IChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBz
cXJ0bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkp
OyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc3FydGwg
KGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20g
X192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0
dXJuIF9fcmVzdWx0OyB9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBmYWJzIChkb3VibGUgX194
KSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyAoX194KTsgfQpleHRlcm4gX19pbmxpbmUgZmxvYXQg
ZmFic2YgKGZsb2F0IF9feCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNmIChfX3gpOyB9CmV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBmYWJzbCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBf
X2J1aWx0aW5fZmFic2wgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fZmFi
c2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNsIChfX3gpOyB9CiMg
NTE2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRv
dWJsZSBhdGFuIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20g
X192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194
KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGF0
YW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3Qo
MSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFu
bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChf
X3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQoKZXh0ZXJuIF9faW5saW5lIGxvbmcg
ZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJs
ZSBfX3NnbjFsIChsb25nIGRvdWJsZSBfX3gpIHsgX19leHRlbnNpb25fXyB1bmlvbiB7IGxvbmcg
ZG91YmxlIF9feGxkOyB1bnNpZ25lZCBpbnQgX194aVszXTsgfSBfX24gPSB7IF9feGxkOiBfX3gg
fTsgX19uLl9feGlbMl0gPSAoX19uLl9feGlbMl0gJiAweDgwMDApIHwgMHgzZmZmOyBfX24uX194
aVsxXSA9IDB4ODAwMDAwMDA7IF9fbi5fX3hpWzBdID0gMDsgcmV0dXJuIF9fbi5fX3hsZDsgfQoj
IDU0MiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBk
b3VibGUgZmxvb3IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsg
X192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBz
aG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChf
X2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJu
ZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJm
bGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxp
bmUgZmxvYXQgZmxvb3JmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25l
ZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0i
IChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgi
ZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19p
bmxpbmUgbG9uZyBkb3VibGUgZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192
b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZu
c3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0
MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9f
YXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1
ZTsgfQojIDU1MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lu
bGluZSBkb3VibGUgY2VpbCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2ln
bmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9
bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192
b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGls
ZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBf
X2lubGluZSBmbG9hdCBjZWlsZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5z
aWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDog
Ij1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyBfX2FzbSBf
X3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGls
ZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJu
IF9faW5saW5lIGxvbmcgZG91YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsg
X192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAo
ImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAw
eDA4MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBf
X2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7
IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192
YWx1ZTsgfQojIDU3MSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBf
X2lubGluZSBkb3VibGUKbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpCnsKICByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAo
X192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9f
dmFsdWU7Cn0KIyA1ODkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4g
X19pbmxpbmUgZG91YmxlIGxvZzFwIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEzNTYyMzcz
MDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGlu
ZSBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl
OyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgw
TCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgi
ZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAo
X194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQyMTM1NjIzNzMwOTUw
NDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNtIF9fdm9sYXRpbGVf
XyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA2MDMgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGFzaW5oIChkb3Vi
bGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVy
biAobG9nMXBsIChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkg
KyBfX3kpICogX19zZ24xbCAoX194KSk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGFzaW5oZiAo
ZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJl
dHVybiAobG9nMXBsIChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEu
MCkgKyBfX3kpICogX19zZ24xbCAoX194KSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91Ymxl
IGFzaW5obCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9f
ZmFic2wgKF9feCk7IHJldHVybiAobG9nMXBsIChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICog
X195ICsgMS4wKSArIDEuMCkgKyBfX3kpICogX19zZ24xbCAoX194KSk7IH0KCgoKCmV4dGVybiBf
X2lubGluZSBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9f
c3FydGwgKF9feCAtIDEuMCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfSBleHRlcm4gX19pbmxp
bmUgZmxvYXQgYWNvc2hmIChmbG9hdCBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwg
KF9feCAtIDEuMCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfSBleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUgYWNvc2hsIChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9f
c3FydGwgKF9feCAtIDEuMCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfQoKCmV4dGVybiBfX2lu
bGluZSBkb3VibGUgYXRhbmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195
ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgx
LjAgKyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGF0YW5o
ZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7
IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3Nn
bjFsIChfX3gpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91
YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1
cm4gLTAuNSAqIGxvZzFwbCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAo
X194KTsgfQoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91
YmxlIF9feSkgeyByZXR1cm4gX19zcXJ0bCAoX194ICogX194ICsgX195ICogX195KTsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgaHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4g
X19zcXJ0bCAoX194ICogX194ICsgX195ICogX195KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgaHlwb3RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgeyByZXR1cm4g
X19zcXJ0bCAoX194ICogX194ICsgX195ICogX195KTsgfQoKZXh0ZXJuIF9faW5saW5lIGRvdWJs
ZSBsb2diIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQi
IDogIj10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192
YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFs
dWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcg
ZG91YmxlIGxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm
eHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7
IHJldHVybiBfX3ZhbHVlOyB9CiMgNjMzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDMKZXh0ZXJuIF9faW5saW5lIGZsb2F0CmxkZXhwZiAoZmxvYXQgX194LCBpbnQgX195KQp7CiAg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxl
IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKChsb25nIGRvdWJsZSkgX195KSk7
IHJldHVybiBfX3ZhbHVlOwp9CgpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUKbGRleHBsIChs
b25nIGRvdWJsZSBfX3gsIGludCBfX3kpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0KIyA2NTcgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQK
bHJpbnRmIChmbG9hdCBfX3gpCnsKICBsb25nIGludCBfX2xyaW50cmVzOyBfX2FzbV9fIF9fdm9s
YXRpbGVfXyAoImZpc3RwbCAlMCIgOiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJz
dCIpOyByZXR1cm4gX19scmludHJlczsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKbHJpbnQg
KGRvdWJsZSBfX3gpCnsKICBsb25nIGludCBfX2xyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVf
XyAoImZpc3RwbCAlMCIgOiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyBy
ZXR1cm4gX19scmludHJlczsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKbHJpbnRsIChsb25n
IGRvdWJsZSBfX3gpCnsKICBsb25nIGludCBfX2xyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVf
XyAoImZpc3RwbCAlMCIgOiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyBy
ZXR1cm4gX19scmludHJlczsKfQojIDY4MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5o
IiAzCmV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CmxscmludGYgKGZsb2F0IF9feCkKewog
IGxvbmcgbG9uZyBpbnQgX19sbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlzdHBs
bCAlMCIgOiAiPW0iIChfX2xscmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9f
bGxyaW50cmVzOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CmxscmludCAoZG91Ymxl
IF9feCkKewogIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9f
ICgiZmlzdHBsbCAlMCIgOiAiPW0iIChfX2xscmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsg
cmV0dXJuIF9fbGxyaW50cmVzOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50Cmxscmlu
dGwgKGxvbmcgZG91YmxlIF9feCkKewogIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRyZXM7IF9fYXNt
X18gX192b2xhdGlsZV9fICgiZmlzdHBsbCAlMCIgOiAiPW0iIChfX2xscmludHJlcykgOiAidCIg
KF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbGxyaW50cmVzOwp9CiMgMzQ5ICIvdXNyL2luY2x1ZGUv
bWF0aC5oIiAyIDMKIyA0MDkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKCiMgMiAiVGVzdDEuYyIg
MgojIDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDMKCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy4yL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMDEgIi91c3IvbG9jYWwvZ2NjLTMu
Mi9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMwp0
eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CiMgMzQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAy
IDMKCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy4yL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMi9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9sb2NhbC9nY2MtMy4yL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVk
ZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMTEwICIvdXNyL2xvY2FsL2dj
Yy0zLjIvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkYXJnLmgi
IDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDM5ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy4yL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vz
ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9j
aGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNpb25f
XyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNpb25f
XyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDMKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9f
aW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90
ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50
IF9fdWlkX3Q7CnR5cGVkZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5v
X3Q7CnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsK
dHlwZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBl
ZGVmIGludCBfX3BpZF90Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcg
X19ybGltX3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQg
X19pZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRf
dDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBl
ZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7
CnR5cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3Ymxr
X3Q7Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRf
dDsKCgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
X19mZF9tYXNrOwojIDEwOSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHN0
cnVjdAogIHsKCgoKICAgIF9fZmRfbWFzayBmZHNfYml0c1sxMDI0IC8gKDggKiBzaXplb2YgKF9f
ZmRfbWFzaykpXTsKCgoKCgogIH0gX19mZF9zZXQ7CgoKdHlwZWRlZiBpbnQgX19rZXlfdDsKCgp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgoKdHlwZWRlZiBsb25nIGlu
dCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBf
X3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5
cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNm
aWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191
X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoKdHlwZWRl
ZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX190X3Vz
Y2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50
IF9fc29ja2xlbl90OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIg
MSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgi
IDMKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgc2NoZWRfcHJpb3JpdHk7CiAgfTsK
IyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBfcHRo
cmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7Cgp9
OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2Ny
OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hl
ZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5o
ZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19z
dGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsK
fSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9m
YXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFk
X2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29u
ZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVk
ZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0aHJl
YWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFz
dGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAg
aW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0
aHJlYWRfb25jZV90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfcndsb2NrX3QKewogIHN0
cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX3J3X2xvY2s7CiAgaW50IF9fcndfcmVhZGVyczsKICBf
cHRocmVhZF9kZXNjciBfX3J3X3dyaXRlcjsKICBfcHRocmVhZF9kZXNjciBfX3J3X3JlYWRfd2Fp
dGluZzsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlX3dhaXRpbmc7CiAgaW50IF9fcndfa2lu
ZDsKICBpbnQgX19yd19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKCnR5cGVkZWYgc3Ry
dWN0CnsKICBpbnQgX19sb2Nra2luZDsKICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2Nr
YXR0cl90OwoKCgoKdHlwZWRlZiB2b2xhdGlsZSBpbnQgcHRocmVhZF9zcGlubG9ja190OwoKCnR5
cGVkZWYgc3RydWN0IHsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19iYV9sb2NrOwogIGlu
dCBfX2JhX3JlcXVpcmVkOwogIGludCBfX2JhX3ByZXNlbnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19i
YV93YWl0aW5nOwp9IHB0aHJlYWRfYmFycmllcl90OwoKCnR5cGVkZWYgc3RydWN0IHsKICBpbnQg
X19wc2hhcmVkOwp9IHB0aHJlYWRfYmFycmllcmF0dHJfdDsKCgoKCgp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50IHB0aHJlYWRfdDsKIyAxNjYgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIg
MwojIDQxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNDkgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNTkgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9fRklMRTsKIyA2OSAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMSAzCiMgMzAgIi91c3Iv
aW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAxIDMKIyAx
NCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy4yL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAy
OTQgIi91c3IvbG9jYWwvZ2NjLTMuMi9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIv
aW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7CiMgMzIxICIvdXNy
L2xvY2FsL2djYy0zLjIvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUv
c3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1
ZGUvX0dfY29uZmlnLmgiIDIgMwojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDUgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAz
CiMgMSAiL3Vzci9sb2NhbC9nY2MtMy4yL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0NiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3dj
aGFyLmgiIDIgMwojIDY0ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwp0eXBlZGVmIHN0cnVjdAp7
CiAgaW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9f
d2NoYls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgMjUgIi91c3IvaW5jbHVkZS9f
R19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21i
c3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRf
dCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDQ0ICIvdXNy
L2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMSAzCiMg
MjggIi91c3IvaW5jbHVkZS9nY29udi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEg
MwojIDQ1ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbG9jYWwvZ2NjLTMuMi9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMg
NDYgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252Lmgi
IDIgMwoKIyAxICIvdXNyL2xvY2FsL2djYy0zLjIvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIg
MiAzCgoKCgoKZW51bQp7CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19H
Q09OVl9OT0RCLAogIF9fR0NPTlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19H
Q09OVl9GVUxMX09VVFBVVCwKICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNP
TVBMRVRFX0lOUFVULAoKICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lO
VEVSTkFMX0VSUk9SCn07CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBf
X0dDT05WX0lHTk9SRV9FUlJPUlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsK
c3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0Owpz
dHJ1Y3QgX19nY29udl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAo
c3RydWN0IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1
bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
ICoqLCBzaXplX3QgKiwgaW50LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2Zj
dCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2Zj
dCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFu
c19mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWdu
ZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsK
Cgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29u
c3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVk
ZWYgaW50ICgqX19nY29udl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25z
dCBjaGFyICoqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBj
b25zdCBjaGFyICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lk
ICopOwoKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9f
dHJhbnNfZmN0OwogIF9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2Zj
dDsKICBfX2djb252X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0
YTsKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2dj
b252X3N0ZXAKewogIHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxl
OwogIF9fY29uc3QgY2hhciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBfX2NvbnN0
IGNoYXIgKl9fZnJvbV9uYW1lOwogIF9fY29uc3QgY2hhciAqX190b19uYW1lOwoKICBfX2djb252
X2ZjdCBfX2ZjdDsKICBfX2djb252X2luaXRfZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRf
ZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQgX19taW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25l
ZWRlZF9mcm9tOwogIGludCBfX21pbl9uZWVkZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsK
CgogIGludCBfX3N0YXRlZnVsOwoKICB2b2lkICpfX2RhdGE7Cn07CgoKCnN0cnVjdCBfX2djb252
X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWY7CiAgdW5zaWduZWQgY2hhciAq
X19vdXRidWZlbmQ7CgoKCiAgaW50IF9fZmxhZ3M7CgoKCiAgaW50IF9faW52b2NhdGlvbl9jb3Vu
dGVyOwoKCgogIGludCBfX2ludGVybmFsX3VzZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwog
IF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoKCiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190
cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX19nY29udl9pbmZvCnsKICBzaXplX3QgX19uc3Rl
cHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsKICBfX2V4dGVuc2lvbl9fIHN0cnVj
dCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGFbMF07Cn0gKl9fZ2NvbnZfdDsKIyA0NSAiL3Vzci9p
bmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKdHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0IF9fZ2NvbnZf
aW5mbyBfX2NkOwogIHN0cnVjdAogIHsKICAgIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICAg
IHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGE7CiAgfSBfX2NvbWJpbmVkOwp9IF9HX2lj
b252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
X19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MTZfdCBfX2F0dHJpYnV0
ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDMy
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CiMgMzEgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAyIDMKIyAxNTggIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9f
anVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMgMTY4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0
eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0
IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9w
b3M7CiMgMTkxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jl
c3VsdAp7CiAgX19jb2RlY3Z0X29rLAogIF9fY29kZWN2dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9l
cnJvciwKICBfX2NvZGVjdnRfbm9jb252Cn07CiMgMjYzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIg
MwpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0
cjsKICBjaGFyKiBfSU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBf
SU9fd3JpdGVfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9l
bmQ7CiAgY2hhciogX0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpf
SU9fc2F2ZV9iYXNlOwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9l
bmQ7CgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpf
Y2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zm
c2V0OwoKCgogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFi
bGVfb2Zmc2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwoj
IDMwNyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgog
IHZvaWQgKl9fcGFkMTsKICB2b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51
c2VkMlsxNSAqIHNpemVvZiAoaW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBl
ZGVmIHN0cnVjdCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4
dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBf
SU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVz
IF9JT18yXzFfc3RkZXJyXzsKIyAzNDYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYg
X19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9p
ZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2
b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQg
X19pb19jbG9zZV9mbiAodm9pZCAqX19jb29raWUpOwojIDM5OCAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDMKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9f
dWZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBp
bnQpIDsKZXh0ZXJuIHdpbnRfdCBfX3d1bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIHdp
bnRfdCBfX3d1ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChf
SU9fRklMRSAqLCB3aW50X3QpIDsKIyA0MjggIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVy
biBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lPX3B1dGMgKGlu
dCBfX2MsIF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxFICpf
X2ZwKSA7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAoX0lPX0ZJTEUgKl9fZnApIDsKCmV4dGVybiBp
bnQgX0lPX3BlZWtjX2xvY2tlZCAoX0lPX0ZJTEUgKl9fZnApIDsKCgoKCgpleHRlcm4gdm9pZCBf
SU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAo
X0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUgKF9JT19GSUxFICopIDsK
IyA0NTggIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX3Zmc2NhbmYgKF9J
T19GSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpIDsKZXh0ZXJuIGlu
dCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3Ry
aWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QpIDsKZXh0ZXJuIF9f
c3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QpIDsKZXh0ZXJuIHNp
emVfdCBfSU9fc2dldG4gKF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90KSA7CgpleHRlcm4gX19v
ZmY2NF90IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSA7CmV4
dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50KSA7
CgpleHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgOwojIDcwICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCnR5cGVkZWYgX0dfZnBvc190IGZwb3NfdDsKIyAx
MjIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9f
bGltLmgiIDEgMwojIDEyMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgpleHRlcm4gRklM
RSAqc3RkaW47CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVybiBGSUxFICpzdGRlcnI7CgoKCgoK
CmV4dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsKCmV4dGVybiBp
bnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSA7CgoK
CgpleHRlcm4gRklMRSAqdG1wZmlsZSAodm9pZCkgOwojIDE1NCAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDMKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSA7CiMgMTcxICIvdXNyL2luY2x1
ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2Rpciwg
X19jb25zdCBjaGFyICpfX3BmeCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoK
CgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZmbHVz
aCAoRklMRSAqX19zdHJlYW0pIDsKIyAxOTQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVy
biBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKCmV4dGVy
biBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAg
ICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwojIDIyNCAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29u
c3QgY2hhciAqX19tb2RlcykgOwojIDI0NyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu
IHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0
IF9fYnVmKSA7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rl
cywgc2l6ZV90IF9fbikgOwojIDI2NiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGlu
dCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHBy
aW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBp
bnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgpleHRlcm4gaW50IHZmcHJp
bnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKZXh0ZXJu
IGludCB2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgIDsKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgoKCmV4dGVybiBpbnQgc25wcmludGYgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIF9fYXR0cmlidXRl
X18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCBfX3ZzbnBy
aW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFf
bGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywg
MywgMCkpKTsKZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXpl
X3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChf
X2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwojIDMyMSAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDMKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoK
ZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
IDsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsK
CgoKZXh0ZXJuIGludCB2ZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0
IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDAp
KSk7CgoKZXh0ZXJuIGludCB2c2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18g
KF9fc2NhbmZfXywgMSwgMCkpKTsKCgpleHRlcm4gaW50IHZzc2NhbmYgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCgoKZXh0ZXJuIGludCBmZ2V0YyAoRklM
RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVy
biBpbnQgZ2V0Y2hhciAodm9pZCkgOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChG
SUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpIDsKIyAz
NzAgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJ
TEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0p
IDsKCgpleHRlcm4gaW50IHB1dGNoYXIgKGludCBfX2MpIDsKIyAzODcgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJl
YW0pIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSA7CgoKCgoKZXh0ZXJu
IGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50IF9fdywg
RklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmlj
dCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgOwojIDQxMyAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgOwoj
IDQzNyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7CiMg
NDQ3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hh
ciAqX19zKSA7CgoKCmV4dGVybiBpbnQgdW5nZXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkg
OwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3Qg
X19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKSA7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3Ry
aWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9f
biwgRklMRSAqX19yZXN0cmljdCBfX3MpIDsKIyA0NzEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAz
CmV4dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9f
d2hlbmNlKSA7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRl
cm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNDg1ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMwp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CiMgNTAxICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMwpleHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGlu
dCBfX3doZW5jZSkgOwoKZXh0ZXJuIF9fb2ZmX3QgZnRlbGxvIChGSUxFICpfX3N0cmVhbSkgOwoK
CgpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAq
X19yZXN0cmljdCBfX3BvcykKICAgICA7CgpleHRlcm4gaW50IGZzZXRwb3MgKEZJTEUgKl9fc3Ry
ZWFtLCBfX2NvbnN0IGZwb3NfdCAqX19wb3MpIDsKIyA1NDMgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBm
ZW9mIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFt
KSA7CiMgNTU4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBwZXJyb3IgKF9f
Y29uc3QgY2hhciAqX19zKSA7CiMgNTc0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4g
aW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIDsKIyA1ODYgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzCmV4dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3Qg
Y2hhciAqX19tb2RlcykgOwoKCmV4dGVybiBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoK
CgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIDsKCgoKCgpleHRlcm4gY2hhciAq
Y3VzZXJpZCAoY2hhciAqX19zKSA7CiMgNjIxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZnRyeWxv
Y2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChGSUxF
ICpfX3N0cmVhbSkgOwojIDY0MiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9zdGRpby5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIg
MwpleHRlcm4gX19pbmxpbmUgaW50CnZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwg
X19mbXQsIF9fYXJnKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkKewog
IHJldHVybiBfSU9fZ2V0YyAoc3RkaW4pOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNf
dW5sb2NrZWQgKEZJTEUgKl9fZnApCnsKICByZXR1cm4gKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49
IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIg
KikgKF9fZnApLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNo
YXJfdW5sb2NrZWQgKHZvaWQpCnsKICByZXR1cm4gKChzdGRpbiktPl9JT19yZWFkX3B0ciA+PSAo
c3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIg
KikgKHN0ZGluKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1
dGNoYXIgKGludCBfX2MpCnsKICByZXR1cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0KTsKfQojIDgz
ICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y191
bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0p
LT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxv
dyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCoo
X19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKZXh0ZXJuIF9faW5saW5l
IGludApwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKQp7CiAgcmV0dXJuICgoKHN0ZG91dCktPl9J
T193cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoc3Rk
b3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCkt
Pl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KIyA2NDMgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAyIDMKCgoKIyAzICJUZXN0MS5jIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMK
IyAzMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy4yL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAz
NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3dhaXRmbGFncy5oIiAxIDMKIyA0MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDEgMwojIDQ0ICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDIgMwojIDk0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKdHlwZWRlZiBzdHJ1
Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGludCByZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBz
dHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90OwogICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90
OwoKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGxvbmcgaW50
IHF1b3Q7CiAgICBsb25nIGxvbmcgaW50IHJlbTsKICB9IGxsZGl2X3Q7CiMgMTMzICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2
b2lkKSA7CgoKCmV4dGVybiBkb3VibGUgYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9f
bnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAo
X19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpfX2V4
dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0
cikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGRvdWJsZSBzdHJ0
b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoKCgpleHRlcm4gZmxvYXQgc3RydG9mIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHN0cnRvbGQgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoKCgpleHRlcm4gbG9uZyBpbnQgc3RydG9s
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwgaW50IF9fYmFzZSkKICAgICA7CiMgMTg2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5z
aWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIDsKIyAyNTAgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgOwpleHRlcm4gZmxvYXQg
X19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2dyb3VwKQogICAgIDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9pbnRlcm5hbCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKSA7CgpleHRlcm4gbG9uZyBpbnQg
X19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3Jv
dXApIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRlcm5hbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3Vw
KSA7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9pbnRl
cm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91
cCkgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3Ry
dG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgOwojIDI5NCAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUKc3RydG9kIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVybiBf
X3N0cnRvZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5l
IGxvbmcgaW50CnN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0
cnRvbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpleHRlcm4gX19p
bmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2Up
CnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGZsb2F0CnN0cnRvZiAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsKICByZXR1cm4gX19z
dHJ0b2ZfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lubGluZSBs
b25nIGRvdWJsZQpzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRvbGRfaW50ZXJuYWwgKF9f
bnB0ciwgX19lbmRwdHIsIDApOwp9CiMgMzQxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKX19l
eHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b2xsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAg
ICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwg
X19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5z
aWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFyICogX19yZXN0cmljdCBf
X25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgaW50IF9fYmFzZSkK
ewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0
cikKewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApKTsKfQpl
eHRlcm4gX19pbmxpbmUgaW50CmF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJu
IChpbnQpIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQpleHRl
cm4gX19pbmxpbmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1
cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CgoKX19leHRl
bnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFy
ICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICop
MCksIDEwKTsKfQojIDM4NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICps
NjRhIChsb25nIGludCBfX24pIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoX19jb25zdCBjaGFy
ICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCgojIDQyICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5
cGVkZWYgX19pbm9fdCBpbm9fdDsKIyA1OCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5
cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVk
ZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5
cGVkZWYgX191aWRfdCB1aWRfdDsKIyA5NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5
cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CgoKCgp0eXBlZGVm
IF9fc3NpemVfdCBzc2l6ZV90OwojIDExNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5
cGVkZWYgX19rZXlfdCBrZXlfdDsKIyAxMjYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDU5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CiMgNzAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMK
dHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7CiMgODIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKdHlw
ZWRlZiBfX2Nsb2NraWRfdCBjbG9ja2lkX3Q7CiMgOTQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMK
dHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKIyAxMjcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMiAzCgoKCnR5cGVkZWYgX191c2Vjb25kc190IHVzZWNvbmRzX3Q7CgoKCnR5cGVkZWYgX19z
dXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjLTMuMi9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQx
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDE4NCAiL3Vzci9pbmNsdWRlL3N5cy90
eXBlcy5oIiAzCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9f
UUlfXykpKTsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9f
SElfXykpKTsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9f
U0lfXykpKTsKdHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9f
RElfXykpKTsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2lu
dDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5
cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykp
KTsKIyAyMTcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fYmxrc2l6ZV90
IGJsa3NpemVfdDsKCgoKCgoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwoKCgp0eXBlZGVm
IF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OwoKCgp0eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNu
dF90OwojIDI1NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCgojIDM5MiAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKZXh0ZXJuIGludDMyX3QgcmFuZG9tICh2b2lkKSA7CgoK
ZXh0ZXJuIHZvaWQgc3JhbmRvbSAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgoKCmV4dGVybiBj
aGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuKSA7CgoKCmV4dGVybiBjaGFy
ICpzZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1ZikgOwojIDQ0NyAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAzCmV4dGVybiBpbnQgcmFuZCAodm9pZCkgOwoKZXh0ZXJuIHZvaWQgc3JhbmQgKHVuc2ln
bmVkIGludCBfX3NlZWQpIDsKCgoKZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGludCAqX19z
ZWVkKSA7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGRvdWJs
ZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiBsb25n
IGludCBscmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBz
aG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2b2lkKSA7
CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkg
OwoKCmV4dGVybiB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkgOwpleHRlcm4gdW5z
aWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10p
IDsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10pIDsK
CgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CiAg
ICB1bnNpZ25lZCBzaG9ydCBpbnQgYVszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBjOwogICAg
dW5zaWduZWQgc2hvcnQgaW50IG9sZF94WzNdOwogICAgaW50IGluaXQ7CiAgfTsKIyA1MjYgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXpl
KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgKmNhbGxvYyAoc2l6
ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9j
X18pKTsKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3Np
emUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2b2lk
ICpfX3B0cikgOwojIDU1MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICp2
YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpl
eHRlcm4gaW50IHBvc2l4X21lbWFsaWduICh2b2lkICoqbWVtcHRyLCBzaXplX3QgYWxpZ25tZW50
LCBzaXplX3Qgc2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRl
cm4gdm9pZCBhYm9ydCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgpl
eHRlcm4gaW50IGF0ZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSA7CiMgNTc4ICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4gdm9pZCBfRXhpdCAoaW50IF9fc3Rh
dHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4gY2hhciAqZ2V0
ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0
ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgoKCmV4dGVybiBpbnQgcHV0ZW52IChjaGFy
ICpfX3N0cmluZykgOwojIDYyNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFy
ICpta3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAo
Y2hhciAqX190ZW1wbGF0ZSkgOwojIDY1NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVy
biBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgOwojIDY3MyAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9f
cmVzb2x2ZWQpIDsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2
b2lkICosIF9fY29uc3Qgdm9pZCAqKTsKIyA2OTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpl
eHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2b2lkICpfX2tleSwgX19jb25zdCB2b2lkICpf
X2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6
ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiB2b2lkIHFzb3J0ICh2b2lkICpf
X2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
X19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiBpbnQgYWJzIChpbnQgX194KSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsb25nIGludCBsYWJzIChsb25nIGludCBf
X3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9uZyBpbnQgX194KQogICAgIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKCgoKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBf
X2Rlbm9tKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBs
ZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rlbm9tKQogICAgIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxsZGl2X3QgbGxkaXYgKGxv
bmcgbG9uZyBpbnQgX19udW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9uZyBsb25nIGludCBfX2Rlbm9tKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
IyA3MjkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqZWN2dCAoZG91Ymxl
IF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAg
ICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRlcm4gY2hhciAqZmN2
dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQs
CiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRlcm4g
Y2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIDsK
CgpleHRlcm4gY2hhciAqcWVjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwK
ICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fc2lnbikgOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGlu
dCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwg
aW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcgZG91Ymxl
IF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIDsKIyA3NzMgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90
IF9fbikgOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAog
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9f
bikgOwoKCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFyX3QgX193Y2hhcikgOwoK
CgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90
IF9fbikgOwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3Ms
IHNpemVfdCBfX24pCiAgICAgOwojIDgwOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVy
biBpbnQgZ2V0c3Vib3B0IChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsCiAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICpfX2NvbnN0ICpfX3Jlc3RyaWN0IF9fdG9rZW5zLAogICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX192YWx1ZXApIDsKCgoKCgoKZXh0ZXJuIHZv
aWQgc2V0a2V5IChfX2NvbnN0IGNoYXIgKl9fa2V5KSA7CgoKCgoKCgpleHRlcm4gaW50IGdyYW50
cHQgKGludCBfX2ZkKSA7CgoKCmV4dGVybiBpbnQgdW5sb2NrcHQgKGludCBfX2ZkKSA7CgoKCgpl
eHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIDsKIyA4NTcgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMwoKIyA0ICJUZXN0MS5jIiAyCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10p
CnsKICBsb25nIGRvdWJsZSBuID0gKF9fZXh0ZW5zaW9uX18gKCh1bmlvbiB7IHVuc2lnbmVkIF9f
bCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1NJX18pKSk7IGZsb2F0IF9fZDsgfSkgeyBfX2w6
IDB4N2ZjMDAwMDBVTCB9KS5fX2QpOwogIGlmICgoc2l6ZW9mIChuKSA9PSBzaXplb2YgKGZsb2F0
KSA/IF9fc2lnbmJpdGYgKG4pIDogc2l6ZW9mIChuKSA9PSBzaXplb2YgKGRvdWJsZSkgPyBfX3Np
Z25iaXQgKG4pIDogX19zaWduYml0bCAobikpKQogIHsKICAgIGZwcmludGYoc3Rkb3V0LCAibiBp
cyBuZWdhdGl2ZVxuIik7CiAgfQogIGVsc2UKICB7CiAgICBmcHJpbnRmKHN0ZG91dCwgIm4gaXMg
cG9zaXRpdmVcbiIpOwogIH0KICBleGl0KDApOwp9Cg==


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

only message in thread, other threads:[~2002-08-20  6:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-08-19 23:46 optimization/7642: optimization problem with signbit() of a anonymous

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).