public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c++/4589: inernal error--unrecognizable insn
@ 2001-10-17  5:46 benedict.j.brown
  0 siblings, 0 replies; only message in thread
From: benedict.j.brown @ 2001-10-17  5:46 UTC (permalink / raw)
  To: gcc-gnats

>Number:         4589
>Category:       c++
>Synopsis:       inernal error--unrecognizable insn
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 17 05:46:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     benedict.j.brown@adelantetech.com
>Release:        gcc 2.95.3 20010315
>Organization:
>Environment:
HP-UX B11.0
>Description:
A compiler crash occurs on src.cxx:43 on HP.  The file compiles fine under Linux, Solaris, and Windows versions of gcc.  It has not been tested on gcc 3.x, as neither we are not yet ready to make the major-version upgrade.

Int<n> and Uint<n> are well-tested templates implemented n-bit fixed-point numbers.
>How-To-Repeat:
(output from gcc with -v option)

Reading specs from /usr/opt/gcc_2_95_3/lib/gcc-lib/hppa2.0w-hp-hpux11.00/2.95.3/specs
gcc version 2.95.3 20010315 (release)
 /usr/opt/gcc_2_95_3/lib/gcc-lib/hppa2.0w-hp-hpux11.00/2.95.3/cpp0 -lang-c++ -v -I/edc/wa/benedict/f3_id6/csfg/hpu_gnu/Fd_home/include -I. -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -Dhppa -Dhp9000s800 -D__hp9000s800 -Dhp9k8 -DPWB -Dhpux -Dunix -D__hppa__ -D__hp9000s800__ -D__hp9000s800 -D__hp9k8__ -D__PWB__ -D__hpux__ -D__unix__ -D__hppa -D__hp9000s800 -D__hp9k8 -D__PWB -D__hpux -D__unix -Asystem(unix) -Asystem(hpux) -Acpu(hppa) -Amachine(hppa) -D__EXCEPTIONS -D__hp9000s700 -D_PA_RISC1_1 -D_HPUX_SOURCE -D_HIUX_SOURCE -D__STDC_EXT__ src.cxx src.ii
GNU CPP version 2.95.3 20010315 (release) (hppa)
#include "..." search starts here:
#include <...> search starts here:
 /edc/wa/benedict/f3_id6/csfg/hpu_gnu/Fd_home/include
 .
 /usr/opt/gcc_2_95_3/lib/gcc-lib/hppa2.0w-hp-hpux11.00/2.95.3/../../../../include/g++-3
 /usr/opt/gcc_2_95_3/include
 /usr/opt/gcc_2_95_3/lib/gcc-lib/hppa2.0w-hp-hpux11.00/2.95.3/../../../../hppa2.0w-hp-hpux11.00/include
 /usr/opt/gcc_2_95_3/lib/gcc-lib/hppa2.0w-hp-hpux11.00/2.95.3/include
 /usr/include
End of search list.
The following default directories have been omitted from the search path:
End of omitted list.
 /usr/opt/gcc_2_95_3/lib/gcc-lib/hppa2.0w-hp-hpux11.00/2.95.3/cc1plus src.ii -quiet -dumpbase src.cc -version -o src.s
GNU C++ version 2.95.3 20010315 (release) (hppa2.0w-hp-hpux11.00) compiled by GNU C version 2.95.3 20010315 (release).
src.cxx: In function `void loop6(Fxp::Int<8>, Fxp::Int<8> &)':
src.cxx:43: internal error--unrecognizable insn:
(insn 3272 3270 3915 (set (reg:SI 1044)
        (plus:SI (reg:SI 1041)
            (const_int 8192 [0x2000]))) -1 (nil)
    (nil))
>Fix:
split line 43:
out = A[4] + C[5][5][0] + B[5][0] + D[3][2][0][3];
into two statements:

Int<8> out_tmp = A[4] + D[3][2][0][3]; 
out = out_tmp + C[5][5][0] + B[5][0];
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="src.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="src.ii"

IyAxICJzcmMuY3h4IgojIDEgIi9lZGMvd2EvYmVuZWRpY3QvZjNfaWQ2L2NzZmcvaHB1X2dudS9G
ZF9ob21lL2luY2x1ZGUvZnhwLmgiIDEKCgoKCgoKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCiAKIAogCgogCiAKCiAKIAogCgog
CiAKIAoKIAogCgogCiAKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAogCiAKCiMg
MjMzICIvZWRjL3dhL2JlbmVkaWN0L2YzX2lkNi9jc2ZnL2hwdV9nbnUvRmRfaG9tZS9pbmNsdWRl
L2Z4cC5oIgoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiAKCiAKIAog
CiAKIAoKCgoKCgoKIyAxICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3
LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgoKCgoK
CiAKCiAKCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2dj
Yy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
IAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwoKCgoKCgoKCgogCgoKCgogCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVm
IHVuc2lnbmVkIGludCAgd2ludF90OwoKCgoKIAoKIAoKIyAzMTcgIi91c3Ivb3B0L2djY18yXzk1
XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCgojIDI4MyAiL2VkYy93YS9iZW5lZGlj
dC9mM19pZDYvY3NmZy9ocHVfZ251L0ZkX2hvbWUvaW5jbHVkZS9meHAuaCIgMgoKIyAxICIvdXNy
L29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMv
aW5jbHVkZS9zdHJpbmcuaCIgMSAzCiAKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGRzeW1z
LmgiIDEgMwogCiAKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIyA2NSAiL3Vzci9pbmNsdWRlL3N5cy9z
dGRzeW1zLmgiIDMKCgoKIAoKCiMgODcgIi91c3IvaW5jbHVkZS9zeXMvc3Rkc3ltcy5oIiAzCgoK
CiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoK
CgogCiAKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgogCgoKIyAxOTggIi91
c3IvaW5jbHVkZS9zeXMvc3Rkc3ltcy5oIiAzCgoKCiAKCiMgMjE2ICIvdXNyL2luY2x1ZGUvc3lz
L3N0ZHN5bXMuaCIgMwoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCiMgMjU5ICIvdXNyL2lu
Y2x1ZGUvc3lzL3N0ZHN5bXMuaCIgMwoKCiMgMjczICIvdXNyL2luY2x1ZGUvc3lzL3N0ZHN5bXMu
aCIgMwoKCgoKCgoKCgoKCiMgMzAwICIvdXNyL2luY2x1ZGUvc3lzL3N0ZHN5bXMuaCIgMwoKCiAK
CgoKCgoKCiAKCgoKIyAzMjMgIi91c3IvaW5jbHVkZS9zeXMvc3Rkc3ltcy5oIiAzCgoKCgoKIAoK
CgoKCgoKCiMgNiAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4wdy1ocC1o
cHV4MTEuMDAvMi45NS4zL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRl
L3N5cy9faW50dHlwZXMuaCIgMSAzCiAKCgoKCiAKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGNoYXIgaW50OF90OyAJCQkgIAp0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsgCQkgIAp0eXBlZGVmIHNob3J0IGludDE2X3Q7IAkJ
CSAgCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7CSAgCnR5cGVkZWYgaW50ICBpbnQz
Ml90OyAJCQkgCnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OwkJIAoKdHlwZWRlZiBpbnQg
aW50ZmFzdF90OyAJCQkgCnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRmYXN0X3Q7CSAKCiMgODEg
Ii91c3IvaW5jbHVkZS9zeXMvX2ludHR5cGVzLmgiIDMKCgp0eXBlZGVmIGludDMyX3QgIGludG1h
eF90OyAJCSAgCnR5cGVkZWYgdWludDMyX3QgdWludG1heF90OwkgCSAKCgoKdHlwZWRlZiBsb25n
ICBpbnRwdHJfdDsJCQkgCnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50cHRyX3Q7IAkgCgoKIAoK
CgoKCiAKdHlwZWRlZiBjaGFyIGludF9sZWFzdDhfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IHVpbnRfbGVhc3Q4X3Q7IAoKIAp0eXBlZGVmIGludCBpbnRfZmFzdDhfdDsKCiAKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdWludF9mYXN0OF90OyAKCiAKdHlwZWRlZiBzaG9ydCBpbnRfbGVhc3QxNl90
OwoKIAp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnRfbGVhc3QxNl90OyAKCiAKdHlwZWRlZiBp
bnQgaW50X2Zhc3QxNl90OwoKIAp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3QxNl90OyAK
CiAKdHlwZWRlZiBpbnQgaW50X2xlYXN0MzJfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWlu
dF9sZWFzdDMyX3Q7IAoKIAp0eXBlZGVmIGludCBpbnRfZmFzdDMyX3Q7CgogCnR5cGVkZWYgdW5z
aWduZWQgaW50IHVpbnRfZmFzdDMyX3Q7IAoKCiMgMTQ5ICIvdXNyL2luY2x1ZGUvc3lzL19pbnR0
eXBlcy5oIiAzCgoKIAoKCgoKCgoKCgoKCgp0eXBlZGVmIHVpbnQzMl90IHB0cjMyX3Q7CgoKCgog
CgoKIyA4ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgx
MS4wMC8yLjk1LjMvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCmV4dGVybiAiQyIgewoKCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy9fbnVsbC5oIiAxIDMKIAoKIAoKIAogCgogCgoKCgoKCgoKCgoK
CgoKCgogCiMgMTcgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAt
aHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKIAoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvc3lzL19zaXplX3QuaCIgMSAzCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg
MjUgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAw
LzIuOTUuMy9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKCiAgICAgZXh0ZXJuIGludCBtZW1jbXAo
Y29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CiAgICAgZXh0ZXJuIGNoYXIgKnN0
cm5jYXQoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CiAgICAgZXh0ZXJuIGludCBzdHJu
Y21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwogICAgIGV4dGVybiB2b2lk
ICptZW1tb3ZlKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwogICAgIGV4dGVybiBjaGFy
ICpzdHJjcHkoY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgIGV4dGVybiBjaGFyICpzdHJuY3B5
KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwogICAgIGV4dGVybiBjaGFyICpzdHJjYXQo
Y2hhciAqLCBjb25zdCBjaGFyICopOwogICAgIGV4dGVybiBpbnQgc3RyY21wKGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gaW50IHN0cmNvbGwoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICopOwogICAgIGV4dGVybiBzaXplX3Qgc3RyeGZybShjaGFyICosIGNvbnN0IGNo
YXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gY2hhciAqc3RyY2hyKGNvbnN0IGNoYXIgKiwgaW50
KTsKICAgICBleHRlcm4gY2hhciAqc3RycGJyayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7
CiAgICAgZXh0ZXJuIGNoYXIgKnN0cnJjaHIoY29uc3QgY2hhciAqLCBpbnQpOwogICAgIGV4dGVy
biBjaGFyICpzdHJzdHIoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgIGV4dGVybiBj
aGFyICpzdHJ0b2soY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgIGV4dGVybiBjaGFyICpzdHJl
cnJvcihpbnQpOwoKCgoKCgojIDc0ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hw
cGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgoKCgoKCgoK
CiAgICAgICBleHRlcm4gdm9pZCAqbWVtY3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3Qp
OwogICAgICAgZXh0ZXJuIHZvaWQgKm1lbWNocihjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsK
ICAgICAgIGV4dGVybiB2b2lkICptZW1zZXQodm9pZCAqLCBpbnQsIHNpemVfdCk7CiAgICAgICBl
eHRlcm4gc2l6ZV90IHN0cmNzcG4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgICAg
ZXh0ZXJuIHNpemVfdCBzdHJzcG4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCgogICAg
ICAgICAgZXh0ZXJuIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqKTsKCgoKCgoKCgoKCgoKCgoK
CgogICAgICAgZXh0ZXJuIHZvaWQgKm1lbWNjcHkodm9pZCAqLCBjb25zdCB2b2lkICosIGludCwg
c2l6ZV90KTsKCgoKCgoKCgoKCgoKCgoKCgoKICAgICBleHRlcm4gY2hhciAqc3RyZHVwKGNvbnN0
IGNoYXIgKik7CgoKCgoKCgogICAgIGV4dGVybiBjaGFyICpzdHJyc3RyKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gaW50IHN0cmNhc2VjbXAoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICopOwogICAgIGV4dGVybiBpbnQgc3RybmNhc2VjbXAoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICosIHNpemVfdCk7CiAgICAgZXh0ZXJuIGludCBubF9zdHJjbXAoY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICopOwogICAgIGV4dGVybiBpbnQgbmxfc3RybmNtcChjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKCgoKCgoKCgoKCn0KCgoKIyAyODQgIi9lZGMvd2Ev
YmVuZWRpY3QvZjNfaWQ2L2NzZmcvaHB1X2dudS9GZF9ob21lL2luY2x1ZGUvZnhwLmgiIDIKCiMg
MSAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4wdy1ocC1ocHV4MTEuMDAv
Mi45NS4zL2luY2x1ZGUvc3RkbGliLmgiIDEgMwogCgoKCgoKCgojIDEgIi91c3Ivb3B0L2djY18y
Xzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N5
cy90eXBlcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCQl0eXBlZGVmIGludAltcWRfdDsJIAoK
CgoKCiAgICAgdHlwZWRlZiBpbnQzMl90IGRldl90OwkJIAoKCgoKCgl0eXBlZGVmIHVpbnQzMl90
IGlubzMyX3Q7CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoJIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBp
bm9fdDsKCgoKCgogICAgIHR5cGVkZWYgdWludDE2X3QgbW9kZV90OwkJIAoKCgoKICAgICB0eXBl
ZGVmIHVpbnQxNl90IG5saW5rX3Q7CQkgCgoKCgogICAgdHlwZWRlZiBpbnQzMl90IGZwb3MzMl90
OwkJIAoKCgoKCgoKCgoKCgoKCiAgICAgICB0eXBlZGVmIGxvbmcgZnBvc190OwkJCgoKCgoKICAg
ICB0eXBlZGVmIHVpbnQzMl90IGZzYmxrY250MzJfdDsJIAoKCgoKCgoKCgoKCgoKCgogICAgICAg
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGZzYmxrY250X3Q7CQoKCgoKCiAgICAgdHlwZWRlZiBpbnQz
Ml90IG9mZjMyX3Q7CSAKCgoKCgoKCgoKCgoKCgoKICAgICAgICB0eXBlZGVmIGxvbmcgb2ZmX3Q7
CQkKCgoKCgogICAgIHR5cGVkZWYgdWludDMyX3QgZnNmaWxjbnQzMl90OwkgCgoKCgoKCgoKCgoK
CgoKCiAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGZzZmlsY250X3Q7CQoKCgoKCiAgICAg
dHlwZWRlZiBpbnQzMl90IGJsa2NudDMyX3Q7CSAKCgoKCgoKCgoKCgoKCgoKICAgICAgICB0eXBl
ZGVmIGxvbmcgYmxrY250X3Q7CQoKCgoKCiAgICAgdHlwZWRlZiBpbnQzMl90IHBpZF90OwkJIAoK
CgoKICAgICB0eXBlZGVmIGludDMyX3QgbHdwaWRfdDsgICAgICAgICAgICAgICAKCgoKCiAgICAg
dHlwZWRlZiBpbnQzMl90IGdpZF90OwkJIAoKCgoKICAgICB0eXBlZGVmIGludDMyX3QgdWlkX3Q7
CQkgCgoKCgogICAgIHR5cGVkZWYgaW50MzJfdCB0aWRfdDsJCSAKCgoKCgl0eXBlZGVmIGxvbmcg
c3NpemVfdDsKCgoKCiAgICAgdHlwZWRlZiB1aW50MTZfdCBfX3NpdGVfdDsJCSAKCgoKCiAgICAg
dHlwZWRlZiB1aW50MTZfdCBfX2Nub2RlX3Q7CSAKCgoKCgoKCgoKICAgICAgICAgICAgICAgIHR5
cGVkZWYgbG9uZyB0aW1lX3Q7CgoKCgoKIyAyMzcgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2dj
Yy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N5cy90eXBlcy5oIiAz
CgoKCgoKCiAgICAgdHlwZWRlZiB1aW50MzJfdCBjbG9ja190OwkJIAoKCgoKCgogICAgICB0eXBl
ZGVmIGludDMyX3Qga2V5X3Q7CQkgCgoKICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3VzaG9y
dDsJIAoKICAgdHlwZWRlZiBpbnQzMl90IF9fZGFkZHJfdDsJCSAKICAgdHlwZWRlZiBjaGFyICpf
X2NhZGRyX3Q7CQkgCiAgIHR5cGVkZWYgaW50MzJfdCBfX3N3YmxrX3Q7CgoKCgoKCiAgICAgdHlw
ZWRlZiBfX2NhZGRyX3QJCWNhZGRyX3Q7CgoKCgoKCgogICAgIHR5cGVkZWYgaW50MzJfdCBpZF90
OwkgCgoKCgogICAgIHR5cGVkZWYgdWludDMyX3QgdXNlY29uZHNfdDsJIAoKCiAKCgoKICAgICAg
dHlwZWRlZiB1aW50MzJfdCBybGltMzJfdDsKCgoKCgoKCgoKCgoKCgoKCgogICAgICAgdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIHJsaW1fdDsKCgoKIAogICB0eXBlZGVmIF9fc2l0ZV90CQlzaXRlX3Q7
CgoKCiAgIHR5cGVkZWYgdW5zaWduZWQgY2hhcgl1X2NoYXI7CSAgICAKICAgdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydAl1X3Nob3J0OyAgICAKICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQJCXVfaW50OyAg
ICAgIAogICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcJdV9sb25nOyAgICAgCiAgIHR5cGVkZWYgdW5z
aWduZWQgaW50CQl1aW50OwkgICAgCiAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQJdXNob3J0Owkg
ICAgCiAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgdWJpdDg7CiAgIHR5cGVkZWYgdW5zaWduZWQg
c2hvcnQgdWJpdDE2OwogICB0eXBlZGVmIHVpbnQzMl90CSAgdWJpdDMyOwogICB0eXBlZGVmIGNo
YXIgICAgICAgICAgIHNiaXQ4OwogICB0eXBlZGVmIHNob3J0ICAgICAgICAgIHNiaXQxNjsKICAg
dHlwZWRlZiBpbnQzMl90ICAgICAgICBzYml0MzI7CgogICB0eXBlZGVmIF9fc3dibGtfdAkJc3di
bGtfdDsKICAgdHlwZWRlZiBfX2RhZGRyX3QJCWRhZGRyX3Q7CiAgIHR5cGVkZWYgX19jbm9kZV90
CQljbm9kZV90OwoKICAgIAoKCgojIDEgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIv
aHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL21hY2hpbmUvdm10eXBlcy5oIiAx
IDMKIAoKCgoKCgoKICAgIAogICB0eXBlZGVmIHVpbnRwdHJfdCAgICAgICAgICAgIHBhZGRyX3Q7
ICAgICAgICAgCgogICAgCgoKCgogICB0eXBlZGVmIGludHB0cl90ICAgICAgICAgICAgIHBhZ2Vf
dDsgICAgICAgICAgCiAgIHR5cGVkZWYgaW50MzJfdCAgICAgICAgICAgICAgcGdjbnRfdDsgICAg
ICAgICAKICAgdHlwZWRlZiB1aW50MzJfdCAgICAgICAgICAgICBwaHlzcGZuX3Q7ICAgICAgIAog
ICB0eXBlZGVmIHVpbnRwdHJfdCAgICAgICAgICAgIGlvcGh5c3Bmbl90OyAgICAgCiAgIHR5cGVk
ZWYgdWludHB0cl90ICAgICAgICAgICAgcGdhZGRyX3Q7ICAgICAgICAKCiAgIHR5cGVkZWYgdWlu
dDMyX3QgICAgICAgICAgICAgc3BhY2VfdDsKICAgdHlwZWRlZiB1aW50MzJfdCAgICAgICAgICAg
ICBwcm90X3Q7CgojIDMzMiAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4w
dy1ocC1ocHV4MTEuMDAvMi45NS4zL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoKCiAgIHR5
cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZ190OwoKCiAgIHR5cGVkZWYgaW50MTZfdAkJY250X3Q7
CiAgIHR5cGVkZWYgdWludDMyX3QgICAgICAgICAgICAgY2Rub190OwogICB0eXBlZGVmIHVpbnQx
Nl90CQl1c2VfdDsKCiAgIHR5cGVkZWYgc3RydWN0IF9waHlzYWRyIHsgaW50cHRyX3QgclsxXTsg
fSAqcGh5c2FkcjsKICAgdHlwZWRlZiBzdHJ1Y3QgX3F1YWQgeyBsb25nIHZhbFsyXTsgfSBxdWFk
OwoKICAgdHlwZWRlZiBpbnQgc3B1X3Q7CgoKCgoKICAgICB0eXBlZGVmIHNob3J0IGNwdV90OwoK
ICAgICB0eXBlZGVmIHN0cnVjdCBsYWJlbF90IHsKCgoKCgoKCglpbnQzMl90ICAgICBsYmxfcnA7
CglpbnQzMl90ICAgICBsYmxfc3A7CglpbnQzMl90ICAgICBsYmxfc1sxN107CQoJaW50MzJfdCAg
ICAgbGJsX3NzWzFdOwogCWRvdWJsZSAgICAgIGxibF9zZlsxMF07CgogICAgfSBsYWJlbF90OwoK
IAoKCnR5cGVkZWYgc3RydWN0IGxraW5mbyB7CiAgICAgICBjaGFyICAgICpsa19uYW1lOwogICAg
ICAgaW50ICAgICAgbGtfZmxhZ3M7CiAgICAgICBsb25nICAgICBsa19wYWRbMl07Cn0gbGtpbmZv
X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICBwbF90OwoKCiAgIHR5cGVkZWYgY2hhciAqZG1f
bWVzc2FnZTsKCgoKCiAgICAgIHR5cGVkZWYgaW50MzJfdAlhaWRfdDsKCgoKIAoKCgoKICAgdHlw
ZWRlZiBwaWRfdAkJc2lkX3Q7CSAgICAKCgoKCgoKCiAgICAKCgoKCgoKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL19mZF9tYWNyb3MuaCIgMSAzCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCnR5cGVkZWYgaW50MzJfdCBfX2ZkX21hc2s7CgoKCgoKCgoK
ICAgdHlwZWRlZiBzdHJ1Y3QgZmRfc2V0ICB7CiAgICAgbG9uZyBmZHNfYml0c1soKCggMjA0OCAg
ICkrKCggIChzaXplb2YobG9uZykgKiA4KSApLTEpKS8oICAoc2l6ZW9mKGxvbmcpICogOCkgKSkg
XTsKICAgICB9IGZkX3NldDsKCgoKCWV4dGVybiAiQyIgewoKCgoKCgoKIyAxMDkgIi91c3IvaW5j
bHVkZS9zeXMvX2ZkX21hY3Jvcy5oIiAzCgoKCgl9CgoKCgoKIyA0MTIgIi91c3Ivb3B0L2djY18y
Xzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N5
cy90eXBlcy5oIiAyIDMKCgoKCiAgICAgIAoKCgoKCiAgICAgdHlwZWRlZiBfX2ZkX21hc2sgIGZk
X21hc2s7CgoKCgoJZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
Cgl9CgoKCgoKIyA0NzggIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHct
aHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCgoKIyA0OTYgIi91c3Iv
b3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzCgoKCiMgOSAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2Nj
LWxpYi9ocHBhMi4wdy1ocC1ocHV4MTEuMDAvMi45NS4zL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoK
CgpleHRlcm4gIkMiIHsKCgoKCgoKICAgZXh0ZXJuIGludCBfX25sX2NoYXJfc2l6ZTsKCgoKCgoK
CgoKCgoKICAgdHlwZWRlZiBzdHJ1Y3QgewoJaW50IHF1b3Q7CSAKCWludCByZW07CSAKICAgfSBk
aXZfdDsKICAgdHlwZWRlZiBzdHJ1Y3QgewoJbG9uZyBpbnQgcXVvdDsJIAoJbG9uZyBpbnQgcmVt
OwkgCiAgIH0gbGRpdl90OwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvX3djaGFyX3QuaCIg
MSAzCiAKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDYgIi91c3Iv
b3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9p
bmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKICAgICAgIGV4dGVybiBkb3VibGUgYXRvZihjb25z
dCBjaGFyICopOwoKICAgICBleHRlcm4gaW50IGF0b2koY29uc3QgY2hhciAqKTsKICAgICBleHRl
cm4gbG9uZyBpbnQgYXRvbChjb25zdCBjaGFyICopOwogICAgIGV4dGVybiBkb3VibGUgc3RydG9k
KGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CiAgICAgZXh0ZXJuIGxvbmcgaW50IHN0cnRvbChjb25z
dCBjaGFyICosIGNoYXIgKiosIGludCk7CiAgICAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0
cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwogICAgIGV4dGVybiBpbnQgcmFuZCh2
b2lkKTsKICAgICBleHRlcm4gdm9pZCBzcmFuZCh1bnNpZ25lZCBpbnQpOwogICAgIGV4dGVybiBp
bnQgYXRleGl0KHZvaWQgKCopICh2b2lkKSk7CiAgICAgZXh0ZXJuIHZvaWQgZXhpdChpbnQpOwog
ICAgIGV4dGVybiBjaGFyICpnZXRlbnYoY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gaW50IHN5
c3RlbShjb25zdCBjaGFyICopOwoKCgoKICAgICAgICBpbmxpbmUgaW50IGFicyhpbnQgZCkgeyBy
ZXR1cm4gKGQ+MCk/ZDotZDsgfQoKCiAgICAgZXh0ZXJuIGRpdl90IGRpdihpbnQsIGludCk7CiAg
ICAgZXh0ZXJuIGxkaXZfdCBsZGl2KGxvbmcgaW50LCBsb25nIGludCk7CiAgICAgZXh0ZXJuIGxv
bmcgaW50IGxhYnMobG9uZyBpbnQpOwogICAgIGV4dGVybiBpbnQgbWJsZW4oY29uc3QgY2hhciAq
LCBzaXplX3QpOwogICAgIGV4dGVybiBpbnQgbWJ0b3djKHdjaGFyX3QgKiwgY29uc3QgY2hhciAq
LCBzaXplX3QpOwogICAgIGV4dGVybiBpbnQgd2N0b21iKGNoYXIgKiwgd2NoYXJfdCk7CiAgICAg
ZXh0ZXJuIHNpemVfdCBtYnN0b3djcyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsK
ICAgICBleHRlcm4gc2l6ZV90IHdjc3RvbWJzKGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXpl
X3QpOwogICAgIGV4dGVybiB2b2lkIGZyZWUodm9pZCAqKTsKICAgICBleHRlcm4gdm9pZCBxc29y
dCh2b2lkICosIHNpemVfdCwgc2l6ZV90LCBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9p
ZCAqKSk7CiMgMTA5ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhw
LWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKCgoKCgoKICAgICAgIGV4
dGVybiB2b2lkIGFib3J0KHZvaWQpOwogICAgICAgZXh0ZXJuIHZvaWQgKmJzZWFyY2goY29uc3Qg
dm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBpbnQgKCopIChjb25zdCB2b2lk
ICosIGNvbnN0IHZvaWQgKikpOwogICAgICAgZXh0ZXJuIHZvaWQgKmNhbGxvYyhzaXplX3QsIHNp
emVfdCk7CiAgICAgICBleHRlcm4gdm9pZCAqbWFsbG9jKHNpemVfdCk7CiAgICAgICBleHRlcm4g
dm9pZCAqcmVhbGxvYyh2b2lkICosIHNpemVfdCk7CgoKCgoKCgoKCgoKIyAxNjcgIi91c3Ivb3B0
L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNs
dWRlL3N0ZGxpYi5oIiAzCgoKCgogICAgIGV4dGVybiB2b2lkIHNldGtleShjb25zdCBjaGFyICop
OwogICAgIGV4dGVybiB2b2lkIGxjb25nNDgoIHVuc2lnbmVkIHNob3J0IFtdICk7CgoKCgoKCgoK
CiAgICAgICAgZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4KHZvaWQpOwogICAgICAgIGV4dGVybiBkb3Vi
bGUgZXJhbmQ0OCh1bnNpZ25lZCBzaG9ydCBbXSk7CiAgICAgICAgZXh0ZXJuIGxvbmcganJhbmQ0
OCh1bnNpZ25lZCBzaG9ydCBbXSk7CiAgICAgICAgZXh0ZXJuIGxvbmcgbHJhbmQ0OCh2b2lkKTsK
ICAgICAgICBleHRlcm4gbG9uZyBtcmFuZDQ4KHZvaWQpOwogICAgICAgIGV4dGVybiBsb25nIG5y
YW5kNDgodW5zaWduZWQgc2hvcnQgW10pOwogICAgICAgIGV4dGVybiB2b2lkIHNyYW5kNDgobG9u
Zyk7CiAgICAgICAgZXh0ZXJuIHVuc2lnbmVkIHNob3J0ICpzZWVkNDgodW5zaWduZWQgc2hvcnQg
W10pOwogICAgICAgIGV4dGVybiBpbnQgcHV0ZW52KGNvbnN0IGNoYXIgKik7CiMgMjAxICIvdXNy
L29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMv
aW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKCiAgICAgICBleHRlcm4gaW50IGNsZWFyZW52KHZvaWQp
OwogICAgICAgZXh0ZXJuIGludCBnZXRvcHQoaW50LCBjaGFyICogY29uc3QgW10sIGNvbnN0IGNo
YXIgKik7CiAgICAgICBleHRlcm4gY2hhciAqZ2V0cGFzcyhjb25zdCBjaGFyICopOwoKCgoKCgog
ICAgIGV4dGVybiBjaGFyICpvcHRhcmc7CiAgICAgZXh0ZXJuIGludCBvcHRpbmQ7CiAgICAgZXh0
ZXJuIGludCBvcHRlcnI7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDEgMwogCgoK
CgogCgoKCgoKCgoKCgoKCgoKICAgICAKCgoKCgoKCgoKCgoKCgoKICAgIAoKCgoKCgoKCgoKCgoK
CgoKCiAgICBleHRlcm4gIkMiIHsKCgoKCgoKCiAgICAgICBleHRlcm4gcGlkX3Qgd2FpdChpbnQg
Kik7CiAgICAgICBleHRlcm4gcGlkX3Qgd2FpdHBpZChwaWRfdCwgaW50ICosIGludCk7CgoKCgoK
CgogICAgfQoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDEgMwog
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAx
IDMKIAoKCgoKIAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWdldmVudC5oIiAxIDMK
IAoKCgoKIAoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmICAgdW5pb24gc2lndmFsIHsKCgoKICAgICAg
c3RydWN0IHsKCgoKICAgICAgICAgIGludCAgICAgICBfX3N2aV9pbnQ7ICAgCiAgICAgIH0gX19z
dmlfaW50X3M7CiAgICAgIHZvaWQgKiAgICBfX3NpdmFsX3B0cjsgICAgIAogICB9IHNpZ3ZhbF90
OwoKCgoKCgp0eXBlZGVmIGludAlwdGhyZWFkX2F0dHJfdDsKCgoKCnR5cGVkZWYgICBzdHJ1Y3Qg
c2lnZXZlbnQgewoKCgogICAgICBpbnQgICAgICAgICAgICAgICBfX3NpZ2V2X25vdGlmeTsgIAog
ICAgICBpbnQgICAgICAgICAgICAgICBfX3NpZ2V2X3NpZ25vOyAgIAogICAgICBzaWd2YWxfdCAg
ICAgICAgICBfX3NpZ2V2X3ZhbHVlOyAgIAoKCiAgICAgICAKCiAgICAgIHZvaWQJCSgqX19zaWdl
dl9ub3RpZnlfZnVuY3Rpb24pKHNpZ3ZhbF90KTsKCgoKICAgICAgIAoKICAgICAgcHRocmVhZF9h
dHRyX3QJKl9fc2lnZXZfbm90aWZ5X2F0dHJpYnV0ZXM7CgoKCgoKCgogICAgICBpbnQJCV9fc2ln
ZXZfcmVzZXJ2ZWRbOF07CSAKCiAgIH0gc2lnZXZlbnRfdDsKCiAgZW51bSBfX3NpZ2V2X3R5cGVz
IHsKCSAgX19TSUdFVl9OT05FID0gMSwJIAoJICBfX1NJR0VWX1NJR05BTAkgCgoJICAsX19TSUdF
Vl9USFJFQUQJIAoKICB9OwoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxNSAiL3Vzci9pbmNsdWRlL3N5
cy90aW1lLmgiIDIgMwoKCgoKCgoKCgoKCgoKCgoKCiAKCiMgNjAgIi91c3IvaW5jbHVkZS9zeXMv
dGltZS5oIiAzCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgICAKCgogICBzdHJ1Y3QgdG0gewog
ICAgICBpbnQgdG1fc2VjOwkgCiAgICAgIGludCB0bV9taW47CSAKICAgICAgaW50IHRtX2hvdXI7
CSAKICAgICAgaW50IHRtX21kYXk7CSAKICAgICAgaW50IHRtX21vbjsJIAogICAgICBpbnQgdG1f
eWVhcjsJIAogICAgICBpbnQgdG1fd2RheTsJIAogICAgICBpbnQgdG1feWRheTsJIAogICAgICBp
bnQgdG1faXNkc3Q7CSAKICAgfTsKCgoKCgoKCiAgIAogIHN0cnVjdCB0aW1lc3BlYyB7Cgl0aW1l
X3QJdHZfc2VjOwkJCSAKCWxvbmcJdHZfbnNlYzsJCSAKfTsKdHlwZWRlZiBzdHJ1Y3QgdGltZXNw
ZWMgICAgICAgICB0aW1lc3RydWNfdDsKCgoKCiAKc3RydWN0IGl0aW1lcnNwZWMgewoJc3RydWN0
IHRpbWVzcGVjIGl0X2ludGVydmFsOwkgCglzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7CSAKfTsK
Cgp0eXBlZGVmIGVudW0gX19jbG9ja2lkX3QgewoJQ0xPQ0tfSU5WQUxJRCA9IDAsCglDTE9DS19S
RUFMVElNRSA9IDEsCSAKCUNMT0NLX1ZJUlRVQUwgPSAyLAkgCglDTE9DS19QUk9GSUxFID0gNCwJ
IAoJUlRUSU1FUjAgPSA4LAoJUlRUSU1FUjEgPSAxNgp9IGNsb2NraWRfdDsKCgoKCXR5cGVkZWYg
dW5zaWduZWQgbG9uZyB0aW1lcl90OwoKCgoKCgoKCiAKCgoKCiAgICAKCXN0cnVjdCB0aW1ldmFs
IHsgCQoKCQl0aW1lX3QJIHR2X3NlYzsgCSAgCgoKCgkJbG9uZwkgdHZfdXNlYzsgIAkgCgl9OwoK
CiAgICAKICAgc3RydWN0CWl0aW1lcnZhbCB7CglzdHJ1Y3QJdGltZXZhbCBpdF9pbnRlcnZhbDsJ
IAoJc3RydWN0CXRpbWV2YWwgaXRfdmFsdWU7CSAKICAgfTsKCgoKCiAgICAKICAgc3RydWN0IHRp
bWV6b25lIHsKCWludAl0el9taW51dGVzd2VzdDsJIAoJaW50CXR6X2RzdHRpbWU7CSAKICAgfTsK
CiAgICAKICAgdHlwZWRlZiBzdHJ1Y3QgX19jeWNsZXMgewkgCgl1aW50MzJfdCBoaTsJIAoJdWlu
dDMyX3QgbG87CSAKICAgfSBjeWNsZXNfdDsKCgoKCiAKCgoKICAgZXh0ZXJuICJDIiB7CgoKCgoK
CgoKCgoKIyAyMDUgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCgoKCgoKCgoKCgoKCgoKICAg
ICBleHRlcm4gZG91YmxlIGRpZmZ0aW1lKHRpbWVfdCwgdGltZV90KTsKCgoKCiAgICAgZXh0ZXJu
IHRpbWVfdCBta3RpbWUoc3RydWN0IHRtICopOwoKCgoKICAgICBleHRlcm4gdGltZV90IHRpbWUo
dGltZV90ICopOwoKCgogICAgIGV4dGVybiBjaGFyICphc2N0aW1lKGNvbnN0IHN0cnVjdCB0bSAq
KTsKCgoKCiAgICAgZXh0ZXJuIGNoYXIgKmN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKCgoKCiAgICAg
ZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lKGNvbnN0IHRpbWVfdCAqKTsKCgoKCiAgICAgZXh0ZXJu
IHN0cnVjdCB0bSAqbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqKTsKCgoKCiAgICAgZXh0ZXJuIHNp
emVfdCBzdHJmdGltZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3Qg
dG0gKik7CgoKIyAyODUgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCgojIDM1OSAiL3Vzci9p
bmNsdWRlL3N5cy90aW1lLmgiIDMKCgoKCgoKCgoKCgoKCiAgICAgICBleHRlcm4gY2xvY2tfdCBj
bG9jayh2b2lkKTsKCgoKCgoKCgoKCgoKCgoKCiAgICAgZXh0ZXJuIHZvaWQgdHpzZXQodm9pZCk7
CgoKCgoKCgoKICAgZXh0ZXJuIGNoYXIgKnR6bmFtZVsyXTsKCgoKCgoKICAgICBleHRlcm4gaW50
IGNsb2NrX3NldHRpbWUoY2xvY2tpZF90LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKik7CiAgICAg
ZXh0ZXJuIGludCBjbG9ja19nZXR0aW1lKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOwog
ICAgIGV4dGVybiBpbnQgY2xvY2tfZ2V0cmVzKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICop
OwogICAgIGV4dGVybiBpbnQgdGltZXJfY3JlYXRlKGNsb2NraWRfdCwgc3RydWN0IHNpZ2V2ZW50
ICosIHRpbWVyX3QgKik7CiAgICAgZXh0ZXJuIGludCB0aW1lcl9kZWxldGUodGltZXJfdCk7CiAg
ICAgZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lKHRpbWVyX3QsIGludCwgY29uc3Qgc3RydWN0IGl0
aW1lcnNwZWMgKiwKCQkJICAgICAgc3RydWN0IGl0aW1lcnNwZWMgKik7CiAgICAgZXh0ZXJuIGlu
dCB0aW1lcl9nZXR0aW1lKHRpbWVyX3QsIHN0cnVjdCBpdGltZXJzcGVjICopOwogICAgIGV4dGVy
biBpbnQgdGltZXJfZ2V0b3ZlcnJ1bih0aW1lcl90KTsKICAgICBleHRlcm4gaW50IG5hbm9zbGVl
cChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKiwgc3RydWN0IHRpbWVzcGVjICopOwojIDQyNSAiL3Vz
ci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKCgoKCgoKCgoKCgoKCgogICAgICAgICBleHRlcm4gY2hh
ciAqc3RycHRpbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHN0cnVjdCB0bSAqKTsKCgoK
CgoKCgoKCiAgICAgICBleHRlcm4gbG9uZyB0aW1lem9uZTsKCgoKCiAgICAgICBleHRlcm4gaW50
IGRheWxpZ2h0OwoKCgoKCgogICB9CgoKCgoKIAoKCgoKCgoKCgogICBleHRlcm4gIkMiIHsKCgoK
ICAgICBleHRlcm4gaW50IGdldGl0aW1lcihpbnQsIHN0cnVjdCBpdGltZXJ2YWwgKik7CiAgICAg
ZXh0ZXJuIGludCBzZXRpdGltZXIoaW50LCBjb25zdCBzdHJ1Y3QgaXRpbWVydmFsICosIHN0cnVj
dCBpdGltZXJ2YWwgKik7CiAgICAgZXh0ZXJuIGludCB1dGltZXMoY29uc3QgY2hhciAqcGF0aCwg
Y29uc3Qgc3RydWN0IHRpbWV2YWwgYW10aW1lc1syXSk7CiAgICAgZXh0ZXJuIGludCBnZXR0aW1l
b2ZkYXkoc3RydWN0IHRpbWV2YWwgKiwgdm9pZCAqKTsKCgoKICAgICAgIGV4dGVybiBpbnQgc2Vs
ZWN0KGludCwgZmRfc2V0ICosIGZkX3NldCAqLCBmZF9zZXQgKiwgc3RydWN0IHRpbWV2YWwgKik7
CgoKCgoKCgoKCgogICB9CgoKCgoKCiAgIGV4dGVybiAiQyIgewoKCgoKICAgICBleHRlcm4gaW50
IGFkanRpbWUoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV2YWwgKik7CgoKCiAg
ICAgICBleHRlcm4gc3RydWN0IHRtICpnZXRkYXRlKGNvbnN0IGNoYXIgKik7CgoKCgoKCgoKCiAg
ICAgZXh0ZXJuIGludCBzZXR0aW1lb2ZkYXkoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwgY29uc3Qg
c3RydWN0IHRpbWV6b25lICopOwogICAgIGV4dGVybiBpbnQgc3RpbWUoY29uc3QgdGltZV90ICop
OwogICAgIGV4dGVybiB2b2lkIHByb2ZpbChjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBp
bnQpOwojIDU0NyAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKCgoKCgoKCgoKICAgICAgIGV4
dGVybiBpbnQgZ2V0ZGF0ZV9lcnI7CgoKCgoKCiAgIH0KCgoKCgoKCgoKICAgCgoKCgoKCgoKCgoK
CiAKCiAgICAKCgoKCiAKCgoKCgoKCgogCgoKCiAgICAKICAgIHN0cnVjdAlraV90aW1ldmFsIHsK
CSAgICB1aW50MzJfdAlwYWQxOwkJCgkgICAgdWludDMyX3QJcGFkMjsJCiAgICB9OwoKIAoKCgoK
CgoKCgoKIAoKCgoKCnR5cGVkZWYgc3RydWN0IGtpX3RpbWV2YWwga3RfdDsKCgoKCiAgICAKCgoK
CgoKCiAgICAKCgoKCgoKCgoKCgoKCgogICAgCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyNiAiL3Vz
ci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAyIDMKCgoKIAoKCgoKCgoKCgojIDEgIi91c3IvaW5j
bHVkZS9zeXMvX3JsaW1pdF9ib2R5LmgiIDEgMwogCgoKCgogCgogCgoKCnN0cnVjdCBybGltaXQg
IHsKICAgICAgICBybGltX3QgICBybGltX2N1cjsgICAgICAgICAgICAgICAgCiAgICAgICAgcmxp
bV90ICAgcmxpbV9tYXg7ICAgICAgICAgICAgICAgIAp9OwoKIyAzOSAiL3Vzci9pbmNsdWRlL3N5
cy9yZXNvdXJjZS5oIiAyIDMKCgoKCgojIDU2ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgi
IDMKCgojIDY4ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMKCgoKIAoKCgoKCgoKCgoK
IAoKCgoKCgpzdHJ1Y3QJcnVzYWdlIHsKCXN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwkgCglzdHJ1
Y3QgdGltZXZhbCBydV9zdGltZTsJIAoJCQkJCSAKCWxvbmcJcnVfbWF4cnNzOwoKCWxvbmcJcnVf
aXhyc3M7CQkgCglsb25nCXJ1X2lkcnNzOwkJIAoJbG9uZwlydV9pc3JzczsJCSAKCWxvbmcJcnVf
bWluZmx0OwkJIAoJbG9uZwlydV9tYWpmbHQ7CQkgCglsb25nCXJ1X25zd2FwOwkJIAoJbG9uZwly
dV9pbmJsb2NrOwkJIAoJbG9uZwlydV9vdWJsb2NrOwkJIAoJbG9uZwlydV9pb2NoOwkJIAoJbG9u
ZwlydV9tc2dzbmQ7CQkgCglsb25nCXJ1X21zZ3JjdjsJCSAKCWxvbmcJcnVfbnNpZ25hbHM7CQkg
Cglsb25nCXJ1X252Y3N3OwkJIAoJbG9uZwlydV9uaXZjc3c7CQkgCgp9OwoKIAoKCgoKCgogCgoK
CgoKIAoKCgogICBleHRlcm4gIkMiIHsKCgogICBleHRlcm4gaW50IGdldHByaW9yaXR5ICAoaW50
LCBpZF90KSAgOwogICBleHRlcm4gaW50IGdldHJ1c2FnZSAgKGludCwgc3RydWN0IHJ1c2FnZSAq
KSAgOwogICBleHRlcm4gaW50IHNldHByaW9yaXR5ICAoaW50LCBpZF90LCBpbnQpICA7CiAgIGV4
dGVybiAgaW50IGdldHJsaW1pdCAgKGludCwgc3RydWN0IHJsaW1pdCAqKSAgOwogICBleHRlcm4g
IGludCBzZXRybGltaXQgIChpbnQsIGNvbnN0IHN0cnVjdCBybGltaXQgKikgIDsKCiMgMTQ2ICIv
dXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMKCgojIDE2NyAiL3Vzci9pbmNsdWRlL3N5cy9y
ZXNvdXJjZS5oIiAzCgoKCiAgIH0KCgoKIAoKCgojIDE4NyAiL3Vzci9pbmNsdWRlL3N5cy9yZXNv
dXJjZS5oIiAzCgoKIyAyMDIgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA4MyAiL3Vzci9pbmNsdWRlL3N5cy93YWl0Lmgi
IDIgMwoKCgoKCiAKCgoKCgoKICAgICAgZXh0ZXJuICJDIiB7CgoKCgoKCiAgICAgICAgICAgZXh0
ZXJuIHBpZF90IHdhaXQzKGludCAqLCBpbnQsIHN0cnVjdCBydXNhZ2UgKik7CgoKCgoKCgoKCiAg
ICAgIH0KCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMSAzCiAKCgoK
CiAKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgplbnVtIF9fc2lfY29kZXMgewkJCQkJCSAKCVNJX1FVRVVFICA9IC0yLAkgCglT
SV9VU0VSICAgPSAtMSwJIAoJU0lfVElNRVIgID0gIDEsCSAKCVNJX0FTWU5DSU89ICAyLAkgCglT
SV9NRVNHUSAgPSAgMwkgCn07CgoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9fc2lnaW5mbyB7
CQkJCQkgCgoKCglpbnQJCXNpX3NpZ25vOwkgCglpbnQJCXNpX2NvZGU7CSAKCWludAkJc2lfZXJy
bm87CSAKCXNpZ3ZhbF90CXNpX3ZhbHVlOwkgCgl1bmlvbiB7CgkJc3RydWN0IHsJCSAKCQkJcGlk
X3QgX19waWQ7CgkJCXVuaW9uIHsKCQkJCXN0cnVjdCB7CgkJCQkJdWlkX3QgX191aWQ7CgkJCQl9
IF9fa2lsbDsKCQkJCXN0cnVjdCB7CgkJCQkJaW50IF9fc3RhdHVzOwoJCQkJfSBfX1NJR0NMRDsK
CQkJfSBfX3BkYXRhOwoJCX0gX19wcm9jOwoJCXN0cnVjdCB7CSAKCQkJdm9pZCAqX19hZGRyOwkg
CgkJfSBfX2ZhdWx0OwoJCXN0cnVjdCB7CSAKCQkJaW50IF9fZmQ7CgkJCWxvbmcgX19iYW5kOwoJ
CX0gX19maWxlOwoJCXN0cnVjdCB7ICAgICAgICAgCgkJCXZvaWQgKl9fYWRkcjsgICAgICAKCQkJ
dm9pZCAqX19sb2NrcGFnZTsgIAoJCQlsb25nICBfX2Rldl9pZDsgICAgCgkJfSBfX2dmYXVsdDsK
CX0gX19kYXRhOwoKCWxvbmcgX19wYWRbOSBdOwp9IHNpZ2luZm9fdDsKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgkJCQkJIAoKCiMgMjg0ICIvdXNyL2luY2x1ZGUvc3lzL3Np
Z2luZm8uaCIgMwoKCiMgMTYgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDIgMwoKIyAxICIv
dXNyL2luY2x1ZGUvc3lzL25ld3NpZy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgog
ICAgIHR5cGVkZWYgc3RydWN0IF9fc2lnc2V0X3QgewogICAgICAgICAgdW5zaWduZWQgaW50IHNp
Z3NldFs4XTsKICAgICB9IHNpZ3NldF90OwoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVk
ZS9tYWNoaW5lL3NhdmVfc3RhdGUuaCIgMSAzCiAKCgoKCiAgCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVj
dCBfX2ZwX2RibF9ibG9jayB7CgoJZG91YmxlIHNzX2ZwMDsJCQkgCglkb3VibGUgc3NfZnAxOwoJ
ZG91YmxlIHNzX2ZwMjsKCWRvdWJsZSBzc19mcDM7Cglkb3VibGUgc3NfZnA0OwoJZG91YmxlIHNz
X2ZwNTsKCWRvdWJsZSBzc19mcDY7Cglkb3VibGUgc3NfZnA3OwoJZG91YmxlIHNzX2ZwODsKCWRv
dWJsZSBzc19mcDk7Cglkb3VibGUgc3NfZnAxMDsKCWRvdWJsZSBzc19mcDExOwoJZG91YmxlIHNz
X2ZwMTI7Cglkb3VibGUgc3NfZnAxMzsKCWRvdWJsZSBzc19mcDE0OwoJZG91YmxlIHNzX2ZwMTU7
Cglkb3VibGUgc3NfZnAxNjsKCWRvdWJsZSBzc19mcDE3OwoJZG91YmxlIHNzX2ZwMTg7Cglkb3Vi
bGUgc3NfZnAxOTsKCWRvdWJsZSBzc19mcDIwOwoJZG91YmxlIHNzX2ZwMjE7Cglkb3VibGUgc3Nf
ZnAyMjsKCWRvdWJsZSBzc19mcDIzOwoJZG91YmxlIHNzX2ZwMjQ7Cglkb3VibGUgc3NfZnAyNTsK
CWRvdWJsZSBzc19mcDI2OwoJZG91YmxlIHNzX2ZwMjc7Cglkb3VibGUgc3NfZnAyODsKCWRvdWJs
ZSBzc19mcDI5OwoJZG91YmxlIHNzX2ZwMzA7Cglkb3VibGUgc3NfZnAzMTsKfSBmcF9kYmxfYmxv
Y2tfdDsKCgoKCnR5cGVkZWYgc3RydWN0IF9fZnBfaW50X2Jsb2NrIHsKCglpbnQgc3NfZnBzdGF0
OwkJCSAKCWludCBzc19mcGV4Y2VwdDE7CglpbnQgc3NfZnBleGNlcHQyOwoJaW50IHNzX2ZwZXhj
ZXB0MzsKCWludCBzc19mcGV4Y2VwdDQ7CglpbnQgc3NfZnBleGNlcHQ1OwoJaW50IHNzX2ZwZXhj
ZXB0NjsKCWludCBzc19mcGV4Y2VwdDc7CglpbnQgc3NfZnA0X2hpOwoJaW50IHNzX2ZwNF9sbzsK
CWludCBzc19mcDVfaGk7CglpbnQgc3NfZnA1X2xvOwoJaW50IHNzX2ZwNl9oaTsKCWludCBzc19m
cDZfbG87CglpbnQgc3NfZnA3X2hpOwoJaW50IHNzX2ZwN19sbzsKCWludCBzc19mcDhfaGk7Cglp
bnQgc3NfZnA4X2xvOwoJaW50IHNzX2ZwOV9oaTsKCWludCBzc19mcDlfbG87CglpbnQgc3NfZnAx
MF9oaTsKCWludCBzc19mcDEwX2xvOwoJaW50IHNzX2ZwMTFfaGk7CglpbnQgc3NfZnAxMV9sbzsK
CWludCBzc19mcDEyX2hpOwoJaW50IHNzX2ZwMTJfbG87CglpbnQgc3NfZnAxM19oaTsKCWludCBz
c19mcDEzX2xvOwoJaW50IHNzX2ZwMTRfaGk7CglpbnQgc3NfZnAxNF9sbzsKCWludCBzc19mcDE1
X2hpOwoJaW50IHNzX2ZwMTVfbG87CglpbnQgc3NfZnAxNl9oaTsKCWludCBzc19mcDE2X2xvOwoJ
aW50IHNzX2ZwMTdfaGk7CglpbnQgc3NfZnAxN19sbzsKCWludCBzc19mcDE4X2hpOwoJaW50IHNz
X2ZwMThfbG87CglpbnQgc3NfZnAxOV9oaTsKCWludCBzc19mcDE5X2xvOwoJaW50IHNzX2ZwMjBf
aGk7CglpbnQgc3NfZnAyMF9sbzsKCWludCBzc19mcDIxX2hpOwoJaW50IHNzX2ZwMjFfbG87Cglp
bnQgc3NfZnAyMl9oaTsKCWludCBzc19mcDIyX2xvOwoJaW50IHNzX2ZwMjNfaGk7CglpbnQgc3Nf
ZnAyM19sbzsKCWludCBzc19mcDI0X2hpOwoJaW50IHNzX2ZwMjRfbG87CglpbnQgc3NfZnAyNV9o
aTsKCWludCBzc19mcDI1X2xvOwoJaW50IHNzX2ZwMjZfaGk7CglpbnQgc3NfZnAyNl9sbzsKCWlu
dCBzc19mcDI3X2hpOwoJaW50IHNzX2ZwMjdfbG87CglpbnQgc3NfZnAyOF9oaTsKCWludCBzc19m
cDI4X2xvOwoJaW50IHNzX2ZwMjlfaGk7CglpbnQgc3NfZnAyOV9sbzsKCWludCBzc19mcDMwX2hp
OwoJaW50IHNzX2ZwMzBfbG87CglpbnQgc3NfZnAzMV9oaTsKCWludCBzc19mcDMxX2xvOwp9IGZw
X2ludF9ibG9ja190OwoKIAoKCiMgMzQ4ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zYXZlX3N0YXRl
LmgiIDMKCgogCgoKdHlwZWRlZiBzdHJ1Y3QgX19yZWc2NCB7CiMgNDE5ICIvdXNyL2luY2x1ZGUv
bWFjaGluZS9zYXZlX3N0YXRlLmgiIDMKCglpbnQgc3NfcmVzZXJ2ZWRbMio2NF07Cgp9IF9fcmVn
NjRfdDsKCiAKCgoKdHlwZWRlZiBzdHJ1Y3QgX19yZWczMiB7Cgl1aW50MzJfdCBzc19yZXNlcnZl
ZFsyXTsKCXVpbnQzMl90IHNzX2dyMV9oaTsKCXVpbnQzMl90IHNzX2dyMV9sbzsKCXVpbnQzMl90
IHNzX3JwX2hpOwoJdWludDMyX3Qgc3NfcnBfbG87Cgl1aW50MzJfdCBzc19ncjNfaGk7Cgl1aW50
MzJfdCBzc19ncjNfbG87Cgl1aW50MzJfdCBzc19ncjRfaGk7Cgl1aW50MzJfdCBzc19ncjRfbG87
Cgl1aW50MzJfdCBzc19ncjVfaGk7Cgl1aW50MzJfdCBzc19ncjVfbG87Cgl1aW50MzJfdCBzc19n
cjZfaGk7Cgl1aW50MzJfdCBzc19ncjZfbG87Cgl1aW50MzJfdCBzc19ncjdfaGk7Cgl1aW50MzJf
dCBzc19ncjdfbG87Cgl1aW50MzJfdCBzc19ncjhfaGk7Cgl1aW50MzJfdCBzc19ncjhfbG87Cgl1
aW50MzJfdCBzc19ncjlfaGk7Cgl1aW50MzJfdCBzc19ncjlfbG87Cgl1aW50MzJfdCBzc19ncjEw
X2hpOwoJdWludDMyX3Qgc3NfZ3IxMF9sbzsKCXVpbnQzMl90IHNzX2dyMTFfaGk7Cgl1aW50MzJf
dCBzc19ncjExX2xvOwoJdWludDMyX3Qgc3NfZ3IxMl9oaTsKCXVpbnQzMl90IHNzX2dyMTJfbG87
Cgl1aW50MzJfdCBzc19ncjEzX2hpOwoJdWludDMyX3Qgc3NfZ3IxM19sbzsKCXVpbnQzMl90IHNz
X2dyMTRfaGk7Cgl1aW50MzJfdCBzc19ncjE0X2xvOwoJdWludDMyX3Qgc3NfZ3IxNV9oaTsKCXVp
bnQzMl90IHNzX2dyMTVfbG87Cgl1aW50MzJfdCBzc19ncjE2X2hpOwoJdWludDMyX3Qgc3NfZ3Ix
Nl9sbzsKCXVpbnQzMl90IHNzX2dyMTdfaGk7Cgl1aW50MzJfdCBzc19ncjE3X2xvOwoJdWludDMy
X3Qgc3NfZ3IxOF9oaTsKCXVpbnQzMl90IHNzX2dyMThfbG87Cgl1aW50MzJfdCBzc19ncjE5X2hp
OwoJdWludDMyX3Qgc3NfZ3IxOV9sbzsKCXVpbnQzMl90IHNzX2dyMjBfaGk7Cgl1aW50MzJfdCBz
c19ncjIwX2xvOwoJdWludDMyX3Qgc3NfZ3IyMV9oaTsKCXVpbnQzMl90IHNzX2dyMjFfbG87Cgl1
aW50MzJfdCBzc19ncjIyX2hpOwoJdWludDMyX3Qgc3NfZ3IyMl9sbzsKCXVpbnQzMl90IHNzX2Fy
ZzNfaGk7Cgl1aW50MzJfdCBzc19hcmczX2xvOwoJdWludDMyX3Qgc3NfYXJnMl9oaTsKCXVpbnQz
Ml90IHNzX2FyZzJfbG87Cgl1aW50MzJfdCBzc19hcmcxX2hpOwoJdWludDMyX3Qgc3NfYXJnMV9s
bzsKCXVpbnQzMl90IHNzX2FyZzBfaGk7Cgl1aW50MzJfdCBzc19hcmcwX2xvOwoJdW5zaWduZWQg
aW50IHNzX2RwX2hpOwoJdW5zaWduZWQgaW50IHNzX2RwX2xvOwoJdW5zaWduZWQgaW50IHNzX3Jl
dDBfaGk7Cgl1bnNpZ25lZCBpbnQgc3NfcmV0MF9sbzsKCXVuc2lnbmVkIGludCBzc19yZXQxX2hp
OwoJdW5zaWduZWQgaW50IHNzX3JldDFfbG87Cgl1bnNpZ25lZCBpbnQgc3Nfc3BfaGk7Cgl1bnNp
Z25lZCBpbnQgc3Nfc3BfbG87Cgl1bnNpZ25lZCBpbnQgc3NfZ3IzMV9oaTsKCXVuc2lnbmVkIGlu
dCBzc19ncjMxX2xvOwoJdW5zaWduZWQgaW50IHNzX2NyMTFfaGk7Cgl1bnNpZ25lZCBpbnQgc3Nf
Y3IxMV9sbzsKCXVuc2lnbmVkIGludCBzc19wY29xX2hlYWRfaGk7Cgl1bnNpZ25lZCBpbnQgc3Nf
cGNvcV9oZWFkX2xvOwoJdW5zaWduZWQgaW50IHNzX3Bjc3FfaGVhZF9oaTsKCXVuc2lnbmVkIGlu
dCBzc19wY3NxX2hlYWRfbG87Cgl1bnNpZ25lZCBpbnQgc3NfcGNvcV90YWlsX2hpOwoJdW5zaWdu
ZWQgaW50IHNzX3Bjb3FfdGFpbF9sbzsKCXVuc2lnbmVkIGludCBzc19wY3NxX3RhaWxfaGk7Cgl1
bnNpZ25lZCBpbnQgc3NfcGNzcV90YWlsX2xvOwoJdW5zaWduZWQgaW50IHNzX2NyMTVfaGk7Cgl1
bnNpZ25lZCBpbnQgc3NfY3IxNV9sbzsKCXVuc2lnbmVkIGludCBzc19jcjE5X2hpOwoJdW5zaWdu
ZWQgaW50IHNzX2NyMTlfbG87Cgl1bnNpZ25lZCBpbnQgc3NfY3IyMF9oaTsKCXVuc2lnbmVkIGlu
dCBzc19jcjIwX2xvOwoJdW5zaWduZWQgaW50IHNzX2NyMjFfaGk7Cgl1bnNpZ25lZCBpbnQgc3Nf
Y3IyMV9sbzsKCXVuc2lnbmVkIGludCBzc19jcjIyX2hpOwoJdW5zaWduZWQgaW50IHNzX2NyMjJf
bG87Cgl1bnNpZ25lZCBpbnQgc3NfY3B1c3RhdGVfaGk7Cgl1bnNpZ25lZCBpbnQgc3NfY3B1c3Rh
dGVfbG87Cgl1bnNpZ25lZCBpbnQgc3Nfc3I0X2hpOwoJdW5zaWduZWQgaW50IHNzX3NyNF9sbzsK
CXVuc2lnbmVkIGludCBzc19zcjBfaGk7Cgl1bnNpZ25lZCBpbnQgc3Nfc3IwX2xvOwoJdW5zaWdu
ZWQgaW50IHNzX3NyMV9oaTsKCXVuc2lnbmVkIGludCBzc19zcjFfbG87Cgl1bnNpZ25lZCBpbnQg
c3Nfc3IyX2hpOwoJdW5zaWduZWQgaW50IHNzX3NyMl9sbzsKCXVuc2lnbmVkIGludCBzc19zcjNf
aGk7Cgl1bnNpZ25lZCBpbnQgc3Nfc3IzX2xvOwoJdW5zaWduZWQgaW50IHNzX3NyNV9oaTsKCXVu
c2lnbmVkIGludCBzc19zcjVfbG87Cgl1bnNpZ25lZCBpbnQgc3Nfc3I2X2hpOwoJdW5zaWduZWQg
aW50IHNzX3NyNl9sbzsKCXVuc2lnbmVkIGludCBzc19zcjdfaGk7Cgl1bnNpZ25lZCBpbnQgc3Nf
c3I3X2xvOwoJdW5zaWduZWQgaW50IHNzX2NyMF9oaTsKCXVuc2lnbmVkIGludCBzc19jcjBfbG87
Cgl1bnNpZ25lZCBpbnQgc3NfY3I4X2hpOwoJdW5zaWduZWQgaW50IHNzX2NyOF9sbzsKCXVuc2ln
bmVkIGludCBzc19jcjlfaGk7Cgl1bnNpZ25lZCBpbnQgc3NfY3I5X2xvOwoJdW5zaWduZWQgaW50
IHNzX2NyMTBfaGk7Cgl1bnNpZ25lZCBpbnQgc3NfY3IxMF9sbzsKCXVuc2lnbmVkIGludCBzc19j
cjEyX2hpOwoJdW5zaWduZWQgaW50IHNzX2NyMTJfbG87Cgl1bnNpZ25lZCBpbnQgc3NfY3IxM19o
aTsKCXVuc2lnbmVkIGludCBzc19jcjEzX2xvOwoJdW5zaWduZWQgaW50IHNzX2NyMjRfaGk7Cgl1
bnNpZ25lZCBpbnQgc3NfY3IyNF9sbzsKCXVuc2lnbmVkIGludCBzc19jcjI1X2hpOwoJdW5zaWdu
ZWQgaW50IHNzX2NyMjVfbG87Cgl1bnNpZ25lZCBpbnQgc3NfY3IyNl9oaTsKCXVuc2lnbmVkIGlu
dCBzc19jcjI2X2xvOwoJdW5zaWduZWQgaW50IHNzX2NyMjdfaGk7Cgl1bnNpZ25lZCBpbnQgc3Nf
Y3IyN19sbzsKCXVuc2lnbmVkIGludCBzc19yZXNlcnZlZDJbNF07Cgl1bnNpZ25lZCBpbnQgc3Nf
b2xkY2tzdW07Cgl1bnNpZ25lZCBpbnQgc3NfbmV3Y2tzdW07Cn0gX19yZWczMl90OwoKIAoKCnR5
cGVkZWYgc3RydWN0IF9fc3NfbmFycm93IHsKCglpbnQgc3NfZ3IxOwkJCSAKCWludCBzc19ycDsK
CWludCBzc19ncjM7CglpbnQgc3NfZ3I0OwoJaW50IHNzX2dyNTsKCWludCBzc19ncjY7CglpbnQg
c3NfZ3I3OwoJaW50IHNzX2dyODsKCWludCBzc19ncjk7CglpbnQgc3NfZ3IxMDsKCWludCBzc19n
cjExOwoJaW50IHNzX2dyMTI7CglpbnQgc3NfZ3IxMzsKCWludCBzc19ncjE0OwoJaW50IHNzX2dy
MTU7CglpbnQgc3NfZ3IxNjsKCWludCBzc19ncjE3OwoJaW50IHNzX2dyMTg7CglpbnQgc3NfZ3Ix
OTsKCWludCBzc19ncjIwOwoJaW50IHNzX2dyMjE7CglpbnQgc3NfZ3IyMjsKCWludCBzc19hcmcz
OwoJaW50IHNzX2FyZzI7CglpbnQgc3NfYXJnMTsKCWludCBzc19hcmcwOwkJIAoJdW5zaWduZWQg
aW50IHNzX2RwOwoJdW5zaWduZWQgaW50IHNzX3JldDA7Cgl1bnNpZ25lZCBpbnQgc3NfcmV0MTsK
CXVuc2lnbmVkIGludCBzc19zcDsKCXVuc2lnbmVkIGludCBzc19ncjMxOwoJdW5zaWduZWQgaW50
IHNzX2NyMTE7CQkgCgl1bnNpZ25lZCBpbnQgc3NfcGNvcV9oZWFkOwoJdW5zaWduZWQgaW50IHNz
X3Bjc3FfaGVhZDsKCXVuc2lnbmVkIGludCBzc19wY29xX3RhaWw7Cgl1bnNpZ25lZCBpbnQgc3Nf
cGNzcV90YWlsOwoJdW5zaWduZWQgaW50IHNzX2NyMTU7Cgl1bnNpZ25lZCBpbnQgc3NfY3IxOTsJ
CSAKCXVuc2lnbmVkIGludCBzc19jcjIwOwkJIAoJdW5zaWduZWQgaW50IHNzX2NyMjE7Cgl1bnNp
Z25lZCBpbnQgc3NfY3IyMjsKCXVuc2lnbmVkIGludCBzc19jcHVzdGF0ZTsJCSAKCXVuc2lnbmVk
IGludCBzc19zcjQ7CQkgCgl1bnNpZ25lZCBpbnQgc3Nfc3IwOwoJdW5zaWduZWQgaW50IHNzX3Ny
MTsKCXVuc2lnbmVkIGludCBzc19zcjI7Cgl1bnNpZ25lZCBpbnQgc3Nfc3IzOwoJdW5zaWduZWQg
aW50IHNzX3NyNTsKCXVuc2lnbmVkIGludCBzc19zcjY7Cgl1bnNpZ25lZCBpbnQgc3Nfc3I3OwoJ
dW5zaWduZWQgaW50IHNzX2NyMDsKCXVuc2lnbmVkIGludCBzc19jcjg7Cgl1bnNpZ25lZCBpbnQg
c3NfY3I5OwoJdW5zaWduZWQgaW50IHNzX2NyMTA7Cgl1bnNpZ25lZCBpbnQgc3NfY3IxMjsKCXVu
c2lnbmVkIGludCBzc19jcjEzOwoJdW5zaWduZWQgaW50IHNzX2NyMjQ7Cgl1bnNpZ25lZCBpbnQg
c3NfY3IyNTsKCXVuc2lnbmVkIGludCBzc19jcjI2OwoJdW5zaWduZWQgaW50IHNzX2NyMjc7Cgl1
bnNpZ25lZCBpbnQgc3NfbXBzZnVfbG93OwoJdW5zaWduZWQgaW50IHNzX21wc2Z1X292ZmxvOwoK
CgoKCn0gX19zc19uYXJyb3dfdDsKCiAKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19zYXZlX3N0YXRl
IHsKCglpbnQgc3NfZmxhZ3M7CQkgCglfX3NzX25hcnJvd190CXNzX25hcnJvdzsJIAoJaW50IHNz
X3BhZDsJCQkgIAoJdW5pb24gewkJCQkgIAoKCQlmcF9kYmxfYmxvY2tfdCBmcGRibDsKCQlmcF9p
bnRfYmxvY2tfdCBmcGludDsKCgoKCgl9IHNzX2ZwYmxvY2s7CgljaGFyIHNzX3hvcls0KjMyXTsJ
CSAKCXVuaW9uIHsKCQkgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCQlfX3JlZzY0X3Qgc3Nf
NjQ7CSAKCQlfX3JlZzMyX3Qgc3NfMzI7CSAKCX0gc3Nfd2lkZTsKfSBzYXZlX3N0YXRlX3Q7Cgog
CgoKIyA3NTggIi91c3IvaW5jbHVkZS9tYWNoaW5lL3NhdmVfc3RhdGUuaCIgMwoKCiAKCgojIDgz
NCAiL3Vzci9pbmNsdWRlL21hY2hpbmUvc2F2ZV9zdGF0ZS5oIiAzCgoKIAoKCgoKCgoKCgoJCQkJ
CSAKCgoKCgoKCgoKCgkJCQkJIAoKCgoKCgoKCgoJCQkJCSAKCiMgODk3ICIvdXNyL2luY2x1ZGUv
bWFjaGluZS9zYXZlX3N0YXRlLmgiIDMKCgogCgojIDk2MSAiL3Vzci9pbmNsdWRlL21hY2hpbmUv
c2F2ZV9zdGF0ZS5oIiAzCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojIDEwMzggIi91c3IvaW5jbHVkZS9tYWNoaW5lL3NhdmVfc3RhdGUu
aCIgMwoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDExMjAg
Ii91c3IvaW5jbHVkZS9tYWNoaW5lL3NhdmVfc3RhdGUuaCIgMwoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxNDE1ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zYXZl
X3N0YXRlLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDMgIi91c3IvaW5jbHVkZS9zeXMv
bmV3c2lnLmgiIDIgMwoKCgogICB0eXBlZGVmIHN0cnVjdCBfX3N0YWNrIHsJCSAKCXZvaWQJKnNz
X3NwOwkJCSAKCWludAlzc19mbGFnczsJCSAKCXNpemVfdAlzc19zaXplOwkJIAogICB9IHN0YWNr
X3Q7CgoKdHlwZWRlZiBzYXZlX3N0YXRlX3QgbWNvbnRleHRfdDsKCiAKCgoKCgoKc3RydWN0IF9f
c3ViX2N0eHQgeyAgIAoJc3RydWN0IF9fdWNvbnRleHQgKl9fdWNfbGluazsgIAoKCgkKCXNpZ3Nl
dF90IF9fdWNfc2lnbWFzazsgICAgCgoKCXN0YWNrX3QgX191Y19zdGFjazsgICAgICAgCgoKfTsK
dHlwZWRlZiBzdHJ1Y3QgX19zdWJfY3R4dCBfX3N1Yl9jdHh0X3Q7CgoKCnR5cGVkZWYgc3RydWN0
IF9fdWNvbnRleHQgeyAgIAoJbWNvbnRleHRfdCB1Y19tY29udGV4dDsgICAgCglpbnQgdWNfc3Bh
cmVzWzhdOyAgCSAgIAoJCQkJICAgCgl1bnNpZ25lZCBpbnQgdWNfY3JlYXRlZF9ieV9nZXRjb250
ZXh0OjE7ICAKCXVuc2lnbmVkIGludCB1Y19yZXNlcnZlZF9mbGFnczozMTsgICAgIAoJc3RydWN0
IF9fc3ViX2N0eHQgdWNfc3ViY29udGV4dDsKCn0gdWNvbnRleHRfdDsKCgoKCgojIDExMiAiL3Vz
ci9pbmNsdWRlL3N5cy9uZXdzaWcuaCIgMwoKCgoKCiMgMTcgIi91c3IvaW5jbHVkZS9zeXMvc2ln
bmFsLmgiIDIgMwoKCgogCgoKCiAgICAKCiMgMzYgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgi
IDMKCgogCgoKICB0eXBlZGVmIHVuc2lnbmVkIGludCBzaWdfYXRvbWljX3Q7ICAgCgoKCgogICAg
CgogICAgCgoKCiAgIHN0cnVjdCBzaWdhY3Rpb24gewogICAgICB1bmlvbiB7CgkgICAgICAgCgoK
CSAgICAgIHZvaWQgKCpfX3NhX3NpZ2FjdGlvbikoaW50LCBzaWdpbmZvX3QgKiwgdm9pZCAqKTsK
CgoKCgoKCSAgICAgICAKCSAgICAgIHZvaWQgKCpfX3NhX2hhbmRsZXIpKGludCApOwogICAgICB9
IF9faGFuZGxlcjsKCiAgICAgIHNpZ3NldF90ICAgc2FfbWFzazsJICAgIAoKCiAgICAgIGludAlz
YV9mbGFnczsJICAgCiAgIH07CgoKCgoKCgoKdHlwZWRlZiBpbnQJcHRocmVhZF90OwoKCgoKCiMg
MTAyICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCgoKCgoKCiAKCgoKCgoKCiAgIHN0cnVj
dCBzaWdzdGFjayB7CQkgCgoJdm9pZAkqc3Nfc3A7CQkJIAoKCgoJaW50CXNzX29uc3RhY2s7CQkg
CiAgIH07CgogICAgCgoKCgoKCiAgIHN0cnVjdCBzaWd2ZWMgewkJIAogICAgICB2b2lkICAgICgq
c3ZfaGFuZGxlcikoaW50ICk7CSAKICAgICAgaW50CXN2X21hc2s7CQkgCiAgICAgIGludAlzdl9m
bGFnczsJCSAKICAgfTsKCgoKCgoKIAoKCgogICBleHRlcm4gIkMiIHsKCgoKCiAgICAgZXh0ZXJu
IHZvaWQgKCpzaWduYWwoaW50LCB2b2lkICgqKSAoaW50ICkpKShpbnQgKTsKICAgICBleHRlcm4g
aW50IHJhaXNlKGludCk7CgoKCgoKCgoKICAgICBleHRlcm4gaW50IGtpbGwocGlkX3QsIGludCk7
CiAgICAgZXh0ZXJuIGludCBzaWdlbXB0eXNldChzaWdzZXRfdCAqKTsKICAgICBleHRlcm4gaW50
IHNpZ2ZpbGxzZXQoc2lnc2V0X3QgKik7CiAgICAgZXh0ZXJuIGludCBzaWdhZGRzZXQoc2lnc2V0
X3QgKiwgaW50KTsKICAgICBleHRlcm4gaW50IHNpZ2RlbHNldChzaWdzZXRfdCAqLCBpbnQpOwog
ICAgIGV4dGVybiBpbnQgc2lnaXNtZW1iZXIoY29uc3Qgc2lnc2V0X3QgKiwgaW50KTsKICAgICBl
eHRlcm4gaW50IHNpZ2FjdGlvbihpbnQsIGNvbnN0IHN0cnVjdCBzaWdhY3Rpb24gKiwgc3RydWN0
IHNpZ2FjdGlvbiAqKTsKICAgICBleHRlcm4gaW50IHNpZ3Byb2NtYXNrKGludCwgY29uc3Qgc2ln
c2V0X3QgKiwgc2lnc2V0X3QgKik7CiAgICAgZXh0ZXJuIGludCBzaWdzdXNwZW5kKGNvbnN0IHNp
Z3NldF90ICopOwogICAgIGV4dGVybiBpbnQgc2lncGVuZGluZyhzaWdzZXRfdCAqKTsKIyAxODMg
Ii91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKCgoKCgogICAgIGV4dGVybiBpbnQgc2lnd2Fp
dChjb25zdCBzaWdzZXRfdCAqc2V0LCBpbnQgKnNpZyk7CQkgCgogICAgIGV4dGVybiBpbnQgcHRo
cmVhZF9zaWdtYXNrKGludCBob3csIGNvbnN0IHNpZ3NldF90ICpzZXQsIHNpZ3NldF90ICpvc2V0
KTsJCQkJCQkJCQkgCiAgICAgZXh0ZXJuIGludCBwdGhyZWFkX2tpbGwocHRocmVhZF90IHRocmVh
ZCwgaW50IHNpZyk7CSAKCgoKCgoKCgoKCgoKICAgICBleHRlcm4gaW50IHNpZ3dhaXRpbmZvKGNv
bnN0IHNpZ3NldF90ICpzZXQsIHNpZ2luZm9fdCAqaW5mbyk7IAogICAgIGV4dGVybiBpbnQgc2ln
dGltZWR3YWl0KGNvbnN0IHNpZ3NldF90ICpzZXQsIHNpZ2luZm9fdCAqIGluZm8sCgkJCSAgICAg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICp0aW1lb3V0KTsJIAogICAgIGV4dGVybiBpbnQgc2lncXVl
dWUocGlkX3QgcGlkLCBpbnQgc2lnbm8sCgkJCSBjb25zdCB1bmlvbiBzaWd2YWwgdmFsdWUpOwkJ
IAoKCgoKCgoKCgoJZXh0ZXJuIHZvaWQgKCpic2Rfc2lnbmFsKGludCwgdm9pZCgqKShpbnQpKSko
aW50KTsKCWV4dGVybiBpbnQga2lsbHBnKHBpZF90LCBpbnQpOwoKCWV4dGVybiBpbnQgc2lnc3Rh
Y2soc3RydWN0IHNpZ3N0YWNrICosIHN0cnVjdCBzaWdzdGFjayAqKTsgCgoKCQkJCSAgICAgIAoJ
ZXh0ZXJuIGludCBzaWdhbHRzdGFjayhjb25zdCBzdGFja190ICosIHN0YWNrX3QgKik7IAoJZXh0
ZXJuIGludCBzaWdpbnRlcnJ1cHQoaW50LCBpbnQpOwoKCgoKCgoJCQkJICAgICAgICAgCgoKCgkg
ICBleHRlcm4gdm9pZCAoKnNpZ3NldChpbnQsIHZvaWQgKCopKGludCApKSkoaW50ICk7CgkgICBl
eHRlcm4gaW50IHNpZ2hvbGQoaW50KTsKCSAgIGV4dGVybiBpbnQgc2lncmVsc2UoaW50KTsKCSAg
IGV4dGVybiBpbnQgc2lnaWdub3JlKGludCk7CgkgICBleHRlcm4gaW50IHNpZ3BhdXNlKGludCk7
CgoKCgoKCgoKCgoKCgogICAgIGV4dGVybiBsb25nIHNpZ2Jsb2NrKGxvbmcpOwogICAgIGV4dGVy
biBsb25nIHNpZ3NldG1hc2sobG9uZyk7CiAgICAgZXh0ZXJuIGludCBzaWd2ZWN0b3IoaW50LCBj
b25zdCBzdHJ1Y3Qgc2lndmVjICosIHN0cnVjdCBzaWd2ZWMgKik7CiAgICAgZXh0ZXJuIGludCAo
KnNzaWduYWwoaW50LCBpbnQgKCopIChpbnQgKSkpKGludCApOwoKCgogICAgIGV4dGVybiBzc2l6
ZV90IHNpZ3NwYWNlKHNzaXplX3QpOwogICAgIGV4dGVybiBpbnQgZ3NpZ25hbChpbnQpOwojIDI3
OCAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMwoKCgoKICAgfQoKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoJ
ZXh0ZXJuIGxvbmcgX19fc3lzY29uZihpbnQpOwoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgkJCQkJIAoJCQkJCSAKCgoKCiAgICAgIAoKCgoKIAoKCgoKCgoKCgoK
CgogCgoKCgoKCQkJCSAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzY2FsbC5oIiAxIDMKIAoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NjYWxsX2RlZmluZS5oIiAxIDMKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiMgMjMgIi91c3IvaW5jbHVkZS9zeXMvc3lzY2FsbC5oIiAyIDMKCgoKCgogCgoKCgoK
CgoKIAoKCgoKCgoKCgogCiAKCgoKICAgICAKCgogICAgIAoKCiAKCgoKCiAKCgogICAgIAoKICAg
ICAKCgoKCgogCgoKCiAKCgoKCgoKCgoKIyA1MjIgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgi
IDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9mcmFtZS5oIiAxIDMKIAoKCgoKCgoKCgog
CgoKCgogCgoKCgoKCiAKCgoKIyA0NiAiL3Vzci9pbmNsdWRlL21hY2hpbmUvZnJhbWUuaCIgMwoK
CgoKCgoKCnR5cGVkZWYgc3RydWN0IGZyYW1lX21hcmtlciB7CglpbnQJZm1fZWRwOwkJIAoJaW50
CWZtX2VzcjQ7CSAKCWludAlmbV9lcnA7CQkgCglpbnQJZm1fY3JwOwkJIAoJaW50CWZtX3NsOwkJ
IAoJaW50CWZtX2NsdXA7CSAKCWludAlmbV9lcDsJCSAKCWludAlmbV9wc3A7CQkgCn0gZnJhbWVf
bWFya2VyX3Q7CgoKCgogCgoKCgoKCgoKCgoKIAoKCiAKCgoKCgoKIAogCgoKCgoKCgoKCgoKCiAK
IAoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCiMgMTQ2ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9m
cmFtZS5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgojIDUyMyAiL3Vzci9pbmNsdWRlL3N5cy9zaWdu
YWwuaCIgMiAzCgoKCiAKCgoKCgoKCgoKICAgICAgIHN0cnVjdCBzaWdsb2NhbF9taXNjIHsKCQlp
bnQJc21fc3lzY2FsbDsJIAoJCWludAlzbV9vbnN0YWNrOwkgCgkJaW50CXNtX29tYXNrOwkgCgkJ
Y2hhcglzbV9zeXNjYWxsX2FjdGlvbjsJIAoJCWNoYXIJc21fZW9zeXM7CgkJdW5zaWduZWQgc2hv
cnQJc21fZXJyb3I7CgkJbG9uZwlzbV9ydmFsMTsKCQlsb25nCXNtX3J2YWwyOwoJCWxvbmcJc21f
YXJnWzQgXTsKICAgICAgIH07CiAgICAgICB0eXBlZGVmIHN0cnVjdCBzaWdsb2NhbF9taXNjIHNp
Z2xvY2FsX21pc2NfdDsKCiAgICAgICBzdHJ1Y3Qgc2lnbG9jYWwgewoJCXN0cnVjdCBzaWdsb2Nh
bF9taXNjIHNsX21pc2M7CSAKCQlzYXZlX3N0YXRlX3Qgc2xfc3M7CQkgCiAgICAgICB9OwoKCSAK
CgoKCgoKCgoKCgoKCiAgICAgICBzdHJ1Y3Qgc2lnbG9jYWx4IHsKCQlzdHJ1Y3Qgc2lnbG9jYWxf
bWlzYyBzbF9taXNjOwkgCgkJdWNvbnRleHRfdCBzbF91YzsJCSAKCQlzaWdpbmZvX3QgIHNsX3Np
OwkJIAogICAgICAgfTsKCgkgCgoKCgoKCgoKCgoKCiAKCXN0cnVjdCBfX3hzaSB7CgkJc3RydWN0
IF9fc3ViX2N0eHQgc2M7IAkJIAoKCQlpbnQgX19wYWRkaW5nOwkJCSAKCgoKCQlzaWdpbmZvX3Qg
c2k7CQkgCgl9OwoJdHlwZWRlZiBzdHJ1Y3QgX194c2kgX194c2lfdDsKCgkgCgoKCgoKCiAgICAg
ICBzdHJ1Y3Qgc2lnY29udGV4dCB7CgoJCXVuaW9uIHsKCQkJc3RydWN0IHNpZ2xvY2FsICBzbDsJ
CgkJCXN0cnVjdCBzaWdsb2NhbHggc3g7CgkJfSBzY19jdHh0OwkJCSAKCgoKCgoKCgkJbG9uZwlz
Y19hcmdzWzQgXTsJIAoKCgoKCQlzdHJ1Y3QgZnJhbWVfbWFya2VyIHNjX3NmbTsKCgogICAgICAg
fTsKCgogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiAK
CgoKCgogCgoKCgoKCgoKCiMgNzA5ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCgoKCiMg
MTIzICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMiAzCgoKCiAKCgoKCiAKCgoKCiAKCgoKCgoK
CgogCgoKCgogCgoKIAoKCgoKCnR5cGVkZWYgZW51bSB7CglQX1BJRCwJCSAKCVBfUEdJRCwJCSAK
CVBfU0lELAkJIAoJUF9VSUQsCQkgCglQX0dJRCwJCSAKCVBfQ0lELAkJIAoJUF9BTEwJCSAKfSBp
ZHR5cGVfdDsKCgogCgoKICAgICAgZXh0ZXJuICJDIiB7CgoKCglleHRlcm4gaW50IHdhaXRpZChp
ZHR5cGVfdCwgaWRfdCwgc2lnaW5mb190ICosIGludCk7CgoKCgoKICAgICAgfQoKCgoKCgogCgoK
CgogICB1bmlvbiB3YWl0CXsKCWludAl3X3N0YXR1czsJCSAKCSAKCgoJc3RydWN0IHsKCQl1bnNp
Z25lZCBzaG9ydAl3X3BhZDsJCSAKCQl1bnNpZ25lZCBpbnQJd19SZXRjb2RlOjg7CSAKCQl1bnNp
Z25lZCBpbnQJd19Db3JlZHVtcDoxOwkgCgkJdW5zaWduZWQgaW50CXdfVGVybXNpZzo3OwkgCgl9
IHdfVDsKCSAKCgoKCglzdHJ1Y3QgewoJCXVuc2lnbmVkIHNob3J0CXdfcGFkOwkJIAoJCXVuc2ln
bmVkIGludAl3X1N0b3BzaWc6ODsJIAoJCXVuc2lnbmVkIGludAl3X1N0b3B2YWw6ODsJIAoJfSB3
X1M7CiAgIH07CgoKCgoKCgoKCiMgMjQxICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwoKCgoj
IDIyMSAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4wdy1ocC1ocHV4MTEu
MDAvMi45NS4zL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgkJZXh0ZXJuIGludCBta3N0ZW1w
KGNoYXIgKik7CgkJZXh0ZXJuIGNoYXIgKm1rdGVtcChjaGFyICopOwoJCWV4dGVybiBpbnQgdHR5
c2xvdCh2b2lkKTsKCgoKCgoKCgoJZXh0ZXJuIGxvbmcgYTY0bChjb25zdCBjaGFyICopOwoJZXh0
ZXJuIGNoYXIgKmw2NGEobG9uZyk7CgoKICAgICAgIGV4dGVybiBjaGFyICpmY3Z0KGRvdWJsZSwg
aW50LCBpbnQgKiwgaW50ICopOwogICAgICAgZXh0ZXJuIGNoYXIgKmVjdnQoZG91YmxlLCBpbnQs
IGludCAqLCBpbnQgKik7CgoKCWV4dGVybiBjaGFyICpnY3Z0KGRvdWJsZSwgaW50LCBjaGFyICop
OwoJZXh0ZXJuIGludCBnZXRzdWJvcHQoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiop
OwoJZXh0ZXJuIGludCBncmFudHB0KGludCk7CglleHRlcm4gY2hhciAqcHRzbmFtZShpbnQpOwoJ
ZXh0ZXJuIGNoYXIgKnJlYWxwYXRoKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKCWV4dGVybiBpbnQg
dW5sb2NrcHQoaW50KTsKCWV4dGVybiB2b2lkICp2YWxsb2Moc2l6ZV90KTsKICAgIGV4dGVybiBj
aGFyICppbml0c3RhdGUodW5zaWduZWQgaW50LCBjaGFyICosIHNpemVfdCk7CiAgICBleHRlcm4g
Y2hhciAqc2V0c3RhdGUoY29uc3QgY2hhciAqKTsJCSAgIAkgIAogICAgZXh0ZXJuIHZvaWQgc3Jh
bmRvbSh1bnNpZ25lZCBpbnQpOyAgICAgICAgICAgICAgICAKCWV4dGVybiBsb25nIHJhbmRvbSh2
b2lkKTsKIyAyNzIgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAt
aHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoK
CgogICAKICBzdHJ1Y3QgbWFsbGluZm8gIHsKCWludDMyX3QgYXJlbmE7CQkgCglpbnQzMl90IG9y
ZGJsa3M7CSAKCWludDMyX3Qgc21ibGtzOwkJIAoJaW50MzJfdCBoYmxrczsJCSAKCWludDMyX3Qg
aGJsa2hkOwkJIAoJaW50MzJfdCB1c21ibGtzOwkgCglpbnQzMl90IGZzbWJsa3M7CSAKCWludDMy
X3QgdW9yZGJsa3M7CSAKCWludDMyX3QgZm9yZGJsa3M7CSAKCWludDMyX3Qga2VlcGNvc3Q7CSAK
ICB9OwkKCgoKCiAgICAgdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgdWludDMyX3Qgd29yZDEsIHdv
cmQyLCB3b3JkMywgd29yZDQ7CiAgICAgfSBsb25nX2RvdWJsZTsKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL3B3ZC5oIiAxIDMKIAoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCiAgIHN0cnVjdCBw
YXNzd2QgewoJY2hhcgkqcHdfbmFtZTsKCWNoYXIgCSpwd19wYXNzd2Q7Cgl1aWRfdAlwd191aWQ7
CglnaWRfdAlwd19naWQ7CgljaGFyIAkqcHdfYWdlOwoJY2hhcgkqcHdfY29tbWVudDsKCWNoYXIJ
KnB3X2dlY29zOwoJY2hhcgkqcHdfZGlyOwoJY2hhcgkqcHdfc2hlbGw7CglpbnQzMl90CXB3X2F1
ZGlkOwoJaW50CXB3X2F1ZGZsZzsKICAgfTsKCgogICAgIGV4dGVybiBzdHJ1Y3QgcGFzc3dkICpn
ZXRwd3VpZCh1aWRfdCk7CiAgICAgZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmdldHB3bmFtKGNvbnN0
IGNoYXIgKik7CiMgNDQgIi91c3IvaW5jbHVkZS9wd2QuaCIgMwoKCgoKCgoKCgoKCgoKICAgICBl
eHRlcm4gdm9pZCBlbmRwd2VudCh2b2lkKTsKICAgICBleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0
cHdlbnQodm9pZCk7CiAgICAgZXh0ZXJuIHZvaWQgc2V0cHdlbnQodm9pZCk7CgoKCgoKCgoKICAg
c3RydWN0IHNfcGFzc3dkIHsKICAgICAgIGNoYXIgICAgKnB3X25hbWU7CiAgICAgICBjaGFyICAg
ICpwd19wYXNzd2Q7CiAgICAgICBjaGFyICAgICpwd19hZ2U7CiAgICAgICBpbnQzMl90IHB3X2F1
ZGlkOwogICAgICAgaW50ICAgICBwd19hdWRmbGc7CiAgIH07CgoKCgojIDEgIi91c3Ivb3B0L2dj
Y18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRl
L3N0ZGlvLmgiIDEgMwoKIyAxICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEy
LjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4w
dy1ocC1ocHV4MTEuMDAvMi45NS4zL2luY2x1ZGUvdmEtcGEuaCIgMSAzCgogCgoKCgp0eXBlZGVm
IHZvaWQgKl9fZ251Y192YV9saXN0OwoKCiAKCiMgNTIgIi91c3Ivb3B0L2djY18yXzk1XzMvbGli
L2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3ZhLXBhLmgiIDMK
CiMgMjQgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDEx
LjAwLzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAyIDMKCiMgMTM3ICIvdXNyL29wdC9nY2NfMl85
NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRh
cmcuaCIgMwoKCgoKCiMgMjA5ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEy
LjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKIyAyICIvdXNy
L29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMv
aW5jbHVkZS9zdGRpby5oIiAyIDMKCiAKCgoKCgoKCgoKIAoKCgoKIyAyNiAiL3Vzci9vcHQvZ2Nj
XzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4wdy1ocC1ocHV4MTEuMDAvMi45NS4zL2luY2x1ZGUv
c3RkaW8uaCIgMwoKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCiAKCgogICB0eXBlZGVmIHN0cnVj
dCB7CglpbnQJCSBfX2NudDsKCXVuc2lnbmVkIGNoYXIJKl9fcHRyOwoJdW5zaWduZWQgY2hhcgkq
X19iYXNlOwoJdW5zaWduZWQgc2hvcnQJIF9fZmxhZzsKCXVuc2lnbmVkIGNoYXIgCSBfX2ZpbGVM
OwkJIAoJdW5zaWduZWQgY2hhciAJIF9fZmlsZUg7CQkgCiAgIH0gRklMRTsKCiAgIHR5cGVkZWYg
c3RydWN0IHsKCWludAkJIF9fY250OwoJdW5zaWduZWQgY2hhcgkqX19wdHI7Cgl1bnNpZ25lZCBj
aGFyCSpfX2Jhc2U7Cgl1bnNpZ25lZCBzaG9ydAkgX19mbGFnOwoJdW5zaWduZWQgY2hhciAJIF9f
ZmlsZUw7CQkgCgl1bnNpZ25lZCBjaGFyIAkgX19maWxlSDsJCSAKCXVuc2lnbmVkIGNoYXIJKl9f
YnVmZW5kcDsJCSAKCXVuc2lnbmVkIGNoYXIJKl9fbmV3YmFzZTsKCXVuc2lnbmVkIGNoYXIJIF9f
c21idWZbOCArMio0XTsJIAoKCgoJdm9pZAkJKl9fdW51c2VkOwoKICAgfSBfRklMRVg7CgogCgoK
CgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL19udWxsLmgiIDEgMwogCgogCgog
CiAKCiAKCgoKCgoKCgoKCgoKCgoKCiAKIyA4NyAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2Nj
LWxpYi9ocHBhMi4wdy1ocC1ocHV4MTEuMDAvMi45NS4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoK
CgoKCgojIDEwMyAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4wdy1ocC1o
cHV4MTEuMDAvMi45NS4zL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgoKCgoKCgoKCgoKCgoKCiAgICAg
dHlwZWRlZiBkb3VibGUgKl9fdmFfbGlzdDsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICAKCgoK
CiAgIGV4dGVybiBGSUxFIF9faW9iW107CgoKICAgICBleHRlcm4gaW50IHJlbW92ZShjb25zdCBj
aGFyICopOwoKICAgICBleHRlcm4gaW50IHJlbmFtZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
Kik7CgogICAgIGV4dGVybiBjaGFyICp0bXBuYW0oY2hhciAqKTsKICAgICBleHRlcm4gaW50IGZj
bG9zZShGSUxFICopOwogICAgIGV4dGVybiBpbnQgZmZsdXNoKEZJTEUgKik7CiAgICAgZXh0ZXJu
IHZvaWQgc2V0YnVmKEZJTEUgKiwgY2hhciAqKTsKICAgICBleHRlcm4gaW50IHNldHZidWYoRklM
RSAqLCBjaGFyICosIGludCwgc2l6ZV90KTsKICAgICBleHRlcm4gaW50IGZwcmludGYoRklMRSAq
LCBjb25zdCBjaGFyICosIC4uLik7CiAgICAgZXh0ZXJuIGludCBmc2NhbmYoRklMRSAqLCBjb25z
dCBjaGFyICosLi4uKTsKICAgICBleHRlcm4gaW50IHByaW50Zihjb25zdCBjaGFyICosLi4uKTsK
ICAgICBleHRlcm4gaW50IHNjYW5mKGNvbnN0IGNoYXIgKiwuLi4pOwogICAgIGV4dGVybiBpbnQg
c3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIgKiwuLi4pOwogICAgIGV4dGVybiBpbnQgc3NjYW5m
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLC4uLik7CiAgICAgZXh0ZXJuIGludCBmZ2V0YyhG
SUxFICopOwogICAgIGV4dGVybiBjaGFyICpmZ2V0cyhjaGFyICosIGludCwgRklMRSAqKTsKICAg
ICBleHRlcm4gaW50IGZwdXRjKGludCwgRklMRSAqKTsKICAgICBleHRlcm4gaW50IGZwdXRzKGNv
bnN0IGNoYXIgKiwgRklMRSAqKTsKICAgICBleHRlcm4gaW50IGdldGMoRklMRSAqKTsKICAgICBl
eHRlcm4gaW50IGdldGNoYXIodm9pZCk7CiAgICAgZXh0ZXJuIGNoYXIgKmdldHMoY2hhciAqKTsK
ICAgICBleHRlcm4gaW50IHB1dGMoaW50LCBGSUxFICopOwogICAgIGV4dGVybiBpbnQgcHV0Y2hh
cihpbnQpOwogICAgIGV4dGVybiBpbnQgcHV0cyhjb25zdCBjaGFyICopOwogICAgIGV4dGVybiBp
bnQgdW5nZXRjKGludCwgRklMRSAqKTsKICAgICBleHRlcm4gIEZJTEUgKnRtcGZpbGUodm9pZCk7
CiAgICAgZXh0ZXJuICBpbnQgZmdldHBvcyhGSUxFICosIGZwb3NfdCAqKTsKICAgICBleHRlcm4g
IGludCBmc2V0cG9zKEZJTEUgKiwgY29uc3QgZnBvc190ICopOwogICAgIGV4dGVybiAgRklMRSAq
Zm9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgIGV4dGVybiAgRklMRSAqZnJl
b3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgRklMRSAqKTsKICAgICBleHRlcm4gaW50
IGZzZWVrKEZJTEUgKiwgbG9uZyBpbnQsIGludCk7CiAgICAgZXh0ZXJuIGxvbmcgaW50IGZ0ZWxs
KEZJTEUgKik7CiAgICAgZXh0ZXJuIHZvaWQgcmV3aW5kKEZJTEUgKik7CiAgICAgZXh0ZXJuIHZv
aWQgY2xlYXJlcnIoRklMRSAqKTsKICAgICBleHRlcm4gaW50IGZlb2YoRklMRSAqKTsKICAgICBl
eHRlcm4gaW50IGZlcnJvcihGSUxFICopOwogICAgIGV4dGVybiB2b2lkIHBlcnJvcihjb25zdCBj
aGFyICopOwojIDIwMCAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4wdy1o
cC1ocHV4MTEuMDAvMi45NS4zL2luY2x1ZGUvc3RkaW8uaCIgMwoKIyAyNjMgIi91c3Ivb3B0L2dj
Y18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRl
L3N0ZGlvLmgiIDMKCgoKCgoKCiAgICAgICBleHRlcm4gc2l6ZV90IGZyZWFkKHZvaWQgKiwgc2l6
ZV90LCBzaXplX3QsIEZJTEUgKik7CiAgICAgICBleHRlcm4gc2l6ZV90IGZ3cml0ZShjb25zdCB2
b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwoKCgoKCgogCgoKCgoKCgogICAgIGV4dGVy
biBpbnQgX19mbHNidWYodW5zaWduZWQgY2hhciwgRklMRSAqKTsKICAgICBleHRlcm4gaW50IF9f
ZmlsYnVmKEZJTEUgKik7CgoKCgogIAoKIyAzMzMgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2dj
Yy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgICBleHRlcm4gY2hhciAqY3Rlcm1pZChjaGFyICopOwog
ICAgIGV4dGVybiBpbnQgZmlsZW5vKEZJTEUgKik7CiAgICAgZXh0ZXJuIEZJTEUgKmZkb3Blbihp
bnQsIGNvbnN0IGNoYXIgKik7CgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgICAgICAgdHlwZWRlZiBk
b3VibGUgKl9fdmFfbGlzdF9fOwoKCgogICAgIGV4dGVybiBjaGFyICpvcHRhcmc7CiAgICAgZXh0
ZXJuIGludCBvcHRlcnI7CiAgICAgZXh0ZXJuIGludCBvcHRpbmQ7CiAgICAgZXh0ZXJuIGludCBv
cHRvcHQ7CgoKICAgICAgIGV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hhciAqIGNvbnN0IFtdLCBj
b25zdCBjaGFyICopOwogICAgICAgZXh0ZXJuIGNoYXIgKmN1c2VyaWQoY2hhciAqKTsKCgoKCgoK
CgoKCgogICAgIGV4dGVybiBpbnQgZ2V0dyhGSUxFICopOwogICAgIGV4dGVybiBpbnQgcHV0dyhp
bnQsIEZJTEUgKik7CiAgICAgZXh0ZXJuIGludCBwY2xvc2UoRklMRSAqKTsKICAgICBleHRlcm4g
RklMRSAqcG9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgIGV4dGVybiBjaGFy
ICp0ZW1wbmFtKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKICAgICBleHRlcm4gaW50IHZwcmludGYoY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlz
dCk7CiAgICAgZXh0ZXJuIGludCB2ZnByaW50ZihGSUxFICosIGNvbnN0IGNoYXIgKiwgX19nbnVj
X3ZhX2xpc3QpOwogICAgIGV4dGVybiBpbnQgdnNwcmludGYoY2hhciAqLCBjb25zdCBjaGFyICos
IF9fZ251Y192YV9saXN0KTsKCgoKCgoKCgoKCgoKCiAgICAgZXh0ZXJuIGludCBzbnByaW50Zihj
aGFyICosIHNpemVfdCwgY2hhciAqLC4uLik7CiAgICAgZXh0ZXJuIGludCB2c25wcmludGYoY2hh
ciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwogICAgIGV4dGVybiBp
bnQgdnNjYW5mKGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwogICAgIGV4dGVybiBpbnQg
dmZzY2FuZihGSUxFICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwogICAgIGV4dGVy
biBpbnQgdnNzY2FuZihjaGFyICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwogICAg
IGV4dGVybiB2b2lkIGZsb2NrZmlsZShGSUxFICopOwogICAgIGV4dGVybiBpbnQgZnRyeWxvY2tm
aWxlKEZJTEUgKik7CiAgICAgZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUoRklMRSAqKTsKIyA0NzEg
Ii91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIu
OTUuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKCgojIDQ5OSAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIv
Z2NjLWxpYi9ocHBhMi4wdy1ocC1ocHV4MTEuMDAvMi45NS4zL2luY2x1ZGUvc3RkaW8uaCIgMwoK
CiAgIGV4dGVybiB1bnNpZ25lZCBjaGFyICpfX2J1ZmVuZHRhYltdOwoKCgoKCgoKCgoKCgoKIAoK
CgoKIyA1NDggIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1
eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKCgojIDYwNSAiL3Vzci9vcHQvZ2NjXzJf
OTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4wdy1ocC1ocHV4MTEuMDAvMi45NS4zL2luY2x1ZGUvc3Rk
aW8uaCIgMwoKIyA2MTQgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHct
aHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKCgkJCgoKfQoKCgoKIyA3
OSAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAyIDMKCgoKCSBleHRlcm4gaW50IHB1dHB3ZW50KGNvbnN0
IHN0cnVjdCBwYXNzd2QgKiwgRklMRSAqKTsKICAgICBleHRlcm4gc3RydWN0IHBhc3N3ZCAqZmdl
dHB3ZW50KEZJTEUgKik7CiAgICAgZXh0ZXJuIHN0cnVjdCBzX3Bhc3N3ZCAqZ2V0c3B3ZW50KHZv
aWQpOwogICAgIGV4dGVybiBzdHJ1Y3Qgc19wYXNzd2QgKmdldHNwd3VpZCh1aWRfdCk7CiAgICAg
ZXh0ZXJuIHN0cnVjdCBzX3Bhc3N3ZCAqZ2V0c3B3YWlkKGludDMyX3QpOwogICAgIGV4dGVybiBz
dHJ1Y3Qgc19wYXNzd2QgKmdldHNwd25hbShjaGFyICopOwogICAgIGV4dGVybiBzdHJ1Y3Qgc19w
YXNzd2QgKmZnZXRzcHdlbnQoRklMRSAqKTsKICAgICBleHRlcm4gdm9pZCBzZXRzcHdlbnQodm9p
ZCk7CiAgICAgZXh0ZXJuIHZvaWQgZW5kc3B3ZW50KHZvaWQpOwojIDEwNSAiL3Vzci9pbmNsdWRl
L3B3ZC5oIiAzCgojIDEzMSAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzCgoKCgoKCgoKfQoKCgoKIyAz
MTcgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAw
LzIuOTUuMy9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5v
LmgiIDEgMwogCgoKCgoKCgojIDI3ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMwoKCWV4dGVybiBp
bnQgZXJybm87CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZXJybm8uaCIgMSAzCiAKCgoKCiAKCgoK
CgoKCgoKCgogICAgCgoKCiAgICAgZXh0ZXJuICJDIiB7CgoKCgoKICAgICAgICAgZXh0ZXJuIGlu
dCBlcnJubzsKCgoKICAgICB9CgoKCiAgICAKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCgoKCgoKCgoK
CgogICAgICAgICAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgogCgoKIAoKIAoKCgoJIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
IyAyMjkgIi91c3IvaW5jbHVkZS9zeXMvZXJybm8uaCIgMwoKCgojIDMwICIvdXNyL2luY2x1ZGUv
ZXJybm8uaCIgMiAzCgoKCgpleHRlcm4gIkMiIHsKICAgIGV4dGVybiB2b2lkIHBlcnJvcihjb25z
dCBjaGFyKik7CiAgICBleHRlcm4gaW50IHN5c19uZXJyOwogICAgZXh0ZXJuIGNoYXIgKnN5c19l
cnJsaXN0W107CiAgICBleHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCk7Cn0KCgoKCgojIDMyMSAi
L3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4wdy1ocC1ocHV4MTEuMDAvMi45
NS4zL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgogICAgIGV4dGVybiBjaGFyICpfbGRlY3Z0KGxv
bmdfZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7CiAgICAgZXh0ZXJuIGNoYXIgKl9sZGZjdnQo
bG9uZ19kb3VibGUsIGludCwgaW50ICosIGludCAqKTsKICAgICBleHRlcm4gY2hhciAqX2xkZ2N2
dChsb25nX2RvdWJsZSwgaW50LCBjaGFyICopOwogICAgIGV4dGVybiBpbnQgZ2V0cHcoaW50LCBj
aGFyICopOwogICAgIGV4dGVybiB2b2lkIGwzdG9sKGxvbmcgKiwgY29uc3QgY2hhciAqLCBpbnQp
OwogICAgIGV4dGVybiB2b2lkIGx0b2wzKGNoYXIgKiwgY29uc3QgbG9uZyAqLCBpbnQpOwogICAg
IGV4dGVybiBjaGFyICpsdG9zdHIobG9uZywgaW50KTsKICAgICBleHRlcm4gY2hhciAqdWx0b3N0
cih1bnNpZ25lZCBsb25nLCBpbnQpOwogICAgIGV4dGVybiBjaGFyICpsdG9hKGxvbmcpOwogICAg
IGV4dGVybiBjaGFyICp1bHRvYSh1bnNpZ25lZCBsb25nKTsKICAgICBleHRlcm4gdm9pZCBtZW1v
cnltYXAoaW50KTsKICAgICBleHRlcm4gc3RydWN0IG1hbGxpbmZvIG1hbGxpbmZvKHZvaWQpOwog
ICAgIGV4dGVybiBpbnQgbWFsbG9wdChpbnQsIGludCk7CiAgICAgZXh0ZXJuIGxvbmdfZG91Ymxl
IHN0cnRvbGQoY29uc3QgY2hhciAqLCBjaGFyICoqKTsKCgoKCgoKCgojIDM1OCAiL3Vzci9vcHQv
Z2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4wdy1ocC1ocHV4MTEuMDAvMi45NS4zL2luY2x1
ZGUvc3RkbGliLmgiIDMKCiMgMzg1ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hw
cGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKCn0KCgoK
IyAyODUgIi9lZGMvd2EvYmVuZWRpY3QvZjNfaWQ2L2NzZmcvaHB1X2dudS9GZF9ob21lL2luY2x1
ZGUvZnhwLmgiIDIKCiMgMSAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4w
dy1ocC1ocHV4MTEuMDAvMi45NS4zL2luY2x1ZGUvc3RkaW8uaCIgMSAzCgojIDEgIi91c3Ivb3B0
L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNs
dWRlL3N0ZGFyZy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL29wdC9n
Y2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVk
ZS92YS1wYS5oIiAxIDMKCiAKCgoKCgoKCiAKCiMgNTIgIi91c3Ivb3B0L2djY18yXzk1XzMvbGli
L2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3ZhLXBhLmgiIDMK
CiMgMjQgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDEx
LjAwLzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAyIDMKCiMgMTM3ICIvdXNyL29wdC9nY2NfMl85
NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRh
cmcuaCIgMwoKCgoKCiMgMjA5ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEy
LjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKIyAyICIvdXNy
L29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMv
aW5jbHVkZS9zdGRpby5oIiAyIDMKCiAKIyA2MjQgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2dj
Yy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoj
IDI4NiAiL2VkYy93YS9iZW5lZGljdC9mM19pZDYvY3NmZy9ocHVfZ251L0ZkX2hvbWUvaW5jbHVk
ZS9meHAuaCIgMgoKIyAxICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3
LWhwLWhwdXgxMS4wMC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9pb3N0cmVhbS5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI3ByYWdtYSBpbnRlcmZhY2UKCgoKIyAx
ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8y
Ljk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJlYW1idWYuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGludGVyZmFjZQoKCiAgIAoKCgpleHRlcm4gIkMi
IHsKIyAxICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgx
MS4wMC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9saWJpby5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2Mt
bGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvLi4vLi4vLi4vLi4vaHBwYTIuMHctaHAt
aHB1eDExLjAwL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwogIAoKCgoKCgoKCgp0eXBlZGVmICAg
ICAgICAgIGludCAgIF9HX2ludDhfdCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1FJX18pKSk7
CnR5cGVkZWYgdW5zaWduZWQgaW50ICBfR191aW50OF90IF9fYXR0cmlidXRlX18oKF9fbW9kZV9f
KF9fUUlfXykpKTsKdHlwZWRlZiAgICAgICAgICBpbnQgIF9HX2ludDE2X3QgX19hdHRyaWJ1dGVf
XygoX19tb2RlX18oX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MTZfdCBf
X2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0hJX18pKSk7CnR5cGVkZWYgICAgICAgICAgaW50ICBf
R19pbnQzMl90IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19TSV9fKSkpOwp0
eXBlZGVmICAgICAgICAgIGludCAgX0dfaW50NjRfdCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhf
X0RJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQ2NF90IF9fYXR0cmlidXRlX18o
KF9fbW9kZV9fKF9fRElfXykpKTsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgX0df
bGxvbmc7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX0dfdWxsb25n
OwoKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX2Nsb2NrX3Q7CnR5cGVkZWYgaW50IF9H
X2Rldl90Owp0eXBlZGVmIGxvbmcgX0dfZnBvc190Owp0eXBlZGVmIGludCBfR19naWRfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIF9HX2lub190Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9HX21v
ZGVfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfR19ubGlua190Owp0eXBlZGVmIGxvbmcgX0df
b2ZmX3Q7CnR5cGVkZWYgaW50IF9HX3BpZF90OwoKCgp0eXBlZGVmIGludCBfR19wdHJkaWZmX3Q7
CnR5cGVkZWYgaW50ICAgX0dfc2lnc2V0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3Np
emVfdDsKdHlwZWRlZiBsb25nIF9HX3RpbWVfdDsKdHlwZWRlZiBpbnQgX0dfdWlkX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9HX3djaGFyX3Q7CgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgbG9uZyBf
R19zc2l6ZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfR193aW50X3Q7CnR5cGVkZWYgdm9pZCAq
IF9HX3ZhX2xpc3Q7CgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL29wdC9nY2NfMl85NV8zL2xp
Yi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEy
LjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoK
CiAKCgojIDYxICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhw
dXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1s
aWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoK
CgoKIAoKIAoKCiMgMTg4ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3
LWhwLWhwdXgxMS4wMC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgoj
IDI2OSAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4wdy1ocC1ocHV4MTEu
MDAvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3
ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8y
Ljk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIyA4
NiAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4wdy1ocC1ocHV4MTEuMDAv
Mi45NS4zLy4uLy4uLy4uLy4uL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC9pbmNsdWRlL19HX2NvbmZp
Zy5oIiAyIDMKCgojIDMwICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3
LWhwLWhwdXgxMS4wMC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9saWJpby5oIiAy
IDMKCgoKCgoKCgoKCgoKCgoKCgojIDU1ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGli
L2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9s
aWJpby5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCiMgMTA0ICIv
dXNyL29wdC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1
LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9saWJpby5oIiAzCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKc3RydWN0IF9JT19qdW1w
X3Q7ICBzdHJ1Y3QgX0lPX0ZJTEU7CgogCiMgMTc1ICIvdXNyL29wdC9nY2NfMl85NV8zL2xpYi9n
Y2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9saWJpby5oIiAzCgoKCgoKCgoKCiAgICB0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoK
CgogCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0
cnVjdCBfSU9fRklMRSAqX3NidWY7CiAgIAoKICAgCiAgaW50IF9wb3M7CiMgMjA4ICIvdXNyL29w
dC9nY2NfMl85NV8zL2xpYi9nY2MtbGliL2hwcGEyLjB3LWhwLWhwdXgxMS4wMC8yLjk1LjMvLi4v
Li4vLi4vLi4vaW5jbHVkZS9nKystMy9saWJpby5oIiAzCgp9OwoKc3RydWN0IF9JT19GSUxFIHsK
ICBpbnQgX2ZsYWdzOwkJIAoKCiAgIAogICAKICBjaGFyKiBfSU9fcmVhZF9wdHI7CSAKICBjaGFy
KiBfSU9fcmVhZF9lbmQ7CSAKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwkgCiAgY2hhciogX0lPX3dy
aXRlX2Jhc2U7CSAKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwkgCiAgY2hhciogX0lPX3dyaXRlX2Vu
ZDsJIAogIGNoYXIqIF9JT19idWZfYmFzZTsJIAogIGNoYXIqIF9JT19idWZfZW5kOwkgCiAgIAog
IGNoYXIgKl9JT19zYXZlX2Jhc2U7ICAKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7ICAgCiAgY2hh
ciAqX0lPX3NhdmVfZW5kOyAgCgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3Ry
dWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKCgoK
ICBfR19vZmZfdCAgX29mZnNldDsKCgoKICAgCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47
CiAgY2hhciBfdW51c2VkOwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKICAgCgoKCgoKCgoKfTsKCgoK
CgoKCgoKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVz
IF9JT19zdGRpbl8sIF9JT19zdGRvdXRfLCBfSU9fc3RkZXJyXzsKCgoKCgogCnR5cGVkZWYgc3Ry
dWN0CnsKICBfR19zc2l6ZV90ICAoKnJlYWQpICAoc3RydWN0IF9JT19GSUxFICosIHZvaWQgKiwg
X0dfc3NpemVfdCApICA7CiAgX0dfc3NpemVfdCAgKCp3cml0ZSkgIChzdHJ1Y3QgX0lPX0ZJTEUg
KiwgY29uc3Qgdm9pZCAqLCBfR19zc2l6ZV90ICkgIDsKICBfR19vZmZfdCAgKCpzZWVrKSAgKHN0
cnVjdCBfSU9fRklMRSAqLCBfR19vZmZfdCAsIGludCkgIDsKICBpbnQgKCpjbG9zZSkgIChzdHJ1
Y3QgX0lPX0ZJTEUgKikgIDsKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190OwoKIApzdHJ1Y3Qg
X0lPX2Nvb2tpZV9maWxlCnsKICBzdHJ1Y3QgX0lPX0ZJTEUgZmlsZTsKICBjb25zdCB2b2lkICp2
dGFibGU7CiAgdm9pZCAqY29va2llOwogIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgaW9fZnVu
Y3Rpb25zOwp9OwoKCgpleHRlcm4gIkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93ICAoX0lP
X0ZJTEUgKikgIDsKZXh0ZXJuIGludCBfX3VmbG93ICAoX0lPX0ZJTEUgKikgIDsKZXh0ZXJuIGlu
dCBfX292ZXJmbG93ICAoX0lPX0ZJTEUgKiwgaW50KSAgOwoKCgoKCgoKCgoKCgoKCgoKCmV4dGVy
biBpbnQgX0lPX2dldGMgIChfSU9fRklMRSAqX19mcCkgIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAg
KGludCBfX2MsIF9JT19GSUxFICpfX2ZwKSAgOwpleHRlcm4gaW50IF9JT19mZW9mICAoX0lPX0ZJ
TEUgKl9fZnApICA7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAgKF9JT19GSUxFICpfX2ZwKSAgOwoK
ZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkICAoX0lPX0ZJTEUgKl9fZnApICA7CgogCgoKCmV4
dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgOwpleHRlcm4gdm9pZCBfSU9f
ZnVubG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUg
IChfSU9fRklMRSAqKSAgOwoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAgKF9J
T19GSUxFICosIGNvbnN0IGNoYXIgKiwgX0dfdmFfbGlzdCAsIGludCAqKSAgOwpleHRlcm4gaW50
IF9JT192ZnByaW50ZiAgKF9JT19GSUxFICosIGNvbnN0IGNoYXIgKiwgX0dfdmFfbGlzdCApICA7
CmV4dGVybiBfR19zc2l6ZV90ICBfSU9fcGFkbiAgKF9JT19GSUxFICosIGludCwgX0dfc3NpemVf
dCApICA7CmV4dGVybiBfR19zaXplX3QgIF9JT19zZ2V0biAgKF9JT19GSUxFICosIHZvaWQgKiwg
X0dfc2l6ZV90ICkgIDsKCgoKCgpleHRlcm4gX0dfb2ZmX3QgIF9JT19zZWVrb2ZmICAoX0lPX0ZJ
TEUgKiwgX0dfb2ZmX3QgLCBpbnQsIGludCkgIDsKZXh0ZXJuIF9HX29mZl90ICBfSU9fc2Vla3Bv
cyAgKF9JT19GSUxFICosIF9HX29mZl90ICwgaW50KSAgOwoKCmV4dGVybiB2b2lkIF9JT19mcmVl
X2JhY2t1cF9hcmVhICAoX0lPX0ZJTEUgKikgIDsKCgp9CgoKCiMgMzYgIi91c3Ivb3B0L2djY18y
Xzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDExLjAwLzIuOTUuMy8uLi8uLi8uLi8u
Li9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAyIDMKCn0KIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCmV4dGVybiAiQysrIiB7CmNsYXNzIGlzdHJlYW07ICAKY2xhc3Mgb3N0cmVhbTsgY2xh
c3Mgc3RyZWFtYnVmOwoKIAoKCgoKCgoKdHlwZWRlZiBfR19vZmZfdCAgc3RyZWFtb2ZmOwp0eXBl
ZGVmIF9HX29mZl90ICBzdHJlYW1wb3M7Cgp0eXBlZGVmIF9HX3NzaXplX3QgIHN0cmVhbXNpemU7
Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19mbXRmbGFnczsKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IF9faW9zdGF0ZTsKCnN0cnVjdCBfaW9zX2ZpZWxkcwp7ICAKICAgIHN0cmVhbWJ1ZiAqX3N0cmJ1
ZjsKICAgIG9zdHJlYW0qIF90aWU7CiAgICBpbnQgX3dpZHRoOwogICAgX19mbXRmbGFncyBfZmxh
Z3M7CiAgICBzaG9ydCAgX2ZpbGw7CiAgICBfX2lvc3RhdGUgX3N0YXRlOwogICAgX19pb3N0YXRl
IF9leGNlcHRpb25zOwogICAgaW50IF9wcmVjaXNpb247CgogICAgdm9pZCAqX2FycmF5czsgIAp9
OwoKCgoKCgoKCgoKCgoKCgojIDEyNCAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9o
cHBhMi4wdy1ocC1ocHV4MTEuMDAvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Ry
ZWFtYnVmLmgiIDMKCgpjbGFzcyBpb3MgOiBwdWJsaWMgX2lvc19maWVsZHMgewogIGlvcyYgb3Bl
cmF0b3I9KGlvcyYpOyAgIAogIGlvcyAoY29uc3QgaW9zJik7ICAKICBwdWJsaWM6CiAgICB0eXBl
ZGVmIF9fZm10ZmxhZ3MgZm10ZmxhZ3M7CiAgICB0eXBlZGVmIGludCBpb3N0YXRlOwogICAgdHlw
ZWRlZiBpbnQgb3Blbm1vZGU7CiAgICB0eXBlZGVmIF9HX3NzaXplX3QgIHN0cmVhbXNpemU7CiAg
ICBlbnVtIGlvX3N0YXRlIHsKCWdvb2RiaXQgPSAwICwKCWVvZmJpdCA9IDEgLAoJZmFpbGJpdCA9
IDIgLAoJYmFkYml0ID0gNCAgfTsKICAgIGVudW0gb3Blbl9tb2RlIHsKCWluID0gMSAsCglvdXQg
PSAyICwKCWF0ZSA9IDQgLAoJYXBwID0gOCAsCgl0cnVuYyA9IDE2ICwKCW5vY3JlYXRlID0gMzIg
LAoJbm9yZXBsYWNlID0gNjQgLAoJYmluID0gMTI4ICwgIAoJYmluYXJ5ID0gMTI4ICB9OwogICAg
ZW51bSBzZWVrX2RpciB7IGJlZywgY3VyLCBlbmR9OwogICAgdHlwZWRlZiBlbnVtIHNlZWtfZGly
IHNlZWtkaXI7CiAgICAgCiAgICBlbnVtIHsgc2tpcHdzPSAwMSAsCgkgICBsZWZ0PSAwMiAsIHJp
Z2h0PSAwNCAsIGludGVybmFsPSAwMTAgLAoJICAgZGVjPSAwMjAgLCBvY3Q9IDA0MCAsIGhleD0g
MDEwMCAsCgkgICBzaG93YmFzZT0gMDIwMCAsIHNob3dwb2ludD0gMDQwMCAsCgkgICB1cHBlcmNh
c2U9IDAxMDAwICwgc2hvd3Bvcz0gMDIwMDAgLAoJICAgc2NpZW50aWZpYz0gMDQwMDAgLCBmaXhl
ZD0gMDEwMDAwICwKCSAgIHVuaXRidWY9IDAyMDAwMCAsIHN0ZGlvPSAwNDAwMDAgCgoKCgkgICB9
OwogICAgZW51bSB7ICAKCWJhc2VmaWVsZD1kZWMrb2N0K2hleCwKCWZsb2F0ZmllbGQgPSBzY2ll
bnRpZmljK2ZpeGVkLAoJYWRqdXN0ZmllbGQgPSBsZWZ0K3JpZ2h0K2ludGVybmFsCiAgICB9OwoK
IyAxNzcgIi91c3Ivb3B0L2djY18yXzk1XzMvbGliL2djYy1saWIvaHBwYTIuMHctaHAtaHB1eDEx
LjAwLzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAzCgoKICAg
IG9zdHJlYW0qIHRpZSgpIGNvbnN0IHsgcmV0dXJuIF90aWU7IH0KICAgIG9zdHJlYW0qIHRpZShv
c3RyZWFtKiB2YWwpIHsgb3N0cmVhbSogc2F2ZT1fdGllOyBfdGllPXZhbDsgcmV0dXJuIHNhdmU7
IH0KCiAgICAgCiAgICBzaG9ydCAgZmlsbCgpIGNvbnN0IHsgcmV0dXJuIF9maWxsOyB9CiAgICBz
aG9ydCAgZmlsbChzaG9ydCAgbmV3ZikKCXtzaG9ydCAgb2xkZiA9IF9maWxsOyBfZmlsbCA9IG5l
d2Y7IHJldHVybiBvbGRmO30KICAgIGZtdGZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gX2Zs
YWdzOyB9CiAgICBmbXRmbGFncyBmbGFncyhmbXRmbGFncyBuZXdfdmFsKSB7CglmbXRmbGFncyBv
bGRfdmFsID0gX2ZsYWdzOyBfZmxhZ3MgPSBuZXdfdmFsOyByZXR1cm4gb2xkX3ZhbDsgfQogICAg
aW50IHByZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIF9wcmVjaXNpb247IH0KICAgIGludCBwcmVj
aXNpb24oaW50IG5ld3ApIHsKCXVuc2lnbmVkIHNob3J0IG9sZHAgPSBfcHJlY2lzaW9uOyBfcHJl
Y2lzaW9uID0gKHVuc2lnbmVkIHNob3J0KW5ld3A7CglyZXR1cm4gb2xkcDsgfQogICAgZm10Zmxh
Z3Mgc2V0ZihmbXRmbGFncyB2YWwpIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7CglfZmxh
Z3MgfD0gdmFsOyByZXR1cm4gb2xkYml0czsgfQogICAgZm10ZmxhZ3Mgc2V0ZihmbXRmbGFncyB2
YWwsIGZtdGZsYWdzIG1hc2spIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7CglfZmxhZ3Mg
PSAoX2ZsYWdzICYgfm1hc2spIHwgKHZhbCAmIG1hc2spOyByZXR1cm4gb2xkYml0czsgfQogICAg
Zm10ZmxhZ3MgdW5zZXRmKGZtdGZsYWdzIG1hc2spIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxh
Z3M7CglfZmxhZ3MgJj0gfm1hc2s7IHJldHVybiBvbGRiaXRzOyB9CiAgICBpbnQgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBfd2lkdGg7IH0KICAgIGludCB3aWR0aChpbnQgdmFsKSB7IGludCBzYXZl
ID0gX3dpZHRoOyBfd2lkdGggPSB2YWw7IHJldHVybiBzYXZlOyB9CgoKCgogICAgdm9pZCBfdGhy
b3dfZmFpbHVyZSgpIGNvbnN0IHsgfQoKICAgIHZvaWQgY2xlYXIoaW9zdGF0ZSBzdGF0ZSA9IDAp
IHsKCV9zdGF0ZSA9IF9zdHJidWYgPyBzdGF0ZSA6IHN0YXRlfGJhZGJpdDsKCWlmIChfc3RhdGUg
JiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgdm9pZCBzZXQoaW9zdGF0ZSBm
bGFnKSB7IF9zdGF0ZSB8PSBmbGFnOwoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3df
ZmFpbHVyZSgpOyB9CiAgICB2b2lkIHNldHN0YXRlKGlvc3RhdGUgZmxhZykgeyBfc3RhdGUgfD0g
ZmxhZzsgIAoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9CiAg
ICBpbnQgZ29vZCgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSA9PSAwOyB9CiAgICBpbnQgZW9mKCkg
Y29uc3QgeyByZXR1cm4gX3N0YXRlICYgaW9zOjplb2ZiaXQ7IH0KICAgIGludCBmYWlsKCkgY29u
c3QgeyByZXR1cm4gX3N0YXRlICYgKGlvczo6YmFkYml0fGlvczo6ZmFpbGJpdCk7IH0KICAgIGlu
dCBiYWQoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgJiBpb3M6OmJhZGJpdDsgfQogICAgaW9zdGF0
ZSByZHN0YXRlKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlOyB9CiAgICBvcGVyYXRvciB2b2lkKigp
IGNvbnN0IHsgcmV0dXJuIGZhaWwoKSA/ICh2b2lkKikwIDogKHZvaWQqKSgtMSk7IH0KICAgIGlu
dCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBmYWlsKCk7IH0KICAgIGlvc3RhdGUgZXhjZXB0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIF9leGNlcHRpb25zOyB9CiAgICB2b2lkIGV4Y2VwdGlvbnMo
aW9zdGF0ZSBlbmFibGUpIHsKCV9leGNlcHRpb25zID0gZW5hYmxlOwoJaWYgKF9zdGF0ZSAmIF9l
eGNlcHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9CgogICAgc3RyZWFtYnVmKiByZGJ1ZigpIGNv
bnN0IHsgcmV0dXJuIF9zdHJidWY7IH0KICAgIHN0cmVhbWJ1ZiogcmRidWYoc3RyZWFtYnVmICpf
cykgewogICAgICBzdHJlYW1idWYgKl9vbGQgPSBfc3RyYnVmOyBfc3RyYnVmID0gX3M7IGNsZWFy
ICgpOyByZXR1cm4gX29sZDsgfQoKICAgIHN0YXRpYyBpbnQgc3luY193aXRoX3N0ZGlvKGludCBv
bik7CiAgICBzdGF0aWMgdm9pZCBzeW5jX3dpdGhfc3RkaW8oKSB7IHN5bmNfd2l0aF9zdGRpbygx
KTsgfQogICAgc3RhdGljIGZtdGZsYWdzIGJpdGFsbG9jKCk7CiAgICBzdGF0aWMgaW50IHhhbGxv
YygpOwogICAgdm9pZComIHB3b3JkKGludCk7CiAgICB2b2lkKiBwd29yZChpbnQpIGNvbnN0Owog
ICAgbG9uZyYgaXdvcmQoaW50KTsKICAgIGxvbmcgaXdvcmQoaW50KSBjb25zdDsKCgoKCgoKCgoK
ICAgICAKICAgIGNsYXNzIEluaXQgewogICAgcHVibGljOgogICAgICBJbml0ICgpIHsgfQogICAg
fTsKCiAgcHJvdGVjdGVkOgogICAgaW5saW5lIGlvcyhzdHJlYW1idWYqIHNiID0gMCwgb3N0cmVh
bSogdGllX3RvID0gMCk7CiAgICBpbmxpbmUgdmlydHVhbCB+aW9zKCk7CiAgICBpbmxpbmUgdm9p
ZCBpbml0KHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZSA9IDApOwp9OwoKCgoKdHlwZWRlZiBp
b3M6OnNlZWtfZGlyIF9zZWVrX2RpcjsKCgogCiAKIAogCiAKCiAKIApjbGFzcyBzdHJlYW1tYXJr
ZXIgOiBwcml2YXRlIF9JT19tYXJrZXIgewogICAgZnJpZW5kIGNsYXNzIHN0cmVhbWJ1ZjsKICAg
IHZvaWQgc2V0X29mZnNldChpbnQgb2Zmc2V0KSB7IF9wb3MgPSBvZmZzZXQ7IH0KICBwdWJsaWM6
CiAgICBzdHJlYW1tYXJrZXIoc3RyZWFtYnVmICpzYik7CiAgICB+c3RyZWFtbWFya2VyKCk7CiAg
ICBpbnQgc2F2aW5nKCkgeyByZXR1cm4gIDE7IH0KICAgIGludCBkZWx0YShzdHJlYW1tYXJrZXIm
KTsKICAgIGludCBkZWx0YSgpOwp9OwoKc3RydWN0IHN0cmVhbWJ1ZiA6IHB1YmxpYyBfSU9fRklM
RSB7ICAKICAgIGZyaWVuZCBjbGFzcyBpb3M7CiAgICBmcmllbmQgY2xhc3MgaXN0cmVhbTsKICAg
IGZyaWVuZCBjbGFzcyBvc3RyZWFtOwogICAgZnJpZW5kIGNsYXNzIHN0cmVhbW1hcmtlcjsKICAg
IGNvbnN0IHZvaWQgKiZfdnRhYmxlKCkgeyByZXR1cm4gKihjb25zdCB2b2lkKiopKChfSU9fRklM
RSopdGhpcyArIDEpOyB9CiAgcHJvdGVjdGVkOgogICAgc3RhdGljIHN0cmVhbWJ1ZiogX2xpc3Rf
YWxsOyAgCiAgICBfSU9fRklMRSomIHhjaGFpbigpIHsgcmV0dXJuIF9jaGFpbjsgfQogICAgdm9p
ZCBfdW5fbGluaygpOwogICAgdm9pZCBfbGlua19pbigpOwogICAgY2hhciogZ3B0cigpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9iYXNlIDogX0lPX3Jl
YWRfcHRyOyB9CiAgICBjaGFyKiBwcHRyKCkgY29uc3QgeyByZXR1cm4gX0lPX3dyaXRlX3B0cjsg
fQogICAgY2hhciogZWdwdHIoKSBjb25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgxMDAg
ID8gX0lPX3NhdmVfZW5kIDogX0lPX3JlYWRfZW5kOyB9CiAgICBjaGFyKiBlcHB0cigpIGNvbnN0
IHsgcmV0dXJuIF9JT193cml0ZV9lbmQ7IH0KICAgIGNoYXIqIHBiYXNlKCkgY29uc3QgeyByZXR1
cm4gX0lPX3dyaXRlX2Jhc2U7IH0KICAgIGNoYXIqIGViYWNrKCkgY29uc3QKICAgICAgeyByZXR1
cm4gX2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9iYXNlO30KICAg
IGNoYXIqIGJhc2UoKSBjb25zdCB7IHJldHVybiBfSU9fYnVmX2Jhc2U7IH0KICAgIGNoYXIqIGVi
dWYoKSBjb25zdCB7IHJldHVybiBfSU9fYnVmX2VuZDsgfQogICAgaW50IGJsZW4oKSBjb25zdCB7
IHJldHVybiBfSU9fYnVmX2VuZCAtIF9JT19idWZfYmFzZTsgfQogICAgdm9pZCB4cHV0X2NoYXIo
Y2hhciBjKSB7ICpfSU9fd3JpdGVfcHRyKysgPSBjOyB9CiAgICBpbnQgeGZsYWdzKCkgeyByZXR1
cm4gX2ZsYWdzIDsgfQogICAgaW50IHhmbGFncyhpbnQgZikge2ludCBmbCA9IF9mbGFncyA7IF9m
bGFncyAgPSBmOyByZXR1cm4gZmw7fQogICAgdm9pZCB4c2V0ZmxhZ3MoaW50IGYpIHsgX2ZsYWdz
ICB8PSBmOyB9CiAgICB2b2lkIHhzZXRmbGFncyhpbnQgZiwgaW50IG1hc2spCiAgICAgIHsgX2Zs
YWdzICA9IChfZmxhZ3MgICYgfm1hc2spIHwgKGYgJiBtYXNrKTsgfQogICAgdm9pZCBnYnVtcChp
bnQgbikKICAgICAgeyBfZmxhZ3MgICYgMHgxMDAgID8gKF9JT19zYXZlX2Jhc2UrPW4pOihfSU9f
cmVhZF9wdHIrPW4pO30KICAgIHZvaWQgcGJ1bXAoaW50IG4pIHsgX0lPX3dyaXRlX3B0ciArPSBu
OyB9CiAgICB2b2lkIHNldGIoY2hhciogYiwgY2hhciogZWIsIGludCBhPTApOwogICAgdm9pZCBz
ZXRwKGNoYXIqIHAsIGNoYXIqIGVwKQogICAgICB7IF9JT193cml0ZV9iYXNlPV9JT193cml0ZV9w
dHI9cDsgX0lPX3dyaXRlX2VuZD1lcDsgfQogICAgdm9pZCBzZXRnKGNoYXIqIGViLCBjaGFyKiBn
LCBjaGFyICplZykgewogICAgICBpZiAoX2ZsYWdzICAmIDB4MTAwICkgX0lPX2ZyZWVfYmFja3Vw
X2FyZWEodGhpcyk7IAogICAgICBfSU9fcmVhZF9iYXNlID0gZWI7IF9JT19yZWFkX3B0ciA9IGc7
IF9JT19yZWFkX2VuZCA9IGVnOyB9CiAgICBjaGFyICpzaG9ydGJ1ZigpIHsgcmV0dXJuIF9zaG9y
dGJ1ZjsgfQoKICAgIGludCBpbl9iYWNrdXAoKSB7IHJldHVybiBfZmxhZ3MgJiAweDEwMCA7IH0K
ICAgICAKICAgIGNoYXIgKkdiYXNlKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9i
YXNlIDogX0lPX3JlYWRfYmFzZTsgfQogICAgIAogICAgY2hhciAqZUdwdHIoKSB7IHJldHVybiBp
bl9iYWNrdXAoKSA/IF9JT19zYXZlX2VuZCA6IF9JT19yZWFkX2VuZDsgfQogICAgIAogICAgY2hh
ciAqQmJhc2UoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19yZWFkX2Jhc2UgOiBfSU9fc2F2
ZV9iYXNlOyB9CiAgICBjaGFyICpCcHRyKCkgeyByZXR1cm4gX0lPX2JhY2t1cF9iYXNlOyB9CiAg
ICAgCiAgICBjaGFyICplQnB0cigpIHsgcmV0dXJuIGluX2JhY2t1cCgpID8gX0lPX3JlYWRfZW5k
IDogX0lPX3NhdmVfZW5kOyB9CiAgICBjaGFyICpOYmFzZSgpIHsgcmV0dXJuIF9JT19zYXZlX2Jh
c2U7IH0KICAgIGNoYXIgKmVOcHRyKCkgeyByZXR1cm4gX0lPX3NhdmVfZW5kOyB9CiAgICBpbnQg
aGF2ZV9iYWNrdXAoKSB7IHJldHVybiBfSU9fc2F2ZV9iYXNlICE9IF9fbnVsbCA7IH0KICAgIGlu
dCBoYXZlX21hcmtlcnMoKSB7IHJldHVybiBfbWFya2VycyAhPSBfX251bGwgOyB9CiAgICB2b2lk
IGZyZWVfYmFja3VwX2FyZWEoKTsKICAgIHZvaWQgdW5zYXZlX21hcmtlcnMoKTsgIAogICAgaW50
IHB1dF9tb2RlKCkgeyByZXR1cm4gX2ZsYWdzICYgMHg4MDAgOyB9CiAgICBpbnQgc3dpdGNoX3Rv
X2dldF9tb2RlKCk7CiAgICAKICAgIHN0cmVhbWJ1ZihpbnQgZmxhZ3M9MCk7CiAgcHVibGljOgog
ICAgc3RhdGljIGludCBmbHVzaF9hbGwoKTsKICAgIHN0YXRpYyB2b2lkIGZsdXNoX2FsbF9saW5l
YnVmZmVyZWQoKTsgIAogICAgdmlydHVhbCB+c3RyZWFtYnVmKCk7CiAgICB2aXJ0dWFsIGludCBv
dmVyZmxvdyhpbnQgYyA9ICgtMSkgKTsgIAogICAgdmlydHVhbCBpbnQgdW5kZXJmbG93KCk7ICAK
ICAgIHZpcnR1YWwgaW50IHVmbG93KCk7ICAKICAgIHZpcnR1YWwgaW50IHBiYWNrZmFpbChpbnQg
Yyk7CiAKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSB4c3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFt
c2l6ZSBuKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSB4c2dldG4oY2hhciogcywgc3RyZWFtc2l6
ZSBuKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIs
IGludCBtb2RlPWlvczo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc2Vla3Bv
cyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpvdXQpOwoKICAgIHN0cmVh
bXBvcyBwdWJzZWVrb2ZmKHN0cmVhbW9mZiBvLCBfc2Vla19kaXIgZCwgaW50IG1vZGU9aW9zOjpp
bnxpb3M6Om91dCkKICAgICAgeyByZXR1cm4gX0lPX3NlZWtvZmYgKHRoaXMsIG8sIGQsIG1vZGUp
OyB9CiAgICBzdHJlYW1wb3MgcHVic2Vla3BvcyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlv
czo6aW58aW9zOjpvdXQpCiAgICAgIHsgcmV0dXJuIF9JT19zZWVrcG9zICh0aGlzLCBwb3MsIG1v
ZGUpOyB9CiAgICBzdHJlYW1wb3Mgc3NlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGludCBt
b2RlPWlvczo6aW58aW9zOjpvdXQpOwogICAgc3RyZWFtcG9zIHNzZWVrcG9zKHN0cmVhbXBvcyBw
b3MsIGludCBtb2RlID0gaW9zOjppbnxpb3M6Om91dCk7CiAgICB2aXJ0dWFsIHN0cmVhbWJ1Ziog
c2V0YnVmKGNoYXIqIHAsIGludCBsZW4pOwogICAgdmlydHVhbCBpbnQgc3luYygpOwogICAgdmly
dHVhbCBpbnQgZG9hbGxvY2F0ZSgpOwoKICAgIGludCBzZWVrbWFyayhzdHJlYW1tYXJrZXImIG1h
cmssIGludCBkZWx0YSA9IDApOwogICAgaW50IHNwdXRiYWNrYyhjaGFyIGMpOwogICAgaW50IHN1
bmdldGMoKTsKICAgIGludCB1bmJ1ZmZlcmVkKCkgeyByZXR1cm4gX2ZsYWdzICYgMiAgPyAxIDog
MDsgfQogICAgaW50IGxpbmVidWZmZXJlZCgpIHsgcmV0dXJuIF9mbGFncyAmIDB4MjAwICA/IDEg
OiAwOyB9CiAgICB2b2lkIHVuYnVmZmVyZWQoaW50IGkpCgl7IGlmIChpKSBfZmxhZ3MgfD0gMiA7
IGVsc2UgX2ZsYWdzICY9IH4yIDsgfQogICAgdm9pZCBsaW5lYnVmZmVyZWQoaW50IGkpCgl7IGlm
IChpKSBfZmxhZ3MgfD0gMHgyMDAgOyBlbHNlIF9mbGFncyAmPSB+MHgyMDAgOyB9CiAgICBpbnQg
YWxsb2NhdGUoKSB7ICAKCWlmIChiYXNlKCkgfHwgdW5idWZmZXJlZCgpKSByZXR1cm4gMDsKCWVs
c2UgcmV0dXJuIGRvYWxsb2NhdGUoKTsgfQogICAgIAogICAgdm9pZCBhbGxvY2J1ZigpIHsgaWYg
KGJhc2UoKSA9PSBfX251bGwgKSBkb2FsbG9jYnVmKCk7IH0KICAgIHZvaWQgZG9hbGxvY2J1Zigp
OwogICAgaW50IGluX2F2YWlsKCkgeyByZXR1cm4gX0lPX3JlYWRfZW5kIC0gX0lPX3JlYWRfcHRy
OyB9CiAgICBpbnQgb3V0X3dhaXRpbmcoKSB7IHJldHVybiBfSU9fd3JpdGVfcHRyIC0gX0lPX3dy
aXRlX2Jhc2U7IH0KICAgIHN0cmVhbXNpemUgc3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFtc2l6
ZSBuKSB7IHJldHVybiB4c3B1dG4ocywgbik7IH0KICAgIHN0cmVhbXNpemUgcGFkbihjaGFyIHBh
ZCwgc3RyZWFtc2l6ZSBuKSB7IHJldHVybiBfSU9fcGFkbih0aGlzLCBwYWQsIG4pOyB9CiAgICBz
dHJlYW1zaXplIHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyByZXR1cm4gX0lPX3NnZXRu
KHRoaXMsIHMsIG4pOyB9CiAgICBpbnQgaWdub3JlKGludCk7CiAgICBpbnQgZ2V0X2NvbHVtbigp
OwogICAgaW50IHNldF9jb2x1bW4oaW50KTsKICAgIGxvbmcgc2dldGxpbmUoY2hhciogYnVmLCBf
R19zaXplX3QgIG4sIGNoYXIgZGVsaW0sIGludCBwdXRiYWNrX2RlbGltKTsKICAgIGludCBzcHV0
YyhpbnQgYykgeyByZXR1cm4gX0lPX3B1dGMoYywgdGhpcyk7IH0KICAgIGludCBzYnVtcGMoKSB7
IHJldHVybiBfSU9fZ2V0Yyh0aGlzKTsgfQogICAgaW50IHNnZXRjKCkgeyByZXR1cm4gKCggIHRo
aXMgICktPl9JT19yZWFkX3B0ciA+PSAoICB0aGlzICApLT5fSU9fcmVhZF9lbmQgJiYgX191bmRl
cmZsb3cgKCAgdGhpcyAgKSA9PSAoLTEpICA/ICgtMSkgIDogKih1bnNpZ25lZCBjaGFyICopICgg
IHRoaXMgICktPl9JT19yZWFkX3B0cikgIDsgfQogICAgaW50IHNuZXh0YygpIHsKCWlmIChfSU9f
cmVhZF9wdHIgPj0gX0lPX3JlYWRfZW5kICYmIF9fdW5kZXJmbG93KHRoaXMpID09ICgtMSkgKQoJ
ICByZXR1cm4gKC0xKSA7CgllbHNlIHJldHVybiBfSU9fcmVhZF9wdHIrKywgc2dldGMoKTsgfQog
ICAgdm9pZCBzdG9zc2MoKSB7IGlmIChfSU9fcmVhZF9wdHIgPCBfSU9fcmVhZF9lbmQpIF9JT19y
ZWFkX3B0cisrOyB9CiAgICBpbnQgdnNjYW4oY2hhciBjb25zdCAqZm10MCwgX0dfdmFfbGlzdCAg
YXAsIGlvcyogc3RyZWFtID0gX19udWxsICk7CiAgICBpbnQgc2NhbihjaGFyIGNvbnN0ICpmbXQw
IC4uLik7CiAgICBpbnQgdmZvcm0oY2hhciBjb25zdCAqZm10MCwgX0dfdmFfbGlzdCAgYXApOwog
ICAgaW50IGZvcm0oY2hhciBjb25zdCAqZm10MCAuLi4pOwoKCgoKICAgIHZpcnR1YWwgc3RyZWFt
c2l6ZSBzeXNfcmVhZChjaGFyKiBidWYsIHN0cmVhbXNpemUgc2l6ZSk7CiAgICB2aXJ0dWFsIHN0
cmVhbXNpemUgc3lzX3dyaXRlKGNvbnN0IGNoYXIqLCBzdHJlYW1zaXplKTsKICAgIHZpcnR1YWwg
c3RyZWFtcG9zIHN5c19zZWVrKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHZpcnR1YWwgaW50
IHN5c19jbG9zZSgpOwogICAgdmlydHVhbCBpbnQgc3lzX3N0YXQodm9pZCopOyAgCgoKCgp9OwoK
IAogCgpjbGFzcyBmaWxlYnVmIDogcHVibGljIHN0cmVhbWJ1ZiB7CiAgcHJvdGVjdGVkOgogICAg
dm9pZCBpbml0KCk7CiAgcHVibGljOgogICAgc3RhdGljIGNvbnN0IGludCBvcGVucHJvdDsgIAog
ICAgZmlsZWJ1ZigpOwogICAgZmlsZWJ1ZihpbnQgZmQpOwogICAgZmlsZWJ1ZihpbnQgZmQsIGNo
YXIqIHAsIGludCBsZW4pOwoKCgogICAgfmZpbGVidWYoKTsKICAgIGZpbGVidWYqIGF0dGFjaChp
bnQgZmQpOwogICAgZmlsZWJ1Ziogb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hh
ciAqbW9kZSk7CiAgICBmaWxlYnVmKiBvcGVuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpb3M6Om9w
ZW5tb2RlIG1vZGUsIGludCBwcm90ID0gMDY2NCk7CiAgICB2aXJ0dWFsIGludCB1bmRlcmZsb3co
KTsKICAgIHZpcnR1YWwgaW50IG92ZXJmbG93KGludCBjID0gKC0xKSApOwogICAgaW50IGlzX29w
ZW4oKSBjb25zdCB7IHJldHVybiBfZmlsZW5vID49IDA7IH0KICAgIGludCBmZCgpIGNvbnN0IHsg
cmV0dXJuIGlzX29wZW4oKSA/IF9maWxlbm8gOiAoLTEpIDsgfQogICAgZmlsZWJ1ZiogY2xvc2Uo
KTsKICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUoKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNl
ZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGludCBtb2RlPWlvczo6aW58aW9zOjpvdXQpOwog
ICAgdmlydHVhbCBzdHJlYW1idWYqIHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVuKTsKICAgIHN0cmVh
bXNpemUgeHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICBzdHJlYW1zaXpl
IHhzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgdmlydHVhbCBpbnQgc3luYygpOwog
IHByb3RlY3RlZDogIAogCiAgICBpbnQgaXNfcmVhZGluZygpIHsgcmV0dXJuIGViYWNrKCkgIT0g
ZWdwdHIoKTsgfQogICAgY2hhciogY3VyX3B0cigpIHsgcmV0dXJuIGlzX3JlYWRpbmcoKSA/ICBn
cHRyKCkgOiBwcHRyKCk7IH0KICAgICAKICAgIGNoYXIqIGZpbGVfcHRyKCkgeyByZXR1cm4gZUdw
dHIoKTsgfQogICAgIAogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c19yZWFkKGNoYXIqIGJ1Ziwg
c3RyZWFtc2l6ZSBzaXplKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHN5c19zZWVrKHN0cmVhbW9m
ZiwgX3NlZWtfZGlyKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNfd3JpdGUoY29uc3QgY2hh
ciosIHN0cmVhbXNpemUpOwogICAgdmlydHVhbCBpbnQgc3lzX3N0YXQodm9pZCopOyAgCiAgICB2
aXJ0dWFsIGludCBzeXNfY2xvc2UoKTsKCgoKCn07CgppbmxpbmUgdm9pZCBpb3M6OmluaXQoc3Ry
ZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllX3RvKSB7CgkJX3N0YXRlID0gc2IgPyBpb3M6Omdvb2Ri
aXQgOiBpb3M6OmJhZGJpdDsgX2V4Y2VwdGlvbnM9MDsKCQlfc3RyYnVmPXNiOyBfdGllID0gdGll
X3RvOyBfd2lkdGg9MDsgX2ZpbGw9JyAnOwoKCQlfZmxhZ3M9aW9zOjpza2lwd3N8aW9zOjpkZWM7
CgoKCgkJX3ByZWNpc2lvbj02OyBfYXJyYXlzID0gMDsgfQoKaW5saW5lIGlvczo6aW9zKHN0cmVh
bWJ1Ziogc2IsIG9zdHJlYW0qIHRpZV90bykgeyBpbml0KHNiLCB0aWVfdG8pOyB9CgppbmxpbmUg
aW9zOjp+aW9zKCkgewoKCgogICAgIAogICAgIAogICAgb3BlcmF0b3IgZGVsZXRlW10gKF9hcnJh
eXMpOwp9Cn0gIAoKIyAzMSAiL3Vzci9vcHQvZ2NjXzJfOTVfMy9saWIvZ2NjLWxpYi9ocHBhMi4w
dy1ocC1ocHV4MTEuMDAvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaW9zdHJlYW0u
aCIgMiAzCgoKZXh0ZXJuICJDKysiIHsKY2xhc3MgaXN0cmVhbTsgY2xhc3Mgb3N0cmVhbTsKdHlw
ZWRlZiBpb3MmICgqX19tYW5pcCkoaW9zJik7CnR5cGVkZWYgaXN0cmVhbSYgKCpfX2ltYW5pcCko
aXN0cmVhbSYpOwp0eXBlZGVmIG9zdHJlYW0mICgqX19vbWFuaXApKG9zdHJlYW0mKTsKCmV4dGVy
biBpc3RyZWFtJiB3cyhpc3RyZWFtJiBpbnMpOwpleHRlcm4gb3N0cmVhbSYgZmx1c2gob3N0cmVh
bSYgb3V0cyk7CmV4dGVybiBvc3RyZWFtJiBlbmRsKG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0
cmVhbSYgZW5kcyhvc3RyZWFtJiBvdXRzKTsKCmNsYXNzIG9zdHJlYW0gOiB2aXJ0dWFsIHB1Ymxp
YyBpb3MKewogICAgIAogICAgdm9pZCBkb19vc2Z4KCk7CiAgcHVibGljOgogICAgb3N0cmVhbSgp
IHsgfQogICAgb3N0cmVhbShzdHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWVkPSBfX251bGwgKTsK
ICAgIGludCBvcGZ4KCkgewoJaWYgKCFnb29kKCkpIHJldHVybiAwOwoJZWxzZSB7IGlmIChfdGll
KSBfdGllLT5mbHVzaCgpOyAgOyByZXR1cm4gMTt9IH0KICAgIHZvaWQgb3NmeCgpIHsgIDsKCQkg
IGlmIChmbGFncygpICYgKGlvczo6dW5pdGJ1Znxpb3M6OnN0ZGlvKSkKCQkgICAgICBkb19vc2Z4
KCk7IH0KICAgIG9zdHJlYW0mIGZsdXNoKCk7CiAgICBvc3RyZWFtJiBwdXQoY2hhciBjKSB7IF9z
dHJidWYtPnNwdXRjKGMpOyByZXR1cm4gKnRoaXM7IH0KCgoKCgogICAgb3N0cmVhbSYgd3JpdGUo
Y29uc3QgY2hhciAqcywgc3RyZWFtc2l6ZSBuKTsKICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IHVu
c2lnbmVkIGNoYXIgKnMsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gd3JpdGUoKGNvbnN0
IGNoYXIqKXMsIG4pO30KICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IHNpZ25lZCBjaGFyICpzLCBz
dHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9CiAg
ICBvc3RyZWFtJiB3cml0ZShjb25zdCB2b2lkICpzLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0
dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9CiAgICBvc3RyZWFtJiBzZWVrcChzdHJlYW1w
b3MpOwogICAgb3N0cmVhbSYgc2Vla3Aoc3RyZWFtb2ZmLCBfc2Vla19kaXIpOwogICAgc3RyZWFt
cG9zIHRlbGxwKCk7CiAgICBvc3RyZWFtJiBmb3JtKGNvbnN0IGNoYXIgKmZvcm1hdCAuLi4pOwog
ICAgb3N0cmVhbSYgdmZvcm0oY29uc3QgY2hhciAqZm9ybWF0LCBfR192YV9saXN0ICBhcmdzKTsK
CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNoYXIgYyk7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8
KHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gKCp0aGlzKSA8PCAoY2hhciljOyB9CiAgICBvc3Ry
ZWFtJiBvcGVyYXRvcjw8KHNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuICgqdGhpcykgPDwgKGNoYXIp
YzsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBjaGFyICpzKTsKICAgIG9zdHJlYW0m
IG9wZXJhdG9yPDwoY29uc3QgdW5zaWduZWQgY2hhciAqcykKCXsgcmV0dXJuICgqdGhpcykgPDwg
KGNvbnN0IGNoYXIqKXM7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgc2lnbmVkIGNo
YXIgKnMpCgl7IHJldHVybiAoKnRoaXMpIDw8IChjb25zdCBjaGFyKilzOyB9CiAgICBvc3RyZWFt
JiBvcGVyYXRvcjw8KGNvbnN0IHZvaWQgKnApOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChpbnQg
bik7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGludCBuKTsKICAgIG9zdHJlYW0m
IG9wZXJhdG9yPDwobG9uZyBuKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgbG9u
ZyBuKTsKCiAgICBfX2V4dGVuc2lvbl9fIG9zdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBsb25nIG4p
OwogICAgX19leHRlbnNpb25fXyBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbG9u
ZyBuKTsKCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHNob3J0IG4pIHtyZXR1cm4gb3BlcmF0b3I8
PCgoaW50KW4pO30KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgc2hvcnQgbikge3Jl
dHVybiBvcGVyYXRvcjw8KCh1bnNpZ25lZCBpbnQpbik7fQoKICAgIG9zdHJlYW0mIG9wZXJhdG9y
PDwoYm9vbCBiKSB7IHJldHVybiBvcGVyYXRvcjw8KChpbnQpYik7IH0KCiAgICBvc3RyZWFtJiBv
cGVyYXRvcjw8KGRvdWJsZSBuKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoZmxvYXQgbikgeyBy
ZXR1cm4gb3BlcmF0b3I8PCgoZG91YmxlKW4pOyB9CgoKCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8
KGxvbmcgZG91YmxlIG4pIHsgcmV0dXJuIG9wZXJhdG9yPDwoKGRvdWJsZSluKTsgfQoKICAgIG9z
dHJlYW0mIG9wZXJhdG9yPDwoX19vbWFuaXAgZnVuYykgeyByZXR1cm4gKCpmdW5jKSgqdGhpcyk7
IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoX19tYW5pcCBmdW5jKSB7KCpmdW5jKSgqdGhpcyk7
IHJldHVybiAqdGhpczt9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHN0cmVhbWJ1ZiopOwoKCgp9
OwoKY2xhc3MgaXN0cmVhbSA6IHZpcnR1YWwgcHVibGljIGlvcwp7CiAgICAgCnByb3RlY3RlZDoK
ICAgIF9HX3NpemVfdCAgX2djb3VudDsKCiAgICBpbnQgX3NraXBfd3MoKTsKICBwdWJsaWM6CiAg
ICBpc3RyZWFtKCk6IF9nY291bnQgKDApIHsgfQogICAgaXN0cmVhbShzdHJlYW1idWYqIHNiLCBv
c3RyZWFtKnRpZWQ9IF9fbnVsbCApOwogICAgaXN0cmVhbSYgZ2V0KGNoYXIqIHB0ciwgaW50IGxl
biwgY2hhciBkZWxpbSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0KHVuc2lnbmVkIGNoYXIqIHB0
ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpCgl7IHJldHVybiBnZXQoKGNoYXIqKXB0ciwg
bGVuLCBkZWxpbSk7IH0KICAgIGlzdHJlYW0mIGdldChjaGFyJiBjKTsKICAgIGlzdHJlYW0mIGdl
dCh1bnNpZ25lZCBjaGFyJiBjKSB7IHJldHVybiBnZXQoKGNoYXImKWMpOyB9CiAgICBpc3RyZWFt
JiBnZXRsaW5lKGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpOwogICAgaXN0
cmVhbSYgZ2V0bGluZSh1bnNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAn
XG4nKQoJeyByZXR1cm4gZ2V0bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0
cmVhbSYgZ2V0KHNpZ25lZCBjaGFyJiBjKSAgeyByZXR1cm4gZ2V0KChjaGFyJiljKTsgfQogICAg
aXN0cmVhbSYgZ2V0KHNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4n
KQoJeyByZXR1cm4gZ2V0KChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9CiAgICBpc3RyZWFtJiBn
ZXRsaW5lKHNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyBy
ZXR1cm4gZ2V0bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgcmVh
ZChjaGFyICpwdHIsIHN0cmVhbXNpemUgbik7CiAgICBpc3RyZWFtJiByZWFkKHVuc2lnbmVkIGNo
YXIgKnB0ciwgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiByZWFkKChjaGFyKilwdHIsIG4p
OyB9CiAgICBpc3RyZWFtJiByZWFkKHNpZ25lZCBjaGFyICpwdHIsIHN0cmVhbXNpemUgbikKICAg
ICAgeyByZXR1cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0cmVhbSYgcmVhZCh2b2lk
ICpwdHIsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hhciopcHRyLCBuKTsg
fQogICAgaXN0cmVhbSYgZ2V0KHN0cmVhbWJ1ZiYgc2IsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAg
IGlzdHJlYW0mIGdldHMoY2hhciAqKnMsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGludCBpcGZ4
KGludCBuZWVkID0gMCkgewoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7IHJldHVy
biAwOyB9CgllbHNlIHsKCSAgIDsKCSAgaWYgKF90aWUgJiYgKG5lZWQgPT0gMCB8fCByZGJ1Zigp
LT5pbl9hdmFpbCgpIDwgbmVlZCkpIF90aWUtPmZsdXNoKCk7CgkgIGlmICghbmVlZCAmJiAoZmxh
Z3MoKSAmIGlvczo6c2tpcHdzKSkgcmV0dXJuIF9za2lwX3dzKCk7CgkgIGVsc2UgcmV0dXJuIDE7
Cgl9CiAgICB9CiAgICBpbnQgaXBmeDAoKSB7ICAKCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZh
aWxiaXQpOyByZXR1cm4gMDsgfQoJZWxzZSB7CgkgICA7CgkgIGlmIChfdGllKSBfdGllLT5mbHVz
aCgpOwoJICBpZiAoZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSByZXR1cm4gX3NraXBfd3MoKTsKCSAg
ZWxzZSByZXR1cm4gMTsKCX0KICAgIH0KICAgIGludCBpcGZ4MSgpIHsgIAoJaWYgKCFnb29kKCkp
IHsgc2V0KGlvczo6ZmFpbGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsKCSAgaWYgKF90
aWUgJiYgcmRidWYoKS0+aW5fYXZhaWwoKSA9PSAwKSBfdGllLT5mbHVzaCgpOwoJICByZXR1cm4g
MTsKCX0KICAgIH0KICAgIHZvaWQgaXNmeCgpIHsgIDsgfQogICAgaW50IGdldCgpIHsgaWYgKCFp
cGZ4MSgpKSByZXR1cm4gKC0xKSA7CgkJZWxzZSB7IGludCBjaCA9IF9zdHJidWYtPnNidW1wYygp
OwoJCSAgICAgICBpZiAoY2ggPT0gKC0xKSApIHNldChpb3M6OmVvZmJpdCk7CgkJICAgICAgIGlz
ZngoKTsKCQkgICAgICAgcmV0dXJuIGNoOwoJCSAgICAgfSB9CiAgICBpbnQgcGVlaygpOwogICAg
X0dfc2l6ZV90ICBnY291bnQoKSB7IHJldHVybiBfZ2NvdW50OyB9CiAgICBpc3RyZWFtJiBpZ25v
cmUoaW50IG49MSwgaW50IGRlbGltID0gKC0xKSApOwogICAgaW50IHN5bmMgKCk7CiAgICBpc3Ry
ZWFtJiBzZWVrZyhzdHJlYW1wb3MpOwogICAgaXN0cmVhbSYgc2Vla2coc3RyZWFtb2ZmLCBfc2Vl
a19kaXIpOwogICAgc3RyZWFtcG9zIHRlbGxnKCk7CiAgICBpc3RyZWFtJiBwdXRiYWNrKGNoYXIg
Y2gpIHsKCWlmIChnb29kKCkgJiYgX3N0cmJ1Zi0+c3B1dGJhY2tjKGNoKSA9PSAoLTEpICkgY2xl
YXIoaW9zOjpiYWRiaXQpOwoJcmV0dXJuICp0aGlzO30KICAgIGlzdHJlYW0mIHVuZ2V0KCkgewoJ
aWYgKGdvb2QoKSAmJiBfc3RyYnVmLT5zdW5nZXRjKCkgPT0gKC0xKSApIGNsZWFyKGlvczo6YmFk
Yml0KTsKCXJldHVybiAqdGhpczt9CiAgICBpc3RyZWFtJiBzY2FuKGNvbnN0IGNoYXIgKmZvcm1h
dCAuLi4pOwogICAgaXN0cmVhbSYgdnNjYW4oY29uc3QgY2hhciAqZm9ybWF0LCBfR192YV9saXN0
ICBhcmdzKTsKCgoKCgoKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oY2hhciopOwogICAgaXN0cmVh
bSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBjaGFyKiBwKSB7IHJldHVybiBvcGVyYXRvcj4+KChjaGFy
KilwKTsgfQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzaWduZWQgY2hhcipwKSB7IHJldHVybiBv
cGVyYXRvcj4+KChjaGFyKilwKTsgfQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFyJiBjKTsK
ICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgY2hhciYgYykge3JldHVybiBvcGVyYXRv
cj4+KChjaGFyJiljKTt9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNpZ25lZCBjaGFyJiBjKSB7
cmV0dXJuIG9wZXJhdG9yPj4oKGNoYXImKWMpO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oaW50
Jik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGxvbmcmKTsKCiAgICBfX2V4dGVuc2lvbl9fIGlz
dHJlYW0mIG9wZXJhdG9yPj4obG9uZyBsb25nJik7CiAgICBfX2V4dGVuc2lvbl9fIGlzdHJlYW0m
IG9wZXJhdG9yPj4odW5zaWduZWQgbG9uZyBsb25nJik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+
PihzaG9ydCYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBpbnQmKTsKICAgIGlz
dHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgbG9uZyYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+
Pih1bnNpZ25lZCBzaG9ydCYpOwoKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oYm9vbCYpOwoKICAg
IGlzdHJlYW0mIG9wZXJhdG9yPj4oZmxvYXQmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oZG91
YmxlJik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGxvbmcgZG91YmxlJik7CiAgICBpc3RyZWFt
JiBvcGVyYXRvcj4+KCBfX21hbmlwIGZ1bmMpIHsoKmZ1bmMpKCp0aGlzKTsgcmV0dXJuICp0aGlz
O30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oX19pbWFuaXAgZnVuYykgeyByZXR1cm4gKCpmdW5j
KSgqdGhpcyk7IH0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc3RyZWFtYnVmKik7Cn07CgpjbGFz
cyBpb3N0cmVhbSA6IHB1YmxpYyBpc3RyZWFtLCBwdWJsaWMgb3N0cmVhbQp7CiAgcHVibGljOgog
ICAgaW9zdHJlYW0oKSB7IH0KICAgIGlvc3RyZWFtKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qdGll
ZD0gX19udWxsICk7Cn07CgpjbGFzcyBfSU9faXN0cmVhbV93aXRoYXNzaWduIDogcHVibGljIGlz
dHJlYW0gewpwdWJsaWM6CiAgX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KGlzdHJl
YW0mKTsKICBfSU9faXN0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0oX0lPX2lzdHJlYW1fd2l0
aGFzc2lnbiYgcmhzKQogICAgeyByZXR1cm4gb3BlcmF0b3I9IChzdGF0aWNfY2FzdDxpc3RyZWFt
Jj4gKHJocykpOyB9Cn07CgpjbGFzcyBfSU9fb3N0cmVhbV93aXRoYXNzaWduIDogcHVibGljIG9z
dHJlYW0gewpwdWJsaWM6CiAgX0lPX29zdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KG9zdHJl
YW0mKTsKICBfSU9fb3N0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0oX0lPX29zdHJlYW1fd2l0
aGFzc2lnbiYgcmhzKQogICAgeyByZXR1cm4gb3BlcmF0b3I9IChzdGF0aWNfY2FzdDxvc3RyZWFt
Jj4gKHJocykpOyB9Cn07CgpleHRlcm4gX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiBjaW47CiAKZXh0
ZXJuIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24gY291dCwgY2VycjsKCmV4dGVybiBfSU9fb3N0cmVh
bV93aXRoYXNzaWduIGNsb2cKCgoKOwoKZXh0ZXJuIGlzdHJlYW0mIGxvY2soaXN0cmVhbSYgaW5z
KTsKZXh0ZXJuIGlzdHJlYW0mIHVubG9jayhpc3RyZWFtJiBpbnMpOwpleHRlcm4gb3N0cmVhbSYg
bG9jayhvc3RyZWFtJiBvdXRzKTsKZXh0ZXJuIG9zdHJlYW0mIHVubG9jayhvc3RyZWFtJiBvdXRz
KTsKCnN0cnVjdCBJb3N0cmVhbV9pbml0IHsgfSA7ICAgCgppbmxpbmUgaW9zJiBkZWMoaW9zJiBp
KQp7IGkuc2V0Zihpb3M6OmRlYywgaW9zOjpkZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4g
aTsgfQppbmxpbmUgaW9zJiBoZXgoaW9zJiBpKQp7IGkuc2V0Zihpb3M6OmhleCwgaW9zOjpkZWN8
aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsgfQppbmxpbmUgaW9zJiBvY3QoaW9zJiBpKQp7
IGkuc2V0Zihpb3M6Om9jdCwgaW9zOjpkZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsg
fQp9ICAKCgojIDI4NyAiL2VkYy93YS9iZW5lZGljdC9mM19pZDYvY3NmZy9ocHVfZ251L0ZkX2hv
bWUvaW5jbHVkZS9meHAuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMSAzCiAKCgoK
CgoKCgpleHRlcm4gIkMiIHsKCgoKCiAgICAgZXh0ZXJuIGludCBpc2FsbnVtKGludCk7CiAgICAg
ZXh0ZXJuIGludCBpc2FscGhhKGludCk7CiAgICAgZXh0ZXJuIGludCBpc2NudHJsKGludCk7CiAg
ICAgZXh0ZXJuIGludCBpc2RpZ2l0KGludCk7CiAgICAgZXh0ZXJuIGludCBpc2dyYXBoKGludCk7
CiAgICAgZXh0ZXJuIGludCBpc2xvd2VyKGludCk7CiAgICAgZXh0ZXJuIGludCBpc3ByaW50KGlu
dCk7CiAgICAgZXh0ZXJuIGludCBpc3B1bmN0KGludCk7CiAgICAgZXh0ZXJuIGludCBpc3NwYWNl
KGludCk7CiAgICAgZXh0ZXJuIGludCBpc3VwcGVyKGludCk7CiAgICAgZXh0ZXJuIGludCBpc3hk
aWdpdChpbnQpOwojIDM4ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwoKCgogICAgIGV4dGVybiB1
bnNpZ25lZCBjaGFyIAkJKl9fY3R5cGU7CiAgICAgZXh0ZXJuIHVuc2lnbmVkIGNoYXIgICAgICAg
ICAgICAgICAqX19jdHlwZTI7CgogICAgIGV4dGVybiB1bnNpZ25lZCBjaGFyCQkqX191cHNoaWZ0
OwogICAgIGV4dGVybiB1bnNpZ25lZCBjaGFyCQkqX19kb3duc2hpZnQ7CgoKCgoKIAoKZXh0ZXJu
IGludCB0b2xvd2VyKGludCk7CmV4dGVybiBpbnQgdG91cHBlcihpbnQpOwoKCgoKCgoKCgogICAg
IGV4dGVybiBpbnQgaXNhc2NpaShpbnQpOwogICAgIGV4dGVybiBpbnQgdG9hc2NpaShpbnQpOwoK
CgoKCgoKCgoKCgoKCmV4dGVybiBpbnQgX190b2xvd2VyKGludCk7CmV4dGVybiBpbnQgX190b3Vw
cGVyKGludCk7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgICAKCgoKCgogICAgIGV4dGVybiBp
bnQgaXNjdHlwZShpbnQsIHVuc2lnbmVkIGludCk7CiAgICAgZXh0ZXJuIGludCBpc2JsYW5rKGlu
dCk7CgoKCgoKCiAgICAgZXh0ZXJuIHVuc2lnbmVkIGludCAqX19TQl9tYXNrczsKCiAgICAgZXh0
ZXJuIGludCBfaXNhbG51bShpbnQpOwogICAgIGV4dGVybiBpbnQgX2lzYWxwaGEoaW50KTsKICAg
ICBleHRlcm4gaW50IF9pc2NudHJsKGludCk7CiAgICAgZXh0ZXJuIGludCBfaXNkaWdpdChpbnQp
OwogICAgIGV4dGVybiBpbnQgX2lzZ3JhcGgoaW50KTsKICAgICBleHRlcm4gaW50IF9pc2xvd2Vy
KGludCk7CiAgICAgZXh0ZXJuIGludCBfaXNwcmludChpbnQpOwogICAgIGV4dGVybiBpbnQgX2lz
cHVuY3QoaW50KTsKICAgICBleHRlcm4gaW50IF9pc3NwYWNlKGludCk7CiAgICAgZXh0ZXJuIGlu
dCBfaXN1cHBlcihpbnQpOwogICAgIGV4dGVybiBpbnQgX2lzeGRpZ2l0KGludCk7CiMgMTQ1ICIv
dXNyL2luY2x1ZGUvY3R5cGUuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgICAKCgoK
CgoKCgoKCgoKCgoKfQoKCgojIDI4OCAiL2VkYy93YS9iZW5lZGljdC9mM19pZDYvY3NmZy9ocHVf
Z251L0ZkX2hvbWUvaW5jbHVkZS9meHAuaCIgMgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCiAKCgoK
CgpuYW1lc3BhY2UgRnhwIHsKY2xhc3MgZnhwOwpjbGFzcyBmeHBBcmc7CmNsYXNzIE5iclN0b3Jl
OwojIDM5MCAiL2VkYy93YS9iZW5lZGljdC9mM19pZDYvY3NmZy9ocHVfZ251L0ZkX2hvbWUvaW5j
bHVkZS9meHAuaCIKCmNsYXNzIGZ4cFN0YXRpc3RpY3M7CgoKIAogCiAKCgp9ICAKZXh0ZXJuICJD
IiB7CiAgIHR5cGVkZWYgZW51bSB7IAogICAgICBTT0xfRkxPQVQsIAogICAgICBTT0xfVU5TSUdO
RUQsIAogICAgICBTT0xfRklYIAogICB9IFNvbF9iYXNlVHlwZTsKCiAgIHR5cGVkZWYgZW51bSB7
IAogICAgICBTT0xfV1JBUFBFRCwKICAgICAgU09MX1NNX1dSQVAsCiAgICAgIFNPTF9aRVJPX1NB
VFVSQVRJT04sCiAgICAgIFNPTF9TQVRVUkFUSU5HLAogICAgICBTT0xfU1lNX1NBVFVSQVRJT04K
ICAgfSBTb2xfb3ZlcmZsb3dUeXBlOwoKICAgdHlwZWRlZiBlbnVtIHsgCiAgICAgIFNPTF9UUlVO
Q0FURUQsCiAgICAgIFNPTF9UUlVOQ0FURUQwLAogICAgICBTT0xfUk9VTkRFRF9QTFVTX0lORiwK
ICAgICAgU09MX1JPVU5ERURfTUlOVVNfSU5GLAogICAgICBTT0xfUk9VTkRFRF9JTkYsCiAgICAg
IFNPTF9ST1VOREVEMCwKICAgICAgU09MX1JPVU5ERURfQ09OVgogICB9IFNvbF9xdWFudGl6YXRp
b25UeXBlOwogICAKICAgdHlwZWRlZiBzdHJ1Y3QgewogICAgICBpbnQgb3ZlcmZsb3c7ICAgICAK
ICAgICAgaW50IHRydW5jYXRlZDsgICAgCiAgICAgIGludCBlcnJvcjsKICAgfSBTb2xfZGV0ZWN0
OyAgICAgICAgCgogICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgIFNvbF9iYXNlVHlwZSBzdDsKICAg
ICAgaW50IHdpZHRoOwogICAgICBpbnQgcHJlY2lzaW9uOwogICB9IFNvbF90eXBlOyAgICAgICAg
CgogICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgIFNvbF9vdmVyZmxvd1R5cGUgb3ZlcjsKICAgICAg
U29sX3F1YW50aXphdGlvblR5cGUgcXVhbjsKICAgICAgaW50IG5yb2ZiaXRzOwogICB9IFNvbF9i
aXR0cnVlQ2hhcmFjdGVyaXN0aWNzOwoKICAgdHlwZWRlZiBlbnVtIHsKICAgICAgU09MX0FCUywg
CiAgICAgIFNPTF9BREQsIAogICAgICBTT0xfU1VCLCAKICAgICAgU09MX01VTFQsIAogICAgICBT
T0xfRElWLCAKICAgICAgU09MX0xTSElGVCwgCiAgICAgIFNPTF9SU0hJRlQsIAogICAgICBTT0xf
TUlOLCAKICAgICAgU09MX1BPV0VSLCAKICAgICAgU09MX1JFTSwgCiAgICAgIFNPTF9ST1VORCwg
CiAgICAgIFNPTF9BTkQsIAogICAgICBTT0xfT1IsIAogICAgICBTT0xfRVhPUiwgCiAgICAgIFNP
TF9OT1QsIAogICAgICBTT0xfTFQsCiAgICAgIFNPTF9HVCwKICAgICAgU09MX0xFLAogICAgICBT
T0xfR0UsCiAgICAgIFNPTF9FUSwKICAgICAgU09MX05FLCAKICAgICAgU09MX0JJVFNFTEVDVCwg
CiAgICAgIFNPTF9CSVRNRVJHRSwKICAgICAgU09MX0JJVElOU0VSVCAKICAgfSBTb2xfb3A7CgoK
ICAgZXh0ZXJuIGxvbmcgc29sX3MybCAoCiAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiwKICAg
ICAgY29uc3QgaW50CiAgICk7CiAgIGV4dGVybiBsb25nIHNvbF91MmwgKAogICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCosCiAgICAgIGNvbnN0IGludAogICApOwoKfQpuYW1lc3BhY2UgRnhwIHsK
CgoKCgoKCgogCiAKIAogCgplbnVtIG92ZXJmbG93VHlwZSB7IAogICBXUkFQUEVEICAgICAgICAg
ICA9IFNPTF9XUkFQUEVELAogICBTTV9XUkFQUEVEICAgICAgICA9IFNPTF9TTV9XUkFQLAogICBa
RVJPX1NBVFVSQVRFRCAgICA9IFNPTF9aRVJPX1NBVFVSQVRJT04sCiAgIFNBVFVSQVRFRCAgICAg
ICAgID0gU09MX1NBVFVSQVRJTkcsCiAgIFNZTV9TQVRVUkFURUQgICAgID0gU09MX1NZTV9TQVRV
UkFUSU9OCn0gOwoKZW51bSBxdWFudGl6YXRpb25UeXBlIHsgCiAgIFRSVU5DQVRFRCAgICAgICAg
ID0gU09MX1RSVU5DQVRFRCwKICAgVFJVTkNBVEVEMCAgICAgICAgPSBTT0xfVFJVTkNBVEVEMCwK
ICAgUk9VTkRFRF9QTFVTX0lORiAgPSBTT0xfUk9VTkRFRF9QTFVTX0lORiwKICAgUk9VTkRFRF9N
SU5VU19JTkYgPSBTT0xfUk9VTkRFRF9NSU5VU19JTkYsCiAgIFJPVU5ERURfSU5GICAgICAgID0g
U09MX1JPVU5ERURfSU5GLAogICBST1VOREVEMCAgICAgICAgICA9IFNPTF9ST1VOREVEMCwKICAg
Uk9VTkRFRF9DT05WICAgICAgPSBTT0xfUk9VTkRFRF9DT05WCn0gOwoKIAogCiAKCmVudW0gc2Nf
bnVtcmVwCnsKICAgU0NfTk9CQVNFLAogICBTQ19CSU4sCiAgIFNDX09DVCwKICAgU0NfREVDLAog
ICBTQ19IRVgsCiAgIFNDX0JJTl9VUywKICAgU0NfQklOX1NNLAogICBTQ19PQ1RfVVMsCiAgIFND
X09DVF9TTSwKICAgU0NfSEVYX1VTLAogICBTQ19IRVhfU00sCiAgIFNDX0NTRAp9OwoKZW51bSBz
Y19mbXQKewogICBTQ19GLAogICBTQ19FCn07CgogCiAKIAoKY2xhc3MgZnhwT3FTdGF0IDogcHVi
bGljIFNvbF9kZXRlY3QgewpwdWJsaWM6CiAgIGZ4cE9xU3RhdCgpICAgICAgICAgICAgIHtvdmVy
Zmxvdz0wO3RydW5jYXRlZD0wO2Vycm9yPTA7fTsKICAgZnhwT3FTdGF0KFNvbF9kZXRlY3QgZCkg
e292ZXJmbG93PWQub3ZlcmZsb3c7dHJ1bmNhdGVkPWQudHJ1bmNhdGVkO2Vycm9yPWQuZXJyb3I7
fTsKfTsKCmNsYXNzIGZ4cE9xYyB7CiAgICAKcHVibGljIDogIAoKICBmeHBPcWMoCiAgICAgIHF1
YW50aXphdGlvblR5cGUgcXVhbnRpemF0aW9uID0gVFJVTkNBVEVELAogICAgICBvdmVyZmxvd1R5
cGUgICAgIG92ZXJmbG93ICAgICA9IFdSQVBQRUQsCiAgICAgIGludCBucm9mQml0cyA9IDAgICAg
CiAgICkgewogICAgICBkX2J0Yy5vdmVyPShTb2xfb3ZlcmZsb3dUeXBlKW92ZXJmbG93OwogICAg
ICBkX2J0Yy5xdWFuPShTb2xfcXVhbnRpemF0aW9uVHlwZSlxdWFudGl6YXRpb247CiAgICAgIGRf
YnRjLm5yb2ZiaXRzPW5yb2ZCaXRzOwogICB9OwogICAKICAgZnhwT3FjKAogICAgICBjb25zdCBT
b2xfYml0dHJ1ZUNoYXJhY3RlcmlzdGljcyYgY2gKICAgKTpkX2J0YyhjaCl7fTsKICAgfmZ4cE9x
YygpIHt9OwogICAKcHVibGljIDogIAogICBzdGF0aWMgY29uc3QgZnhwT3FjKiBkZWYoKSAgICAg
ICB7IHJldHVybiAmZF9kZWZhdWx0OyB9OwogICAgICAgCiAgIHN0YXRpYyBjb25zdCBmeHBPcWMq
IGRpdigpICAgICAgIHsgcmV0dXJuICZkX2RpdjsgfTsKICAgICAgIAogICBzdGF0aWMgY29uc3Qg
ZnhwT3FjKiBzYXR1cmF0ZWQoKSB7IHJldHVybiAmZF9zYXR1cmF0ZWQ7IH07CiAgICAgICAKCnBy
aXZhdGU6CnB1YmxpYzoKICAgc3RhdGljIGZ4cE9xYyBkX2RlZmF1bHQ7CiAgIHN0YXRpYyBmeHBP
cWMgZF9kaXY7CiAgIHN0YXRpYyBmeHBPcWMgZF9zYXR1cmF0ZWQ7CiAgIFNvbF9iaXR0cnVlQ2hh
cmFjdGVyaXN0aWNzIGRfYnRjOwp9OwoKIAogCiAKdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
Y2xhc3MgZnhwT3BlcjsKCmNsYXNzIGZ4cFR5cGUgOiBwdWJsaWMgU29sX3R5cGUgewpwdWJsaWM6
CgoKICAgc3RhdGljIHZvaWQgcmFuZG9tSW5pdChjb25zdCBsb25nIHNlZWQpOwogICBmeHBPcVN0
YXQgcGFyc2UoY29uc3QgY2hhciogc3RyLHVuc2lnbmVkIHNob3J0KiBzdG9yZV9wKSBjb25zdDsK
ICAgZnhwT3FTdGF0IHBhcnNlKGNvbnN0IGNoYXIqIHN0cix1bnNpZ25lZCBzaG9ydCogc3RvcmVf
cCxjb25zdCBmeHBPcWMmIGJ0YykgY29uc3Q7CiAgIHZvaWQgcmFuZG9tR2VuKHVuc2lnbmVkIHNo
b3J0KiBzdG9yZV9wKSAgY29uc3Q7CiAgIHZvaWQgbWluVmFsdWUoIHVuc2lnbmVkIHNob3J0KiBz
dG9yZV9wKSAgY29uc3Q7CiAgIHZvaWQgbWF4VmFsdWUoIHVuc2lnbmVkIHNob3J0KiBzdG9yZV9w
KSAgY29uc3Q7CiAgIHZvaWQgemVyb1ZhbHVlKHVuc2lnbmVkIHNob3J0KiBzdG9yZV9wKSAgY29u
c3QgICB7IGludCBzID0gYXJyYXlTaXplKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8cztpKyspCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlX3BbaV0g
PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fTsKCiAgIGludCAgbWluV2lkdGgoY29uc3QgdW5zaWduZWQgc2hvcnQqIHN0b3JlX3ApICAgICAg
ICAgY29uc3Q7CiAgIGludCAgbnJOb25aZXJvQml0c0NzZChjb25zdCB1bnNpZ25lZCBzaG9ydCog
c3RvcmVfcCkgY29uc3Q7CiAgIGludCAgbnJOb25aZXJvQml0c1NtKCBjb25zdCB1bnNpZ25lZCBz
aG9ydCogc3RvcmVfcCkgY29uc3Q7CiAgIGludCAgbnJOb25aZXJvQml0czJzQyhjb25zdCB1bnNp
Z25lZCBzaG9ydCogc3RvcmVfcCkgY29uc3Q7CgogICBjb25zdCBjaGFyKiBkZWMoY29uc3QgdW5z
aWduZWQgc2hvcnQqIHN0b3JlX3ApICAgICAgIGNvbnN0OwogICBjb25zdCBjaGFyKiBjc2QoY29u
c3QgdW5zaWduZWQgc2hvcnQqIHN0b3JlX3ApICAgICAgIGNvbnN0OwoKICAgIAogICBjb25zdCBj
aGFyKiBiaW4oY29uc3QgdW5zaWduZWQgc2hvcnQqIHN0b3JlX3ApICAgICAgIGNvbnN0OwogICBj
b25zdCBjaGFyKiBiaW5TbShjb25zdCB1bnNpZ25lZCBzaG9ydCogc3RvcmVfcCkgICAgIGNvbnN0
OwogICBjb25zdCBjaGFyKiBicEJpbihjb25zdCB1bnNpZ25lZCBzaG9ydCogc3RvcmVfcCkgICAg
IGNvbnN0OwogICBjb25zdCBjaGFyKiBicEJpblNtKGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzdG9y
ZV9wKSAgIGNvbnN0OwogICAKICAgIAogICBjb25zdCBjaGFyKiBvY3QoY29uc3QgdW5zaWduZWQg
c2hvcnQqIHN0b3JlX3ApICAgICAgIGNvbnN0OwogICBjb25zdCBjaGFyKiBvY3RTbShjb25zdCB1
bnNpZ25lZCBzaG9ydCogc3RvcmVfcCkgICAgIGNvbnN0OwogICBjb25zdCBjaGFyKiBicE9jdChj
b25zdCB1bnNpZ25lZCBzaG9ydCogc3RvcmVfcCkgICAgIGNvbnN0OwogICBjb25zdCBjaGFyKiBi
cE9jdFNtKGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzdG9yZV9wKSAgIGNvbnN0OwoKICAgIAogICBj
b25zdCBjaGFyKiBoZXgoY29uc3QgdW5zaWduZWQgc2hvcnQqIHN0b3JlX3ApICAgICAgIGNvbnN0
OwogICBjb25zdCBjaGFyKiBoZXhTbShjb25zdCB1bnNpZ25lZCBzaG9ydCogc3RvcmVfcCkgICAg
IGNvbnN0OwogICBjb25zdCBjaGFyKiBicEhleChjb25zdCB1bnNpZ25lZCBzaG9ydCogc3RvcmVf
cCkgICAgIGNvbnN0OwogICBjb25zdCBjaGFyKiBicEhleFNtKGNvbnN0IHVuc2lnbmVkIHNob3J0
KiBzdG9yZV9wKSAgIGNvbnN0OwoKICAgY29uc3QgY2hhciogZGJnKGNvbnN0IHVuc2lnbmVkIHNo
b3J0KiBzdG9yZV9wKSAgICAgICBjb25zdDsKICAgCiAgICAKICAgY29uc3QgY2hhciogdG9fZGVj
KGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzdG9yZV9wKSAgICBjb25zdDsKICAgY29uc3QgY2hhciog
dG9fYmluKGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzdG9yZV9wKSAgICBjb25zdDsKICAgY29uc3Qg
Y2hhciogdG9fb2N0KGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzdG9yZV9wKSAgICBjb25zdDsKICAg
Y29uc3QgY2hhciogdG9faGV4KGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzdG9yZV9wKSAgICBjb25z
dDsKICAgY29uc3QgY2hhciogdG9fc3RyaW5nKGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzdG9yZV9w
LHNjX251bXJlcCxzY19mbXQpICAgIGNvbnN0OwogICBjb25zdCBjaGFyKiB0b19zdHJpbmcoY29u
c3QgdW5zaWduZWQgc2hvcnQqIHN0b3JlX3Asc2NfbnVtcmVwLHNjX2ZtdCxpbnQgZnJvbSwgaW50
IHRvKSAgICBjb25zdDsKICAgY29uc3QgY2hhciogQlB0b19zdHJpbmcoY29uc3QgdW5zaWduZWQg
c2hvcnQqIHN0b3JlX3Asc2NfbnVtcmVwLHNjX2ZtdCkgICAgY29uc3Q7CgoKcHVibGljOgogICBp
bmxpbmUgZnhwVHlwZShTb2xfYmFzZVR5cGUgYnQsIGludCB3LCBpbnQgcCkgewogICAgICBTb2xf
dHlwZTo6c3QgICAgICAgID0gYnQ7CiAgICAgIFNvbF90eXBlOjp3aWR0aCAgICAgPSB3OwogICAg
ICBTb2xfdHlwZTo6cHJlY2lzaW9uID0gcDsKICAgfTsKICAgaW5saW5lIGZ4cFR5cGUoaW50IHMs
IGludCB3LCBpbnQgcCkgewogICAgICBTb2xfdHlwZTo6c3QgICAgICAgID0gU29sX2Jhc2VUeXBl
KHMrMSk7CiAgICAgIFNvbF90eXBlOjp3aWR0aCAgICAgPSB3OwogICAgICBTb2xfdHlwZTo6cHJl
Y2lzaW9uID0gcDsKICAgfTsKICAgaW5saW5lIGZ4cFR5cGUoKXt9OwogICBpbmxpbmUgfmZ4cFR5
cGUoKXt9OwoKCiAgIGlubGluZSBpbnQgd2lkdGgoKSAgICAgICAgICAgICAgICAgY29uc3Qge3Jl
dHVybiBTb2xfdHlwZTo6d2lkdGg7fTsKICAgaW5saW5lIGludCBwcmVjaXNpb24oKSAgICAgICAg
ICAgICBjb25zdCB7cmV0dXJuIFNvbF90eXBlOjpwcmVjaXNpb247fTsKICAgaW5saW5lIFNvbF9i
YXNlVHlwZSBiYXNlVHlwZSgpICAgICBjb25zdCB7cmV0dXJuIFNvbF90eXBlOjpzdDt9OwogICBp
bmxpbmUgdm9pZCBzZXRfd2lkdGgoaW50IHcpICAgICAgICAgICAgIHtTb2xfdHlwZTo6d2lkdGgg
PSB3O307CiAgIGlubGluZSB2b2lkIHNldF9wcmVjaXNpb24oaW50IHApICAgICAgICAge1NvbF90
eXBlOjpwcmVjaXNpb24gPSBwO307CiAgIGlubGluZSB2b2lkIHNldF9iYXNlVHlwZShTb2xfYmFz
ZVR5cGUgdCkge1NvbF90eXBlOjpzdCA9IHQ7fTsKICAgaW50IGFycmF5U2l6ZSgpICAgICAgICAg
ICAgICAgICAgICBjb25zdCB7cmV0dXJuICh3aWR0aCgpLTEpLzE2KzE7fTsKICAgaW5saW5lIGJv
b2wgc2lnbmVkVHlwZSgpICAgICAgICAgICBjb25zdCB7cmV0dXJuIChiYXNlVHlwZSgpPT1TT0xf
RklYKTt9OwogICBjb25zdCBjaGFyKiB0eXBlTmFtZSgpICAgICAgICAgICAgIGNvbnN0OwoKfTsK
CnN0YXRpYyBjb25zdCBmeHBUeXBlIGZ4cFR5cGVfX2Jvb2xfdHlwZSAgID0gZnhwVHlwZShTT0xf
VU5TSUdORUQsMSwwKTsKc3RhdGljIGNvbnN0IGZ4cFR5cGUgZnhwVHlwZV9fY2hhcl90eXBlICAg
PSBmeHBUeXBlKFNPTF9GSVgsOCwwKTsKc3RhdGljIGNvbnN0IGZ4cFR5cGUgZnhwVHlwZV9fc2hv
cnRfdHlwZSAgPSBmeHBUeXBlKFNPTF9GSVgsMTYsMCk7CnN0YXRpYyBjb25zdCBmeHBUeXBlIGZ4
cFR5cGVfX2ludF90eXBlICAgID0gZnhwVHlwZShTT0xfRklYLDMyLDApOwpzdGF0aWMgY29uc3Qg
ZnhwVHlwZSBmeHBUeXBlX19sb25nX3R5cGUgICA9IGZ4cFR5cGUoU09MX0ZJWCwzMiwwKTsKc3Rh
dGljIGNvbnN0IGZ4cFR5cGUgZnhwVHlwZV9fdWNoYXJfdHlwZSAgPSBmeHBUeXBlKFNPTF9VTlNJ
R05FRCw4LDApOwpzdGF0aWMgY29uc3QgZnhwVHlwZSBmeHBUeXBlX191c2hvcnRfdHlwZSA9IGZ4
cFR5cGUoU09MX1VOU0lHTkVELDE2LDApOwpzdGF0aWMgY29uc3QgZnhwVHlwZSBmeHBUeXBlX191
aW50X3R5cGUgICA9IGZ4cFR5cGUoU09MX1VOU0lHTkVELDMyLDApOwpzdGF0aWMgY29uc3QgZnhw
VHlwZSBmeHBUeXBlX191bG9uZ190eXBlICA9IGZ4cFR5cGUoU09MX1VOU0lHTkVELDMyLDApOwoK
CgoKCgoKCgoKCgoKCgogCiAKIAoKY2xhc3MgZnhwUmVzIHsKcHJpdmF0ZToKICAgIAogICBjb25z
dCBmeHBUeXBlKiAgY29uc3QgZF90eXBlOwogICB1bnNpZ25lZCBzaG9ydCogY29uc3QgZF9zdG9y
ZTsKICAgY29uc3QgaW50IGRfZnJvbTsKICAgY29uc3QgaW50IGRfdG87Cgpwcm90ZWN0ZWQ6CiAg
IGZ4cFJlcygpOmRfdHlwZSgwKSxkX3N0b3JlKDApLGRfZnJvbSgwKSxkX3RvKDApICAgICAgeyB9
OwoKcHVibGljOgogICAgCiAgIGZ4cFJlcygKICAgICAgY29uc3QgZnhwVHlwZSogIHR5cGUsCiAg
ICAgIHVuc2lnbmVkIHNob3J0KiBzdG9yZSwKICAgICAgaW50IGZyb20sCiAgICAgIGludCB0bwog
ICAgKTpkX3R5cGUodHlwZSksZF9zdG9yZShzdG9yZSksZF9mcm9tKGZyb20pLGRfdG8odG8pCiAg
ICB7fTsKCiAgIGNvbnN0IGZ4cFR5cGUqIHR5cGUoKSAgICAgICAgIGNvbnN0IHtyZXR1cm4gZF90
eXBlO307CiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzdG9yZSgpIGNvbnN0IHtyZXR1cm4gZF9z
dG9yZTt9OwogICAgICAgICB1bnNpZ25lZCBzaG9ydCogc3RvcmUoKSAgICAgICB7cmV0dXJuIGRf
c3RvcmU7fTsKICAgaW50IGZyb21fcG9zKCkgICAgICAgICAgICAgICAgY29uc3Qge3JldHVybiBk
X2Zyb207fTsKICAgaW50IHRvX3BvcygpICAgICAgICAgICAgICAgICAgY29uc3Qge3JldHVybiBk
X3RvO307CgogICB2b2lkIG9wZXJhdG9yID0gKGNvbnN0IGZ4cEFyZyYgc2VjKTsKICAgdGVtcGxh
dGU8U29sX29wIENNRCwgaW50IE8+CiAgICAgIHZvaWQgb3BlcmF0b3IgPSAoY29uc3QgZnhwT3Bl
cjxDTUQsTz4mIHNlYyk7CiAgIHZvaWQgb3BlcmF0b3IgPSAoY29uc3QgY2hhciogc2VjKTsKCiAg
IGNvbnN0IGNoYXIqIHRvX3N0cmluZygpIGNvbnN0CgogICB7IHJldHVybiBkX3R5cGUtPnRvX3N0
cmluZyhkX3N0b3JlLFNDX0JJTixTQ19GLGRfZnJvbSxkX3RvKTt9CgogICA7Cgpwcml2YXRlOgog
ICBmeHBSZXMmIG9wZXJhdG9yID0gKGNvbnN0IGZ4cFJlcyYpIHtyZXR1cm4gKnRoaXM7fTsKfTsK
CiAKIAogCgpjbGFzcyBmeHBSZXNCOiBwdWJsaWMgZnhwUmVzIHsKcHJpdmF0ZToKICAgZnhwUmVz
QigpICAgICAgICAgICAgICB7IH07CgpwdWJsaWM6CgogICBmeHBSZXNCKAogICAgICBjb25zdCBm
eHBUeXBlKiAgdHlwZSwKICAgICAgdW5zaWduZWQgc2hvcnQqIHN0b3JlLAogICAgICBpbnQgZnJv
bQogICAgKTpmeHBSZXModHlwZSxzdG9yZSxmcm9tLGZyb20pCiAgICB7fTsKICAgCiAgIHZvaWQg
b3BlcmF0b3IgPSAoYm9vbCBiKTsKCiAgIG9wZXJhdG9yIGJvb2woKSBjb25zdDsKCiAgIHZvaWQg
b3BlcmF0b3IgPSAoY29uc3QgZnhwUmVzQiYgYik7Cn07CgogCiAKIAoKCgoKCgoKCgoKIyA3ODgg
Ii9lZGMvd2EvYmVuZWRpY3QvZjNfaWQ2L2NzZmcvaHB1X2dudS9GZF9ob21lL2luY2x1ZGUvZnhw
LmgiCgojIDgwMSAiL2VkYy93YS9iZW5lZGljdC9mM19pZDYvY3NmZy9ocHVfZ251L0ZkX2hvbWUv
aW5jbHVkZS9meHAuaCIKCiAKCgoKCgojIDEwOTEgIi9lZGMvd2EvYmVuZWRpY3QvZjNfaWQ2L2Nz
ZmcvaHB1X2dudS9GZF9ob21lL2luY2x1ZGUvZnhwLmgiCgoKIAogCiAKCnRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE8gPSAwPgpjbGFzcyBmeHBPcGVyIHsKcHVibGljOgogICAgCiAgIGNvbnN0IGZ4
cFR5cGUqIGNvbnN0ICAgICAgICBkX2ZpcnN0X3R5cGU7CiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
KiBjb25zdCBkX2ZpcnN0X3N0b3JlOwogICBjb25zdCBmeHBUeXBlKiBjb25zdCAgICAgICAgZF9z
ZWNvbmRfdHlwZTsKICAgY29uc3QgdW5zaWduZWQgc2hvcnQqIGNvbnN0IGRfc2Vjb25kX3N0b3Jl
OwogICBjb25zdCBmeHBPcWMqIGNvbnN0ICAgICAgICAgZF9iaXRUcnVlOwogICBjb25zdCBTb2xf
b3AgICAgICAgICAgICAgICAgZF9jbWQ7CiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICAgICAgICBk
X3N0aWQ7ICAKCnB1YmxpYyA6ICAKICAgZnhwT3Blcihjb25zdCBmeHBPcGVyJiBvKToKICAgZF9m
aXJzdF90eXBlKG8uZF9maXJzdF90eXBlKSwKICAgZF9maXJzdF9zdG9yZShvLmRfZmlyc3Rfc3Rv
cmUpLAogICBkX3NlY29uZF90eXBlKG8uZF9zZWNvbmRfdHlwZSksCiAgIGRfc2Vjb25kX3N0b3Jl
KG8uZF9zZWNvbmRfc3RvcmUpLAogICBkX2JpdFRydWUoby5kX2JpdFRydWUpLAogICBkX2NtZChv
LmRfY21kKSwKICAgZF9zdGlkKG8uZF9zdGlkKQogICB7fTsKCiAgIGZ4cE9wZXIoY29uc3QgZnhw
T3BlciYgbyxjb25zdCBmeHBPcWMqIGNvbnN0IGJ0Yyk6CiAgIGRfZmlyc3RfdHlwZShvLmRfZmly
c3RfdHlwZSksCiAgIGRfZmlyc3Rfc3RvcmUoby5kX2ZpcnN0X3N0b3JlKSwKICAgZF9zZWNvbmRf
dHlwZShvLmRfc2Vjb25kX3R5cGUpLAogICBkX3NlY29uZF9zdG9yZShvLmRfc2Vjb25kX3N0b3Jl
KSwKICAgZF9iaXRUcnVlKGJ0YyksCiAgIGRfY21kKG8uZF9jbWQpLAogICBkX3N0aWQoby5kX3N0
aWQpCiAgIHt9OwoKICAgZnhwT3Blcihjb25zdCBmeHBUeXBlKiBjb25zdCB0MSxjb25zdCB1bnNp
Z25lZCBzaG9ydCogY29uc3QgczEsY29uc3QgZnhwVHlwZSogY29uc3QgdDIsY29uc3QgdW5zaWdu
ZWQgc2hvcnQqIGNvbnN0IHMyLGludCBpZCA9IDAsY29uc3QgZnhwT3FjKiBidGMgPSAwKToKICAg
ZF9maXJzdF90eXBlKHQxKSwKICAgZF9maXJzdF9zdG9yZShzMSksCiAgIGRfc2Vjb25kX3R5cGUo
dDIpLAogICBkX3NlY29uZF9zdG9yZShzMiksCiAgIGRfYml0VHJ1ZShidGMpLAogICBkX2NtZChD
TUQpLAogICBkX3N0aWQoaWQpCiAgIHt9OwoKICAgZnhwT3Blcihjb25zdCBmeHBUeXBlKiBjb25z
dCB0MSxjb25zdCB1bnNpZ25lZCBzaG9ydCogY29uc3QgczEsY29uc3QgZnhwT3FjKiBjb25zdCBi
dGMsaW50IGlkID0gMCk6CiAgIGRfZmlyc3RfdHlwZSh0MSksCiAgIGRfZmlyc3Rfc3RvcmUoczEp
LAogICBkX3NlY29uZF90eXBlKDApLAogICBkX3NlY29uZF9zdG9yZSgwKSwKICAgZF9iaXRUcnVl
KGJ0YyksCiAgIGRfY21kKENNRCksCiAgIGRfc3RpZChpZCkKICAge307CgogICBmeHBPcGVyKGNv
bnN0IGZ4cFR5cGUqIGNvbnN0IHQxLGNvbnN0IHVuc2lnbmVkIHNob3J0KiBjb25zdCBzMSxpbnQg
aWQgPSAwKToKICAgZF9maXJzdF90eXBlKHQxKSwKICAgZF9maXJzdF9zdG9yZShzMSksCiAgIGRf
c2Vjb25kX3R5cGUoMCksCiAgIGRfc2Vjb25kX3N0b3JlKDApLAogICBkX2JpdFRydWUoMCksCiAg
IGRfY21kKENNRCksCiAgIGRfc3RpZChpZCkKICAge307CgogICB+ZnhwT3BlcigpIHt9OwoKCiAg
IGZ4cE9xU3RhdCBjYWxjVEQoZnhwVHlwZSogY29uc3QmIHR5cGUsIHVuc2lnbmVkIHNob3J0KiBh
cmcpIGNvbnN0OwogICBmeHBPcVN0YXQgY2FsYyhjb25zdCBmeHBUeXBlKiB0eXBlLHVuc2lnbmVk
IHNob3J0KiBhcmcsY29uc3QgZnhwT3FjKiBiaXRUcnVlKSBjb25zdDsKICAgZnhwT3FTdGF0IGNh
bGMoY29uc3QgZnhwVHlwZSogdHlwZSx1bnNpZ25lZCBzaG9ydCogYXJnKSBjb25zdDsKCgpwcml2
YXRlOgogICAgCiAgIGZ4cE9wZXImIG9wZXJhdG9yID0oY29uc3QgZnhwT3BlciYpIHtyZXR1cm4g
KnRoaXM7fTsKcHVibGljIDoKCgoKICAgb3BlcmF0b3IgaW50ICgpIGNvbnN0OwoKICAgZnhwT3Bl
cjxTT0xfUk9VTkQsMD4gb3BlcmF0b3IgKyAoKSBjb25zdDsKICAgZnhwT3BlcjxTT0xfTUlOLDA+
ICAgb3BlcmF0b3IgLSAoKSBjb25zdDsKICAgZnhwT3BlcjxTT0xfTk9ULDA+ICAgb3BlcmF0b3Ig
fiAoKSBjb25zdDsKCiAgIGZ4cE9wZXI8U09MX0FERCwwPiBvcGVyYXRvciArIChjb25zdCBmeHBB
cmcmIHMpIGNvbnN0OwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01EMixpbnQgTzI+CiAgICAgIGZ4cE9w
ZXI8U09MX0FERCwwPiBvcGVyYXRvciArIChjb25zdCBmeHBPcGVyPENNRDIsTzI+JiBzKSBjb25z
dDsKICAgIAogICAgIGZ4cE9wZXI8U09MX0FERCAsICAwPiBvcGVyYXRvciArICAoICAgICBkb3Vi
bGUgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQUREICwgIDA+IG9wZXJhdG9yICsgICgg
ICAgIGZsb2F0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0FERCAsICAwPiBvcGVyYXRv
ciArICAoICAgICBib29sICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0FERCAsICAwPiBv
cGVyYXRvciArICAoICAgICBjaGFyICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0FERCAs
ICAwPiBvcGVyYXRvciArICAoICAgICBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNP
TF9BREQgLCAgMD4gb3BlcmF0b3IgKyAgKCAgICAgaW50ICAgcyApICBjb25zdCAgOyAgIGZ4cE9w
ZXI8U09MX0FERCAsICAwPiBvcGVyYXRvciArICAoICAgICBsb25nICAgcyApICBjb25zdCAgOyAg
IGZ4cE9wZXI8U09MX0FERCAsICAwPiBvcGVyYXRvciArICAoICAgICB1bnNpZ25lZCBjaGFyICAg
cyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0FERCAsICAwPiBvcGVyYXRvciArICAoICAgICB1
bnNpZ25lZCBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9BREQgLCAgMD4gb3Bl
cmF0b3IgKyAgKCAgICAgdW5zaWduZWQgaW50ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09M
X0FERCAsICAwPiBvcGVyYXRvciArICAoICAgICB1bnNpZ25lZCBsb25nICAgcyApICBjb25zdCAg
OyAgIGZ4cE9wZXI8U09MX0FERCAsICAwPiBvcGVyYXRvciArICAoICAgICBjb25zdCB2b2lkKiAg
IHMgKSAgY29uc3QgIDsgCiAgICAKICAgIAoKICAgZnhwT3BlcjxTT0xfU1VCLDA+IG9wZXJhdG9y
IC0gKGNvbnN0IGZ4cEFyZyYgcykgY29uc3Q7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQyLGludCBP
Mj4KICAgICAgZnhwT3BlcjxTT0xfU1VCLDA+IG9wZXJhdG9yIC0gKGNvbnN0IGZ4cE9wZXI8Q01E
MixPMj4mIHMpIGNvbnN0OwogICAgCiAgICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9y
IC0gICggICAgIGRvdWJsZSAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9TVUIgLCAgMD4g
b3BlcmF0b3IgLSAgKCAgICAgZmxvYXQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfU1VC
ICwgIDA+IG9wZXJhdG9yIC0gICggICAgIGJvb2wgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxT
T0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAgIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgZnhw
T3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAgIHNob3J0ICAgcyApICBjb25zdCAg
OyAgIGZ4cE9wZXI8U09MX1NVQiAsICAwPiBvcGVyYXRvciAtICAoICAgICBpbnQgICBzICkgIGNv
bnN0ICA7ICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAgIGxvbmcgICBz
ICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAgIHVu
c2lnbmVkIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJh
dG9yIC0gICggICAgIHVuc2lnbmVkIHNob3J0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09M
X1NVQiAsICAwPiBvcGVyYXRvciAtICAoICAgICB1bnNpZ25lZCBpbnQgICBzICkgIGNvbnN0ICA7
ICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAgIHVuc2lnbmVkIGxvbmcg
ICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAg
IGNvbnN0IHZvaWQqICAgcyApICBjb25zdCAgOyAKICAgIAogICAgCgogICBmeHBPcGVyPFNPTF9N
VUxULDA+IG9wZXJhdG9yICogKGNvbnN0IGZ4cEFyZyYgcykgY29uc3Q7CiAgIHRlbXBsYXRlPFNv
bF9vcCBDTUQyLGludCBPMj4KICAgICAgZnhwT3BlcjxTT0xfTVVMVCwwPiBvcGVyYXRvciAqIChj
b25zdCBmeHBPcGVyPENNRDIsTzI+JiBzKSBjb25zdDsKICAgIAogICAgIGZ4cE9wZXI8U09MX01V
TFQgLCAgMD4gb3BlcmF0b3IgKiAgKCAgICAgZG91YmxlICAgcyApICBjb25zdCAgOyAgIGZ4cE9w
ZXI8U09MX01VTFQgLCAgMD4gb3BlcmF0b3IgKiAgKCAgICAgZmxvYXQgICBzICkgIGNvbnN0ICA7
ICAgZnhwT3BlcjxTT0xfTVVMVCAsICAwPiBvcGVyYXRvciAqICAoICAgICBib29sICAgcyApICBj
b25zdCAgOyAgIGZ4cE9wZXI8U09MX01VTFQgLCAgMD4gb3BlcmF0b3IgKiAgKCAgICAgY2hhciAg
IHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9NVUxUICwgIDA+IG9wZXJhdG9yICogICggICAg
IHNob3J0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX01VTFQgLCAgMD4gb3BlcmF0b3Ig
KiAgKCAgICAgaW50ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX01VTFQgLCAgMD4gb3Bl
cmF0b3IgKiAgKCAgICAgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9NVUxUICwg
IDA+IG9wZXJhdG9yICogICggICAgIHVuc2lnbmVkIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgZnhw
T3BlcjxTT0xfTVVMVCAsICAwPiBvcGVyYXRvciAqICAoICAgICB1bnNpZ25lZCBzaG9ydCAgIHMg
KSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9NVUxUICwgIDA+IG9wZXJhdG9yICogICggICAgIHVu
c2lnbmVkIGludCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9NVUxUICwgIDA+IG9wZXJh
dG9yICogICggICAgIHVuc2lnbmVkIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xf
TVVMVCAsICAwPiBvcGVyYXRvciAqICAoICAgICBjb25zdCB2b2lkKiAgIHMgKSAgY29uc3QgIDsg
CiAgICAKICAgIAoKICAgZnhwT3BlcjxTT0xfTFNISUZULDA+IG9wZXJhdG9yIDw8IChjb25zdCBm
eHBBcmcmIHMpIGNvbnN0OwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01EMixpbnQgTzI+CiAgICAgIGZ4
cE9wZXI8U09MX0xTSElGVCwwPiBvcGVyYXRvciA8PCAoY29uc3QgZnhwT3BlcjxDTUQyLE8yPiYg
cykgY29uc3Q7CiAgICAKICAgICBmeHBPcGVyPFNPTF9MU0hJRlQgLCAgMD4gb3BlcmF0b3IgPDwg
ICggICAgIGRvdWJsZSAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9MU0hJRlQgLCAgMD4g
b3BlcmF0b3IgPDwgICggICAgIGZsb2F0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0xT
SElGVCAsICAwPiBvcGVyYXRvciA8PCAgKCAgICAgYm9vbCAgIHMgKSAgY29uc3QgIDsgICBmeHBP
cGVyPFNPTF9MU0hJRlQgLCAgMD4gb3BlcmF0b3IgPDwgICggICAgIGNoYXIgICBzICkgIGNvbnN0
ICA7ICAgZnhwT3BlcjxTT0xfTFNISUZUICwgIDA+IG9wZXJhdG9yIDw8ICAoICAgICBzaG9ydCAg
IHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9MU0hJRlQgLCAgMD4gb3BlcmF0b3IgPDwgICgg
ICAgIGludCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9MU0hJRlQgLCAgMD4gb3BlcmF0
b3IgPDwgICggICAgIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfTFNISUZUICwg
IDA+IG9wZXJhdG9yIDw8ICAoICAgICB1bnNpZ25lZCBjaGFyICAgcyApICBjb25zdCAgOyAgIGZ4
cE9wZXI8U09MX0xTSElGVCAsICAwPiBvcGVyYXRvciA8PCAgKCAgICAgdW5zaWduZWQgc2hvcnQg
ICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfTFNISUZUICwgIDA+IG9wZXJhdG9yIDw8ICAo
ICAgICB1bnNpZ25lZCBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfTFNISUZUICwg
IDA+IG9wZXJhdG9yIDw8ICAoICAgICB1bnNpZ25lZCBsb25nICAgcyApICBjb25zdCAgOyAgIGZ4
cE9wZXI8U09MX0xTSElGVCAsICAwPiBvcGVyYXRvciA8PCAgKCAgICAgY29uc3Qgdm9pZCogICBz
ICkgIGNvbnN0ICA7IAogICAgCiAgICAKCiAgIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBvcGVyYXRv
ciA+PiAoY29uc3QgZnhwQXJnJiBzKSBjb25zdDsKICAgdGVtcGxhdGU8U29sX29wIENNRDIsaW50
IE8yPgogICAgICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4gb3BlcmF0b3IgPj4gKGNvbnN0IGZ4cE9w
ZXI8Q01EMixPMj4mIHMpIGNvbnN0OwogICAgCiAgICAgZnhwT3BlcjxTT0xfUlNISUZUICwgIDA+
IG9wZXJhdG9yID4+ICAoICAgICBkb3VibGUgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xf
UlNISUZUICwgIDA+IG9wZXJhdG9yID4+ICAoICAgICBmbG9hdCAgIHMgKSAgY29uc3QgIDsgICBm
eHBPcGVyPFNPTF9SU0hJRlQgLCAgMD4gb3BlcmF0b3IgPj4gICggICAgIGJvb2wgICBzICkgIGNv
bnN0ICA7ICAgZnhwT3BlcjxTT0xfUlNISUZUICwgIDA+IG9wZXJhdG9yID4+ICAoICAgICBjaGFy
ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1JTSElGVCAsICAwPiBvcGVyYXRvciA+PiAg
KCAgICAgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfUlNISUZUICwgIDA+IG9w
ZXJhdG9yID4+ICAoICAgICBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfUlNISUZU
ICwgIDA+IG9wZXJhdG9yID4+ICAoICAgICBsb25nICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8
U09MX1JTSElGVCAsICAwPiBvcGVyYXRvciA+PiAgKCAgICAgdW5zaWduZWQgY2hhciAgIHMgKSAg
Y29uc3QgIDsgICBmeHBPcGVyPFNPTF9SU0hJRlQgLCAgMD4gb3BlcmF0b3IgPj4gICggICAgIHVu
c2lnbmVkIHNob3J0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1JTSElGVCAsICAwPiBv
cGVyYXRvciA+PiAgKCAgICAgdW5zaWduZWQgaW50ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8
U09MX1JTSElGVCAsICAwPiBvcGVyYXRvciA+PiAgKCAgICAgdW5zaWduZWQgbG9uZyAgIHMgKSAg
Y29uc3QgIDsgICBmeHBPcGVyPFNPTF9SU0hJRlQgLCAgMD4gb3BlcmF0b3IgPj4gICggICAgIGNv
bnN0IHZvaWQqICAgcyApICBjb25zdCAgOyAKICAgIAogICAgCgogICBmeHBPcGVyPFNPTF9ESVYs
MD4gb3BlcmF0b3IgLyAoY29uc3QgZnhwQXJnJiBzKSBjb25zdDsKICAgdGVtcGxhdGU8U29sX29w
IENNRDIsaW50IE8yPgogICAgICBmeHBPcGVyPFNPTF9ESVYsMD4gb3BlcmF0b3IgLyAoY29uc3Qg
ZnhwT3BlcjxDTUQyLE8yPiYgcykgY29uc3Q7CiAgICAKICAgICBmeHBPcGVyPFNPTF9ESVYgLCAg
MD4gb3BlcmF0b3IgLyAgKCAgICAgZG91YmxlICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09M
X0RJViAsICAwPiBvcGVyYXRvciAvICAoICAgICBmbG9hdCAgIHMgKSAgY29uc3QgIDsgICBmeHBP
cGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgYm9vbCAgIHMgKSAgY29uc3QgIDsg
ICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgY2hhciAgIHMgKSAgY29u
c3QgIDsgICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgc2hvcnQgICBz
ICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfRElWICwgIDA+IG9wZXJhdG9yIC8gICggICAgIGlu
dCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAg
ICAgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3Ig
LyAgKCAgICAgdW5zaWduZWQgY2hhciAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9ESVYg
LCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgdW5zaWduZWQgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAg
ZnhwT3BlcjxTT0xfRElWICwgIDA+IG9wZXJhdG9yIC8gICggICAgIHVuc2lnbmVkIGludCAgIHMg
KSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgdW5z
aWduZWQgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0
b3IgLyAgKCAgICAgY29uc3Qgdm9pZCogICBzICkgIGNvbnN0ICA7IAogICAgCiAgICAKCiAgIGZ4
cE9wZXI8U09MX1JFTSwwPiBvcGVyYXRvciAlIChjb25zdCBmeHBBcmcmIHMpIGNvbnN0OwogICB0
ZW1wbGF0ZTxTb2xfb3AgQ01EMixpbnQgTzI+CiAgICAgIGZ4cE9wZXI8U09MX1JFTSwwPiBvcGVy
YXRvciAlIChjb25zdCBmeHBPcGVyPENNRDIsTzI+JiBzKSBjb25zdDsKICAgIAogICAgIGZ4cE9w
ZXI8U09MX1JFTSAsICAwPiBvcGVyYXRvciAlICAoICAgICBkb3VibGUgICBzICkgIGNvbnN0ICA7
ICAgZnhwT3BlcjxTT0xfUkVNICwgIDA+IG9wZXJhdG9yICUgICggICAgIGZsb2F0ICAgcyApICBj
b25zdCAgOyAgIGZ4cE9wZXI8U09MX1JFTSAsICAwPiBvcGVyYXRvciAlICAoICAgICBib29sICAg
cyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1JFTSAsICAwPiBvcGVyYXRvciAlICAoICAgICBj
aGFyICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1JFTSAsICAwPiBvcGVyYXRvciAlICAo
ICAgICBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9SRU0gLCAgMD4gb3BlcmF0
b3IgJSAgKCAgICAgaW50ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1JFTSAsICAwPiBv
cGVyYXRvciAlICAoICAgICBsb25nICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1JFTSAs
ICAwPiBvcGVyYXRvciAlICAoICAgICB1bnNpZ25lZCBjaGFyICAgcyApICBjb25zdCAgOyAgIGZ4
cE9wZXI8U09MX1JFTSAsICAwPiBvcGVyYXRvciAlICAoICAgICB1bnNpZ25lZCBzaG9ydCAgIHMg
KSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9SRU0gLCAgMD4gb3BlcmF0b3IgJSAgKCAgICAgdW5z
aWduZWQgaW50ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1JFTSAsICAwPiBvcGVyYXRv
ciAlICAoICAgICB1bnNpZ25lZCBsb25nICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1JF
TSAsICAwPiBvcGVyYXRvciAlICAoICAgICBjb25zdCB2b2lkKiAgIHMgKSAgY29uc3QgIDsgCiAg
ICAKICAgIAoKICAgZnhwT3BlcjxTT0xfQU5ELDA+IG9wZXJhdG9yICYgKGNvbnN0IGZ4cEFyZyYg
cykgY29uc3Q7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQyLGludCBPMj4KICAgICAgZnhwT3BlcjxT
T0xfQU5ELDA+IG9wZXJhdG9yICYgKGNvbnN0IGZ4cE9wZXI8Q01EMixPMj4mIHMpIGNvbnN0Owog
ICAgCiAgICAgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIGRvdWJsZSAg
IHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9BTkQgLCAgMD4gb3BlcmF0b3IgJiAgKCAgICAg
ZmxvYXQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYg
ICggICAgIGJvb2wgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJh
dG9yICYgICggICAgIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQU5EICwgIDA+
IG9wZXJhdG9yICYgICggICAgIHNob3J0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0FO
RCAsICAwPiBvcGVyYXRvciAmICAoICAgICBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxT
T0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhw
T3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIHVuc2lnbmVkIGNoYXIgICBzICkg
IGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIHVuc2ln
bmVkIHNob3J0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0FORCAsICAwPiBvcGVyYXRv
ciAmICAoICAgICB1bnNpZ25lZCBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQU5E
ICwgIDA+IG9wZXJhdG9yICYgICggICAgIHVuc2lnbmVkIGxvbmcgICBzICkgIGNvbnN0ICA7ICAg
ZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIGNvbnN0IHZvaWQqICAgcyAp
ICBjb25zdCAgOyAKICAgIAogICAgCgogICBmeHBPcGVyPFNPTF9PUiwwPiBvcGVyYXRvciB8IChj
b25zdCBmeHBBcmcmIHMpIGNvbnN0OwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01EMixpbnQgTzI+CiAg
ICAgIGZ4cE9wZXI8U09MX09SLDA+IG9wZXJhdG9yIHwgKGNvbnN0IGZ4cE9wZXI8Q01EMixPMj4m
IHMpIGNvbnN0OwogICAgCiAgICAgZnhwT3BlcjxTT0xfT1IgLCAgMD4gb3BlcmF0b3IgfCAgKCAg
ICAgZG91YmxlICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX09SICwgIDA+IG9wZXJhdG9y
IHwgICggICAgIGZsb2F0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX09SICwgIDA+IG9w
ZXJhdG9yIHwgICggICAgIGJvb2wgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfT1IgLCAg
MD4gb3BlcmF0b3IgfCAgKCAgICAgY2hhciAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9P
UiAsICAwPiBvcGVyYXRvciB8ICAoICAgICBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVy
PFNPTF9PUiAsICAwPiBvcGVyYXRvciB8ICAoICAgICBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhw
T3BlcjxTT0xfT1IgLCAgMD4gb3BlcmF0b3IgfCAgKCAgICAgbG9uZyAgIHMgKSAgY29uc3QgIDsg
ICBmeHBPcGVyPFNPTF9PUiAsICAwPiBvcGVyYXRvciB8ICAoICAgICB1bnNpZ25lZCBjaGFyICAg
cyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX09SICwgIDA+IG9wZXJhdG9yIHwgICggICAgIHVu
c2lnbmVkIHNob3J0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX09SICwgIDA+IG9wZXJh
dG9yIHwgICggICAgIHVuc2lnbmVkIGludCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9P
UiAsICAwPiBvcGVyYXRvciB8ICAoICAgICB1bnNpZ25lZCBsb25nICAgcyApICBjb25zdCAgOyAg
IGZ4cE9wZXI8U09MX09SICwgIDA+IG9wZXJhdG9yIHwgICggICAgIGNvbnN0IHZvaWQqICAgcyAp
ICBjb25zdCAgOyAKICAgIAogICAgCgogICBmeHBPcGVyPFNPTF9FWE9SLDA+IG9wZXJhdG9yIF4g
KGNvbnN0IGZ4cEFyZyYgcykgY29uc3Q7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQyLGludCBPMj4K
ICAgICAgZnhwT3BlcjxTT0xfRVhPUiwwPiBvcGVyYXRvciBeIChjb25zdCBmeHBPcGVyPENNRDIs
TzI+JiBzKSBjb25zdDsKICAgIAogICAgIGZ4cE9wZXI8U09MX0VYT1IgLCAgMD4gb3BlcmF0b3Ig
XiAgKCAgICAgZG91YmxlICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0VYT1IgLCAgMD4g
b3BlcmF0b3IgXiAgKCAgICAgZmxvYXQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfRVhP
UiAsICAwPiBvcGVyYXRvciBeICAoICAgICBib29sICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8
U09MX0VYT1IgLCAgMD4gb3BlcmF0b3IgXiAgKCAgICAgY2hhciAgIHMgKSAgY29uc3QgIDsgICBm
eHBPcGVyPFNPTF9FWE9SICwgIDA+IG9wZXJhdG9yIF4gICggICAgIHNob3J0ICAgcyApICBjb25z
dCAgOyAgIGZ4cE9wZXI8U09MX0VYT1IgLCAgMD4gb3BlcmF0b3IgXiAgKCAgICAgaW50ICAgcyAp
ICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0VYT1IgLCAgMD4gb3BlcmF0b3IgXiAgKCAgICAgbG9u
ZyAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9FWE9SICwgIDA+IG9wZXJhdG9yIF4gICgg
ICAgIHVuc2lnbmVkIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfRVhPUiAsICAw
PiBvcGVyYXRvciBeICAoICAgICB1bnNpZ25lZCBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBmeHBP
cGVyPFNPTF9FWE9SICwgIDA+IG9wZXJhdG9yIF4gICggICAgIHVuc2lnbmVkIGludCAgIHMgKSAg
Y29uc3QgIDsgICBmeHBPcGVyPFNPTF9FWE9SICwgIDA+IG9wZXJhdG9yIF4gICggICAgIHVuc2ln
bmVkIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfRVhPUiAsICAwPiBvcGVyYXRv
ciBeICAoICAgICBjb25zdCB2b2lkKiAgIHMgKSAgY29uc3QgIDsgCiAgICAKICAgIAoKICAgZnhw
T3BlcjxTT0xfQklUTUVSR0UsMD4gYXBwZW5kIChjb25zdCBmeHBBcmcmIHMpIGNvbnN0OwogICB0
ZW1wbGF0ZTxTb2xfb3AgQ01EMixpbnQgTzI+CiAgICAgIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+
IGFwcGVuZCAoY29uc3QgZnhwT3BlcjxDTUQyLE8yPiYgcykgY29uc3Q7CiAgICAKICAgICBmeHBP
cGVyPFNPTF9CSVRNRVJHRSAsICAwPiBhcHBlbmQgICggICAgIGRvdWJsZSAgIHMgKSAgY29uc3Qg
IDsgICBmeHBPcGVyPFNPTF9CSVRNRVJHRSAsICAwPiBhcHBlbmQgICggICAgIGZsb2F0ICAgcyAp
ICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0JJVE1FUkdFICwgIDA+IGFwcGVuZCAgKCAgICAgYm9v
bCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9CSVRNRVJHRSAsICAwPiBhcHBlbmQgICgg
ICAgIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQklUTUVSR0UgLCAgMD4gYXBw
ZW5kICAoICAgICBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9CSVRNRVJHRSAs
ICAwPiBhcHBlbmQgICggICAgIGludCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9CSVRN
RVJHRSAsICAwPiBhcHBlbmQgICggICAgIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxT
T0xfQklUTUVSR0UgLCAgMD4gYXBwZW5kICAoICAgICB1bnNpZ25lZCBjaGFyICAgcyApICBjb25z
dCAgOyAgIGZ4cE9wZXI8U09MX0JJVE1FUkdFICwgIDA+IGFwcGVuZCAgKCAgICAgdW5zaWduZWQg
c2hvcnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQklUTUVSR0UgLCAgMD4gYXBwZW5k
ICAoICAgICB1bnNpZ25lZCBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQklUTUVS
R0UgLCAgMD4gYXBwZW5kICAoICAgICB1bnNpZ25lZCBsb25nICAgcyApICBjb25zdCAgOyAgIGZ4
cE9wZXI8U09MX0JJVE1FUkdFICwgIDA+IGFwcGVuZCAgKCAgICAgY29uc3Qgdm9pZCogICBzICkg
IGNvbnN0ICA7IAogICAgCiAgICAKCiAgIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgZnhwQXJnJiBz
KSBjb25zdDsKICAgdGVtcGxhdGU8U29sX29wIENNRDIsaW50IE8yPgogICAgICBib29sIG9wZXJh
dG9yIDwgKGNvbnN0IGZ4cE9wZXI8Q01EMixPMj4mIHMpIGNvbnN0OwogICAgCiAgICAgYm9vbCBv
cGVyYXRvciA8ICAoICAgICBkb3VibGUgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA8
ICAoICAgICBmbG9hdCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yIDwgICggICAgIGJv
b2wgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA8ICAoICAgICBjaGFyICAgcyApICBj
b25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPCAgKCAgICAgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAg
Ym9vbCBvcGVyYXRvciA8ICAoICAgICBpbnQgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRv
ciA8ICAoICAgICBsb25nICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPCAgKCAgICAg
dW5zaWduZWQgY2hhciAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yIDwgICggICAgIHVu
c2lnbmVkIHNob3J0ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPCAgKCAgICAgdW5z
aWduZWQgaW50ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPCAgKCAgICAgdW5zaWdu
ZWQgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yIDwgICggICAgIGNvbnN0IHZv
aWQqICAgcyApICBjb25zdCAgOyAKICAgIAogICAgCgogICBib29sIG9wZXJhdG9yIDw9IChjb25z
dCBmeHBBcmcmIHMpIGNvbnN0OwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01EMixpbnQgTzI+CiAgICAg
IGJvb2wgb3BlcmF0b3IgPD0gKGNvbnN0IGZ4cE9wZXI8Q01EMixPMj4mIHMpIGNvbnN0OwogICAg
CiAgICAgYm9vbCBvcGVyYXRvciA8PSAgKCAgICAgZG91YmxlICAgcyApICBjb25zdCAgOyAgIGJv
b2wgb3BlcmF0b3IgPD0gICggICAgIGZsb2F0ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0
b3IgPD0gICggICAgIGJvb2wgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA8PSAgKCAg
ICAgY2hhciAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yIDw9ICAoICAgICBzaG9ydCAg
IHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yIDw9ICAoICAgICBpbnQgICBzICkgIGNvbnN0
ICA7ICAgYm9vbCBvcGVyYXRvciA8PSAgKCAgICAgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBib29s
IG9wZXJhdG9yIDw9ICAoICAgICB1bnNpZ25lZCBjaGFyICAgcyApICBjb25zdCAgOyAgIGJvb2wg
b3BlcmF0b3IgPD0gICggICAgIHVuc2lnbmVkIHNob3J0ICAgcyApICBjb25zdCAgOyAgIGJvb2wg
b3BlcmF0b3IgPD0gICggICAgIHVuc2lnbmVkIGludCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9w
ZXJhdG9yIDw9ICAoICAgICB1bnNpZ25lZCBsb25nICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3Bl
cmF0b3IgPD0gICggICAgIGNvbnN0IHZvaWQqICAgcyApICBjb25zdCAgOyAKICAgIAogICAgCgog
ICBib29sIG9wZXJhdG9yID09IChjb25zdCBmeHBBcmcmIHMpIGNvbnN0OwogICB0ZW1wbGF0ZTxT
b2xfb3AgQ01EMixpbnQgTzI+CiAgICAgIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IGZ4cE9wZXI8
Q01EMixPMj4mIHMpIGNvbnN0OwogICAgCiAgICAgYm9vbCBvcGVyYXRvciA9PSAgKCAgICAgZG91
YmxlICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPT0gICggICAgIGZsb2F0ICAgcyAp
ICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPT0gICggICAgIGJvb2wgICBzICkgIGNvbnN0ICA7
ICAgYm9vbCBvcGVyYXRvciA9PSAgKCAgICAgY2hhciAgIHMgKSAgY29uc3QgIDsgICBib29sIG9w
ZXJhdG9yID09ICAoICAgICBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID09
ICAoICAgICBpbnQgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA9PSAgKCAgICAgbG9u
ZyAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID09ICAoICAgICB1bnNpZ25lZCBjaGFy
ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPT0gICggICAgIHVuc2lnbmVkIHNob3J0
ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPT0gICggICAgIHVuc2lnbmVkIGludCAg
IHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID09ICAoICAgICB1bnNpZ25lZCBsb25nICAg
cyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPT0gICggICAgIGNvbnN0IHZvaWQqICAgcyAp
ICBjb25zdCAgOyAKICAgIAogICAgCgogICBib29sIG9wZXJhdG9yICE9IChjb25zdCBmeHBBcmcm
IHMpIGNvbnN0OwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01EMixpbnQgTzI+CiAgICAgIGJvb2wgb3Bl
cmF0b3IgIT0gKGNvbnN0IGZ4cE9wZXI8Q01EMixPMj4mIHMpIGNvbnN0OwogICAgCiAgICAgYm9v
bCBvcGVyYXRvciAhPSAgKCAgICAgZG91YmxlICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0
b3IgIT0gICggICAgIGZsb2F0ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgIT0gICgg
ICAgIGJvb2wgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciAhPSAgKCAgICAgY2hhciAg
IHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yICE9ICAoICAgICBzaG9ydCAgIHMgKSAgY29u
c3QgIDsgICBib29sIG9wZXJhdG9yICE9ICAoICAgICBpbnQgICBzICkgIGNvbnN0ICA7ICAgYm9v
bCBvcGVyYXRvciAhPSAgKCAgICAgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9y
ICE9ICAoICAgICB1bnNpZ25lZCBjaGFyICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3Ig
IT0gICggICAgIHVuc2lnbmVkIHNob3J0ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3Ig
IT0gICggICAgIHVuc2lnbmVkIGludCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yICE9
ICAoICAgICB1bnNpZ25lZCBsb25nICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgIT0g
ICggICAgIGNvbnN0IHZvaWQqICAgcyApICBjb25zdCAgOyAKICAgIAogICAgCgogICBib29sIG9w
ZXJhdG9yID4gKGNvbnN0IGZ4cEFyZyYgcykgY29uc3Q7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQy
LGludCBPMj4KICAgICAgYm9vbCBvcGVyYXRvciA+IChjb25zdCBmeHBPcGVyPENNRDIsTzI+JiBz
KSBjb25zdDsKICAgIAogICAgIGJvb2wgb3BlcmF0b3IgPiAgKCAgICAgZG91YmxlICAgcyApICBj
b25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPiAgKCAgICAgZmxvYXQgICBzICkgIGNvbnN0ICA7ICAg
Ym9vbCBvcGVyYXRvciA+ICAoICAgICBib29sICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0
b3IgPiAgKCAgICAgY2hhciAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID4gICggICAg
IHNob3J0ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPiAgKCAgICAgaW50ICAgcyAp
ICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPiAgKCAgICAgbG9uZyAgIHMgKSAgY29uc3QgIDsg
ICBib29sIG9wZXJhdG9yID4gICggICAgIHVuc2lnbmVkIGNoYXIgICBzICkgIGNvbnN0ICA7ICAg
Ym9vbCBvcGVyYXRvciA+ICAoICAgICB1bnNpZ25lZCBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBi
b29sIG9wZXJhdG9yID4gICggICAgIHVuc2lnbmVkIGludCAgIHMgKSAgY29uc3QgIDsgICBib29s
IG9wZXJhdG9yID4gICggICAgIHVuc2lnbmVkIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBv
cGVyYXRvciA+ICAoICAgICBjb25zdCB2b2lkKiAgIHMgKSAgY29uc3QgIDsgCiAgICAKICAgIAoK
ICAgYm9vbCBvcGVyYXRvciA+PSAoY29uc3QgZnhwQXJnJiBzKSBjb25zdDsKICAgdGVtcGxhdGU8
U29sX29wIENNRDIsaW50IE8yPgogICAgICBib29sIG9wZXJhdG9yID49IChjb25zdCBmeHBPcGVy
PENNRDIsTzI+JiBzKSBjb25zdDsKICAgIAogICAgIGJvb2wgb3BlcmF0b3IgPj0gICggICAgIGRv
dWJsZSAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID49ICAoICAgICBmbG9hdCAgIHMg
KSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID49ICAoICAgICBib29sICAgcyApICBjb25zdCAg
OyAgIGJvb2wgb3BlcmF0b3IgPj0gICggICAgIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBv
cGVyYXRvciA+PSAgKCAgICAgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA+
PSAgKCAgICAgaW50ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPj0gICggICAgIGxv
bmcgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA+PSAgKCAgICAgdW5zaWduZWQgY2hh
ciAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID49ICAoICAgICB1bnNpZ25lZCBzaG9y
dCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID49ICAoICAgICB1bnNpZ25lZCBpbnQg
ICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA+PSAgKCAgICAgdW5zaWduZWQgbG9uZyAg
IHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID49ICAoICAgICBjb25zdCB2b2lkKiAgIHMg
KSAgY29uc3QgIDsgCiAgICAKICAgIAoKCn07CgoKIyAxMzQxICIvZWRjL3dhL2JlbmVkaWN0L2Yz
X2lkNi9jc2ZnL2hwdV9nbnUvRmRfaG9tZS9pbmNsdWRlL2Z4cC5oIgoKCiAKIAogCmNsYXNzIGZ4
cEFyZyB7CiAKCnByb3RlY3RlZDoKcHVibGljOgogICAgCiAgIGNvbnN0IGZ4cFR5cGUqICBkX3R5
cGU7CiAgIHVuc2lnbmVkIHNob3J0KiBkX3N0b3JlOwoKcHVibGljOgogICBmeHBTdGF0aXN0aWNz
KiBkX2NvbGxlY3Rvcl9wOwogICAgCiAgICAKCiAgIHZvaWQgcmVhZCgpIGNvbnN0OwogICAgCgog
CiAgICAKICAgZnhwQXJnKCk7CiAgICAKICAgZnhwQXJnKHVuc2lnbmVkIHNob3J0KiBhcmcpOwpw
dWJsaWM6CiAgICAKICAgZnhwQXJnKGNvbnN0IGZ4cEFyZyYgbyk7CiAgIH5meHBBcmcoKTsKCgog
ICBjb25zdCBmeHBUeXBlKiB0eXBlKCkgY29uc3Q7CiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBz
dG9yZSgpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBzaG9ydCogc3RvcmUoKTsKICAgCiAgIHZv
aWQgYXNzaWduKGRvdWJsZSBkLGNvbnN0IGZ4cE9xYyogYnRjKTsKICAgdm9pZCBhc3NpZ24oZG91
YmxlIGQsY29uc3QgZnhwT3FjJiBidGMpOwogICB2b2lkIGFzc2lnbihkb3VibGUgZCk7CiAgIHZv
aWQgYXNzaWduKGxvbmcgbik7CiAgIHZvaWQgYXNzaWduKHVuc2lnbmVkIGxvbmcgbik7CiAgIGRv
dWJsZSB0b19kKCkgY29uc3Q7CgogICBib29sICAgdG9fYm9vbCgpIGNvbnN0OwoKcHVibGljOiAg
CgogICBpbnQgbWluV2lkdGgoKSAgICAgICAgICBjb25zdDsKICAgaW50IGFycmF5U2l6ZSgpICAg
ICAgICAgY29uc3Q7CiAgIGludCB3aWR0aCgpICAgICAgICAgICAgIGNvbnN0OwogICBpbnQgcHJl
Y2lzaW9uKCkgICAgICAgICBjb25zdDsKICAgU29sX2Jhc2VUeXBlIGJhc2VUeXBlKCkgY29uc3Q7
CiAgIGludCBuck5vblplcm9CaXRzQ3NkKCkgIGNvbnN0OwogICBpbnQgbnJOb25aZXJvQml0c1Nt
KCkgICBjb25zdDsKICAgaW50IG5yTm9uWmVyb0JpdHMyc0MoKSAgY29uc3Q7CgogICBzdGF0aWMg
Y29uc3QgZnhwT3FTdGF0KiBlbXB0eURldGVjdCgpOwoKIAoKICAgZG91YmxlIGQoKSBjb25zdDsK
ICAgbG9uZyBsKCkgY29uc3Q7CiAgIHVuc2lnbmVkIGxvbmcgdWwoKSBjb25zdDsKCnB1YmxpYzog
IAoKICAgY29uc3QgY2hhciogZGVjKCkgICAgIGNvbnN0OwogICBjb25zdCBjaGFyKiBjc2QoKSAg
ICAgY29uc3Q7CiAgIGNvbnN0IGNoYXIqIGJpbigpICAgICBjb25zdDsKICAgY29uc3QgY2hhciog
YmluU20oKSAgIGNvbnN0OwogICBjb25zdCBjaGFyKiBicEJpbigpICAgY29uc3Q7CiAgIGNvbnN0
IGNoYXIqIGJwQmluU20oKSBjb25zdDsKICAgY29uc3QgY2hhciogb2N0KCkgICAgIGNvbnN0Owog
ICBjb25zdCBjaGFyKiBvY3RTbSgpICAgY29uc3Q7CiAgIGNvbnN0IGNoYXIqIGJwT2N0KCkgICBj
b25zdDsKICAgY29uc3QgY2hhciogYnBPY3RTbSgpIGNvbnN0OwogICBjb25zdCBjaGFyKiBoZXgo
KSAgICAgY29uc3Q7CiAgIGNvbnN0IGNoYXIqIGhleFNtKCkgICBjb25zdDsKICAgY29uc3QgY2hh
ciogYnBIZXgoKSAgIGNvbnN0OwogICBjb25zdCBjaGFyKiBicEhleFNtKCkgY29uc3Q7CiAgIGNv
bnN0IGNoYXIqIGRiZygpICAgICBjb25zdDsKICAgCiAgIGNvbnN0IGNoYXIqIHRvX2RlYygpICBj
b25zdDsKICAgY29uc3QgY2hhciogdG9fYmluKCkgIGNvbnN0OwogICBjb25zdCBjaGFyKiB0b19v
Y3QoKSAgY29uc3Q7CiAgIGNvbnN0IGNoYXIqIHRvX2hleCgpICBjb25zdDsKICAgY29uc3QgY2hh
ciogdG9fc3RyaW5nKHNjX251bXJlcCBudW1yZXAgPSBTQ19ERUMsc2NfZm10IGZtdCA9IFNDX0Yp
IGNvbnN0OwogICBjb25zdCBjaGFyKiB0b19zdHJpbmcoc2NfZm10IGZtdCkgY29uc3Q7CgoKICAg
ZG91YmxlIGRibCgpIGNvbnN0OwoKICAgaW50ICAgICAgICAgICAgdG9faW50KCkgY29uc3Q7CiAg
IHVuc2lnbmVkIGludCAgIHRvX3VpbnQoKSBjb25zdDsKICAgbG9uZyAgICAgICAgICAgdG9fbG9u
ZygpIGNvbnN0OwogICB1bnNpZ25lZCBsb25nICB0b191bG9uZygpIGNvbnN0OwogICBkb3VibGUg
ICAgICAgICB0b19kb3VibGUoKSBjb25zdDsKICAgc2hvcnQgICAgICAgICAgdG9fc2hvcnQoKSBj
b25zdDsKICAgdW5zaWduZWQgc2hvcnQgdG9fdXNob3J0KCkgY29uc3Q7CiAgIGZsb2F0ICAgICAg
ICAgIHRvX2Zsb2F0KCkgY29uc3Q7CgogICBmeHBPcGVyPFNPTF9ST1VORCwwPiBvcGVyYXRvciAr
KCkgY29uc3QgOwogICBmeHBPcGVyPFNPTF9NSU4sMD4gICBvcGVyYXRvciAtKCkgY29uc3QgOwog
ICBmeHBPcGVyPFNPTF9OT1QsMD4gICBvcGVyYXRvciB+KCkgY29uc3QgOwoKICAgY29uc3QgZnhw
UmVzQiBvcGVyYXRvcltdIChpbnQgZnJvbSkgICAgICAgICBjb25zdDsKICAgY29uc3QgZnhwUmVz
QiBiaXQoaW50IGZyb20pICAgICAgICAgICAgICAgICBjb25zdDsKICAgY29uc3QgZnhwUmVzICBv
cGVyYXRvcigpICgpIGNvbnN0OwogICBjb25zdCBmeHBSZXMgIG9wZXJhdG9yKCkgKGludCBmcm9t
LCBpbnQgdG8pIGNvbnN0OwogICBjb25zdCBmeHBSZXMgIHNsaWNlKGludCBmcm9tLCBpbnQgdG8p
ICAgICAgIGNvbnN0OwogICBmeHBSZXNCIG9wZXJhdG9yW10gKGludCBmcm9tKTsKICAgZnhwUmVz
QiBiaXQoaW50IGZyb20pOwogICBmeHBSZXMgIG9wZXJhdG9yKCkgKCk7CiAgIGZ4cFJlcyAgb3Bl
cmF0b3IoKSAoaW50IGZyb20sIGludCB0byk7CiAgIGZ4cFJlcyAgc2xpY2UoaW50IGZyb20sIGlu
dCB0byk7CgogICBmeHBPcGVyPFNPTF9ST1VORCwwPiBjYXN0KCkgY29uc3Q7CgogICBmeHBPcGVy
PFNPTF9BREQsMD4gb3BlcmF0b3IgKyAoY29uc3QgZnhwQXJnJiBzKSBjb25zdDsKCiAgIHRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+CiAgICAgIGZ4cE9wZXI8U09MX0FERCwwPiBvcGVyYXRvciAr
IChjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgY29uc3Q7CgogICAgCiAgICAgZnhwT3BlcjxTT0xf
QUREICwgIDA+IG9wZXJhdG9yICsgICggICAgIGRvdWJsZSAgIHMgKSAgY29uc3QgIDsgICBmeHBP
cGVyPFNPTF9BREQgLCAgMD4gb3BlcmF0b3IgKyAgKCAgICAgZmxvYXQgICBzICkgIGNvbnN0ICA7
ICAgZnhwT3BlcjxTT0xfQUREICwgIDA+IG9wZXJhdG9yICsgICggICAgIGJvb2wgICBzICkgIGNv
bnN0ICA7ICAgZnhwT3BlcjxTT0xfQUREICwgIDA+IG9wZXJhdG9yICsgICggICAgIGNoYXIgICBz
ICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQUREICwgIDA+IG9wZXJhdG9yICsgICggICAgIHNo
b3J0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0FERCAsICAwPiBvcGVyYXRvciArICAo
ICAgICBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQUREICwgIDA+IG9wZXJhdG9y
ICsgICggICAgIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQUREICwgIDA+IG9w
ZXJhdG9yICsgICggICAgIHVuc2lnbmVkIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxT
T0xfQUREICwgIDA+IG9wZXJhdG9yICsgICggICAgIHVuc2lnbmVkIHNob3J0ICAgcyApICBjb25z
dCAgOyAgIGZ4cE9wZXI8U09MX0FERCAsICAwPiBvcGVyYXRvciArICAoICAgICB1bnNpZ25lZCBp
bnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQUREICwgIDA+IG9wZXJhdG9yICsgICgg
ICAgIHVuc2lnbmVkIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQUREICwgIDA+
IG9wZXJhdG9yICsgICggICAgIGNvbnN0IHZvaWQqICAgcyApICBjb25zdCAgOyAKICAgIAogICAg
IGZyaWVuZCBmeHBPcGVyPFNPTF9BREQgLCAgMD4gb3BlcmF0b3IgKyAgKCAgICAgZG91YmxlICAg
cCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9BREQgLCAgMD4g
b3BlcmF0b3IgKyAgKCAgICAgZmxvYXQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJp
ZW5kIGZ4cE9wZXI8U09MX0FERCAsICAwPiBvcGVyYXRvciArICAoICAgICBib29sICAgcCAsICBj
b25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9BREQgLCAgMD4gb3BlcmF0
b3IgKyAgKCAgICAgY2hhciAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhw
T3BlcjxTT0xfQUREICwgIDA+IG9wZXJhdG9yICsgICggICAgIHNob3J0ICAgcCAsICBjb25zdCBm
eHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9BREQgLCAgMD4gb3BlcmF0b3IgKyAg
KCAgICAgaW50ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNP
TF9BREQgLCAgMD4gb3BlcmF0b3IgKyAgKCAgICAgbG9uZyAgIHAgLCAgY29uc3QgZnhwQXJnJiBz
ICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfQUREICwgIDA+IG9wZXJhdG9yICsgICggICAgIHVu
c2lnbmVkIGNoYXIgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8
U09MX0FERCAsICAwPiBvcGVyYXRvciArICAoICAgICB1bnNpZ25lZCBzaG9ydCAgIHAgLCAgY29u
c3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfQUREICwgIDA+IG9wZXJhdG9y
ICsgICggICAgIHVuc2lnbmVkIGludCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmll
bmQgZnhwT3BlcjxTT0xfQUREICwgIDA+IG9wZXJhdG9yICsgICggICAgIHVuc2lnbmVkIGxvbmcg
ICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0FERCAsICAw
PiBvcGVyYXRvciArICAoICAgICBjb25zdCB2b2lkKiAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkg
IDsgCgogICBmeHBPcGVyPFNPTF9TVUIsMD4gb3BlcmF0b3IgLSAoY29uc3QgZnhwQXJnJiBzKSBj
b25zdDsKCiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+CiAgICAgIGZ4cE9wZXI8U09MX1NV
QiwwPiBvcGVyYXRvciAtIChjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgY29uc3Q7CgogICAgCiAg
ICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAgIGRvdWJsZSAgIHMgKSAg
Y29uc3QgIDsgICBmeHBPcGVyPFNPTF9TVUIgLCAgMD4gb3BlcmF0b3IgLSAgKCAgICAgZmxvYXQg
ICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAg
IGJvb2wgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0g
ICggICAgIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJh
dG9yIC0gICggICAgIHNob3J0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1NVQiAsICAw
PiBvcGVyYXRvciAtICAoICAgICBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfU1VC
ICwgIDA+IG9wZXJhdG9yIC0gICggICAgIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxT
T0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAgIHVuc2lnbmVkIGNoYXIgICBzICkgIGNvbnN0
ICA7ICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAgIHVuc2lnbmVkIHNo
b3J0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1NVQiAsICAwPiBvcGVyYXRvciAtICAo
ICAgICB1bnNpZ25lZCBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfU1VCICwgIDA+
IG9wZXJhdG9yIC0gICggICAgIHVuc2lnbmVkIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3Bl
cjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAgIGNvbnN0IHZvaWQqICAgcyApICBjb25z
dCAgOyAKICAgIAogICAgIGZyaWVuZCBmeHBPcGVyPFNPTF9TVUIgLCAgMD4gb3BlcmF0b3IgLSAg
KCAgICAgZG91YmxlICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVy
PFNPTF9TVUIgLCAgMD4gb3BlcmF0b3IgLSAgKCAgICAgZmxvYXQgICBwICwgIGNvbnN0IGZ4cEFy
ZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX1NVQiAsICAwPiBvcGVyYXRvciAtICAoICAg
ICBib29sICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9T
VUIgLCAgMD4gb3BlcmF0b3IgLSAgKCAgICAgY2hhciAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkg
IDsgICBmcmllbmQgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAgIHNob3J0
ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9TVUIgLCAg
MD4gb3BlcmF0b3IgLSAgKCAgICAgaW50ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZy
aWVuZCBmeHBPcGVyPFNPTF9TVUIgLCAgMD4gb3BlcmF0b3IgLSAgKCAgICAgbG9uZyAgIHAgLCAg
Y29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJh
dG9yIC0gICggICAgIHVuc2lnbmVkIGNoYXIgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAg
ZnJpZW5kIGZ4cE9wZXI8U09MX1NVQiAsICAwPiBvcGVyYXRvciAtICAoICAgICB1bnNpZ25lZCBz
aG9ydCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfU1VC
ICwgIDA+IG9wZXJhdG9yIC0gICggICAgIHVuc2lnbmVkIGludCAgIHAgLCAgY29uc3QgZnhwQXJn
JiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfU1VCICwgIDA+IG9wZXJhdG9yIC0gICggICAg
IHVuc2lnbmVkIGxvbmcgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9w
ZXI8U09MX1NVQiAsICAwPiBvcGVyYXRvciAtICAoICAgICBjb25zdCB2b2lkKiAgIHAgLCAgY29u
c3QgZnhwQXJnJiBzICkgIDsgCgogICBmeHBPcGVyPFNPTF9NVUxULDA+IG9wZXJhdG9yICogKGNv
bnN0IGZ4cEFyZyYgcykgY29uc3Q7CgogICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPgogICAg
ICBmeHBPcGVyPFNPTF9NVUxULDA+IG9wZXJhdG9yICogKGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBz
KSBjb25zdDsKCiAgICAKICAgICBmeHBPcGVyPFNPTF9NVUxUICwgIDA+IG9wZXJhdG9yICogICgg
ICAgIGRvdWJsZSAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9NVUxUICwgIDA+IG9wZXJh
dG9yICogICggICAgIGZsb2F0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX01VTFQgLCAg
MD4gb3BlcmF0b3IgKiAgKCAgICAgYm9vbCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9N
VUxUICwgIDA+IG9wZXJhdG9yICogICggICAgIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgZnhwT3Bl
cjxTT0xfTVVMVCAsICAwPiBvcGVyYXRvciAqICAoICAgICBzaG9ydCAgIHMgKSAgY29uc3QgIDsg
ICBmeHBPcGVyPFNPTF9NVUxUICwgIDA+IG9wZXJhdG9yICogICggICAgIGludCAgIHMgKSAgY29u
c3QgIDsgICBmeHBPcGVyPFNPTF9NVUxUICwgIDA+IG9wZXJhdG9yICogICggICAgIGxvbmcgICBz
ICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfTVVMVCAsICAwPiBvcGVyYXRvciAqICAoICAgICB1
bnNpZ25lZCBjaGFyICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX01VTFQgLCAgMD4gb3Bl
cmF0b3IgKiAgKCAgICAgdW5zaWduZWQgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxT
T0xfTVVMVCAsICAwPiBvcGVyYXRvciAqICAoICAgICB1bnNpZ25lZCBpbnQgICBzICkgIGNvbnN0
ICA7ICAgZnhwT3BlcjxTT0xfTVVMVCAsICAwPiBvcGVyYXRvciAqICAoICAgICB1bnNpZ25lZCBs
b25nICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX01VTFQgLCAgMD4gb3BlcmF0b3IgKiAg
KCAgICAgY29uc3Qgdm9pZCogICBzICkgIGNvbnN0ICA7IAogICAgCiAgICAgZnJpZW5kIGZ4cE9w
ZXI8U09MX01VTFQgLCAgMD4gb3BlcmF0b3IgKiAgKCAgICAgZG91YmxlICAgcCAsICBjb25zdCBm
eHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9NVUxUICwgIDA+IG9wZXJhdG9yICog
ICggICAgIGZsb2F0ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVy
PFNPTF9NVUxUICwgIDA+IG9wZXJhdG9yICogICggICAgIGJvb2wgICBwICwgIGNvbnN0IGZ4cEFy
ZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX01VTFQgLCAgMD4gb3BlcmF0b3IgKiAgKCAg
ICAgY2hhciAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xf
TVVMVCAsICAwPiBvcGVyYXRvciAqICAoICAgICBzaG9ydCAgIHAgLCAgY29uc3QgZnhwQXJnJiBz
ICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfTVVMVCAsICAwPiBvcGVyYXRvciAqICAoICAgICBp
bnQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX01VTFQg
LCAgMD4gb3BlcmF0b3IgKiAgKCAgICAgbG9uZyAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsg
ICBmcmllbmQgZnhwT3BlcjxTT0xfTVVMVCAsICAwPiBvcGVyYXRvciAqICAoICAgICB1bnNpZ25l
ZCBjaGFyICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9N
VUxUICwgIDA+IG9wZXJhdG9yICogICggICAgIHVuc2lnbmVkIHNob3J0ICAgcCAsICBjb25zdCBm
eHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9NVUxUICwgIDA+IG9wZXJhdG9yICog
ICggICAgIHVuc2lnbmVkIGludCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQg
ZnhwT3BlcjxTT0xfTVVMVCAsICAwPiBvcGVyYXRvciAqICAoICAgICB1bnNpZ25lZCBsb25nICAg
cCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9NVUxUICwgIDA+
IG9wZXJhdG9yICogICggICAgIGNvbnN0IHZvaWQqICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAg
OyAKCiAgIGZ4cE9wZXI8U09MX0RJViwwPiBvcGVyYXRvciAvIChjb25zdCBmeHBBcmcmIHMpIGNv
bnN0OwoKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4KICAgICAgZnhwT3BlcjxTT0xfRElW
LDA+IG9wZXJhdG9yIC8gKGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSBjb25zdDsKCiAgICAKICAg
ICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgZG91YmxlICAgcyApICBj
b25zdCAgOyAgIGZ4cE9wZXI8U09MX0RJViAsICAwPiBvcGVyYXRvciAvICAoICAgICBmbG9hdCAg
IHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAgICAg
Ym9vbCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAg
KCAgICAgY2hhciAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0
b3IgLyAgKCAgICAgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfRElWICwgIDA+
IG9wZXJhdG9yIC8gICggICAgIGludCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9ESVYg
LCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNP
TF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgdW5zaWduZWQgY2hhciAgIHMgKSAgY29uc3Qg
IDsgICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgdW5zaWduZWQgc2hv
cnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfRElWICwgIDA+IG9wZXJhdG9yIC8gICgg
ICAgIHVuc2lnbmVkIGludCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9ESVYgLCAgMD4g
b3BlcmF0b3IgLyAgKCAgICAgdW5zaWduZWQgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVy
PFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgY29uc3Qgdm9pZCogICBzICkgIGNvbnN0
ICA7IAogICAgCiAgICAgZnJpZW5kIGZ4cE9wZXI8U09MX0RJViAsICAwPiBvcGVyYXRvciAvICAo
ICAgICBkb3VibGUgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8
U09MX0RJViAsICAwPiBvcGVyYXRvciAvICAoICAgICBmbG9hdCAgIHAgLCAgY29uc3QgZnhwQXJn
JiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfRElWICwgIDA+IG9wZXJhdG9yIC8gICggICAg
IGJvb2wgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0RJ
ViAsICAwPiBvcGVyYXRvciAvICAoICAgICBjaGFyICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAg
OyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgc2hvcnQg
ICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0RJViAsICAw
PiBvcGVyYXRvciAvICAoICAgICBpbnQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJp
ZW5kIGZ4cE9wZXI8U09MX0RJViAsICAwPiBvcGVyYXRvciAvICAoICAgICBsb25nICAgcCAsICBj
b25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0
b3IgLyAgKCAgICAgdW5zaWduZWQgY2hhciAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBm
cmllbmQgZnhwT3BlcjxTT0xfRElWICwgIDA+IG9wZXJhdG9yIC8gICggICAgIHVuc2lnbmVkIHNo
b3J0ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9ESVYg
LCAgMD4gb3BlcmF0b3IgLyAgKCAgICAgdW5zaWduZWQgaW50ICAgcCAsICBjb25zdCBmeHBBcmcm
IHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9ESVYgLCAgMD4gb3BlcmF0b3IgLyAgKCAgICAg
dW5zaWduZWQgbG9uZyAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3Bl
cjxTT0xfRElWICwgIDA+IG9wZXJhdG9yIC8gICggICAgIGNvbnN0IHZvaWQqICAgcCAsICBjb25z
dCBmeHBBcmcmIHMgKSAgOyAKCiAgIGZ4cE9wZXI8U09MX1JFTSwwPiBvcGVyYXRvciAlIChjb25z
dCBmeHBBcmcmIHMpIGNvbnN0OwoKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4KICAgICAg
ZnhwT3BlcjxTT0xfUkVNLDA+IG9wZXJhdG9yICUgKGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSBj
b25zdDsKCiAgICAKICAgICBmeHBPcGVyPFNPTF9SRU0gLCAgMD4gb3BlcmF0b3IgJSAgKCAgICAg
ZG91YmxlICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1JFTSAsICAwPiBvcGVyYXRvciAl
ICAoICAgICBmbG9hdCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9SRU0gLCAgMD4gb3Bl
cmF0b3IgJSAgKCAgICAgYm9vbCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9SRU0gLCAg
MD4gb3BlcmF0b3IgJSAgKCAgICAgY2hhciAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9S
RU0gLCAgMD4gb3BlcmF0b3IgJSAgKCAgICAgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3Bl
cjxTT0xfUkVNICwgIDA+IG9wZXJhdG9yICUgICggICAgIGludCAgIHMgKSAgY29uc3QgIDsgICBm
eHBPcGVyPFNPTF9SRU0gLCAgMD4gb3BlcmF0b3IgJSAgKCAgICAgbG9uZyAgIHMgKSAgY29uc3Qg
IDsgICBmeHBPcGVyPFNPTF9SRU0gLCAgMD4gb3BlcmF0b3IgJSAgKCAgICAgdW5zaWduZWQgY2hh
ciAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9SRU0gLCAgMD4gb3BlcmF0b3IgJSAgKCAg
ICAgdW5zaWduZWQgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfUkVNICwgIDA+
IG9wZXJhdG9yICUgICggICAgIHVuc2lnbmVkIGludCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVy
PFNPTF9SRU0gLCAgMD4gb3BlcmF0b3IgJSAgKCAgICAgdW5zaWduZWQgbG9uZyAgIHMgKSAgY29u
c3QgIDsgICBmeHBPcGVyPFNPTF9SRU0gLCAgMD4gb3BlcmF0b3IgJSAgKCAgICAgY29uc3Qgdm9p
ZCogICBzICkgIGNvbnN0ICA7IAogICAgCiAgICAgZnJpZW5kIGZ4cE9wZXI8U09MX1JFTSAsICAw
PiBvcGVyYXRvciAlICAoICAgICBkb3VibGUgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAg
ZnJpZW5kIGZ4cE9wZXI8U09MX1JFTSAsICAwPiBvcGVyYXRvciAlICAoICAgICBmbG9hdCAgIHAg
LCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfUkVNICwgIDA+IG9w
ZXJhdG9yICUgICggICAgIGJvb2wgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5k
IGZ4cE9wZXI8U09MX1JFTSAsICAwPiBvcGVyYXRvciAlICAoICAgICBjaGFyICAgcCAsICBjb25z
dCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9SRU0gLCAgMD4gb3BlcmF0b3Ig
JSAgKCAgICAgc2hvcnQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9w
ZXI8U09MX1JFTSAsICAwPiBvcGVyYXRvciAlICAoICAgICBpbnQgICBwICwgIGNvbnN0IGZ4cEFy
ZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX1JFTSAsICAwPiBvcGVyYXRvciAlICAoICAg
ICBsb25nICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9S
RU0gLCAgMD4gb3BlcmF0b3IgJSAgKCAgICAgdW5zaWduZWQgY2hhciAgIHAgLCAgY29uc3QgZnhw
QXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfUkVNICwgIDA+IG9wZXJhdG9yICUgICgg
ICAgIHVuc2lnbmVkIHNob3J0ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBm
eHBPcGVyPFNPTF9SRU0gLCAgMD4gb3BlcmF0b3IgJSAgKCAgICAgdW5zaWduZWQgaW50ICAgcCAs
ICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9SRU0gLCAgMD4gb3Bl
cmF0b3IgJSAgKCAgICAgdW5zaWduZWQgbG9uZyAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsg
ICBmcmllbmQgZnhwT3BlcjxTT0xfUkVNICwgIDA+IG9wZXJhdG9yICUgICggICAgIGNvbnN0IHZv
aWQqICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAKCiAgIGZ4cE9wZXI8U09MX0xTSElGVCww
PiBvcGVyYXRvciA8PCAoY29uc3QgZnhwQXJnJiBzKSBjb25zdDsKCiAgIHRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE8+CiAgICAgIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBvcGVyYXRvciA8PCAoY29u
c3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0OwoKICAgIAogICAgIGZ4cE9wZXI8U09MX0xTSElG
VCAsICAwPiBvcGVyYXRvciA8PCAgKCAgICAgZG91YmxlICAgcyApICBjb25zdCAgOyAgIGZ4cE9w
ZXI8U09MX0xTSElGVCAsICAwPiBvcGVyYXRvciA8PCAgKCAgICAgZmxvYXQgICBzICkgIGNvbnN0
ICA7ICAgZnhwT3BlcjxTT0xfTFNISUZUICwgIDA+IG9wZXJhdG9yIDw8ICAoICAgICBib29sICAg
cyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0xTSElGVCAsICAwPiBvcGVyYXRvciA8PCAgKCAg
ICAgY2hhciAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9MU0hJRlQgLCAgMD4gb3BlcmF0
b3IgPDwgICggICAgIHNob3J0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0xTSElGVCAs
ICAwPiBvcGVyYXRvciA8PCAgKCAgICAgaW50ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09M
X0xTSElGVCAsICAwPiBvcGVyYXRvciA8PCAgKCAgICAgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBm
eHBPcGVyPFNPTF9MU0hJRlQgLCAgMD4gb3BlcmF0b3IgPDwgICggICAgIHVuc2lnbmVkIGNoYXIg
ICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfTFNISUZUICwgIDA+IG9wZXJhdG9yIDw8ICAo
ICAgICB1bnNpZ25lZCBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9MU0hJRlQg
LCAgMD4gb3BlcmF0b3IgPDwgICggICAgIHVuc2lnbmVkIGludCAgIHMgKSAgY29uc3QgIDsgICBm
eHBPcGVyPFNPTF9MU0hJRlQgLCAgMD4gb3BlcmF0b3IgPDwgICggICAgIHVuc2lnbmVkIGxvbmcg
ICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfTFNISUZUICwgIDA+IG9wZXJhdG9yIDw8ICAo
ICAgICBjb25zdCB2b2lkKiAgIHMgKSAgY29uc3QgIDsgCiAgICAKICAgICBmcmllbmQgZnhwT3Bl
cjxTT0xfTFNISUZUICwgIDA+IG9wZXJhdG9yIDw8ICAoICAgICBkb3VibGUgICBwICwgIGNvbnN0
IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0xTSElGVCAsICAwPiBvcGVyYXRv
ciA8PCAgKCAgICAgZmxvYXQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4
cE9wZXI8U09MX0xTSElGVCAsICAwPiBvcGVyYXRvciA8PCAgKCAgICAgYm9vbCAgIHAgLCAgY29u
c3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfTFNISUZUICwgIDA+IG9wZXJh
dG9yIDw8ICAoICAgICBjaGFyICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBm
eHBPcGVyPFNPTF9MU0hJRlQgLCAgMD4gb3BlcmF0b3IgPDwgICggICAgIHNob3J0ICAgcCAsICBj
b25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9MU0hJRlQgLCAgMD4gb3Bl
cmF0b3IgPDwgICggICAgIGludCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQg
ZnhwT3BlcjxTT0xfTFNISUZUICwgIDA+IG9wZXJhdG9yIDw8ICAoICAgICBsb25nICAgcCAsICBj
b25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9MU0hJRlQgLCAgMD4gb3Bl
cmF0b3IgPDwgICggICAgIHVuc2lnbmVkIGNoYXIgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7
ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0xTSElGVCAsICAwPiBvcGVyYXRvciA8PCAgKCAgICAgdW5z
aWduZWQgc2hvcnQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8
U09MX0xTSElGVCAsICAwPiBvcGVyYXRvciA8PCAgKCAgICAgdW5zaWduZWQgaW50ICAgcCAsICBj
b25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9MU0hJRlQgLCAgMD4gb3Bl
cmF0b3IgPDwgICggICAgIHVuc2lnbmVkIGxvbmcgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7
ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0xTSElGVCAsICAwPiBvcGVyYXRvciA8PCAgKCAgICAgY29u
c3Qgdm9pZCogICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7IAoKICAgZnhwT3BlcjxTT0xfUlNI
SUZULDA+IG9wZXJhdG9yID4+IChjb25zdCBmeHBBcmcmIHMpIGNvbnN0OwoKICAgdGVtcGxhdGU8
U29sX29wIENNRCxpbnQgTz4KICAgICAgZnhwT3BlcjxTT0xfUlNISUZULDA+IG9wZXJhdG9yID4+
IChjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgY29uc3Q7CgogICAgCiAgICAgZnhwT3BlcjxTT0xf
UlNISUZUICwgIDA+IG9wZXJhdG9yID4+ICAoICAgICBkb3VibGUgICBzICkgIGNvbnN0ICA7ICAg
ZnhwT3BlcjxTT0xfUlNISUZUICwgIDA+IG9wZXJhdG9yID4+ICAoICAgICBmbG9hdCAgIHMgKSAg
Y29uc3QgIDsgICBmeHBPcGVyPFNPTF9SU0hJRlQgLCAgMD4gb3BlcmF0b3IgPj4gICggICAgIGJv
b2wgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfUlNISUZUICwgIDA+IG9wZXJhdG9yID4+
ICAoICAgICBjaGFyICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1JTSElGVCAsICAwPiBv
cGVyYXRvciA+PiAgKCAgICAgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfUlNI
SUZUICwgIDA+IG9wZXJhdG9yID4+ICAoICAgICBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3Bl
cjxTT0xfUlNISUZUICwgIDA+IG9wZXJhdG9yID4+ICAoICAgICBsb25nICAgcyApICBjb25zdCAg
OyAgIGZ4cE9wZXI8U09MX1JTSElGVCAsICAwPiBvcGVyYXRvciA+PiAgKCAgICAgdW5zaWduZWQg
Y2hhciAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9SU0hJRlQgLCAgMD4gb3BlcmF0b3Ig
Pj4gICggICAgIHVuc2lnbmVkIHNob3J0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX1JT
SElGVCAsICAwPiBvcGVyYXRvciA+PiAgKCAgICAgdW5zaWduZWQgaW50ICAgcyApICBjb25zdCAg
OyAgIGZ4cE9wZXI8U09MX1JTSElGVCAsICAwPiBvcGVyYXRvciA+PiAgKCAgICAgdW5zaWduZWQg
bG9uZyAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9SU0hJRlQgLCAgMD4gb3BlcmF0b3Ig
Pj4gICggICAgIGNvbnN0IHZvaWQqICAgcyApICBjb25zdCAgOyAKICAgIAogICAgIGZyaWVuZCBm
eHBPcGVyPFNPTF9SU0hJRlQgLCAgMD4gb3BlcmF0b3IgPj4gICggICAgIGRvdWJsZSAgIHAgLCAg
Y29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfUlNISUZUICwgIDA+IG9w
ZXJhdG9yID4+ICAoICAgICBmbG9hdCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmll
bmQgZnhwT3BlcjxTT0xfUlNISUZUICwgIDA+IG9wZXJhdG9yID4+ICAoICAgICBib29sICAgcCAs
ICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9SU0hJRlQgLCAgMD4g
b3BlcmF0b3IgPj4gICggICAgIGNoYXIgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJp
ZW5kIGZ4cE9wZXI8U09MX1JTSElGVCAsICAwPiBvcGVyYXRvciA+PiAgKCAgICAgc2hvcnQgICBw
ICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX1JTSElGVCAsICAw
PiBvcGVyYXRvciA+PiAgKCAgICAgaW50ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZy
aWVuZCBmeHBPcGVyPFNPTF9SU0hJRlQgLCAgMD4gb3BlcmF0b3IgPj4gICggICAgIGxvbmcgICBw
ICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX1JTSElGVCAsICAw
PiBvcGVyYXRvciA+PiAgKCAgICAgdW5zaWduZWQgY2hhciAgIHAgLCAgY29uc3QgZnhwQXJnJiBz
ICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfUlNISUZUICwgIDA+IG9wZXJhdG9yID4+ICAoICAg
ICB1bnNpZ25lZCBzaG9ydCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhw
T3BlcjxTT0xfUlNISUZUICwgIDA+IG9wZXJhdG9yID4+ICAoICAgICB1bnNpZ25lZCBpbnQgICBw
ICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX1JTSElGVCAsICAw
PiBvcGVyYXRvciA+PiAgKCAgICAgdW5zaWduZWQgbG9uZyAgIHAgLCAgY29uc3QgZnhwQXJnJiBz
ICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfUlNISUZUICwgIDA+IG9wZXJhdG9yID4+ICAoICAg
ICBjb25zdCB2b2lkKiAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgCgogICBmeHBPcGVyPFNP
TF9BTkQsMD4gb3BlcmF0b3IgJiAoY29uc3QgZnhwQXJnJiBzKSBjb25zdDsKCiAgIHRlbXBsYXRl
PFNvbF9vcCBDTUQsaW50IE8+CiAgICAgIGZ4cE9wZXI8U09MX0FORCwwPiBvcGVyYXRvciAmIChj
b25zdCBmeHBPcGVyPENNRCxPPiYgcykgY29uc3Q7CgogICAgCiAgICAgZnhwT3BlcjxTT0xfQU5E
ICwgIDA+IG9wZXJhdG9yICYgICggICAgIGRvdWJsZSAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVy
PFNPTF9BTkQgLCAgMD4gb3BlcmF0b3IgJiAgKCAgICAgZmxvYXQgICBzICkgIGNvbnN0ICA7ICAg
ZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIGJvb2wgICBzICkgIGNvbnN0
ICA7ICAgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIGNoYXIgICBzICkg
IGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIHNob3J0
ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0FORCAsICAwPiBvcGVyYXRvciAmICAoICAg
ICBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYg
ICggICAgIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJh
dG9yICYgICggICAgIHVuc2lnbmVkIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xf
QU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIHVuc2lnbmVkIHNob3J0ICAgcyApICBjb25zdCAg
OyAgIGZ4cE9wZXI8U09MX0FORCAsICAwPiBvcGVyYXRvciAmICAoICAgICB1bnNpZ25lZCBpbnQg
ICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAg
IHVuc2lnbmVkIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9w
ZXJhdG9yICYgICggICAgIGNvbnN0IHZvaWQqICAgcyApICBjb25zdCAgOyAKICAgIAogICAgIGZy
aWVuZCBmeHBPcGVyPFNPTF9BTkQgLCAgMD4gb3BlcmF0b3IgJiAgKCAgICAgZG91YmxlICAgcCAs
ICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9BTkQgLCAgMD4gb3Bl
cmF0b3IgJiAgKCAgICAgZmxvYXQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5k
IGZ4cE9wZXI8U09MX0FORCAsICAwPiBvcGVyYXRvciAmICAoICAgICBib29sICAgcCAsICBjb25z
dCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9BTkQgLCAgMD4gb3BlcmF0b3Ig
JiAgKCAgICAgY2hhciAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3Bl
cjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIHNob3J0ICAgcCAsICBjb25zdCBmeHBB
cmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9BTkQgLCAgMD4gb3BlcmF0b3IgJiAgKCAg
ICAgaW50ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9B
TkQgLCAgMD4gb3BlcmF0b3IgJiAgKCAgICAgbG9uZyAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkg
IDsgICBmcmllbmQgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIHVuc2ln
bmVkIGNoYXIgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09M
X0FORCAsICAwPiBvcGVyYXRvciAmICAoICAgICB1bnNpZ25lZCBzaG9ydCAgIHAgLCAgY29uc3Qg
ZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYg
ICggICAgIHVuc2lnbmVkIGludCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQg
ZnhwT3BlcjxTT0xfQU5EICwgIDA+IG9wZXJhdG9yICYgICggICAgIHVuc2lnbmVkIGxvbmcgICBw
ICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0FORCAsICAwPiBv
cGVyYXRvciAmICAoICAgICBjb25zdCB2b2lkKiAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsg
CgogICBmeHBPcGVyPFNPTF9PUiwwPiBvcGVyYXRvciB8IChjb25zdCBmeHBBcmcmIHMpIGNvbnN0
OwoKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4KICAgICAgZnhwT3BlcjxTT0xfT1IsMD4g
b3BlcmF0b3IgfCAoY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0OwoKICAgIAogICAgIGZ4
cE9wZXI8U09MX09SICwgIDA+IG9wZXJhdG9yIHwgICggICAgIGRvdWJsZSAgIHMgKSAgY29uc3Qg
IDsgICBmeHBPcGVyPFNPTF9PUiAsICAwPiBvcGVyYXRvciB8ICAoICAgICBmbG9hdCAgIHMgKSAg
Y29uc3QgIDsgICBmeHBPcGVyPFNPTF9PUiAsICAwPiBvcGVyYXRvciB8ICAoICAgICBib29sICAg
cyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX09SICwgIDA+IG9wZXJhdG9yIHwgICggICAgIGNo
YXIgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfT1IgLCAgMD4gb3BlcmF0b3IgfCAgKCAg
ICAgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfT1IgLCAgMD4gb3BlcmF0b3Ig
fCAgKCAgICAgaW50ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX09SICwgIDA+IG9wZXJh
dG9yIHwgICggICAgIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfT1IgLCAgMD4g
b3BlcmF0b3IgfCAgKCAgICAgdW5zaWduZWQgY2hhciAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVy
PFNPTF9PUiAsICAwPiBvcGVyYXRvciB8ICAoICAgICB1bnNpZ25lZCBzaG9ydCAgIHMgKSAgY29u
c3QgIDsgICBmeHBPcGVyPFNPTF9PUiAsICAwPiBvcGVyYXRvciB8ICAoICAgICB1bnNpZ25lZCBp
bnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfT1IgLCAgMD4gb3BlcmF0b3IgfCAgKCAg
ICAgdW5zaWduZWQgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9PUiAsICAwPiBv
cGVyYXRvciB8ICAoICAgICBjb25zdCB2b2lkKiAgIHMgKSAgY29uc3QgIDsgCiAgICAKICAgICBm
cmllbmQgZnhwT3BlcjxTT0xfT1IgLCAgMD4gb3BlcmF0b3IgfCAgKCAgICAgZG91YmxlICAgcCAs
ICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9PUiAsICAwPiBvcGVy
YXRvciB8ICAoICAgICBmbG9hdCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQg
ZnhwT3BlcjxTT0xfT1IgLCAgMD4gb3BlcmF0b3IgfCAgKCAgICAgYm9vbCAgIHAgLCAgY29uc3Qg
ZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfT1IgLCAgMD4gb3BlcmF0b3IgfCAg
KCAgICAgY2hhciAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxT
T0xfT1IgLCAgMD4gb3BlcmF0b3IgfCAgKCAgICAgc2hvcnQgICBwICwgIGNvbnN0IGZ4cEFyZyYg
cyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX09SICwgIDA+IG9wZXJhdG9yIHwgICggICAgIGlu
dCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfT1IgLCAg
MD4gb3BlcmF0b3IgfCAgKCAgICAgbG9uZyAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBm
cmllbmQgZnhwT3BlcjxTT0xfT1IgLCAgMD4gb3BlcmF0b3IgfCAgKCAgICAgdW5zaWduZWQgY2hh
ciAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfT1IgLCAg
MD4gb3BlcmF0b3IgfCAgKCAgICAgdW5zaWduZWQgc2hvcnQgICBwICwgIGNvbnN0IGZ4cEFyZyYg
cyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX09SICwgIDA+IG9wZXJhdG9yIHwgICggICAgIHVu
c2lnbmVkIGludCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxT
T0xfT1IgLCAgMD4gb3BlcmF0b3IgfCAgKCAgICAgdW5zaWduZWQgbG9uZyAgIHAgLCAgY29uc3Qg
ZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfT1IgLCAgMD4gb3BlcmF0b3IgfCAg
KCAgICAgY29uc3Qgdm9pZCogICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7IAoKICAgZnhwT3Bl
cjxTT0xfRVhPUiwwPiBvcGVyYXRvciBeIChjb25zdCBmeHBBcmcmIHMpIGNvbnN0OwoKICAgdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgTz4KICAgICAgZnhwT3BlcjxTT0xfRVhPUiwwPiBvcGVyYXRv
ciBeIChjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgY29uc3Q7CgogICAgCiAgICAgZnhwT3BlcjxT
T0xfRVhPUiAsICAwPiBvcGVyYXRvciBeICAoICAgICBkb3VibGUgICBzICkgIGNvbnN0ICA7ICAg
ZnhwT3BlcjxTT0xfRVhPUiAsICAwPiBvcGVyYXRvciBeICAoICAgICBmbG9hdCAgIHMgKSAgY29u
c3QgIDsgICBmeHBPcGVyPFNPTF9FWE9SICwgIDA+IG9wZXJhdG9yIF4gICggICAgIGJvb2wgICBz
ICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfRVhPUiAsICAwPiBvcGVyYXRvciBeICAoICAgICBj
aGFyICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0VYT1IgLCAgMD4gb3BlcmF0b3IgXiAg
KCAgICAgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfRVhPUiAsICAwPiBvcGVy
YXRvciBeICAoICAgICBpbnQgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfRVhPUiAsICAw
PiBvcGVyYXRvciBeICAoICAgICBsb25nICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0VY
T1IgLCAgMD4gb3BlcmF0b3IgXiAgKCAgICAgdW5zaWduZWQgY2hhciAgIHMgKSAgY29uc3QgIDsg
ICBmeHBPcGVyPFNPTF9FWE9SICwgIDA+IG9wZXJhdG9yIF4gICggICAgIHVuc2lnbmVkIHNob3J0
ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0VYT1IgLCAgMD4gb3BlcmF0b3IgXiAgKCAg
ICAgdW5zaWduZWQgaW50ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0VYT1IgLCAgMD4g
b3BlcmF0b3IgXiAgKCAgICAgdW5zaWduZWQgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVy
PFNPTF9FWE9SICwgIDA+IG9wZXJhdG9yIF4gICggICAgIGNvbnN0IHZvaWQqICAgcyApICBjb25z
dCAgOyAKICAgIAogICAgIGZyaWVuZCBmeHBPcGVyPFNPTF9FWE9SICwgIDA+IG9wZXJhdG9yIF4g
ICggICAgIGRvdWJsZSAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3Bl
cjxTT0xfRVhPUiAsICAwPiBvcGVyYXRvciBeICAoICAgICBmbG9hdCAgIHAgLCAgY29uc3QgZnhw
QXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfRVhPUiAsICAwPiBvcGVyYXRvciBeICAo
ICAgICBib29sICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNP
TF9FWE9SICwgIDA+IG9wZXJhdG9yIF4gICggICAgIGNoYXIgICBwICwgIGNvbnN0IGZ4cEFyZyYg
cyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0VYT1IgLCAgMD4gb3BlcmF0b3IgXiAgKCAgICAg
c2hvcnQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0VY
T1IgLCAgMD4gb3BlcmF0b3IgXiAgKCAgICAgaW50ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAg
OyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9FWE9SICwgIDA+IG9wZXJhdG9yIF4gICggICAgIGxvbmcg
ICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0VYT1IgLCAg
MD4gb3BlcmF0b3IgXiAgKCAgICAgdW5zaWduZWQgY2hhciAgIHAgLCAgY29uc3QgZnhwQXJnJiBz
ICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfRVhPUiAsICAwPiBvcGVyYXRvciBeICAoICAgICB1
bnNpZ25lZCBzaG9ydCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3Bl
cjxTT0xfRVhPUiAsICAwPiBvcGVyYXRvciBeICAoICAgICB1bnNpZ25lZCBpbnQgICBwICwgIGNv
bnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0VYT1IgLCAgMD4gb3BlcmF0
b3IgXiAgKCAgICAgdW5zaWduZWQgbG9uZyAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBm
cmllbmQgZnhwT3BlcjxTT0xfRVhPUiAsICAwPiBvcGVyYXRvciBeICAoICAgICBjb25zdCB2b2lk
KiAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgCgogICBmeHBPcGVyPFNPTF9CSVRNRVJHRSww
PiBhcHBlbmQgKGNvbnN0IGZ4cEFyZyYgcykgY29uc3Q7CgogICB0ZW1wbGF0ZTxTb2xfb3AgQ01E
LGludCBPPgogICAgICBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPiBhcHBlbmQgKGNvbnN0IGZ4cE9w
ZXI8Q01ELE8+JiBzKSBjb25zdDsKCiAgICAKICAgICBmeHBPcGVyPFNPTF9CSVRNRVJHRSAsICAw
PiBhcHBlbmQgICggICAgIGRvdWJsZSAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9CSVRN
RVJHRSAsICAwPiBhcHBlbmQgICggICAgIGZsb2F0ICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8
U09MX0JJVE1FUkdFICwgIDA+IGFwcGVuZCAgKCAgICAgYm9vbCAgIHMgKSAgY29uc3QgIDsgICBm
eHBPcGVyPFNPTF9CSVRNRVJHRSAsICAwPiBhcHBlbmQgICggICAgIGNoYXIgICBzICkgIGNvbnN0
ICA7ICAgZnhwT3BlcjxTT0xfQklUTUVSR0UgLCAgMD4gYXBwZW5kICAoICAgICBzaG9ydCAgIHMg
KSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9CSVRNRVJHRSAsICAwPiBhcHBlbmQgICggICAgIGlu
dCAgIHMgKSAgY29uc3QgIDsgICBmeHBPcGVyPFNPTF9CSVRNRVJHRSAsICAwPiBhcHBlbmQgICgg
ICAgIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQklUTUVSR0UgLCAgMD4gYXBw
ZW5kICAoICAgICB1bnNpZ25lZCBjaGFyICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0JJ
VE1FUkdFICwgIDA+IGFwcGVuZCAgKCAgICAgdW5zaWduZWQgc2hvcnQgICBzICkgIGNvbnN0ICA7
ICAgZnhwT3BlcjxTT0xfQklUTUVSR0UgLCAgMD4gYXBwZW5kICAoICAgICB1bnNpZ25lZCBpbnQg
ICBzICkgIGNvbnN0ICA7ICAgZnhwT3BlcjxTT0xfQklUTUVSR0UgLCAgMD4gYXBwZW5kICAoICAg
ICB1bnNpZ25lZCBsb25nICAgcyApICBjb25zdCAgOyAgIGZ4cE9wZXI8U09MX0JJVE1FUkdFICwg
IDA+IGFwcGVuZCAgKCAgICAgY29uc3Qgdm9pZCogICBzICkgIGNvbnN0ICA7IAogICAgCiAgICAg
ZnJpZW5kIGZ4cE9wZXI8U09MX0JJVE1FUkdFICwgIDA+IGFwcGVuZCAgKCAgICAgZG91YmxlICAg
cCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9CSVRNRVJHRSAs
ICAwPiBhcHBlbmQgICggICAgIGZsb2F0ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZy
aWVuZCBmeHBPcGVyPFNPTF9CSVRNRVJHRSAsICAwPiBhcHBlbmQgICggICAgIGJvb2wgICBwICwg
IGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9wZXI8U09MX0JJVE1FUkdFICwgIDA+
IGFwcGVuZCAgKCAgICAgY2hhciAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQg
ZnhwT3BlcjxTT0xfQklUTUVSR0UgLCAgMD4gYXBwZW5kICAoICAgICBzaG9ydCAgIHAgLCAgY29u
c3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfQklUTUVSR0UgLCAgMD4gYXBw
ZW5kICAoICAgICBpbnQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGZ4cE9w
ZXI8U09MX0JJVE1FUkdFICwgIDA+IGFwcGVuZCAgKCAgICAgbG9uZyAgIHAgLCAgY29uc3QgZnhw
QXJnJiBzICkgIDsgICBmcmllbmQgZnhwT3BlcjxTT0xfQklUTUVSR0UgLCAgMD4gYXBwZW5kICAo
ICAgICB1bnNpZ25lZCBjaGFyICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBm
eHBPcGVyPFNPTF9CSVRNRVJHRSAsICAwPiBhcHBlbmQgICggICAgIHVuc2lnbmVkIHNob3J0ICAg
cCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNPTF9CSVRNRVJHRSAs
ICAwPiBhcHBlbmQgICggICAgIHVuc2lnbmVkIGludCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkg
IDsgICBmcmllbmQgZnhwT3BlcjxTT0xfQklUTUVSR0UgLCAgMD4gYXBwZW5kICAoICAgICB1bnNp
Z25lZCBsb25nICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBmeHBPcGVyPFNP
TF9CSVRNRVJHRSAsICAwPiBhcHBlbmQgICggICAgIGNvbnN0IHZvaWQqICAgcCAsICBjb25zdCBm
eHBBcmcmIHMgKSAgOyAKCiAgIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgZnhwQXJnJiBzKSBjb25z
dDsKCiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+CiAgICAgIGJvb2wgb3BlcmF0b3IgPCAo
Y29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0OwoKICAgIAogICAgIGJvb2wgb3BlcmF0b3Ig
PCAoICAgICBkb3VibGUgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA8ICggICAgIGZs
b2F0ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPCAoICAgICBib29sICAgcyApICBj
b25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPCAoICAgICBjaGFyICAgcyApICBjb25zdCAgOyAgIGJv
b2wgb3BlcmF0b3IgPCAoICAgICBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9y
IDwgKCAgICAgaW50ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPCAoICAgICBsb25n
ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPCAoICAgICB1bnNpZ25lZCBjaGFyICAg
cyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPCAoICAgICB1bnNpZ25lZCBzaG9ydCAgIHMg
KSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yIDwgKCAgICAgdW5zaWduZWQgaW50ICAgcyApICBj
b25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPCAoICAgICB1bnNpZ25lZCBsb25nICAgcyApICBjb25z
dCAgOyAgIGJvb2wgb3BlcmF0b3IgPCAoICAgICBjb25zdCB2b2lkKiAgIHMgKSAgY29uc3QgIDsg
CiAgICAKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA8ICggICAgIGRvdWJsZSAgIHAgLCAgY29u
c3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA8ICggICAgIGZsb2F0ICAg
cCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDwgKCAgICAg
Ym9vbCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA8
ICggICAgIGNoYXIgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3IgPCAoICAgICBzaG9ydCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQg
Ym9vbCBvcGVyYXRvciA8ICggICAgIGludCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBm
cmllbmQgYm9vbCBvcGVyYXRvciA8ICggICAgIGxvbmcgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyAp
ICA7ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPCAoICAgICB1bnNpZ25lZCBjaGFyICAgcCAsICBj
b25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDwgKCAgICAgdW5zaWdu
ZWQgc2hvcnQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGJvb2wgb3BlcmF0
b3IgPCAoICAgICB1bnNpZ25lZCBpbnQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IgPCAoICAgICB1bnNpZ25lZCBsb25nICAgcCAsICBjb25zdCBmeHBB
cmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDwgKCAgICAgY29uc3Qgdm9pZCogICBw
ICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7IAoKICAgYm9vbCBvcGVyYXRvciA8PSAoY29uc3QgZnhw
QXJnJiBzKSBjb25zdDsKCiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+CiAgICAgIGJvb2wg
b3BlcmF0b3IgPD0gKGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSBjb25zdDsKCiAgICAKICAgICBi
b29sIG9wZXJhdG9yIDw9ICggICAgIGRvdWJsZSAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJh
dG9yIDw9ICggICAgIGZsb2F0ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPD0gKCAg
ICAgYm9vbCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yIDw9ICggICAgIGNoYXIgICBz
ICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA8PSAoICAgICBzaG9ydCAgIHMgKSAgY29uc3Qg
IDsgICBib29sIG9wZXJhdG9yIDw9ICggICAgIGludCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9w
ZXJhdG9yIDw9ICggICAgIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA8PSAo
ICAgICB1bnNpZ25lZCBjaGFyICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPD0gKCAg
ICAgdW5zaWduZWQgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA8PSAoICAg
ICB1bnNpZ25lZCBpbnQgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA8PSAoICAgICB1
bnNpZ25lZCBsb25nICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPD0gKCAgICAgY29u
c3Qgdm9pZCogICBzICkgIGNvbnN0ICA7IAogICAgCiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3Ig
PD0gKCAgICAgZG91YmxlICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29s
IG9wZXJhdG9yIDw9ICggICAgIGZsb2F0ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZy
aWVuZCBib29sIG9wZXJhdG9yIDw9ICggICAgIGJvb2wgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyAp
ICA7ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPD0gKCAgICAgY2hhciAgIHAgLCAgY29uc3QgZnhw
QXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA8PSAoICAgICBzaG9ydCAgIHAgLCAg
Y29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA8PSAoICAgICBpbnQg
ICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPD0gKCAg
ICAgbG9uZyAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRv
ciA8PSAoICAgICB1bnNpZ25lZCBjaGFyICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZy
aWVuZCBib29sIG9wZXJhdG9yIDw9ICggICAgIHVuc2lnbmVkIHNob3J0ICAgcCAsICBjb25zdCBm
eHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDw9ICggICAgIHVuc2lnbmVkIGlu
dCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA8PSAo
ICAgICB1bnNpZ25lZCBsb25nICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBi
b29sIG9wZXJhdG9yIDw9ICggICAgIGNvbnN0IHZvaWQqICAgcCAsICBjb25zdCBmeHBBcmcmIHMg
KSAgOyAKCiAgIGJvb2wgb3BlcmF0b3IgPiAoY29uc3QgZnhwQXJnJiBzKSBjb25zdDsKCiAgIHRl
bXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+CiAgICAgIGJvb2wgb3BlcmF0b3IgPiAoY29uc3QgZnhw
T3BlcjxDTUQsTz4mIHMpIGNvbnN0OwoKICAgIAogICAgIGJvb2wgb3BlcmF0b3IgPiAoICAgICBk
b3VibGUgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA+ICggICAgIGZsb2F0ICAgcyAp
ICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPiAoICAgICBib29sICAgcyApICBjb25zdCAgOyAg
IGJvb2wgb3BlcmF0b3IgPiAoICAgICBjaGFyICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0
b3IgPiAoICAgICBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID4gKCAgICAg
aW50ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPiAoICAgICBsb25nICAgcyApICBj
b25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPiAoICAgICB1bnNpZ25lZCBjaGFyICAgcyApICBjb25z
dCAgOyAgIGJvb2wgb3BlcmF0b3IgPiAoICAgICB1bnNpZ25lZCBzaG9ydCAgIHMgKSAgY29uc3Qg
IDsgICBib29sIG9wZXJhdG9yID4gKCAgICAgdW5zaWduZWQgaW50ICAgcyApICBjb25zdCAgOyAg
IGJvb2wgb3BlcmF0b3IgPiAoICAgICB1bnNpZ25lZCBsb25nICAgcyApICBjb25zdCAgOyAgIGJv
b2wgb3BlcmF0b3IgPiAoICAgICBjb25zdCB2b2lkKiAgIHMgKSAgY29uc3QgIDsgCiAgICAKICAg
ICBmcmllbmQgYm9vbCBvcGVyYXRvciA+ICggICAgIGRvdWJsZSAgIHAgLCAgY29uc3QgZnhwQXJn
JiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+ICggICAgIGZsb2F0ICAgcCAsICBjb25z
dCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJhdG9yID4gKCAgICAgYm9vbCAgIHAg
LCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+ICggICAgIGNo
YXIgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPiAo
ICAgICBzaG9ydCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVy
YXRvciA+ICggICAgIGludCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9v
bCBvcGVyYXRvciA+ICggICAgIGxvbmcgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IgPiAoICAgICB1bnNpZ25lZCBjaGFyICAgcCAsICBjb25zdCBmeHBB
cmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJhdG9yID4gKCAgICAgdW5zaWduZWQgc2hvcnQg
ICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPiAoICAg
ICB1bnNpZ25lZCBpbnQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3IgPiAoICAgICB1bnNpZ25lZCBsb25nICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAg
OyAgIGZyaWVuZCBib29sIG9wZXJhdG9yID4gKCAgICAgY29uc3Qgdm9pZCogICBwICwgIGNvbnN0
IGZ4cEFyZyYgcyApICA7IAoKICAgYm9vbCBvcGVyYXRvciA+PSAoY29uc3QgZnhwQXJnJiBzKSBj
b25zdDsKCiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+CiAgICAgIGJvb2wgb3BlcmF0b3Ig
Pj0gKGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSBjb25zdDsKCiAgICAKICAgICBib29sIG9wZXJh
dG9yID49ICggICAgIGRvdWJsZSAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID49ICgg
ICAgIGZsb2F0ICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPj0gKCAgICAgYm9vbCAg
IHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID49ICggICAgIGNoYXIgICBzICkgIGNvbnN0
ICA7ICAgYm9vbCBvcGVyYXRvciA+PSAoICAgICBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBib29s
IG9wZXJhdG9yID49ICggICAgIGludCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yID49
ICggICAgIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA+PSAoICAgICB1bnNp
Z25lZCBjaGFyICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPj0gKCAgICAgdW5zaWdu
ZWQgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA+PSAoICAgICB1bnNpZ25l
ZCBpbnQgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA+PSAoICAgICB1bnNpZ25lZCBs
b25nICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPj0gKCAgICAgY29uc3Qgdm9pZCog
ICBzICkgIGNvbnN0ICA7IAogICAgCiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPj0gKCAgICAg
ZG91YmxlICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJhdG9y
ID49ICggICAgIGZsb2F0ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29s
IG9wZXJhdG9yID49ICggICAgIGJvb2wgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IgPj0gKCAgICAgY2hhciAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkg
IDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+PSAoICAgICBzaG9ydCAgIHAgLCAgY29uc3QgZnhw
QXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+PSAoICAgICBpbnQgICBwICwgIGNv
bnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPj0gKCAgICAgbG9uZyAg
IHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+PSAoICAg
ICB1bnNpZ25lZCBjaGFyICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29s
IG9wZXJhdG9yID49ICggICAgIHVuc2lnbmVkIHNob3J0ICAgcCAsICBjb25zdCBmeHBBcmcmIHMg
KSAgOyAgIGZyaWVuZCBib29sIG9wZXJhdG9yID49ICggICAgIHVuc2lnbmVkIGludCAgIHAgLCAg
Y29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+PSAoICAgICB1bnNp
Z25lZCBsb25nICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJh
dG9yID49ICggICAgIGNvbnN0IHZvaWQqICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAKCiAg
IGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IGZ4cEFyZyYgcykgY29uc3Q7CgogICB0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPPgogICAgICBib29sIG9wZXJhdG9yID09IChjb25zdCBmeHBPcGVyPENN
RCxPPiYgcykgY29uc3Q7CgogICAgCiAgICAgYm9vbCBvcGVyYXRvciA9PSAoICAgICBkb3VibGUg
ICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA9PSAoICAgICBmbG9hdCAgIHMgKSAgY29u
c3QgIDsgICBib29sIG9wZXJhdG9yID09ICggICAgIGJvb2wgICBzICkgIGNvbnN0ICA7ICAgYm9v
bCBvcGVyYXRvciA9PSAoICAgICBjaGFyICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3Ig
PT0gKCAgICAgc2hvcnQgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA9PSAoICAgICBp
bnQgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciA9PSAoICAgICBsb25nICAgcyApICBj
b25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgPT0gKCAgICAgdW5zaWduZWQgY2hhciAgIHMgKSAgY29u
c3QgIDsgICBib29sIG9wZXJhdG9yID09ICggICAgIHVuc2lnbmVkIHNob3J0ICAgcyApICBjb25z
dCAgOyAgIGJvb2wgb3BlcmF0b3IgPT0gKCAgICAgdW5zaWduZWQgaW50ICAgcyApICBjb25zdCAg
OyAgIGJvb2wgb3BlcmF0b3IgPT0gKCAgICAgdW5zaWduZWQgbG9uZyAgIHMgKSAgY29uc3QgIDsg
ICBib29sIG9wZXJhdG9yID09ICggICAgIGNvbnN0IHZvaWQqICAgcyApICBjb25zdCAgOyAKICAg
IAogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID09ICggICAgIGRvdWJsZSAgIHAgLCAgY29uc3Qg
ZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA9PSAoICAgICBmbG9hdCAgIHAg
LCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA9PSAoICAgICBi
b29sICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJhdG9yID09
ICggICAgIGNoYXIgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3IgPT0gKCAgICAgc2hvcnQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5k
IGJvb2wgb3BlcmF0b3IgPT0gKCAgICAgaW50ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAg
IGZyaWVuZCBib29sIG9wZXJhdG9yID09ICggICAgIGxvbmcgICBwICwgIGNvbnN0IGZ4cEFyZyYg
cyApICA7ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPT0gKCAgICAgdW5zaWduZWQgY2hhciAgIHAg
LCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA9PSAoICAgICB1
bnNpZ25lZCBzaG9ydCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBv
cGVyYXRvciA9PSAoICAgICB1bnNpZ25lZCBpbnQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7
ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPT0gKCAgICAgdW5zaWduZWQgbG9uZyAgIHAgLCAgY29u
c3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciA9PSAoICAgICBjb25zdCB2
b2lkKiAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgCgogICBib29sIG9wZXJhdG9yICE9IChj
b25zdCBmeHBBcmcmIHMpIGNvbnN0OwoKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4KICAg
ICAgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0OwoKICAg
IAogICAgIGJvb2wgb3BlcmF0b3IgIT0gKCAgICAgZG91YmxlICAgcyApICBjb25zdCAgOyAgIGJv
b2wgb3BlcmF0b3IgIT0gKCAgICAgZmxvYXQgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRv
ciAhPSAoICAgICBib29sICAgcyApICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgIT0gKCAgICAg
Y2hhciAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yICE9ICggICAgIHNob3J0ICAgcyAp
ICBjb25zdCAgOyAgIGJvb2wgb3BlcmF0b3IgIT0gKCAgICAgaW50ICAgcyApICBjb25zdCAgOyAg
IGJvb2wgb3BlcmF0b3IgIT0gKCAgICAgbG9uZyAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJh
dG9yICE9ICggICAgIHVuc2lnbmVkIGNoYXIgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRv
ciAhPSAoICAgICB1bnNpZ25lZCBzaG9ydCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9y
ICE9ICggICAgIHVuc2lnbmVkIGludCAgIHMgKSAgY29uc3QgIDsgICBib29sIG9wZXJhdG9yICE9
ICggICAgIHVuc2lnbmVkIGxvbmcgICBzICkgIGNvbnN0ICA7ICAgYm9vbCBvcGVyYXRvciAhPSAo
ICAgICBjb25zdCB2b2lkKiAgIHMgKSAgY29uc3QgIDsgCiAgICAKICAgICBmcmllbmQgYm9vbCBv
cGVyYXRvciAhPSAoICAgICBkb3VibGUgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IgIT0gKCAgICAgZmxvYXQgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyAp
ICA7ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgIT0gKCAgICAgYm9vbCAgIHAgLCAgY29uc3QgZnhw
QXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRvciAhPSAoICAgICBjaGFyICAgcCAsICBj
b25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJhdG9yICE9ICggICAgIHNob3J0
ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJhdG9yICE9ICgg
ICAgIGludCAgIHAgLCAgY29uc3QgZnhwQXJnJiBzICkgIDsgICBmcmllbmQgYm9vbCBvcGVyYXRv
ciAhPSAoICAgICBsb25nICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29s
IG9wZXJhdG9yICE9ICggICAgIHVuc2lnbmVkIGNoYXIgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyAp
ICA7ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgIT0gKCAgICAgdW5zaWduZWQgc2hvcnQgICBwICwg
IGNvbnN0IGZ4cEFyZyYgcyApICA7ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgIT0gKCAgICAgdW5z
aWduZWQgaW50ICAgcCAsICBjb25zdCBmeHBBcmcmIHMgKSAgOyAgIGZyaWVuZCBib29sIG9wZXJh
dG9yICE9ICggICAgIHVuc2lnbmVkIGxvbmcgICBwICwgIGNvbnN0IGZ4cEFyZyYgcyApICA7ICAg
ZnJpZW5kIGJvb2wgb3BlcmF0b3IgIT0gKCAgICAgY29uc3Qgdm9pZCogICBwICwgIGNvbnN0IGZ4
cEFyZyYgcyApICA7IAoKIyAxNjUxICIvZWRjL3dhL2JlbmVkaWN0L2YzX2lkNi9jc2ZnL2hwdV9n
bnUvRmRfaG9tZS9pbmNsdWRlL2Z4cC5oIgoKCnB1YmxpYzoKICAgc3RhdGljIGZ4cE9xU3RhdCBk
X2RldGVjdDsKfTsKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgp0ZW1wbGF0ZTxpbnQgUywgaW50
IFcsIGludCBQPgogICBjbGFzcyBOdW1iZXIgOiBwdWJsaWMgZnhwQXJnIHsKIAoKCgoKCgpwdWJs
aWM6CiAgIGJvb2wgcGFyc2VCcEJpbihjb25zdCBjaGFyKiBzdHIpOwoKcHJvdGVjdGVkOgogICB+
TnVtYmVyKCk7CgpwdWJsaWM6CgoKCgoKCgoKCiAKIAogCiAKIApwcm90ZWN0ZWQ6CgogICB2b2lk
IGNvbnN0cnVjdCgpOwogICAgCgogCiAKIAogCiAgIHZvaWQgd3JpdGUoY29uc3QgZnhwT3FTdGF0
KiBzdGF0KTsKICAgIAoKICAgTnVtYmVyKCk7CiAgIE51bWJlcihjb25zdCBOdW1iZXImIG8pOwoK
CgoKCiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgTnVtYmVyKGNvbnN0IGZ4
cE9wZXI8Q01ELE9QVD4mIGNtZCk7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAg
ICAgTnVtYmVyKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIGNtZCxjb25zdCBmeHBPcWMqIGJ0Yyk7
CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgTnVtYmVyKGNvbnN0IGZ4cE9w
ZXI8Q01ELE9QVD4mIGNtZCxjb25zdCBmeHBPcWMgYnRjKTsKCiAgIE51bWJlcihjb25zdCBjaGFy
KiBzdHIpOwogICBOdW1iZXIoY29uc3QgZnhwUmVzJiBjbWQpOwogICBOdW1iZXIoY29uc3QgZnhw
UmVzQiYgY21kKTsKCiAgICAKICAgICBOdW1iZXIgKCAgICAgZG91YmxlICAgZCApICA7ICAgTnVt
YmVyICggICAgIGZsb2F0ICAgZCApICA7ICAgTnVtYmVyICggICAgIGJvb2wgICBkICkgIDsgICBO
dW1iZXIgKCAgICAgY2hhciAgIGQgKSAgOyAgIE51bWJlciAoICAgICBzaG9ydCAgIGQgKSAgOyAg
IE51bWJlciAoICAgICBpbnQgICBkICkgIDsgICBOdW1iZXIgKCAgICAgbG9uZyAgIGQgKSAgOyAg
IE51bWJlciAoICAgICB1bnNpZ25lZCBjaGFyICAgZCApICA7ICAgTnVtYmVyICggICAgIHVuc2ln
bmVkIHNob3J0ICAgZCApICA7ICAgTnVtYmVyICggICAgIHVuc2lnbmVkIGludCAgIGQgKSAgOyAg
IE51bWJlciAoICAgICB1bnNpZ25lZCBsb25nICAgZCApICA7IAoKICAgIAogICAgIE51bWJlciAo
ICAgICBkb3VibGUgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRjICkgIDsgICBOdW1iZXIgKCAgICAg
ZmxvYXQgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRjICkgIDsgICBOdW1iZXIgKCAgICAgYm9vbCAg
IGQgLCAgY29uc3QgZnhwT3FjKiBidGMgKSAgOyAgIE51bWJlciAoICAgICBjaGFyICAgZCAsICBj
b25zdCBmeHBPcWMqIGJ0YyApICA7ICAgTnVtYmVyICggICAgIHNob3J0ICAgZCAsICBjb25zdCBm
eHBPcWMqIGJ0YyApICA7ICAgTnVtYmVyICggICAgIGludCAgIGQgLCAgY29uc3QgZnhwT3FjKiBi
dGMgKSAgOyAgIE51bWJlciAoICAgICBsb25nICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyApICA7
ICAgTnVtYmVyICggICAgIHVuc2lnbmVkIGNoYXIgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRjICkg
IDsgICBOdW1iZXIgKCAgICAgdW5zaWduZWQgc2hvcnQgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRj
ICkgIDsgICBOdW1iZXIgKCAgICAgdW5zaWduZWQgaW50ICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0
YyApICA7ICAgTnVtYmVyICggICAgIHVuc2lnbmVkIGxvbmcgICBkICwgIGNvbnN0IGZ4cE9xYyog
YnRjICkgIDsgCgogICAgCiAgICAgTnVtYmVyICggICAgIGRvdWJsZSAgIGQgLCAgY29uc3QgZnhw
T3FjIGJ0YyApICA7ICAgTnVtYmVyICggICAgIGZsb2F0ICAgZCAsICBjb25zdCBmeHBPcWMgYnRj
ICkgIDsgICBOdW1iZXIgKCAgICAgYm9vbCAgIGQgLCAgY29uc3QgZnhwT3FjIGJ0YyApICA7ICAg
TnVtYmVyICggICAgIGNoYXIgICBkICwgIGNvbnN0IGZ4cE9xYyBidGMgKSAgOyAgIE51bWJlciAo
ICAgICBzaG9ydCAgIGQgLCAgY29uc3QgZnhwT3FjIGJ0YyApICA7ICAgTnVtYmVyICggICAgIGlu
dCAgIGQgLCAgY29uc3QgZnhwT3FjIGJ0YyApICA7ICAgTnVtYmVyICggICAgIGxvbmcgICBkICwg
IGNvbnN0IGZ4cE9xYyBidGMgKSAgOyAgIE51bWJlciAoICAgICB1bnNpZ25lZCBjaGFyICAgZCAs
ICBjb25zdCBmeHBPcWMgYnRjICkgIDsgICBOdW1iZXIgKCAgICAgdW5zaWduZWQgc2hvcnQgICBk
ICwgIGNvbnN0IGZ4cE9xYyBidGMgKSAgOyAgIE51bWJlciAoICAgICB1bnNpZ25lZCBpbnQgICBk
ICwgIGNvbnN0IGZ4cE9xYyBidGMgKSAgOyAgIE51bWJlciAoICAgICB1bnNpZ25lZCBsb25nICAg
ZCAsICBjb25zdCBmeHBPcWMgYnRjICkgIDsgCgpwdWJsaWM6ICAKICAgIAogICB1bnNpZ25lZCBz
aG9ydCBkX3N0WyAoVy0xKS8xNiArIDEgXTsKfTsKCgogCiAKIAogCiAKIAoKdGVtcGxhdGU8aW50
IFcsIGludCBQPiBjbGFzcyBGaXggOiBwdWJsaWMgTnVtYmVyPDEsVyxQPiB7CnB1YmxpYzoKICAg
Rml4KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOk51bWJlcjwxLFcsUD4o
KXt9OwogICB+Rml4KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWYgKDAp
IHtkZWMoKTtjc2QoKTtiaW4oKTtiaW5TbSgpO2JwQmluKCk7YnBCaW5TbSgpO29jdCgpO29jdFNt
KCk7YnBPY3QoKTticE9jdFNtKCk7aGV4KCk7aGV4U20oKTticEhleCgpO2JwSGV4U20oKTtkYmco
KTt9OyB9OwoKCgoKCgoKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgogICAgICBGaXgo
Y29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgY21kLGNvbnN0IGZ4cE9xYyogYnRjKTsKCiAgIEZpeChj
b25zdCBGaXgmIGEsY29uc3QgZnhwT3FjKiBidGMpICAgICAgIDpOdW1iZXI8MSxXLFA+KCthLGJ0
Yyl7fTsKICAgRml4KGNvbnN0IGZ4cEFyZyYgYSxjb25zdCBmeHBPcWMqIGJ0YykgICAgOk51bWJl
cjwxLFcsUD4oK2EsYnRjKXt9OwogICAgCiAgICAgRml4ICggICAgICBkb3VibGUgICBkICwgIGNv
bnN0IGZ4cE9xYyogYnRjICkgIDpOdW1iZXI8MSAsICBXICwgIFA+ICggIGQgLCAgYnRjICkge30g
OyAgIEZpeCAoICAgICAgZmxvYXQgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRjICkgIDpOdW1iZXI8
MSAsICBXICwgIFA+ICggIGQgLCAgYnRjICkge30gOyAgIEZpeCAoICAgICAgYm9vbCAgIGQgLCAg
Y29uc3QgZnhwT3FjKiBidGMgKSAgOk51bWJlcjwxICwgIFcgLCAgUD4gKCAgZCAsICBidGMgKSB7
fSA7ICAgRml4ICggICAgICBjaGFyICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyApICA6TnVtYmVy
PDEgLCAgVyAsICBQPiAoICBkICwgIGJ0YyApIHt9IDsgICBGaXggKCAgICAgIHNob3J0ICAgZCAs
ICBjb25zdCBmeHBPcWMqIGJ0YyApICA6TnVtYmVyPDEgLCAgVyAsICBQPiAoICBkICwgIGJ0YyAp
IHt9IDsgICBGaXggKCAgICAgIGludCAgIGQgLCAgY29uc3QgZnhwT3FjKiBidGMgKSAgOk51bWJl
cjwxICwgIFcgLCAgUD4gKCAgZCAsICBidGMgKSB7fSA7ICAgRml4ICggICAgICBsb25nICAgZCAs
ICBjb25zdCBmeHBPcWMqIGJ0YyApICA6TnVtYmVyPDEgLCAgVyAsICBQPiAoICBkICwgIGJ0YyAp
IHt9IDsgICBGaXggKCAgICAgIHVuc2lnbmVkIGNoYXIgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRj
ICkgIDpOdW1iZXI8MSAsICBXICwgIFA+ICggIGQgLCAgYnRjICkge30gOyAgIEZpeCAoICAgICAg
dW5zaWduZWQgc2hvcnQgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRjICkgIDpOdW1iZXI8MSAsICBX
ICwgIFA+ICggIGQgLCAgYnRjICkge30gOyAgIEZpeCAoICAgICAgdW5zaWduZWQgaW50ICAgZCAs
ICBjb25zdCBmeHBPcWMqIGJ0YyApICA6TnVtYmVyPDEgLCAgVyAsICBQPiAoICBkICwgIGJ0YyAp
IHt9IDsgICBGaXggKCAgICAgIHVuc2lnbmVkIGxvbmcgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRj
ICkgIDpOdW1iZXI8MSAsICBXICwgIFA+ICggIGQgLCAgYnRjICkge30gOyAKCiAgIEZpeChjb25z
dCBjaGFyKiBzdHIpICAgICAgICAgICAgICAgICAgICAgIDpOdW1iZXI8MSxXLFA+KHN0cil7fTsg
IAoKCgogICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAgICAgIEZpeChjb25zdCBmeHBP
cGVyPENNRCxPUFQ+JiBjbWQpOwoKICAgRml4KGNvbnN0IEZpeCYgYSkgICAgICAgICAgICAgICAg
ICAgICAgICAgOk51bWJlcjwxLFcsUD4oYSl7fTsKICAgRml4KGNvbnN0IGZ4cEFyZyYgYSkgICAg
ICAgICAgICAgICAgICAgICAgOk51bWJlcjwxLFcsUD4oK2Epe307CiAgICAKICAgICBGaXggKCAg
ICAgIGRvdWJsZSAgIGQgKSAgOk51bWJlcjwxICwgIFcgLCAgUD4gKCAgZCApIHt9IDsgICBGaXgg
KCAgICAgIGZsb2F0ICAgZCApICA6TnVtYmVyPDEgLCAgVyAsICBQPiAoICBkICkge30gOyAgIEZp
eCAoICAgICAgYm9vbCAgIGQgKSAgOk51bWJlcjwxICwgIFcgLCAgUD4gKCAgZCApIHt9IDsgICBG
aXggKCAgICAgIGNoYXIgICBkICkgIDpOdW1iZXI8MSAsICBXICwgIFA+ICggIGQgKSB7fSA7ICAg
Rml4ICggICAgICBzaG9ydCAgIGQgKSAgOk51bWJlcjwxICwgIFcgLCAgUD4gKCAgZCApIHt9IDsg
ICBGaXggKCAgICAgIGludCAgIGQgKSAgOk51bWJlcjwxICwgIFcgLCAgUD4gKCAgZCApIHt9IDsg
ICBGaXggKCAgICAgIGxvbmcgICBkICkgIDpOdW1iZXI8MSAsICBXICwgIFA+ICggIGQgKSB7fSA7
ICAgRml4ICggICAgICB1bnNpZ25lZCBjaGFyICAgZCApICA6TnVtYmVyPDEgLCAgVyAsICBQPiAo
ICBkICkge30gOyAgIEZpeCAoICAgICAgdW5zaWduZWQgc2hvcnQgICBkICkgIDpOdW1iZXI8MSAs
ICBXICwgIFA+ICggIGQgKSB7fSA7ICAgRml4ICggICAgICB1bnNpZ25lZCBpbnQgICBkICkgIDpO
dW1iZXI8MSAsICBXICwgIFA+ICggIGQgKSB7fSA7ICAgRml4ICggICAgICB1bnNpZ25lZCBsb25n
ICAgZCApICA6TnVtYmVyPDEgLCAgVyAsICBQPiAoICBkICkge30gOyAKCiAgIEZpeChjb25zdCBm
eHBSZXMmIGEpICAgICAgICAgICAgICAgICAgICAgIDpOdW1iZXI8MSxXLFA+KGEpe307CiAgIEZp
eChjb25zdCBmeHBSZXNCJiBhKSAgICAgICAgICAgICAgICAgICAgIDpOdW1iZXI8MSxXLFA+KGEp
e307CgogICBmeHBSZXNCIGJpdChpbnQgZnJvbSk7CiAgIGZ4cFJlcyAgc2xpY2UoaW50IGZyb20s
IGludCB0byk7CiAgIGZ4cFJlcyAgcmFuZ2UoaW50IGZyb20sIGludCB0byk7CiAgIGZ4cFJlcyAg
cmFuZ2UoKTsKICAgY29uc3QgZnhwUmVzQiBiaXQoaW50IGZyb20pIGNvbnN0OwogICBjb25zdCBm
eHBSZXMgIHNsaWNlKGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogICBjb25zdCBmeHBSZXMgIHJh
bmdlKGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogICBjb25zdCBmeHBSZXMgIHJhbmdlKCkgY29u
c3Q7CiAgIEZpeCYgc2xpY2UoaW50IGZyb20sIGludCB0bywgY29uc3QgZnhwQXJnIHNlYyk7Cgog
ICBGaXgmIG9wZXJhdG9yICs9IChjb25zdCBGaXgmIG8pOwogICBGaXgmIG9wZXJhdG9yIC09IChj
b25zdCBGaXgmIG8pOwogICBGaXgmIG9wZXJhdG9yICo9IChjb25zdCBGaXgmIG8pOwoKICAgRml4
JiBvcGVyYXRvciA9IChjb25zdCBGaXgmIG8pOwogICBGaXgmIG9wZXJhdG9yID0gKGNvbnN0IGNo
YXIqIHN0cik7ICAKICAgRml4JiBvcGVyYXRvciA9IChjb25zdCBmeHBSZXNCJiBjbWQpOwogICBG
aXgmIG9wZXJhdG9yID0gKGNvbnN0IGZ4cFJlcyYgY21kKTsKICAgRml4JiBvcGVyYXRvciA9IChj
b25zdCBmeHBBcmcmICBzKTsKCgoKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgogICAg
ICBGaXgmIG9wZXJhdG9yID0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpOwoKICAgIAogICAg
IEZpeCYgb3BlcmF0b3IgPSAoICAgICBkb3VibGUgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3Ig
PSAoICAgICBmbG9hdCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciA9ICggICAgIGJvb2wgICAg
cyApICAgOyAgIEZpeCYgb3BlcmF0b3IgPSAoICAgICBjaGFyICAgIHMgKSAgIDsgICBGaXgmIG9w
ZXJhdG9yID0gKCAgICAgc2hvcnQgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgPSAoICAgICBp
bnQgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgPSAoICAgICBsb25nICAgIHMgKSAgIDsgICBG
aXgmIG9wZXJhdG9yID0gKCAgICAgdW5zaWduZWQgY2hhciAgICBzICkgICA7ICAgRml4JiBvcGVy
YXRvciA9ICggICAgIHVuc2lnbmVkIHNob3J0ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yID0g
KCAgICAgdW5zaWduZWQgaW50ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yID0gKCAgICAgdW5z
aWduZWQgbG9uZyAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciA9ICggICAgIGNvbnN0IHZvaWQq
ICAgIHMgKSAgIDsgCiAgIEZpeCYgb3BlcmF0b3IgKz0gKGNvbnN0IGZ4cEFyZyYgIHMpOwogICAg
CiAgICAgRml4JiBvcGVyYXRvciArPSAoICAgICBkb3VibGUgICAgcyApICAgOyAgIEZpeCYgb3Bl
cmF0b3IgKz0gKCAgICAgZmxvYXQgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgKz0gKCAgICAg
Ym9vbCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciArPSAoICAgICBjaGFyICAgIHMgKSAgIDsg
ICBGaXgmIG9wZXJhdG9yICs9ICggICAgIHNob3J0ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9y
ICs9ICggICAgIGludCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciArPSAoICAgICBsb25nICAg
IHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICs9ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyApICAg
OyAgIEZpeCYgb3BlcmF0b3IgKz0gKCAgICAgdW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAgIEZp
eCYgb3BlcmF0b3IgKz0gKCAgICAgdW5zaWduZWQgaW50ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJh
dG9yICs9ICggICAgIHVuc2lnbmVkIGxvbmcgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgKz0g
KCAgICAgY29uc3Qgdm9pZCogICAgcyApICAgOyAKICAgRml4JiBvcGVyYXRvciAtPSAoY29uc3Qg
ZnhwQXJnJiAgcyk7CiAgICAKICAgICBGaXgmIG9wZXJhdG9yIC09ICggICAgIGRvdWJsZSAgICBz
ICkgICA7ICAgRml4JiBvcGVyYXRvciAtPSAoICAgICBmbG9hdCAgICBzICkgICA7ICAgRml4JiBv
cGVyYXRvciAtPSAoICAgICBib29sICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yIC09ICggICAg
IGNoYXIgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgLT0gKCAgICAgc2hvcnQgICAgcyApICAg
OyAgIEZpeCYgb3BlcmF0b3IgLT0gKCAgICAgaW50ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9y
IC09ICggICAgIGxvbmcgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgLT0gKCAgICAgdW5zaWdu
ZWQgY2hhciAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAtPSAoICAgICB1bnNpZ25lZCBzaG9y
dCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAtPSAoICAgICB1bnNpZ25lZCBpbnQgICAgcyAp
ICAgOyAgIEZpeCYgb3BlcmF0b3IgLT0gKCAgICAgdW5zaWduZWQgbG9uZyAgICBzICkgICA7ICAg
Rml4JiBvcGVyYXRvciAtPSAoICAgICBjb25zdCB2b2lkKiAgICBzICkgICA7IAogICBGaXgmIG9w
ZXJhdG9yICo9IChjb25zdCBmeHBBcmcmICBzKTsKICAgIAogICAgIEZpeCYgb3BlcmF0b3IgKj0g
KCAgICAgZG91YmxlICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICo9ICggICAgIGZsb2F0ICAg
IHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICo9ICggICAgIGJvb2wgICAgcyApICAgOyAgIEZpeCYg
b3BlcmF0b3IgKj0gKCAgICAgY2hhciAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAqPSAoICAg
ICBzaG9ydCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAqPSAoICAgICBpbnQgICAgcyApICAg
OyAgIEZpeCYgb3BlcmF0b3IgKj0gKCAgICAgbG9uZyAgICBzICkgICA7ICAgRml4JiBvcGVyYXRv
ciAqPSAoICAgICB1bnNpZ25lZCBjaGFyICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICo9ICgg
ICAgIHVuc2lnbmVkIHNob3J0ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICo9ICggICAgIHVu
c2lnbmVkIGludCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAqPSAoICAgICB1bnNpZ25lZCBs
b25nICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICo9ICggICAgIGNvbnN0IHZvaWQqICAgIHMg
KSAgIDsgCiAgIEZpeCYgb3BlcmF0b3IgPDw9IChjb25zdCBmeHBBcmcmICBzKTsKICAgIAogICAg
IEZpeCYgb3BlcmF0b3IgPDw9ICggICAgIGRvdWJsZSAgICBzICkgICA7ICAgRml4JiBvcGVyYXRv
ciA8PD0gKCAgICAgZmxvYXQgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgPDw9ICggICAgIGJv
b2wgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgPDw9ICggICAgIGNoYXIgICAgcyApICAgOyAg
IEZpeCYgb3BlcmF0b3IgPDw9ICggICAgIHNob3J0ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9y
IDw8PSAoICAgICBpbnQgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgPDw9ICggICAgIGxvbmcg
ICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgPDw9ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyAp
ICAgOyAgIEZpeCYgb3BlcmF0b3IgPDw9ICggICAgIHVuc2lnbmVkIHNob3J0ICAgIHMgKSAgIDsg
ICBGaXgmIG9wZXJhdG9yIDw8PSAoICAgICB1bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIEZpeCYg
b3BlcmF0b3IgPDw9ICggICAgIHVuc2lnbmVkIGxvbmcgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0
b3IgPDw9ICggICAgIGNvbnN0IHZvaWQqICAgIHMgKSAgIDsgCiAgIEZpeCYgb3BlcmF0b3IgPj49
IChjb25zdCBmeHBBcmcmICBzKTsKICAgIAogICAgIEZpeCYgb3BlcmF0b3IgPj49ICggICAgIGRv
dWJsZSAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciA+Pj0gKCAgICAgZmxvYXQgICAgcyApICAg
OyAgIEZpeCYgb3BlcmF0b3IgPj49ICggICAgIGJvb2wgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0
b3IgPj49ICggICAgIGNoYXIgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgPj49ICggICAgIHNo
b3J0ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yID4+PSAoICAgICBpbnQgICAgcyApICAgOyAg
IEZpeCYgb3BlcmF0b3IgPj49ICggICAgIGxvbmcgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3Ig
Pj49ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgPj49ICgg
ICAgIHVuc2lnbmVkIHNob3J0ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yID4+PSAoICAgICB1
bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgPj49ICggICAgIHVuc2lnbmVk
IGxvbmcgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgPj49ICggICAgIGNvbnN0IHZvaWQqICAg
IHMgKSAgIDsgCiAgIEZpeCYgb3BlcmF0b3IgLz0gKGNvbnN0IGZ4cEFyZyYgIHMpOwogICAgCiAg
ICAgRml4JiBvcGVyYXRvciAvPSAoICAgICBkb3VibGUgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0
b3IgLz0gKCAgICAgZmxvYXQgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgLz0gKCAgICAgYm9v
bCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAvPSAoICAgICBjaGFyICAgIHMgKSAgIDsgICBG
aXgmIG9wZXJhdG9yIC89ICggICAgIHNob3J0ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yIC89
ICggICAgIGludCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAvPSAoICAgICBsb25nICAgIHMg
KSAgIDsgICBGaXgmIG9wZXJhdG9yIC89ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyApICAgOyAg
IEZpeCYgb3BlcmF0b3IgLz0gKCAgICAgdW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAgIEZpeCYg
b3BlcmF0b3IgLz0gKCAgICAgdW5zaWduZWQgaW50ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9y
IC89ICggICAgIHVuc2lnbmVkIGxvbmcgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgLz0gKCAg
ICAgY29uc3Qgdm9pZCogICAgcyApICAgOyAKICAgRml4JiBvcGVyYXRvciAlPSAoY29uc3QgZnhw
QXJnJiAgcyk7CiAgICAKICAgICBGaXgmIG9wZXJhdG9yICU9ICggICAgIGRvdWJsZSAgICBzICkg
ICA7ICAgRml4JiBvcGVyYXRvciAlPSAoICAgICBmbG9hdCAgICBzICkgICA7ICAgRml4JiBvcGVy
YXRvciAlPSAoICAgICBib29sICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICU9ICggICAgIGNo
YXIgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgJT0gKCAgICAgc2hvcnQgICAgcyApICAgOyAg
IEZpeCYgb3BlcmF0b3IgJT0gKCAgICAgaW50ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICU9
ICggICAgIGxvbmcgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgJT0gKCAgICAgdW5zaWduZWQg
Y2hhciAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAlPSAoICAgICB1bnNpZ25lZCBzaG9ydCAg
ICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAlPSAoICAgICB1bnNpZ25lZCBpbnQgICAgcyApICAg
OyAgIEZpeCYgb3BlcmF0b3IgJT0gKCAgICAgdW5zaWduZWQgbG9uZyAgICBzICkgICA7ICAgRml4
JiBvcGVyYXRvciAlPSAoICAgICBjb25zdCB2b2lkKiAgICBzICkgICA7IAogICBGaXgmIG9wZXJh
dG9yICY9IChjb25zdCBmeHBBcmcmICBzKTsKICAgIAogICAgIEZpeCYgb3BlcmF0b3IgJj0gKCAg
ICAgZG91YmxlICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICY9ICggICAgIGZsb2F0ICAgIHMg
KSAgIDsgICBGaXgmIG9wZXJhdG9yICY9ICggICAgIGJvb2wgICAgcyApICAgOyAgIEZpeCYgb3Bl
cmF0b3IgJj0gKCAgICAgY2hhciAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAmPSAoICAgICBz
aG9ydCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAmPSAoICAgICBpbnQgICAgcyApICAgOyAg
IEZpeCYgb3BlcmF0b3IgJj0gKCAgICAgbG9uZyAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAm
PSAoICAgICB1bnNpZ25lZCBjaGFyICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICY9ICggICAg
IHVuc2lnbmVkIHNob3J0ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICY9ICggICAgIHVuc2ln
bmVkIGludCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciAmPSAoICAgICB1bnNpZ25lZCBsb25n
ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yICY9ICggICAgIGNvbnN0IHZvaWQqICAgIHMgKSAg
IDsgCiAgIEZpeCYgb3BlcmF0b3IgfD0gKGNvbnN0IGZ4cEFyZyYgIHMpOwogICAgCiAgICAgRml4
JiBvcGVyYXRvciB8PSAoICAgICBkb3VibGUgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgfD0g
KCAgICAgZmxvYXQgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgfD0gKCAgICAgYm9vbCAgICBz
ICkgICA7ICAgRml4JiBvcGVyYXRvciB8PSAoICAgICBjaGFyICAgIHMgKSAgIDsgICBGaXgmIG9w
ZXJhdG9yIHw9ICggICAgIHNob3J0ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yIHw9ICggICAg
IGludCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciB8PSAoICAgICBsb25nICAgIHMgKSAgIDsg
ICBGaXgmIG9wZXJhdG9yIHw9ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyApICAgOyAgIEZpeCYg
b3BlcmF0b3IgfD0gKCAgICAgdW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0
b3IgfD0gKCAgICAgdW5zaWduZWQgaW50ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yIHw9ICgg
ICAgIHVuc2lnbmVkIGxvbmcgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgfD0gKCAgICAgY29u
c3Qgdm9pZCogICAgcyApICAgOyAKICAgRml4JiBvcGVyYXRvciBePSAoY29uc3QgZnhwQXJnJiAg
cyk7CiAgICAKICAgICBGaXgmIG9wZXJhdG9yIF49ICggICAgIGRvdWJsZSAgICBzICkgICA7ICAg
Rml4JiBvcGVyYXRvciBePSAoICAgICBmbG9hdCAgICBzICkgICA7ICAgRml4JiBvcGVyYXRvciBe
PSAoICAgICBib29sICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yIF49ICggICAgIGNoYXIgICAg
cyApICAgOyAgIEZpeCYgb3BlcmF0b3IgXj0gKCAgICAgc2hvcnQgICAgcyApICAgOyAgIEZpeCYg
b3BlcmF0b3IgXj0gKCAgICAgaW50ICAgIHMgKSAgIDsgICBGaXgmIG9wZXJhdG9yIF49ICggICAg
IGxvbmcgICAgcyApICAgOyAgIEZpeCYgb3BlcmF0b3IgXj0gKCAgICAgdW5zaWduZWQgY2hhciAg
ICBzICkgICA7ICAgRml4JiBvcGVyYXRvciBePSAoICAgICB1bnNpZ25lZCBzaG9ydCAgICBzICkg
ICA7ICAgRml4JiBvcGVyYXRvciBePSAoICAgICB1bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIEZp
eCYgb3BlcmF0b3IgXj0gKCAgICAgdW5zaWduZWQgbG9uZyAgICBzICkgICA7ICAgRml4JiBvcGVy
YXRvciBePSAoICAgICBjb25zdCB2b2lkKiAgICBzICkgICA7IAoKIyAxODU1ICIvZWRjL3dhL2Jl
bmVkaWN0L2YzX2lkNi9jc2ZnL2hwdV9nbnUvRmRfaG9tZS9pbmNsdWRlL2Z4cC5oIgoKICAgdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgogICAgICBGaXgmIG9wZXJhdG9yICs9ICAoY29uc3Qg
ZnhwT3BlcjxDTUQsT1BUPiYgcyk7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAg
ICAgRml4JiBvcGVyYXRvciAtPSAgKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpOwogICB0ZW1w
bGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAgICAgIEZpeCYgb3BlcmF0b3IgKj0gIChjb25zdCBm
eHBPcGVyPENNRCxPUFQ+JiBzKTsKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgogICAg
ICBGaXgmIG9wZXJhdG9yIDw8PSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7CiAgIHRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgRml4JiBvcGVyYXRvciA+Pj0gKGNvbnN0IGZ4
cE9wZXI8Q01ELE9QVD4mIHMpOwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAgICAg
IEZpeCYgb3BlcmF0b3IgLz0gIChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKTsKICAgdGVtcGxh
dGU8U29sX29wIENNRCxpbnQgT1BUPgogICAgICBGaXgmIG9wZXJhdG9yICU9ICAoY29uc3QgZnhw
T3BlcjxDTUQsT1BUPiYgcyk7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAg
Rml4JiBvcGVyYXRvciAmPSAgKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpOwogICB0ZW1wbGF0
ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAgICAgIEZpeCYgb3BlcmF0b3IgfD0gIChjb25zdCBmeHBP
cGVyPENNRCxPUFQ+JiBzKTsKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgogICAgICBG
aXgmIG9wZXJhdG9yIF49ICAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7CgoKCgogICAgCiAg
IGNvbnN0IGNoYXIqIGRlYygpICAgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRfdHlwZS0+ZGVjKHRo
aXMtPmRfc3QpO30KICAgY29uc3QgY2hhciogY3NkKCkgICAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+
ZF90eXBlLT5jc2QodGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBiaW4oKSAgICAgY29uc3Qg
e3JldHVybiB0aGlzLT5kX3R5cGUtPmJpbih0aGlzLT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIGJp
blNtKCkgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRfdHlwZS0+YmluU20odGhpcy0+ZF9zdCk7fQog
ICBjb25zdCBjaGFyKiBicEJpbigpICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmJwQmlu
KHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hhciogYnBCaW5TbSgpIGNvbnN0IHtyZXR1cm4gdGhp
cy0+ZF90eXBlLT5icEJpblNtKHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hhciogb2N0KCkgICAg
IGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5vY3QodGhpcy0+ZF9zdCk7fQogICBjb25zdCBj
aGFyKiBvY3RTbSgpICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPm9jdFNtKHRoaXMtPmRf
c3QpO30KICAgY29uc3QgY2hhciogYnBPY3QoKSAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBl
LT5icE9jdCh0aGlzLT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIGJwT2N0U20oKSBjb25zdCB7cmV0
dXJuIHRoaXMtPmRfdHlwZS0+YnBPY3RTbSh0aGlzLT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIGhl
eCgpICAgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRfdHlwZS0+aGV4KHRoaXMtPmRfc3QpO30KICAg
Y29uc3QgY2hhciogaGV4U20oKSAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5oZXhTbSh0
aGlzLT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIGJwSGV4KCkgICBjb25zdCB7cmV0dXJuIHRoaXMt
PmRfdHlwZS0+YnBIZXgodGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBicEhleFNtKCkgY29u
c3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmJwSGV4U20odGhpcy0+ZF9zdCk7fQogICBjb25zdCBj
aGFyKiBkYmcoKSAgICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmRiZyh0aGlzLT5kX3N0
KTt9Cgp9OwoKIAogCiAKIAogCiAKIAoKdGVtcGxhdGU8aW50IFc+IGNsYXNzIEludCA6IHB1Ymxp
YyBGaXg8VywwPiB7CnB1YmxpYzoKICAgSW50KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOkZpeDxXLDA+KCl7fTsKICAgfkludCgpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge2lmICgwKSB7ZGVjKCk7Y3NkKCk7YmluKCk7YmluU20oKTticEJpbigpO2Jw
QmluU20oKTtvY3QoKTtvY3RTbSgpO2JwT2N0KCk7YnBPY3RTbSgpO2hleCgpO2hleFNtKCk7YnBI
ZXgoKTticEhleFNtKCk7ZGJnKCk7fTsgfTsKCgoKCgoKCiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQs
aW50IE9QVD4KICAgICAgSW50KGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIGNtZCxjb25zdCBmeHBP
cWMqIGJ0Yyk7CgogICBJbnQoY29uc3QgSW50JiBhLGNvbnN0IGZ4cE9xYyogYnRjKSAgICAgICA6
Rml4PFcsMD4oK2EsYnRjKXt9OwogICBJbnQoY29uc3QgZnhwQXJnJiBhLGNvbnN0IGZ4cE9xYyog
YnRjKSAgICA6Rml4PFcsMD4oK2EsYnRjKXt9OwogICAgCiAgICAgSW50ICggICAgICBkb3VibGUg
ICBkICwgIGNvbnN0IGZ4cE9xYyogYnRjICkgIDpGaXg8IFcgLCAgMD4gKCAgZCAsICBidGMgKSB7
fSA7ICAgSW50ICggICAgICBmbG9hdCAgIGQgLCAgY29uc3QgZnhwT3FjKiBidGMgKSAgOkZpeDwg
VyAsICAwPiAoICBkICwgIGJ0YyApIHt9IDsgICBJbnQgKCAgICAgIGJvb2wgICBkICwgIGNvbnN0
IGZ4cE9xYyogYnRjICkgIDpGaXg8IFcgLCAgMD4gKCAgZCAsICBidGMgKSB7fSA7ICAgSW50ICgg
ICAgICBjaGFyICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyApICA6Rml4PCBXICwgIDA+ICggIGQg
LCAgYnRjICkge30gOyAgIEludCAoICAgICAgc2hvcnQgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRj
ICkgIDpGaXg8IFcgLCAgMD4gKCAgZCAsICBidGMgKSB7fSA7ICAgSW50ICggICAgICBpbnQgICBk
ICwgIGNvbnN0IGZ4cE9xYyogYnRjICkgIDpGaXg8IFcgLCAgMD4gKCAgZCAsICBidGMgKSB7fSA7
ICAgSW50ICggICAgICBsb25nICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyApICA6Rml4PCBXICwg
IDA+ICggIGQgLCAgYnRjICkge30gOyAgIEludCAoICAgICAgdW5zaWduZWQgY2hhciAgIGQgLCAg
Y29uc3QgZnhwT3FjKiBidGMgKSAgOkZpeDwgVyAsICAwPiAoICBkICwgIGJ0YyApIHt9IDsgICBJ
bnQgKCAgICAgIHVuc2lnbmVkIHNob3J0ICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyApICA6Rml4
PCBXICwgIDA+ICggIGQgLCAgYnRjICkge30gOyAgIEludCAoICAgICAgdW5zaWduZWQgaW50ICAg
ZCAsICBjb25zdCBmeHBPcWMqIGJ0YyApICA6Rml4PCBXICwgIDA+ICggIGQgLCAgYnRjICkge30g
OyAgIEludCAoICAgICAgdW5zaWduZWQgbG9uZyAgIGQgLCAgY29uc3QgZnhwT3FjKiBidGMgKSAg
OkZpeDwgVyAsICAwPiAoICBkICwgIGJ0YyApIHt9IDsgCgogICBJbnQoY29uc3QgY2hhciogc3Ry
KSAgICAgICAgICAgICAgICAgICAgICA6Rml4PFcsMD4oc3RyKXt9OyAgCgoKCiAgIHRlbXBsYXRl
PFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgSW50KGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIGNt
ZCk7CgogICBJbnQoY29uc3QgSW50JiBhKSAgICAgICAgICAgICAgICAgICAgICAgICA6Rml4PFcs
MD4oYSl7fTsKICAgSW50KGNvbnN0IGZ4cEFyZyYgYSkgICAgICAgICAgICAgICAgICAgICAgOkZp
eDxXLDA+KCthKXt9OwogICAgCiAgICAgSW50ICggICAgICBkb3VibGUgICBkICkgIDpGaXg8IFcg
LCAgMD4gKCAgZCApIHt9IDsgICBJbnQgKCAgICAgIGZsb2F0ICAgZCApICA6Rml4PCBXICwgIDA+
ICggIGQgKSB7fSA7ICAgSW50ICggICAgICBib29sICAgZCApICA6Rml4PCBXICwgIDA+ICggIGQg
KSB7fSA7ICAgSW50ICggICAgICBjaGFyICAgZCApICA6Rml4PCBXICwgIDA+ICggIGQgKSB7fSA7
ICAgSW50ICggICAgICBzaG9ydCAgIGQgKSAgOkZpeDwgVyAsICAwPiAoICBkICkge30gOyAgIElu
dCAoICAgICAgaW50ICAgZCApICA6Rml4PCBXICwgIDA+ICggIGQgKSB7fSA7ICAgSW50ICggICAg
ICBsb25nICAgZCApICA6Rml4PCBXICwgIDA+ICggIGQgKSB7fSA7ICAgSW50ICggICAgICB1bnNp
Z25lZCBjaGFyICAgZCApICA6Rml4PCBXICwgIDA+ICggIGQgKSB7fSA7ICAgSW50ICggICAgICB1
bnNpZ25lZCBzaG9ydCAgIGQgKSAgOkZpeDwgVyAsICAwPiAoICBkICkge30gOyAgIEludCAoICAg
ICAgdW5zaWduZWQgaW50ICAgZCApICA6Rml4PCBXICwgIDA+ICggIGQgKSB7fSA7ICAgSW50ICgg
ICAgICB1bnNpZ25lZCBsb25nICAgZCApICA6Rml4PCBXICwgIDA+ICggIGQgKSB7fSA7IAoKICAg
SW50KGNvbnN0IGZ4cFJlcyYgYSkgICAgICAgICAgICAgICAgICAgICAgOkZpeDxXLDA+KGEpe307
CiAgIEludChjb25zdCBmeHBSZXNCJiBhKSAgICAgICAgICAgICAgICAgICAgIDpGaXg8VywwPihh
KXt9OwoKICAgZnhwUmVzQiBiaXQoaW50IGZyb20pOwogICBmeHBSZXMgIHNsaWNlKGludCBmcm9t
LCBpbnQgdG8pOwogICBmeHBSZXMgIHJhbmdlKGludCBmcm9tLCBpbnQgdG8pOwogICBmeHBSZXMg
IHJhbmdlKCk7CiAgIGNvbnN0IGZ4cFJlc0IgYml0KGludCBmcm9tKSBjb25zdDsKICAgY29uc3Qg
ZnhwUmVzICBzbGljZShpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKICAgY29uc3QgZnhwUmVzICBy
YW5nZShpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKICAgY29uc3QgZnhwUmVzICByYW5nZSgpIGNv
bnN0OwogICBJbnQmIHNsaWNlKGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IGZ4cEFyZyBzZWMpOwoK
ICAgSW50JiBvcGVyYXRvciArPSAoY29uc3QgSW50JiBvKTsKICAgSW50JiBvcGVyYXRvciAtPSAo
Y29uc3QgSW50JiBvKTsKICAgSW50JiBvcGVyYXRvciAqPSAoY29uc3QgSW50JiBvKTsKCiAgICAK
ICAgSW50JiBvcGVyYXRvciArKyAoKTsKICAgSW50JiBvcGVyYXRvciAtLSAoKTsKCiAgICAKICAg
SW50IG9wZXJhdG9yICsrIChpbnQpOwogICBJbnQgb3BlcmF0b3IgLS0gKGludCk7CgogICBJbnQm
IG9wZXJhdG9yID0gKGNvbnN0IEludCYgbyk7CiAgIEludCYgb3BlcmF0b3IgPSAoY29uc3QgY2hh
ciogc3RyKTsgIAogICBJbnQmIG9wZXJhdG9yID0gKGNvbnN0IGZ4cFJlc0ImIGNtZCk7CiAgIElu
dCYgb3BlcmF0b3IgPSAoY29uc3QgZnhwUmVzJiBjbWQpOwogICBJbnQmIG9wZXJhdG9yID0gKGNv
bnN0IGZ4cEFyZyYgIHMpOwoKCgogICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAgICAg
IEludCYgb3BlcmF0b3IgPSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7CgogICAgCiAgICAg
SW50JiBvcGVyYXRvciA9ICggICAgIGRvdWJsZSAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA9
ICggICAgIGZsb2F0ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yID0gKCAgICAgYm9vbCAgICBz
ICkgICA7ICAgSW50JiBvcGVyYXRvciA9ICggICAgIGNoYXIgICAgcyApICAgOyAgIEludCYgb3Bl
cmF0b3IgPSAoICAgICBzaG9ydCAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA9ICggICAgIGlu
dCAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA9ICggICAgIGxvbmcgICAgcyApICAgOyAgIElu
dCYgb3BlcmF0b3IgPSAoICAgICB1bnNpZ25lZCBjaGFyICAgIHMgKSAgIDsgICBJbnQmIG9wZXJh
dG9yID0gKCAgICAgdW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgPSAo
ICAgICB1bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgPSAoICAgICB1bnNp
Z25lZCBsb25nICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yID0gKCAgICAgY29uc3Qgdm9pZCog
ICAgcyApICAgOyAKICAgSW50JiBvcGVyYXRvciArPSAoY29uc3QgZnhwQXJnJiAgcyk7CiAgICAK
ICAgICBJbnQmIG9wZXJhdG9yICs9ICggICAgIGRvdWJsZSAgICBzICkgICA7ICAgSW50JiBvcGVy
YXRvciArPSAoICAgICBmbG9hdCAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciArPSAoICAgICBi
b29sICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yICs9ICggICAgIGNoYXIgICAgcyApICAgOyAg
IEludCYgb3BlcmF0b3IgKz0gKCAgICAgc2hvcnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3Ig
Kz0gKCAgICAgaW50ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yICs9ICggICAgIGxvbmcgICAg
cyApICAgOyAgIEludCYgb3BlcmF0b3IgKz0gKCAgICAgdW5zaWduZWQgY2hhciAgICBzICkgICA7
ICAgSW50JiBvcGVyYXRvciArPSAoICAgICB1bnNpZ25lZCBzaG9ydCAgICBzICkgICA7ICAgSW50
JiBvcGVyYXRvciArPSAoICAgICB1bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0
b3IgKz0gKCAgICAgdW5zaWduZWQgbG9uZyAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciArPSAo
ICAgICBjb25zdCB2b2lkKiAgICBzICkgICA7IAogICBJbnQmIG9wZXJhdG9yIC09IChjb25zdCBm
eHBBcmcmICBzKTsKICAgIAogICAgIEludCYgb3BlcmF0b3IgLT0gKCAgICAgZG91YmxlICAgIHMg
KSAgIDsgICBJbnQmIG9wZXJhdG9yIC09ICggICAgIGZsb2F0ICAgIHMgKSAgIDsgICBJbnQmIG9w
ZXJhdG9yIC09ICggICAgIGJvb2wgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgLT0gKCAgICAg
Y2hhciAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciAtPSAoICAgICBzaG9ydCAgICBzICkgICA7
ICAgSW50JiBvcGVyYXRvciAtPSAoICAgICBpbnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3Ig
LT0gKCAgICAgbG9uZyAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciAtPSAoICAgICB1bnNpZ25l
ZCBjaGFyICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yIC09ICggICAgIHVuc2lnbmVkIHNob3J0
ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yIC09ICggICAgIHVuc2lnbmVkIGludCAgICBzICkg
ICA7ICAgSW50JiBvcGVyYXRvciAtPSAoICAgICB1bnNpZ25lZCBsb25nICAgIHMgKSAgIDsgICBJ
bnQmIG9wZXJhdG9yIC09ICggICAgIGNvbnN0IHZvaWQqICAgIHMgKSAgIDsgCiAgIEludCYgb3Bl
cmF0b3IgKj0gKGNvbnN0IGZ4cEFyZyYgIHMpOwogICAgCiAgICAgSW50JiBvcGVyYXRvciAqPSAo
ICAgICBkb3VibGUgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgKj0gKCAgICAgZmxvYXQgICAg
cyApICAgOyAgIEludCYgb3BlcmF0b3IgKj0gKCAgICAgYm9vbCAgICBzICkgICA7ICAgSW50JiBv
cGVyYXRvciAqPSAoICAgICBjaGFyICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yICo9ICggICAg
IHNob3J0ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yICo9ICggICAgIGludCAgICBzICkgICA7
ICAgSW50JiBvcGVyYXRvciAqPSAoICAgICBsb25nICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9y
ICo9ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgKj0gKCAg
ICAgdW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgKj0gKCAgICAgdW5z
aWduZWQgaW50ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yICo9ICggICAgIHVuc2lnbmVkIGxv
bmcgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgKj0gKCAgICAgY29uc3Qgdm9pZCogICAgcyAp
ICAgOyAKICAgSW50JiBvcGVyYXRvciA8PD0gKGNvbnN0IGZ4cEFyZyYgIHMpOwogICAgCiAgICAg
SW50JiBvcGVyYXRvciA8PD0gKCAgICAgZG91YmxlICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9y
IDw8PSAoICAgICBmbG9hdCAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA8PD0gKCAgICAgYm9v
bCAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA8PD0gKCAgICAgY2hhciAgICBzICkgICA7ICAg
SW50JiBvcGVyYXRvciA8PD0gKCAgICAgc2hvcnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3Ig
PDw9ICggICAgIGludCAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA8PD0gKCAgICAgbG9uZyAg
ICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA8PD0gKCAgICAgdW5zaWduZWQgY2hhciAgICBzICkg
ICA7ICAgSW50JiBvcGVyYXRvciA8PD0gKCAgICAgdW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAg
IEludCYgb3BlcmF0b3IgPDw9ICggICAgIHVuc2lnbmVkIGludCAgICBzICkgICA7ICAgSW50JiBv
cGVyYXRvciA8PD0gKCAgICAgdW5zaWduZWQgbG9uZyAgICBzICkgICA7ICAgSW50JiBvcGVyYXRv
ciA8PD0gKCAgICAgY29uc3Qgdm9pZCogICAgcyApICAgOyAKICAgSW50JiBvcGVyYXRvciA+Pj0g
KGNvbnN0IGZ4cEFyZyYgIHMpOwogICAgCiAgICAgSW50JiBvcGVyYXRvciA+Pj0gKCAgICAgZG91
YmxlICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yID4+PSAoICAgICBmbG9hdCAgICBzICkgICA7
ICAgSW50JiBvcGVyYXRvciA+Pj0gKCAgICAgYm9vbCAgICBzICkgICA7ICAgSW50JiBvcGVyYXRv
ciA+Pj0gKCAgICAgY2hhciAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA+Pj0gKCAgICAgc2hv
cnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgPj49ICggICAgIGludCAgICBzICkgICA7ICAg
SW50JiBvcGVyYXRvciA+Pj0gKCAgICAgbG9uZyAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA+
Pj0gKCAgICAgdW5zaWduZWQgY2hhciAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA+Pj0gKCAg
ICAgdW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgPj49ICggICAgIHVu
c2lnbmVkIGludCAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA+Pj0gKCAgICAgdW5zaWduZWQg
bG9uZyAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciA+Pj0gKCAgICAgY29uc3Qgdm9pZCogICAg
cyApICAgOyAKICAgSW50JiBvcGVyYXRvciAvPSAoY29uc3QgZnhwQXJnJiAgcyk7CiAgICAKICAg
ICBJbnQmIG9wZXJhdG9yIC89ICggICAgIGRvdWJsZSAgICBzICkgICA7ICAgSW50JiBvcGVyYXRv
ciAvPSAoICAgICBmbG9hdCAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciAvPSAoICAgICBib29s
ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yIC89ICggICAgIGNoYXIgICAgcyApICAgOyAgIElu
dCYgb3BlcmF0b3IgLz0gKCAgICAgc2hvcnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgLz0g
KCAgICAgaW50ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yIC89ICggICAgIGxvbmcgICAgcyAp
ICAgOyAgIEludCYgb3BlcmF0b3IgLz0gKCAgICAgdW5zaWduZWQgY2hhciAgICBzICkgICA7ICAg
SW50JiBvcGVyYXRvciAvPSAoICAgICB1bnNpZ25lZCBzaG9ydCAgICBzICkgICA7ICAgSW50JiBv
cGVyYXRvciAvPSAoICAgICB1bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3Ig
Lz0gKCAgICAgdW5zaWduZWQgbG9uZyAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciAvPSAoICAg
ICBjb25zdCB2b2lkKiAgICBzICkgICA7IAogICBJbnQmIG9wZXJhdG9yICU9IChjb25zdCBmeHBB
cmcmICBzKTsKICAgIAogICAgIEludCYgb3BlcmF0b3IgJT0gKCAgICAgZG91YmxlICAgIHMgKSAg
IDsgICBJbnQmIG9wZXJhdG9yICU9ICggICAgIGZsb2F0ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJh
dG9yICU9ICggICAgIGJvb2wgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgJT0gKCAgICAgY2hh
ciAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciAlPSAoICAgICBzaG9ydCAgICBzICkgICA7ICAg
SW50JiBvcGVyYXRvciAlPSAoICAgICBpbnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgJT0g
KCAgICAgbG9uZyAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciAlPSAoICAgICB1bnNpZ25lZCBj
aGFyICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yICU9ICggICAgIHVuc2lnbmVkIHNob3J0ICAg
IHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yICU9ICggICAgIHVuc2lnbmVkIGludCAgICBzICkgICA7
ICAgSW50JiBvcGVyYXRvciAlPSAoICAgICB1bnNpZ25lZCBsb25nICAgIHMgKSAgIDsgICBJbnQm
IG9wZXJhdG9yICU9ICggICAgIGNvbnN0IHZvaWQqICAgIHMgKSAgIDsgCiAgIEludCYgb3BlcmF0
b3IgJj0gKGNvbnN0IGZ4cEFyZyYgIHMpOwogICAgCiAgICAgSW50JiBvcGVyYXRvciAmPSAoICAg
ICBkb3VibGUgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgJj0gKCAgICAgZmxvYXQgICAgcyAp
ICAgOyAgIEludCYgb3BlcmF0b3IgJj0gKCAgICAgYm9vbCAgICBzICkgICA7ICAgSW50JiBvcGVy
YXRvciAmPSAoICAgICBjaGFyICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yICY9ICggICAgIHNo
b3J0ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yICY9ICggICAgIGludCAgICBzICkgICA7ICAg
SW50JiBvcGVyYXRvciAmPSAoICAgICBsb25nICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yICY9
ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgJj0gKCAgICAg
dW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgJj0gKCAgICAgdW5zaWdu
ZWQgaW50ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yICY9ICggICAgIHVuc2lnbmVkIGxvbmcg
ICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgJj0gKCAgICAgY29uc3Qgdm9pZCogICAgcyApICAg
OyAKICAgSW50JiBvcGVyYXRvciB8PSAoY29uc3QgZnhwQXJnJiAgcyk7CiAgICAKICAgICBJbnQm
IG9wZXJhdG9yIHw9ICggICAgIGRvdWJsZSAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciB8PSAo
ICAgICBmbG9hdCAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciB8PSAoICAgICBib29sICAgIHMg
KSAgIDsgICBJbnQmIG9wZXJhdG9yIHw9ICggICAgIGNoYXIgICAgcyApICAgOyAgIEludCYgb3Bl
cmF0b3IgfD0gKCAgICAgc2hvcnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgfD0gKCAgICAg
aW50ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yIHw9ICggICAgIGxvbmcgICAgcyApICAgOyAg
IEludCYgb3BlcmF0b3IgfD0gKCAgICAgdW5zaWduZWQgY2hhciAgICBzICkgICA7ICAgSW50JiBv
cGVyYXRvciB8PSAoICAgICB1bnNpZ25lZCBzaG9ydCAgICBzICkgICA7ICAgSW50JiBvcGVyYXRv
ciB8PSAoICAgICB1bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgfD0gKCAg
ICAgdW5zaWduZWQgbG9uZyAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciB8PSAoICAgICBjb25z
dCB2b2lkKiAgICBzICkgICA7IAogICBJbnQmIG9wZXJhdG9yIF49IChjb25zdCBmeHBBcmcmICBz
KTsKICAgIAogICAgIEludCYgb3BlcmF0b3IgXj0gKCAgICAgZG91YmxlICAgIHMgKSAgIDsgICBJ
bnQmIG9wZXJhdG9yIF49ICggICAgIGZsb2F0ICAgIHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yIF49
ICggICAgIGJvb2wgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgXj0gKCAgICAgY2hhciAgICBz
ICkgICA7ICAgSW50JiBvcGVyYXRvciBePSAoICAgICBzaG9ydCAgICBzICkgICA7ICAgSW50JiBv
cGVyYXRvciBePSAoICAgICBpbnQgICAgcyApICAgOyAgIEludCYgb3BlcmF0b3IgXj0gKCAgICAg
bG9uZyAgICBzICkgICA7ICAgSW50JiBvcGVyYXRvciBePSAoICAgICB1bnNpZ25lZCBjaGFyICAg
IHMgKSAgIDsgICBJbnQmIG9wZXJhdG9yIF49ICggICAgIHVuc2lnbmVkIHNob3J0ICAgIHMgKSAg
IDsgICBJbnQmIG9wZXJhdG9yIF49ICggICAgIHVuc2lnbmVkIGludCAgICBzICkgICA7ICAgSW50
JiBvcGVyYXRvciBePSAoICAgICB1bnNpZ25lZCBsb25nICAgIHMgKSAgIDsgICBJbnQmIG9wZXJh
dG9yIF49ICggICAgIGNvbnN0IHZvaWQqICAgIHMgKSAgIDsgCgojIDIwMTggIi9lZGMvd2EvYmVu
ZWRpY3QvZjNfaWQ2L2NzZmcvaHB1X2dudS9GZF9ob21lL2luY2x1ZGUvZnhwLmgiCgogICB0ZW1w
bGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAgICAgIEludCYgb3BlcmF0b3IgKz0gKGNvbnN0IGZ4
cE9wZXI8Q01ELE9QVD4mIHMpOwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAgICAg
IEludCYgb3BlcmF0b3IgLT0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpOwogICB0ZW1wbGF0
ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAgICAgIEludCYgb3BlcmF0b3IgKj0gKGNvbnN0IGZ4cE9w
ZXI8Q01ELE9QVD4mIHMpOwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAgICAgIElu
dCYgb3BlcmF0b3IgPDw9IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKTsKICAgdGVtcGxhdGU8
U29sX29wIENNRCxpbnQgT1BUPgogICAgICBJbnQmIG9wZXJhdG9yID4+PSAoY29uc3QgZnhwT3Bl
cjxDTUQsT1BUPiYgcyk7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgSW50
JiBvcGVyYXRvciAvPSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7CiAgIHRlbXBsYXRlPFNv
bF9vcCBDTUQsaW50IE9QVD4KICAgICAgSW50JiBvcGVyYXRvciAlPSAoY29uc3QgZnhwT3BlcjxD
TUQsT1BUPiYgcyk7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgSW50JiBv
cGVyYXRvciAmPSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7CiAgIHRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE9QVD4KICAgICAgSW50JiBvcGVyYXRvciB8PSAoY29uc3QgZnhwT3BlcjxDTUQs
T1BUPiYgcyk7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgSW50JiBvcGVy
YXRvciBePSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7CgoKCiAgICAKICAgb3BlcmF0b3Ig
aW50KCkgY29uc3QgeyAgcmV0dXJuIHNvbF9zMmwodGhpcy0+ZF9zdCxXKTt9OwoKICAgIAogICBj
b25zdCBjaGFyKiBkZWMoKSAgICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmRlYyh0aGlz
LT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIGNzZCgpICAgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRf
dHlwZS0+Y3NkKHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hhciogYmluKCkgICAgIGNvbnN0IHty
ZXR1cm4gdGhpcy0+ZF90eXBlLT5iaW4odGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBiaW5T
bSgpICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmJpblNtKHRoaXMtPmRfc3QpO30KICAg
Y29uc3QgY2hhciogYnBCaW4oKSAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5icEJpbih0
aGlzLT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIGJwQmluU20oKSBjb25zdCB7cmV0dXJuIHRoaXMt
PmRfdHlwZS0+YnBCaW5TbSh0aGlzLT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIG9jdCgpICAgICBj
b25zdCB7cmV0dXJuIHRoaXMtPmRfdHlwZS0+b2N0KHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hh
ciogb2N0U20oKSAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5vY3RTbSh0aGlzLT5kX3N0
KTt9CiAgIGNvbnN0IGNoYXIqIGJwT2N0KCkgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRfdHlwZS0+
YnBPY3QodGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBicE9jdFNtKCkgY29uc3Qge3JldHVy
biB0aGlzLT5kX3R5cGUtPmJwT2N0U20odGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBoZXgo
KSAgICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmhleCh0aGlzLT5kX3N0KTt9CiAgIGNv
bnN0IGNoYXIqIGhleFNtKCkgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRfdHlwZS0+aGV4U20odGhp
cy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBicEhleCgpICAgY29uc3Qge3JldHVybiB0aGlzLT5k
X3R5cGUtPmJwSGV4KHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hhciogYnBIZXhTbSgpIGNvbnN0
IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5icEhleFNtKHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hh
ciogZGJnKCkgICAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5kYmcodGhpcy0+ZF9zdCk7
fQoKCgoKfTsKCiAKIAogCiAKIAogCgp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGNsYXNzIFVmaXgg
OiBwdWJsaWMgTnVtYmVyPDAsVyxQPiB7CnB1YmxpYzoKICAgVWZpeCgpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDpOdW1iZXI8MCxXLFA+KCl7fTsKICAgflVmaXgoKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZiAoMCkge2RlYygpO2NzZCgpO2Jpbigp
O2JpblNtKCk7YnBCaW4oKTticEJpblNtKCk7b2N0KCk7b2N0U20oKTticE9jdCgpO2JwT2N0U20o
KTtoZXgoKTtoZXhTbSgpO2JwSGV4KCk7YnBIZXhTbSgpO2RiZygpO307IH07CgoKCgogICAgCgoK
CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgVWZpeChjb25zdCBmeHBPcGVy
PENNRCxPUFQ+JiBjbWQsY29uc3QgZnhwT3FjKiBidGMpOwoKICAgVWZpeChjb25zdCBVZml4JiBh
LGNvbnN0IGZ4cE9xYyogYnRjKSAgICAgIDpOdW1iZXI8MCxXLFA+KCthLGJ0Yyl7fTsKICAgVWZp
eChjb25zdCBmeHBBcmcmIGEsY29uc3QgZnhwT3FjKiBidGMpICAgIDpOdW1iZXI8MCxXLFA+KCth
LGJ0Yyl7fTsKICAgIAogICAgIFVmaXggKCAgICAgIGRvdWJsZSAgIGQgLCAgY29uc3QgZnhwT3Fj
KiBidGMgKSAgOk51bWJlcjwwICwgIFcgLCAgUD4gKCAgZCAsICBidGMgKSB7fSA7ICAgVWZpeCAo
ICAgICAgZmxvYXQgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRjICkgIDpOdW1iZXI8MCAsICBXICwg
IFA+ICggIGQgLCAgYnRjICkge30gOyAgIFVmaXggKCAgICAgIGJvb2wgICBkICwgIGNvbnN0IGZ4
cE9xYyogYnRjICkgIDpOdW1iZXI8MCAsICBXICwgIFA+ICggIGQgLCAgYnRjICkge30gOyAgIFVm
aXggKCAgICAgIGNoYXIgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRjICkgIDpOdW1iZXI8MCAsICBX
ICwgIFA+ICggIGQgLCAgYnRjICkge30gOyAgIFVmaXggKCAgICAgIHNob3J0ICAgZCAsICBjb25z
dCBmeHBPcWMqIGJ0YyApICA6TnVtYmVyPDAgLCAgVyAsICBQPiAoICBkICwgIGJ0YyApIHt9IDsg
ICBVZml4ICggICAgICBpbnQgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRjICkgIDpOdW1iZXI8MCAs
ICBXICwgIFA+ICggIGQgLCAgYnRjICkge30gOyAgIFVmaXggKCAgICAgIGxvbmcgICBkICwgIGNv
bnN0IGZ4cE9xYyogYnRjICkgIDpOdW1iZXI8MCAsICBXICwgIFA+ICggIGQgLCAgYnRjICkge30g
OyAgIFVmaXggKCAgICAgIHVuc2lnbmVkIGNoYXIgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRjICkg
IDpOdW1iZXI8MCAsICBXICwgIFA+ICggIGQgLCAgYnRjICkge30gOyAgIFVmaXggKCAgICAgIHVu
c2lnbmVkIHNob3J0ICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyApICA6TnVtYmVyPDAgLCAgVyAs
ICBQPiAoICBkICwgIGJ0YyApIHt9IDsgICBVZml4ICggICAgICB1bnNpZ25lZCBpbnQgICBkICwg
IGNvbnN0IGZ4cE9xYyogYnRjICkgIDpOdW1iZXI8MCAsICBXICwgIFA+ICggIGQgLCAgYnRjICkg
e30gOyAgIFVmaXggKCAgICAgIHVuc2lnbmVkIGxvbmcgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRj
ICkgIDpOdW1iZXI8MCAsICBXICwgIFA+ICggIGQgLCAgYnRjICkge30gOyAKCiAgIFVmaXgoY29u
c3QgY2hhciogc3RyKSAgICAgICAgICAgICAgICAgICAgICA6TnVtYmVyPDAsVyxQPihzdHIpe307
ICAKCgoKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgogICAgICBVZml4KGNvbnN0IGZ4
cE9wZXI8Q01ELE9QVD4mIGNtZCk7CgogICBVZml4KGNvbnN0IFVmaXgmIGEpICAgICAgICAgICAg
ICAgICAgICAgICAgOk51bWJlcjwwLFcsUD4oYSl7fTsKICAgVWZpeChjb25zdCBmeHBBcmcmIGEp
ICAgICAgICAgICAgICAgICAgICAgIDpOdW1iZXI8MCxXLFA+KCthKXt9OwogICAgCiAgICAgVWZp
eCAoICAgICAgZG91YmxlICAgZCApICA6TnVtYmVyPDAgLCAgVyAsICBQPiAoICBkICkge30gOyAg
IFVmaXggKCAgICAgIGZsb2F0ICAgZCApICA6TnVtYmVyPDAgLCAgVyAsICBQPiAoICBkICkge30g
OyAgIFVmaXggKCAgICAgIGJvb2wgICBkICkgIDpOdW1iZXI8MCAsICBXICwgIFA+ICggIGQgKSB7
fSA7ICAgVWZpeCAoICAgICAgY2hhciAgIGQgKSAgOk51bWJlcjwwICwgIFcgLCAgUD4gKCAgZCAp
IHt9IDsgICBVZml4ICggICAgICBzaG9ydCAgIGQgKSAgOk51bWJlcjwwICwgIFcgLCAgUD4gKCAg
ZCApIHt9IDsgICBVZml4ICggICAgICBpbnQgICBkICkgIDpOdW1iZXI8MCAsICBXICwgIFA+ICgg
IGQgKSB7fSA7ICAgVWZpeCAoICAgICAgbG9uZyAgIGQgKSAgOk51bWJlcjwwICwgIFcgLCAgUD4g
KCAgZCApIHt9IDsgICBVZml4ICggICAgICB1bnNpZ25lZCBjaGFyICAgZCApICA6TnVtYmVyPDAg
LCAgVyAsICBQPiAoICBkICkge30gOyAgIFVmaXggKCAgICAgIHVuc2lnbmVkIHNob3J0ICAgZCAp
ICA6TnVtYmVyPDAgLCAgVyAsICBQPiAoICBkICkge30gOyAgIFVmaXggKCAgICAgIHVuc2lnbmVk
IGludCAgIGQgKSAgOk51bWJlcjwwICwgIFcgLCAgUD4gKCAgZCApIHt9IDsgICBVZml4ICggICAg
ICB1bnNpZ25lZCBsb25nICAgZCApICA6TnVtYmVyPDAgLCAgVyAsICBQPiAoICBkICkge30gOyAK
CiAgIFVmaXgoY29uc3QgZnhwUmVzJiBhKSAgICAgICAgICAgICAgICAgICAgICA6TnVtYmVyPDAs
VyxQPihhKXt9OwogICBVZml4KGNvbnN0IGZ4cFJlc0ImIGEpICAgICAgICAgICAgICAgICAgICAg
Ok51bWJlcjwwLFcsUD4oYSl7fTsKCiAgIGZ4cFJlc0IgYml0KGludCBmcm9tKTsKICAgZnhwUmVz
ICBzbGljZShpbnQgZnJvbSwgaW50IHRvKTsKICAgZnhwUmVzICByYW5nZShpbnQgZnJvbSwgaW50
IHRvKTsKICAgZnhwUmVzICByYW5nZSgpOwogICBjb25zdCBmeHBSZXNCIGJpdChpbnQgZnJvbSkg
Y29uc3Q7CiAgIGNvbnN0IGZ4cFJlcyAgc2xpY2UoaW50IGZyb20sIGludCB0bykgY29uc3Q7CiAg
IGNvbnN0IGZ4cFJlcyAgcmFuZ2UoaW50IGZyb20sIGludCB0bykgY29uc3Q7CiAgIGNvbnN0IGZ4
cFJlcyAgcmFuZ2UoKSBjb25zdDsKICAgVWZpeCYgc2xpY2UoaW50IGZyb20sIGludCB0bywgY29u
c3QgZnhwQXJnIHNlYyk7CgogICBVZml4JiBvcGVyYXRvciArPSAoY29uc3QgVWZpeCYgbyk7CiAg
IFVmaXgmIG9wZXJhdG9yIC09IChjb25zdCBVZml4JiBvKTsKICAgVWZpeCYgb3BlcmF0b3IgKj0g
KGNvbnN0IFVmaXgmIG8pOwoKICAgVWZpeCYgb3BlcmF0b3IgPSAoY29uc3QgVWZpeCYgbyk7CiAg
IFVmaXgmIG9wZXJhdG9yID0gKGNvbnN0IGNoYXIqIHN0cik7ICAKICAgVWZpeCYgb3BlcmF0b3Ig
PSAoY29uc3QgZnhwUmVzQiYgY21kKTsKICAgVWZpeCYgb3BlcmF0b3IgPSAoY29uc3QgZnhwUmVz
JiBjbWQpOwogICBVZml4JiBvcGVyYXRvciA9IChjb25zdCBmeHBBcmcmICBzKTsKCgoKICAgdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgogICAgICBVZml4JiBvcGVyYXRvciA9IChjb25zdCBm
eHBPcGVyPENNRCxPUFQ+JiBzKTsKCiAgICAKICAgICBVZml4JiBvcGVyYXRvciA9ICggICAgIGRv
dWJsZSAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgPSAoICAgICBmbG9hdCAgICBzICkgICA7
ICAgVWZpeCYgb3BlcmF0b3IgPSAoICAgICBib29sICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRv
ciA9ICggICAgIGNoYXIgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yID0gKCAgICAgc2hvcnQg
ICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yID0gKCAgICAgaW50ICAgIHMgKSAgIDsgICBVZml4
JiBvcGVyYXRvciA9ICggICAgIGxvbmcgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yID0gKCAg
ICAgdW5zaWduZWQgY2hhciAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgPSAoICAgICB1bnNp
Z25lZCBzaG9ydCAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgPSAoICAgICB1bnNpZ25lZCBp
bnQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yID0gKCAgICAgdW5zaWduZWQgbG9uZyAgICBz
ICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgPSAoICAgICBjb25zdCB2b2lkKiAgICBzICkgICA7IAog
ICBVZml4JiBvcGVyYXRvciArPSAoY29uc3QgZnhwQXJnJiAgcyk7CiAgICAKICAgICBVZml4JiBv
cGVyYXRvciArPSAoICAgICBkb3VibGUgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yICs9ICgg
ICAgIGZsb2F0ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciArPSAoICAgICBib29sICAgIHMg
KSAgIDsgICBVZml4JiBvcGVyYXRvciArPSAoICAgICBjaGFyICAgIHMgKSAgIDsgICBVZml4JiBv
cGVyYXRvciArPSAoICAgICBzaG9ydCAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgKz0gKCAg
ICAgaW50ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciArPSAoICAgICBsb25nICAgIHMgKSAg
IDsgICBVZml4JiBvcGVyYXRvciArPSAoICAgICB1bnNpZ25lZCBjaGFyICAgIHMgKSAgIDsgICBV
Zml4JiBvcGVyYXRvciArPSAoICAgICB1bnNpZ25lZCBzaG9ydCAgICBzICkgICA7ICAgVWZpeCYg
b3BlcmF0b3IgKz0gKCAgICAgdW5zaWduZWQgaW50ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRv
ciArPSAoICAgICB1bnNpZ25lZCBsb25nICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciArPSAo
ICAgICBjb25zdCB2b2lkKiAgICBzICkgICA7IAogICBVZml4JiBvcGVyYXRvciAtPSAoY29uc3Qg
ZnhwQXJnJiAgcyk7CiAgICAKICAgICBVZml4JiBvcGVyYXRvciAtPSAoICAgICBkb3VibGUgICAg
cyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIC09ICggICAgIGZsb2F0ICAgIHMgKSAgIDsgICBVZml4
JiBvcGVyYXRvciAtPSAoICAgICBib29sICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAtPSAo
ICAgICBjaGFyICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAtPSAoICAgICBzaG9ydCAgICBz
ICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgLT0gKCAgICAgaW50ICAgIHMgKSAgIDsgICBVZml4JiBv
cGVyYXRvciAtPSAoICAgICBsb25nICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAtPSAoICAg
ICB1bnNpZ25lZCBjaGFyICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAtPSAoICAgICB1bnNp
Z25lZCBzaG9ydCAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgLT0gKCAgICAgdW5zaWduZWQg
aW50ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAtPSAoICAgICB1bnNpZ25lZCBsb25nICAg
IHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAtPSAoICAgICBjb25zdCB2b2lkKiAgICBzICkgICA7
IAogICBVZml4JiBvcGVyYXRvciAqPSAoY29uc3QgZnhwQXJnJiAgcyk7CiAgICAKICAgICBVZml4
JiBvcGVyYXRvciAqPSAoICAgICBkb3VibGUgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yICo9
ICggICAgIGZsb2F0ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAqPSAoICAgICBib29sICAg
IHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAqPSAoICAgICBjaGFyICAgIHMgKSAgIDsgICBVZml4
JiBvcGVyYXRvciAqPSAoICAgICBzaG9ydCAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgKj0g
KCAgICAgaW50ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAqPSAoICAgICBsb25nICAgIHMg
KSAgIDsgICBVZml4JiBvcGVyYXRvciAqPSAoICAgICB1bnNpZ25lZCBjaGFyICAgIHMgKSAgIDsg
ICBVZml4JiBvcGVyYXRvciAqPSAoICAgICB1bnNpZ25lZCBzaG9ydCAgICBzICkgICA7ICAgVWZp
eCYgb3BlcmF0b3IgKj0gKCAgICAgdW5zaWduZWQgaW50ICAgIHMgKSAgIDsgICBVZml4JiBvcGVy
YXRvciAqPSAoICAgICB1bnNpZ25lZCBsb25nICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAq
PSAoICAgICBjb25zdCB2b2lkKiAgICBzICkgICA7IAogICBVZml4JiBvcGVyYXRvciA8PD0gKGNv
bnN0IGZ4cEFyZyYgIHMpOwogICAgCiAgICAgVWZpeCYgb3BlcmF0b3IgPDw9ICggICAgIGRvdWJs
ZSAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgPDw9ICggICAgIGZsb2F0ICAgIHMgKSAgIDsg
ICBVZml4JiBvcGVyYXRvciA8PD0gKCAgICAgYm9vbCAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0
b3IgPDw9ICggICAgIGNoYXIgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIDw8PSAoICAgICBz
aG9ydCAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgPDw9ICggICAgIGludCAgICBzICkgICA7
ICAgVWZpeCYgb3BlcmF0b3IgPDw9ICggICAgIGxvbmcgICAgcyApICAgOyAgIFVmaXgmIG9wZXJh
dG9yIDw8PSAoICAgICB1bnNpZ25lZCBjaGFyICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciA8
PD0gKCAgICAgdW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIDw8PSAo
ICAgICB1bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIDw8PSAoICAgICB1
bnNpZ25lZCBsb25nICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciA8PD0gKCAgICAgY29uc3Qg
dm9pZCogICAgcyApICAgOyAKICAgVWZpeCYgb3BlcmF0b3IgPj49IChjb25zdCBmeHBBcmcmICBz
KTsKICAgIAogICAgIFVmaXgmIG9wZXJhdG9yID4+PSAoICAgICBkb3VibGUgICAgcyApICAgOyAg
IFVmaXgmIG9wZXJhdG9yID4+PSAoICAgICBmbG9hdCAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0
b3IgPj49ICggICAgIGJvb2wgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yID4+PSAoICAgICBj
aGFyICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciA+Pj0gKCAgICAgc2hvcnQgICAgcyApICAg
OyAgIFVmaXgmIG9wZXJhdG9yID4+PSAoICAgICBpbnQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJh
dG9yID4+PSAoICAgICBsb25nICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciA+Pj0gKCAgICAg
dW5zaWduZWQgY2hhciAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgPj49ICggICAgIHVuc2ln
bmVkIHNob3J0ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciA+Pj0gKCAgICAgdW5zaWduZWQg
aW50ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciA+Pj0gKCAgICAgdW5zaWduZWQgbG9uZyAg
ICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgPj49ICggICAgIGNvbnN0IHZvaWQqICAgIHMgKSAg
IDsgCiAgIFVmaXgmIG9wZXJhdG9yIC89IChjb25zdCBmeHBBcmcmICBzKTsKICAgIAogICAgIFVm
aXgmIG9wZXJhdG9yIC89ICggICAgIGRvdWJsZSAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3Ig
Lz0gKCAgICAgZmxvYXQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIC89ICggICAgIGJvb2wg
ICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIC89ICggICAgIGNoYXIgICAgcyApICAgOyAgIFVm
aXgmIG9wZXJhdG9yIC89ICggICAgIHNob3J0ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAv
PSAoICAgICBpbnQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIC89ICggICAgIGxvbmcgICAg
cyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIC89ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyApICAg
OyAgIFVmaXgmIG9wZXJhdG9yIC89ICggICAgIHVuc2lnbmVkIHNob3J0ICAgIHMgKSAgIDsgICBV
Zml4JiBvcGVyYXRvciAvPSAoICAgICB1bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIFVmaXgmIG9w
ZXJhdG9yIC89ICggICAgIHVuc2lnbmVkIGxvbmcgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9y
IC89ICggICAgIGNvbnN0IHZvaWQqICAgIHMgKSAgIDsgCiAgIFVmaXgmIG9wZXJhdG9yICU9IChj
b25zdCBmeHBBcmcmICBzKTsKICAgIAogICAgIFVmaXgmIG9wZXJhdG9yICU9ICggICAgIGRvdWJs
ZSAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgJT0gKCAgICAgZmxvYXQgICAgcyApICAgOyAg
IFVmaXgmIG9wZXJhdG9yICU9ICggICAgIGJvb2wgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9y
ICU9ICggICAgIGNoYXIgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yICU9ICggICAgIHNob3J0
ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAlPSAoICAgICBpbnQgICAgcyApICAgOyAgIFVm
aXgmIG9wZXJhdG9yICU9ICggICAgIGxvbmcgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yICU9
ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yICU9ICggICAg
IHVuc2lnbmVkIHNob3J0ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciAlPSAoICAgICB1bnNp
Z25lZCBpbnQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yICU9ICggICAgIHVuc2lnbmVkIGxv
bmcgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yICU9ICggICAgIGNvbnN0IHZvaWQqICAgIHMg
KSAgIDsgCiAgIFVmaXgmIG9wZXJhdG9yICY9IChjb25zdCBmeHBBcmcmICBzKTsKICAgIAogICAg
IFVmaXgmIG9wZXJhdG9yICY9ICggICAgIGRvdWJsZSAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0
b3IgJj0gKCAgICAgZmxvYXQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yICY9ICggICAgIGJv
b2wgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yICY9ICggICAgIGNoYXIgICAgcyApICAgOyAg
IFVmaXgmIG9wZXJhdG9yICY9ICggICAgIHNob3J0ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRv
ciAmPSAoICAgICBpbnQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yICY9ICggICAgIGxvbmcg
ICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yICY9ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyAp
ICAgOyAgIFVmaXgmIG9wZXJhdG9yICY9ICggICAgIHVuc2lnbmVkIHNob3J0ICAgIHMgKSAgIDsg
ICBVZml4JiBvcGVyYXRvciAmPSAoICAgICB1bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIFVmaXgm
IG9wZXJhdG9yICY9ICggICAgIHVuc2lnbmVkIGxvbmcgICAgcyApICAgOyAgIFVmaXgmIG9wZXJh
dG9yICY9ICggICAgIGNvbnN0IHZvaWQqICAgIHMgKSAgIDsgCiAgIFVmaXgmIG9wZXJhdG9yIHw9
IChjb25zdCBmeHBBcmcmICBzKTsKICAgIAogICAgIFVmaXgmIG9wZXJhdG9yIHw9ICggICAgIGRv
dWJsZSAgICBzICkgICA7ICAgVWZpeCYgb3BlcmF0b3IgfD0gKCAgICAgZmxvYXQgICAgcyApICAg
OyAgIFVmaXgmIG9wZXJhdG9yIHw9ICggICAgIGJvb2wgICAgcyApICAgOyAgIFVmaXgmIG9wZXJh
dG9yIHw9ICggICAgIGNoYXIgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIHw9ICggICAgIHNo
b3J0ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciB8PSAoICAgICBpbnQgICAgcyApICAgOyAg
IFVmaXgmIG9wZXJhdG9yIHw9ICggICAgIGxvbmcgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9y
IHw9ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIHw9ICgg
ICAgIHVuc2lnbmVkIHNob3J0ICAgIHMgKSAgIDsgICBVZml4JiBvcGVyYXRvciB8PSAoICAgICB1
bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIHw9ICggICAgIHVuc2lnbmVk
IGxvbmcgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIHw9ICggICAgIGNvbnN0IHZvaWQqICAg
IHMgKSAgIDsgCiAgIFVmaXgmIG9wZXJhdG9yIF49IChjb25zdCBmeHBBcmcmICBzKTsKICAgIAog
ICAgIFVmaXgmIG9wZXJhdG9yIF49ICggICAgIGRvdWJsZSAgICBzICkgICA7ICAgVWZpeCYgb3Bl
cmF0b3IgXj0gKCAgICAgZmxvYXQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIF49ICggICAg
IGJvb2wgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIF49ICggICAgIGNoYXIgICAgcyApICAg
OyAgIFVmaXgmIG9wZXJhdG9yIF49ICggICAgIHNob3J0ICAgIHMgKSAgIDsgICBVZml4JiBvcGVy
YXRvciBePSAoICAgICBpbnQgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIF49ICggICAgIGxv
bmcgICAgcyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIF49ICggICAgIHVuc2lnbmVkIGNoYXIgICAg
cyApICAgOyAgIFVmaXgmIG9wZXJhdG9yIF49ICggICAgIHVuc2lnbmVkIHNob3J0ICAgIHMgKSAg
IDsgICBVZml4JiBvcGVyYXRvciBePSAoICAgICB1bnNpZ25lZCBpbnQgICAgcyApICAgOyAgIFVm
aXgmIG9wZXJhdG9yIF49ICggICAgIHVuc2lnbmVkIGxvbmcgICAgcyApICAgOyAgIFVmaXgmIG9w
ZXJhdG9yIF49ICggICAgIGNvbnN0IHZvaWQqICAgIHMgKSAgIDsgCgojIDIxNzggIi9lZGMvd2Ev
YmVuZWRpY3QvZjNfaWQ2L2NzZmcvaHB1X2dudS9GZF9ob21lL2luY2x1ZGUvZnhwLmgiCgogICB0
ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAgICAgIFVmaXgmIG9wZXJhdG9yICs9IChjb25z
dCBmeHBPcGVyPENNRCxPUFQ+JiBzKTsKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgog
ICAgICBVZml4JiBvcGVyYXRvciAtPSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7CiAgIHRl
bXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgVWZpeCYgb3BlcmF0b3IgKj0gKGNvbnN0
IGZ4cE9wZXI8Q01ELE9QVD4mIHMpOwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAg
ICAgIFVmaXgmIG9wZXJhdG9yIDw8PSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7CiAgIHRl
bXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgVWZpeCYgb3BlcmF0b3IgPj49IChjb25z
dCBmeHBPcGVyPENNRCxPUFQ+JiBzKTsKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgog
ICAgICBVZml4JiBvcGVyYXRvciAvPSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7CiAgIHRl
bXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgVWZpeCYgb3BlcmF0b3IgJT0gKGNvbnN0
IGZ4cE9wZXI8Q01ELE9QVD4mIHMpOwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAg
ICAgIFVmaXgmIG9wZXJhdG9yICY9IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKTsKICAgdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgogICAgICBVZml4JiBvcGVyYXRvciB8PSAoY29uc3Qg
ZnhwT3BlcjxDTUQsT1BUPiYgcyk7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAg
ICAgVWZpeCYgb3BlcmF0b3IgXj0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpOwoKCgoKICAg
IAogICBjb25zdCBjaGFyKiBkZWMoKSAgICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmRl
Yyh0aGlzLT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIGNzZCgpICAgICBjb25zdCB7cmV0dXJuIHRo
aXMtPmRfdHlwZS0+Y3NkKHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hhciogYmluKCkgICAgIGNv
bnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5iaW4odGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFy
KiBiaW5TbSgpICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmJpblNtKHRoaXMtPmRfc3Qp
O30KICAgY29uc3QgY2hhciogYnBCaW4oKSAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5i
cEJpbih0aGlzLT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIGJwQmluU20oKSBjb25zdCB7cmV0dXJu
IHRoaXMtPmRfdHlwZS0+YnBCaW5TbSh0aGlzLT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIG9jdCgp
ICAgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRfdHlwZS0+b2N0KHRoaXMtPmRfc3QpO30KICAgY29u
c3QgY2hhciogb2N0U20oKSAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5vY3RTbSh0aGlz
LT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIGJwT2N0KCkgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRf
dHlwZS0+YnBPY3QodGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBicE9jdFNtKCkgY29uc3Qg
e3JldHVybiB0aGlzLT5kX3R5cGUtPmJwT2N0U20odGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFy
KiBoZXgoKSAgICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmhleCh0aGlzLT5kX3N0KTt9
CiAgIGNvbnN0IGNoYXIqIGhleFNtKCkgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRfdHlwZS0+aGV4
U20odGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBicEhleCgpICAgY29uc3Qge3JldHVybiB0
aGlzLT5kX3R5cGUtPmJwSGV4KHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hhciogYnBIZXhTbSgp
IGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5icEhleFNtKHRoaXMtPmRfc3QpO30KICAgY29u
c3QgY2hhciogZGJnKCkgICAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5kYmcodGhpcy0+
ZF9zdCk7fQoKfTsKCiAKIAogCiAKIAogCiAKCnRlbXBsYXRlPGludCBXPiBjbGFzcyBVaW50IDog
cHVibGljIFVmaXg8VywwPiB7CnB1YmxpYzoKICAgVWludCgpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDpVZml4PFcsMD4oKXt9OwogICB+VWludCgpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAge2lmICgwKSB7ZGVjKCk7Y3NkKCk7YmluKCk7YmluU20oKTti
cEJpbigpO2JwQmluU20oKTtvY3QoKTtvY3RTbSgpO2JwT2N0KCk7YnBPY3RTbSgpO2hleCgpO2hl
eFNtKCk7YnBIZXgoKTticEhleFNtKCk7ZGJnKCk7fTsgfTsKCgoKCgoKCiAgIHRlbXBsYXRlPFNv
bF9vcCBDTUQsaW50IE9QVD4KICAgICAgVWludChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBjbWQs
Y29uc3QgZnhwT3FjKiBidGMpOwoKICAgVWludChjb25zdCBVaW50JiBhLGNvbnN0IGZ4cE9xYyog
YnRjKSAgICAgIDpVZml4PFcsMD4oK2EsYnRjKXt9OwogICBVaW50KGNvbnN0IGZ4cEFyZyYgYSxj
b25zdCBmeHBPcWMqIGJ0YykgICAgOlVmaXg8VywwPigrYSxidGMpe307CiAgICAKICAgICBVaW50
ICggICAgICBkb3VibGUgICBkICwgIGNvbnN0IGZ4cE9xYyogYnRjICkgIDpVZml4PCBXICwgIDA+
ICggIGQgLCAgYnRjICkge30gOyAgIFVpbnQgKCAgICAgIGZsb2F0ICAgZCAsICBjb25zdCBmeHBP
cWMqIGJ0YyApICA6VWZpeDwgVyAsICAwPiAoICBkICwgIGJ0YyApIHt9IDsgICBVaW50ICggICAg
ICBib29sICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyApICA6VWZpeDwgVyAsICAwPiAoICBkICwg
IGJ0YyApIHt9IDsgICBVaW50ICggICAgICBjaGFyICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyAp
ICA6VWZpeDwgVyAsICAwPiAoICBkICwgIGJ0YyApIHt9IDsgICBVaW50ICggICAgICBzaG9ydCAg
IGQgLCAgY29uc3QgZnhwT3FjKiBidGMgKSAgOlVmaXg8IFcgLCAgMD4gKCAgZCAsICBidGMgKSB7
fSA7ICAgVWludCAoICAgICAgaW50ICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyApICA6VWZpeDwg
VyAsICAwPiAoICBkICwgIGJ0YyApIHt9IDsgICBVaW50ICggICAgICBsb25nICAgZCAsICBjb25z
dCBmeHBPcWMqIGJ0YyApICA6VWZpeDwgVyAsICAwPiAoICBkICwgIGJ0YyApIHt9IDsgICBVaW50
ICggICAgICB1bnNpZ25lZCBjaGFyICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyApICA6VWZpeDwg
VyAsICAwPiAoICBkICwgIGJ0YyApIHt9IDsgICBVaW50ICggICAgICB1bnNpZ25lZCBzaG9ydCAg
IGQgLCAgY29uc3QgZnhwT3FjKiBidGMgKSAgOlVmaXg8IFcgLCAgMD4gKCAgZCAsICBidGMgKSB7
fSA7ICAgVWludCAoICAgICAgdW5zaWduZWQgaW50ICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyAp
ICA6VWZpeDwgVyAsICAwPiAoICBkICwgIGJ0YyApIHt9IDsgICBVaW50ICggICAgICB1bnNpZ25l
ZCBsb25nICAgZCAsICBjb25zdCBmeHBPcWMqIGJ0YyApICA6VWZpeDwgVyAsICAwPiAoICBkICwg
IGJ0YyApIHt9IDsgICBVaW50ICggICAgICBjb25zdCB2b2lkKiAgIGQgLCAgY29uc3QgZnhwT3Fj
KiBidGMgKSAgOlVmaXg8IFcgLCAgMD4gKCAgZCAsICBidGMgKSB7fSA7IAoKICAgIAogICBVaW50
KGNvbnN0IGNoYXIqIHN0cikgICAgICAgICAgICAgICAgICAgICAgOlVmaXg8VywwPihzdHIpe307
ICAKCgoKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgogICAgICBVaW50KGNvbnN0IGZ4
cE9wZXI8Q01ELE9QVD4mIGNtZCk7CgogICBVaW50KGNvbnN0IFVpbnQmIGEpICAgICAgICAgICAg
ICAgICAgICAgICAgOlVmaXg8VywwPihhKXt9OwogICBVaW50KGNvbnN0IGZ4cEFyZyYgYSkgICAg
ICAgICAgICAgICAgICAgICAgOlVmaXg8VywwPigrYSl7fTsKICAgIAogICAgIFVpbnQgKCAgICAg
IGRvdWJsZSAgIGQgKSAgOlVmaXg8IFcgLCAgMD4gKCAgZCApIHt9IDsgICBVaW50ICggICAgICBm
bG9hdCAgIGQgKSAgOlVmaXg8IFcgLCAgMD4gKCAgZCApIHt9IDsgICBVaW50ICggICAgICBib29s
ICAgZCApICA6VWZpeDwgVyAsICAwPiAoICBkICkge30gOyAgIFVpbnQgKCAgICAgIGNoYXIgICBk
ICkgIDpVZml4PCBXICwgIDA+ICggIGQgKSB7fSA7ICAgVWludCAoICAgICAgc2hvcnQgICBkICkg
IDpVZml4PCBXICwgIDA+ICggIGQgKSB7fSA7ICAgVWludCAoICAgICAgaW50ICAgZCApICA6VWZp
eDwgVyAsICAwPiAoICBkICkge30gOyAgIFVpbnQgKCAgICAgIGxvbmcgICBkICkgIDpVZml4PCBX
ICwgIDA+ICggIGQgKSB7fSA7ICAgVWludCAoICAgICAgdW5zaWduZWQgY2hhciAgIGQgKSAgOlVm
aXg8IFcgLCAgMD4gKCAgZCApIHt9IDsgICBVaW50ICggICAgICB1bnNpZ25lZCBzaG9ydCAgIGQg
KSAgOlVmaXg8IFcgLCAgMD4gKCAgZCApIHt9IDsgICBVaW50ICggICAgICB1bnNpZ25lZCBpbnQg
ICBkICkgIDpVZml4PCBXICwgIDA+ICggIGQgKSB7fSA7ICAgVWludCAoICAgICAgdW5zaWduZWQg
bG9uZyAgIGQgKSAgOlVmaXg8IFcgLCAgMD4gKCAgZCApIHt9IDsgCgogICBVaW50KGNvbnN0IGZ4
cFJlcyYgYSkgICAgICAgICAgICAgICAgICAgICAgOlVmaXg8VywwPihhKXt9OwogICBVaW50KGNv
bnN0IGZ4cFJlc0ImIGEpICAgICAgICAgICAgICAgICAgICAgOlVmaXg8VywwPihhKXt9OwoKICAg
ZnhwUmVzQiBiaXQoaW50IGZyb20pOwogICBmeHBSZXMgIHNsaWNlKGludCBmcm9tLCBpbnQgdG8p
OwogICBmeHBSZXMgIHJhbmdlKGludCBmcm9tLCBpbnQgdG8pOwogICBmeHBSZXMgIHJhbmdlKCk7
CiAgIGNvbnN0IGZ4cFJlc0IgYml0KGludCBmcm9tKSBjb25zdDsKICAgY29uc3QgZnhwUmVzICBz
bGljZShpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKICAgY29uc3QgZnhwUmVzICByYW5nZShpbnQg
ZnJvbSwgaW50IHRvKSBjb25zdDsKICAgY29uc3QgZnhwUmVzICByYW5nZSgpIGNvbnN0OwogICBV
aW50JiBzbGljZShpbnQgZnJvbSwgaW50IHRvLCBjb25zdCBmeHBBcmcgc2VjKTsKCiAgIFVpbnQm
IG9wZXJhdG9yICs9IChjb25zdCBVaW50JiBvKTsKICAgVWludCYgb3BlcmF0b3IgLT0gKGNvbnN0
IFVpbnQmIG8pOwogICBVaW50JiBvcGVyYXRvciAqPSAoY29uc3QgVWludCYgbyk7CgogICAgCiAg
IFVpbnQmIG9wZXJhdG9yICsrICgpOwogICBVaW50JiBvcGVyYXRvciAtLSAoKTsKCiAgICAKICAg
VWludCBvcGVyYXRvciArKyAoaW50KTsKICAgVWludCBvcGVyYXRvciAtLSAoaW50KTsKCiAgIFVp
bnQmIG9wZXJhdG9yID0gKGNvbnN0IFVpbnQmIG8pOwogICBVaW50JiBvcGVyYXRvciA9IChjb25z
dCBjaGFyKiBzdHIpOyAgCiAgIFVpbnQmIG9wZXJhdG9yID0gKGNvbnN0IGZ4cFJlc0ImIGNtZCk7
CiAgIFVpbnQmIG9wZXJhdG9yID0gKGNvbnN0IGZ4cFJlcyYgY21kKTsKICAgVWludCYgb3BlcmF0
b3IgPSAoY29uc3QgZnhwQXJnJiAgcyk7CgoKCiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9Q
VD4KICAgICAgVWludCYgb3BlcmF0b3IgPSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7Cgog
ICAgCiAgICAgVWludCYgb3BlcmF0b3IgPSAoICAgICBkb3VibGUgICAgcyApICAgOyAgIFVpbnQm
IG9wZXJhdG9yID0gKCAgICAgZmxvYXQgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9yID0gKCAg
ICAgYm9vbCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgPSAoICAgICBjaGFyICAgIHMgKSAg
IDsgICBVaW50JiBvcGVyYXRvciA9ICggICAgIHNob3J0ICAgIHMgKSAgIDsgICBVaW50JiBvcGVy
YXRvciA9ICggICAgIGludCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgPSAoICAgICBsb25n
ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciA9ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyAp
ICAgOyAgIFVpbnQmIG9wZXJhdG9yID0gKCAgICAgdW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAg
IFVpbnQmIG9wZXJhdG9yID0gKCAgICAgdW5zaWduZWQgaW50ICAgIHMgKSAgIDsgICBVaW50JiBv
cGVyYXRvciA9ICggICAgIHVuc2lnbmVkIGxvbmcgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9y
ID0gKCAgICAgY29uc3Qgdm9pZCogICAgcyApICAgOyAKICAgVWludCYgb3BlcmF0b3IgKz0gKGNv
bnN0IGZ4cEFyZyYgIHMpOwogICAgCiAgICAgVWludCYgb3BlcmF0b3IgKz0gKCAgICAgZG91Ymxl
ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciArPSAoICAgICBmbG9hdCAgICBzICkgICA7ICAg
VWludCYgb3BlcmF0b3IgKz0gKCAgICAgYm9vbCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3Ig
Kz0gKCAgICAgY2hhciAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgKz0gKCAgICAgc2hvcnQg
ICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9yICs9ICggICAgIGludCAgICBzICkgICA7ICAgVWlu
dCYgb3BlcmF0b3IgKz0gKCAgICAgbG9uZyAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgKz0g
KCAgICAgdW5zaWduZWQgY2hhciAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgKz0gKCAgICAg
dW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9yICs9ICggICAgIHVuc2ln
bmVkIGludCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgKz0gKCAgICAgdW5zaWduZWQgbG9u
ZyAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgKz0gKCAgICAgY29uc3Qgdm9pZCogICAgcyAp
ICAgOyAKICAgVWludCYgb3BlcmF0b3IgLT0gKGNvbnN0IGZ4cEFyZyYgIHMpOwogICAgCiAgICAg
VWludCYgb3BlcmF0b3IgLT0gKCAgICAgZG91YmxlICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRv
ciAtPSAoICAgICBmbG9hdCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgLT0gKCAgICAgYm9v
bCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgLT0gKCAgICAgY2hhciAgICBzICkgICA7ICAg
VWludCYgb3BlcmF0b3IgLT0gKCAgICAgc2hvcnQgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9y
IC09ICggICAgIGludCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgLT0gKCAgICAgbG9uZyAg
ICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgLT0gKCAgICAgdW5zaWduZWQgY2hhciAgICBzICkg
ICA7ICAgVWludCYgb3BlcmF0b3IgLT0gKCAgICAgdW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAg
IFVpbnQmIG9wZXJhdG9yIC09ICggICAgIHVuc2lnbmVkIGludCAgICBzICkgICA7ICAgVWludCYg
b3BlcmF0b3IgLT0gKCAgICAgdW5zaWduZWQgbG9uZyAgICBzICkgICA7ICAgVWludCYgb3BlcmF0
b3IgLT0gKCAgICAgY29uc3Qgdm9pZCogICAgcyApICAgOyAKICAgVWludCYgb3BlcmF0b3IgKj0g
KGNvbnN0IGZ4cEFyZyYgIHMpOwogICAgCiAgICAgVWludCYgb3BlcmF0b3IgKj0gKCAgICAgZG91
YmxlICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAqPSAoICAgICBmbG9hdCAgICBzICkgICA7
ICAgVWludCYgb3BlcmF0b3IgKj0gKCAgICAgYm9vbCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0
b3IgKj0gKCAgICAgY2hhciAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgKj0gKCAgICAgc2hv
cnQgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9yICo9ICggICAgIGludCAgICBzICkgICA7ICAg
VWludCYgb3BlcmF0b3IgKj0gKCAgICAgbG9uZyAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3Ig
Kj0gKCAgICAgdW5zaWduZWQgY2hhciAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgKj0gKCAg
ICAgdW5zaWduZWQgc2hvcnQgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9yICo9ICggICAgIHVu
c2lnbmVkIGludCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgKj0gKCAgICAgdW5zaWduZWQg
bG9uZyAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgKj0gKCAgICAgY29uc3Qgdm9pZCogICAg
cyApICAgOyAKICAgVWludCYgb3BlcmF0b3IgPDw9IChjb25zdCBmeHBBcmcmICBzKTsKICAgIAog
ICAgIFVpbnQmIG9wZXJhdG9yIDw8PSAoICAgICBkb3VibGUgICAgcyApICAgOyAgIFVpbnQmIG9w
ZXJhdG9yIDw8PSAoICAgICBmbG9hdCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgPDw9ICgg
ICAgIGJvb2wgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9yIDw8PSAoICAgICBjaGFyICAgIHMg
KSAgIDsgICBVaW50JiBvcGVyYXRvciA8PD0gKCAgICAgc2hvcnQgICAgcyApICAgOyAgIFVpbnQm
IG9wZXJhdG9yIDw8PSAoICAgICBpbnQgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9yIDw8PSAo
ICAgICBsb25nICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciA8PD0gKCAgICAgdW5zaWduZWQg
Y2hhciAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgPDw9ICggICAgIHVuc2lnbmVkIHNob3J0
ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciA8PD0gKCAgICAgdW5zaWduZWQgaW50ICAgIHMg
KSAgIDsgICBVaW50JiBvcGVyYXRvciA8PD0gKCAgICAgdW5zaWduZWQgbG9uZyAgICBzICkgICA7
ICAgVWludCYgb3BlcmF0b3IgPDw9ICggICAgIGNvbnN0IHZvaWQqICAgIHMgKSAgIDsgCiAgIFVp
bnQmIG9wZXJhdG9yID4+PSAoY29uc3QgZnhwQXJnJiAgcyk7CiAgICAKICAgICBVaW50JiBvcGVy
YXRvciA+Pj0gKCAgICAgZG91YmxlICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciA+Pj0gKCAg
ICAgZmxvYXQgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9yID4+PSAoICAgICBib29sICAgIHMg
KSAgIDsgICBVaW50JiBvcGVyYXRvciA+Pj0gKCAgICAgY2hhciAgICBzICkgICA7ICAgVWludCYg
b3BlcmF0b3IgPj49ICggICAgIHNob3J0ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciA+Pj0g
KCAgICAgaW50ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciA+Pj0gKCAgICAgbG9uZyAgICBz
ICkgICA7ICAgVWludCYgb3BlcmF0b3IgPj49ICggICAgIHVuc2lnbmVkIGNoYXIgICAgcyApICAg
OyAgIFVpbnQmIG9wZXJhdG9yID4+PSAoICAgICB1bnNpZ25lZCBzaG9ydCAgICBzICkgICA7ICAg
VWludCYgb3BlcmF0b3IgPj49ICggICAgIHVuc2lnbmVkIGludCAgICBzICkgICA7ICAgVWludCYg
b3BlcmF0b3IgPj49ICggICAgIHVuc2lnbmVkIGxvbmcgICAgcyApICAgOyAgIFVpbnQmIG9wZXJh
dG9yID4+PSAoICAgICBjb25zdCB2b2lkKiAgICBzICkgICA7IAogICBVaW50JiBvcGVyYXRvciAv
PSAoY29uc3QgZnhwQXJnJiAgcyk7CiAgICAKICAgICBVaW50JiBvcGVyYXRvciAvPSAoICAgICBk
b3VibGUgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9yIC89ICggICAgIGZsb2F0ICAgIHMgKSAg
IDsgICBVaW50JiBvcGVyYXRvciAvPSAoICAgICBib29sICAgIHMgKSAgIDsgICBVaW50JiBvcGVy
YXRvciAvPSAoICAgICBjaGFyICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAvPSAoICAgICBz
aG9ydCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgLz0gKCAgICAgaW50ICAgIHMgKSAgIDsg
ICBVaW50JiBvcGVyYXRvciAvPSAoICAgICBsb25nICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRv
ciAvPSAoICAgICB1bnNpZ25lZCBjaGFyICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAvPSAo
ICAgICB1bnNpZ25lZCBzaG9ydCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgLz0gKCAgICAg
dW5zaWduZWQgaW50ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAvPSAoICAgICB1bnNpZ25l
ZCBsb25nICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAvPSAoICAgICBjb25zdCB2b2lkKiAg
ICBzICkgICA7IAogICBVaW50JiBvcGVyYXRvciAlPSAoY29uc3QgZnhwQXJnJiAgcyk7CiAgICAK
ICAgICBVaW50JiBvcGVyYXRvciAlPSAoICAgICBkb3VibGUgICAgcyApICAgOyAgIFVpbnQmIG9w
ZXJhdG9yICU9ICggICAgIGZsb2F0ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAlPSAoICAg
ICBib29sICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAlPSAoICAgICBjaGFyICAgIHMgKSAg
IDsgICBVaW50JiBvcGVyYXRvciAlPSAoICAgICBzaG9ydCAgICBzICkgICA7ICAgVWludCYgb3Bl
cmF0b3IgJT0gKCAgICAgaW50ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAlPSAoICAgICBs
b25nICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAlPSAoICAgICB1bnNpZ25lZCBjaGFyICAg
IHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAlPSAoICAgICB1bnNpZ25lZCBzaG9ydCAgICBzICkg
ICA7ICAgVWludCYgb3BlcmF0b3IgJT0gKCAgICAgdW5zaWduZWQgaW50ICAgIHMgKSAgIDsgICBV
aW50JiBvcGVyYXRvciAlPSAoICAgICB1bnNpZ25lZCBsb25nICAgIHMgKSAgIDsgICBVaW50JiBv
cGVyYXRvciAlPSAoICAgICBjb25zdCB2b2lkKiAgICBzICkgICA7IAogICBVaW50JiBvcGVyYXRv
ciAmPSAoY29uc3QgZnhwQXJnJiAgcyk7CiAgICAKICAgICBVaW50JiBvcGVyYXRvciAmPSAoICAg
ICBkb3VibGUgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9yICY9ICggICAgIGZsb2F0ICAgIHMg
KSAgIDsgICBVaW50JiBvcGVyYXRvciAmPSAoICAgICBib29sICAgIHMgKSAgIDsgICBVaW50JiBv
cGVyYXRvciAmPSAoICAgICBjaGFyICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAmPSAoICAg
ICBzaG9ydCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgJj0gKCAgICAgaW50ICAgIHMgKSAg
IDsgICBVaW50JiBvcGVyYXRvciAmPSAoICAgICBsb25nICAgIHMgKSAgIDsgICBVaW50JiBvcGVy
YXRvciAmPSAoICAgICB1bnNpZ25lZCBjaGFyICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAm
PSAoICAgICB1bnNpZ25lZCBzaG9ydCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgJj0gKCAg
ICAgdW5zaWduZWQgaW50ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAmPSAoICAgICB1bnNp
Z25lZCBsb25nICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciAmPSAoICAgICBjb25zdCB2b2lk
KiAgICBzICkgICA7IAogICBVaW50JiBvcGVyYXRvciB8PSAoY29uc3QgZnhwQXJnJiAgcyk7CiAg
ICAKICAgICBVaW50JiBvcGVyYXRvciB8PSAoICAgICBkb3VibGUgICAgcyApICAgOyAgIFVpbnQm
IG9wZXJhdG9yIHw9ICggICAgIGZsb2F0ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciB8PSAo
ICAgICBib29sICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciB8PSAoICAgICBjaGFyICAgIHMg
KSAgIDsgICBVaW50JiBvcGVyYXRvciB8PSAoICAgICBzaG9ydCAgICBzICkgICA7ICAgVWludCYg
b3BlcmF0b3IgfD0gKCAgICAgaW50ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciB8PSAoICAg
ICBsb25nICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciB8PSAoICAgICB1bnNpZ25lZCBjaGFy
ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciB8PSAoICAgICB1bnNpZ25lZCBzaG9ydCAgICBz
ICkgICA7ICAgVWludCYgb3BlcmF0b3IgfD0gKCAgICAgdW5zaWduZWQgaW50ICAgIHMgKSAgIDsg
ICBVaW50JiBvcGVyYXRvciB8PSAoICAgICB1bnNpZ25lZCBsb25nICAgIHMgKSAgIDsgICBVaW50
JiBvcGVyYXRvciB8PSAoICAgICBjb25zdCB2b2lkKiAgICBzICkgICA7IAogICBVaW50JiBvcGVy
YXRvciBePSAoY29uc3QgZnhwQXJnJiAgcyk7CiAgICAKICAgICBVaW50JiBvcGVyYXRvciBePSAo
ICAgICBkb3VibGUgICAgcyApICAgOyAgIFVpbnQmIG9wZXJhdG9yIF49ICggICAgIGZsb2F0ICAg
IHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciBePSAoICAgICBib29sICAgIHMgKSAgIDsgICBVaW50
JiBvcGVyYXRvciBePSAoICAgICBjaGFyICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciBePSAo
ICAgICBzaG9ydCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgXj0gKCAgICAgaW50ICAgIHMg
KSAgIDsgICBVaW50JiBvcGVyYXRvciBePSAoICAgICBsb25nICAgIHMgKSAgIDsgICBVaW50JiBv
cGVyYXRvciBePSAoICAgICB1bnNpZ25lZCBjaGFyICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRv
ciBePSAoICAgICB1bnNpZ25lZCBzaG9ydCAgICBzICkgICA7ICAgVWludCYgb3BlcmF0b3IgXj0g
KCAgICAgdW5zaWduZWQgaW50ICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciBePSAoICAgICB1
bnNpZ25lZCBsb25nICAgIHMgKSAgIDsgICBVaW50JiBvcGVyYXRvciBePSAoICAgICBjb25zdCB2
b2lkKiAgICBzICkgICA7IAoKIyAyMzQyICIvZWRjL3dhL2JlbmVkaWN0L2YzX2lkNi9jc2ZnL2hw
dV9nbnUvRmRfaG9tZS9pbmNsdWRlL2Z4cC5oIgoKICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQg
T1BUPgogICAgICBVaW50JiBvcGVyYXRvciArPSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7
CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgVWludCYgb3BlcmF0b3IgLT0g
KGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpOwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBP
UFQ+CiAgICAgIFVpbnQmIG9wZXJhdG9yICo9IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKTsK
ICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgogICAgICBVaW50JiBvcGVyYXRvciA8PD0g
KGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpOwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBP
UFQ+CiAgICAgIFVpbnQmIG9wZXJhdG9yID4+PSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7
CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KICAgICAgVWludCYgb3BlcmF0b3IgLz0g
KGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpOwogICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBP
UFQ+CiAgICAgIFVpbnQmIG9wZXJhdG9yICU9IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKTsK
ICAgdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgogICAgICBVaW50JiBvcGVyYXRvciAmPSAo
Y29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcyk7CiAgIHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9Q
VD4KICAgICAgVWludCYgb3BlcmF0b3IgfD0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpOwog
ICB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CiAgICAgIFVpbnQmIG9wZXJhdG9yIF49IChj
b25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKTsKCgoKCiAgICAKICAgb3BlcmF0b3IgdW5zaWduZWQg
aW50KCkgY29uc3QgeyAgcmV0dXJuIHNvbF91MmwodGhpcy0+ZF9zdCxXKTt9OwoKICAgIAogICBj
b25zdCBjaGFyKiBkZWMoKSAgICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmRlYyh0aGlz
LT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIGNzZCgpICAgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRf
dHlwZS0+Y3NkKHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hhciogYmluKCkgICAgIGNvbnN0IHty
ZXR1cm4gdGhpcy0+ZF90eXBlLT5iaW4odGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBiaW5T
bSgpICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmJpblNtKHRoaXMtPmRfc3QpO30KICAg
Y29uc3QgY2hhciogYnBCaW4oKSAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5icEJpbih0
aGlzLT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIGJwQmluU20oKSBjb25zdCB7cmV0dXJuIHRoaXMt
PmRfdHlwZS0+YnBCaW5TbSh0aGlzLT5kX3N0KTt9CiAgIGNvbnN0IGNoYXIqIG9jdCgpICAgICBj
b25zdCB7cmV0dXJuIHRoaXMtPmRfdHlwZS0+b2N0KHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hh
ciogb2N0U20oKSAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5vY3RTbSh0aGlzLT5kX3N0
KTt9CiAgIGNvbnN0IGNoYXIqIGJwT2N0KCkgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRfdHlwZS0+
YnBPY3QodGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBicE9jdFNtKCkgY29uc3Qge3JldHVy
biB0aGlzLT5kX3R5cGUtPmJwT2N0U20odGhpcy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBoZXgo
KSAgICAgY29uc3Qge3JldHVybiB0aGlzLT5kX3R5cGUtPmhleCh0aGlzLT5kX3N0KTt9CiAgIGNv
bnN0IGNoYXIqIGhleFNtKCkgICBjb25zdCB7cmV0dXJuIHRoaXMtPmRfdHlwZS0+aGV4U20odGhp
cy0+ZF9zdCk7fQogICBjb25zdCBjaGFyKiBicEhleCgpICAgY29uc3Qge3JldHVybiB0aGlzLT5k
X3R5cGUtPmJwSGV4KHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hhciogYnBIZXhTbSgpIGNvbnN0
IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5icEhleFNtKHRoaXMtPmRfc3QpO30KICAgY29uc3QgY2hh
ciogZGJnKCkgICAgIGNvbnN0IHtyZXR1cm4gdGhpcy0+ZF90eXBlLT5kYmcodGhpcy0+ZF9zdCk7
fQoKCgoKfTsKCiAKIAogCgojIDI1MDEgIi9lZGMvd2EvYmVuZWRpY3QvZjNfaWQ2L2NzZmcvaHB1
X2dudS9GZF9ob21lL2luY2x1ZGUvZnhwLmgiCgoKdHlwZWRlZiBVaW50PDE+IEJpdDsKCgogCiAK
IAojIDI2MjAgIi9lZGMvd2EvYmVuZWRpY3QvZjNfaWQ2L2NzZmcvaHB1X2dudS9GZF9ob21lL2lu
Y2x1ZGUvZnhwLmgiCgogCgogCiAKCiAKIAogCiAKCmNvbnN0IGNoYXIqIEZ4cFREdGV4dChjb25z
dCBmeHBUeXBlKiBkYXRhX3R5cGUsIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpkYXRhX2RhdGEpOwpj
b25zdCBjaGFyKiBGeHBURHRleHQoY29uc3QgYm9vbCBkYXRhKTsKY29uc3QgY2hhciogRnhwVER0
ZXh0KGNvbnN0IGNoYXIgZGF0YSk7CmNvbnN0IGNoYXIqIEZ4cFREdGV4dChjb25zdCBpbnQgZGF0
YSk7CmNvbnN0IGNoYXIqIEZ4cFREdGV4dChjb25zdCBsb25nIGRhdGEpOwpjb25zdCBjaGFyKiBG
eHBURHRleHQoY29uc3QgdW5zaWduZWQgY2hhciBkYXRhKTsKY29uc3QgY2hhciogRnhwVER0ZXh0
KGNvbnN0IHVuc2lnbmVkIGludCBkYXRhKTsKY29uc3QgY2hhciogRnhwVER0ZXh0KGNvbnN0IHVu
c2lnbmVkIGxvbmcgZGF0YSk7CgppbmxpbmUgY29uc3QgY2hhciogRnhwVER0ZXh0KAogICBjb25z
dCBmeHBBcmcmIGRhdGEKKQp7CiAgIHJldHVybiBGeHBURHRleHQoZGF0YS50eXBlKCksZGF0YS5z
dG9yZSgpKTsKfQoKdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4KaW5saW5lIGNvbnN0IGNoYXIq
IEZ4cFREdGV4dCgKICAgY29uc3QgZnhwT3BlcjxDTUQsTz4mIGRhdGEKKQp7CiAgICAKICAgZnhw
VHlwZSAgICAgICAgZGF0YV90eXBlOwogICB1bnNpZ25lZCBzaG9ydCBkYXRhX2RhdGFbMTAyNF07
CiAgIGRhdGEuY2FsY1REKCZkYXRhX3R5cGUsZGF0YV9kYXRhKTsKCiAgIHJldHVybiBGeHBURHRl
eHQoJmRhdGFfdHlwZSxkYXRhX2RhdGEpOwp9CgogCiAKIAogCgp2b2lkIEZ4cEJuZEFzc2VydCgK
ICAgY29uc3QgY2hhciogZGF0YSwKICAgY29uc3QgY2hhciogbG93LAogICBjb25zdCBjaGFyKiBo
aWdoCik7CgoKCgpleHRlcm4gIkMiIHsKICAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc29sX3MydSAo
CiAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiwKICAgICAgY29uc3QgaW50CiAgICk7CiAgIGV4
dGVybiB2b2lkIHNvbF9sMnMgKAogICAgICBsb25nLAogICAgICB1bnNpZ25lZCBzaG9ydCosCiAg
ICAgIGNvbnN0IGludAogICApOwogICBleHRlcm4gaW50IHNvbF9wYXJzZUJwQmluUyAoCiAgICAg
IGNvbnN0IGNoYXIqICAgICB4LAogICAgICB2b2lkKiAgICAgICAgICAgb3V0LAogICAgICBpbnQg
ICAgICAgICAgICAgd2lkdGgKICAgKTsKICAgZXh0ZXJuIGludCBzb2xfcGFyc2VCcEJpblUgKAog
ICAgICBjb25zdCBjaGFyKiAgICAgeCwKICAgICAgdm9pZCogICAgICAgICAgIG91dCwKICAgICAg
aW50ICAgICAgICAgICAgIHdpZHRoCiAgICk7Cn0KCgogCiAKIAoKZW51bSBGeHBfX2VycmNvZGUg
ewogICBGWFBfX09LID0gMCwKICAgRlhQX19DT1BZUklHSFQsCiAgIEZYUF9fVFJBREVNQVJLLAog
ICBGWFBfX1RSSUFMX0JBTk5FUiwKICAgRlhQX19OT1RfSU5JVElBTElaRUQsCiAgIEZYUF9fVFJJ
QUxfTElNSVQsCiAgIEZYUF9fTk9fTElDRU5TRSwKICAgRlhQX19OT19GTE9BVCwKICAgRlhQX19C
SVRTRUxFQ1RfTkVHLAogICBGWFBfX0JJVFNFTEVDVF9SRVZFUlNFRCwKICAgRlhQX19CSVRTRUxF
Q1RfTEFSR0UsCiAgIEZYUF9fQklUU0VMRUNUX1dJRFRILAogICBGWFBfX0JJVE1FUkdFX1dJRFRI
LAogICBGWFBfX0JJVElOU0VSVF9ORUcsCiAgIEZYUF9fQklUSU5TRVJUX1JFVkVSU0VELAogICBG
WFBfX0JJVElOU0VSVF9MQVJHRSwKICAgRlhQX19CSVRJTlNFUlRfV0lEVEgsCiAgIEZYUF9fV1JP
TkdfQU5EX0FSRywKICAgRlhQX19XUk9OR19PUl9BUkcsCiAgIEZYUF9fV1JPTkdfRVhPUl9BUkcs
CiAgIEZYUF9fV1JPTkdfTFNISUZUX0FSRywKICAgRlhQX19XUk9OR19SU0hJRlRfQVJHLAogICBG
WFBfX0JJVElOREVYX05FR19CSVQsCiAgIEZYUF9fQklUSU5ERVhfTEFSR0VfQklULAogICBGWFBf
X1NZTlRIRVNJUywKICAgRlhQX19OT1NUT1JFLAogICBGWFBfX05PVFlQRSwKICAgRlhQX19VTVIs
CiAgIEZYUF9fT1ZFUkZMT1csCiAgIEZYUF9fTk9fQ09OViwKICAgRlhQX19OT19NRU1PUlksCiAg
IEZYUF9fSU5URVJOQUwsCiAgIEZYUF9fT1VUX09GX0JPVU5ELAogICBGWFBfX1NDX0VfTk9UX1NV
UFBPUlRFRCwKICAgRlhQX19OT0JBU0VfTlVNUkVQLAogICBGWFBfX05PVF9ZRVRfSU1QTEVNRU5U
RUQsCiAgIEZYUF9fTElNSVRfV0lEVEgsCiAgIEZYUF9fQklUU0VMRUNUX1dJRFRIMiwKICAgRlhQ
X19MQVNUX0VSUk9SCn07Cgp2b2lkIEZ4cEFzc2VydChGeHBfX2VycmNvZGUgZXhpdF9jb2RlKTsK
CgoKCgoKCgoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgogCiAKIAoKaW5saW5lIGNvbnN0IGZ4cFR5
cGUqIGZ4cEFyZzo6dHlwZSgpICAgICAgICAgY29uc3Qge3JldHVybiBkX3R5cGU7fQppbmxpbmUg
Y29uc3QgdW5zaWduZWQgc2hvcnQqIGZ4cEFyZzo6c3RvcmUoKSBjb25zdCB7cmV0dXJuICZkX3N0
b3JlWzBdO30KaW5saW5lICAgICAgIHVuc2lnbmVkIHNob3J0KiBmeHBBcmc6OnN0b3JlKCkgICAg
ICAge3JldHVybiAmZF9zdG9yZVswXTt9CiAgIAppbmxpbmUgY29uc3QgZnhwT3FTdGF0KiBmeHBB
cmc6OmVtcHR5RGV0ZWN0KCkgICAgICB7cmV0dXJuICZkX2RldGVjdDt9CgppbmxpbmUgZnhwT3Bl
cjxTT0xfUk9VTkQsMD4gZnhwQXJnOjpjYXN0KCkgY29uc3QgeyAgcmV0dXJuIGZ4cE9wZXI8U09M
X1JPVU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlKTt9CgppbmxpbmUgdm9pZCBmeHBB
cmc6OnJlYWQoKSBjb25zdAp7CiAgICAKICAgIAp9CmlubGluZSBjb25zdCBmeHBSZXNCIGZ4cEFy
Zzo6b3BlcmF0b3JbXSAoaW50IGZyb20pICAgICAgICAgIGNvbnN0CnsKICAgIAogICByZXR1cm4g
ZnhwUmVzQih0aGlzLT50eXBlKCksY29uc3RfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHRoaXMtPnN0
b3JlKCkpLGZyb20pOwp9CmlubGluZSBjb25zdCBmeHBSZXNCIGZ4cEFyZzo6Yml0KGludCBmcm9t
KSAgICAgICAgICAgICAgICAgIGNvbnN0CnsKICAgIAogICByZXR1cm4gZnhwUmVzQih0aGlzLT50
eXBlKCksY29uc3RfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHRoaXMtPnN0b3JlKCkpLGZyb20pOwp9
CmlubGluZSBjb25zdCBmeHBSZXMgIGZ4cEFyZzo6b3BlcmF0b3IoKSAoKSAgY29uc3QKewogICAg
CiAgIHJldHVybiBmeHBSZXModGhpcy0+dHlwZSgpLGNvbnN0X2Nhc3Q8dW5zaWduZWQgc2hvcnQq
Pih0aGlzLT5zdG9yZSgpKSx0aGlzLT50eXBlKCktPndpZHRoKCkgLSAxLDApOwp9CmlubGluZSBj
b25zdCBmeHBSZXMgIGZ4cEFyZzo6b3BlcmF0b3IoKSAoaW50IGZyb20sIGludCB0bykgIGNvbnN0
CnsKICAgIAogICByZXR1cm4gZnhwUmVzKHRoaXMtPnR5cGUoKSxjb25zdF9jYXN0PHVuc2lnbmVk
IHNob3J0Kj4odGhpcy0+c3RvcmUoKSksZnJvbSx0byk7Cn0KaW5saW5lIGNvbnN0IGZ4cFJlcyAg
ZnhwQXJnOjpzbGljZShpbnQgZnJvbSwgaW50IHRvKSAgICAgICAgY29uc3QKewogICAgCiAgIHJl
dHVybiBmeHBSZXModGhpcy0+dHlwZSgpLGNvbnN0X2Nhc3Q8dW5zaWduZWQgc2hvcnQqPih0aGlz
LT5zdG9yZSgpKSxmcm9tLHRvKTsKfQppbmxpbmUgZnhwUmVzQiBmeHBBcmc6Om9wZXJhdG9yW10g
KGludCBmcm9tKQp7CiAgICAKICAgcmV0dXJuIGZ4cFJlc0IodGhpcy0+dHlwZSgpLCh0aGlzLT5z
dG9yZSgpKSxmcm9tKTsKfQppbmxpbmUgZnhwUmVzQiBmeHBBcmc6OmJpdChpbnQgZnJvbSkKewog
ICAgCiAgIHJldHVybiBmeHBSZXNCKHRoaXMtPnR5cGUoKSwodGhpcy0+c3RvcmUoKSksZnJvbSk7
Cn0KaW5saW5lIGZ4cFJlcyAgZnhwQXJnOjpvcGVyYXRvcigpICgpCnsKICAgIAogICByZXR1cm4g
ZnhwUmVzKHRoaXMtPnR5cGUoKSwodGhpcy0+c3RvcmUoKSksdGhpcy0+dHlwZSgpLT53aWR0aCgp
IC0gMSwwKTsKfQppbmxpbmUgZnhwUmVzICBmeHBBcmc6Om9wZXJhdG9yKCkgKGludCBmcm9tLCBp
bnQgdG8pCnsKICAgIAogICByZXR1cm4gZnhwUmVzKHRoaXMtPnR5cGUoKSwodGhpcy0+c3RvcmUo
KSksZnJvbSx0byk7Cn0KaW5saW5lIGZ4cFJlcyAgZnhwQXJnOjpzbGljZShpbnQgZnJvbSwgaW50
IHRvKQp7CiAgICAKICAgcmV0dXJuIGZ4cFJlcyh0aGlzLT50eXBlKCksKHRoaXMtPnN0b3JlKCkp
LGZyb20sdG8pOwp9CgoKaW5saW5lIGZ4cEFyZzo6ZnhwQXJnKCk6ZF90eXBlKDApLGRfc3RvcmUo
MCkKLGRfY29sbGVjdG9yX3AoMCkgIAp7fQppbmxpbmUgZnhwQXJnOjpmeHBBcmcoCiAgIHVuc2ln
bmVkIHNob3J0KiBhcmcKKTpkX3R5cGUoMCksZF9zdG9yZShhcmcpCixkX2NvbGxlY3Rvcl9wKDAp
ICAKe30KaW5saW5lIGZ4cEFyZzo6ZnhwQXJnKAogICBjb25zdCBmeHBBcmcmIG8KKTpkX3R5cGUo
by5kX3R5cGUpLGRfc3RvcmUoby5kX3N0b3JlKQosZF9jb2xsZWN0b3JfcCgwKSAgCnt9CmlubGlu
ZSBmeHBBcmc6On5meHBBcmcoKXt9CgppbmxpbmUgZG91YmxlIGZ4cEFyZzo6ZCgpIGNvbnN0CnsK
ICAgIAogICByZXR1cm4gdG9fZCgpOwp9CgppbmxpbmUgbG9uZyBmeHBBcmc6OmwoKSBjb25zdAp7
CiAgICAKICAgaWYgKGRfdHlwZS0+c2lnbmVkVHlwZSgpKSByZXR1cm4gc29sX3MybChkX3N0b3Jl
LGRfdHlwZS0+d2lkdGgoKSk7CiAgIGVsc2UgICByZXR1cm4gc29sX3UybChkX3N0b3JlLGRfdHlw
ZS0+d2lkdGgoKSk7Cn0KCmlubGluZSB1bnNpZ25lZCBsb25nIGZ4cEFyZzo6dWwoKSBjb25zdAp7
CiAgICAKICAgcmV0dXJuIHNvbF9zMnUoZF9zdG9yZSxkX3R5cGUtPndpZHRoKCkpOwp9Cgppbmxp
bmUgaW50ICAgICAgICAgICAgZnhwQXJnOjp0b19pbnQoKSAgICBjb25zdCB7IHJldHVybiBsKCk7
fQppbmxpbmUgdW5zaWduZWQgaW50ICAgZnhwQXJnOjp0b191aW50KCkgICBjb25zdCB7IHJldHVy
biB1bCgpO30KaW5saW5lIGxvbmcgICAgICAgICAgIGZ4cEFyZzo6dG9fbG9uZygpICAgY29uc3Qg
eyByZXR1cm4gbCgpO30KaW5saW5lIHVuc2lnbmVkIGxvbmcgIGZ4cEFyZzo6dG9fdWxvbmcoKSAg
Y29uc3QgeyByZXR1cm4gdWwoKTt9CmlubGluZSBkb3VibGUgICAgICAgICBmeHBBcmc6OnRvX2Rv
dWJsZSgpIGNvbnN0IHsgcmV0dXJuIGQoKTt9CmlubGluZSBzaG9ydCAgICAgICAgICBmeHBBcmc6
OnRvX3Nob3J0KCkgIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmwoKTt9CmlubGluZSB1bnNpZ25lZCBz
aG9ydCBmeHBBcmc6OnRvX3VzaG9ydCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnVsKCk7fQppbmxp
bmUgZmxvYXQgICAgICAgICAgZnhwQXJnOjp0b19mbG9hdCgpICBjb25zdCB7IHJldHVybiB0aGlz
LT5kKCk7fQoKIAogCiAKc3RhdGljIHVuc2lnbmVkIHNob3J0IGZ4cF9fZmlyc3Rfc3RvcmVbMTYz
ODRdOwpzdGF0aWMgdW5zaWduZWQgc2hvcnQgZnhwX19zZWNvbmRfc3RvcmVbMTYzODRdOwoKICAg
dm9pZCByZXN1bHRfdHlwZSgKICAgICAgZnhwVHlwZSYgICAgICAgICAgdCwKICAgICAgY29uc3Qg
U29sX29wICAgICAgY21kLAogICAgICBjb25zdCBmeHBUeXBlKiAgICBmaXJzdF90eXBlLAogICAg
ICBjb25zdCBmeHBUeXBlKiAgICBzZWNvbmRfdHlwZSwKICAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQqIHNlY29uZF9zdG9yZQogICApOwoKICAgdm9pZCByZXN1bHRfdHlwZSgKICAgICAgZnhwVHlw
ZSYgICAgICAgICAgdCwKICAgICAgY29uc3QgU29sX29wICAgICAgY21kLAogICAgICBjb25zdCBm
eHBUeXBlKiAgICBmaXJzdF90eXBlLAogICAgICBjb25zdCBmeHBUeXBlKiAgICBzZWNvbmRfdHlw
ZQogICApOwoKICAgZnhwT3FTdGF0IGluY3IoY29uc3QgZnhwVHlwZSogdHlwZSx1bnNpZ25lZCBz
aG9ydCogYXJnKTsKICAgZnhwT3FTdGF0IGluY3IoY29uc3QgZnhwVHlwZSogdHlwZSx1bnNpZ25l
ZCBzaG9ydCogYXJnLGNvbnN0IGZ4cE9xYyogYml0VHJ1ZSk7CgogICBmeHBPcVN0YXQgZGVjcihj
b25zdCBmeHBUeXBlKiB0eXBlLHVuc2lnbmVkIHNob3J0KiBhcmcpOwogICBmeHBPcVN0YXQgZGVj
cihjb25zdCBmeHBUeXBlKiB0eXBlLHVuc2lnbmVkIHNob3J0KiBhcmcsY29uc3QgZnhwT3FjKiBi
aXRUcnVlKTsKCiAgIGZ4cE9xU3RhdCBhZGQoY29uc3QgZnhwVHlwZSogdHlwZSx1bnNpZ25lZCBz
aG9ydCogYXJnLGNvbnN0IHVuc2lnbmVkIHNob3J0KiBmaXJzdF9zdG9yZSxjb25zdCB1bnNpZ25l
ZCBzaG9ydCogc2Vjb25kX3N0b3JlKTsKICAgZnhwT3FTdGF0IHN1Yihjb25zdCBmeHBUeXBlKiB0
eXBlLHVuc2lnbmVkIHNob3J0KiBhcmcsY29uc3QgdW5zaWduZWQgc2hvcnQqIGZpcnN0X3N0b3Jl
LGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzZWNvbmRfc3RvcmUpOwogICBmeHBPcVN0YXQgbXVsdChj
b25zdCBmeHBUeXBlKiB0eXBlLHVuc2lnbmVkIHNob3J0KiBhcmcsY29uc3QgdW5zaWduZWQgc2hv
cnQqIGZpcnN0X3N0b3JlLGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzZWNvbmRfc3RvcmUpOwoKICAg
ZnhwT3FTdGF0IHJzaGlmdCgKICAgICAgY29uc3QgZnhwVHlwZSogIHR5cGUsCiAgICAgIHVuc2ln
bmVkIHNob3J0KiBhcmcsCiAgICAgIGNvbnN0IGZ4cFR5cGUqICAgICAgICBmaXJzdF90eXBlLAog
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCogZmlyc3Rfc3RvcmUsCiAgICAgIGNvbnN0IGZ4cFR5
cGUqICAgICAgICBzZWNvbmRfdHlwZSwKICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQqIHNlY29u
ZF9zdG9yZSwKICAgICAgY29uc3QgZnhwT3FjKiAgICAgICAgIGJpdFRydWUKICAgKTsKCiAgIGZ4
cE9xU3RhdCBjYWxjKAogICAgICBjb25zdCBmeHBUeXBlKiAgdHlwZSwKICAgICAgdW5zaWduZWQg
c2hvcnQqIGFyZywKICAgICAgY29uc3QgU29sX29wICAgICAgb3BlcmF0aW9uLAogICAgICBjb25z
dCBmeHBUeXBlKiAgICAgICAgZmlyc3RfdHlwZSwKICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQq
IGZpcnN0X3N0b3JlLAogICAgICBjb25zdCBmeHBUeXBlKiAgICAgICAgc2Vjb25kX3R5cGUsCiAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzZWNvbmRfc3RvcmUsCiAgICAgIGNvbnN0IGZ4cE9x
YyogICAgICAgICBiaXRUcnVlCiAgICk7CgogICBmeHBPcVN0YXQgY2FsYygKICAgICAgY29uc3Qg
ZnhwVHlwZSogIHR5cGUsCiAgICAgIHVuc2lnbmVkIHNob3J0KiBhcmcsCiAgICAgIGNvbnN0IFNv
bF9vcCAgICAgIG9wZXJhdGlvbiwKICAgICAgY29uc3QgZnhwVHlwZSogICAgICAgIGZpcnN0X3R5
cGUsCiAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBmaXJzdF9zdG9yZSwKICAgICAgY29uc3Qg
ZnhwVHlwZSogICAgICAgIHNlY29uZF90eXBlLAogICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCog
c2Vjb25kX3N0b3JlCiAgICk7CgogICBmeHBPcVN0YXQgY2FsYygKICAgICAgY29uc3QgZnhwVHlw
ZSogIHR5cGUsCiAgICAgIHVuc2lnbmVkIHNob3J0KiBhcmcsCiAgICAgIGNvbnN0IFNvbF9vcCAg
ICAgIG9wZXJhdGlvbiwKICAgICAgY29uc3QgZnhwVHlwZSogICAgICAgIGZpcnN0X3R5cGUsCiAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBmaXJzdF9zdG9yZSwKICAgICAgY29uc3QgZnhwT3Fj
KiAgICAgICAgIGJpdFRydWUKICAgKTsKCiAgIGZ4cE9xU3RhdCBjYWxjKAogICAgICBjb25zdCBm
eHBUeXBlKiAgdHlwZSwKICAgICAgdW5zaWduZWQgc2hvcnQqIGFyZywKICAgICAgY29uc3QgU29s
X29wICAgICAgb3BlcmF0aW9uLAogICAgICBjb25zdCBmeHBUeXBlKiAgICAgICAgZmlyc3RfdHlw
ZSwKICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQqIGZpcnN0X3N0b3JlCiAgICk7CgogICBmeHBP
cVN0YXQgYWRkKAogICAgICBjb25zdCBmeHBUeXBlKiAgdHlwZSwKICAgICAgdW5zaWduZWQgc2hv
cnQqIGFyZywKICAgICAgY29uc3QgZnhwVHlwZSogICAgICAgIGZpcnN0X3R5cGUsCiAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0KiBmaXJzdF9zdG9yZSwKICAgICAgY29uc3QgZnhwVHlwZSogICAg
ICAgIHNlY29uZF90eXBlLAogICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCogc2Vjb25kX3N0b3Jl
CiAgICk7CgogICB2b2lkIHNldF9zbGljZSgKICAgICAgY29uc3QgZnhwVHlwZSogIHR5cGUsCiAg
ICAgIHVuc2lnbmVkIHNob3J0KiBhcmcsCiAgICAgIGNvbnN0IGZ4cFR5cGUqICBzX3R5cGUsCiAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzX3N0b3JlLAogICAgICBpbnQgZnJvbSwKICAgICAg
aW50IHRvCiAgICk7CgogICBib29sIGVxKGNvbnN0IGZ4cFR5cGUqIGZpcnN0X3R5cGUsY29uc3Qg
dW5zaWduZWQgc2hvcnQqIGZpcnN0X3N0b3JlLGNvbnN0IGZ4cFR5cGUqIHNlY29uZF90eXBlLGNv
bnN0IHVuc2lnbmVkIHNob3J0KiBzZWNvbmRfc3RvcmUpOwoKICAgYm9vbCBsdChjb25zdCBmeHBU
eXBlKiBmaXJzdF90eXBlLGNvbnN0IHVuc2lnbmVkIHNob3J0KiBmaXJzdF9zdG9yZSxjb25zdCBm
eHBUeXBlKiBzZWNvbmRfdHlwZSxjb25zdCB1bnNpZ25lZCBzaG9ydCogc2Vjb25kX3N0b3JlKTsK
CiAgIGJvb2wgZ2V0Qml0KGludCBwb3MsIGNvbnN0IGZ4cFR5cGUqLCBjb25zdCB1bnNpZ25lZCBz
aG9ydCopOwogICB2b2lkIHNldEJpdChpbnQgcG9zLCBjb25zdCBmeHBUeXBlKiwgdW5zaWduZWQg
c2hvcnQqLCBib29sIGIpOwogICBmeHBPcVN0YXQgZ2V0U2xpY2UoCiAgICAgIGludCBmcm9tLAog
ICAgICBpbnQgdG8sCiAgICAgIGNvbnN0IGZ4cFR5cGUqdHlwZSwKICAgICAgdW5zaWduZWQgc2hv
cnQqc3RvcmUsCiAgICAgIGNvbnN0IGZ4cFR5cGUqc190eXBlLAogICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCpzX3N0b3JlCiAgICk7CiAgIHZvaWQgY29weVNsaWNlKAogICAgICBpbnQgaW5fZnJv
bSwKICAgICAgaW50IGluX3RvLAogICAgICBpbnQgb3V0X2Zyb20sCiAgICAgIGludCBvdXRfdG8s
CiAgICAgIGNvbnN0IGZ4cFR5cGUqaW5fdHlwZSwKICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQq
aW5fc3RvcmUsCiAgICAgIGNvbnN0IGZ4cFR5cGUqb3V0X3R5cGUsCiAgICAgIHVuc2lnbmVkIHNo
b3J0Km91dF9zdG9yZQogICApOwoKICAgIAogICB1bnNpZ25lZCBzaG9ydCBzdG9yZUFsbG9jKHVu
c2lnbmVkIHNob3J0KiYgc3QxKTsKICAgdW5zaWduZWQgc2hvcnQgc3RvcmVBbGxvYyhmeHBUeXBl
KiYgdHlwZTEsdW5zaWduZWQgc2hvcnQqJiBzdDEpOwogICB1bnNpZ25lZCBzaG9ydCBzdG9yZUFs
bG9jKHVuc2lnbmVkIHNob3J0KiYgc3QxLGZ4cFR5cGUqJiB0eXBlMix1bnNpZ25lZCBzaG9ydCom
IHN0Mik7CiAgIHVuc2lnbmVkIHNob3J0IHN0b3JlQWxsb2MoZnhwVHlwZSomIHR5cGUxLHVuc2ln
bmVkIHNob3J0KiYgc3QxLGZ4cFR5cGUqJiB0eXBlMix1bnNpZ25lZCBzaG9ydComIHN0Mik7CiAg
IHZvaWQgc3RvcmVGcmVlKGNvbnN0IHVuc2lnbmVkIHNob3J0IG5icik7CgogCiAKIAoKaW5saW5l
IHZvaWQgZnhwUmVzOjpvcGVyYXRvciA9IChjb25zdCBmeHBBcmcmIHNlYykgewogICBzZXRfc2xp
Y2UodHlwZSgpLHN0b3JlKCksc2VjLnR5cGUoKSxzZWMuc3RvcmUoKSxmcm9tX3BvcygpLHRvX3Bv
cygpKTsKfQoKaW5saW5lIHZvaWQgZnhwUmVzOjpvcGVyYXRvciA9IChjb25zdCBjaGFyKiBzdHIp
IHsKICAgaW50IGwgPSBzdHJsZW4oc3RyKTsKICAgaWYgKHR5cGUoKS0+c2lnbmVkVHlwZSgpKSBz
b2xfcGFyc2VCcEJpblMoc3RyLGZ4cF9fZmlyc3Rfc3RvcmUsbCk7CiAgIGVsc2Ugc29sX3BhcnNl
QnBCaW5VKHN0cixmeHBfX2ZpcnN0X3N0b3JlLGwpOwogICBmeHBUeXBlIHQgPSAqdHlwZSgpOwog
ICB0LnNldF93aWR0aChsKTsKICAgc2V0X3NsaWNlKHR5cGUoKSxzdG9yZSgpLCZ0LGZ4cF9fZmly
c3Rfc3RvcmUsZnJvbV9wb3MoKSx0b19wb3MoKSk7Cn0KCnRlbXBsYXRlPFNvbF9vcCBDTUQsIGlu
dCBPPgppbmxpbmUgdm9pZCBmeHBSZXM6Om9wZXJhdG9yID0gKGNvbnN0IGZ4cE9wZXI8Q01ELE8+
JiBzZWMpIHsKICAgZnhwVHlwZSAgICAgICAgc190eXBlOwogICBzZWMuY2FsY1REKCZzX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSk7CiAgIHNldF9zbGljZSh0eXBlKCksc3RvcmUoKSwmc190eXBlLGZ4
cF9fZmlyc3Rfc3RvcmUsZnJvbV9wb3MoKSx0b19wb3MoKSk7Cn0KCgppbmxpbmUgb3N0cmVhbSYg
b3BlcmF0b3IgPDwgKG9zdHJlYW0mIG9zLCBjb25zdCBmeHBSZXMmIHUpIHsgcmV0dXJuIG9zIDw8
IHUudG9fc3RyaW5nKCk7fQoKIAogCiAKCmlubGluZSB2b2lkIGZ4cFJlc0I6Om9wZXJhdG9yID0g
KGJvb2wgYikgewogICBzZXRCaXQoZnJvbV9wb3MoKSx0eXBlKCksc3RvcmUoKSxiKTsKfQoKaW5s
aW5lIGZ4cFJlc0I6Om9wZXJhdG9yIGJvb2woKSBjb25zdCB7CiAgIHJldHVybiBnZXRCaXQoZnJv
bV9wb3MoKSx0eXBlKCksc3RvcmUoKSk7Cn0KCmlubGluZSB2b2lkIGZ4cFJlc0I6Om9wZXJhdG9y
ID0gKGNvbnN0IGZ4cFJlc0ImIGIpIHsqdGhpcyA9IGJvb2woYik7fQoKIyAzMTI1ICIvZWRjL3dh
L2JlbmVkaWN0L2YzX2lkNi9jc2ZnL2hwdV9nbnUvRmRfaG9tZS9pbmNsdWRlL2Z4cC5oIgoKICAg
CiAKIAogCiAgIAoKCnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+CiAgIGlubGluZSBmeHBPcGVy
PFNPTF9ST1VORCwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgKyAoKSBjb25zdCB7dW5zaWdu
ZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90O2ludCBpZCA9IHN0b3JlQWxsb2Mob3Qsb3MpO2NhbGNU
RChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JPVU5ELDA+KG90LG9zLGlkKTsgfQp0ZW1wbGF0
ZTxTb2xfb3AgQ01ELGludCBPPgogICBpbmxpbmUgZnhwT3BlcjxTT0xfTUlOLDA+ICAgZnhwT3Bl
cjxDTUQsTz46Om9wZXJhdG9yIC0gKCkgY29uc3Qge3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBl
KiBvdDtpbnQgaWQgPSBzdG9yZUFsbG9jKG90LG9zKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBP
cGVyPFNPTF9NSU4sMD4ob3Qsb3MsaWQpOyAgIH0KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4K
ICAgaW5saW5lIGZ4cE9wZXI8U09MX05PVCwwPiAgIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciB+
ICgpIGNvbnN0IHt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7aW50IGlkID0gc3RvcmVB
bGxvYyhvdCxvcyk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfTk9ULDA+KG90LG9z
LGlkKTsgICB9CgoKCnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+CiAgIGlubGluZSBmeHBPcVN0
YXQgZnhwT3BlcjxDTUQsTz46OmNhbGNURChmeHBUeXBlKiBjb25zdCYgdHlwZSwgdW5zaWduZWQg
c2hvcnQqIGFyZykgY29uc3QgewogICAgICBpZiAoZF9zdGlkKSBzdG9yZUZyZWUoZF9zdGlkKTsg
IAogICAgICAgcmVzdWx0X3R5cGUoKnR5cGUsQ01ELGRfZmlyc3RfdHlwZSxkX3NlY29uZF90eXBl
KTsKICAgICAgaWYgKGRfc2Vjb25kX3N0b3JlKSB7CiAgICAgICAgIHJldHVybiA6OkZ4cDo6Y2Fs
Yyh0eXBlLCBhcmcsIENNRCwgZF9maXJzdF90eXBlLCBkX2ZpcnN0X3N0b3JlLCBkX3NlY29uZF90
eXBlLCBkX3NlY29uZF9zdG9yZSxkX2JpdFRydWUpOwogICAgICB9CiAgICAgIGVsc2UgewogICAg
ICAgICByZXR1cm4gOjpGeHA6OmNhbGModHlwZSwgYXJnLCBDTUQsIGRfZmlyc3RfdHlwZSwgZF9m
aXJzdF9zdG9yZSxkX2JpdFRydWUpOwogICAgICB9CiAgIH0KICAgCnRlbXBsYXRlPFNvbF9vcCBD
TUQsaW50IE8+CiAgIGlubGluZSBmeHBPcVN0YXQgZnhwT3BlcjxDTUQsTz46OmNhbGMoY29uc3Qg
ZnhwVHlwZSogdHlwZSx1bnNpZ25lZCBzaG9ydCogYXJnKSBjb25zdCB7CiAgICAgIGlmIChkX3N0
aWQpIHN0b3JlRnJlZShkX3N0aWQpOyAgCiAgICAgIGlmIChkX2JpdFRydWUpIHsKICAgICAgICAg
aWYgKGRfc2Vjb25kX3N0b3JlKSB7CiAgICAgICAgICAgIHJldHVybiA6OkZ4cDo6Y2FsYyh0eXBl
LCBhcmcsIGRfY21kLCBkX2ZpcnN0X3R5cGUsIGRfZmlyc3Rfc3RvcmUsIGRfc2Vjb25kX3R5cGUs
IGRfc2Vjb25kX3N0b3JlLGRfYml0VHJ1ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgIHJldHVybiA6OkZ4cDo6Y2FsYyh0eXBlLCBhcmcsIGRfY21kLCBkX2ZpcnN0X3R5
cGUsIGRfZmlyc3Rfc3RvcmUsZF9iaXRUcnVlKTsKICAgICAgICAgfQogICAgICB9CiAgICAgIGVs
c2UKICAgICAgewogICAgICAgICBpZiAoZF9jbWQgPT0gU09MX0FERAogICAgICAgICAgICAmJiBk
X2ZpcnN0X3R5cGU9PWRfc2Vjb25kX3R5cGUgJiYgZF9maXJzdF90eXBlPT10eXBlKSB7CiAgICAg
ICAgICAgIHJldHVybiA6OkZ4cDo6YWRkKHR5cGUsIGFyZywgZF9maXJzdF9zdG9yZSxkX3NlY29u
ZF9zdG9yZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZF9jbWQgPT0gU09MX1NVQgog
ICAgICAgICAgICAmJiBkX2ZpcnN0X3R5cGU9PWRfc2Vjb25kX3R5cGUgJiYgZF9maXJzdF90eXBl
PT10eXBlKSB7CiAgICAgICAgICAgIHJldHVybiA6OkZ4cDo6c3ViKHR5cGUsIGFyZywgZF9maXJz
dF9zdG9yZSxkX3NlY29uZF9zdG9yZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZF9j
bWQgPT0gU09MX01VTFQKICAgICAgICAgICAgJiYgZF9maXJzdF90eXBlPT1kX3NlY29uZF90eXBl
ICYmIGRfZmlyc3RfdHlwZT09dHlwZSkgewogICAgICAgICAgICByZXR1cm4gOjpGeHA6Om11bHQo
dHlwZSwgYXJnLCBkX2ZpcnN0X3N0b3JlLGRfc2Vjb25kX3N0b3JlKTsKICAgICAgICAgfQogICAg
ICAgICBlbHNlCiAgICAgICAgIGlmIChkX3NlY29uZF9zdG9yZSkgewogICAgICAgICAgICByZXR1
cm4gOjpGeHA6OmNhbGModHlwZSwgYXJnLCBkX2NtZCwgZF9maXJzdF90eXBlLCBkX2ZpcnN0X3N0
b3JlLCBkX3NlY29uZF90eXBlLCBkX3NlY29uZF9zdG9yZSk7CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgIHJldHVybiA6OkZ4cDo6Y2FsYyh0eXBlLCBhcmcsIGRfY21kLCBk
X2ZpcnN0X3R5cGUsIGRfZmlyc3Rfc3RvcmUpOwogICAgICAgICB9CiAgICAgIH0KICAgfQp0ZW1w
bGF0ZTxTb2xfb3AgQ01ELGludCBPPgogICBpbmxpbmUgZnhwT3FTdGF0IGZ4cE9wZXI8Q01ELE8+
OjpjYWxjKGNvbnN0IGZ4cFR5cGUqIHR5cGUsdW5zaWduZWQgc2hvcnQqIGFyZyxjb25zdCBmeHBP
cWMqIGJpdFRydWUpIGNvbnN0IHsKICAgICAgaWYgKGRfc3RpZCkgc3RvcmVGcmVlKGRfc3RpZCk7
ICAKICAgICAgaWYgKGRfc2Vjb25kX3N0b3JlKSB7CiAgICAgICAgIHJldHVybiA6OkZ4cDo6Y2Fs
Yyh0eXBlLCBhcmcsIGRfY21kLCBkX2ZpcnN0X3R5cGUsIGRfZmlyc3Rfc3RvcmUsIGRfc2Vjb25k
X3R5cGUsIGRfc2Vjb25kX3N0b3JlLCBiaXRUcnVlKTsKICAgICAgfQogICAgICBlbHNlIHsKICAg
ICAgICAgcmV0dXJuIDo6RnhwOjpjYWxjKHR5cGUsIGFyZywgZF9jbWQsIGRfZmlyc3RfdHlwZSwg
ZF9maXJzdF9zdG9yZSwgYml0VHJ1ZSk7CiAgICAgIH0KICAgfQoKdGVtcGxhdGU8PgogICBpbmxp
bmUgZnhwT3FTdGF0IGZ4cE9wZXI8U09MX0FERCwwPjo6Y2FsYyhjb25zdCBmeHBUeXBlKiB0eXBl
LHVuc2lnbmVkIHNob3J0KiBhcmcpIGNvbnN0IHsKICAgICAgaWYgKGRfc3RpZCkgc3RvcmVGcmVl
KGRfc3RpZCk7ICAKICAgICAgaWYgKGRfZmlyc3RfdHlwZT09ZF9zZWNvbmRfdHlwZSAmJiBkX2Zp
cnN0X3R5cGU9PXR5cGUpIHsKICAgICAgICAgcmV0dXJuIDo6RnhwOjphZGQodHlwZSwgYXJnLCBk
X2ZpcnN0X3N0b3JlLGRfc2Vjb25kX3N0b3JlKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAg
fQogICAgICAgICByZXR1cm4gOjpGeHA6OmFkZCh0eXBlLCBhcmcsIGRfZmlyc3RfdHlwZSxkX2Zp
cnN0X3N0b3JlLGRfc2Vjb25kX3R5cGUsZF9zZWNvbmRfc3RvcmUpOwogICB9CgoKCgogCiAKIAoK
aW5saW5lIGZ4cE9wZXI8U09MX1JPVU5ELDA+IGZ4cEFyZzo6b3BlcmF0b3IgKygpIGNvbnN0IHsg
O3JldHVybiBmeHBPcGVyPFNPTF9ST1VORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSk7
fQppbmxpbmUgZnhwT3BlcjxTT0xfTUlOLDA+ICAgZnhwQXJnOjpvcGVyYXRvciAtKCkgY29uc3Qg
eyA7cmV0dXJuIGZ4cE9wZXI8U09MX01JTiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSk7
fQppbmxpbmUgZnhwT3BlcjxTT0xfTk9ULDA+ICAgZnhwQXJnOjpvcGVyYXRvciB+KCkgY29uc3Qg
eyA7cmV0dXJuIGZ4cE9wZXI8U09MX05PVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSk7
fQoKIAogCiAKCgoKCnRlbXBsYXRlPGludCBTLCBpbnQgVywgaW50IFA+CiAgIGlubGluZSBib29s
IE51bWJlcjxTLFcsUD46OnBhcnNlQnBCaW4oY29uc3QgY2hhciogc3RyKSB7CiAgICAgIGJvb2wg
cmVzdWx0OwogICAgICBpZiAoUykgcmVzdWx0PShzb2xfcGFyc2VCcEJpblMoc3RyLHRoaXMtPnN0
b3JlKCksVyk9PTApOwogICAgICBlbHNlICAgcmVzdWx0PShzb2xfcGFyc2VCcEJpblUoc3RyLHRo
aXMtPnN0b3JlKCksVyk9PTApOwogICAgICB0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVj
dCgpICk7IAogICAgICByZXR1cm4gcmVzdWx0OwogICB9CgogIAogCiAKIAp0ZW1wbGF0ZTxpbnQg
UywgaW50IFcsIGludCBQPgogICBpbmxpbmUgdm9pZCBOdW1iZXI8UyxXLFA+Ojp3cml0ZShjb25z
dCBmeHBPcVN0YXQqIHN0YXQpCiAgIHsgICAgICB9CgoKCgoKCnRlbXBsYXRlPGludCBTLCBpbnQg
VywgaW50IFA+CiAgIGlubGluZSB2b2lkIE51bWJlcjxTLFcsUD46OmNvbnN0cnVjdCgpCiAgIHsK
CiAgICAgIHN0YXRpYyBjb25zdCBmeHBUeXBlIGRfc3R5cGUoUyxXLFApOwoKICAgICAgdGhpcy0+
ZF90eXBlID0gJmRfc3R5cGU7CiAgICAgICAKICAgICAgIAogICAgICAgCiAgICAgICAKICAgfQoK
CgoKCgp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgogICBpbmxpbmUgTnVtYmVyPFMsVyxQ
Pjo6TnVtYmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ4cEFyZyhkX3N0KSB7CiAg
ICAgIGNvbnN0cnVjdCgpOwoKCgogICAgICB0aGlzLT5kX3N0WyhXLTEpLzE2XSA9IDA7CgogICB9
Cgp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgogICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6
fk51bWJlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICB9CgojIDMyOTIgIi9l
ZGMvd2EvYmVuZWRpY3QvZjNfaWQ2L2NzZmcvaHB1X2dudS9GZF9ob21lL2luY2x1ZGUvZnhwLmgi
CgoKdGVtcGxhdGU8aW50IFMsIGludCBXLCBpbnQgUD4KICAgaW5saW5lIE51bWJlcjxTLFcsUD46
Ok51bWJlcihjb25zdCBOdW1iZXI8UyxXLFA+JiBvKSAgICAgIDpmeHBBcmcoZF9zdCkgewogICAg
ICBjb25zdHJ1Y3QoKTsKICAgICAgIAogICAgICB0aGlzLT5kX3N0WzBdID0gby5kX3N0WzBdOwog
ICAgICBpZiAoVz4xNikgewogICAgICAgICB0aGlzLT5kX3N0WzFdID0gby5kX3N0WzFdOwogICAg
ICAgICBpZiAoVz4zMikgewogICAgICAgICAgICBpbnQgc2l6ZSA9IChXLTEpLzE2ICsxOwogICAg
ICAgICAgICBmb3IgKGludCBpPTI7aTxzaXplO2krKykge3RoaXMtPmRfc3RbaV0gPSBvLmRfc3Rb
aV07fQogICAgICAgICB9CiAgICAgIH0gCiAgICAgIHRoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5
RGV0ZWN0KCkgKTsgCiAgIH0KCiMgMzMyMyAiL2VkYy93YS9iZW5lZGljdC9mM19pZDYvY3NmZy9o
cHVfZ251L0ZkX2hvbWUvaW5jbHVkZS9meHAuaCIKCgoKCnRlbXBsYXRlPGludCBTLCBpbnQgVywg
aW50IFA+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KCiAgIGlubGluZSBOdW1iZXI8UyxX
LFA+OjpOdW1iZXIoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgY21kKSAgICAgICAgICA6ZnhwQXJn
KGRfc3QpIHsKICAgICAgY29uc3RydWN0KCk7ICBmeHBPcVN0YXQgIHN0YXQgPSAgIGNtZC5jYWxj
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICApOwogICAgICB0aGlzLT53cml0ZSggJnN0YXQgKTsg
CiAgICAgIH0KCgoKdGVtcGxhdGU8aW50IFMsIGludCBXLCBpbnQgUD4gdGVtcGxhdGU8U29sX29w
IENNRCxpbnQgT1BUPgoKICAgaW5saW5lIE51bWJlcjxTLFcsUD46Ok51bWJlcihjb25zdCBmeHBP
cGVyPENNRCxPUFQ+JiBjbWQsY29uc3QgZnhwT3FjKiBidGMpOmZ4cEFyZyhkX3N0KSB7Y29uc3Ry
dWN0KCk7ZnhwT3FTdGF0ICBzdGF0ID0gICBjbWQuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCxidGMpOwogICAgICB0aGlzLT53cml0ZSggJnN0YXQgKTsgCiAgICAgIH0KCgoKdGVtcGxhdGU8
aW50IFMsIGludCBXLCBpbnQgUD4gdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgoKICAgaW5s
aW5lIE51bWJlcjxTLFcsUD46Ok51bWJlcihjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBjbWQsY29u
c3QgZnhwT3FjIGJ0Yyk6ZnhwQXJnKGRfc3QpIHtjb25zdHJ1Y3QoKTtmeHBPcVN0YXQgIHN0YXQg
PSAgIGNtZC5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0LCZidGMpOwogICAgICB0aGlzLT53
cml0ZSggJnN0YXQgKTsgCiAgICAgIH0KCgp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgog
ICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6TnVtYmVyKGNvbnN0IGNoYXIqIHN0cikgICAgICAgICAg
ICAgOmZ4cEFyZyhkX3N0KSB7Y29uc3RydWN0KCk7ZnhwT3FTdGF0ICBzdGF0ID0gICBkX3R5cGUt
PnBhcnNlKHN0cix0aGlzLT5kX3N0KTsKICAgICAgdGhpcy0+d3JpdGUoICZzdGF0ICk7IAogICAg
ICB9Cgp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgogICBpbmxpbmUgTnVtYmVyPFMsVyxQ
Pjo6TnVtYmVyKGNvbnN0IGZ4cFJlcyYgY21kKSA6ZnhwQXJnKGRfc3QpIHtjb25zdHJ1Y3QoKTsK
ICAgICAgZnhwT3FTdGF0ICBzdGF0ID0gICBnZXRTbGljZShjbWQuZnJvbV9wb3MoKSxjbWQudG9f
cG9zKCksdGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QsY21kLnR5cGUoKSxjbWQuc3RvcmUoKSk7CiAg
ICAgIHRoaXMtPndyaXRlKCAmc3RhdCApOyAKICAgICAgfQp0ZW1wbGF0ZTxpbnQgUywgaW50IFcs
IGludCBQPgogICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6TnVtYmVyKGNvbnN0IGZ4cFJlc0ImIGNt
ZCkgICAgICAgICAgOmZ4cEFyZyhkX3N0KSB7Y29uc3RydWN0KCk7YXNzaWduKChsb25nKWJvb2wo
Y21kKT8xLjA6MC4wKTsKICAgICAgdGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSAp
OyAKICAgICAgfQoKdGVtcGxhdGU8aW50IFMsIGludCBXLCBpbnQgUD4KICAgaW5saW5lIE51bWJl
cjxTLFcsUD46Ok51bWJlcihkb3VibGUgZCkgICAgICAgICAgICAgICAgICAgIDpmeHBBcmcoZF9z
dCkge2NvbnN0cnVjdCgpO2Fzc2lnbihkKTsKICAgICAgdGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1w
dHlEZXRlY3QoKSApOyAKICAgICAgfQp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgogICBp
bmxpbmUgTnVtYmVyPFMsVyxQPjo6TnVtYmVyKGZsb2F0IGQpICAgICAgICAgICAgICAgICAgICAg
OmZ4cEFyZyhkX3N0KSB7Y29uc3RydWN0KCk7YXNzaWduKGQpOwogICAgICB0aGlzLT53cml0ZSgg
ZnhwQXJnOjplbXB0eURldGVjdCgpICk7IAogICAgICB9CnRlbXBsYXRlPGludCBTLCBpbnQgVywg
aW50IFA+CiAgIGlubGluZSBOdW1iZXI8UyxXLFA+OjpOdW1iZXIoYm9vbCBiKSAgICAgICAgICAg
ICAgICAgICAgICA6ZnhwQXJnKGRfc3QpIHtjb25zdHJ1Y3QoKTthc3NpZ24oKGxvbmcpYik7CiAg
ICAgIHRoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgCiAgICAgIH0KdGVtcGxh
dGU8aW50IFMsIGludCBXLCBpbnQgUD4KICAgaW5saW5lIE51bWJlcjxTLFcsUD46Ok51bWJlcihj
aGFyIGIpICAgICAgICAgICAgICAgICAgICAgIDpmeHBBcmcoZF9zdCkge2NvbnN0cnVjdCgpO2Fz
c2lnbigobG9uZyliKTsKICAgICAgdGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSAp
OyAKICAgICAgfQp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgogICBpbmxpbmUgTnVtYmVy
PFMsVyxQPjo6TnVtYmVyKHNob3J0IGIpICAgICAgICAgICAgICAgICAgICAgOmZ4cEFyZyhkX3N0
KSB7Y29uc3RydWN0KCk7YXNzaWduKChsb25nKWIpOwogICAgICB0aGlzLT53cml0ZSggZnhwQXJn
OjplbXB0eURldGVjdCgpICk7IAogICAgICB9CnRlbXBsYXRlPGludCBTLCBpbnQgVywgaW50IFA+
CiAgIGlubGluZSBOdW1iZXI8UyxXLFA+OjpOdW1iZXIoaW50IGIpICAgICAgICAgICAgICAgICAg
ICAgICA6ZnhwQXJnKGRfc3QpIHtjb25zdHJ1Y3QoKTthc3NpZ24oKGxvbmcpYik7CiAgICAgIHRo
aXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgCiAgICAgIH0KdGVtcGxhdGU8aW50
IFMsIGludCBXLCBpbnQgUD4KICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6IE51bWJlcihsb25nIGIp
ICAgICAgICAgICAgICAgICAgICAgIDpmeHBBcmcoZF9zdCkge2NvbnN0cnVjdCgpO2Fzc2lnbigo
bG9uZyliKTsKICAgICAgdGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAKICAg
ICAgfQp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgogICBpbmxpbmUgTnVtYmVyPFMsVyxQ
Pjo6TnVtYmVyKHVuc2lnbmVkIGNoYXIgYikgICAgICAgICAgICAgOmZ4cEFyZyhkX3N0KSB7Y29u
c3RydWN0KCk7YXNzaWduKCh1bnNpZ25lZCBsb25nKWIpOwogICAgICB0aGlzLT53cml0ZSggZnhw
QXJnOjplbXB0eURldGVjdCgpICk7IAogICAgICB9CnRlbXBsYXRlPGludCBTLCBpbnQgVywgaW50
IFA+CiAgIGlubGluZSBOdW1iZXI8UyxXLFA+OjpOdW1iZXIodW5zaWduZWQgc2hvcnQgYikgICAg
ICAgICAgICA6ZnhwQXJnKGRfc3QpIHtjb25zdHJ1Y3QoKTthc3NpZ24oKHVuc2lnbmVkIGxvbmcp
Yik7CiAgICAgIHRoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgCiAgICAgIH0K
dGVtcGxhdGU8aW50IFMsIGludCBXLCBpbnQgUD4KICAgaW5saW5lIE51bWJlcjxTLFcsUD46Ok51
bWJlcih1bnNpZ25lZCBpbnQgYikgICAgICAgICAgICAgIDpmeHBBcmcoZF9zdCkge2NvbnN0cnVj
dCgpO2Fzc2lnbigodW5zaWduZWQgbG9uZyliKTsKICAgICAgdGhpcy0+d3JpdGUoIGZ4cEFyZzo6
ZW1wdHlEZXRlY3QoKSApOyAKICAgICAgfQp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgog
ICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6TnVtYmVyKHVuc2lnbmVkIGxvbmcgYikgICAgICAgICAg
ICAgOmZ4cEFyZyhkX3N0KSB7Y29uc3RydWN0KCk7YXNzaWduKCh1bnNpZ25lZCBsb25nKWIpOwog
ICAgICB0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7IAogICAgICB9Cgp0ZW1w
bGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgogICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6TnVtYmVy
KGRvdWJsZSBkLGNvbnN0IGZ4cE9xYyogYnRjKSAgICAgICAgOmZ4cEFyZyhkX3N0KSB7Y29uc3Ry
dWN0KCk7YXNzaWduKGQsYnRjKTsKICAgICAgdGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRl
Y3QoKSApOyAKICAgICAgfQp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgogICBpbmxpbmUg
TnVtYmVyPFMsVyxQPjo6TnVtYmVyKGZsb2F0IGQsY29uc3QgZnhwT3FjKiBidGMpICAgICAgICAg
OmZ4cEFyZyhkX3N0KSB7Y29uc3RydWN0KCk7YXNzaWduKGQsYnRjKTsKICAgICAgdGhpcy0+d3Jp
dGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAKICAgICAgfQp0ZW1wbGF0ZTxpbnQgUywgaW50
IFcsIGludCBQPgogICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6TnVtYmVyKGJvb2wgYixjb25zdCBm
eHBPcWMqIGJ0YykgICAgICAgICAgOmZ4cEFyZyhkX3N0KSB7Y29uc3RydWN0KCk7YXNzaWduKChk
b3VibGUpYixidGMpOwogICAgICB0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7
IAogICAgICB9CnRlbXBsYXRlPGludCBTLCBpbnQgVywgaW50IFA+CiAgIGlubGluZSBOdW1iZXI8
UyxXLFA+OjpOdW1iZXIoY2hhciBiLGNvbnN0IGZ4cE9xYyogYnRjKSAgICAgICAgICA6ZnhwQXJn
KGRfc3QpIHtjb25zdHJ1Y3QoKTthc3NpZ24oKGRvdWJsZSliLGJ0Yyk7CiAgICAgIHRoaXMtPndy
aXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgCiAgICAgIH0KdGVtcGxhdGU8aW50IFMsIGlu
dCBXLCBpbnQgUD4KICAgaW5saW5lIE51bWJlcjxTLFcsUD46Ok51bWJlcihzaG9ydCBiLGNvbnN0
IGZ4cE9xYyogYnRjKSAgICAgICAgIDpmeHBBcmcoZF9zdCkge2NvbnN0cnVjdCgpO2Fzc2lnbigo
ZG91YmxlKWIsYnRjKTsKICAgICAgdGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSAp
OyAKICAgICAgfQp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgogICBpbmxpbmUgTnVtYmVy
PFMsVyxQPjo6TnVtYmVyKGludCBiLGNvbnN0IGZ4cE9xYyogYnRjKSAgICAgICAgICAgOmZ4cEFy
ZyhkX3N0KSB7Y29uc3RydWN0KCk7YXNzaWduKChkb3VibGUpYixidGMpOwogICAgICB0aGlzLT53
cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7IAogICAgICB9CnRlbXBsYXRlPGludCBTLCBp
bnQgVywgaW50IFA+CiAgIGlubGluZSBOdW1iZXI8UyxXLFA+OjpOdW1iZXIobG9uZyBiLGNvbnN0
IGZ4cE9xYyogYnRjKSAgICAgICAgICA6ZnhwQXJnKGRfc3QpIHtjb25zdHJ1Y3QoKTthc3NpZ24o
KGRvdWJsZSliLGJ0Yyk7CiAgICAgIHRoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkg
KTsgCiAgICAgIH0KdGVtcGxhdGU8aW50IFMsIGludCBXLCBpbnQgUD4KICAgaW5saW5lIE51bWJl
cjxTLFcsUD46Ok51bWJlcih1bnNpZ25lZCBjaGFyIGIsY29uc3QgZnhwT3FjKiBidGMpIDpmeHBB
cmcoZF9zdCkge2NvbnN0cnVjdCgpO2Fzc2lnbigoZG91YmxlKWIsYnRjKTsKICAgICAgdGhpcy0+
d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAKICAgICAgfQp0ZW1wbGF0ZTxpbnQgUywg
aW50IFcsIGludCBQPgogICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6TnVtYmVyKHVuc2lnbmVkIHNo
b3J0IGIsY29uc3QgZnhwT3FjKiBidGMpOmZ4cEFyZyhkX3N0KSB7Y29uc3RydWN0KCk7YXNzaWdu
KChkb3VibGUpYixidGMpOwogICAgICB0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgp
ICk7IAogICAgICB9CnRlbXBsYXRlPGludCBTLCBpbnQgVywgaW50IFA+CiAgIGlubGluZSBOdW1i
ZXI8UyxXLFA+OjpOdW1iZXIodW5zaWduZWQgaW50IGIsY29uc3QgZnhwT3FjKiBidGMpICA6Znhw
QXJnKGRfc3QpIHtjb25zdHJ1Y3QoKTthc3NpZ24oKGRvdWJsZSliLGJ0Yyk7CiAgICAgIHRoaXMt
PndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgCiAgICAgIH0KdGVtcGxhdGU8aW50IFMs
IGludCBXLCBpbnQgUD4KICAgaW5saW5lIE51bWJlcjxTLFcsUD46Ok51bWJlcih1bnNpZ25lZCBs
b25nIGIsY29uc3QgZnhwT3FjKiBidGMpIDpmeHBBcmcoZF9zdCkge2NvbnN0cnVjdCgpO2Fzc2ln
bigoZG91YmxlKWIsYnRjKTsKICAgICAgdGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3Qo
KSApOyAKICAgICAgfQoKdGVtcGxhdGU8aW50IFMsIGludCBXLCBpbnQgUD4KICAgaW5saW5lIE51
bWJlcjxTLFcsUD46Ok51bWJlcihkb3VibGUgZCxjb25zdCBmeHBPcWMgYnRjKSAgICAgICAgOmZ4
cEFyZyhkX3N0KSB7Y29uc3RydWN0KCk7YXNzaWduKGQsJmJ0Yyk7CiAgICAgIHRoaXMtPndyaXRl
KCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgCiAgICAgIH0KdGVtcGxhdGU8aW50IFMsIGludCBX
LCBpbnQgUD4KICAgaW5saW5lIE51bWJlcjxTLFcsUD46Ok51bWJlcihmbG9hdCBkLGNvbnN0IGZ4
cE9xYyBidGMpICAgICAgICAgOmZ4cEFyZyhkX3N0KSB7Y29uc3RydWN0KCk7YXNzaWduKGQsJmJ0
Yyk7CiAgICAgIHRoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgCiAgICAgIH0K
dGVtcGxhdGU8aW50IFMsIGludCBXLCBpbnQgUD4KICAgaW5saW5lIE51bWJlcjxTLFcsUD46Ok51
bWJlcihib29sIGIsY29uc3QgZnhwT3FjIGJ0YykgICAgICAgICAgOmZ4cEFyZyhkX3N0KSB7Y29u
c3RydWN0KCk7YXNzaWduKChkb3VibGUpYiwmYnRjKTsKICAgICAgdGhpcy0+d3JpdGUoIGZ4cEFy
Zzo6ZW1wdHlEZXRlY3QoKSApOyAKICAgICAgfQp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQ
PgogICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6TnVtYmVyKGNoYXIgYixjb25zdCBmeHBPcWMgYnRj
KSAgICAgICAgICA6ZnhwQXJnKGRfc3QpIHtjb25zdHJ1Y3QoKTthc3NpZ24oKGRvdWJsZSliLCZi
dGMpOwogICAgICB0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7IAogICAgICB9
CnRlbXBsYXRlPGludCBTLCBpbnQgVywgaW50IFA+CiAgIGlubGluZSBOdW1iZXI8UyxXLFA+OjpO
dW1iZXIoc2hvcnQgYixjb25zdCBmeHBPcWMgYnRjKSAgICAgICAgIDpmeHBBcmcoZF9zdCkge2Nv
bnN0cnVjdCgpO2Fzc2lnbigoZG91YmxlKWIsJmJ0Yyk7CiAgICAgIHRoaXMtPndyaXRlKCBmeHBB
cmc6OmVtcHR5RGV0ZWN0KCkgKTsgCiAgICAgIH0KdGVtcGxhdGU8aW50IFMsIGludCBXLCBpbnQg
UD4KICAgaW5saW5lIE51bWJlcjxTLFcsUD46Ok51bWJlcihpbnQgYixjb25zdCBmeHBPcWMgYnRj
KSAgICAgICAgICAgOmZ4cEFyZyhkX3N0KSB7Y29uc3RydWN0KCk7YXNzaWduKChkb3VibGUpYiwm
YnRjKTsKICAgICAgdGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAKICAgICAg
fQp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGludCBQPgogICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6
TnVtYmVyKGxvbmcgYixjb25zdCBmeHBPcWMgYnRjKSAgICAgICAgICA6ZnhwQXJnKGRfc3QpIHtj
b25zdHJ1Y3QoKTthc3NpZ24oKGRvdWJsZSliLCZidGMpOwogICAgICB0aGlzLT53cml0ZSggZnhw
QXJnOjplbXB0eURldGVjdCgpICk7IAogICAgICB9CnRlbXBsYXRlPGludCBTLCBpbnQgVywgaW50
IFA+CiAgIGlubGluZSBOdW1iZXI8UyxXLFA+OjpOdW1iZXIodW5zaWduZWQgY2hhciBiLGNvbnN0
IGZ4cE9xYyBidGMpIDpmeHBBcmcoZF9zdCkge2NvbnN0cnVjdCgpO2Fzc2lnbigoZG91YmxlKWIs
JmJ0Yyk7CiAgICAgIHRoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgCiAgICAg
IH0KdGVtcGxhdGU8aW50IFMsIGludCBXLCBpbnQgUD4KICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6
IE51bWJlcih1bnNpZ25lZCBzaG9ydCBiLGNvbnN0IGZ4cE9xYyBidGMpOmZ4cEFyZyhkX3N0KSB7
Y29uc3RydWN0KCk7YXNzaWduKChkb3VibGUpYiwmYnRjKTsKICAgICAgdGhpcy0+d3JpdGUoIGZ4
cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAKICAgICAgfQp0ZW1wbGF0ZTxpbnQgUywgaW50IFcsIGlu
dCBQPgogICBpbmxpbmUgTnVtYmVyPFMsVyxQPjo6TnVtYmVyKHVuc2lnbmVkIGludCBiLGNvbnN0
IGZ4cE9xYyBidGMpICA6ZnhwQXJnKGRfc3QpIHtjb25zdHJ1Y3QoKTthc3NpZ24oKGRvdWJsZSli
LCZidGMpOwogICAgICB0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7IAogICAg
ICB9CnRlbXBsYXRlPGludCBTLCBpbnQgVywgaW50IFA+CiAgIGlubGluZSBOdW1iZXI8UyxXLFA+
OjpOdW1iZXIodW5zaWduZWQgbG9uZyBiLGNvbnN0IGZ4cE9xYyBidGMpIDpmeHBBcmcoZF9zdCkg
e2NvbnN0cnVjdCgpO2Fzc2lnbigoZG91YmxlKWIsJmJ0Yyk7CiAgICAgIHRoaXMtPndyaXRlKCBm
eHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgCiAgICAgIH0KCgoKCgp0ZW1wbGF0ZTxTb2xfb3AgQ01E
LGludCBPPgppbmxpbmUgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIGludCAoKSBjb25zdCAgICB7
cmV0dXJuIChpbnQpSW50PDMyPigqdGhpcykubCgpO30KCgoKIAogCiAKCgoKCgoKCgoKdGVtcGxh
dGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CgogICAgICBpbmxp
bmUgRml4PFcsUD46OkZpeChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBjbWQsY29uc3QgZnhwT3Fj
KiBidGMpOk51bWJlcjwxLFcsUD4oY21kLGJ0Yyl7fQoKCgp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+
IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KCiAgICAgIGlubGluZSBGaXg8VyxQPjo6Rml4
KGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIGNtZCk6TnVtYmVyPDEsVyxQPihjbWQpe30KCgogCiAK
IAoKCgoKCgoKCgp0ZW1wbGF0ZTxpbnQgVz4gdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgoK
ICAgICAgaW5saW5lIEludDxXPjo6SW50KGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIGNtZCxjb25z
dCBmeHBPcWMqIGJ0Yyk6Rml4PFcsMD4oY21kLGJ0Yyl7fQoKCgp0ZW1wbGF0ZTxpbnQgVz4gdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgoKICAgICAgaW5saW5lIEludDxXPjo6SW50KGNvbnN0
IGZ4cE9wZXI8Q01ELE9QVD4mIGNtZCk6Rml4PFcsMD4oY21kKXt9CgoKIAogCiAKCgoKCgoKCgoK
dGVtcGxhdGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+CgogICAg
ICBpbmxpbmUgVWZpeDxXLFA+OjpVZml4KGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIGNtZCxjb25z
dCBmeHBPcWMqIGJ0Yyk6TnVtYmVyPDAsVyxQPihjbWQsYnRjKXt9CgoKCnRlbXBsYXRlPGludCBX
LCBpbnQgUD4gdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPgoKICAgICAgaW5saW5lIFVmaXg8
VyxQPjo6VWZpeChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBjbWQpOk51bWJlcjwwLFcsUD4oY21k
KXt9CgoKIAogCiAKCgoKCgoKCgoKdGVtcGxhdGU8aW50IFc+IHRlbXBsYXRlPFNvbF9vcCBDTUQs
aW50IE9QVD4KCiAgICAgIGlubGluZSBVaW50PFc+OjpVaW50KGNvbnN0IGZ4cE9wZXI8Q01ELE9Q
VD4mIGNtZCxjb25zdCBmeHBPcWMqIGJ0Yyk6VWZpeDxXLDA+KGNtZCxidGMpe30KCgoKdGVtcGxh
dGU8aW50IFc+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4KCiAgICAgIGlubGluZSBVaW50
PFc+OjpVaW50KGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIGNtZCk6VWZpeDxXLDA+KGNtZCl7fQoK
CiAKIAogCiAKIAoKIAogCiAKIAoKaW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBmeHBBcmc6Om9w
ZXJhdG9yICsgKGNvbnN0IGZ4cEFyZyYgcykgIGNvbnN0IHsgOyA7cmV0dXJuIGZ4cE9wZXI8U09M
X0FERCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30K
aW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBmeHBBcmc6Om9wZXJhdG9yICsgKGJvb2wgcykgY29u
c3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29s
X2wycygobG9uZylzLHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9w
ZXI8U09MX0FERCwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLHN0LGlkKTt9
CmlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4gb3BlcmF0b3IgKyAoYm9vbCBwLCBjb25zdCBmeHBB
cmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3Nv
bF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBP
cGVyPFNPTF9BREQsMD4oJmZ4cFR5cGVfX2Jvb2xfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUs
aWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBmeHBBcmc6Om9wZXJhdG9yICsgKGNoYXIg
cykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhz
dCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJu
IGZ4cE9wZXI8U09MX0FERCwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fY2hhcl90eXBlLHN0
LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4gb3BlcmF0b3IgKyAoY2hhciBwLCBjb25z
dCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Mo
c3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO3JldHVy
biBmeHBPcGVyPFNPTF9BREQsMD4oJmZ4cFR5cGVfX2NoYXJfdHlwZSxzdCxzLmRfdHlwZSxzLmRf
c3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBmeHBBcmc6Om9wZXJhdG9yICsg
KHNob3J0IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgp
KTtyZXR1cm4gZnhwT3BlcjxTT0xfQURELDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19zaG9y
dF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4gb3BlcmF0b3IgKyAoc2hv
cnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBz
dG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lk
dGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FERCwwPigmZnhwVHlwZV9fc2hvcnRfdHlwZSxzdCxz
LmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBmeHBBcmc6
Om9wZXJhdG9yICsgKGludCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQg
aWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2ludF90eXBl
LndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5
cGVfX2ludF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4gb3BlcmF0b3Ig
KyAoaW50IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlk
ID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19pbnRfdHlwZS53
aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfQURELDA+KCZmeHBUeXBlX19pbnRfdHlwZSxzdCxz
LmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBmeHBBcmc6
Om9wZXJhdG9yICsgKGxvbmcgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50
IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25nX3R5
cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FERCwwPihkX3R5cGUsZF9zdG9yZSwmZnhw
VHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4gb3BlcmF0
b3IgKyAobG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGlu
dCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fbG9uZ190
eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oJmZ4cFR5cGVfX2xvbmdfdHlw
ZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBm
eHBBcmc6Om9wZXJhdG9yICsgKHVuc2lnbmVkIGNoYXIgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVk
IHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBm
eHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oZF90
eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8
U09MX0FERCwwPiBvcGVyYXRvciArICh1bnNpZ25lZCBjaGFyIHAsIGNvbnN0IGZ4cEFyZyYgcykg
eyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygo
bG9uZylwLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNP
TF9BREQsMD4oJmZ4cFR5cGVfX3VjaGFyX3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9
CmlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4gZnhwQXJnOjpvcGVyYXRvciArICh1bnNpZ25lZCBz
aG9ydCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkp
O3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9y
dF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4gb3BlcmF0b3IgKyAodW5z
aWduZWQgc2hvcnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBp
bnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3VzaG9y
dF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oJmZ4cFR5cGVfX3VzaG9y
dF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQURE
LDA+IGZ4cEFyZzo6b3BlcmF0b3IgKyAodW5zaWduZWQgaW50IHMpIGNvbnN0ICAgIHsgIDt1bnNp
Z25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxz
dCwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4o
ZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3Bl
cjxTT0xfQURELDA+IG9wZXJhdG9yICsgKHVuc2lnbmVkIGludCBwLCBjb25zdCBmeHBBcmcmIHMp
IHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMo
KGxvbmcpcCxzdCwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNP
TF9BREQsMD4oJmZ4cFR5cGVfX3VpbnRfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30K
aW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBmeHBBcmc6Om9wZXJhdG9yICsgKHVuc2lnbmVkIGxv
bmcgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxv
YyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO3Jl
dHVybiBmeHBPcGVyPFNPTF9BREQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3Vsb25nX3R5
cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBvcGVyYXRvciArICh1bnNpZ25l
ZCBsb25nIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlk
ID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191bG9uZ190eXBl
LndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oJmZ4cFR5cGVfX3Vsb25nX3R5cGUs
c3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4gZnhw
QXJnOjpvcGVyYXRvciArIChmbG9hdCBzKSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09O
Vik7ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9s
MnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVy
PFNPTF9BREQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxpZCk7fQpp
bmxpbmUgZnhwT3BlcjxTT0xfQURELDA+IG9wZXJhdG9yICsgKGZsb2F0IHAsIGNvbnN0IGZ4cEFy
ZyYgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7dW5zaWduZWQgc2hvcnQqIHN0OyBp
bnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdf
dHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfQURELDA+KCZmeHBUeXBlX19sb25nX3R5
cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4g
ZnhwQXJnOjpvcGVyYXRvciArIChkb3VibGUgcykgY29uc3QgICAge0Z4cEFzc2VydChGWFBfX05P
X0NPTlYpOyAgICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtz
b2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhw
T3BlcjxTT0xfQURELDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsc3QsaWQp
O30KaW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBvcGVyYXRvciArIChkb3VibGUgcCwgY29uc3Qg
ZnhwQXJnJiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDt1bnNpZ25lZCBzaG9ydCog
c3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9f
bG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oJmZ4cFR5cGVfX2xv
bmdfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1NV
QiwwPiBmeHBBcmc6Om9wZXJhdG9yIC0gKGNvbnN0IGZ4cEFyZyYgcykgIGNvbnN0IHsgOyA7cmV0
dXJuIGZ4cE9wZXI8U09MX1NVQiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSxzLmRfdHlw
ZSxzLmRfc3RvcmUpO30KaW5saW5lIGZ4cE9wZXI8U09MX1NVQiwwPiBmeHBBcmc6Om9wZXJhdG9y
IC0gKGJvb2wgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3Rv
cmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgo
KSk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fYm9v
bF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9TVUIsMD4gb3BlcmF0b3IgLSAoYm9v
bCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0
b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRo
KCkpO3JldHVybiBmeHBPcGVyPFNPTF9TVUIsMD4oJmZ4cFR5cGVfX2Jvb2xfdHlwZSxzdCxzLmRf
dHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1NVQiwwPiBmeHBBcmc6Om9w
ZXJhdG9yIC0gKGNoYXIgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlk
ID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUu
d2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlw
ZV9fY2hhcl90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9TVUIsMD4gb3BlcmF0b3Ig
LSAoY2hhciBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBp
ZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fY2hhcl90eXBl
LndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9TVUIsMD4oJmZ4cFR5cGVfX2NoYXJfdHlwZSxz
dCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1NVQiwwPiBmeHBB
cmc6Om9wZXJhdG9yIC0gKHNob3J0IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7
IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fc2hv
cnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfU1VCLDA+KGRfdHlwZSxkX3N0b3Jl
LCZmeHBUeXBlX19zaG9ydF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9TVUIsMD4g
b3BlcmF0b3IgLSAoc2hvcnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQq
IHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVf
X3Nob3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiwwPigmZnhwVHlwZV9f
c2hvcnRfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09M
X1NVQiwwPiBmeHBBcmc6Om9wZXJhdG9yIC0gKGludCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQg
c2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4
cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9TVUIsMD4oZF90eXBl
LGRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9T
VUIsMD4gb3BlcmF0b3IgLSAoaW50IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNo
b3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBU
eXBlX19pbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfU1VCLDA+KCZmeHBUeXBl
X19pbnRfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09M
X1NVQiwwPiBmeHBBcmc6Om9wZXJhdG9yIC0gKGxvbmcgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVk
IHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBm
eHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiwwPihkX3R5
cGUsZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNP
TF9TVUIsMD4gb3BlcmF0b3IgLSAobG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25l
ZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwg
ZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9TVUIsMD4oJmZ4
cFR5cGVfX2xvbmdfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9w
ZXI8U09MX1NVQiwwPiBmeHBBcmc6Om9wZXJhdG9yIC0gKHVuc2lnbmVkIGNoYXIgcykgY29uc3Qg
ICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wy
cygobG9uZylzLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVy
PFNPTF9TVUIsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsc3QsaWQpO30K
aW5saW5lIGZ4cE9wZXI8U09MX1NVQiwwPiBvcGVyYXRvciAtICh1bnNpZ25lZCBjaGFyIHAsIGNv
bnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxv
YyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3Jl
dHVybiBmeHBPcGVyPFNPTF9TVUIsMD4oJmZ4cFR5cGVfX3VjaGFyX3R5cGUsc3Qscy5kX3R5cGUs
cy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9TVUIsMD4gZnhwQXJnOjpvcGVyYXRv
ciAtICh1bnNpZ25lZCBzaG9ydCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBp
bnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VzaG9y
dF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9TVUIsMD4oZF90eXBlLGRfc3RvcmUs
JmZ4cFR5cGVfX3VzaG9ydF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9TVUIsMD4g
b3BlcmF0b3IgLSAodW5zaWduZWQgc2hvcnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWdu
ZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3Qs
IGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9TVUIsMD4o
JmZ4cFR5cGVfX3VzaG9ydF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUg
ZnhwT3BlcjxTT0xfU1VCLDA+IGZ4cEFyZzo6b3BlcmF0b3IgLSAodW5zaWduZWQgaW50IHMpIGNv
bnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3Nv
bF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBP
cGVyPFNPTF9TVUIsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxzdCxpZCk7
fQppbmxpbmUgZnhwT3BlcjxTT0xfU1VCLDA+IG9wZXJhdG9yIC0gKHVuc2lnbmVkIGludCBwLCBj
b25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxs
b2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO3Jl
dHVybiBmeHBPcGVyPFNPTF9TVUIsMD4oJmZ4cFR5cGVfX3VpbnRfdHlwZSxzdCxzLmRfdHlwZSxz
LmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1NVQiwwPiBmeHBBcmc6Om9wZXJhdG9y
IC0gKHVuc2lnbmVkIGxvbmcgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50
IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191bG9uZ190
eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9TVUIsMD4oZF90eXBlLGRfc3RvcmUsJmZ4
cFR5cGVfX3Vsb25nX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1NVQiwwPiBvcGVy
YXRvciAtICh1bnNpZ25lZCBsb25nIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNo
b3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBU
eXBlX191bG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9TVUIsMD4oJmZ4cFR5
cGVfX3Vsb25nX3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVy
PFNPTF9TVUIsMD4gZnhwQXJnOjpvcGVyYXRvciAtIChmbG9hdCBzKSBjb25zdCAgICB7RnhwQXNz
ZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkp
O3JldHVybiBmeHBPcGVyPFNPTF9TVUIsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdf
dHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfU1VCLDA+IG9wZXJhdG9yIC0gKGZsb2F0
IHAsIGNvbnN0IGZ4cEFyZyYgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7dW5zaWdu
ZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3Qs
IGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfU1VCLDA+KCZm
eHBUeXBlX19sb25nX3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBP
cGVyPFNPTF9TVUIsMD4gZnhwQXJnOjpvcGVyYXRvciAtIChkb3VibGUgcykgY29uc3QgICAge0Z4
cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBz
dG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0
aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfU1VCLDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19s
b25nX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1NVQiwwPiBvcGVyYXRvciAtIChk
b3VibGUgcCwgY29uc3QgZnhwQXJnJiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDt1
bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcp
cCxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9TVUIs
MD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5l
IGZ4cE9wZXI8U09MX01VTFQsMD4gZnhwQXJnOjpvcGVyYXRvciAqIChjb25zdCBmeHBBcmcmIHMp
ICBjb25zdCB7IDsgO3JldHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgZnhwT3BlcjxTT0xfTVVMVCww
PiBmeHBBcmc6Om9wZXJhdG9yICogKGJvb2wgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0
KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBl
X19ib29sX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX01VTFQsMD4oZF90eXBlLGRf
c3RvcmUsJmZ4cFR5cGVfX2Jvb2xfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfTVVM
VCwwPiBvcGVyYXRvciAqIChib29sIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNo
b3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBU
eXBlX19ib29sX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX01VTFQsMD4oJmZ4cFR5
cGVfX2Jvb2xfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8
U09MX01VTFQsMD4gZnhwQXJnOjpvcGVyYXRvciAqIChjaGFyIHMpIGNvbnN0ICAgIHsgIDt1bnNp
Z25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxz
dCwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9NVUxULDA+
KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9w
ZXI8U09MX01VTFQsMD4gb3BlcmF0b3IgKiAoY2hhciBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1
bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcp
cCxzdCwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9NVUxU
LDA+KCZmeHBUeXBlX19jaGFyX3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGlu
ZSBmeHBPcGVyPFNPTF9NVUxULDA+IGZ4cEFyZzo6b3BlcmF0b3IgKiAoc2hvcnQgcykgY29uc3Qg
ICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wy
cygobG9uZylzLHN0LCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVy
PFNPTF9NVUxULDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLHN0LGlkKTt9
CmlubGluZSBmeHBPcGVyPFNPTF9NVUxULDA+IG9wZXJhdG9yICogKHNob3J0IHAsIGNvbnN0IGZ4
cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7
c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBm
eHBPcGVyPFNPTF9NVUxULDA+KCZmeHBUeXBlX19zaG9ydF90eXBlLHN0LHMuZF90eXBlLHMuZF9z
dG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfTVVMVCwwPiBmeHBBcmc6Om9wZXJhdG9yICog
KGludCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3Jl
dHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19pbnRfdHlw
ZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfTVVMVCwwPiBvcGVyYXRvciAqIChpbnQgcCwg
Y29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3Jl
dHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KCZmeHBUeXBlX19pbnRfdHlwZSxzdCxzLmRfdHlwZSxz
LmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX01VTFQsMD4gZnhwQXJnOjpvcGVyYXRv
ciAqIChsb25nIHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0
b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRo
KCkpO3JldHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19s
b25nX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX01VTFQsMD4gb3BlcmF0b3IgKiAo
bG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9
IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndp
ZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KCZmeHBUeXBlX19sb25nX3R5cGUsc3Qs
cy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9NVUxULDA+IGZ4cEFy
Zzo6b3BlcmF0b3IgKiAodW5zaWduZWQgY2hhciBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hv
cnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5
cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX01VTFQsMD4oZF90eXBl
LGRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09M
X01VTFQsMD4gb3BlcmF0b3IgKiAodW5zaWduZWQgY2hhciBwLCBjb25zdCBmeHBBcmcmIHMpIHsg
IDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxv
bmcpcCxzdCwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xf
TVVMVCwwPigmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30K
aW5saW5lIGZ4cE9wZXI8U09MX01VTFQsMD4gZnhwQXJnOjpvcGVyYXRvciAqICh1bnNpZ25lZCBz
aG9ydCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkp
O3JldHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX191c2hv
cnRfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfTVVMVCwwPiBvcGVyYXRvciAqICh1
bnNpZ25lZCBzaG9ydCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7
IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdXNo
b3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX01VTFQsMD4oJmZ4cFR5cGVfX3Vz
aG9ydF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xf
TVVMVCwwPiBmeHBBcmc6Om9wZXJhdG9yICogKHVuc2lnbmVkIGludCBzKSBjb25zdCAgICB7ICA7
dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25n
KXMsc3QsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfTVVM
VCwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWludF90eXBlLHN0LGlkKTt9CmlubGluZSBm
eHBPcGVyPFNPTF9NVUxULDA+IG9wZXJhdG9yICogKHVuc2lnbmVkIGludCBwLCBjb25zdCBmeHBB
cmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3Nv
bF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBP
cGVyPFNPTF9NVUxULDA+KCZmeHBUeXBlX191aW50X3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3Jl
LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9NVUxULDA+IGZ4cEFyZzo6b3BlcmF0b3IgKiAodW5z
aWduZWQgbG9uZyBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBz
dG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lk
dGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX01VTFQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVf
X3Vsb25nX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX01VTFQsMD4gb3BlcmF0b3Ig
KiAodW5zaWduZWQgbG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCog
c3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9f
dWxvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfTVVMVCwwPigmZnhwVHlwZV9f
dWxvbmdfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09M
X01VTFQsMD4gZnhwQXJnOjpvcGVyYXRvciAqIChmbG9hdCBzKSBjb25zdCAgICB7RnhwQXNzZXJ0
KEZYUF9fTk9fQ09OVik7ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxs
b2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3Jl
dHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5
cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX01VTFQsMD4gb3BlcmF0b3IgKiAoZmxvYXQg
cCwgY29uc3QgZnhwQXJnJiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDt1bnNpZ25l
ZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwg
ZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KCZm
eHBUeXBlX19sb25nX3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBP
cGVyPFNPTF9NVUxULDA+IGZ4cEFyZzo6b3BlcmF0b3IgKiAoZG91YmxlIHMpIGNvbnN0ICAgIHtG
eHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lk
dGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX01VTFQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVf
X2xvbmdfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfTVVMVCwwPiBvcGVyYXRvciAq
IChkb3VibGUgcCwgY29uc3QgZnhwQXJnJiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAg
IDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxv
bmcpcCxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9N
VUxULDA+KCZmeHBUeXBlX19sb25nX3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9Cmlu
bGluZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gZnhwQXJnOjpvcGVyYXRvciA8PCAoY29uc3QgZnhw
QXJnJiBzKSAgY29uc3QgeyA7IDtyZXR1cm4gZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgZnhwT3BlcjxT
T0xfTFNISUZULDA+IGZ4cEFyZzo6b3BlcmF0b3IgPDwgKGJvb2wgcykgY29uc3QgICAgeyAgO3Vu
c2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylz
LHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0xTSElG
VCwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLHN0LGlkKTt9CmlubGluZSBm
eHBPcGVyPFNPTF9MU0hJRlQsMD4gb3BlcmF0b3IgPDwgKGJvb2wgcCwgY29uc3QgZnhwQXJnJiBz
KSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJz
KChsb25nKXAsc3QsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxT
T0xfTFNISUZULDA+KCZmeHBUeXBlX19ib29sX3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlk
KTt9CmlubGluZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gZnhwQXJnOjpvcGVyYXRvciA8PCAoY2hh
ciBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtyZXR1
cm4gZnhwT3BlcjxTT0xfTFNISUZULDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5
cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBvcGVyYXRvciA8PCAoY2hh
ciBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0
b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRo
KCkpO3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4oJmZ4cFR5cGVfX2NoYXJfdHlwZSxzdCxz
LmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBmeHBB
cmc6Om9wZXJhdG9yIDw8IChzaG9ydCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0
OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3No
b3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0xTSElGVCwwPihkX3R5cGUsZF9z
dG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfTFNI
SUZULDA+IG9wZXJhdG9yIDw8IChzaG9ydCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25l
ZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwg
ZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfTFNISUZULDA+
KCZmeHBUeXBlX19zaG9ydF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUg
ZnhwT3BlcjxTT0xfTFNISUZULDA+IGZ4cEFyZzo6b3BlcmF0b3IgPDwgKGludCBzKSBjb25zdCAg
ICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJz
KChsb25nKXMsc3QsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNP
TF9MU0hJRlQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLHN0LGlkKTt9Cmlu
bGluZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gb3BlcmF0b3IgPDwgKGludCBwLCBjb25zdCBmeHBB
cmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3Nv
bF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9w
ZXI8U09MX0xTSElGVCwwPigmZnhwVHlwZV9faW50X3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3Jl
LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gZnhwQXJnOjpvcGVyYXRvciA8PCAo
bG9uZyBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTty
ZXR1cm4gZnhwT3BlcjxTT0xfTFNISUZULDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19sb25n
X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBvcGVyYXRvciA8PCAo
bG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9
IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndp
ZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxz
dCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBm
eHBBcmc6Om9wZXJhdG9yIDw8ICh1bnNpZ25lZCBjaGFyIHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25l
ZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwg
ZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfTFNISUZULDA+
KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX191Y2hhcl90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBP
cGVyPFNPTF9MU0hJRlQsMD4gb3BlcmF0b3IgPDwgKHVuc2lnbmVkIGNoYXIgcCwgY29uc3QgZnhw
QXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtz
b2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4
cE9wZXI8U09MX0xTSElGVCwwPigmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxzLmRfdHlwZSxzLmRf
c3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBmeHBBcmc6Om9wZXJhdG9y
IDw8ICh1bnNpZ25lZCBzaG9ydCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBp
bnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VzaG9y
dF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4oZF90eXBlLGRfc3Rv
cmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9MU0hJ
RlQsMD4gb3BlcmF0b3IgPDwgKHVuc2lnbmVkIHNob3J0IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAg
O3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9u
ZylwLHN0LCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xf
TFNISUZULDA+KCZmeHBUeXBlX191c2hvcnRfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQp
O30KaW5saW5lIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBmeHBBcmc6Om9wZXJhdG9yIDw8ICh1bnNp
Z25lZCBpbnQgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3Rv
cmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgo
KSk7cmV0dXJuIGZ4cE9wZXI8U09MX0xTSElGVCwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9f
dWludF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gb3BlcmF0b3Ig
PDwgKHVuc2lnbmVkIGludCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCog
c3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9f
dWludF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4oJmZ4cFR5cGVf
X3VpbnRfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09M
X0xTSElGVCwwPiBmeHBBcmc6Om9wZXJhdG9yIDw8ICh1bnNpZ25lZCBsb25nIHMpIGNvbnN0ICAg
IHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMo
KGxvbmcpcyxzdCwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxT
T0xfTFNISUZULDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLHN0LGlkKTt9
CmlubGluZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gb3BlcmF0b3IgPDwgKHVuc2lnbmVkIGxvbmcg
cCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9y
ZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgo
KSk7cmV0dXJuIGZ4cE9wZXI8U09MX0xTSElGVCwwPigmZnhwVHlwZV9fdWxvbmdfdHlwZSxzdCxz
LmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBmeHBB
cmc6Om9wZXJhdG9yIDw8IChmbG9hdCBzKSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09O
Vik7ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9s
MnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVy
PFNPTF9MU0hJRlQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxpZCk7
fQppbmxpbmUgZnhwT3BlcjxTT0xfTFNISUZULDA+IG9wZXJhdG9yIDw8IChmbG9hdCBwLCBjb25z
dCBmeHBBcmcmIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3Vuc2lnbmVkIHNob3J0
KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBl
X19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0xTSElGVCwwPigmZnhwVHlw
ZV9fbG9uZ190eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxT
T0xfTFNISUZULDA+IGZ4cEFyZzo6b3BlcmF0b3IgPDwgKGRvdWJsZSBzKSBjb25zdCAgICB7Rnhw
QXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0
b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRo
KCkpO3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVf
X2xvbmdfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfTFNISUZULDA+IG9wZXJhdG9y
IDw8IChkb3VibGUgcCwgY29uc3QgZnhwQXJnJiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7
ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMo
KGxvbmcpcCxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNP
TF9MU0hJRlQsMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQp
O30KaW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBmeHBBcmc6Om9wZXJhdG9yID4+IChjb25z
dCBmeHBBcmcmIHMpICBjb25zdCB7IDsgO3JldHVybiBmeHBPcGVyPFNPTF9SU0hJRlQsMD4odGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9CmlubGluZSBmeHBP
cGVyPFNPTF9SU0hJRlQsMD4gZnhwQXJnOjpvcGVyYXRvciA+PiAoYm9vbCBzKSBjb25zdCAgICB7
ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChs
b25nKXMsc3QsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xf
UlNISUZULDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsc3QsaWQpO30KaW5s
aW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBvcGVyYXRvciA+PiAoYm9vbCBwLCBjb25zdCBmeHBB
cmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3Nv
bF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBP
cGVyPFNPTF9SU0hJRlQsMD4oJmZ4cFR5cGVfX2Jvb2xfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3Rv
cmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBmeHBBcmc6Om9wZXJhdG9yID4+
IChjaGFyIHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkp
O3JldHVybiBmeHBPcGVyPFNPTF9SU0hJRlQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX2No
YXJfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUlNISUZULDA+IG9wZXJhdG9yID4+
IChjaGFyIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlk
ID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUu
d2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPigmZnhwVHlwZV9fY2hhcl90eXBl
LHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUlNISUZULDA+
IGZ4cEFyZzo6b3BlcmF0b3IgPj4gKHNob3J0IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9y
dCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlw
ZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfUlNISUZULDA+KGRfdHlw
ZSxkX3N0b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNP
TF9SU0hJRlQsMD4gb3BlcmF0b3IgPj4gKHNob3J0IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vu
c2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylw
LHN0LCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9SU0hJ
RlQsMD4oJmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9Cmlu
bGluZSBmeHBPcGVyPFNPTF9SU0hJRlQsMD4gZnhwQXJnOjpvcGVyYXRvciA+PiAoaW50IHMpIGNv
bnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3Nv
bF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9w
ZXI8U09MX1JTSElGVCwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsc3QsaWQp
O30KaW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBvcGVyYXRvciA+PiAoaW50IHAsIGNvbnN0
IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhz
dCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4g
ZnhwT3BlcjxTT0xfUlNISUZULDA+KCZmeHBUeXBlX19pbnRfdHlwZSxzdCxzLmRfdHlwZSxzLmRf
c3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBmeHBBcmc6Om9wZXJhdG9y
ID4+IChsb25nIHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0
b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRo
KCkpO3JldHVybiBmeHBPcGVyPFNPTF9SU0hJRlQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVf
X2xvbmdfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUlNISUZULDA+IG9wZXJhdG9y
ID4+IChsb25nIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50
IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5
cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPigmZnhwVHlwZV9fbG9uZ190
eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUlNISUZU
LDA+IGZ4cEFyZzo6b3BlcmF0b3IgPj4gKHVuc2lnbmVkIGNoYXIgcykgY29uc3QgICAgeyAgO3Vu
c2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylz
LHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9SU0hJ
RlQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsc3QsaWQpO30KaW5saW5l
IGZ4cE9wZXI8U09MX1JTSElGVCwwPiBvcGVyYXRvciA+PiAodW5zaWduZWQgY2hhciBwLCBjb25z
dCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Mo
c3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtyZXR1
cm4gZnhwT3BlcjxTT0xfUlNISUZULDA+KCZmeHBUeXBlX191Y2hhcl90eXBlLHN0LHMuZF90eXBl
LHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUlNISUZULDA+IGZ4cEFyZzo6b3Bl
cmF0b3IgPj4gKHVuc2lnbmVkIHNob3J0IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCog
c3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9f
dXNob3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPihkX3R5cGUs
ZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09M
X1JTSElGVCwwPiBvcGVyYXRvciA+PiAodW5zaWduZWQgc2hvcnQgcCwgY29uc3QgZnhwQXJnJiBz
KSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJz
KChsb25nKXAsc3QsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVy
PFNPTF9SU0hJRlQsMD4oJmZ4cFR5cGVfX3VzaG9ydF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9y
ZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUlNISUZULDA+IGZ4cEFyZzo6b3BlcmF0b3IgPj4g
KHVuc2lnbmVkIGludCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQg
PSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VpbnRfdHlwZS53
aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfUlNISUZULDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBU
eXBlX191aW50X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBvcGVy
YXRvciA+PiAodW5zaWduZWQgaW50IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNo
b3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBU
eXBlX191aW50X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPigmZnhw
VHlwZV9fdWludF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3Bl
cjxTT0xfUlNISUZULDA+IGZ4cEFyZzo6b3BlcmF0b3IgPj4gKHVuc2lnbmVkIGxvbmcgcykgY29u
c3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29s
X2wycygobG9uZylzLHN0LCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBP
cGVyPFNPTF9SU0hJRlQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3Vsb25nX3R5cGUsc3Qs
aWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBvcGVyYXRvciA+PiAodW5zaWduZWQg
bG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9
IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWxvbmdfdHlwZS53
aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfUlNISUZULDA+KCZmeHBUeXBlX191bG9uZ190eXBl
LHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUlNISUZULDA+
IGZ4cEFyZzo6b3BlcmF0b3IgPj4gKGZsb2F0IHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19O
T19DT05WKTsgICAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7
c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4
cE9wZXI8U09MX1JTSElGVCwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLHN0
LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9SU0hJRlQsMD4gb3BlcmF0b3IgPj4gKGZsb2F0IHAs
IGNvbnN0IGZ4cEFyZyYgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7dW5zaWduZWQg
c2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4
cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfUlNISUZULDA+KCZm
eHBUeXBlX19sb25nX3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBP
cGVyPFNPTF9SU0hJRlQsMD4gZnhwQXJnOjpvcGVyYXRvciA+PiAoZG91YmxlIHMpIGNvbnN0ICAg
IHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlk
ID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUu
d2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPihkX3R5cGUsZF9zdG9yZSwmZnhw
VHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9SU0hJRlQsMD4gb3Bl
cmF0b3IgPj4gKGRvdWJsZSBwLCBjb25zdCBmeHBBcmcmIHMpIHtGeHBBc3NlcnQoRlhQX19OT19D
T05WKTsgICAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29s
X2wycygobG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9w
ZXI8U09MX1JTSElGVCwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9y
ZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+IGZ4cEFyZzo6b3BlcmF0b3IgLyAoY29u
c3QgZnhwQXJnJiBzKSAgY29uc3QgeyA7IDtyZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgZnhwT3Bl
cjxTT0xfRElWLDA+IGZ4cEFyZzo6b3BlcmF0b3IgLyAoYm9vbCBzKSBjb25zdCAgICB7ICA7dW5z
aWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMs
c3QsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+
KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9w
ZXI8U09MX0RJViwwPiBvcGVyYXRvciAvIChib29sIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vu
c2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylw
LHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0RJViww
PigmZnhwVHlwZV9fYm9vbF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUg
ZnhwT3BlcjxTT0xfRElWLDA+IGZ4cEFyZzo6b3BlcmF0b3IgLyAoY2hhciBzKSBjb25zdCAgICB7
ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChs
b25nKXMsc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xf
RElWLDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsc3QsaWQpO30KaW5saW5l
IGZ4cE9wZXI8U09MX0RJViwwPiBvcGVyYXRvciAvIChjaGFyIHAsIGNvbnN0IGZ4cEFyZyYgcykg
eyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygo
bG9uZylwLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09M
X0RJViwwPigmZnhwVHlwZV9fY2hhcl90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQpp
bmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+IGZ4cEFyZzo6b3BlcmF0b3IgLyAoc2hvcnQgcykgY29u
c3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29s
X2wycygobG9uZylzLHN0LCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBP
cGVyPFNPTF9ESVYsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3QsaWQp
O30KaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBvcGVyYXRvciAvIChzaG9ydCBwLCBjb25zdCBm
eHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qp
O3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4g
ZnhwT3BlcjxTT0xfRElWLDA+KCZmeHBUeXBlX19zaG9ydF90eXBlLHN0LHMuZF90eXBlLHMuZF9z
dG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+IGZ4cEFyZzo6b3BlcmF0b3IgLyAo
aW50IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxs
b2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cmV0
dXJuIGZ4cE9wZXI8U09MX0RJViwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUs
c3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBvcGVyYXRvciAvIChpbnQgcCwgY29u
c3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3JldHVy
biBmeHBPcGVyPFNPTF9ESVYsMD4oJmZ4cFR5cGVfX2ludF90eXBlLHN0LHMuZF90eXBlLHMuZF9z
dG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+IGZ4cEFyZzo6b3BlcmF0b3IgLyAo
bG9uZyBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTty
ZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5
cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBvcGVyYXRvciAvIChsb25nIHAs
IGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7
cmV0dXJuIGZ4cE9wZXI8U09MX0RJViwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LHMuZF90eXBl
LHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+IGZ4cEFyZzo6b3BlcmF0
b3IgLyAodW5zaWduZWQgY2hhciBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBp
bnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VjaGFy
X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0RJViwwPihkX3R5cGUsZF9zdG9yZSwm
ZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+IG9w
ZXJhdG9yIC8gKHVuc2lnbmVkIGNoYXIgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQg
c2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4
cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0RJViwwPigmZnhw
VHlwZV9fdWNoYXJfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9w
ZXI8U09MX0RJViwwPiBmeHBBcmc6Om9wZXJhdG9yIC8gKHVuc2lnbmVkIHNob3J0IHMpIGNvbnN0
ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9s
MnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9w
ZXI8U09MX0RJViwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3QsaWQp
O30KaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBvcGVyYXRvciAvICh1bnNpZ25lZCBzaG9ydCBw
LCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgo
KSk7cmV0dXJuIGZ4cE9wZXI8U09MX0RJViwwPigmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3Qscy5k
X3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9ESVYsMD4gZnhwQXJnOjpv
cGVyYXRvciAvICh1bnNpZ25lZCBpbnQgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBz
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191
aW50X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0RJViwwPihkX3R5cGUsZF9zdG9y
ZSwmZnhwVHlwZV9fdWludF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9ESVYsMD4g
b3BlcmF0b3IgLyAodW5zaWduZWQgaW50IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVk
IHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBm
eHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0RJViwwPigmZnhw
VHlwZV9fdWludF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3Bl
cjxTT0xfRElWLDA+IGZ4cEFyZzo6b3BlcmF0b3IgLyAodW5zaWduZWQgbG9uZyBzKSBjb25zdCAg
ICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJz
KChsb25nKXMsc3QsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8
U09MX0RJViwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxzdCxpZCk7fQpp
bmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+IG9wZXJhdG9yIC8gKHVuc2lnbmVkIGxvbmcgcCwgY29u
c3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7cmV0
dXJuIGZ4cE9wZXI8U09MX0RJViwwPigmZnhwVHlwZV9fdWxvbmdfdHlwZSxzdCxzLmRfdHlwZSxz
LmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBmeHBBcmc6Om9wZXJhdG9y
IC8gKGZsb2F0IHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3Vuc2ln
bmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0
LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0RJViwwPihk
X3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVy
PFNPTF9ESVYsMD4gb3BlcmF0b3IgLyAoZmxvYXQgcCwgY29uc3QgZnhwQXJnJiBzKSB7RnhwQXNz
ZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkp
O3JldHVybiBmeHBPcGVyPFNPTF9ESVYsMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxzLmRfdHlw
ZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBmeHBBcmc6Om9wZXJh
dG9yIC8gKGRvdWJsZSBzKSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDt1
bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcp
cyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9ESVYs
MD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhw
T3BlcjxTT0xfRElWLDA+IG9wZXJhdG9yIC8gKGRvdWJsZSBwLCBjb25zdCBmeHBBcmcmIHMpIHtG
eHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lk
dGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0RJViwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LHMu
ZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IGZ4cEFyZzo6
b3BlcmF0b3IgJSAoY29uc3QgZnhwQXJnJiBzKSAgY29uc3QgeyA7IDtyZXR1cm4gZnhwT3BlcjxT
T0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7
fQppbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IGZ4cEFyZzo6b3BlcmF0b3IgJSAoYm9vbCBzKSBj
b25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtz
b2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhw
T3BlcjxTT0xfUkVNLDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsc3QsaWQp
O30KaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBvcGVyYXRvciAlIChib29sIHAsIGNvbnN0IGZ4
cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7
c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4
cE9wZXI8U09MX1JFTSwwPigmZnhwVHlwZV9fYm9vbF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9y
ZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IGZ4cEFyZzo6b3BlcmF0b3IgJSAoY2hh
ciBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtyZXR1
cm4gZnhwT3BlcjxTT0xfUkVNLDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUs
c3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBvcGVyYXRvciAlIChjaGFyIHAsIGNv
bnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxv
YyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7cmV0
dXJuIGZ4cE9wZXI8U09MX1JFTSwwPigmZnhwVHlwZV9fY2hhcl90eXBlLHN0LHMuZF90eXBlLHMu
ZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IGZ4cEFyZzo6b3BlcmF0b3Ig
JSAoc2hvcnQgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3Rv
cmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRo
KCkpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3No
b3J0X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBvcGVyYXRvciAlIChz
aG9ydCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9
IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fc2hvcnRfdHlwZS53
aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfUkVNLDA+KCZmeHBUeXBlX19zaG9ydF90eXBlLHN0
LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IGZ4cEFy
Zzo6b3BlcmF0b3IgJSAoaW50IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGlu
dCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9faW50X3R5
cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSwwPihkX3R5cGUsZF9zdG9yZSwmZnhw
VHlwZV9faW50X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBvcGVyYXRv
ciAlIChpbnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQg
aWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2ludF90eXBl
LndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4oJmZ4cFR5cGVfX2ludF90eXBlLHN0
LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IGZ4cEFy
Zzo6b3BlcmF0b3IgJSAobG9uZyBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBp
bnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdf
dHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfUkVNLDA+KGRfdHlwZSxkX3N0b3JlLCZm
eHBUeXBlX19sb25nX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBvcGVy
YXRvciAlIChsb25nIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsg
aW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19sb25n
X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSwwPigmZnhwVHlwZV9fbG9uZ190
eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+
IGZ4cEFyZzo6b3BlcmF0b3IgJSAodW5zaWduZWQgY2hhciBzKSBjb25zdCAgICB7ICA7dW5zaWdu
ZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3Qs
IGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSwwPihk
X3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3Bl
cjxTT0xfUkVNLDA+IG9wZXJhdG9yICUgKHVuc2lnbmVkIGNoYXIgcCwgY29uc3QgZnhwQXJnJiBz
KSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJz
KChsb25nKXAsc3QsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8
U09MX1JFTSwwPigmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQp
O30KaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBmeHBBcmc6Om9wZXJhdG9yICUgKHVuc2lnbmVk
IHNob3J0IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgo
KSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdXNo
b3J0X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBvcGVyYXRvciAlICh1
bnNpZ25lZCBzaG9ydCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7
IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdXNo
b3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSwwPigmZnhwVHlwZV9fdXNo
b3J0X3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9S
RU0sMD4gZnhwQXJnOjpvcGVyYXRvciAlICh1bnNpZ25lZCBpbnQgcykgY29uc3QgICAgeyAgO3Vu
c2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylz
LHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSww
PihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWludF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBP
cGVyPFNPTF9SRU0sMD4gb3BlcmF0b3IgJSAodW5zaWduZWQgaW50IHAsIGNvbnN0IGZ4cEFyZyYg
cykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wy
cygobG9uZylwLHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8
U09MX1JFTSwwPigmZnhwVHlwZV9fdWludF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7
fQppbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IGZ4cEFyZzo6b3BlcmF0b3IgJSAodW5zaWduZWQg
bG9uZyBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7
cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdf
dHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IG9wZXJhdG9yICUgKHVuc2ln
bmVkIGxvbmcgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQg
aWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Vsb25nX3R5
cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSwwPigmZnhwVHlwZV9fdWxvbmdfdHlw
ZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBm
eHBBcmc6Om9wZXJhdG9yICUgKGZsb2F0IHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19D
T05WKTsgICAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29s
X2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9w
ZXI8U09MX1JFTSwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9
CmlubGluZSBmeHBPcGVyPFNPTF9SRU0sMD4gb3BlcmF0b3IgJSAoZmxvYXQgcCwgY29uc3QgZnhw
QXJnJiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7
IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fbG9u
Z190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4oJmZ4cFR5cGVfX2xvbmdf
dHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX1JFTSww
PiBmeHBBcmc6Om9wZXJhdG9yICUgKGRvdWJsZSBzKSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9f
Tk9fQ09OVik7ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qp
O3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBm
eHBPcGVyPFNPTF9SRU0sMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxp
ZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IG9wZXJhdG9yICUgKGRvdWJsZSBwLCBjb25z
dCBmeHBBcmcmIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3Vuc2lnbmVkIHNob3J0
KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBl
X19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSwwPigmZnhwVHlwZV9f
bG9uZ190eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xf
QU5ELDA+IGZ4cEFyZzo6b3BlcmF0b3IgJiAoY29uc3QgZnhwQXJnJiBzKSAgY29uc3QgeyA7IDty
ZXR1cm4gZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90
eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQU5ELDA+IGZ4cEFyZzo6b3BlcmF0
b3IgJiAoYm9vbCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBz
dG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0
aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfQU5ELDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19i
b29sX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0FORCwwPiBvcGVyYXRvciAmIChi
b29sIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lk
dGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPigmZnhwVHlwZV9fYm9vbF90eXBlLHN0LHMu
ZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQU5ELDA+IGZ4cEFyZzo6
b3BlcmF0b3IgJiAoY2hhciBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQg
aWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2NoYXJfdHlw
ZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfQU5ELDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBU
eXBlX19jaGFyX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0FORCwwPiBvcGVyYXRv
ciAmIChjaGFyIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50
IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19jaGFyX3R5
cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPigmZnhwVHlwZV9fY2hhcl90eXBl
LHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQU5ELDA+IGZ4
cEFyZzo6b3BlcmF0b3IgJiAoc2hvcnQgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBz
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19z
aG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9BTkQsMD4oZF90eXBlLGRfc3Rv
cmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0FORCww
PiBvcGVyYXRvciAmIChzaG9ydCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9y
dCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlw
ZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfQU5ELDA+KCZmeHBUeXBl
X19zaG9ydF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxT
T0xfQU5ELDA+IGZ4cEFyZzo6b3BlcmF0b3IgJiAoaW50IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25l
ZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwg
ZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPihkX3R5
cGUsZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09M
X0FORCwwPiBvcGVyYXRvciAmIChpbnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQg
c2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4
cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9BTkQsMD4oJmZ4cFR5
cGVfX2ludF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxT
T0xfQU5ELDA+IGZ4cEFyZzo6b3BlcmF0b3IgJiAobG9uZyBzKSBjb25zdCAgICB7ICA7dW5zaWdu
ZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3Qs
IGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfQU5ELDA+KGRf
dHlwZSxkX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8
U09MX0FORCwwPiBvcGVyYXRvciAmIChsb25nIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2ln
bmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0
LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPigm
ZnhwVHlwZV9fbG9uZ190eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhw
T3BlcjxTT0xfQU5ELDA+IGZ4cEFyZzo6b3BlcmF0b3IgJiAodW5zaWduZWQgY2hhciBzKSBjb25z
dCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xf
bDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9w
ZXI8U09MX0FORCwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxpZCk7
fQppbmxpbmUgZnhwT3BlcjxTT0xfQU5ELDA+IG9wZXJhdG9yICYgKHVuc2lnbmVkIGNoYXIgcCwg
Y29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7
cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPigmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxzLmRfdHlw
ZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0FORCwwPiBmeHBBcmc6Om9wZXJh
dG9yICYgKHVuc2lnbmVkIHNob3J0IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7
IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdXNo
b3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPihkX3R5cGUsZF9zdG9y
ZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0FORCww
PiBvcGVyYXRvciAmICh1bnNpZ25lZCBzaG9ydCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNp
Z25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxz
dCwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCww
PigmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGlu
ZSBmeHBPcGVyPFNPTF9BTkQsMD4gZnhwQXJnOjpvcGVyYXRvciAmICh1bnNpZ25lZCBpbnQgcykg
Y29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7
c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4
cE9wZXI8U09MX0FORCwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWludF90eXBlLHN0LGlk
KTt9CmlubGluZSBmeHBPcGVyPFNPTF9BTkQsMD4gb3BlcmF0b3IgJiAodW5zaWduZWQgaW50IHAs
IGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7
cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPigmZnhwVHlwZV9fdWludF90eXBlLHN0LHMuZF90eXBl
LHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQU5ELDA+IGZ4cEFyZzo6b3BlcmF0
b3IgJiAodW5zaWduZWQgbG9uZyBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBp
bnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3Vsb25n
X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPihkX3R5cGUsZF9zdG9yZSwm
ZnhwVHlwZV9fdWxvbmdfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQU5ELDA+IG9w
ZXJhdG9yICYgKHVuc2lnbmVkIGxvbmcgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQg
c2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4
cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPigmZnhw
VHlwZV9fdWxvbmdfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9w
ZXI8U09MX0FORCwwPiBmeHBBcmc6Om9wZXJhdG9yICYgKGZsb2F0IHMpIGNvbnN0ICAgIHtGeHBB
c3NlcnQoRlhQX19OT19DT05WKTsgICAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3Rv
cmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgo
KSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fbG9u
Z190eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9BTkQsMD4gb3BlcmF0b3IgJiAoZmxv
YXQgcCwgY29uc3QgZnhwQXJnJiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDt1bnNp
Z25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxz
dCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9BTkQsMD4o
JmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4
cE9wZXI8U09MX0FORCwwPiBmeHBBcmc6Om9wZXJhdG9yICYgKGRvdWJsZSBzKSBjb25zdCAgICB7
RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9
IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndp
ZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9BTkQsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVf
X2xvbmdfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQU5ELDA+IG9wZXJhdG9yICYg
KGRvdWJsZSBwLCBjb25zdCBmeHBBcmcmIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAg
O3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9u
ZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0FO
RCwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxp
bmUgZnhwT3BlcjxTT0xfT1IsMD4gZnhwQXJnOjpvcGVyYXRvciB8IChjb25zdCBmeHBBcmcmIHMp
ICBjb25zdCB7IDsgO3JldHVybiBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KaW5saW5lIGZ4cE9wZXI8U09MX09SLDA+IGZ4
cEFyZzo6b3BlcmF0b3IgfCAoYm9vbCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0
OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2Jv
b2xfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfT1IsMD4oZF90eXBlLGRfc3RvcmUs
JmZ4cFR5cGVfX2Jvb2xfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfT1IsMD4gb3Bl
cmF0b3IgfCAoYm9vbCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7
IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fYm9v
bF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9PUiwwPigmZnhwVHlwZV9fYm9vbF90
eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfT1IsMD4g
ZnhwQXJnOjpvcGVyYXRvciB8IChjaGFyIHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCog
c3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9f
Y2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9PUiwwPihkX3R5cGUsZF9zdG9y
ZSwmZnhwVHlwZV9fY2hhcl90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9PUiwwPiBv
cGVyYXRvciB8IChjaGFyIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBz
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19j
aGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KCZmeHBUeXBlX19jaGFy
X3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9PUiww
PiBmeHBBcmc6Om9wZXJhdG9yIHwgKHNob3J0IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9y
dCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlw
ZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfT1IsMD4oZF90eXBlLGRf
c3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX09S
LDA+IG9wZXJhdG9yIHwgKHNob3J0IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNo
b3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBU
eXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9PUiwwPigmZnhwVHlw
ZV9fc2hvcnRfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8
U09MX09SLDA+IGZ4cEFyZzo6b3BlcmF0b3IgfCAoaW50IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25l
ZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwg
ZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KGRfdHlw
ZSxkX3N0b3JlLCZmeHBUeXBlX19pbnRfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xf
T1IsMD4gb3BlcmF0b3IgfCAoaW50IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNo
b3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBU
eXBlX19pbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfT1IsMD4oJmZ4cFR5cGVf
X2ludF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xf
T1IsMD4gZnhwQXJnOjpvcGVyYXRvciB8IChsb25nIHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBz
aG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhw
VHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9PUiwwPihkX3R5cGUs
ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9P
UiwwPiBvcGVyYXRvciB8IChsb25nIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNo
b3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBU
eXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KCZmeHBUeXBl
X19sb25nX3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNP
TF9PUiwwPiBmeHBBcmc6Om9wZXJhdG9yIHwgKHVuc2lnbmVkIGNoYXIgcykgY29uc3QgICAgeyAg
O3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9u
ZylzLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9P
UiwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxpZCk7fQppbmxpbmUg
ZnhwT3BlcjxTT0xfT1IsMD4gb3BlcmF0b3IgfCAodW5zaWduZWQgY2hhciBwLCBjb25zdCBmeHBB
cmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3Nv
bF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhw
T3BlcjxTT0xfT1IsMD4oJmZ4cFR5cGVfX3VjaGFyX3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3Jl
LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9PUiwwPiBmeHBBcmc6Om9wZXJhdG9yIHwgKHVuc2ln
bmVkIHNob3J0IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0
b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lk
dGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX191
c2hvcnRfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfT1IsMD4gb3BlcmF0b3IgfCAo
dW5zaWduZWQgc2hvcnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0
OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Vz
aG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9PUiwwPigmZnhwVHlwZV9fdXNo
b3J0X3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9P
UiwwPiBmeHBBcmc6Om9wZXJhdG9yIHwgKHVuc2lnbmVkIGludCBzKSBjb25zdCAgICB7ICA7dW5z
aWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMs
c3QsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfT1IsMD4o
ZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3Bl
cjxTT0xfT1IsMD4gb3BlcmF0b3IgfCAodW5zaWduZWQgaW50IHAsIGNvbnN0IGZ4cEFyZyYgcykg
eyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygo
bG9uZylwLHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09M
X09SLDA+KCZmeHBUeXBlX191aW50X3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9Cmlu
bGluZSBmeHBPcGVyPFNPTF9PUiwwPiBmeHBBcmc6Om9wZXJhdG9yIHwgKHVuc2lnbmVkIGxvbmcg
cykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhz
dCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO3JldHVy
biBmeHBPcGVyPFNPTF9PUiwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxz
dCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfT1IsMD4gb3BlcmF0b3IgfCAodW5zaWduZWQgbG9u
ZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0
b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0
aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfT1IsMD4oJmZ4cFR5cGVfX3Vsb25nX3R5cGUsc3Qscy5k
X3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9PUiwwPiBmeHBBcmc6Om9w
ZXJhdG9yIHwgKGZsb2F0IHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAg
O3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9u
ZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX09S
LDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4
cE9wZXI8U09MX09SLDA+IG9wZXJhdG9yIHwgKGZsb2F0IHAsIGNvbnN0IGZ4cEFyZyYgcykge0Z4
cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBz
dG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0
aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfT1IsMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxzLmRf
dHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX09SLDA+IGZ4cEFyZzo6b3Bl
cmF0b3IgfCAoZG91YmxlIHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAg
O3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9u
ZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX09S
LDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4
cE9wZXI8U09MX09SLDA+IG9wZXJhdG9yIHwgKGRvdWJsZSBwLCBjb25zdCBmeHBBcmcmIHMpIHtG
eHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lk
dGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KCZmeHBUeXBlX19sb25nX3R5cGUsc3Qscy5k
X3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IGZ4cEFyZzo6
b3BlcmF0b3IgXiAoY29uc3QgZnhwQXJnJiBzKSAgY29uc3QgeyA7IDtyZXR1cm4gZnhwT3BlcjxT
T0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUp
O30KaW5saW5lIGZ4cE9wZXI8U09MX0VYT1IsMD4gZnhwQXJnOjpvcGVyYXRvciBeIChib29sIHMp
IGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qp
O3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO3JldHVybiBm
eHBPcGVyPFNPTF9FWE9SLDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsc3Qs
aWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0VYT1IsMD4gb3BlcmF0b3IgXiAoYm9vbCBwLCBjb25z
dCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Mo
c3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO3JldHVy
biBmeHBPcGVyPFNPTF9FWE9SLDA+KCZmeHBUeXBlX19ib29sX3R5cGUsc3Qscy5kX3R5cGUscy5k
X3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IGZ4cEFyZzo6b3BlcmF0b3Ig
XiAoY2hhciBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9y
ZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgp
KTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fY2hh
cl90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IG9wZXJhdG9yIF4gKGNo
YXIgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBz
dG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0
aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPigmZnhwVHlwZV9fY2hhcl90eXBlLHN0LHMu
ZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBmeHBBcmc6
Om9wZXJhdG9yIF4gKHNob3J0IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGlu
dCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fc2hvcnRf
dHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPihkX3R5cGUsZF9zdG9yZSwm
ZnhwVHlwZV9fc2hvcnRfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBv
cGVyYXRvciBeIChzaG9ydCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCog
c3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9f
c2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPigmZnhwVHlwZV9f
c2hvcnRfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09M
X0VYT1IsMD4gZnhwQXJnOjpvcGVyYXRvciBeIChpbnQgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVk
IHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBm
eHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPihkX3R5
cGUsZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09M
X0VYT1IsMD4gb3BlcmF0b3IgXiAoaW50IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVk
IHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBm
eHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPigmZnhw
VHlwZV9faW50X3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVy
PFNPTF9FWE9SLDA+IGZ4cEFyZzo6b3BlcmF0b3IgXiAobG9uZyBzKSBjb25zdCAgICB7ICA7dW5z
aWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMs
c3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiww
PihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CmlubGluZSBmeHBP
cGVyPFNPTF9FWE9SLDA+IG9wZXJhdG9yIF4gKGxvbmcgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7
dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25n
KXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhP
UiwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxp
bmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBmeHBBcmc6Om9wZXJhdG9yIF4gKHVuc2lnbmVkIGNoYXIg
cykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhz
dCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3JldHVy
biBmeHBPcGVyPFNPTF9FWE9SLDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX191Y2hhcl90eXBl
LHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IG9wZXJhdG9yIF4gKHVuc2lnbmVk
IGNoYXIgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQg
PSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3VjaGFyX3R5cGUu
d2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0VYT1IsMD4oJmZ4cFR5cGVfX3VjaGFyX3R5cGUs
c3Qscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IGZ4
cEFyZzo6b3BlcmF0b3IgXiAodW5zaWduZWQgc2hvcnQgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVk
IHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBm
eHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPihk
X3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9w
ZXI8U09MX0VYT1IsMD4gb3BlcmF0b3IgXiAodW5zaWduZWQgc2hvcnQgcCwgY29uc3QgZnhwQXJn
JiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xf
bDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBP
cGVyPFNPTF9FWE9SLDA+KCZmeHBUeXBlX191c2hvcnRfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3Rv
cmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0VYT1IsMD4gZnhwQXJnOjpvcGVyYXRvciBeICh1
bnNpZ25lZCBpbnQgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lk
dGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0VYT1IsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVf
X3VpbnRfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBvcGVyYXRvciBe
ICh1bnNpZ25lZCBpbnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0
OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Vp
bnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPigmZnhwVHlwZV9fdWlu
dF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfRVhP
UiwwPiBmeHBBcmc6Om9wZXJhdG9yIF4gKHVuc2lnbmVkIGxvbmcgcykgY29uc3QgICAgeyAgO3Vu
c2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylz
LHN0LCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9FWE9S
LDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLHN0LGlkKTt9CmlubGluZSBm
eHBPcGVyPFNPTF9FWE9SLDA+IG9wZXJhdG9yIF4gKHVuc2lnbmVkIGxvbmcgcCwgY29uc3QgZnhw
QXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtz
b2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4
cE9wZXI8U09MX0VYT1IsMD4oJmZ4cFR5cGVfX3Vsb25nX3R5cGUsc3Qscy5kX3R5cGUscy5kX3N0
b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IGZ4cEFyZzo6b3BlcmF0b3IgXiAo
ZmxvYXQgcykgY29uc3QgICAge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7dW5zaWduZWQg
c2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4
cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPihkX3R5
cGUsZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNP
TF9FWE9SLDA+IG9wZXJhdG9yIF4gKGZsb2F0IHAsIGNvbnN0IGZ4cEFyZyYgcykge0Z4cEFzc2Vy
dChGWFBfX05PX0NPTlYpOyAgICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTty
ZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LHMuZF90eXBl
LHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBmeHBBcmc6Om9wZXJh
dG9yIF4gKGRvdWJsZSBzKSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDt1
bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcp
cyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9FWE9S
LDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4
cE9wZXI8U09MX0VYT1IsMD4gb3BlcmF0b3IgXiAoZG91YmxlIHAsIGNvbnN0IGZ4cEFyZyYgcykg
e0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQg
PSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53
aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0
LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4g
ZnhwQXJnOjphcHBlbmQgKGNvbnN0IGZ4cEFyZyYgcykgIGNvbnN0IHsgOyA7cmV0dXJuIGZ4cE9w
ZXI8U09MX0JJVE1FUkdFLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMu
ZF9zdG9yZSk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4gZnhwQXJnOjphcHBlbmQg
KGJvb2wgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7
cmV0dXJuIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19i
b29sX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+IGFwcGVuZCAo
Ym9vbCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9
IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fYm9vbF90eXBlLndp
ZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9fYm9vbF90eXBl
LHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQklUTUVSR0Us
MD4gZnhwQXJnOjphcHBlbmQgKGNoYXIgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBz
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19j
aGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+KGRfdHlwZSxk
X3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0JJ
VE1FUkdFLDA+IGFwcGVuZCAoY2hhciBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBz
aG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhw
VHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPigm
ZnhwVHlwZV9fY2hhcl90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhw
T3BlcjxTT0xfQklUTUVSR0UsMD4gZnhwQXJnOjphcHBlbmQgKHNob3J0IHMpIGNvbnN0ICAgIHsg
IDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxv
bmcpcyxzdCwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xf
QklUTUVSR0UsMD4oZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3QsaWQpO30K
aW5saW5lIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+IGFwcGVuZCAoc2hvcnQgcCwgY29uc3QgZnhw
QXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtz
b2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4
cE9wZXI8U09MX0JJVE1FUkdFLDA+KCZmeHBUeXBlX19zaG9ydF90eXBlLHN0LHMuZF90eXBlLHMu
ZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4gZnhwQXJnOjphcHBl
bmQgKGludCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9y
ZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkp
O3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9f
aW50X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+IGFwcGVuZCAo
aW50IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19pbnRfdHlwZS53aWR0
aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4oJmZ4cFR5cGVfX2ludF90eXBlLHN0
LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4g
ZnhwQXJnOjphcHBlbmQgKGxvbmcgcykgY29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsg
aW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25n
X3R5cGUud2lkdGgoKSk7cmV0dXJuIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+KGRfdHlwZSxkX3N0
b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0JJVE1F
UkdFLDA+IGFwcGVuZCAobG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25lZCBzaG9y
dCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlw
ZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhw
VHlwZV9fbG9uZ190eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUgZnhwT3Bl
cjxTT0xfQklUTUVSR0UsMD4gZnhwQXJnOjphcHBlbmQgKHVuc2lnbmVkIGNoYXIgcykgY29uc3Qg
ICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wy
cygobG9uZylzLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVy
PFNPTF9CSVRNRVJHRSwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxp
ZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4gYXBwZW5kICh1bnNpZ25lZCBjaGFy
IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3Rv
cmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRo
KCkpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9fdWNoYXJfdHlwZSxz
dCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+
IGZ4cEFyZzo6YXBwZW5kICh1bnNpZ25lZCBzaG9ydCBzKSBjb25zdCAgICB7ICA7dW5zaWduZWQg
c2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4
cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSww
PihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3QsaWQpO30KaW5saW5lIGZ4
cE9wZXI8U09MX0JJVE1FUkdFLDA+IGFwcGVuZCAodW5zaWduZWQgc2hvcnQgcCwgY29uc3QgZnhw
QXJnJiBzKSB7ICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtz
b2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBm
eHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3Qscy5kX3R5cGUs
cy5kX3N0b3JlLGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPiBmeHBBcmc6OmFw
cGVuZCAodW5zaWduZWQgaW50IHMpIGNvbnN0ICAgIHsgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGlu
dCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdWludF90
eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPihkX3R5cGUsZF9zdG9y
ZSwmZnhwVHlwZV9fdWludF90eXBlLHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9CSVRNRVJH
RSwwPiBhcHBlbmQgKHVuc2lnbmVkIGludCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDt1bnNpZ25l
ZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9sMnMoKGxvbmcpcCxzdCwg
ZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSww
PigmZnhwVHlwZV9fdWludF90eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQppbmxpbmUg
ZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4gZnhwQXJnOjphcHBlbmQgKHVuc2lnbmVkIGxvbmcgcykg
Y29uc3QgICAgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7
c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBm
eHBPcGVyPFNPTF9CSVRNRVJHRSwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlw
ZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4gYXBwZW5kICh1bnNpZ25l
ZCBsb25nIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Vuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlk
ID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191bG9uZ190eXBl
LndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9fdWxvbmdf
dHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4cE9wZXI8U09MX0JJVE1F
UkdFLDA+IGZ4cEFyZzo6YXBwZW5kIChmbG9hdCBzKSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9f
Tk9fQ09OVik7ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qp
O3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBm
eHBPcGVyPFNPTF9CSVRNRVJHRSwwPihkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBl
LHN0LGlkKTt9CmlubGluZSBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPiBhcHBlbmQgKGZsb2F0IHAs
IGNvbnN0IGZ4cEFyZyYgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7dW5zaWduZWQg
c2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4
cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4o
JmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KaW5saW5lIGZ4
cE9wZXI8U09MX0JJVE1FUkdFLDA+IGZ4cEFyZzo6YXBwZW5kIChkb3VibGUgcykgY29uc3QgICAg
e0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7dW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQg
PSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53
aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4oZF90eXBlLGRfc3RvcmUsJmZ4
cFR5cGVfX2xvbmdfdHlwZSxzdCxpZCk7fQppbmxpbmUgZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4g
YXBwZW5kIChkb3VibGUgcCwgY29uc3QgZnhwQXJnJiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09O
Vik7ICAgIDt1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3NvbF9s
MnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVy
PFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LHMuZF90eXBlLHMuZF9zdG9y
ZSxpZCk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yIDwgKGNvbnN0IGZ4cEFyZyYgcykg
IGNvbnN0IHsgOyA7cmV0dXJuIGx0KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBl
LHMuZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yIDwgKGJvb2wgcykgY29u
c3QgICAgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19ib29s
X3R5cGUud2lkdGgoKSk7cmV0dXJuIGx0KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5
cGUsZnhwX19maXJzdF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA8IChib29sIHAsIGNv
bnN0IGZ4cEFyZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX19ib29sX3R5cGUud2lkdGgoKSk7cmV0dXJuIGx0KCZmeHBUeXBlX19ib29sX3R5cGUsZnhw
X19maXJzdF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpv
cGVyYXRvciA8IChjaGFyIHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBsdChkX3R5cGUsZF9z
dG9yZSwmZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wg
b3BlcmF0b3IgPCAoY2hhciBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO3JldHVybiBsdCgm
ZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9
CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPCAoc2hvcnQgcykgY29uc3QgICAgeyAgO3Nv
bF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRo
KCkpO3JldHVybiBsdChkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2Zp
cnN0X3N0b3JlKTt9CmlubGluZSBib29sIG9wZXJhdG9yIDwgKHNob3J0IHAsIGNvbnN0IGZ4cEFy
ZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9y
dF90eXBlLndpZHRoKCkpO3JldHVybiBsdCgmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9y
IDwgKGludCBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3JldHVybiBsdChkX3R5cGUsZF9zdG9yZSwmZnhw
VHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA8
IChpbnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3JldHVybiBsdCgmZnhwVHlwZV9faW50
X3R5cGUsZnhwX19maXJzdF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KaW5saW5lIGJvb2wg
ZnhwQXJnOjpvcGVyYXRvciA8IChsb25nIHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBsdChk
X3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5s
aW5lIGJvb2wgb3BlcmF0b3IgPCAobG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJz
KChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3Jl
dHVybiBsdCgmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUscy5kX3R5cGUscy5k
X3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPCAodW5zaWduZWQgY2hhciBz
KSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X3VjaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuIGx0KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX191
Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAodW5z
aWduZWQgY2hhciBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtyZXR1cm4gbHQoJmZ4cFR5
cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KaW5s
aW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA8ICh1bnNpZ25lZCBzaG9ydCBzKSBjb25zdCAgICB7
ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90eXBl
LndpZHRoKCkpO3JldHVybiBsdChkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUs
ZnhwX19maXJzdF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA8ICh1bnNpZ25lZCBzaG9y
dCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuIGx0KCZmeHBUeXBlX191c2hv
cnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgYm9v
bCBmeHBBcmc6Om9wZXJhdG9yIDwgKHVuc2lnbmVkIGludCBzKSBjb25zdCAgICB7ICA7c29sX2wy
cygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTty
ZXR1cm4gbHQoZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlKTt9CmlubGluZSBib29sIG9wZXJhdG9yIDwgKHVuc2lnbmVkIGludCBwLCBjb25zdCBmeHBB
cmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWlu
dF90eXBlLndpZHRoKCkpO3JldHVybiBsdCgmZnhwVHlwZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3Ig
PCAodW5zaWduZWQgbG9uZyBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGx0KGRfdHlwZSxk
X3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJv
b2wgb3BlcmF0b3IgPCAodW5zaWduZWQgbG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xf
bDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgp
KTtyZXR1cm4gbHQoJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSxzLmRfdHlw
ZSxzLmRfc3RvcmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA8IChmbG9hdCBzKSBj
b25zdCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDtzb2xfbDJzKChsb25nKXMsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBsdChkX3R5
cGUsZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5l
IGJvb2wgb3BlcmF0b3IgPCAoZmxvYXQgcCwgY29uc3QgZnhwQXJnJiBzKSB7RnhwQXNzZXJ0KEZY
UF9fTk9fQ09OVik7ICAgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlw
ZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBsdCgmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9f
Zmlyc3Rfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3Bl
cmF0b3IgPCAoZG91YmxlIHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAg
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lk
dGgoKSk7cmV0dXJuIGx0KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19m
aXJzdF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA8IChkb3VibGUgcCwgY29uc3QgZnhw
QXJnJiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDtzb2xfbDJzKChsb25nKXAsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBsdCgmZnhw
VHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9Cmlu
bGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPD0gKGNvbnN0IGZ4cEFyZyYgcykgIGNvbnN0IHsg
OyA7cmV0dXJuICFsdChzLmRfdHlwZSxzLmRfc3RvcmUsdGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA8PSAoYm9vbCBzKSBjb25zdCAgICB7
ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53
aWR0aCgpKTtyZXR1cm4gIWx0KCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSxk
X3R5cGUsZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAoYm9vbCBwLCBjb25zdCBm
eHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
Ym9vbF90eXBlLndpZHRoKCkpO3JldHVybiAhbHQocy5kX3R5cGUscy5kX3N0b3JlLCZmeHBUeXBl
X19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJh
dG9yIDw9IChjaGFyIHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9z
dG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO3JldHVybiAhbHQoJmZ4cFR5cGVfX2No
YXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLGRfdHlwZSxkX3N0b3JlKTt9CmlubGluZSBib29sIG9w
ZXJhdG9yIDw9IChjaGFyIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuICFsdChz
LmRfdHlwZSxzLmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9
CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPD0gKHNob3J0IHMpIGNvbnN0ICAgIHsgIDtz
b2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0
aCgpKTtyZXR1cm4gIWx0KCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsZF90
eXBlLGRfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKHNob3J0IHAsIGNvbnN0IGZ4
cEFyZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19z
aG9ydF90eXBlLndpZHRoKCkpO3JldHVybiAhbHQocy5kX3R5cGUscy5kX3N0b3JlLCZmeHBUeXBl
X19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVy
YXRvciA8PSAoaW50IHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9z
dG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cmV0dXJuICFsdCgmZnhwVHlwZV9faW50
X3R5cGUsZnhwX19maXJzdF9zdG9yZSxkX3R5cGUsZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVy
YXRvciA8PSAoaW50IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWx0KHMuZF90
eXBlLHMuZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQppbmxp
bmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yIDw9IChsb25nIHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJz
KChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3Jl
dHVybiAhbHQoJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLGRfdHlwZSxkX3N0
b3JlKTt9CmlubGluZSBib29sIG9wZXJhdG9yIDw9IChsb25nIHAsIGNvbnN0IGZ4cEFyZyYgcykg
eyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUu
d2lkdGgoKSk7cmV0dXJuICFsdChzLmRfdHlwZSxzLmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlw
ZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPD0gKHVu
c2lnbmVkIGNoYXIgcykgY29uc3QgICAgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3JldHVybiAhbHQoJmZ4cFR5cGVfX3Vj
aGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSxkX3R5cGUsZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBv
cGVyYXRvciA8PSAodW5zaWduZWQgY2hhciBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJz
KChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTty
ZXR1cm4gIWx0KHMuZF90eXBlLHMuZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBfX2Zp
cnN0X3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPD0gKHVuc2lnbmVkIHNo
b3J0IHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuICFsdCgmZnhwVHlwZV9fdXNob3J0X3R5
cGUsZnhwX19maXJzdF9zdG9yZSxkX3R5cGUsZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRv
ciA8PSAodW5zaWduZWQgc2hvcnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7c29sX2wycygobG9u
ZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO3JldHVy
biAhbHQocy5kX3R5cGUscy5kX3N0b3JlLCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPD0gKHVuc2lnbmVkIGludCBz
KSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X3VpbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWx0KCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19m
aXJzdF9zdG9yZSxkX3R5cGUsZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAodW5z
aWduZWQgaW50IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2Zp
cnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7cmV0dXJuICFsdChzLmRfdHlw
ZSxzLmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CmlubGlu
ZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPD0gKHVuc2lnbmVkIGxvbmcgcykgY29uc3QgICAgeyAg
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191bG9uZ190eXBlLndp
ZHRoKCkpO3JldHVybiAhbHQoJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSxk
X3R5cGUsZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAodW5zaWduZWQgbG9uZyBw
LCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWx0KHMuZF90eXBlLHMuZF9zdG9y
ZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CmlubGluZSBib29sIGZ4
cEFyZzo6b3BlcmF0b3IgPD0gKGZsb2F0IHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19D
T05WKTsgICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25n
X3R5cGUud2lkdGgoKSk7cmV0dXJuICFsdCgmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUsZF90eXBlLGRfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKGZsb2F0IHAs
IGNvbnN0IGZ4cEFyZyYgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7c29sX2wycygo
bG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1
cm4gIWx0KHMuZF90eXBlLHMuZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA8PSAoZG91YmxlIHMpIGNvbnN0
ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2Zp
cnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuICFsdCgmZnhwVHlw
ZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsZF90eXBlLGRfc3RvcmUpO30KaW5saW5lIGJv
b2wgb3BlcmF0b3IgPD0gKGRvdWJsZSBwLCBjb25zdCBmeHBBcmcmIHMpIHtGeHBBc3NlcnQoRlhQ
X19OT19DT05WKTsgICAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuICFsdChzLmRfdHlwZSxzLmRfc3RvcmUsJmZ4cFR5
cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3Bl
cmF0b3IgPT0gKGNvbnN0IGZ4cEFyZyYgcykgIGNvbnN0IHsgOyA7cmV0dXJuIGVxKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBB
cmc6Om9wZXJhdG9yID09IChib29sIHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO3JldHVybiBlcShkX3R5
cGUsZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5l
IGJvb2wgb3BlcmF0b3IgPT0gKGJvb2wgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7c29sX2wycygo
bG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtyZXR1
cm4gZXEoJmZ4cFR5cGVfX2Jvb2xfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMuZF9z
dG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yID09IChjaGFyIHMpIGNvbnN0ICAg
IHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBl
LndpZHRoKCkpO3JldHVybiBlcShkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fY2hhcl90eXBlLGZ4
cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNoYXIgcCwgY29uc3Qg
ZnhwQXJnJiBzKSB7ICA7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X2NoYXJfdHlwZS53aWR0aCgpKTtyZXR1cm4gZXEoJmZ4cFR5cGVfX2NoYXJfdHlwZSxmeHBfX2Zp
cnN0X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJh
dG9yID09IChzaG9ydCBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuIGVxKGRfdHlwZSxkX3N0
b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wg
b3BlcmF0b3IgPT0gKHNob3J0IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBl
cSgmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9y
ZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yID09IChpbnQgcykgY29uc3QgICAgeyAg
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0
aCgpKTtyZXR1cm4gZXEoZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmly
c3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGludCBwLCBjb25zdCBmeHBBcmcm
IHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5
cGUud2lkdGgoKSk7cmV0dXJuIGVxKCZmeHBUeXBlX19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3Jl
LHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yID09IChs
b25nIHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBlcShkX3R5cGUsZF9zdG9yZSwmZnhwVHlw
ZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0g
KGxvbmcgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZXEoJmZ4cFR5cGVfX2xv
bmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgYm9v
bCBmeHBBcmc6Om9wZXJhdG9yID09ICh1bnNpZ25lZCBjaGFyIHMpIGNvbnN0ICAgIHsgIDtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgp
KTtyZXR1cm4gZXEoZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJz
dF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAodW5zaWduZWQgY2hhciBwLCBjb25z
dCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlw
ZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtyZXR1cm4gZXEoJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhw
X19maXJzdF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpv
cGVyYXRvciA9PSAodW5zaWduZWQgc2hvcnQgcykgY29uc3QgICAgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4g
ZXEoZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUp
O30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKHVuc2lnbmVkIHNob3J0IHAsIGNvbnN0IGZ4cEFy
ZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hv
cnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZXEoJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmly
c3Rfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0
b3IgPT0gKHVuc2lnbmVkIGludCBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9f
Zmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZXEoZF90eXBl
LGRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CmlubGluZSBi
b29sIG9wZXJhdG9yID09ICh1bnNpZ25lZCBpbnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7c29s
X2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgp
KTtyZXR1cm4gZXEoJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBl
LHMuZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yID09ICh1bnNpZ25lZCBs
b25nIHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZXEoZF90eXBlLGRfc3RvcmUsJmZ4cFR5
cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA9
PSAodW5zaWduZWQgbG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZXEo
JmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUp
O30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA9PSAoZmxvYXQgcykgY29uc3QgICAge0Z4
cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3Rv
cmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZXEoZF90eXBlLGRfc3RvcmUs
JmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CmlubGluZSBib29sIG9wZXJh
dG9yID09IChmbG9hdCBwLCBjb25zdCBmeHBBcmcmIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05W
KTsgICAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5
cGUud2lkdGgoKSk7cmV0dXJuIGVxKCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9y
ZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA9PSAo
ZG91YmxlIHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0
dXJuIGVxKGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9y
ZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoZG91YmxlIHAsIGNvbnN0IGZ4cEFyZyYgcykg
e0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgICA7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZXEoJmZ4cFR5cGVfX2xv
bmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgYm9v
bCBmeHBBcmc6Om9wZXJhdG9yICE9IChjb25zdCBmeHBBcmcmIHMpICBjb25zdCB7IDsgO3JldHVy
biAhZXEodGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9Cmlu
bGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgIT0gKGJvb2wgcykgY29uc3QgICAgeyAgO3NvbF9s
MnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7
cmV0dXJuICFlcShkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGJvb2wgcCwgY29uc3QgZnhwQXJnJiBz
KSB7ICA7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlw
ZS53aWR0aCgpKTtyZXR1cm4gIWVxKCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9y
ZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciAhPSAo
Y2hhciBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWVxKGRfdHlwZSxkX3N0b3JlLCZmeHBU
eXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciAh
PSAoY2hhciBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO3JldHVybiAhZXEoJmZ4cFR5cGVf
X2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUg
Ym9vbCBmeHBBcmc6Om9wZXJhdG9yICE9IChzaG9ydCBzKSBjb25zdCAgICB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7cmV0
dXJuICFlcShkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlKTt9CmlubGluZSBib29sIG9wZXJhdG9yICE9IChzaG9ydCBwLCBjb25zdCBmeHBBcmcmIHMp
IHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fc2hvcnRfdHlw
ZS53aWR0aCgpKTtyZXR1cm4gIWVxKCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUscy5kX3R5cGUscy5kX3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgIT0g
KGludCBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3JldHVybiAhZXEoZF90eXBlLGRfc3RvcmUsJmZ4cFR5
cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0g
KGludCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9z
dG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cmV0dXJuICFlcSgmZnhwVHlwZV9faW50
X3R5cGUsZnhwX19maXJzdF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KaW5saW5lIGJvb2wg
ZnhwQXJnOjpvcGVyYXRvciAhPSAobG9uZyBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylz
LGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWVx
KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQpp
bmxpbmUgYm9vbCBvcGVyYXRvciAhPSAobG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xf
bDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkp
O3JldHVybiAhZXEoJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBl
LHMuZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yICE9ICh1bnNpZ25lZCBj
aGFyIHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWVxKGRfdHlwZSxkX3N0b3JlLCZmeHBU
eXBlX191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3Ig
IT0gKHVuc2lnbmVkIGNoYXIgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7c29sX2wycygobG9uZylw
LGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuICFl
cSgmZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9y
ZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yICE9ICh1bnNpZ25lZCBzaG9ydCBzKSBj
b25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vz
aG9ydF90eXBlLndpZHRoKCkpO3JldHVybiAhZXEoZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3Vz
aG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKHVu
c2lnbmVkIHNob3J0IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWVxKCZm
eHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7
fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yICE9ICh1bnNpZ25lZCBpbnQgcykgY29uc3Qg
ICAgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5
cGUud2lkdGgoKSk7cmV0dXJuICFlcShkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdWludF90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKHVuc2lnbmVkIGlu
dCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO3JldHVybiAhZXEoJmZ4cFR5cGVfX3VpbnRf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBm
eHBBcmc6Om9wZXJhdG9yICE9ICh1bnNpZ25lZCBsb25nIHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJz
KChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTty
ZXR1cm4gIWVxKGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKHVuc2lnbmVkIGxvbmcgcCwgY29uc3Qg
ZnhwQXJnJiBzKSB7ICA7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X3Vsb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuICFlcSgmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9w
ZXJhdG9yICE9IChmbG9hdCBzKSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAg
IDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndp
ZHRoKCkpO3JldHVybiAhZXEoZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlKTt9CmlubGluZSBib29sIG9wZXJhdG9yICE9IChmbG9hdCBwLCBjb25zdCBm
eHBBcmcmIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3NvbF9sMnMoKGxvbmcpcCxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuICFlcSgm
ZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9
CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgIT0gKGRvdWJsZSBzKSBjb25zdCAgICB7Rnhw
QXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiAhZXEoZF90eXBlLGRfc3RvcmUs
JmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CmlubGluZSBib29sIG9wZXJh
dG9yICE9IChkb3VibGUgcCwgY29uc3QgZnhwQXJnJiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09O
Vik7ICAgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190
eXBlLndpZHRoKCkpO3JldHVybiAhZXEoJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yID4g
KGNvbnN0IGZ4cEFyZyYgcykgIGNvbnN0IHsgOyA7cmV0dXJuIGx0KHMuZF90eXBlLHMuZF9zdG9y
ZSx0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJh
dG9yID4gKGJvb2wgcykgY29uc3QgICAgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7cmV0dXJuIGx0KCZmeHBUeXBlX19ib29s
X3R5cGUsZnhwX19maXJzdF9zdG9yZSxkX3R5cGUsZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVy
YXRvciA+IChib29sIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7cmV0dXJuIGx0KHMuZF90
eXBlLHMuZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5s
aW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA+IChjaGFyIHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJz
KChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO3Jl
dHVybiBsdCgmZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsZF90eXBlLGRfc3Rv
cmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAoY2hhciBwLCBjb25zdCBmeHBBcmcmIHMpIHsg
IDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndp
ZHRoKCkpO3JldHVybiBsdChzLmRfdHlwZSxzLmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPiAoc2hvcnQg
cykgY29uc3QgICAgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X19zaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBsdCgmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlLGRfdHlwZSxkX3N0b3JlKTt9CmlubGluZSBib29sIG9wZXJhdG9yID4gKHNo
b3J0IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBsdChzLmRfdHlwZSxzLmRf
c3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQppbmxpbmUgYm9v
bCBmeHBBcmc6Om9wZXJhdG9yID4gKGludCBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylz
LGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3JldHVybiBsdCgm
ZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSxkX3R5cGUsZF9zdG9yZSk7fQppbmxp
bmUgYm9vbCBvcGVyYXRvciA+IChpbnQgcCwgY29uc3QgZnhwQXJnJiBzKSB7ICA7c29sX2wycygo
bG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3JldHVy
biBsdChzLmRfdHlwZSxzLmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA+IChsb25nIHMpIGNvbnN0ICAgIHsg
IDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndp
ZHRoKCkpO3JldHVybiBsdCgmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsZF90
eXBlLGRfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAobG9uZyBwLCBjb25zdCBmeHBB
cmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9u
Z190eXBlLndpZHRoKCkpO3JldHVybiBsdChzLmRfdHlwZSxzLmRfc3RvcmUsJmZ4cFR5cGVfX2xv
bmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3Ig
PiAodW5zaWduZWQgY2hhciBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7cmV0dXJuIGx0KCZmeHBUeXBl
X191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsZF90eXBlLGRfc3RvcmUpO30KaW5saW5lIGJv
b2wgb3BlcmF0b3IgPiAodW5zaWduZWQgY2hhciBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xf
bDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgp
KTtyZXR1cm4gbHQocy5kX3R5cGUscy5kX3N0b3JlLCZmeHBUeXBlX191Y2hhcl90eXBlLGZ4cF9f
Zmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA+ICh1bnNpZ25lZCBz
aG9ydCBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiBsdCgmZnhwVHlwZV9fdXNob3J0X3R5
cGUsZnhwX19maXJzdF9zdG9yZSxkX3R5cGUsZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRv
ciA+ICh1bnNpZ25lZCBzaG9ydCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25n
KXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7cmV0dXJu
IGx0KHMuZF90eXBlLHMuZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9z
dG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yID4gKHVuc2lnbmVkIGludCBzKSBj
b25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vp
bnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gbHQoJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlLGRfdHlwZSxkX3N0b3JlKTt9CmlubGluZSBib29sIG9wZXJhdG9yID4gKHVuc2lnbmVk
IGludCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9z
dG9yZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO3JldHVybiBsdChzLmRfdHlwZSxzLmRf
c3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CmlubGluZSBib29s
IGZ4cEFyZzo6b3BlcmF0b3IgPiAodW5zaWduZWQgbG9uZyBzKSBjb25zdCAgICB7ICA7c29sX2wy
cygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7
cmV0dXJuIGx0KCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsZF90eXBlLGRf
c3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAodW5zaWduZWQgbG9uZyBwLCBjb25zdCBm
eHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
dWxvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gbHQocy5kX3R5cGUscy5kX3N0b3JlLCZmeHBUeXBl
X191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVy
YXRvciA+IChmbG9hdCBzKSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDtz
b2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRo
KCkpO3JldHVybiBsdCgmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsZF90eXBl
LGRfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAoZmxvYXQgcCwgY29uc3QgZnhwQXJn
JiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDtzb2xfbDJzKChsb25nKXAsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBsdChzLmRfdHlw
ZSxzLmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CmlubGlu
ZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPiAoZG91YmxlIHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQo
RlhQX19OT19DT05WKTsgICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuIGx0KCZmeHBUeXBlX19sb25nX3R5cGUsZnhw
X19maXJzdF9zdG9yZSxkX3R5cGUsZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA+IChk
b3VibGUgcCwgY29uc3QgZnhwQXJnJiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgIDtz
b2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRo
KCkpO3JldHVybiBsdChzLmRfdHlwZSxzLmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPj0gKGNvbnN0IGZ4
cEFyZyYgcykgIGNvbnN0IHsgOyA7cmV0dXJuICFsdCh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA+PSAo
Ym9vbCBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWx0KGRfdHlwZSxkX3N0b3JlLCZmeHBU
eXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA+
PSAoYm9vbCBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO3JldHVybiAhbHQoJmZ4cFR5cGVf
X2Jvb2xfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSk7fQppbmxpbmUg
Ym9vbCBmeHBBcmc6Om9wZXJhdG9yID49IChjaGFyIHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO3JldHVy
biAhbHQoZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3Jl
KTt9CmlubGluZSBib29sIG9wZXJhdG9yID49IChjaGFyIHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAg
O3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lk
dGgoKSk7cmV0dXJuICFsdCgmZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUscy5k
X3R5cGUscy5kX3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPj0gKHNob3J0
IHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlw
ZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWx0KGRfdHlwZSxkX3N0b3JlLCZmeHBUeXBl
X19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0g
KHNob3J0IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0
X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3JldHVybiAhbHQoJmZ4cFR5cGVf
X3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KaW5saW5l
IGJvb2wgZnhwQXJnOjpvcGVyYXRvciA+PSAoaW50IHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cmV0dXJu
ICFsdChkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7
fQppbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAoaW50IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3Nv
bF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgp
KTtyZXR1cm4gIWx0KCZmeHBUeXBlX19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBl
LHMuZF9zdG9yZSk7fQppbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yID49IChsb25nIHMpIGNv
bnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9u
Z190eXBlLndpZHRoKCkpO3JldHVybiAhbHQoZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CmlubGluZSBib29sIG9wZXJhdG9yID49IChsb25nIHAs
IGNvbnN0IGZ4cEFyZyYgcykgeyAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBm
eHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuICFsdCgmZnhwVHlwZV9fbG9uZ190eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFy
Zzo6b3BlcmF0b3IgPj0gKHVuc2lnbmVkIGNoYXIgcykgY29uc3QgICAgeyAgO3NvbF9sMnMoKGxv
bmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3JldHVy
biAhbHQoZF90eXBlLGRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9y
ZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAodW5zaWduZWQgY2hhciBwLCBjb25zdCBmeHBB
cmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNo
YXJfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWx0KCZmeHBUeXBlX191Y2hhcl90eXBlLGZ4cF9fZmly
c3Rfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0
b3IgPj0gKHVuc2lnbmVkIHNob3J0IHMpIGNvbnN0ICAgIHsgIDtzb2xfbDJzKChsb25nKXMsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7cmV0dXJuICFsdChk
X3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQpp
bmxpbmUgYm9vbCBvcGVyYXRvciA+PSAodW5zaWduZWQgc2hvcnQgcCwgY29uc3QgZnhwQXJnJiBz
KSB7ICA7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90
eXBlLndpZHRoKCkpO3JldHVybiAhbHQoJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3Ig
Pj0gKHVuc2lnbmVkIGludCBzKSBjb25zdCAgICB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWx0KGRfdHlwZSxk
X3N0b3JlLCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQppbmxpbmUgYm9v
bCBvcGVyYXRvciA+PSAodW5zaWduZWQgaW50IHAsIGNvbnN0IGZ4cEFyZyYgcykgeyAgO3NvbF9s
MnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7
cmV0dXJuICFsdCgmZnhwVHlwZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUscy5kX3R5cGUs
cy5kX3N0b3JlKTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPj0gKHVuc2lnbmVkIGxv
bmcgcykgY29uc3QgICAgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX191bG9uZ190eXBlLndpZHRoKCkpO3JldHVybiAhbHQoZF90eXBlLGRfc3RvcmUsJmZ4cFR5
cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQppbmxpbmUgYm9vbCBvcGVyYXRvciA+
PSAodW5zaWduZWQgbG9uZyBwLCBjb25zdCBmeHBBcmcmIHMpIHsgIDtzb2xfbDJzKChsb25nKXAs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gIWx0
KCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUscy5kX3R5cGUscy5kX3N0b3Jl
KTt9CmlubGluZSBib29sIGZ4cEFyZzo6b3BlcmF0b3IgPj0gKGZsb2F0IHMpIGNvbnN0ICAgIHtG
eHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuICFsdChkX3R5cGUsZF9zdG9y
ZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KaW5saW5lIGJvb2wgb3Bl
cmF0b3IgPj0gKGZsb2F0IHAsIGNvbnN0IGZ4cEFyZyYgcykge0Z4cEFzc2VydChGWFBfX05PX0NP
TlYpOyAgICA7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdf
dHlwZS53aWR0aCgpKTtyZXR1cm4gIWx0KCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9z
dG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA+
PSAoZG91YmxlIHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3NvbF9s
MnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7
cmV0dXJuICFsdChkX3R5cGUsZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpO30KaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKGRvdWJsZSBwLCBjb25zdCBmeHBBcmcm
IHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICAgO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2Zp
cnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cmV0dXJuICFsdCgmZnhwVHlw
ZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKTt9Cgp0ZW1w
bGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfQURELDA+IGZ4cEFyZzo6
b3BlcmF0b3IgKyAoY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0IHsgO3Vuc2lnbmVkIHNo
b3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhvdCxvcyk7cy5jYWxjVEQo
b3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsb3Qsb3MsaWQpO30KCgoKdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9w
ZXI8U09MX1NVQiwwPiBmeHBBcmc6Om9wZXJhdG9yIC0gKGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBz
KSBjb25zdCB7IDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Mob3Qsb3MpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfU1VCLDA+KHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLG90LG9zLGlkKTt9CgoKCnRlbXBsYXRlPFNvbF9vcCBD
TUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9NVUxULDA+IGZ4cEFyZzo6b3BlcmF0b3IgKiAo
Y29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0IHsgO3Vuc2lnbmVkIHNob3J0KiBvcztmeHBU
eXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhvdCxvcyk7cy5jYWxjVEQob3Qsb3MpO3JldHVy
biBmeHBPcGVyPFNPTF9NVUxULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLG90LG9zLGlk
KTt9CgoKCnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9MU0hJ
RlQsMD4gZnhwQXJnOjpvcGVyYXRvciA8PCAoY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0
IHsgO3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhv
dCxvcyk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3RvcmUsb3Qsb3MsaWQpO30KCgoKdGVtcGxhdGU8U29sX29wIENNRCxp
bnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBmeHBBcmc6Om9wZXJhdG9yID4+IChj
b25zdCBmeHBPcGVyPENNRCxPPiYgcykgY29uc3QgeyA7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5
cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKG90LG9zKTtzLmNhbGNURChvdCxvcyk7cmV0dXJu
IGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSxvdCxvcyxp
ZCk7fQoKCgp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfRElW
LDA+IGZ4cEFyZzo6b3BlcmF0b3IgLyAoY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0IHsg
O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhvdCxv
cyk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9ESVYsMD4odGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3RvcmUsb3Qsb3MsaWQpO30KCgoKdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
aW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBmeHBBcmc6Om9wZXJhdG9yICUgKGNvbnN0IGZ4cE9w
ZXI8Q01ELE8+JiBzKSBjb25zdCB7IDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGlu
dCBpZCA9IHN0b3JlQWxsb2Mob3Qsb3MpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxT
T0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLG90LG9zLGlkKTt9CgoKCnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BTkQsMD4gZnhwQXJnOjpv
cGVyYXRvciAmIChjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgY29uc3QgeyA7dW5zaWduZWQgc2hv
cnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKG90LG9zKTtzLmNhbGNURChv
dCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSxvdCxvcyxpZCk7fQoKCgp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3Bl
cjxTT0xfT1IsMD4gZnhwQXJnOjpvcGVyYXRvciB8IChjb25zdCBmeHBPcGVyPENNRCxPPiYgcykg
Y29uc3QgeyA7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKG90LG9zKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLG90LG9zLGlkKTt9CgoKCnRlbXBsYXRlPFNvbF9vcCBDTUQs
aW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IGZ4cEFyZzo6b3BlcmF0b3IgXiAoY29u
c3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0IHsgO3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBl
KiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhvdCxvcyk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBm
eHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLG90LG9zLGlkKTt9
CgoKCnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9CSVRNRVJH
RSwwPiBmeHBBcmc6OmFwcGVuZCAoY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0IHsgO3Vu
c2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhvdCxvcyk7
cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSxvdCxvcyxpZCk7fQoKCgp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBP
PiBpbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yIDwgKGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBz
KSBjb25zdCB7IDtmeHBUeXBlIG90O3MuY2FsY1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTtyZXR1
cm4gbHQodGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO30K
CgoKdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRv
ciA8PSAoY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0IHsgO2Z4cFR5cGUgb3Q7cy5jYWxj
VEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO3JldHVybiAhbHQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUs
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUpO30KCgoKdGVtcGxhdGU8U29sX29wIENNRCxpbnQg
Tz4gaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVyYXRvciA9PSAoY29uc3QgZnhwT3BlcjxDTUQsTz4m
IHMpIGNvbnN0IHsgO2Z4cFR5cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO3Jl
dHVybiBlcSh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmb3QsZnhwX19maXJzdF9zdG9yZSk7
fQoKCgp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJh
dG9yICE9IChjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgY29uc3QgeyA7ZnhwVHlwZSBvdDtzLmNh
bGNURCgmb3QsZnhwX19maXJzdF9zdG9yZSk7cmV0dXJuICFlcSh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdG9yZSwmb3QsZnhwX19maXJzdF9zdG9yZSk7fQoKCgp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGlu
dCBPPiBpbmxpbmUgYm9vbCBmeHBBcmc6Om9wZXJhdG9yID4gKGNvbnN0IGZ4cE9wZXI8Q01ELE8+
JiBzKSBjb25zdCB7IDtmeHBUeXBlIG90O3MuY2FsY1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTty
ZXR1cm4gbHQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUsdGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUp
O30KCgoKdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwQXJnOjpvcGVy
YXRvciA+PSAoY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIGNvbnN0IHsgO2Z4cFR5cGUgb3Q7cy5j
YWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO3JldHVybiAhbHQodGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO30KCgoKIyA0NDk5ICIvZWRjL3dhL2JlbmVk
aWN0L2YzX2lkNi9jc2ZnL2hwdV9nbnUvRmRfaG9tZS9pbmNsdWRlL2Z4cC5oIgoKCgoKdGVtcGxh
dGU8U29sX29wIENNRCxpbnQgTz4gdGVtcGxhdGU8U29sX29wIENNRDIsaW50IE8yPiBpbmxpbmUg
ZnhwT3BlcjxTT0xfQURELDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciArIChjb25zdCBmeHBP
cGVyPENNRDIsTzI+JiBzKSBjb25zdCB7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90O3Vu
c2lnbmVkIHNob3J0KiBvczI7ZnhwVHlwZSogb3QyOyBpbnQgaWQgPSBzdG9yZUFsbG9jKG90LG9z
LG90MixvczIpO2NhbGNURChvdCxvcyk7cy5jYWxjVEQob3QyLG9zMik7cmV0dXJuIGZ4cE9wZXI8
U09MX0FERCwwPihvdCxvcyxvdDIsb3MyLGlkKTt9Cgp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBP
PiBpbmxpbmUgZnhwT3BlcjxTT0xfQURELDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciArIChj
b25zdCBmeHBBcmcmIHMpICBjb25zdCB7IDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7
IGludCBpZCA9IHN0b3JlQWxsb2Mob3Qsb3MpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8
U09MX0FERCwwPihvdCxvcyxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KdGVtcGxhdGU8U29sX29w
IENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBmeHBPcGVyPENNRCxPPjo6b3Bl
cmF0b3IgKyAoYm9vbCBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBz
aG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9s
MnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7
cmV0dXJuIGZ4cE9wZXI8U09MX0FERCwwPihvdCxvcywmZnhwVHlwZV9fYm9vbF90eXBlLHN0LGlk
KTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4g
b3BlcmF0b3IgKyAoYm9vbCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBz
aG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0
aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FERCwwPigmZnhwVHlwZV9f
Ym9vbF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGlu
ZSBmeHBPcGVyPFNPTF9BREQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICsgKGNoYXIgcykg
Y29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUq
IG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4
cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNP
TF9BREQsMD4ob3Qsb3MsJmZ4cFR5cGVfX2NoYXJfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xf
b3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfQURELDA+IG9wZXJhdG9yICsgKGNoYXIg
cCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVk
IHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29s
X2wycygobG9uZylwLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qs
b3MpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oJmZ4cFR5cGVfX2NoYXJfdHlwZSxzdCxvdCxv
cyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfQURE
LDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciArIChzaG9ydCBzKSBjb25zdCAgICB7IHVuc2ln
bmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0
b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fc2hvcnRfdHlw
ZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4ob3Qsb3Ms
JmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
aW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBvcGVyYXRvciArIChzaG9ydCBwLCBjb25zdCBmeHBP
cGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4
cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAs
c3QsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBm
eHBPcGVyPFNPTF9BREQsMD4oJmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBmeHBPcGVy
PENNRCxPPjo6b3BlcmF0b3IgKyAoaW50IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0
O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxv
dCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtjYWxj
VEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4ob3Qsb3MsJmZ4cFR5cGVfX2ludF90
eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNP
TF9BREQsMD4gb3BlcmF0b3IgKyAoaW50IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVu
c2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9
IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9faW50X3R5
cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oJmZ4
cFR5cGVfX2ludF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+
IGlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICsgKGxv
bmcgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4
cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMs
c3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBP
cGVyPFNPTF9BREQsMD4ob3Qsb3MsJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0
ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfQURELDA+IG9wZXJhdG9yICsg
KGxvbmcgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vu
c2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxv
cyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxj
VEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxz
dCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxT
T0xfQURELDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciArICh1bnNpZ25lZCBjaGFyIHMpIGNv
bnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBv
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBU
eXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09M
X0FERCwwPihvdCxvcywmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xf
b3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfQURELDA+IG9wZXJhdG9yICsgKHVuc2ln
bmVkIGNoYXIgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0
O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxv
dCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3Mu
Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfQURELDA+KCZmeHBUeXBlX191Y2hhcl90
eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBP
cGVyPFNPTF9BREQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICsgKHVuc2lnbmVkIHNob3J0
IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBU
eXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0
LCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBP
cGVyPFNPTF9BREQsMD4ob3Qsb3MsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLHN0LGlkKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4gb3BlcmF0b3Ig
KyAodW5zaWduZWQgc2hvcnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQg
c2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191c2hvcnRfdHlwZS53
aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FERCwwPigmZnhwVHlw
ZV9fdXNob3J0X3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
aW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgKyAodW5z
aWduZWQgaW50IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0
KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygo
bG9uZylzLHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1
cm4gZnhwT3BlcjxTT0xfQURELDA+KG90LG9zLCZmeHBUeXBlX191aW50X3R5cGUsc3QsaWQpO30K
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0FERCwwPiBvcGVy
YXRvciArICh1bnNpZ25lZCBpbnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWdu
ZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3Rv
cmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191aW50X3R5cGUu
d2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oJmZ4cFR5
cGVfX3VpbnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBp
bmxpbmUgZnhwT3BlcjxTT0xfQURELDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciArICh1bnNp
Z25lZCBsb25nIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0
KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygo
bG9uZylzLHN0LCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0
dXJuIGZ4cE9wZXI8U09MX0FERCwwPihvdCxvcywmZnhwVHlwZV9fdWxvbmdfdHlwZSxzdCxpZCk7
fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfQURELDA+IG9w
ZXJhdG9yICsgKHVuc2lnbmVkIGxvbmcgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5z
aWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191bG9uZ190
eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfQURELDA+KCZm
eHBUeXBlX191bG9uZ190eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50
IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICsg
KGZsb2F0IHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBz
aG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0
aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4ob3Qsb3MsJmZ4cFR5
cGVfX2xvbmdfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
ZnhwT3BlcjxTT0xfQURELDA+IG9wZXJhdG9yICsgKGZsb2F0IHAsIGNvbnN0IGZ4cE9wZXI8Q01E
LE8+JiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQgc2hvcnQqIHN0O3Vu
c2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxv
cyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxj
VEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9BREQsMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxz
dCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxT
T0xfQURELDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciArIChkb3VibGUgcykgY29uc3QgICAg
e0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBz
aG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9s
MnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7
cmV0dXJuIGZ4cE9wZXI8U09MX0FERCwwPihvdCxvcywmZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlk
KTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BREQsMD4g
b3BlcmF0b3IgKyAoZG91YmxlIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7RnhwQXNzZXJ0
KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztm
eHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylw
LHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBm
eHBPcGVyPFNPTF9BREQsMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxvdCxvcyxpZCk7fQoKCgp0
ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiB0ZW1wbGF0ZTxTb2xfb3AgQ01EMixpbnQgTzI+IGlu
bGluZSBmeHBPcGVyPFNPTF9TVUIsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIC0gKGNvbnN0
IGZ4cE9wZXI8Q01EMixPMj4mIHMpIGNvbnN0IHt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSog
b3Q7dW5zaWduZWQgc2hvcnQqIG9zMjtmeHBUeXBlKiBvdDI7IGludCBpZCA9IHN0b3JlQWxsb2Mo
b3Qsb3Msb3QyLG9zMik7Y2FsY1REKG90LG9zKTtzLmNhbGNURChvdDIsb3MyKTtyZXR1cm4gZnhw
T3BlcjxTT0xfU1VCLDA+KG90LG9zLG90MixvczIsaWQpO30KCnRlbXBsYXRlPFNvbF9vcCBDTUQs
aW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9TVUIsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9y
IC0gKGNvbnN0IGZ4cEFyZyYgcykgIGNvbnN0IHsgO3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBl
KiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhvdCxvcyk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhw
T3BlcjxTT0xfU1VCLDA+KG90LG9zLHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQp0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfU1VCLDA+IGZ4cE9wZXI8Q01ELE8+
OjpvcGVyYXRvciAtIChib29sIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2ln
bmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7
c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90
LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfU1VCLDA+KG90LG9zLCZmeHBUeXBlX19ib29sX3R5cGUs
c3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1NV
QiwwPiBvcGVyYXRvciAtIChib29sIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2ln
bmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0
b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fYm9vbF90eXBl
LndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfU1VCLDA+KCZmeHBU
eXBlX19ib29sX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
aW5saW5lIGZ4cE9wZXI8U09MX1NVQiwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgLSAoY2hh
ciBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7Znhw
VHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxz
dCwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9w
ZXI8U09MX1NVQiwwPihvdCxvcywmZnhwVHlwZV9fY2hhcl90eXBlLHN0LGlkKTt9CnRlbXBsYXRl
PFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9TVUIsMD4gb3BlcmF0b3IgLSAo
Y2hhciBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5z
aWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9z
KTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtzLmNhbGNU
RChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiwwPigmZnhwVHlwZV9fY2hhcl90eXBlLHN0
LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNP
TF9TVUIsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIC0gKHNob3J0IHMpIGNvbnN0ICAgIHsg
dW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlk
ID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19zaG9y
dF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiwwPihv
dCxvcywmZnhwVHlwZV9fc2hvcnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGlu
dCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfU1VCLDA+IG9wZXJhdG9yIC0gKHNob3J0IHAsIGNvbnN0
IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCog
b3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxv
bmcpcCxzdCwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0
dXJuIGZ4cE9wZXI8U09MX1NVQiwwPigmZnhwVHlwZV9fc2hvcnRfdHlwZSxzdCxvdCxvcyxpZCk7
fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfU1VCLDA+IGZ4
cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAtIChpbnQgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9y
dCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkp
O2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiwwPihvdCxvcywmZnhwVHlwZV9f
aW50X3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9w
ZXI8U09MX1NVQiwwPiBvcGVyYXRvciAtIChpbnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMp
IHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50
IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19p
bnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiww
PigmZnhwVHlwZV9faW50X3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxp
bnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1NVQiwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3Ig
LSAobG9uZyBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCog
b3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxv
bmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJu
IGZ4cE9wZXI8U09MX1NVQiwwPihvdCxvcywmZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CnRl
bXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9TVUIsMD4gb3BlcmF0
b3IgLSAobG9uZyBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCog
c3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0
LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtz
LmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiwwPigmZnhwVHlwZV9fbG9uZ190
eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBP
cGVyPFNPTF9TVUIsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIC0gKHVuc2lnbmVkIGNoYXIg
cykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5
cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3Qs
IGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3Bl
cjxTT0xfU1VCLDA+KG90LG9zLCZmeHBUeXBlX191Y2hhcl90eXBlLHN0LGlkKTt9CnRlbXBsYXRl
PFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9TVUIsMD4gb3BlcmF0b3IgLSAo
dW5zaWduZWQgY2hhciBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9y
dCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgo
KSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9TVUIsMD4oJmZ4cFR5cGVfX3Vj
aGFyX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5l
IGZ4cE9wZXI8U09MX1NVQiwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgLSAodW5zaWduZWQg
c2hvcnQgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9z
O2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25n
KXMsc3QsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJu
IGZ4cE9wZXI8U09MX1NVQiwwPihvdCxvcywmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3QsaWQpO30K
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1NVQiwwPiBvcGVy
YXRvciAtICh1bnNpZ25lZCBzaG9ydCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNp
Z25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBz
dG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3VzaG9ydF90
eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfU1VCLDA+KCZm
eHBUeXBlX191c2hvcnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGlu
dCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfU1VCLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAt
ICh1bnNpZ25lZCBpbnQgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQg
c2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xf
bDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3Mp
O3JldHVybiBmeHBPcGVyPFNPTF9TVUIsMD4ob3Qsb3MsJmZ4cFR5cGVfX3VpbnRfdHlwZSxzdCxp
ZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfU1VCLDA+
IG9wZXJhdG9yIC0gKHVuc2lnbmVkIGludCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1
bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQg
PSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3VpbnRf
dHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiwwPigm
ZnhwVHlwZV9fdWludF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50
IE8+IGlubGluZSBmeHBPcGVyPFNPTF9TVUIsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIC0g
KHVuc2lnbmVkIGxvbmcgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQg
c2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xf
bDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9z
KTtyZXR1cm4gZnhwT3BlcjxTT0xfU1VCLDA+KG90LG9zLCZmeHBUeXBlX191bG9uZ190eXBlLHN0
LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9TVUIs
MD4gb3BlcmF0b3IgLSAodW5zaWduZWQgbG9uZyBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykg
eyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQg
aWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Vs
b25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9TVUIs
MD4oJmZ4cFR5cGVfX3Vsb25nX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENN
RCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1NVQiwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0
b3IgLSAoZmxvYXQgcykgY29uc3QgICAge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIHVuc2ln
bmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0
b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBl
LndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiwwPihvdCxvcywm
ZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlu
bGluZSBmeHBPcGVyPFNPTF9TVUIsMD4gb3BlcmF0b3IgLSAoZmxvYXQgcCwgY29uc3QgZnhwT3Bl
cjxDTUQsTz4mIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBzaG9ydCog
c3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0
LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtz
LmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1NVQiwwPigmZnhwVHlwZV9fbG9uZ190
eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBP
cGVyPFNPTF9TVUIsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIC0gKGRvdWJsZSBzKSBjb25z
dCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2ln
bmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7
c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90
LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfU1VCLDA+KG90LG9zLCZmeHBUeXBlX19sb25nX3R5cGUs
c3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1NV
QiwwPiBvcGVyYXRvciAtIChkb3VibGUgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHtGeHBB
c3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQq
IG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChs
b25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0
dXJuIGZ4cE9wZXI8U09MX1NVQiwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LG90LG9zLGlkKTt9
CgoKCnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IHRlbXBsYXRlPFNvbF9vcCBDTUQyLGludCBP
Mj4gaW5saW5lIGZ4cE9wZXI8U09MX01VTFQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICog
KGNvbnN0IGZ4cE9wZXI8Q01EMixPMj4mIHMpIGNvbnN0IHt1bnNpZ25lZCBzaG9ydCogb3M7Znhw
VHlwZSogb3Q7dW5zaWduZWQgc2hvcnQqIG9zMjtmeHBUeXBlKiBvdDI7IGludCBpZCA9IHN0b3Jl
QWxsb2Mob3Qsb3Msb3QyLG9zMik7Y2FsY1REKG90LG9zKTtzLmNhbGNURChvdDIsb3MyKTtyZXR1
cm4gZnhwT3BlcjxTT0xfTVVMVCwwPihvdCxvcyxvdDIsb3MyLGlkKTt9Cgp0ZW1wbGF0ZTxTb2xf
b3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTVVMVCwwPiBmeHBPcGVyPENNRCxPPjo6
b3BlcmF0b3IgKiAoY29uc3QgZnhwQXJnJiBzKSAgY29uc3QgeyA7dW5zaWduZWQgc2hvcnQqIG9z
O2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKG90LG9zKTtjYWxjVEQob3Qsb3MpO3Jl
dHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KG90LG9zLHMuZF90eXBlLHMuZF9zdG9yZSxpZCk7fQp0
ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTVVMVCwwPiBmeHBP
cGVyPENNRCxPPjo6b3BlcmF0b3IgKiAoYm9vbCBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0
KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Mo
c3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkp
O2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX01VTFQsMD4ob3Qsb3MsJmZ4cFR5cGVf
X2Jvb2xfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhw
T3BlcjxTT0xfTVVMVCwwPiBvcGVyYXRvciAqIChib29sIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+
JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7
IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlw
ZV9fYm9vbF90eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xf
TVVMVCwwPigmZnhwVHlwZV9fYm9vbF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9NVUxULDA+IGZ4cE9wZXI8Q01ELE8+Ojpv
cGVyYXRvciAqIChjaGFyIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVk
IHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29s
X2wycygobG9uZylzLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9z
KTtyZXR1cm4gZnhwT3BlcjxTT0xfTVVMVCwwPihvdCxvcywmZnhwVHlwZV9fY2hhcl90eXBlLHN0
LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9NVUxU
LDA+IG9wZXJhdG9yICogKGNoYXIgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWdu
ZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3Rv
cmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUu
d2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KCZmeHBU
eXBlX19jaGFyX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
aW5saW5lIGZ4cE9wZXI8U09MX01VTFQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICogKHNo
b3J0IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztm
eHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylz
LHN0LCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4
cE9wZXI8U09MX01VTFQsMD4ob3Qsb3MsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3QsaWQpO30KdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX01VTFQsMD4gb3BlcmF0
b3IgKiAoc2hvcnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQq
IHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhz
dCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkp
O3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfTVVMVCwwPigmZnhwVHlwZV9fc2hv
cnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
ZnhwT3BlcjxTT0xfTVVMVCwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgKiAoaW50IHMpIGNv
bnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBv
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBU
eXBlX19pbnRfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9N
VUxULDA+KG90LG9zLCZmeHBUeXBlX19pbnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTVVMVCwwPiBvcGVyYXRvciAqIChpbnQgcCwg
Y29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNo
b3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wy
cygobG9uZylwLHN0LCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7
cmV0dXJuIGZ4cE9wZXI8U09MX01VTFQsMD4oJmZ4cFR5cGVfX2ludF90eXBlLHN0LG90LG9zLGlk
KTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9NVUxULDA+
IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAqIChsb25nIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQg
c2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lk
dGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfTVVMVCwwPihvdCxvcywmZnhw
VHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGlu
ZSBmeHBPcGVyPFNPTF9NVUxULDA+IG9wZXJhdG9yICogKGxvbmcgcCwgY29uc3QgZnhwT3BlcjxD
TUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBl
KiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBm
eHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVy
PFNPTF9NVUxULDA+KCZmeHBUeXBlX19sb25nX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8
U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX01VTFQsMD4gZnhwT3BlcjxDTUQs
Tz46Om9wZXJhdG9yICogKHVuc2lnbmVkIGNoYXIgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9y
dCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgo
KSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfTVVMVCwwPihvdCxvcywmZnhwVHlw
ZV9fdWNoYXJfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
ZnhwT3BlcjxTT0xfTVVMVCwwPiBvcGVyYXRvciAqICh1bnNpZ25lZCBjaGFyIHAsIGNvbnN0IGZ4
cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7
ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcp
cCxzdCwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJu
IGZ4cE9wZXI8U09MX01VTFQsMD4oJmZ4cFR5cGVfX3VjaGFyX3R5cGUsc3Qsb3Qsb3MsaWQpO30K
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX01VTFQsMD4gZnhw
T3BlcjxDTUQsTz46Om9wZXJhdG9yICogKHVuc2lnbmVkIHNob3J0IHMpIGNvbnN0ICAgIHsgdW5z
aWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191c2hvcnRf
dHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KG90
LG9zLCZmeHBUeXBlX191c2hvcnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGlu
dCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTVVMVCwwPiBvcGVyYXRvciAqICh1bnNpZ25lZCBzaG9y
dCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWdu
ZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtz
b2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO3MuY2FsY1RE
KG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfTVVMVCwwPigmZnhwVHlwZV9fdXNob3J0X3R5cGUs
c3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8
U09MX01VTFQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICogKHVuc2lnbmVkIGludCBzKSBj
b25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSog
b3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhw
VHlwZV9fdWludF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09M
X01VTFQsMD4ob3Qsb3MsJmZ4cFR5cGVfX3VpbnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xf
b3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTVVMVCwwPiBvcGVyYXRvciAqICh1bnNp
Z25lZCBpbnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0
O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxv
dCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7cy5j
YWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KCZmeHBUeXBlX191aW50X3R5
cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9w
ZXI8U09MX01VTFQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICogKHVuc2lnbmVkIGxvbmcg
cykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5
cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3Qs
IGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3Bl
cjxTT0xfTVVMVCwwPihvdCxvcywmZnhwVHlwZV9fdWxvbmdfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0
ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTVVMVCwwPiBvcGVyYXRvciAq
ICh1bnNpZ25lZCBsb25nIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNo
b3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxs
b2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0
aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX01VTFQsMD4oJmZ4cFR5cGVf
X3Vsb25nX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5s
aW5lIGZ4cE9wZXI8U09MX01VTFQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICogKGZsb2F0
IHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBzaG9ydCog
c3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0
LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtj
YWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KG90LG9zLCZmeHBUeXBlX19s
b25nX3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9w
ZXI8U09MX01VTFQsMD4gb3BlcmF0b3IgKiAoZmxvYXQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4m
IHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWdu
ZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtz
b2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURChv
dCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX01VTFQsMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxv
dCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xf
TVVMVCwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgKiAoZG91YmxlIHMpIGNvbnN0ICAgIHtG
eHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hv
cnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJz
KChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3Jl
dHVybiBmeHBPcGVyPFNPTF9NVUxULDA+KG90LG9zLCZmeHBUeXBlX19sb25nX3R5cGUsc3QsaWQp
O30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX01VTFQsMD4g
b3BlcmF0b3IgKiAoZG91YmxlIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7RnhwQXNzZXJ0
KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztm
eHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylw
LHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBm
eHBPcGVyPFNPTF9NVUxULDA+KCZmeHBUeXBlX19sb25nX3R5cGUsc3Qsb3Qsb3MsaWQpO30KCgoK
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gdGVtcGxhdGU8U29sX29wIENNRDIsaW50IE8yPiBp
bmxpbmUgZnhwT3BlcjxTT0xfTFNISUZULDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA8PCAo
Y29uc3QgZnhwT3BlcjxDTUQyLE8yPiYgcykgY29uc3Qge3Vuc2lnbmVkIHNob3J0KiBvcztmeHBU
eXBlKiBvdDt1bnNpZ25lZCBzaG9ydCogb3MyO2Z4cFR5cGUqIG90MjsgaW50IGlkID0gc3RvcmVB
bGxvYyhvdCxvcyxvdDIsb3MyKTtjYWxjVEQob3Qsb3MpO3MuY2FsY1REKG90MixvczIpO3JldHVy
biBmeHBPcGVyPFNPTF9MU0hJRlQsMD4ob3Qsb3Msb3QyLG9zMixpZCk7fQoKdGVtcGxhdGU8U29s
X29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBmeHBPcGVyPENNRCxP
Pjo6b3BlcmF0b3IgPDwgKGNvbnN0IGZ4cEFyZyYgcykgIGNvbnN0IHsgO3Vuc2lnbmVkIHNob3J0
KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhvdCxvcyk7Y2FsY1REKG90LG9z
KTtyZXR1cm4gZnhwT3BlcjxTT0xfTFNISUZULDA+KG90LG9zLHMuZF90eXBlLHMuZF9zdG9yZSxp
ZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTFNISUZU
LDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA8PCAoYm9vbCBzKSBjb25zdCAgICB7IHVuc2ln
bmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0
b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fYm9vbF90eXBl
LndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0xTSElGVCwwPihvdCxv
cywmZnhwVHlwZV9fYm9vbF90eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+
IGlubGluZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gb3BlcmF0b3IgPDwgKGJvb2wgcCwgY29uc3Qg
ZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBv
cztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9u
ZylwLHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVy
biBmeHBPcGVyPFNPTF9MU0hJRlQsMD4oJmZ4cFR5cGVfX2Jvb2xfdHlwZSxzdCxvdCxvcyxpZCk7
fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTFNISUZULDA+
IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA8PCAoY2hhciBzKSBjb25zdCAgICB7IHVuc2lnbmVk
IHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fY2hhcl90eXBlLndp
ZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0xTSElGVCwwPihvdCxvcywm
ZnhwVHlwZV9fY2hhcl90eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlu
bGluZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gb3BlcmF0b3IgPDwgKGNoYXIgcCwgY29uc3QgZnhw
T3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztm
eHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylw
LHN0LCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBm
eHBPcGVyPFNPTF9MU0hJRlQsMD4oJmZ4cFR5cGVfX2NoYXJfdHlwZSxzdCxvdCxvcyxpZCk7fQp0
ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTFNISUZULDA+IGZ4
cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA8PCAoc2hvcnQgcykgY29uc3QgICAgeyB1bnNpZ25lZCBz
aG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lk
dGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfTFNISUZULDA+KG90LG9zLCZm
eHBUeXBlX19zaG9ydF90eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlu
bGluZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gb3BlcmF0b3IgPDwgKHNob3J0IHAsIGNvbnN0IGZ4
cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7
ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcp
cCxzdCwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJu
IGZ4cE9wZXI8U09MX0xTSElGVCwwPigmZnhwVHlwZV9fc2hvcnRfdHlwZSxzdCxvdCxvcyxpZCk7
fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTFNISUZULDA+
IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA8PCAoaW50IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQg
c2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19pbnRfdHlwZS53aWR0
aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4ob3Qsb3MsJmZ4
cFR5cGVfX2ludF90eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGlu
ZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gb3BlcmF0b3IgPDwgKGludCBwLCBjb25zdCBmeHBPcGVy
PENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5
cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3Qs
IGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3Bl
cjxTT0xfTFNISUZULDA+KCZmeHBUeXBlX19pbnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0
ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTFNISUZULDA+IGZ4cE9wZXI8
Q01ELE8+OjpvcGVyYXRvciA8PCAobG9uZyBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBz
dDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qs
b3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Nh
bGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0xTSElGVCwwPihvdCxvcywmZnhwVHlwZV9f
bG9uZ190eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBP
cGVyPFNPTF9MU0hJRlQsMD4gb3BlcmF0b3IgPDwgKGxvbmcgcCwgY29uc3QgZnhwT3BlcjxDTUQs
Tz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBv
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBU
eXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNP
TF9MU0hJRlQsMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTFNISUZULDA+IGZ4cE9wZXI8Q01E
LE8+OjpvcGVyYXRvciA8PCAodW5zaWduZWQgY2hhciBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNo
b3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxs
b2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0
aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4ob3Qsb3MsJmZ4
cFR5cGVfX3VjaGFyX3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5s
aW5lIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBvcGVyYXRvciA8PCAodW5zaWduZWQgY2hhciBwLCBj
b25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hv
cnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJz
KChsb25nKXAsc3QsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3Mp
O3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4oJmZ4cFR5cGVfX3VjaGFyX3R5cGUsc3Qsb3Qs
b3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0xT
SElGVCwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPDwgKHVuc2lnbmVkIHNob3J0IHMpIGNv
bnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBv
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBU
eXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNP
TF9MU0hJRlQsMD4ob3Qsb3MsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLHN0LGlkKTt9CnRlbXBsYXRl
PFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gb3BlcmF0b3Ig
PDwgKHVuc2lnbmVkIHNob3J0IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVk
IHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdXNob3J0X3R5cGUu
d2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4oJmZ4
cFR5cGVfX3VzaG9ydF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50
IE8+IGlubGluZSBmeHBPcGVyPFNPTF9MU0hJRlQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9y
IDw8ICh1bnNpZ25lZCBpbnQgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWdu
ZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtz
b2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qs
b3MpO3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4ob3Qsb3MsJmZ4cFR5cGVfX3VpbnRfdHlw
ZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xf
TFNISUZULDA+IG9wZXJhdG9yIDw8ICh1bnNpZ25lZCBpbnQgcCwgY29uc3QgZnhwT3BlcjxDTUQs
Tz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBv
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBU
eXBlX191aW50X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNP
TF9MU0hJRlQsMD4oJmZ4cFR5cGVfX3VpbnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTFNISUZULDA+IGZ4cE9wZXI8Q01E
LE8+OjpvcGVyYXRvciA8PCAodW5zaWduZWQgbG9uZyBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNo
b3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxs
b2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0
aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4ob3Qsb3MsJmZ4
cFR5cGVfX3Vsb25nX3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5s
aW5lIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBvcGVyYXRvciA8PCAodW5zaWduZWQgbG9uZyBwLCBj
b25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hv
cnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJz
KChsb25nKXAsc3QsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3Mp
O3JldHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4oJmZ4cFR5cGVfX3Vsb25nX3R5cGUsc3Qsb3Qs
b3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0xT
SElGVCwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPDwgKGZsb2F0IHMpIGNvbnN0ICAgIHtG
eHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hv
cnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJz
KChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3Jl
dHVybiBmeHBPcGVyPFNPTF9MU0hJRlQsMD4ob3Qsb3MsJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxp
ZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfTFNISUZU
LDA+IG9wZXJhdG9yIDw8IChmbG9hdCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykge0Z4cEFz
c2VydChGWFBfX05PX0NPTlYpOyAgIHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCog
b3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxv
bmcpcCxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1
cm4gZnhwT3BlcjxTT0xfTFNISUZULDA+KCZmeHBUeXBlX19sb25nX3R5cGUsc3Qsb3Qsb3MsaWQp
O30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0xTSElGVCww
PiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPDwgKGRvdWJsZSBzKSBjb25zdCAgICB7RnhwQXNz
ZXJ0KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBv
cztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9u
ZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4g
ZnhwT3BlcjxTT0xfTFNISUZULDA+KG90LG9zLCZmeHBUeXBlX19sb25nX3R5cGUsc3QsaWQpO30K
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0xTSElGVCwwPiBv
cGVyYXRvciA8PCAoZG91YmxlIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7RnhwQXNzZXJ0
KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztm
eHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylw
LHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBm
eHBPcGVyPFNPTF9MU0hJRlQsMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxvdCxvcyxpZCk7fQoK
Cgp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiB0ZW1wbGF0ZTxTb2xfb3AgQ01EMixpbnQgTzI+
IGlubGluZSBmeHBPcGVyPFNPTF9SU0hJRlQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yID4+
IChjb25zdCBmeHBPcGVyPENNRDIsTzI+JiBzKSBjb25zdCB7dW5zaWduZWQgc2hvcnQqIG9zO2Z4
cFR5cGUqIG90O3Vuc2lnbmVkIHNob3J0KiBvczI7ZnhwVHlwZSogb3QyOyBpbnQgaWQgPSBzdG9y
ZUFsbG9jKG90LG9zLG90MixvczIpO2NhbGNURChvdCxvcyk7cy5jYWxjVEQob3QyLG9zMik7cmV0
dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPihvdCxvcyxvdDIsb3MyLGlkKTt9Cgp0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfUlNISUZULDA+IGZ4cE9wZXI8Q01E
LE8+OjpvcGVyYXRvciA+PiAoY29uc3QgZnhwQXJnJiBzKSAgY29uc3QgeyA7dW5zaWduZWQgc2hv
cnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKG90LG9zKTtjYWxjVEQob3Qs
b3MpO3JldHVybiBmeHBPcGVyPFNPTF9SU0hJRlQsMD4ob3Qsb3Mscy5kX3R5cGUscy5kX3N0b3Jl
LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SU0hJ
RlQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yID4+IChib29sIHMpIGNvbnN0ICAgIHsgdW5z
aWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19ib29sX3R5
cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfUlNISUZULDA+KG90
LG9zLCZmeHBUeXBlX19ib29sX3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQg
Tz4gaW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBvcGVyYXRvciA+PiAoYm9vbCBwLCBjb25z
dCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQq
IG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChs
b25nKXAsc3QsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0
dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPigmZnhwVHlwZV9fYm9vbF90eXBlLHN0LG90LG9zLGlk
KTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SU0hJRlQs
MD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yID4+IChjaGFyIHMpIGNvbnN0ICAgIHsgdW5zaWdu
ZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3Rv
cmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUu
d2lkdGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfUlNISUZULDA+KG90LG9z
LCZmeHBUeXBlX19jaGFyX3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
aW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBvcGVyYXRvciA+PiAoY2hhciBwLCBjb25zdCBm
eHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9z
O2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25n
KXAsc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJu
IGZ4cE9wZXI8U09MX1JTSElGVCwwPigmZnhwVHlwZV9fY2hhcl90eXBlLHN0LG90LG9zLGlkKTt9
CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SU0hJRlQsMD4g
ZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yID4+IChzaG9ydCBzKSBjb25zdCAgICB7IHVuc2lnbmVk
IHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fc2hvcnRfdHlwZS53
aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9SU0hJRlQsMD4ob3Qsb3Ms
JmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
aW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBvcGVyYXRvciA+PiAoc2hvcnQgcCwgY29uc3Qg
ZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBv
cztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9u
ZylwLHN0LCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1
cm4gZnhwT3BlcjxTT0xfUlNISUZULDA+KCZmeHBUeXBlX19zaG9ydF90eXBlLHN0LG90LG9zLGlk
KTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SU0hJRlQs
MD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yID4+IChpbnQgcykgY29uc3QgICAgeyB1bnNpZ25l
ZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9y
ZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2ludF90eXBlLndp
ZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPihvdCxvcywm
ZnhwVHlwZV9faW50X3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5s
aW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBvcGVyYXRvciA+PiAoaW50IHAsIGNvbnN0IGZ4cE9w
ZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7Znhw
VHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxz
dCwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBP
cGVyPFNPTF9SU0hJRlQsMD4oJmZ4cFR5cGVfX2ludF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SU0hJRlQsMD4gZnhwT3Bl
cjxDTUQsTz46Om9wZXJhdG9yID4+IChsb25nIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQq
IHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhz
dCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7
Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfUlNISUZULDA+KG90LG9zLCZmeHBUeXBl
X19sb25nX3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4
cE9wZXI8U09MX1JTSElGVCwwPiBvcGVyYXRvciA+PiAobG9uZyBwLCBjb25zdCBmeHBPcGVyPENN
RCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUq
IG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4
cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8
U09MX1JTSElGVCwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRl
PFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SU0hJRlQsMD4gZnhwT3BlcjxD
TUQsTz46Om9wZXJhdG9yID4+ICh1bnNpZ25lZCBjaGFyIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQg
c2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndp
ZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPihvdCxvcywm
ZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBp
bmxpbmUgZnhwT3BlcjxTT0xfUlNISUZULDA+IG9wZXJhdG9yID4+ICh1bnNpZ25lZCBjaGFyIHAs
IGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBz
aG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9s
MnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxv
cyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPigmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxv
dCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xf
UlNISUZULDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA+PiAodW5zaWduZWQgc2hvcnQgcykg
Y29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUq
IG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4
cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8
U09MX1JTSElGVCwwPihvdCxvcywmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3QsaWQpO30KdGVtcGxh
dGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBvcGVyYXRv
ciA+PiAodW5zaWduZWQgc2hvcnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWdu
ZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3Rv
cmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191c2hvcnRfdHlw
ZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPigm
ZnhwVHlwZV9fdXNob3J0X3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxp
bnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1JTSElGVCwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0
b3IgPj4gKHVuc2lnbmVkIGludCBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNp
Z25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3Mp
O3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO2NhbGNURChv
dCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPihvdCxvcywmZnhwVHlwZV9fdWludF90
eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNP
TF9SU0hJRlQsMD4gb3BlcmF0b3IgPj4gKHVuc2lnbmVkIGludCBwLCBjb25zdCBmeHBPcGVyPENN
RCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUq
IG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4
cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8
U09MX1JTSElGVCwwPigmZnhwVHlwZV9fdWludF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRl
PFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SU0hJRlQsMD4gZnhwT3BlcjxD
TUQsTz46Om9wZXJhdG9yID4+ICh1bnNpZ25lZCBsb25nIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQg
c2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191bG9uZ190eXBlLndp
ZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPihvdCxvcywm
ZnhwVHlwZV9fdWxvbmdfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBp
bmxpbmUgZnhwT3BlcjxTT0xfUlNISUZULDA+IG9wZXJhdG9yID4+ICh1bnNpZ25lZCBsb25nIHAs
IGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBz
aG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9s
MnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxv
cyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPigmZnhwVHlwZV9fdWxvbmdfdHlwZSxzdCxv
dCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xf
UlNISUZULDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA+PiAoZmxvYXQgcykgY29uc3QgICAg
e0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBz
aG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9s
MnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7
cmV0dXJuIGZ4cE9wZXI8U09MX1JTSElGVCwwPihvdCxvcywmZnhwVHlwZV9fbG9uZ190eXBlLHN0
LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SU0hJ
RlQsMD4gb3BlcmF0b3IgPj4gKGZsb2F0IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7Rnhw
QXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0
KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygo
bG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3Jl
dHVybiBmeHBPcGVyPFNPTF9SU0hJRlQsMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxvdCxvcyxp
ZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfUlNISUZU
LDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA+PiAoZG91YmxlIHMpIGNvbnN0ICAgIHtGeHBB
c3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQq
IG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChs
b25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVy
biBmeHBPcGVyPFNPTF9SU0hJRlQsMD4ob3Qsb3MsJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxpZCk7
fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfUlNISUZULDA+
IG9wZXJhdG9yID4+IChkb3VibGUgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHtGeHBBc3Nl
cnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9z
O2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25n
KXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJu
IGZ4cE9wZXI8U09MX1JTSElGVCwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LG90LG9zLGlkKTt9
CgoKCnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IHRlbXBsYXRlPFNvbF9vcCBDTUQyLGludCBP
Mj4gaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgLyAo
Y29uc3QgZnhwT3BlcjxDTUQyLE8yPiYgcykgY29uc3Qge3Vuc2lnbmVkIHNob3J0KiBvcztmeHBU
eXBlKiBvdDt1bnNpZ25lZCBzaG9ydCogb3MyO2Z4cFR5cGUqIG90MjsgaW50IGlkID0gc3RvcmVB
bGxvYyhvdCxvcyxvdDIsb3MyKTtjYWxjVEQob3Qsb3MpO3MuY2FsY1REKG90MixvczIpO3JldHVy
biBmeHBPcGVyPFNPTF9ESVYsMD4ob3Qsb3Msb3QyLG9zMixpZCk7fQoKdGVtcGxhdGU8U29sX29w
IENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBmeHBPcGVyPENNRCxPPjo6b3Bl
cmF0b3IgLyAoY29uc3QgZnhwQXJnJiBzKSAgY29uc3QgeyA7dW5zaWduZWQgc2hvcnQqIG9zO2Z4
cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKG90LG9zKTtjYWxjVEQob3Qsb3MpO3JldHVy
biBmeHBPcGVyPFNPTF9ESVYsMD4ob3Qsb3Mscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9ESVYsMD4gZnhwT3BlcjxD
TUQsTz46Om9wZXJhdG9yIC8gKGJvb2wgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7
dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90
LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtjYWxj
VEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9ESVYsMD4ob3Qsb3MsJmZ4cFR5cGVfX2Jvb2xf
dHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxT
T0xfRElWLDA+IG9wZXJhdG9yIC8gKGJvb2wgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsg
dW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlk
ID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19ib29s
X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9ESVYsMD4o
JmZ4cFR5cGVfX2Jvb2xfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGlu
dCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAv
IChjaGFyIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBv
cztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9u
ZylzLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4g
ZnhwT3BlcjxTT0xfRElWLDA+KG90LG9zLCZmeHBUeXBlX19jaGFyX3R5cGUsc3QsaWQpO30KdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBvcGVyYXRv
ciAvIChjaGFyIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBz
dDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qs
b3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO3Mu
Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+KCZmeHBUeXBlX19jaGFyX3R5
cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9w
ZXI8U09MX0RJViwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgLyAoc2hvcnQgcykgY29uc3Qg
ICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBp
bnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVf
X3Nob3J0X3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRElW
LDA+KG90LG9zLCZmeHBUeXBlX19zaG9ydF90eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBD
TUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9ESVYsMD4gb3BlcmF0b3IgLyAoc2hvcnQgcCwg
Y29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNo
b3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wy
cygobG9uZylwLHN0LCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9z
KTtyZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+KCZmeHBUeXBlX19zaG9ydF90eXBlLHN0LG90LG9z
LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9ESVYs
MD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIC8gKGludCBzKSBjb25zdCAgICB7IHVuc2lnbmVk
IHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9faW50X3R5cGUud2lk
dGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+KG90LG9zLCZmeHBU
eXBlX19pbnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
ZnhwT3BlcjxTT0xfRElWLDA+IG9wZXJhdG9yIC8gKGludCBwLCBjb25zdCBmeHBPcGVyPENNRCxP
PiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90
OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5
cGVfX2ludF90eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xf
RElWLDA+KCZmeHBUeXBlX19pbnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVy
YXRvciAvIChsb25nIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNo
b3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wy
cygobG9uZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTty
ZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+KG90LG9zLCZmeHBUeXBlX19sb25nX3R5cGUsc3QsaWQp
O30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBv
cGVyYXRvciAvIChsb25nIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNo
b3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxs
b2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRo
KCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+KCZmeHBUeXBlX19s
b25nX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5l
IGZ4cE9wZXI8U09MX0RJViwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgLyAodW5zaWduZWQg
Y2hhciBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7
ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcp
cyxzdCwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBm
eHBPcGVyPFNPTF9ESVYsMD4ob3Qsb3MsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsc3QsaWQpO30KdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBvcGVyYXRv
ciAvICh1bnNpZ25lZCBjaGFyIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVk
IHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWNoYXJfdHlwZS53
aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0RJViwwPigmZnhwVHlw
ZV9fdWNoYXJfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBp
bmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAvICh1bnNp
Z25lZCBzaG9ydCBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9y
dCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMo
KGxvbmcpcyxzdCwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTty
ZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+KG90LG9zLCZmeHBUeXBlX191c2hvcnRfdHlwZSxzdCxp
ZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+
IG9wZXJhdG9yIC8gKHVuc2lnbmVkIHNob3J0IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7
IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBp
ZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdXNo
b3J0X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9ESVYs
MD4oJmZ4cFR5cGVfX3VzaG9ydF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBD
TUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9ESVYsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJh
dG9yIC8gKHVuc2lnbmVkIGludCBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNp
Z25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3Mp
O3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO2NhbGNURChv
dCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0RJViwwPihvdCxvcywmZnhwVHlwZV9fdWludF90eXBl
LHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9E
SVYsMD4gb3BlcmF0b3IgLyAodW5zaWduZWQgaW50IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBz
KSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGlu
dCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9f
dWludF90eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRElW
LDA+KCZmeHBUeXBlX191aW50X3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENN
RCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0
b3IgLyAodW5zaWduZWQgbG9uZyBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNp
Z25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3Mp
O3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQo
b3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9ESVYsMD4ob3Qsb3MsJmZ4cFR5cGVfX3Vsb25nX3R5
cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09M
X0RJViwwPiBvcGVyYXRvciAvICh1bnNpZ25lZCBsb25nIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+
JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7
IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlw
ZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09M
X0RJViwwPigmZnhwVHlwZV9fdWxvbmdfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xf
b3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfRElWLDA+IGZ4cE9wZXI8Q01ELE8+Ojpv
cGVyYXRvciAvIChmbG9hdCBzKSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAg
dW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlk
ID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25n
X3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+KG90
LG9zLCZmeHBUeXBlX19sb25nX3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQg
Tz4gaW5saW5lIGZ4cE9wZXI8U09MX0RJViwwPiBvcGVyYXRvciAvIChmbG9hdCBwLCBjb25zdCBm
eHBPcGVyPENNRCxPPiYgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIHVuc2lnbmVkIHNo
b3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxs
b2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRo
KCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+KCZmeHBUeXBlX19s
b25nX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5l
IGZ4cE9wZXI8U09MX0RJViwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgLyAoZG91YmxlIHMp
IGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBzaG9ydCogc3Q7
dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90
LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxj
VEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9ESVYsMD4ob3Qsb3MsJmZ4cFR5cGVfX2xvbmdf
dHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxT
T0xfRElWLDA+IG9wZXJhdG9yIC8gKGRvdWJsZSBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykg
e0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBz
aG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9s
MnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9z
KTtyZXR1cm4gZnhwT3BlcjxTT0xfRElWLDA+KCZmeHBUeXBlX19sb25nX3R5cGUsc3Qsb3Qsb3Ms
aWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1JFTSww
PiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgJSAoY29uc3QgZnhwQXJnJiBzKSAgY29uc3QgeyA7
dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKG90LG9z
KTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4ob3Qsb3Mscy5kX3R5cGUs
cy5kX3N0b3JlLGlkKTt9CgoKCnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IHRlbXBsYXRlPFNv
bF9vcCBDTUQyLGludCBPMj4gaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBmeHBPcGVyPENNRCxP
Pjo6b3BlcmF0b3IgJSAoY29uc3QgZnhwT3BlcjxDTUQyLE8yPiYgcykgY29uc3Qge3Vuc2lnbmVk
IHNob3J0KiBvcztmeHBUeXBlKiBvdDt1bnNpZ25lZCBzaG9ydCogb3MyO2Z4cFR5cGUqIG90Mjsg
aW50IGlkID0gc3RvcmVBbGxvYyhvdCxvcyxvdDIsb3MyKTtjYWxjVEQob3Qsb3MpO3MuY2FsY1RE
KG90MixvczIpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4ob3Qsb3Msb3QyLG9zMixpZCk7fQoK
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBmeHBP
cGVyPENNRCxPPjo6b3BlcmF0b3IgJSAoYm9vbCBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0
KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Mo
c3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkp
O2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSwwPihvdCxvcywmZnhwVHlwZV9f
Ym9vbF90eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBP
cGVyPFNPTF9SRU0sMD4gb3BlcmF0b3IgJSAoYm9vbCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYg
cykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBp
bnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVf
X2Jvb2xfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JF
TSwwPigmZnhwVHlwZV9fYm9vbF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBD
TUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SRU0sMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJh
dG9yICUgKGNoYXIgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hv
cnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJz
KChsb25nKXMsc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3Jl
dHVybiBmeHBPcGVyPFNPTF9SRU0sMD4ob3Qsb3MsJmZ4cFR5cGVfX2NoYXJfdHlwZSxzdCxpZCk7
fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IG9w
ZXJhdG9yICUgKGNoYXIgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hv
cnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxv
YyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgo
KSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4oJmZ4cFR5cGVfX2No
YXJfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
ZnhwT3BlcjxTT0xfUkVNLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAlIChzaG9ydCBzKSBj
b25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSog
b3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhw
VHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNP
TF9SRU0sMD4ob3Qsb3MsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29s
X29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBvcGVyYXRvciAlIChzaG9y
dCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWdu
ZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtz
b2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQo
b3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4oJmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3Qs
b3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09M
X1JFTSwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgJSAoaW50IHMpIGNvbnN0ICAgIHsgdW5z
aWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19pbnRfdHlw
ZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4ob3Qsb3Ms
JmZ4cFR5cGVfX2ludF90eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlu
bGluZSBmeHBPcGVyPFNPTF9SRU0sMD4gb3BlcmF0b3IgJSAoaW50IHAsIGNvbnN0IGZ4cE9wZXI8
Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlw
ZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwg
ZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVy
PFNPTF9SRU0sMD4oJmZ4cFR5cGVfX2ludF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNv
bF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SRU0sMD4gZnhwT3BlcjxDTUQsTz46
Om9wZXJhdG9yICUgKGxvbmcgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWdu
ZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtz
b2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qs
b3MpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4ob3Qsb3MsJmZ4cFR5cGVfX2xvbmdfdHlwZSxz
dCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfUkVN
LDA+IG9wZXJhdG9yICUgKGxvbmcgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWdu
ZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3Rv
cmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUu
d2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4oJmZ4cFR5
cGVfX2xvbmdfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBp
bmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAlICh1bnNp
Z25lZCBjaGFyIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0
KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygo
bG9uZylzLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0
dXJuIGZ4cE9wZXI8U09MX1JFTSwwPihvdCxvcywmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCxpZCk7
fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IG9w
ZXJhdG9yICUgKHVuc2lnbmVkIGNoYXIgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5z
aWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191Y2hhcl90
eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfUkVNLDA+KCZm
eHBUeXBlX191Y2hhcl90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50
IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SRU0sMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICUg
KHVuc2lnbmVkIHNob3J0IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVk
IHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29s
X2wycygobG9uZylzLHN0LCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qs
b3MpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4ob3Qsb3MsJmZ4cFR5cGVfX3VzaG9ydF90eXBl
LHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9S
RU0sMD4gb3BlcmF0b3IgJSAodW5zaWduZWQgc2hvcnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4m
IHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsg
aW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBl
X191c2hvcnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09M
X1JFTSwwPigmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29s
X29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX1JFTSwwPiBmeHBPcGVyPENNRCxPPjo6
b3BlcmF0b3IgJSAodW5zaWduZWQgaW50IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0
O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxv
dCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7Y2Fs
Y1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfUkVNLDA+KG90LG9zLCZmeHBUeXBlX191aW50
X3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8
U09MX1JFTSwwPiBvcGVyYXRvciAlICh1bnNpZ25lZCBpbnQgcCwgY29uc3QgZnhwT3BlcjxDTUQs
Tz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBv
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBU
eXBlX191aW50X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNP
TF9SRU0sMD4oJmZ4cFR5cGVfX3VpbnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xf
b3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IGZ4cE9wZXI8Q01ELE8+Ojpv
cGVyYXRvciAlICh1bnNpZ25lZCBsb25nIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0
O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxv
dCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2Nh
bGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSwwPihvdCxvcywmZnhwVHlwZV9fdWxv
bmdfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3Bl
cjxTT0xfUkVNLDA+IG9wZXJhdG9yICUgKHVuc2lnbmVkIGxvbmcgcCwgY29uc3QgZnhwT3BlcjxD
TUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBl
KiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBm
eHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3Bl
cjxTT0xfUkVNLDA+KCZmeHBUeXBlX191bG9uZ190eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRl
PFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9SRU0sMD4gZnhwT3BlcjxDTUQs
Tz46Om9wZXJhdG9yICUgKGZsb2F0IHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05W
KTsgICB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBp
bnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVf
X2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0s
MD4ob3Qsb3MsJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01E
LGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IG9wZXJhdG9yICUgKGZsb2F0IHAsIGNv
bnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgdW5zaWdu
ZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3Rv
cmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUu
d2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4oJmZ4cFR5
cGVfX2xvbmdfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBp
bmxpbmUgZnhwT3BlcjxTT0xfUkVNLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAlIChkb3Vi
bGUgcykgY29uc3QgICAge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIHVuc2lnbmVkIHNob3J0
KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Mo
c3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkp
O2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX1JFTSwwPihvdCxvcywmZnhwVHlwZV9f
bG9uZ190eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBP
cGVyPFNPTF9SRU0sMD4gb3BlcmF0b3IgJSAoZG91YmxlIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+
JiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2ln
bmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7
c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQo
b3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9SRU0sMD4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxv
dCxvcyxpZCk7fQoKCgp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiB0ZW1wbGF0ZTxTb2xfb3Ag
Q01EMixpbnQgTzI+IGlubGluZSBmeHBPcGVyPFNPTF9BTkQsMD4gZnhwT3BlcjxDTUQsTz46Om9w
ZXJhdG9yICYgKGNvbnN0IGZ4cE9wZXI8Q01EMixPMj4mIHMpIGNvbnN0IHt1bnNpZ25lZCBzaG9y
dCogb3M7ZnhwVHlwZSogb3Q7dW5zaWduZWQgc2hvcnQqIG9zMjtmeHBUeXBlKiBvdDI7IGludCBp
ZCA9IHN0b3JlQWxsb2Mob3Qsb3Msb3QyLG9zMik7Y2FsY1REKG90LG9zKTtzLmNhbGNURChvdDIs
b3MyKTtyZXR1cm4gZnhwT3BlcjxTT0xfQU5ELDA+KG90LG9zLG90MixvczIsaWQpO30KCnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BTkQsMD4gZnhwT3BlcjxD
TUQsTz46Om9wZXJhdG9yICYgKGNvbnN0IGZ4cEFyZyYgcykgIGNvbnN0IHsgO3Vuc2lnbmVkIHNo
b3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhvdCxvcyk7Y2FsY1REKG90
LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfQU5ELDA+KG90LG9zLHMuZF90eXBlLHMuZF9zdG9yZSxp
ZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfQU5ELDA+
IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAmIChib29sIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQg
c2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lk
dGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfQU5ELDA+KG90LG9zLCZmeHBU
eXBlX19ib29sX3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5l
IGZ4cE9wZXI8U09MX0FORCwwPiBvcGVyYXRvciAmIChib29sIHAsIGNvbnN0IGZ4cE9wZXI8Q01E
LE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSog
b3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhw
VHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxT
T0xfQU5ELDA+KCZmeHBUeXBlX19ib29sX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29s
X29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0FORCwwPiBmeHBPcGVyPENNRCxPPjo6
b3BlcmF0b3IgJiAoY2hhciBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25l
ZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3Nv
bF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO2NhbGNURChvdCxv
cyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPihvdCxvcywmZnhwVHlwZV9fY2hhcl90eXBlLHN0
LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BTkQs
MD4gb3BlcmF0b3IgJiAoY2hhciBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25l
ZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9y
ZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53
aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPigmZnhwVHlw
ZV9fY2hhcl90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlu
bGluZSBmeHBPcGVyPFNPTF9BTkQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICYgKHNob3J0
IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBU
eXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0
LCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9w
ZXI8U09MX0FORCwwPihvdCxvcywmZnhwVHlwZV9fc2hvcnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0
ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfQU5ELDA+IG9wZXJhdG9yICYg
KHNob3J0IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1
bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qs
b3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtzLmNh
bGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPigmZnhwVHlwZV9fc2hvcnRfdHlw
ZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3Bl
cjxTT0xfQU5ELDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAmIChpbnQgcykgY29uc3QgICAg
eyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQg
aWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2lu
dF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPihv
dCxvcywmZnhwVHlwZV9faW50X3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQg
Tz4gaW5saW5lIGZ4cE9wZXI8U09MX0FORCwwPiBvcGVyYXRvciAmIChpbnQgcCwgY29uc3QgZnhw
T3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztm
eHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylw
LHN0LCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4
cE9wZXI8U09MX0FORCwwPigmZnhwVHlwZV9faW50X3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxh
dGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0FORCwwPiBmeHBPcGVyPENN
RCxPPjo6b3BlcmF0b3IgJiAobG9uZyBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1
bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qs
b3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2NhbGNU
RChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPihvdCxvcywmZnhwVHlwZV9fbG9uZ190
eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNP
TF9BTkQsMD4gb3BlcmF0b3IgJiAobG9uZyBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1
bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQg
PSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdf
dHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPigm
ZnhwVHlwZV9fbG9uZ190eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50
IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BTkQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICYg
KHVuc2lnbmVkIGNoYXIgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQg
c2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xf
bDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9z
KTtyZXR1cm4gZnhwT3BlcjxTT0xfQU5ELDA+KG90LG9zLCZmeHBUeXBlX191Y2hhcl90eXBlLHN0
LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BTkQs
MD4gb3BlcmF0b3IgJiAodW5zaWduZWQgY2hhciBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykg
eyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQg
aWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Vj
aGFyX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9BTkQs
MD4oJmZ4cFR5cGVfX3VjaGFyX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENN
RCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0FORCwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0
b3IgJiAodW5zaWduZWQgc2hvcnQgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5z
aWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9z
KTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2NhbGNU
RChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPihvdCxvcywmZnhwVHlwZV9fdXNob3J0
X3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8
U09MX0FORCwwPiBvcGVyYXRvciAmICh1bnNpZ25lZCBzaG9ydCBwLCBjb25zdCBmeHBPcGVyPENN
RCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUq
IG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4
cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3Bl
cjxTT0xfQU5ELDA+KCZmeHBUeXBlX191c2hvcnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0
ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfQU5ELDA+IGZ4cE9wZXI8Q01E
LE8+OjpvcGVyYXRvciAmICh1bnNpZ25lZCBpbnQgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9y
dCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgp
KTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9BTkQsMD4ob3Qsb3MsJmZ4cFR5cGVf
X3VpbnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhw
T3BlcjxTT0xfQU5ELDA+IG9wZXJhdG9yICYgKHVuc2lnbmVkIGludCBwLCBjb25zdCBmeHBPcGVy
PENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5
cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3Qs
IGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9w
ZXI8U09MX0FORCwwPigmZnhwVHlwZV9fdWludF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRl
PFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BTkQsMD4gZnhwT3BlcjxDTUQs
Tz46Om9wZXJhdG9yICYgKHVuc2lnbmVkIGxvbmcgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9y
dCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgo
KSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfQU5ELDA+KG90LG9zLCZmeHBUeXBl
X191bG9uZ190eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBm
eHBPcGVyPFNPTF9BTkQsMD4gb3BlcmF0b3IgJiAodW5zaWduZWQgbG9uZyBwLCBjb25zdCBmeHBP
cGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4
cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAs
c3QsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBm
eHBPcGVyPFNPTF9BTkQsMD4oJmZ4cFR5cGVfX3Vsb25nX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0FORCwwPiBmeHBPcGVy
PENNRCxPPjo6b3BlcmF0b3IgJiAoZmxvYXQgcykgY29uc3QgICAge0Z4cEFzc2VydChGWFBfX05P
X0NPTlYpOyAgIHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSog
b3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhw
VHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09M
X0FORCwwPihvdCxvcywmZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BTkQsMD4gb3BlcmF0b3IgJiAoZmxvYXQg
cCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1
bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQg
PSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdf
dHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPigm
ZnhwVHlwZV9fbG9uZ190eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50
IE8+IGlubGluZSBmeHBPcGVyPFNPTF9BTkQsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICYg
KGRvdWJsZSBzKSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQg
c2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lk
dGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfQU5ELDA+KG90LG9zLCZmeHBU
eXBlX19sb25nX3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5l
IGZ4cE9wZXI8U09MX0FORCwwPiBvcGVyYXRvciAmIChkb3VibGUgcCwgY29uc3QgZnhwT3BlcjxD
TUQsTz4mIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBzaG9ydCogc3Q7
dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90
LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtzLmNh
bGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0FORCwwPigmZnhwVHlwZV9fbG9uZ190eXBl
LHN0LG90LG9zLGlkKTt9CgoKCnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IHRlbXBsYXRlPFNv
bF9vcCBDTUQyLGludCBPMj4gaW5saW5lIGZ4cE9wZXI8U09MX09SLDA+IGZ4cE9wZXI8Q01ELE8+
OjpvcGVyYXRvciB8IChjb25zdCBmeHBPcGVyPENNRDIsTzI+JiBzKSBjb25zdCB7dW5zaWduZWQg
c2hvcnQqIG9zO2Z4cFR5cGUqIG90O3Vuc2lnbmVkIHNob3J0KiBvczI7ZnhwVHlwZSogb3QyOyBp
bnQgaWQgPSBzdG9yZUFsbG9jKG90LG9zLG90MixvczIpO2NhbGNURChvdCxvcyk7cy5jYWxjVEQo
b3QyLG9zMik7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KG90LG9zLG90MixvczIsaWQpO30KCnRl
bXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9PUiwwPiBmeHBPcGVy
PENNRCxPPjo6b3BlcmF0b3IgfCAoY29uc3QgZnhwQXJnJiBzKSAgY29uc3QgeyA7dW5zaWduZWQg
c2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKG90LG9zKTtjYWxjVEQo
b3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9PUiwwPihvdCxvcyxzLmRfdHlwZSxzLmRfc3RvcmUs
aWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX09SLDA+
IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciB8IChib29sIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQg
c2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lk
dGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfT1IsMD4ob3Qsb3MsJmZ4cFR5
cGVfX2Jvb2xfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
ZnhwT3BlcjxTT0xfT1IsMD4gb3BlcmF0b3IgfCAoYm9vbCBwLCBjb25zdCBmeHBPcGVyPENNRCxP
PiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90
OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5
cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09M
X09SLDA+KCZmeHBUeXBlX19ib29sX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29w
IENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX09SLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVy
YXRvciB8IChjaGFyIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNo
b3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wy
cygobG9uZylzLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTty
ZXR1cm4gZnhwT3BlcjxTT0xfT1IsMD4ob3Qsb3MsJmZ4cFR5cGVfX2NoYXJfdHlwZSxzdCxpZCk7
fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfT1IsMD4gb3Bl
cmF0b3IgfCAoY2hhciBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9y
dCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgp
KTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KCZmeHBUeXBlX19jaGFy
X3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4
cE9wZXI8U09MX09SLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciB8IChzaG9ydCBzKSBjb25z
dCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7
IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlw
ZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9P
UiwwPihvdCxvcywmZnhwVHlwZV9fc2hvcnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfT1IsMD4gb3BlcmF0b3IgfCAoc2hvcnQgcCwg
Y29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNo
b3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wy
cygobG9uZylwLHN0LCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9z
KTtyZXR1cm4gZnhwT3BlcjxTT0xfT1IsMD4oJmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3Qsb3Qsb3Ms
aWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX09SLDA+
IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciB8IChpbnQgcykgY29uc3QgICAgeyB1bnNpZ25lZCBz
aG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRo
KCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KG90LG9zLCZmeHBUeXBl
X19pbnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhw
T3BlcjxTT0xfT1IsMD4gb3BlcmF0b3IgfCAoaW50IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBz
KSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGlu
dCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9f
aW50X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9PUiww
PigmZnhwVHlwZV9faW50X3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxp
bnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX09SLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciB8
IChsb25nIHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBv
cztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9u
ZylzLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4g
ZnhwT3BlcjxTT0xfT1IsMD4ob3Qsb3MsJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxpZCk7fQp0ZW1w
bGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfT1IsMD4gb3BlcmF0b3Ig
fCAobG9uZyBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7
dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90
LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtzLmNh
bGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KCZmeHBUeXBlX19sb25nX3R5cGUs
c3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8
U09MX09SLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciB8ICh1bnNpZ25lZCBjaGFyIHMpIGNv
bnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBv
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBU
eXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09M
X09SLDA+KG90LG9zLCZmeHBUeXBlX191Y2hhcl90eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9PUiwwPiBvcGVyYXRvciB8ICh1bnNpZ25l
ZCBjaGFyIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1
bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qs
b3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtzLmNh
bGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KCZmeHBUeXBlX191Y2hhcl90eXBl
LHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVy
PFNPTF9PUiwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgfCAodW5zaWduZWQgc2hvcnQgcykg
Y29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUq
IG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4
cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8
U09MX09SLDA+KG90LG9zLCZmeHBUeXBlX191c2hvcnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfT1IsMD4gb3BlcmF0b3IgfCAodW5z
aWduZWQgc2hvcnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQq
IHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhz
dCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgp
KTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KCZmeHBUeXBlX191c2hv
cnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
ZnhwT3BlcjxTT0xfT1IsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIHwgKHVuc2lnbmVkIGlu
dCBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7Znhw
VHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxz
dCwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9w
ZXI8U09MX09SLDA+KG90LG9zLCZmeHBUeXBlX191aW50X3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8
U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX09SLDA+IG9wZXJhdG9yIHwgKHVu
c2lnbmVkIGludCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCog
c3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0
LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtz
LmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KCZmeHBUeXBlX191aW50X3R5
cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9w
ZXI8U09MX09SLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciB8ICh1bnNpZ25lZCBsb25nIHMp
IGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBl
KiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBm
eHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8
U09MX09SLDA+KG90LG9zLCZmeHBUeXBlX191bG9uZ190eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNv
bF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9PUiwwPiBvcGVyYXRvciB8ICh1bnNp
Z25lZCBsb25nIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBz
dDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qs
b3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtz
LmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KCZmeHBUeXBlX191bG9uZ190
eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBP
cGVyPFNPTF9PUiwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgfCAoZmxvYXQgcykgY29uc3Qg
ICAge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25l
ZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3Nv
bF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2NhbGNURChvdCxv
cyk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KG90LG9zLCZmeHBUeXBlX19sb25nX3R5cGUsc3Qs
aWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX09SLDA+
IG9wZXJhdG9yIHwgKGZsb2F0IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7RnhwQXNzZXJ0
KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztm
eHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylw
LHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBm
eHBPcGVyPFNPTF9PUiwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9PUiwwPiBmeHBPcGVyPENN
RCxPPjo6b3BlcmF0b3IgfCAoZG91YmxlIHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19D
T05WKTsgICB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90
OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5
cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9P
UiwwPihvdCxvcywmZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBD
TUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9PUiwwPiBvcGVyYXRvciB8IChkb3VibGUgcCwg
Y29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNp
Z25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBz
dG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlw
ZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX09SLDA+KCZmeHBU
eXBlX19sb25nX3R5cGUsc3Qsb3Qsb3MsaWQpO30KCgoKdGVtcGxhdGU8U29sX29wIENNRCxpbnQg
Tz4gdGVtcGxhdGU8U29sX29wIENNRDIsaW50IE8yPiBpbmxpbmUgZnhwT3BlcjxTT0xfRVhPUiww
PiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgXiAoY29uc3QgZnhwT3BlcjxDTUQyLE8yPiYgcykg
Y29uc3Qge3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDt1bnNpZ25lZCBzaG9ydCogb3My
O2Z4cFR5cGUqIG90MjsgaW50IGlkID0gc3RvcmVBbGxvYyhvdCxvcyxvdDIsb3MyKTtjYWxjVEQo
b3Qsb3MpO3MuY2FsY1REKG90MixvczIpO3JldHVybiBmeHBPcGVyPFNPTF9FWE9SLDA+KG90LG9z
LG90MixvczIsaWQpO30KCnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVy
PFNPTF9FWE9SLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciBeIChjb25zdCBmeHBBcmcmIHMp
ICBjb25zdCB7IDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3Jl
QWxsb2Mob3Qsb3MpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0VYT1IsMD4ob3Qs
b3Mscy5kX3R5cGUscy5kX3N0b3JlLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlu
bGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciBeIChib29s
IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBU
eXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0
LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3Bl
cjxTT0xfRVhPUiwwPihvdCxvcywmZnhwVHlwZV9fYm9vbF90eXBlLHN0LGlkKTt9CnRlbXBsYXRl
PFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IG9wZXJhdG9yIF4g
KGJvb2wgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vu
c2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxv
cyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7cy5jYWxj
VEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9FWE9SLDA+KCZmeHBUeXBlX19ib29sX3R5cGUs
c3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8
U09MX0VYT1IsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIF4gKGNoYXIgcykgY29uc3QgICAg
eyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQg
aWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2No
YXJfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9FWE9SLDA+
KG90LG9zLCZmeHBUeXBlX19jaGFyX3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxp
bnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0VYT1IsMD4gb3BlcmF0b3IgXiAoY2hhciBwLCBjb25z
dCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQq
IG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChs
b25nKXAsc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0
dXJuIGZ4cE9wZXI8U09MX0VYT1IsMD4oJmZ4cFR5cGVfX2NoYXJfdHlwZSxzdCxvdCxvcyxpZCk7
fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBm
eHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgXiAoc2hvcnQgcykgY29uc3QgICAgeyB1bnNpZ25lZCBz
aG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lk
dGgoKSk7Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPihvdCxvcywmZnhw
VHlwZV9fc2hvcnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxp
bmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBvcGVyYXRvciBeIChzaG9ydCBwLCBjb25zdCBmeHBPcGVy
PENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5
cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3Qs
IGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBP
cGVyPFNPTF9FWE9SLDA+KCZmeHBUeXBlX19zaG9ydF90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IGZ4cE9wZXI8
Q01ELE8+OjpvcGVyYXRvciBeIChpbnQgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7
dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90
LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO2NhbGNU
RChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0VYT1IsMD4ob3Qsb3MsJmZ4cFR5cGVfX2ludF90
eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNP
TF9FWE9SLDA+IG9wZXJhdG9yIF4gKGludCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1
bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQg
PSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2ludF90
eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPigm
ZnhwVHlwZV9faW50X3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQg
Tz4gaW5saW5lIGZ4cE9wZXI8U09MX0VYT1IsMD4gZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIF4g
KGxvbmcgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9z
O2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25n
KXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBm
eHBPcGVyPFNPTF9FWE9SLDA+KG90LG9zLCZmeHBUeXBlX19sb25nX3R5cGUsc3QsaWQpO30KdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0VYT1IsMD4gb3BlcmF0
b3IgXiAobG9uZyBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCog
c3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0
LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtz
LmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0VYT1IsMD4oJmZ4cFR5cGVfX2xvbmdf
dHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhw
T3BlcjxTT0xfRVhPUiwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgXiAodW5zaWduZWQgY2hh
ciBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7Znhw
VHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxz
dCwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBP
cGVyPFNPTF9FWE9SLDA+KG90LG9zLCZmeHBUeXBlX191Y2hhcl90eXBlLHN0LGlkKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IG9wZXJhdG9y
IF4gKHVuc2lnbmVkIGNoYXIgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQg
c2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVB
bGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndp
ZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPigmZnhwVHlw
ZV9fdWNoYXJfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBp
bmxpbmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgXiAodW5z
aWduZWQgc2hvcnQgcykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hv
cnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJz
KChsb25nKXMsc3QsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7
cmV0dXJuIGZ4cE9wZXI8U09MX0VYT1IsMD4ob3Qsb3MsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLHN0
LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9FWE9S
LDA+IG9wZXJhdG9yIF4gKHVuc2lnbmVkIHNob3J0IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBz
KSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGlu
dCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9f
dXNob3J0X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9F
WE9SLDA+KCZmeHBUeXBlX191c2hvcnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xf
b3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBmeHBPcGVyPENNRCxPPjo6
b3BlcmF0b3IgXiAodW5zaWduZWQgaW50IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0
O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxv
dCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7Y2Fs
Y1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhPUiwwPihvdCxvcywmZnhwVHlwZV9fdWlu
dF90eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVy
PFNPTF9FWE9SLDA+IG9wZXJhdG9yIF4gKHVuc2lnbmVkIGludCBwLCBjb25zdCBmeHBPcGVyPENN
RCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUq
IG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4
cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8
U09MX0VYT1IsMD4oJmZ4cFR5cGVfX3VpbnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBmeHBPcGVyPENNRCxP
Pjo6b3BlcmF0b3IgXiAodW5zaWduZWQgbG9uZyBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0
KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Mo
c3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgp
KTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9FWE9SLDA+KG90LG9zLCZmeHBUeXBl
X191bG9uZ190eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBm
eHBPcGVyPFNPTF9FWE9SLDA+IG9wZXJhdG9yIF4gKHVuc2lnbmVkIGxvbmcgcCwgY29uc3QgZnhw
T3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztm
eHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylw
LHN0LCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4g
ZnhwT3BlcjxTT0xfRVhPUiwwPigmZnhwVHlwZV9fdWxvbmdfdHlwZSxzdCxvdCxvcyxpZCk7fQp0
ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBmeHBP
cGVyPENNRCxPPjo6b3BlcmF0b3IgXiAoZmxvYXQgcykgY29uc3QgICAge0Z4cEFzc2VydChGWFBf
X05PX0NPTlYpOyAgIHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlw
ZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwg
ZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8
U09MX0VYT1IsMD4ob3Qsb3MsJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBvcGVyYXRvciBeIChm
bG9hdCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYp
OyAgIHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGlu
dCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9f
bG9uZ190eXBlLndpZHRoKCkpO3MuY2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfRVhP
UiwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBD
TUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9FWE9SLDA+IGZ4cE9wZXI8Q01ELE8+OjpvcGVy
YXRvciBeIChkb3VibGUgcykgY29uc3QgICAge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIHVu
c2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9
IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190
eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0VYT1IsMD4ob3Qs
b3MsJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBP
PiBpbmxpbmUgZnhwT3BlcjxTT0xfRVhPUiwwPiBvcGVyYXRvciBeIChkb3VibGUgcCwgY29uc3Qg
ZnhwT3BlcjxDTUQsTz4mIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBz
aG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFs
bG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0
aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0VYT1IsMD4oJmZ4cFR5cGVf
X2xvbmdfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxp
bmUgZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4gZnhwT3BlcjxDTUQsTz46OmFwcGVuZCAoY29uc3Qg
ZnhwQXJnJiBzKSAgY29uc3QgeyA7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQg
aWQgPSBzdG9yZUFsbG9jKG90LG9zKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9C
SVRNRVJHRSwwPihvdCxvcyxzLmRfdHlwZSxzLmRfc3RvcmUsaWQpO30KCgoKdGVtcGxhdGU8U29s
X29wIENNRCxpbnQgTz4gdGVtcGxhdGU8U29sX29wIENNRDIsaW50IE8yPiBpbmxpbmUgZnhwT3Bl
cjxTT0xfQklUTUVSR0UsMD4gZnhwT3BlcjxDTUQsTz46OmFwcGVuZCAoY29uc3QgZnhwT3BlcjxD
TUQyLE8yPiYgcykgY29uc3Qge3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDt1bnNpZ25l
ZCBzaG9ydCogb3MyO2Z4cFR5cGUqIG90MjsgaW50IGlkID0gc3RvcmVBbGxvYyhvdCxvcyxvdDIs
b3MyKTtjYWxjVEQob3Qsb3MpO3MuY2FsY1REKG90MixvczIpO3JldHVybiBmeHBPcGVyPFNPTF9C
SVRNRVJHRSwwPihvdCxvcyxvdDIsb3MyLGlkKTt9Cgp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBP
PiBpbmxpbmUgZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4gZnhwT3BlcjxDTUQsTz46OmFwcGVuZCAo
Ym9vbCBzKSBjb25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7
ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcp
cyxzdCwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4
cE9wZXI8U09MX0JJVE1FUkdFLDA+KG90LG9zLCZmeHBUeXBlX19ib29sX3R5cGUsc3QsaWQpO30K
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+
IGFwcGVuZCAoYm9vbCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9y
dCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgp
KTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+KCZmeHBUeXBl
X19ib29sX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5s
aW5lIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+IGZ4cE9wZXI8Q01ELE8+OjphcHBlbmQgKGNoYXIg
cykgY29uc3QgICAgeyB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5
cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3Qs
IGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVy
PFNPTF9CSVRNRVJHRSwwPihvdCxvcywmZnhwVHlwZV9fY2hhcl90eXBlLHN0LGlkKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPiBhcHBl
bmQgKGNoYXIgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0
O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxv
dCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7cy5j
YWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9fY2hh
cl90eXBlLHN0LG90LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBm
eHBPcGVyPFNPTF9CSVRNRVJHRSwwPiBmeHBPcGVyPENNRCxPPjo6YXBwZW5kIChzaG9ydCBzKSBj
b25zdCAgICB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9ydCogb3M7ZnhwVHlwZSog
b3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMoKGxvbmcpcyxzdCwgZnhw
VHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNP
TF9CSVRNRVJHRSwwPihvdCxvcywmZnhwVHlwZV9fc2hvcnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0
ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4gYXBwZW5k
IChzaG9ydCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyB1bnNpZ25lZCBzaG9ydCogc3Q7
dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90
LG9zKTtzb2xfbDJzKChsb25nKXAsc3QsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7cy5j
YWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9fc2hv
cnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
ZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4gZnhwT3BlcjxDTUQsTz46OmFwcGVuZCAoaW50IHMpIGNv
bnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBv
dDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBU
eXBlX19pbnRfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9C
SVRNRVJHRSwwPihvdCxvcywmZnhwVHlwZV9faW50X3R5cGUsc3QsaWQpO30KdGVtcGxhdGU8U29s
X29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+IGFwcGVuZCAoaW50
IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25l
ZCBzaG9ydCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3Nv
bF9sMnMoKGxvbmcpcCxzdCwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qs
b3MpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9faW50X3R5cGUsc3Qs
b3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09M
X0JJVE1FUkdFLDA+IGZ4cE9wZXI8Q01ELE8+OjphcHBlbmQgKGxvbmcgcykgY29uc3QgICAgeyB1
bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWduZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQg
PSBzdG9yZUFsbG9jKHN0LG90LG9zKTtzb2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdf
dHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSww
PihvdCxvcywmZnhwVHlwZV9fbG9uZ190eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQs
aW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPiBhcHBlbmQgKGxvbmcgcCwgY29u
c3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0
KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygo
bG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3Jl
dHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LG90LG9z
LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9CSVRN
RVJHRSwwPiBmeHBPcGVyPENNRCxPPjo6YXBwZW5kICh1bnNpZ25lZCBjaGFyIHMpIGNvbnN0ICAg
IHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50
IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191
Y2hhcl90eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0JJVE1F
UkdFLDA+KG90LG9zLCZmeHBUeXBlX191Y2hhcl90eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPiBhcHBlbmQgKHVuc2ln
bmVkIGNoYXIgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0
O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxv
dCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3Mu
Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4oJmZ4cFR5cGVfX3Vj
aGFyX3R5cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5l
IGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+IGZ4cE9wZXI8Q01ELE8+OjphcHBlbmQgKHVuc2lnbmVk
IHNob3J0IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBv
cztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9u
ZylzLHN0LCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qsb3MpO3JldHVy
biBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPihvdCxvcywmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3Qs
aWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0JJVE1F
UkdFLDA+IGFwcGVuZCAodW5zaWduZWQgc2hvcnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMp
IHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50
IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191
c2hvcnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0JJ
VE1FUkdFLDA+KCZmeHBUeXBlX191c2hvcnRfdHlwZSxzdCxvdCxvcyxpZCk7fQp0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPPiBpbmxpbmUgZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4gZnhwT3BlcjxD
TUQsTz46OmFwcGVuZCAodW5zaWduZWQgaW50IHMpIGNvbnN0ICAgIHsgdW5zaWduZWQgc2hvcnQq
IHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhz
dCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7
Y2FsY1REKG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4ob3Qsb3MsJmZ4cFR5
cGVfX3VpbnRfdHlwZSxzdCxpZCk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
ZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4gYXBwZW5kICh1bnNpZ25lZCBpbnQgcCwgY29uc3QgZnhw
T3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztm
eHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylw
LHN0LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVybiBm
eHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9fdWludF90eXBlLHN0LG90LG9zLGlkKTt9
CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9CSVRNRVJHRSww
PiBmeHBPcGVyPENNRCxPPjo6YXBwZW5kICh1bnNpZ25lZCBsb25nIHMpIGNvbnN0ICAgIHsgdW5z
aWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9uZylzLHN0LCBmeHBUeXBlX191bG9uZ190
eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0dXJuIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+
KG90LG9zLCZmeHBUeXBlX191bG9uZ190eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQs
aW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPiBhcHBlbmQgKHVuc2lnbmVkIGxv
bmcgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2ln
bmVkIHNob3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7
c29sX2wycygobG9uZylwLHN0LCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO3MuY2FsY1RE
KG90LG9zKTtyZXR1cm4gZnhwT3BlcjxTT0xfQklUTUVSR0UsMD4oJmZ4cFR5cGVfX3Vsb25nX3R5
cGUsc3Qsb3Qsb3MsaWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9w
ZXI8U09MX0JJVE1FUkdFLDA+IGZ4cE9wZXI8Q01ELE8+OjphcHBlbmQgKGZsb2F0IHMpIGNvbnN0
ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICB1bnNpZ25lZCBzaG9ydCogc3Q7dW5zaWdu
ZWQgc2hvcnQqIG9zO2Z4cFR5cGUqIG90OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0LG90LG9zKTtz
b2xfbDJzKChsb25nKXMsc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQob3Qs
b3MpO3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPihvdCxvcywmZnhwVHlwZV9fbG9uZ190
eXBlLHN0LGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNP
TF9CSVRNRVJHRSwwPiBhcHBlbmQgKGZsb2F0IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7
RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNo
b3J0KiBvcztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wy
cygobG9uZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3Mp
O3JldHVybiBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LG90
LG9zLGlkKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBmeHBPcGVyPFNPTF9C
SVRNRVJHRSwwPiBmeHBPcGVyPENNRCxPPjo6YXBwZW5kIChkb3VibGUgcykgY29uc3QgICAge0Z4
cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIHVuc2lnbmVkIHNob3J0KiBzdDt1bnNpZ25lZCBzaG9y
dCogb3M7ZnhwVHlwZSogb3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qsb3Qsb3MpO3NvbF9sMnMo
KGxvbmcpcyxzdCwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2NhbGNURChvdCxvcyk7cmV0
dXJuIGZ4cE9wZXI8U09MX0JJVE1FUkdFLDA+KG90LG9zLCZmeHBUeXBlX19sb25nX3R5cGUsc3Qs
aWQpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGZ4cE9wZXI8U09MX0JJVE1F
UkdFLDA+IGFwcGVuZCAoZG91YmxlIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7RnhwQXNz
ZXJ0KEZYUF9fTk9fQ09OVik7ICAgdW5zaWduZWQgc2hvcnQqIHN0O3Vuc2lnbmVkIHNob3J0KiBv
cztmeHBUeXBlKiBvdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCxvdCxvcyk7c29sX2wycygobG9u
ZylwLHN0LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQob3Qsb3MpO3JldHVy
biBmeHBPcGVyPFNPTF9CSVRNRVJHRSwwPigmZnhwVHlwZV9fbG9uZ190eXBlLHN0LG90LG9zLGlk
KTt9CgoKCnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IHRlbXBsYXRlPFNvbF9vcCBDTUQyLGlu
dCBPMj4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIDwgKGNvbnN0IGZ4cE9w
ZXI8Q01EMixPMj4mIHMpIGNvbnN0IHtmeHBUeXBlIG90O2Z4cFR5cGUgb3QyO2NhbGNURCgmb3Qs
ZnhwX19maXJzdF9zdG9yZSk7cy5jYWxjVEQoJm90MixmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJu
IGx0KCZvdCxmeHBfX2ZpcnN0X3N0b3JlLCZvdDIsZnhwX19zZWNvbmRfc3RvcmUpO30KCnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRv
ciA8IChjb25zdCBmeHBBcmcmIHMpICBjb25zdCB7IDtmeHBUeXBlIG90O2NhbGNURCgmb3QsZnhw
X19maXJzdF9zdG9yZSk7cmV0dXJuIGx0KCZvdCxmeHBfX2ZpcnN0X3N0b3JlLHMuZF90eXBlLHMu
ZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVy
PENNRCxPPjo6b3BlcmF0b3IgPCAoYm9vbCBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vjb25kX3R5
cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53
aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gbHQo
JnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19m
aXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVy
YXRvciA8IChib29sIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IGZ4cFR5cGUgc2Vjb25k
X3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlw
ZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVy
biBsdCgmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4
cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29s
IGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA8IChjaGFyIHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBz
ZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hh
cl90eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3Jl
dHVybiBsdCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlw
ZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBi
b29sIG9wZXJhdG9yIDwgKGNoYXIgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlw
ZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
Y2hhcl90eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9y
ZSk7cmV0dXJuIGx0KCZmeHBUeXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25k
X3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5s
aW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIDwgKHNob3J0IHMpIGNvbnN0ICAgIHsg
ZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25k
X3N0b3JlKTtyZXR1cm4gbHQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBl
X19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQg
Tz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAoc2hvcnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4m
IHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhw
X19zZWNvbmRfc3RvcmUpO3JldHVybiBsdCgmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlLCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPCAoaW50IHMp
IGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxm
eHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuIGx0KCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9y
ZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRvciA8IChpbnQgcCwgY29uc3QgZnhwT3BlcjxD
TUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBl
LGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gbHQoJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmly
c3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA8IChsb25n
IHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5
cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBsdCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRf
c3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CnRlbXBsYXRlPFNv
bF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yIDwgKGxvbmcgcCwgY29uc3QgZnhw
T3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNv
bmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuIGx0KCZmeHBUeXBlX19sb25nX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxh
dGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9y
IDwgKHVuc2lnbmVkIGNoYXIgcykgY29uc3QgICAgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9s
MnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkp
O2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBsdCgmc2Vjb25k
X3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9z
dG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRvciA8
ICh1bnNpZ25lZCBjaGFyIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IGZ4cFR5cGUgc2Vj
b25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFy
X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTty
ZXR1cm4gbHQoJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25kX3R5
cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5l
IGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIDwgKHVuc2lnbmVkIHNob3J0IHMpIGNvbnN0
ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBf
X3NlY29uZF9zdG9yZSk7cmV0dXJuIGx0KCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwm
ZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRvciA8ICh1bnNpZ25lZCBzaG9ydCBwLCBjb25z
dCBmeHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcp
cCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtzLmNhbGNU
RCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBsdCgmZnhwVHlwZV9fdXNo
b3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUp
O30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46
Om9wZXJhdG9yIDwgKHVuc2lnbmVkIGludCBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vjb25kX3R5
cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53
aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gbHQo
JnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19m
aXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVy
YXRvciA8ICh1bnNpZ25lZCBpbnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlw
ZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
dWludF90eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9y
ZSk7cmV0dXJuIGx0KCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25k
X3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5s
aW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIDwgKHVuc2lnbmVkIGxvbmcgcykgY29u
c3QgICAgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhw
X19zZWNvbmRfc3RvcmUpO3JldHVybiBsdCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUs
JmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRvciA8ICh1bnNpZ25lZCBsb25nIHAsIGNvbnN0
IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylw
LGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQo
JnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gbHQoJmZ4cFR5cGVfX3Vsb25n
X3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30K
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9w
ZXJhdG9yIDwgKGZsb2F0IHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICBm
eHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX19sb25nX3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9z
dG9yZSk7cmV0dXJuIGx0KCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9f
bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
aW5saW5lIGJvb2wgb3BlcmF0b3IgPCAoZmxvYXQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMp
IHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMo
KGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5j
YWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gbHQoJmZ4cFR5cGVf
X2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9y
ZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxP
Pjo6b3BlcmF0b3IgPCAoZG91YmxlIHMpIGNvbnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05W
KTsgICBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3Nl
Y29uZF9zdG9yZSk7cmV0dXJuIGx0KCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhw
VHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxp
bnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAoZG91YmxlIHAsIGNvbnN0IGZ4cE9wZXI8Q01E
LE8+JiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgZnhwVHlwZSBzZWNvbmRfdHlwZTtz
b2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRo
KCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuIGx0KCZm
eHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNv
bmRfc3RvcmUpO30KCgoKdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gdGVtcGxhdGU8U29sX29w
IENNRDIsaW50IE8yPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPD0gKGNv
bnN0IGZ4cE9wZXI8Q01EMixPMj4mIHMpIGNvbnN0IHtmeHBUeXBlIG90O2Z4cFR5cGUgb3QyO2Nh
bGNURCgmb3QsZnhwX19maXJzdF9zdG9yZSk7cy5jYWxjVEQoJm90MixmeHBfX3NlY29uZF9zdG9y
ZSk7cmV0dXJuICFsdCgmb3QyLGZ4cF9fc2Vjb25kX3N0b3JlLCZvdCxmeHBfX2ZpcnN0X3N0b3Jl
KTt9Cgp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxP
Pjo6b3BlcmF0b3IgPD0gKGNvbnN0IGZ4cEFyZyYgcykgIGNvbnN0IHsgO2Z4cFR5cGUgb3Q7Y2Fs
Y1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTtyZXR1cm4gIWx0KHMuZF90eXBlLHMuZF9zdG9yZSwm
b3QsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
Ym9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPD0gKGJvb2wgcykgY29uc3QgICAgeyBmeHBU
eXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X19ib29sX3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9y
ZSk7cmV0dXJuICFsdCgmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29u
ZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlu
bGluZSBib29sIG9wZXJhdG9yIDw9IChib29sIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7
IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNv
bmRfc3RvcmUpO3JldHVybiAhbHQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBU
eXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGlu
dCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPD0gKGNoYXIgcykgY29u
c3QgICAgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBf
X3NlY29uZF9zdG9yZSk7cmV0dXJuICFsdCgmZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBD
TUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yIDw9IChjaGFyIHAsIGNvbnN0IGZ4cE9wZXI8
Q01ELE8+JiBzKSB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5
cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhbHQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25k
X3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPD0g
KHNob3J0IHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtjYWxjVEQoJnNl
Y29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWx0KCZmeHBUeXBlX19zaG9ydF90
eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRl
bXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yIDw9IChzaG9ydCBw
LCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMo
KGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO3Mu
Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuICFsdCgmc2Vjb25k
X3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9z
dG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENN
RCxPPjo6b3BlcmF0b3IgPD0gKGludCBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7
c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRo
KCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhbHQoJmZ4
cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25k
X3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9y
IDw9IChpbnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlw
ZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lk
dGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWx0
KCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19m
aXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBP
cGVyPENNRCxPPjo6b3BlcmF0b3IgPD0gKGxvbmcgcykgY29uc3QgICAgeyBmeHBUeXBlIHNlY29u
ZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5
cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJu
ICFsdCgmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4
cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29s
IG9wZXJhdG9yIDw9IChsb25nIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IGZ4cFR5cGUg
c2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xv
bmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUp
O3JldHVybiAhbHQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBlX19sb25n
X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxp
bmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPD0gKHVuc2lnbmVkIGNoYXIgcykgY29u
c3QgICAgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhw
X19zZWNvbmRfc3RvcmUpO3JldHVybiAhbHQoJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJz
dF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29w
IENNRCxpbnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKHVuc2lnbmVkIGNoYXIgcCwgY29u
c3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25n
KXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtzLmNhbGNU
RCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhbHQoJnNlY29uZF90eXBl
LGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBlX191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUp
O30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46
Om9wZXJhdG9yIDw9ICh1bnNpZ25lZCBzaG9ydCBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vjb25k
X3R5cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90
eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVy
biAhbHQoJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBl
LGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBi
b29sIG9wZXJhdG9yIDw9ICh1bnNpZ25lZCBzaG9ydCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYg
cykgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhw
X19zZWNvbmRfc3RvcmUpO3JldHVybiAhbHQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3Jl
LCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA8PSAodW5z
aWduZWQgaW50IHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25n
KXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO2NhbGNURCgm
c2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhbHQoJmZ4cFR5cGVfX3VpbnRf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlLCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7fQp0
ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAodW5zaWdu
ZWQgaW50IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7
c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0
aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhbHQo
JnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19m
aXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBP
cGVyPENNRCxPPjo6b3BlcmF0b3IgPD0gKHVuc2lnbmVkIGxvbmcgcykgY29uc3QgICAgeyBmeHBU
eXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X191bG9uZ190eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3Rv
cmUpO3JldHVybiAhbHQoJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vj
b25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
aW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKHVuc2lnbmVkIGxvbmcgcCwgY29uc3QgZnhwT3BlcjxD
TUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5
cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhbHQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25k
X3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KdGVtcGxhdGU8
U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yIDw9
IChmbG9hdCBzKSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgZnhwVHlwZSBz
ZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9u
Z190eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3Jl
dHVybiAhbHQoJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLCZzZWNvbmRfdHlw
ZSxmeHBfX3NlY29uZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciA8PSAoZmxvYXQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHtGeHBB
c3NlcnQoRlhQX19OT19DT05WKTsgICBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcp
cCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQo
JnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWx0KCZzZWNvbmRfdHlwZSxm
eHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30K
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9w
ZXJhdG9yIDw9IChkb3VibGUgcykgY29uc3QgICAge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAg
IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25k
X3N0b3JlKTtyZXR1cm4gIWx0KCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSwm
c2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQg
Tz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKGRvdWJsZSBwLCBjb25zdCBmeHBPcGVyPENNRCxP
PiYgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29s
X2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgp
KTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhbHQoJnNl
Y29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJz
dF9zdG9yZSk7fQoKCgp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiB0ZW1wbGF0ZTxTb2xfb3Ag
Q01EMixpbnQgTzI+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA9PSAoY29u
c3QgZnhwT3BlcjxDTUQyLE8yPiYgcykgY29uc3Qge2Z4cFR5cGUgb3Q7ZnhwVHlwZSBvdDI7Y2Fs
Y1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTtzLmNhbGNURCgmb3QyLGZ4cF9fc2Vjb25kX3N0b3Jl
KTtyZXR1cm4gZXEoJm90LGZ4cF9fZmlyc3Rfc3RvcmUsJm90MixmeHBfX3NlY29uZF9zdG9yZSk7
fQoKdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46
Om9wZXJhdG9yID09IChjb25zdCBmeHBBcmcmIHMpICBjb25zdCB7IDtmeHBUeXBlIG90O2NhbGNU
RCgmb3QsZnhwX19maXJzdF9zdG9yZSk7cmV0dXJuIGVxKCZvdCxmeHBfX2ZpcnN0X3N0b3JlLHMu
ZF90eXBlLHMuZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9v
bCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPT0gKGJvb2wgcykgY29uc3QgICAgeyBmeHBUeXBl
IHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19i
b29sX3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7
cmV0dXJuIGVxKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90
eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5l
IGJvb2wgb3BlcmF0b3IgPT0gKGJvb2wgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhw
VHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlw
ZV9fYm9vbF90eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9z
dG9yZSk7cmV0dXJuIGVxKCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vj
b25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
aW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yID09IChjaGFyIHMpIGNvbnN0ICAg
IHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNv
bmRfc3RvcmUpO3JldHVybiBlcSgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5
cGVfX2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50
IE8+IGlubGluZSBib29sIG9wZXJhdG9yID09IChjaGFyIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+
JiBzKSB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3Rv
cmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhw
X19zZWNvbmRfc3RvcmUpO3JldHVybiBlcSgmZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBD
TUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA9PSAoc2hvcnQg
cykgY29uc3QgICAgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2Zp
cnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5
cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBlcSgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRf
c3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoc2hvcnQgcCwgY29uc3Qg
ZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgm
c2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBlcSgmZnhwVHlwZV9fc2hvcnRf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlLCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7fQp0
ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3Bl
cmF0b3IgPT0gKGludCBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO2NhbGNU
RCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBlcSgmc2Vjb25kX3R5cGUs
ZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30K
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGludCBw
LCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMo
KGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtzLmNh
bGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBlcSgmZnhwVHlwZV9f
aW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUp
O30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46
Om9wZXJhdG9yID09IChsb25nIHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkp
O2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBlcSgmc2Vjb25k
X3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yID09
IChsb25nIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7
c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0
aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBlcSgm
ZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vj
b25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9w
ZXI8Q01ELE8+OjpvcGVyYXRvciA9PSAodW5zaWduZWQgY2hhciBzKSBjb25zdCAgICB7IGZ4cFR5
cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X3VjaGFyX3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9y
ZSk7cmV0dXJuIGVxKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fdWNo
YXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlu
bGluZSBib29sIG9wZXJhdG9yID09ICh1bnNpZ25lZCBjaGFyIHAsIGNvbnN0IGZ4cE9wZXI8Q01E
LE8+JiBzKSB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBl
LGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gZXEoJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19m
aXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29s
X29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yID09ICh1
bnNpZ25lZCBzaG9ydCBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2Nh
bGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBlcSgmc2Vjb25kX3R5
cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0g
KHVuc2lnbmVkIHNob3J0IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IGZ4cFR5cGUgc2Vj
b25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9y
dF90eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7
cmV0dXJuIGVxKCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLCZzZWNvbmRf
dHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxp
bmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPT0gKHVuc2lnbmVkIGludCBzKSBjb25z
dCAgICB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3Rv
cmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9f
c2Vjb25kX3N0b3JlKTtyZXR1cm4gZXEoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZm
eHBUeXBlX191aW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01E
LGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAodW5zaWduZWQgaW50IHAsIGNvbnN0IGZ4
cE9wZXI8Q01ELE8+JiBzKSB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4
cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vj
b25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBlcSgmZnhwVHlwZV9fdWludF90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRv
ciA9PSAodW5zaWduZWQgbG9uZyBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29s
X2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgo
KSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuIGVxKCZzZWNv
bmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9y
ID09ICh1bnNpZ25lZCBsb25nIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IGZ4cFR5cGUg
c2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vs
b25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3Jl
KTtyZXR1cm4gZXEoJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25k
X3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5s
aW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yID09IChmbG9hdCBzKSBjb25zdCAgICB7
RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2NhbGNU
RCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBlcSgmc2Vjb25kX3R5cGUs
ZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9
CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yID09IChmbG9h
dCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAg
IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNv
bmRfc3RvcmUpO3JldHVybiBlcSgmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUs
JnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50
IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA9PSAoZG91YmxlIHMpIGNv
bnN0ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICBmeHBUeXBlIHNlY29uZF90eXBlO3Nv
bF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgo
KSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuIGVxKCZzZWNv
bmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3Ig
PT0gKGRvdWJsZSBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykge0Z4cEFzc2VydChGWFBfX05P
X0NPTlYpOyAgIGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUs
ZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBlcSgmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmly
c3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CgoKCnRlbXBsYXRlPFNv
bF9vcCBDTUQsaW50IE8+IHRlbXBsYXRlPFNvbF9vcCBDTUQyLGludCBPMj4gaW5saW5lIGJvb2wg
ZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICE9IChjb25zdCBmeHBPcGVyPENNRDIsTzI+JiBzKSBj
b25zdCB7ZnhwVHlwZSBvdDtmeHBUeXBlIG90MjtjYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUp
O3MuY2FsY1REKCZvdDIsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhZXEoJm90LGZ4cF9fZmly
c3Rfc3RvcmUsJm90MixmeHBfX3NlY29uZF9zdG9yZSk7fQoKdGVtcGxhdGU8U29sX29wIENNRCxp
bnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICE9IChjb25zdCBmeHBB
cmcmIHMpICBjb25zdCB7IDtmeHBUeXBlIG90O2NhbGNURCgmb3QsZnhwX19maXJzdF9zdG9yZSk7
cmV0dXJuICFlcSgmb3QsZnhwX19maXJzdF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpO30KdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJh
dG9yICE9IChib29sIHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2NhbGNU
RCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhZXEoJnNlY29uZF90eXBl
LGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7
fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoYm9v
bCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9s
MnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7
cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWVxKCZmeHBU
eXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRf
c3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxD
TUQsTz46Om9wZXJhdG9yICE9IChjaGFyIHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlw
ZTtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndp
ZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhZXEo
JnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsZnhwX19m
aXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVy
YXRvciAhPSAoY2hhciBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBlIHNlY29u
ZF90eXBlO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5
cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1
cm4gIWVxKCZmeHBUeXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUs
ZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJv
b2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICE9IChzaG9ydCBzKSBjb25zdCAgICB7IGZ4cFR5
cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X3Nob3J0X3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9y
ZSk7cmV0dXJuICFlcSgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX3No
b3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBp
bmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoc2hvcnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMp
IHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19z
ZWNvbmRfc3RvcmUpO3JldHVybiAhZXEoJmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9z
dG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENN
RCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICE9IChpbnQgcykg
Y29uc3QgICAgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0
X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4
cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWVxKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9y
ZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoaW50IHAsIGNvbnN0IGZ4cE9wZXI8
Q01ELE8+JiBzKSB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlw
ZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuICFlcSgmZnhwVHlwZV9faW50X3R5cGUsZnhwX19m
aXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29s
X29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICE9IChs
b25nIHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vjb25k
X3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhZXEoJnNlY29uZF90eXBlLGZ4cF9fc2Vj
b25kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0
ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAobG9uZyBwLCBjb25z
dCBmeHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcp
cCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQo
JnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWVxKCZmeHBUeXBlX19sb25n
X3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30K
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9w
ZXJhdG9yICE9ICh1bnNpZ25lZCBjaGFyIHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlw
ZTtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53
aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWVx
KCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9w
ZXJhdG9yICE9ICh1bnNpZ25lZCBjaGFyIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IGZ4
cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5
cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25k
X3N0b3JlKTtyZXR1cm4gIWVxKCZmeHBUeXBlX191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUs
JnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50
IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAhPSAodW5zaWduZWQgc2hv
cnQgcykgY29uc3QgICAgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtjYWxjVEQoJnNlY29u
ZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWVxKCZzZWNvbmRfdHlwZSxmeHBfX3Nl
Y29uZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1w
bGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAodW5zaWduZWQg
c2hvcnQgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtz
b2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lk
dGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWVx
KCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLCZzZWNvbmRfdHlwZSxmeHBf
X3NlY29uZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBm
eHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgIT0gKHVuc2lnbmVkIGludCBzKSBjb25zdCAgICB7IGZ4
cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5
cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0
b3JlKTtyZXR1cm4gIWVxKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9f
dWludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4g
aW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKHVuc2lnbmVkIGludCBwLCBjb25zdCBmeHBPcGVyPENN
RCxPPiYgcykgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0
X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBl
LGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWVxKCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19m
aXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29s
X29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yICE9ICh1
bnNpZ25lZCBsb25nIHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtjYWxj
VEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWVxKCZzZWNvbmRfdHlw
ZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3Jl
KTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yICE9ICh1
bnNpZ25lZCBsb25nIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IGZ4cFR5cGUgc2Vjb25k
X3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5
cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1
cm4gIWVxKCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBl
LGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBi
b29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAhPSAoZmxvYXQgcykgY29uc3QgICAge0Z4cEFz
c2VydChGWFBfX05PX0NPTlYpOyAgIGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylz
LGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQoJnNl
Y29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWVxKCZzZWNvbmRfdHlwZSxmeHBf
X3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KdGVt
cGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGZsb2F0IHAs
IGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgZnhw
VHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlw
ZV9fbG9uZ190eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9z
dG9yZSk7cmV0dXJuICFlcSgmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNl
Y29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+
IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciAhPSAoZG91YmxlIHMpIGNvbnN0
ICAgIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9s
MnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7
Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuICFlcSgmc2Vjb25k
X3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yICE9
IChkb3VibGUgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHtGeHBBc3NlcnQoRlhQX19OT19D
T05WKTsgICBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4
cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWVxKCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJz
dF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KCgoKdGVtcGxhdGU8U29s
X29wIENNRCxpbnQgTz4gdGVtcGxhdGU8U29sX29wIENNRDIsaW50IE8yPiBpbmxpbmUgYm9vbCBm
eHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPiAoY29uc3QgZnhwT3BlcjxDTUQyLE8yPiYgcykgY29u
c3Qge2Z4cFR5cGUgb3Q7ZnhwVHlwZSBvdDI7Y2FsY1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTtz
LmNhbGNURCgmb3QyLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gbHQoJm90MixmeHBfX3NlY29u
ZF9zdG9yZSwmb3QsZnhwX19maXJzdF9zdG9yZSk7fQoKdGVtcGxhdGU8U29sX29wIENNRCxpbnQg
Tz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yID4gKGNvbnN0IGZ4cEFyZyYg
cykgIGNvbnN0IHsgO2Z4cFR5cGUgb3Q7Y2FsY1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTtyZXR1
cm4gbHQocy5kX3R5cGUscy5kX3N0b3JlLCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTt9CnRlbXBsYXRl
PFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA+
IChib29sIHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vj
b25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBsdCgmZnhwVHlwZV9fYm9vbF90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yID4gKGJvb2wgcCwgY29u
c3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25n
KXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO3MuY2FsY1RE
KCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuIGx0KCZzZWNvbmRfdHlwZSxm
eHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30K
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgZnhwT3BlcjxDTUQsTz46Om9w
ZXJhdG9yID4gKGNoYXIgcykgY29uc3QgICAgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7Y2Fs
Y1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuIGx0KCZmeHBUeXBlX19j
aGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUp
O30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAoY2hh
ciBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9s
MnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7
cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gbHQoJnNlY29u
ZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9z
dG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENN
RCxPPjo6b3BlcmF0b3IgPiAoc2hvcnQgcykgY29uc3QgICAgeyBmeHBUeXBlIHNlY29uZF90eXBl
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndp
ZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBsdCgm
ZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLCZzZWNvbmRfdHlwZSxmeHBfX3Nl
Y29uZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVy
YXRvciA+IChzaG9ydCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBlIHNlY29u
ZF90eXBlO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90
eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0
dXJuIGx0KCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlw
ZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBi
b29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA+IChpbnQgcykgY29uc3QgICAgeyBmeHBUeXBl
IHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19p
bnRfdHlwZS53aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTty
ZXR1cm4gbHQoJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBl
LGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBi
b29sIG9wZXJhdG9yID4gKGludCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBl
IHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19p
bnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUp
O3JldHVybiBsdCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90
eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5l
IGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yID4gKGxvbmcgcykgY29uc3QgICAgeyBmeHBU
eXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X19sb25nX3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9y
ZSk7cmV0dXJuIGx0KCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25k
X3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5s
aW5lIGJvb2wgb3BlcmF0b3IgPiAobG9uZyBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyBm
eHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25k
X3N0b3JlKTtyZXR1cm4gbHQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBl
X19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBP
PiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPiAodW5zaWduZWQgY2hhciBz
KSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlw
ZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuIGx0KCZmeHBUeXBlX191Y2hhcl90eXBlLGZ4cF9f
Zmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNv
bF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yID4gKHVuc2lnbmVkIGNoYXIgcCwg
Y29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChs
b25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtzLmNh
bGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBsdCgmc2Vjb25kX3R5
cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9y
ZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxP
Pjo6b3BlcmF0b3IgPiAodW5zaWduZWQgc2hvcnQgcykgY29uc3QgICAgeyBmeHBUeXBlIHNlY29u
ZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRf
dHlwZS53aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1
cm4gbHQoJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBl
LGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBi
b29sIG9wZXJhdG9yID4gKHVuc2lnbmVkIHNob3J0IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBz
KSB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBf
X3NlY29uZF9zdG9yZSk7cmV0dXJuIGx0KCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwm
ZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPiAodW5zaWdu
ZWQgaW50IHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vj
b25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBsdCgmZnhwVHlwZV9fdWludF90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yID4gKHVuc2lnbmVkIGlu
dCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9s
MnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7
cy5jYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gbHQoJnNlY29u
ZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19maXJzdF9z
dG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENN
RCxPPjo6b3BlcmF0b3IgPiAodW5zaWduZWQgbG9uZyBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vj
b25kX3R5cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25n
X3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0
dXJuIGx0KCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBl
LGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBi
b29sIG9wZXJhdG9yID4gKHVuc2lnbmVkIGxvbmcgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMp
IHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19z
ZWNvbmRfc3RvcmUpO3JldHVybiBsdCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4
cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01E
LGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPiAoZmxvYXQgcykg
Y29uc3QgICAge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIGZ4cFR5cGUgc2Vjb25kX3R5cGU7
c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0
aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gbHQoJmZ4
cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLCZzZWNvbmRfdHlwZSxmeHBfX3NlY29u
ZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciA+IChmbG9hdCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykge0Z4cEFzc2VydChGWFBfX05P
X0NPTlYpOyAgIGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUs
ZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiBsdCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3Rv
cmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA+IChkb3Vi
bGUgcykgY29uc3QgICAge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIGZ4cFR5cGUgc2Vjb25k
X3R5cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlw
ZS53aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4g
bHQoJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLCZzZWNvbmRfdHlwZSxmeHBf
X3NlY29uZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBv
cGVyYXRvciA+IChkb3VibGUgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHtGeHBBc3NlcnQo
RlhQX19OT19DT05WKTsgICBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcCxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29u
ZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gbHQoJnNlY29uZF90eXBlLGZ4cF9fc2Vj
b25kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSk7fQoKCgp0ZW1w
bGF0ZTxTb2xfb3AgQ01ELGludCBPPiB0ZW1wbGF0ZTxTb2xfb3AgQ01EMixpbnQgTzI+IGlubGlu
ZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA+PSAoY29uc3QgZnhwT3BlcjxDTUQyLE8y
PiYgcykgY29uc3Qge2Z4cFR5cGUgb3Q7ZnhwVHlwZSBvdDI7Y2FsY1REKCZvdCxmeHBfX2ZpcnN0
X3N0b3JlKTtzLmNhbGNURCgmb3QyLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWx0KCZvdCxm
eHBfX2ZpcnN0X3N0b3JlLCZvdDIsZnhwX19zZWNvbmRfc3RvcmUpO30KCnRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA+PSAoY29u
c3QgZnhwQXJnJiBzKSAgY29uc3QgeyA7ZnhwVHlwZSBvdDtjYWxjVEQoJm90LGZ4cF9fZmlyc3Rf
c3RvcmUpO3JldHVybiAhbHQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUscy5kX3R5cGUscy5kX3N0b3Jl
KTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+
OjpvcGVyYXRvciA+PSAoYm9vbCBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29s
X2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgp
KTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWx0KCZzZWNv
bmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3Ig
Pj0gKGJvb2wgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlw
ZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndp
ZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuICFs
dCgmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9f
c2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4
cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA+PSAoY2hhciBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vj
b25kX3R5cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJf
dHlwZS53aWR0aCgpKTtjYWxjVEQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1
cm4gIWx0KCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fY2hhcl90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJv
b2wgb3BlcmF0b3IgPj0gKGNoYXIgcCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlw
ZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
Y2hhcl90eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9y
ZSk7cmV0dXJuICFsdCgmZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29u
ZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlu
bGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA+PSAoc2hvcnQgcykgY29uc3QgICAg
eyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBm
eHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNv
bmRfc3RvcmUpO3JldHVybiAhbHQoJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBU
eXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxp
bnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKHNob3J0IHAsIGNvbnN0IGZ4cE9wZXI8Q01E
LE8+JiBzKSB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7cy5jYWxjVEQoJnNlY29uZF90eXBl
LGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWx0KCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9f
Zmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBsYXRlPFNv
bF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRvciA+PSAo
aW50IHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXMsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRf
dHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuICFsdCgmc2Vjb25kX3R5cGUsZnhwX19zZWNv
bmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30KdGVtcGxhdGU8
U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKGludCBwLCBjb25zdCBm
eHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcCxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vj
b25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhbHQoJmZ4cFR5cGVfX2ludF90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRv
ciA+PSAobG9uZyBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9u
ZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtjYWxjVEQo
JnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTtyZXR1cm4gIWx0KCZzZWNvbmRfdHlwZSxm
eHBfX3NlY29uZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpO30K
dGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKGxvbmcg
cCwgY29uc3QgZnhwT3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJz
KChsb25nKXAsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3Mu
Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuICFsdCgmZnhwVHlw
ZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0
b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01E
LE8+OjpvcGVyYXRvciA+PSAodW5zaWduZWQgY2hhciBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vj
b25kX3R5cGU7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFy
X3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0
dXJuICFsdCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5
cGUsZnhwX19maXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciA+PSAodW5zaWduZWQgY2hhciBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYg
cykgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBf
X3NlY29uZF9zdG9yZSk7cmV0dXJuICFsdCgmZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlLCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPj0gKHVuc2ln
bmVkIHNob3J0IHMpIGNvbnN0ICAgIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25n
KXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7Y2FsY1RE
KCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuICFsdCgmc2Vjb25kX3R5cGUs
ZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUp
O30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKHVu
c2lnbmVkIHNob3J0IHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7IGZ4cFR5cGUgc2Vjb25k
X3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90
eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0
dXJuICFsdCgmZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSwmc2Vjb25kX3R5
cGUsZnhwX19zZWNvbmRfc3RvcmUpO30KdGVtcGxhdGU8U29sX29wIENNRCxpbnQgTz4gaW5saW5l
IGJvb2wgZnhwT3BlcjxDTUQsTz46Om9wZXJhdG9yID49ICh1bnNpZ25lZCBpbnQgcykgY29uc3Qg
ICAgeyBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3Nl
Y29uZF9zdG9yZSk7cmV0dXJuICFsdCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4
cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQs
aW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yID49ICh1bnNpZ25lZCBpbnQgcCwgY29uc3QgZnhw
T3BlcjxDTUQsTz4mIHMpIHsgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNv
bmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuICFsdCgmZnhwVHlwZV9fdWludF90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CnRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIGZ4cE9wZXI8Q01ELE8+OjpvcGVyYXRv
ciA+PSAodW5zaWduZWQgbG9uZyBzKSBjb25zdCAgICB7IGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29s
X2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgo
KSk7Y2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuICFsdCgmc2Vj
b25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJz
dF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciA+PSAodW5zaWduZWQgbG9uZyBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykgeyBmeHBUeXBl
IHNlY29uZF90eXBlO3NvbF9sMnMoKGxvbmcpcCxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191
bG9uZ190eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9y
ZSk7cmV0dXJuICFsdCgmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlLCZzZWNv
bmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBp
bmxpbmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPj0gKGZsb2F0IHMpIGNvbnN0ICAg
IHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICBmeHBUeXBlIHNlY29uZF90eXBlO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7Y2Fs
Y1REKCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuICFsdCgmc2Vjb25kX3R5
cGUsZnhwX19zZWNvbmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3Jl
KTt9CnRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE8+IGlubGluZSBib29sIG9wZXJhdG9yID49IChm
bG9hdCBwLCBjb25zdCBmeHBPcGVyPENNRCxPPiYgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYp
OyAgIGZ4cFR5cGUgc2Vjb25kX3R5cGU7c29sX2wycygobG9uZylwLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtzLmNhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19z
ZWNvbmRfc3RvcmUpO3JldHVybiAhbHQoJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlLCZzZWNvbmRfdHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01E
LGludCBPPiBpbmxpbmUgYm9vbCBmeHBPcGVyPENNRCxPPjo6b3BlcmF0b3IgPj0gKGRvdWJsZSBz
KSBjb25zdCAgICB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgZnhwVHlwZSBzZWNvbmRfdHlw
ZTtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndp
ZHRoKCkpO2NhbGNURCgmc2Vjb25kX3R5cGUsZnhwX19zZWNvbmRfc3RvcmUpO3JldHVybiAhbHQo
JnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19m
aXJzdF9zdG9yZSk7fQp0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPPiBpbmxpbmUgYm9vbCBvcGVy
YXRvciA+PSAoZG91YmxlIHAsIGNvbnN0IGZ4cE9wZXI8Q01ELE8+JiBzKSB7RnhwQXNzZXJ0KEZY
UF9fTk9fQ09OVik7ICAgZnhwVHlwZSBzZWNvbmRfdHlwZTtzb2xfbDJzKChsb25nKXAsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO3MuY2FsY1REKCZzZWNvbmRf
dHlwZSxmeHBfX3NlY29uZF9zdG9yZSk7cmV0dXJuICFsdCgmZnhwVHlwZV9fbG9uZ190eXBlLGZ4
cF9fZmlyc3Rfc3RvcmUsJnNlY29uZF90eXBlLGZ4cF9fc2Vjb25kX3N0b3JlKTt9CgoKCiAKIAog
CiAKIAoKdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+Ojpv
cGVyYXRvciA9IChjb25zdCBGaXg8VyxQPiYgbykgewogICAgICAgCiAgICAgIHRoaXMtPmRfc3Rb
MF0gPSBvLmRfc3RbMF07CiAgICAgIGlmIChXPjE2KSB7CiAgICAgICAgIHRoaXMtPmRfc3RbMV0g
PSBvLmRfc3RbMV07CiAgICAgICAgIGlmIChXPjMyKSB7CiAgICAgICAgICAgIGludCBzaXplID0g
KFctMSkvMTYgKzE7CiAgICAgICAgICAgIGZvciAoaW50IGk9MjtpPHNpemU7aSsrKSB7dGhpcy0+
ZF9zdFtpXSA9IG8uZF9zdFtpXTt9CiAgICAgICAgIH0KICAgICAgfSAKICAgICAgdGhpcy0+d3Jp
dGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAKICAgICAgcmV0dXJuICp0aGlzO30KCiAgICAK
dGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRv
ciA9IChjb25zdCBjaGFyKiBzdHIpICAge2Z4cE9xU3RhdCAgc3RhdCA9ICAgdGhpcy0+ZF90eXBl
LT5wYXJzZShzdHIsdGhpcy0+ZF9zdCk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRo
aXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBmeHBSZXNCIEZpeDxXLFA+OjpiaXQo
aW50IGZyb20pICAgICAgICAgICAgICAgICAgICB7ICByZXR1cm4gZnhwUmVzQih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCxmcm9tKTt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIGZ4cFJl
cyAgRml4PFcsUD46OnNsaWNlKGludCBmcm9tLCBpbnQgdG8pICAgICAgICAgIHsgIHJldHVybiBm
eHBSZXModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QsZnJvbSx0byk7fQp0ZW1wbGF0ZTxpbnQgVywg
aW50IFA+IGlubGluZSBmeHBSZXMgIEZpeDxXLFA+OjpyYW5nZShpbnQgZnJvbSwgaW50IHRvKSAg
ICAgICAgICB7ICByZXR1cm4gZnhwUmVzKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0LGZyb20sdG8p
O30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgZnhwUmVzICBGaXg8VyxQPjo6cmFuZ2Uo
KSAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgcmV0dXJuIGZ4cFJlcyh0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdCxXLTEsMCk7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBjb25zdCBm
eHBSZXNCIEZpeDxXLFA+OjpiaXQoaW50IGZyb20pICAgICAgICAgICAgIGNvbnN0IHsgIHJldHVy
biBmeHBSZXNCKHRoaXMtPmRfdHlwZSxjb25zdF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4odGhpcy0+
ZF9zdCksZnJvbSk7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBjb25zdCBmeHBSZXMg
IEZpeDxXLFA+OjpzbGljZShpbnQgZnJvbSwgaW50IHRvKSAgIGNvbnN0IHsgIHJldHVybiBmeHBS
ZXModGhpcy0+ZF90eXBlLGNvbnN0X2Nhc3Q8dW5zaWduZWQgc2hvcnQqPih0aGlzLT5kX3N0KSxm
cm9tLHRvKTt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIGNvbnN0IGZ4cFJlcyAgRml4
PFcsUD46OnJhbmdlKGludCBmcm9tLCBpbnQgdG8pICAgY29uc3QgeyAgcmV0dXJuIGZ4cFJlcyh0
aGlzLT5kX3R5cGUsY29uc3RfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHRoaXMtPmRfc3QpLGZyb20s
dG8pO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgY29uc3QgZnhwUmVzICBGaXg8VyxQ
Pjo6cmFuZ2UoKSAgICAgICAgICAgICAgICAgICBjb25zdCB7ICByZXR1cm4gZnhwUmVzKHRoaXMt
PmRfdHlwZSxjb25zdF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4odGhpcy0+ZF9zdCksVy0xLDApO30K
dGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpzbGljZShp
bnQgZnJvbSwgaW50IHRvLCBjb25zdCBmeHBBcmcgc2VjKSB7CiAgICAgICAgICAgIGZ4cFJlcyh0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCxmcm9tLHRvKSA9IHNlYztyZXR1cm4gKnRoaXM7CiAgICAg
ICAgICAgIH0KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+
OjpvcGVyYXRvciA9IChjb25zdCBmeHBSZXNCJiBjbWQpIHsKICAgICAgICAgICAgICBGaXg8VyxQ
Pjo6YXNzaWduKCh1bnNpZ25lZCBsb25nKWJvb2woY21kKSk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6
ZW1wdHlEZXRlY3QoKSApOyAKICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxp
bnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yID0gKGNvbnN0
IGZ4cFJlcyYgY21kKSB7CiAgICAgICAgICAgICAgZnhwT3FTdGF0ICBzdGF0ID0gICBnZXRTbGlj
ZShjbWQuZnJvbV9wb3MoKSxjbWQudG9fcG9zKCksdGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QsY21k
LnR5cGUoKSxjbWQuc3RvcmUoKSk7dGhpcy0+d3JpdGUoICZzdGF0ICk7IAogICAgICAgICAgICAg
IHJldHVybiAqdGhpczt9Cgp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYg
Rml4PFcsUD46Om9wZXJhdG9yICs9IChjb25zdCBGaXg8VyxQPiYgbykgewogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgIGZ4cE9xU3RhdCAgc3RhdCA9ICAgYWRkKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0LHRoaXMtPmRfc3Qsby5kX3N0KTsKICAgICAgICAgICAgICB0aGlzLT53cml0ZSgg
JnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZp
eDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgLT0gKGNvbnN0IEZpeDxXLFA+JiBvKSB7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgZnhwT3FTdGF0ICBzdGF0ID0gICBzdWIodGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QsdGhpcy0+ZF9zdCxvLmRfc3QpOwogICAgICAgICAgICAgIHRoaXMt
PndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBp
bmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAqPSAoY29uc3QgRml4PFcsUD4mIG8p
IHsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICBmeHBPcVN0YXQgIHN0YXQgPSAgIG11
bHQodGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QsdGhpcy0+ZF9zdCxvLmRfc3QpOwogICAgICAgICAg
ICAgIHRoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KCnRlbXBsYXRlPGludCBX
LCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgPSAoY29uc3QgZnhw
QXJnJiAgcykgeyA7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUk9VTkQsMD4ocy5kX3R5
cGUscy5kX3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUo
ICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IHRl
bXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3Bl
cmF0b3IgPSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcykge2Z4cE9xU3RhdCAgc3RhdD0gIHMu
Y2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0
dXJuICp0aGlzO30KCgp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4
PFcsUD46Om9wZXJhdG9yID0gKGJvb2wgcykgICAge0ZpeDxXLFA+Ojphc3NpZ24oKHVuc2lnbmVk
IGxvbmcpcyk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+Ojpv
cGVyYXRvciA9IChjaGFyIHMpICAgIHtGaXg8VyxQPjo6YXNzaWduKChsb25nKXMpO3RoaXMtPndy
aXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGlu
dCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgPSAoc2hvcnQg
cykgICAge0ZpeDxXLFA+Ojphc3NpZ24oKGxvbmcpcyk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1w
dHlEZXRlY3QoKSApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciA9IChpbnQgcykgICAge0ZpeDxXLFA+Ojph
c3NpZ24oKGxvbmcpcyk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAgcmV0
dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxX
LFA+OjpvcGVyYXRvciA9IChsb25nIHMpICAgIHtGaXg8VyxQPjo6YXNzaWduKChsb25nKXMpO3Ro
aXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVybiAqdGhpczt9CnRlbXBs
YXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgPSAo
dW5zaWduZWQgY2hhciBzKSAgICB7Rml4PFcsUD46OmFzc2lnbigodW5zaWduZWQgbG9uZylzKTt0
aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1w
bGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yID0g
KHVuc2lnbmVkIHNob3J0IHMpICAgIHtGaXg8VyxQPjo6YXNzaWduKCh1bnNpZ25lZCBsb25nKXMp
O3RoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3Ig
PSAodW5zaWduZWQgaW50IHMpICAgIHtGaXg8VyxQPjo6YXNzaWduKCh1bnNpZ25lZCBsb25nKXMp
O3RoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3Ig
PSAodW5zaWduZWQgbG9uZyBzKSAgICB7Rml4PFcsUD46OmFzc2lnbigodW5zaWduZWQgbG9uZylz
KTt0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9y
ID0gKGZsb2F0IHMpICAgIHtGaXg8VyxQPjo6YXNzaWduKChkb3VibGUpcyk7dGhpcy0+d3JpdGUo
IGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcs
IGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciA9IChkb3VibGUgcykg
ICAge0ZpeDxXLFA+Ojphc3NpZ24oKGRvdWJsZSlzKTt0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0
eURldGVjdCgpICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGlu
ZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICs9IChjb25zdCBmeHBBcmcmICBzKSB7IDsg
O2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FERCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Qg
KTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBp
bnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgKz0gKGJvb2wgcykgeyAg
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19ib29sX3R5cGUud2lk
dGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+Ojpv
cGVyYXRvciArPSAoY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGlu
ZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICs9IChzaG9ydCBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3Ig
Kz0gKGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X2ludF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FERCwwPih0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9z
dG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCAp
OyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4m
IEZpeDxXLFA+OjpvcGVyYXRvciArPSAobG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9f
Zmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVf
X2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywg
aW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICs9ICh1bnNpZ25lZCBj
aGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNo
YXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BREQsMD4odGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9z
dG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCAp
OyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4m
IEZpeDxXLFA+OjpvcGVyYXRvciArPSAodW5zaWduZWQgc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxv
bmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtmeHBP
cVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3Ig
Kz0gKHVuc2lnbmVkIGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGlu
ZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICs9ICh1bnNpZ25lZCBsb25nIHMpIHsgIDtz
b2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0
aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+Ojpv
cGVyYXRvciArPSAoZmxvYXQgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJz
KChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4
cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FERCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3Ig
Kz0gKGRvdWJsZSBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0
ICBzdGF0PSAgZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZm
eHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8
aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAtPSAoY29u
c3QgZnhwQXJnJiAgcykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9TVUIsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKS5jYWxjKHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7
fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJh
dG9yIC09IChib29sIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NV
QiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9f
Zmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSgg
JnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZp
eDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgLT0gKGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0
ICBzdGF0PSAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZm
eHBUeXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8
aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAtPSAoc2hv
cnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9y
dF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiwwPih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYg
Rml4PFcsUD46Om9wZXJhdG9yIC09IChpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2Zp
cnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBm
eHBPcGVyPFNPTF9TVUIsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2lu
dF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0
aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQg
UD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgLT0gKGxvbmcgcykgeyAgO3Nv
bF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgo
KSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlz
O30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVy
YXRvciAtPSAodW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhw
T3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191Y2hh
cl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0
aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQg
UD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgLT0gKHVuc2lnbmVkIHNob3J0
IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0
X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYg
Rml4PFcsUD46Om9wZXJhdG9yIC09ICh1bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0
ICBzdGF0PSAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZm
eHBUeXBlX191aW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8
aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAtPSAodW5z
aWduZWQgbG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5
cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfU1VC
LDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9f
Zmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSgg
JnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZp
eDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgLT0gKGZsb2F0IHMpIHtGeHBBc3NlcnQoRlhQX19O
T19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xv
bmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9TVUIsMD4odGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYg
Rml4PFcsUD46Om9wZXJhdG9yIC09IChkb3VibGUgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYp
OyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBl
LndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNh
bGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVy
biAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQ
Pjo6b3BlcmF0b3IgKj0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsgOyA7ZnhwT3FTdGF0ICBzdGF0PSAg
ZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSxzLmRfdHlwZSxz
LmRfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0
YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxX
LFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgKj0gKGJvb2wgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBz
dGF0PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhw
VHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGlu
dCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgKj0gKGNoYXIg
cykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5
cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUp
LmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJl
dHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8
VyxQPjo6b3BlcmF0b3IgKj0gKHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBm
eHBPcGVyPFNPTF9NVUxULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19z
aG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Qg
KTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBp
bnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgKj0gKGludCBzKSB7ICA7
c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRo
KCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX01VTFQsMD4odGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3Bl
cmF0b3IgKj0gKGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBm
eHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xf
TVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4
cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0
ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5l
IEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgKj0gKHVuc2lnbmVkIGNoYXIgcykgeyAgO3Nv
bF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRo
KCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX01VTFQsMD4odGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+Ojpv
cGVyYXRvciAqPSAodW5zaWduZWQgc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2Zp
cnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9NVUxULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBl
X191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQg
VywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICo9ICh1bnNpZ25l
ZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191
aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+
JiBGaXg8VyxQPjo6b3BlcmF0b3IgKj0gKHVuc2lnbmVkIGxvbmcgcykgeyAgO3NvbF9sMnMoKGxv
bmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2Z4cE9x
U3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX01VTFQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVt
cGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAq
PSAoZmxvYXQgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAg
c3RhdD0gIGZ4cE9wZXI8U09MX01VTFQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4
cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxp
bnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICo9IChkb3Vi
bGUgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX01VTFQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVf
X2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywg
aW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIDw8PSAoY29uc3QgZnhw
QXJnJiAgcykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKS5jYWxjKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9y
IDw8PSAoYm9vbCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5
cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJ
RlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2Jvb2xfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUo
ICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBG
aXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIDw8PSAoY2hhciBzKSB7ICA7c29sX2wycygobG9u
ZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0
YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsJmZ4cFR5cGVfX2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1w
bGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIDw8
PSAoc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X19zaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0xTSElG
VCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUo
ICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBG
aXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIDw8PSAoaW50IHMpIHsgIDtzb2xfbDJzKChsb25n
KXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0
ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3Jl
LCZmeHBUeXBlX19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0
ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIDw8PSAo
bG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xv
bmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQ
PiYgRml4PFcsUD46Om9wZXJhdG9yIDw8PSAodW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0b3JlLCZmeHBUeXBlX191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9
CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0
b3IgPDw9ICh1bnNpZ25lZCBzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4
cE9wZXI8U09MX0xTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9f
dXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcs
IGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciA8PD0gKHVuc2lnbmVk
IGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vp
bnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQ
PiYgRml4PFcsUD46Om9wZXJhdG9yIDw8PSAodW5zaWduZWQgbG9uZyBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9
CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0
b3IgPDw9IChmbG9hdCBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxv
bmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FT
dGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVt
cGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciA8
PD0gKGRvdWJsZSBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0
ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3Jl
LCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxh
dGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciA+Pj0g
KGNvbnN0IGZ4cEFyZyYgIHMpIHsgOyA7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUlNI
SUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSkuY2Fs
Yyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJu
ICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+
OjpvcGVyYXRvciA+Pj0gKGJvb2wgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3Bl
cjxTT0xfUlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29s
X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3Ro
aXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQ
PiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciA+Pj0gKGNoYXIgcykgeyAgO3Nv
bF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgo
KSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUlNISUZULDA+KHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+Ojpv
cGVyYXRvciA+Pj0gKHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVy
PFNPTF9SU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Nob3J0
X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3Ro
aXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQ
PiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciA+Pj0gKGludCBzKSB7ICA7c29s
X2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkp
O2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlz
O30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVy
YXRvciA+Pj0gKGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBm
eHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xf
UlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciA+Pj0gKHVuc2lnbmVkIGNoYXIgcykgeyAg
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndp
ZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcs
UD46Om9wZXJhdG9yID4+PSAodW5zaWduZWQgc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQg
IHN0YXQ9ICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUs
JmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBs
YXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgPj49
ICh1bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBm
eHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xf
UlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191aW50X3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciA+Pj0gKHVuc2lnbmVkIGxvbmcgcykgeyAg
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191bG9uZ190eXBlLndp
ZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcs
UD46Om9wZXJhdG9yID4+PSAoZmxvYXQgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtz
b2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRo
KCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGMo
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAq
dGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6
b3BlcmF0b3IgPj49IChkb3VibGUgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkp
O2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3Bl
cmF0b3IgLz0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsgOyA7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3Bl
cjxTT0xfRElWLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9y
ZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAg
cmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZp
eDxXLFA+OjpvcGVyYXRvciAvPSAoYm9vbCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBm
eHBPcGVyPFNPTF9ESVYsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2Jv
b2xfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7
dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50
IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIC89IChjaGFyIHMpIHsgIDtz
b2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRo
KCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3Bl
cmF0b3IgLz0gKHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9ESVYsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAvPSAoaW50IHMpIHsgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7ZnhwT3FT
dGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfRElWLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3Jl
LCZmeHBUeXBlX19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0
ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIC89IChs
b25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9u
Z190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0RJViwwPih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBG
aXg8VyxQPjo6b3BlcmF0b3IgLz0gKHVuc2lnbmVkIGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3Rh
dCAgc3RhdD0gIGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwm
ZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0
ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIC89ICh1
bnNpZ25lZCBzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09M
X0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAvPSAodW5zaWduZWQgaW50IHMpIHsgIDtz
b2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRo
KCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3Bl
cmF0b3IgLz0gKHVuc2lnbmVkIGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0
X3N0b3JlLCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4
cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWxv
bmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7
dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50
IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIC89IChmbG9hdCBzKSB7Rnhw
QXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfRElWLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAvPSAoZG91YmxlIHMpIHtGeHBBc3NlcnQo
RlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5
cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9ESVYs
MD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2Zp
cnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZz
dGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8
VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICU9IChjb25zdCBmeHBBcmcmICBzKSB7IDsgO2Z4cE9x
U3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JFTSwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSxzLmRfdHlwZSxzLmRfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlz
LT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4g
aW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgJT0gKGJvb2wgcykgeyAgO3NvbF9s
MnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7
ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30K
dGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRv
ciAlPSAoY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5
cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SRU0s
MD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlwZSxmeHBfX2Zp
cnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZz
dGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8
VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICU9IChzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylz
LGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0
ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZm
eHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRl
PGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgJT0gKGlu
dCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90
eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JFTSwwPih0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSku
Y2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0
dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxX
LFA+OjpvcGVyYXRvciAlPSAobG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBP
cGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhp
cy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+
IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICU9ICh1bnNpZ25lZCBjaGFyIHMp
IHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlw
ZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSku
Y2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0
dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxX
LFA+OjpvcGVyYXRvciAlPSAodW5zaWduZWQgc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQg
IHN0YXQ9ICBmeHBPcGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4
cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRl
PGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgJT0gKHVu
c2lnbmVkIGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5
cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SRU0s
MD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2Zp
cnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZz
dGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8
VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICU9ICh1bnNpZ25lZCBsb25nIHMpIHsgIDtzb2xfbDJz
KChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtm
eHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3RvcmUsJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30K
dGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRv
ciAlPSAoZmxvYXQgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25n
KXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3Rh
dCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JFTSwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwm
ZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRl
PGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgJT0gKGRv
dWJsZSBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0
PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBl
X19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcs
IGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAmPSAoY29uc3QgZnhw
QXJnJiAgcykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BTkQsMD4odGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1w
bGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICY9
IChib29sIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
Ym9vbF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FORCwwPih0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+
JiBGaXg8VyxQPjo6b3BlcmF0b3IgJj0gKGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0
PSAgZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBl
X19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcs
IGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAmPSAoc2hvcnQgcykg
eyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBl
LndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcs
UD46Om9wZXJhdG9yICY9IChpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVy
PFNPTF9BTkQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53
cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5s
aW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgJj0gKGxvbmcgcykgeyAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVt
cGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAm
PSAodW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191Y2hhcl90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53
cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5s
aW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgJj0gKHVuc2lnbmVkIHNob3J0IHMpIHsg
IDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUu
d2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcs
UD46Om9wZXJhdG9yICY9ICh1bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0
PSAgZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBl
X191aW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcs
IGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAmPSAodW5zaWduZWQg
bG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vs
b25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQU5ELDA+KHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+
JiBGaXg8VyxQPjo6b3BlcmF0b3IgJj0gKGZsb2F0IHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05W
KTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlw
ZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BTkQsMD4odGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcs
UD46Om9wZXJhdG9yICY9IChkb3VibGUgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtz
b2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRo
KCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3Bl
cmF0b3IgfD0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsgOyA7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3Bl
cjxTT0xfT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0b3Jl
KS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICBy
ZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4
PFcsUD46Om9wZXJhdG9yIHw9IChib29sIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4
cE9wZXI8U09MX09SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29s
X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3Ro
aXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQ
PiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciB8PSAoY2hhciBzKSB7ICA7c29s
X2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgp
KTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdG9yZSwmZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9
CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0
b3IgfD0gKHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9P
UiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUo
ICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBG
aXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIHw9IChpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQg
IHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhw
VHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50
IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciB8PSAobG9uZyBz
KSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlw
ZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNh
bGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVy
biAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQ
Pjo6b3BlcmF0b3IgfD0gKHVuc2lnbmVkIGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3Rh
dD0gIGZ4cE9wZXI8U09MX09SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBl
X191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBX
LCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgfD0gKHVuc2lnbmVk
IHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
dXNob3J0X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfT1IsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmly
c3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0
YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxX
LFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgfD0gKHVuc2lnbmVkIGludCBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtmeHBP
cVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSwmZnhwVHlwZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBs
YXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgfD0g
KHVuc2lnbmVkIGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBm
eHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09M
X09SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4
cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0
ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5l
IEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgfD0gKGZsb2F0IHMpIHtGeHBBc3NlcnQoRlhQ
X19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+
JiBGaXg8VyxQPjo6b3BlcmF0b3IgfD0gKGRvdWJsZSBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09O
Vik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5
cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfT1IsMD4odGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcs
UD46Om9wZXJhdG9yIF49IChjb25zdCBmeHBBcmcmICBzKSB7IDsgO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUs
cy5kX3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZz
dGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8
VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIF49IChib29sIHMpIHsgIDtzb2xfbDJzKChsb25nKXMs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAg
c3RhdD0gIGZ4cE9wZXI8U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4
cFR5cGVfX2Jvb2xfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxp
bnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIF49IChjaGFy
IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90
eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0VYT1IsMD4odGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3Jl
KS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICBy
ZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4
PFcsUD46Om9wZXJhdG9yIF49IChzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAg
ZnhwT3BlcjxTT0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9f
c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywg
aW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIF49IChpbnQgcykgeyAg
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0
aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRo
aXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9w
ZXJhdG9yIF49IChsb25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09M
X0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGlu
ZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIF49ICh1bnNpZ25lZCBjaGFyIHMpIHsgIDtz
b2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0
aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGMo
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAq
dGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6
b3BlcmF0b3IgXj0gKHVuc2lnbmVkIHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0
PSAgZnhwT3BlcjxTT0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlw
ZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50
IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciBePSAodW5zaWdu
ZWQgaW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
dWludF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0VYT1IsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBGaXg8VyxQ
PiYgRml4PFcsUD46Om9wZXJhdG9yIF49ICh1bnNpZ25lZCBsb25nIHMpIHsgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtmeHBP
cVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQPjo6b3BlcmF0b3Ig
Xj0gKGZsb2F0IHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylz
LGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQg
IHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZm
eHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8
aW50IFcsIGludCBQPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciBePSAoZG91
YmxlIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9f
Zmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBl
X19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+
IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgPSAoY29uc3QgSW50PFc+JiBvKSB7CiAg
ICAgICAKICAgICAgdGhpcy0+ZF9zdFswXSA9IG8uZF9zdFswXTsKICAgICAgaWYgKFc+MTYpIHsK
ICAgICAgICAgdGhpcy0+ZF9zdFsxXSA9IG8uZF9zdFsxXTsKICAgICAgICAgaWYgKFc+MzIpIHsK
ICAgICAgICAgICAgaW50IHNpemUgPSAoVy0xKS8xNiArMTsKICAgICAgICAgICAgZm9yIChpbnQg
aT0yO2k8c2l6ZTtpKyspIHt0aGlzLT5kX3N0W2ldID0gby5kX3N0W2ldO30KICAgICAgICAgfQog
ICAgICB9IAogICAgICB0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7IAogICAg
ICByZXR1cm4gKnRoaXM7fQoKICAgIAp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50
PFc+OjpvcGVyYXRvciA9IChjb25zdCBjaGFyKiBzdHIpICAge2Z4cE9xU3RhdCAgc3RhdCA9ICAg
dGhpcy0+ZF90eXBlLT5wYXJzZShzdHIsdGhpcy0+ZF9zdCk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIGZ4cFJlc0IgSW50PFc+Ojpi
aXQoaW50IGZyb20pICAgICAgICAgICAgICAgICAgICB7ICByZXR1cm4gZnhwUmVzQih0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdCxmcm9tKTt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgZnhwUmVzICBJ
bnQ8Vz46OnNsaWNlKGludCBmcm9tLCBpbnQgdG8pICAgICAgICAgIHsgIHJldHVybiBmeHBSZXMo
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QsZnJvbSx0byk7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5l
IGZ4cFJlcyAgSW50PFc+OjpyYW5nZShpbnQgZnJvbSwgaW50IHRvKSAgICAgICAgICB7ICByZXR1
cm4gZnhwUmVzKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0LGZyb20sdG8pO30KdGVtcGxhdGU8aW50
IFc+IGlubGluZSBmeHBSZXMgIEludDxXPjo6cmFuZ2UoKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgeyAgcmV0dXJuIGZ4cFJlcyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCxXLTEsMCk7fQp0ZW1w
bGF0ZTxpbnQgVz4gaW5saW5lIGNvbnN0IGZ4cFJlc0IgSW50PFc+OjpiaXQoaW50IGZyb20pICAg
ICAgICAgICAgIGNvbnN0IHsgIHJldHVybiBmeHBSZXNCKHRoaXMtPmRfdHlwZSxjb25zdF9jYXN0
PHVuc2lnbmVkIHNob3J0Kj4odGhpcy0+ZF9zdCksZnJvbSk7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5s
aW5lIGNvbnN0IGZ4cFJlcyAgSW50PFc+OjpzbGljZShpbnQgZnJvbSwgaW50IHRvKSAgIGNvbnN0
IHsgIHJldHVybiBmeHBSZXModGhpcy0+ZF90eXBlLGNvbnN0X2Nhc3Q8dW5zaWduZWQgc2hvcnQq
Pih0aGlzLT5kX3N0KSxmcm9tLHRvKTt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgY29uc3QgZnhw
UmVzICBJbnQ8Vz46OnJhbmdlKGludCBmcm9tLCBpbnQgdG8pICAgY29uc3QgeyAgcmV0dXJuIGZ4
cFJlcyh0aGlzLT5kX3R5cGUsY29uc3RfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHRoaXMtPmRfc3Qp
LGZyb20sdG8pO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBjb25zdCBmeHBSZXMgIEludDxXPjo6
cmFuZ2UoKSAgICAgICAgICAgICAgICAgICBjb25zdCB7ICByZXR1cm4gZnhwUmVzKHRoaXMtPmRf
dHlwZSxjb25zdF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4odGhpcy0+ZF9zdCksVy0xLDApO30KdGVt
cGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6c2xpY2UoaW50IGZyb20sIGludCB0
bywgY29uc3QgZnhwQXJnIHNlYykgewogICAgICAgICAgICBmeHBSZXModGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3QsZnJvbSx0bykgPSBzZWM7cmV0dXJuICp0aGlzOwogICAgICAgICAgICB9CnRlbXBs
YXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yID0gKGNvbnN0IGZ4cFJl
c0ImIGNtZCkgewogICAgICAgICAgICAgIEludDxXPjo6YXNzaWduKCh1bnNpZ25lZCBsb25nKWJv
b2woY21kKSk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAKICAgICAgICAg
ICAgICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+
OjpvcGVyYXRvciA9IChjb25zdCBmeHBSZXMmIGNtZCkgewogICAgICAgICAgICAgIGZ4cE9xU3Rh
dCAgc3RhdCA9ICAgZ2V0U2xpY2UoY21kLmZyb21fcG9zKCksY21kLnRvX3BvcygpLHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0LGNtZC50eXBlKCksY21kLnN0b3JlKCkpO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAKICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7fQoKdGVtcGxhdGU8aW50IFc+IGlubGlu
ZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgKz0gKGNvbnN0IEludDxXPiYgbykgewogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgIGZ4cE9xU3RhdCAgc3RhdCA9ICAgYWRkKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0LHRoaXMtPmRfc3Qsby5kX3N0KTsKICAgICAgICAgICAgICB0aGlzLT53
cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50
PFc+JiBJbnQ8Vz46Om9wZXJhdG9yIC09IChjb25zdCBJbnQ8Vz4mIG8pIHsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICBmeHBPcVN0YXQgIHN0YXQgPSAgIHN1Yih0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdCx0aGlzLT5kX3N0LG8uZF9zdCk7CiAgICAgICAgICAgICAgdGhpcy0+d3JpdGUo
ICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYg
SW50PFc+OjpvcGVyYXRvciAqPSAoY29uc3QgSW50PFc+JiBvKSB7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgZnhwT3FTdGF0ICBzdGF0ID0gICBtdWx0KHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0LHRoaXMtPmRfc3Qsby5kX3N0KTsKICAgICAgICAgICAgICB0aGlzLT53cml0ZSggJnN0
YXQgKTsgIHJldHVybiAqdGhpczt9CgogICAgCnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+
JiBJbnQ8Vz46Om9wZXJhdG9yICsrICgpIHsgIGZ4cE9xU3RhdCAgc3RhdCA9ICAgaW5jcih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlz
O30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgLS0gKCkg
eyAgZnhwT3FTdGF0ICBzdGF0ID0gICBkZWNyKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhp
cy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKICAgIAp0ZW1wbGF0ZTxpbnQgVz4g
aW5saW5lIEludDxXPiBJbnQ8Vz46Om9wZXJhdG9yICsrIChpbnQpIHtJbnQ8Vz4gdG1wPSp0aGlz
OyAgZnhwT3FTdGF0ICBzdGF0ID0gICBpbmNyKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhp
cy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gdG1wO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJ
bnQ8Vz4gSW50PFc+OjpvcGVyYXRvciAtLSAoaW50KSB7SW50PFc+IHRtcD0qdGhpczsgIGZ4cE9x
U3RhdCAgc3RhdCA9ICAgZGVjcih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRl
KCAmc3RhdCApOyAgcmV0dXJuIHRtcDt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJ
bnQ8Vz46Om9wZXJhdG9yID0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsgO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX1JPVU5ELDA+KHMuZF90eXBlLHMuZF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KCgoK
CgoKdGVtcGxhdGU8aW50IFc+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5saW5lIElu
dDxXPiYgSW50PFc+OjpvcGVyYXRvciA9IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKSB7Znhw
T3FTdGF0ICBzdGF0PSAgcy5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50
PFc+JiBJbnQ8Vz46Om9wZXJhdG9yID0gKGJvb2wgcykgICAge0ludDxXPjo6YXNzaWduKCh1bnNp
Z25lZCBsb25nKXMpO3RoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVy
biAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9y
ID0gKGNoYXIgcykgICAge0ludDxXPjo6YXNzaWduKChsb25nKXMpO3RoaXMtPndyaXRlKCBmeHBB
cmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxp
bmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yID0gKHNob3J0IHMpICAgIHtJbnQ8Vz46OmFzc2ln
bigobG9uZylzKTt0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7ICByZXR1cm4g
KnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciA9
IChpbnQgcykgICAge0ludDxXPjo6YXNzaWduKChsb25nKXMpO3RoaXMtPndyaXRlKCBmeHBBcmc6
OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUg
SW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yID0gKGxvbmcgcykgICAge0ludDxXPjo6YXNzaWduKChs
b25nKXMpO3RoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yID0gKHVu
c2lnbmVkIGNoYXIgcykgICAge0ludDxXPjo6YXNzaWduKCh1bnNpZ25lZCBsb25nKXMpO3RoaXMt
PndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRl
PGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yID0gKHVuc2lnbmVkIHNob3J0
IHMpICAgIHtJbnQ8Vz46OmFzc2lnbigodW5zaWduZWQgbG9uZylzKTt0aGlzLT53cml0ZSggZnhw
QXJnOjplbXB0eURldGVjdCgpICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5s
aW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciA9ICh1bnNpZ25lZCBpbnQgcykgICAge0ludDxX
Pjo6YXNzaWduKCh1bnNpZ25lZCBsb25nKXMpO3RoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0
ZWN0KCkgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJ
bnQ8Vz46Om9wZXJhdG9yID0gKHVuc2lnbmVkIGxvbmcgcykgICAge0ludDxXPjo6YXNzaWduKCh1
bnNpZ25lZCBsb25nKXMpO3RoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJl
dHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJh
dG9yID0gKGZsb2F0IHMpICAgIHtJbnQ8Vz46OmFzc2lnbigoZG91YmxlKXMpO3RoaXMtPndyaXRl
KCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBX
PiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yID0gKGRvdWJsZSBzKSAgICB7SW50PFc+
Ojphc3NpZ24oKGRvdWJsZSlzKTt0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+Ojpv
cGVyYXRvciArPSAoY29uc3QgZnhwQXJnJiAgcykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBP
cGVyPFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+Ojpv
cGVyYXRvciArPSAoYm9vbCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2Jvb2xfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxX
PiYgSW50PFc+OjpvcGVyYXRvciArPSAoY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9f
Zmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVf
X2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4g
aW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciArPSAoc2hvcnQgcykgeyAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO2Z4
cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FERCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciArPSAoaW50IHMp
IHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUu
d2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxj
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4g
KnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciAr
PSAobG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BREQsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+
OjpvcGVyYXRvciArPSAodW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9f
Zmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0
PSAgZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBl
X191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBX
PiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yICs9ICh1bnNpZ25lZCBzaG9ydCBzKSB7
ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90eXBl
LndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FERCwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSku
Y2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0
dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0
b3IgKz0gKHVuc2lnbmVkIGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3Rv
cmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVy
PFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlw
ZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+
d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIElu
dDxXPiYgSW50PFc+OjpvcGVyYXRvciArPSAodW5zaWduZWQgbG9uZyBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yICs9IChmbG9hdCBz
KSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0
X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhw
T3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25n
X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3Ro
aXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGlu
ZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgKz0gKGRvdWJsZSBzKSB7RnhwQXNzZXJ0KEZYUF9f
Tk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19s
b25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQURELDA+KHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9z
dG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCAp
OyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6
b3BlcmF0b3IgLT0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsgOyA7ZnhwT3FTdGF0ICBzdGF0PSAgZnhw
T3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9z
dG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCAp
OyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6
b3BlcmF0b3IgLT0gKGJvb2wgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8
Vz4mIEludDxXPjo6b3BlcmF0b3IgLT0gKGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0
PSAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBl
X19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+
IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgLT0gKHNob3J0IHMpIHsgIDtzb2xfbDJz
KChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtm
eHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9TVUIsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30K
dGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgLT0gKGludCBz
KSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBl
LndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2Fs
Yyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJu
ICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3Ig
LT0gKGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfU1VCLDA+
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJz
dF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxX
Pjo6b3BlcmF0b3IgLT0gKHVuc2lnbmVkIGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3Rh
dD0gIGZ4cE9wZXI8U09MX1NVQiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlw
ZV9fdWNoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQg
Vz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciAtPSAodW5zaWduZWQgc2hvcnQgcykg
eyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlw
ZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9TVUIsMD4odGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUp
LmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJl
dHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJh
dG9yIC09ICh1bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3Bl
cjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191aW50X3R5
cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMt
PndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJ
bnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgLT0gKHVuc2lnbmVkIGxvbmcgcykgeyAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2Z4
cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciAtPSAoZmxvYXQg
cykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4
cE9wZXI8U09MX1NVQiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9u
Z190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0
aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxp
bmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yIC09IChkb3VibGUgcykge0Z4cEFzc2VydChGWFBf
X05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
bG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiwwPih0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46
Om9wZXJhdG9yICo9IChjb25zdCBmeHBBcmcmICBzKSB7IDsgO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4
cE9wZXI8U09MX01VTFQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5k
X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+
OjpvcGVyYXRvciAqPSAoYm9vbCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3Rv
cmUsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVy
PFNPTF9NVUxULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5
cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMt
PndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJ
bnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgKj0gKGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBz
dGF0PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhw
VHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGlu
dCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yICo9IChzaG9ydCBzKSB7ICA7c29s
X2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgo
KSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRo
aXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciAqPSAo
aW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50
X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9y
ZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAg
cmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3Bl
cmF0b3IgKj0gKGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBm
eHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xf
TVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4
cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0
ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+
JiBJbnQ8Vz46Om9wZXJhdG9yICo9ICh1bnNpZ25lZCBjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25n
KXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0
YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9NVUxULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3Jl
LCZmeHBUeXBlX191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBs
YXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yICo9ICh1bnNpZ25lZCBz
aG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vz
aG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX01VTFQsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmly
c3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0
YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8
Vz46Om9wZXJhdG9yICo9ICh1bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0
PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlw
ZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBX
PiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yICo9ICh1bnNpZ25lZCBsb25nIHMpIHsg
IDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53
aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9NVUxULDA+KHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNh
bGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVy
biAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9y
ICo9IChmbG9hdCBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0
ICBzdGF0PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwm
ZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRl
PGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yICo9IChkb3VibGUgcykge0Z4
cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8
U09MX01VTFQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlw
ZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+
d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIElu
dDxXPiYgSW50PFc+OjpvcGVyYXRvciA8PD0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsgOyA7ZnhwT3FT
dGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLHMuZF90eXBlLHMuZF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3Ro
aXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGlu
ZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgPDw9IChib29sIHMpIHsgIDtzb2xfbDJzKChsb25n
KXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2Z4cE9xU3Rh
dCAgc3RhdD0gIGZ4cE9wZXI8U09MX0xTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBs
YXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yIDw8PSAoY2hhciBzKSB7
ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53
aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRv
ciA8PD0gKHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9M
U0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8
Vz4mIEludDxXPjo6b3BlcmF0b3IgPDw9IChpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5
cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBX
PiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yIDw8PSAobG9uZyBzKSB7ICA7c29sX2wy
cygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtm
eHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7
fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciA8PD0gKHVu
c2lnbmVkIGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0xT
SElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxX
PiYgSW50PFc+OjpvcGVyYXRvciA8PD0gKHVuc2lnbmVkIHNob3J0IHMpIHsgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0b3JlLCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7
fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciA8PD0gKHVu
c2lnbmVkIGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5
cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJ
RlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUo
ICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYg
SW50PFc+OjpvcGVyYXRvciA8PD0gKHVuc2lnbmVkIGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3Rh
dCAgc3RhdD0gIGZ4cE9wZXI8U09MX0xTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1w
bGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciA8PD0gKGZsb2F0IHMp
IHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBP
cGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xv
bmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7
dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5s
aW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciA8PD0gKGRvdWJsZSBzKSB7RnhwQXNzZXJ0KEZY
UF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZU
LDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19m
aXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAm
c3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIElu
dDxXPjo6b3BlcmF0b3IgPj49IChjb25zdCBmeHBBcmcmICBzKSB7IDsgO2Z4cE9xU3RhdCAgc3Rh
dD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSxzLmRf
dHlwZSxzLmRfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0
ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+
JiBJbnQ8Vz46Om9wZXJhdG9yID4+PSAoYm9vbCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9f
Zmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5
cGVfX2Jvb2xfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQg
Vz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciA+Pj0gKGNoYXIgcykgeyAgO3NvbF9s
MnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7
ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlz
O30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgPj49IChz
aG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3No
b3J0X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUlNISUZULDA+
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmly
c3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0
YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8
Vz46Om9wZXJhdG9yID4+PSAoaW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9z
dG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3Bl
cjxTT0xfUlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19pbnRf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhp
cy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5l
IEludDxXPiYgSW50PFc+OjpvcGVyYXRvciA+Pj0gKGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0
ICBzdGF0PSAgZnhwT3BlcjxTT0xfUlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3Jl
LCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxh
dGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgPj49ICh1bnNpZ25lZCBj
aGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNo
YXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJz
dF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxX
Pjo6b3BlcmF0b3IgPj49ICh1bnNpZ25lZCBzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4
cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAg
c3RhdD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwm
ZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxh
dGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgPj49ICh1bnNpZ25lZCBp
bnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50
X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUlNISUZULDA+KHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19maXJzdF9z
dG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCAp
OyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6
b3BlcmF0b3IgPj49ICh1bnNpZ25lZCBsb25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5
cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50
IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgPj49IChmbG9hdCBzKSB7RnhwQXNz
ZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBm
eHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xf
UlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8
Vz4mIEludDxXPjo6b3BlcmF0b3IgPj49IChkb3VibGUgcykge0Z4cEFzc2VydChGWFBfX05PX0NP
TlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190
eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9w
ZXJhdG9yIC89IChjb25zdCBmeHBBcmcmICBzKSB7IDsgO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9w
ZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSxzLmRfdHlwZSxzLmRfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9w
ZXJhdG9yIC89IChib29sIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09M
X0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4
cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0
ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+
JiBJbnQ8Vz46Om9wZXJhdG9yIC89IChjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9f
Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Qg
KTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBp
bmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yIC89IChzaG9ydCBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfRElWLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yIC89IChpbnQgcykg
eyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53
aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9ESVYsMD4odGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGMo
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAq
dGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yIC89
IChsb25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
bG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0RJViwwPih0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46
Om9wZXJhdG9yIC89ICh1bnNpZ25lZCBjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9ESVYsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVf
X3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+
IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgLz0gKHVuc2lnbmVkIHNob3J0IHMpIHsg
IDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUu
d2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfRElWLDA+KHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRv
ciAvPSAodW5zaWduZWQgaW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8
U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWludF90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53
cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50
PFc+JiBJbnQ8Vz46Om9wZXJhdG9yIC89ICh1bnNpZ25lZCBsb25nIHMpIHsgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtmeHBP
cVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9ESVYsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVt
cGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgLz0gKGZsb2F0IHMp
IHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBP
cGVyPFNPTF9ESVYsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhp
cy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5l
IEludDxXPiYgSW50PFc+OjpvcGVyYXRvciAvPSAoZG91YmxlIHMpIHtGeHBBc3NlcnQoRlhQX19O
T19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xv
bmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9ESVYsMD4odGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+Ojpv
cGVyYXRvciAlPSAoY29uc3QgZnhwQXJnJiAgcykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBP
cGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+Ojpv
cGVyYXRvciAlPSAoYm9vbCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2Jvb2xfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxX
PiYgSW50PFc+OjpvcGVyYXRvciAlPSAoY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9f
Zmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVf
X2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4g
aW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciAlPSAoc2hvcnQgcykgeyAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO2Z4
cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JFTSwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciAlPSAoaW50IHMp
IHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUu
d2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxj
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4g
KnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciAl
PSAobG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SRU0sMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+
OjpvcGVyYXRvciAlPSAodW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9f
Zmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0
PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBl
X191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBX
PiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yICU9ICh1bnNpZ25lZCBzaG9ydCBzKSB7
ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90eXBl
LndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JFTSwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSku
Y2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0
dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0
b3IgJT0gKHVuc2lnbmVkIGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3Rv
cmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVy
PFNPTF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlw
ZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+
d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIElu
dDxXPiYgSW50PFc+OjpvcGVyYXRvciAlPSAodW5zaWduZWQgbG9uZyBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yICU9IChmbG9hdCBz
KSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0
X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhw
T3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25n
X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3Ro
aXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGlu
ZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgJT0gKGRvdWJsZSBzKSB7RnhwQXNzZXJ0KEZYUF9f
Tk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19s
b25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9z
dG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCAp
OyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6
b3BlcmF0b3IgJj0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsgOyA7ZnhwT3FTdGF0ICBzdGF0PSAgZnhw
T3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9z
dG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCAp
OyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6
b3BlcmF0b3IgJj0gKGJvb2wgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8
Vz4mIEludDxXPjo6b3BlcmF0b3IgJj0gKGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0
PSAgZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBl
X19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+
IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgJj0gKHNob3J0IHMpIHsgIDtzb2xfbDJz
KChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtm
eHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BTkQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30K
dGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgJj0gKGludCBz
KSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBl
LndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2Fs
Yyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJu
ICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3Ig
Jj0gKGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQU5ELDA+
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJz
dF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxX
Pjo6b3BlcmF0b3IgJj0gKHVuc2lnbmVkIGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3Rh
dD0gIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlw
ZV9fdWNoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQg
Vz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciAmPSAodW5zaWduZWQgc2hvcnQgcykg
eyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlw
ZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BTkQsMD4odGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUp
LmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJl
dHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJh
dG9yICY9ICh1bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3Bl
cjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191aW50X3R5
cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMt
PndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJ
bnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgJj0gKHVuc2lnbmVkIGxvbmcgcykgeyAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2Z4
cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciAmPSAoZmxvYXQg
cykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4
cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9u
Z190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0
aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxp
bmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yICY9IChkb3VibGUgcykge0Z4cEFzc2VydChGWFBf
X05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
bG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FORCwwPih0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46
Om9wZXJhdG9yIHw9IChjb25zdCBmeHBBcmcmICBzKSB7IDsgO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4
cE9wZXI8U09MX09SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9z
dG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCAp
OyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6
b3BlcmF0b3IgfD0gKGJvb2wgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2Jvb2xfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxX
PiYgSW50PFc+OjpvcGVyYXRvciB8PSAoY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9f
Zmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9f
Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Qg
KTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBp
bmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yIHw9IChzaG9ydCBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVt
cGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgfD0gKGludCBzKSB7
ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndp
ZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX09SLDA+KHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRo
aXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciB8PSAo
bG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xv
bmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9w
ZXJhdG9yIHw9ICh1bnNpZ25lZCBjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBm
eHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWNo
YXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7
dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5s
aW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciB8PSAodW5zaWduZWQgc2hvcnQgcykgeyAgO3Nv
bF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0
aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgfD0g
KHVuc2lnbmVkIGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9P
UiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWludF90eXBlLGZ4cF9f
Zmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSgg
JnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJ
bnQ8Vz46Om9wZXJhdG9yIHw9ICh1bnNpZ25lZCBsb25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQg
IHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhw
VHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxp
bnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciB8PSAoZmxvYXQgcykge0Z4cEFz
c2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09M
X09SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhw
X19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRl
KCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4m
IEludDxXPjo6b3BlcmF0b3IgfD0gKGRvdWJsZSBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7
ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUu
d2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfT1IsMD4odGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxj
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4g
KnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciBe
PSAoY29uc3QgZnhwQXJnJiAgcykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9F
WE9SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSkuY2Fs
Yyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJu
ICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3Ig
Xj0gKGJvb2wgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X19ib29sX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfRVhPUiww
Pih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmly
c3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0
YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8
Vz46Om9wZXJhdG9yIF49IChjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9z
dG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9w
ZXI8U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhp
cy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5l
IEludDxXPiYgSW50PFc+OjpvcGVyYXRvciBePSAoc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3Rh
dCAgc3RhdD0gIGZ4cE9wZXI8U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUs
JmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxh
dGU8aW50IFc+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgXj0gKGludCBzKSB7ICA7
c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRo
KCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yIF49IChs
b25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9u
Z190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0VYT1IsMD4odGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+Ojpv
cGVyYXRvciBePSAodW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAg
ZnhwT3BlcjxTT0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9f
dWNoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4g
aW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciBePSAodW5zaWduZWQgc2hvcnQgcykgeyAg
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hvcnRfdHlwZS53
aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRv
ciBePSAodW5zaWduZWQgaW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8
U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlw
ZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+
d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIElu
dDxXPiYgSW50PFc+OjpvcGVyYXRvciBePSAodW5zaWduZWQgbG9uZyBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciBePSAoZmxvYXQg
cykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4
cE9wZXI8U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xv
bmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7
dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5s
aW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciBePSAoZG91YmxlIHMpIHtGeHBBc3NlcnQoRlhQ
X19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJz
dF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxX
LFA+JiBVZml4PFcsUD46Om9wZXJhdG9yID0gKGNvbnN0IFVmaXg8VyxQPiYgbykgewogICAgICAg
CiAgICAgIHRoaXMtPmRfc3RbMF0gPSBvLmRfc3RbMF07CiAgICAgIGlmIChXPjE2KSB7CiAgICAg
ICAgIHRoaXMtPmRfc3RbMV0gPSBvLmRfc3RbMV07CiAgICAgICAgIGlmIChXPjMyKSB7CiAgICAg
ICAgICAgIGludCBzaXplID0gKFctMSkvMTYgKzE7CiAgICAgICAgICAgIGZvciAoaW50IGk9Mjtp
PHNpemU7aSsrKSB7dGhpcy0+ZF9zdFtpXSA9IG8uZF9zdFtpXTt9CiAgICAgICAgIH0KICAgICAg
fSAKICAgICAgdGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAKICAgICAgcmV0
dXJuICp0aGlzO30KCiAgICAKdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+
JiBVZml4PFcsUD46Om9wZXJhdG9yID0gKGNvbnN0IGNoYXIqIHN0cikgICB7ZnhwT3FTdGF0ICBz
dGF0ID0gICB0aGlzLT5kX3R5cGUtPnBhcnNlKHN0cix0aGlzLT5kX3N0KTt0aGlzLT53cml0ZSgg
JnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIGZ4
cFJlc0IgVWZpeDxXLFA+OjpiaXQoaW50IGZyb20pICAgICAgICAgICAgICAgICAgICB7ICByZXR1
cm4gZnhwUmVzQih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCxmcm9tKTt9CnRlbXBsYXRlPGludCBX
LCBpbnQgUD4gaW5saW5lIGZ4cFJlcyAgVWZpeDxXLFA+OjpzbGljZShpbnQgZnJvbSwgaW50IHRv
KSAgICAgICAgICB7ICByZXR1cm4gZnhwUmVzKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0LGZyb20s
dG8pO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgZnhwUmVzICBVZml4PFcsUD46OnJh
bmdlKGludCBmcm9tLCBpbnQgdG8pICAgICAgICAgIHsgIHJldHVybiBmeHBSZXModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QsZnJvbSx0byk7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBm
eHBSZXMgIFVmaXg8VyxQPjo6cmFuZ2UoKSAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgcmV0
dXJuIGZ4cFJlcyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCxXLTEsMCk7fQp0ZW1wbGF0ZTxpbnQg
VywgaW50IFA+IGlubGluZSBjb25zdCBmeHBSZXNCIFVmaXg8VyxQPjo6Yml0KGludCBmcm9tKSAg
ICAgICAgICAgICBjb25zdCB7ICByZXR1cm4gZnhwUmVzQih0aGlzLT5kX3R5cGUsY29uc3RfY2Fz
dDx1bnNpZ25lZCBzaG9ydCo+KHRoaXMtPmRfc3QpLGZyb20pO30KdGVtcGxhdGU8aW50IFcsIGlu
dCBQPiBpbmxpbmUgY29uc3QgZnhwUmVzICBVZml4PFcsUD46OnNsaWNlKGludCBmcm9tLCBpbnQg
dG8pICAgY29uc3QgeyAgcmV0dXJuIGZ4cFJlcyh0aGlzLT5kX3R5cGUsY29uc3RfY2FzdDx1bnNp
Z25lZCBzaG9ydCo+KHRoaXMtPmRfc3QpLGZyb20sdG8pO30KdGVtcGxhdGU8aW50IFcsIGludCBQ
PiBpbmxpbmUgY29uc3QgZnhwUmVzICBVZml4PFcsUD46OnJhbmdlKGludCBmcm9tLCBpbnQgdG8p
ICAgY29uc3QgeyAgcmV0dXJuIGZ4cFJlcyh0aGlzLT5kX3R5cGUsY29uc3RfY2FzdDx1bnNpZ25l
ZCBzaG9ydCo+KHRoaXMtPmRfc3QpLGZyb20sdG8pO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBp
bmxpbmUgY29uc3QgZnhwUmVzICBVZml4PFcsUD46OnJhbmdlKCkgICAgICAgICAgICAgICAgICAg
Y29uc3QgeyAgcmV0dXJuIGZ4cFJlcyh0aGlzLT5kX3R5cGUsY29uc3RfY2FzdDx1bnNpZ25lZCBz
aG9ydCo+KHRoaXMtPmRfc3QpLFctMSwwKTt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5l
IFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpzbGljZShpbnQgZnJvbSwgaW50IHRvLCBjb25zdCBmeHBB
cmcgc2VjKSB7CiAgICAgICAgICAgIGZ4cFJlcyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCxmcm9t
LHRvKSA9IHNlYztyZXR1cm4gKnRoaXM7CiAgICAgICAgICAgIH0KdGVtcGxhdGU8aW50IFcsIGlu
dCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yID0gKGNvbnN0IGZ4cFJl
c0ImIGNtZCkgewogICAgICAgICAgICAgIFVmaXg8VyxQPjo6YXNzaWduKCh1bnNpZ25lZCBsb25n
KWJvb2woY21kKSk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAKICAgICAg
ICAgICAgICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4
PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgPSAoY29uc3QgZnhwUmVzJiBjbWQpIHsKICAgICAg
ICAgICAgICBmeHBPcVN0YXQgIHN0YXQgPSAgIGdldFNsaWNlKGNtZC5mcm9tX3BvcygpLGNtZC50
b19wb3MoKSx0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCxjbWQudHlwZSgpLGNtZC5zdG9yZSgpKTt0
aGlzLT53cml0ZSggJnN0YXQgKTsgCiAgICAgICAgICAgICAgcmV0dXJuICp0aGlzO30KCnRlbXBs
YXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAr
PSAoY29uc3QgVWZpeDxXLFA+JiBvKSB7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ZnhwT3FTdGF0ICBzdGF0ID0gICBhZGQodGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QsdGhpcy0+ZF9z
dCxvLmRfc3QpOwogICAgICAgICAgICAgIHRoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46
Om9wZXJhdG9yIC09IChjb25zdCBVZml4PFcsUD4mIG8pIHsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICBmeHBPcVN0YXQgIHN0YXQgPSAgIHN1Yih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCx0aGlzLT5kX3N0LG8uZF9zdCk7CiAgICAgICAgICAgICAgdGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4m
IFVmaXg8VyxQPjo6b3BlcmF0b3IgKj0gKGNvbnN0IFVmaXg8VyxQPiYgbykgewogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgIGZ4cE9xU3RhdCAgc3RhdCA9ICAgbXVsdCh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCx0aGlzLT5kX3N0LG8uZF9zdCk7CiAgICAgICAgICAgICAgdGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yID0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsg
O2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JPVU5ELDA+KHMuZF90eXBlLHMuZF9zdG9y
ZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAg
cmV0dXJuICp0aGlzO30KCgoKCgoKdGVtcGxhdGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxTb2xf
b3AgQ01ELGludCBPUFQ+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgPSAo
Y29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcykge2Z4cE9xU3RhdCAgc3RhdD0gIHMuY2FsYyh0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlz
O30KCgp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6
b3BlcmF0b3IgPSAoYm9vbCBzKSAgICB7VWZpeDxXLFA+Ojphc3NpZ24oKHVuc2lnbmVkIGxvbmcp
cyk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAgcmV0dXJuICp0aGlzO30K
dGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJh
dG9yID0gKGNoYXIgcykgICAge1VmaXg8VyxQPjo6YXNzaWduKChsb25nKXMpO3RoaXMtPndyaXRl
KCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBX
LCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciA9IChzaG9ydCBz
KSAgICB7VWZpeDxXLFA+Ojphc3NpZ24oKGxvbmcpcyk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1w
dHlEZXRlY3QoKSApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yID0gKGludCBzKSAgICB7VWZpeDxXLFA+
Ojphc3NpZ24oKGxvbmcpcyk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAg
cmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBV
Zml4PFcsUD46Om9wZXJhdG9yID0gKGxvbmcgcykgICAge1VmaXg8VyxQPjo6YXNzaWduKChsb25n
KXMpO3RoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVybiAqdGhpczt9
CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVy
YXRvciA9ICh1bnNpZ25lZCBjaGFyIHMpICAgIHtVZml4PFcsUD46OmFzc2lnbigodW5zaWduZWQg
bG9uZylzKTt0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7ICByZXR1cm4gKnRo
aXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6
b3BlcmF0b3IgPSAodW5zaWduZWQgc2hvcnQgcykgICAge1VmaXg8VyxQPjo6YXNzaWduKCh1bnNp
Z25lZCBsb25nKXMpO3RoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJldHVy
biAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxX
LFA+OjpvcGVyYXRvciA9ICh1bnNpZ25lZCBpbnQgcykgICAge1VmaXg8VyxQPjo6YXNzaWduKCh1
bnNpZ25lZCBsb25nKXMpO3RoaXMtPndyaXRlKCBmeHBBcmc6OmVtcHR5RGV0ZWN0KCkgKTsgIHJl
dHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZp
eDxXLFA+OjpvcGVyYXRvciA9ICh1bnNpZ25lZCBsb25nIHMpICAgIHtVZml4PFcsUD46OmFzc2ln
bigodW5zaWduZWQgbG9uZylzKTt0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4m
IFVmaXg8VyxQPjo6b3BlcmF0b3IgPSAoZmxvYXQgcykgICAge1VmaXg8VyxQPjo6YXNzaWduKChk
b3VibGUpcyk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46
Om9wZXJhdG9yID0gKGRvdWJsZSBzKSAgICB7VWZpeDxXLFA+Ojphc3NpZ24oKGRvdWJsZSlzKTt0
aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1w
bGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3Ig
Kz0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsgOyA7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xf
QURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSkuY2Fs
Yyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJu
ICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcs
UD46Om9wZXJhdG9yICs9IChib29sIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9z
dG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9w
ZXI8U09MX0FERCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90
eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlz
LT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4g
aW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciArPSAoY2hhciBzKSB7ICA7c29s
X2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgp
KTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7
fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3Bl
cmF0b3IgKz0gKHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yICs9IChpbnQgcykgeyAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtmeHBP
cVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBs
YXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAr
PSAobG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BREQsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcs
UD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgKz0gKHVuc2lnbmVkIGNoYXIgcykgeyAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2Z4
cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FERCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0
b3IgKz0gKHVuc2lnbmVkIHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9z
dG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhw
T3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191c2hv
cnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7
dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50
IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgKz0gKHVuc2lnbmVkIGlu
dCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRf
dHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BREQsMD4odGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3Jl
KS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICBy
ZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVm
aXg8VyxQPjo6b3BlcmF0b3IgKz0gKHVuc2lnbmVkIGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3Rh
dCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FERCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwm
ZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0
ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgKz0g
KGZsb2F0IHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4
cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0
YXQ9ICBmeHBPcGVyPFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5
cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQg
VywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgKz0gKGRvdWJs
ZSBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2Zp
cnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAg
ZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19s
b25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCAp
O3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGlu
dCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIC09IChjb25zdCBmeHBB
cmcmICBzKSB7IDsgO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiwwPih0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBs
YXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAt
PSAoYm9vbCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X2Jvb2xfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9TVUIsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2Jvb2xfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcs
UD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgLT0gKGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBz
dGF0PSAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBU
eXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50
IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIC09IChzaG9y
dCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0
X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYg
VWZpeDxXLFA+OjpvcGVyYXRvciAtPSAoaW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAg
ZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19p
bnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7
dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50
IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgLT0gKGxvbmcgcykgeyAg
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lk
dGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46
Om9wZXJhdG9yIC09ICh1bnNpZ25lZCBjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9TVUIsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVf
X3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcs
IGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIC09ICh1bnNpZ25l
ZCBzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X3VzaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiww
Pih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19m
aXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAm
c3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZp
eDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIC09ICh1bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9s
MnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7
ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0b3JlLCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30K
dGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJh
dG9yIC09ICh1bnNpZ25lZCBsb25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9z
dG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBP
cGVyPFNPTF9TVUIsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Vsb25n
X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3Ro
aXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQ
PiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIC09IChmbG9hdCBzKSB7Rnhw
QXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIC09IChkb3VibGUgcykge0Z4cEFzc2Vy
dChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NV
QiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9f
Zmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSgg
JnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVm
aXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAqPSAoY29uc3QgZnhwQXJnJiAgcykgeyA7IDtm
eHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9NVUxULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCAp
O3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGlu
dCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yICo9IChib29sIHMpIHsg
IDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndp
ZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX01VTFQsMD4odGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2Jvb2xfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxj
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4g
KnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQ
Pjo6b3BlcmF0b3IgKj0gKGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3Bl
cjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fY2hhcl90
eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlz
LT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4g
aW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAqPSAoc2hvcnQgcykgeyAgO3Nv
bF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRo
KCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX01VTFQsMD4odGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46
Om9wZXJhdG9yICo9IChpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9NVUxULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19pbnRfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGlu
ZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgKj0gKGxvbmcgcykgeyAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRv
ciAqPSAodW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3Rv
cmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3Bl
cjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhp
cy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+
IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgKj0gKHVuc2lnbmVkIHNob3J0
IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0
X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9z
dG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCAp
OyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+
JiBVZml4PFcsUD46Om9wZXJhdG9yICo9ICh1bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxv
bmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FT
dGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSwmZnhwVHlwZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBs
YXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAq
PSAodW5zaWduZWQgbG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlw
ZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+
d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlu
bGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgKj0gKGZsb2F0IHMpIHtGeHBBc3Nl
cnQoRlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9N
VUxULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhw
X19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRl
KCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUg
VWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yICo9IChkb3VibGUgcykge0Z4cEFzc2VydChG
WFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlw
ZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX01VTFQs
MD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2Zp
cnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZz
dGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4
PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgPDw9IChjb25zdCBmeHBBcmcmICBzKSB7IDsgO2Z4
cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0xTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Qg
KTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBp
bnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciA8PD0gKGJvb2wgcykg
eyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19ib29sX3R5cGUu
d2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSku
Y2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0
dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4
PFcsUD46Om9wZXJhdG9yIDw8PSAoY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBm
eHBPcGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVf
X2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywg
aW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgPDw9IChzaG9ydCBz
KSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5
cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYg
VWZpeDxXLFA+OjpvcGVyYXRvciA8PD0gKGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9f
Zmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX0xTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlw
ZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcs
IGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIDw8PSAobG9uZyBz
KSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlw
ZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3Jl
KS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICBy
ZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVm
aXg8VyxQPjo6b3BlcmF0b3IgPDw9ICh1bnNpZ25lZCBjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25n
KXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0
YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVt
cGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9y
IDw8PSAodW5zaWduZWQgc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBP
cGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Vz
aG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Qg
KTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBp
bnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciA8PD0gKHVuc2lnbmVk
IGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vp
bnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcs
UD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgPDw9ICh1bnNpZ25lZCBsb25nIHMpIHsgIDtzb2xfbDJz
KChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtm
eHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3RvcmUsJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlz
O30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9w
ZXJhdG9yIDw8PSAoZmxvYXQgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJz
KChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4
cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0xTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9
CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVy
YXRvciA8PD0gKGRvdWJsZSBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30K
dGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJh
dG9yID4+PSAoY29uc3QgZnhwQXJnJiAgcykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVy
PFNPTF9SU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4m
IFVmaXg8VyxQPjo6b3BlcmF0b3IgPj49IChib29sIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3Rh
dD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhw
VHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGlu
dCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciA+Pj0gKGNo
YXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFy
X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUlNISUZULDA+KHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9z
dG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCAp
OyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+
JiBVZml4PFcsUD46Om9wZXJhdG9yID4+PSAoc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAg
c3RhdD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwm
ZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0
ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgPj49
IChpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19p
bnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQ
PiYgVWZpeDxXLFA+OjpvcGVyYXRvciA+Pj0gKGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBz
dGF0PSAgZnhwT3BlcjxTT0xfUlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZm
eHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8
aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yID4+PSAo
dW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xf
UlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191Y2hhcl90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53
cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5s
aW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciA+Pj0gKHVuc2lnbmVkIHNob3J0IHMp
IHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5
cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUlNISUZULDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4m
IFVmaXg8VyxQPjo6b3BlcmF0b3IgPj49ICh1bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxv
bmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FT
dGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVt
cGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9y
ID4+PSAodW5zaWduZWQgbG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3Rv
cmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3Bl
cjxTT0xfUlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191bG9u
Z190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0
aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQg
UD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciA+Pj0gKGZsb2F0IHMpIHtG
eHBBc3NlcnQoRlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3Rv
cmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVy
PFNPTF9SU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhp
cy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+
IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgPj49IChkb3VibGUgcykge0Z4
cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8
U09MX1JTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190
eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlz
LT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4g
aW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAvPSAoY29uc3QgZnhwQXJnJiAg
cykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9ESVYsMD4odGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxp
bnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgLz0gKGJv
b2wgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19ib29s
X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfRElWLDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9y
ZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAg
cmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBV
Zml4PFcsUD46Om9wZXJhdG9yIC89IChjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9f
Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Qg
KTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBp
bnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAvPSAoc2hvcnQgcykg
eyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBl
LndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8
VyxQPjo6b3BlcmF0b3IgLz0gKGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9w
ZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5
cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMt
PndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBp
bmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIC89IChsb25nIHMpIHsgIDtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkp
O2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9
CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVy
YXRvciAvPSAodW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhw
T3BlcjxTT0xfRElWLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191Y2hh
cl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0
aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQg
UD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAvPSAodW5zaWduZWQgc2hv
cnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191c2hv
cnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9ESVYsMD4odGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQ
PiYgVWZpeDxXLFA+OjpvcGVyYXRvciAvPSAodW5zaWduZWQgaW50IHMpIHsgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO2Z4cE9x
U3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSwmZnhwVHlwZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBs
YXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAv
PSAodW5zaWduZWQgbG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfRElWLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53
cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5s
aW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAvPSAoZmxvYXQgcykge0Z4cEFzc2Vy
dChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0RJ
ViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9f
Zmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSgg
JnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVm
aXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAvPSAoZG91YmxlIHMpIHtGeHBBc3NlcnQoRlhQ
X19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9ESVYsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcs
UD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgJT0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsgOyA7ZnhwT3FT
dGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3Jl
LHMuZF90eXBlLHMuZF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMt
PndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBp
bmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yICU9IChib29sIHMpIHsgIDtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkp
O2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JFTSwwPih0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9
CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVy
YXRvciAlPSAoY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9S
RU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUo
ICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBV
Zml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgJT0gKHNob3J0IHMpIHsgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtmeHBP
cVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVt
cGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9y
ICU9IChpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X19pbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SRU0sMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQ
PiYgVWZpeDxXLFA+OjpvcGVyYXRvciAlPSAobG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4
cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0
YXQ9ICBmeHBPcGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5
cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQg
VywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgJT0gKHVuc2ln
bmVkIGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X191Y2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JFTSww
Pih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBfX2Zp
cnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZz
dGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4
PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgJT0gKHVuc2lnbmVkIHNob3J0IHMpIHsgIDtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgo
KSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0b3JlLCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRo
aXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6
b3BlcmF0b3IgJT0gKHVuc2lnbmVkIGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBm
eHBPcGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Vp
bnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7
dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50
IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgJT0gKHVuc2lnbmVkIGxv
bmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191bG9u
Z190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JFTSwwPih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4m
IFVmaXg8VyxQPjo6b3BlcmF0b3IgJT0gKGZsb2F0IHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05W
KTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlw
ZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8
VyxQPjo6b3BlcmF0b3IgJT0gKGRvdWJsZSBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAg
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lk
dGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46
Om9wZXJhdG9yICY9IChjb25zdCBmeHBBcmcmICBzKSB7IDsgO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4
cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSxzLmRfdHlwZSxzLmRf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQ
PiYgVWZpeDxXLFA+OjpvcGVyYXRvciAmPSAoYm9vbCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4
cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0
YXQ9ICBmeHBPcGVyPFNPTF9BTkQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5
cGVfX2Jvb2xfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQg
VywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgJj0gKGNoYXIg
cykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5
cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSku
Y2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0
dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4
PFcsUD46Om9wZXJhdG9yICY9IChzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAg
ZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19z
aG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Qg
KTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBp
bnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciAmPSAoaW50IHMpIHsg
IDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lk
dGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRo
aXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6
b3BlcmF0b3IgJj0gKGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yICY9ICh1bnNpZ25lZCBjaGFyIHMpIHsg
IDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53
aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BTkQsMD4odGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2Fs
Yyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJu
ICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcs
UD46Om9wZXJhdG9yICY9ICh1bnNpZ25lZCBzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4
cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAg
c3RhdD0gIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhw
VHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8
aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yICY9ICh1
bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX191aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQU5E
LDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19m
aXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAm
c3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZp
eDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yICY9ICh1bnNpZ25lZCBsb25nIHMpIHsgIDtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgp
KTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BTkQsMD4odGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3RvcmUsJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlz
O30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9w
ZXJhdG9yICY9IChmbG9hdCBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVt
cGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9y
ICY9IChkb3VibGUgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25n
KXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3Rh
dCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwm
ZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRl
PGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciB8PSAo
Y29uc3QgZnhwQXJnJiAgcykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiww
Pih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+Ojpv
cGVyYXRvciB8PSAoYm9vbCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4
cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0
ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5l
IFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciB8PSAoY2hhciBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtmeHBP
cVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSwmZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBs
YXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciB8
PSAoc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X19zaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX09SLDA+
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmly
c3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0
YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8
VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciB8PSAoaW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBz
dGF0PSAgZnhwT3BlcjxTT0xfT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5
cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBX
LCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciB8PSAobG9uZyBz
KSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlw
ZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNh
bGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVy
biAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxX
LFA+OjpvcGVyYXRvciB8PSAodW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4
cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBz
dGF0PSAgZnhwT3BlcjxTT0xfT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5
cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50
IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIHw9ICh1bnNp
Z25lZCBzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5
cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX09S
LDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUo
ICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBV
Zml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgfD0gKHVuc2lnbmVkIGludCBzKSB7ICA7c29s
X2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgp
KTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdG9yZSwmZnhwVHlwZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9
CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVy
YXRvciB8PSAodW5zaWduZWQgbG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhw
T3BlcjxTT0xfT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Vsb25n
X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3Ro
aXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQ
PiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIHw9IChmbG9hdCBzKSB7Rnhw
QXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGlu
ZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgfD0gKGRvdWJsZSBzKSB7RnhwQXNzZXJ0
KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfT1Is
MD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2Zp
cnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZz
dGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4
PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgXj0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsgOyA7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0
aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQg
UD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciBePSAoYm9vbCBzKSB7ICA7
c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0
aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0
aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0
aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46
Om9wZXJhdG9yIF49IChjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8
U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlw
ZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+
d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IGlu
bGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgXj0gKHNob3J0IHMpIHsgIDtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgp
KTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+Ojpv
cGVyYXRvciBePSAoaW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xf
RVhPUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhw
X19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRl
KCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxpbmUg
VWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIF49IChsb25nIHMpIHsgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9x
U3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1w
bGF0ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3Ig
Xj0gKHVuc2lnbmVkIGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8
U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5
cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMt
PndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBp
bmxpbmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIF49ICh1bnNpZ25lZCBzaG9ydCBz
KSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90
eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0VYT1IsMD4odGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVmaXg8VyxQPiYg
VWZpeDxXLFA+OjpvcGVyYXRvciBePSAodW5zaWduZWQgaW50IHMpIHsgIDtzb2xfbDJzKChsb25n
KXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO2Z4cE9xU3Rh
dCAgc3RhdD0gIGZ4cE9wZXI8U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUs
JmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0
ZTxpbnQgVywgaW50IFA+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgXj0g
KHVuc2lnbmVkIGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBm
eHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09M
X0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Vsb25nX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFcsIGludCBQPiBpbmxp
bmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yIF49IChmbG9hdCBzKSB7RnhwQXNzZXJ0
KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfRVhP
UiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9f
Zmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSgg
JnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gaW5saW5lIFVm
aXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciBePSAoZG91YmxlIHMpIHtGeHBBc3NlcnQoRlhQ
X19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJz
dF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50
PFc+OjpvcGVyYXRvciA9IChjb25zdCBVaW50PFc+JiBvKSB7CiAgICAgICAKICAgICAgdGhpcy0+
ZF9zdFswXSA9IG8uZF9zdFswXTsKICAgICAgaWYgKFc+MTYpIHsKICAgICAgICAgdGhpcy0+ZF9z
dFsxXSA9IG8uZF9zdFsxXTsKICAgICAgICAgaWYgKFc+MzIpIHsKICAgICAgICAgICAgaW50IHNp
emUgPSAoVy0xKS8xNiArMTsKICAgICAgICAgICAgZm9yIChpbnQgaT0yO2k8c2l6ZTtpKyspIHt0
aGlzLT5kX3N0W2ldID0gby5kX3N0W2ldO30KICAgICAgICAgfQogICAgICB9IAogICAgICB0aGlz
LT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7IAogICAgICByZXR1cm4gKnRoaXM7fQoK
ICAgIAp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yID0g
KGNvbnN0IGNoYXIqIHN0cikgICB7ZnhwT3FTdGF0ICBzdGF0ID0gICB0aGlzLT5kX3R5cGUtPnBh
cnNlKHN0cix0aGlzLT5kX3N0KTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9
CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgZnhwUmVzQiBVaW50PFc+OjpiaXQoaW50IGZyb20pICAg
ICAgICAgICAgICAgICAgICB7ICByZXR1cm4gZnhwUmVzQih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCxmcm9tKTt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgZnhwUmVzICBVaW50PFc+OjpzbGljZShp
bnQgZnJvbSwgaW50IHRvKSAgICAgICAgICB7ICByZXR1cm4gZnhwUmVzKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0LGZyb20sdG8pO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBmeHBSZXMgIFVpbnQ8
Vz46OnJhbmdlKGludCBmcm9tLCBpbnQgdG8pICAgICAgICAgIHsgIHJldHVybiBmeHBSZXModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QsZnJvbSx0byk7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIGZ4
cFJlcyAgVWludDxXPjo6cmFuZ2UoKSAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgcmV0dXJu
IGZ4cFJlcyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCxXLTEsMCk7fQp0ZW1wbGF0ZTxpbnQgVz4g
aW5saW5lIGNvbnN0IGZ4cFJlc0IgVWludDxXPjo6Yml0KGludCBmcm9tKSAgICAgICAgICAgICBj
b25zdCB7ICByZXR1cm4gZnhwUmVzQih0aGlzLT5kX3R5cGUsY29uc3RfY2FzdDx1bnNpZ25lZCBz
aG9ydCo+KHRoaXMtPmRfc3QpLGZyb20pO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBjb25zdCBm
eHBSZXMgIFVpbnQ8Vz46OnNsaWNlKGludCBmcm9tLCBpbnQgdG8pICAgY29uc3QgeyAgcmV0dXJu
IGZ4cFJlcyh0aGlzLT5kX3R5cGUsY29uc3RfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHRoaXMtPmRf
c3QpLGZyb20sdG8pO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBjb25zdCBmeHBSZXMgIFVpbnQ8
Vz46OnJhbmdlKGludCBmcm9tLCBpbnQgdG8pICAgY29uc3QgeyAgcmV0dXJuIGZ4cFJlcyh0aGlz
LT5kX3R5cGUsY29uc3RfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHRoaXMtPmRfc3QpLGZyb20sdG8p
O30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBjb25zdCBmeHBSZXMgIFVpbnQ8Vz46OnJhbmdlKCkg
ICAgICAgICAgICAgICAgICAgY29uc3QgeyAgcmV0dXJuIGZ4cFJlcyh0aGlzLT5kX3R5cGUsY29u
c3RfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHRoaXMtPmRfc3QpLFctMSwwKTt9CnRlbXBsYXRlPGlu
dCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6c2xpY2UoaW50IGZyb20sIGludCB0bywgY29u
c3QgZnhwQXJnIHNlYykgewogICAgICAgICAgICBmeHBSZXModGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3QsZnJvbSx0bykgPSBzZWM7cmV0dXJuICp0aGlzOwogICAgICAgICAgICB9CnRlbXBsYXRlPGlu
dCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgPSAoY29uc3QgZnhwUmVzQiYg
Y21kKSB7CiAgICAgICAgICAgICAgVWludDxXPjo6YXNzaWduKCh1bnNpZ25lZCBsb25nKWJvb2wo
Y21kKSk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAKICAgICAgICAgICAg
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46
Om9wZXJhdG9yID0gKGNvbnN0IGZ4cFJlcyYgY21kKSB7CiAgICAgICAgICAgICAgZnhwT3FTdGF0
ICBzdGF0ID0gICBnZXRTbGljZShjbWQuZnJvbV9wb3MoKSxjbWQudG9fcG9zKCksdGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QsY21kLnR5cGUoKSxjbWQuc3RvcmUoKSk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7IAogICAgICAgICAgICAgIHJldHVybiAqdGhpczt9Cgp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5l
IFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICs9IChjb25zdCBVaW50PFc+JiBvKSB7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgZnhwT3FTdGF0ICBzdGF0ID0gICBhZGQodGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QsdGhpcy0+ZF9zdCxvLmRfc3QpOwogICAgICAgICAgICAgIHRoaXMt
PndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBV
aW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAtPSAoY29uc3QgVWludDxXPiYgbykgewogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgIGZ4cE9xU3RhdCAgc3RhdCA9ICAgc3ViKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0LHRoaXMtPmRfc3Qsby5kX3N0KTsKICAgICAgICAgICAgICB0aGlzLT53
cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWlu
dDxXPiYgVWludDxXPjo6b3BlcmF0b3IgKj0gKGNvbnN0IFVpbnQ8Vz4mIG8pIHsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICBmeHBPcVN0YXQgIHN0YXQgPSAgIG11bHQodGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QsdGhpcy0+ZF9zdCxvLmRfc3QpOwogICAgICAgICAgICAgIHRoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KCiAgICAKdGVtcGxhdGU8aW50IFc+IGlubGlu
ZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciArKyAoKSB7ICBmeHBPcVN0YXQgIHN0YXQgPSAg
IGluY3IodGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJl
dHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3Bl
cmF0b3IgLS0gKCkgeyAgZnhwT3FTdGF0ICBzdGF0ID0gICBkZWNyKHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKICAgIAp0ZW1w
bGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4gVWludDxXPjo6b3BlcmF0b3IgKysgKGludCkge1Vp
bnQ8Vz4gdG1wPSp0aGlzOyAgZnhwT3FTdGF0ICBzdGF0ID0gICBpbmNyKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gdG1wO30KdGVtcGxhdGU8
aW50IFc+IGlubGluZSBVaW50PFc+IFVpbnQ8Vz46Om9wZXJhdG9yIC0tIChpbnQpIHtVaW50PFc+
IHRtcD0qdGhpczsgIGZ4cE9xU3RhdCAgc3RhdCA9ICAgZGVjcih0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuIHRtcDt9CnRlbXBsYXRlPGludCBX
PiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgPSAoY29uc3QgZnhwQXJnJiAgcykg
eyA7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUk9VTkQsMD4ocy5kX3R5cGUscy5kX3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQoKCgoKCgp0ZW1wbGF0ZTxpbnQgVz4gdGVtcGxhdGU8U29sX29wIENN
RCxpbnQgT1BUPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgPSAoY29uc3QgZnhw
T3BlcjxDTUQsT1BUPiYgcykge2Z4cE9xU3RhdCAgc3RhdD0gIHMuY2FsYyh0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KCgp0ZW1w
bGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yID0gKGJvb2wgcykg
ICAge1VpbnQ8Vz46OmFzc2lnbigodW5zaWduZWQgbG9uZylzKTt0aGlzLT53cml0ZSggZnhwQXJn
OjplbXB0eURldGVjdCgpICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5l
IFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yID0gKGNoYXIgcykgICAge1VpbnQ8Vz46OmFzc2ln
bigobG9uZylzKTt0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7ICByZXR1cm4g
KnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9y
ID0gKHNob3J0IHMpICAgIHtVaW50PFc+Ojphc3NpZ24oKGxvbmcpcyk7dGhpcy0+d3JpdGUoIGZ4
cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlu
bGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciA9IChpbnQgcykgICAge1VpbnQ8Vz46OmFz
c2lnbigobG9uZylzKTt0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJh
dG9yID0gKGxvbmcgcykgICAge1VpbnQ8Vz46OmFzc2lnbigobG9uZylzKTt0aGlzLT53cml0ZSgg
ZnhwQXJnOjplbXB0eURldGVjdCgpICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4g
aW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yID0gKHVuc2lnbmVkIGNoYXIgcykgICAg
e1VpbnQ8Vz46OmFzc2lnbigodW5zaWduZWQgbG9uZylzKTt0aGlzLT53cml0ZSggZnhwQXJnOjpl
bXB0eURldGVjdCgpICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVp
bnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yID0gKHVuc2lnbmVkIHNob3J0IHMpICAgIHtVaW50PFc+
Ojphc3NpZ24oKHVuc2lnbmVkIGxvbmcpcyk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRl
Y3QoKSApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBV
aW50PFc+OjpvcGVyYXRvciA9ICh1bnNpZ25lZCBpbnQgcykgICAge1VpbnQ8Vz46OmFzc2lnbigo
dW5zaWduZWQgbG9uZylzKTt0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7ICBy
ZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9w
ZXJhdG9yID0gKHVuc2lnbmVkIGxvbmcgcykgICAge1VpbnQ8Vz46OmFzc2lnbigodW5zaWduZWQg
bG9uZylzKTt0aGlzLT53cml0ZSggZnhwQXJnOjplbXB0eURldGVjdCgpICk7ICByZXR1cm4gKnRo
aXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yID0g
KGZsb2F0IHMpICAgIHtVaW50PFc+Ojphc3NpZ24oKGRvdWJsZSlzKTt0aGlzLT53cml0ZSggZnhw
QXJnOjplbXB0eURldGVjdCgpICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5s
aW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yID0gKGRvdWJsZSBzKSAgICB7VWludDxXPjo6
YXNzaWduKChkb3VibGUpcyk7dGhpcy0+d3JpdGUoIGZ4cEFyZzo6ZW1wdHlEZXRlY3QoKSApOyAg
cmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+Ojpv
cGVyYXRvciArPSAoY29uc3QgZnhwQXJnJiAgcykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBP
cGVyPFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46
Om9wZXJhdG9yICs9IChib29sIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9y
ZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8
U09MX0FERCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53
cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWlu
dDxXPiYgVWludDxXPjo6b3BlcmF0b3IgKz0gKGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBz
dGF0PSAgZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBU
eXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50
IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciArPSAoc2hvcnQgcykgeyAgO3Nv
bF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRo
KCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FERCwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRo
aXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICs9
IChpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19p
bnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BREQsMD4odGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6
b3BlcmF0b3IgKz0gKGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50
PFc+JiBVaW50PFc+OjpvcGVyYXRvciArPSAodW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgKz0gKHVuc2ln
bmVkIHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlw
ZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQURE
LDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUo
ICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4m
IFVpbnQ8Vz46Om9wZXJhdG9yICs9ICh1bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0
ICBzdGF0PSAgZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZm
eHBUeXBlX191aW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8
aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciArPSAodW5zaWduZWQgbG9u
ZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25n
X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQURELDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6
b3BlcmF0b3IgKz0gKGZsb2F0IHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICA7c29sX2wy
cygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtm
eHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BREQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICs9IChkb3Vi
bGUgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX0FERCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9f
bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Qg
KTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBp
bmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgLT0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsg
OyA7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+
IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAtPSAoYm9vbCBzKSB7ICA7c29sX2wy
cygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtm
eHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9TVUIsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3RvcmUsJmZ4cFR5cGVfX2Jvb2xfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIC09IChjaGFy
IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90
eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiwwPih0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUp
LmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJl
dHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3Bl
cmF0b3IgLT0gKHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9TVUIsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50
PFc+JiBVaW50PFc+OjpvcGVyYXRvciAtPSAoaW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0
PSAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBl
X19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4g
aW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIC09IChsb25nIHMpIHsgIDtzb2xfbDJz
KChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4
cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgLT0gKHVuc2ln
bmVkIGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X191Y2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiww
Pih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBfX2Zp
cnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZz
dGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVp
bnQ8Vz46Om9wZXJhdG9yIC09ICh1bnNpZ25lZCBzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylz
LGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3Rh
dCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwm
ZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxh
dGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAtPSAodW5zaWduZWQg
aW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWlu
dF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1NVQiwwPih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6
b3BlcmF0b3IgLT0gKHVuc2lnbmVkIGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2Zp
cnN0X3N0b3JlLCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX1NVQiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9f
dWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4g
aW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIC09IChmbG9hdCBzKSB7RnhwQXNzZXJ0
KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfU1VC
LDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19m
aXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAm
c3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBV
aW50PFc+OjpvcGVyYXRvciAtPSAoZG91YmxlIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsg
ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53
aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9TVUIsMD4odGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxj
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4g
KnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9y
ICo9IChjb25zdCBmeHBBcmcmICBzKSB7IDsgO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09M
X01VTFQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJh
dG9yICo9IChib29sIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX01V
TFQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2Jvb2xfdHlwZSxmeHBf
X2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUo
ICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4m
IFVpbnQ8Vz46Om9wZXJhdG9yICo9IChjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX01VTFQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVf
X2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4g
aW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICo9IChzaG9ydCBzKSB7ICA7c29sX2wy
cygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7
ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7
fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICo9IChp
bnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRf
dHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9NVUxULDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3Jl
KS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICBy
ZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9w
ZXJhdG9yICo9IChsb25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09M
X01VTFQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8
Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICo9ICh1bnNpZ25lZCBjaGFyIHMpIHsgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgpKTtmeHBP
cVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9NVUxULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX191Y2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRl
bXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgKj0gKHVuc2ln
bmVkIHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlw
ZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTVVM
VCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhw
X19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRl
KCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+
JiBVaW50PFc+OjpvcGVyYXRvciAqPSAodW5zaWduZWQgaW50IHMpIHsgIDtzb2xfbDJzKChsb25n
KXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO2Z4cE9xU3Rh
dCAgc3RhdD0gIGZ4cE9wZXI8U09MX01VTFQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUs
JmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0
ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICo9ICh1bnNpZ25lZCBs
b25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxv
bmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9NVUxULDA+KHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxX
Pjo6b3BlcmF0b3IgKj0gKGZsb2F0IHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICA7c29s
X2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgp
KTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9NVUxULDA+KHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlz
O30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAqPSAo
ZG91YmxlIHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4
cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0
YXQ9ICBmeHBPcGVyPFNPTF9NVUxULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBU
eXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50
IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciA8PD0gKGNvbnN0IGZ4cEFyZyYg
IHMpIHsgOyA7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxh
dGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciA8PD0gKGJvb2wgcykg
eyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19ib29sX3R5cGUu
d2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSku
Y2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0
dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVy
YXRvciA8PD0gKGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBm
eHBUeXBlX19jaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xf
TFNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50
PFc+JiBVaW50PFc+OjpvcGVyYXRvciA8PD0gKHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQg
IHN0YXQ9ICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUs
JmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxh
dGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciA8PD0gKGludCBzKSB7
ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2ludF90eXBlLndp
ZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0xTSElGVCwwPih0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2Fs
Yyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJu
ICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRv
ciA8PD0gKGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNI
SUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhw
X19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRl
KCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+
JiBVaW50PFc+OjpvcGVyYXRvciA8PD0gKHVuc2lnbmVkIGNoYXIgcykgeyAgO3NvbF9sMnMoKGxv
bmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2Z4cE9x
U3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0xTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9z
dG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIDw8PSAodW5z
aWduZWQgc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9M
U0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53
cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWlu
dDxXPiYgVWludDxXPjo6b3BlcmF0b3IgPDw9ICh1bnNpZ25lZCBpbnQgcykgeyAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0b3JlLCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30K
dGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciA8PD0gKHVu
c2lnbmVkIGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX191bG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0xT
SElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8
Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIDw8PSAoZmxvYXQgcykge0Z4cEFzc2VydChGWFBfX05PX0NP
TlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190
eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0xTSElGVCwwPih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6
b3BlcmF0b3IgPDw9IChkb3VibGUgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkp
O2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0xTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgPj49
IChjb25zdCBmeHBBcmcmICBzKSB7IDsgO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JT
SElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSxzLmRfdHlwZSxzLmRfc3RvcmUpLmNh
bGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVy
biAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0
b3IgPj49IChib29sIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhw
VHlwZV9fYm9vbF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JT
SElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4
cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0
ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxX
PiYgVWludDxXPjo6b3BlcmF0b3IgPj49IChjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3Rh
dD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhw
VHlwZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGlu
dCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgPj49IChzaG9ydCBzKSB7ICA7
c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUud2lk
dGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUlNISUZULDA+KHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNh
bGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVy
biAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0
b3IgPj49IChpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBU
eXBlX19pbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SU0hJ
RlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90eXBlLGZ4cF9f
Zmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSgg
JnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYg
VWludDxXPjo6b3BlcmF0b3IgPj49IChsb25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlw
ZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBX
PiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgPj49ICh1bnNpZ25lZCBjaGFyIHMp
IHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlw
ZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4odGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9y
ZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAg
cmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+Ojpv
cGVyYXRvciA+Pj0gKHVuc2lnbmVkIHNob3J0IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0
PSAgZnhwT3BlcjxTT0xfUlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBU
eXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxp
bnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yID4+PSAodW5zaWduZWQgaW50
IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWludF90
eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JTSElGVCwwPih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6
b3BlcmF0b3IgPj49ICh1bnNpZ25lZCBsb25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19m
aXJzdF9zdG9yZSwgZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9
ICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5
cGVfX3Vsb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50
IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciA+Pj0gKGZsb2F0IHMpIHtGeHBB
c3NlcnQoRlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9SU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlw
ZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+
d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVp
bnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yID4+PSAoZG91YmxlIHMpIHtGeHBBc3NlcnQoRlhQX19O
T19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xv
bmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0
X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0
ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8
Vz46Om9wZXJhdG9yIC89IChjb25zdCBmeHBBcmcmICBzKSB7IDsgO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSxzLmRfdHlwZSxz
LmRfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0
YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWlu
dDxXPjo6b3BlcmF0b3IgLz0gKGJvb2wgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0
X3N0b3JlLCBmeHBUeXBlX19ib29sX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhw
T3BlcjxTT0xfRElWLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29s
X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3Ro
aXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGlu
ZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAvPSAoY2hhciBzKSB7ICA7c29sX2wycygobG9u
ZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0
YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9ESVYsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUs
JmZ4cFR5cGVfX2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0
ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIC89IChzaG9ydCBzKSB7
ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Nob3J0X3R5cGUu
d2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfRElWLDA+KHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19zaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNh
bGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVy
biAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0
b3IgLz0gKGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5
cGVfX2ludF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0RJViww
Pih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJz
dF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50
PFc+OjpvcGVyYXRvciAvPSAobG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBP
cGVyPFNPTF9ESVYsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhp
cy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5l
IFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIC89ICh1bnNpZ25lZCBjaGFyIHMpIHsgIDtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJfdHlwZS53aWR0aCgp
KTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9ESVYsMD4odGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3RvcmUsJmZ4cFR5cGVfX3VjaGFyX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlz
O30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAvPSAo
dW5zaWduZWQgc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBm
eHBUeXBlX191c2hvcnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9ESVYsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53
cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWlu
dDxXPiYgVWludDxXPjo6b3BlcmF0b3IgLz0gKHVuc2lnbmVkIGludCBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtmeHBP
cVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9ESVYsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1w
bGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIC89ICh1bnNpZ25l
ZCBsb25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9f
dWxvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9ESVYsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Vsb25nX3R5cGUsZnhwX19maXJz
dF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50
PFc+OjpvcGVyYXRvciAvPSAoZmxvYXQgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtz
b2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRo
KCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgLz0g
KGRvdWJsZSBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBz
dGF0PSAgZnhwT3BlcjxTT0xfRElWLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBU
eXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50
IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAlPSAoY29uc3QgZnhwQXJnJiAg
cykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3RvcmUscy5kX3R5cGUscy5kX3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxp
bnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICU9IChib29sIHMpIHsgIDtz
b2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRo
KCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JFTSwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgJT0g
KGNoYXIgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19j
aGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsZnhwX19maXJzdF9z
dG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCAp
OyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+
OjpvcGVyYXRvciAlPSAoc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0
b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9w
ZXI8U09MX1JFTSwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fc2hvcnRf
dHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhp
cy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5l
IFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICU9IChpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQg
IHN0YXQ9ICBmeHBPcGVyPFNPTF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4
cFR5cGVfX2ludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGlu
dCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgJT0gKGxvbmcgcykgeyAgO3Nv
bF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgo
KSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlz
O30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAlPSAo
dW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xf
UkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191Y2hhcl90eXBlLGZ4
cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0
ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxX
PiYgVWludDxXPjo6b3BlcmF0b3IgJT0gKHVuc2lnbmVkIHNob3J0IHMpIHsgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdXNob3J0X3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX191c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0
ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICU9ICh1bnNp
Z25lZCBpbnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBl
X191aW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191aW50X3R5cGUsZnhwX19maXJz
dF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50
PFc+OjpvcGVyYXRvciAlPSAodW5zaWduZWQgbG9uZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4
cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBz
dGF0PSAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBU
eXBlX191bG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGlu
dCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgJT0gKGZsb2F0IHMpIHtGeHBB
c3NlcnQoRlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9SRU0sMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8
Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICU9IChkb3VibGUgcykge0Z4cEFzc2VydChGWFBfX05PX0NP
TlYpOyAgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190
eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX1JFTSwwPih0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUp
LmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJl
dHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3Bl
cmF0b3IgJj0gKGNvbnN0IGZ4cEFyZyYgIHMpIHsgOyA7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3Bl
cjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9y
ZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAg
cmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+Ojpv
cGVyYXRvciAmPSAoYm9vbCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUs
IGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9BTkQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2Jvb2xfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8
Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICY9IChjaGFyIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhw
X19maXJzdF9zdG9yZSwgZnhwVHlwZV9fY2hhcl90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3Rh
dD0gIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlw
ZV9fY2hhcl90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBX
PiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgJj0gKHNob3J0IHMpIHsgIDtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgp
KTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9BTkQsMD4odGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlz
O30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAmPSAo
aW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50
X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19pbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3Jl
KS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICBy
ZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9w
ZXJhdG9yICY9IChsb25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09M
X0FORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBlLGZ4
cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0
ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxX
PiYgVWludDxXPjo6b3BlcmF0b3IgJj0gKHVuc2lnbmVkIGNoYXIgcykgeyAgO3NvbF9sMnMoKGxv
bmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO2Z4cE9x
U3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1w
bGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICY9ICh1bnNpZ25l
ZCBzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVf
X3VzaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FORCww
Pih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdXNob3J0X3R5cGUsZnhwX19m
aXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAm
c3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBV
aW50PFc+OjpvcGVyYXRvciAmPSAodW5zaWduZWQgaW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMs
ZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAg
c3RhdD0gIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhw
VHlwZV9fdWludF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGlu
dCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgJj0gKHVuc2lnbmVkIGxvbmcg
cykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191bG9uZ190
eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0FORCwwPih0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3Jl
KS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICBy
ZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9w
ZXJhdG9yICY9IChmbG9hdCBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMo
KGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7Znhw
T3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVt
cGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAmPSAoZG91Ymxl
IHMpIHtGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBm
eHBPcGVyPFNPTF9BTkQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xv
bmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7
dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5s
aW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIHw9IChjb25zdCBmeHBBcmcmICBzKSB7IDsg
O2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX09SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCAp
O3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlu
bGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciB8PSAoYm9vbCBzKSB7ICA7c29sX2wycygo
bG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlwZS53aWR0aCgpKTtmeHBP
cVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSwmZnhwVHlwZV9fYm9vbF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBs
YXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgfD0gKGNoYXIgcykg
eyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19jaGFyX3R5cGUu
d2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfT1IsMD4odGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2NoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxj
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4g
KnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9y
IHw9IChzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5
cGVfX3Nob3J0X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfT1Is
MD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3Nob3J0X3R5cGUsZnhwX19m
aXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAm
c3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBV
aW50PFc+OjpvcGVyYXRvciB8PSAoaW50IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJz
dF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhw
T3BlcjxTT0xfT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2ludF90
eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlz
LT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUg
VWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgfD0gKGxvbmcgcykgeyAgO3NvbF9sMnMoKGxvbmcp
cyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0
ICBzdGF0PSAgZnhwT3BlcjxTT0xfT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4
cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxp
bnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIHw9ICh1bnNpZ25lZCBjaGFy
IHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fdWNoYXJf
dHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9PUiwwPih0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWNoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3Jl
KS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICBy
ZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9w
ZXJhdG9yIHw9ICh1bnNpZ25lZCBzaG9ydCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0g
IGZ4cE9wZXI8U09MX09SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191
c2hvcnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4g
aW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIHw9ICh1bnNpZ25lZCBpbnQgcykgeyAg
O3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX191aW50X3R5cGUud2lk
dGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfT1IsMD4odGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VpbnRfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRo
aXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIHw9
ICh1bnNpZ25lZCBsb25nIHMpIHsgIDtzb2xfbDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwg
ZnhwVHlwZV9fdWxvbmdfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNP
TF9PUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8
Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIHw9IChmbG9hdCBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09O
Vik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5
cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfT1IsMD4odGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX2xvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJh
dG9yIHw9IChkb3VibGUgcykge0Z4cEFzc2VydChGWFBfX05PX0NPTlYpOyAgIDtzb2xfbDJzKChs
b25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9fbG9uZ190eXBlLndpZHRoKCkpO2Z4cE9x
U3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX09SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3Jl
LCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUs
dGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxh
dGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciBePSAoY29uc3QgZnhw
QXJnJiAgcykgeyA7IDtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLHMuZF90eXBlLHMuZF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5
cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVt
cGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciBePSAoYm9vbCBz
KSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2Jvb2xfdHlw
ZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRf
dHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19ib29sX3R5cGUsZnhwX19maXJzdF9zdG9yZSku
Y2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0
dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVy
YXRvciBePSAoY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4
cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9F
WE9SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19jaGFyX3R5cGUsZnhw
X19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRl
KCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+
JiBVaW50PFc+OjpvcGVyYXRvciBePSAoc2hvcnQgcykgeyAgO3NvbF9sMnMoKGxvbmcpcyxmeHBf
X2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19zaG9ydF90eXBlLndpZHRoKCkpO2Z4cE9xU3RhdCAgc3Rh
dD0gIGZ4cE9wZXI8U09MX0VYT1IsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5
cGVfX3Nob3J0X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50
IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciBePSAoaW50IHMpIHsgIDtzb2xf
bDJzKChsb25nKXMsZnhwX19maXJzdF9zdG9yZSwgZnhwVHlwZV9faW50X3R5cGUud2lkdGgoKSk7
ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdG9yZSwmZnhwVHlwZV9faW50X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30K
dGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciBePSAobG9u
ZyBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX2xvbmdf
dHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMt
PmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX19sb25nX3R5cGUsZnhwX19maXJzdF9zdG9y
ZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAg
cmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGluZSBVaW50PFc+JiBVaW50PFc+Ojpv
cGVyYXRvciBePSAodW5zaWduZWQgY2hhciBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmly
c3Rfc3RvcmUsIGZ4cFR5cGVfX3VjaGFyX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAg
ZnhwT3BlcjxTT0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9f
dWNoYXJfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQp0ZW1wbGF0ZTxpbnQgVz4g
aW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIF49ICh1bnNpZ25lZCBzaG9ydCBzKSB7
ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3VzaG9ydF90eXBl
LndpZHRoKCkpO2Z4cE9xU3RhdCAgc3RhdD0gIGZ4cE9wZXI8U09MX0VYT1IsMD4odGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3RvcmUsJmZ4cFR5cGVfX3VzaG9ydF90eXBlLGZ4cF9fZmlyc3Rfc3RvcmUp
LmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJl
dHVybiAqdGhpczt9CnRlbXBsYXRlPGludCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3Bl
cmF0b3IgXj0gKHVuc2lnbmVkIGludCBzKSB7ICA7c29sX2wycygobG9uZylzLGZ4cF9fZmlyc3Rf
c3RvcmUsIGZ4cFR5cGVfX3VpbnRfdHlwZS53aWR0aCgpKTtmeHBPcVN0YXQgIHN0YXQ9ICBmeHBP
cGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZmeHBUeXBlX191aW50
X3R5cGUsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3Ro
aXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KdGVtcGxhdGU8aW50IFc+IGlubGlu
ZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciBePSAodW5zaWduZWQgbG9uZyBzKSB7ICA7c29s
X2wycygobG9uZylzLGZ4cF9fZmlyc3Rfc3RvcmUsIGZ4cFR5cGVfX3Vsb25nX3R5cGUud2lkdGgo
KSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxTT0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmZnhwVHlwZV9fdWxvbmdfdHlwZSxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRo
aXM7fQp0ZW1wbGF0ZTxpbnQgVz4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIF49
IChmbG9hdCBzKSB7RnhwQXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxm
eHBfX2ZpcnN0X3N0b3JlLCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBz
dGF0PSAgZnhwT3BlcjxTT0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhw
VHlwZV9fbG9uZ190eXBlLGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CnRlbXBsYXRlPGlu
dCBXPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6b3BlcmF0b3IgXj0gKGRvdWJsZSBzKSB7Rnhw
QXNzZXJ0KEZYUF9fTk9fQ09OVik7ICAgO3NvbF9sMnMoKGxvbmcpcyxmeHBfX2ZpcnN0X3N0b3Jl
LCBmeHBUeXBlX19sb25nX3R5cGUud2lkdGgoKSk7ZnhwT3FTdGF0ICBzdGF0PSAgZnhwT3BlcjxT
T0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmZnhwVHlwZV9fbG9uZ190eXBl
LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53
cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CiMgNTg4OSAiL2VkYy93YS9iZW5lZGljdC9m
M19pZDYvY3NmZy9ocHVfZ251L0ZkX2hvbWUvaW5jbHVkZS9meHAuaCIKCgoKCgoKCgp0ZW1wbGF0
ZTxpbnQgVywgaW50IFA+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5saW5lIEZpeDxX
LFA+JiBGaXg8VyxQPjo6b3BlcmF0b3IgKz0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpIHsg
O2Z4cFR5cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAgc3Rh
dCA9ICAgZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZvdCxm
eHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3Jp
dGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGludCBXLCBpbnQg
UD4gdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+
OjpvcGVyYXRvciAtPSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtz
LmNhbGNURCgmb3QsZnhwX19maXJzdF9zdG9yZSk7ZnhwT3FTdGF0ICBzdGF0ID0gICBmeHBPcGVy
PFNPTF9TVUIsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3Rv
cmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsg
IHJldHVybiAqdGhpczt9CgoKCgoKCgoKdGVtcGxhdGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPUFQ+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yICo9
IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKSB7IDtmeHBUeXBlIG90O3MuY2FsY1REKCZvdCxm
eHBfX2ZpcnN0X3N0b3JlKTtmeHBPcVN0YXQgIHN0YXQgPSAgIGZ4cE9wZXI8U09MX01VTFQsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CgoKCgoKCgoKdGVtcGxhdGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGlu
dCBPUFQ+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIDw8PSAoY29uc3QgZnhw
T3BlcjxDTUQsT1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNURCgmb3QsZnhwX19maXJzdF9z
dG9yZSk7ZnhwT3FTdGF0ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CgoKCgoK
CgoKdGVtcGxhdGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+IGlu
bGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yID4+PSAoY29uc3QgZnhwT3BlcjxDTUQs
T1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNURCgmb3QsZnhwX19maXJzdF9zdG9yZSk7Znhw
T3FTdGF0ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CgoKCgoKCgoKdGVtcGxh
dGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+IGlubGluZSBGaXg8
VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIC89IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKSB7
IDtmeHBUeXBlIG90O3MuY2FsY1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTtmeHBPcVN0YXQgIHN0
YXQgPSAgIGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmb3Qs
ZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndy
aXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KCgoKCgoKCgp0ZW1wbGF0ZTxpbnQgVywgaW50
IFA+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5saW5lIEZpeDxXLFA+JiBGaXg8VyxQ
Pjo6b3BlcmF0b3IgJT0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUgb3Q7
cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhwT3Bl
cjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZvdCxmeHBfX2ZpcnN0X3N0
b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7
ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGludCBXLCBpbnQgUD4gdGVtcGxhdGU8
U29sX29wIENNRCxpbnQgT1BUPiBpbmxpbmUgRml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciAm
PSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNURCgmb3Qs
ZnhwX19maXJzdF9zdG9yZSk7ZnhwT3FTdGF0ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9BTkQsMD4o
dGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhp
czt9CgoKCgoKCgoKdGVtcGxhdGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGlu
dCBPUFQ+IGlubGluZSBGaXg8VyxQPiYgRml4PFcsUD46Om9wZXJhdG9yIHw9IChjb25zdCBmeHBP
cGVyPENNRCxPUFQ+JiBzKSB7IDtmeHBUeXBlIG90O3MuY2FsY1REKCZvdCxmeHBfX2ZpcnN0X3N0
b3JlKTtmeHBPcVN0YXQgIHN0YXQgPSAgIGZ4cE9wZXI8U09MX09SLDA+KHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0b3JlLCZvdCxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRl
bXBsYXRlPGludCBXLCBpbnQgUD4gdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPiBpbmxpbmUg
Rml4PFcsUD4mIEZpeDxXLFA+OjpvcGVyYXRvciBePSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYg
cykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNURCgmb3QsZnhwX19maXJzdF9zdG9yZSk7ZnhwT3FTdGF0
ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3Jl
LCZvdCxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhp
cy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGludCBX
PiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3Bl
cmF0b3IgKz0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUgb3Q7cy5jYWxj
VEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhwT3BlcjxTT0xf
QURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZvdCxmeHBfX2ZpcnN0X3N0b3JlKS5j
YWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1
cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGludCBXPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGlu
dCBPUFQ+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgLT0gKGNvbnN0IGZ4cE9wZXI8
Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUp
O2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhwT3BlcjxTT0xfU1VCLDA+KHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0b3JlLCZvdCxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5k
X3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBs
YXRlPGludCBXPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+IGlubGluZSBJbnQ8Vz4mIElu
dDxXPjo6b3BlcmF0b3IgKj0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUg
b3Q7cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhw
T3BlcjxTT0xfTVVMVCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmb3QsZnhwX19maXJz
dF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAgcmV0dXJuICp0aGlzO30KCgoKCgoKCgp0ZW1wbGF0ZTxpbnQgVz4gdGVtcGxhdGU8U29s
X29wIENNRCxpbnQgT1BUPiBpbmxpbmUgSW50PFc+JiBJbnQ8Vz46Om9wZXJhdG9yIDw8PSAoY29u
c3QgZnhwT3BlcjxDTUQsT1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNURCgmb3QsZnhwX19m
aXJzdF9zdG9yZSk7ZnhwT3FTdGF0ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9MU0hJRlQsMD4odGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9
CgoKCgoKCgoKdGVtcGxhdGU8aW50IFc+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5s
aW5lIEludDxXPiYgSW50PFc+OjpvcGVyYXRvciA+Pj0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4m
IHMpIHsgO2Z4cFR5cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO2Z4cE9xU3Rh
dCAgc3RhdCA9ICAgZnhwT3BlcjxTT0xfUlNISUZULDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0
b3JlLCZvdCxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7
dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGlu
dCBXPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6
b3BlcmF0b3IgLz0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUgb3Q7cy5j
YWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhwT3BlcjxT
T0xfRElWLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZvdCxmeHBfX2ZpcnN0X3N0b3Jl
KS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICBy
ZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGludCBXPiB0ZW1wbGF0ZTxTb2xfb3AgQ01E
LGludCBPUFQ+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgJT0gKGNvbnN0IGZ4cE9w
ZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3Rv
cmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhwT3BlcjxTT0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0b3JlLCZvdCxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlz
LT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRl
bXBsYXRlPGludCBXPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+IGlubGluZSBJbnQ8Vz4m
IEludDxXPjo6b3BlcmF0b3IgJj0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5
cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAg
ZnhwT3BlcjxTT0xfQU5ELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZvdCxmeHBfX2Zp
cnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZz
dGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGludCBXPiB0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPUFQ+IGlubGluZSBJbnQ8Vz4mIEludDxXPjo6b3BlcmF0b3IgfD0gKGNv
bnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9f
Zmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhwT3BlcjxTT0xfT1IsMD4odGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CgoK
CgoKCgoKdGVtcGxhdGU8aW50IFc+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5saW5l
IEludDxXPiYgSW50PFc+OjpvcGVyYXRvciBePSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcykg
eyA7ZnhwVHlwZSBvdDtzLmNhbGNURCgmb3QsZnhwX19maXJzdF9zdG9yZSk7ZnhwT3FTdGF0ICBz
dGF0ID0gICBmeHBPcGVyPFNPTF9FWE9SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZv
dCxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+
d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGludCBXLCBp
bnQgUD4gdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4
PFcsUD46Om9wZXJhdG9yICs9IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKSB7IDtmeHBUeXBl
IG90O3MuY2FsY1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTtmeHBPcVN0YXQgIHN0YXQgPSAgIGZ4
cE9wZXI8U09MX0FERCwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmb3QsZnhwX19maXJz
dF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAgcmV0dXJuICp0aGlzO30KCgoKCgoKCgp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IHRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVy
YXRvciAtPSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNU
RCgmb3QsZnhwX19maXJzdF9zdG9yZSk7ZnhwT3FTdGF0ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9T
VUIsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNh
bGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVy
biAqdGhpczt9CgoKCgoKCgoKdGVtcGxhdGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPUFQ+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgKj0gKGNv
bnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9f
Zmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhwT3BlcjxTT0xfTVVMVCwwPih0aGlz
LT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmb3QsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5k
X3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30K
CgoKCgoKCgp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9Q
VD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVyYXRvciA8PD0gKGNvbnN0IGZ4cE9w
ZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3Rv
cmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhwT3BlcjxTT0xfTFNISUZULDA+KHRoaXMtPmRfdHlw
ZSx0aGlzLT5kX3N0b3JlLCZvdCxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0
aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoK
CnRlbXBsYXRlPGludCBXLCBpbnQgUD4gdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPiBpbmxp
bmUgVWZpeDxXLFA+JiBVZml4PFcsUD46Om9wZXJhdG9yID4+PSAoY29uc3QgZnhwT3BlcjxDTUQs
T1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNURCgmb3QsZnhwX19maXJzdF9zdG9yZSk7Znhw
T3FTdGF0ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMt
PmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRf
c3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CgoKCgoKCgoKdGVtcGxh
dGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+IGlubGluZSBVZml4
PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgLz0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMp
IHsgO2Z4cFR5cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAg
c3RhdCA9ICAgZnhwT3BlcjxTT0xfRElWLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZv
dCxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+
d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGludCBXLCBp
bnQgUD4gdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPiBpbmxpbmUgVWZpeDxXLFA+JiBVZml4
PFcsUD46Om9wZXJhdG9yICU9IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKSB7IDtmeHBUeXBl
IG90O3MuY2FsY1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTtmeHBPcVN0YXQgIHN0YXQgPSAgIGZ4
cE9wZXI8U09MX1JFTSwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9yZSwmb3QsZnhwX19maXJz
dF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3RoaXMtPndyaXRlKCAmc3Rh
dCApOyAgcmV0dXJuICp0aGlzO30KCgoKCgoKCgp0ZW1wbGF0ZTxpbnQgVywgaW50IFA+IHRlbXBs
YXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5saW5lIFVmaXg8VyxQPiYgVWZpeDxXLFA+OjpvcGVy
YXRvciAmPSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNU
RCgmb3QsZnhwX19maXJzdF9zdG9yZSk7ZnhwT3FTdGF0ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9B
TkQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNh
bGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVy
biAqdGhpczt9CgoKCgoKCgoKdGVtcGxhdGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxTb2xfb3Ag
Q01ELGludCBPUFQ+IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgfD0gKGNv
bnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9f
Zmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhwT3BlcjxTT0xfT1IsMD4odGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90
eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CgoK
CgoKCgoKdGVtcGxhdGU8aW50IFcsIGludCBQPiB0ZW1wbGF0ZTxTb2xfb3AgQ01ELGludCBPUFQ+
IGlubGluZSBVZml4PFcsUD4mIFVmaXg8VyxQPjo6b3BlcmF0b3IgXj0gKGNvbnN0IGZ4cE9wZXI8
Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUp
O2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhwT3BlcjxTT0xfRVhPUiwwPih0aGlzLT5kX3R5cGUsdGhp
cy0+ZF9zdG9yZSwmb3QsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+
ZF9zdCApO3RoaXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KCgoKCgoKCgp0ZW1w
bGF0ZTxpbnQgVz4gdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPiBpbmxpbmUgVWludDxXPiYg
VWludDxXPjo6b3BlcmF0b3IgKz0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5
cGUgb3Q7cy5jYWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAg
ZnhwT3BlcjxTT0xfQURELDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZvdCxmeHBfX2Zp
cnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZz
dGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGludCBXPiB0ZW1wbGF0ZTxT
b2xfb3AgQ01ELGludCBPUFQ+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAtPSAo
Y29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNURCgmb3QsZnhw
X19maXJzdF9zdG9yZSk7ZnhwT3FTdGF0ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9TVUIsMD4odGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9
CgoKCgoKCgoKdGVtcGxhdGU8aW50IFc+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5s
aW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yICo9IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+
JiBzKSB7IDtmeHBUeXBlIG90O3MuY2FsY1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTtmeHBPcVN0
YXQgIHN0YXQgPSAgIGZ4cE9wZXI8U09MX01VTFQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3Rv
cmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0
aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CgoKCgoKCgoKdGVtcGxhdGU8aW50
IFc+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46
Om9wZXJhdG9yIDw8PSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtz
LmNhbGNURCgmb3QsZnhwX19maXJzdF9zdG9yZSk7ZnhwT3FTdGF0ICBzdGF0ID0gICBmeHBPcGVy
PFNPTF9MU0hJRlQsMD4odGhpcy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rf
c3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQg
KTsgIHJldHVybiAqdGhpczt9CgoKCgoKCgoKdGVtcGxhdGU8aW50IFc+IHRlbXBsYXRlPFNvbF9v
cCBDTUQsaW50IE9QVD4gaW5saW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yID4+PSAoY29u
c3QgZnhwT3BlcjxDTUQsT1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNURCgmb3QsZnhwX19m
aXJzdF9zdG9yZSk7ZnhwT3FTdGF0ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9SU0hJRlQsMD4odGhp
cy0+ZF90eXBlLHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+
ZF90eXBlLHRoaXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9
CgoKCgoKCgoKdGVtcGxhdGU8aW50IFc+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5s
aW5lIFVpbnQ8Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIC89IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+
JiBzKSB7IDtmeHBUeXBlIG90O3MuY2FsY1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTtmeHBPcVN0
YXQgIHN0YXQgPSAgIGZ4cE9wZXI8U09MX0RJViwwPih0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdG9y
ZSwmb3QsZnhwX19maXJzdF9zdG9yZSkuY2FsYyh0aGlzLT5kX3R5cGUsdGhpcy0+ZF9zdCApO3Ro
aXMtPndyaXRlKCAmc3RhdCApOyAgcmV0dXJuICp0aGlzO30KCgoKCgoKCgp0ZW1wbGF0ZTxpbnQg
Vz4gdGVtcGxhdGU8U29sX29wIENNRCxpbnQgT1BUPiBpbmxpbmUgVWludDxXPiYgVWludDxXPjo6
b3BlcmF0b3IgJT0gKGNvbnN0IGZ4cE9wZXI8Q01ELE9QVD4mIHMpIHsgO2Z4cFR5cGUgb3Q7cy5j
YWxjVEQoJm90LGZ4cF9fZmlyc3Rfc3RvcmUpO2Z4cE9xU3RhdCAgc3RhdCA9ICAgZnhwT3BlcjxT
T0xfUkVNLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZvdCxmeHBfX2ZpcnN0X3N0b3Jl
KS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICBy
ZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGludCBXPiB0ZW1wbGF0ZTxTb2xfb3AgQ01E
LGludCBPUFQ+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciAmPSAoY29uc3QgZnhw
T3BlcjxDTUQsT1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNURCgmb3QsZnhwX19maXJzdF9z
dG9yZSk7ZnhwT3FTdGF0ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9BTkQsMD4odGhpcy0+ZF90eXBl
LHRoaXMtPmRfc3RvcmUsJm90LGZ4cF9fZmlyc3Rfc3RvcmUpLmNhbGModGhpcy0+ZF90eXBlLHRo
aXMtPmRfc3QgKTt0aGlzLT53cml0ZSggJnN0YXQgKTsgIHJldHVybiAqdGhpczt9CgoKCgoKCgoK
dGVtcGxhdGU8aW50IFc+IHRlbXBsYXRlPFNvbF9vcCBDTUQsaW50IE9QVD4gaW5saW5lIFVpbnQ8
Vz4mIFVpbnQ8Vz46Om9wZXJhdG9yIHw9IChjb25zdCBmeHBPcGVyPENNRCxPUFQ+JiBzKSB7IDtm
eHBUeXBlIG90O3MuY2FsY1REKCZvdCxmeHBfX2ZpcnN0X3N0b3JlKTtmeHBPcVN0YXQgIHN0YXQg
PSAgIGZ4cE9wZXI8U09MX09SLDA+KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZvdCxmeHBf
X2ZpcnN0X3N0b3JlKS5jYWxjKHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUo
ICZzdGF0ICk7ICByZXR1cm4gKnRoaXM7fQoKCgoKCgoKCnRlbXBsYXRlPGludCBXPiB0ZW1wbGF0
ZTxTb2xfb3AgQ01ELGludCBPUFQ+IGlubGluZSBVaW50PFc+JiBVaW50PFc+OjpvcGVyYXRvciBe
PSAoY29uc3QgZnhwT3BlcjxDTUQsT1BUPiYgcykgeyA7ZnhwVHlwZSBvdDtzLmNhbGNURCgmb3Qs
ZnhwX19maXJzdF9zdG9yZSk7ZnhwT3FTdGF0ICBzdGF0ID0gICBmeHBPcGVyPFNPTF9FWE9SLDA+
KHRoaXMtPmRfdHlwZSx0aGlzLT5kX3N0b3JlLCZvdCxmeHBfX2ZpcnN0X3N0b3JlKS5jYWxjKHRo
aXMtPmRfdHlwZSx0aGlzLT5kX3N0ICk7dGhpcy0+d3JpdGUoICZzdGF0ICk7ICByZXR1cm4gKnRo
aXM7fQoKCiMgNjMwMiAiL2VkYy93YS9iZW5lZGljdC9mM19pZDYvY3NmZy9ocHVfZ251L0ZkX2hv
bWUvaW5jbHVkZS9meHAuaCIKCgoKIAogCiAKIAogCiAKCgoKCgoKCnRlbXBsYXRlPFNvbF9vcCBD
TUQ+CmlubGluZSBmeHBPcGVyPENNRCwxPiBvcWMoY29uc3QgZnhwT3BlcjxDTUQsMD4mIGNtZCxj
b25zdCBmeHBPcWMqIGJ0YykKewogICByZXR1cm4gZnhwT3BlcjxDTUQsMT4oY21kLmRfZmlyc3Rf
dHlwZSxjbWQuZF9maXJzdF9zdG9yZSxjbWQuZF9zZWNvbmRfdHlwZSxjbWQuZF9zZWNvbmRfc3Rv
cmUsY21kLmRfc3RpZCxidGMpOwp9Cgp0ZW1wbGF0ZTxTb2xfb3AgQ01EPgppbmxpbmUgZnhwT3Bl
cjxDTUQsMT4gb3FjKGNvbnN0IGZ4cE9wZXI8Q01ELDE+JiBjbWQsY29uc3QgZnhwT3FjKiBidGMp
CnsKICAgcmV0dXJuIGZ4cE9wZXI8Q01ELDE+KGNtZC5kX2ZpcnN0X3R5cGUsY21kLmRfZmlyc3Rf
c3RvcmUsY21kLmRfc2Vjb25kX3R5cGUsY21kLmRfc2Vjb25kX3N0b3JlLGNtZC5kX3N0aWQsYnRj
KTsKfQoKCmlubGluZSBmeHBPcGVyPFNPTF9ST1VORCwxPiBvcWMoY29uc3QgZnhwQXJnJiBhLGNv
bnN0IGZ4cE9xYyogYnRjKQp7CiAgIHJldHVybiBmeHBPcGVyPFNPTF9ST1VORCwxPihhLmRfdHlw
ZSxhLmRfc3RvcmUsIGJ0Yyk7Cn0KCmlubGluZSBmeHBPcGVyPFNPTF9ST1VORCwxPiBvcWMoYm9v
bCBiLGNvbnN0IGZ4cE9xYyogYnRjKQp7CiAgIHVuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0g
c3RvcmVBbGxvYyhzdCk7c29sX2wycyhiPzE6MCxzdCwgZnhwVHlwZV9fYm9vbF90eXBlLndpZHRo
KCkpO3JldHVybiBmeHBPcGVyPFNPTF9ST1VORCwxPigmZnhwVHlwZV9fYm9vbF90eXBlLHN0LCBi
dGMsIGlkKTsKfQoKaW5saW5lIGZ4cE9wZXI8U09MX1JPVU5ELDE+IG9xYyhjaGFyIGksY29uc3Qg
ZnhwT3FjKiBidGMpCnsKICAgdW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0KTtzb2xfbDJzKChsb25nKWksc3QsIGZ4cFR5cGVfX2NoYXJfdHlwZS53aWR0aCgpKTtyZXR1
cm4gZnhwT3BlcjxTT0xfUk9VTkQsMT4oJmZ4cFR5cGVfX2NoYXJfdHlwZSxzdCwgYnRjLCBpZCk7
Cn0KCmlubGluZSBmeHBPcGVyPFNPTF9ST1VORCwxPiBvcWModW5zaWduZWQgY2hhciBpLGNvbnN0
IGZ4cE9xYyogYnRjKQp7CiAgIHVuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxv
YyhzdCk7c29sX2wycygobG9uZylpLHN0LCBmeHBUeXBlX191Y2hhcl90eXBlLndpZHRoKCkpO3Jl
dHVybiBmeHBPcGVyPFNPTF9ST1VORCwxPigmZnhwVHlwZV9fdWNoYXJfdHlwZSxzdCwgYnRjLCBp
ZCk7Cn0KCmlubGluZSBmeHBPcGVyPFNPTF9ST1VORCwxPiBvcWMoc2hvcnQgaSxjb25zdCBmeHBP
cWMqIGJ0YykKewogICB1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3Qp
O3NvbF9sMnMoKGxvbmcpaSxzdCwgZnhwVHlwZV9fc2hvcnRfdHlwZS53aWR0aCgpKTtyZXR1cm4g
ZnhwT3BlcjxTT0xfUk9VTkQsMT4oJmZ4cFR5cGVfX3Nob3J0X3R5cGUsc3QsIGJ0YywgaWQpOwp9
CgppbmxpbmUgZnhwT3BlcjxTT0xfUk9VTkQsMT4gb3FjKHVuc2lnbmVkIHNob3J0IGksY29uc3Qg
ZnhwT3FjKiBidGMpCnsKICAgdW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9j
KHN0KTtzb2xfbDJzKChsb25nKWksc3QsIGZ4cFR5cGVfX3VzaG9ydF90eXBlLndpZHRoKCkpO3Jl
dHVybiBmeHBPcGVyPFNPTF9ST1VORCwxPigmZnhwVHlwZV9fdXNob3J0X3R5cGUsc3QsIGJ0Yywg
aWQpOwp9CgppbmxpbmUgZnhwT3BlcjxTT0xfUk9VTkQsMT4gb3FjKGludCBpLGNvbnN0IGZ4cE9x
YyogYnRjKQp7CiAgIHVuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7
c29sX2wycygobG9uZylpLHN0LCBmeHBUeXBlX19pbnRfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhw
T3BlcjxTT0xfUk9VTkQsMT4oJmZ4cFR5cGVfX2ludF90eXBlLHN0LCBidGMsIGlkKTsKfQoKaW5s
aW5lIGZ4cE9wZXI8U09MX1JPVU5ELDE+IG9xYyh1bnNpZ25lZCBpbnQgaSxjb25zdCBmeHBPcWMq
IGJ0YykKewogICB1bnNpZ25lZCBzaG9ydCogc3Q7IGludCBpZCA9IHN0b3JlQWxsb2Moc3QpO3Nv
bF9sMnMoKGxvbmcpaSxzdCwgZnhwVHlwZV9fdWludF90eXBlLndpZHRoKCkpO3JldHVybiBmeHBP
cGVyPFNPTF9ST1VORCwxPigmZnhwVHlwZV9fdWludF90eXBlLHN0LCBidGMsIGlkKTsKfQoKaW5s
aW5lIGZ4cE9wZXI8U09MX1JPVU5ELDE+IG9xYyhsb25nIGksY29uc3QgZnhwT3FjKiBidGMpCnsK
ICAgdW5zaWduZWQgc2hvcnQqIHN0OyBpbnQgaWQgPSBzdG9yZUFsbG9jKHN0KTtzb2xfbDJzKChs
b25nKWksc3QsIGZ4cFR5cGVfX2xvbmdfdHlwZS53aWR0aCgpKTtyZXR1cm4gZnhwT3BlcjxTT0xf
Uk9VTkQsMT4oJmZ4cFR5cGVfX2xvbmdfdHlwZSxzdCwgYnRjLCBpZCk7Cn0KCmlubGluZSBmeHBP
cGVyPFNPTF9ST1VORCwxPiBvcWModW5zaWduZWQgbG9uZyBpLGNvbnN0IGZ4cE9xYyogYnRjKQp7
CiAgIHVuc2lnbmVkIHNob3J0KiBzdDsgaW50IGlkID0gc3RvcmVBbGxvYyhzdCk7c29sX2wycygo
bG9uZylpLHN0LCBmeHBUeXBlX191bG9uZ190eXBlLndpZHRoKCkpO3JldHVybiBmeHBPcGVyPFNP
TF9ST1VORCwxPigmZnhwVHlwZV9fdWxvbmdfdHlwZSxzdCwgYnRjLCBpZCk7Cn0KCmlubGluZSBm
eHBPcGVyPFNPTF9ST1VORCwxPiBvcWMoZmxvYXQgaSxjb25zdCBmeHBPcWMqIGJ0YykKewogICBG
eHBBc3NlcnQoRlhQX19OT19DT05WKTsgICByZXR1cm4gb3FjKChsb25nKShpKSwgYnRjKTsKfQoK
aW5saW5lIGZ4cE9wZXI8U09MX1JPVU5ELDE+IG9xYyhkb3VibGUgaSxjb25zdCBmeHBPcWMqIGJ0
YykKewogICBGeHBBc3NlcnQoRlhQX19OT19DT05WKTsgICByZXR1cm4gb3FjKChsb25nKShpKSwg
YnRjKTsKfQoKIAoKCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgVCxjbGFzcyBUMiwgY2xhc3MgVDM+
IGlubGluZSBjb25zdCBUJiBibmQoCiAgIGNvbnN0IFQmIGRhdGEsCiAgIGNvbnN0IFQyJiBsb3cs
CiAgIGNvbnN0IFQzJiBoaWdoCikKewogICAgCiAgICAKCiAgIGlmICghKChsb3cgPD0gZGF0YSkg
JiYgKGRhdGEgPD0gaGlnaCkpKSB7CiAgICAgIEZ4cEJuZEFzc2VydChGeHBURHRleHQoZGF0YSks
IEZ4cFREdGV4dChsb3cpLCBGeHBURHRleHQoaGlnaCkpOwogICB9CgogICByZXR1cm4gZGF0YTsK
fQoKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+CmlubGluZSBmeHBPcGVyPFNP
TF9CSVRNRVJHRSwwPiBjb25jYXQoY29uc3QgVDEmIHByaW0sIGNvbnN0IFQyJiBzZWMpICB7cmV0
dXJuIHByaW0uYXBwZW5kKHNlYyk7fQoKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSBjb25zdCBm
eHBSZXNCIGJpdChjb25zdCBUJiBuYnIsIGludCBwb3MpICAgICAgICAgICAge3JldHVybiBuYnIu
Yml0KHBvcyk7fQoKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSBUJiBiaXQoVCYgbmJyLCBpbnQg
cG9zLCBib29sIHNldF9iaXQpICAgICAgICAgIHtuYnIuYml0KHBvcykgPSBzZXRfYml0OyByZXR1
cm4gbmJyO30KCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUgY29uc3QgZnhwUmVzIHNsaWNlKGNv
bnN0IFQmIG5iciwgaW50IGZyb20sIGludCB0bykgIHtyZXR1cm4gbmJyLnNsaWNlKGZyb20sIHRv
KTt9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgppbmxpbmUgVDEmIHNsaWNlKFQxJiBu
YnIsIGludCBmcm9tLCBpbnQgdG8sIFQyJiBpbnMpICB7bmJyLnNsaWNlKGZyb20sIHRvKSA9IGlu
czsgcmV0dXJuIG5icjt9CgogCiAKIAoKdGVtcGxhdGUgPGNsYXNzIEM+CmlubGluZSB2b2lkIGRl
bGF5c2hpZnQoIEMgYVtdLCBpbnQgbCApCnsKICAgZm9yIChpbnQgaSA9IGwtMjsgaSA+PSAwOyBp
LS0pIHsKICAgICAgYVtpKzFdID0gYVtpXTsKICAgfQp9CgoKIAoKdGVtcGxhdGU8Y2xhc3MgQywg
aW50IFM+CmlubGluZSB2b2lkIGRlbGF5c2hpZnQoIEMgYVtdW1NdLCBpbnQgbCApCnsKICAgZm9y
IChpbnQgaSA9IGwtMjsgaSA+PSAwOyBpLS0pIHsKICAgICAgZm9yIChpbnQgaiA9IFMgLSAxOyBq
ID49IDA7IGotLSkgewogICAgICAgICBhW2krMV1bal0gPSBhW2ldW2pdOwogICAgICB9CiAgIH0K
fQp0ZW1wbGF0ZTxjbGFzcyBDLCBpbnQgUzEsIGludCBTMj4KaW5saW5lIHZvaWQgZGVsYXlzaGlm
dCggQyBhW11bUzFdW1MyXSwgaW50IGwgKQp7CiAgIGZvciAoaW50IGkgPSBsLTI7IGkgPj0gMDsg
aS0tKSB7CiAgICAgIGZvciAoaW50IGogPSBTMSAtIDE7IGogPj0gMDsgai0tKSB7CiAgICAgICAg
IGZvciAoaW50IGsgPSBTMiAtIDE7IGsgPj0gMDsgay0tKSB7CiAgICAgICAgICAgIGFbaSsxXVtq
XVtrXSA9IGFbaV1bal1ba107CiAgICAgICAgIH0KICAgICAgfQogICB9Cn0KdGVtcGxhdGU8Y2xh
c3MgQywgaW50IFMxLCBpbnQgUzIsIGludCBTMz4KaW5saW5lIHZvaWQgZGVsYXlzaGlmdCggQyBh
W11bUzFdW1MyXVtTM10sIGludCBsICkKewogICBmb3IgKGludCBpID0gbC0yOyBpID49IDA7IGkt
LSkgewogICAgICBmb3IgKGludCBqID0gUzEgLSAxOyBqID49IDA7IGotLSkgewogICAgICAgICBm
b3IgKGludCBrID0gUzIgLSAxOyBrID49IDA7IGstLSkgewogICAgICAgICAgICBmb3IgKGludCBs
ID0gUzMgLSAxOyBsID49IDA7IGwtLSkgewogICAgICAgICAgICAgICBhW2krMV1bal1ba11bbF0g
PSBhW2ldW2pdW2tdW2xdOwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgfQogICB9Cn0K
CgoKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAoKY2xhc3MgRnhwSW5pdCB7CnB1Ymxp
YzoKICAgRnhwSW5pdChjb25zdCBjaGFyKiBpZCk7CiAgIH5GeHBJbml0KCk7Cn07CgoKc3RhdGlj
IEZ4cEluaXQgZnhwSW5pdCgiYXJ0bGliIDE5OTkuMTAwIENDOTBDOTQzOTRBRDQ1RTcgaHB1IGV4
cGlyZXM6MjAwMTEyMzEgRnJvbnRpZXIgRGVzaWduIEJWQkEiKTsKCgoKCgp9ICAKCgp1c2luZyBu
YW1lc3BhY2UgRnhwOwoKCgoKCgoKCgoKCgoKCiMgMSAic3JjLmN4eCIgMgoKCgp2b2lkIGxvb3A2
KAogICBjb25zdCBJbnQ8OD4gaW4sCiAgIEludDw4PiYgIG91dAopCnsKICAgI3ByYWdtYSBPVVQg
b3V0CiAgIEludDw4PiAgIEFbMTFdOwogICBVaW50PDM+ICBCWzEyXVs5XTsKICAgSW50PDg+ICAg
Q1sxNV1bMjJdWzEwXTsKICAgSW50PDg+ICAgRFsxNV1bMTVdWzEwXVszNl07CgogICBsb29wSTog
Zm9yICggdW5zaWduZWQgbG9uZyBpID0gMjsgaSA8PSA1OyBpKysgKSB7CiAgIAogICAgICBBWzIq
aV0gPSBJbnQ8OD4oaSk7CiAgICAgIGJvb2wgY29uZGkgPSBpID4gMzsKCiAgICAgIGxvb3BKOiBm
b3IgKHVuc2lnbmVkIGxvbmcgaiA9IDE7IGogPD0gaSs0OyBqKysgKSB7CiAgICAgICAgIGJvb2wg
ICBjb25kajsKCiAgICAgICAgIEJbMippKzFdW2otMV0gPSAoaiA+IGkpID8gMyA6IDQ7CiAgICAK
ICAgICAgICAgY29uZGogPSAoY29uZGkgfCAoaj09aSkpOwoKICAgICAgICAgbG9vcEs6IGZvcigg
dW5zaWduZWQgbG9uZyBrID0gaTsgayA8PSBpK2o7IGsrKyApewogICAgICAgICAgICBib29sICAg
Y29uZGs7CiAgICAgICAgICAgIGNvbmRrID0gKCBjb25kaiB8IChrPT00KSApOwogICAgICAgICAg
ICAKICAgICAgICAgICAgQ1szKmktMV1baitqKzNdW2staV0gPSBJbnQ8OD4oaSkgKyBJbnQ8OD4o
aikgKyBJbnQ8OD4oayk7CgogICAgICAgICAgICBsb29wTDogZm9yKHVuc2lnbmVkIGxvbmcgbCA9
IGsrajsgbCA8PSAzMCtpOyBsKysgKXsKICAgICAgICAgICAgICAgIERbaStqXVtrXVtrLWldW2xd
ID0gKCAobD09aW4pICYgY29uZGsgKSA/IGluIDogLWluOwogICAgICAgICAgICB9OwogICAgICAg
ICB9OwogICAgICB9OwogICB9OwogICAKCiAgIG91dCA9IChBWzRdICsgQ1s1XVs1XVswXSkgKyAo
Qls1XVswXSArIERbM11bMl1bMF1bM10pOwogCn07CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKICAgSW50PDg+IG91dDsKICAgbG9vcDYoSW50PDg+KDEzKSwgb3V0KTsKCiAgIHJl
dHVybiAwOwp9Cg==


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

only message in thread, other threads:[~2001-10-17  5:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-17  5:46 c++/4589: inernal error--unrecognizable insn benedict.j.brown

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