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


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

c/483: Internal compiler error whilst compiling MMX x86 inline assembler code



>Number:         483
>Category:       c
>Synopsis:       Internal compiler error whilst compiling MMX x86 inline assembler code
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Aug 22 06:56:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Gernot Ziegler
>Release:        gcc-2.95.2
>Organization:
>Environment:
x86-AMD K6-2 500, RedHat 6.2, sourcecode gcc install
>Description:
gcc -O6  -I.   -c jdmerge.c -o jdmerge.o
jdmerge.c: In function `h2v2_merged_upsample_mmx':
jdmerge.c:1182: warning: asm operand 6 probably doesn't match constraints
jdmerge.c:1411: Internal compiler error in `fixup_var_refs_1', at function.c:2071
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/faq.html#bugreport> for instructions.
make: *** [jdmerge.o] Error 1
[root@a218 jpeg-6b-mmx]# 
>How-To-Repeat:
Download CVS version from mjpeg.sourceforge.net, try to compile 
jpeg-directory (Remove jconfig.h first)
>Fix:

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

LyoKICogamRtZXJnZS5jCiAqCiAqIENvcHlyaWdodCAoQykgMTk5NC0xOTk2LCBUaG9tYXMgRy4g
TGFuZS4KICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAn
cyBzb2Z0d2FyZS4KICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNl
ZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLgogKgogKiBUaGlzIGZpbGUgY29udGFpbnMg
Y29kZSBmb3IgbWVyZ2VkIHVwc2FtcGxpbmcvY29sb3IgY29udmVyc2lvbi4KICoKICogVGhpcyBm
aWxlIGNvbWJpbmVzIGZ1bmN0aW9ucyBmcm9tIGpkc2FtcGxlLmMgYW5kIGpkY29sb3IuYzsKICog
cmVhZCB0aG9zZSBmaWxlcyBmaXJzdCB0byB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbi4KICoK
ICogV2hlbiB0aGUgY2hyb21hIGNvbXBvbmVudHMgYXJlIHRvIGJlIHVwc2FtcGxlZCBieSBzaW1w
bGUgcmVwbGljYXRpb24KICogKGllLCBib3ggZmlsdGVyaW5nKSwgd2UgY2FuIHNhdmUgc29tZSB3
b3JrIGluIGNvbG9yIGNvbnZlcnNpb24gYnkKICogY2FsY3VsYXRpbmcgYWxsIHRoZSBvdXRwdXQg
cGl4ZWxzIGNvcnJlc3BvbmRpbmcgdG8gYSBwYWlyIG9mIGNocm9tYQogKiBzYW1wbGVzIGF0IG9u
ZSB0aW1lLiAgSW4gdGhlIGNvbnZlcnNpb24gZXF1YXRpb25zCiAqCVIgPSBZICAgICAgICAgICAr
IEsxICogQ3IKICoJRyA9IFkgKyBLMiAqIENiICsgSzMgKiBDcgogKglCID0gWSArIEs0ICogQ2IK
ICogb25seSB0aGUgWSB0ZXJtIHZhcmllcyBhbW9uZyB0aGUgZ3JvdXAgb2YgcGl4ZWxzIGNvcnJl
c3BvbmRpbmcgdG8gYSBwYWlyCiAqIG9mIGNocm9tYSBzYW1wbGVzLCBzbyB0aGUgcmVzdCBvZiB0
aGUgdGVybXMgY2FuIGJlIGNhbGN1bGF0ZWQganVzdCBvbmNlLgogKiBBdCB0eXBpY2FsIHNhbXBs
aW5nIHJhdGlvcywgdGhpcyBlbGltaW5hdGVzIGhhbGYgb3IgdGhyZWUtcXVhcnRlcnMgb2YgdGhl
CiAqIG11bHRpcGxpY2F0aW9ucyBuZWVkZWQgZm9yIGNvbG9yIGNvbnZlcnNpb24uCiAqCiAqIFRo
aXMgZmlsZSBjdXJyZW50bHkgcHJvdmlkZXMgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgZm9sbG93
aW5nIGNhc2VzOgogKglZQ2JDciA9PiBSR0IgY29sb3IgY29udmVyc2lvbiBvbmx5LgogKglTYW1w
bGluZyByYXRpb3Mgb2YgMmgxdiBvciAyaDJ2LgogKglObyBzY2FsaW5nIG5lZWRlZCBhdCB1cHNh
bXBsZSB0aW1lLgogKglDb3JuZXItYWxpZ25lZCAobm9uLUNDSVI2MDEpIHNhbXBsaW5nIGFsaWdu
bWVudC4KICogT3RoZXIgc3BlY2lhbCBjYXNlcyBjb3VsZCBiZSBhZGRlZCwgYnV0IGluIG1vc3Qg
YXBwbGljYXRpb25zIHRoZXNlIGFyZQogKiB0aGUgb25seSBjb21tb24gY2FzZXMuICAoRm9yIHVu
Y29tbW9uIGNhc2VzIHdlIGZhbGwgYmFjayBvbiB0aGUgbW9yZQogKiBnZW5lcmFsIGNvZGUgaW4g
amRzYW1wbGUuYyBhbmQgamRjb2xvci5jLikKICovCgojZGVmaW5lIEpQRUdfSU5URVJOQUxTCiNp
bmNsdWRlICJqaW5jbHVkZS5oIgojaW5jbHVkZSAianBlZ2xpYi5oIgoKI2lmZGVmIFVQU0FNUExF
X01FUkdJTkdfU1VQUE9SVEVECgojaWYgZGVmaW5lZChIQVZFX01NWF9JTlRFTF9NTkVNT05JQ1Mp
IHx8IGRlZmluZWQoSEFWRV9NTVhfQVRUX01ORU1PTklDUykKI2RlZmluZSBfX2ludDY0IHVuc2ln
bmVkIGxvbmcgbG9uZwogIF9faW50NjQgY29uc3QxID0gMHg1OUJBMDAwMEQyNEI1OUJBOyAgICAg
ICAvLyBDcl9yIENyX2IgQ3JfZyBDcl9yCiAgX19pbnQ2NCBjb25zdDIgPSAweDAwMDA3MTY4RTlG
QTAwMDA7CQkgLy8gQ2ItciBDYl9iIENiX2cgQ2JfcgogIF9faW50NjQgY29uc3Q1ID0gMHgwMDAw
RDI0QjU5QkEwMDAwOwkJIC8vIENyX2IgQ3JfZyBDcl9yIENyX2IKICBfX2ludDY0IGNvbnN0NiA9
IDB4NzE2OEU5RkEwMDAwNzE2ODsJCSAvLyBDYl9iIENiX2cgQ2JfciBDYl9iCgogIC8vIGNvbnN0
YW50cyBmb3IgZmFjdG9ycyAoT25lX0hhbGYvZml4KHgpKSA8PCAyCgogIF9faW50NjQgY29uc3Qw
NSA9IDB4MDAwMTAwMDAwMDAwMDAwMTsJLy8gQ3JfciBDcl9iIENyX2cgQ3JfcgogIF9faW50NjQg
Y29uc3QxNSA9IDB4MDAwMDAwMDFGRkZBMDAwMDsJLy8gQ2ItciBDYl9iIENiX2cgQ2JfcgogIF9f
aW50NjQgY29uc3Q0NSA9IDB4MDAwMDAwMDAwMDAxMDAwMDsJLy8gQ3JfYiBDcl9nIENyX3IgQ3Jf
YgogIF9faW50NjQgY29uc3Q1NSA9IDB4MDAwMUZGRkEwMDAwMDAwMTsJLy8gQ2JfYiBDYl9nIENi
X3IgQ2JfYgoKICAvLyBhZGRlZCBmb3IgTU1YCiAgX19pbnQ2NCBjb25zdDEyOCA9IDB4MDA4MDAw
ODAwMDgwMDA4MDsKICBfX2ludDY0IGVtcHR5ID0gMHgwMDAwMDAwMDAwMDAwMDAwOwogIF9faW50
NjQgZGF2ZW1hc2sgPSAweDAwMDBGRkZGRkZGRjAwMDA7CiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KI2VuZGlmCgovKiBQcml2YXRlIHN1Ym9iamVjdCAqLwoKdHlwZWRlZiBzdHJ1
Y3QgewogIHN0cnVjdCBqcGVnX3Vwc2FtcGxlciBwdWI7CS8qIHB1YmxpYyBmaWVsZHMgKi8KCiAg
LyogUG9pbnRlciB0byByb3V0aW5lIHRvIGRvIGFjdHVhbCB1cHNhbXBsaW5nL2NvbnZlcnNpb24g
b2Ygb25lIHJvdyBncm91cCAqLwogIEpNRVRIT0Qodm9pZCwgdXBtZXRob2QsIChqX2RlY29tcHJl
c3NfcHRyIGNpbmZvLAoJCQkgICBKU0FNUElNQUdFIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiBpbl9y
b3dfZ3JvdXBfY3RyLAoJCQkgICBKU0FNUEFSUkFZIG91dHB1dF9idWYpKTsKCiAgLyogUHJpdmF0
ZSBzdGF0ZSBmb3IgWUNDLT5SR0IgY29udmVyc2lvbiAqLwogIGludCAqIENyX3JfdGFiOwkJLyog
PT4gdGFibGUgZm9yIENyIHRvIFIgY29udmVyc2lvbiAqLwogIGludCAqIENiX2JfdGFiOwkJLyog
PT4gdGFibGUgZm9yIENiIHRvIEIgY29udmVyc2lvbiAqLwogIElOVDMyICogQ3JfZ190YWI7CQkv
KiA9PiB0YWJsZSBmb3IgQ3IgdG8gRyBjb252ZXJzaW9uICovCiAgSU5UMzIgKiBDYl9nX3RhYjsJ
CS8qID0+IHRhYmxlIGZvciBDYiB0byBHIGNvbnZlcnNpb24gKi8KCiAgLyogRm9yIDI6MSB2ZXJ0
aWNhbCBzYW1wbGluZywgd2UgcHJvZHVjZSB0d28gb3V0cHV0IHJvd3MgYXQgYSB0aW1lLgogICAq
IFdlIG5lZWQgYSAic3BhcmUiIHJvdyBidWZmZXIgdG8gaG9sZCB0aGUgc2Vjb25kIG91dHB1dCBy
b3cgaWYgdGhlCiAgICogYXBwbGljYXRpb24gcHJvdmlkZXMganVzdCBhIG9uZS1yb3cgYnVmZmVy
OyB3ZSBhbHNvIHVzZSB0aGUgc3BhcmUKICAgKiB0byBkaXNjYXJkIHRoZSBkdW1teSBsYXN0IHJv
dyBpZiB0aGUgaW1hZ2UgaGVpZ2h0IGlzIG9kZC4KICAgKi8KICBKU0FNUFJPVyBzcGFyZV9yb3c7
CiAgYm9vbGVhbiBzcGFyZV9mdWxsOwkJLyogVCBpZiBzcGFyZSBidWZmZXIgaXMgb2NjdXBpZWQg
Ki8KCiAgSkRJTUVOU0lPTiBvdXRfcm93X3dpZHRoOwkvKiBzYW1wbGVzIHBlciBvdXRwdXQgcm93
ICovCiAgSkRJTUVOU0lPTiByb3dzX3RvX2dvOwkvKiBjb3VudHMgcm93cyByZW1haW5pbmcgaW4g
aW1hZ2UgKi8KfSBteV91cHNhbXBsZXI7Cgp0eXBlZGVmIG15X3Vwc2FtcGxlciAqIG15X3Vwc2Ft
cGxlX3B0cjsKCiNkZWZpbmUgU0NBTEVCSVRTCTE2CS8qIHNwZWVkaWVzdCByaWdodC1zaGlmdCBv
biBzb21lIG1hY2hpbmVzICovCiNkZWZpbmUgT05FX0hBTEYJKChJTlQzMikgMSA8PCAoU0NBTEVC
SVRTLTEpKQojZGVmaW5lIEZJWCh4KQkJKChJTlQzMikgKCh4KSAqICgxTDw8U0NBTEVCSVRTKSAr
IDAuNSkpCgoKLyoKICogSW5pdGlhbGl6ZSB0YWJsZXMgZm9yIFlDQy0+UkdCIGNvbG9yc3BhY2Ug
Y29udmVyc2lvbi4KICogVGhpcyBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIGpkY29sb3IuYzsgc2Vl
IHRoYXQgZmlsZSBmb3IgbW9yZSBpbmZvLgogKi8KCkxPQ0FMKHZvaWQpCmJ1aWxkX3ljY19yZ2Jf
dGFibGUgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pCnsKICBteV91cHNhbXBsZV9wdHIgdXBzYW1w
bGUgPSAobXlfdXBzYW1wbGVfcHRyKSBjaW5mby0+dXBzYW1wbGU7CiAgaW50IGk7CiAgSU5UMzIg
eDsKICBTSElGVF9URU1QUwoKICB1cHNhbXBsZS0+Q3Jfcl90YWIgPSAoaW50ICopCiAgICAoKmNp
bmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdF
LAoJCQkJKE1BWEpTQU1QTEUrMSkgKiBTSVpFT0YoaW50KSk7CiAgdXBzYW1wbGUtPkNiX2JfdGFi
ID0gKGludCAqKQogICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIp
IGNpbmZvLCBKUE9PTF9JTUFHRSwKCQkJCShNQVhKU0FNUExFKzEpICogU0laRU9GKGludCkpOwog
IHVwc2FtcGxlLT5Dcl9nX3RhYiA9IChJTlQzMiAqKQogICAgKCpjaW5mby0+bWVtLT5hbGxvY19z
bWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwKCQkJCShNQVhKU0FNUExF
KzEpICogU0laRU9GKElOVDMyKSk7CiAgdXBzYW1wbGUtPkNiX2dfdGFiID0gKElOVDMyICopCiAg
ICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09M
X0lNQUdFLAoJCQkJKE1BWEpTQU1QTEUrMSkgKiBTSVpFT0YoSU5UMzIpKTsKCiAgZm9yIChpID0g
MCwgeCA9IC1DRU5URVJKU0FNUExFOyBpIDw9IE1BWEpTQU1QTEU7IGkrKywgeCsrKSB7CiAgICAv
KiBpIGlzIHRoZSBhY3R1YWwgaW5wdXQgcGl4ZWwgdmFsdWUsIGluIHRoZSByYW5nZSAwLi5NQVhK
U0FNUExFICovCiAgICAvKiBUaGUgQ2Igb3IgQ3IgdmFsdWUgd2UgYXJlIHRoaW5raW5nIG9mIGlz
IHggPSBpIC0gQ0VOVEVSSlNBTVBMRSAqLwogICAgLyogQ3I9PlIgdmFsdWUgaXMgbmVhcmVzdCBp
bnQgdG8gMS40MDIwMCAqIHggKi8KICAgIHVwc2FtcGxlLT5Dcl9yX3RhYltpXSA9IChpbnQpCgkJ
ICAgIFJJR0hUX1NISUZUKEZJWCgxLjQwMjAwKSAqIHggKyBPTkVfSEFMRiwgU0NBTEVCSVRTKTsK
ICAgIC8qIENiPT5CIHZhbHVlIGlzIG5lYXJlc3QgaW50IHRvIDEuNzcyMDAgKiB4ICovCiAgICB1
cHNhbXBsZS0+Q2JfYl90YWJbaV0gPSAoaW50KQoJCSAgICBSSUdIVF9TSElGVChGSVgoMS43NzIw
MCkgKiB4ICsgT05FX0hBTEYsIFNDQUxFQklUUyk7CiAgICAvKiBDcj0+RyB2YWx1ZSBpcyBzY2Fs
ZWQtdXAgLTAuNzE0MTQgKiB4ICovCiAgICB1cHNhbXBsZS0+Q3JfZ190YWJbaV0gPSAoLSBGSVgo
MC43MTQxNCkpICogeDsKICAgIC8qIENiPT5HIHZhbHVlIGlzIHNjYWxlZC11cCAtMC4zNDQxNCAq
IHggKi8KICAgIC8qIFdlIGFsc28gYWRkIGluIE9ORV9IQUxGIHNvIHRoYXQgbmVlZCBub3QgZG8g
aXQgaW4gaW5uZXIgbG9vcCAqLwogICAgdXBzYW1wbGUtPkNiX2dfdGFiW2ldID0gKC0gRklYKDAu
MzQ0MTQpKSAqIHggKyBPTkVfSEFMRjsKICB9Cn0KCgovKgogKiBJbml0aWFsaXplIGZvciBhbiB1
cHNhbXBsaW5nIHBhc3MuCiAqLwoKTUVUSE9EREVGKHZvaWQpCnN0YXJ0X3Bhc3NfbWVyZ2VkX3Vw
c2FtcGxlIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQp7CiAgbXlfdXBzYW1wbGVfcHRyIHVwc2Ft
cGxlID0gKG15X3Vwc2FtcGxlX3B0cikgY2luZm8tPnVwc2FtcGxlOwoKICAvKiBNYXJrIHRoZSBz
cGFyZSBidWZmZXIgZW1wdHkgKi8KICB1cHNhbXBsZS0+c3BhcmVfZnVsbCA9IEZBTFNFOwogIC8q
IEluaXRpYWxpemUgdG90YWwtaGVpZ2h0IGNvdW50ZXIgZm9yIGRldGVjdGluZyBib3R0b20gb2Yg
aW1hZ2UgKi8KICB1cHNhbXBsZS0+cm93c190b19nbyA9IGNpbmZvLT5vdXRwdXRfaGVpZ2h0Owp9
CgoKLyoKICogQ29udHJvbCByb3V0aW5lIHRvIGRvIHVwc2FtcGxpbmcgKGFuZCBjb2xvciBjb252
ZXJzaW9uKS4KICoKICogVGhlIGNvbnRyb2wgcm91dGluZSBqdXN0IGhhbmRsZXMgdGhlIHJvdyBi
dWZmZXJpbmcgY29uc2lkZXJhdGlvbnMuCiAqLwoKTUVUSE9EREVGKHZvaWQpCm1lcmdlZF8ydl91
cHNhbXBsZSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywKCQkgICAgSlNBTVBJTUFHRSBpbnB1dF9i
dWYsIEpESU1FTlNJT04gKmluX3Jvd19ncm91cF9jdHIsCgkJICAgIEpESU1FTlNJT04gaW5fcm93
X2dyb3Vwc19hdmFpbCwKCQkgICAgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OICpv
dXRfcm93X2N0ciwKCQkgICAgSkRJTUVOU0lPTiBvdXRfcm93c19hdmFpbCkKLyogMjoxIHZlcnRp
Y2FsIHNhbXBsaW5nIGNhc2U6IG1heSBuZWVkIGEgc3BhcmUgcm93LiAqLwp7CiAgbXlfdXBzYW1w
bGVfcHRyIHVwc2FtcGxlID0gKG15X3Vwc2FtcGxlX3B0cikgY2luZm8tPnVwc2FtcGxlOwogIEpT
QU1QUk9XIHdvcmtfcHRyc1syXTsKICBKRElNRU5TSU9OIG51bV9yb3dzOwkJLyogbnVtYmVyIG9m
IHJvd3MgcmV0dXJuZWQgdG8gY2FsbGVyICovCgogIGlmICh1cHNhbXBsZS0+c3BhcmVfZnVsbCkg
ewogICAgLyogSWYgd2UgaGF2ZSBhIHNwYXJlIHJvdyBzYXZlZCBmcm9tIGEgcHJldmlvdXMgY3lj
bGUsIGp1c3QgcmV0dXJuIGl0LiAqLwogICAgamNvcHlfc2FtcGxlX3Jvd3MoJiB1cHNhbXBsZS0+
c3BhcmVfcm93LCAwLCBvdXRwdXRfYnVmICsgKm91dF9yb3dfY3RyLCAwLAoJCSAgICAgIDEsIHVw
c2FtcGxlLT5vdXRfcm93X3dpZHRoKTsKICAgIG51bV9yb3dzID0gMTsKICAgIHVwc2FtcGxlLT5z
cGFyZV9mdWxsID0gRkFMU0U7CiAgfSBlbHNlIHsKICAgIC8qIEZpZ3VyZSBudW1iZXIgb2Ygcm93
cyB0byByZXR1cm4gdG8gY2FsbGVyLiAqLwogICAgbnVtX3Jvd3MgPSAyOwogICAgLyogTm90IG1v
cmUgdGhhbiB0aGUgZGlzdGFuY2UgdG8gdGhlIGVuZCBvZiB0aGUgaW1hZ2UuICovCiAgICBpZiAo
bnVtX3Jvd3MgPiB1cHNhbXBsZS0+cm93c190b19nbykKICAgICAgbnVtX3Jvd3MgPSB1cHNhbXBs
ZS0+cm93c190b19nbzsKICAgIC8qIEFuZCBub3QgbW9yZSB0aGFuIHdoYXQgdGhlIGNsaWVudCBj
YW4gYWNjZXB0OiAqLwogICAgb3V0X3Jvd3NfYXZhaWwgLT0gKm91dF9yb3dfY3RyOwogICAgaWYg
KG51bV9yb3dzID4gb3V0X3Jvd3NfYXZhaWwpCiAgICAgIG51bV9yb3dzID0gb3V0X3Jvd3NfYXZh
aWw7CiAgICAvKiBDcmVhdGUgb3V0cHV0IHBvaW50ZXIgYXJyYXkgZm9yIHVwc2FtcGxlci4gKi8K
ICAgIHdvcmtfcHRyc1swXSA9IG91dHB1dF9idWZbKm91dF9yb3dfY3RyXTsKICAgIGlmIChudW1f
cm93cyA+IDEpIHsKICAgICAgd29ya19wdHJzWzFdID0gb3V0cHV0X2J1Zlsqb3V0X3Jvd19jdHIg
KyAxXTsKICAgIH0gZWxzZSB7CiAgICAgIHdvcmtfcHRyc1sxXSA9IHVwc2FtcGxlLT5zcGFyZV9y
b3c7CiAgICAgIHVwc2FtcGxlLT5zcGFyZV9mdWxsID0gVFJVRTsKICAgIH0KICAgIC8qIE5vdyBk
byB0aGUgdXBzYW1wbGluZy4gKi8KICAgICgqdXBzYW1wbGUtPnVwbWV0aG9kKSAoY2luZm8sIGlu
cHV0X2J1ZiwgKmluX3Jvd19ncm91cF9jdHIsIHdvcmtfcHRycyk7CiAgfQoKICAvKiBBZGp1c3Qg
Y291bnRzICovCiAgKm91dF9yb3dfY3RyICs9IG51bV9yb3dzOwogIHVwc2FtcGxlLT5yb3dzX3Rv
X2dvIC09IG51bV9yb3dzOwogIC8qIFdoZW4gdGhlIGJ1ZmZlciBpcyBlbXB0aWVkLCBkZWNsYXJl
IHRoaXMgaW5wdXQgcm93IGdyb3VwIGNvbnN1bWVkICovCiAgaWYgKCEgdXBzYW1wbGUtPnNwYXJl
X2Z1bGwpCiAgICAoKmluX3Jvd19ncm91cF9jdHIpKys7Cn0KCgpNRVRIT0RERUYodm9pZCkKbWVy
Z2VkXzF2X3Vwc2FtcGxlIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLAoJCSAgICBKU0FNUElNQUdF
IGlucHV0X2J1ZiwgSkRJTUVOU0lPTiAqaW5fcm93X2dyb3VwX2N0ciwKCQkgICAgSkRJTUVOU0lP
TiBpbl9yb3dfZ3JvdXBzX2F2YWlsLAoJCSAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1F
TlNJT04gKm91dF9yb3dfY3RyLAoJCSAgICBKRElNRU5TSU9OIG91dF9yb3dzX2F2YWlsKQovKiAx
OjEgdmVydGljYWwgc2FtcGxpbmcgY2FzZTogbXVjaCBlYXNpZXIsIG5ldmVyIG5lZWQgYSBzcGFy
ZSByb3cuICovCnsKICBteV91cHNhbXBsZV9wdHIgdXBzYW1wbGUgPSAobXlfdXBzYW1wbGVfcHRy
KSBjaW5mby0+dXBzYW1wbGU7CgogIC8qIEp1c3QgZG8gdGhlIHVwc2FtcGxpbmcuICovCiAgKCp1
cHNhbXBsZS0+dXBtZXRob2QpIChjaW5mbywgaW5wdXRfYnVmLCAqaW5fcm93X2dyb3VwX2N0ciwK
CQkJIG91dHB1dF9idWYgKyAqb3V0X3Jvd19jdHIpOwogIC8qIEFkanVzdCBjb3VudHMgKi8KICAo
Km91dF9yb3dfY3RyKSsrOwogICgqaW5fcm93X2dyb3VwX2N0cikrKzsKfQoKCi8qCiAqIFRoZXNl
IGFyZSB0aGUgcm91dGluZXMgaW52b2tlZCBieSB0aGUgY29udHJvbCByb3V0aW5lcyB0byBkbwog
KiB0aGUgYWN0dWFsIHVwc2FtcGxpbmcvY29udmVyc2lvbi4gIE9uZSByb3cgZ3JvdXAgaXMgcHJv
Y2Vzc2VkIHBlciBjYWxsLgogKgogKiBOb3RlOiBzaW5jZSB3ZSBtYXkgYmUgd3JpdGluZyBkaXJl
Y3RseSBpbnRvIGFwcGxpY2F0aW9uLXN1cHBsaWVkIGJ1ZmZlcnMsCiAqIHdlIGhhdmUgdG8gYmUg
aG9uZXN0IGFib3V0IHRoZSBvdXRwdXQgd2lkdGg7IHdlIGNhbid0IGFzc3VtZSB0aGUgYnVmZmVy
CiAqIGhhcyBiZWVuIHJvdW5kZWQgdXAgdG8gYW4gZXZlbiB3aWR0aC4KICovCgoKLyoKICogVXBz
YW1wbGUgYW5kIGNvbG9yIGNvbnZlcnQgZm9yIHRoZSBjYXNlIG9mIDI6MSBob3Jpem9udGFsIGFu
ZCAxOjEgdmVydGljYWwuCiAqLwoKTUVUSE9EREVGKHZvaWQpCmgydjFfbWVyZ2VkX3Vwc2FtcGxl
IChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLAoJCSAgICAgIEpTQU1QSU1BR0UgaW5wdXRfYnVmLCBK
RElNRU5TSU9OIGluX3Jvd19ncm91cF9jdHIsCgkJICAgICAgSlNBTVBBUlJBWSBvdXRwdXRfYnVm
KQp7CiAKCiBteV91cHNhbXBsZV9wdHIgdXBzYW1wbGUgPSAobXlfdXBzYW1wbGVfcHRyKSBjaW5m
by0+dXBzYW1wbGU7CiAgcmVnaXN0ZXIgaW50IHksIGNyZWQsIGNncmVlbiwgY2JsdWU7CiAgaW50
IGNiLCBjcjsKICByZWdpc3RlciBKU0FNUFJPVyBvdXRwdHI7CiAgSlNBTVBST1cgaW5wdHIwLCBp
bnB0cjEsIGlucHRyMjsKICBKRElNRU5TSU9OIGNvbDsKICAvKiBjb3B5IHRoZXNlIHBvaW50ZXJz
IGludG8gcmVnaXN0ZXJzIGlmIHBvc3NpYmxlICovCiAgcmVnaXN0ZXIgSlNBTVBMRSAqIHJhbmdl
X2xpbWl0ID0gY2luZm8tPnNhbXBsZV9yYW5nZV9saW1pdDsKICBpbnQgKiBDcnJ0YWIgPSB1cHNh
bXBsZS0+Q3Jfcl90YWI7CiAgaW50ICogQ2JidGFiID0gdXBzYW1wbGUtPkNiX2JfdGFiOwogIElO
VDMyICogQ3JndGFiID0gdXBzYW1wbGUtPkNyX2dfdGFiOwogIElOVDMyICogQ2JndGFiID0gdXBz
YW1wbGUtPkNiX2dfdGFiOwogIFNISUZUX1RFTVBTCgogIGlucHRyMCA9IGlucHV0X2J1ZlswXVtp
bl9yb3dfZ3JvdXBfY3RyXTsKICBpbnB0cjEgPSBpbnB1dF9idWZbMV1baW5fcm93X2dyb3VwX2N0
cl07CiAgaW5wdHIyID0gaW5wdXRfYnVmWzJdW2luX3Jvd19ncm91cF9jdHJdOwogIG91dHB0ciA9
IG91dHB1dF9idWZbMF07CiAgLyogTG9vcCBmb3IgZWFjaCBwYWlyIG9mIG91dHB1dCBwaXhlbHMg
Ki8KICBmb3IgKGNvbCA9IGNpbmZvLT5vdXRwdXRfd2lkdGggPj4gMTsgY29sID4gMDsgY29sLS0p
IHsKICAgIC8qIERvIHRoZSBjaHJvbWEgcGFydCBvZiB0aGUgY2FsY3VsYXRpb24gKi8KICAgIGNi
ID0gR0VUSlNBTVBMRSgqaW5wdHIxKyspOwogICAgY3IgPSBHRVRKU0FNUExFKCppbnB0cjIrKyk7
CiAgICBjcmVkID0gQ3JydGFiW2NyXTsKICAgIGNncmVlbiA9IChpbnQpIFJJR0hUX1NISUZUKENi
Z3RhYltjYl0gKyBDcmd0YWJbY3JdLCBTQ0FMRUJJVFMpOwogICAgY2JsdWUgPSBDYmJ0YWJbY2Jd
OwogICAgLyogRmV0Y2ggMiBZIHZhbHVlcyBhbmQgZW1pdCAyIHBpeGVscyAqLwogICAgeSAgPSBH
RVRKU0FNUExFKCppbnB0cjArKyk7CiAgICBvdXRwdHJbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0
W3kgKyBjcmVkXTsKICAgIG91dHB0cltSR0JfR1JFRU5dID0gcmFuZ2VfbGltaXRbeSArIGNncmVl
bl07CiAgICBvdXRwdHJbUkdCX0JMVUVdID0gIHJhbmdlX2xpbWl0W3kgKyBjYmx1ZV07CiAgICBv
dXRwdHIgKz0gUkdCX1BJWEVMU0laRTsKICAgIHkgID0gR0VUSlNBTVBMRSgqaW5wdHIwKyspOwog
ICAgb3V0cHRyW1JHQl9SRURdID0gICByYW5nZV9saW1pdFt5ICsgY3JlZF07CiAgICBvdXRwdHJb
UkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3JlZW5dOwogICAgb3V0cHRyW1JHQl9CTFVF
XSA9ICByYW5nZV9saW1pdFt5ICsgY2JsdWVdOwogICAgb3V0cHRyICs9IFJHQl9QSVhFTFNJWkU7
CiAgfQogIC8qIElmIGltYWdlIHdpZHRoIGlzIG9kZCwgZG8gdGhlIGxhc3Qgb3V0cHV0IGNvbHVt
biBzZXBhcmF0ZWx5ICovCiAgaWYgKGNpbmZvLT5vdXRwdXRfd2lkdGggJiAxKSB7CiAgICBjYiA9
IEdFVEpTQU1QTEUoKmlucHRyMSk7CiAgICBjciA9IEdFVEpTQU1QTEUoKmlucHRyMik7CiAgICBj
cmVkID0gQ3JydGFiW2NyXTsKICAgIGNncmVlbiA9IChpbnQpIFJJR0hUX1NISUZUKENiZ3RhYltj
Yl0gKyBDcmd0YWJbY3JdLCBTQ0FMRUJJVFMpOwogICAgY2JsdWUgPSBDYmJ0YWJbY2JdOwogICAg
eSAgPSBHRVRKU0FNUExFKCppbnB0cjApOwogICAgb3V0cHRyW1JHQl9SRURdID0gICByYW5nZV9s
aW1pdFt5ICsgY3JlZF07CiAgICBvdXRwdHJbUkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBj
Z3JlZW5dOwogICAgb3V0cHRyW1JHQl9CTFVFXSA9ICByYW5nZV9saW1pdFt5ICsgY2JsdWVdOwog
IH0KfQoKCi8qCiAqIFVwc2FtcGxlIGFuZCBjb2xvciBjb252ZXJ0IGZvciB0aGUgY2FzZSBvZiAy
OjEgaG9yaXpvbnRhbCBhbmQgMjoxIHZlcnRpY2FsLgogKi8KCiNpZiBkZWZpbmVkKEhBVkVfTU1Y
X0lOVEVMX01ORU1PTklDUykgfHwgZGVmaW5lZChIQVZFX01NWF9BVFRfTU5FTU9OSUNTKQpfX2lu
bGluZSBNRVRIT0RERUYodm9pZCkKaDJ2Ml9tZXJnZWRfdXBzYW1wbGVfb3JpZyAoal9kZWNvbXBy
ZXNzX3B0ciBjaW5mbywKCQkgICAgICBKU0FNUElNQUdFIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiBp
bl9yb3dfZ3JvdXBfY3RyLAoJCSAgICAgIEpTQU1QQVJSQVkgb3V0cHV0X2J1Zik7Cl9faW5saW5l
IE1FVEhPRERFRih2b2lkKQpoMnYyX21lcmdlZF91cHNhbXBsZV9tbXggKGpfZGVjb21wcmVzc19w
dHIgY2luZm8sCgkJICAgICAgSlNBTVBJTUFHRSBpbnB1dF9idWYsIEpESU1FTlNJT04gaW5fcm93
X2dyb3VwX2N0ciwKCQkgICAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYpOwojZW5kaWYKIApNRVRI
T0RERUYodm9pZCkKaDJ2Ml9tZXJnZWRfdXBzYW1wbGUgKGpfZGVjb21wcmVzc19wdHIgY2luZm8s
CgkJICAgICAgSlNBTVBJTUFHRSBpbnB1dF9idWYsIEpESU1FTlNJT04gaW5fcm93X2dyb3VwX2N0
ciwKCQkgICAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYpOwoKI2lmIGRlZmluZWQoSEFWRV9NTVhf
SU5URUxfTU5FTU9OSUNTKSB8fCBkZWZpbmVkKEhBVkVfTU1YX0FUVF9NTkVNT05JQ1MpCk1FVEhP
RERFRih2b2lkKQpoMnYyX21lcmdlZF91cHNhbXBsZSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywK
CQkgICAgICBKU0FNUElNQUdFIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiBpbl9yb3dfZ3JvdXBfY3Ry
LAoJCSAgICAgIEpTQU1QQVJSQVkgb3V0cHV0X2J1ZikKewppZiAoTU1YQXZhaWxhYmxlICYmIChj
aW5mby0+aW1hZ2Vfd2lkdGggPj0gOCkpCgloMnYyX21lcmdlZF91cHNhbXBsZV9tbXggKGNpbmZv
LCBpbnB1dF9idWYsIGluX3Jvd19ncm91cF9jdHIsIG91dHB1dF9idWYpOwplbHNlCgloMnYyX21l
cmdlZF91cHNhbXBsZV9vcmlnIChjaW5mbywgaW5wdXRfYnVmLCBpbl9yb3dfZ3JvdXBfY3RyLCBv
dXRwdXRfYnVmKTsKCn0KCl9faW5saW5lIE1FVEhPRERFRih2b2lkKQpoMnYyX21lcmdlZF91cHNh
bXBsZV9vcmlnIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLAoJCSAgICAgIEpTQU1QSU1BR0UgaW5w
dXRfYnVmLCBKRElNRU5TSU9OIGluX3Jvd19ncm91cF9jdHIsCgkJICAgICAgSlNBTVBBUlJBWSBv
dXRwdXRfYnVmKQp7CgogIG15X3Vwc2FtcGxlX3B0ciB1cHNhbXBsZSA9IChteV91cHNhbXBsZV9w
dHIpIGNpbmZvLT51cHNhbXBsZTsKICByZWdpc3RlciBpbnQgeSwgY3JlZCwgY2dyZWVuLCBjYmx1
ZTsKICBpbnQgY2IsIGNyOwogIHJlZ2lzdGVyIEpTQU1QUk9XIG91dHB0cjAsIG91dHB0cjE7CiAg
SlNBTVBST1cgaW5wdHIwMCwgaW5wdHIwMSwgaW5wdHIxLCBpbnB0cjI7CiAgSkRJTUVOU0lPTiBj
b2w7CiAgLyogY29weSB0aGVzZSBwb2ludGVycyBpbnRvIHJlZ2lzdGVycyBpZiBwb3NzaWJsZSAq
LwogIHJlZ2lzdGVyIEpTQU1QTEUgKiByYW5nZV9saW1pdCA9IGNpbmZvLT5zYW1wbGVfcmFuZ2Vf
bGltaXQ7CiAgaW50ICogQ3JydGFiID0gdXBzYW1wbGUtPkNyX3JfdGFiOwogIGludCAqIENiYnRh
YiA9IHVwc2FtcGxlLT5DYl9iX3RhYjsKICBJTlQzMiAqIENyZ3RhYiA9IHVwc2FtcGxlLT5Dcl9n
X3RhYjsKICBJTlQzMiAqIENiZ3RhYiA9IHVwc2FtcGxlLT5DYl9nX3RhYjsKICBTSElGVF9URU1Q
UwoKICBpbnB0cjAwID0gaW5wdXRfYnVmWzBdW2luX3Jvd19ncm91cF9jdHIqMl07CiAgaW5wdHIw
MSA9IGlucHV0X2J1ZlswXVtpbl9yb3dfZ3JvdXBfY3RyKjIgKyAxXTsKICBpbnB0cjEgPSBpbnB1
dF9idWZbMV1baW5fcm93X2dyb3VwX2N0cl07CiAgaW5wdHIyID0gaW5wdXRfYnVmWzJdW2luX3Jv
d19ncm91cF9jdHJdOwogIG91dHB0cjAgPSBvdXRwdXRfYnVmWzBdOwogIG91dHB0cjEgPSBvdXRw
dXRfYnVmWzFdOwogIC8qIExvb3AgZm9yIGVhY2ggZ3JvdXAgb2Ygb3V0cHV0IHBpeGVscyAqLwog
IGZvciAoY29sID0gY2luZm8tPm91dHB1dF93aWR0aCA+PiAxOyBjb2wgPiAwOyBjb2wtLSkgewog
ICAgLyogRG8gdGhlIGNocm9tYSBwYXJ0IG9mIHRoZSBjYWxjdWxhdGlvbiAqLwogICAgY2IgPSBH
RVRKU0FNUExFKCppbnB0cjErKyk7CiAgICBjciA9IEdFVEpTQU1QTEUoKmlucHRyMisrKTsKICAg
IGNyZWQgPSBDcnJ0YWJbY3JdOwogICAgY2dyZWVuID0gKGludCkgUklHSFRfU0hJRlQoQ2JndGFi
W2NiXSArIENyZ3RhYltjcl0sIFNDQUxFQklUUyk7CiAgICBjYmx1ZSA9IENiYnRhYltjYl07CiAg
ICAvKiBGZXRjaCA0IFkgdmFsdWVzIGFuZCBlbWl0IDQgcGl4ZWxzICovCiAgICB5ICA9IEdFVEpT
QU1QTEUoKmlucHRyMDArKyk7CiAgICBvdXRwdHIwW1JHQl9SRURdID0gICByYW5nZV9saW1pdFt5
ICsgY3JlZF07CiAgICBvdXRwdHIwW1JHQl9HUkVFTl0gPSByYW5nZV9saW1pdFt5ICsgY2dyZWVu
XTsKICAgIG91dHB0cjBbUkdCX0JMVUVdID0gIHJhbmdlX2xpbWl0W3kgKyBjYmx1ZV07CiAgICBv
dXRwdHIwICs9IFJHQl9QSVhFTFNJWkU7CiAgICB5ICA9IEdFVEpTQU1QTEUoKmlucHRyMDArKyk7
CiAgICBvdXRwdHIwW1JHQl9SRURdID0gICByYW5nZV9saW1pdFt5ICsgY3JlZF07CiAgICBvdXRw
dHIwW1JHQl9HUkVFTl0gPSByYW5nZV9saW1pdFt5ICsgY2dyZWVuXTsKICAgIG91dHB0cjBbUkdC
X0JMVUVdID0gIHJhbmdlX2xpbWl0W3kgKyBjYmx1ZV07CiAgICBvdXRwdHIwICs9IFJHQl9QSVhF
TFNJWkU7CiAgICB5ICA9IEdFVEpTQU1QTEUoKmlucHRyMDErKyk7CiAgICBvdXRwdHIxW1JHQl9S
RURdID0gICByYW5nZV9saW1pdFt5ICsgY3JlZF07CiAgICBvdXRwdHIxW1JHQl9HUkVFTl0gPSBy
YW5nZV9saW1pdFt5ICsgY2dyZWVuXTsKICAgIG91dHB0cjFbUkdCX0JMVUVdID0gIHJhbmdlX2xp
bWl0W3kgKyBjYmx1ZV07CiAgICBvdXRwdHIxICs9IFJHQl9QSVhFTFNJWkU7CiAgICB5ICA9IEdF
VEpTQU1QTEUoKmlucHRyMDErKyk7CiAgICBvdXRwdHIxW1JHQl9SRURdID0gICByYW5nZV9saW1p
dFt5ICsgY3JlZF07CiAgICBvdXRwdHIxW1JHQl9HUkVFTl0gPSByYW5nZV9saW1pdFt5ICsgY2dy
ZWVuXTsKICAgIG91dHB0cjFbUkdCX0JMVUVdID0gIHJhbmdlX2xpbWl0W3kgKyBjYmx1ZV07CiAg
ICBvdXRwdHIxICs9IFJHQl9QSVhFTFNJWkU7CiAgfQogIC8qIElmIGltYWdlIHdpZHRoIGlzIG9k
ZCwgZG8gdGhlIGxhc3Qgb3V0cHV0IGNvbHVtbiBzZXBhcmF0ZWx5ICovCiAgaWYgKGNpbmZvLT5v
dXRwdXRfd2lkdGggJiAxKSB7CiAgICBjYiA9IEdFVEpTQU1QTEUoKmlucHRyMSk7CiAgICBjciA9
IEdFVEpTQU1QTEUoKmlucHRyMik7CiAgICBjcmVkID0gQ3JydGFiW2NyXTsKICAgIGNncmVlbiA9
IChpbnQpIFJJR0hUX1NISUZUKENiZ3RhYltjYl0gKyBDcmd0YWJbY3JdLCBTQ0FMRUJJVFMpOwog
ICAgY2JsdWUgPSBDYmJ0YWJbY2JdOwogICAgeSAgPSBHRVRKU0FNUExFKCppbnB0cjAwKTsKICAg
IG91dHB0cjBbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0W3kgKyBjcmVkXTsKICAgIG91dHB0cjBb
UkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3JlZW5dOwogICAgb3V0cHRyMFtSR0JfQkxV
RV0gPSAgcmFuZ2VfbGltaXRbeSArIGNibHVlXTsKICAgIHkgID0gR0VUSlNBTVBMRSgqaW5wdHIw
MSk7CiAgICBvdXRwdHIxW1JHQl9SRURdID0gICByYW5nZV9saW1pdFt5ICsgY3JlZF07CiAgICBv
dXRwdHIxW1JHQl9HUkVFTl0gPSByYW5nZV9saW1pdFt5ICsgY2dyZWVuXTsKICAgIG91dHB0cjFb
UkdCX0JMVUVdID0gIHJhbmdlX2xpbWl0W3kgKyBjYmx1ZV07CiAgfQp9CgovKgogKiBVcHNhbXBs
ZSBhbmQgY29sb3IgY29udmVydCBmb3IgdGhlIGNhc2Ugb2YgMjoxIGhvcml6b250YWwgYW5kIDI6
MSB2ZXJ0aWNhbC4KICovCl9faW5saW5lIE1FVEhPRERFRih2b2lkKQpoMnYyX21lcmdlZF91cHNh
bXBsZV9tbXggKGpfZGVjb21wcmVzc19wdHIgY2luZm8sCgkJICAgICAgSlNBTVBJTUFHRSBpbnB1
dF9idWYsIEpESU1FTlNJT04gaW5fcm93X2dyb3VwX2N0ciwKCQkgICAgICBKU0FNUEFSUkFZIG91
dHB1dF9idWYpCnsKICBteV91cHNhbXBsZV9wdHIgdXBzYW1wbGUgPSAobXlfdXBzYW1wbGVfcHRy
KSBjaW5mby0+dXBzYW1wbGU7CiAgcmVnaXN0ZXIgaW50IHksIGNyZWQsIGNncmVlbiwgY2JsdWU7
CiAgaW50IGNiLCBjcjsKICBKU0FNUFJPVyBvdXRwdHIwLCBvdXRwdHIxOwogIEpTQU1QUk9XIGlu
cHRyMDAsIGlucHRyMDEsIGlucHRyMSwgaW5wdHIyOwogIEpESU1FTlNJT04gY29sOwogIC8qIGNv
cHkgdGhlc2UgcG9pbnRlcnMgaW50byByZWdpc3RlcnMgaWYgcG9zc2libGUgKi8KICByZWdpc3Rl
ciBKU0FNUExFICogcmFuZ2VfbGltaXQgPSBjaW5mby0+c2FtcGxlX3JhbmdlX2xpbWl0OwogIGlu
dCAqIENycnRhYiA9IHVwc2FtcGxlLT5Dcl9yX3RhYjsKICBpbnQgKiBDYmJ0YWIgPSB1cHNhbXBs
ZS0+Q2JfYl90YWI7CiAgSU5UMzIgKiBDcmd0YWIgPSB1cHNhbXBsZS0+Q3JfZ190YWI7CiAgSU5U
MzIgKiBDYmd0YWIgPSB1cHNhbXBsZS0+Q2JfZ190YWI7CiAgU0hJRlRfVEVNUFMKICAKCiAgLy8g
QWRkZWQgZm9yIE1NWAkgIAogIHJlZ2lzdGVyIGludCB3aWR0aCA9IGNpbmZvLT5pbWFnZV93aWR0
aDsKICBpbnQgY29scyA9IGNpbmZvLT5vdXRwdXRfd2lkdGg7CiAgaW50IGNvbHNfYXNtID0gKGNv
bHMgPj4gMyk7CiAgaW50IGRpZmYgPSBjb2xzIC0gKGNvbHNfYXNtPDwzKTsKICBpbnQgY29sc19h
c21fY29weSA9IGNvbHNfYXNtOwoKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwoKICBpbnB0cjAwID0gaW5wdXRfYnVmWzBdW2luX3Jvd19ncm91cF9jdHIqMl07CiAgaW5w
dHIwMSA9IGlucHV0X2J1ZlswXVtpbl9yb3dfZ3JvdXBfY3RyKjIgKyAxXTsKICBpbnB0cjEgPSBp
bnB1dF9idWZbMV1baW5fcm93X2dyb3VwX2N0cl07CiAgaW5wdHIyID0gaW5wdXRfYnVmWzJdW2lu
X3Jvd19ncm91cF9jdHJdOwogIG91dHB0cjAgPSBvdXRwdXRfYnVmWzBdOwogIG91dHB0cjEgPSBv
dXRwdXRfYnVmWzFdOwogIC8qIExvb3AgZm9yIGVhY2ggZ3JvdXAgb2Ygb3V0cHV0IHBpeGVscyAq
LwoKI2lmZGVmIEhBVkVfTU1YX0lOVEVMX01ORU1PTklDUwogIF9hc20KICB7CgkgIG1vdiBlc2ks
IGlucHRyMDAKCgkgIG1vdiBlYXgsIGlucHRyMDEKCSAgCgkgIG1vdiBlYngsIGlucHRyMgoKCSAg
bW92IGVjeCwgaW5wdHIxCgoJICBtb3YgZWRpLCBvdXRwdHIwCgoJICBtb3YgZWR4LCBvdXRwdHIx
Cgpkb19uZXh0MTY6CgkgIAoJICBtb3ZkIG1tMCwgW2VieF0JCQk7IENyNyBDcjYuLi4uLkNyMSBD
cjAKCgkgIHB4b3IgbW02LCBtbTYKCgkgIHB1bnBja2xidyBtbTAsIG1tMAkJOyBDcjMgQ3IzIENy
MiBDcjIgQ3IxIENyMSBDcjAgQ3IwCgoJICBtb3ZxIG1tNywgY29uc3QxMjgKCgkgIHB1bnBja2x3
ZCBtbTAsIG1tMAkJOyBDcjEgQ3IxIENyMSBDcjEgQ3IwIENyMCBDcjAgQ3IwCgoJICBtb3ZxIG1t
NCwgbW0wCgoJICBwdW5wY2tsYncgbW0wLCBtbTYJCTsgQ3IwIENyMCBDcjAgQ3IwCgoJICBwc3Vi
c3cgbW0wLCBtbTcJCQk7IENyMCAtIDEyODpDcjAtMTI4OkNyMC0xMjg6Q3IwIC0xMjgKCSAgCgkg
IG1vdmQgbW0xLCBbZWN4XQkJCTsgQ2I3IENiNi4uLi4uLiBDYjEgQ2IwCgkgIAkgICAKCSAgcHNs
bHcgbW0wLCAyCQkJCTsgbGVmdCBzaGlmdCBieSAyIGJpdHMKCgkgIHB1bnBja2xidyBtbTEsIG1t
MQkJOyBDYjMgQ2IzIENiMiBDYjIgQ2IxIENiMSBDYjAgQ2IwCgkgIAoJICBwYWRkc3cgbW0wLCBj
b25zdDA1CQk7IGFkZCAob25lX2hhbGYvZml4KHgpKSA8PCAyCgoJICBwdW5wY2tsd2QgbW0xLCBt
bTEJCTsgQ2IxIENiMSBDYjEgQ2IxIENiMCBDYjAgQ2IwIENiMAoKCSAgbW92cSBtbTUsIG1tMQoK
CSAgcG11bGh3IG1tMCwgY29uc3QxCQk7IG11bHRpcGx5IGJ5IChmaXgoeCkgPj4gMSkgCgoJICBw
dW5wY2tsYncgbW0xLCBtbTYJCTsgQ2IwIENiMCBDYjAgQ2IwCgoJICBwdW5wY2toYncgbW00LCBt
bTYJCTsgQ3IxIENyMSBDcjEgQ3IxCgoJICBwc3Vic3cgbW0xLCBtbTcJCQk7IENiMCAtIDEyODpD
YjAtMTI4OkNiMC0xMjg6Q2IwIC0xMjgKCgkgIHB1bnBja2hidyBtbTUsIG1tNgkJOyBDYjEgQ2Ix
IENiMSBDYjEKCgkgIHBzbGx3IG1tMSwgMgkJCQk7IGxlZnQgc2hpZnQgYnkgMiBiaXRzCiAKCSAg
cGFkZHN3IG1tMSwgY29uc3QxNQkJOyBhZGQgKG9uZV9oYWxmL2ZpeCh4KSkgPDwgMgoKCSAgcHN1
YnN3IG1tNCwgbW03CQkJOyBDcjEgLSAxMjg6Q3IxLTEyODpDcjEtMTI4OkNyMSAtMTI4CgkJCQkJ
CQoJICBwc3Vic3cgbW01LCBtbTcJCQk7IENiMSAtIDEyODpDYjEtMTI4OkNiMS0xMjg6Q2IxIC0x
MjgKCgkgIHBtdWxodyBtbTEsIGNvbnN0MgkJOyBtdWx0aXBseSBieSAoZml4KHgpID4+IDEpIAoK
CSAgcHNsbHcgbW00LCAyCQkJCTsgbGVmdCBzaGlmdCBieSAyIGJpdHMKCgkgIHBzbGx3IG1tNSwg
MgkJCQk7IGxlZnQgc2hpZnQgYnkgMiBiaXRzCgoJICBwYWRkc3cgbW00LCBjb25zdDQ1CQk7IGFk
ZCAob25lX2hhbGYvZml4KHgpKSA8PCAyCgoJICBtb3ZkIG1tNywgW2VzaV0JCQk7ICBZMTMgWTEy
IFk5IFk4IFk1IFk0IFkxIFkwCgoJICBwbXVsaHcgbW00LCBjb25zdDUJCTsgbXVsdGlwbHkgYnkg
KGZpeCh4KSA+PiAxKSAKCgkgIG1vdnEgbW02LCBtbTcKCgkgIHB1bnBja2xidyBtbTcsIG1tNwkJ
OyBZNSBZNSBZNCBZNCBZMSBZMSBZMCBZMAoKCSAgcGFkZHN3IG1tNSwgY29uc3Q1NQkJOyBhZGQg
KG9uZV9oYWxmL2ZpeCh4KSkgPDwgMgoKCSAgcGFkZHN3ICBtbTAsIG1tMQkJCTsgY3JlZDAgY2Js
MCBjZ3IwIGNyZWQwCgoJICBtb3ZxIG1tMSwgbW03CgoJICBwbXVsaHcgbW01LCBjb25zdDYJCTsg
bXVsdGlwbHkgYnkgKGZpeCh4KSA+PiAxKSAKCgkgIG1vdnEJbW0yLCBtbTAJCQk7IGNyZWQwIGNi
bDAgY2dyMCBjcmVkMAoKCSAgcHVucGNrbHdkIG1tNywgbW02CQk7IFk1IFk0IFkxIFkxIFkxIFkw
IFkwIFkwCgoJICBwYW5kIG1tMiwgZGF2ZW1hc2sJCTsgMCBjYmwwIGNncjAgMAoKCSAgcHNybHEg
bW0xLCAxNgkJCQk7IDAgMCBZNSBZNSBZNCBZNCBZMSBZMQoKCSAgcHNybHEJbW0yLCAxNgkJCQk7
IDAgMCBjYmwwIGNncjAKCgkgIHB1bnBja2xidyBtbTcsIGVtcHR5CQk7IFkxIFkwIFkwIFkwCgoJ
ICBwYWRkc3cgbW00LCBtbTUJCQk7IGNibDEgY2dyMSBjcmVkMSBjYmwxCgoJICBtb3ZxCW1tMywg
bW00CQkJOyBjYmwxIGNncjEgY3JlZDEgY2JsMQoKCSAgcGFuZAltbTMsIGRhdmVtYXNrCQk7IDAg
Y2dyMSBjcmVkMSAwCgoJICBwYWRkc3cgbW03LCBtbTAJCQk7IHIxIGIwIGcwIHIwCgoJICBwc2xs
cQltbTMsIDE2CQkJCTsgY2dyMSBjcmVkMSAwIDAKCgkgIG1vdnEgbW02LCBtbTEJCQkJOyAwIDAg
WTUgWTUgWTQgWTQgWTEgWTEKCQoJICBwb3IJbW0yLCBtbTMJCQk7IGNncjEgY3JlZDEgY2JsMCBj
Z3IwCgoJICBwdW5wY2tsYncgbW02LCBlbXB0eQkJOyBZNCBZNCBZMSBZMQoKCSAgbW92ZCBtbTMs
IFtlYXhdCQkJOyBZMTUgWTE0IFkxMSBZMTAgWTcgWTYgWTMgWTIKCSAgCgkgIHBhZGRzdyBtbTYs
IG1tMgkJCTsgZzQgcjQgYjEgZzEKCgkgIHBhY2t1c3diIG1tNywgbW02CQkJOyBnNCByNCBiMSBn
MSByMSBiMCBnMCByMAoKCSAgbW92cSBtbTYsIG1tMwkJCQk7IFkxNSBZMTQgWTExIFkxMCBZNyBZ
NiBZMyBZMgoKCSAgcHVucGNrbGJ3IG1tMywgbW0zCQk7IFk3IFk3IFk2IFk2IFkzIFkzIFkyIFky
CgoJICBtb3ZxIFtlZGldLCBtbTcJCQk7IG1vdmUgdG8gbWVtb3J5IGc0IHI0IGIxIGcxIHIxIGIw
IGcwIHIwCgoJICBtb3ZxIG1tNSwgbW0zCQkJCTsgWTcgWTcgWTYgWTYgWTMgWTMgWTIgWTIKCgkg
IHB1bnBja2x3ZCBtbTMsIG1tNgkJOyBYIFggWCBYIFkzIFkyIFkyIFkyCgoJICBwdW5wY2tsYncg
bW0zLCBlbXB0eQkJOyBZMyBZMiBZMiBZMgoKCSAgcHNybHEgbW01LCAxNgkJCQk7IDAgMCBZNyBZ
NyBZNiBZNiBZMyBZMwoKCSAgcGFkZHN3IG1tMywgbW0wCQkJOyByMyBiMiBnMiByMgoKCSAgbW92
cSBtbTYsIG1tNQkJCQk7IDAgMCBZNyBZNyBZNiBZNiBZMyBZMwoKCSAgbW92cSBtbTAsIG1tMQkJ
CQk7IDAgMCBZNSBZNSBZNCBZNCBZMSBZMQoKCSAgcHVucGNrbGRxIG1tNiwgbW02CQk7IFggWCBY
IFggWTYgWTYgWTMgWTMKCgkgIHB1bnBja2xidyBtbTYsIGVtcHR5CQk7IFk2IFk2IFkzIFkzCgoJ
ICBwc3JscSBtbTEsIDI0CQkJCTsgMCAwIDAgMCAwIFk1IFk1IFk0CgkgIAoJICBwYWRkc3cgbW02
LCBtbTIJCQk7IGc2IHI2IGIzIGczCgoJICBwYWNrdXN3YiBtbTMsIG1tNgkJCTsgZzYgcjYgYjMg
ZzMgcjMgYjIgZzIgcjIKCgkgIG1vdnEgbW0yLCBtbTUJCQkJOyAwIDAgWTcgWTcgWTYgWTYgWTMg
WTMKCgkgIHBzcmxxIG1tMCwgMzIJCQkJOyAwIDAgMCAwIDAgMCBZNSBZNQoKCSAgbW92cSBbZWR4
XSwgbW0zCQkJOyBtb3ZlIHRvIG1lbW9yeSBnNiByNiBiMyBnMyByMyBiMiBnMiByMgoJICAKCSAg
cHVucGNrbHdkIG1tMSwgbW0wCQk7IFggWCBYIFggWTUgWTUgWTUgWTQKCgkgIHBzcmxxIG1tNSwg
MjQJCQkJOyAwIDAgMCAwIDAgWTcgWTcgWTYgCgoJICBtb3ZkIG1tMCwgW2VieF0JCQk7IENyOSBD
cjguLi4uLkNyMyBDcjIKCgkgIHBzcmxxIG1tMiwgMzIJICAgCQkJOyAwIDAgMCAwIDAgMCBZNyBZ
NwkgCgkgIAoJICBwc3JscQltbTAsIDE2CQkKCgkgIHB1bnBja2xidyBtbTEsIGVtcHR5CQk7IFk1
IFk1IFk1IFk0CgoJICBwdW5wY2tsd2QgbW01LCBtbTIJCTsgWCBYIFggWCBZNyBZNyBZNyBZNgoK
CSAgcGFkZHN3IG1tMSwgbW00CQkJOyBiNSBnNSByNSBiNAoJIAoJICBwdW5wY2tsYncgbW01LCBl
bXB0eQkJOyBZNyBZNyBZNyBZNgkgICAgCgoJICBweG9yIG1tNiwgbW02CQkJCTsgY2xlYXIgbW02
IHJlZ2lzdHIKCSAgCgkgIHB1bnBja2xidyBtbTAsIG1tMAkJOyBYIFggWCBYIENyMyBDcjMgQ3Iy
IENyMgogIAoJICBwYWRkc3cgbW01LCBtbTQJCQk7IGI3IGc3IHI3IGI2CgkgIAoJICBwdW5wY2ts
d2QgbW0wLCBtbTAJCTsgQ3IzIENyMyBDcjMgQ3IzIENyMiBDcjIgQ3IyIENyMgoKCSAgbW92cSBt
bTQsIG1tMAoKCSAgbW92ZCBtbTMsIFtlY3hdCQkJOyBDYjkgQ2I4Li4uLi4uIENiMyBDYjIKCSAg
CgkgIHB1bnBja2xidyBtbTAsIG1tNgkJOyBDcjIgQ3IyIENyMiBDcjIKCgkgIHBzcmxxCW1tMywg
MTYKCgkgIHBzdWJzdyBtbTAsIGNvbnN0MTI4CQk7IENyMiAtIDEyODpDcjItMTI4OkNyMi0xMjg6
Q3IyIC0xMjgKCgkgIHB1bnBja2xidyBtbTMsIG1tMwkJOyBYIFggWCBYIENiMyBDYjMgQ2IyIENi
MgoKCSAgcHNsbHcgbW0wLCAyCQkJCTsgbGVmdCBzaGlmdCBieSAyIGJpdHMKCgkgIHBhZGRzdyBt
bTAsIGNvbnN0MDUJCTsgYWRkIChvbmVfaGFsZi9maXgoeCkpIDw8IDIKCgkgIHB1bnBja2x3ZCBt
bTMsIG1tMwkJOyBDYjMgQ2IzIENiMyBDYjMgQ2IyIENiMiBDYjIgQ2IyCgoJICBtb3ZxIG1tNywg
bW0zCgkgIAoJICBwbXVsaHcgbW0wLCBjb25zdDEJCTsgbXVsdGlwbHkgYnkgKGZpeCh4KSA+PiAx
KSAJICAJICAKCgkgIHB1bnBja2xidyBtbTMsIG1tNgkJOyBDYjIgQ2IyIENiMiBDYjIKCgkgIHBz
dWJzdyBtbTMsIGNvbnN0MTI4CQk7IENiMCAtIDEyODpDYjAtMTI4OkNiMC0xMjg6Q2IwIC0xMjgK
CgkgIHB1bnBja2hidyBtbTQsIG1tNgkJOyBDcjMgQ3IzIENyMyBDcjMKCSAgCgkgIHBzbGx3IG1t
MywgMgkJCQk7IGxlZnQgc2hpZnQgYnkgMiBiaXRzCgoJICBwYWRkc3cgbW0zLCBjb25zdDE1CQk7
IGFkZCAob25lX2hhbGYvZml4KHgpKSA8PCAyCgoJICBwdW5wY2toYncgbW03LCBtbTYJCTsgQ2Iz
IENiMyBDYjMgQ2IzCgoJICBwbXVsaHcgbW0zLCBjb25zdDIJCTsgbXVsdGlwbHkgYnkgKGZpeCh4
KSA+PiAxKSAKCSAgCgkgIHBzdWJzdyBtbTcsIGNvbnN0MTI4CQk7IENiMyAtIDEyODpDYjMtMTI4
OkNiMy0xMjg6Q2IzIC0xMjgKCgkgIHBhZGRzdyAgbW0wLCBtbTMJCQk7IGNyZWQyIGNibDIgY2dy
MiBjcmVkMgoJICAgIAoJICBwc2xsdyBtbTcsIDIJCQkJOyBsZWZ0IHNoaWZ0IGJ5IDIgYml0cwoK
CSAgcHN1YnN3IG1tNCwgY29uc3QxMjgJCTsgQ3IzIC0gMTI4OkNyMy0xMjg6Q3IzLTEyODpDcjMg
LTEyOAoJICAKCSAgbW92ZCBtbTMsIFtlc2krNF0JCQk7ICBZMjEgWTIwIFkxNyBZMTYgWTEzIFkx
MiBZOSBZOAoJICAKCSAgcHNsbHcgbW00LCAyCQkJCTsgbGVmdCBzaGlmdCBieSAyIGJpdHMKCgkg
IHBhZGRzdyBtbTcsIGNvbnN0NTUJCTsgYWRkIChvbmVfaGFsZi9maXgoeCkpIDw8IDIKCSAgCSAg
CgkgIG1vdnEgbW02LCBtbTMJCQkJOyAgWTIxIFkyMCBZMTcgWTE2IFkxMyBZMTIgWTkgWTgKCgkg
IG1vdnEJbW0yLCBtbTAKCSAgCSAgCgkgIHBhbmQgbW0yLCBkYXZlbWFzawoKCSAgcHVucGNrbGJ3
IG1tMywgbW0zCQk7IFkxMyBZMTMgWTEyIFkxMiBZOSBZOSBZOCBZOAoKCSAgcHNybHEJbW0yLCAx
NgoJICAgIAkgIAoJICBwYWRkc3cgbW00LCBjb25zdDQ1CQk7IGFkZCAob25lX2hhbGYvZml4KHgp
KSA8PCAyCgoJICBwdW5wY2tsd2QgbW0zLCBtbTYJCTsgWCBYIFggWCBZOSBZOCBZOCBZOAoJICAK
CSAgcG11bGh3IG1tNCwgY29uc3Q1CQk7IG11bHRpcGx5IGJ5IChmaXgoeCkgPj4gMSkgCgoJICBw
bXVsaHcgbW03LCBjb25zdDYJCTsgbXVsdGlwbHkgYnkgKGZpeCh4KSA+PiAxKSAKCgkgIHB1bnBj
a2xidyBtbTMsIGVtcHR5CQk7IFk5IFk4IFk4IFk4CgkgIAoJICBwYWRkc3cgbW00LCBtbTcJCQk7
IGNibDMgY2dyMyBjcmVkMyBjYmwzCgoJICBwYWRkc3cgbW0zLCBtbTAJCQk7IHI5IGI4IGc4IHI4
CgoJICBtb3ZxCW1tNywgbW00CgoJICBwYWNrdXN3YiBtbTEsIG1tMwkJCTsgcjkgYjggZzggcjgg
YjUgZzUgcjUgYjQKCgkgIG1vdmQgbW0zLCBbZWF4KzRdCQkJOyBZMjMgWTIyIFkxOSBZMTggWTE1
IFkxNCBZMTEgWTEwCiAJICAKCSAgcGFuZAltbTcsIGRhdmVtYXNrCgoJICBwc3JscSBtbTYsIDgJ
CQkJOyAwIFkyMSBZMjAgWTE3IFkxNiBZMTMgWTEyIFk5CgoJICBwc2xscQltbTcsIDE2CgkJCQkJ
CSAgIAoJICBtb3ZxIFtlZGkrOF0sIG1tMQkJCTsgbW92ZSB0byBtZW1vcnkgcjkgYjggZzggcjgg
YjUgZzUgcjUgYjQKCgkgIHBvcgltbTIsIG1tNwoKCSAgbW92cSBtbTcsIG1tMwkJCQk7IFkyMyBZ
MjIgWTE5IFkxOCBZMTUgWTE0IFkxMSBZMTAKCgkgIHB1bnBja2xidyBtbTMsIG1tMwkJOyBYIFgg
WCBYIFkxMSBZMTEgWTEwIFkxMAoKCSAgcHhvciBtbTEsIG1tMQoKCSAgcHVucGNrbHdkIG1tMywg
bW03CQk7IFggWCBYIFggWTExIFkxMCBZMTAgWTEwCgoJICBwdW5wY2tsYncgbW0zLCBtbTEJCTsg
WTExIFkxMCBZMTAgWTEwCgoJICBwc3JscSBtbTcsIDgJCQkJOyAwIFkyMyBZMjIgWTE5IFkxOCBZ
MTUgWTE0IFkxMQoJICAKCSAgcGFkZHN3IG1tMywgbW0wCQkJOyByMTEgYjEwIGcxMCByMTAKCgkg
IG1vdnEgbW0wLCBtbTcJCQkJOyAwIFkyMyBZMjIgWTE5IFkxOCBZMTUgWTE0IFkxMQoKCSAgcGFj
a3Vzd2IgbW01LCBtbTMJCQk7IHIxMSBiMTAgZzEwIHIxMCBiNyBnNyByNyBiNgoKCSAgcHVucGNr
bGJ3IG1tNywgbW03CQk7IFggWCBYIFggWTE0IFkxNCBZMTEgWTExCgoJICBtb3ZxIFtlZHgrOF0s
IG1tNQkJCTsgbW92ZSB0byBtZW1vcnkgcjExIGIxMCBnMTAgcjEwIGI3IGc3IHI3IGI2CgoJICBt
b3ZxIG1tMywgbW02CQkJCTsgMCBZMjEgWTIwIFkxNyBZMTYgWTEzIFkxMiBZOQoKCSAgcHVucGNr
bGJ3IG1tNiwgbW02CQk7IFggWCBYIFggWTEyIFkxMiBZOSBZOQoKCSAgcHVucGNrbGJ3IG1tNywg
bW0xCQk7IFkxNCBZMTQgWTExIFkxMQoKCSAgcHVucGNrbGJ3IG1tNiwgbW0xCQk7IFkxMiBZMTIg
WTkgWTkKCgkgIHBhZGRzdyBtbTcsIG1tMgkJCTsgZzE0IHIxNCBiMTEgZzExCgoJICBwYWRkc3cg
bW02LCBtbTIJCQk7IGcxMiByMTIgYjkgZzkKCgkgIHBzcmxxIG1tMywgOAkJCQk7IDAgMCBZMjEg
WTIwIFkxNyBZMTYgWTEzIFkxMgoKCSAgbW92cSBtbTEsIG1tMwkJCQk7IDAgMCBZMjEgWTIwIFkx
NyBZMTYgWTEzIFkxMgoKCSAgcHVucGNrbGJ3IG1tMywgbW0zCQk7IFggWCBYIFggWTEzIFkxMyBZ
MTIgWTEyCgoJICBhZGQgZXNpLCA4CgoJICBwc3JscSBtbTMsIDE2CQkJCTsgWCBYIFggWCBYIFgg
WTEzIFkxMyBtb2RpZmllZCBvbiAwOS8yNAoKCSAgcHVucGNrbHdkIG1tMSwgbW0zCQk7IFggWCBY
IFggWTEzIFkxMyBZMTMgWTEyCgoJICBhZGQgZWF4LCA4CgoJICBwc3JscSBtbTAsIDgJCQkJOyAw
IDAgWTIzIFkyMiBZMTkgWTE4IFkxNSBZMTQJCgoJICBwdW5wY2tsYncgbW0xLCBlbXB0eQkJOyBZ
MTMgWTEzIFkxMyBZMTIKCgkgIG1vdnEgbW01LCBtbTAJCQkJOyAwIDAgWTIzIFkyMiBZMTkgWTE4
IFkxNSBZMTQJCgoJICBwdW5wY2tsYncgbW0wLCBtbTAJCTsgWCBYIFggWCBZMTUgWTE1IFkxNCBZ
MTQKCgkgIHBhZGRzdyBtbTEsIG1tNAkJCTsgYjEzIGcxMyByMTMgYjEyCgoJICBwc3JscSBtbTAs
IDE2CQkJCTsgWCBYIFggWCBYIFggWTE1IFkxNQoKCSAgYWRkIGVkaSwgMjQKCSAgCgkgIHB1bnBj
a2x3ZCBtbTUsIG1tMAkJOyBYIFggWCBYIFkxNSBZMTUgWTE1IFkxNAoKCSAgcGFja3Vzd2IgbW02
LCBtbTEJCQk7IGIxMyBnMTMgcjEzIGIxMiBnMTIgcjEyIGI5IGc5CgoJICBhZGQgZWR4LCAyNAoJ
ICAKCSAgcHVucGNrbGJ3IG1tNSwgZW1wdHkJCTsgWTE1IFkxNSBZMTUgWTE0CgoJICBhZGQgZWJ4
LCA0CgkgIAkgIAoJICBwYWRkc3cgbW01LCBtbTQJCQk7IGIxNSBnMTUgcjE1IGIxNAoKCSAgbW92
cSBbZWRpLThdLCBtbTYJCTsgbW92ZSB0byBtZW1vcnkgYjEzIGcxMyByMTMgYjEyIGcxMiByMTIg
YjkgZzkKCgkgIHBhY2t1c3diIG1tNywgbW01CQkJOyBiMTUgZzE1IHIxNSBiMTQgZzE0IHIxNCBi
MTEgZzExCgoJICBhZGQgZWN4LCA0CiAgCgkgIG1vdnEgW2VkeC04XSwgbW03CQk7IG1vdmUgdG8g
bWVtb3J5IGIxNSBnMTUgcjE1IGIxNCBnMTQgcjE0IGIxMSBnMTEKCgkgIGRlYyBjb2xzX2FzbQoJ
ICAKCSAgam56IGRvX25leHQxNgoKCSAgRU1NUwoJICAJICAKCSAgfQojZW5kaWYKI2lmZGVmIEhB
VkVfTU1YX0FUVF9NTkVNT05JQ1MKICBmcHJpbnRmKHN0ZGVyciwgIlVzaW5nIGFjY2VsZXJhdGVk
IE1NWCBjb2RlIGZvciBtZXJnZSAhXG4iKTsKCiAgICAgICAgICBfX2FzbV9fICgKICAgICAgICAg
ICJtb3ZsICUwLCAlJWVzaSAgICAgICAgIFxuXHQiCgogICAgICAgICAgIm1vdmwgJTEsICUlZWF4
ICAgICAgICAgXG5cdCIKCiAgICAgICAgICAibW92bCAlMiwgJSVlYnggICAgICAgICAgXG5cdCIK
CiAgICAgICAgICAibW92bCAlMywgJSVlY3ggICAgICAgICAgXG5cdCIKCiAgICAgICAgICAibW92
bCAlNCwgJSVlZGkgICAgICAgICBcblx0IgoKICAgICAgICAgICJtb3ZsICU1LCAlJWVkeCAgICAg
ICAgIFxuXHQiCgoJICAiZG9fbmV4dDE2OiAgICAgICAgICAgICAgICAgIFxuXHQiCgkgIAogICAg
ICAgICAgIm1vdmQgKCUlZWJ4KSwlJW1tMCAgICAgICAgICAgIFxuXHQiICAgIC8vIENyNyBDcjYu
Li4uLkNyMSBDcjAKCiAgICAgICAgICAicHhvciAlJW1tNiwlJW1tNiAgICAgICAgICAgICAgXG5c
dCIKCiAgICAgICAgICAicHVucGNrbGJ3ICUlbW0wLCUlbW0wICAgICAgICAgXG5cdCIgLy8gQ3Iz
IENyMyBDcjIgQ3IyIENyMSBDcjEgQ3IwIENyMAoKICAgICAgICAgICJtb3ZxIGNvbnN0MTI4LCUl
bW03ICAgICAgICAgXG5cdCIKCiAgICAgICAgICAicHVucGNrbHdkICUlbW0wLCUlbW0wICAgICAg
ICAgXG5cdCIgLy8gQ3IxIENyMSBDcjEgQ3IxIENyMCBDcjAgQ3IwIENyMAoKICAgICAgICAgICJt
b3ZxICUlbW0wLCUlbW00ICAgICAgICAgICAgICBcblx0IgoKICAgICAgICAgICJwdW5wY2tsYncg
JSVtbTYsJSVtbTAgICAgICAgICBcblx0IiAvLyBDcjAgQ3IwIENyMCBDcjAKCiAgICAgICAgICAi
cHN1YnN3ICUlbW03LCUlbW0wICAgICAgICAgICAgXG5cdCIgICAgLy8gQ3IwIC0gMTI4OkNyMC0x
Mjg6Q3IwLTEyODpDcjAgLTEyOAoKICAgICAgICAgICJtb3ZkICglJWVjeCksJSVtbTEgICAgICAg
ICAgICBcblx0IiAgICAvLyBDYjcgQ2I2Li4uLi4uIENiMSBDYjAKCiAgICAgICAgICAicHNsbHcg
JDIsJSVtbTAgICAgICAgICAgICAgICBcblx0IiAgICAvLyBsZWZ0IHNoaWZ0IGJ5IDIgYml0cwoK
ICAgICAgICAgICJwdW5wY2tsYncgJSVtbTEsJSVtbTEgICAgICAgICBcblx0IiAvLyBDYjMgQ2Iz
IENiMiBDYjIgQ2IxIENiMSBDYjAgQ2IwCgogICAgICAgICAgInBhZGRzdyBjb25zdDA1LCUlbW0w
ICAgICAgICBcblx0IiAvLyBhZGQgKG9uZV9oYWxmL2ZpeCh4KSkgPDwgMgoKICAgICAgICAgICJw
dW5wY2tsd2QgJSVtbTEsJSVtbTEgICAgICAgICBcblx0IiAvLyBDYjEgQ2IxIENiMSBDYjEgQ2Iw
IENiMCBDYjAgQ2IwCgogICAgICAgICAgIm1vdnEgJSVtbTEsJSVtbTUgICAgICAgICAgICAgIFxu
XHQiCgogICAgICAgICAgInBtdWxodyBjb25zdDEsJSVtbTAgICAgICAgICBcblx0IiAvLyBtdWx0
aXBseSBieSAoZml4KHgpID4+IDEpIAoKICAgICAgICAgICJwdW5wY2tsYncgJSVtbTYsJSVtbTEg
ICAgICAgICBcblx0IiAvLyBDYjAgQ2IwIENiMCBDYjAKCiAgICAgICAgICAicHVucGNraGJ3ICUl
bW02LCUlbW00ICAgICAgICAgXG5cdCIgLy8gQ3IxIENyMSBDcjEgQ3IxCgogICAgICAgICAgInBz
dWJzdyAlJW1tNywlJW1tMSAgICAgICAgICAgIFxuXHQiICAgIC8vIENiMCAtIDEyODpDYjAtMTI4
OkNiMC0xMjg6Q2IwIC0xMjgKCiAgICAgICAgICAicHVucGNraGJ3ICUlbW02LCUlbW01ICAgICAg
ICAgXG5cdCIgLy8gQ2IxIENiMSBDYjEgQ2IxCgogICAgICAgICAgInBzbGx3ICQyLCUlbW0xICAg
ICAgICAgICAgICAgXG5cdCIgICAgLy8gbGVmdCBzaGlmdCBieSAyIGJpdHMKCiAgICAgICAgICAi
cGFkZHN3IGNvbnN0MTUsJSVtbTEgICAgICAgIFxuXHQiIC8vIGFkZCAob25lX2hhbGYvZml4KHgp
KSA8PCAyCgogICAgICAgICAgInBzdWJzdyAlJW1tNywlJW1tNCAgICAgICAgICAgIFxuXHQiICAg
IC8vIENyMSAtIDEyODpDcjEtMTI4OkNyMS0xMjg6Q3IxIC0xMjgKCiAgICAgICAgICAicHN1YnN3
ICUlbW03LCUlbW01ICAgICAgICAgICAgXG5cdCIgICAgLy8gQ2IxIC0gMTI4OkNiMS0xMjg6Q2Ix
LTEyODpDYjEgLTEyOAoKICAgICAgICAgICJwbXVsaHcgY29uc3QyLCUlbW0xICAgICAgICAgXG5c
dCIgLy8gbXVsdGlwbHkgYnkgKGZpeCh4KSA+PiAxKSAKCiAgICAgICAgICAicHNsbHcgJDIsJSVt
bTQgICAgICAgICAgICAgICBcblx0IiAgICAvLyBsZWZ0IHNoaWZ0IGJ5IDIgYml0cwoKICAgICAg
ICAgICJwc2xsdyAkMiwlJW1tNSAgICAgICAgICAgICAgIFxuXHQiICAgIC8vIGxlZnQgc2hpZnQg
YnkgMiBiaXRzCgogICAgICAgICAgInBhZGRzdyBjb25zdDQ1LCUlbW00ICAgICAgICBcblx0IiAv
LyBhZGQgKG9uZV9oYWxmL2ZpeCh4KSkgPDwgMgoKICAgICAgICAgICJtb3ZkICglJWVzaSksJSVt
bTcgICAgICAgICAgICBcblx0IiAgICAvLyAgWTEzIFkxMiBZOSBZOCBZNSBZNCBZMSBZMAoKICAg
ICAgICAgICJwbXVsaHcgY29uc3Q1LCUlbW00ICAgICAgICAgXG5cdCIgLy8gbXVsdGlwbHkgYnkg
KGZpeCh4KSA+PiAxKSAKCiAgICAgICAgICAibW92cSAlJW1tNywlJW1tNiAgICAgICAgICAgICAg
XG5cdCIKCiAgICAgICAgICAicHVucGNrbGJ3ICUlbW03LCUlbW03ICAgICAgICAgXG5cdCIgLy8g
WTUgWTUgWTQgWTQgWTEgWTEgWTAgWTAKCiAgICAgICAgICAicGFkZHN3IGNvbnN0NTUsJSVtbTUg
ICAgICAgIFxuXHQiIC8vIGFkZCAob25lX2hhbGYvZml4KHgpKSA8PCAyCgogICAgICAgICAgInBh
ZGRzdyAgJSVtbTEsJSVtbTAgICAgICAgICAgIFxuXHQiICAgIC8vIGNyZWQwIGNibDAgY2dyMCBj
cmVkMAoKICAgICAgICAgICJtb3ZxICUlbW03LCUlbW0xICAgICAgICAgICAgICBcblx0IgoKICAg
ICAgICAgICJwbXVsaHcgY29uc3Q2LCUlbW01ICAgICAgICAgXG5cdCIgLy8gbXVsdGlwbHkgYnkg
KGZpeCh4KSA+PiAxKSAKCiAgICAgICAgICAibW92cSAgJSVtbTAsJSVtbTIgICAgICAgICAgICAg
XG5cdCIgICAgLy8gY3JlZDAgY2JsMCBjZ3IwIGNyZWQwCgogICAgICAgICAgInB1bnBja2x3ZCAl
JW1tNiwlJW1tNyAgICAgICAgIFxuXHQiIC8vIFk1IFk0IFkxIFkxIFkxIFkwIFkwIFkwCgogICAg
ICAgICAgInBhbmQgZGF2ZW1hc2ssJSVtbTIgICAgICAgICBcblx0IiAvLyAwIGNibDAgY2dyMCAw
CgogICAgICAgICAgInBzcmxxICQxNiwlJW1tMSAgICAgICAgICAgICAgXG5cdCIgICAgLy8gMCAw
IFk1IFk1IFk0IFk0IFkxIFkxCgogICAgICAgICAgInBzcmxxICQxNiwlJW1tMiAgICAgICAgICAg
ICAgXG5cdCIgICAgLy8gMCAwIGNibDAgY2dyMAoKICAgICAgICAgICJwdW5wY2tsYncgZW1wdHks
JSVtbTcgICAgICAgXG5cdCIgLy8gWTEgWTAgWTAgWTAKCiAgICAgICAgICAicGFkZHN3ICUlbW01
LCUlbW00ICAgICAgICAgICAgXG5cdCIgICAgLy8gY2JsMSBjZ3IxIGNyZWQxIGNibDEKCiAgICAg
ICAgICAibW92cSAgJSVtbTQsJSVtbTMgICAgICAgICAgICAgXG5cdCIgICAgLy8gY2JsMSBjZ3Ix
IGNyZWQxIGNibDEKCiAgICAgICAgICAicGFuZCAgZGF2ZW1hc2ssJSVtbTMgICAgICAgIFxuXHQi
IC8vIDAgY2dyMSBjcmVkMSAwCgogICAgICAgICAgInBhZGRzdyAlJW1tMCwlJW1tNyAgICAgICAg
ICAgIFxuXHQiICAgIC8vIHIxIGIwIGcwIHIwCgogICAgICAgICAgInBzbGxxICQxNiwlJW1tMyAg
ICAgICAgICAgICAgXG5cdCIgICAgLy8gY2dyMSBjcmVkMSAwIDAKCiAgICAgICAgICAibW92cSAl
JW1tMSwlJW1tNiAgICAgICAgICAgICAgXG5cdCIgICAgLy8gMCAwIFk1IFk1IFk0IFk0IFkxIFkx
CgogICAgICAgICAgInBvciAgICUlbW0zLCUlbW0yICAgICAgICAgICAgIFxuXHQiICAgIC8vIGNn
cjEgY3JlZDEgY2JsMCBjZ3IwCgogICAgICAgICAgInB1bnBja2xidyBlbXB0eSwlJW1tNiAgICAg
ICBcblx0IiAvLyBZNCBZNCBZMSBZMQoKICAgICAgICAgICJtb3ZkICglJWVheCksJSVtbTMgICAg
ICAgICAgICBcblx0IiAgICAvLyBZMTUgWTE0IFkxMSBZMTAgWTcgWTYgWTMgWTIKCiAgICAgICAg
ICAicGFkZHN3ICUlbW0yLCUlbW02ICAgICAgICAgICAgXG5cdCIgICAgLy8gZzQgcjQgYjEgZzEK
CiAgICAgICAgICAicGFja3Vzd2IgJSVtbTYsJSVtbTcgICAgICAgICAgXG5cdCIgICAgLy8gZzQg
cjQgYjEgZzEgcjEgYjAgZzAgcjAKCiAgICAgICAgICAibW92cSAlJW1tMywlJW1tNiAgICAgICAg
ICAgICAgXG5cdCIgICAgLy8gWTE1IFkxNCBZMTEgWTEwIFk3IFk2IFkzIFkyCgogICAgICAgICAg
InB1bnBja2xidyAlJW1tMywlJW1tMyAgICAgICAgIFxuXHQiIC8vIFk3IFk3IFk2IFk2IFkzIFkz
IFkyIFkyCgogICAgICAgICAgIm1vdnEgJSVtbTcsKCUlZWRpKSAgICAgICAgICAgIFxuXHQiICAg
IC8vIG1vdmUgdG8gbWVtb3J5IGc0IHI0IGIxIGcxIHIxIGIwIGcwIHIwCgogICAgICAgICAgIm1v
dnEgJSVtbTMsJSVtbTUgICAgICAgICAgICAgIFxuXHQiICAgIC8vIFk3IFk3IFk2IFk2IFkzIFkz
IFkyIFkyCgogICAgICAgICAgInB1bnBja2x3ZCAlJW1tNiwlJW1tMyAgICAgICAgIFxuXHQiIC8v
IFggWCBYIFggWTMgWTIgWTIgWTIKCiAgICAgICAgICAicHVucGNrbGJ3IGVtcHR5LCUlbW0zICAg
ICAgIFxuXHQiIC8vIFkzIFkyIFkyIFkyCgogICAgICAgICAgInBzcmxxICQxNiwlJW1tNSAgICAg
ICAgICAgICAgXG5cdCIgICAgLy8gMCAwIFk3IFk3IFk2IFk2IFkzIFkzCgogICAgICAgICAgInBh
ZGRzdyAlJW1tMCwlJW1tMyAgICAgICAgICAgIFxuXHQiICAgIC8vIHIzIGIyIGcyIHIyCgogICAg
ICAgICAgIm1vdnEgJSVtbTUsJSVtbTYgICAgICAgICAgICAgIFxuXHQiICAgIC8vIDAgMCBZNyBZ
NyBZNiBZNiBZMyBZMwoKICAgICAgICAgICJtb3ZxICUlbW0xLCUlbW0wICAgICAgICAgICAgICBc
blx0IiAgICAvLyAwIDAgWTUgWTUgWTQgWTQgWTEgWTEKCiAgICAgICAgICAicHVucGNrbGRxICUl
bW02LCUlbW02ICAgICAgICAgXG5cdCIgLy8gWCBYIFggWCBZNiBZNiBZMyBZMwoKICAgICAgICAg
ICJwdW5wY2tsYncgZW1wdHksJSVtbTYgICAgICAgXG5cdCIgLy8gWTYgWTYgWTMgWTMKCiAgICAg
ICAgICAicHNybHEgJDI0LCUlbW0xICAgICAgICAgICAgICBcblx0IiAgICAvLyAwIDAgMCAwIDAg
WTUgWTUgWTQKCiAgICAgICAgICAicGFkZHN3ICUlbW0yLCUlbW02ICAgICAgICAgICAgXG5cdCIg
ICAgLy8gZzYgcjYgYjMgZzMKCiAgICAgICAgICAicGFja3Vzd2IgJSVtbTYsJSVtbTMgICAgICAg
ICAgXG5cdCIgICAgLy8gZzYgcjYgYjMgZzMgcjMgYjIgZzIgcjIKCiAgICAgICAgICAibW92cSAl
JW1tNSwlJW1tMiAgICAgICAgICAgICAgXG5cdCIgICAgLy8gMCAwIFk3IFk3IFk2IFk2IFkzIFkz
CgogICAgICAgICAgInBzcmxxICQzMiwlJW1tMCAgICAgICAgICAgICAgXG5cdCIgICAgLy8gMCAw
IDAgMCAwIDAgWTUgWTUKCiAgICAgICAgICAibW92cSAlJW1tMywoJSVlZHgpICAgICAgICAgICAg
XG5cdCIgICAgLy8gbW92ZSB0byBtZW1vcnkgZzYgcjYgYjMgZzMgcjMgYjIgZzIgcjIKCiAgICAg
ICAgICAicHVucGNrbHdkICUlbW0wLCUlbW0xICAgICAgICAgXG5cdCIgLy8gWCBYIFggWCBZNSBZ
NSBZNSBZNAoKICAgICAgICAgICJwc3JscSAkMjQsJSVtbTUgICAgICAgICAgICAgIFxuXHQiICAg
IC8vIDAgMCAwIDAgMCBZNyBZNyBZNiAKCiAgICAgICAgICAibW92ZCAoJSVlYngpLCUlbW0wICAg
ICAgICAgICAgXG5cdCIgICAgLy8gQ3I5IENyOC4uLi4uQ3IzIENyMgoKICAgICAgICAgICJwc3Js
cSAkMzIsJSVtbTIgICAgICAgICAgICAgIFxuXHQiICAgIC8vIDAgMCAwIDAgMCAwIFk3IFk3ICAg
ICAgCgogICAgICAgICAgInBzcmxxICQxNiwlJW1tMCAgICAgICAgICAgICAgXG5cdCIKCiAgICAg
ICAgICAicHVucGNrbGJ3IGVtcHR5LCUlbW0xICAgICAgIFxuXHQiIC8vIFk1IFk1IFk1IFk0Cgog
ICAgICAgICAgInB1bnBja2x3ZCAlJW1tMiwlJW1tNSAgICAgICAgIFxuXHQiIC8vIFggWCBYIFgg
WTcgWTcgWTcgWTYKCiAgICAgICAgICAicGFkZHN3ICUlbW00LCUlbW0xICAgICAgICAgICAgXG5c
dCIgICAgLy8gYjUgZzUgcjUgYjQKCiAgICAgICAgICAicHVucGNrbGJ3IGVtcHR5LCUlbW01ICAg
ICAgIFxuXHQiIC8vIFk3IFk3IFk3IFk2ICAgICAgIAoKICAgICAgICAgICJweG9yICUlbW02LCUl
bW02ICAgICAgICAgICAgICBcblx0IiAgICAvLyBjbGVhciBtbTYgcmVnaXN0cgoKICAgICAgICAg
ICJwdW5wY2tsYncgJSVtbTAsJSVtbTAgICAgICAgICBcblx0IiAvLyBYIFggWCBYIENyMyBDcjMg
Q3IyIENyMgoKICAgICAgICAgICJwYWRkc3cgJSVtbTQsJSVtbTUgICAgICAgICAgICBcblx0IiAg
ICAvLyBiNyBnNyByNyBiNgoKICAgICAgICAgICJwdW5wY2tsd2QgJSVtbTAsJSVtbTAgICAgICAg
ICBcblx0IiAvLyBDcjMgQ3IzIENyMyBDcjMgQ3IyIENyMiBDcjIgQ3IyCgogICAgICAgICAgIm1v
dnEgJSVtbTAsJSVtbTQgICAgICAgICAgICAgIFxuXHQiCgogICAgICAgICAgIm1vdmQgKCUlZWN4
KSwlJW1tMyAgICAgICAgICAgIFxuXHQiICAgIC8vIENiOSBDYjguLi4uLi4gQ2IzIENiMgoKICAg
ICAgICAgICJwdW5wY2tsYncgJSVtbTYsJSVtbTAgICAgICAgICBcblx0IiAvLyBDcjIgQ3IyIENy
MiBDcjIKCiAgICAgICAgICAicHNybHEgJDE2LCUlbW0zICAgICAgICAgICAgICBcblx0IgoKICAg
ICAgICAgICJwc3Vic3cgY29uc3QxMjgsJSVtbTAgICAgICAgXG5cdCIgLy8gQ3IyIC0gMTI4OkNy
Mi0xMjg6Q3IyLTEyODpDcjIgLTEyOAoKICAgICAgICAgICJwdW5wY2tsYncgJSVtbTMsJSVtbTMg
ICAgICAgICBcblx0IiAvLyBYIFggWCBYIENiMyBDYjMgQ2IyIENiMgoKICAgICAgICAgICJwc2xs
dyAkMiwlJW1tMCAgICAgICAgICAgICAgIFxuXHQiICAgIC8vIGxlZnQgc2hpZnQgYnkgMiBiaXRz
CgogICAgICAgICAgInBhZGRzdyBjb25zdDA1LCUlbW0wICAgICAgICBcblx0IiAvLyBhZGQgKG9u
ZV9oYWxmL2ZpeCh4KSkgPDwgMgoKICAgICAgICAgICJwdW5wY2tsd2QgJSVtbTMsJSVtbTMgICAg
ICAgICBcblx0IiAvLyBDYjMgQ2IzIENiMyBDYjMgQ2IyIENiMiBDYjIgQ2IyCgogICAgICAgICAg
Im1vdnEgJSVtbTMsJSVtbTcgICAgICAgICAgICAgIFxuXHQiCgogICAgICAgICAgInBtdWxodyBj
b25zdDEsJSVtbTAgICAgICAgICBcblx0IiAvLyBtdWx0aXBseSBieSAoZml4KHgpID4+IDEpICAg
ICAgICAgICAgICAgCgogICAgICAgICAgInB1bnBja2xidyAlJW1tNiwlJW1tMyAgICAgICAgIFxu
XHQiIC8vIENiMiBDYjIgQ2IyIENiMgoKICAgICAgICAgICJwc3Vic3cgY29uc3QxMjgsJSVtbTMg
ICAgICAgXG5cdCIgLy8gQ2IwIC0gMTI4OkNiMC0xMjg6Q2IwLTEyODpDYjAgLTEyOAoKICAgICAg
ICAgICJwdW5wY2toYncgJSVtbTYsJSVtbTQgICAgICAgICBcblx0IiAvLyBDcjMgQ3IzIENyMyBD
cjMKCiAgICAgICAgICAicHNsbHcgJDIsJSVtbTMgICAgICAgICAgICAgICBcblx0IiAgICAvLyBs
ZWZ0IHNoaWZ0IGJ5IDIgYml0cwoKICAgICAgICAgICJwYWRkc3cgY29uc3QxNSwlJW1tMyAgICAg
ICAgXG5cdCIgLy8gYWRkIChvbmVfaGFsZi9maXgoeCkpIDw8IDIKCiAgICAgICAgICAicHVucGNr
aGJ3ICUlbW02LCUlbW03ICAgICAgICAgXG5cdCIgLy8gQ2IzIENiMyBDYjMgQ2IzCgogICAgICAg
ICAgInBtdWxodyBjb25zdDIsJSVtbTMgICAgICAgICBcblx0IiAvLyBtdWx0aXBseSBieSAoZml4
KHgpID4+IDEpIAoKICAgICAgICAgICJwc3Vic3cgY29uc3QxMjgsJSVtbTcgICAgICAgXG5cdCIg
Ly8gQ2IzIC0gMTI4OkNiMy0xMjg6Q2IzLTEyODpDYjMgLTEyOAoKICAgICAgICAgICJwYWRkc3cg
ICUlbW0zLCUlbW0wICAgICAgICAgICBcblx0IiAgICAvLyBjcmVkMiBjYmwyIGNncjIgY3JlZDIK
CiAgICAgICAgICAicHNsbHcgJDIsJSVtbTcgICAgICAgICAgICAgICBcblx0IiAgICAvLyBsZWZ0
IHNoaWZ0IGJ5IDIgYml0cwoKICAgICAgICAgICJwc3Vic3cgY29uc3QxMjgsJSVtbTQgICAgICAg
XG5cdCIgLy8gQ3IzIC0gMTI4OkNyMy0xMjg6Q3IzLTEyODpDcjMgLTEyOAoKICAgICAgICAgICJt
b3ZkIDQoJSVlc2kpLCUlbW0zICAgICAgICAgICBcblx0IiAgICAvLyAgWTIxIFkyMCBZMTcgWTE2
IFkxMyBZMTIgWTkgWTgKCiAgICAgICAgICAicHNsbHcgJDIsJSVtbTQgICAgICAgICAgICAgICBc
blx0IiAgICAvLyBsZWZ0IHNoaWZ0IGJ5IDIgYml0cwoKICAgICAgICAgICJwYWRkc3cgY29uc3Q1
NSwlJW1tNyAgICAgICAgXG5cdCIgLy8gYWRkIChvbmVfaGFsZi9maXgoeCkpIDw8IDIKCiAgICAg
ICAgICAibW92cSAlJW1tMywlJW1tNiAgICAgICAgICAgICAgXG5cdCIgICAgLy8gIFkyMSBZMjAg
WTE3IFkxNiBZMTMgWTEyIFk5IFk4CgogICAgICAgICAgIm1vdnEgICUlbW0wLCUlbW0yICAgICAg
ICAgICAgIFxuXHQiCgogICAgICAgICAgInBhbmQgZGF2ZW1hc2ssJSVtbTIgICAgICAgICBcblx0
IgoKICAgICAgICAgICJwdW5wY2tsYncgJSVtbTMsJSVtbTMgICAgICAgICBcblx0IiAvLyBZMTMg
WTEzIFkxMiBZMTIgWTkgWTkgWTggWTgKCiAgICAgICAgICAicHNybHEgJDE2LCUlbW0yICAgICAg
ICAgICAgICBcblx0IgoKICAgICAgICAgICJwYWRkc3cgY29uc3Q0NSwlJW1tNCAgICAgICAgXG5c
dCIgLy8gYWRkIChvbmVfaGFsZi9maXgoeCkpIDw8IDIKCiAgICAgICAgICAicHVucGNrbHdkICUl
bW02LCUlbW0zICAgICAgICAgXG5cdCIgLy8gWCBYIFggWCBZOSBZOCBZOCBZOAoKICAgICAgICAg
ICJwbXVsaHcgY29uc3Q1LCUlbW00ICAgICAgICAgXG5cdCIgLy8gbXVsdGlwbHkgYnkgKGZpeCh4
KSA+PiAxKSAKCiAgICAgICAgICAicG11bGh3IGNvbnN0NiwlJW1tNyAgICAgICAgIFxuXHQiIC8v
IG11bHRpcGx5IGJ5IChmaXgoeCkgPj4gMSkgCgogICAgICAgICAgInB1bnBja2xidyBlbXB0eSwl
JW1tMyAgICAgICBcblx0IiAvLyBZOSBZOCBZOCBZOAoKICAgICAgICAgICJwYWRkc3cgJSVtbTcs
JSVtbTQgICAgICAgICAgICBcblx0IiAgICAvLyBjYmwzIGNncjMgY3JlZDMgY2JsMwoKICAgICAg
ICAgICJwYWRkc3cgJSVtbTAsJSVtbTMgICAgICAgICAgICBcblx0IiAgICAvLyByOSBiOCBnOCBy
OAoKICAgICAgICAgICJtb3ZxICAlJW1tNCwlJW1tNyAgICAgICAgICAgICBcblx0IgoKICAgICAg
ICAgICJwYWNrdXN3YiAlJW1tMywlJW1tMSAgICAgICAgICBcblx0IiAgICAvLyByOSBiOCBnOCBy
OCBiNSBnNSByNSBiNAoKICAgICAgICAgICJtb3ZkIDQoJSVlYXgpLCUlbW0zICAgICAgICAgICBc
blx0IiAgICAvLyBZMjMgWTIyIFkxOSBZMTggWTE1IFkxNCBZMTEgWTEwCgogICAgICAgICAgInBh
bmQgIGRhdmVtYXNrLCUlbW03ICAgICAgICBcblx0IgoKICAgICAgICAgICJwc3JscSAkOCwlJW1t
NiAgICAgICAgICAgICAgIFxuXHQiICAgIC8vIDAgWTIxIFkyMCBZMTcgWTE2IFkxMyBZMTIgWTkK
CiAgICAgICAgICAicHNsbHEgJDE2LCUlbW03ICAgICAgICAgICAgICBcblx0IgoKICAgICAgICAg
ICJtb3ZxICUlbW0xLDgoJSVlZGkpICAgICAgICAgICBcblx0IiAgICAvLyBtb3ZlIHRvIG1lbW9y
eSByOSBiOCBnOCByOCBiNSBnNSByNSBiNAoKICAgICAgICAgICJwb3IgICAlJW1tNywlJW1tMiAg
ICAgICAgICAgICBcblx0IgoKICAgICAgICAgICJtb3ZxICUlbW0zLCUlbW03ICAgICAgICAgICAg
ICBcblx0IiAgICAvLyBZMjMgWTIyIFkxOSBZMTggWTE1IFkxNCBZMTEgWTEwCgogICAgICAgICAg
InB1bnBja2xidyAlJW1tMywlJW1tMyAgICAgICAgIFxuXHQiIC8vIFggWCBYIFggWTExIFkxMSBZ
MTAgWTEwCgogICAgICAgICAgInB4b3IgJSVtbTEsJSVtbTEgICAgICAgICAgICAgIFxuXHQiCgog
ICAgICAgICAgInB1bnBja2x3ZCAlJW1tNywlJW1tMyAgICAgICAgIFxuXHQiIC8vIFggWCBYIFgg
WTExIFkxMCBZMTAgWTEwCgogICAgICAgICAgInB1bnBja2xidyAlJW1tMSwlJW1tMyAgICAgICAg
IFxuXHQiIC8vIFkxMSBZMTAgWTEwIFkxMAoKICAgICAgICAgICJwc3JscSAkOCwlJW1tNyAgICAg
ICAgICAgICAgIFxuXHQiICAgIC8vIDAgWTIzIFkyMiBZMTkgWTE4IFkxNSBZMTQgWTExCgogICAg
ICAgICAgInBhZGRzdyAlJW1tMCwlJW1tMyAgICAgICAgICAgIFxuXHQiICAgIC8vIHIxMSBiMTAg
ZzEwIHIxMAoKICAgICAgICAgICJtb3ZxICUlbW03LCUlbW0wICAgICAgICAgICAgICBcblx0IiAg
ICAvLyAwIFkyMyBZMjIgWTE5IFkxOCBZMTUgWTE0IFkxMQoKICAgICAgICAgICJwYWNrdXN3YiAl
JW1tMywlJW1tNSAgICAgICAgICBcblx0IiAgICAvLyByMTEgYjEwIGcxMCByMTAgYjcgZzcgcjcg
YjYKCiAgICAgICAgICAicHVucGNrbGJ3ICUlbW03LCUlbW03ICAgICAgICAgXG5cdCIgLy8gWCBY
IFggWCBZMTQgWTE0IFkxMSBZMTEKCiAgICAgICAgICAibW92cSAlJW1tNSw4KCUlZWR4KSAgICAg
ICAgICAgXG5cdCIgICAgLy8gbW92ZSB0byBtZW1vcnkgcjExIGIxMCBnMTAgcjEwIGI3IGc3IHI3
IGI2CgogICAgICAgICAgIm1vdnEgJSVtbTYsJSVtbTMgICAgICAgICAgICAgIFxuXHQiICAgIC8v
IDAgWTIxIFkyMCBZMTcgWTE2IFkxMyBZMTIgWTkKCiAgICAgICAgICAicHVucGNrbGJ3ICUlbW02
LCUlbW02ICAgICAgICAgXG5cdCIgLy8gWCBYIFggWCBZMTIgWTEyIFk5IFk5CgogICAgICAgICAg
InB1bnBja2xidyAlJW1tMSwlJW1tNyAgICAgICAgIFxuXHQiIC8vIFkxNCBZMTQgWTExIFkxMQoK
ICAgICAgICAgICJwdW5wY2tsYncgJSVtbTEsJSVtbTYgICAgICAgICBcblx0IiAvLyBZMTIgWTEy
IFk5IFk5CgogICAgICAgICAgInBhZGRzdyAlJW1tMiwlJW1tNyAgICAgICAgICAgIFxuXHQiICAg
IC8vIGcxNCByMTQgYjExIGcxMQoKICAgICAgICAgICJwYWRkc3cgJSVtbTIsJSVtbTYgICAgICAg
ICAgICBcblx0IiAgICAvLyBnMTIgcjEyIGI5IGc5CgogICAgICAgICAgInBzcmxxICQ4LCUlbW0z
ICAgICAgICAgICAgICAgXG5cdCIgICAgLy8gMCAwIFkyMSBZMjAgWTE3IFkxNiBZMTMgWTEyCgog
ICAgICAgICAgIm1vdnEgJSVtbTMsJSVtbTEgICAgICAgICAgICAgIFxuXHQiICAgIC8vIDAgMCBZ
MjEgWTIwIFkxNyBZMTYgWTEzIFkxMgoKICAgICAgICAgICJwdW5wY2tsYncgJSVtbTMsJSVtbTMg
ICAgICAgICBcblx0IiAvLyBYIFggWCBYIFkxMyBZMTMgWTEyIFkxMgoKICAgICAgICAgICJhZGRs
ICQ4LCUlZXNpICAgICAgICAgICAgICAgIFxuXHQiCgogICAgICAgICAgInBzcmxxICQxNiwlJW1t
MyAgICAgICAgICAgICAgXG5cdCIgICAgLy8gWCBYIFggWCBYIFggWTEzIFkxMyBtb2RpZmllZCBv
biAwOS8yNAoKICAgICAgICAgICJwdW5wY2tsd2QgJSVtbTMsJSVtbTEgICAgICAgICBcblx0IiAv
LyBYIFggWCBYIFkxMyBZMTMgWTEzIFkxMgoKICAgICAgICAgICJhZGRsICQ4LCUlZWF4ICAgICAg
ICAgICAgICAgIFxuXHQiCgogICAgICAgICAgInBzcmxxICQ4LCUlbW0wICAgICAgICAgICAgICAg
XG5cdCIgICAgLy8gMCAwIFkyMyBZMjIgWTE5IFkxOCBZMTUgWTE0ICAgCgogICAgICAgICAgInB1
bnBja2xidyBlbXB0eSwlJW1tMSAgICAgICBcblx0IiAvLyBZMTMgWTEzIFkxMyBZMTIKCiAgICAg
ICAgICAibW92cSAlJW1tMCwlJW1tNSAgICAgICAgICAgICAgXG5cdCIgICAgLy8gMCAwIFkyMyBZ
MjIgWTE5IFkxOCBZMTUgWTE0ICAgCgogICAgICAgICAgInB1bnBja2xidyAlJW1tMCwlJW1tMCAg
ICAgICAgIFxuXHQiIC8vIFggWCBYIFggWTE1IFkxNSBZMTQgWTE0CgogICAgICAgICAgInBhZGRz
dyAlJW1tNCwlJW1tMSAgICAgICAgICAgIFxuXHQiICAgIC8vIGIxMyBnMTMgcjEzIGIxMgoKICAg
ICAgICAgICJwc3JscSAkMTYsJSVtbTAgICAgICAgICAgICAgIFxuXHQiICAgIC8vIFggWCBYIFgg
WCBYIFkxNSBZMTUKCiAgICAgICAgICAiYWRkbCAkMjQsJSVlZGkgICAgICAgICAgICAgICBcblx0
IgoKICAgICAgICAgICJwdW5wY2tsd2QgJSVtbTAsJSVtbTUgICAgICAgICBcblx0IiAvLyBYIFgg
WCBYIFkxNSBZMTUgWTE1IFkxNAoKICAgICAgICAgICJwYWNrdXN3YiAlJW1tMSwlJW1tNiAgICAg
ICAgICBcblx0IiAgICAvLyBiMTMgZzEzIHIxMyBiMTIgZzEyIHIxMiBiOSBnOQoKICAgICAgICAg
ICJhZGRsICQyNCwlJWVkeCAgICAgICAgICAgICAgIFxuXHQiCgogICAgICAgICAgInB1bnBja2xi
dyBlbXB0eSwlJW1tNSAgICAgICBcblx0IiAvLyBZMTUgWTE1IFkxNSBZMTQKCiAgICAgICAgICAi
YWRkbCAkNCwlJWVieCAgICAgICAgICAgICAgICBcblx0IgoKICAgICAgICAgICJwYWRkc3cgJSVt
bTQsJSVtbTUgICAgICAgICAgICBcblx0IiAgICAvLyBiMTUgZzE1IHIxNSBiMTQKCiAgICAgICAg
ICAibW92cSAlJW1tNiwtOCglJWVkaSkgICAgICAgICAgXG5cdCIgLy8gbW92ZSB0byBtZW1vcnkg
YjEzIGcxMyByMTMgYjEyIGcxMiByMTIgYjkgZzkKCiAgICAgICAgICAicGFja3Vzd2IgJSVtbTUs
JSVtbTcgICAgICAgICAgXG5cdCIgICAgLy8gYjE1IGcxNSByMTUgYjE0IGcxNCByMTQgYjExIGcx
MQoKICAgICAgICAgICJhZGRsICQ0LCUlZWN4ICAgICAgICAgICAgICAgIFxuXHQiCgogICAgICAg
ICAgIm1vdnEgJSVtbTcsLTgoJSVlZHgpICAgICAgICAgIFxuXHQiIC8vIG1vdmUgdG8gbWVtb3J5
IGIxNSBnMTUgcjE1IGIxNCBnMTQgcjE0IGIxMSBnMTEKCiAgICAgICAgICAiZGVjbCAlNiBcblx0
IgoKICAgICAgICAgICJqbnogZG9fbmV4dDE2ICAgICAgICAgICAgICAgXG5cdCIKCgkgICJlbW1z
ICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKCgkgIDogLy8iPW0iKCZjb2xzX2FzbSkgCgoJ
ICA6ICJtIihpbnB0cjAwKSwgIm0iKGlucHRyMDEpLCAibSIoaW5wdHIyKSwgIm0iKGlucHRyMSks
ICJtIihvdXRwdHIxKSwgCgkgICAgIm0iKG91dHB0cjApLCJtIigmY29sc19hc20pIAoJICA6ICJl
YXgiLCAiZWJ4IiwgImVjeCIsICJlZHgiLCAiZWRpIiwgImVzaSIsICJzdCIsICJjYyIsICJtZW1v
cnkiCiAgICAgICAgICApOwojaWYgMAogICAgICAgICAgIm1vdmwgJGlucHRyMDAsICUlZXNpICAg
ICAgICAgXG5cdCIKCiAgICAgICAgICAibW92bCAkaW5wdHIwMSwgJSVlYXggICAgICAgICBcblx0
IgoKICAgICAgICAgICJtb3ZsICRpbnB0cjIsICUlZWJ4ICAgICAgICAgIFxuXHQiCgogICAgICAg
ICAgIm1vdmwgJGlucHRyMSwgJSVlY3ggICAgICAgICAgXG5cdCIKCiAgICAgICAgICAibW92bCAk
b3V0cHRyMCwgJSVlZGkgICAgICAgICBcblx0IgoKICAgICAgICAgICJtb3ZsICRvdXRwdHIxLCAl
JWVkeCAgICAgICAgIFxuXHQiCiNlbmRpZgoKCiNlbmRpZgogIAoJICAKICBpbnB0cjEgKz0gKGNv
bHNfYXNtX2NvcHk8PDIpOwoKICBpbnB0cjIgKz0gKGNvbHNfYXNtX2NvcHk8PDIpOwoKICBpbnB0
cjAwICs9IChjb2xzX2FzbV9jb3B5PDwzKTsKCiAgaW5wdHIwMSArPSAoY29sc19hc21fY29weTw8
Myk7CgogIG91dHB0cjAgKz0gY29sc19hc21fY29weSoyNDsKCiAgb3V0cHRyMSArPSBjb2xzX2Fz
bV9jb3B5KjI0OwogIAkJICAKICAvL2ZvciAoY29sID0gY2luZm8tPm91dHB1dF93aWR0aCA+PiAx
OyBjb2wgPiAwOyBjb2wtLSkgewogICAgICAvKiBEbyB0aGUgY2hyb21hIHBhcnQgb2YgdGhlIGNh
bGN1bGF0aW9uICovCiAgICAvKmNiID0gR0VUSlNBTVBMRSgqaW5wdHIxKyspOwogICAgY3IgPSBH
RVRKU0FNUExFKCppbnB0cjIrKyk7CiAgICBjcmVkID0gQ3JydGFiW2NyXTsKICAgIGNncmVlbiA9
IChpbnQpIFJJR0hUX1NISUZUKENiZ3RhYltjYl0gKyBDcmd0YWJbY3JdLCBTQ0FMRUJJVFMpOwog
ICAgY2JsdWUgPSBDYmJ0YWJbY2JdOyovCiAgICAvKiBGZXRjaCA0IFkgdmFsdWVzIGFuZCBlbWl0
IDQgcGl4ZWxzICovCiAgICAvKnkgID0gR0VUSlNBTVBMRSgqaW5wdHIwMCsrKTsKICAgIG91dHB0
cjBbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0W3kgKyBjcmVkXTsKICAgIG91dHB0cjBbUkdCX0dS
RUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3JlZW5dOwogICAgb3V0cHRyMFtSR0JfQkxVRV0gPSAg
cmFuZ2VfbGltaXRbeSArIGNibHVlXTsKICAgIG91dHB0cjAgKz0gUkdCX1BJWEVMU0laRTsKICAg
IHkgID0gR0VUSlNBTVBMRSgqaW5wdHIwMCsrKTsKICAgIG91dHB0cjBbUkdCX1JFRF0gPSAgIHJh
bmdlX2xpbWl0W3kgKyBjcmVkXTsKICAgIG91dHB0cjBbUkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0
W3kgKyBjZ3JlZW5dOwogICAgb3V0cHRyMFtSR0JfQkxVRV0gPSAgcmFuZ2VfbGltaXRbeSArIGNi
bHVlXTsKICAgIG91dHB0cjAgKz0gUkdCX1BJWEVMU0laRTsKICAgIHkgID0gR0VUSlNBTVBMRSgq
aW5wdHIwMSsrKTsKICAgIG91dHB0cjFbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0W3kgKyBjcmVk
XTsKICAgIG91dHB0cjFbUkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3JlZW5dOwogICAg
b3V0cHRyMVtSR0JfQkxVRV0gPSAgcmFuZ2VfbGltaXRbeSArIGNibHVlXTsKICAgIG91dHB0cjEg
Kz0gUkdCX1BJWEVMU0laRTsKICAgIHkgID0gR0VUSlNBTVBMRSgqaW5wdHIwMSsrKTsKICAgIG91
dHB0cjFbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0W3kgKyBjcmVkXTsKICAgIG91dHB0cjFbUkdC
X0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3JlZW5dOwogICAgb3V0cHRyMVtSR0JfQkxVRV0g
PSAgcmFuZ2VfbGltaXRbeSArIGNibHVlXTsKICAgIG91dHB0cjEgKz0gUkdCX1BJWEVMU0laRTsK
ICB9CSAgKi8KCgogIGZvciAoY29sID0gZGlmZiA+PiAxOyBjb2wgPiAwOyBjb2wtLSkgewogICAg
ICAvKiBEbyB0aGUgY2hyb21hIHBhcnQgb2YgdGhlIGNhbGN1bGF0aW9uICovCiAgICBjYiA9IEdF
VEpTQU1QTEUoKmlucHRyMSsrKTsKICAgIGNyID0gR0VUSlNBTVBMRSgqaW5wdHIyKyspOwogICAg
Y3JlZCA9IENycnRhYltjcl07CiAgICBjZ3JlZW4gPSAoaW50KSBSSUdIVF9TSElGVChDYmd0YWJb
Y2JdICsgQ3JndGFiW2NyXSwgU0NBTEVCSVRTKTsKICAgIGNibHVlID0gQ2JidGFiW2NiXTsKICAg
IC8qIEZldGNoIDQgWSB2YWx1ZXMgYW5kIGVtaXQgNCBwaXhlbHMgKi8KICAgIHkgID0gR0VUSlNB
TVBMRSgqaW5wdHIwMCsrKTsKICAgIG91dHB0cjBbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0W3kg
KyBjcmVkXTsKICAgIG91dHB0cjBbUkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3JlZW5d
OwogICAgb3V0cHRyMFtSR0JfQkxVRV0gPSAgcmFuZ2VfbGltaXRbeSArIGNibHVlXTsKICAgIG91
dHB0cjAgKz0gUkdCX1BJWEVMU0laRTsKICAgIHkgID0gR0VUSlNBTVBMRSgqaW5wdHIwMCsrKTsK
ICAgIG91dHB0cjBbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0W3kgKyBjcmVkXTsKICAgIG91dHB0
cjBbUkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3JlZW5dOwogICAgb3V0cHRyMFtSR0Jf
QkxVRV0gPSAgcmFuZ2VfbGltaXRbeSArIGNibHVlXTsKICAgIG91dHB0cjAgKz0gUkdCX1BJWEVM
U0laRTsKICAgIHkgID0gR0VUSlNBTVBMRSgqaW5wdHIwMSsrKTsKICAgIG91dHB0cjFbUkdCX1JF
RF0gPSAgIHJhbmdlX2xpbWl0W3kgKyBjcmVkXTsKICAgIG91dHB0cjFbUkdCX0dSRUVOXSA9IHJh
bmdlX2xpbWl0W3kgKyBjZ3JlZW5dOwogICAgb3V0cHRyMVtSR0JfQkxVRV0gPSAgcmFuZ2VfbGlt
aXRbeSArIGNibHVlXTsKICAgIG91dHB0cjEgKz0gUkdCX1BJWEVMU0laRTsKICAgIHkgID0gR0VU
SlNBTVBMRSgqaW5wdHIwMSsrKTsKICAgIG91dHB0cjFbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0
W3kgKyBjcmVkXTsKICAgIG91dHB0cjFbUkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3Jl
ZW5dOwogICAgb3V0cHRyMVtSR0JfQkxVRV0gPSAgcmFuZ2VfbGltaXRbeSArIGNibHVlXTsKICAg
IG91dHB0cjEgKz0gUkdCX1BJWEVMU0laRTsKICB9CSAgCgoJCQkJCSAgCiAgLyogSWYgaW1hZ2Ug
d2lkdGggaXMgb2RkLCBkbyB0aGUgbGFzdCBvdXRwdXQgY29sdW1uIHNlcGFyYXRlbHkgKi8KICAv
L2lmIChjaW5mby0+b3V0cHV0X3dpZHRoICYgMSkgewogIGlmIChkaWZmICYgMSkgewogICAgY2Ig
PSBHRVRKU0FNUExFKCppbnB0cjEpOwogICAgY3IgPSBHRVRKU0FNUExFKCppbnB0cjIpOwogICAg
Y3JlZCA9IENycnRhYltjcl07CiAgICBjZ3JlZW4gPSAoaW50KSBSSUdIVF9TSElGVChDYmd0YWJb
Y2JdICsgQ3JndGFiW2NyXSwgU0NBTEVCSVRTKTsKICAgIGNibHVlID0gQ2JidGFiW2NiXTsKICAg
IHkgID0gR0VUSlNBTVBMRSgqaW5wdHIwMCk7CiAgICBvdXRwdHIwW1JHQl9SRURdID0gICByYW5n
ZV9saW1pdFt5ICsgY3JlZF07CiAgICBvdXRwdHIwW1JHQl9HUkVFTl0gPSByYW5nZV9saW1pdFt5
ICsgY2dyZWVuXTsKICAgIG91dHB0cjBbUkdCX0JMVUVdID0gIHJhbmdlX2xpbWl0W3kgKyBjYmx1
ZV07CiAgICB5ICA9IEdFVEpTQU1QTEUoKmlucHRyMDEpOwogICAgb3V0cHRyMVtSR0JfUkVEXSA9
ICAgcmFuZ2VfbGltaXRbeSArIGNyZWRdOwogICAgb3V0cHRyMVtSR0JfR1JFRU5dID0gcmFuZ2Vf
bGltaXRbeSArIGNncmVlbl07CiAgICBvdXRwdHIxW1JHQl9CTFVFXSA9ICByYW5nZV9saW1pdFt5
ICsgY2JsdWVdOwogIH0gICAgCn0KI2Vsc2UKCgpNRVRIT0RERUYodm9pZCkKaDJ2Ml9tZXJnZWRf
dXBzYW1wbGUgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sCgkJICAgICAgSlNBTVBJTUFHRSBpbnB1
dF9idWYsIEpESU1FTlNJT04gaW5fcm93X2dyb3VwX2N0ciwKCQkgICAgICBKU0FNUEFSUkFZIG91
dHB1dF9idWYpCnsKICBteV91cHNhbXBsZV9wdHIgdXBzYW1wbGUgPSAobXlfdXBzYW1wbGVfcHRy
KSBjaW5mby0+dXBzYW1wbGU7CiAgcmVnaXN0ZXIgaW50IHksIGNyZWQsIGNncmVlbiwgY2JsdWU7
CiAgaW50IGNiLCBjcjsKICByZWdpc3RlciBKU0FNUFJPVyBvdXRwdHIwLCBvdXRwdHIxOwogIEpT
QU1QUk9XIGlucHRyMDAsIGlucHRyMDEsIGlucHRyMSwgaW5wdHIyOwogIEpESU1FTlNJT04gY29s
OwogIC8qIGNvcHkgdGhlc2UgcG9pbnRlcnMgaW50byByZWdpc3RlcnMgaWYgcG9zc2libGUgKi8K
ICByZWdpc3RlciBKU0FNUExFICogcmFuZ2VfbGltaXQgPSBjaW5mby0+c2FtcGxlX3JhbmdlX2xp
bWl0OwogIGludCAqIENycnRhYiA9IHVwc2FtcGxlLT5Dcl9yX3RhYjsKICBpbnQgKiBDYmJ0YWIg
PSB1cHNhbXBsZS0+Q2JfYl90YWI7CiAgSU5UMzIgKiBDcmd0YWIgPSB1cHNhbXBsZS0+Q3JfZ190
YWI7CiAgSU5UMzIgKiBDYmd0YWIgPSB1cHNhbXBsZS0+Q2JfZ190YWI7CiAgU0hJRlRfVEVNUFMK
CiAgaW5wdHIwMCA9IGlucHV0X2J1ZlswXVtpbl9yb3dfZ3JvdXBfY3RyKjJdOwogIGlucHRyMDEg
PSBpbnB1dF9idWZbMF1baW5fcm93X2dyb3VwX2N0cioyICsgMV07CiAgaW5wdHIxID0gaW5wdXRf
YnVmWzFdW2luX3Jvd19ncm91cF9jdHJdOwogIGlucHRyMiA9IGlucHV0X2J1ZlsyXVtpbl9yb3df
Z3JvdXBfY3RyXTsKICBvdXRwdHIwID0gb3V0cHV0X2J1ZlswXTsKICBvdXRwdHIxID0gb3V0cHV0
X2J1ZlsxXTsKICAvKiBMb29wIGZvciBlYWNoIGdyb3VwIG9mIG91dHB1dCBwaXhlbHMgKi8KICBm
b3IgKGNvbCA9IGNpbmZvLT5vdXRwdXRfd2lkdGggPj4gMTsgY29sID4gMDsgY29sLS0pIHsKICAg
IC8qIERvIHRoZSBjaHJvbWEgcGFydCBvZiB0aGUgY2FsY3VsYXRpb24gKi8KICAgIGNiID0gR0VU
SlNBTVBMRSgqaW5wdHIxKyspOwogICAgY3IgPSBHRVRKU0FNUExFKCppbnB0cjIrKyk7CiAgICBj
cmVkID0gQ3JydGFiW2NyXTsKICAgIGNncmVlbiA9IChpbnQpIFJJR0hUX1NISUZUKENiZ3RhYltj
Yl0gKyBDcmd0YWJbY3JdLCBTQ0FMRUJJVFMpOwogICAgY2JsdWUgPSBDYmJ0YWJbY2JdOwogICAg
LyogRmV0Y2ggNCBZIHZhbHVlcyBhbmQgZW1pdCA0IHBpeGVscyAqLwogICAgeSAgPSBHRVRKU0FN
UExFKCppbnB0cjAwKyspOwogICAgb3V0cHRyMFtSR0JfUkVEXSA9ICAgcmFuZ2VfbGltaXRbeSAr
IGNyZWRdOwogICAgb3V0cHRyMFtSR0JfR1JFRU5dID0gcmFuZ2VfbGltaXRbeSArIGNncmVlbl07
CiAgICBvdXRwdHIwW1JHQl9CTFVFXSA9ICByYW5nZV9saW1pdFt5ICsgY2JsdWVdOwogICAgb3V0
cHRyMCArPSBSR0JfUElYRUxTSVpFOwogICAgeSAgPSBHRVRKU0FNUExFKCppbnB0cjAwKyspOwog
ICAgb3V0cHRyMFtSR0JfUkVEXSA9ICAgcmFuZ2VfbGltaXRbeSArIGNyZWRdOwogICAgb3V0cHRy
MFtSR0JfR1JFRU5dID0gcmFuZ2VfbGltaXRbeSArIGNncmVlbl07CiAgICBvdXRwdHIwW1JHQl9C
TFVFXSA9ICByYW5nZV9saW1pdFt5ICsgY2JsdWVdOwogICAgb3V0cHRyMCArPSBSR0JfUElYRUxT
SVpFOwogICAgeSAgPSBHRVRKU0FNUExFKCppbnB0cjAxKyspOwogICAgb3V0cHRyMVtSR0JfUkVE
XSA9ICAgcmFuZ2VfbGltaXRbeSArIGNyZWRdOwogICAgb3V0cHRyMVtSR0JfR1JFRU5dID0gcmFu
Z2VfbGltaXRbeSArIGNncmVlbl07CiAgICBvdXRwdHIxW1JHQl9CTFVFXSA9ICByYW5nZV9saW1p
dFt5ICsgY2JsdWVdOwogICAgb3V0cHRyMSArPSBSR0JfUElYRUxTSVpFOwogICAgeSAgPSBHRVRK
U0FNUExFKCppbnB0cjAxKyspOwogICAgb3V0cHRyMVtSR0JfUkVEXSA9ICAgcmFuZ2VfbGltaXRb
eSArIGNyZWRdOwogICAgb3V0cHRyMVtSR0JfR1JFRU5dID0gcmFuZ2VfbGltaXRbeSArIGNncmVl
bl07CiAgICBvdXRwdHIxW1JHQl9CTFVFXSA9ICByYW5nZV9saW1pdFt5ICsgY2JsdWVdOwogICAg
b3V0cHRyMSArPSBSR0JfUElYRUxTSVpFOwogIH0KICAvKiBJZiBpbWFnZSB3aWR0aCBpcyBvZGQs
IGRvIHRoZSBsYXN0IG91dHB1dCBjb2x1bW4gc2VwYXJhdGVseSAqLwogIGlmIChjaW5mby0+b3V0
cHV0X3dpZHRoICYgMSkgewogICAgY2IgPSBHRVRKU0FNUExFKCppbnB0cjEpOwogICAgY3IgPSBH
RVRKU0FNUExFKCppbnB0cjIpOwogICAgY3JlZCA9IENycnRhYltjcl07CiAgICBjZ3JlZW4gPSAo
aW50KSBSSUdIVF9TSElGVChDYmd0YWJbY2JdICsgQ3JndGFiW2NyXSwgU0NBTEVCSVRTKTsKICAg
IGNibHVlID0gQ2JidGFiW2NiXTsKICAgIHkgID0gR0VUSlNBTVBMRSgqaW5wdHIwMCk7CiAgICBv
dXRwdHIwW1JHQl9SRURdID0gICByYW5nZV9saW1pdFt5ICsgY3JlZF07CiAgICBvdXRwdHIwW1JH
Ql9HUkVFTl0gPSByYW5nZV9saW1pdFt5ICsgY2dyZWVuXTsKICAgIG91dHB0cjBbUkdCX0JMVUVd
ID0gIHJhbmdlX2xpbWl0W3kgKyBjYmx1ZV07CiAgICB5ICA9IEdFVEpTQU1QTEUoKmlucHRyMDEp
OwogICAgb3V0cHRyMVtSR0JfUkVEXSA9ICAgcmFuZ2VfbGltaXRbeSArIGNyZWRdOwogICAgb3V0
cHRyMVtSR0JfR1JFRU5dID0gcmFuZ2VfbGltaXRbeSArIGNncmVlbl07CiAgICBvdXRwdHIxW1JH
Ql9CTFVFXSA9ICByYW5nZV9saW1pdFt5ICsgY2JsdWVdOwogIH0KfQojZW5kaWYKCgovKgogKiBN
b2R1bGUgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgbWVyZ2VkIHVwc2FtcGxpbmcvY29sb3Ig
Y29udmVyc2lvbi4KICoKICogTkI6IHRoaXMgaXMgY2FsbGVkIHVuZGVyIHRoZSBjb25kaXRpb25z
IGRldGVybWluZWQgYnkgdXNlX21lcmdlZF91cHNhbXBsZSgpCiAqIGluIGpkbWFzdGVyLmMuICBU
aGF0IHJvdXRpbmUgTVVTVCBjb3JyZXNwb25kIHRvIHRoZSBhY3R1YWwgY2FwYWJpbGl0aWVzCiAq
IG9mIHRoaXMgbW9kdWxlOyBubyBzYWZldHkgY2hlY2tzIGFyZSBtYWRlIGhlcmUuCiAqLwoKR0xP
QkFMKHZvaWQpCmppbml0X21lcmdlZF91cHNhbXBsZXIgKGpfZGVjb21wcmVzc19wdHIgY2luZm8p
CnsKICBteV91cHNhbXBsZV9wdHIgdXBzYW1wbGU7CgogIHVwc2FtcGxlID0gKG15X3Vwc2FtcGxl
X3B0cikKICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5m
bywgSlBPT0xfSU1BR0UsCgkJCQlTSVpFT0YobXlfdXBzYW1wbGVyKSk7CiAgY2luZm8tPnVwc2Ft
cGxlID0gKHN0cnVjdCBqcGVnX3Vwc2FtcGxlciAqKSB1cHNhbXBsZTsKICB1cHNhbXBsZS0+cHVi
LnN0YXJ0X3Bhc3MgPSBzdGFydF9wYXNzX21lcmdlZF91cHNhbXBsZTsKICB1cHNhbXBsZS0+cHVi
Lm5lZWRfY29udGV4dF9yb3dzID0gRkFMU0U7CgogIHVwc2FtcGxlLT5vdXRfcm93X3dpZHRoID0g
Y2luZm8tPm91dHB1dF93aWR0aCAqIGNpbmZvLT5vdXRfY29sb3JfY29tcG9uZW50czsKCiAgaWYg
KGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvciA9PSAyKSB7CiAgICB1cHNhbXBsZS0+cHViLnVwc2Ft
cGxlID0gbWVyZ2VkXzJ2X3Vwc2FtcGxlOwogICAgdXBzYW1wbGUtPnVwbWV0aG9kID0gaDJ2Ml9t
ZXJnZWRfdXBzYW1wbGU7CiAgICAvKiBBbGxvY2F0ZSBhIHNwYXJlIHJvdyBidWZmZXIgKi8KICAg
IHVwc2FtcGxlLT5zcGFyZV9yb3cgPSAoSlNBTVBST1cpCiAgICAgICgqY2luZm8tPm1lbS0+YWxs
b2NfbGFyZ2UpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsCgkJKHNpemVfdCkg
KHVwc2FtcGxlLT5vdXRfcm93X3dpZHRoICogU0laRU9GKEpTQU1QTEUpKSk7CiAgfSBlbHNlIHsK
ICAgIHVwc2FtcGxlLT5wdWIudXBzYW1wbGUgPSBtZXJnZWRfMXZfdXBzYW1wbGU7CiAgICB1cHNh
bXBsZS0+dXBtZXRob2QgPSBoMnYxX21lcmdlZF91cHNhbXBsZTsKICAgIC8qIE5vIHNwYXJlIHJv
dyBuZWVkZWQgKi8KICAgIHVwc2FtcGxlLT5zcGFyZV9yb3cgPSBOVUxMOwogIH0KCiAgYnVpbGRf
eWNjX3JnYl90YWJsZShjaW5mbyk7Cn0KCiNlbmRpZiAvKiBVUFNBTVBMRV9NRVJHSU5HX1NVUFBP
UlRFRCAqLwo=

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