This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
>Number: 2404 >Category: c >Synopsis: arm-linux-gcc ice >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue Mar 27 12:46:01 PST 2001 >Closed-Date: >Last-Modified: >Originator: bkohlen@intrinsyc.com >Release: gcc version 2.95.3 20010315 (release) >Organization: >Environment: gcc cross compiler for arm with fairly standard configure flags. used in combination with glibc-2.1.3 and binutils-2.10. I was compiling xfree86 for arm when error occured. >Description: When installing xfree86 (on my pc, so that I can package it for arm) it compiles shadow.c and I get the following error: shadow.c: In function `shadowImageGlyphBlt': shadow.c:1173: Internal compiler error in `purge_addressof_1', at function.c:3183 Please submit a full bug report. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. I had this exact same problem with gcc-2.95.2, so i tried .3 and it was duplicated perfectly. I haven't included the sources you will need to duplicate the error yourself because it's a 60M tarball (gzipped). I read the bug reporting howto though, and I think i've included everything else that was asked for. If you need the full sources (i've already included shadow.c) just email me for them. >How-To-Repeat: First you'll need the 60M tarball... then you can just run the bugcommand script i've provided... >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="shadow.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="shadow.i" IyAxICJzaGFkb3cuYyIKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uLy4uLy4uLy4u L2V4cG9ydHMvaW5jbHVkZS9YMTEvWC5oIiAxCiAKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCiAKCgoKCgoKCnR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBYSUQ7CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBNYXNrOwoKCgp0eXBlZGVmIHVu c2lnbmVkIGxvbmcgQXRvbTsJCSAKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBWaXN1YWxJRDsKdHlw ZWRlZiB1bnNpZ25lZCBsb25nIFRpbWU7CiMgOTUgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVk ZS9YMTEvWC5oIgoKCnR5cGVkZWYgWElEIFdpbmRvdzsKdHlwZWRlZiBYSUQgRHJhd2FibGU7CgoK dHlwZWRlZiBYSUQgRm9udDsKCnR5cGVkZWYgWElEIFBpeG1hcDsKdHlwZWRlZiBYSUQgQ3Vyc29y Owp0eXBlZGVmIFhJRCBDb2xvcm1hcDsKdHlwZWRlZiBYSUQgR0NvbnRleHQ7CnR5cGVkZWYgWElE IEtleVN5bTsKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBLZXlDb2RlOwoKIAoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoK CgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCQkgICAgICAgCiAKCgoK CgoKCgoKCiAKCgoKCgogCgoKCgogCgoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKCgoKIAoK CgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDM2NSAiLi4vLi4vLi4vLi4vZXhwb3J0 cy9pbmNsdWRlL1gxMS9YLmgiCgoKCgoKCgoKCgoKIAoKCgogCiAKCgoKCiAKCgoKCgoKCgoKCgoK CgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgogCgoKCgoKIAoKCgoK IAoKCgoKCiAKCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoK CgoKCiAKCgoKCgoKIAoKCgoKCiAKCgoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgogCgoK CgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKIAoKCgog CgoKCgoKIAoKCgogCgoKCgoKIAoKCgoKCiAKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoK CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKIAoKCgoKIAoKCgoKIAoKCgoK CgoKCgoKCiAKCgoKCgojIDI2ICJzaGFkb3cuYyIgMgoKIyAxICIuLi8uLi9pbmNsdWRlL3Njcm5p bnRzdHIuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog CgoKCgojIDEgIi4uLy4uL2luY2x1ZGUvc2NyZWVuaW50LmgiIDEKIAogCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgojIDEgIi4uLy4uL2luY2x1ZGUvbWlzYy5o IiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCiAKCgogCgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBnbG9iYWxTZXJpYWxO dW1iZXI7CmV4dGVybiB1bnNpZ25lZCBsb25nIHNlcnZlckdlbmVyYXRpb247CgojIDEgIi4uLy4u Ly4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWG9zZGVmcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAg CgoKCgoKCgojIDg5ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvWDExL1hvc2RlZnMuaCIK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNzYgIi4uLy4uL2luY2x1ZGUv bWlzYy5oIiAyCgojIDEgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGZ1bmNwcm90 by5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA3NyAiLi4vLi4vaW5jbHVkZS9t aXNjLmgiIDIKCiMgMSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL1gxMS9YbWQuaCIgMQog CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgogCgoK CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIyAxMTkg Ii4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWG1kLmgiCgoKCgoKCgp0eXBlZGVmIGxv bmcgSU5UMzI7Cgp0eXBlZGVmIHNob3J0IElOVDE2OwoKCgp0eXBlZGVmIHNpZ25lZCBjaGFyICAg IElOVDg7CgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIENBUkQzMjsKCnR5cGVkZWYgdW5z aWduZWQgc2hvcnQgQ0FSRDE2Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgIENBUkQ4OwoKdHlwZWRl ZiBDQVJEMzIJCUJJVFMzMjsKdHlwZWRlZiBDQVJEMTYJCUJJVFMxNjsKCgoKdHlwZWRlZiBDQVJE OAkJQllURTsKdHlwZWRlZiBDQVJEOCAgICAgICAgICAgQk9PTDsKCgoKCgoKCgoKCgoKCgoKCgog CgoKIyAxODMgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWG1kLmgiCgoKCgoKCgoK CgoKCgoKCgoKCgoKIAoKCiAgCgoKCgojIDc4ICIuLi8uLi9pbmNsdWRlL21pc2MuaCIgMgoKCiMg MSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL1gxMS9YZGVmcy5oIiAxCiAKCiAKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgaW50IEJvb2w7 CgoKCgoKdHlwZWRlZiB2b2lkICpwb2ludGVyOwoKCgp0eXBlZGVmIHN0cnVjdCBfQ2xpZW50ICpD bGllbnRQdHI7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0ZvbnQgKkZv bnRQdHI7ICAKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEZTSUQ7CgoKCgoKdHlwZWRl ZiBGU0lEIEFjY0NvbnRleHQ7CgogCgp0eXBlZGVmIHN0cnVjdCB0aW1ldmFsICoqT1NUaW1lUHRy OwoKCnR5cGVkZWYgdm9pZCAoKiBCbG9ja0hhbmRsZXJQcm9jUHRyKShwb2ludGVyICAsCgkJCQkg ICAgIE9TVGltZVB0ciAgLAoJCQkJICAgICBwb2ludGVyICApOwoKCiMgODAgIi4uLy4uL2luY2x1 ZGUvbWlzYy5oIiAyCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv aW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgoKCgoKCiAKCiAKCgoKCiAKCgogCgoKCgoK IAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRl Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgoK CgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwoKCgoKCgoKCgogCgoKCgogCgogCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXpl X3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJf dDsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgIHdpbnRfdDsK CgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVk ZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIyA4NSAiLi4vLi4vaW5j bHVkZS9taXNjLmgiIDIKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBQSVhF TDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEFUT007CgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0Nh bGxiYWNrTGlzdCAqQ2FsbGJhY2tMaXN0UHRyOyAgCgoKCnR5cGVkZWYgc3RydWN0IF94UmVxICp4 UmVxUHRyOwoKIyAxICIuLi8uLi9pbmNsdWRlL29zLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyAxICIuLi8uLi9pbmNsdWRlL21pc2MuaCIg MQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgogCiMgMjkzICIuLi8uLi9pbmNsdWRlL21pc2MuaCIKCiMgNDkgIi4uLy4uL2lu Y2x1ZGUvb3MuaCIgMgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGFs bG9jYS5oIiAxCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIyA4MyAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNs dWRlL1gxMS9YYWxsb2NhLmgiCgoKCgoKCgoKCiMgMTIwICIuLi8uLi8uLi8uLi9leHBvcnRzL2lu Y2x1ZGUvWDExL1hhbGxvY2EuaCIKCgoKCiMgMTMyICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1 ZGUvWDExL1hhbGxvY2EuaCIKCgoKIyA1MiAiLi4vLi4vaW5jbHVkZS9vcy5oIiAyCgoKIyAxICIv dXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCiAKCgoKCgoKdHlwZWRlZiB2b2lkICpfX2dudWNfdmFfbGlzdDsKCgoKIAoKCgogCgoK CgoKCgoKCgoKCgoKCgoKdm9pZCB2YV9lbmQgKF9fZ251Y192YV9saXN0KTsJCSAKCgogCgoKCiAK CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgoKCgoKCgoKCgoKIyAx NzUgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAz CgoKIAoKCgoKIAoKIAoKIAoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgojIDU0ICIuLi8uLi9pbmNsdWRlL29zLmgiIDIKCgoKCgoKCgoKCgoK CgoKCgoKCnR5cGVkZWYgcG9pbnRlcglGSUQ7CnR5cGVkZWYgc3RydWN0IF9Gb250UGF0aFJlYyAq Rm9udFBhdGhQdHI7CnR5cGVkZWYgc3RydWN0IF9OZXdDbGllbnRSZWMgKk5ld0NsaWVudFB0cjsK CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0cmluZy5oIiAxIDMKIAoKCgoKCgoKCgoK CgoKCgoKCiAKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4v Li4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoK CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKIAoKCgoKCgoKIAoK CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKIAoKIyAxNjYgIi91c3IvbGliL2dj Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9mZWF0 dXJlcy5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgogCgoKCgogCgojIDEgIi91c3IvbGliL2dj Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zeXMv Y2RlZnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKIAoKCgoKCgoK CiAKCgoKCiMgNzEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8u Li9hcm0tbGludXgvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCiAKCgoKCgoKCiAKCgoKIyAxMDMg Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv aW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgogCgoK CgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKIyAyNTAgIi91c3IvbGliL2djYy1s aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9mZWF0dXJl cy5oIiAyIDMKCgogCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgojIDEgIi91c3IvbGliL2dj Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9nbnUv c3R1YnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjc4ICIvdXNyL2xpYi9n Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvZmVh dHVyZXMuaCIgMiAzCgoKCgojIDI2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv Li4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiAKCiAKCgojIDEg Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK CgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRl L3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYXJt LWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoK CgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45 NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgogCgogCgoKIyAxODggIi91c3IvbGliL2dj Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoK CiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYu aCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYXJtLWxp bnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoK CgojIDMzICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJt LWxpbnV4L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgogCmV4dGVybiB2b2lkICogIG1lbWNweSAg KHZvaWQgKiAgX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICBfX2NvbnN0IHZvaWQgKiAgX19yZXN0 cmljdCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwogCgpleHRlcm4gdm9pZCAqICBtZW1tb3ZlICAo dm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBzaXplX3QgX19u KSAgICA7CgogCgoKCmV4dGVybiB2b2lkICogIG1lbWNjcHkgICh2b2lkICogIF9fZGVzdCwgX19j b25zdCB2b2lkICogIF9fc3JjLAoJCQkgICAgIGludCBfX2MsIHNpemVfdCBfX24pICAgIDsKCgoK IApleHRlcm4gdm9pZCAqICBtZW1zZXQgICh2b2lkICogIF9fcywgaW50IF9fYywgc2l6ZV90IF9f bikgICAgOwoKIApleHRlcm4gaW50IG1lbWNtcCAgKF9fY29uc3Qgdm9pZCAqICBfX3MxLCBfX2Nv bnN0IHZvaWQgKiAgX19zMiwKCQkJc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gdm9pZCAqICBt ZW1jaHIgIChfX2NvbnN0IHZvaWQgKiAgX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSAgICA7CgoK IAoKZXh0ZXJuIHZvaWQgKiAgcmF3bWVtY2hyICAoX19jb25zdCB2b2lkICogIF9fcywgaW50IF9f YykgICAgOwoKCgogCmV4dGVybiBjaGFyICpzdHJjcHkgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz dCwKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpICAgIDsKIApleHRlcm4gY2hh ciAqc3RybmNweSAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgICBfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICAgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0cmNh dCAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX3NyYykgICAgOwogCmV4dGVybiBjaGFyICpzdHJuY2F0ICAoY2hhciAqX19yZXN0cmljdCBf X2Rlc3QsCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikg ICAgOwoKIApleHRlcm4gaW50IHN0cmNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj aGFyICpfX3MyKSAgICA7CiAKZXh0ZXJuIGludCBzdHJuY21wICAoX19jb25zdCBjaGFyICpfX3Mx LCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pICAgIDsKCiAKZXh0ZXJuIGludCBzdHJj b2xsICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKIApleHRl cm4gc2l6ZV90IHN0cnhmcm0gIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgIF9fY29u c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwoKCiAKCgojIDEgIi91 c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5j bHVkZS94bG9jYWxlLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCnR5cGVkZWYg c3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CiAgc3RydWN0IGxvY2FsZV9kYXRhICpfX2xvY2FsZXNb Nl07CSAKCiAgIAogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0 IGludCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVyOwp9ICpf X2xvY2FsZV90OwoKCiMgOTkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8u Li8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKIApleHRlcm4gaW50IF9f c3RyY29sbF9sICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCgkJCSAg ICAgX19sb2NhbGVfdCBfX2wpICAgIDsKIApleHRlcm4gc2l6ZV90IF9fc3RyeGZybV9sICAoY2hh ciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uLAoJCQkJX19sb2NhbGVf dCBfX2wpICAgIDsKCgoKIApleHRlcm4gY2hhciAqX19zdHJkdXAgIChfX2NvbnN0IGNoYXIgKl9f cykgICAgOwpleHRlcm4gY2hhciAqc3RyZHVwICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsKCgog CgoKCmV4dGVybiBjaGFyICpzdHJuZHVwICAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90 IF9fbikgICAgOwoKCgogCgoKCgoKCgoKCiAKCiMgMTQzICIvdXNyL2xpYi9nY2MtbGliL2FybS1s aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3RyaW5nLmgiIDMKCgog CmV4dGVybiBjaGFyICpzdHJjaHIgIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgICAgOwog CmV4dGVybiBjaGFyICpzdHJyY2hyICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAgIDsK CgogCgpleHRlcm4gY2hhciAqc3RyY2hybnVsICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Mp ICAgIDsKCgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9fcywgX19j b25zdCBjaGFyICpfX3JlamVjdCkgICAgOwogCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAgKF9fY29u c3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KSAgICA7CiAKZXh0ZXJuIGNoYXIg KnN0cnBicmsgIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkgICAg OwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29u c3QgY2hhciAqX19uZWVkbGUpICAgIDsKCgogCmV4dGVybiBjaGFyICpfX3N0cmNhc2VzdHIgIChf X2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssCgkJCQlfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKSAgICA7 CmV4dGVybiBjaGFyICpzdHJjYXNlc3RyICAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLAoJCQkg ICAgICBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKSAgICA7CgoKIApleHRlcm4gY2hhciAqc3RydG9r ICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f ZGVsaW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cnRva19yICAoY2hhciAqX19yZXN0cmlj dCBfX3MsCgkJCSAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAoJCQkgICAg ICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSAgICA7CgpleHRlcm4gY2hhciAqc3RydG9r X3IgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX2RlbGltLAoJCQkgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgICAgOwoKCgog CgoKZXh0ZXJuIHZvaWQgKiAgbWVtbWVtICAoX19jb25zdCB2b2lkICogIF9faGF5c3RhY2ssIHNp emVfdCBfX2hheXN0YWNrbGVuLAoJCQkgICAgX19jb25zdCB2b2lkICogIF9fbmVlZGxlLCBzaXpl X3QgX19uZWVkbGVsZW4pICAgIDsKCiAKCmV4dGVybiB2b2lkICogIF9fbWVtcGNweSAgKHZvaWQg KiAgX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICAgICBfX2NvbnN0IHZvaWQgKiAgX19yZXN0cmlj dCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwpleHRlcm4gdm9pZCAqICBtZW1wY3B5ICAodm9pZCAq ICBfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgICBfX2NvbnN0IHZvaWQgKiAgX19yZXN0cmljdCBf X3NyYywgc2l6ZV90IF9fbikgICAgOwoKCgogCmV4dGVybiBzaXplX3Qgc3RybGVuICAoX19jb25z dCBjaGFyICpfX3MpICAgIDsKCgogCgpleHRlcm4gc2l6ZV90IHN0cm5sZW4gIChfX2NvbnN0IGNo YXIgKl9fc3RyaW5nLCBzaXplX3QgX19tYXhsZW4pICAgIDsKCgoKIApleHRlcm4gY2hhciAqc3Ry ZXJyb3IgIChpbnQgX19lcnJudW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cmVycm9yX3Ig IChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICAgIDsKZXh0ZXJu IGNoYXIgKnN0cmVycm9yX3IgIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19i dWZsZW4pICAgIDsKCgogCgpleHRlcm4gdm9pZCBfX2J6ZXJvICAodm9pZCAqICBfX3MsIHNpemVf dCBfX24pICAgIDsKCgogCmV4dGVybiB2b2lkIGJjb3B5ICAoX19jb25zdCB2b2lkICogIF9fc3Jj LCB2b2lkICogIF9fZGVzdCwgc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gdm9pZCBiemVybyAg KHZvaWQgKiAgX19zLCBzaXplX3QgX19uKSAgICA7CgogCmV4dGVybiBpbnQgYmNtcCAgKF9fY29u c3Qgdm9pZCAqICBfX3MxLCBfX2NvbnN0IHZvaWQgKiAgX19zMiwgc2l6ZV90IF9fbikgICAgOwoK IApleHRlcm4gY2hhciAqaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgICAgOwoK IApleHRlcm4gY2hhciAqcmluZGV4ICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAgIDsK CiAKCmV4dGVybiBpbnQgX19mZnMgIChpbnQgX19pKSAgICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0 KSk7CmV4dGVybiBpbnQgZmZzICAoaW50IF9faSkgICAgIF9fYXR0cmlidXRlX18gKChjb25zdCkp OwoKIAoKCmV4dGVybiBpbnQgZmZzbCAgKGxvbmcgaW50IF9fbCkgICAgIF9fYXR0cmlidXRlX18g KChjb25zdCkpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsICAobG9uZyBsb25nIGlu dCBfX2xsKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCgoKIApleHRlcm4gaW50 IF9fc3RyY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSAg ICA7CmV4dGVybiBpbnQgc3RyY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj aGFyICpfX3MyKSAgICA7CgogCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgIChfX2NvbnN0IGNoYXIg Kl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKCQkJICAgICBzaXplX3QgX19uKSAgICA7CgoKCiAK CmV4dGVybiBpbnQgX19zdHJjYXNlY21wX2wgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg Y2hhciAqX19zMiwKCQkJCV9fbG9jYWxlX3QgX19sb2MpICAgIDsKCmV4dGVybiBpbnQgX19zdHJu Y2FzZWNtcF9sICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCgkJCQkg c2l6ZV90IF9fbiwgX19sb2NhbGVfdCBfX2xvYykgICAgOwoKCgogCgpleHRlcm4gY2hhciAqc3Ry c2VwICAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJpbmdwLAoJCQkgIF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX2RlbGltKSAgICA7CgoKCiAKZXh0ZXJuIGludCBzdHJ2ZXJzY21wICAoX19jb25z dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0 cnNpZ25hbCAgKGludCBfX3NpZykgICAgOwoKIApleHRlcm4gY2hhciAqX19zdHBjcHkgIChjaGFy ICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny YykgICAgOwpleHRlcm4gY2hhciAqc3RwY3B5ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJ CSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKSAgICA7CgogCgpleHRlcm4gY2hhciAq X19zdHBuY3B5ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICAgX19jb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgICA7CmV4dGVybiBjaGFyICpzdHBuY3B5 ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gY2hhciAqc3RyZnJ5ICAoY2hhciAq X19zdHJpbmcpICAgIDsKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtZnJvYiAgKHZvaWQgKiAgX19zLCBz aXplX3QgX19uKSAgICA7CgoKIAoKCgpleHRlcm4gY2hhciAqYmFzZW5hbWUgIChfX2NvbnN0IGNo YXIgKl9fZmlsZW5hbWUpICAgIDsKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKIyAxICIvdXNy L2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1 ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMg MzQzICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxp bnV4L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiAKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1s aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgi IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj IDc0ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxp bnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCiAKCgoKCnR5cGVkZWYgc3RydWN0IHsgdW5z aWduZWQgY2hhciBfX2FyclsgMiBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjIgIF9fYXR0cmlidXRl X18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgMyBd OyB9CV9fU1RSSU5HMl9DT1BZX0FSUjMgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVk ZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgNCBdOyB9CV9fU1RSSU5HMl9DT1BZX0FS UjQgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQg Y2hhciBfX2FyclsgNSBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjUgIF9fYXR0cmlidXRlX18gKChw YWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgNiBdOyB9CV9f U1RSSU5HMl9DT1BZX0FSUjYgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3Ry dWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgNyBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjcgIF9f YXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBf X2FyclsgOCBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjggIF9fYXR0cmlidXRlX18gKChwYWNrZWQp KSA7CgoKCiAKCgoKCgogCgojIDE4MCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKCgog CgoKCgoKCgoKCiAKCgojIDM2NiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgogCgpleHRl cm4gdm9pZCAqICBfX3Jhd21lbWNociAoY29uc3Qgdm9pZCAqICBfX3MsIGludCBfX2MpOwoKCgoK CgoKIAojIDUzMiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u L2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCiAKCiMgNjk2ICIvdXNyL2xp Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUv Yml0cy9zdHJpbmcyLmgiIDMKCgoKCiAKCiMgNzEyICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51 eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK CgoKCgoKCgoKCgogCgojIDczMyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKCgoKCgoK IAoKCiMgNzY2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4v YXJtLWxpbnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgojIDc5MyAiL3Vzci9saWIvZ2Nj LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMv c3RyaW5nMi5oIiAzCgoKIyA4MTUgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8u Li8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCiMgODQwICIv dXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2lu Y2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgoKIAoKCgoKCgoKCgoKCiAKCgoKIyA4NzIgIi91c3Iv bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk ZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBzaXplX3QgX19zdHJjc3BuX2Mx IChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSAgc2l6 ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpCnsKICBy ZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdc MCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJu IF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBfX3N0cmNzcG5fYzIgKF9fY29u c3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwKCQkJCSAgICAgY2hhciBfX3JlamVjdDIpOwpl eHRlcm4gX19pbmxpbmUgIHNpemVfdApfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBj aGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1 bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAh PSBfX3JlamVjdDEKCSAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1 bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBfX3N0cmNz cG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwKCQkJCSAgICAgY2hhciBf X3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lICBzaXplX3QKX19zdHJj c3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3Qy LAoJICAgICAgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAw OwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3Jl amVjdDEKCSAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MiAmJiBfX3NbX19yZXN1bHRdICE9 IF9fcmVqZWN0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgoKCiAKCgoK IyA5MjcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0t bGludXgvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBzaXplX3Qg X19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0KTsKZXh0ZXJuIF9f aW5saW5lICBzaXplX3QKX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNj ZXB0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICAgCiAgd2hpbGUgKF9fc1tf X3Jlc3VsdF0gPT0gX19hY2NlcHQpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsK fQoKZXh0ZXJuIF9faW5saW5lICBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19z LCBjaGFyIF9fYWNjZXB0MSwKCQkJCSAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGlu ZSAgc2l6ZV90Cl9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEs IGNoYXIgX19hY2NlcHQyKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICAgCiAg d2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19h Y2NlcHQyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lu bGluZSAgc2l6ZV90IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2Vw dDEsCgkJCQkgICAgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKTsKZXh0ZXJuIF9faW5s aW5lICBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0 MSwgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9f cmVzdWx0ID0gMDsKICAgCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9f c1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCgkgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDMp CiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKCgogCgoKIyA5ODIgIi91c3Iv bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk ZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnBicmtfYzIg KF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKCQkJCSAgICAgY2hhciBfX2FjY2Vw dDIpOwpleHRlcm4gX19pbmxpbmUgIGNoYXIgKgpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAq X19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIpCnsKICAgCiAgd2hpbGUgKCpfX3Mg IT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0MikKICAgICsr X19zOwogIHJldHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSAgOiAoY2hhciAqKSAoc2l6 ZV90KSBfX3M7Cn0KCmV4dGVybiBfX2lubGluZSAgY2hhciAqX19zdHJwYnJrX2MzIChfX2NvbnN0 IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCgkJCQkgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFy IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSAgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25z dCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0MiwKCSAgICAgIGNoYXIg X19hY2NlcHQzKQp7CiAgIAogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2Vw dDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIKCSAmJiAqX19zICE9IF9fYWNjZXB0MykKICAgICsrX19z OwogIHJldHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSAgOiAoY2hhciAqKSAoc2l6ZV90 KSBfX3M7Cn0KCgoKIAoKCiMgMTAyMCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKZXh0 ZXJuIF9faW5saW5lICBzaXplX3QKc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6 ZV90IF9fbWF4bGVuKQp7CiAgX19jb25zdCBjaGFyICpfX2VuZCA9IChfX2NvbnN0IGNoYXIgKikg bWVtY2hyIChfX3N0cmluZywgJ1wwJywgX19tYXhsZW4pOwogIHJldHVybiBfX2VuZCA/IChzaXpl X3QpIChfX2VuZCAtIF9fc3RyaW5nKSA6IF9fbWF4bGVuOwp9CgoKCgoKCgoKCgoKCgpleHRlcm4g X19pbmxpbmUgIGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hh ciAqKl9fbmV4dHApOwpleHRlcm4gX19pbmxpbmUgIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFy ICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAg aWYgKF9fcyA9PSAoKHZvaWQgKikwKSApCiAgICBfX3MgPSAqX19uZXh0cDsKICB3aGlsZSAoKl9f cyA9PSBfX3NlcCkKICAgICsrX19zOwogIGlmICgqX19zID09ICdcMCcpCiAgICBfX3Jlc3VsdCA9 ICgodm9pZCAqKTApIDsKICBlbHNlCiAgICB7CiAgICAgIF9fcmVzdWx0ID0gX19zOwogICAgICB3 aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19zZXApCgkrK19fczsKICAgICAgaWYgKCpf X3MgPT0gJ1wwJykKCSpfX25leHRwID0gX19zOwogICAgICBlbHNlCgl7CgkgICpfX3MgPSAnXDAn OwoJICAqX19uZXh0cCA9IF9fcyArIDE7Cgl9CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgoK CgoKCgoKCiMgMTA5MyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4u Ly4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgpleHRlcm4gX19pbmxpbmUg IGNoYXIgKl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KTsKZXh0ZXJuIF9f aW5saW5lICBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpCnsK ICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9p ZCAqKTApICkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCkgOwogIGlmICgqX19yZXR2YWwg PT0gX19yZWplY3QpCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIGlmICgoKl9fcyA9 IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoICBfX3JlamVjdCApICYmICgg IF9fcmVqZWN0ICkgPT0gJ1wwJwk/IChjaGFyICopIF9fcmF3bWVtY2hyICggX19yZXR2YWwgLCAg IF9fcmVqZWN0ICkJOiBzdHJjaHIgKCBfX3JldHZhbCAsICAgX19yZWplY3QgKSkpICkgIT0gKCh2 b2lkICopMCkgKQogICAgICAqKCpfX3MpKysgPSAnXDAnOwogICAgZWxzZQogICAgICAqX19zID0g KCh2b2lkICopMCkgOwogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lICBjaGFy ICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3Qy KTsKZXh0ZXJuIF9faW5saW5lICBjaGFyICoKX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIg X19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0g Kl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkgKQogICAgcmV0dXJuICpfX3MgPSAo KHZvaWQgKikwKSA7CiAgaWYgKCpfX3JldHZhbCA9PSBfX3JlamVjdDEgfHwgKl9fcmV0dmFsID09 IF9fcmVqZWN0MikKICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAgewogICAgICByZWdp c3RlciBjaGFyICpfX2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgqX19jcCAhPSAnXDAnICYm ICpfX2NwICE9IF9fcmVqZWN0MSAmJiAqX19jcCAhPSBfX3JlamVjdDIpCgkrK19fY3A7CiAgICAg IGlmICgqX19jcCAhPSAnXDAnKQoJewoJICAqX19zID0gX19jcDsKCSAgKigqX19zKSsrID0gJ1ww JzsKCX0KICAgICAgZWxzZQoJKl9fcyA9ICgodm9pZCAqKTApIDsKICAgIH0KICByZXR1cm4gX19y ZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSAgY2hhciAqX19zdHJzZXBfM2MgKGNoYXIgKipfX3Ms IGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKCQkJCSAgIGNoYXIgX19yZWplY3QzKTsK ZXh0ZXJuIF9faW5saW5lICBjaGFyICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19y ZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBjaGFy ICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApICkKICAgIHJl dHVybiAqX19zID0gKCh2b2lkICopMCkgOwogIGlmICgqX19yZXR2YWwgPT0gX19yZWplY3QxIHx8 ICpfX3JldHZhbCA9PSBfX3JlamVjdDIKICAgICAgfHwgKl9fcmV0dmFsID09IF9fcmVqZWN0MykK ICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAgewogICAgICByZWdpc3RlciBjaGFyICpf X2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgqX19jcCAhPSAnXDAnICYmICpfX2NwICE9IF9f cmVqZWN0MSAmJiAqX19jcCAhPSBfX3JlamVjdDIKCSAgICAgJiYgKl9fY3AgIT0gX19yZWplY3Qz KQoJKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKCXsKCSAgKl9fcyA9IF9fY3A7Cgkg ICooKl9fcykrKyA9ICdcMCc7Cgl9CiAgICAgIGVsc2UKCSpfX3MgPSAoKHZvaWQgKikwKSA7CiAg ICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgIGNoYXIgKl9fc3Ryc2Vw X2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUg IGNoYXIgKgpfX3N0cnNlcF9nIChjaGFyICoqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQp7 CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZv aWQgKikwKSApCiAgICByZXR1cm4gKCh2b2lkICopMCkgOwogIGlmICgoKl9fcyA9IF9fZXh0ZW5z aW9uX18JKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOwkoX19idWlsdGluX2NvbnN0YW50X3AgKCAg X19yZWplY3QgKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoICAgX19yZWplY3QgICkgKyAx KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoICAgX19yZWplY3QgICkgPT0gMSkgCT8gKChfX2Ew ID0gKChfX2NvbnN0IGNoYXIgICopICggIF9fcmVqZWN0ICkpWzBdLCBfX2EwID09ICdcMCcpCT8g KCh2b2lkICopMCkgCTogKChfX2ExID0gKChfX2NvbnN0IGNoYXIgKikgKCAgX19yZWplY3QgKSlb MV0sIF9fYTEgPT0gJ1wwJykJPyAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3Ag KCAgX19hMCApICYmICggIF9fYTAgKSA9PSAnXDAnCT8gKGNoYXIgKikgX19yYXdtZW1jaHIgKCAg X19yZXR2YWwgICwgICBfX2EwICkJOiBzdHJjaHIgKCAgX19yZXR2YWwgICwgICBfX2EwICkpKSAJ OiAoKF9fYTIgPSAoKF9fY29uc3QgY2hhciAqKSAoICBfX3JlamVjdCApKVsyXSwgX19hMiA9PSAn XDAnKQk/IF9fc3RycGJya19jMiAoIF9fcmV0dmFsICwgX19hMCwgX19hMSkJOiAoKChfX2NvbnN0 IGNoYXIgKikgKCAgX19yZWplY3QgKSlbM10gPT0gJ1wwJwk/IF9fc3RycGJya19jMyAoIF9fcmV0 dmFsICwgX19hMCwgX19hMSwgX19hMikJOiBzdHJwYnJrICggX19yZXR2YWwgLCAgIF9fcmVqZWN0 ICkpKSkpCTogc3RycGJyayAoIF9fcmV0dmFsICwgICBfX3JlamVjdCApKTsgfSkgKSAhPSAoKHZv aWQgKikwKSApCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIHJldHVybiBfX3JldHZhbDsKfQoKCgoK CiAKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4v Li4vYXJtLWxpbnV4L2luY2x1ZGUvc3RkbGliLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoK CgoKCgoKIAoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1 ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vz ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoK CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdXNyL2xpYi9nY2Mt bGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgoj IDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi IDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUu My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9s aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoK CgoKCgoKCgoKCiAKCgoKCgoKCiMgMzMgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUu My8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKIAoKIyA0Njkg Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv aW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKIApleHRlcm4gdm9pZCAqICBtYWxsb2MgIChzaXplX3Qg X19zaXplKSAgICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAoc2l6ZV90IF9fbm1lbWIsIHNp emVfdCBfX3NpemUpICAgIDsKCgojIDc2OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45 NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiAKCgojIDEx ODcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGlu dXgvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCgoKCgoKCiMgMTIwMiAiL3Vzci9saWIvZ2Nj LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMv c3RyaW5nMi5oIiAzCgoKCgoKCgoKCgoKCgojIDM0NiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoK CiAKCgojIDk1ICIuLi8uLi9pbmNsdWRlL29zLmgiIDIKCgoKCgoKCgoKCiAKCgoKCgoKZXh0ZXJu IEJvb2wgT3NEZWxheUluaXRDb2xvcnM7CmV4dGVybiB2b2lkICgqT3NWZW5kb3JWRXJyb3JGUHJv YykoY29uc3QgY2hhciAqLCB2YV9saXN0IGFyZ3MpOwoKZXh0ZXJuIGludCBXYWl0Rm9yU29tZXRo aW5nKAoKICAgIGludCogIAoKKTsKCiMgMTM0ICIuLi8uLi9pbmNsdWRlL29zLmgiCgpleHRlcm4g aW50IFJlYWRSZXF1ZXN0RnJvbUNsaWVudCgKCiAgICBDbGllbnRQdHIgIAoKKTsKCgpleHRlcm4g Qm9vbCBJbnNlcnRGYWtlUmVxdWVzdCgKCiAgICBDbGllbnRQdHIgICwKICAgIGNoYXIqICAsCiAg ICBpbnQgIAoKKTsKCmV4dGVybiBpbnQgUmVzZXRDdXJyZW50UmVxdWVzdCgKCiAgICBDbGllbnRQ dHIgIAoKKTsKCmV4dGVybiB2b2lkIEZsdXNoQWxsT3V0cHV0KAoKICAgIHZvaWQKCik7CgpleHRl cm4gdm9pZCBGbHVzaElmQ3JpdGljYWxPdXRwdXRQZW5kaW5nKAoKICAgIHZvaWQKCik7CgpleHRl cm4gdm9pZCBTZXRDcml0aWNhbE91dHB1dFBlbmRpbmcoCgogICAgdm9pZAoKKTsKCmV4dGVybiBp bnQgV3JpdGVUb0NsaWVudCgKCiAgICBDbGllbnRQdHIgICwKICAgIGludCAgLAogICAgY2hhciog IAoKKTsKCmV4dGVybiB2b2lkIFJlc2V0T3NCdWZmZXJzKAoKICAgIHZvaWQKCik7CgpleHRlcm4g dm9pZCBDcmVhdGVXZWxsS25vd25Tb2NrZXRzKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBS ZXNldFdlbGxLbm93blNvY2tldHMoCgogICAgdm9pZAoKKTsKCmV4dGVybiBYSUQKQXV0aG9yaXph dGlvbklET2ZDbGllbnQoCgogICAgQ2xpZW50UHRyICAKCik7CgpleHRlcm4gY2hhciAqQ2xpZW50 QXV0aG9yaXplZCgKCiAgICBDbGllbnRQdHIgICwKICAgIHVuc2lnbmVkIGludCAgLAogICAgY2hh ciogICwKICAgIHVuc2lnbmVkIGludCAgLAogICAgY2hhciogIAoKKTsKCmV4dGVybiBCb29sIEVz dGFibGlzaE5ld0Nvbm5lY3Rpb25zKAoKICAgIENsaWVudFB0ciAgLAogICAgcG9pbnRlciAgCgop OwoKZXh0ZXJuIHZvaWQgQ2hlY2tDb25uZWN0aW9ucygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZv aWQgQ2xvc2VEb3duQ29ubmVjdGlvbigKCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVybiBpbnQg QWRkRW5hYmxlZERldmljZSgKCiAgICBpbnQgIAoKKTsKCmV4dGVybiBpbnQgUmVtb3ZlRW5hYmxl ZERldmljZSgKCiAgICBpbnQgIAoKKTsKCmV4dGVybiBpbnQgT25seUxpc3RlblRvT25lQ2xpZW50 KAoKICAgIENsaWVudFB0ciAgCgopOwoKZXh0ZXJuIGludCBMaXN0ZW5Ub0FsbENsaWVudHMoCgog ICAgdm9pZAoKKTsKCmV4dGVybiBpbnQgSWdub3JlQ2xpZW50KAoKICAgIENsaWVudFB0ciAgCgop OwoKZXh0ZXJuIGludCBBdHRlbmRDbGllbnQoCgogICAgQ2xpZW50UHRyICAKCik7CgpleHRlcm4g aW50IE1ha2VDbGllbnRHcmFiSW1wZXJ2aW91cygKCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVy biBpbnQgTWFrZUNsaWVudEdyYWJQZXJ2aW91cygKCiAgICBDbGllbnRQdHIgIAoKKTsKCgoKCgoK CgoKZXh0ZXJuIHZvaWQgQXZhaWxhYmxlQ2xpZW50SW5wdXQoCgogICAgQ2xpZW50UHRyICAKCik7 CgpleHRlcm4gdm9pZCBFcnJvcigKCiAgICBjaGFyKiAgCgopOwoKZXh0ZXJuIENBUkQzMiBHZXRU aW1lSW5NaWxsaXMoCgogICAgdm9pZAoKKTsKCmV4dGVybiB2b2lkIEFkanVzdFdhaXRGb3JEZWxh eSgKCiAgICBwb2ludGVyICAsCiAgICB1bnNpZ25lZCBsb25nICAKCik7Cgp0eXBlZGVmCXN0cnVj dCBfT3NUaW1lclJlYyAqT3NUaW1lclB0cjsKCnR5cGVkZWYgQ0FSRDMyICgqT3NUaW1lckNhbGxi YWNrKSgKCiAgICBPc1RpbWVyUHRyICAsCiAgICBDQVJEMzIgICwKICAgIHBvaW50ZXIgIAoKKTsK CmV4dGVybiB2b2lkIFRpbWVySW5pdCgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIEJvb2wgVGltZXJG b3JjZSgKCiAgICBPc1RpbWVyUHRyICAKCik7CgoKCgpleHRlcm4gT3NUaW1lclB0ciBUaW1lclNl dCgKCiAgICBPc1RpbWVyUHRyICAsCiAgICBpbnQgICwKICAgIENBUkQzMiAgLAogICAgT3NUaW1l ckNhbGxiYWNrICAsCiAgICBwb2ludGVyICAKCik7CgpleHRlcm4gdm9pZCBUaW1lckNoZWNrKAoK ICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBUaW1lckNhbmNlbCgKCiAgICBPc1RpbWVyUHRyICAK Cik7CgpleHRlcm4gdm9pZCBUaW1lckZyZWUoCgogICAgT3NUaW1lclB0ciAgCgopOwoKZXh0ZXJu IHZvaWQgIEF1dG9SZXNldFNlcnZlcigKCiAgICBpbnQgIAoKKTsKCmV4dGVybiB2b2lkICBHaXZl VXAoCgogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBVc2VNc2coCgogICAgdm9pZAoKKTsKCmV4 dGVybiB2b2lkIFByb2Nlc3NDb21tYW5kTGluZSgKCiAgICBpbnQgICwKICAgIGNoYXIqICBbXQoK KTsKCmV4dGVybiBwb2ludGVyIFhhbGxvYygKCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRl cm4gcG9pbnRlciBYTkZhbGxvYygKCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRlcm4gcG9p bnRlciBYY2FsbG9jKAoKICAgIHVuc2lnbmVkIGxvbmcgIAoKKTsKCmV4dGVybiBwb2ludGVyIFhO RmNhbGxvYygKCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRlcm4gcG9pbnRlciBYcmVhbGxv YygKCiAgICBwb2ludGVyICAsCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRlcm4gcG9pbnRl ciBYTkZyZWFsbG9jKAoKICAgIHBvaW50ZXIgICwKICAgIHVuc2lnbmVkIGxvbmcgIAoKKTsKCmV4 dGVybiB2b2lkIFhmcmVlKAoKICAgIHBvaW50ZXIgIAoKKTsKCmV4dGVybiB2b2lkIE9zSW5pdEFs bG9jYXRvcigKCiAgICB2b2lkCgopOwoKZXh0ZXJuIGNoYXIgKlhzdHJkdXAoY29uc3QgY2hhciAq cyk7CmV4dGVybiBjaGFyICpYTkZzdHJkdXAoY29uc3QgY2hhciAqcyk7Cgp0eXBlZGVmIHZvaWQg ICgqT3NTaWdIYW5kbGVyUHRyKSgKCiAgICBpbnQgIAoKKTsKCmV4dGVybiBPc1NpZ0hhbmRsZXJQ dHIgT3NTaWduYWwoCgogICAgaW50ICAsCiAgICBPc1NpZ0hhbmRsZXJQdHIgIAoKKTsKCmV4dGVy biBpbnQgYXVkaXRUcmFpbExldmVsOwoKZXh0ZXJuIHZvaWQgQXVkaXRGKAoKICAgIGNvbnN0IGNo YXIqICAsCiAgICAuLi4KCik7CgpleHRlcm4gdm9pZCBGYXRhbEVycm9yKAoKICAgIGNvbnN0IGNo YXIqICAsCiAgICAuLi4KCikKCl9fYXR0cmlidXRlKChub3JldHVybikpCgo7CgpleHRlcm4gdm9p ZCBFcnJvckYoCgogICAgY29uc3QgY2hhciogICwKICAgIC4uLgoKKTsKCgpleHRlcm4gdm9pZCBW RXJyb3JGKGNvbnN0IGNoYXIgKmYsIHZhX2xpc3QgYXJncyk7CgoKIyA1MDQgIi4uLy4uL2luY2x1 ZGUvb3MuaCIKCgpleHRlcm4gaW50IE9zTG9va3VwQ29sb3IoCgogICAgaW50CSAsCiAgICBjaGFy ICogICwKICAgIHVuc2lnbmVkICAsCiAgICB1bnNpZ25lZCBzaG9ydCAqICAsCiAgICB1bnNpZ25l ZCBzaG9ydCAqICAsCiAgICB1bnNpZ25lZCBzaG9ydCAqICAKCik7CgpleHRlcm4gdm9pZCBPc0lu aXQoCgogICAgdm9pZAoKKTsKCmV4dGVybiB2b2lkIE9zQ2xlYW51cCgKCiAgICB2b2lkCgopOwoK ZXh0ZXJuIHZvaWQgT3NWZW5kb3JGYXRhbEVycm9yKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9p ZCBPc1ZlbmRvckluaXQoCgogICAgdm9pZAoKKTsKCmV4dGVybiBpbnQgT3NJbml0Q29sb3JzKAoK ICAgIHZvaWQKCik7Cgp2b2lkIE9zQmxvY2tTaWduYWxzICgKCgkJICAgICB2b2lkCgoJCSAgICAg KTsKCnZvaWQgT3NSZWxlYXNlU2lnbmFscyAoCgoJCSAgICAgdm9pZAoKCQkgICAgICk7CgoKZXh0 ZXJuIGludCBTeXN0ZW0oY2hhciAqKTsKZXh0ZXJuIHBvaW50ZXIgUG9wZW4oY2hhciAqLCBjaGFy ICopOwpleHRlcm4gaW50IFBjbG9zZShwb2ludGVyKTsKCgoKCgoKZXh0ZXJuIHZvaWQgQ2hlY2tV c2VyUGFyYW1ldGVycyhpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNoYXIgKiplbnZwKTsKZXh0ZXJu IHZvaWQgQ2hlY2tVc2VyQXV0aG9yaXphdGlvbih2b2lkKTsKCmV4dGVybiBpbnQgQWRkSG9zdCgK CiAgICBDbGllbnRQdHIJICwKICAgIGludCAgICAgICAgICAsCiAgICB1bnNpZ25lZCAgICAgLAog ICAgcG9pbnRlciAgICAgIAoKKTsKCmV4dGVybiBCb29sIEZvckVhY2hIb3N0SW5GYW1pbHkgKAoK ICAgIGludAkgICAgICwKICAgIEJvb2wgICAgKCogICApKAoKICAgICAgICAgICAgdW5zaWduZWQg Y2hhciAqICAsCiAgICAgICAgICAgIHNob3J0ICAgICAgICAgICAgLAogICAgICAgICAgICBwb2lu dGVyICAgICAgICAgIAoKICAgICAgICAgICAgKSwKICAgIHBvaW50ZXIgIAoKKTsKCmV4dGVybiBp bnQgUmVtb3ZlSG9zdCgKCiAgICBDbGllbnRQdHIJICwKICAgIGludCAgICAgICAgICAsCiAgICB1 bnNpZ25lZCAgICAgLAogICAgcG9pbnRlciAgICAgIAoKKTsKCmV4dGVybiBpbnQgR2V0SG9zdHMo CgogICAgcG9pbnRlciAqICAsCiAgICBpbnQJICAgICogICwKICAgIGludAkgICAgKiAgLAogICAg Qk9PTCAgICAqICAKCik7Cgp0eXBlZGVmIHN0cnVjdCBzb2NrYWRkciAqIHNvY2thZGRyUHRyOwoK ZXh0ZXJuIGludCBJbnZhbGlkSG9zdCgKCiAgICBzb2NrYWRkclB0ciAgLAogICAgaW50CQkgCgop OwoKZXh0ZXJuIGludCBMb2NhbENsaWVudCgKCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVybiBp bnQgQ2hhbmdlQWNjZXNzQ29udHJvbCgKCiAgICBDbGllbnRQdHIgICwKICAgIGludCAgCgopOwoK ZXh0ZXJuIGludCBHZXRBY2Nlc3NDb250cm9sKAoKICAgIHZvaWQKCik7CgoKZXh0ZXJuIHZvaWQg QWRkTG9jYWxIb3N0cygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQgUmVzZXRIb3N0cygKCiAg ICBjaGFyICpkaXNwbGF5CgopOwoKZXh0ZXJuIHZvaWQgRW5hYmxlTG9jYWxIb3N0KAoKICAgIHZv aWQKCik7CgpleHRlcm4gdm9pZCBEaXNhYmxlTG9jYWxIb3N0KAoKICAgIHZvaWQKCik7CgpleHRl cm4gdm9pZCBBY2Nlc3NVc2luZ1hkbWNwKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBEZWZp bmVTZWxmKAoKICAgIGludCAgCgopOwoKZXh0ZXJuIHZvaWQgQXVnbWVudFNlbGYoCgogICAgcG9p bnRlciAgLAogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBJbml0QXV0aG9yaXphdGlvbigKCiAg ICBjaGFyICogIAoKKTsKCmV4dGVybiBpbnQgTG9hZEF1dGhvcml6YXRpb24oCgogICAgdm9pZAoK KTsKCmV4dGVybiB2b2lkIFJlZ2lzdGVyQXV0aG9yaXphdGlvbnMoCgogICAgdm9pZAoKKTsKCmV4 dGVybiBYSUQgQXV0aG9yaXphdGlvblRvSUQgKAoJdW5zaWduZWQgc2hvcnQJbmFtZV9sZW5ndGgs CgljaGFyCQkqbmFtZSwKCXVuc2lnbmVkIHNob3J0CWRhdGFfbGVuZ3RoLAoJY2hhcgkJKmRhdGEp OwoKZXh0ZXJuIGludCBBdXRob3JpemF0aW9uRnJvbUlEICgKCVhJRCAJCWlkLAoJdW5zaWduZWQg c2hvcnQJKm5hbWVfbGVucCwKCWNoYXIJCSoqbmFtZXAsCgl1bnNpZ25lZCBzaG9ydAkqZGF0YV9s ZW5wLAoJY2hhcgkJKipkYXRhcCk7CgpleHRlcm4gWElEIENoZWNrQXV0aG9yaXphdGlvbigKCiAg ICB1bnNpZ25lZCBpbnQgICwKICAgIGNoYXIgKiAgLAogICAgdW5zaWduZWQgaW50ICAsCiAgICBj aGFyICogICwKICAgIENsaWVudFB0ciAgLAogICAgY2hhciAqKiAgCgopOwoKZXh0ZXJuIHZvaWQg UmVzZXRBdXRob3JpemF0aW9uKAoKICAgIHZvaWQKCik7CgpleHRlcm4gaW50IFJlbW92ZUF1dGhv cml6YXRpb24gKAogICAgdW5zaWduZWQgc2hvcnQJbmFtZV9sZW5ndGgsCiAgICBjaGFyCQkqbmFt ZSwKICAgIHVuc2lnbmVkIHNob3J0CWRhdGFfbGVuZ3RoLAogICAgY2hhcgkJKmRhdGEpOwoKZXh0 ZXJuIGludCBBZGRBdXRob3JpemF0aW9uKAoKICAgIHVuc2lnbmVkIGludAkgLAogICAgY2hhciAq CQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBjaGFyICoJCSAKCik7CgpleHRlcm4gWElEIEdl bmVyYXRlQXV0aG9yaXphdGlvbigKCiAgICB1bnNpZ25lZCBpbnQgICAgLAogICAgY2hhcgkqICAg LAogICAgdW5zaWduZWQgaW50ICAgICwKICAgIGNoYXIJKiAgICwKICAgIHVuc2lnbmVkIGludCAq ICAsCiAgICBjaGFyCSoqICAKCik7CgoKCgoKCgoKCgpleHRlcm4gaW50IGRkeFByb2Nlc3NBcmd1 bWVudCgKCiAgICBpbnQgICwKICAgIGNoYXIgKiAgIFtdLAogICAgaW50ICAKCik7CgpleHRlcm4g dm9pZCBkZHhVc2VNc2codm9pZCk7CgogCgoKCnhSZXFQdHIgUGVla05leHRSZXF1ZXN0KAoKICAg IHhSZXFQdHIgcmVxLCBDbGllbnRQdHIgY2xpZW50LCBCb29sIHJlYWRtb3JlCgopOwoKdm9pZCBT a2lwUmVxdWVzdHMoCgogICAgeFJlcVB0ciByZXEsIENsaWVudFB0ciBjbGllbnQsIGludCBudW1z a2lwcGVkCgopOwoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKZXh0ZXJuIENhbGxiYWNrTGlz dFB0ciBTa2lwcGVkUmVxdWVzdHNDYWxsYmFjazsKdHlwZWRlZiBzdHJ1Y3QgewogICAgeFJlcVB0 ciByZXE7CiAgICBDbGllbnRQdHIgY2xpZW50OwogICAgaW50IG51bXNraXBwZWQ7Cn0gU2tpcHBl ZFJlcXVlc3RJbmZvUmVjOwoKIApleHRlcm4gQ2FsbGJhY2tMaXN0UHRyIFJlcGx5Q2FsbGJhY2s7 CnR5cGVkZWYgc3RydWN0IHsKICAgIENsaWVudFB0ciBjbGllbnQ7CiAgICBwb2ludGVyIHJlcGx5 RGF0YTsKICAgIHVuc2lnbmVkIGxvbmcgZGF0YUxlbkJ5dGVzOwogICAgdW5zaWduZWQgbG9uZyBi eXRlc1JlbWFpbmluZzsKICAgIEJvb2wgc3RhcnRPZlJlcGx5Owp9IFJlcGx5SW5mb1JlYzsKCiAK ZXh0ZXJuIENhbGxiYWNrTGlzdFB0ciBGbHVzaENhbGxiYWNrOwoKZXh0ZXJuIHZvaWQgQWJvcnRE RFgodm9pZCk7CmV4dGVybiB2b2lkIGRkeEdpdmVVcCh2b2lkKTsKZXh0ZXJuIGludCBUaW1lU2lu Y2VMYXN0SW5wdXRFdmVudCh2b2lkKTsKCgojIDExNyAiLi4vLi4vaW5jbHVkZS9taXNjLmgiIDIK CgojIDEgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGZ1bmNzLmgiIDEKIAoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCgojIDY2ICIuLi8uLi8uLi8u Li9leHBvcnRzL2luY2x1ZGUvWDExL1hmdW5jcy5oIgoKCgogCgoKIAoKCgoKCiMgOTIgIi4uLy4u Ly4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGZ1bmNzLmgiCgoKCgoKCgoKCiMgMTE5ICIuLi8u Li9pbmNsdWRlL21pc2MuaCIgMgoKCgoKCgoKICAgICAKCgoKCgoKCiAKCgoKCgogCgoKCgoKCgoK CgoKCgogCgogIAojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8u Li8uLi9hcm0tbGludXgvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgog CgoKCgoKCgogCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5j bHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s aW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv dXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAK CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2dj Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoK CiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYu aCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45 NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNy L2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoK CgoKCgoKCgoKCgoKIAoKCgoKCgoKIyAzMyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45 NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgogCgoKCgog CnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CQkJIAogICAgaW50IHJlbTsJCQkgCiAg fSBkaXZfdDsKCiAKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsJCSAKICAg IGxvbmcgaW50IHJlbTsJCSAKICB9IGxkaXZfdDsKCgoKCiAKX19leHRlbnNpb25fXyB0eXBlZGVm IHN0cnVjdAogIHsKICAgIGxvbmcgbG9uZyBpbnQgcXVvdDsJCSAKICAgIGxvbmcgbG9uZyBpbnQg cmVtOwkJIAogIH0gbGxkaXZfdDsKCgoKCiAKCgoKIAoKCgoKCiAKCmV4dGVybiBzaXplX3QgX19j dHlwZV9nZXRfbWJfY3VyX21heCAgKHZvaWQpICAgIDsKCgogCmV4dGVybiBkb3VibGUgYXRvZiAg KF9fY29uc3QgY2hhciAqX19ucHRyKSAgICA7CiAKZXh0ZXJuIGludCBhdG9pICAoX19jb25zdCBj aGFyICpfX25wdHIpICAgIDsKIApleHRlcm4gbG9uZyBpbnQgYXRvbCAgKF9fY29uc3QgY2hhciAq X19ucHRyKSAgICA7CgoKIApfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGF0b2xs ICAoX19jb25zdCBjaGFyICpfX25wdHIpICAgIDsKCgogCmV4dGVybiBkb3VibGUgc3RydG9kICAo X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJICAgY2hhciAqKl9fcmVzdHJpY3Qg X19lbmRwdHIpICAgIDsKCgogCmV4dGVybiBmbG9hdCBzdHJ0b2YgIChfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19ucHRyLAoJCQkgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSAgICA7Cgpl eHRlcm4gbG9uZyBkb3VibGUgIHN0cnRvbGQgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u cHRyLAoJCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgICAgOwoKCiAKZXh0ZXJu IGxvbmcgaW50IHN0cnRvbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCSAg ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpICAgIDsKIApleHRlcm4g dW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w dHIsCgkJCQkgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkgICAgICAgaW50 IF9fYmFzZSkgICAgOwoKCiAKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0 b3EgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICBjaGFyICoqX19yZXN0 cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgICAgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVu c2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X25wdHIsCgkJCQkJICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCSAgICBpbnQg X19iYXNlKSAgICA7CgoKCiAKCiAKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBz dHJ0b2xsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgIGNoYXIgKipf X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgICA7CiAKX19leHRlbnNpb25fXwpleHRl cm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAgKF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX25wdHIsCgkJCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkg ICAgIGludCBfX2Jhc2UpICAgIDsKCgoKCiAKCgoKCgoKCgoKCiAKCgoKIAoKZXh0ZXJuIGxvbmcg aW50IF9fc3RydG9sX2wgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJIGNo YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAoJCQkJIF9fbG9jYWxlX3QgX19s b2MpICAgIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAgKF9fY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw dHIsCgkJCQkJICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgICAgOwoKX19leHRlbnNp b25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfbCAgKF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX25wdHIsCgkJCQkgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu dCBfX2Jhc2UsCgkJCQkgICAgICAgX19sb2NhbGVfdCBfX2xvYykgICAgOwoKX19leHRlbnNpb25f XwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgIChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QKCQkJCQkJIF9fbnB0ciwKCQkJCQkJIGNoYXIgKipfX3Jlc3RyaWN0IF9f ZW5kcHRyLAoJCQkJCQkgaW50IF9fYmFzZSwKCQkJCQkJIF9fbG9jYWxlX3QgX19sb2MpICAgIDsK CmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w dHIsCgkJCSAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xv YykgICAgOwoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19ucHRyLAoJCQkgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVf dCBfX2xvYykgICAgOwoKZXh0ZXJuIGxvbmcgZG91YmxlICBfX3N0cnRvbGRfbCAgKF9fY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy LAoJCQkJCSBfX2xvY2FsZV90IF9fbG9jKSAgICA7CgoKCiAKCgpleHRlcm4gZG91YmxlIF9fc3Ry dG9kX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAg IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJICAgICAgaW50IF9fZ3JvdXApICAgIDsK ZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fbnB0ciwKCQkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3Vw KSAgICA7CmV4dGVybiBsb25nIGRvdWJsZSAgX19zdHJ0b2xkX2ludGVybmFsICAoX19jb25zdCBj aGFyICoKCQkJCQkJX19yZXN0cmljdCBfX25wdHIsCgkJCQkJCWNoYXIgKipfX3Jlc3RyaWN0IF9f ZW5kcHRyLAoJCQkJCQlpbnQgX19ncm91cCkgICAgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9s X2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQljaGFyICoq X19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQlpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoK CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsICAoX19jb25zdCBj aGFyICoKCQkJCQkJICBfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJICBjaGFyICoqX19yZXN0cmlj dCBfX2VuZHB0ciwKCQkJCQkJICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoKCgoKX19l eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgIChfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCSAgICAgIGNoYXIgKipfX3Jlc3RyaWN0 IF9fZW5kcHRyLAoJCQkJCSAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgICA7CgoKCl9f ZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRl cm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJCQlfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJCWNo YXIgKioKCQkJCQkJCV9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCQlpbnQgX19iYXNlLAoJCQkJ CQkJaW50IF9fZ3JvdXApICAgIDsKCgoKCgoKIAoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0 b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9f ZW5kcHRyKSAgCnsKICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJaW50IF9fYmFzZSkg IAp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us IDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCSBp bnQgX19iYXNlKSAgCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5k cHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGZsb2F0CnN0cnRvZiAoX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpICAK ewogIHJldHVybiBfX3N0cnRvZl9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0 ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIApzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgIAp7CiAgcmV0dXJuIF9fc3Ry dG9sZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBl eHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJaW50IF9fYmFzZSkgIAp7 CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAw KTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50 CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3Ry aWN0IF9fZW5kcHRyLAoJIGludCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVy bmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0 ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkgaW50IF9fYmFzZSkgIAp7 CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAw KTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50 CnN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVz dHJpY3QgX19lbmRwdHIsCgkgIGludCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvdWxsX2lu dGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5l IGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIAp7CiAgcmV0dXJuIHN0cnRvZCAo X19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkgKTsKfQpleHRlcm4gX19pbmxpbmUgaW50CmF0 b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSAgCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25w dHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSAsIDEwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBp bnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpICAKewogIHJldHVybiBzdHJ0b2wgKF9fbnB0 ciwgKGNoYXIgKiopICgodm9pZCAqKTApICwgMTApOwp9CgoKX19leHRlbnNpb25fXyBleHRlcm4g X19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpICAKewog IHJldHVybiBzdHJ0b2xsIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSAsIDEwKTsKfQoK CgoKCiAKCgpleHRlcm4gY2hhciAqbDY0YSAgKGxvbmcgaW50IF9fbikgICAgOwoKIApleHRlcm4g bG9uZyBpbnQgYTY0bCAgKF9fY29uc3QgY2hhciAqX19zKSAgICA7CgoKIyAxICIvdXNyL2xpYi9n Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3lz L3R5cGVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCiMgMSAiL3Vzci9s aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRl L2JpdHMvdHlwZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiMgMSAiL3Vz ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoK CgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3Rk ZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK CgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxp Yi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAy NjkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAz CgoKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgv Mi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMg MjkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGlu dXgvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiAKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9f dV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNp b25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNp b25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDggIi91c3IvbGliL2djYy1s aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9iaXRzL3R5 cGVzLmgiIDMKCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQg Y2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVk ZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2lu dDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVuc2lvbl9fIHR5 cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVk ZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRfdCAq X19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CQkgCnR5cGVkZWYgX191X2lu dCBfX3VpZF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsJCSAKdHlwZWRlZiBfX3VfbG9u ZyBfX2lub190OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CQkgCnR5cGVkZWYgX191X2lu dCBfX25saW5rX3Q7IAkJIAp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CQkgCnR5cGVkZWYgX19x dWFkX3QgX19sb2ZmX3Q7CQkgCnR5cGVkZWYgaW50IF9fcGlkX3Q7CQkJIAp0eXBlZGVmIGludCBf X3NzaXplX3Q7CQkJIAp0eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90OwkJIAp0eXBlZGVmIF9fdV9x dWFkX3QgX19ybGltNjRfdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9faWRfdDsJCQkgCgp0eXBlZGVm IHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwkJCQkgCgogCnR5cGVk ZWYgaW50IF9fZGFkZHJfdDsJCQkgCnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxv bmcgaW50IF9fdGltZV90Owp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsJCSAKDAp0eXBlZGVm IGxvbmcgaW50IF9fY2xvY2tfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZkX21h c2s7CgogCgoKIAoKCgoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAgICAKCgogICAgX19mZF9tYXNr IGZkc19iaXRzWzEwMjQgIC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpIF07CgoKCgoKICB9IF9f ZmRfc2V0OwoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg aW50IF9faXBjX3BpZF90OwoKCiAKCiAKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBl ZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250 X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9u ZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCiAKdHlw ZWRlZiBfX3VfbG9uZyBfX2lubzY0X3Q7CgogCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoK IAp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu dCBfX3RfdXNjYWxhcl90OwoKIAp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCiAKCiMgMSAiL3Vz ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNs dWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgoK CgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u L2FybS1saW51eC9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK CiMgNjIgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0t bGludXgvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMKCgoKCgogCnN0cnVjdCBfX3NjaGVkX3BhcmFt CiAgewogICAgaW50IHNjaGVkX3ByaW9yaXR5OwogIH07CgoKIyAyMyAiL3Vzci9saWIvZ2NjLWxp Yi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvcHRo cmVhZHR5cGVzLmgiIDIgMwoKCiAKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGlu dCBfX3N0YXR1czsgICAgICAgICAgICAgCiAgaW50IF9fc3BpbmxvY2s7ICAgICAgICAgICAgICAg IAp9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9k ZXNjcjsKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBf X3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQg X19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGlu dCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tz aXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRo cmVhZF9mYXN0bG9jayBfX2NfbG9jazsgIAogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOyAg ICAgICAgIAp9IHB0aHJlYWRfY29uZF90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1 bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVh ZF9rZXlfdDsKCgogCiAKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOyAgICAg ICAgICAgICAgICAKICBpbnQgX19tX2NvdW50OyAgICAgICAgICAgICAgICAgICAKICBfcHRocmVh ZF9kZXNjciBfX21fb3duZXI7ICAgICAgICAKICBpbnQgX19tX2tpbmQ7ICAgICAgICAgICAgICAg ICAgICAKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7ICAKfSBwdGhyZWFkX211 dGV4X3Q7CgoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRf bXV0ZXhhdHRyX3Q7CgoKIAp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoKIAp0eXBlZGVm IHN0cnVjdCBfcHRocmVhZF9yd2xvY2tfdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9f cndfbG9jazsgIAogIGludCBfX3J3X3JlYWRlcnM7ICAgICAgICAgICAgICAgICAgICAKICBfcHRo cmVhZF9kZXNjciBfX3J3X3dyaXRlcjsgICAgICAgICAgCiAgX3B0aHJlYWRfZGVzY3IgX19yd19y ZWFkX3dhaXRpbmc7ICAgIAogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGluZzsgICAK ICBpbnQgX19yd19raW5kOyAgICAgICAgICAgICAgICAgICAgICAgCiAgaW50IF9fcndfcHNoYXJl ZDsgICAgICAgICAgICAgICAgICAgIAp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKIAp0eXBlZGVmIHN0 cnVjdAp7CiAgaW50IF9fbG9ja2tpbmQ7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9j a2F0dHJfdDsKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKCgojIDE1 MCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51 eC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKCgojIDMwICIvdXNyL2xpYi9nY2MtbGliL2Fy bS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3lzL3R5cGVzLmgi IDIgMwoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9y dDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRl ZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBf X2ZzaWRfdCBmc2lkX3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19p bm9fdCBpbm9fdDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYg X19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19t b2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYg X191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCnR5cGVkZWYg X19vZmY2NF90IG9mZjY0X3Q7CgoKCgp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBlZGVm IF9faWRfdCBpZF90OwoKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBf X2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiBf X2tleV90IGtleV90OwoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUu My8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoK CgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIu OTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgogCnR5 cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCgoKCgoKCiAKdHlwZWRlZiBfX3RpbWVfdCB0aW1l X3Q7CgoKCgoKIyA4OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4u Ly4uL2FybS1saW51eC9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKIyAyNzkgIi91c3IvbGliL2djYy1s aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgi IDMKCgoKIyAxMjIgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8u Li9hcm0tbGludXgvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9saWIvZ2Nj LWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAx OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMK CgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK IAoKIAoKCiMgMTI2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9z dGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3Iv bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoK CgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2lu Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMTI1ICIvdXNy L2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1 ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgogCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7 CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg dWludDsKCgogCgojIDE1OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCgoKIAoKCgoKCgoKdHlwZWRl ZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1FJX18gKSkpIDsKdHlw ZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ISV9fICkpKSA7 CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fU0lfXyAp KSkgOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0RJ X18gKSkpIDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgo X19tb2RlX18gKCAgX19RSV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBf X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ISV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQg aW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19TSV9fICkpKSA7CnR5 cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAg X19ESV9fICkpKSA7Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21v ZGVfXyAoX193b3JkX18pKSk7CgoKIAoKCgoKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0t bGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2VuZGlhbi5oIiAxIDMK IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxp Yi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvZW5k aWFuLmgiIDEgMwogCgoKCgoKCgoKCgoKIyAzNSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgv Mi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKCgogCgoK CgoKCgoKCgoKCgojIDE5MSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vzci9s aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRl L3N5cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKIAojIDEg Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv aW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK CgoKCgoKCiMgMzEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8u Li9hcm0tbGludXgvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAKIyAxICIvdXNyL2xpYi9n Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0 cy9zaWdzZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgX19zaWdf YXRvbWljX3Q7CgogCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBf X3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKSBdOwogIH0gX19z aWdzZXRfdDsKCgoKCiAKCgoKCgojIDEyNSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45 NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKCiMgMzQg Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0t bGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3RpbWUuaCIgMSAzCiAK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiL3Vzci9saWIvZ2NjLWxpYi9h cm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3RpbWUuaCIgMwoK CgojIDYyICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJt LWxpbnV4L2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgNzMgIi91c3IvbGliL2djYy1saWIvYXJtLWxp bnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoK CgogCgpzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CQkgCiAgICBsb25n IGludCB0dl9uc2VjOwkJIAogIH07CgoKCgoKIyAyNzkgIi91c3IvbGliL2djYy1saWIvYXJtLWxp bnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAz OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51 eC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIAoKIAoKCgpzdHJ1Y3QgdGltZXZhbDsKCnR5 cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgogCnR5cGVkZWYgX19mZF9zZXQgZmRfc2V0OwoKIAoK CgogCgoKCgogCgoKCgoKCiAKCgoKCmV4dGVybiBpbnQgX19zZWxlY3QgIChpbnQgX19uZmRzLCBf X2ZkX3NldCAqX19yZWFkZmRzLAoJCQkgIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAq X19leGNlcHRmZHMsCgkJCSAgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgICAgOwpleHRlcm4g aW50IHNlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJCV9fZmRfc2V0 ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRmZHMsCgkJCXN0cnVjdCB0aW1ldmFsICpf X3RpbWVvdXQpICAgIDsKCgogCgogCgoKZXh0ZXJuIGludCBwc2VsZWN0ICAoaW50IF9fbmZkcywg X19mZF9zZXQgKl9fcmVhZGZkcywKCQkJIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAq X19leGNlcHRmZHMsCgkJCSBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fdGltZW91dCwKCQkJIGNv bnN0IF9fc2lnc2V0X3QgKl9fc2lnbWFzaykgICAgOwoKCiAKCgojIDE5NCAiL3Vzci9saWIvZ2Nj LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy90 eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiAKCgoKCgoK CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgNDcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4 LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDMK CgoKIyAxOTcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9h cm0tbGludXgvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCgogCgp0eXBlZGVmIF9fYmxrY250 X3QgYmxrY250X3Q7CSAgCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7ICAKdHlwZWRl ZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsgIAoKCgoKCgoKdHlwZWRlZiBfX2Jsa2NudDY0X3Qg YmxrY250NjRfdDsgICAgICAKdHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7ICAK dHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7ICAKCgogCgoKIyAzMzkgIi91c3Iv bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk ZS9zdGRsaWIuaCIgMiAzCgoKIAoKCgogCmV4dGVybiBpbnQzMl90IHJhbmRvbSAgKHZvaWQpICAg IDsKCiAKZXh0ZXJuIHZvaWQgc3JhbmRvbSAgKHVuc2lnbmVkIGludCBfX3NlZWQpICAgIDsKCiAK CgoKZXh0ZXJuIHZvaWQgKiAgaW5pdHN0YXRlICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAq ICBfX3N0YXRlYnVmLAoJCQkgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pICAgIDsKCiAKCmV4dGVy biB2b2lkICogIHNldHN0YXRlICAodm9pZCAqICBfX3N0YXRlYnVmKSAgICA7CgoKCiAKCgoKc3Ry dWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsJCSAKICAgIGludDMyX3QgKnJw dHI7CQkgCiAgICBpbnQzMl90ICpzdGF0ZTsJCSAKICAgIGludCByYW5kX3R5cGU7CQkgCiAgICBp bnQgcmFuZF9kZWc7CQkgCiAgICBpbnQgcmFuZF9zZXA7CQkgCiAgICBpbnQzMl90ICplbmRfcHRy OwkJIAogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yICAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jl c3RyaWN0IF9fYnVmLAoJCQkgIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKCmV4 dGVybiBpbnQgc3JhbmRvbV9yICAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9k YXRhICpfX2J1ZikgICAgOwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAgKHVuc2lnbmVkIGludCBf X3NlZWQsCgkJCSAgICAgdm9pZCAqICBfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCgkJCSAgICAgc2l6 ZV90IF9fc3RhdGVsZW4sCgkJCSAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9f YnVmKSAgICA7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgICh2b2lkICogIF9fcmVzdHJpY3QgX19z dGF0ZWJ1ZiwKCQkJICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgICAg OwoKCgoKIApleHRlcm4gaW50IHJhbmQgICh2b2lkKSAgICA7CiAKZXh0ZXJuIHZvaWQgc3JhbmQg ICh1bnNpZ25lZCBpbnQgX19zZWVkKSAgICA7CgoKIApleHRlcm4gaW50IHJhbmRfciAgKHVuc2ln bmVkIGludCAqX19zZWVkKSAgICA7CgoKCgogCgogCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAgKHZv aWQpICAgIDsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1 YmlbM10pICAgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDggICh2b2lkKSAgICA7CmV4dGVy biBsb25nIGludCBucmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsK CiAKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggICh2b2lkKSAgICA7CmV4dGVybiBsb25nIGludCBq cmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0ZXJuIHZv aWQgc3JhbmQ0OCAgKGxvbmcgaW50IF9fc2VlZHZhbCkgICAgOwpleHRlcm4gdW5zaWduZWQgc2hv cnQgaW50ICpzZWVkNDggICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSAgICA7CmV4 dGVybiB2b2lkIGxjb25nNDggICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgICAgOwoK IApzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CSAK ICAgIHVuc2lnbmVkIHNob3J0IGludCBhWzNdOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJ IAogICAgdW5zaWduZWQgc2hvcnQgaW50IG9sZF94WzNdOyAgCiAgICBpbnQgaW5pdDsJCQkgCiAg fTsKCgogCmV4dGVybiBpbnQgZHJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0 cmljdCBfX2J1ZmZlciwKCQkJICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CmV4 dGVybiBpbnQgZXJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAg IHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAq X19yZXN0cmljdCBfX3Jlc3VsdCkgICAgOwoKIApleHRlcm4gaW50IGxyYW5kNDhfciAgKHN0cnVj dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jl c3RyaWN0IF9fcmVzdWx0KSAgICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5zaWduZWQgc2hv cnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg X19idWZmZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CgogCmV4 dGVybiBpbnQgbXJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1 ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKZXh0ZXJuIGlu dCBqcmFuZDQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAgc3RydWN0 IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVz dHJpY3QgX19yZXN1bHQpICAgIDsKCiAKZXh0ZXJuIGludCBzcmFuZDQ4X3IgIChsb25nIGludCBf X3NlZWR2YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgICA7CgpleHRlcm4gaW50 IHNlZWQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSwKCQkJICBzdHJ1Y3Qg ZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgICAgOwoKZXh0ZXJuIGludCBsY29uZzQ4X3IgICh1bnNp Z25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19i dWZmZXIpICAgIDsKCgoKCgoKCgoKCgoKCgogCgpleHRlcm4gdm9pZCAqICByZWFsbG9jICAodm9p ZCAqICBfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgICAgOwogCmV4dGVybiB2b2lkIGZyZWUgICh2b2lk ICogIF9fcHRyKSAgICA7CgoKIApleHRlcm4gdm9pZCBjZnJlZSAgKHZvaWQgKiAgX19wdHIpICAg IDsKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4v YXJtLWxpbnV4L2luY2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK IyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIg MSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5j bHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGli L2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoK CgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4 LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xp Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoK CiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3Rk ZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2Fy bS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKIAoK CgoKCgoKIyAyNSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u L2FybS1saW51eC9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgogCgogCgoKIApleHRlcm4gdm9pZCAq ICBhbGxvY2EgIChzaXplX3QgX19zaXplKSAgICA7CgoKCgoKIAoKCiMgNDkyICIvdXNyL2xpYi9n Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3Rk bGliLmgiIDIgMwoKCgoKIApleHRlcm4gdm9pZCAqICB2YWxsb2MgIChzaXplX3QgX19zaXplKSAg ICA7CgoKCiAKZXh0ZXJuIHZvaWQgYWJvcnQgICh2b2lkKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm9yZXR1cm5fXykpOwoKCiAKZXh0ZXJuIGludCBhdGV4aXQgICh2b2lkICgqX19mdW5jKSAodm9p ZCkpICAgIDsKCgogCgpleHRlcm4gaW50IF9fb25fZXhpdCAgKHZvaWQgKCpfX2Z1bmMpIChpbnQg X19zdGF0dXMsIHZvaWQgKiAgX19hcmcpLAoJCQkgICB2b2lkICogIF9fYXJnKSAgICA7CmV4dGVy biBpbnQgb25fZXhpdCAgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKiAgX19h cmcpLAoJCQkgdm9pZCAqICBfX2FyZykgICAgOwoKCiAKCgpleHRlcm4gdm9pZCBleGl0ICAoaW50 IF9fc3RhdHVzKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAKCmV4dGVy biB2b2lkIF9FeGl0ICAoaW50IF9fc3RhdHVzKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1 cm5fXykpOwoKCgogCmV4dGVybiBjaGFyICpnZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg ICAgOwoKIAoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAgKF9fY29uc3QgY2hhciAqX19u YW1lKSAgICA7CgoKIAogCgpleHRlcm4gaW50IHB1dGVudiAgKGNoYXIgKl9fc3RyaW5nKSAgICA7 CgoKCiAKCmV4dGVybiBpbnQgc2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3Qg Y2hhciAqX192YWx1ZSwKCQkJaW50IF9fcmVwbGFjZSkgICAgOwoKIApleHRlcm4gdm9pZCB1bnNl dGVudiAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAgICA7CgoKCiAKCgpleHRlcm4gaW50IGNsZWFy ZW52ICAodm9pZCkgICAgOwoKCgoKIAoKCgpleHRlcm4gY2hhciAqbWt0ZW1wICAoY2hhciAqX190 ZW1wbGF0ZSkgICAgOwoKIAoKCgoKZXh0ZXJuIGludCBta3N0ZW1wICAoY2hhciAqX190ZW1wbGF0 ZSkgICAgOwoKCgogCmV4dGVybiBpbnQgc3lzdGVtICAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQp ICAgIDsKCgoKIAoKCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lICAoX19jb25z dCBjaGFyICpfX25hbWUpICAgIDsKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0aCAgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCgkJCSAgICBjaGFyICpfX3Jlc3RyaWN0IF9f cmVzb2x2ZWQpICAgIDsKCgoKIAoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgIChfX2Nv bnN0IHZvaWQgKiAsIF9fY29uc3Qgdm9pZCAqICkgIDsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3Qg Y29tcGFyaXNvbl9mbl90OwoKCgogCgpleHRlcm4gdm9pZCAqICBic2VhcmNoICAoX19jb25zdCB2 b2lkICogIF9fa2V5LCBfX2NvbnN0IHZvaWQgKiAgX19iYXNlLAoJCQkgICAgICAgc2l6ZV90IF9f bm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSAg OwoKIAoKZXh0ZXJuIHZvaWQgcXNvcnQgICh2b2lkICogIF9fYmFzZSwgc2l6ZV90IF9fbm1lbWIs IHNpemVfdCBfX3NpemUsCgkJCSAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikgIDsKCgogCmV4dGVy biBpbnQgYWJzICAoaW50IF9feCkgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0 ZXJuIGxvbmcgaW50IGxhYnMgIChsb25nIGludCBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGxsYWJzICAobG9u ZyBsb25nIGludCBfX3gpICAgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK IAoKIApleHRlcm4gZGl2X3QgZGl2ICAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKSAgICAgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgIChsb25nIGludCBf X251bWVyLCBsb25nIGludCBfX2Rlbm9tKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90IGxsZGl2ICAobG9uZyBsb25nIGlu dCBfX251bWVyLAoJCQkJCSBsb25nIGxvbmcgaW50IF9fZGVub20pICAgIAogICAgIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCiAKCgogCgoKZXh0ZXJuIGNoYXIgKmVjdnQgIChkb3Vi bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50 ICpfX3Jlc3RyaWN0IF9fc2lnbikgICAgOwoKIAoKCmV4dGVybiBjaGFyICpmY3Z0ICAoZG91Ymxl IF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCgkJCWludCAq X19yZXN0cmljdCBfX3NpZ24pICAgIDsKCiAKCgpleHRlcm4gY2hhciAqZ2N2dCAgKGRvdWJsZSBf X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgICA7CgogCmV4dGVybiBjaGFyICpx ZWN2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJCSBpbnQgKl9fcmVz dHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgICAgOwpleHRlcm4gY2hhciAq cWZjdnQgIChsb25nIGRvdWJsZSAgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAoJCQkgaW50ICpfX3Jl c3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pICAgIDsKZXh0ZXJuIGNoYXIg KnFnY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYp ICAgIDsKCgoKIAoKZXh0ZXJuIGludCBlY3Z0X3IgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp Z2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwg Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkJc2l6ZV90IF9fbGVuKSAgICA7CmV4dGVybiBpbnQg ZmN2dF9yICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9f ZGVjcHQsCgkJCWludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs CgkJCXNpemVfdCBfX2xlbikgICAgOwoKZXh0ZXJuIGludCBxZWN2dF9yICAobG9uZyBkb3VibGUg IF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg Kl9fcmVzdHJpY3QgX19zaWduLAoJCQkgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9f bGVuKSAgICA7CmV4dGVybiBpbnQgcWZjdnRfciAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQg X19uZGlnaXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9f c2lnbiwKCQkJIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgICAgOwoKCgoK IAoKZXh0ZXJuIGludCBtYmxlbiAgKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSAgICA7 CiAKCmV4dGVybiBpbnQgbWJ0b3djICAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKCQkJX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgICAgOwogCgpleHRlcm4gaW50 IHdjdG9tYiAgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSAgICA7CgoKIApleHRlcm4gc2l6 ZV90IG1ic3Rvd2NzICAod2NoYXJfdCAqX19yZXN0cmljdCAgX19wd2NzLAoJCQkgICAgIF9fY29u c3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pICAgIDsKIApleHRlcm4gc2l6ZV90 IHdjc3RvbWJzICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgICAgX19jb25zdCB3Y2hhcl90 ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikgICAgOwoKCgogCgoKCmV4dGVybiBpbnQg cnBtYXRjaCAgKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkgICAgOwoKCgoKIAoKCgoKCmV4dGVy biBpbnQgZ2V0c3Vib3B0ICAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAoJCQkgICBfX2Nv bnN0IGNoYXIgKl9fY29uc3QgKl9fcmVzdHJpY3QgX190b2tlbnMsCgkJCSAgIGNoYXIgKipfX3Jl c3RyaWN0IF9fdmFsdWVwKSAgICA7CgoKCgoKIApleHRlcm4gdm9pZCBzZXRrZXkgIChfX2NvbnN0 IGNoYXIgKl9fa2V5KSAgICA7CgogCgogCgoKIApleHRlcm4gaW50IGdyYW50cHQgIChpbnQgX19m ZCkgICAgOwoKIAoKZXh0ZXJuIGludCB1bmxvY2twdCAgKGludCBfX2ZkKSAgICA7CgogCgoKZXh0 ZXJuIGNoYXIgKnB0c25hbWUgIChpbnQgX19mZCkgICAgOwoKCgogCgoKZXh0ZXJuIGludCBwdHNu YW1lX3IgIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgICAgOwoKIApl eHRlcm4gaW50IGdldHB0ICAodm9pZCkgICAgOwoKCgoKCiAKCgojIDE1NyAiLi4vLi4vaW5jbHVk ZS9taXNjLmgiIDIKCgoKCgoKCiAKCiAKCgoKCgoKCgoKIAojIDEgIi91c3IvbGliL2djYy1saWIv YXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKCgoKIAoKCgogCgoKCiAKCgoK CiAKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKIAoKIAoKCgoKIAoKCgogCgoKCgoKCgoKIAoKCgog CgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKIAoKCgoKCgojIDE3NyAiLi4vLi4vaW5jbHVk ZS9taXNjLmgiIDIKCgoKIAoKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4 LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRoLmgiIDEgMwogCgoKCgoK CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgogCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxp bnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgi IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgNTMgIi91c3IvbGli L2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9i aXRzL2h1Z2VfdmFsLmgiIDMKCgoKIAoKCgoKCgoKCgoKIyA4MSAiL3Vzci9saWIvZ2NjLWxpYi9h cm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvaHVnZV92 YWwuaCIgMwoKCgogCgoKCgojIDMzICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv Li4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvbWF0aC5oIiAyIDMKCgogCgojIDEgIi91c3Iv bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk ZS9iaXRzL25hbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgojIDQ4 ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4 L2luY2x1ZGUvYml0cy9uYW4uaCIgMwoKIyAzNyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgv Mi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL21hdGguaCIgMiAzCgoKIAojIDEg Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv aW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAp0 eXBlZGVmIGZsb2F0IGZsb2F0X3Q7CQkgCgp0eXBlZGVmIGRvdWJsZSBkb3VibGVfdDsJIAoKCiAK CgogCgoKCiAKCgoKIAoKCgoKCiAKCiAKCgoKIyA0MCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL21hdGguaCIgMiAzCgoKCiAK CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwogCgoK CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIApleHRl cm4gICBkb3VibGUgICAgICAgICAgYWNvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0 ZXJuICAgZG91YmxlICAgICAgICAgX19hY29zICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7 CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAg ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNpbiAgICAgICAgICAoZG91YmxlICBfX3gp ICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhdGFuICAgICAgICAgIChkb3VibGUg IF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2F0YW4gICAgICAgICAgKGRvdWJs ZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbjIgICAgICAgICAg KGRvdWJsZSAgX195LCBkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf X2F0YW4yICAgICAgICAgIChkb3VibGUgIF9feSwgZG91YmxlICBfX3gpICAgICAgOwoKIApleHRl cm4gICBkb3VibGUgICAgICAgICAgY29zICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRl cm4gICBkb3VibGUgICAgICAgICBfX2NvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwog CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7 IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2luICAgICAgICAgIChkb3VibGUgIF9feCkgICAg ICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRhbiAgICAgICAgICAoZG91YmxlICBfX3gp ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX190YW4gICAgICAgICAgKGRvdWJsZSAgX194 KSAgICAgIDsKCgogCmV4dGVybiAgIHZvaWQgICAgICAgIHNpbmNvcyAgICAgICAKCSAgICAoZG91 YmxlICBfX3gsIGRvdWJsZSAgKl9fc2lueCwgZG91YmxlICAqX19jb3N4KSAgIDsgZXh0ZXJuICAg dm9pZCAgICAgICAgX19zaW5jb3MgICAgICAgIAkgICAgKGRvdWJsZSAgX194LCBkb3VibGUgICpf X3NpbngsIGRvdWJsZSAgKl9fY29zeCkgICAgOwoKCiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAg ICAgIGNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg ICAgIF9fY29zaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwogCmV4dGVybiAgIGRvdWJs ZSAgICAgICAgICBzaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3Vi bGUgICAgICAgICBfX3NpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4g ICBkb3VibGUgICAgICAgICAgdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJu ICAgZG91YmxlICAgICAgICAgX190YW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoK IApleHRlcm4gICBkb3VibGUgICAgICAgICAgYWNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAg ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYWNvc2ggICAgICAgICAgKGRvdWJsZSAgX194 KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXNpbmggICAgICAgICAgKGRvdWJs ZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNpbmggICAgICAgICAgKGRv dWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbmggICAgICAg ICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXRhbmggICAg ICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg ICBleHAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAg IF9fZXhwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUg ICAgICAgICAgZXhwMTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJs ZSAgICAgICAgIF9fZXhwMTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4g ICBkb3VibGUgICAgICAgICAgcG93MTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVy biAgIGRvdWJsZSAgICAgICAgIF9fcG93MTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsK CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmcmV4cCAgICAgICAgICAoZG91YmxlICBfX3gs IGludCAqX19leHBvbmVudCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2ZyZXhwICAg ICAgICAgIChkb3VibGUgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAg ZG91YmxlICAgICAgICAgIGxkZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fZXhwb25l bnQpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sZGV4cCAgICAgICAgICAoZG91Ymxl ICBfX3gsIGludCBfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg IGxvZyAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg X19sb2cgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAg ICAgICAgIGxvZzEwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUg ICAgICAgICBfX2xvZzEwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAg IGRvdWJsZSAgICAgICAgICBtb2RmICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICAqX19p cHRyKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbW9kZiAgICAgICAgICAoZG91Ymxl ICBfX3gsIGRvdWJsZSAgKl9faXB0cikgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAg ICAgZXhwbTEgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg ICAgIF9fZXhwbTEgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91 YmxlICAgICAgICAgIGxvZzFwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBk b3VibGUgICAgICAgICBfX2xvZzFwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4 dGVybiAgIGRvdWJsZSAgICAgICAgICBsb2diICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBl eHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZ2IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAg IDsKCgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZXhwMiAgICAgICAgICAoZG91YmxlICBf X3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19leHAyICAgICAgICAgIChkb3VibGUg IF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBsb2cyICAgICAgICAgIChk b3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZzIgICAgICAgICAg KGRvdWJsZSAgX194KSAgICAgIDsKCgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgcG93 ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91Ymxl ICAgICAgICAgX19wb3cgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7 CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzcXJ0ICAgICAgICAgIChkb3VibGUgIF9feCkg ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NxcnQgICAgICAgICAgKGRvdWJsZSAgX194 KSAgICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBoeXBvdCAgICAgICAgICAoZG91 YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9faHlw b3QgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKCiAKZXh0ZXJu ICAgZG91YmxlICAgICAgICAgIGNicnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVy biAgIGRvdWJsZSAgICAgICAgIF9fY2JydCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoK CgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjZWlsICAgICAgICAgIChkb3VibGUgIF9f eCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NlaWwgICAgICAgICAgKGRvdWJsZSAg X194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGZhYnMgICAgICAgICAgKGRv dWJsZSAgX194KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4g ICBkb3VibGUgICAgICAgICBfX2ZhYnMgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgX19hdHRy aWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg ICBmbG9vciAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg ICAgX19mbG9vciAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3Vi bGUgICAgICAgICAgZm1vZCAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICA7 IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZm1vZCAgICAgICAgICAoZG91YmxlICBfX3gsIGRv dWJsZSAgX195KSAgICAgIDsKCgogCgpleHRlcm4gIGludCAgICAgX19pc2luZiAgICAgIChkb3Vi bGUgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gIGlu dCAgICAgX19maW5pdGUgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChf X2NvbnN0X18pKTsKCgogCgpleHRlcm4gIGludCAgICAgaXNpbmYgICAgICAoZG91YmxlICBfX3Zh bHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgIGZp bml0ZSAgICAgIChkb3VibGUgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OwoKIAoKCgoKCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBpbmZuYW4gICAgICAgICAgKGludCBf X2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBk b3VibGUgICAgICAgICBfX2luZm5hbiAgICAgICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJp YnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg IGRyZW0gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4gICBk b3VibGUgICAgICAgICBfX2RyZW0gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkg ICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc2lnbmlmaWNhbmQgICAgICAgICAg KGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2lnbmlmaWNhbmQg ICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgoKIApleHRlcm4gICBkb3VibGUgICAgICAg ICAgY29weXNpZ24gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgIF9fYXR0 cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19j b3B5c2lnbiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICAgX19hdHRyaWJ1 dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg IG5hbiAgICAgICAgICAoX19jb25zdCBjaGFyICpfX3RhZ2IpICAgICBfX2F0dHJpYnV0ZV9fICgg ICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbmFuICAgICAgICAg IChfX2NvbnN0IGNoYXIgKl9fdGFnYikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9f KSAgKSAgOwoKCgogCmV4dGVybiAgaW50ICAgICBfX2lzbmFuICAgICAgKGRvdWJsZSAgX192YWx1 ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gIGludCAgICAgaXNu YW4gICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGowICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4 dGVybiAgIGRvdWJsZSAgICAgICAgIF9fajAgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRl cm4gICBkb3VibGUgICAgICAgICAgajEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAg ZG91YmxlICAgICAgICAgX19qMSAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRv dWJsZSAgICAgICAgICBqbiAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICA7IGV4dGVybiAgIGRv dWJsZSAgICAgICAgIF9fam4gICAgICAgICAgKGludCwgZG91YmxlICkgICAgICA7CmV4dGVybiAg IGRvdWJsZSAgICAgICAgICB5MCAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3Vi bGUgICAgICAgICBfX3kwICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91Ymxl ICAgICAgICAgIHkxICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg ICAgIF9feTEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAg ICAgeW4gICAgICAgICAgKGludCwgZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAg ICBfX3luICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgICAgOwoKCgoKIApleHRlcm4gICBkb3Vi bGUgICAgICAgICAgZXJmICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAg ICAgICAgIF9fZXJmICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAg ICAgICAgIGVyZmMgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg ICAgX19lcmZjICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAg ICAgIGxnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAg ICBfX2xnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAg ICAgICB0Z2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg ICAgX190Z2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwoKCgogCmV4dGVybiAgIGRvdWJs ZSAgICAgICAgICBnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUg ICAgICAgICBfX2dhbW1hICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKCgoKIAoKCmV4dGVybiAg IGRvdWJsZSAgICAgICAgICBsZ2FtbWFfciAgICAgICAgICAgICAgKGRvdWJsZSAsIGludCAqX19z aWduZ2FtcCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xnYW1tYV9yICAgICAgICAg ICAgICAoZG91YmxlICwgaW50ICpfX3NpZ25nYW1wKSAgICAgIDsKCgoKCiAKCmV4dGVybiAgIGRv dWJsZSAgICAgICAgICByaW50ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBk b3VibGUgICAgICAgICBfX3JpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0 ZXJuICAgZG91YmxlICAgICAgICAgIG5leHRhZnRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRv dWJsZSAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4g ICBkb3VibGUgICAgICAgICBfX25leHRhZnRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJs ZSAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgpleHRlcm4g ICBkb3VibGUgICAgICAgICAgbmV4dHRvd2FyZCAgICAgICAgICAoZG91YmxlICBfX3gsIGxvbmcg ZG91YmxlIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJu ICAgZG91YmxlICAgICAgICAgX19uZXh0dG93YXJkICAgICAgICAgIChkb3VibGUgIF9feCwgbG9u ZyBkb3VibGUgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoK IApleHRlcm4gICBkb3VibGUgICAgICAgICAgcmVtYWluZGVyICAgICAgICAgIChkb3VibGUgIF9f eCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yZW1haW5kZXIg ICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKIApleHRlcm4gICBk b3VibGUgICAgICAgICAgc2NhbGIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9fbikg ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NjYWxiICAgICAgICAgIChkb3VibGUgIF9f eCwgZG91YmxlICBfX24pICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHNjYWxi biAgICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX24pICAgIDsgZXh0ZXJuICAgZG91YmxlICAg ICAgICAgX19zY2FsYm4gICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQgX19uKSAgICAgIDsKCiAK ZXh0ZXJuICAgaW50ICAgICAgICBpbG9nYiAgICAgICAgKGRvdWJsZSAgX194KSAgIDsgZXh0ZXJu ICAgaW50ICAgICAgICBfX2lsb2diICAgICAgICAoZG91YmxlICBfX3gpICAgIDsKCgoKIApleHRl cm4gICBkb3VibGUgICAgICAgICAgc2NhbGJsbiAgICAgICAgICAoZG91YmxlICBfX3gsIGxvbmcg aW50IF9fbikgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NjYWxibG4gICAgICAgICAg KGRvdWJsZSAgX194LCBsb25nIGludCBfX24pICAgICAgOwoKIAoKZXh0ZXJuICAgZG91YmxlICAg ICAgICAgIG5lYXJieWludCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91 YmxlICAgICAgICAgX19uZWFyYnlpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAK CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICByb3VuZCAgICAgICAgICAoZG91YmxlICBfX3gpICAg IDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yb3VuZCAgICAgICAgICAoZG91YmxlICBfX3gp ICAgICAgOwoKIAoKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRydW5jICAgICAgICAgIChkb3Vi bGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAg ZG91YmxlICAgICAgICAgX190cnVuYyAgICAgICAgICAoZG91YmxlICBfX3gpICAgICBfX2F0dHJp YnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCiAKCgpleHRlcm4gICBkb3VibGUgICAgICAg ICAgcmVtcXVvICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3ksIGludCAqX19xdW8p ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yZW1xdW8gICAgICAgICAgKGRvdWJsZSAg X194LCBkb3VibGUgIF9feSwgaW50ICpfX3F1bykgICAgICA7CgoKIAoKIAoKZXh0ZXJuICAgbG9u ZyBpbnQgICAgICAgIGxyaW50ICAgICAgICAoZG91YmxlICBfX3gpICAgOyBleHRlcm4gICBsb25n IGludCAgICAgICAgX19scmludCAgICAgICAgKGRvdWJsZSAgX194KSAgICA7CmV4dGVybiAgIGxv bmcgbG9uZyBpbnQgICAgICAgIGxscmludCAgICAgICAgKGRvdWJsZSAgX194KSAgIDsgZXh0ZXJu ICAgbG9uZyBsb25nIGludCAgICAgICAgX19sbHJpbnQgICAgICAgIChkb3VibGUgIF9feCkgICAg OwoKIAoKZXh0ZXJuICAgbG9uZyBpbnQgICAgICAgIGxyb3VuZCAgICAgICAgKGRvdWJsZSAgX194 KSAgIDsgZXh0ZXJuICAgbG9uZyBpbnQgICAgICAgIF9fbHJvdW5kICAgICAgICAoZG91YmxlICBf X3gpICAgIDsKZXh0ZXJuICAgbG9uZyBsb25nIGludCAgICAgICAgbGxyb3VuZCAgICAgICAgKGRv dWJsZSAgX194KSAgIDsgZXh0ZXJuICAgbG9uZyBsb25nIGludCAgICAgICAgX19sbHJvdW5kICAg ICAgICAoZG91YmxlICBfX3gpICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmZGlt ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91Ymxl ICAgICAgICAgX19mZGltICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAg OwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZm1heCAgICAgICAgICAoZG91YmxlICBfX3gs IGRvdWJsZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZm1heCAgICAgICAg ICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAg ICAgICAgIGZtaW4gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRl cm4gICBkb3VibGUgICAgICAgICBfX2ZtaW4gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUg IF9feSkgICAgICA7CgoKIApleHRlcm4gIGludCAgICAgIF9fZnBjbGFzc2lmeSAgICAgIChkb3Vi bGUgIF9fdmFsdWUpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVy biAgaW50ICAgICAgX19zaWduYml0ICAgICAgKGRvdWJsZSAgX192YWx1ZSkgIAogICAgIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmbWEg ICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSwgZG91YmxlICBfX3opICAgIDsgZXh0 ZXJuICAgZG91YmxlICAgICAgICAgX19mbWEgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUg IF9feSwgZG91YmxlICBfX3opICAgICAgOwoKIyA2MyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgoK CgogCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4v Li4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiAKCgoKCgoK CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCmV4dGVybiAg IGZsb2F0ICAgICAgICAgIGFjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAg IGZsb2F0ICAgICAgICAgX19hY29zZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0 ZXJuICAgZmxvYXQgICAgICAgICAgYXNpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0 ZXJuICAgZmxvYXQgICAgICAgICBfX2FzaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK IApleHRlcm4gICBmbG9hdCAgICAgICAgICBhdGFuZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAg ICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGF0YW4yZiAgICAgICAgIChmbG9hdCAgIF9f eSwgZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2F0YW4yZiAgICAg ICAgIChmbG9hdCAgIF9feSwgZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAg ICAgICAgICBjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAg ICAgICAgX19jb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9h dCAgICAgICAgICBzaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0 ICAgICAgICAgX19zaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBm bG9hdCAgICAgICAgICB0YW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZs b2F0ICAgICAgICAgX190YW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgogCmV4dGVy biAgIHZvaWQgICAgICAgc2luY29zZiAgICAgIAoJICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICAq X19zaW54LCBmbG9hdCAgICpfX2Nvc3gpICAgOyBleHRlcm4gICB2b2lkICAgICAgIF9fc2luY29z ZiAgICAgICAJICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICAqX19zaW54LCBmbG9hdCAgICpfX2Nv c3gpICAgIDsKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNvc2hmICAgICAgICAgKGZs b2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19jb3NoZiAgICAgICAgIChm bG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2luaGYgICAgICAg ICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NpbmhmICAgICAg ICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICB0YW5oZiAg ICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fdGFuaGYg ICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAg YWNvc2hmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAg X19hY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0ICAg ICAgICAgIGFzaW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAg ICAgICAgIF9fYXNpbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBm bG9hdCAgICAgICAgICBhdGFuaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAg ZmxvYXQgICAgICAgICBfX2F0YW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKIAoK IApleHRlcm4gICBmbG9hdCAgICAgICAgICBleHBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7 IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19leHBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAg IDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGV4cDEwZiAgICAgICAgIChmbG9hdCAgIF9f eCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXhwMTBmICAgICAgICAgKGZsb2F0ICAg X194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBwb3cxMGYgICAgICAgICAoZmxv YXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3BvdzEwZiAgICAgICAgIChm bG9hdCAgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmcmV4cGYgICAg ICAgICAoZmxvYXQgICBfX3gsIGludCAqX19leHBvbmVudCkgICAgOyBleHRlcm4gICBmbG9hdCAg ICAgICAgIF9fZnJleHBmICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgKl9fZXhwb25lbnQpICAg ICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBsZGV4cGYgICAgICAgICAoZmxvYXQgICBf X3gsIGludCBfX2V4cG9uZW50KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sZGV4cGYg ICAgICAgICAoZmxvYXQgICBfX3gsIGludCBfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAg ZmxvYXQgICAgICAgICAgbG9nZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBm bG9hdCAgICAgICAgIF9fbG9nZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVy biAgIGZsb2F0ICAgICAgICAgIGxvZzEwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRl cm4gICBmbG9hdCAgICAgICAgIF9fbG9nMTBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbW9kZmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZs b2F0ICAgKl9faXB0cikgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbW9kZmYgICAgICAg ICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgKl9faXB0cikgICAgICA7CgoKIApleHRlcm4gICBmbG9h dCAgICAgICAgICBleHBtMWYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxv YXQgICAgICAgICBfX2V4cG0xZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVy biAgIGZsb2F0ICAgICAgICAgIGxvZzFwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRl cm4gICBmbG9hdCAgICAgICAgIF9fbG9nMXBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbG9nYmYgICAgICAgICAoZmxvYXQgICBfX3gpICAg IDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZ2JmICAgICAgICAgKGZsb2F0ICAgX194KSAg ICAgIDsKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBleHAyZiAgICAgICAgIChmbG9hdCAg IF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXhwMmYgICAgICAgICAoZmxvYXQg ICBfX3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBsb2cyZiAgICAgICAgIChm bG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbG9nMmYgICAgICAgICAo ZmxvYXQgICBfX3gpICAgICAgOwoKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHBvd2Yg ICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAg ICAgICAgX19wb3dmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7Cgog CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNxcnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7 IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19zcXJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg ICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBoeXBvdGYgICAgICAgICAoZmxvYXQgICBf X3gsIGZsb2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19oeXBvdGYgICAg ICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgoKIApleHRlcm4gICBmbG9h dCAgICAgICAgICBjYnJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9h dCAgICAgICAgIF9fY2JydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCgogCgogCmV4 dGVybiAgIGZsb2F0ICAgICAgICAgIGNlaWxmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4 dGVybiAgIGZsb2F0ICAgICAgICAgX19jZWlsZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7 CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZhYnNmICAgICAgICAgKGZsb2F0ICAgX194KSAg ICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9hdCAgICAg ICAgIF9fZmFic2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICggICAg KF9fY29uc3RfXykgICkgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZmxvb3JmICAgICAg ICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19mbG9vcmYgICAg ICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmbW9k ZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQg ICAgICAgICBfX2Ztb2RmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7 CgoKIAoKZXh0ZXJuICBpbnQgICAgX19pc2luZmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICBfX2Zpbml0ZWYgICAg IChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCiAKCmV4 dGVybiAgaW50ICAgIGlzaW5mZiAgICAgKGZsb2F0ICAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgaW50ICAgIGZpbml0ZWYgICAgIChmbG9hdCAgIF9f dmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIAoKCgoKCmV4dGVybiAgIGZs b2F0ICAgICAgICAgIGluZm5hbmYgICAgICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJpYnV0 ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19pbmZuYW5m ICAgICAgICAgKGludCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18p ICApICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGRyZW1mICAgICAgICAgKGZsb2F0ICAg X194LCBmbG9hdCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZHJlbWYgICAg ICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0 ICAgICAgICAgIHNpZ25pZmljYW5kZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4g ICBmbG9hdCAgICAgICAgIF9fc2lnbmlmaWNhbmRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAg IDsKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBjb3B5c2lnbmYgICAgICAgICAoZmxvYXQg ICBfX3gsIGZsb2F0ICAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICAp OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY29weXNpZ25mICAgICAgICAgKGZsb2F0ICAgX194 LCBmbG9hdCAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoK CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIG5hbmYgICAgICAgICAoX19jb25zdCBjaGFyICpf X3RhZ2IpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZs b2F0ICAgICAgICAgX19uYW5mICAgICAgICAgKF9fY29uc3QgY2hhciAqX190YWdiKSAgICAgX19h dHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCiAKZXh0ZXJuICBpbnQgICAgX19p c25hbmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OwoKCiAKZXh0ZXJuICBpbnQgICAgaXNuYW5mICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajBmICAg ICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2owZiAgICAgICAg IChmbG9hdCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajFmICAgICAgICAgKGZs b2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2oxZiAgICAgICAgIChmbG9hdCAg KSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgam5mICAgICAgICAgKGludCwgZmxvYXQg ICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fam5mICAgICAgICAgKGludCwgZmxvYXQg ICkgICAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHkwZiAgICAgICAgIChmbG9hdCAgKSAg ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX195MGYgICAgICAgICAoZmxvYXQgICkgICAgICA7 CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHkxZiAgICAgICAgIChmbG9hdCAgKSAgICA7IGV4dGVy biAgIGZsb2F0ICAgICAgICAgX195MWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAg IGZsb2F0ICAgICAgICAgIHluZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgIDsgZXh0ZXJuICAg ZmxvYXQgICAgICAgICBfX3luZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgICAgOwoKCgoKIApl eHRlcm4gICBmbG9hdCAgICAgICAgICBlcmZmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJu ICAgZmxvYXQgICAgICAgICBfX2VyZmYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAg IGZsb2F0ICAgICAgICAgIGVyZmNmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxv YXQgICAgICAgICBfX2VyZmNmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9h dCAgICAgICAgICBsZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQg ICAgICAgICBfX2xnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAgIGZsb2F0 ICAgICAgICAgIHRnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAg ICAgICAgIF9fdGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAgICAgIDsKCgoKIApleHRlcm4gICBm bG9hdCAgICAgICAgICBnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9h dCAgICAgICAgIF9fZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgICAgOwoKCgogCgoKZXh0ZXJu ICAgZmxvYXQgICAgICAgICAgbGdhbW1hZl9yICAgICAgICAgICAgKGZsb2F0ICAsIGludCAqX19z aWduZ2FtcCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGdhbW1hZl9yICAgICAgICAg ICAgKGZsb2F0ICAsIGludCAqX19zaWduZ2FtcCkgICAgICA7CgoKCgogCgpleHRlcm4gICBmbG9h dCAgICAgICAgICByaW50ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9h dCAgICAgICAgIF9fcmludGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRlcm4g ICBmbG9hdCAgICAgICAgICBuZXh0YWZ0ZXJmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAg IF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZmxv YXQgICAgICAgICBfX25leHRhZnRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195 KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgpleHRlcm4gICBmbG9h dCAgICAgICAgICBuZXh0dG93YXJkZiAgICAgICAgIChmbG9hdCAgIF9feCwgbG9uZyBkb3VibGUg X195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9h dCAgICAgICAgIF9fbmV4dHRvd2FyZGYgICAgICAgICAoZmxvYXQgICBfX3gsIGxvbmcgZG91Ymxl IF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKCiAKZXh0ZXJu ICAgZmxvYXQgICAgICAgICAgcmVtYWluZGVyZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQg ICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3JlbWFpbmRlcmYgICAgICAgICAo ZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAg ICAgIHNjYWxiZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX24pICAgIDsgZXh0ZXJu ICAgZmxvYXQgICAgICAgICBfX3NjYWxiZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBf X24pICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2NhbGJuZiAgICAgICAgIChm bG9hdCAgIF9feCwgaW50IF9fbikgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2NhbGJu ZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fbikgICAgICA7CgogCmV4dGVybiAgIGludCAg ICAgICBpbG9nYmYgICAgICAgKGZsb2F0ICAgX194KSAgIDsgZXh0ZXJuICAgaW50ICAgICAgIF9f aWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkgICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAg ICAgIHNjYWxibG5mICAgICAgICAgKGZsb2F0ICAgX194LCBsb25nIGludCBfX24pICAgIDsgZXh0 ZXJuICAgZmxvYXQgICAgICAgICBfX3NjYWxibG5mICAgICAgICAgKGZsb2F0ICAgX194LCBsb25n IGludCBfX24pICAgICAgOwoKIAoKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbmVhcmJ5aW50ZiAg ICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbmVhcmJ5 aW50ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCgpleHRlcm4gICBmbG9hdCAgICAg ICAgICByb3VuZGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAg ICAgICBfX3JvdW5kZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCgpleHRlcm4gICBm bG9hdCAgICAgICAgICB0cnVuY2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICBfX2F0dHJpYnV0 ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX190cnVuY2Yg ICAgICAgICAoZmxvYXQgICBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykg ICkgIDsKCiAKCgpleHRlcm4gICBmbG9hdCAgICAgICAgICByZW1xdW9mICAgICAgICAgKGZsb2F0 ICAgX194LCBmbG9hdCAgIF9feSwgaW50ICpfX3F1bykgICAgOyBleHRlcm4gICBmbG9hdCAgICAg ICAgIF9fcmVtcXVvZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3ksIGludCAqX19x dW8pICAgICAgOwoKCiAKCiAKCmV4dGVybiAgIGxvbmcgaW50ICAgICAgIGxyaW50ZiAgICAgICAo ZmxvYXQgICBfX3gpICAgOyBleHRlcm4gICBsb25nIGludCAgICAgICBfX2xyaW50ZiAgICAgICAo ZmxvYXQgICBfX3gpICAgIDsKZXh0ZXJuICAgbG9uZyBsb25nIGludCAgICAgICBsbHJpbnRmICAg ICAgIChmbG9hdCAgIF9feCkgICA7IGV4dGVybiAgIGxvbmcgbG9uZyBpbnQgICAgICAgX19sbHJp bnRmICAgICAgIChmbG9hdCAgIF9feCkgICAgOwoKIAoKZXh0ZXJuICAgbG9uZyBpbnQgICAgICAg bHJvdW5kZiAgICAgICAoZmxvYXQgICBfX3gpICAgOyBleHRlcm4gICBsb25nIGludCAgICAgICBf X2xyb3VuZGYgICAgICAgKGZsb2F0ICAgX194KSAgICA7CmV4dGVybiAgIGxvbmcgbG9uZyBpbnQg ICAgICAgbGxyb3VuZGYgICAgICAgKGZsb2F0ICAgX194KSAgIDsgZXh0ZXJuICAgbG9uZyBsb25n IGludCAgICAgICBfX2xscm91bmRmICAgICAgIChmbG9hdCAgIF9feCkgICAgOwoKCiAKZXh0ZXJu ICAgZmxvYXQgICAgICAgICAgZmRpbWYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195 KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19mZGltZiAgICAgICAgIChmbG9hdCAgIF9f eCwgZmxvYXQgICBfX3kpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmbWF4ZiAg ICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAg ICAgICBfX2ZtYXhmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7Cgog CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZtaW5mICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9h dCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZm1pbmYgICAgICAgICAoZmxv YXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCmV4dGVybiAgaW50ICAgICBfX2ZwY2xh c3NpZnlmICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwoKIApleHRlcm4gIGludCAgICAgX19zaWduYml0ZiAgICAgKGZsb2F0ICAgX192YWx1 ZSkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgIGZsb2F0 ICAgICAgICAgIGZtYWYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195LCBmbG9hdCAg IF9feikgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZm1hZiAgICAgICAgIChmbG9hdCAg IF9feCwgZmxvYXQgICBfX3ksIGZsb2F0ICAgX196KSAgICAgIDsKCiMgODIgIi91c3IvbGliL2dj Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRo LmgiIDIgMwoKCgoKIyAxMDMgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8u Li8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRoLmgiIDMKCgoKCgoKCgoKIApleHRlcm4gaW50 IHNpZ25nYW07CgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAplbnVt CiAgewogICAgRlBfTkFOLAoKICAgIEZQX0lORklOSVRFLAoKICAgIEZQX1pFUk8sCgogICAgRlBf U1VCTk9STUFMLAoKICAgIEZQX05PUk1BTAoKICB9OwoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK CgogCgoKCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKdHlwZWRl ZiBlbnVtCnsKICBfSUVFRV8gPSAtMSwJIAogIF9TVklEXywJIAogIF9YT1BFTl8sCSAKICBfUE9T SVhfLAogIF9JU09DXwkgCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgogCgoKZXh0ZXJuIF9MSUJfVkVS U0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsKCgoKCiAKCgoKCgoKCnN0cnVjdCBleGNlcHRpb24KCiAg ewogICAgaW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3Vi bGUgYXJnMjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgoKCmV4dGVybiBpbnQgbWF0aGVyciAg KHN0cnVjdCBleGNlcHRpb24gKl9fZXhjKSAgICA7CgoKCgogCgoKCgoKCgogCgojIDEgIi91c3Iv bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL2Zsb2F0LmgiIDEgMwogCgoKIAoK ICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgog ICAgCgoKICAgIAoKCiAgICAKCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgog ICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgog ICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCgoKIyAyODkgIi91c3IvbGliL2djYy1s aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRoLmgi IDIgMwoKCiMgMjk5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4v Li4vYXJtLWxpbnV4L2luY2x1ZGUvbWF0aC5oIiAzCgoKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoK CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51 eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi IDEgMwogCgoKCgoKCgoKIAoKCiMgMzQ4ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1 LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKCgogCgoKCgoK IAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgog CgoKCiMgMTkwICIuLi8uLi9pbmNsdWRlL21pc2MuaCIgMgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9s aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRl L2Fzc2VydC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyAzMiAiL3Vzci9saWIvZ2Nj LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2Fzc2Vy dC5oIiAzCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKIyAxMDkgIi91c3IvbGliL2djYy1saWIv YXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9hc3NlcnQuaCIg MwoKIyAyMDEgIi4uLy4uL2luY2x1ZGUvbWlzYy5oIiAyCgojIDEgIi91c3IvbGliL2djYy1saWIv YXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9jdHlwZS5oIiAx IDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgplbnVt CnsKICBfSVN1cHBlciA9ICgoIDAgKSA8IDggPyAoKDEgPDwgKCAwICkpIDw8IDgpIDogKCgxIDw8 ICggMCApKSA+PiA4KSkgLAkgCiAgX0lTbG93ZXIgPSAoKCAxICkgPCA4ID8gKCgxIDw8ICggMSAp KSA8PCA4KSA6ICgoMSA8PCAoIDEgKSkgPj4gOCkpICwJIAogIF9JU2FscGhhID0gKCggMiApIDwg OCA/ICgoMSA8PCAoIDIgKSkgPDwgOCkgOiAoKDEgPDwgKCAyICkpID4+IDgpKSAsCSAKICBfSVNk aWdpdCA9ICgoIDMgKSA8IDggPyAoKDEgPDwgKCAzICkpIDw8IDgpIDogKCgxIDw8ICggMyApKSA+ PiA4KSkgLAkgCiAgX0lTeGRpZ2l0ID0gKCggNCApIDwgOCA/ICgoMSA8PCAoIDQgKSkgPDwgOCkg OiAoKDEgPDwgKCA0ICkpID4+IDgpKSAsCSAKICBfSVNzcGFjZSA9ICgoIDUgKSA8IDggPyAoKDEg PDwgKCA1ICkpIDw8IDgpIDogKCgxIDw8ICggNSApKSA+PiA4KSkgLAkgCiAgX0lTcHJpbnQgPSAo KCA2ICkgPCA4ID8gKCgxIDw8ICggNiApKSA8PCA4KSA6ICgoMSA8PCAoIDYgKSkgPj4gOCkpICwJ IAogIF9JU2dyYXBoID0gKCggNyApIDwgOCA/ICgoMSA8PCAoIDcgKSkgPDwgOCkgOiAoKDEgPDwg KCA3ICkpID4+IDgpKSAsCSAKICBfSVNibGFuayA9ICgoIDggKSA8IDggPyAoKDEgPDwgKCA4ICkp IDw8IDgpIDogKCgxIDw8ICggOCApKSA+PiA4KSkgLAkgCiAgX0lTY250cmwgPSAoKCA5ICkgPCA4 ID8gKCgxIDw8ICggOSApKSA8PCA4KSA6ICgoMSA8PCAoIDkgKSkgPj4gOCkpICwJIAogIF9JU3B1 bmN0ID0gKCggMTAgKSA8IDggPyAoKDEgPDwgKCAxMCApKSA8PCA4KSA6ICgoMSA8PCAoIDEwICkp ID4+IDgpKSAsCSAKICBfSVNhbG51bSA9ICgoIDExICkgPCA4ID8gKCgxIDw8ICggMTEgKSkgPDwg OCkgOiAoKDEgPDwgKCAxMSApKSA+PiA4KSkgCSAKfTsKCgogCgoKCgoKCgoKCgpleHRlcm4gX19j b25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsJIApleHRlcm4gX19jb25zdCBfX2lu dDMyX3QgKl9fY3R5cGVfdG9sb3dlcjsgIApleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5 cGVfdG91cHBlcjsgIAoKCgoKCgoKCgogCgoKCmV4dGVybiBpbnQgIGlzYWxudW0gICAoaW50KSAg ICAgOwpleHRlcm4gaW50ICBpc2FscGhhICAgKGludCkgICAgIDsKZXh0ZXJuIGludCAgaXNjbnRy bCAgIChpbnQpICAgICA7CmV4dGVybiBpbnQgIGlzZGlnaXQgICAoaW50KSAgICAgOwpleHRlcm4g aW50ICBpc2xvd2VyICAgKGludCkgICAgIDsKZXh0ZXJuIGludCAgaXNncmFwaCAgIChpbnQpICAg ICA7CmV4dGVybiBpbnQgIGlzcHJpbnQgICAoaW50KSAgICAgOwpleHRlcm4gaW50ICBpc3B1bmN0 ICAgKGludCkgICAgIDsKZXh0ZXJuIGludCAgaXNzcGFjZSAgIChpbnQpICAgICA7CmV4dGVybiBp bnQgIGlzdXBwZXIgICAoaW50KSAgICAgOwpleHRlcm4gaW50ICBpc3hkaWdpdCAgIChpbnQpICAg ICA7CgoKZXh0ZXJuIGludCAgaXNibGFuayAgIChpbnQpICAgICA7CgoKCiAKZXh0ZXJuIGludCB0 b2xvd2VyICAoaW50IF9fYykgICAgOwoKIApleHRlcm4gaW50IHRvdXBwZXIgIChpbnQgX19jKSAg ICA7CgoKCgogCgpleHRlcm4gaW50IGlzYXNjaWkgIChpbnQgX19jKSAgICA7CgogCgpleHRlcm4g aW50IHRvYXNjaWkgIChpbnQgX19jKSAgICA7CgoKCgogCgpleHRlcm4gaW50ICBfdG91cHBlciAg IChpbnQpICAgICA7CmV4dGVybiBpbnQgIF90b2xvd2VyICAgKGludCkgICAgIDsKCgoKCgoKCgoK CgoKCgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lIGludAp0b2xvd2VyIChpbnQgX19jKSAgCnsKICBy ZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2ID8gX19jdHlwZV90b2xvd2VyW19fY10gOiBf X2M7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91cHBlciAoaW50IF9fYykgIAp7CiAgcmV0dXJu IF9fYyA+PSAtMTI4ICYmIF9fYyA8IDI1NiA/IF9fY3R5cGVfdG91cHBlcltfX2NdIDogX19jOwp9 CgoKCgojIDE4MyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u L2FybS1saW51eC9pbmNsdWRlL2N0eXBlLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK CgogCgoKCiAKCgoKCgoKCgoKIAoKCgpleHRlcm4gaW50ICBfX2lzYWxudW1fbCAgIChpbnQsIF9f bG9jYWxlX3QpICAgICA7CmV4dGVybiBpbnQgIF9faXNhbHBoYV9sICAgKGludCwgX19sb2NhbGVf dCkgICAgIDsKZXh0ZXJuIGludCAgX19pc2NudHJsX2wgICAoaW50LCBfX2xvY2FsZV90KSAgICAg OwpleHRlcm4gaW50ICBfX2lzZGlnaXRfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAgICA7CmV4dGVy biBpbnQgIF9faXNsb3dlcl9sICAgKGludCwgX19sb2NhbGVfdCkgICAgIDsKZXh0ZXJuIGludCAg X19pc2dyYXBoX2wgICAoaW50LCBfX2xvY2FsZV90KSAgICAgOwpleHRlcm4gaW50ICBfX2lzcHJp bnRfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAgICA7CmV4dGVybiBpbnQgIF9faXNwdW5jdF9sICAg KGludCwgX19sb2NhbGVfdCkgICAgIDsKZXh0ZXJuIGludCAgX19pc3NwYWNlX2wgICAoaW50LCBf X2xvY2FsZV90KSAgICAgOwpleHRlcm4gaW50ICBfX2lzdXBwZXJfbCAgIChpbnQsIF9fbG9jYWxl X3QpICAgICA7CmV4dGVybiBpbnQgIF9faXN4ZGlnaXRfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAg ICA7CgpleHRlcm4gaW50ICBfX2lzYmxhbmtfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAgICA7CgoK IApleHRlcm4gaW50IF9fdG9sb3dlcl9sICAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpICAgIDsK CiAKZXh0ZXJuIGludCBfX3RvdXBwZXJfbCAgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSAgICA7 CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgMjAyICIuLi8uLi9pbmNsdWRlL21pc2Mu aCIgMgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4v YXJtLWxpbnV4L2luY2x1ZGUvc3RkaW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK CgoKCiAKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9z dGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8y Ljk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xp Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgog CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIv YXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4 ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoK CgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2lu Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9n Y2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoK CgoKCgoKIAoKCgoKCgoKIyAzMyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKCgoKCgoKCiAK dHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1s aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9saWJpby5o IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGli L2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvX0dfY29uZmln LmgiIDEgMwogCgoKCgoKIAoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIu OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1s aWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoK CiMgNjEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o IiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vz ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoK CgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRl L3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s aW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAz MTcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAz CgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCgojIDE0ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvX0dfY29uZmlnLmgiIDIg MwoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRl X18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmli dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50 MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CgoK CgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDMwICIvdXNyL2xp Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUv bGliaW8uaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIyA2NyAiL3Vzci9saWIvZ2Nj LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2xpYmlv LmgiIDMKCgogCgoKCgoKCgoKCgoKCgoKCgoKIyA5OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2xpYmlvLmgiIDMKCgoKCgoK CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCnN0cnVj dCBfSU9fanVtcF90OyAgc3RydWN0IF9JT19GSUxFOwoKIAoKCgoKCgoKdHlwZWRlZiB2b2lkIF9J T19sb2NrX3Q7CgoKCiAKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAq X25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKICAgCgogICAKICBpbnQgX3BvczsKIyAx ODYgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGlu dXgvaW5jbHVkZS9saWJpby5oIiAzCgp9OwoKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdz OwkJIAoKCiAgIAogICAKICBjaGFyKiBfSU9fcmVhZF9wdHI7CSAKICBjaGFyKiBfSU9fcmVhZF9l bmQ7CSAKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwkgCiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CSAK ICBjaGFyKiBfSU9fd3JpdGVfcHRyOwkgCiAgY2hhciogX0lPX3dyaXRlX2VuZDsJIAogIGNoYXIq IF9JT19idWZfYmFzZTsJIAogIGNoYXIqIF9JT19idWZfZW5kOwkgCiAgIAogIGNoYXIgKl9JT19z YXZlX2Jhc2U7ICAKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7ICAgCiAgY2hhciAqX0lPX3NhdmVf ZW5kOyAgCgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxF ICpfY2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90ICAgX29s ZF9vZmZzZXQ7ICAKCgogICAKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQg Y2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCiAgIAoKICBfSU9fbG9j a190ICpfbG9jazsKCgoKCgoKCgogIF9fb2ZmNjRfdCAgIF9vZmZzZXQ7CiAgIAogIGludCBfdW51 c2VkMlsxNl07Cgp9OwoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVj dCBfSU9fRklMRV9wbHVzOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRp bl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4dGVybiBz dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CgoKCgoKCgoKCgoKIAoKIAoKdHlw ZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICAodm9pZCAqICBfX2Nvb2tpZSwgY2hhciAqX19i dWYsCgkJCQkgICAgICAgc2l6ZV90IF9fbmJ5dGVzKSAgOwoKIAoKCgoKCnR5cGVkZWYgX19zc2l6 ZV90IF9faW9fd3JpdGVfZm4gICh2b2lkICogIF9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVm LAoJCQkJICAgICAgc2l6ZV90IF9fbikgIDsKCiAKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtf Zm4gICh2b2lkICogIF9fY29va2llLCBfX29mZl90ICAgX19wb3MsIGludCBfX3cpICA7CgogCnR5 cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gICh2b2lkICogIF9fY29va2llKSAgOwoKCgogCnR5cGVk ZWYgX19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb193cml0 ZV9mbiBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3NlZWtfZm4gY29va2ll X3NlZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5j dGlvbl90OwoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpyZWFkOwkJIAogIF9f aW9fd3JpdGVfZm4gKndyaXRlOwkJIAogIF9faW9fc2Vla19mbiAqc2VlazsJCSAKICBfX2lvX2Ns b3NlX2ZuICpjbG9zZTsJCSAKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9J T19jb29raWVfaW9fZnVuY3Rpb25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190OwoKIApzdHJ1Y3Qg X0lPX2Nvb2tpZV9maWxlCnsKICBzdHJ1Y3QgX0lPX0ZJTEUgX19maWxlOwogIGNvbnN0IHZvaWQg Kl9fdnRhYmxlOwogIHZvaWQgKl9fY29va2llOwogIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Qg X19pb19mdW5jdGlvbnM7Cn07CgoKCgoKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93ICAoX0lPX0ZJ TEUgKikgICAgOwpleHRlcm4gaW50IF9fdWZsb3cgIChfSU9fRklMRSAqKSAgICA7CmV4dGVybiBp bnQgX19vdmVyZmxvdyAgKF9JT19GSUxFICosIGludCkgICAgOwoKCgoKCgoKCgoKCgoKCgoKZXh0 ZXJuIGludCBfSU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgICA7CmV4dGVybiBpbnQgX0lPX3B1 dGMgIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgICAgOwpleHRlcm4gaW50IF9JT19mZW9mICAo X0lPX0ZJTEUgKl9fZnApICAgIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yICAoX0lPX0ZJTEUgKl9f ZnApICAgIDsKCmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAgKF9JT19GSUxFICpfX2ZwKSAg ICA7CgogCgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgICA7CmV4 dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAgKF9JT19GSUxFICopICAgIDsKZXh0ZXJuIGludCBf SU9fZnRyeWxvY2tmaWxlICAoX0lPX0ZJTEUgKikgICAgOwoKCgoKCgoKCgoKCgpleHRlcm4gaW50 IF9JT192ZnNjYW5mICAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0 cmljdCwKCQkJICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqX19yZXN0cmljdCkgICAgOwpleHRl cm4gaW50IF9JT192ZnByaW50ZiAgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpf X3Jlc3RyaWN0LAoJCQkgICAgICBfX2dudWNfdmFfbGlzdCApICAgIDsKZXh0ZXJuIF9fc3NpemVf dCAgIF9JT19wYWRuICAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QgICkgICAgOwpleHRlcm4g c2l6ZV90ICAgX0lPX3NnZXRuICAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkgICAgOwoK ZXh0ZXJuIF9fb2ZmNjRfdCAgIF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUgKiwgX19vZmY2NF90ICAs IGludCwgaW50KSAgICA7CmV4dGVybiBfX29mZjY0X3QgICBfSU9fc2Vla3BvcyAgKF9JT19GSUxF ICosIF9fb2ZmNjRfdCAgLCBpbnQpICAgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9h cmVhICAoX0lPX0ZJTEUgKikgICAgOwoKCgoKCgojIDU3ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoK IAoKdHlwZWRlZiBfX29mZl90ICBmcG9zX3Q7CgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCAgZnBvczY0 X3Q7CgoKIAoKCgoKCiAKCgoKCgogCgoKCgoKCiAKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgojIDEg Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv aW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgojIDExMCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgogCmV4dGVybiBGSUxFICpz dGRpbjsJCSAKZXh0ZXJuIEZJTEUgKnN0ZG91dDsJCSAKZXh0ZXJuIEZJTEUgKnN0ZGVycjsJCSAK IAoKCgoKCiAKZXh0ZXJuIGludCByZW1vdmUgIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpICAg IDsKIApleHRlcm4gaW50IHJlbmFtZSAgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hh ciAqX19uZXcpICAgIDsKCgogCgpleHRlcm4gRklMRSAqdG1wZmlsZSAgKHZvaWQpICAgIDsKCgoK CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZTY0ICAodm9pZCkgICAgOwoKIApleHRlcm4gY2hhciAq dG1wbmFtICAoY2hhciAqX19zKSAgICA7CgoKIAoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yICAoY2hh ciAqX19zKSAgICA7CgoKCgogCgoKCgoKCmV4dGVybiBjaGFyICp0ZW1wbmFtICAoX19jb25zdCBj aGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkgICAgOwoKCgogCmV4dGVybiBpbnQgZmNs b3NlICAoRklMRSAqX19zdHJlYW0pICAgIDsKIApleHRlcm4gaW50IGZmbHVzaCAgKEZJTEUgKl9f c3RyZWFtKSAgICA7CgoKIApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAgKEZJTEUgKl9fc3Ry ZWFtKSAgICA7CgoKCiAKZXh0ZXJuIGludCBmY2xvc2VhbGwgICh2b2lkKSAgICA7CgoKCgogCmV4 dGVybiBGSUxFICpmb3BlbiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJ CQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpICAgIDsKIApleHRlcm4gRklMRSAq ZnJlb3BlbiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJCQkgICBfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKCQkJICAgRklMRSAqX19yZXN0cmljdCBfX3N0 cmVhbSkgICAgOwojIDIwMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGlvLmgiIDMKCgpleHRlcm4gRklMRSAqZm9wZW42 NCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJCQkgICBfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19tb2RlcykgICAgOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0ICAoX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCgkJCSAgICAgX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbW9kZXMsCgkJCSAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgICAg OwoKCgogCmV4dGVybiBGSUxFICpmZG9wZW4gIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21v ZGVzKSAgICA7CgoKCiAKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tpZSAgKHZvaWQgKl9fcmVzdHJp Y3QgX19tYWdpY19jb29raWUsCgkJCSAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t b2RlcywKCQkJICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jcykgICAg OwoKIAoKCmV4dGVybiBGSUxFICpvcGVuX21lbXN0cmVhbSAgKGNoYXIgKipfX3Jlc3RyaWN0IF9f YnVmbG9jLAoJCQkJICBzaXplX3QgKl9fcmVzdHJpY3QgX19zaXplbG9jKSAgICA7CgoKCiAKCmV4 dGVybiB2b2lkIHNldGJ1ZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVz dHJpY3QgX19idWYpICAgIDsKIAoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAgKEZJTEUgKl9fcmVzdHJp Y3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCgkJCSBpbnQgX19tb2Rlcywgc2l6 ZV90IF9fbikgICAgOwoKCiAKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAgKEZJTEUgKl9fcmVzdHJp Y3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCgkJCSAgICBzaXplX3QgX19zaXpl KSAgICA7CgogCmV4dGVybiB2b2lkIHNldGxpbmVidWYgIChGSUxFICpfX3N0cmVhbSkgICAgOwoK CgogCmV4dGVybiBpbnQgZnByaW50ZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCgkJCSBf X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwogCmV4dGVybiBpbnQg cHJpbnRmICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKIApl eHRlcm4gaW50IHNwcmludGYgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJIF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSAgICA7CgogCmV4dGVybiBpbnQgdmZwcmludGYg IChGSUxFICpfX3Jlc3RyaWN0IF9fcywKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m b3JtYXQsCgkJCSAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICA7CiAKZXh0ZXJuIGludCB2cHJp bnRmICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJCQkgX19nbnVjX3ZhX2xp c3QgIF9fYXJnKSAgICA7CiAKZXh0ZXJuIGludCB2c3ByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3Qg X19zLAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICBfX2dudWNf dmFfbGlzdCAgX19hcmcpICAgIDsKCgogCmV4dGVybiBpbnQgc25wcmludGYgIChjaGFyICpfX3Jl c3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX2Zvcm1hdCwgLi4uKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w cmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgX192c25wcmludGYgIChjaGFyICpfX3Jlc3Ry aWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAoJCQkgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX2Zvcm1hdCwKCQkJICAgICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICAgIAogICAgIF9fYXR0 cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZz bnByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCgkJCSAgIF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICAgX19nbnVjX3ZhX2xpc3QgIF9f YXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywg MCkpKTsKCgoKIAoKZXh0ZXJuIGludCB2YXNwcmludGYgIChjaGFyICoqX19yZXN0cmljdCBfX3B0 ciwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwgX19nbnVjX3ZhX2xpc3QgIF9f YXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwg MCkpKTsKZXh0ZXJuIGludCBfX2FzcHJpbnRmICAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCgkJ CSAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikgICAgCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNw cmludGYgIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19mbXQsIC4uLikgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f cHJpbnRmX18sIDIsIDMpKSk7CgogCmV4dGVybiBpbnQgdmRwcmludGYgIChpbnQgX19mZCwgX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAoJCQkgIF9fZ251Y192YV9saXN0ICBfX2FyZykg ICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7 CmV4dGVybiBpbnQgZHByaW50ZiAgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19mbXQsIC4uLikgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm X18sIDIsIDMpKSk7CgoKCiAKZXh0ZXJuIGludCBmc2NhbmYgIChGSUxFICpfX3Jlc3RyaWN0IF9f c3RyZWFtLAoJCQlfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwog CmV4dGVybiBpbnQgc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4u LikgICAgOwogCmV4dGVybiBpbnQgc3NjYW5mICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f cywKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKCgogCmV4 dGVybiBpbnQgdmZzY2FuZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zLAoJCQkgX19jb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJCQkgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICAKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKIApleHRl cm4gaW50IHZzY2FuZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVj X3ZhX2xpc3QgIF9fYXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19z Y2FuZl9fLCAxLCAwKSkpOwoKIApleHRlcm4gaW50IHZzc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19zLAoJCQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJCQkg X19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRf XyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCgogCmV4dGVybiBpbnQgZmdldGMgI