From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31557 invoked by alias); 23 Jan 2003 04:36:00 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 31539 invoked by uid 71); 23 Jan 2003 04:36:00 -0000 Resent-Date: 23 Jan 2003 04:36:00 -0000 Resent-Message-ID: <20030123043600.31537.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, dpates@dsdk12.net Received: (qmail 30749 invoked by uid 48); 23 Jan 2003 04:28:59 -0000 Message-Id: <20030123042859.30748.qmail@sources.redhat.com> Date: Thu, 23 Jan 2003 04:36:00 -0000 From: dpates@dsdk12.net Reply-To: dpates@dsdk12.net To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c/9413: Internal compiler error received X-SW-Source: 2003-01/txt/msg01332.txt.bz2 List-Id: >Number: 9413 >Category: c >Synopsis: Internal compiler error received >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Jan 23 04:36:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: dpates@dsdk12.net >Release: gcc version 3.2.2 20030109 (Debian prerelease) >Organization: >Environment: Debian GNU/Linux unstable (sid) >Description: >How-To-Repeat: Extract Linux 2.4.20 kernel source Apply patch from http://www.kernel.org/pub/linux/kernel/people/hch/linux-abi/v2.4/linux-abi-2.4.18.0.patch.gz (must hand patch 4 broken chunks, easily fixed) Configure kernel with SVr3/SVr4 (and derivates) binary emulation support Run 'make modules' >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="sysi86.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sysi86.i" IyAxICJzeXNpODYuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEg InN5c2k4Ni5jIgoKCgoKCiNpZGVudCAiJVclICVHJSIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1 ZGUvbGludXgvc2NoZWQuaCIgMgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZXZlbnQ7CgojIDEgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCgoKCiMgMSAiL3Vz ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYXV0b2NvbmYuaCIgMQojIDUgIi91c3Iv c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAyCiMgOSAiL3Vzci9zcmMv bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4 LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4 LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p bmNsdWRlL2FzbS9wdHJhY2UuaCIgMQojIDI2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9hc20vcHRyYWNlLmgiCnN0cnVjdCBwdF9yZWdzIHsKICAgICAgICBsb25nIGVieDsKICAgICAg ICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAgICBs b25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBpbnQg eGRzOwogICAgICAgIGludCB4ZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAgICAgICBsb25n IGVpcDsKICAgICAgICBpbnQgeGNzOwogICAgICAgIGxvbmcgZWZsYWdzOwogICAgICAgIGxvbmcg ZXNwOwogICAgICAgIGludCB4c3M7Cn07CiMgNjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs dWRlL2FzbS9wdHJhY2UuaCIKZXh0ZXJuIHZvaWQgc2hvd19yZWdzKHN0cnVjdCBwdF9yZWdzICop OwojIDI1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9wdHJhY2UuaCIgMgoj IDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMgojIDEg Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIgMQojIDE2 ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCiMgMSAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQoKCgoKCgoKIyAx ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAxCgoK CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyA1 ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAyCiMg MzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiCnR5 cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGZkc19iaXRzIFsoMTAyNC8oOCAq IHNpemVvZih1bnNpZ25lZCBsb25nKSkpXTsKfSBfX2tlcm5lbF9mZF9zZXQ7CgoKdHlwZWRlZiB2 b2lkICgqX19rZXJuZWxfc2lnaGFuZGxlcl90KShpbnQpOwoKCnR5cGVkZWYgaW50IF9fa2VybmVs X2tleV90OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcG9zaXhfdHlw ZXMuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcG9zaXhfdHlw ZXMuaCIKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9kZXZfdDsKdHlwZWRlZiB1bnNp Z25lZCBsb25nIF9fa2VybmVsX2lub190Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVs X21vZGVfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9ubGlua190Owp0eXBlZGVm IGxvbmcgX19rZXJuZWxfb2ZmX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX3BpZF90Owp0eXBlZGVm IHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2lwY19waWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y dCBfX2tlcm5lbF91aWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWRfdDsK dHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5l bF9zc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9wdHJkaWZmX3Q7CnR5cGVkZWYgbG9uZyBf X2tlcm5lbF90aW1lX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9zdXNlY29uZHNfdDsKdHlwZWRl ZiBsb25nIF9fa2VybmVsX2Nsb2NrX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX2RhZGRyX3Q7CnR5 cGVkZWYgY2hhciAqIF9fa2VybmVsX2NhZGRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19r ZXJuZWxfdWlkMTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWQxNl90Owp0 eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF91aWQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu dCBfX2tlcm5lbF9naWQzMl90OwoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRf dWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX2dpZF90OwoKCnR5cGVk ZWYgbG9uZyBsb25nIF9fa2VybmVsX2xvZmZfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgICAg IGludCB2YWxbMl07CgoKCn0gX19rZXJuZWxfZnNpZF90OwojIDQ3ICIvdXNyL3NyYy9saW51eC0y LjQuMjAvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAyCiMgOSAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdW1vZGVf dDsKCgoKCgoKdHlwZWRlZiBfX3NpZ25lZF9fIGNoYXIgX19zODsKdHlwZWRlZiB1bnNpZ25lZCBj aGFyIF9fdTg7Cgp0eXBlZGVmIF9fc2lnbmVkX18gc2hvcnQgX19zMTY7CnR5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgX191MTY7Cgp0eXBlZGVmIF9fc2lnbmVkX18gaW50IF9fczMyOwp0eXBlZGVmIHVu c2lnbmVkIGludCBfX3UzMjsKCgp0eXBlZGVmIF9fc2lnbmVkX18gbG9uZyBsb25nIF9fczY0Owp0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3U2NDsKIyAzMiAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvYXNtL3R5cGVzLmgiCnR5cGVkZWYgc2lnbmVkIGNoYXIgczg7CnR5cGVkZWYg dW5zaWduZWQgY2hhciB1ODsKCnR5cGVkZWYgc2lnbmVkIHNob3J0IHMxNjsKdHlwZWRlZiB1bnNp Z25lZCBzaG9ydCB1MTY7Cgp0eXBlZGVmIHNpZ25lZCBpbnQgczMyOwp0eXBlZGVmIHVuc2lnbmVk IGludCB1MzI7Cgp0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgczY0Owp0eXBlZGVmIHVuc2lnbmVk IGxvbmcgbG9uZyB1NjQ7CiMgNTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS90 eXBlcy5oIgp0eXBlZGVmIHUzMiBkbWFfYWRkcl90OwoKdHlwZWRlZiB1NjQgZG1hNjRfYWRkcl90 OwojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAyCgoK CnR5cGVkZWYgX19rZXJuZWxfZmRfc2V0IGZkX3NldDsKdHlwZWRlZiBfX2tlcm5lbF9kZXZfdCBk ZXZfdDsKdHlwZWRlZiBfX2tlcm5lbF9pbm9fdCBpbm9fdDsKdHlwZWRlZiBfX2tlcm5lbF9tb2Rl X3QgbW9kZV90Owp0eXBlZGVmIF9fa2VybmVsX25saW5rX3QgbmxpbmtfdDsKdHlwZWRlZiBfX2tl cm5lbF9vZmZfdCBvZmZfdDsKdHlwZWRlZiBfX2tlcm5lbF9waWRfdCBwaWRfdDsKdHlwZWRlZiBf X2tlcm5lbF9kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19rZXJuZWxfa2V5X3Qga2V5X3Q7CnR5 cGVkZWYgX19rZXJuZWxfc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKdHlwZWRlZiBfX2tlcm5l bF91aWQzMl90IHVpZF90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDMyX3QgZ2lkX3Q7CnR5cGVkZWYg X19rZXJuZWxfdWlkMTZfdCB1aWQxNl90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDE2X3QgZ2lkMTZf dDsKCgoKdHlwZWRlZiBfX2tlcm5lbF9vbGRfdWlkX3Qgb2xkX3VpZF90Owp0eXBlZGVmIF9fa2Vy bmVsX29sZF9naWRfdCBvbGRfZ2lkX3Q7CiMgNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs dWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgX19rZXJuZWxfbG9mZl90IGxvZmZfdDsKIyA1NCAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIKdHlwZWRlZiBfX2tl cm5lbF9zaXplX3Qgc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9zc2l6ZV90IHNzaXplX3Q7 CgoKCgp0eXBlZGVmIF9fa2VybmVsX3B0cmRpZmZfdCBwdHJkaWZmX3Q7CgoKCgp0eXBlZGVmIF9f a2VybmVsX3RpbWVfdCB0aW1lX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX2Nsb2NrX3QgY2xvY2tf dDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIHVuc2ln bmVkIGNoYXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYg dW5zaWduZWQgaW50IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwoKCnR5cGVk ZWYgdW5zaWduZWQgY2hhciB1bmNoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0Owp0 eXBlZGVmIHVuc2lnbmVkIGludCB1aW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxvbmc7CgoK Cgp0eXBlZGVmIF9fdTggdV9pbnQ4X3Q7CnR5cGVkZWYgX19zOCBpbnQ4X3Q7CnR5cGVkZWYgX191 MTYgdV9pbnQxNl90Owp0eXBlZGVmIF9fczE2IGludDE2X3Q7CnR5cGVkZWYgX191MzIgdV9pbnQz Ml90Owp0eXBlZGVmIF9fczMyIGludDMyX3Q7CgoKCnR5cGVkZWYgX191OCB1aW50OF90Owp0eXBl ZGVmIF9fdTE2IHVpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVpbnQzMl90OwoKCnR5cGVkZWYgX191 NjQgdWludDY0X3Q7CnR5cGVkZWYgX191NjQgdV9pbnQ2NF90Owp0eXBlZGVmIF9fczY0IGludDY0 X3Q7CiMgMTIzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90eXBlcy5oIgpz dHJ1Y3QgdXN0YXQgewogICAgICAgIF9fa2VybmVsX2RhZGRyX3QgZl90ZnJlZTsKICAgICAgICBf X2tlcm5lbF9pbm9fdCBmX3Rpbm9kZTsKICAgICAgICBjaGFyIGZfZm5hbWVbNl07CiAgICAgICAg Y2hhciBmX2ZwYWNrWzZdOwp9OwojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s aW51eC9jYXBhYmlsaXR5LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s aW51eC9mcy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Zz LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAx CiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saW1pdHMuaCIgMQojIDEyICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu dXgtMi40LjIwL2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC9rZXJuZWwuaCIKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4yLjIv aW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8z LjIuMi9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVj X3ZhX2xpc3Q7CiMgMTEwICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4yLjIvaW5jbHVk ZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgMTEgIi91c3Iv c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCgoKCiMgMSAiL3Vzci9z cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCIgMQojIDE1ICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDEgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMQojIDEzICIvdXNyL3NyYy9saW51 eC0yLjQuMjAvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiCnN0YXRpYyBfX2lubGluZV9fIF9fY29u c3RfXyBfX3UzMiBfX19hcmNoX19zd2FiMzIoX191MzIgeCkKewoKICAgICAgICBfX2FzbV9fKCJi c3dhcCAlMCIgOiAiPXIiICh4KSA6ICIwIiAoeCkpOwoKCgoKCgoKICAgICAgICByZXR1cm4geDsK fQoKc3RhdGljIF9faW5saW5lX18gX19jb25zdF9fIF9fdTE2IF9fX2FyY2hfX3N3YWIxNihfX3Ux NiB4KQp7CiAgICAgICAgX19hc21fXygieGNoZ2IgJWIwLCVoMCIgOiAiPXEiICh4KSA6ICIwIiAo eCkpOyByZXR1cm4geDsKCgoKfQojIDQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h c20vYnl0ZW9yZGVyLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv Ynl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIgojIDEgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiIDEKIyAxNTkgIi91c3Iv c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiCnN0YXRpYyBf X2lubGluZV9fIF9fY29uc3RfXyBfX3UxNiBfX2Zzd2FiMTYoX191MTYgeCkKewogICAgICAgIHJl dHVybiBfX19hcmNoX19zd2FiMTYoeCk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MTYgX19zd2Fi MTZwKF9fdTE2ICp4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIxNigqKHgpKTsKfQpz dGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dhYjE2cyhfX3UxNiAqYWRkcikKewogICAgICAgIGRv IHsgKihhZGRyKSA9IF9fX2FyY2hfX3N3YWIxNigqKChhZGRyKSkpOyB9IHdoaWxlICgwKTsKfQoK c3RhdGljIF9faW5saW5lX18gX19jb25zdF9fIF9fdTMyIF9fZnN3YWIyNChfX3UzMiB4KQp7CiAg ICAgICAgcmV0dXJuICh7IF9fdTMyIF9fdG1wID0gKHgpIDsgKHsgX191MzIgX194ID0gKF9fdG1w KTsgKChfX3UzMikoICgoX194ICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMTYpIHwgKF9feCAm IChfX3UzMikweDAwMDBmZjAwVUwpIHwgKChfX3ggJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAx NikgKSk7IH0pOyB9KTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3UzMiBfX3N3YWIyNHAoX191MzIg KngpCnsKICAgICAgICByZXR1cm4gKHsgX191MzIgX190bXAgPSAoKih4KSkgOyAoeyBfX3UzMiBf X3ggPSAoX190bXApOyAoKF9fdTMyKSggKChfX3ggJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAx NikgfCAoX194ICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgfCAoKF9feCAmIChfX3UzMikweDAwZmYw MDAwVUwpID4+IDE2KSApKTsgfSk7IH0pOwp9CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19zd2Fi MjRzKF9fdTMyICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0gKHsgX191MzIgX190bXAg PSAoKigoYWRkcikpKSA7ICh7IF9fdTMyIF9feCA9IChfX3RtcCk7ICgoX191MzIpKCAoKF9feCAm IChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDE2KSB8IChfX3ggJiAoX191MzIpMHgwMDAwZmYwMFVM KSB8ICgoX194ICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gMTYpICkpOyB9KTsgfSk7IH0gd2hp bGUgKDApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2NvbnN0X18gX191MzIgX19mc3dhYjMyKF9f dTMyIHgpCnsKICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjMyKHgpOwp9CnN0YXRpYyBfX2lu bGluZV9fIF9fdTMyIF9fc3dhYjMycChfX3UzMiAqeCkKewogICAgICAgIHJldHVybiBfX19hcmNo X19zd2FiMzIoKih4KSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3N3YWIzMnMoX191MzIg KmFkZHIpCnsKICAgICAgICBkbyB7ICooYWRkcikgPSBfX19hcmNoX19zd2FiMzIoKigoYWRkcikp KTsgfSB3aGlsZSAoMCk7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBfX2NvbnN0X18gX191NjQgX19m c3dhYjY0KF9fdTY0IHgpCnsKCiAgICAgICAgX191MzIgaCA9IHggPj4gMzI7CiAgICAgICAgX191 MzIgbCA9IHggJiAoKDFVTEw8PDMyKS0xKTsKICAgICAgICByZXR1cm4gKCgoX191NjQpKF9fYnVp bHRpbl9jb25zdGFudF9wKChfX3UzMikobCkpID8gKHsgX191MzIgX194ID0gKChsKSk7ICgoX191 MzIpKCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9f dTMyKShfX3gpICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoX194KSAm IChfX3UzMikweDAwZmYwMDAwVUwpID4+IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHhm ZjAwMDAwMFVMKSA+PiAyNCkgKSk7IH0pIDogX19mc3dhYjMyKChsKSkpKSA8PCAzMikgfCAoKF9f dTY0KSgoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKShoKSkgPyAoeyBfX3UzMiBfX3ggPSAo KGgpKTsgKChfX3UzMikoICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwg MjQpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCA4KSB8ICgoKF9f dTMyKShfX3gpICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gOCkgfCAoKChfX3UzMikoX194KSAm IChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSApKTsgfSkgOiBfX2Zzd2FiMzIoKGgpKSkpKTsK CgoKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3U2NCBfX3N3YWI2NHAoX191NjQgKngpCnsKICAgICAg ICByZXR1cm4gKHsgX191NjQgX190bXAgPSAoKih4KSkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXAp OyAoKF9fdTY0KSggKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAw MDBmZlVMTCkgPDwgNTYpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAw MDAwMDAwZmYwMFVMTCkgPDwgNDApIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4 MDAwMDAwMDAwMGZmMDAwMFVMTCkgPDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9f dTY0KTB4MDAwMDAwMDBmZjAwMDAwMFVMTCkgPDwgOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkg JiAoX191NjQpMHgwMDAwMDBmZjAwMDAwMDAwVUxMKSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCko X194KSAmIChfX3U2NCkweDAwMDBmZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChf X3U2NCkoX194KSAmIChfX3U2NCkweDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2 NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSAp KTsgfSk7IH0pOwp9CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19zd2FiNjRzKF9fdTY0ICphZGRy KQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0gKHsgX191NjQgX190bXAgPSAoKigoYWRkcikpKSA7 ICh7IF9fdTY0IF9feCA9IChfX3RtcCk7ICgoX191NjQpKCAoX191NjQpKCgoX191NjQpKF9feCkg JiAoX191NjQpMHgwMDAwMDAwMDAwMDAwMGZmVUxMKSA8PCA1NikgfCAoX191NjQpKCgoX191NjQp KF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAwMDBmZjAwVUxMKSA8PCA0MCkgfCAoX191NjQpKCgo X191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAwZmYwMDAwVUxMKSA8PCAyNCkgfCAoX191 NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMGZmMDAwMDAwVUxMKSA8PCA4KSB8 IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMGZmMDAwMDAwMDBVTEwpID4+ IDgpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMGZmMDAwMDAwMDAwMFVM TCkgPj4gMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDBmZjAwMDAwMDAw MDAwMFVMTCkgPj4gNDApIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4ZmYwMDAw MDAwMDAwMDAwMFVMTCkgPj4gNTYpICkpOyB9KTsgfSk7IH0gd2hpbGUgKDApOwp9CiMgMTIgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFu LmgiIDIKIyA4MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVy L2xpdHRsZV9lbmRpYW4uaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIiAxCiMgMTUwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIgpleHRlcm4gX191MzIgbnRvaGwoX191MzIp OwpleHRlcm4gX191MzIgaHRvbmwoX191MzIpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGlu dCBudG9ocyh1bnNpZ25lZCBzaG9ydCBpbnQpOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50IGh0 b25zKHVuc2lnbmVkIHNob3J0IGludCk7CiMgODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs dWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDIKIyA0NiAiL3Vzci9zcmMvbGlu dXgtMi40LjIwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAyCiMgMTYgIi91c3Ivc3JjL2xpbnV4 LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgNDEgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpleHRlcm4gaW50IGNvbnNvbGVfcHJpbnRrW107 CiMgNTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpzdHJ1 Y3QgY29tcGxldGlvbjsKCmV4dGVybiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnBhbmljX25vdGlm aWVyX2xpc3Q7CiB2b2lkIHBhbmljKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAgICBfX2F0 dHJpYnV0ZV9fICgobm9yZXR1cm4sIGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogX19hdHRyaWJ1 dGVfXygocmVncGFybSgwKSkpIHZvaWQgZG9fZXhpdChsb25nIGVycm9yX2NvZGUpCiAgICAgICAg X19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKIHZvaWQgY29tcGxldGVfYW5kX2V4aXQoc3RydWN0 IGNvbXBsZXRpb24gKiwgbG9uZykKICAgICAgICBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwpl eHRlcm4gaW50IGFicyhpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBzaW1wbGVfc3RydG91bChj b25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpleHRlcm4gbG9uZyBzaW1wbGVfc3Ry dG9sKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiB1bnNpZ25lZCBs b25nIGxvbmcgc2ltcGxlX3N0cnRvdWxsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGlu dCk7CmV4dGVybiBsb25nIGxvbmcgc2ltcGxlX3N0cnRvbGwoY29uc3QgY2hhciAqLGNoYXIgKios dW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIg KiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDIsIDMp KSk7CmV4dGVybiBpbnQgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xpc3Qp OwpleHRlcm4gaW50IHNucHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFy ICogZm10LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0 KSkpOwpleHRlcm4gaW50IHZzbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBj aGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CgpleHRlcm4gaW50IHNzY2FuZihjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKiwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHNjYW5m LDIsMykpKTsKZXh0ZXJuIGludCB2c3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB2 YV9saXN0KTsKCmV4dGVybiBpbnQgZ2V0X29wdGlvbihjaGFyICoqc3RyLCBpbnQgKnBpbnQpOwpl eHRlcm4gY2hhciAqZ2V0X29wdGlvbnMoY2hhciAqc3RyLCBpbnQgbmludHMsIGludCAqaW50cyk7 CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgbWVtcGFyc2UoY2hhciAqcHRyLCBjaGFyICoqcmV0 cHRyKTsKZXh0ZXJuIHZvaWQgZGV2X3Byb2JlX2xvY2sodm9pZCk7CmV4dGVybiB2b2lkIGRldl9w cm9iZV91bmxvY2sodm9pZCk7CgpleHRlcm4gaW50IHNlc3Npb25fb2ZfcGdycChpbnQgcGdycCk7 CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBwcmludGsoY29uc3QgY2hhciAqIGZt dCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsK CnN0YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3NpbGVudCh2b2lkKQp7CiAgICAgICAgKGNvbnNv bGVfcHJpbnRrWzBdKSA9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3ZlcmJvc2Uo dm9pZCkKewogICAgICAgIGlmICgoY29uc29sZV9wcmludGtbMF0pKQogICAgICAgICAgICAgICAg KGNvbnNvbGVfcHJpbnRrWzBdKSA9IDE1Owp9CgpleHRlcm4gdm9pZCBidXN0X3NwaW5sb2Nrcyhp bnQgeWVzKTsKZXh0ZXJuIGludCBvb3BzX2luX3Byb2dyZXNzOwoKZXh0ZXJuIGludCB0YWludGVk OwpleHRlcm4gY29uc3QgY2hhciAqcHJpbnRfdGFpbnRlZCh2b2lkKTsKCmV4dGVybiB2b2lkIGR1 bXBfc3RhY2sodm9pZCk7CiMgMTc0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC9rZXJuZWwuaCIKZXh0ZXJuIHZvaWQgX19vdXRfb2ZfbGluZV9idWcoaW50IGxpbmUpIF9fYXR0 cmlidXRlX18oKG5vcmV0dXJuKSk7CgoKCgoKc3RydWN0IHN5c2luZm8gewogICAgICAgIGxvbmcg dXB0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9hZHNbM107CiAgICAgICAgdW5zaWduZWQg bG9uZyB0b3RhbHJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVyYW07CiAgICAgICAgdW5z aWduZWQgbG9uZyBzaGFyZWRyYW07CiAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJyYW07CiAg ICAgICAgdW5zaWduZWQgbG9uZyB0b3RhbHN3YXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVl c3dhcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwcm9jczsKICAgICAgICB1bnNpZ25lZCBzaG9y dCBwYWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0b3RhbGhpZ2g7CiAgICAgICAgdW5zaWduZWQg bG9uZyBmcmVlaGlnaDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWVtX3VuaXQ7CiAgICAgICAgY2hh ciBfZlsyMC0yKnNpemVvZihsb25nKS1zaXplb2YoaW50KV07Cn07CiMgMTQgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQu MjAvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p bmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9hc20vcHJvY2Vzc29yLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv YXNtL3ZtODYuaCIgMQojIDY4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdm04 Ni5oIgpzdHJ1Y3Qgdm04Nl9yZWdzIHsKCgoKICAgICAgICBsb25nIGVieDsKICAgICAgICBsb25n IGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAgICBsb25nIGVk aTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBsb25nIF9fbnVs bF9kczsKICAgICAgICBsb25nIF9fbnVsbF9lczsKICAgICAgICBsb25nIF9fbnVsbF9mczsKICAg ICAgICBsb25nIF9fbnVsbF9nczsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAgICAgIGxvbmcg ZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICBsb25nIGVmbGFn czsKICAgICAgICBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CgoK CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5z aWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwp9OwoKc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IHsKICAg ICAgICB1bnNpZ25lZCBsb25nIF9fbWFwWzhdOwp9OwoKc3RydWN0IHZtODZfc3RydWN0IHsKICAg ICAgICBzdHJ1Y3Qgdm04Nl9yZWdzIHJlZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK ICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9y ZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7Cn07 CgoKCgoKCnN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBmb3JjZV9yZXR1cm5fZm9yX3BpYzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdm04NmRiZ19h Y3RpdmU6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtODZkYmdfVEZwZW5kaWc6MTsKICAgICAg ICB1bnNpZ25lZCBsb25nIHVudXNlZDoyODsKICAgICAgICB1bnNpZ25lZCBsb25nIGlzX3ZtODZw dXM6MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZtODZkYmdfaW50eHh0YWJbMzJdOwp9OwoKc3Ry dWN0IHZtODZwbHVzX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZfcmVncyByZWdzOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0 bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJldmVj dG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0 cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVj dCB2bTg2cGx1czsKfTsKIyAxNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS92 bTg2LmgiCnN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzIHsKCgoKICAgICAgICBsb25nIGVieDsKICAg ICAgICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAg ICBsb25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBs b25nIF9fbnVsbF9kczsKICAgICAgICBsb25nIF9fbnVsbF9lczsKICAgICAgICBsb25nIG9yaWdf ZWF4OwogICAgICAgIGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsK ICAgICAgICBsb25nIGVmbGFnczsKICAgICAgICBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBz aG9ydCBzcywgX19zc2g7CgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAg ICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywg X19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwp9OwoKc3RydWN0IGtlcm5l bF92bTg2X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgcmVnczsKIyAx ODQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS92bTg2LmgiCiAgICAgICAgdW5z aWduZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9z dHJ1Y3QgaW50X3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGlu dDIxX3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHZtODZwbHVzX2luZm9fc3RydWN0IHZtODZw bHVzOwogICAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzMzI7CiMgMjAxICIvdXNyL3NyYy9saW51 eC0yLjQuMjAvaW5jbHVkZS9hc20vdm04Ni5oIgp9OwoKdm9pZCBoYW5kbGVfdm04Nl9mYXVsdChz dHJ1Y3Qga2VybmVsX3ZtODZfcmVncyAqLCBsb25nKTsKaW50IGhhbmRsZV92bTg2X3RyYXAoc3Ry dWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwgbG9uZywgaW50KTsKIyAxMSAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu MjAvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmgiCnN0cnVjdCBfZnByZWcgewogICAgICAgIHVuc2ln bmVkIHNob3J0IHNpZ25pZmljYW5kWzRdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGV4cG9uZW50 Owp9OwoKc3RydWN0IF9mcHhyZWcgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNpZ25pZmljYW5k WzRdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGV4cG9uZW50OwogICAgICAgIHVuc2lnbmVkIHNo b3J0IHBhZGRpbmdbM107Cn07CgpzdHJ1Y3QgX3htbXJlZyB7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBlbGVtZW50WzRdOwp9OwoKc3RydWN0IF9mcHN0YXRlIHsKCiAgICAgICAgdW5zaWduZWQgbG9u ZyBjdzsKICAgICAgICB1bnNpZ25lZCBsb25nIHN3OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdGFn OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXBvZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjc3Nl bDsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFvZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBk YXRhc2VsOwogICAgICAgIHN0cnVjdCBfZnByZWcgX3N0WzhdOwogICAgICAgIHVuc2lnbmVkIHNo b3J0IHN0YXR1czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtYWdpYzsKCgogICAgICAgIHVuc2ln bmVkIGxvbmcgX2Z4c3JfZW52WzZdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbXhjc3I7CiAgICAg ICAgdW5zaWduZWQgbG9uZyByZXNlcnZlZDsKICAgICAgICBzdHJ1Y3QgX2ZweHJlZyBfZnhzcl9z dFs4XTsKICAgICAgICBzdHJ1Y3QgX3htbXJlZyBfeG1tWzhdOwogICAgICAgIHVuc2lnbmVkIGxv bmcgcGFkZGluZ1s1Nl07Cn07CgoKCnN0cnVjdCBzaWdjb250ZXh0IHsKICAgICAgICB1bnNpZ25l ZCBzaG9ydCBncywgX19nc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAg ICAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywg X19kc2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZGk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBl c2k7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYnA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYng7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZHg7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBlY3g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYXg7CiAgICAg ICAgdW5zaWduZWQgbG9uZyB0cmFwbm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBlcnI7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgZWZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwX2F0 X3NpZ25hbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CiAgICAgICAgc3RydWN0 IF9mcHN0YXRlICogZnBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG1hc2s7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBjcjI7Cn07CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1 ZGUvYXNtL21hdGhfZW11LmgiIDIKCmludCByZXN0b3JlX2kzODdfc29mdCh2b2lkICpzMzg3LCBz dHJ1Y3QgX2Zwc3RhdGUgKmJ1Zik7CmludCBzYXZlX2kzODdfc29mdCh2b2lkICpzMzg3LCBzdHJ1 Y3QgX2Zwc3RhdGUgKiBidWYpOwoKCgoKCnN0cnVjdCBpbmZvIHsKICAgICAgICBsb25nIF9fX29y aWdfZWlwOwogICAgICAgIGxvbmcgX19fZWJ4OwogICAgICAgIGxvbmcgX19fZWN4OwogICAgICAg IGxvbmcgX19fZWR4OwogICAgICAgIGxvbmcgX19fZXNpOwogICAgICAgIGxvbmcgX19fZWRpOwog ICAgICAgIGxvbmcgX19fZWJwOwogICAgICAgIGxvbmcgX19fZWF4OwogICAgICAgIGxvbmcgX19f ZHM7CiAgICAgICAgbG9uZyBfX19lczsKICAgICAgICBsb25nIF9fX29yaWdfZWF4OwogICAgICAg IGxvbmcgX19fZWlwOwogICAgICAgIGxvbmcgX19fY3M7CiAgICAgICAgbG9uZyBfX19lZmxhZ3M7 CiAgICAgICAgbG9uZyBfX19lc3A7CiAgICAgICAgbG9uZyBfX19zczsKICAgICAgICBsb25nIF9f X3ZtODZfZXM7CiAgICAgICAgbG9uZyBfX192bTg2X2RzOwogICAgICAgIGxvbmcgX19fdm04Nl9m czsKICAgICAgICBsb25nIF9fX3ZtODZfZ3M7Cn07CiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p bmNsdWRlL2FzbS9zZWdtZW50LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1 ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv YXNtL3BhZ2UuaCIgMQojIDQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcGFn ZS5oIgp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcHRlX2xvdzsgfSBwdGVfdDsKdHlw ZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHBtZDsgfSBwbWRfdDsKdHlwZWRlZiBzdHJ1Y3Qg eyB1bnNpZ25lZCBsb25nIHBnZDsgfSBwZ2RfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsgdW5zaWdu ZWQgbG9uZyBwZ3Byb3Q7IH0gcGdwcm90X3Q7CiMgMTEzICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9hc20vcGFnZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZ2V0X29yZGVyKHVuc2ln bmVkIGxvbmcgc2l6ZSkKewogICAgICAgIGludCBvcmRlcjsKCiAgICAgICAgc2l6ZSA9IChzaXpl LTEpID4+ICgxMiAtMSk7CiAgICAgICAgb3JkZXIgPSAtMTsKICAgICAgICBkbyB7CiAgICAgICAg ICAgICAgICBzaXplID4+PSAxOwogICAgICAgICAgICAgICAgb3JkZXIrKzsKICAgICAgICB9IHdo aWxlIChzaXplKTsKICAgICAgICByZXR1cm4gb3JkZXI7Cn0KIyAxNCAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0y LjQuMjAvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw L2luY2x1ZGUvYXNtL2NhY2hlLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC9jYWNoZS5oIiAyCiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2Fz bS9wcm9jZXNzb3IuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC90aHJlYWRzLmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3By b2Nlc3Nvci5oIiAyCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9j ZXNzb3IuaCIKc3RydWN0IGNwdWluZm9feDg2IHsKICAgICAgICBfX3U4IHg4NjsKICAgICAgICBf X3U4IHg4Nl92ZW5kb3I7CiAgICAgICAgX191OCB4ODZfbW9kZWw7CiAgICAgICAgX191OCB4ODZf bWFzazsKICAgICAgICBjaGFyIHdwX3dvcmtzX29rOwogICAgICAgIGNoYXIgaGx0X3dvcmtzX29r OwogICAgICAgIGNoYXIgaGFyZF9tYXRoOwogICAgICAgIGNoYXIgcmZ1OwogICAgICAgIGludCBj cHVpZF9sZXZlbDsKICAgICAgICBfX3UzMiB4ODZfY2FwYWJpbGl0eVs0XTsKICAgICAgICBjaGFy IHg4Nl92ZW5kb3JfaWRbMTZdOwogICAgICAgIGNoYXIgeDg2X21vZGVsX2lkWzY0XTsKICAgICAg ICBpbnQgeDg2X2NhY2hlX3NpemU7CgogICAgICAgIGludCBmZGl2X2J1ZzsKICAgICAgICBpbnQg ZjAwZl9idWc7CiAgICAgICAgaW50IGNvbWFfYnVnOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9v cHNfcGVyX2ppZmZ5OwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnBnZF9xdWljazsKICAgICAgICB1 bnNpZ25lZCBsb25nICpwbWRfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcHRlX3F1aWNr OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGd0YWJsZV9jYWNoZV9zejsKfSBfX2F0dHJpYnV0ZV9f KChfX2FsaWduZWRfXygoMSA8PCAoKDUpKSkpKSk7CiMgNzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIHN0cnVjdCBjcHVpbmZvX3g4NiBib290 X2NwdV9kYXRhOwpleHRlcm4gc3RydWN0IHRzc19zdHJ1Y3QgaW5pdF90c3NbMV07CiMgOTUgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIGNoYXIg aWdub3JlX2lycTEzOwoKZXh0ZXJuIHZvaWQgaWRlbnRpZnlfY3B1KHN0cnVjdCBjcHVpbmZvX3g4 NiAqKTsKZXh0ZXJuIHZvaWQgcHJpbnRfY3B1X2luZm8oc3RydWN0IGNwdWluZm9feDg2ICopOwpl eHRlcm4gdm9pZCBkb2RneV90c2Modm9pZCk7CiMgMTI1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBjcHVpZChpbnQgb3As IGludCAqZWF4LCBpbnQgKmVieCwgaW50ICplY3gsIGludCAqZWR4KQp7CiAgICAgICAgX19hc21f XygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKCplYXgpLAogICAgICAgICAgICAgICAg ICAiPWIiICgqZWJ4KSwKICAgICAgICAgICAgICAgICAgIj1jIiAoKmVjeCksCiAgICAgICAgICAg ICAgICAgICI9ZCIgKCplZHgpCiAgICAgICAgICAgICAgICA6ICIwIiAob3ApKTsKfQoKCgoKc3Rh dGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWF4KHVuc2lnbmVkIGludCBvcCkKewogICAg ICAgIHVuc2lnbmVkIGludCBlYXg7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgogICAgICAgICAg ICAgICAgOiAiPWEiIChlYXgpCiAgICAgICAgICAgICAgICA6ICIwIiAob3ApCiAgICAgICAgICAg ICAgICA6ICJieCIsICJjeCIsICJkeCIpOwogICAgICAgIHJldHVybiBlYXg7Cn0Kc3RhdGljIGlu bGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWJ4KHVuc2lnbmVkIGludCBvcCkKewogICAgICAgIHVu c2lnbmVkIGludCBlYXgsIGVieDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAg ICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkK ICAgICAgICAgICAgICAgIDogImN4IiwgImR4IiApOwogICAgICAgIHJldHVybiBlYng7Cn0Kc3Rh dGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWN4KHVuc2lnbmVkIGludCBvcCkKewogICAg ICAgIHVuc2lnbmVkIGludCBlYXgsIGVjeDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAg ICAgICAgICAgICA6ICI9YSIgKGVheCksICI9YyIgKGVjeCkKICAgICAgICAgICAgICAgIDogIjAi IChvcCkKICAgICAgICAgICAgICAgIDogImJ4IiwgImR4IiApOwogICAgICAgIHJldHVybiBlY3g7 Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWR4KHVuc2lnbmVkIGludCBvcCkK ewogICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVkeDsKCiAgICAgICAgX19hc21fXygiY3B1aWQi CiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCksICI9ZCIgKGVkeCkKICAgICAgICAgICAgICAg IDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDogImJ4IiwgImN4Iik7CiAgICAgICAgcmV0dXJu IGVkeDsKfQojIDIwMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBtbXVfY3I0X2ZlYXR1cmVzOwoKc3RhdGljIGlubGlu ZSB2b2lkIHNldF9pbl9jcjQgKHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIG1tdV9jcjRf ZmVhdHVyZXMgfD0gbWFzazsKICAgICAgICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUlZWF4XG5cdCIK ICAgICAgICAgICAgICAgICJvcmwgJTAsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm1vdmwg JSVlYXgsJSVjcjRcbiIKICAgICAgICAgICAgICAgIDogOiAiaXJnIiAobWFzaykKICAgICAgICAg ICAgICAgIDoiYXgiKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2luX2NyNCAodW5zaWdu ZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgbW11X2NyNF9mZWF0dXJlcyAmPSB+bWFzazsKICAgICAg ICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJhbmRsICUw LCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsICUlZWF4LCUlY3I0XG4iCiAgICAgICAg ICAgICAgICA6IDogImlyZyIgKH5tYXNrKQogICAgICAgICAgICAgICAgOiJheCIpOwp9CiMgMjYw ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiBp bnQgTUNBX2J1czsKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBtYWNoaW5lX2lkOwpleHRlcm4gdW5z aWduZWQgaW50IG1hY2hpbmVfc3VibW9kZWxfaWQ7CmV4dGVybiB1bnNpZ25lZCBpbnQgQklPU19y ZXZpc2lvbjsKZXh0ZXJuIHVuc2lnbmVkIGludCBtY2FfcGVudGl1bV9mbGFnOwojIDI4NiAiL3Vz ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgaTM4N19m c2F2ZV9zdHJ1Y3QgewogICAgICAgIGxvbmcgY3dkOwogICAgICAgIGxvbmcgc3dkOwogICAgICAg IGxvbmcgdHdkOwogICAgICAgIGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxv bmcgZm9vOwogICAgICAgIGxvbmcgZm9zOwogICAgICAgIGxvbmcgc3Rfc3BhY2VbMjBdOwogICAg ICAgIGxvbmcgc3RhdHVzOwp9OwoKc3RydWN0IGkzODdfZnhzYXZlX3N0cnVjdCB7CiAgICAgICAg dW5zaWduZWQgc2hvcnQgY3dkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3ZDsKICAgICAgICB1 bnNpZ25lZCBzaG9ydCB0d2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZm9wOwogICAgICAgIGxv bmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxvbmcgZm9vOwogICAgICAgIGxvbmcg Zm9zOwogICAgICAgIGxvbmcgbXhjc3I7CiAgICAgICAgbG9uZyByZXNlcnZlZDsKICAgICAgICBs b25nIHN0X3NwYWNlWzMyXTsKICAgICAgICBsb25nIHhtbV9zcGFjZVszMl07CiAgICAgICAgbG9u ZyBwYWRkaW5nWzU2XTsKfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoMTYpKSk7CgpzdHJ1Y3Qg aTM4N19zb2Z0X3N0cnVjdCB7CiAgICAgICAgbG9uZyBjd2Q7CiAgICAgICAgbG9uZyBzd2Q7CiAg ICAgICAgbG9uZyB0d2Q7CiAgICAgICAgbG9uZyBmaXA7CiAgICAgICAgbG9uZyBmY3M7CiAgICAg ICAgbG9uZyBmb287CiAgICAgICAgbG9uZyBmb3M7CiAgICAgICAgbG9uZyBzdF9zcGFjZVsyMF07 CiAgICAgICAgdW5zaWduZWQgY2hhciBmdG9wLCBjaGFuZ2VkLCBsb29rYWhlYWQsIG5vX3VwZGF0 ZSwgcm0sIGFsaW1pdDsKICAgICAgICBzdHJ1Y3QgaW5mbyAqaW5mbzsKICAgICAgICB1bnNpZ25l ZCBsb25nIGVudHJ5X2VpcDsKfTsKCnVuaW9uIGkzODdfdW5pb24gewogICAgICAgIHN0cnVjdCBp Mzg3X2ZzYXZlX3N0cnVjdCBmc2F2ZTsKICAgICAgICBzdHJ1Y3QgaTM4N19meHNhdmVfc3RydWN0 IGZ4c2F2ZTsKICAgICAgICBzdHJ1Y3QgaTM4N19zb2Z0X3N0cnVjdCBzb2Z0Owp9OwoKdHlwZWRl ZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VnOwp9IG1tX3NlZ21lbnRfdDsKCnN0 cnVjdCB0c3Nfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBiYWNrX2xpbmssX19ibGg7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNzMCxf X3NzMGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AxOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IHNzMSxfX3NzMWg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AyOwogICAgICAgIHVuc2lnbmVk IHNob3J0IHNzMixfX3NzMmg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX2NyMzsKICAgICAgICB1 bnNpZ25lZCBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVmbGFnczsKICAgICAgICB1 bnNpZ25lZCBsb25nIGVheCxlY3gsZWR4LGVieDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsK ICAgICAgICB1bnNpZ25lZCBsb25nIGVicDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzaTsKICAg ICAgICB1bnNpZ25lZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IHNzLCBfX3NzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5z aWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsK ICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZHQsIF9fbGR0aDsKICAgICAgICB1bnNpZ25lZCBzaG9y dCB0cmFjZSwgYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9fYml0bWFwWzMyICsxXTsK CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9fY2FjaGVsaW5lX2ZpbGxlcls1XTsKfTsKCnN0cnVj dCB0aHJlYWRfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDA7CiAgICAgICAgdW5z aWduZWQgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBmczsKICAgICAgICB1bnNpZ25lZCBsb25nIGdzOwoKICAgICAgICB1bnNpZ25lZCBs b25nIGRlYnVncmVnWzhdOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGNyMiwgdHJhcF9ubywgZXJy b3JfY29kZTsKCiAgICAgICAgdW5pb24gaTM4N191bmlvbiBpMzg3OwoKICAgICAgICBzdHJ1Y3Qg dm04Nl9zdHJ1Y3QgKiB2bTg2X2luZm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0 bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdjg2ZmxhZ3MsIHY4Nm1hc2ssIHNhdmVkX2VzcDA7 CgogICAgICAgIGludCBpb3Blcm07CiAgICAgICAgdW5zaWduZWQgbG9uZyBpb19iaXRtYXBbMzIg KzFdOwp9OwojIDQyOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci5oIgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7CgoKZXh0ZXJuIHZvaWQg cmVsZWFzZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKCgpleHRlcm4gaW50IGtlcm5l bF90aHJlYWQoaW50ICgqZm4pKHZvaWQgKiksIHZvaWQgKiBhcmcsIHVuc2lnbmVkIGxvbmcgZmxh Z3MpOwoKCmV4dGVybiB2b2lkIGNvcHlfc2VnbWVudHMoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBz dHJ1Y3QgbW1fc3RydWN0ICogbW0pOwpleHRlcm4gdm9pZCByZWxlYXNlX3NlZ21lbnRzKHN0cnVj dCBtbV9zdHJ1Y3QgKiBtbSk7CgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGhyZWFk X3NhdmVkX3BjKHN0cnVjdCB0aHJlYWRfc3RydWN0ICp0KQp7CiAgICAgICAgcmV0dXJuICgodW5z aWduZWQgbG9uZyAqKXQtPmVzcClbM107Cn0KCnVuc2lnbmVkIGxvbmcgZ2V0X3djaGFuKHN0cnVj dCB0YXNrX3N0cnVjdCAqcCk7CiMgNDYyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h c20vcHJvY2Vzc29yLmgiCnN0cnVjdCBtaWNyb2NvZGUgewogICAgICAgIHVuc2lnbmVkIGludCBo ZHJ2ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IHJldjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGF0 ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2lnOwogICAgICAgIHVuc2lnbmVkIGludCBja3N1bTsK ICAgICAgICB1bnNpZ25lZCBpbnQgbGRydmVyOwogICAgICAgIHVuc2lnbmVkIGludCBwZjsKICAg ICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWRbNV07CiAgICAgICAgdW5zaWduZWQgaW50IGJpdHNb NTAwXTsKfTsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcmVwX25vcCh2b2lkKQp7CiAgICAgICAg X19hc21fXyBfX3ZvbGF0aWxlX18oInJlcDtub3AiKTsKfQoKCgoKCgoKZXh0ZXJuIGlubGluZSB2 b2lkIHByZWZldGNoKGNvbnN0IHZvaWQgKngpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoInByZWZldGNobnRhICglMCkiIDogOiAiciIoeCkpOwp9CiMgMTQgIi91c3Ivc3JjL2xpbnV4 LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDIKIyA0OCAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIKc3RhdGljIGlubGluZSB2b2lkIHByZWZl dGNodyhjb25zdCB2b2lkICp4KSB7O30KIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC9saXN0LmgiIDIKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu dXgvbGlzdC5oIgpzdHJ1Y3QgbGlzdF9oZWFkIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpu ZXh0LCAqcHJldjsKfTsKIyAzNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv bGlzdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgX19saXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICpu ZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnByZXYs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5leHQpCnsK ICAgICAgICBuZXh0LT5wcmV2ID0gbmV3OwogICAgICAgIG5ldy0+bmV4dCA9IG5leHQ7CiAgICAg ICAgbmV3LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3Owp9CiMgNTUgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSB2 b2lkIGxpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVh ZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLCBoZWFkLT5uZXh0KTsKfQojIDY4ICIv dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUg dm9pZCBsaXN0X2FkZF90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVh ZCAqaGVhZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2LCBoZWFkKTsKfQoj IDgwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBp bmxpbmUgdm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKnByZXYsIHN0cnVjdCBsaXN0 X2hlYWQgKm5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5u ZXh0ID0gbmV4dDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9kZWwoc3RydWN0IGxp c3RfaGVhZCAqZW50cnkpCnsKICAgICAgICBfX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBlbnRyeS0+ bmV4dCk7CiAgICAgICAgZW50cnktPm5leHQgPSAodm9pZCAqKSAwOwogICAgICAgIGVudHJ5LT5w cmV2ID0gKHZvaWQgKikgMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X2RlbF9pbml0 KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRyeS0+cHJl diwgZW50cnktPm5leHQpOwogICAgICAgIGRvIHsgKGVudHJ5KS0+bmV4dCA9IChlbnRyeSk7IChl bnRyeSktPnByZXYgPSAoZW50cnkpOyB9IHdoaWxlICgwKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5l IHZvaWQgbGlzdF9tb3ZlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQg KmhlYWQpCnsKICAgICAgICBfX2xpc3RfZGVsKGxpc3QtPnByZXYsIGxpc3QtPm5leHQpOwogICAg ICAgIGxpc3RfYWRkKGxpc3QsIGhlYWQpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0 X21vdmVfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAgIF9fbGlzdF9kZWwo bGlzdC0+cHJldiwgbGlzdC0+bmV4dCk7CiAgICAgICAgbGlzdF9hZGRfdGFpbChsaXN0LCBoZWFk KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGxpc3RfZW1wdHkoc3RydWN0IGxpc3RfaGVhZCAq aGVhZCkKewogICAgICAgIHJldHVybiBoZWFkLT5uZXh0ID09IGhlYWQ7Cn0KCnN0YXRpYyBpbmxp bmUgdm9pZCBfX2xpc3Rfc3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAgICBz dHJ1Y3QgbGlzdF9oZWFkICpmaXJzdCA9IGxpc3QtPm5leHQ7CiAgICAgICAgc3RydWN0IGxpc3Rf aGVhZCAqbGFzdCA9IGxpc3QtPnByZXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqYXQgPSBo ZWFkLT5uZXh0OwoKICAgICAgICBmaXJzdC0+cHJldiA9IGhlYWQ7CiAgICAgICAgaGVhZC0+bmV4 dCA9IGZpcnN0OwoKICAgICAgICBsYXN0LT5uZXh0ID0gYXQ7CiAgICAgICAgYXQtPnByZXYgPSBs YXN0Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X3NwbGljZShzdHJ1Y3QgbGlzdF9o ZWFkICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgaWYgKCFsaXN0X2Vt cHR5KGxpc3QpKQogICAgICAgICAgICAgICAgX19saXN0X3NwbGljZShsaXN0LCBoZWFkKTsKfQoj IDE3MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMg aW5saW5lIHZvaWQgbGlzdF9zcGxpY2VfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7 CiAgICAgICAgaWYgKCFsaXN0X2VtcHR5KGxpc3QpKSB7CiAgICAgICAgICAgICAgICBfX2xpc3Rf c3BsaWNlKGxpc3QsIGhlYWQpOwogICAgICAgICAgICAgICAgZG8geyAobGlzdCktPm5leHQgPSAo bGlzdCk7IChsaXN0KS0+cHJldiA9IChsaXN0KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgfQp9CiMg MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgoKIyAxICIv dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgNDAgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCiMgMSAiL3Vzci9z cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RyaW5naWZ5LmgiIDEKIyA0MSAiL3Vzci9z cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMgojIDc1ICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgogIHR5cGVkZWYgc3RydWN0 IHsgfSBzcGlubG9ja190OwojIDEzOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu dXgvc3BpbmxvY2suaCIKICB0eXBlZGVmIHN0cnVjdCB7IH0gcndsb2NrX3Q7CiMgMTcwICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgp0eXBlZGVmIHN0cnVj dCB7CiAgICBzcGlubG9ja190IGxvY2s7Cn0gc3BpbmxvY2tfY2FjaGVsaW5lX3Q7CiMgMTcgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDMxICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC93YWl0LmgiCnN0cnVjdCBfX3dhaXRfcXVldWUg ewogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0 ICogdGFzazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tfbGlzdDsKCgoKCn07CnR5cGVk ZWYgc3RydWN0IF9fd2FpdF9xdWV1ZSB3YWl0X3F1ZXVlX3Q7CiMgNzcgIi91c3Ivc3JjL2xpbnV4 LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKc3RydWN0IF9fd2FpdF9xdWV1ZV9oZWFkIHsK ICAgICAgICBzcGlubG9ja190IGxvY2s7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0YXNrX2xp c3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3dhaXRfcXVldWVfaGVhZCB3YWl0X3F1ZXVlX2hl YWRfdDsKIyAxNTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIK c3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1ZXVlX2hlYWQod2FpdF9xdWV1ZV9oZWFkX3Qg KnEpCnsKCgoKCiAgICAgICAgcS0+bG9jayA9IChzcGlubG9ja190KSB7IH07CiAgICAgICAgZG8g eyAoJnEtPnRhc2tfbGlzdCktPm5leHQgPSAoJnEtPnRhc2tfbGlzdCk7ICgmcS0+dGFza19saXN0 KS0+cHJldiA9ICgmcS0+dGFza19saXN0KTsgfSB3aGlsZSAoMCk7CgoKCgp9CgpzdGF0aWMgaW5s aW5lIHZvaWQgaW5pdF93YWl0cXVldWVfZW50cnkod2FpdF9xdWV1ZV90ICpxLCBzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnApCnsKCgoKCiAgICAgICAgcS0+ZmxhZ3MgPSAwOwogICAgICAgIHEtPnRhc2sg PSBwOwoKCgp9CgpzdGF0aWMgaW5saW5lIGludCB3YWl0cXVldWVfYWN0aXZlKHdhaXRfcXVldWVf aGVhZF90ICpxKQp7CgoKCgoKCiAgICAgICAgcmV0dXJuICFsaXN0X2VtcHR5KCZxLT50YXNrX2xp c3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19hZGRfd2FpdF9xdWV1ZSh3YWl0X3F1ZXVlX2hl YWRfdCAqaGVhZCwgd2FpdF9xdWV1ZV90ICpuZXcpCnsKIyAyMDMgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKICAgICAgICBsaXN0X2FkZCgmbmV3LT50YXNrX2xp c3QsICZoZWFkLT50YXNrX2xpc3QpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19hZGRfd2Fp dF9xdWV1ZV90YWlsKHdhaXRfcXVldWVfaGVhZF90ICpoZWFkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3F1ZXVlX3QgKm5ldykKewojIDIyMCAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvd2FpdC5oIgogICAgICAgIGxpc3Rf YWRkX3RhaWwoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoKc3RhdGljIGlu bGluZSB2b2lkIF9fcmVtb3ZlX3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKmhlYWQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fp dF9xdWV1ZV90ICpvbGQpCnsKCgoKCgogICAgICAgIGxpc3RfZGVsKCZvbGQtPnRhc2tfbGlzdCk7 Cn0KIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKIyAx ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC92ZnMuaCIgMQoKCgojIDEgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zdGF0ZnMuaCIgMQoKCgoKCgoKdHlwZWRl ZiBfX2tlcm5lbF9mc2lkX3QgZnNpZF90OwoKCgpzdHJ1Y3Qgc3RhdGZzIHsKICAgICAgICBsb25n IGZfdHlwZTsKICAgICAgICBsb25nIGZfYnNpemU7CiAgICAgICAgbG9uZyBmX2Jsb2NrczsKICAg ICAgICBsb25nIGZfYmZyZWU7CiAgICAgICAgbG9uZyBmX2JhdmFpbDsKICAgICAgICBsb25nIGZf ZmlsZXM7CiAgICAgICAgbG9uZyBmX2ZmcmVlOwogICAgICAgIF9fa2VybmVsX2ZzaWRfdCBmX2Zz aWQ7CiAgICAgICAgbG9uZyBmX25hbWVsZW47CiAgICAgICAgbG9uZyBmX3NwYXJlWzZdOwp9Owoj IDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Zmcy5oIiAyCiMgMTUgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZXQuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0y LjQuMjAvaW5jbHVkZS9saW51eC9uZXQuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9saW51eC9zb2NrZXQuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu Y2x1ZGUvYXNtL3NvY2tldC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1 ZGUvYXNtL3NvY2tpb3MuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2Fz bS9zb2NrZXQuaCIgMgojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Nv Y2tldC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc29ja2lv cy5oIiAxCiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc29ja2V0Lmgi IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91aW8uaCIgMQojIDE5 ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91aW8uaCIKc3RydWN0IGlvdmVj CnsKICAgICAgICB2b2lkICppb3ZfYmFzZTsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgaW92X2xl bjsKfTsKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIg MgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgc2FfZmFtaWx5X3Q7CgoKCgoKc3RydWN0IHNvY2th ZGRyIHsKICAgICAgICBzYV9mYW1pbHlfdCBzYV9mYW1pbHk7CiAgICAgICAgY2hhciBzYV9kYXRh WzE0XTsKfTsKCnN0cnVjdCBsaW5nZXIgewogICAgICAgIGludCBsX29ub2ZmOwogICAgICAgIGlu dCBsX2xpbmdlcjsKfTsKCgoKCgoKCnN0cnVjdCBtc2doZHIgewogICAgICAgIHZvaWQgKiBtc2df bmFtZTsKICAgICAgICBpbnQgbXNnX25hbWVsZW47CiAgICAgICAgc3RydWN0IGlvdmVjICogbXNn X2lvdjsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgbXNnX2lvdmxlbjsKICAgICAgICB2b2lkICog bXNnX2NvbnRyb2w7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90IG1zZ19jb250cm9sbGVuOwogICAg ICAgIHVuc2lnbmVkIG1zZ19mbGFnczsKfTsKCgoKCgoKCnN0cnVjdCBjbXNnaGRyIHsKICAgICAg ICBfX2tlcm5lbF9zaXplX3QgY21zZ19sZW47CiAgICAgICAgaW50IGNtc2dfbGV2ZWw7CiAgICAg ICAgaW50IGNtc2dfdHlwZTsKfTsKIyAxMDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl L2xpbnV4L3NvY2tldC5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogX19jbXNnX254 dGhkcih2b2lkICpfX2N0bCwgX19rZXJuZWxfc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7 CiAgICAgICAgc3RydWN0IGNtc2doZHIgKiBfX3B0cjsKCiAgICAgICAgX19wdHIgPSAoc3RydWN0 IGNtc2doZHIqKSgoKHVuc2lnbmVkIGNoYXIgKikgX19jbXNnKSArICggKChfX2Ntc2ctPmNtc2df bGVuKStzaXplb2YobG9uZyktMSkgJiB+KHNpemVvZihsb25nKS0xKSApKTsKICAgICAgICBpZiAo KHVuc2lnbmVkIGxvbmcpKChjaGFyKikoX19wdHIrMSkgLSAoY2hhciAqKSBfX2N0bCkgPiBfX3Np emUpCiAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnVjdCBjbXNnaGRyICopMDsKCiAgICAgICAg cmV0dXJuIF9fcHRyOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogY21zZ19ueHRo ZHIgKHN0cnVjdCBtc2doZHIgKl9fbXNnLCBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAg ICAgcmV0dXJuIF9fY21zZ19ueHRoZHIoX19tc2ctPm1zZ19jb250cm9sLCBfX21zZy0+bXNnX2Nv bnRyb2xsZW4sIF9fY21zZyk7Cn0KCgoKCgoKCnN0cnVjdCB1Y3JlZCB7CiAgICAgICAgX191MzIg cGlkOwogICAgICAgIF9fdTMyIHVpZDsKICAgICAgICBfX3UzMiBnaWQ7Cn07CiMgMjQ5ICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIKZXh0ZXJuIGludCBtZW1j cHlfZnJvbWlvdmVjKHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50 IGxlbik7CmV4dGVybiBpbnQgbWVtY3B5X2Zyb21pb3ZlY2VuZCh1bnNpZ25lZCBjaGFyICprZGF0 YSwgc3RydWN0IGlvdmVjICppb3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IG9mZnNldCwgaW50IGxlbik7CmV4dGVybiBpbnQgY3N1bV9wYXJ0aWFsX2NvcHlfZnJvbWlvdmVj ZW5kKHVuc2lnbmVkIGNoYXIgKmtkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbiwgaW50ICpjc3VtcCk7CgpleHRlcm4gaW50IHZl cmlmeV9pb3ZlYyhzdHJ1Y3QgbXNnaGRyICptLCBzdHJ1Y3QgaW92ZWMgKmlvdiwgY2hhciAqYWRk cmVzcywgaW50IG1vZGUpOwpleHRlcm4gaW50IG1lbWNweV90b2lvdmVjKHN0cnVjdCBpb3ZlYyAq diwgdW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBsZW4pOwpleHRlcm4gdm9pZCBtZW1jcHlfdG9r ZXJuZWxpb3ZlYyhzdHJ1Y3QgaW92ZWMgKmlvdiwgdW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBs ZW4pOwpleHRlcm4gaW50IG1vdmVfYWRkcl90b191c2VyKHZvaWQgKmthZGRyLCBpbnQga2xlbiwg dm9pZCAqdWFkZHIsIGludCAqdWxlbik7CmV4dGVybiBpbnQgbW92ZV9hZGRyX3RvX2tlcm5lbCh2 b2lkICp1YWRkciwgaW50IHVsZW4sIHZvaWQgKmthZGRyKTsKZXh0ZXJuIGludCBwdXRfY21zZyhz dHJ1Y3QgbXNnaGRyKiwgaW50IGxldmVsLCBpbnQgdHlwZSwgaW50IGxlbiwgdm9pZCAqZGF0YSk7 CiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25ldC5oIiAyCgoKc3Ry dWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDQ5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC9uZXQuaCIKdHlwZWRlZiBlbnVtIHsKICBTU19GUkVFID0gMCwKICBTU19VTkNPTk5F Q1RFRCwKICBTU19DT05ORUNUSU5HLAogIFNTX0NPTk5FQ1RFRCwKICBTU19ESVNDT05ORUNUSU5H Cn0gc29ja2V0X3N0YXRlOwojIDY1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC9uZXQuaCIKc3RydWN0IHNvY2tldAp7CiAgICAgICAgc29ja2V0X3N0YXRlIHN0YXRlOwoKICAg ICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHN0cnVjdCBwcm90b19vcHMgKm9wczsK ICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0 ICpmYXN5bmNfbGlzdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZTsKICAgICAgICBzdHJ1Y3Qg c29jayAqc2s7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCiAgICAgICAgc2hvcnQg dHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhc3NjcmVkOwp9OwoKCgpzdHJ1Y3Qgc2NtX2Nv b2tpZTsKc3RydWN0IHZtX2FyZWFfc3RydWN0OwpzdHJ1Y3QgcGFnZTsKCnN0cnVjdCBwcm90b19v cHMgewogIGludCBmYW1pbHk7CgogIGludCAoKnJlbGVhc2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2Nr KTsKICBpbnQgKCpiaW5kKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1 bXlhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbik7CiAgaW50 ICgqY29ubmVjdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdXNlcnZh ZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbiwgaW50IGZsYWdz KTsKICBpbnQgKCpzb2NrZXRwYWlyKSAoc3RydWN0IHNvY2tldCAqc29jazEsIHN0cnVjdCBzb2Nr ZXQgKnNvY2syKTsKICBpbnQgKCphY2NlcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg c29ja2V0ICpuZXdzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKICBp bnQgKCpnZXRuYW1lKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRk ciwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdXNvY2thZGRyX2xlbiwgaW50IHBlZXIp OwogIHVuc2lnbmVkIGludCAoKnBvbGwpIChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tl dCAqc29jaywgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICp3YWl0KTsKICBpbnQgKCppb2N0bCkg KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsCiAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGFyZyk7CiAgaW50ICgqbGlzdGVuKSAoc3RydWN0IHNvY2tl dCAqc29jaywgaW50IGxlbik7CiAgaW50ICgqc2h1dGRvd24pIChzdHJ1Y3Qgc29ja2V0ICpzb2Nr LCBpbnQgZmxhZ3MpOwogIGludCAoKnNldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBp bnQgbGV2ZWwsIGludCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0 dmFsLCBpbnQgb3B0bGVuKTsKICBpbnQgKCpnZXRzb2Nrb3B0KSAoc3RydWN0IHNvY2tldCAqc29j aywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg Km9wdHZhbCwgaW50ICpvcHRsZW4pOwogIGludCAoKnNlbmRtc2cpIChzdHJ1Y3Qgc29ja2V0ICpz b2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxfbGVuLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAq c2NtKTsKICBpbnQgKCpyZWN2bXNnKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hk ciAqbSwgaW50IHRvdGFsX2xlbiwgaW50IGZsYWdzLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsK ICBpbnQgKCptbWFwKSAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSk7CiAgc3NpemVfdCAoKnNlbmRwYWdlKSAoc3RydWN0 IHNvY2tldCAqc29jaywgc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBvZmZzZXQsIHNpemVfdCBzaXpl LCBpbnQgZmxhZ3MpOwp9OwoKc3RydWN0IG5ldF9wcm90b19mYW1pbHkKewogICAgICAgIGludCBm YW1pbHk7CiAgICAgICAgaW50ICgqY3JlYXRlKShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJv dG9jb2wpOwoKCiAgICAgICAgc2hvcnQgYXV0aGVudGljYXRpb247CiAgICAgICAgc2hvcnQgZW5j cnlwdGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0X25ldDsKfTsKCnN0cnVjdCBuZXRfcHJvdG8K ewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdm9pZCAoKmluaXRfZnVuYykoc3Ry dWN0IG5ldF9wcm90byAqKTsKfTsKCmV4dGVybiBpbnQgc29ja193YWtlX2FzeW5jKHN0cnVjdCBz b2NrZXQgKnNrLCBpbnQgaG93LCBpbnQgYmFuZCk7CmV4dGVybiBpbnQgc29ja19yZWdpc3Rlcihz dHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseSAqZmFtKTsKZXh0ZXJuIGludCBzb2NrX3VucmVnaXN0ZXIo aW50IGZhbWlseSk7CmV4dGVybiBzdHJ1Y3Qgc29ja2V0ICpzb2NrX2FsbG9jKHZvaWQpOwpleHRl cm4gaW50IHNvY2tfY3JlYXRlKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG8sIHN0cnVj dCBzb2NrZXQgKiopOwpleHRlcm4gdm9pZCBzb2NrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqKTsK ZXh0ZXJuIGludCBzb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICpt LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBzb2NrX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqLCBzdHJ1 Y3QgbXNnaGRyICptLCBpbnQgbGVuLCBpbnQgZmxhZ3MpOwpleHRlcm4gaW50IHNvY2tfcmVhZHZf d3JpdGV2KGludCB0eXBlLCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGlvdmVjICog aW92LCBsb25nIGNvdW50LCBsb25nIHNpemUpOwoKZXh0ZXJuIGludCBuZXRfcmF0ZWxpbWl0KHZv aWQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBuZXRfcmFuZG9tKHZvaWQpOwpleHRlcm4gdm9pZCBu ZXRfc3JhbmRvbSh1bnNpZ25lZCBsb25nKTsKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp bnV4L2tkZXZfdC5oIiAxCiMgNjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4 L2tkZXZfdC5oIgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGtkZXZfdDsKIyA3NiAiL3Vzci9zcmMv bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgva2Rldl90LmgiCmV4dGVybiBjb25zdCBjaGFyICog a2Rldm5hbWUoa2Rldl90KTsKIyA5MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu dXgva2Rldl90LmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGtkZXZfdF90b19ucihrZGV2 X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVkIGludCkgKChkZXYpID4+IDgpKTw8 OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCA4KSAtIDEpKSk7Cn0KCnN0YXRp YyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7CiAgICAgICAgaW50IG1ham9yLCBt aW5vcjsKIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5o IgogICAgICAgIG1ham9yID0gKGRldiA+PiA4KTsKICAgICAgICBtaW5vciA9IChkZXYgJiAweGZm KTsKCiAgICAgICAgcmV0dXJuICgoKG1ham9yKSA8PCA4KSB8IChtaW5vcikpOwp9CiMgMTcgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pb2N0bC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGlu dXgtMi40LjIwL2luY2x1ZGUvYXNtL2lvY3RsLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQu MjAvaW5jbHVkZS9saW51eC9pb2N0bC5oIiAyCiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p bmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv bGludXgvZGNhY2hlLmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl L2FzbS9hdG9taWMuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20v YXRvbWljLmgiCnR5cGVkZWYgc3RydWN0IHsgdm9sYXRpbGUgaW50IGNvdW50ZXI7IH0gYXRvbWlj X3Q7CiMgNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3Rh dGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfYWRkKGludCBpLCBhdG9taWNfdCAqdikKewogICAg ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgImFkZGwgJTEsJTAi CiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoiaXIi IChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0KIyA2OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu Y2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19zdWIoaW50 IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg ICAgICAgICAiIiAic3VibCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVy KQogICAgICAgICAgICAgICAgOiJpciIgKGkpLCAibSIgKHYtPmNvdW50ZXIpKTsKfQojIDg3ICIv dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGlu ZV9fIGludCBhdG9taWNfc3ViX2FuZF90ZXN0KGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAg IHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg ICAgICAgICAiIiAic3VibCAlMiwlMDsgc2V0ZSAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2 LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+ Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0KIyAxMDUgIi91c3Ivc3Jj L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9p ZCBhdG9taWNfaW5jKGF0b21pY190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o CiAgICAgICAgICAgICAgICAiIiAiaW5jbCAlMCIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5j b3VudGVyKQogICAgICAgICAgICAgICAgOiJtIiAodi0+Y291bnRlcikpOwp9CiMgMTIwICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9f IHZvaWQgYXRvbWljX2RlYyhhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGls ZV9fKAogICAgICAgICAgICAgICAgIiIgImRlY2wgJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAo di0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpKTsKfQojIDEzNyAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxp bmVfXyBpbnQgYXRvbWljX2RlY19hbmRfdGVzdChhdG9taWNfdCAqdikKewogICAgICAgIHVuc2ln bmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAg ICAiIiAiZGVjbCAlMDsgc2V0ZSAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVy KSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6Im0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnki KTsKICAgICAgICByZXR1cm4gYyAhPSAwOwp9CiMgMTU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfaW5jX2Fu ZF90ZXN0KGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBf X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJpbmNsICUwOyBzZXRlICUx IgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAg ICAgICAgIDoibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBjICE9 IDA7Cn0KIyAxNzggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIK c3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190 ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp bGVfXygKICAgICAgICAgICAgICAgICIiICJhZGRsICUyLCUwOyBzZXRzICUxIgogICAgICAgICAg ICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAgICAgICAgIDoiaXIi IChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYzsKfQoj IDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAyCiMgMSAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbW91bnQuaCIgMQojIDE5ICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tb3VudC5oIgpzdHJ1Y3QgdmZzbW91bnQK ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2hhc2g7CiAgICAgICAgc3RydWN0IHZmc21v dW50ICptbnRfcGFyZW50OwogICAgICAgIHN0cnVjdCBkZW50cnkgKm1udF9tb3VudHBvaW50Owog ICAgICAgIHN0cnVjdCBkZW50cnkgKm1udF9yb290OwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9j ayAqbW50X3NiOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X21vdW50czsKICAgICAgICBz dHJ1Y3QgbGlzdF9oZWFkIG1udF9jaGlsZDsKICAgICAgICBhdG9taWNfdCBtbnRfY291bnQ7CiAg ICAgICAgaW50IG1udF9mbGFnczsKICAgICAgICBjaGFyICptbnRfZGV2bmFtZTsKICAgICAgICBz dHJ1Y3QgbGlzdF9oZWFkIG1udF9saXN0Owp9OwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgdmZzbW91 bnQgKm1udGdldChzdHJ1Y3QgdmZzbW91bnQgKm1udCkKewogICAgICAgIGlmIChtbnQpCiAgICAg ICAgICAgICAgICBhdG9taWNfaW5jKCZtbnQtPm1udF9jb3VudCk7CiAgICAgICAgcmV0dXJuIG1u dDsKfQoKZXh0ZXJuIHZvaWQgX19tbnRwdXQoc3RydWN0IHZmc21vdW50ICptbnQpOwoKc3RhdGlj IGlubGluZSB2b2lkIG1udHB1dChzdHJ1Y3QgdmZzbW91bnQgKm1udCkKewogICAgICAgIGlmICht bnQpIHsKICAgICAgICAgICAgICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZtbnQtPm1udF9j b3VudCkpCiAgICAgICAgICAgICAgICAgICAgICAgIF9fbW50cHV0KG1udCk7CiAgICAgICAgfQp9 CiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDIKIyAy NSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0cnVjdCBx c3RyIHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICogbmFtZTsKICAgICAgICB1bnNpZ25l ZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBoYXNoOwp9OwoKc3RydWN0IGRlbnRyeV9z dGF0X3QgewogICAgICAgIGludCBucl9kZW50cnk7CiAgICAgICAgaW50IG5yX3VudXNlZDsKICAg ICAgICBpbnQgYWdlX2xpbWl0OwogICAgICAgIGludCB3YW50X3BhZ2VzOwogICAgICAgIGludCBk dW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRlbnRyeV9zdGF0OwoKCgoK CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIHBhcnRpYWxfbmFtZV9oYXNoKHVuc2ln bmVkIGxvbmcgYywgdW5zaWduZWQgbG9uZyBwcmV2aGFzaCkKewogICAgICAgIHJldHVybiAocHJl dmhhc2ggKyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9CgoKc3RhdGljIF9faW5saW5lX18g dW5zaWduZWQgbG9uZyBlbmRfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgaGFzaCkKewogICAgICAg IHJldHVybiAodW5zaWduZWQgaW50KSBoYXNoOwp9CgoKc3RhdGljIF9faW5saW5lX18gdW5zaWdu ZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lLCB1bnNpZ25l ZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBoYXNoID0gMDsKICAgICAgICB3aGls ZSAobGVuLS0pCiAgICAgICAgICAgICAgICBoYXNoID0gcGFydGlhbF9uYW1lX2hhc2goKm5hbWUr KywgaGFzaCk7CiAgICAgICAgcmV0dXJuIGVuZF9uYW1lX2hhc2goaGFzaCk7Cn0KCgoKc3RydWN0 IGRlbnRyeSB7CiAgICAgICAgYXRvbWljX3QgZF9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQg ZF9mbGFnczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBkX2lub2RlOwogICAgICAgIHN0cnVjdCBk ZW50cnkgKiBkX3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfaGFzaDsKICAgICAg ICBzdHJ1Y3QgbGlzdF9oZWFkIGRfbHJ1OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9jaGls ZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfc3ViZGlyczsKICAgICAgICBzdHJ1Y3QgbGlz dF9oZWFkIGRfYWxpYXM7CiAgICAgICAgaW50IGRfbW91bnRlZDsKICAgICAgICBzdHJ1Y3QgcXN0 ciBkX25hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3RpbWU7CiAgICAgICAgc3RydWN0IGRl bnRyeV9vcGVyYXRpb25zICpkX29wOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqIGRfc2I7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3Zmc19mbGFnczsKICAgICAgICB2b2lkICogZF9mc2Rh dGE7CiAgICAgICAgdW5zaWduZWQgY2hhciBkX2luYW1lWzE2XTsKfTsKCnN0cnVjdCBkZW50cnlf b3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqZF9yZXZhbGlkYXRlKShzdHJ1Y3QgZGVudHJ5ICos IGludCk7CiAgICAgICAgaW50ICgqZF9oYXNoKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0 ciAqKTsKICAgICAgICBpbnQgKCpkX2NvbXBhcmUpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBx c3RyICosIHN0cnVjdCBxc3RyICopOwogICAgICAgIGludCAoKmRfZGVsZXRlKShzdHJ1Y3QgZGVu dHJ5ICopOwogICAgICAgIHZvaWQgKCpkX3JlbGVhc2UpKHN0cnVjdCBkZW50cnkgKik7CiAgICAg ICAgdm9pZCAoKmRfaXB1dCkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7Cn07CiMg MTI4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKZXh0ZXJu IHNwaW5sb2NrX3QgZGNhY2hlX2xvY2s7CiMgMTQ3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2Ryb3Aoc3RydWN0 IGRlbnRyeSAqIGRlbnRyeSkKewogICAgICAgICh2b2lkKSgmZGNhY2hlX2xvY2spOwogICAgICAg IGxpc3RfZGVsKCZkZW50cnktPmRfaGFzaCk7CiAgICAgICAgZG8geyAoJmRlbnRyeS0+ZF9oYXNo KS0+bmV4dCA9ICgmZGVudHJ5LT5kX2hhc2gpOyAoJmRlbnRyeS0+ZF9oYXNoKS0+cHJldiA9ICgm ZGVudHJ5LT5kX2hhc2gpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7Cn0K CnN0YXRpYyBfX2lubGluZV9fIGludCBkbmFtZV9leHRlcm5hbChzdHJ1Y3QgZGVudHJ5ICpkKQp7 CiAgICAgICAgcmV0dXJuIGQtPmRfbmFtZS5uYW1lICE9IGQtPmRfaW5hbWU7Cn0KCgoKCmV4dGVy biB2b2lkIGRfaW5zdGFudGlhdGUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4 dGVybiB2b2lkIGRfZGVsZXRlKHN0cnVjdCBkZW50cnkgKik7CgoKZXh0ZXJuIHN0cnVjdCBkZW50 cnkgKiBkX2FsbG9jKHN0cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7CmV4dGVy biB2b2lkIHNocmlua19kY2FjaGVfc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gdm9p ZCBzaHJpbmtfZGNhY2hlX3BhcmVudChzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IGRfaW52 YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICopOwoKCnN0cnVjdCB6b25lX3N0cnVjdDsKCmV4dGVybiBp bnQgc2hyaW5rX2RjYWNoZV9tZW1vcnkoaW50LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBw cnVuZV9kY2FjaGUoaW50KTsKCgpleHRlcm4gaW50IHNocmlua19pY2FjaGVfbWVtb3J5KGludCwg aW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVfaWNhY2hlKGludCk7CgoKZXh0ZXJuIGludCBzaHJpbmtf ZHFjYWNoZV9tZW1vcnkoaW50LCB1bnNpZ25lZCBpbnQpOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5 ICogZF9hbGxvY19yb290KHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gdm9pZCBkX2dlbm9jaWRl KHN0cnVjdCBkZW50cnkgKik7CgpleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9maW5kX2FsaWFzKHN0 cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9wcnVuZV9hbGlhc2VzKHN0cnVjdCBpbm9kZSAq KTsKCgpleHRlcm4gaW50IGhhdmVfc3VibW91bnRzKHN0cnVjdCBkZW50cnkgKik7CgoKCgpleHRl cm4gdm9pZCBkX3JlaGFzaChzdHJ1Y3QgZGVudHJ5ICopOwojIDIxMSAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgZF9h ZGQoc3RydWN0IGRlbnRyeSAqIGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSkKewogICAgICAg IGRfaW5zdGFudGlhdGUoZW50cnksIGlub2RlKTsKICAgICAgICBkX3JlaGFzaChlbnRyeSk7Cn0K CgpleHRlcm4gdm9pZCBkX21vdmUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoK CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9sb29rdXAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg cXN0ciAqKTsKCgpleHRlcm4gaW50IGRfdmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg ZGVudHJ5ICopOwoKZXh0ZXJuIGNoYXIgKiBfX2RfcGF0aChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj dCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICosCiAgICAgICAgc3RydWN0IHZmc21vdW50ICos IGNoYXIgKiwgaW50KTsKIyAyNDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4 L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3QgZGVudHJ5ICogZGdldChzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBpZiAoZGVudHJ5KSB7CiAgICAgICAgICAgICAgICBp ZiAoISgoJmRlbnRyeS0+ZF9jb3VudCktPmNvdW50ZXIpKQogICAgICAgICAgICAgICAgICAgICAg ICBfX291dF9vZl9saW5lX2J1ZygyNDgpOwogICAgICAgICAgICAgICAgYXRvbWljX2luYygmZGVu dHJ5LT5kX2NvdW50KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJu IHN0cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZChzdHJ1Y3QgZGVudHJ5ICopOwojIDI2MyAiL3Vz ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGlu ZV9fIGludCBkX3VuaGFzaGVkKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVy biBsaXN0X2VtcHR5KCZkZW50cnktPmRfaGFzaCk7Cn0KCmV4dGVybiB2b2lkIGRwdXQoc3RydWN0 IGRlbnRyeSAqKTsKCnN0YXRpYyBfX2lubGluZV9fIGludCBkX21vdW50cG9pbnQoc3RydWN0IGRl bnRyeSAqZGVudHJ5KQp7CiAgICAgICAgcmV0dXJuIGRlbnRyeS0+ZF9tb3VudGVkOwp9CgpleHRl cm4gc3RydWN0IHZmc21vdW50ICpsb29rdXBfbW50KHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3Qg ZGVudHJ5ICopOwojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5o IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoK CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3RhdC5oIiAxCgoKCnN0 cnVjdCBfX29sZF9rZXJuZWxfc3RhdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2Owog ICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9t b2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIHNo b3J0IHN0X3VpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5zaWdu ZWQgc2hvcnQgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAgICAgICAg dW5zaWduZWQgbG9uZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210aW1lOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfY3RpbWU7Cn07CgpzdHJ1Y3Qgc3RhdCB7CiAgICAgICAg dW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFkMTsKICAg ICAgICB1bnNpZ25lZCBsb25nIHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9tb2Rl OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IHN0X3VpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAgICAgICAgdW5z aWduZWQgbG9uZyBzdF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxrc2l6ZTsKICAg ICAgICB1bnNpZ25lZCBsb25nIHN0X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0 aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwogICAgICAgIHVuc2lnbmVkIGxv bmcgc3RfbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7CiAgICAgICAgdW5z aWduZWQgbG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAg ICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkNDsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51 c2VkNTsKfTsKCgoKCnN0cnVjdCBzdGF0NjQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2Rl djsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9fcGFkMFsxMF07CgoKICAgICAgICB1bnNpZ25lZCBs b25nIF9fc3RfaW5vOwoKICAgICAgICB1bnNpZ25lZCBpbnQgc3RfbW9kZTsKICAgICAgICB1bnNp Z25lZCBpbnQgc3Rfbmxpbms7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfdWlkOwogICAgICAg IHVuc2lnbmVkIGxvbmcgc3RfZ2lkOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2Owog ICAgICAgIHVuc2lnbmVkIGNoYXIgX19wYWQzWzEwXTsKCiAgICAgICAgbG9uZyBsb25nIHN0X3Np emU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwoKICAgICAgICB1bnNpZ25lZCBs b25nIHN0X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNDsKCiAgICAgICAgdW5z aWduZWQgbG9uZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNTsKCiAgICAg ICAgdW5zaWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNjsK CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9f cGFkNzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0X2lubzsKfTsKIyA3ICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zdGF0LmgiIDIKIyAyMSAiL3Vzci9zcmMvbGlu dXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjIw L2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCmV4dGVybiBjaGFyICogX19fc3RydG9rOwpleHRlcm4g Y2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICog c3RydG9rKGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cnNlcChjaGFyICoq LGNvbnN0IGNoYXIgKik7CmV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3Ryc3BuKGNvbnN0IGNoYXIg Kixjb25zdCBjaGFyICopOwoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv YXNtL3N0cmluZy5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9z dHJpbmcuaCIKc3RhdGljIGlubGluZSBjaGFyICogc3RyY3B5KGNoYXIgKiBkZXN0LGNvbnN0IGNo YXIgKnNyYykKewppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg IjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwl JWFsXG5cdCIKICAgICAgICAiam5lIDFiIgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0mRCIgKGQx KSwgIj0mYSIgKGQyKQogICAgICAgIDoiMCIgKHNyYyksIjEiIChkZXN0KSA6ICJtZW1vcnkiKTsK cmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJuY3B5KGNoYXIgKiBkZXN0 LGNvbnN0IGNoYXIgKnNyYyxzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2Fz bV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGRlY2wgJTJcblx0IgogICAgICAgICJqcyAy ZlxuXHQiCiAgICAgICAgImxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0 ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJyZXBcblx0 IgogICAgICAgICJzdG9zYlxuIgogICAgICAgICIyOiIKICAgICAgICA6ICI9JlMiIChkMCksICI9 JkQiIChkMSksICI9JmMiIChkMiksICI9JmEiIChkMykKICAgICAgICA6IjAiIChzcmMpLCIxIiAo ZGVzdCksIjIiIChjb3VudCkgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlu bGluZSBjaGFyICogc3RyY2F0KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKiBzcmMpCnsKaW50IGQw LCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0Igog ICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFcbiIKICAgICAgICAiMTpcdGxvZHNi XG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0Igog ICAgICAgICJqbmUgMWIiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZhIiAo ZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyksICIxIiAoZGVzdCksICIyIiAoMCks ICIzIiAoMHhmZmZmZmZmZik6Im1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxp bmUgY2hhciAqIHN0cm5jYXQoY2hhciAqIGRlc3QsY29uc3QgY2hhciAqIHNyYyxzaXplX3QgY291 bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAi cmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFcblx0IgogICAg ICAgICJtb3ZsICU4LCUzXG4iCiAgICAgICAgIjE6XHRkZWNsICUzXG5cdCIKICAgICAgICAianMg MmZcblx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAi dGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG4iCiAgICAgICAgIjI6XHR4b3Js ICUyLCUyXG5cdCIKICAgICAgICAic3Rvc2IiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAo ZDEpLCAiPSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyksIjEiIChkZXN0 KSwiMiIgKDApLCIzIiAoMHhmZmZmZmZmZiksICJnIiAoY291bnQpCiAgICAgICAgOiAibWVtb3J5 Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBpbnQgc3RyY21wKGNvbnN0IGNoYXIg KiBjcyxjb25zdCBjaGFyICogY3QpCnsKaW50IGQwLCBkMTsKcmVnaXN0ZXIgaW50IF9fcmVzOwpf X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAic2Nh c2Jcblx0IgogICAgICAgICJqbmUgMmZcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0 IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJ4b3JsICUlZWF4LCUlZWF4XG5cdCIKICAg ICAgICAiam1wIDNmXG4iCiAgICAgICAgIjI6XHRzYmJsICUlZWF4LCUlZWF4XG5cdCIKICAgICAg ICAib3JiICQxLCUlYWxcbiIKICAgICAgICAiMzoiCiAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0m UyIgKGQwKSwgIj0mRCIgKGQxKQogICAgICAgICAgICAgICAgICAgICA6IjEiIChjcyksIjIiIChj dCkpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBzdHJuY21wKGNvbnN0IGNo YXIgKiBjcyxjb25zdCBjaGFyICogY3Qsc2l6ZV90IGNvdW50KQp7CnJlZ2lzdGVyIGludCBfX3Jl czsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICIxOlx0ZGVj bCAlM1xuXHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAibG9kc2Jcblx0IgogICAgICAg ICJzY2FzYlxuXHQiCiAgICAgICAgImpuZSAzZlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVh bFxuXHQiCiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIyOlx0eG9ybCAlJWVheCwlJWVheFxu XHQiCiAgICAgICAgImptcCA0ZlxuIgogICAgICAgICIzOlx0c2JibCAlJWVheCwlJWVheFxuXHQi CiAgICAgICAgIm9yYiAkMSwlJWFsXG4iCiAgICAgICAgIjQ6IgogICAgICAgICAgICAgICAgICAg ICA6Ij1hIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZjIiAoZDIpCiAgICAg ICAgICAgICAgICAgICAgIDoiMSIgKGNzKSwiMiIgKGN0KSwiMyIgKGNvdW50KSk7CnJldHVybiBf X3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNocihjb25zdCBjaGFyICogcywgaW50 IGMpCnsKaW50IGQwOwpyZWdpc3RlciBjaGFyICogX19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9f KAogICAgICAgICJtb3ZiICUlYWwsJSVhaFxuIgogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAg ICAgICJjbXBiICUlYWgsJSVhbFxuXHQiCiAgICAgICAgImplIDJmXG5cdCIKICAgICAgICAidGVz dGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIKICAgICAgICAibW92bCAkMSwl MVxuIgogICAgICAgICIyOlx0bW92bCAlMSwlMFxuXHQiCiAgICAgICAgImRlY2wgJTAiCiAgICAg ICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSA6ICIxIiAocyksIjAiIChjKSk7CnJldHVybiBf X3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cnJjaHIoY29uc3QgY2hhciAqIHMsIGlu dCBjKQp7CmludCBkMCwgZDE7CnJlZ2lzdGVyIGNoYXIgKiBfX3JlczsKX19hc21fXyBfX3ZvbGF0 aWxlX18oCiAgICAgICAgIm1vdmIgJSVhbCwlJWFoXG4iCiAgICAgICAgIjE6XHRsb2RzYlxuXHQi CiAgICAgICAgImNtcGIgJSVhaCwlJWFsXG5cdCIKICAgICAgICAiam5lIDJmXG5cdCIKICAgICAg ICAibGVhbCAtMSglJWVzaSksJTBcbiIKICAgICAgICAiMjpcdHRlc3RiICUlYWwsJSVhbFxuXHQi CiAgICAgICAgImpuZSAxYiIKICAgICAgICA6Ij1nIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZh IiAoZDEpIDoiMCIgKDApLCIxIiAocyksIjIiIChjKSk7CnJldHVybiBfX3JlczsKfQoKCnN0YXRp YyBpbmxpbmUgc2l6ZV90IHN0cmxlbihjb25zdCBjaGFyICogcykKewppbnQgZDA7CnJlZ2lzdGVy IGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAg ICAgICAic2Nhc2Jcblx0IgogICAgICAgICJub3RsICUwXG5cdCIKICAgICAgICAiZGVjbCAlMCIK ICAgICAgICA6Ij1jIiAoX19yZXMpLCAiPSZEIiAoZDApIDoiMSIgKHMpLCJhIiAoMCksICIwIiAo MHhmZmZmZmZmZikpOwpyZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fbWVt Y3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBuKQp7CmludCBkMCwgZDEs IGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwIDsgbW92c2xcblx0IgogICAg ICAgICJ0ZXN0YiAkMiwlYjRcblx0IgogICAgICAgICJqZSAxZlxuXHQiCiAgICAgICAgIm1vdnN3 XG4iCiAgICAgICAgIjE6XHR0ZXN0YiAkMSwlYjRcblx0IgogICAgICAgICJqZSAyZlxuXHQiCiAg ICAgICAgIm1vdnNiXG4iCiAgICAgICAgIjI6IgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mRCIg KGQxKSwgIj0mUyIgKGQyKQogICAgICAgIDoiMCIgKG4vNCksICJxIiAobiksIjEiICgobG9uZykg dG8pLCIyIiAoKGxvbmcpIGZyb20pCiAgICAgICAgOiAibWVtb3J5Iik7CnJldHVybiAodG8pOwp9 CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9tZW1jcHkodm9pZCAqIHRvLCBj b25zdCB2b2lkICogZnJvbSwgc2l6ZV90IG4pCnsKICAgICAgICBzd2l0Y2ggKG4pIHsKICAgICAg ICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAg ICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGNo YXIgKil0byA9ICooY29uc3QgdW5zaWduZWQgY2hhciAqKWZyb207CiAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAg ICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBzaG9ydCAq KWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAg IGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXRvID0g Kihjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICoo MisodW5zaWduZWQgY2hhciAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgY2hhciAqKWZyb20p OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNl IDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25z dCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRv OwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2ln bmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAg ICAgICAgICAgICAgICooMisodW5zaWduZWQgc2hvcnQgKil0bykgPSAqKDIrKGNvbnN0IHVuc2ln bmVkIHNob3J0ICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAg ICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBs b25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAg ICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxv bmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAg ICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICop dG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAg ICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilm cm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBsb25nICopdG8pID0g KigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAg ICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsK ICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhj b25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMiso dW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwog ICAgICAgICAgICAgICAgICAgICAgICAqKDMrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDMrKGNv bnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHRvOwogICAgICAgICAgICAgICAgY2FzZSAyMDoKICAgICAgICAgICAgICAgICAgICAgICAgKih1 bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAg ICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVu c2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25l ZCBsb25nICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAg ICAgICAgICAgICAgICAgICooMysodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMysoY29uc3QgdW5z aWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDQrKHVuc2lnbmVk IGxvbmcgKil0bykgPSAqKDQrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgIH0KCgoKCgoKCnsKICAgICAgICBpbnQg ZDAsIGQxLCBkMjsKICAgICAgICBzd2l0Y2ggKG4gJSA0KSB7CiAgICAgICAgICAgICAgICBjYXNl IDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICIiIDogIj0mYyIgKGQwKSwg Ij0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0byksIjIiICgo bG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNl IDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92c2IiIDogIj0m YyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0 byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgICAg ICAgICBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92 c3ciIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIg KChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAg ICAgICAgICAgICAgICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNs IiAiXG5cdG1vdnN3XG5cdG1vdnNiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChk MikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9y eSIpOzsgcmV0dXJuIHRvOwogICAgICAgIH0KfQoKCn0KIyAzMzUgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKZXh0ZXJuIHZvaWQgX19zdHJ1Y3RfY3B5X2J1ZyAo dm9pZCk7CiMgMzQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3RyaW5nLmgi CnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbW1vdmUodm9pZCAqIGRlc3QsY29uc3Qgdm9pZCAqIHNy Yywgc2l6ZV90IG4pCnsKaW50IGQwLCBkMSwgZDI7CmlmIChkZXN0PHNyYykKX19hc21fXyBfX3Zv bGF0aWxlX18oCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgIm1vdnNiIgogICAgICAgIDogIj0m YyIgKGQwKSwgIj0mUyIgKGQxKSwgIj0mRCIgKGQyKQogICAgICAgIDoiMCIgKG4pLCIxIiAoc3Jj KSwiMiIgKGRlc3QpCiAgICAgICAgOiAibWVtb3J5Iik7CmVsc2UKX19hc21fXyBfX3ZvbGF0aWxl X18oCiAgICAgICAgInN0ZFxuXHQiCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgIm1vdnNiXG5c dCIKICAgICAgICAiY2xkIgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mUyIgKGQxKSwgIj0mRCIg KGQyKQogICAgICAgIDoiMCIgKG4pLAogICAgICAgICAiMSIgKG4tMSsoY29uc3QgY2hhciAqKXNy YyksCiAgICAgICAgICIyIiAobi0xKyhjaGFyICopZGVzdCkKICAgICAgICA6Im1lbW9yeSIpOwpy ZXR1cm4gZGVzdDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkICogbWVtY2hyKGNvbnN0IHZvaWQg KiBjcyxpbnQgYyxzaXplX3QgY291bnQpCnsKaW50IGQwOwpyZWdpc3RlciB2b2lkICogX19yZXM7 CmlmICghY291bnQpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwpfX2FzbV9fIF9fdm9sYXRp bGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImpl IDFmXG5cdCIKICAgICAgICAibW92bCAkMSwlMFxuIgogICAgICAgICIxOlx0ZGVjbCAlMCIKICAg ICAgICA6Ij1EIiAoX19yZXMpLCAiPSZjIiAoZDApIDogImEiIChjKSwiMCIgKGNzKSwiMSIgKGNv dW50KSk7CnJldHVybiBfX3JlczsKfQoKc3RhdGljIGlubGluZSB2b2lkICogX19tZW1zZXRfZ2Vu ZXJpYyh2b2lkICogcywgY2hhciBjLHNpemVfdCBjb3VudCkKewppbnQgZDAsIGQxOwpfX2FzbV9f IF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwXG5cdCIKICAgICAgICAic3Rvc2IiCiAgICAgICAg OiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyksIjEiIChzKSwiMCIgKGNv dW50KQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiBzOwp9CiMgNDA4ICIvdXNyL3NyYy9saW51 eC0yLjQuMjAvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fY29u c3RhbnRfY19tZW1zZXQodm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgYywgc2l6ZV90IGNvdW50KQp7 CmludCBkMCwgZDE7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXAgOyBzdG9zbFxu XHQiCiAgICAgICAgInRlc3RiICQyLCViM1xuXHQiCiAgICAgICAgImplIDFmXG5cdCIKICAgICAg ICAic3Rvc3dcbiIKICAgICAgICAiMTpcdHRlc3RiICQxLCViM1xuXHQiCiAgICAgICAgImplIDJm XG5cdCIKICAgICAgICAic3Rvc2JcbiIKICAgICAgICAiMjoiCiAgICAgICAgOiAiPSZjIiAoZDAp LCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyksICJxIiAoY291bnQpLCAiMCIgKGNvdW50LzQp LCAiMSIgKChsb25nKSBzKQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiAocyk7Cn0KCgoKc3Rh dGljIGlubGluZSBzaXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICogcywgc2l6ZV90IGNvdW50KQp7 CmludCBkMDsKcmVnaXN0ZXIgaW50IF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg ICAibW92bCAlMiwlMFxuXHQiCiAgICAgICAgImptcCAyZlxuIgogICAgICAgICIxOlx0Y21wYiAk MCwoJTApXG5cdCIKICAgICAgICAiamUgM2Zcblx0IgogICAgICAgICJpbmNsICUwXG4iCiAgICAg ICAgIjI6XHRkZWNsICUxXG5cdCIKICAgICAgICAiY21wbCAkLTEsJTFcblx0IgogICAgICAgICJq bmUgMWJcbiIKICAgICAgICAiMzpcdHN1YmwgJTIsJTAiCiAgICAgICAgOiI9YSIgKF9fcmVzKSwg Ij0mZCIgKGQwKQogICAgICAgIDoiYyIgKHMpLCIxIiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9 CgoKCgpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIgKmNzLCBjb25zdCBjaGFyICpjdCk7 CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQo dm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgcGF0dGVybiwgc2l6ZV90IGNvdW50KQp7CiAgICAgICAg c3dpdGNoIChjb3VudCkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAg ICAgICAgICAgKih1bnNpZ25lZCBjaGFyICopcyA9IHBhdHRlcm47CiAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAg ICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAg ICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAgICAgICAgICAgICAg ICAgICAgICooMisodW5zaWduZWQgY2hhciAqKXMpID0gcGF0dGVybjsKICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAg ICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXMgPSBwYXR0ZXJuOwogICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gczsKICAgICAgICB9CgoKCgoKCgp7CiAgICAgICAgaW50IGQwLCBkMTsK ICAgICAgICBzd2l0Y2ggKGNvdW50ICUgNCkgewogICAgICAgICAgICAgICAgY2FzZSAwOiBfX2Fz bV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiIiA6ICI9JmMiIChkMCksICI9JkQiIChk MSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5 Iik7IHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVf XyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3NiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSkgOiAi YSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5Iik7IHJl dHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJl cCA7IHN0b3NsIiAiXG5cdHN0b3N3IiA6ICI9JmMiIChkMCksICI9JkQiIChkMSkgOiAiYSIgKHBh dHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5Iik7IHJldHVybiBz OwogICAgICAgICAgICAgICAgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18oICJyZXAgOyBz dG9zbCIgIlxuXHRzdG9zd1xuXHRzdG9zYiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpIDogImEi IChwYXR0ZXJuKSwiMCIgKGNvdW50LzQpLCIxIiAoKGxvbmcpIHMpIDogIm1lbW9yeSIpOyByZXR1 cm4gczsKICAgICAgICB9Cn0KCgp9CiMgNTE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbXNjYW4odm9pZCAqIGFkZHIs IGludCBjLCBzaXplX3Qgc2l6ZSkKewogICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgICAg IHJldHVybiBhZGRyOwogICAgICAgIF9fYXNtX18oInJlcG56OyBzY2FzYlxuXHQiCiAgICAgICAg ICAgICAgICAiam56IDFmXG5cdCIKICAgICAgICAgICAgICAgICJkZWMgJSVlZGlcbiIKICAgICAg ICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgIDogIj1EIiAoYWRkciksICI9YyIgKHNpemUp CiAgICAgICAgICAgICAgICA6ICIwIiAoYWRkciksICIxIiAoc2l6ZSksICJhIiAoYykpOwogICAg ICAgIHJldHVybiBhZGRyOwp9CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp bnV4L3N0cmluZy5oIiAyCiMgNDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4 L3N0cmluZy5oIgpleHRlcm4gaW50IHN0cm5pY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq LCBfX2tlcm5lbF9zaXplX3QpOwojIDc3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s aW51eC9zdHJpbmcuaCIKZXh0ZXJuIGludCBfX2J1aWx0aW5fbWVtY21wKGNvbnN0IHZvaWQgKixj b25zdCB2b2lkICosX19rZXJuZWxfc2l6ZV90KTsKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjIw L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1 ZGUvYXNtL2JpdG9wcy5oIiAxCiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2Fz bS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBuciwgdm9sYXRp bGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAg ICAgICAgICAgICJidHNsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxl IGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDUzICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9f IHZvaWQgX19zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBf X2FzbV9fKAogICAgICAgICAgICAgICAgImJ0c2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1t IiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikp Owp9CiMgNzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3Rh dGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRk cikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0 cmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRy KSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgOTAgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2NoYW5n ZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192 b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6 Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChu cikpOwp9CiMgMTA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYml0b3BzLmgi CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQg KiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICIiCiAgICAgICAgICAgICAg ICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2b2xhdGlsZSBsb25nICop IGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyAxMjMgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRl c3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGlu dCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAg ICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRi aXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6Ikly IiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAxNDMgIi91c3Iv c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18g aW50IF9fdGVzdF9hbmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAg ICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHNs ICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0i ICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7 CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDE2MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu Y2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2xlYXJf Yml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoK ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAgICAgICAgICAgICJidHJsICUy LCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgo Kih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSA6ICJt ZW1vcnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTgyICIvdXNyL3NyYy9saW51eC0y LjQuMjAvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3Rf YW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50 IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHJsICUyLCUxXG5c dHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xh dGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7CiAgICAgICAg cmV0dXJuIG9sZGJpdDsKfQoKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3RfYW5kX2NoYW5n ZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7 CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wgJTIs JTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgq KHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1l bW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMTMgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5k X2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBv bGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAg ImJ0Y2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQp LCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAo bnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMzMgIi91c3Ivc3Jj L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50 IGNvbnN0YW50X3Rlc3RfYml0KGludCBuciwgY29uc3Qgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsK ICAgICAgICByZXR1cm4gKCgxVUwgPDwgKG5yICYgMzEpKSAmICgoKGNvbnN0IHZvbGF0aWxlIHVu c2lnbmVkIGludCAqKSBhZGRyKVtuciA+PiA1XSkpICE9IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9f IGludCB2YXJpYWJsZV90ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAg ICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg ICAgICAgICAiYnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAo b2xkYml0KQogICAgICAgICAgICAgICAgOiJtIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSks IklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjYyICIvdXNyL3NyYy9saW51 eC0yLjQuMjAvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5k X2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBzaXplKQp7CiAgICAgICAgaW50 IGQwLCBkMSwgZDI7CiAgICAgICAgaW50IHJlczsKCiAgICAgICAgaWYgKCFzaXplKQogICAgICAg ICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAg ICAgICAgICAgIm1vdmwgJC0xLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUlZWR4 LCUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICJyZXBlOyBzY2FzbFxuXHQiCiAgICAgICAgICAg ICAgICAiamUgMWZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgLTQoJSVlZGkpLCUlZWF4XG5c dCIKICAgICAgICAgICAgICAgICJzdWJsICQ0LCUlZWRpXG5cdCIKICAgICAgICAgICAgICAgICJi c2ZsICUlZWF4LCUlZWR4XG4iCiAgICAgICAgICAgICAgICAiMTpcdHN1YmwgJSVlYngsJSVlZGlc blx0IgogICAgICAgICAgICAgICAgInNobGwgJDMsJSVlZGlcblx0IgogICAgICAgICAgICAgICAg ImFkZGwgJSVlZGksJSVlZHgiCiAgICAgICAgICAgICAgICA6Ij1kIiAocmVzKSwgIj0mYyIgKGQw KSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKQogICAgICAgICAgICAgICAgOiIxIiAoKHNpemUgKyAz MSkgPj4gNSksICIyIiAoYWRkciksICJiIiAoYWRkcikpOwogICAgICAgIHJldHVybiByZXM7Cn0K CgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5kX25leHRfemVyb19iaXQgKHZvaWQgKiBh ZGRyLCBpbnQgc2l6ZSwgaW50IG9mZnNldCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgKiBwID0g KCh1bnNpZ25lZCBsb25nICopIGFkZHIpICsgKG9mZnNldCA+PiA1KTsKICAgICAgICBpbnQgc2V0 ID0gMCwgYml0ID0gb2Zmc2V0ICYgMzEsIHJlczsKCiAgICAgICAgaWYgKGJpdCkgewoKCgogICAg ICAgICAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAg ICAgICJqbmUgMWZcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAibW92bCAkMzIsICUwXG4i CiAgICAgICAgICAgICAgICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgICAgICAgICAgOiAi PXIiIChzZXQpCiAgICAgICAgICAgICAgICAgICAgICAgIDogInIiICh+KCpwID4+IGJpdCkpKTsK ICAgICAgICAgICAgICAgIGlmIChzZXQgPCAoMzIgLSBiaXQpKQogICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gc2V0ICsgb2Zmc2V0OwogICAgICAgICAgICAgICAgc2V0ID0gMzIgLSBiaXQ7 CiAgICAgICAgICAgICAgICBwKys7CiAgICAgICAgfQoKCgogICAgICAgIHJlcyA9IGZpbmRfZmly c3RfemVyb19iaXQgKHAsIHNpemUgLSAzMiAqIChwIC0gKHVuc2lnbmVkIGxvbmcgKikgYWRkcikp OwogICAgICAgIHJldHVybiAob2Zmc2V0ICsgc2V0ICsgcmVzKTsKfQoKCgoKCgoKc3RhdGljIF9f aW5saW5lX18gdW5zaWduZWQgbG9uZyBmZnoodW5zaWduZWQgbG9uZyB3b3JkKQp7CiAgICAgICAg X19hc21fXygiYnNmbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiICh3b3JkKQogICAgICAg ICAgICAgICAgOiJyIiAofndvcmQpKTsKICAgICAgICByZXR1cm4gd29yZDsKfQojIDM0MyAiL3Vz ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVf XyBpbnQgZmZzKGludCB4KQp7CiAgICAgICAgaW50IHI7CgogICAgICAgIF9fYXNtX18oImJzZmwg JTEsJTBcblx0IgogICAgICAgICAgICAgICAgImpueiAxZlxuXHQiCiAgICAgICAgICAgICAgICAi bW92bCAkLTEsJTBcbiIKICAgICAgICAgICAgICAgICIxOiIgOiAiPXIiIChyKSA6ICJybSIgKHgp KTsKICAgICAgICByZXR1cm4gcisxOwp9CiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs dWRlL2xpbnV4L2ZzLmgiIDIKCnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA1MCAiL3Vzci9z cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGZpbGVzX3N0YXRfc3Ry dWN0IHsKICAgICAgICBpbnQgbnJfZmlsZXM7CiAgICAgICAgaW50IG5yX2ZyZWVfZmlsZXM7CiAg ICAgICAgaW50IG1heF9maWxlczsKfTsKZXh0ZXJuIHN0cnVjdCBmaWxlc19zdGF0X3N0cnVjdCBm aWxlc19zdGF0OwoKc3RydWN0IGlub2Rlc19zdGF0X3QgewogICAgICAgIGludCBucl9pbm9kZXM7 CiAgICAgICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgZHVtbXlbNV07Cn07CmV4dGVybiBz dHJ1Y3QgaW5vZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKCmV4dGVybiBpbnQgbGVhc2VzX2VuYWJs ZSwgZGlyX25vdGlmeV9lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CiMgMjAwICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMQojIDM5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9hc20vc2VtYXBob3JlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1 ZGUvYXNtL3N5c3RlbS5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC9pbml0LmgiIDEKIyAxMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp bnV4L2luaXQuaCIKdHlwZWRlZiBpbnQgKCpfX2luaXRfbW9kdWxlX2Z1bmNfdCkodm9pZCk7CnR5 cGVkZWYgdm9pZCAoKl9fY2xlYW51cF9tb2R1bGVfZnVuY190KSh2b2lkKTsKIyA3ICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGlu dXgtMi40LjIwL2luY2x1ZGUvbGludXgvYml0b3BzLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvYml0b3BzLmgiCnN0YXRpYyBpbmxpbmUgaW50IGdlbmVyaWNf ZmZzKGludCB4KQp7CiAgICAgICAgaW50IHIgPSAxOwoKICAgICAgICBpZiAoIXgpCiAgICAgICAg ICAgICAgICByZXR1cm4gMDsKICAgICAgICBpZiAoISh4ICYgMHhmZmZmKSkgewogICAgICAgICAg ICAgICAgeCA+Pj0gMTY7CiAgICAgICAgICAgICAgICByICs9IDE2OwogICAgICAgIH0KICAgICAg ICBpZiAoISh4ICYgMHhmZikpIHsKICAgICAgICAgICAgICAgIHggPj49IDg7CiAgICAgICAgICAg ICAgICByICs9IDg7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAweGYpKSB7CiAgICAgICAg ICAgICAgICB4ID4+PSA0OwogICAgICAgICAgICAgICAgciArPSA0OwogICAgICAgIH0KICAgICAg ICBpZiAoISh4ICYgMykpIHsKICAgICAgICAgICAgICAgIHggPj49IDI7CiAgICAgICAgICAgICAg ICByICs9IDI7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAxKSkgewogICAgICAgICAgICAg ICAgeCA+Pj0gMTsKICAgICAgICAgICAgICAgIHIgKz0gMTsKICAgICAgICB9CiAgICAgICAgcmV0 dXJuIHI7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2VpZ2h0 MzIodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0gKHcgJiAweDU1 NTU1NTU1KSArICgodyA+PiAxKSAmIDB4NTU1NTU1NTUpOwogICAgICAgIHJlcyA9IChyZXMgJiAw eDMzMzMzMzMzKSArICgocmVzID4+IDIpICYgMHgzMzMzMzMzMyk7CiAgICAgICAgcmVzID0gKHJl cyAmIDB4MEYwRjBGMEYpICsgKChyZXMgPj4gNCkgJiAweDBGMEYwRjBGKTsKICAgICAgICByZXMg PSAocmVzICYgMHgwMEZGMDBGRikgKyAoKHJlcyA+PiA4KSAmIDB4MDBGRjAwRkYpOwogICAgICAg IHJldHVybiAocmVzICYgMHgwMDAwRkZGRikgKyAoKHJlcyA+PiAxNikgJiAweDAwMDBGRkZGKTsK fQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2VpZ2h0MTYodW5zaWduZWQg aW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0gKHcgJiAweDU1NTUpICsgKCh3ID4+ IDEpICYgMHg1NTU1KTsKICAgICAgICByZXMgPSAocmVzICYgMHgzMzMzKSArICgocmVzID4+IDIp ICYgMHgzMzMzKTsKICAgICAgICByZXMgPSAocmVzICYgMHgwRjBGKSArICgocmVzID4+IDQpICYg MHgwRjBGKTsKICAgICAgICByZXR1cm4gKHJlcyAmIDB4MDBGRikgKyAoKHJlcyA+PiA4KSAmIDB4 MDBGRik7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVyaWNfaHdlaWdodDgodW5z aWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0gKHcgJiAweDU1KSArICgo dyA+PiAxKSAmIDB4NTUpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDMzKSArICgocmVzID4+IDIp ICYgMHgzMyk7CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDBGKSArICgocmVzID4+IDQpICYgMHgw Rik7Cn0KIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIK CgoKc3RydWN0IHRhc2tfc3RydWN0OwpleHRlcm4gdm9pZCBfX3N3aXRjaF90byhzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCkgX19hdHRyaWJ1dGVfXygo cmVncGFybSgzKSkpOwojIDY0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lz dGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfZ2V0X2Jhc2UoY2hhciAqIGFkZHIp CnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fYmFzZTsKICAgICAgICBfX2FzbV9fKCJtb3ZiICUz LCUlZGhcblx0IgogICAgICAgICAgICAgICAgIm1vdmIgJTIsJSVkbFxuXHQiCiAgICAgICAgICAg ICAgICAic2hsbCAkMTYsJSVlZHhcblx0IgogICAgICAgICAgICAgICAgIm1vdncgJTEsJSVkeCIK ICAgICAgICAgICAgICAgIDoiPSZkIiAoX19iYXNlKQogICAgICAgICAgICAgICAgOiJtIiAoKigo YWRkcikrMikpLAogICAgICAgICAgICAgICAgICJtIiAoKigoYWRkcikrNCkpLAogICAgICAgICAg ICAgICAgICJtIiAoKigoYWRkcikrNykpKTsKICAgICAgICByZXR1cm4gX19iYXNlOwp9CiMgMTMx ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxp bmUgdW5zaWduZWQgbG9uZyBnZXRfbGltaXQodW5zaWduZWQgbG9uZyBzZWdtZW50KQp7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBfX2xpbWl0OwogICAgICAgIF9fYXNtX18oImxzbGwgJTEsJTAiCiAg ICAgICAgICAgICAgICA6Ij1yIiAoX19saW1pdCk6InIiIChzZWdtZW50KSk7CiAgICAgICAgcmV0 dXJuIF9fbGltaXQrMTsKfQoKCgoKCgoKc3RydWN0IF9feGNoZ19kdW1teSB7IHVuc2lnbmVkIGxv bmcgYVsxMDBdOyB9OwojIDE2MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3N5 c3RlbS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXQgKHVuc2lnbmVkIGxvbmcgbG9u ZyAqIHB0ciwKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsb3csIHVuc2lnbmVkIGludCBo aWdoKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAogICAgICAgICAgICAgICAgIlxu MTpcdCIKICAgICAgICAgICAgICAgICJtb3ZsICglMCksICUlZWF4XG5cdCIKICAgICAgICAgICAg ICAgICJtb3ZsIDQoJTApLCAlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAibG9jayBjbXB4Y2hn OGIgKCUwKVxuXHQiCiAgICAgICAgICAgICAgICAiam56IDFiIgogICAgICAgICAgICAgICAgOgog ICAgICAgICAgICAgICAgOiAiRCIocHRyKSwKICAgICAgICAgICAgICAgICAgICAgICAgImIiKGxv dyksCiAgICAgICAgICAgICAgICAgICAgICAgICJjIihoaWdoKQogICAgICAgICAgICAgICAgOiAi YXgiLCJkeCIsIm1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXRfY29u c3RhbnQgKHVuc2lnbmVkIGxvbmcgbG9uZyAqcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQp7CiAgICAg ICAgX19zZXRfNjRiaXQocHRyLCh1bnNpZ25lZCBpbnQpKHZhbHVlKSwgKHVuc2lnbmVkIGludCko KHZhbHVlKT4+MzJVTEwpKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXRfdmFy ICh1bnNpZ25lZCBsb25nIGxvbmcgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgbG9uZyB2YWx1ZSkKewogICAgICAgIF9fc2V0XzY0Yml0KHB0ciwqKCgodW5zaWdu ZWQgaW50KikmKHZhbHVlKSkrMCksICooKCh1bnNpZ25lZCBpbnQqKSYodmFsdWUpKSsxKSk7Cn0K IyAyMDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGlj IGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZv aWQgKiBwdHIsIGludCBzaXplKQp7CiAgICAgICAgc3dpdGNoIChzaXplKSB7CiAgICAgICAgICAg ICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f KCJ4Y2hnYiAlYjAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9cSIgKHgp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19k dW1teSAqKShwdHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg IGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhj aGd3ICV3MCwlMSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Ij1yIiAoeCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im0iICgqKChzdHJ1Y3QgX194Y2hnX2R1bW15 ICopKHB0cikpKSwgIjAiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoibWVt b3J5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2Fz ZSA0OgogICAgICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ2wg JTAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9ciIgKHgpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShw dHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIp OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJu IHg7Cn0KIyAyNDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIK c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fY21weGNoZyh2b2xhdGlsZSB2b2lkICpwdHIs IHVuc2lnbmVkIGxvbmcgb2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgbmV3LCBpbnQgc2l6ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJl djsKICAgICAgICBzd2l0Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAg ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIiAiY21weGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAq KShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoK ICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiICJjbXB4Y2hndyAldzEsJTIi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3Qg X194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAg ICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiIgImNt cHhjaGdsICUxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEi KHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAi bSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJl dHVybiBwcmV2OwogICAgICAgIH0KICAgICAgICByZXR1cm4gb2xkOwp9CiMgMzU1ICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnZvaWQgZGlzYWJsZV9obHQodm9p ZCk7CnZvaWQgZW5hYmxlX2hsdCh2b2lkKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRtaV9icm9r ZW47CmV4dGVybiBpbnQgaXNfc29ueV92YWlvX2xhcHRvcDsKIyA0MCAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0y LjQuMjAvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiCnN0cnVjdCByd19zZW1hcGhvcmU7CgoKCgojIDEgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9yd3NlbS5oIiAxCiMgNDYgIi91c3Ivc3Jj L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9yd3NlbS5oIgpzdHJ1Y3QgcndzZW1fd2FpdGVyOwoK ZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgKnJ3c2VtX2Rvd25fcmVhZF9mYWlsZWQoc3RydWN0 IHJ3X3NlbWFwaG9yZSAqc2VtKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBz dHJ1Y3Qgcndfc2VtYXBob3JlICpyd3NlbV9kb3duX3dyaXRlX2ZhaWxlZChzdHJ1Y3Qgcndfc2Vt YXBob3JlICpzZW0pIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCBy d19zZW1hcGhvcmUgKnJ3c2VtX3dha2Uoc3RydWN0IHJ3X3NlbWFwaG9yZSAqKSBfX2F0dHJpYnV0 ZV9fKChyZWdwYXJtKDMpKSk7CgoKCgpzdHJ1Y3Qgcndfc2VtYXBob3JlIHsKICAgICAgICBzaWdu ZWQgbG9uZyBjb3VudDsKCgoKCgoKICAgICAgICBzcGlubG9ja190IHdhaXRfbG9jazsKICAgICAg ICBzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRfbGlzdDsKCgoKfTsKIyA4NiAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvYXNtL3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3J3c2Vt KHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIHNlbS0+Y291bnQgPSAweDAwMDAw MDAwOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBkbyB7ICgmc2VtLT53YWl0X2xp c3QpLT5uZXh0ID0gKCZzZW0tPndhaXRfbGlzdCk7ICgmc2VtLT53YWl0X2xpc3QpLT5wcmV2ID0g KCZzZW0tPndhaXRfbGlzdCk7IH0gd2hpbGUgKDApOwoKCgp9CgoKCgpzdGF0aWMgaW5saW5lIHZv aWQgX19kb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgX19hc21f XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgZG93bl9yZWFkXG5c dCIKIiIgIiAgaW5jbCAgICAgICglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAganMgICAg ICAgIDJmXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnN1 YnNlY3Rpb24gMVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic3lzaTg2IiAiXG5c dCIgIi50ZXh0LmxvY2suIiAic3lzaTg2IiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAg ICAgICAgIjI6XG5cdCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAg ICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVlZHhcblx0IgogICAgICAgICAgICAgICAgIiAg Y2FsbCAgICAgIHJ3c2VtX2Rvd25fcmVhZF9mYWlsZWRcblx0IgogICAgICAgICAgICAgICAgIiAg cG9wbCAgICAgICUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxu XHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAgICAgICAgICAgICIu cHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRvd25fcmVhZFxuXHQiCiAg ICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogImEiKHNl bSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0aWMgaW5saW5l IGludCBfX2Rvd25fcmVhZF90cnlsb2NrKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAg ICAgIF9fczMyIHJlc3VsdCwgdG1wOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAg ICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fZG93bl9yZWFkX3RyeWxvY2tcblx0IgogICAgICAg ICAgICAgICAgIiAgbW92bCAgICAgICUwLCUxXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQi CiAgICAgICAgICAgICAgICAiICBtb3ZsCSAgICAgJTEsJTJcblx0IgogICAgICAgICAgICAgICAg IiAgYWRkbCAgICAgICUzLCUyXG5cdCIKICAgICAgICAgICAgICAgICIgIGpsZQkgICAgIDJmXG5c dCIKIiIgIiAgY21weGNoZ2wgICUyLCUwXG5cdCIKICAgICAgICAgICAgICAgICIgIGpuegkgICAg IDFiXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAiIyBlbmRp bmcgX19kb3duX3JlYWRfdHJ5bG9ja1xuXHQiCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5j b3VudCksICI9JmEiKHJlc3VsdCksICI9JnIiKHRtcCkKICAgICAgICAgICAgICAgIDogImkiKDB4 MDAwMDAwMDEpCiAgICAgICAgICAgICAgICA6ICJtZW1vcnkiLCAiY2MiKTsKICAgICAgICByZXR1 cm4gcmVzdWx0Pj0wID8gMSA6IDA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Rvd25fd3Jp dGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgaW50IHRtcDsKCiAgICAgICAg dG1wID0gKCgtMHgwMDAxMDAwMCkgKyAweDAwMDAwMDAxKTsKICAgICAgICBfX2FzbV9fIF9fdm9s YXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBkb3duX3dyaXRlXG5cdCIKIiIg IiAgeGFkZCAgICAgICUwLCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAgdGVzdGwgICAg ICUwLCUwXG5cdCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQiCiAgICAgICAg ICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAi LmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInN5c2k4NiIgIlxuXHQiICIudGV4dC5sb2NrLiIgInN5 c2k4NiIgIjpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAg ICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2Fs bCAgICAgIHJ3c2VtX2Rvd25fd3JpdGVfZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIgIHBv cGwgICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAg ICAgICAgICAgICAgICIucHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRv d25fd3JpdGUiCiAgICAgICAgICAgICAgICA6ICIrZCIodG1wKSwgIittIihzZW0tPmNvdW50KQog ICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNj Iik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgaW50IF9fZG93bl93cml0ZV90cnlsb2NrKHN0cnVjdCBy d19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIHNpZ25lZCBsb25nIHJldCA9ICgoX190eXBlb2Zf XygqKCZzZW0tPmNvdW50KSkpX19jbXB4Y2hnKCgmc2VtLT5jb3VudCksKHVuc2lnbmVkIGxvbmcp KDB4MDAwMDAwMDApLCAodW5zaWduZWQgbG9uZykoKCgtMHgwMDAxMDAwMCkgKyAweDAwMDAwMDAx KSksc2l6ZW9mKCooJnNlbS0+Y291bnQpKSkpOwoKCiAgICAgICAgaWYgKHJldCA9PSAweDAwMDAw MDAwKQogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCnN0 YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAg ICAgICAgX19zMzIgdG1wID0gLTB4MDAwMDAwMDE7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxl X18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgX191cF9yZWFkXG5cdCIKIiIgIiAgeGFk ZCAgICAgICUlZWR4LCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAganMgICAgICAgIDJm XG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rp b24gMVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic3lzaTg2IiAiXG5cdCIgIi50 ZXh0LmxvY2suIiAic3lzaTg2IiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAgICAgICAg IjI6XG5cdCIKICAgICAgICAgICAgICAgICIgIGRlY3cgICAgICAlJWR4XG5cdCIKICAgICAgICAg ICAgICAgICIgIGpueiAgICAgICAxYlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAg JSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX3dha2Vcblx0Igog ICAgICAgICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIg IGptcCAgICAgICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuXHQiCiAgICAgICAg ICAgICAgICAiIyBlbmRpbmcgX191cF9yZWFkXG4iCiAgICAgICAgICAgICAgICA6ICIrbSIoc2Vt LT5jb3VudCksICIrZCIodG1wKQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAg ICAgICAgOiAibWVtb3J5IiwgImNjIik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3dy aXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xhdGls ZV9fKAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfd3JpdGVcblx0IgogICAgICAg ICAgICAgICAgIiAgbW92bCAgICAgICUyLCUlZWR4XG5cdCIKIiIgIiAgeGFkZGwgICAgICUlZWR4 LCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDJmXG5cdCIKICAgICAg ICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rpb24gMVxuXHQiICIi ICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic3lzaTg2IiAiXG5cdCIgIi50ZXh0LmxvY2suIiAi c3lzaTg2IiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAgICAgICAgIjI6XG5cdCIKICAg ICAgICAgICAgICAgICIgIGRlY3cgICAgICAlJWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIGpu eiAgICAgICAxYlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0Igog ICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX3dha2Vcblx0IgogICAgICAgICAgICAg ICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAgICAgICAx YlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuXHQiCiAgICAgICAgICAgICAgICAiIyBl bmRpbmcgX191cF93cml0ZVxuIgogICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQpCiAg ICAgICAgICAgICAgICA6ICJhIihzZW0pLCAiaSIoLSgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAw MSkpCiAgICAgICAgICAgICAgICA6ICJtZW1vcnkiLCAiY2MiLCAiZWR4Iik7Cn0KCgoKCnN0YXRp YyBpbmxpbmUgdm9pZCByd3NlbV9hdG9taWNfYWRkKGludCBkZWx0YSwgc3RydWN0IHJ3X3NlbWFw aG9yZSAqc2VtKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiIiICJhZGRsICUxLCUw IgogICAgICAgICAgICAgICAgOiI9bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiaXIi KGRlbHRhKSwgIm0iKHNlbS0+Y291bnQpKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgcndzZW1f YXRvbWljX3VwZGF0ZShpbnQgZGVsdGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAg ICAgIGludCB0bXAgPSBkZWx0YTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiIiICJ4 YWRkICUwLCglMikiCiAgICAgICAgICAgICAgICA6ICIrciIodG1wKSwgIj1tIihzZW0tPmNvdW50 KQogICAgICAgICAgICAgICAgOiAiciIoc2VtKSwgIm0iKHNlbS0+Y291bnQpCiAgICAgICAgICAg ICAgICA6ICJtZW1vcnkiKTsKCiAgICAgICAgcmV0dXJuIHRtcCtkZWx0YTsKfQojIDMwICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCiMgNDMgIi91c3Ivc3Jj L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBk b3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgOwogICAgICAgIF9f ZG93bl9yZWFkKHNlbSk7CiAgICAgICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIGludCBkb3duX3Jl YWRfdHJ5bG9jayhzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBpbnQgcmV0Owog ICAgICAgIDsKICAgICAgICByZXQgPSBfX2Rvd25fcmVhZF90cnlsb2NrKHNlbSk7CiAgICAgICAg OwogICAgICAgIHJldHVybiByZXQ7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3dyaXRl KHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIDsKICAgICAgICBfX2Rvd25fd3Jp dGUoc2VtKTsKICAgICAgICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgaW50IGRvd25fd3JpdGVfdHJ5 bG9jayhzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBpbnQgcmV0OwogICAgICAg IDsKICAgICAgICByZXQgPSBfX2Rvd25fd3JpdGVfdHJ5bG9jayhzZW0pOwogICAgICAgIDsKICAg ICAgICByZXR1cm4gcmV0Owp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgdXBfcmVhZChzdHJ1Y3Qg cndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICA7CiAgICAgICAgX191cF9yZWFkKHNlbSk7CiAg ICAgICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgdXBfd3JpdGUoc3RydWN0IHJ3X3NlbWFw aG9yZSAqc2VtKQp7CiAgICAgICAgOwogICAgICAgIF9fdXBfd3JpdGUoc2VtKTsKICAgICAgICA7 Cn0KIyA0MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAy CgpzdHJ1Y3Qgc2VtYXBob3JlIHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBpbnQg c2xlZXBlcnM7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCgoKfTsKIyA3MyAiL3Vz ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIgpzdGF0aWMgaW5saW5l IHZvaWQgc2VtYV9pbml0IChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0sIGludCB2YWwpCnsKCgoKCgoK ICAgICAgICAoKCgmc2VtLT5jb3VudCktPmNvdW50ZXIpID0gKHZhbCkpOwogICAgICAgIHNlbS0+ c2xlZXBlcnMgPSAwOwogICAgICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJnNlbS0+d2FpdCk7CgoK Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X01VVEVYIChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0p CnsKICAgICAgICBzZW1hX2luaXQoc2VtLCAxKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGluaXRf TVVURVhfTE9DS0VEIChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBzZW1hX2luaXQo c2VtLCAwKTsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fZG93bl9mYWls ZWQodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rvd25fZmFpbGVk X2ludGVycnVwdGlibGUodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBf X2Rvd25fZmFpbGVkX3RyeWxvY2sodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp IHZvaWQgX191cF93YWtldXAodm9pZCApOwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2 b2lkIF9fZG93bihzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bh cm0oMCkpKSBpbnQgX19kb3duX2ludGVycnVwdGlibGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7 CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93bl90cnlsb2NrKHN0cnVjdCBz ZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgX191cChz dHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRvd24oc3Ry dWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygK ICAgICAgICAgICAgICAgICIjIGF0b21pYyBkb3duIG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAg ICAgICAiIiAiZGVjbCAlMFxuXHQiCiAgICAgICAgICAgICAgICAianMgMmZcbiIKICAgICAgICAg ICAgICAgICIxOlxuIgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlm bmRlZiAiICIudGV4dC5sb2NrLiIgInN5c2k4NiIgIlxuXHQiICIudGV4dC5sb2NrLiIgInN5c2k4 NiIgIjpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX2Rvd25f ZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIu cHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgOiI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAg ICAgICAgICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwp9CgoKCgoKc3Rh dGljIGlubGluZSBpbnQgZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0p CnsKICAgICAgICBpbnQgcmVzdWx0OwoKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o CiAgICAgICAgICAgICAgICAiIyBhdG9taWMgaW50ZXJydXB0aWJsZSBkb3duIG9wZXJhdGlvblxu XHQiCiAgICAgICAgICAgICAgICAiIiAiZGVjbCAlMVxuXHQiCiAgICAgICAgICAgICAgICAianMg MmZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgJTAsJTBcbiIKICAgICAgICAgICAgICAgICIx OlxuIgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIu dGV4dC5sb2NrLiIgInN5c2k4NiIgIlxuXHQiICIudGV4dC5sb2NrLiIgInN5c2k4NiIgIjpcblx0 IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX2Rvd25fZmFpbGVkX2lu dGVycnVwdGlibGVcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAgICAgICAg ICAgIi5wcmV2aW91c1xuXHQiCiAgICAgICAgICAgICAgICA6Ij1hIiAocmVzdWx0KSwgIj1tIiAo c2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiYyIgKHNlbSkKICAgICAgICAgICAgICAgIDoi bWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50 IGRvd25fdHJ5bG9jayhzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQp7CiAgICAgICAgaW50IHJlc3Vs dDsKCgoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMg YXRvbWljIGludGVycnVwdGlibGUgZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAg IiIgImRlY2wgJTFcblx0IgogICAgICAgICAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAgICAg ICAgICJ4b3JsICUwLCUwXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAg ICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzeXNpODYi ICJcblx0IiAiLnRleHQubG9jay4iICJzeXNpODYiICI6XG5cdCIgIi5lbmRpZlxuXHQiCiAgICAg ICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2ZhaWxlZF90cnlsb2NrXG5cdCIKICAgICAgICAg ICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXNcblx0IgogICAgICAg ICAgICAgICAgOiI9YSIgKHJlc3VsdCksICI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAg ICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgIHJldHVybiBy ZXN1bHQ7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB1cChzdHJ1Y3Qgc2VtYXBob3JlICog c2VtKQp7CgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAi IyBhdG9taWMgdXAgb3BlcmF0aW9uXG5cdCIKICAgICAgICAgICAgICAgICIiICJpbmNsICUwXG5c dCIKICAgICAgICAgICAgICAgICJqbGUgMmZcbiIKICAgICAgICAgICAgICAgICIxOlxuIgogICAg ICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5sb2Nr LiIgInN5c2k4NiIgIlxuXHQiICIudGV4dC5sb2NrLiIgInN5c2k4NiIgIjpcblx0IiAiLmVuZGlm XG5cdCIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX3VwX3dha2V1cFxuXHQiCiAgICAgICAg ICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAg ICAgICAgICAgICIuc3Vic2VjdGlvbiAwXG4iCiAgICAgICAgICAgICAgICA6Ij1tIiAoc2VtLT5j b3VudCkKICAgICAgICAgICAgICAgIDoiYyIgKHNlbSkKICAgICAgICAgICAgICAgIDoibWVtb3J5 Iik7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNlbV9nZXRjb3VudChzdHJ1Y3Qgc2VtYXBob3JlICpz ZW0pCnsKICAgICAgICByZXR1cm4gKCgmc2VtLT5jb3VudCktPmNvdW50ZXIpOwp9CiMgMjAxICIv dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCgoKZXh0ZXJuIHZvaWQg dXBkYXRlX2F0aW1lIChzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIHZvaWQgYnVmZmVyX2luaXQo dW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIGlub2RlX2luaXQodW5zaWduZWQgbG9uZyk7CmV4 dGVybiB2b2lkIG1udF9pbml0KHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBmaWxlc19pbml0 KHVuc2lnbmVkIGxvbmcgbWVtcGFnZXMpOwoKCmVudW0gYmhfc3RhdGVfYml0cyB7CiAgICAgICAg QkhfVXB0b2RhdGUsCiAgICAgICAgQkhfRGlydHksCiAgICAgICAgQkhfTG9jaywKICAgICAgICBC SF9SZXEsCiAgICAgICAgQkhfTWFwcGVkLAogICAgICAgIEJIX05ldywKICAgICAgICBCSF9Bc3lu YywKICAgICAgICBCSF9XYWl0X0lPLAogICAgICAgIEJIX0xhdW5kZXIsCiAgICAgICAgQkhfSkJE LAoKICAgICAgICBCSF9Qcml2YXRlU3RhcnQsCgoKfTsKIyAyNDIgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0cnVjdCBidWZmZXJfaGVhZCB7CgogICAgICAgIHN0 cnVjdCBidWZmZXJfaGVhZCAqYl9uZXh0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9ibG9ja25y OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBi X2xpc3Q7CiAgICAgICAga2Rldl90IGJfZGV2OwoKICAgICAgICBhdG9taWNfdCBiX2NvdW50Owog ICAgICAgIGtkZXZfdCBiX3JkZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX3N0YXRlOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVh ZCAqYl9uZXh0X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3ByZXZfZnJlZTsK ICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfdGhpc19wYWdlOwogICAgICAgIHN0cnVjdCBi dWZmZXJfaGVhZCAqYl9yZXFuZXh0OwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipiX3Bw cmV2OwogICAgICAgIGNoYXIgKiBiX2RhdGE7CiAgICAgICAgc3RydWN0IHBhZ2UgKmJfcGFnZTsK ICAgICAgICB2b2lkICgqYl9lbmRfaW8pKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCB1cHRv ZGF0ZSk7CiAgICAgICAgdm9pZCAqYl9wcml2YXRlOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGJf cnNlY3RvcjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBiX3dhaXQ7CgogICAgICAgIHN0cnVj dCBpbm9kZSAqIGJfaW5vZGU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBiX2lub2RlX2J1ZmZl cnM7Cn07Cgp0eXBlZGVmIHZvaWQgKGJoX2VuZF9pb190KShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo LCBpbnQgdXB0b2RhdGUpOwp2b2lkIGluaXRfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBi aF9lbmRfaW9fdCAqLCB2b2lkICopOwojIDI4OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1 ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHZvaWQgc2V0X2JoX3BhZ2Uoc3RydWN0IGJ1ZmZlcl9oZWFk ICpiaCwgc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKCgoKCiMgMSAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiIDEKCgoKCnN0 cnVjdCBwaXBlX2lub2RlX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CiAg ICAgICAgY2hhciAqYmFzZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2ln bmVkIGludCBzdGFydDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVhZGVyczsKICAgICAgICB1bnNp Z25lZCBpbnQgd3JpdGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ19yZWFkZXJzOwog ICAgICAgIHVuc2lnbmVkIGludCB3YWl0aW5nX3dyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50 IHJfY291bnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgd19jb3VudGVyOwp9OwojIDQyICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9waXBlX2ZzX2kuaCIKdm9pZCBwaXBlX3dh aXQoc3RydWN0IGlub2RlICogaW5vZGUpOwoKc3RydWN0IGlub2RlKiBwaXBlX25ldyhzdHJ1Y3Qg aW5vZGUqIGlub2RlKTsKIyAyOTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4 L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9taW5peF9m c19pLmgiIDEKCgoKCgoKc3RydWN0IG1pbml4X2lub2RlX2luZm8gewogICAgICAgIHVuaW9uIHsK ICAgICAgICAgICAgICAgIF9fdTE2IGkxX2RhdGFbMTZdOwogICAgICAgICAgICAgICAgX191MzIg aTJfZGF0YVsxNl07CiAgICAgICAgfSB1Owp9OwojIDI5NiAiL3Vzci9zcmMvbGludXgtMi40LjIw L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl L2xpbnV4L2V4dDJfZnNfaS5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl L2xpbnV4L2V4dDJfZnNfaS5oIgpzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIHsKICAgICAgICBfX3Uz MiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9mYWRk cjsKICAgICAgICBfX3U4IGlfZnJhZ19ubzsKICAgICAgICBfX3U4IGlfZnJhZ19zaXplOwogICAg ICAgIF9fdTMyIGlfZmlsZV9hY2w7CiAgICAgICAgX191MzIgaV9kaXJfYWNsOwogICAgICAgIF9f dTMyIGlfZHRpbWU7CiAgICAgICAgX191MzIgaV9ibG9ja19ncm91cDsKICAgICAgICBfX3UzMiBp X25leHRfYWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2dvYWw7CiAgICAg ICAgX191MzIgaV9wcmVhbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2NvdW50 OwogICAgICAgIF9fdTMyIGlfZGlyX3N0YXJ0X2xvb2t1cDsKICAgICAgICBpbnQgaV9uZXdfaW5v ZGU6MTsKfTsKIyAyOTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgi IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9leHQzX2ZzX2kuaCIg MQojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9leHQzX2ZzX2kuaCIK c3RydWN0IGV4dDNfaW5vZGVfaW5mbyB7CiAgICAgICAgX191MzIgaV9kYXRhWzE1XTsKICAgICAg ICBfX3UzMiBpX2ZsYWdzOwoKCgoKCgogICAgICAgIF9fdTMyIGlfZmlsZV9hY2w7CiAgICAgICAg X191MzIgaV9kaXJfYWNsOwogICAgICAgIF9fdTMyIGlfZHRpbWU7CiAgICAgICAgX191MzIgaV9i bG9ja19ncm91cDsKICAgICAgICBfX3UzMiBpX3N0YXRlOwogICAgICAgIF9fdTMyIGlfbmV4dF9h bGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfZ29hbDsKCgoKCiAgICAgICAg X191MzIgaV9kaXJfc3RhcnRfbG9va3VwOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGlfb3Jw aGFuOwojIDYzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9leHQzX2ZzX2ku aCIKICAgICAgICBsb2ZmX3QgaV9kaXNrc2l6ZTsKIyA3NSAiL3Vzci9zcmMvbGludXgtMi40LjIw L2luY2x1ZGUvbGludXgvZXh0M19mc19pLmgiCiAgICAgICAgc3RydWN0IHJ3X3NlbWFwaG9yZSB0 cnVuY2F0ZV9zZW07Cn07CiMgMjk4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaHBmc19m c19pLmgiIDEKCgoKc3RydWN0IGhwZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBtbXVfcHJpdmF0ZTsKICAgICAgICBpbm9fdCBpX3BhcmVudF9kaXI7CiAgICAgICAgdW5zaWdu ZWQgaV9kbm87CiAgICAgICAgdW5zaWduZWQgaV9kcG9zOwogICAgICAgIHVuc2lnbmVkIGlfZHN1 YmRubzsKICAgICAgICB1bnNpZ25lZCBpX2ZpbGVfc2VjOwogICAgICAgIHVuc2lnbmVkIGlfZGlz a19zZWM7CiAgICAgICAgdW5zaWduZWQgaV9uX3NlY3M7CiAgICAgICAgdW5zaWduZWQgaV9lYV9z aXplOwogICAgICAgIHVuc2lnbmVkIGlfY29udiA6IDI7CiAgICAgICAgdW5zaWduZWQgaV9lYV9t b2RlIDogMTsKICAgICAgICB1bnNpZ25lZCBpX2VhX3VpZCA6IDE7CiAgICAgICAgdW5zaWduZWQg aV9lYV9naWQgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZGlydHkgOiAxOwogICAgICAgIHN0cnVj dCBzZW1hcGhvcmUgaV9zZW07CiAgICAgICAgbG9mZl90ICoqaV9yZGRpcl9vZmY7Cn07CiMgMjk5 ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbnRmc19mc19pLmgiIDEKCgoKCgoKc3RydWN0 IG50ZnNfYXR0cmlidXRlOwpzdHJ1Y3QgbnRmc19zYl9pbmZvOwoKCgoKdHlwZWRlZiB1OCBudGZz X3U4Owp0eXBlZGVmIHUxNiBudGZzX3UxNjsKdHlwZWRlZiB1MzIgbnRmc191MzI7CnR5cGVkZWYg dTY0IG50ZnNfdTY0Owp0eXBlZGVmIHM4IG50ZnNfczg7CnR5cGVkZWYgczE2IG50ZnNfczE2Owp0 eXBlZGVmIHMzMiBudGZzX3MzMjsKdHlwZWRlZiBzNjQgbnRmc19zNjQ7CgoKCgp0eXBlZGVmIF9f a2VybmVsX21vZGVfdCBudG1vZGVfdDsKCgoKdHlwZWRlZiB1aWRfdCBudGZzX3VpZF90OwoKCgp0 eXBlZGVmIGdpZF90IG50ZnNfZ2lkX3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfc2l6ZV90IG50ZnNf c2l6ZV90OwoKCgp0eXBlZGVmIF9fa2VybmVsX3RpbWVfdCBudGZzX3RpbWVfdDsKCgoKCgp0eXBl ZGVmIHUxNiBudGZzX3djaGFyX3Q7CgoKCgp0eXBlZGVmIHM2NCBudGZzX29mZnNldF90OwoKCgoK dHlwZWRlZiB1NjQgbnRmc190aW1lNjRfdDsKIyA2OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu Y2x1ZGUvbGludXgvbnRmc19mc19pLmgiCnR5cGVkZWYgczMyIG50ZnNfY2x1c3Rlcl90OwoKCgpz dHJ1Y3QgbnRmc19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbnRmc19zYl9pbmZvICp2b2w7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX251bWJlcjsKICAgICAgICBfX3UxNiBzZXF1ZW5jZV9u dW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciAqYXR0cjsKICAgICAgICBpbnQgYXR0cl9jb3Vu dDsKICAgICAgICBzdHJ1Y3QgbnRmc19hdHRyaWJ1dGUgKmF0dHJzOwogICAgICAgIGludCByZWNv cmRfY291bnQ7CiAgICAgICAgaW50ICpyZWNvcmRzOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAg ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVjb3Jkc2l6ZTsK ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAgICAgICAg ICAgICAgICB9IGluZGV4OwogICAgICAgIH0gdTsKfTsKIyAzMDAgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9saW51eC9tc2Rvc19mc19pLmgiIDEKCgoKCgoKCnN0cnVjdCBtc2Rvc19pbm9kZV9pbmZv IHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIGludCBpX3N0YXJ0 OwogICAgICAgIGludCBpX2xvZ3N0YXJ0OwogICAgICAgIGludCBpX2F0dHJzOwogICAgICAgIGlu dCBpX2N0aW1lX21zOwogICAgICAgIGludCBpX2xvY2F0aW9uOwogICAgICAgIHN0cnVjdCBpbm9k ZSAqaV9mYXRfaW5vZGU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2ZhdF9oYXNoOwp9Owoj IDMwMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Vtc2Rvc19mc19pLmgiIDEKIyAzOSAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIKc3RydWN0 IGRpcl9sb2NraW5nX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHA7CiAgICAgICAg c2hvcnQgaW50IGxvb2tpbmc7CiAgICAgICAgc2hvcnQgaW50IGNyZWF0aW5nOwoKCgogICAgICAg IGxvbmcgcGlkOwoKfTsKCnN0cnVjdCB1bXNkb3NfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0 IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaW5mbzsKICAgICAgICBzdHJ1Y3QgZGlyX2xvY2tpbmdf aW5mbyBkaXJfaW5mbzsKICAgICAgICBpbnQgaV9wYXRjaGVkOwogICAgICAgIGludCBpX2lzX2hs aW5rOwogICAgICAgIG9mZl90IHBvczsKfTsKIyAzMDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s aW51eC9pc29fZnNfaS5oIiAxCgoKCmVudW0gaXNvZnNfZmlsZV9mb3JtYXQgewogICAgICAgIGlz b2ZzX2ZpbGVfbm9ybWFsID0gMCwKICAgICAgICBpc29mc19maWxlX3NwYXJzZSA9IDEsCiAgICAg ICAgaXNvZnNfZmlsZV9jb21wcmVzc2VkID0gMiwKfTsKCgoKCnN0cnVjdCBpc29faW5vZGVfaW5m byB7CiAgICAgICAgdW5zaWduZWQgaW50IGlfZmlyc3RfZXh0ZW50OwogICAgICAgIHVuc2lnbmVk IGNoYXIgaV9maWxlX2Zvcm1hdDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlfZm9ybWF0X3Bhcm1b M107CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX25leHRfc2VjdGlvbl9pbm87CiAgICAgICAgb2Zm X3QgaV9zZWN0aW9uX3NpemU7Cn07CiMgMzAzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv bmZzX2ZzX2kuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu dXgvbmZzLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmZz LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3VucnBjL21zZ19w cm90LmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3VucnBj L21zZ19wcm90LmgiCmVudW0gcnBjX2F1dGhfZmxhdm9yIHsKICAgICAgICBSUENfQVVUSF9OVUxM ID0gMCwKICAgICAgICBSUENfQVVUSF9VTklYID0gMSwKICAgICAgICBSUENfQVVUSF9TSE9SVCA9 IDIsCiAgICAgICAgUlBDX0FVVEhfREVTID0gMywKICAgICAgICBSUENfQVVUSF9LUkIgPSA0LAp9 OwoKZW51bSBycGNfbXNnX3R5cGUgewogICAgICAgIFJQQ19DQUxMID0gMCwKICAgICAgICBSUENf UkVQTFkgPSAxCn07CgplbnVtIHJwY19yZXBseV9zdGF0IHsKICAgICAgICBSUENfTVNHX0FDQ0VQ VEVEID0gMCwKICAgICAgICBSUENfTVNHX0RFTklFRCA9IDEKfTsKCmVudW0gcnBjX2FjY2VwdF9z dGF0IHsKICAgICAgICBSUENfU1VDQ0VTUyA9IDAsCiAgICAgICAgUlBDX1BST0dfVU5BVkFJTCA9 IDEsCiAgICAgICAgUlBDX1BST0dfTUlTTUFUQ0ggPSAyLAogICAgICAgIFJQQ19QUk9DX1VOQVZB SUwgPSAzLAogICAgICAgIFJQQ19HQVJCQUdFX0FSR1MgPSA0LAogICAgICAgIFJQQ19TWVNURU1f RVJSID0gNQp9OwoKZW51bSBycGNfcmVqZWN0X3N0YXQgewogICAgICAgIFJQQ19NSVNNQVRDSCA9 IDAsCiAgICAgICAgUlBDX0FVVEhfRVJST1IgPSAxCn07CgplbnVtIHJwY19hdXRoX3N0YXQgewog ICAgICAgIFJQQ19BVVRIX09LID0gMCwKICAgICAgICBSUENfQVVUSF9CQURDUkVEID0gMSwKICAg ICAgICBSUENfQVVUSF9SRUpFQ1RFRENSRUQgPSAyLAogICAgICAgIFJQQ19BVVRIX0JBRFZFUkYg PSAzLAogICAgICAgIFJQQ19BVVRIX1JFSkVDVEVEVkVSRiA9IDQsCiAgICAgICAgUlBDX0FVVEhf VE9PV0VBSyA9IDUKfTsKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv bmZzLmgiIDIKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmZzLmgi CiBlbnVtIG5mc19zdGF0IHsKICAgICAgICBORlNfT0sgPSAwLAogICAgICAgIE5GU0VSUl9QRVJN ID0gMSwKICAgICAgICBORlNFUlJfTk9FTlQgPSAyLAogICAgICAgIE5GU0VSUl9JTyA9IDUsCiAg ICAgICAgTkZTRVJSX05YSU8gPSA2LAogICAgICAgIE5GU0VSUl9FQUdBSU4gPSAxMSwKICAgICAg ICBORlNFUlJfQUNDRVMgPSAxMywKICAgICAgICBORlNFUlJfRVhJU1QgPSAxNywKICAgICAgICBO RlNFUlJfWERFViA9IDE4LAogICAgICAgIE5GU0VSUl9OT0RFViA9IDE5LAogICAgICAgIE5GU0VS Ul9OT1RESVIgPSAyMCwKICAgICAgICBORlNFUlJfSVNESVIgPSAyMSwKICAgICAgICBORlNFUlJf SU5WQUwgPSAyMiwKICAgICAgICBORlNFUlJfRkJJRyA9IDI3LAogICAgICAgIE5GU0VSUl9OT1NQ QyA9IDI4LAogICAgICAgIE5GU0VSUl9ST0ZTID0gMzAsCiAgICAgICAgTkZTRVJSX01MSU5LID0g MzEsCiAgICAgICAgTkZTRVJSX09QTk9UU1VQUCA9IDQ1LAogICAgICAgIE5GU0VSUl9OQU1FVE9P TE9ORyA9IDYzLAogICAgICAgIE5GU0VSUl9OT1RFTVBUWSA9IDY2LAogICAgICAgIE5GU0VSUl9E UVVPVCA9IDY5LAogICAgICAgIE5GU0VSUl9TVEFMRSA9IDcwLAogICAgICAgIE5GU0VSUl9SRU1P VEUgPSA3MSwKICAgICAgICBORlNFUlJfV0ZMVVNIID0gOTksCiAgICAgICAgTkZTRVJSX0JBREhB TkRMRSA9IDEwMDAxLAogICAgICAgIE5GU0VSUl9OT1RfU1lOQyA9IDEwMDAyLAogICAgICAgIE5G U0VSUl9CQURfQ09PS0lFID0gMTAwMDMsCiAgICAgICAgTkZTRVJSX05PVFNVUFAgPSAxMDAwNCwK ICAgICAgICBORlNFUlJfVE9PU01BTEwgPSAxMDAwNSwKICAgICAgICBORlNFUlJfU0VSVkVSRkFV TFQgPSAxMDAwNiwKICAgICAgICBORlNFUlJfQkFEVFlQRSA9IDEwMDA3LAogICAgICAgIE5GU0VS Ul9KVUtFQk9YID0gMTAwMDgKIH07CgoKCmVudW0gbmZzX2Z0eXBlIHsKICAgICAgICBORk5PTiA9 IDAsCiAgICAgICAgTkZSRUcgPSAxLAogICAgICAgIE5GRElSID0gMiwKICAgICAgICBORkJMSyA9 IDMsCiAgICAgICAgTkZDSFIgPSA0LAogICAgICAgIE5GTE5LID0gNSwKICAgICAgICBORlNPQ0sg PSA2LAogICAgICAgIE5GQkFEID0gNywKICAgICAgICBORkZJRk8gPSA4Cn07CgoKCgoKCnN0cnVj dCBuZnNfZmggewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNpemU7CiAgICAgICAgdW5zaWduZWQg Y2hhciBkYXRhWzY0XTsKfTsKIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp bnV4L25mcy5oIgplbnVtIG5mczNfc3RhYmxlX2hvdyB7CiAgICAgICAgTkZTX1VOU1RBQkxFID0g MCwKICAgICAgICBORlNfREFUQV9TWU5DID0gMSwKICAgICAgICBORlNfRklMRV9TWU5DID0gMgp9 OwojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIK CgoKCnN0cnVjdCBuZnNfaW5vZGVfaW5mbyB7CgoKCiAgICAgICAgX191NjQgZmlsZWlkOwoKCgoK ICAgICAgICBzdHJ1Y3QgbmZzX2ZoIGZoOwoKCgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmbGFn czsKIyA0NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIK ICAgICAgICB1bnNpZ25lZCBsb25nIHJlYWRfY2FjaGVfamlmZmllczsKICAgICAgICBfX3U2NCBy ZWFkX2NhY2hlX2N0aW1lOwogICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfbXRpbWU7CiAgICAgICAg X191NjQgcmVhZF9jYWNoZV9pc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGF0dHJ0aW1lbzsK ICAgICAgICB1bnNpZ25lZCBsb25nIGF0dHJ0aW1lb190aW1lc3RhbXA7CgoKCgoKICAgICAgICB1 bnNpZ25lZCBsb25nIGNhY2hlX210aW1lX2ppZmZpZXM7CgoKCgoKICAgICAgICBfX3UzMiBjb29r aWV2ZXJmWzJdOwoKCgoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHJlYWQ7CiAgICAgICAgc3Ry dWN0IGxpc3RfaGVhZCBkaXJ0eTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNvbW1pdDsKICAg ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHdyaXRlYmFjazsKCiAgICAgICAgdW5zaWduZWQgaW50IG5y ZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaXJ0eSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuY29tbWl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5wYWdlczsKCgogICAgICAgIHN0cnVjdCBycGNfY3JlZCAqbW1fY3JlZDsKfTsKIyA5MiAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIKc3RydWN0IG5m c19sb2NrX2luZm8gewogICAgICAgIHUzMiBzdGF0ZTsKICAgICAgICB1MzIgZmxhZ3M7CiAgICAg ICAgc3RydWN0IG5sbV9ob3N0ICpob3N0Owp9OwojIDMwNCAiL3Vzci9zcmMvbGludXgtMi40LjIw L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl L2xpbnV4L3N5c3ZfZnNfaS5oIiAxCgoKCgoKCnN0cnVjdCBzeXN2X2lub2RlX2luZm8gewogICAg ICAgIHUzMiBpX2RhdGFbMTArMSsxKzFdOwoKCgoKICAgICAgICB1MzIgaV9kaXJfc3RhcnRfbG9v a3VwOwp9OwojIDMwNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIg MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAx CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYS5vdXQuaCIgMQoK CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYS5vdXQuaCIgMQoK CgpzdHJ1Y3QgZXhlYwp7CiAgdW5zaWduZWQgbG9uZyBhX2luZm87CiAgdW5zaWduZWQgYV90ZXh0 OwogIHVuc2lnbmVkIGFfZGF0YTsKICB1bnNpZ25lZCBhX2JzczsKICB1bnNpZ25lZCBhX3N5bXM7 CiAgdW5zaWduZWQgYV9lbnRyeTsKICB1bnNpZ25lZCBhX3Ryc2l6ZTsKICB1bnNpZ25lZCBhX2Ry c2l6ZTsKfTsKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9hLm91dC5o IiAyCgoKCgplbnVtIG1hY2hpbmVfdHlwZSB7CgoKCiAgTV9PTERTVU4yID0gMCwKCgoKCiAgTV82 ODAxMCA9IDEsCgoKCgogIE1fNjgwMjAgPSAyLAoKCgoKICBNX1NQQVJDID0gMywKCgogIE1fMzg2 ID0gMTAwLAogIE1fTUlQUzEgPSAxNTEsCiAgTV9NSVBTMiA9IDE1Mgp9OwojIDE1NyAiL3Vzci9z cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYS5vdXQuaCIKc3RydWN0IG5saXN0IHsKICB1 bmlvbiB7CiAgICBjaGFyICpuX25hbWU7CiAgICBzdHJ1Y3Qgbmxpc3QgKm5fbmV4dDsKICAgIGxv bmcgbl9zdHJ4OwogIH0gbl91bjsKICB1bnNpZ25lZCBjaGFyIG5fdHlwZTsKICBjaGFyIG5fb3Ro ZXI7CiAgc2hvcnQgbl9kZXNjOwogIHVuc2lnbmVkIGxvbmcgbl92YWx1ZTsKfTsKIyAyMzUgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0cnVjdCByZWxvY2F0 aW9uX2luZm8KewoKICBpbnQgcl9hZGRyZXNzOwoKICB1bnNpZ25lZCBpbnQgcl9zeW1ib2xudW06 MjQ7CgoKCiAgdW5zaWduZWQgaW50IHJfcGNyZWw6MTsKCgogIHVuc2lnbmVkIGludCByX2xlbmd0 aDoyOwoKCgoKCgogIHVuc2lnbmVkIGludCByX2V4dGVybjoxOwoKCgoKCgoKICB1bnNpZ25lZCBp bnQgcl9wYWQ6NDsKCn07CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv YWZmc19mc19pLmgiIDIKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4 L3RpbWUuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWUu aCIKc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAgICAgIGxvbmcg dHZfbnNlYzsKfTsKIyAzMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGlt ZS5oIgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nCnRpbWVzcGVjX3RvX2ppZmZpZXMo c3RydWN0IHRpbWVzcGVjICp2YWx1ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VjID0gdmFs dWUtPnR2X3NlYzsKICAgICAgICBsb25nIG5zZWMgPSB2YWx1ZS0+dHZfbnNlYzsKCiAgICAgICAg aWYgKHNlYyA+PSAoKCh+MFVMID4+IDEpLTEpIC8gMTAwKSkKICAgICAgICAgICAgICAgIHJldHVy biAoKH4wVUwgPj4gMSktMSk7CiAgICAgICAgbnNlYyArPSAxMDAwMDAwMDAwTCAvIDEwMCAtIDE7 CiAgICAgICAgbnNlYyAvPSAxMDAwMDAwMDAwTCAvIDEwMDsKICAgICAgICByZXR1cm4gMTAwICog c2VjICsgbnNlYzsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApqaWZmaWVzX3RvX3RpbWVzcGVj KHVuc2lnbmVkIGxvbmcgamlmZmllcywgc3RydWN0IHRpbWVzcGVjICp2YWx1ZSkKewogICAgICAg IHZhbHVlLT50dl9uc2VjID0gKGppZmZpZXMgJSAxMDApICogKDEwMDAwMDAwMDBMIC8gMTAwKTsK ICAgICAgICB2YWx1ZS0+dHZfc2VjID0gamlmZmllcyAvIDEwMDsKfQojIDY3ICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg bG9uZwpta3RpbWUgKHVuc2lnbmVkIGludCB5ZWFyLCB1bnNpZ25lZCBpbnQgbW9uLAogICAgICAg IHVuc2lnbmVkIGludCBkYXksIHVuc2lnbmVkIGludCBob3VyLAogICAgICAgIHVuc2lnbmVkIGlu dCBtaW4sIHVuc2lnbmVkIGludCBzZWMpCnsKICAgICAgICBpZiAoMCA+PSAoaW50KSAobW9uIC09 IDIpKSB7CiAgICAgICAgICAgICAgICBtb24gKz0gMTI7CiAgICAgICAgICAgICAgICB5ZWFyIC09 IDE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCgoCiAgICAgICAgICAgICAgICAodW5zaWdu ZWQgbG9uZykgKHllYXIvNCAtIHllYXIvMTAwICsgeWVhci80MDAgKyAzNjcqbW9uLzEyICsgZGF5 KSArCiAgICAgICAgICAgICAgICAgICAgICAgIHllYXIqMzY1IC0gNzE5NDk5CiAgICAgICAgICAg ICkqMjQgKyBob3VyCiAgICAgICAgICApKjYwICsgbWluCiAgICAgICAgKSo2MCArIHNlYzsKfQoK CgoKc3RydWN0IHRpbWV2YWwgewogICAgICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgc3VzZWNv bmRzX3QgdHZfdXNlYzsKfTsKCnN0cnVjdCB0aW1lem9uZSB7CiAgICAgICAgaW50IHR6X21pbnV0 ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9OwoKCgoKZXh0ZXJuIHZvaWQgZG9fZ2V0 dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CmV4dGVybiB2b2lkIGRvX3NldHRpbWVvZmRh eShzdHJ1Y3QgdGltZXZhbCAqdHYpOwojIDExOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1 ZGUvbGludXgvdGltZS5oIgpzdHJ1Y3QgaXRpbWVyc3BlYyB7CiAgICAgICAgc3RydWN0IHRpbWVz cGVjIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKfTsKCnN0 cnVjdCBpdGltZXJ2YWwgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwogICAg ICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAyCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIgpzdHJ1Y3QgYWZmc19leHRfa2V5IHsKICAgICAg ICB1MzIgZXh0OwogICAgICAgIHUzMiBrZXk7Cn07CgoKCgpzdHJ1Y3QgYWZmc19pbm9kZV9pbmZv IHsKICAgICAgICB1MzIgaV9vcGVuY250OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV9saW5r X2xvY2s7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX2V4dF9sb2NrOwoKICAgICAgICB1MzIg aV9ibGtjbnQ7CiAgICAgICAgdTMyIGlfZXh0Y250OwogICAgICAgIHUzMiAqaV9sYzsKICAgICAg ICB1MzIgaV9sY19zaXplOwogICAgICAgIHUzMiBpX2xjX3NoaWZ0OwogICAgICAgIHUzMiBpX2xj X21hc2s7CiAgICAgICAgc3RydWN0IGFmZnNfZXh0X2tleSAqaV9hYzsKICAgICAgICB1MzIgaV9l eHRfbGFzdDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmlfZXh0X2JoOwogICAgICAgIHVu c2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAgdTMyIGlfcHJvdGVjdDsKICAgICAgICB1 MzIgaV9sYXN0YWxsb2M7CiAgICAgICAgaW50IGlfcGFfY250OwojIDUxICIvdXNyL3NyYy9saW51 eC0yLjQuMjAvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIKfTsKIyAzMDYgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu MjAvaW5jbHVkZS9saW51eC91ZnNfZnNfaS5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2xpbnV4L3Vmc19mc19pLmgiCnN0cnVjdCB1ZnNfaW5vZGVfaW5mbyB7CiAgICAg ICAgdW5pb24gewogICAgICAgICAgICAgICAgX191MzIgaV9kYXRhWzE1XTsKICAgICAgICAgICAg ICAgIF9fdTggaV9zeW1saW5rWzQqMTVdOwogICAgICAgIH0gaV91MTsKICAgICAgICBfX3UzMiBp X2ZsYWdzOwogICAgICAgIF9fdTMyIGlfZ2VuOwogICAgICAgIF9fdTMyIGlfc2hhZG93OwogICAg ICAgIF9fdTMyIGlfdW51c2VkMTsKICAgICAgICBfX3UzMiBpX3VudXNlZDI7CiAgICAgICAgX191 MzIgaV9vZWZ0ZmxhZzsKICAgICAgICBfX3UxNiBpX29zeW5jOwogICAgICAgIF9fdTMyIGlfbGFz dGZyYWc7Cn07CiMgMzA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5o IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZWZzX2ZzX2kuaCIg MQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIgp0 eXBlZGVmIGludDMyX3QgZWZzX2Jsb2NrX3Q7CnR5cGVkZWYgdWludDMyX3QgZWZzX2lub190OwoK CgoKCgp0eXBlZGVmIHVuaW9uIGV4dGVudF91IHsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJhd1s4 XTsKICAgICAgICBzdHJ1Y3QgZXh0ZW50X3MgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 IGV4X21hZ2ljOjg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfYm46MjQ7CiAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbGVuZ3RoOjg7CiAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgZXhfb2Zmc2V0OjI0OwogICAgICAgIH0gY29va2VkOwp9IGVmc19leHRlbnQ7Cgp0 eXBlZGVmIHN0cnVjdCBlZGV2cyB7CiAgICAgICAgc2hvcnQgb2RldjsKICAgICAgICB1bnNpZ25l ZCBpbnQgbmRldjsKfSBlZnNfZGV2czsKCgoKCgpzdHJ1Y3QgZWZzX2Rpbm9kZSB7CiAgICAgICAg dV9zaG9ydCBkaV9tb2RlOwogICAgICAgIHNob3J0IGRpX25saW5rOwogICAgICAgIHVfc2hvcnQg ZGlfdWlkOwogICAgICAgIHVfc2hvcnQgZGlfZ2lkOwogICAgICAgIGludDMyX3QgZGlfc2l6ZTsK ICAgICAgICBpbnQzMl90IGRpX2F0aW1lOwogICAgICAgIGludDMyX3QgZGlfbXRpbWU7CiAgICAg ICAgaW50MzJfdCBkaV9jdGltZTsKICAgICAgICB1aW50MzJfdCBkaV9nZW47CiAgICAgICAgc2hv cnQgZGlfbnVtZXh0ZW50czsKICAgICAgICB1X2NoYXIgZGlfdmVyc2lvbjsKICAgICAgICB1X2No YXIgZGlfc3BhcmU7CiAgICAgICAgdW5pb24gZGlfYWRkciB7CiAgICAgICAgICAgICAgICBlZnNf ZXh0ZW50IGRpX2V4dGVudHNbMTJdOwogICAgICAgICAgICAgICAgZWZzX2RldnMgZGlfZGV2Owog ICAgICAgIH0gZGlfdTsKfTsKCgpzdHJ1Y3QgZWZzX2lub2RlX2luZm8gewogICAgICAgIGludCBu dW1leHRlbnRzOwogICAgICAgIGludCBsYXN0ZXh0ZW50OwoKICAgICAgICBlZnNfZXh0ZW50IGV4 dGVudHNbMTJdOwp9OwojIDMwOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNf aS5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNf aS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMQoj IDEwOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIgp0eXBlZGVm IHVuc2lnbmVkIGxvbmcgbG9uZyB1X3F1YWRfdDsKIyAxNjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0IHZlbnVzX2RpcmVudCB7CiAgICAgICAgdW5z aWduZWQgbG9uZyBkX2ZpbGVubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkX3JlY2xlbjsKICAg ICAgICB1bnNpZ25lZCBjaGFyIGRfdHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRfbmFtbGVu OwogICAgICAgIGNoYXIgZF9uYW1lWzI1NSArIDFdOwp9OwojIDE5OCAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIgp0eXBlZGVmIHVfbG9uZyBWb2x1bWVJZDsKdHlw ZWRlZiB1X2xvbmcgVm5vZGVJZDsKdHlwZWRlZiB1X2xvbmcgVW5pcXVlX3Q7CnR5cGVkZWYgdV9s b25nIEZpbGVWZXJzaW9uOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgVmljZUZpZCB7CiAgICBWb2x1bWVJ ZCBWb2x1bWU7CiAgICBWbm9kZUlkIFZub2RlOwogICAgVW5pcXVlX3QgVW5pcXVlOwp9IFZpY2VG aWQ7CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbm9fdCBjb2RhX2YyaShzdHJ1Y3QgVmljZUZpZCAq ZmlkKQp7CiAgICAgICAgaWYgKCAhIGZpZCApCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg ICAgICBpZiAoZmlkLT5Wbm9kZSA9PSAweGZmZmZmZmZlIHx8IGZpZC0+Vm5vZGUgPT0gMHhmZmZm ZmZmZikKICAgICAgICAgICAgICAgIHJldHVybiAoKGZpZC0+Vm9sdW1lIDw8IDIwKSB8IChmaWQt PlVuaXF1ZSAmIDB4ZmZmZmYpKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4g KGZpZC0+VW5pcXVlICsgKGZpZC0+Vm5vZGU8PDEwKSArIChmaWQtPlZvbHVtZTw8MjApKTsKfQoj IDIzMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIgp0eXBlZGVm IHVfaW50MzJfdCB2dWlkX3Q7CnR5cGVkZWYgdV9pbnQzMl90IHZnaWRfdDsKCgoKCnN0cnVjdCBj b2RhX2NyZWQgewogICAgdnVpZF90IGNyX3VpZCwgY3JfZXVpZCwgY3Jfc3VpZCwgY3JfZnN1aWQ7 CiAgICB2Z2lkX3QgY3JfZ3JvdXBpZCwgY3JfZWdpZCwgY3Jfc2dpZCwgY3JfZnNnaWQ7Cn07CgoK CgoKCgplbnVtIGNvZGFfdnR5cGUgeyBDX1ZOT04sIENfVlJFRywgQ19WRElSLCBDX1ZCTEssIENf VkNIUiwgQ19WTE5LLCBDX1ZTT0NLLCBDX1ZGSUZPLCBDX1ZCQUQgfTsKCnN0cnVjdCBjb2RhX3Zh dHRyIHsKICAgICAgICBsb25nIHZhX3R5cGU7CiAgICAgICAgdV9zaG9ydCB2YV9tb2RlOwogICAg ICAgIHNob3J0IHZhX25saW5rOwogICAgICAgIHZ1aWRfdCB2YV91aWQ7CiAgICAgICAgdmdpZF90 IHZhX2dpZDsKICAgICAgICBsb25nIHZhX2ZpbGVpZDsKICAgICAgICB1X3F1YWRfdCB2YV9zaXpl OwogICAgICAgIGxvbmcgdmFfYmxvY2tzaXplOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9h dGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfbXRpbWU7CiAgICAgICAgc3RydWN0IHRp bWVzcGVjIHZhX2N0aW1lOwogICAgICAgIHVfbG9uZyB2YV9nZW47CiAgICAgICAgdV9sb25nIHZh X2ZsYWdzOwogICAgICAgIHVfcXVhZF90IHZhX3JkZXY7CiAgICAgICAgdV9xdWFkX3QgdmFfYnl0 ZXM7CiAgICAgICAgdV9xdWFkX3QgdmFfZmlsZXJldjsKfTsKCgoKCnN0cnVjdCBjb2RhX3N0YXRm cyB7CiAgICBpbnQzMl90IGZfYmxvY2tzOwogICAgaW50MzJfdCBmX2JmcmVlOwogICAgaW50MzJf dCBmX2JhdmFpbDsKICAgIGludDMyX3QgZl9maWxlczsKICAgIGludDMyX3QgZl9mZnJlZTsKfTsK IyAzMzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0 IGNvZGFfaW5faGRyIHsKICAgIHVuc2lnbmVkIGxvbmcgb3Bjb2RlOwogICAgdW5zaWduZWQgbG9u ZyB1bmlxdWU7CiAgICB1X3Nob3J0IHBpZDsKICAgIHVfc2hvcnQgcGdpZDsKICAgIHVfc2hvcnQg c2lkOwogICAgc3RydWN0IGNvZGFfY3JlZCBjcmVkOwp9OwoKCnN0cnVjdCBjb2RhX291dF9oZHIg ewogICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBsb25nIHVuaXF1ZTsKICAg IHVuc2lnbmVkIGxvbmcgcmVzdWx0Owp9OwoKCnN0cnVjdCBjb2RhX3Jvb3Rfb3V0IHsKICAgIHN0 cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9y b290X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpbjsKfTsKCgpzdHJ1Y3QgY29kYV9vcGVu X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGlu dCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9o ZHIgb2g7CiAgICB1X3F1YWRfdCBkZXY7CiAgICBpbm9fdCBpbm9kZTsKfTsKCgoKc3RydWN0IGNv ZGFfc3RvcmVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlk OwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfc3RvcmVfb3V0IHsKICAgIHN0cnVjdCBj b2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3JlbGVhc2VfaW4gewogICAgc3RydWN0 IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3Ry dWN0IGNvZGFfcmVsZWFzZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoK c3RydWN0IGNvZGFfY2xvc2VfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmlj ZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfY2xvc2Vfb3V0IHsKICAg IHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX2lvY3RsX2luIHsKICAg IHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBjbWQ7CiAg ICBpbnQgbGVuOwogICAgaW50IHJ3ZmxhZzsKICAgIGNoYXIgKmRhdGE7Cn07CgpzdHJ1Y3QgY29k YV9pb2N0bF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGludCBsZW47CiAg ICBjYWRkcl90IGRhdGE7Cn07CgoKCnN0cnVjdCBjb2RhX2dldGF0dHJfaW4gewogICAgc3RydWN0 IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfZ2V0YXR0 cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRy IGF0dHI7Cn07CgoKCnN0cnVjdCBjb2RhX3NldGF0dHJfaW4gewogICAgc3RydWN0IGNvZGFfaW5f aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsK CnN0cnVjdCBjb2RhX3NldGF0dHJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9 OwoKCnN0cnVjdCBjb2RhX2FjY2Vzc19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAg ICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9hY2Nlc3Nfb3V0 IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCgoKCgoKc3RydWN0IGNvZGFfbG9v a3VwX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAg IGludCBuYW1lOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfbG9va3VwX291dCB7CiAg ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHZ0eXBl Owp9OwoKCgpzdHJ1Y3QgY29kYV9jcmVhdGVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGlo OwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKICAgIGludCBl eGNsOwogICAgaW50IG1vZGU7CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBjb2RhX2NyZWF0ZV9v dXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0 cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07CgoKCnN0cnVjdCBjb2RhX3JlbW92ZV9pbiB7CiAgICBz dHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgbmFtZTsKfTsK CnN0cnVjdCBjb2RhX3JlbW92ZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07 CgoKc3RydWN0IGNvZGFfbGlua19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBW aWNlRmlkIHNvdXJjZUZpZDsKICAgIFZpY2VGaWQgZGVzdEZpZDsKICAgIGludCB0bmFtZTsKfTsK CnN0cnVjdCBjb2RhX2xpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoK CgpzdHJ1Y3QgY29kYV9yZW5hbWVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAg VmljZUZpZCBzb3VyY2VGaWQ7CiAgICBpbnQgc3JjbmFtZTsKICAgIFZpY2VGaWQgZGVzdEZpZDsK ICAgIGludCBkZXN0bmFtZTsKfTsKCnN0cnVjdCBjb2RhX3JlbmFtZV9vdXQgewogICAgc3RydWN0 IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfbWtkaXJfaW4gewogICAgc3RydWN0 IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIg YXR0cjsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfbWtkaXJfb3V0IHsKICAgIHN0cnVj dCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0 ciBhdHRyOwp9OwoKCgpzdHJ1Y3QgY29kYV9ybWRpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9o ZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBjb2RhX3Jt ZGlyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9z eW1saW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsK ICAgIGludCBzcmNuYW1lOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKICAgIGludCB0bmFt ZTsKfTsKCnN0cnVjdCBjb2RhX3N5bWxpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIg b3V0Owp9OwoKCnN0cnVjdCBjb2RhX3JlYWRsaW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hk ciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3JlYWRsaW5rX291dCB7CiAg ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGNvdW50OwogICAgY2FkZHJfdCBkYXRh Owp9OwoKCgpzdHJ1Y3QgY29kYV9mc3luY19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7 CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9mc3luY19vdXQgewogICAgc3RydWN0 IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfdmdldF9pbiB7CiAgICBzdHJ1Y3Qg Y29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV92Z2V0X291 dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50 IHZ0eXBlOwp9OwojIDYxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29k YS5oIgpzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIg b2g7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3phcGZpbGVf b3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIENvZGFGaWQ7Cn07 CgoKCnN0cnVjdCBjb2RhX3phcGRpcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsK ICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwdm5vZGVfb3V0IHsKICAg IHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7CiAgICBW aWNlRmlkIFZGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCB7CiAgICBzdHJ1Y3Qg Y29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoKCgpzdHJ1Y3QgY29kYV9y ZXBsYWNlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBOZXdG aWQ7CiAgICBWaWNlRmlkIE9sZEZpZDsKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2J5X2ZkX2luIHsK ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBmbGFn czsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9o ZHIgb2g7CiAgICBpbnQgZmQ7CgoKICAgIHN0cnVjdCBmaWxlICpmaDsKCn07CgoKc3RydWN0IGNv ZGFfb3Blbl9ieV9wYXRoX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG aWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9vdXQg ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgICAgICBpbnQgcGF0aDsKfTsKCgpzdHJ1 Y3QgY29kYV9zdGF0ZnNfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKc3RydWN0 IGNvZGFfc3RhdGZzX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0 IGNvZGFfc3RhdGZzIHN0YXQ7Cn07CiMgNzAzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC9jb2RhLmgiCnVuaW9uIGlucHV0QXJncyB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIg aWg7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2luIGNvZGFfb3BlbjsKICAgIHN0cnVjdCBjb2RhX3N0 b3JlX2luIGNvZGFfc3RvcmU7CiAgICBzdHJ1Y3QgY29kYV9yZWxlYXNlX2luIGNvZGFfcmVsZWFz ZTsKICAgIHN0cnVjdCBjb2RhX2Nsb3NlX2luIGNvZGFfY2xvc2U7CiAgICBzdHJ1Y3QgY29kYV9p b2N0bF9pbiBjb2RhX2lvY3RsOwogICAgc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiBjb2RhX2dldGF0 dHI7CiAgICBzdHJ1Y3QgY29kYV9zZXRhdHRyX2luIGNvZGFfc2V0YXR0cjsKICAgIHN0cnVjdCBj b2RhX2FjY2Vzc19pbiBjb2RhX2FjY2VzczsKICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9pbiBjb2Rh X2xvb2t1cDsKICAgIHN0cnVjdCBjb2RhX2NyZWF0ZV9pbiBjb2RhX2NyZWF0ZTsKICAgIHN0cnVj dCBjb2RhX3JlbW92ZV9pbiBjb2RhX3JlbW92ZTsKICAgIHN0cnVjdCBjb2RhX2xpbmtfaW4gY29k YV9saW5rOwogICAgc3RydWN0IGNvZGFfcmVuYW1lX2luIGNvZGFfcmVuYW1lOwogICAgc3RydWN0 IGNvZGFfbWtkaXJfaW4gY29kYV9ta2RpcjsKICAgIHN0cnVjdCBjb2RhX3JtZGlyX2luIGNvZGFf cm1kaXI7CiAgICBzdHJ1Y3QgY29kYV9zeW1saW5rX2luIGNvZGFfc3ltbGluazsKICAgIHN0cnVj dCBjb2RhX3JlYWRsaW5rX2luIGNvZGFfcmVhZGxpbms7CiAgICBzdHJ1Y3QgY29kYV9mc3luY19p biBjb2RhX2ZzeW5jOwogICAgc3RydWN0IGNvZGFfdmdldF9pbiBjb2RhX3ZnZXQ7CiAgICBzdHJ1 Y3QgY29kYV9vcGVuX2J5X2ZkX2luIGNvZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVjdCBjb2RhX29w ZW5fYnlfcGF0aF9pbiBjb2RhX29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19p biBjb2RhX3N0YXRmczsKfTsKCnVuaW9uIG91dHB1dEFyZ3MgewogICAgc3RydWN0IGNvZGFfb3V0 X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX3Jvb3Rfb3V0IGNvZGFfcm9vdDsKICAgIHN0cnVjdCBj b2RhX29wZW5fb3V0IGNvZGFfb3BlbjsKICAgIHN0cnVjdCBjb2RhX2lvY3RsX291dCBjb2RhX2lv Y3RsOwogICAgc3RydWN0IGNvZGFfZ2V0YXR0cl9vdXQgY29kYV9nZXRhdHRyOwogICAgc3RydWN0 IGNvZGFfbG9va3VwX291dCBjb2RhX2xvb2t1cDsKICAgIHN0cnVjdCBjb2RhX2NyZWF0ZV9vdXQg Y29kYV9jcmVhdGU7CiAgICBzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgY29kYV9ta2RpcjsKICAgIHN0 cnVjdCBjb2RhX3JlYWRsaW5rX291dCBjb2RhX3JlYWRsaW5rOwogICAgc3RydWN0IGNvZGFfdmdl dF9vdXQgY29kYV92Z2V0OwogICAgc3RydWN0IGNvZGFfcHVyZ2V1c2VyX291dCBjb2RhX3B1cmdl dXNlcjsKICAgIHN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IGNvZGFfemFwZmlsZTsKICAgIHN0cnVj dCBjb2RhX3phcGRpcl9vdXQgY29kYV96YXBkaXI7CiAgICBzdHJ1Y3QgY29kYV96YXB2bm9kZV9v dXQgY29kYV96YXB2bm9kZTsKICAgIHN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCBjb2RhX3B1cmdl ZmlkOwogICAgc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQgY29kYV9yZXBsYWNlOwogICAgc3RydWN0 IGNvZGFfb3Blbl9ieV9mZF9vdXQgY29kYV9vcGVuX2J5X2ZkOwogICAgc3RydWN0IGNvZGFfb3Bl bl9ieV9wYXRoX291dCBjb2RhX29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19v dXQgY29kYV9zdGF0ZnM7Cn07Cgp1bmlvbiBjb2RhX2Rvd25jYWxscyB7CgoKICAgIHN0cnVjdCBj b2RhX3B1cmdldXNlcl9vdXQgcHVyZ2V1c2VyOwogICAgc3RydWN0IGNvZGFfemFwZmlsZV9vdXQg emFwZmlsZTsKICAgIHN0cnVjdCBjb2RhX3phcGRpcl9vdXQgemFwZGlyOwogICAgc3RydWN0IGNv ZGFfemFwdm5vZGVfb3V0IHphcHZub2RlOwogICAgc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IHB1 cmdlZmlkOwogICAgc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQgcmVwbGFjZTsKfTsKCgoKCgoKCnN0 cnVjdCBWaWNlSW9jdGwgewogICAgICAgIGNhZGRyX3QgaW4sIG91dDsKICAgICAgICBzaG9ydCBp bl9zaXplOwogICAgICAgIHNob3J0IG91dF9zaXplOwp9OwoKc3RydWN0IFBpb2N0bERhdGEgewog ICAgICAgIGNvbnN0IGNoYXIgKnBhdGg7CiAgICAgICAgaW50IGZvbGxvdzsKICAgICAgICBzdHJ1 Y3QgVmljZUlvY3RsIHZpOwp9OwojIDc5NyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv bGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9tb3VudF9kYXRhIHsKICAgICAgICBpbnQgdmVyc2lv bjsKICAgICAgICBpbnQgZmQ7Cn07CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl L2xpbnV4L2NvZGFfZnNfaS5oIiAyCgoKCgpzdHJ1Y3QgY29kYV9pbm9kZV9pbmZvIHsKICAgICAg ICBzdHJ1Y3QgVmljZUZpZCBjX2ZpZDsKICAgICAgICB1X3Nob3J0IGNfZmxhZ3M7CiAgICAgICAg c3RydWN0IGxpc3RfaGVhZCBjX2NpbGlzdDsKICAgICAgICBpbnQgY19tYXBjb3VudDsKICAgICAg ICBzdHJ1Y3QgY29kYV9jcmVkIGNfY2FjaGVkX2NyZWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNf Y2FjaGVkX3Blcm07Cn07CgoKCgoKc3RydWN0IGNvZGFfZmlsZV9pbmZvIHsKICAgICAgICBpbnQg Y2ZpX21hZ2ljOwogICAgICAgIGludCBjZmlfbWFwY291bnQ7CiAgICAgICAgc3RydWN0IGZpbGUg KmNmaV9jb250YWluZXI7CiAgICAgICAgc3RydWN0IGNvZGFfY3JlZCBjZmlfY3JlZDsKfTsKIyA0 NyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiCmludCBj b2RhX2Nub2RlX21ha2Uoc3RydWN0IGlub2RlICoqLCBzdHJ1Y3QgVmljZUZpZCAqLCBzdHJ1Y3Qg c3VwZXJfYmxvY2sgKik7CnN0cnVjdCBpbm9kZSAqY29kYV9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9j ayAqc2IsIHN0cnVjdCBWaWNlRmlkICpmaWQsIHN0cnVjdCBjb2RhX3ZhdHRyICphdHRyKTsKaW50 IGNvZGFfY25vZGVfbWFrZWN0bChzdHJ1Y3QgaW5vZGUgKippbm9kZSwgc3RydWN0IHN1cGVyX2Js b2NrICpzYik7CnN0cnVjdCBpbm9kZSAqY29kYV9maWRfdG9faW5vZGUoVmljZUZpZCAqZmlkLCBz dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKdm9pZCBjb2RhX3JlcGxhY2VfZmlkKHN0cnVjdCBpbm9k ZSAqLCBWaWNlRmlkICosIFZpY2VGaWQgKik7CiMgMzA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv bGludXgvcm9tZnNfZnNfaS5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX2lub2RlX2luZm8gewogICAg ICAgIHVuc2lnbmVkIGxvbmcgaV9tZXRhc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZGF0 YW9mZnNldDsKfTsKIyAzMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Zz LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zaG1lbV9mcy5o IiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NobWVtX2ZzLmgi CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHZhbDsKfSBzd3BfZW50cnlf dDsKCmV4dGVybiBhdG9taWNfdCBzaG1lbV9ucnBhZ2VzOwoKc3RydWN0IHNobWVtX2lub2RlX2lu Zm8gewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNl bTsKICAgICAgICB1bnNpZ25lZCBsb25nIG5leHRfaW5kZXg7CiAgICAgICAgc3dwX2VudHJ5X3Qg aV9kaXJlY3RbMTZdOwogICAgICAgIHZvaWQgKippX2luZGlyZWN0OwogICAgICAgIHVuc2lnbmVk IGxvbmcgc3dhcHBlZDsKICAgICAgICBpbnQgbG9ja2VkOwogICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgbGlzdDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwp9OwoKc3RydWN0IHNobWVtX3Ni X2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4X2Jsb2NrczsKICAgICAgICB1bnNpZ25l ZCBsb25nIGZyZWVfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4X2lub2RlczsKICAg ICAgICB1bnNpZ25lZCBsb25nIGZyZWVfaW5vZGVzOwogICAgICAgIHNwaW5sb2NrX3Qgc3RhdF9s b2NrOwp9OwojIDMxMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIg MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19pLmgiIDEK IyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc21iX2ZzX2kuaCIKc3Ry dWN0IHNtYl9pbm9kZV9pbmZvIHsKCgoKCgogICAgICAgIHVuc2lnbmVkIGludCBvcGVuOwogICAg ICAgIF9fdTE2IGZpbGVpZDsKICAgICAgICBfX3UxNiBhdHRyOwoKICAgICAgICBfX3UxNiBhY2Nl c3M7CiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBvbGRtdGltZTsK ICAgICAgICB1bnNpZ25lZCBsb25nIGNsb3NlZDsKICAgICAgICB1bnNpZ25lZCBvcGVuZXJzOwp9 OwojIDMxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2hmc19mc19pLmgiIDEKIyAxOSAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaGZzX2ZzX2kuaCIKc3RydWN0IGhm c19pbm9kZV9pbmZvIHsKICAgICAgICBpbnQgbWFnaWM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg bW11X3ByaXZhdGU7CiAgICAgICAgc3RydWN0IGhmc19jYXRfZW50cnkgKmVudHJ5OwoKCiAgICAg ICAgc3RydWN0IGhmc19mb3JrICpmb3JrOwogICAgICAgIGludCBjb252ZXJ0OwoKCiAgICAgICAg aW5vX3QgZmlsZV90eXBlOwogICAgICAgIGNoYXIgZGlyX3NpemU7CgoKICAgICAgICBjb25zdCBz dHJ1Y3QgaGZzX2hkcl9sYXlvdXQgKmRlZmF1bHRfbGF5b3V0OwogICAgICAgIHN0cnVjdCBoZnNf aGRyX2xheW91dCAqbGF5b3V0OwoKCiAgICAgICAgaW50IHR6X3NlY29uZHN3ZXN0OwoKCiAgICAg ICAgdm9pZCAoKmRfZHJvcF9vcCkoc3RydWN0IGRlbnRyeSAqLCBjb25zdCBpbm9fdCk7Cn07CiMg MzEzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYWRmc19mc19pLmgiIDEKIyAxMyAiL3Vz ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYWRmc19mc19pLmgiCnN0cnVjdCBhZGZz X2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAg dW5zaWduZWQgbG9uZyBwYXJlbnRfaWQ7CiAgICAgICAgX191MzIgbG9hZGFkZHI7CiAgICAgICAg X191MzIgZXhlY2FkZHI7CiAgICAgICAgdW5zaWduZWQgaW50IGZpbGV0eXBlOwogICAgICAgIHVu c2lnbmVkIGludCBhdHRyOwogICAgICAgIGludCBzdGFtcGVkOjE7Cn07CiMgMzE0ICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mc19pLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mc19pLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvbGludXgvcW54dHlwZXMuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQu MjAvaW5jbHVkZS9saW51eC9xbnh0eXBlcy5oIgp0eXBlZGVmIF9fdTE2IHFueDRfbnh0bnRfdDsK dHlwZWRlZiBfX3U4IHFueDRfZnR5cGVfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBfX3Uz MiB4dG50X2JsazsKICAgICAgICBfX3UzMiB4dG50X3NpemU7Cn0gcW54NF94dG50X3Q7Cgp0eXBl ZGVmIF9fdTE2IHFueDRfbW9kZV90Owp0eXBlZGVmIF9fdTE2IHFueDRfbXVpZF90Owp0eXBlZGVm IF9fdTE2IHFueDRfbWdpZF90Owp0eXBlZGVmIF9fdTMyIHFueDRfb2ZmX3Q7CnR5cGVkZWYgX191 MTYgcW54NF9ubGlua190OwojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC9xbng0X2ZzX2kuaCIgMgoKCgoKc3RydWN0IHFueDRfaW5vZGVfaW5mbyB7CiAgICAgICAgY2hh ciBpX3Jlc2VydmVkWzE2XTsKICAgICAgICBxbng0X29mZl90IGlfc2l6ZTsKICAgICAgICBxbng0 X3h0bnRfdCBpX2ZpcnN0X3h0bnQ7CiAgICAgICAgX191MzIgaV94YmxrOwogICAgICAgIF9fczMy IGlfZnRpbWU7CiAgICAgICAgX19zMzIgaV9tdGltZTsKICAgICAgICBfX3MzMiBpX2F0aW1lOwog ICAgICAgIF9fczMyIGlfY3RpbWU7CiAgICAgICAgcW54NF9ueHRudF90IGlfbnVtX3h0bnRzOwog ICAgICAgIHFueDRfbW9kZV90IGlfbW9kZTsKICAgICAgICBxbng0X211aWRfdCBpX3VpZDsKICAg ICAgICBxbng0X21naWRfdCBpX2dpZDsKICAgICAgICBxbng0X25saW5rX3QgaV9ubGluazsKICAg ICAgICBfX3U4IGlfemVyb1s0XTsKICAgICAgICBxbng0X2Z0eXBlX3QgaV90eXBlOwogICAgICAg IF9fdTggaV9zdGF0dXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKfTsKIyAz MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19pLmgiIDEKIyAxMCAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfaS5oIgp0eXBl ZGVmIGVudW0gewoKCgogICAgaV9pdGVtX2tleV92ZXJzaW9uX21hc2sgPSAweDAwMDEsCgoKICAg IGlfc3RhdF9kYXRhX3ZlcnNpb25fbWFzayA9IDB4MDAwMiwKCiAgICBpX3BhY2tfb25fY2xvc2Vf bWFzayA9IDB4MDAwNCwKCiAgICBpX25vcGFja19tYXNrID0gMHgwMDA4LAoKCgogICAgaV9saW5r X3NhdmVkX3VubGlua19tYXNrID0gMHgwMDEwLAogICAgaV9saW5rX3NhdmVkX3RydW5jYXRlX21h c2sgPSAweDAwMjAKfSByZWlzZXJmc19pbm9kZV9mbGFnczsKCgpzdHJ1Y3QgcmVpc2VyZnNfaW5v ZGVfaW5mbyB7CiAgICBfX3UzMiBpX2tleSBbNF07CgoKCiAgICBfX3UzMiBpX2ZsYWdzOwoKICAg IF9fdTMyIGlfZmlyc3RfZGlyZWN0X2J5dGU7CgoKICAgIF9fdTMyIGlfYXR0cnM7CgogICAgaW50 IGlfcHJlYWxsb2NfYmxvY2s7CiAgICBpbnQgaV9wcmVhbGxvY19jb3VudDsKICAgIHN0cnVjdCBs aXN0X2hlYWQgaV9wcmVhbGxvY19saXN0OwoKCiAgICBpbnQgbmV3X3BhY2tpbmdfbG9jYWxpdHk6 MTsKCgoKCgoKICAgIHVuc2lnbmVkIGxvbmcgaV90cmFuc19pZCA7CiAgICB1bnNpZ25lZCBsb25n IGlfdHJhbnNfaW5kZXggOwp9OwojIDMxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv bGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Jm c19mc19pLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYmZz X2ZzX2kuaCIKc3RydWN0IGJmc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGlf ZHNrX2lubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfc2Jsb2NrOwogICAgICAgIHVuc2lnbmVk IGxvbmcgaV9lYmxvY2s7Cn07CiMgMzE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWRm X2ZzX2kuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZGZf ZnNfaS5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgICAgICAgX191MzIgbG9naWNhbEJsb2NrTnVtOwog ICAgICAgIF9fdTE2IHBhcnRpdGlvblJlZmVyZW5jZU51bTsKfSBfX2F0dHJpYnV0ZV9fICgocGFj a2VkKSkgbGJfYWRkcjsKCgpzdHJ1Y3QgdWRmX2lub2RlX2luZm8KewogICAgICAgIGxvbmcgaV91 bXRpbWU7CiAgICAgICAgbG9uZyBpX3VjdGltZTsKICAgICAgICBsb25nIGlfY3J0aW1lOwogICAg ICAgIGxvbmcgaV91Y3J0aW1lOwoKICAgICAgICBsYl9hZGRyIGlfbG9jYXRpb247CiAgICAgICAg X191NjQgaV91bmlxdWU7CiAgICAgICAgX191MzIgaV9sZW5FQXR0cjsKICAgICAgICBfX3UzMiBp X2xlbkFsbG9jOwogICAgICAgIF9fdTY0IGlfbGVuRXh0ZW50czsKICAgICAgICBfX3UzMiBpX25l eHRfYWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2dvYWw7CiAgICAgICAg dW5zaWduZWQgaV9hbGxvY190eXBlIDogMzsKICAgICAgICB1bnNpZ25lZCBpX2V4dGVuZGVkX2Zl IDogMTsKICAgICAgICB1bnNpZ25lZCBpX3N0cmF0XzQwOTYgOiAxOwogICAgICAgIHVuc2lnbmVk IGlfbmV3X2lub2RlIDogMTsKICAgICAgICB1bnNpZ25lZCByZXNlcnZlZCA6IDI2Owp9OwojIDMx OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcF9mc19pLmgiIDEKIyAxNyAiL3Vzci9z cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmNwX2ZzX2kuaCIKc3RydWN0IG5jcF9pbm9k ZV9pbmZvIHsKICAgICAgICBfX3UzMiBkaXJFbnROdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7 CiAgICAgICAgX191MzIgRG9zRGlyTnVtIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg IF9fdTMyIHZvbE51bWJlciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBu d2F0dHI7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBvcGVuX3NlbTsKICAgICAgICBhdG9taWNf dCBvcGVuZWQ7CiAgICAgICAgaW50IGFjY2VzczsKICAgICAgICBfX3UzMiBzZXJ2ZXJfZmlsZV9o YW5kbGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBvcGVuX2NyZWF0ZV9h Y3Rpb24gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBmaWxlX2hhbmRsZVs2 XSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKIyAzMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC9wcm9jX2ZzX2kuaCIgMQpzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHsKICAgICAgICBz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5pb24g ewogICAgICAgICAgICAgICAgaW50ICgqcHJvY19nZXRfbGluaykoc3RydWN0IGlub2RlICosIHN0 cnVjdCBkZW50cnkgKiosIHN0cnVjdCB2ZnNtb3VudCAqKik7CiAgICAgICAgICAgICAgICBpbnQg KCpwcm9jX3JlYWQpKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgY2hhciAqcGFnZSk7CiAgICAg ICAgfSBvcDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZTsKfTsKIyAzMjAgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu MjAvaW5jbHVkZS9saW51eC91c2JkZXZfZnNfaS5oIiAxCnN0cnVjdCB1c2JfZGV2aWNlOwpzdHJ1 Y3QgdXNiX2J1czsKCnN0cnVjdCB1c2JkZXZfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IGxp c3RfaGVhZCBkbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHVu aW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JfZGV2aWNlICpkZXY7CiAgICAgICAgICAg ICAgICBzdHJ1Y3QgdXNiX2J1cyAqYnVzOwogICAgICAgIH0gcDsKfTsKIyAzMjEgIi91c3Ivc3Jj L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y LjQuMjAvaW5jbHVkZS9saW51eC9qZmZzMl9mc19pLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvamZmczJfZnNfaS5oIgpzdHJ1Y3QgamZmczJfaW5vZGVfaW5m byB7CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2ku aCIKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIF9fdTMyIGhpZ2hlc3Rf dmVyc2lvbjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcgKmZyYWdsaXN0OwoKCgoK CgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0YTsKCgogICAgICAgIHN0 cnVjdCBqZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBzdHJ1Y3QgamZmczJfaW5v ZGVfY2FjaGUgKmlub2NhY2hlOwoKCgoKCiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgX191 OCB1c2VyY29tcHI7Cn07CiMgMzIyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY3JhbWZz X2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IGNyYW1mc19zYl9pbmZvIHsKICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBtYWdpYzsKICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBzaXplOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJs b2NrczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmaWxlczsKICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKfTsKIyAzMjMgIi91c3Ivc3Jj L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAzNDkgIi91c3Ivc3JjL2xpbnV4 LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0cnVjdCBpYXR0ciB7CiAgICAgICAgdW5zaWdu ZWQgaW50IGlhX3ZhbGlkOwogICAgICAgIHVtb2RlX3QgaWFfbW9kZTsKICAgICAgICB1aWRfdCBp YV91aWQ7CiAgICAgICAgZ2lkX3QgaWFfZ2lkOwogICAgICAgIGxvZmZfdCBpYV9zaXplOwogICAg ICAgIHRpbWVfdCBpYV9hdGltZTsKICAgICAgICB0aW1lX3QgaWFfbXRpbWU7CiAgICAgICAgdGlt ZV90IGlhX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBpYV9hdHRyX2ZsYWdzOwp9OwojIDM3 MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xdW90YS5oIiAxCiMgNDIgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2FzbS9lcnJuby5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1 ZGUvbGludXgvZXJybm8uaCIgMgojIDQzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s aW51eC9xdW90YS5oIiAyCiMgMTA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC9xdW90YS5oIgpzdHJ1Y3QgZHFibGsgewogICAgICAgIF9fdTMyIGRxYl9iaGFyZGxpbWl0Owog ICAgICAgIF9fdTMyIGRxYl9ic29mdGxpbWl0OwogICAgICAgIF9fdTMyIGRxYl9jdXJibG9ja3M7 CiAgICAgICAgX191MzIgZHFiX2loYXJkbGltaXQ7CiAgICAgICAgX191MzIgZHFiX2lzb2Z0bGlt aXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmlub2RlczsKICAgICAgICB0aW1lX3QgZHFiX2J0aW1l OwogICAgICAgIHRpbWVfdCBkcWJfaXRpbWU7Cn07CiMgMTM0ICIvdXNyL3NyYy9saW51eC0yLjQu MjAvaW5jbHVkZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgZHFzdGF0cyB7CiAgICAgICAgX191MzIg bG9va3VwczsKICAgICAgICBfX3UzMiBkcm9wczsKICAgICAgICBfX3UzMiByZWFkczsKICAgICAg ICBfX3UzMiB3cml0ZXM7CiAgICAgICAgX191MzIgY2FjaGVfaGl0czsKICAgICAgICBfX3UzMiBh bGxvY2F0ZWRfZHF1b3RzOwogICAgICAgIF9fdTMyIGZyZWVfZHF1b3RzOwogICAgICAgIF9fdTMy IHN5bmNzOwp9OwoKCgpleHRlcm4gaW50IG5yX2RxdW90cywgbnJfZnJlZV9kcXVvdHM7CmV4dGVy biBpbnQgZHF1b3Rfcm9vdF9zcXVhc2g7CiMgMTU5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgZHF1b3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgZHFfaGFzaDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRxX2ludXNlOwogICAgICAgIHN0 cnVjdCBsaXN0X2hlYWQgZHFfZnJlZTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0 X2xvY2s7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZHFfd2FpdF9mcmVlOwogICAgICAgIGlu dCBkcV9jb3VudDsKCgogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqZHFfc2I7CiAgICAgICAg dW5zaWduZWQgaW50IGRxX2lkOwogICAgICAgIGtkZXZfdCBkcV9kZXY7CiAgICAgICAgc2hvcnQg ZHFfdHlwZTsKICAgICAgICBzaG9ydCBkcV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRx X3JlZmVyZW5jZWQ7CgogICAgICAgIHN0cnVjdCBkcWJsayBkcV9kcWI7Cn07CiMgMzc0ICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCgoKCgoKc3RydWN0IHBhZ2U7 CnN0cnVjdCBhZGRyZXNzX3NwYWNlOwpzdHJ1Y3Qga2lvYnVmOwoKc3RydWN0IGFkZHJlc3Nfc3Bh Y2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqd3JpdGVwYWdlKShzdHJ1Y3QgcGFnZSAqKTsK ICAgICAgICBpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKik7CiAg ICAgICAgaW50ICgqc3luY19wYWdlKShzdHJ1Y3QgcGFnZSAqKTsKCgoKCiAgICAgICAgaW50ICgq cHJlcGFyZV93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVu c2lnbmVkKTsKICAgICAgICBpbnQgKCpjb21taXRfd3JpdGUpKHN0cnVjdCBmaWxlICosIHN0cnVj dCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CgogICAgICAgIGludCAoKmJtYXApKHN0cnVj dCBhZGRyZXNzX3NwYWNlICosIGxvbmcpOwogICAgICAgIGludCAoKmZsdXNocGFnZSkgKHN0cnVj dCBwYWdlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKnJlbGVhc2VwYWdlKSAoc3Ry dWN0IHBhZ2UgKiwgaW50KTsKCiAgICAgICAgaW50ICgqZGlyZWN0X0lPKShpbnQsIHN0cnVjdCBp bm9kZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2lnbmVkIGxvbmcsIGludCk7Cn07CgpzdHJ1Y3Qg YWRkcmVzc19zcGFjZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjbGVhbl9wYWdlczsKICAg ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X3BhZ2VzOwogICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgbG9ja2VkX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbnJwYWdlczsKICAgICAgICBz dHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zICphX29wczsKICAgICAgICBzdHJ1Y3QgaW5v ZGUgKmhvc3Q7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXA7CiAgICAgICAg c3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXBfc2hhcmVkOwogICAgICAgIHNwaW5sb2NrX3Qg aV9zaGFyZWRfbG9jazsKICAgICAgICBpbnQgZ2ZwX21hc2s7Cn07CgpzdHJ1Y3QgY2hhcl9kZXZp Y2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaGFzaDsKICAgICAgICBhdG9taWNfdCBjb3Vu dDsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAgYXRvbWljX3Qgb3BlbmVyczsKICAgICAgICBz dHJ1Y3Qgc2VtYXBob3JlIHNlbTsKfTsKCnN0cnVjdCBibG9ja19kZXZpY2UgewogICAgICAgIHN0 cnVjdCBsaXN0X2hlYWQgYmRfaGFzaDsKICAgICAgICBhdG9taWNfdCBiZF9jb3VudDsKICAgICAg ICBzdHJ1Y3QgaW5vZGUgKiBiZF9pbm9kZTsKICAgICAgICBkZXZfdCBiZF9kZXY7CiAgICAgICAg aW50IGJkX29wZW5lcnM7CiAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRp b25zICpiZF9vcDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGJkX3NlbTsKICAgICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIGJkX2lub2RlczsKfTsKCnN0cnVjdCBpbm9kZSB7CiAgICAgICAgc3RydWN0 IGxpc3RfaGVhZCBpX2hhc2g7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2xpc3Q7CiAgICAg ICAgc3RydWN0IGxpc3RfaGVhZCBpX2RlbnRyeTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBp X2RpcnR5X2J1ZmZlcnM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2RhdGFfYnVm ZmVyczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2lubzsKICAgICAgICBhdG9taWNfdCBpX2Nv dW50OwogICAgICAgIGtkZXZfdCBpX2RldjsKICAgICAgICB1bW9kZV90IGlfbW9kZTsKICAgICAg ICBubGlua190IGlfbmxpbms7CiAgICAgICAgdWlkX3QgaV91aWQ7CiAgICAgICAgZ2lkX3QgaV9n aWQ7CiAgICAgICAga2Rldl90IGlfcmRldjsKICAgICAgICBsb2ZmX3QgaV9zaXplOwogICAgICAg IHRpbWVfdCBpX2F0aW1lOwogICAgICAgIHRpbWVfdCBpX210aW1lOwogICAgICAgIHRpbWVfdCBp X2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBpX2Jsa2JpdHM7CiAgICAgICAgdW5zaWduZWQg bG9uZyBpX2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Jsb2NrczsKICAgICAgICB1 bnNpZ25lZCBsb25nIGlfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2VtOwog ICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV96b21iaWU7CiAgICAgICAgc3RydWN0IGlub2RlX29w ZXJhdGlvbnMgKmlfb3A7CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7CiAg ICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICppX3NiOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90 IGlfd2FpdDsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICppX2Zsb2NrOwogICAgICAgIHN0cnVj dCBhZGRyZXNzX3NwYWNlICppX21hcHBpbmc7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2Ug aV9kYXRhOwogICAgICAgIHN0cnVjdCBkcXVvdCAqaV9kcXVvdFsyXTsKCiAgICAgICAgc3RydWN0 IGxpc3RfaGVhZCBpX2RldmljZXM7CiAgICAgICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqaV9w aXBlOwogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmlfYmRldjsKICAgICAgICBzdHJ1Y3Qg Y2hhcl9kZXZpY2UgKmlfY2RldjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Rub3RpZnlfbWFz azsKICAgICAgICBzdHJ1Y3QgZG5vdGlmeV9zdHJ1Y3QgKmlfZG5vdGlmeTsKCiAgICAgICAgdW5z aWduZWQgbG9uZyBpX3N0YXRlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgaV9mbGFnczsKICAgICAg ICB1bnNpZ25lZCBjaGFyIGlfc29jazsKCiAgICAgICAgYXRvbWljX3QgaV93cml0ZWNvdW50Owog ICAgICAgIHVuc2lnbmVkIGludCBpX2F0dHJfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW5lcmF0 aW9uOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9pbm9kZV9p bmZvIG1pbml4X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIGV4dDJf aTsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX2lub2RlX2luZm8gZXh0M19pOwogICAgICAg ICAgICAgICAgc3RydWN0IGhwZnNfaW5vZGVfaW5mbyBocGZzX2k7CiAgICAgICAgICAgICAgICBz dHJ1Y3QgbnRmc19pbm9kZV9pbmZvIG50ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rv c19pbm9kZV9pbmZvIG1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdW1zZG9zX2lub2Rl X2luZm8gdW1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXNvX2lub2RlX2luZm8gaXNv ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfaW5vZGVfaW5mbyBuZnNfaTsKICAgICAg ICAgICAgICAgIHN0cnVjdCBzeXN2X2lub2RlX2luZm8gc3lzdl9pOwogICAgICAgICAgICAgICAg c3RydWN0IGFmZnNfaW5vZGVfaW5mbyBhZmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWZz X2lub2RlX2luZm8gdWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZWZzX2lub2RlX2luZm8g ZWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyByb21mc19pOwog ICAgICAgICAgICAgICAgc3RydWN0IHNobWVtX2lub2RlX2luZm8gc2htZW1faTsKICAgICAgICAg ICAgICAgIHN0cnVjdCBjb2RhX2lub2RlX2luZm8gY29kYV9pOwogICAgICAgICAgICAgICAgc3Ry dWN0IHNtYl9pbm9kZV9pbmZvIHNtYmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaGZzX2lu b2RlX2luZm8gaGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRmc19pbm9kZV9pbmZvIGFk ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2luZm8gcW54NF9pOwogICAg ICAgICAgICAgICAgc3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8gcmVpc2VyZnNfaTsKICAgICAg ICAgICAgICAgIHN0cnVjdCBiZnNfaW5vZGVfaW5mbyBiZnNfaTsKICAgICAgICAgICAgICAgIHN0 cnVjdCB1ZGZfaW5vZGVfaW5mbyB1ZGZfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3BfaW5v ZGVfaW5mbyBuY3Bmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHByb2NfaW5vZGVfaW5mbyBw cm9jX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2V0IHNvY2tldF9pOwogICAgICAgICAg ICAgICAgc3RydWN0IHVzYmRldl9pbm9kZV9pbmZvIHVzYmRldl9pOwogICAgICAgICAgICAgICAg c3RydWN0IGpmZnMyX2lub2RlX2luZm8gamZmczJfaTsKICAgICAgICAgICAgICAgIHZvaWQgKmdl bmVyaWNfaXA7CiAgICAgICAgfSB1Owp9OwoKc3RydWN0IGZvd25fc3RydWN0IHsKICAgICAgICBp bnQgcGlkOwogICAgICAgIHVpZF90IHVpZCwgZXVpZDsKICAgICAgICBpbnQgc2lnbnVtOwp9OwoK c3RydWN0IGZpbGUgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZl9saXN0OwogICAgICAgIHN0 cnVjdCBkZW50cnkgKmZfZGVudHJ5OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqZl92ZnNtbnQ7 CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZl9vcDsKICAgICAgICBhdG9taWNfdCBm X2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBmX2ZsYWdzOwogICAgICAgIG1vZGVfdCBmX21v ZGU7CiAgICAgICAgbG9mZl90IGZfcG9zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9yZWFkYSwg Zl9yYW1heCwgZl9yYWVuZCwgZl9yYWxlbiwgZl9yYXdpbjsKICAgICAgICBzdHJ1Y3QgZm93bl9z dHJ1Y3QgZl9vd25lcjsKICAgICAgICB1bnNpZ25lZCBpbnQgZl91aWQsIGZfZ2lkOwogICAgICAg IGludCBmX2Vycm9yOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZfdmVyc2lvbjsKCgogICAgICAg IHZvaWQgKnByaXZhdGVfZGF0YTsKCgogICAgICAgIHN0cnVjdCBraW9idWYgKmZfaW9idWY7CiAg ICAgICAgbG9uZyBmX2lvYnVmX2xvY2s7Cn07CmV4dGVybiBzcGlubG9ja190IGZpbGVzX2xvY2s7 CgoKCgoKCmV4dGVybiBpbnQgaW5pdF9wcml2YXRlX2ZpbGUoc3RydWN0IGZpbGUgKiwgc3RydWN0 IGRlbnRyeSAqLCBpbnQpOwojIDU3OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu dXgvZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmbF9vd25lcl90OwoKc3RydWN0 IGZpbGVfbG9jayB7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqZmxfbmV4dDsKICAgICAgICBz dHJ1Y3QgbGlzdF9oZWFkIGZsX2xpbms7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmbF9ibG9j azsKICAgICAgICBmbF9vd25lcl90IGZsX293bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBmbF9w aWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZmxfd2FpdDsKICAgICAgICBzdHJ1Y3QgZmls ZSAqZmxfZmlsZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZsX2ZsYWdzOwogICAgICAgIHVuc2ln bmVkIGNoYXIgZmxfdHlwZTsKICAgICAgICBsb2ZmX3QgZmxfc3RhcnQ7CiAgICAgICAgbG9mZl90 IGZsX2VuZDsKCiAgICAgICAgdm9pZCAoKmZsX25vdGlmeSkoc3RydWN0IGZpbGVfbG9jayAqKTsK ICAgICAgICB2b2lkICgqZmxfaW5zZXJ0KShzdHJ1Y3QgZmlsZV9sb2NrICopOwogICAgICAgIHZv aWQgKCpmbF9yZW1vdmUpKHN0cnVjdCBmaWxlX2xvY2sgKik7CgogICAgICAgIHN0cnVjdCBmYXN5 bmNfc3RydWN0ICogZmxfZmFzeW5jOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxfYnJlYWtfdGlt ZTsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IG5mc19sb2NrX2luZm8g bmZzX2ZsOwogICAgICAgIH0gZmxfdTsKfTsKIyA2MTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p bmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVfbG9ja19saXN0 OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mY250bC5oIiAxCgoK CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2ZjbnRsLmgiIDEKIyA2OSAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2ZjbnRsLmgiCnN0cnVjdCBmbG9jayB7 CiAgICAgICAgc2hvcnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAgICAgIG9m Zl90IGxfc3RhcnQ7CiAgICAgICAgb2ZmX3QgbF9sZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07 CgpzdHJ1Y3QgZmxvY2s2NCB7CiAgICAgICAgc2hvcnQgbF90eXBlOwogICAgICAgIHNob3J0IGxf d2hlbmNlOwogICAgICAgIGxvZmZfdCBsX3N0YXJ0OwogICAgICAgIGxvZmZfdCBsX2xlbjsKICAg ICAgICBwaWRfdCBsX3BpZDsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s aW51eC9mY250bC5oIiAyCiMgNjE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC9mcy5oIiAyCgpleHRlcm4gaW50IGZjbnRsX2dldGxrKHVuc2lnbmVkIGludCwgc3RydWN0IGZs b2NrICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxrKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50 LCBzdHJ1Y3QgZmxvY2sgKik7CgpleHRlcm4gaW50IGZjbnRsX2dldGxrNjQodW5zaWduZWQgaW50 LCBzdHJ1Y3QgZmxvY2s2NCAqKTsKZXh0ZXJuIGludCBmY250bF9zZXRsazY0KHVuc2lnbmVkIGlu dCwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2s2NCAqKTsKCgpleHRlcm4gdm9pZCBsb2Nrc19p bml0X2xvY2soc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9ja3NfY29weV9sb2Nr KHN0cnVjdCBmaWxlX2xvY2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9j a3NfcmVtb3ZlX3Bvc2l4KHN0cnVjdCBmaWxlICosIGZsX293bmVyX3QpOwpleHRlcm4gdm9pZCBs b2Nrc19yZW1vdmVfZmxvY2soc3RydWN0IGZpbGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZV9sb2Nr ICpwb3NpeF90ZXN0X2xvY2soc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0 ZXJuIGludCBwb3NpeF9sb2NrX2ZpbGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAq LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBwb3NpeF9ibG9ja19sb2NrKHN0cnVjdCBmaWxl X2xvY2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgcG9zaXhfdW5ibG9ja19s b2NrKHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQgcG9zaXhfbG9ja3NfZGVhZGxvY2so c3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IF9fZ2V0 X2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBmbGFncyk7CmV4dGVybiB0 aW1lX3QgbGVhc2VfZ2V0X210aW1lKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBsb2NrX21h eV9yZWFkKHN0cnVjdCBpbm9kZSAqLCBsb2ZmX3Qgc3RhcnQsIHVuc2lnbmVkIGxvbmcgY291bnQp OwpleHRlcm4gaW50IGxvY2tfbWF5X3dyaXRlKHN0cnVjdCBpbm9kZSAqLCBsb2ZmX3Qgc3RhcnQs IHVuc2lnbmVkIGxvbmcgY291bnQpOwoKc3RydWN0IGZhc3luY19zdHJ1Y3QgewogICAgICAgIGlu dCBtYWdpYzsKICAgICAgICBpbnQgZmFfZmQ7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3Qg KmZhX25leHQ7CiAgICAgICAgc3RydWN0IGZpbGUgKmZhX2ZpbGU7Cn07CgoKCgpleHRlcm4gaW50 IGZhc3luY19oZWxwZXIoaW50LCBzdHJ1Y3QgZmlsZSAqLCBpbnQsIHN0cnVjdCBmYXN5bmNfc3Ry dWN0ICoqKTsKCmV4dGVybiB2b2lkIGtpbGxfZmFzeW5jKHN0cnVjdCBmYXN5bmNfc3RydWN0ICoq LCBpbnQsIGludCk7CgpleHRlcm4gdm9pZCBfX2tpbGxfZmFzeW5jKHN0cnVjdCBmYXN5bmNfc3Ry dWN0ICosIGludCwgaW50KTsKCnN0cnVjdCBuYW1laWRhdGEgewogICAgICAgIHN0cnVjdCBkZW50 cnkgKmRlbnRyeTsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udDsKICAgICAgICBzdHJ1Y3Qg cXN0ciBsYXN0OwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBpbnQgbGFzdF90 eXBlOwp9OwoKCgoKc3RydWN0IHF1b3RhX21vdW50X29wdGlvbnMKewogICAgICAgIHVuc2lnbmVk IGludCBmbGFnczsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGRxaW9fc2VtOwogICAgICAgIHN0 cnVjdCBzZW1hcGhvcmUgZHFvZmZfc2VtOwogICAgICAgIHN0cnVjdCBmaWxlICpmaWxlc1syXTsK ICAgICAgICB0aW1lX3QgaW5vZGVfZXhwaXJlWzJdOwogICAgICAgIHRpbWVfdCBibG9ja19leHBp cmVbMl07CiAgICAgICAgY2hhciByc3F1YXNoWzJdOwp9OwojIDY4MyAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9saW51eC9taW5peF9mc19zYi5oIiAxCgoKCgoKCnN0cnVjdCBtaW5peF9zYl9pbmZvIHsK ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX25pbm9kZXM7CiAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19uem9uZXM7CiAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgc19pbWFwX2Jsb2NrczsKICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBzX3ptYXBfYmxvY2tzOwogICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIHNfZmlyc3RkYXRhem9uZTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBzX2xvZ196b25lX3NpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgc19tYXhfc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNfZGlyc2l6 ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNfbmFtZWxlbjsKICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHNfbGlua19tYXg7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBi dWZmZXJfaGVhZCAqKiBzX2ltYXA7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZm ZXJfaGVhZCAqKiBzX3ptYXA7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJf aGVhZCAqIHNfc2JoOwogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWluaXhfc3VwZXJf YmxvY2sgKiBzX21zOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX21v dW50X3N0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX3ZlcnNp b247Cn07CiMgNjg0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAy CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZXh0Ml9mc19zYi5oIiAx CiMgMzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2V4dDJfZnNfc2IuaCIK c3RydWN0IGV4dDJfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdfc2l6ZTsK ICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ3NfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVk IGxvbmcgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19w ZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Jsb2Nrc19wZXJfZ3JvdXA7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBzX2lub2Rlc19wZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBzX2l0Yl9wZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2dkYl9jb3VudDsKICAg ICAgICB1bnNpZ25lZCBsb25nIHNfZGVzY19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBzX2dyb3Vwc19jb3VudDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX3NiaDsKICAg ICAgICBzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqIHNfZXM7CiAgICAgICAgc3RydWN0IGJ1ZmZl cl9oZWFkICoqIHNfZ3JvdXBfZGVzYzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2xvYWRlZF9p bm9kZV9iaXRtYXBzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9hZGVkX2Jsb2NrX2JpdG1h cHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2lub2RlX2JpdG1hcF9udW1iZXJbOF07CiAgICAg ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19pbm9kZV9iaXRtYXBbOF07CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBzX2Jsb2NrX2JpdG1hcF9udW1iZXJbOF07CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9o ZWFkICogc19ibG9ja19iaXRtYXBbOF07CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX21vdW50X29w dDsKICAgICAgICB1aWRfdCBzX3Jlc3VpZDsKICAgICAgICBnaWRfdCBzX3Jlc2dpZDsKICAgICAg ICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNf cGFkOwogICAgICAgIGludCBzX2FkZHJfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgaW50IHNfZGVz Y19wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQgc19pbm9kZV9zaXplOwogICAgICAgIGludCBz X2ZpcnN0X2lubzsKfTsKIyA2ODUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4 L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9leHQzX2Zz X3NiLmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZXh0M19m c19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWVyLmgi IDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGltZXIuaCIKc3Ry dWN0IHRpbWVyX2xpc3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICB1 bnNpZ25lZCBsb25nIGV4cGlyZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhOwogICAgICAg IHZvaWQgKCpmdW5jdGlvbikodW5zaWduZWQgbG9uZyk7Cn07CgpleHRlcm4gdm9pZCBhZGRfdGlt ZXIoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CmV4dGVybiBpbnQgZGVsX3RpbWVyKHN0cnVj dCB0aW1lcl9saXN0ICogdGltZXIpOwojIDQxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC90aW1lci5oIgppbnQgbW9kX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lciwg dW5zaWduZWQgbG9uZyBleHBpcmVzKTsKCmV4dGVybiB2b2lkIGl0X3JlYWxfZm4odW5zaWduZWQg bG9uZyk7CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAq IHRpbWVyKQp7CiAgICAgICAgdGltZXItPmxpc3QubmV4dCA9IHRpbWVyLT5saXN0LnByZXYgPSAo KHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBpbnQgdGltZXJfcGVuZGluZyAoY29uc3Qgc3Ry dWN0IHRpbWVyX2xpc3QgKiB0aW1lcikKewogICAgICAgIHJldHVybiB0aW1lci0+bGlzdC5uZXh0 ICE9ICgodm9pZCAqKTApOwp9CiMgMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp bnV4L2V4dDNfZnNfc2IuaCIgMgojIDM1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s aW51eC9leHQzX2ZzX3NiLmgiCnN0cnVjdCBleHQzX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVk IGxvbmcgc19mcmFnX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9ibG9j azsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ibG9jazsKICAgICAgICB1bnNp Z25lZCBsb25nIHNfZnJhZ3NfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9j a3NfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19pbm9kZXNfcGVyX2dyb3VwOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgc19pdGJfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxv bmcgc19nZGJfY291bnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Rlc2NfcGVyX2Jsb2NrOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgc19ncm91cHNfY291bnQ7CiAgICAgICAgc3RydWN0IGJ1ZmZl cl9oZWFkICogc19zYmg7CiAgICAgICAgc3RydWN0IGV4dDNfc3VwZXJfYmxvY2sgKiBzX2VzOwog ICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBzX2dyb3VwX2Rlc2M7CiAgICAgICAgdW5zaWdu ZWQgc2hvcnQgc19sb2FkZWRfaW5vZGVfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz X2xvYWRlZF9ibG9ja19iaXRtYXBzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19pbm9kZV9iaXRt YXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfaW5vZGVfYml0bWFw WzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja19iaXRtYXBfbnVtYmVyWzhdOwogICAg ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfYmxvY2tfYml0bWFwWzhdOwogICAgICAgIHVuc2ln bmVkIGxvbmcgc19tb3VudF9vcHQ7CiAgICAgICAgdWlkX3Qgc19yZXN1aWQ7CiAgICAgICAgZ2lk X3Qgc19yZXNnaWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19tb3VudF9zdGF0ZTsKICAgICAg ICB1bnNpZ25lZCBzaG9ydCBzX3BhZDsKICAgICAgICBpbnQgc19hZGRyX3Blcl9ibG9ja19iaXRz OwogICAgICAgIGludCBzX2Rlc2NfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgaW50IHNfaW5vZGVf c2l6ZTsKICAgICAgICBpbnQgc19maXJzdF9pbm87CiAgICAgICAgdTMyIHNfbmV4dF9nZW5lcmF0 aW9uOwoKCiAgICAgICAgc3RydWN0IGlub2RlICogc19qb3VybmFsX2lub2RlOwogICAgICAgIHN0 cnVjdCBqb3VybmFsX3MgKiBzX2pvdXJuYWw7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX29y cGhhbjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfY29tbWl0X2ludGVydmFsOwogICAgICAgIHN0 cnVjdCBibG9ja19kZXZpY2UgKmpvdXJuYWxfYmRldjsKCgoKCn07CiMgNjg2ICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvbGludXgvaHBmc19mc19zYi5oIiAxCgoKCnN0cnVjdCBocGZzX3NiX2luZm8g ewogICAgICAgIGlub190IHNiX3Jvb3Q7CiAgICAgICAgdW5zaWduZWQgc2JfZnNfc2l6ZTsKICAg ICAgICB1bnNpZ25lZCBzYl9iaXRtYXBzOwogICAgICAgIHVuc2lnbmVkIHNiX2RpcmJhbmRfc3Rh cnQ7CiAgICAgICAgdW5zaWduZWQgc2JfZGlyYmFuZF9zaXplOwogICAgICAgIHVuc2lnbmVkIHNi X2RtYXA7CiAgICAgICAgdW5zaWduZWQgc2Jfbl9mcmVlOwogICAgICAgIHVuc2lnbmVkIHNiX25f ZnJlZV9kbm9kZXM7CiAgICAgICAgdWlkX3Qgc2JfdWlkOwogICAgICAgIGdpZF90IHNiX2dpZDsK ICAgICAgICB1bW9kZV90IHNiX21vZGU7CiAgICAgICAgdW5zaWduZWQgc2JfY29udiA6IDI7CiAg ICAgICAgdW5zaWduZWQgc2JfZWFzIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9lcnIgOiAyOwog ICAgICAgIHVuc2lnbmVkIHNiX2NoayA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfbG93ZXJjYXNl IDogMTsKICAgICAgICB1bnNpZ25lZCBzYl93YXNfZXJyb3IgOiAxOwogICAgICAgIHVuc2lnbmVk IHNiX2Noa2RzayA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfcmRfZm5vZGUgOiAyOwogICAgICAg IHVuc2lnbmVkIHNiX3JkX2lub2RlIDogMjsKCgogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHNi X2lnZXRfcTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpzYl9jcF90YWJsZTsKCgogICAgICAgIHVu c2lnbmVkICpzYl9ibXBfZGlyOwogICAgICAgIHVuc2lnbmVkIHNiX2NfYml0bWFwOwogICAgICAg IHdhaXRfcXVldWVfaGVhZF90IHNiX2NyZWF0aW9uX2RlOwoKICAgICAgICB1bnNpZ25lZCBzYl9j cmVhdGlvbl9kZV9sb2NrIDogMTsKCiAgICAgICAgaW50IHNiX3RpbWVzaGlmdDsKfTsKIyA2ODcg Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9udGZzX2ZzX3NiLmgiIDEKCgoKCgpzdHJ1Y3Qg bnRmc19zYl9pbmZvewoKICAgICAgICBudGZzX3VpZF90IHVpZDsKICAgICAgICBudGZzX2dpZF90 IGdpZDsKICAgICAgICBudG1vZGVfdCB1bWFzazsKICAgICAgICB2b2lkICpubHNfbWFwOwogICAg ICAgIHVuc2lnbmVkIGludCBuZ3Q7CiAgICAgICAgY2hhciBtZnRfem9uZV9tdWx0aXBsaWVyOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgbWZ0X2RhdGFfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90 IG1mdF96b25lX3BvczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBtZnRfem9uZV9zdGFydDsKICAg ICAgICBudGZzX2NsdXN0ZXJfdCBtZnRfem9uZV9lbmQ7CiAgICAgICAgbnRmc19jbHVzdGVyX3Qg ZGF0YTFfem9uZV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgZGF0YTJfem9uZV9wb3M7CgoK ICAgICAgICBudGZzX3NpemVfdCBwYXJ0aXRpb25fYmlhczsKCiAgICAgICAgbnRmc191MzIgYXRf c3RhbmRhcmRfaW5mb3JtYXRpb247CiAgICAgICAgbnRmc191MzIgYXRfYXR0cmlidXRlX2xpc3Q7 CiAgICAgICAgbnRmc191MzIgYXRfZmlsZV9uYW1lOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVt ZV92ZXJzaW9uOwogICAgICAgIG50ZnNfdTMyIGF0X3NlY3VyaXR5X2Rlc2NyaXB0b3I7CiAgICAg ICAgbnRmc191MzIgYXRfdm9sdW1lX25hbWU7CiAgICAgICAgbnRmc191MzIgYXRfdm9sdW1lX2lu Zm9ybWF0aW9uOwogICAgICAgIG50ZnNfdTMyIGF0X2RhdGE7CiAgICAgICAgbnRmc191MzIgYXRf aW5kZXhfcm9vdDsKICAgICAgICBudGZzX3UzMiBhdF9pbmRleF9hbGxvY2F0aW9uOwogICAgICAg IG50ZnNfdTMyIGF0X2JpdG1hcDsKICAgICAgICBudGZzX3UzMiBhdF9zeW1saW5rOwoKICAgICAg ICBpbnQgc2VjdG9yX3NpemU7CiAgICAgICAgaW50IGNsdXN0ZXJfc2l6ZTsKICAgICAgICBpbnQg Y2x1c3Rlcl9zaXplX2JpdHM7CiAgICAgICAgaW50IG1mdF9jbHVzdGVyc19wZXJfcmVjb3JkOwog ICAgICAgIGludCBtZnRfcmVjb3JkX3NpemU7CiAgICAgICAgaW50IG1mdF9yZWNvcmRfc2l6ZV9i aXRzOwogICAgICAgIGludCBpbmRleF9jbHVzdGVyc19wZXJfcmVjb3JkOwogICAgICAgIGludCBp bmRleF9yZWNvcmRfc2l6ZTsKICAgICAgICBpbnQgaW5kZXhfcmVjb3JkX3NpemVfYml0czsKICAg ICAgICBudGZzX2NsdXN0ZXJfdCBucl9jbHVzdGVyczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBt ZnRfbGNuOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF9taXJyX2xjbjsKCiAgICAgICAgdW5z aWduZWQgY2hhciAqbWZ0OwogICAgICAgIHVuc2lnbmVkIHNob3J0ICp1cGNhc2U7CiAgICAgICAg dW5zaWduZWQgaW50IHVwY2FzZV9sZW5ndGg7CgogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2lu Zm8gKm1mdF9pbm87CiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyAqbWZ0bWlycjsKICAg ICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICpiaXRtYXA7CiAgICAgICAgc3RydWN0IHN1cGVy X2Jsb2NrICpzYjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlub19mbGFnczsKfTsKIyA2ODggIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAxCgoKIyAxICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mYXRfY3ZmLmgiIDEKCgoKCgpzdHJ1Y3QgY3Zm X2Zvcm1hdAp7IGludCBjdmZfdmVyc2lvbjsKICBjaGFyKiBjdmZfdmVyc2lvbl90ZXh0OwogIHVu c2lnbmVkIGxvbmcgZmxhZ3M7CiAgaW50ICgqZGV0ZWN0X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9j aypzYik7CiAgaW50ICgqbW91bnRfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGNoYXIqb3B0 aW9ucyk7CiAgaW50ICgqdW5tb3VudF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IpOwogIHN0 cnVjdCBidWZmZXJfaGVhZCogKCpjdmZfYnJlYWQpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsaW50 IGJsb2NrKTsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQqICgqY3ZmX2dldGJsaykgKHN0cnVjdCBzdXBl cl9ibG9jaypzYixpbnQgYmxvY2spOwogIHZvaWQgKCpjdmZfYnJlbHNlKSAoc3RydWN0IHN1cGVy X2Jsb2NrICpzYixzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKICB2b2lkICgqY3ZmX21hcmtfYnVm ZmVyX2RpcnR5KSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7CiAgdm9pZCAoKmN2Zl9zZXRfdXB0b2Rh dGUpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGJ1ZmZlcl9oZWFkICpiaCwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWwpOwog IGludCAoKmN2Zl9pc191cHRvZGF0ZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Isc3RydWN0IGJ1 ZmZlcl9oZWFkICpiaCk7CiAgdm9pZCAoKmN2Zl9sbF9yd19ibG9jaykgKHN0cnVjdCBzdXBlcl9i bG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcHIsCiAgICAgICAgICAgICAg ICAgICAgICAgIGludCBuYnJlcSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZl cl9oZWFkICpiaFszMl0pOwogIGludCAoKmZhdF9hY2Nlc3MpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnNiLGludCBucixpbnQgbmV3X3ZhbHVlKTsKICBpbnQgKCpjdmZfc3RhdGZzKSAoc3RydWN0IHN1 cGVyX2Jsb2NrICpzYixzdHJ1Y3Qgc3RhdGZzICpidWYsIGludCBidWZzaXopOwogIGludCAoKmN2 Zl9ibWFwKSAoc3RydWN0IGlub2RlICppbm9kZSxpbnQgYmxvY2spOwogIHNzaXplX3QgKCpjdmZf ZmlsZV9yZWFkKSAoIHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAg c3NpemVfdCAoKmN2Zl9maWxlX3dyaXRlKSAoIHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwg c2l6ZV90LCBsb2ZmX3QgKik7CiAgaW50ICgqY3ZmX21tYXApIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CiAgaW50ICgqY3ZmX3JlYWRwYWdlKSAoc3RydWN0IGlub2Rl ICosIHN0cnVjdCBwYWdlICopOwogIGludCAoKmN2Zl93cml0ZXBhZ2UpIChzdHJ1Y3QgaW5vZGUg Kiwgc3RydWN0IHBhZ2UgKik7CiAgaW50ICgqY3ZmX2Rpcl9pb2N0bCkgKHN0cnVjdCBpbm9kZSAq IGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKICB2b2lkICgqemVyb19vdXRfY2x1c3Rl cikgKHN0cnVjdCBpbm9kZSosIGludCBjbHVzdGVybnIpOwp9OwoKaW50IHJlZ2lzdGVyX2N2Zl9m b3JtYXQoc3RydWN0IGN2Zl9mb3JtYXQqY3ZmX2Zvcm1hdCk7CmludCB1bnJlZ2lzdGVyX2N2Zl9m b3JtYXQoc3RydWN0IGN2Zl9mb3JtYXQqY3ZmX2Zvcm1hdCk7CnZvaWQgZGVjX2N2Zl9mb3JtYXRf dXNlX2NvdW50X2J5X3ZlcnNpb24oaW50IHZlcnNpb24pOwppbnQgZGV0ZWN0X2N2ZihzdHJ1Y3Qg c3VwZXJfYmxvY2sqc2IsY2hhcipmb3JjZSk7CgpleHRlcm4gc3RydWN0IGN2Zl9mb3JtYXQgKmN2 Zl9mb3JtYXRzW107CmV4dGVybiBpbnQgY3ZmX2Zvcm1hdF91c2VfY291bnRbXTsKIyA0ICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAyCgoKCgoKc3Ry dWN0IGZhdF9tb3VudF9vcHRpb25zIHsKICAgICAgICB1aWRfdCBmc191aWQ7CiAgICAgICAgZ2lk X3QgZnNfZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzX3VtYXNrOwogICAgICAgIHVuc2ln bmVkIHNob3J0IGNvZGVwYWdlOwogICAgICAgIGNoYXIgKmlvY2hhcnNldDsKICAgICAgICB1bnNp Z25lZCBzaG9ydCBzaG9ydG5hbWU7CiAgICAgICAgdW5zaWduZWQgY2hhciBuYW1lX2NoZWNrOwog ICAgICAgIHVuc2lnbmVkIGNoYXIgY29udmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBxdWlldDox LAogICAgICAgICAgICAgICAgIHNob3dleGVjOjEsCiAgICAgICAgICAgICAgICAgc3lzX2ltbXV0 YWJsZToxLAogICAgICAgICAgICAgICAgIGRvdHNPSzoxLAogICAgICAgICAgICAgICAgIGlzdmZh dDoxLAogICAgICAgICAgICAgICAgIHV0Zjg6MSwKICAgICAgICAgICAgICAgICB1bmljb2RlX3hs YXRlOjEsCiAgICAgICAgICAgICAgICAgcG9zaXhmczoxLAogICAgICAgICAgICAgICAgIG51bXRh aWw6MSwKICAgICAgICAgICAgICAgICBhdGFyaToxLAogICAgICAgICAgICAgICAgIGZhdDMyOjEs CiAgICAgICAgICAgICAgICAgbm9jYXNlOjE7Cn07CgpzdHJ1Y3QgbXNkb3Nfc2JfaW5mbyB7CiAg ICAgICAgdW5zaWduZWQgc2hvcnQgY2x1c3Rlcl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IGNsdXN0ZXJfYml0czsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZhdHMsZmF0X2JpdHM7CiAgICAg ICAgdW5zaWduZWQgc2hvcnQgZmF0X3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmF0X2xl bmd0aDsKICAgICAgICB1bnNpZ25lZCBsb25nIGRpcl9zdGFydDsKICAgICAgICB1bnNpZ25lZCBz aG9ydCBkaXJfZW50cmllczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFfc3RhcnQ7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBjbHVzdGVyczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJvb3RfY2x1 c3RlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGZzaW5mb19zZWN0b3I7CiAgICAgICAgc3RydWN0 IHNlbWFwaG9yZSBmYXRfbG9jazsKICAgICAgICBpbnQgcHJldl9mcmVlOwogICAgICAgIGludCBm cmVlX2NsdXN0ZXJzOwogICAgICAgIHN0cnVjdCBmYXRfbW91bnRfb3B0aW9ucyBvcHRpb25zOwog ICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc19kaXNrOwogICAgICAgIHN0cnVjdCBubHNfdGFi bGUgKm5sc19pbzsKICAgICAgICBzdHJ1Y3QgY3ZmX2Zvcm1hdCogY3ZmX2Zvcm1hdDsKICAgICAg ICB2b2lkICpkaXJfb3BzOwogICAgICAgIHZvaWQgKnByaXZhdGVfZGF0YTsKICAgICAgICBpbnQg ZGlyX3Blcl9ibG9jazsKICAgICAgICBpbnQgZGlyX3Blcl9ibG9ja19iaXRzOwp9OwojIDY4OSAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2lzb19mc19zYi5oIiAxCgoKCgoKCnN0cnVjdCBp c29mc19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbmlub2RlczsKICAgICAgICB1 bnNpZ25lZCBsb25nIHNfbnpvbmVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6 b25lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19sb2dfem9uZV9zaXplOwogICAgICAgIHVuc2ln bmVkIGxvbmcgc19tYXhfc2l6ZTsKCiAgICAgICAgdW5zaWduZWQgY2hhciBzX2hpZ2hfc2llcnJh OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19tYXBwaW5nOwogICAgICAgIGludCBzX3JvY2tfb2Zm c2V0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19yb2NrOwogICAgICAgIHVuc2lnbmVkIGNoYXIg c19qb2xpZXRfbGV2ZWw7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX3V0Zjg7CiAgICAgICAgdW5z aWduZWQgY2hhciBzX2NydWZ0OwoKCiAgICAgICAgdW5zaWduZWQgY2hhciBzX3VuaGlkZTsKICAg ICAgICB1bnNpZ25lZCBjaGFyIHNfbm9zdWlkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub2Rl djsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfbm9jb21wcmVzczsKCiAgICAgICAgbW9kZV90IHNf bW9kZTsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBz dHJ1Y3QgbmxzX3RhYmxlICpzX25sc19pb2NoYXJzZXQ7Cn07CiMgNjkwICIvdXNyL3NyYy9saW51 eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw L2luY2x1ZGUvbGludXgvbmZzX2ZzX3NiLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9saW51eC9uZnNfZnNfc2IuaCIKc3RydWN0IG5mc19zZXJ2ZXIgewogICAgICAgIHN0 cnVjdCBycGNfY2xudCAqIGNsaWVudDsKICAgICAgICBzdHJ1Y3QgbmZzX3JwY19vcHMgKiBycGNf b3BzOwogICAgICAgIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgcnNpemU7CiAgICAg ICAgdW5zaWduZWQgaW50IHJwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgd3NpemU7CiAgICAg ICAgdW5zaWduZWQgaW50IHdwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgZHRzaXplOwogICAg ICAgIHVuc2lnbmVkIGludCBic2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNyZWdtaW47CiAg ICAgICAgdW5zaWduZWQgaW50IGFjcmVnbWF4OwogICAgICAgIHVuc2lnbmVkIGludCBhY2Rpcm1p bjsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNkaXJtYXg7CiAgICAgICAgdW5zaWduZWQgaW50IG5h bWVsZW47CiAgICAgICAgY2hhciAqIGhvc3RuYW1lOwogICAgICAgIHN0cnVjdCBuZnNfcmVxbGlz dCAqIHJ3X3JlcXVlc3RzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbHJ1X3JlYWQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJ1X2RpcnR5LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxydV9jb21taXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bHJ1X2J1c3k7Cn07CgoKCgpzdHJ1Y3QgbmZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBuZnNf c2VydmVyIHNfc2VydmVyOwp9OwojIDY5MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv bGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3N5 c3ZfZnNfc2IuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9z eXN2X2ZzX3NiLmgiCnN0cnVjdCBzeXN2X3NiX2luZm8gewogICAgICAgIGludCBzX3R5cGU7CiAg ICAgICAgY2hhciBzX2J5dGVzZXg7CiAgICAgICAgY2hhciBzX3RydW5jYXRlOwoKICAgICAgICBu bGlua190IHNfbGlua19tYXg7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9j azsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrXzE7CiAgICAgICAgdW5z aWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9ja19iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBz X2luZF9wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9ja19iaXRz OwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZF9wZXJfYmxvY2tfMjsKICAgICAgICB1bnNpZ25l ZCBpbnQgc190b29iaWdfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfYmxvY2tfYmFzZTsK ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2ZpY19zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IHNfZmxjX3NpemU7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19iaDE7CiAgICAgICAg c3RydWN0IGJ1ZmZlcl9oZWFkICpzX2JoMjsKCgogICAgICAgIGNoYXIgKiBzX3NiZDE7CiAgICAg ICAgY2hhciAqIHNfc2JkMjsKICAgICAgICB1MTYgKnNfc2JfZmljX2NvdW50OwogICAgICAgIHUx NiAqc19zYl9maWNfaW5vZGVzOwogICAgICAgIHUxNiAqc19zYl90b3RhbF9mcmVlX2lub2RlczsK ICAgICAgICB1MTYgKnNfYmNhY2hlX2NvdW50OwogICAgICAgIHUzMiAqc19iY2FjaGU7CiAgICAg ICAgdTMyICpzX2ZyZWVfYmxvY2tzOwogICAgICAgIHUzMiAqc19zYl90aW1lOwogICAgICAgIHUz MiAqc19zYl9zdGF0ZTsKCgogICAgICAgIHUzMiBzX2ZpcnN0aW5vZGV6b25lOwogICAgICAgIHUz MiBzX2ZpcnN0ZGF0YXpvbmU7CiAgICAgICAgdTMyIHNfbmlub2RlczsKICAgICAgICB1MzIgc19u ZGF0YXpvbmVzOwogICAgICAgIHUzMiBzX256b25lczsKICAgICAgICB1MTYgc19uYW1lbGVuOwp9 OwojIDY5MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2IuaCIgMQojIDEx ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9hZmZzX2ZzX3NiLmgiCnN0cnVj dCBhZmZzX2JtX2luZm8gewogICAgICAgIHUzMiBibV9rZXk7CiAgICAgICAgdTMyIGJtX2ZyZWU7 Cn07CgpzdHJ1Y3QgYWZmc19zYl9pbmZvIHsKICAgICAgICBpbnQgc19wYXJ0aXRpb25fc2l6ZTsK ICAgICAgICBpbnQgc19yZXNlcnZlZDsKCiAgICAgICAgdTMyIHNfZGF0YV9ibGtzaXplOwogICAg ICAgIHUzMiBzX3Jvb3RfYmxvY2s7CiAgICAgICAgaW50IHNfaGFzaHNpemU7CiAgICAgICAgdW5z aWduZWQgbG9uZyBzX2ZsYWdzOwogICAgICAgIHVpZF90IHNfdWlkOwogICAgICAgIGdpZF90IHNf Z2lkOwogICAgICAgIHVtb2RlX3Qgc19tb2RlOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq c19yb290X2JoOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc19ibWxvY2s7CiAgICAgICAgc3Ry dWN0IGFmZnNfYm1faW5mbyAqc19iaXRtYXA7CiAgICAgICAgdTMyIHNfYm1hcF9jb3VudDsKICAg ICAgICB1MzIgc19ibWFwX2JpdHM7CiAgICAgICAgdTMyIHNfbGFzdF9ibWFwOwogICAgICAgIHN0 cnVjdCBidWZmZXJfaGVhZCAqc19ibWFwX2JoOwogICAgICAgIGNoYXIgKnNfcHJlZml4OwogICAg ICAgIGludCBzX3ByZWZpeF9sZW47CiAgICAgICAgY2hhciBzX3ZvbHVtZVszMl07Cn07CiMgNjkz ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDEKIyAxNyAiL3Vzci9z cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMv bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDEKIyAyMzcgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX3RpbWV2YWwgewog ICAgICAgIF9fczMyIHR2X3NlYzsKICAgICAgICBfX3MzMiB0dl91c2VjOwp9OwoKc3RydWN0IHVm c19kaXJfZW50cnkgewogICAgICAgIF9fdTMyIGRfaW5vOwogICAgICAgIF9fdTE2IGRfcmVjbGVu OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTE2IGRfbmFtbGVuOwogICAgICAg ICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBkX3R5cGU7CiAg ICAgICAgICAgICAgICAgICAgICAgIF9fdTggZF9uYW1sZW47CiAgICAgICAgICAgICAgICB9IGRf NDQ7CiAgICAgICAgfSBkX3U7CiAgICAgICAgX191OCBkX25hbWVbMjU1ICsgMV07Cn07CgpzdHJ1 Y3QgdWZzX2NzdW0gewogICAgICAgIF9fdTMyIGNzX25kaXI7CiAgICAgICAgX191MzIgY3NfbmJm cmVlOwogICAgICAgIF9fdTMyIGNzX25pZnJlZTsKICAgICAgICBfX3UzMiBjc19uZmZyZWU7Cn07 CgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrIHsKICAgICAgICBfX3UzMiBmc19saW5rOwogICAg ICAgIF9fdTMyIGZzX3JsaW5rOwogICAgICAgIF9fdTMyIGZzX3NibGtubzsKICAgICAgICBfX3Uz MiBmc19jYmxrbm87CiAgICAgICAgX191MzIgZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZzX2Ri bGtubzsKICAgICAgICBfX3UzMiBmc19jZ29mZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21hc2s7 CiAgICAgICAgX191MzIgZnNfdGltZTsKICAgICAgICBfX3UzMiBmc19zaXplOwogICAgICAgIF9f dTMyIGZzX2RzaXplOwogICAgICAgIF9fdTMyIGZzX25jZzsKICAgICAgICBfX3UzMiBmc19ic2l6 ZTsKICAgICAgICBfX3UzMiBmc19mc2l6ZTsKICAgICAgICBfX3UzMiBmc19mcmFnOwoKICAgICAg ICBfX3UzMiBmc19taW5mcmVlOwogICAgICAgIF9fdTMyIGZzX3JvdGRlbGF5OwogICAgICAgIF9f dTMyIGZzX3JwczsKCiAgICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAgICAgX191MzIgZnNfZm1h c2s7CiAgICAgICAgX191MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzaGlmdDsKCiAg ICAgICAgX191MzIgZnNfbWF4Y29udGlnOwogICAgICAgIF9fdTMyIGZzX21heGJwZzsKCiAgICAg ICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzYnRvZGI7CiAgICAgICAg X191MzIgZnNfc2JzaXplOwogICAgICAgIF9fdTMyIGZzX2NzbWFzazsKICAgICAgICBfX3UzMiBm c19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX25pbmRpcjsKICAgICAgICBfX3UzMiBmc19pbm9w YjsKICAgICAgICBfX3UzMiBmc19uc3BmOwoKICAgICAgICBfX3UzMiBmc19vcHRpbTsKCiAgICAg ICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg ICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAg ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAg ICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgIH0gZnNfdTE7CiAgICAgICAgX191MzIg ZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3UzMiBmc190cmFja3NrZXc7CgoKCgogICAgICAgIF9f dTMyIGZzX2lkWzJdOwoKICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAgICAgX191MzIgZnNf Y3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nnc2l6ZTsKCiAgICAgICAgX191MzIgZnNfbnRyYWs7 CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAgICAgICAgX191MzIgZnNfc3BjOwoKICAgICAgICBf X3UzMiBmc19uY3lsOwoKICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAgX191MzIgZnNfaXBn OwogICAgICAgIF9fdTMyIGZzX2ZwZzsKCiAgICAgICAgc3RydWN0IHVmc19jc3VtIGZzX2NzdG90 YWw7CgogICAgICAgIF9fczggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2NsZWFuOwogICAgICAg IF9fczggZnNfcm9ubHk7CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAgICBfX3M4IGZzX2Zz bW50WzUxMl07CgogICAgICAgIF9fdTMyIGZzX2Nncm90b3I7CiAgICAgICAgX191MzIgZnNfY3Nw WzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhjbHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2NwYzsK ICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzE2XVs4XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAg ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNv bls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAg ICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAg ICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3Fi bWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAg ICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg ICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAg ICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3Nw YXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAg ICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAg ICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2Owog ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf c3BhcmVjb25bNTBdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19jb250aWdzdW1z aXplOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAg ICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19pbm9kZWZtdDsKICAgICAgICAgICAgICAgICAg ICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9f dTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNr WzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAg ICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3Jt YXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwog ICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAg IF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC91ZnNfZnMuaCIKc3RydWN0IHVmc19jeWxpbmRlcl9ncm91cCB7CiAgICAgICAgX191 MzIgY2dfbGluazsKICAgICAgICBfX3UzMiBjZ19tYWdpYzsKICAgICAgICBfX3UzMiBjZ190aW1l OwogICAgICAgIF9fdTMyIGNnX2NneDsKICAgICAgICBfX3UxNiBjZ19uY3lsOwogICAgICAgIF9f dTE2IGNnX25pYmxrOwogICAgICAgIF9fdTMyIGNnX25kYmxrOwogICAgICAgIHN0cnVjdCB1ZnNf Y3N1bSBjZ19jczsKICAgICAgICBfX3UzMiBjZ19yb3RvcjsKICAgICAgICBfX3UzMiBjZ19mcm90 b3I7CiAgICAgICAgX191MzIgY2dfaXJvdG9yOwogICAgICAgIF9fdTMyIGNnX2Zyc3VtWyg4MTky IC8gMTAyNCldOwogICAgICAgIF9fdTMyIGNnX2J0b3RvZmY7CiAgICAgICAgX191MzIgY2dfYm9m ZjsKICAgICAgICBfX3UzMiBjZ19pdXNlZG9mZjsKICAgICAgICBfX3UzMiBjZ19mcmVlb2ZmOwog ICAgICAgIF9fdTMyIGNnX25leHRmcmVlb2ZmOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX2NsdXN0ZXJzdW1v ZmY7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX2NsdXN0ZXJvZmY7CiAgICAgICAg ICAgICAgICAgICAgICAgIF9fdTMyIGNnX25jbHVzdGVyYmxrczsKICAgICAgICAgICAgICAgICAg ICAgICAgX191MzIgY2dfc3BhcmVjb25bMTNdOwogICAgICAgICAgICAgICAgfSBjZ180NDsKICAg ICAgICAgICAgICAgIF9fdTMyIGNnX3NwYXJlY29uWzE2XTsKICAgICAgICB9IGNnX3U7CiAgICAg ICAgX191OCBjZ19zcGFjZVsxXTsKCn07CgoKCgpzdHJ1Y3QgdWZzX2lub2RlIHsKICAgICAgICBf X3UxNiB1aV9tb2RlOwogICAgICAgIF9fdTE2IHVpX25saW5rOwogICAgICAgIHVuaW9uIHsKICAg ICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3N1 aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3NnaWQ7CiAgICAgICAgICAgICAg ICB9IG9sZGlkczsKICAgICAgICAgICAgICAgIF9fdTMyIHVpX2ludW1iZXI7CiAgICAgICAgICAg ICAgICBfX3UzMiB1aV9hdXRob3I7CiAgICAgICAgfSB1aV91MTsKICAgICAgICBfX3U2NCB1aV9z aXplOwogICAgICAgIHN0cnVjdCB1ZnNfdGltZXZhbCB1aV9hdGltZTsKICAgICAgICBzdHJ1Y3Qg dWZzX3RpbWV2YWwgdWlfbXRpbWU7CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX2N0aW1l OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg ICAgICAgICAgIF9fdTMyIHVpX2RiWzEyXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg dWlfaWJbM107CiAgICAgICAgICAgICAgICB9IHVpX2FkZHI7CiAgICAgICAgICAgICAgICBfX3U4 IHVpX3N5bWxpbmtbNCooMTIgKzMpXTsKICAgICAgICB9IHVpX3UyOwogICAgICAgIF9fdTMyIHVp X2ZsYWdzOwogICAgICAgIF9fdTMyIHVpX2Jsb2NrczsKICAgICAgICBfX3UzMiB1aV9nZW47CiAg ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAg ICAgICAgX191MzIgdWlfc2hhZG93OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV91 aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsKICAgICAgICAgICAgICAg ICAgICAgICAgX191MzIgdWlfb2VmdGZsYWc7CiAgICAgICAgICAgICAgICB9IHVpX3N1bjsKICAg ICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3Vp ZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAgICAgICAg ICAgICAgICBfX3MzMiB1aV9zcGFyZVsyXTsKICAgICAgICAgICAgICAgIH0gdWlfNDQ7CiAgICAg ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV91aWQ7 CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsKICAgICAgICAgICAgICAgICAg ICAgICAgX191MTYgdWlfbW9kZWg7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3Nw YXJlOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV90cmFuczsKICAgICAgICAgICAg ICAgIH0gdWlfaHVyZDsKICAgICAgICB9IHVpX3UzOwp9OwojIDUxNCAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiCmV4dGVybiB2b2lkIHVmc19mcmVlX2ZyYWdt ZW50cyAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CmV4dGVybiB2b2lkIHVm c19mcmVlX2Jsb2NrcyAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CmV4dGVy biB1bnNpZ25lZCB1ZnNfbmV3X2ZyYWdtZW50cyAoc3RydWN0IGlub2RlICosIHUzMiAqLCB1bnNp Z25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCBpbnQgKik7CgoKZXh0ZXJuIHN0cnVjdCB1ZnNfY2df cHJpdmF0ZV9pbmZvICogdWZzX2xvYWRfY3lsaW5kZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1 bnNpZ25lZCk7CmV4dGVybiB2b2lkIHVmc19wdXRfY3lsaW5kZXIgKHN0cnVjdCBzdXBlcl9ibG9j ayAqLCB1bnNpZ25lZCk7CgoKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVmc19kaXJf aW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIGludCB1ZnNfY2hlY2tfZGlyX2VudHJ5IChjb25zdCBj aGFyICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgYnVm ZmVyX2hlYWQgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgdWZzX2FkZF9saW5rIChzdHJ1 Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlub190IHVmc19pbm9kZV9ieV9u YW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IHVmc19tYWtl X2VtcHR5KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgdWZz X2Rpcl9lbnRyeSAqIHVmc19maW5kX2VudHJ5IChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBidWZm ZXJfaGVhZCAqKik7CmV4dGVybiBpbnQgdWZzX2RlbGV0ZV9lbnRyeSAoc3RydWN0IGlub2RlICos IHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKZXh0ZXJuIGlu dCB1ZnNfZW1wdHlfZGlyIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgdWZzX2Rpcl9l bnRyeSAqIHVmc19kb3Rkb3QgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiop OwpleHRlcm4gdm9pZCB1ZnNfc2V0X2xpbmsoc3RydWN0IGlub2RlICosIHN0cnVjdCB1ZnNfZGly X2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqLCBzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJu IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVmc19maWxlX2lub2RlX29wZXJhdGlvbnM7CmV4dGVy biBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVmc19maWxlX29wZXJhdGlvbnM7CgpleHRlcm4gc3Ry dWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyB1ZnNfYW9wczsKCgpleHRlcm4gdm9pZCB1ZnNf ZnJlZV9pbm9kZSAoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiB1 ZnNfbmV3X2lub2RlIChjb25zdCBzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKCgpleHRlcm4gaW50IHVm c19mcmFnX21hcCAoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiB2b2lkIHVmc19yZWFkX2lu b2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHVmc19wdXRfaW5vZGUgKHN0cnVjdCBp bm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX3dyaXRlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKiwgaW50 KTsKZXh0ZXJuIGludCB1ZnNfc3luY19pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9p ZCB1ZnNfZGVsZXRlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgYnVmZmVy X2hlYWQgKiB1ZnNfZ2V0ZnJhZyAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAq KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIHVmc19icmVhZCAoc3RydWN0IGlub2RlICos IHVuc2lnbmVkLCBpbnQsIGludCAqKTsKCgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1 ZnNfZGlyX29wZXJhdGlvbnM7CgoKZXh0ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHVmc19m c190eXBlOwpleHRlcm4gdm9pZCB1ZnNfd2FybmluZyAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGNv bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHBy aW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX2Vycm9yIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg KiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1h dCAocHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfcGFuaWMgKHN0cnVjdCBzdXBlcl9i bG9jayAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgo Zm9ybWF0IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc193cml0ZV9zdXBlciAoc3Ry dWN0IHN1cGVyX2Jsb2NrICopOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNf ZmFzdF9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7CgoKZXh0ZXJuIHZvaWQgdWZzX3RydW5jYXRl IChzdHJ1Y3QgaW5vZGUgKik7CiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp bnV4L3Vmc19mc19zYi5oIiAyCgoKCgoKc3RydWN0IHVmc19idWZmZXJfaGVhZCB7CiAgICAgICAg dW5zaWduZWQgZnJhZ21lbnQ7CiAgICAgICAgdW5zaWduZWQgY291bnQ7CiAgICAgICAgc3RydWN0 IGJ1ZmZlcl9oZWFkICogYmhbKDgxOTIgLyAxMDI0KV07Cn07CgpzdHJ1Y3QgdWZzX2NnX3ByaXZh dGVfaW5mbyB7CiAgICAgICAgc3RydWN0IHVmc19jeWxpbmRlcl9ncm91cCB1Y2c7CiAgICAgICAg X191MzIgY19jZ3g7CiAgICAgICAgX191MTYgY19uY3lsOwogICAgICAgIF9fdTE2IGNfbmlibGs7 CiAgICAgICAgX191MzIgY19uZGJsazsKICAgICAgICBfX3UzMiBjX3JvdG9yOwogICAgICAgIF9f dTMyIGNfZnJvdG9yOwogICAgICAgIF9fdTMyIGNfaXJvdG9yOwogICAgICAgIF9fdTMyIGNfYnRv dG9mZjsKICAgICAgICBfX3UzMiBjX2JvZmY7CiAgICAgICAgX191MzIgY19pdXNlZG9mZjsKICAg ICAgICBfX3UzMiBjX2ZyZWVvZmY7CiAgICAgICAgX191MzIgY19uZXh0ZnJlZW9mZjsKICAgICAg ICBfX3UzMiBjX2NsdXN0ZXJzdW1vZmY7CiAgICAgICAgX191MzIgY19jbHVzdGVyb2ZmOwogICAg ICAgIF9fdTMyIGNfbmNsdXN0ZXJibGtzOwp9OwoKc3RydWN0IHVmc19zYl9wcml2YXRlX2luZm8g ewogICAgICAgIHN0cnVjdCB1ZnNfYnVmZmVyX2hlYWQgc191Ymg7CiAgICAgICAgX191MzIgc19z Ymxrbm87CiAgICAgICAgX191MzIgc19jYmxrbm87CiAgICAgICAgX191MzIgc19pYmxrbm87CiAg ICAgICAgX191MzIgc19kYmxrbm87CiAgICAgICAgX191MzIgc19jZ29mZnNldDsKICAgICAgICBf X3UzMiBzX2NnbWFzazsKICAgICAgICBfX3UzMiBzX3NpemU7CiAgICAgICAgX191MzIgc19kc2l6 ZTsKICAgICAgICBfX3UzMiBzX25jZzsKICAgICAgICBfX3UzMiBzX2JzaXplOwogICAgICAgIF9f dTMyIHNfZnNpemU7CiAgICAgICAgX191MzIgc19mcGI7CiAgICAgICAgX191MzIgc19taW5mcmVl OwogICAgICAgIF9fdTMyIHNfYm1hc2s7CiAgICAgICAgX191MzIgc19mbWFzazsKICAgICAgICBf X3UzMiBzX2JzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZzaGlmdDsKICAgICAgICBfX3UzMiBzX2Zw YnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnNidG9kYjsKICAgICAgICBfX3UzMiBzX3Nic2l6ZTsK ICAgICAgICBfX3UzMiBzX2NzbWFzazsKICAgICAgICBfX3UzMiBzX2Nzc2hpZnQ7CiAgICAgICAg X191MzIgc19uaW5kaXI7CiAgICAgICAgX191MzIgc19pbm9wYjsKICAgICAgICBfX3UzMiBzX25z cGY7CiAgICAgICAgX191MzIgc19ucHNlY3Q7CiAgICAgICAgX191MzIgc19pbnRlcmxlYXZlOwog ICAgICAgIF9fdTMyIHNfdHJhY2tza2V3OwogICAgICAgIF9fdTMyIHNfY3NhZGRyOwogICAgICAg IF9fdTMyIHNfY3NzaXplOwogICAgICAgIF9fdTMyIHNfY2dzaXplOwogICAgICAgIF9fdTMyIHNf bnRyYWs7CiAgICAgICAgX191MzIgc19uc2VjdDsKICAgICAgICBfX3UzMiBzX3NwYzsKICAgICAg ICBfX3UzMiBzX2lwZzsKICAgICAgICBfX3UzMiBzX2ZwZzsKICAgICAgICBfX3UzMiBzX2NwYzsK ICAgICAgICBfX3MzMiBzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgX19zNjQgc19xYm1hc2s7CiAg ICAgICAgX19zNjQgc19xZm1hc2s7CiAgICAgICAgX19zMzIgc19wb3N0Ymxmb3JtYXQ7CiAgICAg ICAgX19zMzIgc19ucnBvczsKICAgICAgICBfX3MzMiBzX3Bvc3RibG9mZjsKICAgICAgICBfX3Mz MiBzX3JvdGJsb2ZmOwoKICAgICAgICBfX3UzMiBzX2ZwYm1hc2s7CiAgICAgICAgX191MzIgc19h cGI7CiAgICAgICAgX191MzIgc18yYXBiOwogICAgICAgIF9fdTMyIHNfM2FwYjsKICAgICAgICBf X3UzMiBzX2FwYm1hc2s7CiAgICAgICAgX191MzIgc19hcGJzaGlmdDsKICAgICAgICBfX3UzMiBz XzJhcGJzaGlmdDsKICAgICAgICBfX3UzMiBzXzNhcGJzaGlmdDsKICAgICAgICBfX3UzMiBzX25z cGZzaGlmdDsKICAgICAgICBfX3UzMiBzX25zcGI7CiAgICAgICAgX191MzIgc19pbm9wZjsKICAg ICAgICBfX3UzMiBzX3NiYmFzZTsKICAgICAgICBfX3UzMiBzX2JwZjsKICAgICAgICBfX3UzMiBz X2JwZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfYnBmbWFzazsKCiAgICAgICAgX191MzIgc19tYXhz eW1saW5rbGVuOwp9OwoKCgoKCnN0cnVjdCB1ZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IHVm c19zYl9wcml2YXRlX2luZm8gKiBzX3VzcGk7CiAgICAgICAgc3RydWN0IHVmc19jc3VtICogc19j c3BbMzFdOwogICAgICAgIHVuc2lnbmVkIHNfYnl0ZXNleDsKICAgICAgICB1bnNpZ25lZCBzX2Zs YWdzOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBzX3VjZzsKICAgICAgICBzdHJ1Y3Qg dWZzX2NnX3ByaXZhdGVfaW5mbyAqIHNfdWNwaVs4XTsKICAgICAgICB1bnNpZ25lZCBzX2Nnbm9b OF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19jZ19sb2FkZWQ7CiAgICAgICAgdW5zaWduZWQg c19tb3VudF9vcHQ7Cn07CgoKCgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX2ZpcnN0IHsKICAg ICAgICBfX3UzMiBmc19saW5rOwogICAgICAgIF9fdTMyIGZzX3JsaW5rOwogICAgICAgIF9fdTMy IGZzX3NibGtubzsKICAgICAgICBfX3UzMiBmc19jYmxrbm87CiAgICAgICAgX191MzIgZnNfaWJs a25vOwogICAgICAgIF9fdTMyIGZzX2RibGtubzsKICAgICAgICBfX3UzMiBmc19jZ29mZnNldDsK ICAgICAgICBfX3UzMiBmc19jZ21hc2s7CiAgICAgICAgX191MzIgZnNfdGltZTsKICAgICAgICBf X3UzMiBmc19zaXplOwogICAgICAgIF9fdTMyIGZzX2RzaXplOwogICAgICAgIF9fdTMyIGZzX25j ZzsKICAgICAgICBfX3UzMiBmc19ic2l6ZTsKICAgICAgICBfX3UzMiBmc19mc2l6ZTsKICAgICAg ICBfX3UzMiBmc19mcmFnOwogICAgICAgIF9fdTMyIGZzX21pbmZyZWU7CiAgICAgICAgX191MzIg ZnNfcm90ZGVsYXk7CiAgICAgICAgX191MzIgZnNfcnBzOwogICAgICAgIF9fdTMyIGZzX2JtYXNr OwogICAgICAgIF9fdTMyIGZzX2ZtYXNrOwogICAgICAgIF9fdTMyIGZzX2JzaGlmdDsKICAgICAg ICBfX3UzMiBmc19mc2hpZnQ7CiAgICAgICAgX191MzIgZnNfbWF4Y29udGlnOwogICAgICAgIF9f dTMyIGZzX21heGJwZzsKICAgICAgICBfX3UzMiBmc19mcmFnc2hpZnQ7CiAgICAgICAgX191MzIg ZnNfZnNidG9kYjsKICAgICAgICBfX3UzMiBmc19zYnNpemU7CiAgICAgICAgX191MzIgZnNfY3Nt YXNrOwogICAgICAgIF9fdTMyIGZzX2Nzc2hpZnQ7CiAgICAgICAgX191MzIgZnNfbmluZGlyOwog ICAgICAgIF9fdTMyIGZzX2lub3BiOwogICAgICAgIF9fdTMyIGZzX25zcGY7CiAgICAgICAgX191 MzIgZnNfb3B0aW07CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg ICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgfSBm c19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBf X3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgIH0gZnNf dTE7CiAgICAgICAgX191MzIgZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3UzMiBmc190cmFja3Nr ZXc7CiAgICAgICAgX191MzIgZnNfaWRbMl07CiAgICAgICAgX191MzIgZnNfY3NhZGRyOwogICAg ICAgIF9fdTMyIGZzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBmc19jZ3NpemU7CiAgICAgICAgX191 MzIgZnNfbnRyYWs7CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAgICAgICAgX191MzIgZnNfc3Bj OwogICAgICAgIF9fdTMyIGZzX25jeWw7CiAgICAgICAgX191MzIgZnNfY3BnOwogICAgICAgIF9f dTMyIGZzX2lwZzsKICAgICAgICBfX3UzMiBmc19mcGc7CiAgICAgICAgc3RydWN0IHVmc19jc3Vt IGZzX2NzdG90YWw7CiAgICAgICAgX19zOCBmc19mbW9kOwogICAgICAgIF9fczggZnNfY2xlYW47 CiAgICAgICAgX19zOCBmc19yb25seTsKICAgICAgICBfX3M4IGZzX2ZsYWdzOwogICAgICAgIF9f czggZnNfZnNtbnRbNTEyIC0gMjEyXTsKCn07CgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX3NlY29u ZCB7CiAgICAgICAgX19zOCBmc19mc21udFsyMTJdOwogICAgICAgIF9fdTMyIGZzX2Nncm90b3I7 CiAgICAgICAgX191MzIgZnNfY3NwWzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhjbHVzdGVyOwog ICAgICAgIF9fdTMyIGZzX2NwYzsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzgyXTsKfTsKCnN0 cnVjdCB1ZnNfc3VwZXJfYmxvY2tfdGhpcmQgewogICAgICAgIF9fdTE2IGZzX29wb3N0YmxbNDZd OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg ICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAg X19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVj b24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAg ICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAg ICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsKICAgICAgICAg ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29u WzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAg ICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAg ICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3Fi bWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAg ICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg ICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1MF07CiAgICAgICAgICAgICAgICAg ICAgICAgIF9fczMyIGZzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f czMyIGZzX21heHN5bWxpbmtsZW47CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX2lu b2RlZm10OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19tYXhmaWxlc2l6ZVsyXTsK ICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAg ICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9f czMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc180NDsKICAgICAgICB9IGZzX3UyOwog ICAgICAgIF9fczMyIGZzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3MzMiBmc19ucnBvczsKICAg ICAgICBfX3MzMiBmc19wb3N0YmxvZmY7CiAgICAgICAgX19zMzIgZnNfcm90YmxvZmY7CiAgICAg ICAgX19zMzIgZnNfbWFnaWM7CiAgICAgICAgX191OCBmc19zcGFjZVsxXTsKfTsKIyA2OTQgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9lZnNfZnNfc2IuaCIgMQojIDI1ICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9lZnNfZnNfc2IuaCIKc3RydWN0IGVmc19zdXBlciB7 CiAgICAgICAgaW50MzJfdCBmc19zaXplOwogICAgICAgIGludDMyX3QgZnNfZmlyc3RjZzsKICAg ICAgICBpbnQzMl90IGZzX2NnZnNpemU7CiAgICAgICAgc2hvcnQgZnNfY2dpc2l6ZTsKICAgICAg ICBzaG9ydCBmc19zZWN0b3JzOwogICAgICAgIHNob3J0IGZzX2hlYWRzOwogICAgICAgIHNob3J0 IGZzX25jZzsKICAgICAgICBzaG9ydCBmc19kaXJ0eTsKICAgICAgICBpbnQzMl90IGZzX3RpbWU7 CiAgICAgICAgaW50MzJfdCBmc19tYWdpYzsKICAgICAgICBjaGFyIGZzX2ZuYW1lWzZdOwogICAg ICAgIGNoYXIgZnNfZnBhY2tbNl07CiAgICAgICAgaW50MzJfdCBmc19ibXNpemU7CiAgICAgICAg aW50MzJfdCBmc190ZnJlZTsKICAgICAgICBpbnQzMl90IGZzX3Rpbm9kZTsKICAgICAgICBpbnQz Ml90IGZzX2JtYmxvY2s7CiAgICAgICAgaW50MzJfdCBmc19yZXBsc2I7CiAgICAgICAgaW50MzJf dCBmc19sYXN0aWFsbG9jOwogICAgICAgIGNoYXIgZnNfc3BhcmVbMjBdOwogICAgICAgIGludDMy X3QgZnNfY2hlY2tzdW07Cn07CgoKc3RydWN0IGVmc19zYl9pbmZvIHsKICAgICAgICBpbnQzMl90 IGZzX21hZ2ljOwogICAgICAgIGludDMyX3QgZnNfc3RhcnQ7CiAgICAgICAgaW50MzJfdCBmaXJz dF9ibG9jazsKICAgICAgICBpbnQzMl90IHRvdGFsX2Jsb2NrczsKICAgICAgICBpbnQzMl90IGdy b3VwX3NpemU7CiAgICAgICAgaW50MzJfdCBkYXRhX2ZyZWU7CiAgICAgICAgaW50MzJfdCBpbm9k ZV9mcmVlOwogICAgICAgIHNob3J0IGlub2RlX2Jsb2NrczsKICAgICAgICBzaG9ydCB0b3RhbF9n cm91cHM7Cn07CiMgNjk1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5o IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcm9tZnNfZnNfc2Iu aCIgMQoKCgoKCnN0cnVjdCByb21mc19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf bWF4c2l6ZTsKfTsKIyA2OTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Zz LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zbWJfZnNfc2Iu aCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zbWJfZnNfc2Iu aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zbWIuaCIgMQojIDE0 ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zbWIuaCIKZW51bSBzbWJfcHJv dG9jb2wgewogICAgICAgIFNNQl9QUk9UT0NPTF9OT05FLAogICAgICAgIFNNQl9QUk9UT0NPTF9D T1JFLAogICAgICAgIFNNQl9QUk9UT0NPTF9DT1JFUExVUywKICAgICAgICBTTUJfUFJPVE9DT0xf TEFOTUFOMSwKICAgICAgICBTTUJfUFJPVE9DT0xfTEFOTUFOMiwKICAgICAgICBTTUJfUFJPVE9D T0xfTlQxCn07CgplbnVtIHNtYl9jYXNlX2huZGwgewogICAgICAgIFNNQl9DQVNFX0RFRkFVTFQs CiAgICAgICAgU01CX0NBU0VfTE9XRVIsCiAgICAgICAgU01CX0NBU0VfVVBQRVIKfTsKCnN0cnVj dCBzbWJfZHNrYXR0ciB7CiAgICAgICAgX191MTYgdG90YWw7CiAgICAgICAgX191MTYgYWxsb2Ni bG9ja3M7CiAgICAgICAgX191MTYgYmxvY2tzaXplOwogICAgICAgIF9fdTE2IGZyZWU7Cn07Cgpz dHJ1Y3Qgc21iX2Nvbm5fb3B0IHsKCgogICAgICAgIHVuc2lnbmVkIGludCBmZDsKCiAgICAgICAg ZW51bSBzbWJfcHJvdG9jb2wgcHJvdG9jb2w7CiAgICAgICAgZW51bSBzbWJfY2FzZV9obmRsIGNh c2VfaGFuZGxpbmc7CgoKCiAgICAgICAgX191MzIgbWF4X3htaXQ7CiAgICAgICAgX191MTYgc2Vy dmVyX3VpZDsKICAgICAgICBfX3UxNiB0aWQ7CgoKICAgICAgICBfX3UxNiBzZWNtb2RlOwogICAg ICAgIF9fdTE2IG1heG11eDsKICAgICAgICBfX3UxNiBtYXh2Y3M7CiAgICAgICAgX191MTYgcmF3 bW9kZTsKICAgICAgICBfX3UzMiBzZXNza2V5OwoKCiAgICAgICAgX191MzIgbWF4cmF3OwogICAg ICAgIF9fdTMyIGNhcGFiaWxpdGllczsKICAgICAgICBfX3MxNiBzZXJ2ZXJ6b25lOwp9OwoKCgoK c3RydWN0IHNtYl9ubHNfY29kZXBhZ2UgewogICAgICAgIGNoYXIgbG9jYWxfbmFtZVsyMF07CiAg ICAgICAgY2hhciByZW1vdGVfbmFtZVsyMF07Cn07CiMgNzggIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2xpbnV4L3NtYi5oIgpzdHJ1Y3Qgc21iX2ZhdHRyIHsKCiAgICAgICAgX191MTYg YXR0cjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2lubzsKICAgICAgICB1bW9kZV90IGZfbW9k ZTsKICAgICAgICBubGlua190IGZfbmxpbms7CiAgICAgICAgdWlkX3QgZl91aWQ7CiAgICAgICAg Z2lkX3QgZl9naWQ7CiAgICAgICAga2Rldl90IGZfcmRldjsKICAgICAgICBvZmZfdCBmX3NpemU7 CiAgICAgICAgdGltZV90IGZfYXRpbWU7CiAgICAgICAgdGltZV90IGZfbXRpbWU7CiAgICAgICAg dGltZV90IGZfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2Jsa3NpemU7CiAgICAgICAg dW5zaWduZWQgbG9uZyBmX2Jsb2NrczsKfTsKCmVudW0gc21iX2Nvbm5fc3RhdGUgewogICAgICAg IENPTk5fVkFMSUQsCiAgICAgICAgQ09OTl9JTlZBTElELAoKICAgICAgICBDT05OX1JFVFJJRUQs CiAgICAgICAgQ09OTl9SRVRSWUlORwp9OwojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMgoKCgoKCgoKc3RydWN0IHNtYl9zYl9pbmZvIHsKICAg ICAgICBlbnVtIHNtYl9jb25uX3N0YXRlIHN0YXRlOwogICAgICAgIHN0cnVjdCBmaWxlICogc29j a19maWxlOwoKICAgICAgICBzdHJ1Y3Qgc21iX21vdW50X2RhdGFfa2VybmVsICptbnQ7CiAgICAg ICAgdW5zaWduZWQgY2hhciAqdGVtcF9idWY7CgoKCgogICAgICAgIHVuc2lnbmVkIGludCBnZW5l cmF0aW9uOwogICAgICAgIHBpZF90IGNvbm5fcGlkOwogICAgICAgIHN0cnVjdCBzbWJfY29ubl9v cHQgb3B0OwoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB3YWl0X3F1ZXVl X2hlYWRfdCB3YWl0OwoKICAgICAgICBfX3UzMiBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNpZ25l ZCBjaGFyICogcGFja2V0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHJjbHM7CiAgICAgICAgdW5z aWduZWQgc2hvcnQgZXJyOwoKCiAgICAgICAgdm9pZCAqZGF0YV9yZWFkeTsKCgogICAgICAgIHN0 cnVjdCBubHNfdGFibGUgKnJlbW90ZV9ubHM7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbG9j YWxfbmxzOwoKCgoKICAgICAgICBjaGFyICpuYW1lX2J1ZjsKCiAgICAgICAgaW50ICgqY29udmVy dCkoY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50LAogICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBubHNfdGFibGUgKiwgc3RydWN0IG5sc190YWJsZSAqKTsKfTsKCgpzdGF0aWMgaW5s aW5lIHZvaWQKc21iX2xvY2tfc2VydmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyKQp7CiAg ICAgICAgZG93bigmKHNlcnZlci0+c2VtKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZApzbWJfdW5s b2NrX3NlcnZlcihzdHJ1Y3Qgc21iX3NiX2luZm8gKnNlcnZlcikKewogICAgICAgIHVwKCYoc2Vy dmVyLT5zZW0pKTsKfQojIDY5NyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2hmc19mc19z Yi5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2hmc19mc19z Yi5oIgpzdHJ1Y3QgaGZzX25hbWU7Cgp0eXBlZGVmIGludCAoKmhmc19uYW1laW5fZm4pIChjaGFy ICosIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqKTsKdHlwZWRlZiB2b2lkICgqaGZzX25hbWVvdXRf Zm4pIChzdHJ1Y3QgaGZzX25hbWUgKiwgY29uc3QgY2hhciAqLCBpbnQpOwp0eXBlZGVmIHZvaWQg KCpoZnNfaWZpbGxfZm4pIChzdHJ1Y3QgaW5vZGUgKiwgaW5vX3QsIGNvbnN0IGludCk7CgoKCgoK CnN0cnVjdCBoZnNfc2JfaW5mbyB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIHN0cnVjdCBo ZnNfbWRiICpzX21kYjsKICAgICAgICBpbnQgc19xdWlldDsKCiAgICAgICAgaW50IHNfbG93ZXJj YXNlOwogICAgICAgIGludCBzX2FmcGQ7CiAgICAgICAgaW50IHNfdmVyc2lvbjsKICAgICAgICBo ZnNfbmFtZWluX2ZuIHNfbmFtZWluOwoKCiAgICAgICAgaGZzX25hbWVvdXRfZm4gc19uYW1lb3V0 OwoKCiAgICAgICAgaGZzX2lmaWxsX2ZuIHNfaWZpbGw7CgogICAgICAgIGNvbnN0IHN0cnVjdCBo ZnNfbmFtZSAqc19yZXNlcnZlZDE7CiAgICAgICAgY29uc3Qgc3RydWN0IGhmc19uYW1lICpzX3Jl c2VydmVkMjsKICAgICAgICBfX3UzMiBzX3R5cGU7CiAgICAgICAgX191MzIgc19jcmVhdG9yOwog ICAgICAgIHVtb2RlX3Qgc191bWFzazsKCiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgZ2lk X3Qgc19naWQ7CiAgICAgICAgY2hhciBzX2NvbnY7Cn07CiMgNjk4ICIvdXNyL3NyYy9saW51eC0y LjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu Y2x1ZGUvbGludXgvYWRmc19mc19zYi5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p bmNsdWRlL2xpbnV4L2FkZnNfZnNfc2IuaCIKc3RydWN0IGFkZnNfZGlzY21hcDsKc3RydWN0IGFk ZnNfZGlyX29wczsKCgoKCnN0cnVjdCBhZGZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBhZGZz X2Rpc2NtYXAgKnNfbWFwOwogICAgICAgIHN0cnVjdCBhZGZzX2Rpcl9vcHMgKnNfZGlyOwoKICAg ICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNf b3duZXJfbWFzazsKICAgICAgICB1bW9kZV90IHNfb3RoZXJfbWFzazsKCiAgICAgICAgX191MzIg c19pZHNfcGVyX3pvbmU7CiAgICAgICAgX191MzIgc19pZGxlbjsKICAgICAgICBfX3UzMiBzX21h cF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19zaXplOwogICAgICAgIHNpZ25lZCBpbnQg c19tYXAyYmxrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2xvZzJzaGFyZXNpemU7CiAgICAgICAg dW5zaWduZWQgaW50IHNfdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19uYW1lbGVuOwp9 OwojIDY5OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMQojIDE0 ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiCiMgMSAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIiAxCiMgNDUgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIKc3RydWN0IHFueDRf aW5vZGVfZW50cnkgewogICAgICAgIGNoYXIgZGlfZm5hbWVbMTZdOwogICAgICAgIHFueDRfb2Zm X3QgZGlfc2l6ZTsKICAgICAgICBxbng0X3h0bnRfdCBkaV9maXJzdF94dG50OwogICAgICAgIF9f dTMyIGRpX3hibGs7CiAgICAgICAgX19zMzIgZGlfZnRpbWU7CiAgICAgICAgX19zMzIgZGlfbXRp bWU7CiAgICAgICAgX19zMzIgZGlfYXRpbWU7CiAgICAgICAgX19zMzIgZGlfY3RpbWU7CiAgICAg ICAgcW54NF9ueHRudF90IGRpX251bV94dG50czsKICAgICAgICBxbng0X21vZGVfdCBkaV9tb2Rl OwogICAgICAgIHFueDRfbXVpZF90IGRpX3VpZDsKICAgICAgICBxbng0X21naWRfdCBkaV9naWQ7 CiAgICAgICAgcW54NF9ubGlua190IGRpX25saW5rOwogICAgICAgIF9fdTggZGlfemVyb1s0XTsK ICAgICAgICBxbng0X2Z0eXBlX3QgZGlfdHlwZTsKICAgICAgICBfX3U4IGRpX3N0YXR1czsKfTsK CnN0cnVjdCBxbng0X2xpbmtfaW5mbyB7CiAgICAgICAgY2hhciBkbF9mbmFtZVs0OF07CiAgICAg ICAgX191MzIgZGxfaW5vZGVfYmxrOwogICAgICAgIF9fdTggZGxfaW5vZGVfbmR4OwogICAgICAg IF9fdTggZGxfc3BhcmVbMTBdOwogICAgICAgIF9fdTggZGxfc3RhdHVzOwp9OwoKc3RydWN0IHFu eDRfeGJsayB7CiAgICAgICAgX191MzIgeGJsa19uZXh0X3hibGs7CiAgICAgICAgX191MzIgeGJs a19wcmV2X3hibGs7CiAgICAgICAgX191OCB4YmxrX251bV94dG50czsKICAgICAgICBfX3U4IHhi bGtfc3BhcmVbM107CiAgICAgICAgX19zMzIgeGJsa19udW1fYmxvY2tzOwogICAgICAgIHFueDRf eHRudF90IHhibGtfeHRudHNbNjBdOwogICAgICAgIGNoYXIgeGJsa19zaWduYXR1cmVbOF07CiAg ICAgICAgcW54NF94dG50X3QgeGJsa19maXJzdF94dG50Owp9OwoKc3RydWN0IHFueDRfc3VwZXJf YmxvY2sgewogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IFJvb3REaXI7CiAgICAgICAg c3RydWN0IHFueDRfaW5vZGVfZW50cnkgSW5vZGU7CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVf ZW50cnkgQm9vdDsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBBbHRCb290Owp9Owoj IDEwMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIgpleHRl cm4gc3RydWN0IGRlbnRyeSAqcW54NF9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBk ZW50cnkgKmRlbnRyeSk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRfY291bnRfZnJlZV9ibG9j a3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRfYmxv Y2tfbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgaWJsb2NrKTsKCmV4dGVybiBzdHJ1Y3Qg YnVmZmVyX2hlYWQgKnFueDRfZ2V0YmxrKHN0cnVjdCBpbm9kZSAqLCBpbnQsIGludCk7CmV4dGVy biBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfYnJlYWQoc3RydWN0IGlub2RlICosIGludCwgaW50 KTsKCmV4dGVybiBpbnQgcW54NF9jcmVhdGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50 cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcW54 NF9maWxlX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBx bng0X2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBx bng0X2ZpbGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcW54NF9k aXJfb3BlcmF0aW9uczsKZXh0ZXJuIGludCBxbng0X2lzX2ZyZWUoc3RydWN0IHN1cGVyX2Jsb2Nr ICpzYiwgbG9uZyBibG9jayk7CmV4dGVybiBpbnQgcW54NF9zZXRfYml0bWFwKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIGxvbmcgYmxvY2ssIGludCBidXN5KTsKZXh0ZXJuIGludCBxbng0X2NyZWF0 ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBtb2RlKTsK ZXh0ZXJuIHZvaWQgcW54NF90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZv aWQgcW54NF9mcmVlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gaW50IHFueDRf dW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwpleHRlcm4g aW50IHFueDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7 CmV4dGVybiBpbnQgcW54NF9zeW5jX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkZW50 cnkgKmRlbnRyeSwgaW50KTsKZXh0ZXJuIGludCBxbng0X3N5bmNfaW5vZGUoc3RydWN0IGlub2Rl ICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF9nZXRfYmxvY2soc3RydWN0IGlub2RlICppbm9kZSwg bG9uZyBpYmxvY2ssIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBjcmVhdGUpOwojIDE1ICIv dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiIDIKCgoKCgpz dHJ1Y3QgcW54NF9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNiX2J1ZjsK ICAgICAgICBzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayAqc2I7CiAgICAgICAgdW5zaWduZWQgaW50 IFZlcnNpb247CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgKkJpdE1hcDsKfTsKIyA3 MDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIiAxCgoKCgoK CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAxCiMg MzggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgpzdHJ1Y3Qg dHFfc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBzeW5jOwogICAgICAgIHZvaWQgKCpyb3V0aW5lKSh2b2lkICopOwogICAgICAgIHZv aWQgKmRhdGE7Cn07CiMgNjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Rx dWV1ZS5oIgp0eXBlZGVmIHN0cnVjdCBsaXN0X2hlYWQgdGFza19xdWV1ZTsKCgoKCmV4dGVybiB0 YXNrX3F1ZXVlIHRxX3RpbWVyLCB0cV9pbW1lZGlhdGUsIHRxX2Rpc2s7CiMgOTQgIi91c3Ivc3Jj L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgpleHRlcm4gc3BpbmxvY2tfdCB0 cXVldWVfbG9jazsKCgoKCgpzdGF0aWMgaW5saW5lIGludCBxdWV1ZV90YXNrKHN0cnVjdCB0cV9z dHJ1Y3QgKmJoX3BvaW50ZXIsIHRhc2tfcXVldWUgKmJoX2xpc3QpCnsKICAgICAgICBpbnQgcmV0 ID0gMDsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoMCwmYmhfcG9pbnRlci0+c3luYykp IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgICAgICAgICBk byB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChm bGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmdHF1ZXVlX2xvY2spOyB9IHdoaWxlICgwKTsKICAg ICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJmJoX3BvaW50ZXItPmxpc3QsIGJoX2xpc3QpOwog ICAgICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9f KCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGls ZSAoMCk7CiAgICAgICAgICAgICAgICByZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4g cmV0Owp9CgoKCgoKZXh0ZXJuIHZvaWQgX19ydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0 KTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KQp7 CiAgICAgICAgaWYgKCghbGlzdF9lbXB0eSgmKmxpc3QpKSkKICAgICAgICAgICAgICAgIF9fcnVu X3Rhc2tfcXVldWUobGlzdCk7Cn0KIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s aW51eC9yZWlzZXJmc19mc19zYi5oIiAyCiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs dWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jawp7 CiAgX191MzIgc19ibG9ja19jb3VudDsKICBfX3UzMiBzX2ZyZWVfYmxvY2tzOwogIF9fdTMyIHNf cm9vdF9ibG9jazsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2Rl djsKIyA0MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNf c2IuaCIKICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMyIHNfam91cm5hbF90cmFu c19tYXggOwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAgX191MzIgc19qb3VybmFs X21heF9iYXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRfYWdlIDsKICBfX3UzMiBz X2pvdXJuYWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3NpemU7CiAgX191MTYgc19v aWRfbWF4c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2IHNfc3RhdGU7CiAgY2hh ciBzX21hZ2ljWzEyXTsKICBfX3UzMiBzX2hhc2hfZnVuY3Rpb25fY29kZTsKICBfX3UxNiBzX3Ry ZWVfaGVpZ2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UxNiBzX3ZlcnNpb247CgoKCgogIF9f dTE2IHNfcmVzZXJ2ZWQ7CiAgX191MzIgc19pbm9kZV9nZW5lcmF0aW9uOwogIF9fdTMyIHNfZmxh Z3M7CiAgdW5zaWduZWQgY2hhciBzX3V1aWRbMTZdOwogIHVuc2lnbmVkIGNoYXIgc19sYWJlbFsx Nl07CiAgY2hhciBzX3VudXNlZFs4OF0gOwoKCgp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9f KSk7Cgp0eXBlZGVmIGVudW0gewogIHJlaXNlcmZzX2F0dHJzX2NsZWFyZWQgPSAweDAwMDAwMDAx LAp9IHJlaXNlcmZzX3N1cGVyX2Jsb2NrX2ZsYWdzOwojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKc3RydWN0IHJlaXNlcmZzX3N1cGVy X2Jsb2NrX3YxCnsKICBfX3UzMiBzX2Jsb2NrX2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7 CiAgX191MzIgc19yb290X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBz X2pvdXJuYWxfZGV2OwogIF9fdTMyIHNfb3JpZ19qb3VybmFsX3NpemU7CiAgX191MzIgc19qb3Vy bmFsX3RyYW5zX21heCA7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrX2NvdW50IDsKICBfX3UzMiBz X2pvdXJuYWxfbWF4X2JhdGNoIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9hZ2UgOwog IF9fdTMyIHNfam91cm5hbF9tYXhfdHJhbnNfYWdlIDsKICBfX3UxNiBzX2Jsb2Nrc2l6ZTsKICBf X3UxNiBzX29pZF9tYXhzaXplOwogIF9fdTE2IHNfb2lkX2N1cnNpemU7CiAgX191MTYgc19zdGF0 ZTsKICBjaGFyIHNfbWFnaWNbMTZdOwogIF9fdTE2IHNfdHJlZV9oZWlnaHQ7CiAgX191MTYgc19i bWFwX25yOwogIF9fdTMyIHNfcmVzZXJ2ZWQ7Cn0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18p KTsKIyAyMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2Zz X3NiLmgiCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlIHsKICBzdHJ1Y3QgYnVmZmVyX2hl YWQgKmJoIDsKICBrZGV2X3QgZGV2IDsKICB1bnNpZ25lZCBsb25nIGJsb2NrbnIgOwogIGxvbmcg c3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3Qg cmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxf Y25vZGUgKnByZXYgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpocHJldiA7CiAg c3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmhuZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJm c19iaXRtYXBfbm9kZSB7CiAgaW50IGlkIDsKICBjaGFyICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9o ZWFkIGxpc3QgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCB7CiAgc3RydWN0IHJl aXNlcmZzX2pvdXJuYWxfbGlzdCAqam91cm5hbF9saXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0 bWFwX25vZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25f aGFuZGxlIHsKCiAgY2hhciAqdF9jYWxsZXIgOwogIGludCB0X2Jsb2Nrc19sb2dnZWQgOwogIGlu dCB0X2Jsb2Nrc19hbGxvY2F0ZWQgOwogIHVuc2lnbmVkIGxvbmcgdF90cmFuc19pZCA7CiAgc3Ry dWN0IHN1cGVyX2Jsb2NrICp0X3N1cGVyIDsKCiAgaW50IGRpc3BsYWNlX25ld19ibG9ja3M6MTsK Cn0gOwoKCgoKCgoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCB7CiAgdW5zaWduZWQgbG9u ZyBqX3N0YXJ0IDsKICB1bnNpZ25lZCBsb25nIGpfbGVuIDsKICBhdG9taWNfdCBqX25vbnplcm9s ZW4gOwogIGF0b21pY190IGpfY29tbWl0X2xlZnQgOwogIGF0b21pY190IGpfZmx1c2hpbmcgOwog IGF0b21pY190IGpfY29tbWl0X2ZsdXNoaW5nIDsKICBhdG9taWNfdCBqX29sZGVyX2NvbW1pdHNf ZG9uZSA7CiAgdW5zaWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB0aW1lX3Qgal90aW1lc3RhbXAg OwogIHN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCAqal9saXN0X2JpdG1hcCA7CiAgc3RydWN0 IGJ1ZmZlcl9oZWFkICpqX2NvbW1pdF9iaCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25v ZGUgKmpfcmVhbGJsb2NrIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9mcmVl ZGxpc3QgOwogIHdhaXRfcXVldWVfaGVhZF90IGpfY29tbWl0X3dhaXQgOwogIHdhaXRfcXVldWVf aGVhZF90IGpfZmx1c2hfd2FpdCA7Cn0gOwoKc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCA7Cgpz dHJ1Y3QgcmVpc2VyZnNfam91cm5hbCB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIGpfYXBfYmxv Y2tzIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9sYXN0IDsKICBzdHJ1Y3Qg cmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9maXJzdCA7CgogIGxvbmcgal9zdGF0ZSA7CiAgdW5z aWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpfbW91bnRfaWQgOwogIHVu c2lnbmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgdW5zaWduZWQg bG9uZyBqX2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwogIHVuc2lnbmVkIGxvbmcg al9iY291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNoZWRfb2Zmc2V0IDsKICB1 bnNpZ25lZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFk ICpqX2hlYWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpfZmx1c2hf cGFnZXMgOwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdhaXRfcXVldWVfaGVhZF90 IGpfd2FpdCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9qb2lu X3dhaXQgOwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJuYWxfbGlzdF9pbmRleCA7 CiAgaW50IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rfd2FpdCA7CiAgaW50IGpf bmV4dF9mdWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNoIDsKCiAgaW50IGpfY25v ZGVfdXNlZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCByZWlzZXJmc19qb3VybmFs X2Nub2RlICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25v ZGUgKmpfY25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRtYXBfbm9kZXMgOwogIGlu dCBqX3VzZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfYml0bWFwX25vZGVz IDsKICBzdHJ1Y3QgaW5vZGUgal9kdW1teV9pbm9kZSA7CiAgc3RydWN0IHJlaXNlcmZzX2xpc3Rf Yml0bWFwIGpfbGlzdF9iaXRtYXBbNV0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3Qg al9qb3VybmFsX2xpc3RbNjRdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9o YXNoX3RhYmxlWzgxOTJdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9saXN0 X2hhc2hfdGFibGVbODE5Ml0gOwoKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfcHJlYWxsb2NfbGlzdDsK fTsKCgoKCnR5cGVkZWYgX191MzIgKCpoYXNoZl90KSAoY29uc3Qgc2lnbmVkIGNoYXIgKiwgaW50 KTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfaW5mbwp7CgogICAgX191MTYgZmlyc3RfemVyb19o aW50OwogICAgX191MTYgZnJlZV9jb3VudDsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmg7Cn07 CgpzdHJ1Y3QgcHJvY19kaXJfZW50cnk7CiMgNDA4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgp0eXBlZGVmIHN0cnVjdCByZWlzZXJmc19wcm9j X2luZm9fZGF0YQp7fSByZWlzZXJmc19wcm9jX2luZm9fZGF0YV90OwoKCgpzdHJ1Y3QgcmVpc2Vy ZnNfc2JfaW5mbwp7CiAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX3NiaDsKCgogICAgc3RydWN0 IHJlaXNlcmZzX3N1cGVyX2Jsb2NrICogc19yczsKICAgIHN0cnVjdCByZWlzZXJmc19iaXRtYXBf aW5mbyAqIHNfYXBfYml0bWFwOwogICAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgKnNfam91cm5h bCA7CiAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwoKCiAgICB2b2lkICgqZW5kX2lv X2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFzaGZfdCBzX2hhc2hf ZnVuY3Rpb247CgoKICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CgoKCiAgICBzdHJ1Y3Qg ewogICAgICAgIHVuc2lnbmVkIGxvbmcgYml0czsKICAgICAgICB1bnNpZ25lZCBsb25nIGxhcmdl X2ZpbGVfc2l6ZTsKICAgICAgICBpbnQgYm9yZGVyOwogICAgICAgIGludCBwcmVhbGxvY21pbjsK ICAgICAgICBpbnQgcHJlYWxsb2NzaXplOwoKCiAgICB9IHNfYWxsb2Nfb3B0aW9uczsKCgogICAg d2FpdF9xdWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0b21pY190IHNfZ2VuZXJhdGlvbl9jb3Vu dGVyOwoKICAgIHVuc2lnbmVkIGxvbmcgc19wcm9wZXJ0aWVzOwoKCgogICAgaW50IHNfa21hbGxv Y3M7CiAgICBpbnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNfZGlza193cml0ZXM7CiAgICBpbnQg c19maXhfbm9kZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwogICAgaW50IHNfdW5uZWVkZWRfbGVm dF9uZWlnaGJvcjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5X2tleV9yZWFkYTsKICAgIGludCBz X2JtYXBzOwogICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFyY2g7CiAgICBpbnQgc19kaXJlY3Qy aW5kaXJlY3Q7CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7CgoKCiAgICBpbnQgc19pc191bmxp bmtlZF9vazsKICAgIHJlaXNlcmZzX3Byb2NfaW5mb19kYXRhX3Qgc19wcm9jX2luZm9fZGF0YTsK ICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY2RpcjsKICAgIGludCByZXNlcnZlZF9ibG9j a3M7Cn07CiMgNTM0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZWlzZXJm c19mc19zYi5oIgp2b2lkIHJlaXNlcmZzX2ZpbGVfYnVmZmVyIChzdHJ1Y3QgYnVmZmVyX2hlYWQg KiBiaCwgaW50IGxpc3QpOwppbnQgcmVpc2VyZnNfaXNfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2Nr ICpzKSA7CmludCBqb3VybmFsX21hcmtfZGlydHkoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9u X2hhbmRsZSAqLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkg OwppbnQgZmx1c2hfb2xkX2NvbW1pdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBpbnQpIDsKaW50 IHNob3dfcmVpc2VyZnNfbG9ja3Modm9pZCkgOwppbnQgcmVpc2VyZnNfcmVzaXplKHN0cnVjdCBz dXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nKSA7CiMgNzAxICIvdXNyL3NyYy9saW51eC0yLjQu MjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1 ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1 ZGUvbGludXgvYmZzX2ZzX3NiLmgiCnN0cnVjdCBiZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBzaV9ibG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlYjsKICAgICAg ICB1bnNpZ25lZCBsb25nIHNpX2ZyZWVpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfaW9m ZjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX3NibGs7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBzaV9sZl9lYmxrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGFzdGk7CiAgICAgICAgY2hh ciAqIHNpX2ltYXA7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2lfc2JoOwogICAgICAg IHN0cnVjdCBiZnNfc3VwZXJfYmxvY2sgKiBzaV9iZnNfc2I7Cn07CiMgNzAyICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiCiNwcmFnbWEgcGFjaygxKQojIDMwICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIKc3RydWN0IHVkZl9z cGFyaW5nX2RhdGEKewogICAgICAgIF9fdTE2IHNfcGFja2V0X2xlbjsKICAgICAgICBzdHJ1Y3Qg YnVmZmVyX2hlYWQgKnNfc3Bhcl9tYXBbNF07Cn07CgpzdHJ1Y3QgdWRmX3ZpcnR1YWxfZGF0YQp7 CiAgICAgICAgX191MzIgc19udW1fZW50cmllczsKICAgICAgICBfX3UxNiBzX3N0YXJ0X29mZnNl dDsKfTsKCnN0cnVjdCB1ZGZfYml0bWFwCnsKICAgICAgICBfX3UzMiBzX2V4dExlbmd0aDsKICAg ICAgICBfX3UzMiBzX2V4dFBvc2l0aW9uOwogICAgICAgIF9fdTE2IHNfbnJfZ3JvdXBzOwogICAg ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKnNfYmxvY2tfYml0bWFwOwp9OwoKc3RydWN0IHVkZl9w YXJ0X21hcAp7CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg dWRmX2JpdG1hcCAqc19iaXRtYXA7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNfdGFi bGU7CiAgICAgICAgfSBzX3VzcGFjZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAg ICAgICAgIHN0cnVjdCB1ZGZfYml0bWFwICpzX2JpdG1hcDsKICAgICAgICAgICAgICAgIHN0cnVj dCBpbm9kZSAqc190YWJsZTsKICAgICAgICB9IHNfZnNwYWNlOwogICAgICAgIF9fdTMyIHNfcGFy dGl0aW9uX3Jvb3Q7CiAgICAgICAgX191MzIgc19wYXJ0aXRpb25fbGVuOwogICAgICAgIF9fdTE2 IHNfcGFydGl0aW9uX3R5cGU7CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25fbnVtOwogICAgICAg IHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9zcGFyaW5nX2RhdGEg c19zcGFyaW5nOwogICAgICAgICAgICAgICAgc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEgc192aXJ0 dWFsOwogICAgICAgIH0gc190eXBlX3NwZWNpZmljOwogICAgICAgIF9fdTMyICgqc19wYXJ0aXRp b25fZnVuYykoc3RydWN0IHN1cGVyX2Jsb2NrICosIF9fdTMyLCBfX3UxNiwgX191MzIpOwogICAg ICAgIF9fdTE2IHNfdm9sdW1lc2VxbnVtOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX2ZsYWdz Owp9OwoKI3ByYWdtYSBwYWNrKCkKCnN0cnVjdCB1ZGZfc2JfaW5mbwp7CiAgICAgICAgc3RydWN0 IHVkZl9wYXJ0X21hcCAqc19wYXJ0bWFwczsKICAgICAgICBfX3U4IHNfdm9saWRlbnRbMzJdOwoK CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25zOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uOwoK CiAgICAgICAgX19zMzIgc19zZXNzaW9uOwogICAgICAgIF9fdTMyIHNfYW5jaG9yWzRdOwogICAg ICAgIF9fdTMyIHNfbGFzdGJsb2NrOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfbHZp ZGJoOwoKCiAgICAgICAgbW9kZV90IHNfdW1hc2s7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAg ICAgdWlkX3Qgc191aWQ7CgoKICAgICAgICB0aW1lX3Qgc19yZWNvcmR0aW1lOwoKCiAgICAgICAg X191MTYgc19zZXJpYWxudW07CgoKICAgICAgICBfX3UxNiBzX3VkZnJldjsKCgogICAgICAgIF9f dTMyIHNfZmxhZ3M7CgoKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpzX25sc19tYXA7CgoKICAg ICAgICBzdHJ1Y3QgaW5vZGUgKnNfdmF0Owp9OwojIDcwMyAiL3Vzci9zcmMvbGludXgtMi40LjIw L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl L2xpbnV4L25jcF9mc19zYi5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl L2xpbnV4L25jcF9mc19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp bnV4L25jcF9tb3VudC5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp bnV4L25jcF9tb3VudC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4 L25jcC5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcC5o IgpzdHJ1Y3QgbmNwX3JlcXVlc3RfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmli dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg ICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25u X2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBmdW5jdGlvbiBfX2F0 dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygo cGFja2VkKSk7Cn07CgoKCgpzdHJ1Y3QgbmNwX3JlcGx5X2hlYWRlciB7CiAgICAgICAgX191MTYg dHlwZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IHNlcXVlbmNlIF9fYXR0 cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9sb3cgX19hdHRyaWJ1dGVfXygo cGFja2VkKSk7CiAgICAgICAgX191OCB0YXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg ICAgIF9fdTggY29ubl9oaWdoIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTgg Y29tcGxldGlvbl9jb2RlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29u bmVjdGlvbl9zdGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFb MF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCnN0cnVjdCBuY3Bfdm9sdW1lX2luZm8g ewogICAgICAgIF9fdTMyIHRvdGFsX2Jsb2NrczsKICAgICAgICBfX3UzMiBmcmVlX2Jsb2NrczsK ICAgICAgICBfX3UzMiBwdXJnZWFibGVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5vdF95ZXRfcHVy Z2VhYmxlX2Jsb2NrczsKICAgICAgICBfX3UzMiB0b3RhbF9kaXJfZW50cmllczsKICAgICAgICBf X3UzMiBhdmFpbGFibGVfZGlyX2VudHJpZXM7CiAgICAgICAgX191OCBzZWN0b3JzX3Blcl9ibG9j azsKICAgICAgICBjaGFyIHZvbHVtZV9uYW1lWygxNikgKyAxXTsKfTsKIyAxMTIgIi91c3Ivc3Jj L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbndfaW5mb19zdHJ1Y3Qg ewogICAgICAgIF9fdTMyIHNwYWNlQWxsb2MgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg ICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3Ux NiBmbGFncyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkYXRhU3RyZWFt U2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiB0b3RhbFN0cmVhbVNp emUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbnVtYmVyT2ZTdHJlYW1z IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uVGltZSBfX2F0 dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1 dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18oKHBh Y2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7 CiAgICAgICAgX191MTYgbW9kaWZ5RGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg ICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2 IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFy Y2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVE YXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVySUQgX19h dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGVkUmlnaHRzTWFzayBf X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkaXJFbnROdW0gX19hdHRyaWJ1 dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRG9zRGlyTnVtIF9fYXR0cmlidXRlX18oKHBh Y2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJlciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK ICAgICAgICBfX3UzMiBFQURhdGFTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg IF9fdTMyIEVBS2V5Q291bnQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIg RUFLZXlTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIE5TQ3JlYXRv ciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IG5hbWVMZW4gX19hdHRyaWJ1 dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBlbnRyeU5hbWVbMjU2XSBfX2F0dHJpYnV0ZV9f KChwYWNrZWQpKTsKfTsKIyAxNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4 L25jcC5oIgpzdHJ1Y3QgbndfbW9kaWZ5X2Rvc19pbmZvIHsKICAgICAgICBfX3UzMiBhdHRyaWJ1 dGVzIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uRGF0ZSBf X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRy aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2Vk KSk7CiAgICAgICAgX191MTYgbW9kaWZ5VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg ICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f dTE2IGFyY2hpdmVEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFy Y2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVy SUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUg X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VHcmFudE1h c2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VSZXZv a2VNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG1heGltdW1TcGFj ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKCnN0cnVjdCBud19zZWFyY2hfc2VxdWVuY2Ug ewogICAgICAgIF9fdTggdm9sTnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg IF9fdTMyIGRpckJhc2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgc2Vx dWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAyCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIgpzdHJ1Y3QgbmNwX21vdW50X2RhdGEgewog ICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAg X19rZXJuZWxfdWlkX3QgbW91bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19w aWQ7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAg IHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50 OwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlk OwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmls ZV9tb2RlOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKCgoKc3RydWN0IG5j cF9tb3VudF9kYXRhX3Y0IHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBs b25nIGZsYWdzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtb3VudGVkX3VpZDsKCiAgICAgICAg bG9uZyB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNp Z25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2lnbmVkIGludCByZXRyeV9jb3VudDsKCgoK ICAgICAgICB1bnNpZ25lZCBsb25nIHVpZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGdpZDsKCiAg ICAgICAgdW5zaWduZWQgbG9uZyBmaWxlX21vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkaXJf bW9kZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCB7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgaW50X2ZsYWdzOwoKICAgICAgICBf X2tlcm5lbF91aWQzMl90IG1vdW50ZWRfdWlkOwogICAgICAgIF9fa2VybmVsX3BpZF90IHdkb2df cGlkOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRp bWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWdu ZWQgY2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1 aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90 IGZpbGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21vZGU7Cn07CiMgMTMgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5oIiAyCgoKCgoKc3Ry dWN0IG5jcF9zZXJ2ZXIgewoKICAgICAgICBzdHJ1Y3QgbmNwX21vdW50X2RhdGFfa2VybmVsIG07 CgoKCiAgICAgICAgX191OCBuYW1lX3NwYWNlWyg2NCkgKyAyXTsKCiAgICAgICAgc3RydWN0IGZp bGUgKm5jcF9maWxwOwoKICAgICAgICB1OCBzZXF1ZW5jZTsKICAgICAgICB1OCB0YXNrOwogICAg ICAgIHUxNiBjb25uZWN0aW9uOwoKICAgICAgICB1OCBjb21wbGV0aW9uOwogICAgICAgIHU4IGNv bm5fc3RhdHVzOwoKCgogICAgICAgIGludCBidWZmZXJfc2l6ZTsKCiAgICAgICAgaW50IHJlcGx5 X3NpemU7CgogICAgICAgIGludCBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpw YWNrZXQ7CgoKICAgICAgICBpbnQgbG9jazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsK CiAgICAgICAgaW50IGN1cnJlbnRfc2l6ZTsKICAgICAgICBpbnQgaGFzX3N1YmZ1bmN0aW9uOwog ICAgICAgIGludCBuY3BfcmVwbHlfc2l6ZTsKCiAgICAgICAgaW50IHJvb3Rfc2V0dXBlZDsKCgog ICAgICAgIGludCBzaWduX3dhbnRlZDsKICAgICAgICBpbnQgc2lnbl9hY3RpdmU7CiAgICAgICAg Y2hhciBzaWduX3Jvb3RbOF07CiAgICAgICAgY2hhciBzaWduX2xhc3RbMTZdOwoKCiAgICAgICAg c3RydWN0IHsKICAgICAgICAgICAgICAgIGludCBhdXRoX3R5cGU7CiAgICAgICAgICAgICAgICBz aXplX3Qgb2JqZWN0X25hbWVfbGVuOwogICAgICAgICAgICAgICAgdm9pZCogb2JqZWN0X25hbWU7 CiAgICAgICAgICAgICAgICBpbnQgb2JqZWN0X3R5cGU7CiAgICAgICAgfSBhdXRoOwoKICAgICAg ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgIHZv aWQqIGRhdGE7CiAgICAgICAgfSBwcml2OwoKCiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxz X3ZvbDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87CgoKICAgICAgICBpbnQgZGVu dHJ5X3R0bDsKCgogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKfTsKIyA5MiAiL3Vzci9zcmMv bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiCnN0YXRpYyBpbmxpbmUgaW50 IG5jcF9jb25uX3ZhbGlkKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICByZXR1 cm4gKChzZXJ2ZXItPmNvbm5fc3RhdHVzICYgMHgxMSkgPT0gMCk7Cn0KCnN0YXRpYyBpbmxpbmUg dm9pZCBuY3BfaW52YWxpZGF0ZV9jb25uKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAg ICAgICBzZXJ2ZXItPmNvbm5fc3RhdHVzIHw9IDB4MDE7Cn0KIyA3MDQgIi91c3Ivc3JjL2xpbnV4 LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9saW51eC91c2JkZXZfZnNfc2IuaCIgMQpzdHJ1Y3QgdXNiZGV2X3NiX2luZm8gewog ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBp bGlzdDsKICAgICAgICB1aWRfdCBkZXZ1aWQ7CiAgICAgICAgZ2lkX3QgZGV2Z2lkOwogICAgICAg IHVtb2RlX3QgZGV2bW9kZTsKICAgICAgICB1aWRfdCBidXN1aWQ7CiAgICAgICAgZ2lkX3QgYnVz Z2lkOwogICAgICAgIHVtb2RlX3QgYnVzbW9kZTsKICAgICAgICB1aWRfdCBsaXN0dWlkOwogICAg ICAgIGdpZF90IGxpc3RnaWQ7CiAgICAgICAgdW1vZGVfdCBsaXN0bW9kZTsKfTsKIyA3MDUgIi91 c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMv bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMQoKCgoKCgoKIyAxICIv dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDEKIyAxMyAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIgpzdHJ1Y3Qg Y29tcGxldGlvbiB7CiAgICAgICAgdW5zaWduZWQgaW50IGRvbmU7CiAgICAgICAgd2FpdF9xdWV1 ZV9oZWFkX3Qgd2FpdDsKfTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2NvbXBsZXRp b24oc3RydWN0IGNvbXBsZXRpb24gKngpCnsKICAgICAgICB4LT5kb25lID0gMDsKICAgICAgICBp bml0X3dhaXRxdWV1ZV9oZWFkKCZ4LT53YWl0KTsKfQoKZXh0ZXJuIHZvaWQgd2FpdF9mb3JfY29t cGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7 CmV4dGVybiB2b2lkIGNvbXBsZXRlKHN0cnVjdCBjb21wbGV0aW9uICopIF9fYXR0cmlidXRlX18o KHJlZ3Bhcm0oMykpKTsKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9q ZmZzMl9mc19zYi5oIiAyCiMgMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4 L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXRk X2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGlnaGVzdF9pbm87CiAgICAgICAgdW5zaWduZWQg aW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qgbm9kZWxpc3RfbG9jazsKCgogICAgICAgIHN0 cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGdjX3Ro cmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBnY190aHJlYWRfZXhpdDsKCgoK ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9jX3NlbTsKCgoKCiAgICAgICAgX191MzIgZmxh c2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3NpemU7CiAgICAgICAgX191MzIgZGlydHlfc2l6 ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAgICAgICAgX191MzIgZXJhc2luZ19zaXplOwog ICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAgIF9fdTMyIHNlY3Rvcl9zaXplOwoKCgogICAg ICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5yX2VyYXNpbmdfYmxvY2tz OwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxv Y2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKm5leHRibG9jazsK CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7CgogICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X2xp c3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0 IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBl cmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0Owog ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh ZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVyYXNlX2NvbXBsZXRpb25fbG9j azsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2FpdDsKICAgICAgICBzdHJ1Y3Qg amZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xpc3RbMV07CiAgICAgICAgc3BpbmxvY2tfdCBp bm9jYWNoZV9sb2NrOwp9OwojIDcwNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu dXgvZnMuaCIgMgoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgc3VwZXJfYmxvY2tzOwpleHRlcm4g c3BpbmxvY2tfdCBzYl9sb2NrOwoKCgpzdHJ1Y3Qgc3VwZXJfYmxvY2sgewogICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgc19saXN0OwogICAgICAgIGtkZXZfdCBzX2RldjsKICAgICAgICB1bnNpZ25l ZCBsb25nIHNfYmxvY2tzaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ibG9ja3NpemVfYml0 czsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfZGlydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGxv bmcgc19tYXhieXRlczsKICAgICAgICBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqc190eXBlOwog ICAgICAgIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zICpzX29wOwogICAgICAgIHN0cnVjdCBkcXVv dF9vcGVyYXRpb25zICpkcV9vcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmxhZ3M7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBzX21hZ2ljOwogICAgICAgIHN0cnVjdCBkZW50cnkgKnNfcm9vdDsK ICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIHNfdW1vdW50OwogICAgICAgIHN0cnVjdCBzZW1h cGhvcmUgc19sb2NrOwogICAgICAgIGludCBzX2NvdW50OwogICAgICAgIGF0b21pY190IHNfYWN0 aXZlOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZGlydHk7CiAgICAgICAgc3RydWN0IGxp c3RfaGVhZCBzX2xvY2tlZF9pbm9kZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2ZpbGVz OwoKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpzX2JkZXY7CiAgICAgICAgc3RydWN0IGxp c3RfaGVhZCBzX2luc3RhbmNlczsKICAgICAgICBzdHJ1Y3QgcXVvdGFfbW91bnRfb3B0aW9ucyBz X2RxdW90OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbWluaXhfc2Jf aW5mbyBtaW5peF9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQyX3NiX2luZm8gZXh0Ml9z YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX3NiX2luZm8gZXh0M19zYjsKICAgICAgICAg ICAgICAgIHN0cnVjdCBocGZzX3NiX2luZm8gaHBmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVj dCBudGZzX3NiX2luZm8gbnRmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rvc19zYl9p bmZvIG1zZG9zX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGlzb2ZzX3NiX2luZm8gaXNvZnNf c2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX3NiX2luZm8gbmZzX3NiOwogICAgICAgICAg ICAgICAgc3RydWN0IHN5c3Zfc2JfaW5mbyBzeXN2X3NiOwogICAgICAgICAgICAgICAgc3RydWN0 IGFmZnNfc2JfaW5mbyBhZmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHVmc19zYl9pbmZv IHVmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBlZnNfc2JfaW5mbyBlZnNfc2I7CiAgICAg ICAgICAgICAgICBzdHJ1Y3Qgc2htZW1fc2JfaW5mbyBzaG1lbV9zYjsKICAgICAgICAgICAgICAg IHN0cnVjdCByb21mc19zYl9pbmZvIHJvbWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHNt Yl9zYl9pbmZvIHNtYmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGhmc19zYl9pbmZvIGhm c19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZGZzX3NiX2luZm8gYWRmc19zYjsKICAgICAg ICAgICAgICAgIHN0cnVjdCBxbng0X3NiX2luZm8gcW54NF9zYjsKICAgICAgICAgICAgICAgIHN0 cnVjdCByZWlzZXJmc19zYl9pbmZvIHJlaXNlcmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0 IGJmc19zYl9pbmZvIGJmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfc2JfaW5mbyB1 ZGZfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmNwX3NlcnZlciBuY3Bmc19zYjsKICAgICAg ICAgICAgICAgIHN0cnVjdCB1c2JkZXZfc2JfaW5mbyB1c2JkZXZmc19zYjsKICAgICAgICAgICAg ICAgIHN0cnVjdCBqZmZzMl9zYl9pbmZvIGpmZnMyX3NiOwogICAgICAgICAgICAgICAgc3RydWN0 IGNyYW1mc19zYl9pbmZvIGNyYW1mc19zYjsKICAgICAgICAgICAgICAgIHZvaWQgKmdlbmVyaWNf c2JwOwogICAgICAgIH0gdTsKCgoKCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX3Zmc19yZW5h bWVfc2VtOwojIDc4MCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIK ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3BhdGhfc2VtOwp9OwoKCgoKZXh0 ZXJuIGludCB2ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7 CmV4dGVybiBpbnQgdmZzX21rZGlyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGlu dCk7CmV4dGVybiBpbnQgdmZzX21rbm9kKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICos IGludCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19zeW1saW5rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1 Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2xpbmsoc3RydWN0IGRl bnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB2ZnNf cm1kaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3Vu bGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB2ZnNfcmVu YW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1 Y3QgZGVudHJ5ICopOwojIDgxNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv ZnMuaCIKdHlwZWRlZiBpbnQgKCpmaWxsZGlyX3QpKHZvaWQgKiwgY29uc3QgY2hhciAqLCBpbnQs IGxvZmZfdCwgaW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9u cyB7CiAgICAgICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsK ICAgICAgICBpbnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwog ICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2ln bmVkLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBpbnQgKCpjaGVja19tZWRpYV9jaGFuZ2UpIChr ZGV2X3QpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChrZGV2X3QpOwogICAgICAgIHN0cnVj dCBtb2R1bGUgKm93bmVyOwp9OwoKCgoKCgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKICAgICAg ICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsKICAgICAgICBsb2ZmX3QgKCpsbHNlZWspIChzdHJ1Y3Qg ZmlsZSAqLCBsb2ZmX3QsIGludCk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQpIChzdHJ1Y3QgZmls ZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSkg KHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAgICAgICAg aW50ICgqcmVhZGRpcikgKHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKICAgICAg ICB1bnNpZ25lZCBpbnQgKCpwb2xsKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVf c3RydWN0ICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBm aWxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgqbW1hcCkg KHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKICAgICAgICBpbnQgKCpv cGVuKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmZsdXNo KSAoc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAq LCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpmc3luYykgKHN0cnVjdCBmaWxlICosIHN0 cnVjdCBkZW50cnkgKiwgaW50IGRhdGFzeW5jKTsKICAgICAgICBpbnQgKCpmYXN5bmMpIChpbnQs IHN0cnVjdCBmaWxlICosIGludCk7CiAgICAgICAgaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICos IGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsKICAgICAgICBzc2l6ZV90ICgqcmVhZHYpIChzdHJ1 Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICop OwogICAgICAgIHNzaXplX3QgKCp3cml0ZXYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3Qg aW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCpzZW5k cGFnZSkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3Qg KiwgaW50KTsKICAgICAgICB1bnNpZ25lZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpKHN0cnVj dCBmaWxlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVu c2lnbmVkIGxvbmcpOwp9OwoKc3RydWN0IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAo KmNyZWF0ZSkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0 cnVjdCBkZW50cnkgKiAoKmxvb2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7 CiAgICAgICAgaW50ICgqbGluaykgKHN0cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1 Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVj dCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVj dCBkZW50cnkgKixjb25zdCBjaGFyICopOwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlu b2RlICosc3RydWN0IGRlbnRyeSAqLGludCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3Qg aW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlu b2RlICosc3RydWN0IGRlbnRyeSAqLGludCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAo c3RydWN0IGRlbnRyeSAqLCBjaGFyICosaW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykg KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1 bmNhdGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVj dCBpbm9kZSAqLCBpbnQpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChzdHJ1Y3QgZGVudHJ5 ICopOwogICAgICAgIGludCAoKnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0 ciAqKTsKICAgICAgICBpbnQgKCpnZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0 dHIgKik7CiAgICAgICAgaW50ICgqc2V0eGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNo YXIgKiwgdm9pZCAqLCBzaXplX3QsIGludCk7CiAgICAgICAgc3NpemVfdCAoKmdldHhhdHRyKSAo c3RydWN0IGRlbnRyeSAqLCBjb25zdCBjaGFyICosIHZvaWQgKiwgc2l6ZV90KTsKICAgICAgICBz c2l6ZV90ICgqbGlzdHhhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIHNpemVfdCk7CiAg ICAgICAgaW50ICgqcmVtb3ZleGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7 Cn07CgpzdHJ1Y3Qgc2VxX2ZpbGU7CgoKCgoKc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgewogICAg ICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3RydWN0IGlub2RlICopOwoKCgoKCgoKICAgICAgICB2 b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSA7CiAgICAgICAgdm9p ZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9p bm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAgIHZvaWQgKCpwdXRfaW5vZGUpIChz dHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAoKmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBpbm9k ZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwog ICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAg ICBpbnQgKCpzeW5jX2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp3 cml0ZV9zdXBlcl9sb2NrZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAgICAgICAgdm9pZCAo KnVubG9ja2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIGludCAoKnN0YXRmcykg KHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qgc3RhdGZzICopOwogICAgICAgIGludCAoKnJl bW91bnRfZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50ICosIGNoYXIgKik7CiAgICAgICAg dm9pZCAoKmNsZWFyX2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIHZvaWQgKCp1bW91 bnRfYmVnaW4pIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiMgOTI3ICIvdXNyL3NyYy9saW51eC0y LjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmZoX3Rv X2RlbnRyeSkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgX191MzIgKmZoLCBpbnQgbGVuLCBpbnQg Zmh0eXBlLCBpbnQgcGFyZW50KTsKICAgICAgICBpbnQgKCpkZW50cnlfdG9fZmgpKHN0cnVjdCBk ZW50cnkgKiwgX191MzIgKmZoLCBpbnQgKmxlbnAsIGludCBuZWVkX3BhcmVudCk7CiAgICAgICAg aW50ICgqc2hvd19vcHRpb25zKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IHZmc21vdW50ICop Owp9OwojIDk0MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKZXh0 ZXJuIHZvaWQgX19tYXJrX2lub2RlX2RpcnR5KHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpzdGF0aWMg aW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAg ICAgX19tYXJrX2lub2RlX2RpcnR5KGlub2RlLCAoMSB8IDIgfCA0KSk7Cn0KCnN0YXRpYyBpbmxp bmUgdm9pZCBtYXJrX2lub2RlX2RpcnR5X3N5bmMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAg ICAgIF9fbWFya19pbm9kZV9kaXJ0eShpbm9kZSwgMSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBt YXJrX2lub2RlX2RpcnR5X3BhZ2VzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21h cmtfaW5vZGVfZGlydHkoaW5vZGUsIDQpOwp9CgpzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9ucyB7CiAg ICAgICAgdm9pZCAoKmluaXRpYWxpemUpIChzdHJ1Y3QgaW5vZGUgKiwgc2hvcnQpOwogICAgICAg IHZvaWQgKCpkcm9wKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIGludCAoKmFsbG9jX2Jsb2Nr KSAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcsIGNoYXIpOwogICAgICAgIGludCAoKmFs bG9jX2lub2RlKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAg IHZvaWQgKCpmcmVlX2Jsb2NrKSAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAg ICAgIHZvaWQgKCpmcmVlX2lub2RlKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxv bmcpOwogICAgICAgIGludCAoKnRyYW5zZmVyKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0 ciAqKTsKfTsKCnN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHsKICAgICAgICBjb25zdCBjaGFyICpu YW1lOwogICAgICAgIGludCBmc19mbGFnczsKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKigq cmVhZF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lkICosIGludCk7CiAgICAgICAg c3RydWN0IG1vZHVsZSAqb3duZXI7CiAgICAgICAgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiBu ZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnNfc3VwZXJzOwp9OwojIDEwMDAgIi91c3Iv c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBpbnQgcmVnaXN0ZXJf ZmlsZXN5c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCB1bnJlZ2lz dGVyX2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBzdHJ1Y3Qg dmZzbW91bnQgKmtlcm5fbW91bnQoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBp bnQgbWF5X3Vtb3VudChzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBsb25nIGRvX21vdW50KGNo YXIgKiwgY2hhciAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CgoKCmV4dGVybiBp bnQgdmZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsKIyAx MDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gaW50 IGxvY2tzX21hbmRhdG9yeV9sb2NrZWQoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGxvY2tz X21hbmRhdG9yeV9hcmVhKGludCwgc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIGxvZmZf dCwgc2l6ZV90KTsKIyAxMDI4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9m cy5oIgpzdGF0aWMgaW5saW5lIGludCBsb2Nrc192ZXJpZnlfbG9ja2VkKHN0cnVjdCBpbm9kZSAq aW5vZGUpCnsKICAgICAgICBpZiAoKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYg KChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAg ICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfbG9ja2VkKGlub2RlKTsKICAgICAgICBy ZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVyaWZ5X2FyZWEoaW50IHJlYWRf d3JpdGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBmaWxlICpmaWxwLCBsb2ZmX3Qgb2Zmc2V0LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQpCnsKICAgICAgICBpZiAoaW5vZGUtPmlf ZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlf bW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJl dHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYShyZWFkX3dyaXRlLCBpbm9kZSwgZmlscCwgb2Zmc2V0 LCBjb3VudCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGxvY2tzX3Zl cmlmeV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlscCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbG9mZl90IHNpemUpCnsKICAgICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYg KCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgw MDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nr c19tYW5kYXRvcnlfYXJlYSgKICAgICAgICAgICAgICAgICAgICAgICAgMiwgaW5vZGUsIGZpbHAs CiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPCBpbm9kZS0+aV9zaXplID8gc2l6ZSA6IGlu b2RlLT5pX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIChzaXplIDwgaW5vZGUtPmlfc2l6 ZSA/IGlub2RlLT5pX3NpemUgLSBzaXplCiAgICAgICAgICAgICAgICAgICAgICAgICA6IHNpemUg LSBpbm9kZS0+aV9zaXplKQogICAgICAgICAgICAgICAgKTsKICAgICAgICByZXR1cm4gMDsKfQoK c3RhdGljIGlubGluZSBpbnQgZ2V0X2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVk IGludCBtb2RlKQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrKQogICAgICAgICAgICAgICAg cmV0dXJuIF9fZ2V0X2xlYXNlKGlub2RlLCBtb2RlKTsKICAgICAgICByZXR1cm4gMDsKfQoKCgog X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX29wZW4oY29uc3QgY2hhciAqLCBp bnQsIGludCk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfY2xvc2UodW5z aWduZWQgaW50KTsKZXh0ZXJuIGludCBkb190cnVuY2F0ZShzdHJ1Y3QgZGVudHJ5ICosIGxvZmZf dCBzdGFydCk7CgpleHRlcm4gc3RydWN0IGZpbGUgKmZpbHBfb3Blbihjb25zdCBjaGFyICosIGlu dCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogZGVudHJ5X29wZW4oc3RydWN0IGRlbnRyeSAq LCBzdHJ1Y3QgdmZzbW91bnQgKiwgaW50KTsKZXh0ZXJuIGludCBmaWxwX2Nsb3NlKHN0cnVjdCBm aWxlICosIGZsX293bmVyX3QgaWQpOwpleHRlcm4gY2hhciAqIGdldG5hbWUoY29uc3QgY2hhciAq KTsKCgpleHRlcm4gdm9pZCB2ZnNfY2FjaGVzX2luaXQodW5zaWduZWQgbG9uZyk7CgoKCgplbnVt IHtCREVWX0ZJTEUsIEJERVZfU1dBUCwgQkRFVl9GUywgQkRFVl9SQVd9OwpleHRlcm4gaW50IHJl Z2lzdGVyX2Jsa2Rldih1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwgc3RydWN0IGJsb2NrX2Rl dmljZV9vcGVyYXRpb25zICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfYmxrZGV2KHVuc2lnbmVk IGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZ2V0KGRl dl90KTsKZXh0ZXJuIGludCBiZF9hY3F1aXJlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4g dm9pZCBiZF9mb3JnZXQoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiB2b2lkIGJkcHV0KHN0 cnVjdCBibG9ja19kZXZpY2UgKik7CmV4dGVybiBzdHJ1Y3QgY2hhcl9kZXZpY2UgKmNkZ2V0KGRl dl90KTsKZXh0ZXJuIHZvaWQgY2RwdXQoc3RydWN0IGNoYXJfZGV2aWNlICopOwpleHRlcm4gaW50 IGJsa2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGludCBi bGtkZXZfY2xvc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gc3RydWN0 IGZpbGVfb3BlcmF0aW9ucyBkZWZfYmxrX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgYWRkcmVzc19zcGFj ZV9vcGVyYXRpb25zIGRlZl9ibGtfYW9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg ZGVmX2ZpZm9fZm9wczsKZXh0ZXJuIGludCBpb2N0bF9ieV9iZGV2KHN0cnVjdCBibG9ja19kZXZp Y2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IGJsa2Rldl9nZXQoc3Ry dWN0IGJsb2NrX2RldmljZSAqLCBtb2RlX3QsIHVuc2lnbmVkLCBpbnQpOwpleHRlcm4gaW50IGJs a2Rldl9wdXQoc3RydWN0IGJsb2NrX2RldmljZSAqLCBpbnQpOwoKCmV4dGVybiBjb25zdCBzdHJ1 Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgKmdldF9ibGtmb3BzKHVuc2lnbmVkIGludCk7CmV4 dGVybiBpbnQgcmVnaXN0ZXJfY2hyZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqLCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfY2hyZGV2KHVuc2ln bmVkIGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBjaHJkZXZfb3BlbihzdHJ1Y3QgaW5v ZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4dGVybiBjb25zdCBjaGFyICogYmRldm5hbWUoa2Rldl90 KTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBjZGV2bmFtZShrZGV2X3QpOwpleHRlcm4gY29uc3QgY2hh ciAqIGtkZXZuYW1lKGtkZXZfdCk7CmV4dGVybiB2b2lkIGluaXRfc3BlY2lhbF9pbm9kZShzdHJ1 Y3QgaW5vZGUgKiwgdW1vZGVfdCwgaW50KTsKCgpleHRlcm4gdm9pZCBtYWtlX2JhZF9pbm9kZShz dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgaXNfYmFkX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsK CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfZmlmb19mb3BzOwpleHRlcm4gc3Ry dWN0IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIHJkd3JfZmlmb19mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBy ZWFkX3BpcGVfZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd3JpdGVfcGlwZV9m b3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZHdyX3BpcGVfZm9wczsKCmV4dGVy biBpbnQgZnNfbWF5X3JlbW91bnRfcm8oc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKZXh0ZXJuIGlu dCB0cnlfdG9fZnJlZV9idWZmZXJzKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGludCkgX19hdHRy aWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCByZWZpbGVfYnVmZmVyKHN0cnVjdCBi dWZmZXJfaGVhZCAqIGJ1Zik7CmV4dGVybiB2b2lkIGNyZWF0ZV9lbXB0eV9idWZmZXJzKHN0cnVj dCBwYWdlICosIGtkZXZfdCwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIGVuZF9idWZmZXJf aW9fc3luYyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOwoKCmV4dGVybiB2 b2lkIHNldF9idWZmZXJfYXN5bmNfaW8oc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgOwoKCgoKCgpz dGF0aWMgaW5saW5lIHZvaWQgZ2V0X2JoKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7CiAgICAg ICAgYXRvbWljX2luYygmKGJoKS0+Yl9jb3VudCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBwdXRf Ymgoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f KCIiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgYXRvbWljX2RlYygmYmgtPmJfY291bnQpOwp9CgoK CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfdXB0b2RhdGUoc3RydWN0IGJ1ZmZlcl9o ZWFkICogYmgsIGludCBvbikKewogICAgICAgIGlmIChvbikKICAgICAgICAgICAgICAgIHNldF9i aXQoQkhfVXB0b2RhdGUsICZiaC0+Yl9zdGF0ZSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICAg ICAgY2xlYXJfYml0KEJIX1VwdG9kYXRlLCAmYmgtPmJfc3RhdGUpOwp9CgoKCnN0YXRpYyBpbmxp bmUgdm9pZCBfX21hcmtfYnVmZmVyX2NsZWFuKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAg ICAgICByZWZpbGVfYnVmZmVyKGJoKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVy X2NsZWFuKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7CiAgICAgICAgaWYgKHRlc3RfYW5kX2Ns ZWFyX2JpdChCSF9EaXJ0eSwgJihiaCktPmJfc3RhdGUpKQogICAgICAgICAgICAgICAgX19tYXJr X2J1ZmZlcl9jbGVhbihiaCk7Cn0KCmV4dGVybiB2b2lkIF9fbWFya19kaXJ0eShzdHJ1Y3QgYnVm ZmVyX2hlYWQgKmJoKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIF9f bWFya19idWZmZXJfZGlydHkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygo cmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBtYXJrX2J1ZmZlcl9kaXJ0eShzdHJ1Y3QgYnVmZmVy X2hlYWQgKmJoKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGJ1ZmZl cl9pbnNlcnRfaW5vZGVfcXVldWUoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVjdCBpbm9kZSAq KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGJ1ZmZlcl9pbnNlcnRf aW5vZGVfZGF0YV9xdWV1ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGlub2RlICopIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCnN0YXRpYyBpbmxpbmUgaW50IGF0b21pY19zZXRf YnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICByZXR1cm4gdGVz dF9hbmRfc2V0X2JpdChCSF9EaXJ0eSwgJmJoLT5iX3N0YXRlKTsKfQoKc3RhdGljIGlubGluZSB2 b2lkIG1hcmtfYnVmZmVyX2FzeW5jKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCBpbnQgb24pCnsK ICAgICAgICBpZiAob24pCiAgICAgICAgICAgICAgICBzZXRfYml0KEJIX0FzeW5jLCAmYmgtPmJf c3RhdGUpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGNsZWFyX2JpdChCSF9Bc3luYywg JmJoLT5iX3N0YXRlKTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGJ1ZmZlcl9JT19lcnJv cihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIG1hcmtfYnVmZmVyX2NsZWFuKGJo KTsKCgoKICAgICAgICBiaC0+Yl9lbmRfaW8oYmgsIDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQg bWFya19idWZmZXJfZGlydHlfaW5vZGUoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgc3RydWN0IGlu b2RlICppbm9kZSkKewogICAgICAgIG1hcmtfYnVmZmVyX2RpcnR5KGJoKTsKICAgICAgICBidWZm ZXJfaW5zZXJ0X2lub2RlX3F1ZXVlKGJoLCBpbm9kZSk7Cn0KCmV4dGVybiB2b2lkIHNldF9idWZm ZXJfZmx1c2h0aW1lKHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKZXh0ZXJuIHZvaWQgYmFsYW5jZV9k aXJ0eSh2b2lkKTsKZXh0ZXJuIGludCBjaGVja19kaXNrX2NoYW5nZShrZGV2X3QpOwpleHRlcm4g aW50IGludmFsaWRhdGVfaW5vZGVzKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGludCBp bnZhbGlkYXRlX2RldmljZShrZGV2X3QsIGludCk7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5v ZGVfcGFnZXMoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX3Bh Z2VzMihzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9pbm9k ZV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2JkZXYo c3RydWN0IGJsb2NrX2RldmljZSAqLCBpbnQpOwpleHRlcm4gdm9pZCBfX2ludmFsaWRhdGVfYnVm ZmVycyhrZGV2X3QgZGV2LCBpbnQpOwpleHRlcm4gdm9pZCBzeW5jX2lub2RlcyhrZGV2X3QpOwpl eHRlcm4gdm9pZCBzeW5jX3VubG9ja2VkX2lub2Rlcyh2b2lkKTsKZXh0ZXJuIHZvaWQgd3JpdGVf aW5vZGVfbm93KHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IHN5bmNfYnVmZmVycyhr ZGV2X3QsIGludCk7CmV4dGVybiB2b2lkIHN5bmNfZGV2KGtkZXZfdCk7CmV4dGVybiBpbnQgZnN5 bmNfZGV2KGtkZXZfdCk7CmV4dGVybiBpbnQgZnN5bmNfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2Nr ICopOwpleHRlcm4gaW50IGZzeW5jX25vX3N1cGVyKGtkZXZfdCk7CmV4dGVybiB2b2lkIHN5bmNf aW5vZGVzX3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGludCBmc3luY19idWZmZXJz X2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqKTsKc3RhdGljIGlubGluZSBpbnQgZnN5bmNfaW5vZGVf YnVmZmVycyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgcmV0dXJuIGZzeW5jX2J1ZmZl cnNfbGlzdCgmaW5vZGUtPmlfZGlydHlfYnVmZmVycyk7Cn0Kc3RhdGljIGlubGluZSBpbnQgZnN5 bmNfaW5vZGVfZGF0YV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICByZXR1 cm4gZnN5bmNfYnVmZmVyc19saXN0KCZpbm9kZS0+aV9kaXJ0eV9kYXRhX2J1ZmZlcnMpOwp9CmV4 dGVybiBpbnQgaW5vZGVfaGFzX2J1ZmZlcnMoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGZp bGVtYXBfZmRhdGFzeW5jKHN0cnVjdCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4gaW50IGZpbGVt YXBfZmRhdGF3YWl0KHN0cnVjdCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBzeW5jX3N1 cGVycyhrZGV2X3QgZGV2LCBpbnQgd2FpdCk7CmV4dGVybiBpbnQgYm1hcChzdHJ1Y3QgaW5vZGUg KiwgaW50KTsKZXh0ZXJuIGludCBub3RpZnlfY2hhbmdlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0 IGlhdHRyICopOwpleHRlcm4gaW50IHBlcm1pc3Npb24oc3RydWN0IGlub2RlICosIGludCk7CmV4 dGVybiBpbnQgdmZzX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQg Z2V0X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgZGVueV93cml0ZV9h Y2Nlc3Moc3RydWN0IGZpbGUgKik7CnN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfd3JpdGVfYWNjZXNz KHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAgICAgICAgYXRvbWljX2RlYygmaW5vZGUtPmlfd3Jp dGVjb3VudCk7Cn0Kc3RhdGljIGlubGluZSB2b2lkIGFsbG93X3dyaXRlX2FjY2VzcyhzdHJ1Y3Qg ZmlsZSAqZmlsZSkKewogICAgICAgIGlmIChmaWxlKQogICAgICAgICAgICAgICAgYXRvbWljX2lu YygmZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfd3JpdGVjb3VudCk7Cn0KZXh0ZXJuIGludCBk b19waXBlKGludCAqKTsKCmV4dGVybiBpbnQgb3Blbl9uYW1laShjb25zdCBjaGFyICosIGludCwg aW50LCBzdHJ1Y3QgbmFtZWlkYXRhICopOwoKZXh0ZXJuIGludCBrZXJuZWxfcmVhZChzdHJ1Y3Qg ZmlsZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyICosIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gc3Ry dWN0IGZpbGUgKiBvcGVuX2V4ZWMoY29uc3QgY2hhciAqKTsKCgpleHRlcm4gaW50IGlzX3N1YmRp cihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbm9fdCBmaW5kX2lu b2RlX251bWJlcihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICopOwojIDEyNzkgIi91c3Iv c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAq RVJSX1BUUihsb25nIGVycm9yKQp7CiAgICAgICAgcmV0dXJuICh2b2lkICopIGVycm9yOwp9Cgpz dGF0aWMgaW5saW5lIGxvbmcgUFRSX0VSUihjb25zdCB2b2lkICpwdHIpCnsKICAgICAgICByZXR1 cm4gKGxvbmcpIHB0cjsKfQoKc3RhdGljIGlubGluZSBsb25nIElTX0VSUihjb25zdCB2b2lkICpw dHIpCnsKICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpcHRyID4gKHVuc2lnbmVkIGxvbmcp LTEwMDBMOwp9CiMgMTMxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMu aCIKZW51bSB7TEFTVF9OT1JNLCBMQVNUX1JPT1QsIExBU1RfRE9ULCBMQVNUX0RPVERPVCwgTEFT VF9CSU5EfTsKIyAxMzIxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5o Igp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgc2l6ZV90IHdyaXR0ZW47CiAgICAgICAgc2l6ZV90 IGNvdW50OwogICAgICAgIGNoYXIgKiBidWY7CiAgICAgICAgaW50IGVycm9yOwp9IHJlYWRfZGVz Y3JpcHRvcl90OwoKdHlwZWRlZiBpbnQgKCpyZWFkX2FjdG9yX3QpKHJlYWRfZGVzY3JpcHRvcl90 ICosIHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKCmV4dGVy biBsb2ZmX3QgZGVmYXVsdF9sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQs IGludCBvcmlnaW4pOwoKZXh0ZXJuIGludCBfX3VzZXJfd2Fsayhjb25zdCBjaGFyICosIHVuc2ln bmVkLCBzdHJ1Y3QgbmFtZWlkYXRhICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0 ZXJuIGludCBwYXRoX2luaXQoY29uc3QgY2hhciAqLCB1bnNpZ25lZCwgc3RydWN0IG5hbWVpZGF0 YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgcGF0aF93YWxrKGNv bnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp KSk7CmV4dGVybiBpbnQgcGF0aF9sb29rdXAoY29uc3QgY2hhciAqLCB1bnNpZ25lZCwgc3RydWN0 IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgbGlu a19wYXRoX3dhbGsoY29uc3QgY2hhciAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopIF9fYXR0cmlidXRl X18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgcGF0aF9yZWxlYXNlKHN0cnVjdCBuYW1laWRh dGEgKik7CmV4dGVybiBpbnQgZm9sbG93X2Rvd24oc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3Qg ZGVudHJ5ICoqKTsKZXh0ZXJuIGludCBmb2xsb3dfdXAoc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1 Y3QgZGVudHJ5ICoqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfb25lX2xlbihjb25z dCBjaGFyICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBs b29rdXBfaGFzaChzdHJ1Y3QgcXN0ciAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoKCgpleHRlcm4gdm9p ZCBpcHV0KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZm9yY2VfZGVsZXRlKHN0cnVjdCBp bm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGlncmFiKHN0cnVjdCBpbm9kZSAqKTsKZXh0 ZXJuIGlub190IGl1bmlxdWUoc3RydWN0IHN1cGVyX2Jsb2NrICosIGlub190KTsKCnR5cGVkZWYg aW50ICgqZmluZF9pbm9kZV90KShzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAq KTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGlnZXQ0KHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNp Z25lZCBsb25nLCBmaW5kX2lub2RlX3QsIHZvaWQgKik7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGlu b2RlICppZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKQp7CiAg ICAgICAgcmV0dXJuIGlnZXQ0KHNiLCBpbm8sICgodm9pZCAqKTApLCAoKHZvaWQgKikwKSk7Cn0K CmV4dGVybiB2b2lkIGNsZWFyX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBp bm9kZSAqIGdldF9lbXB0eV9pbm9kZSh2b2lkKTsKCnN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2Rl ICogbmV3X2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCnsKICAgICAgICBzdHJ1Y3QgaW5v ZGUgKmlub2RlID0gZ2V0X2VtcHR5X2lub2RlKCk7CiAgICAgICAgaWYgKGlub2RlKSB7CiAgICAg ICAgICAgICAgICBpbm9kZS0+aV9zYiA9IHNiOwogICAgICAgICAgICAgICAgaW5vZGUtPmlfZGV2 ID0gc2ItPnNfZGV2OwogICAgICAgICAgICAgICAgaW5vZGUtPmlfYmxrYml0cyA9IHNiLT5zX2Js b2Nrc2l6ZV9iaXRzOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaW5vZGU7Cn0KZXh0ZXJuIHZv aWQgcmVtb3ZlX3N1aWQoc3RydWN0IGlub2RlICppbm9kZSk7CgpleHRlcm4gdm9pZCBpbnNlcnRf aW5vZGVfaGFzaChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHJlbW92ZV9pbm9kZV9oYXNo KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogZ2V0X2VtcHR5X2ZpbHAodm9p ZCk7CmV4dGVybiB2b2lkIGZpbGVfbW92ZShzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IGxpc3RfaGVh ZCAqbGlzdCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBnZXRfaGFzaF90YWJsZShrZGV2 X3QsIGludCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIGdldGJsayhrZGV2X3Qs IGludCwgaW50KTsKZXh0ZXJuIHZvaWQgbGxfcndfYmxvY2soaW50LCBpbnQsIHN0cnVjdCBidWZm ZXJfaGVhZCAqIGJoW10pOwpleHRlcm4gdm9pZCBzdWJtaXRfYmgoaW50LCBzdHJ1Y3QgYnVmZmVy X2hlYWQgKik7CmV4dGVybiBpbnQgaXNfcmVhZF9vbmx5KGtkZXZfdCk7CmV4dGVybiB2b2lkIF9f YnJlbHNlKHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKc3RhdGljIGlubGluZSB2b2lkIGJyZWxzZShz dHJ1Y3QgYnVmZmVyX2hlYWQgKmJ1ZikKewogICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAg ICBfX2JyZWxzZShidWYpOwp9CmV4dGVybiB2b2lkIF9fYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hl YWQgKik7CnN0YXRpYyBpbmxpbmUgdm9pZCBiZm9yZ2V0KHN0cnVjdCBidWZmZXJfaGVhZCAqYnVm KQp7CiAgICAgICAgaWYgKGJ1ZikKICAgICAgICAgICAgICAgIF9fYmZvcmdldChidWYpOwp9CmV4 dGVybiBpbnQgc2V0X2Jsb2Nrc2l6ZShrZGV2X3QsIGludCk7CmV4dGVybiBpbnQgc2Jfc2V0X2Js b2Nrc2l6ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50KTsKZXh0ZXJuIGludCBzYl9taW5fYmxv Y2tzaXplKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9o ZWFkICogYnJlYWQoa2Rldl90LCBpbnQsIGludCk7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZl cl9oZWFkICogc2JfYnJlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAg ICAgICAgcmV0dXJuIGJyZWFkKHNiLT5zX2RldiwgYmxvY2ssIHNiLT5zX2Jsb2Nrc2l6ZSk7Cn0K c3RhdGljIGlubGluZSBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzYl9nZXRibGsoc3RydWN0IHN1cGVy X2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAgICAgcmV0dXJuIGdldGJsayhzYi0+c19kZXYs IGJsb2NrLCBzYi0+c19ibG9ja3NpemUpOwp9CnN0YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZlcl9o ZWFkICogc2JfZ2V0X2hhc2hfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2Nr KQp7CiAgICAgICAgcmV0dXJuIGdldF9oYXNoX3RhYmxlKHNiLT5zX2RldiwgYmxvY2ssIHNiLT5z X2Jsb2Nrc2l6ZSk7Cn0KZXh0ZXJuIHZvaWQgd2FrZXVwX2JkZmx1c2godm9pZCk7CmV4dGVybiB2 b2lkIHB1dF91bnVzZWRfYnVmZmVyX2hlYWQoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpOwpleHRl cm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0X3VudXNlZF9idWZmZXJfaGVhZChpbnQgYXN5bmMp OwoKZXh0ZXJuIGludCBicndfcGFnZShpbnQsIHN0cnVjdCBwYWdlICosIGtkZXZfdCwgaW50IFtd LCBpbnQpOwoKdHlwZWRlZiBpbnQgKGdldF9ibG9ja190KShzdHJ1Y3QgaW5vZGUqLGxvbmcsc3Ry dWN0IGJ1ZmZlcl9oZWFkKixpbnQpOwoKCmV4dGVybiBpbnQgdHJ5X3RvX3JlbGVhc2VfcGFnZShz dHJ1Y3QgcGFnZSAqIHBhZ2UsIGludCBnZnBfbWFzayk7CmV4dGVybiBpbnQgZGlzY2FyZF9iaF9w YWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgoKZXh0ZXJuIGludCBibG9j a19zeW1saW5rKHN0cnVjdCBpbm9kZSAqLCBjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQg YmxvY2tfd3JpdGVfZnVsbF9wYWdlKHN0cnVjdCBwYWdlKiwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJu IGludCBibG9ja19yZWFkX2Z1bGxfcGFnZShzdHJ1Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4 dGVybiBpbnQgYmxvY2tfcHJlcGFyZV93cml0ZShzdHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNp Z25lZCwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBjb250X3ByZXBhcmVfd3JpdGUoc3RydWN0 IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGdldF9ibG9ja190KiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICopOwpleHRlcm4gaW50IGdlbmVyaWNfY29u dF9leHBhbmQoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHNpemUpIDsKZXh0ZXJuIGludCBi bG9ja19jb21taXRfd3JpdGUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGZyb20sIHVuc2ln bmVkIHRvKTsKZXh0ZXJuIGludCBibG9ja19zeW5jX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgppbnQg Z2VuZXJpY19ibG9ja19ibWFwKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvbmcsIGdldF9ibG9j a190ICopOwppbnQgZ2VuZXJpY19jb21taXRfd3JpdGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBh Z2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKaW50IGJsb2NrX3RydW5jYXRlX3BhZ2Uoc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKiwgbG9mZl90LCBnZXRfYmxvY2tfdCAqKTsKZXh0ZXJuIGludCBnZW5l cmljX2RpcmVjdF9JTyhpbnQsIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2ln bmVkIGxvbmcsIGludCwgZ2V0X2Jsb2NrX3QgKik7CmV4dGVybiBpbnQgd2FpdGZvcl9vbmVfcGFn ZShzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIGludCB3cml0ZW91dF9vbmVfcGFnZShzdHJ1Y3QgcGFn ZSAqKTsKCmV4dGVybiBpbnQgZ2VuZXJpY19maWxlX21tYXAoc3RydWN0IGZpbGUgKiwgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gaW50IGZpbGVfcmVhZF9hY3RvcihyZWFkX2Rlc2Ny aXB0b3JfdCAqIGRlc2MsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwg dW5zaWduZWQgbG9uZyBzaXplKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3JlYWQoc3Ry dWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgZ2Vu ZXJpY19maWxlX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2Zm X3QgKik7CmV4dGVybiB2b2lkIGRvX2dlbmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGxv ZmZfdCAqLCByZWFkX2Rlc2NyaXB0b3JfdCAqLCByZWFkX2FjdG9yX3QpOwpleHRlcm4gbG9mZl90 IG5vX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7 CmV4dGVybiBsb2ZmX3QgZ2VuZXJpY19maWxlX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9m Zl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIo c3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIGludCBnZW5l cmljX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwKTsK CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGdlbmVyaWNfcm9fZm9wczsKCmV4dGVybiBp bnQgdmZzX3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIg Kik7CmV4dGVybiBpbnQgdmZzX2ZvbGxvd19saW5rKHN0cnVjdCBuYW1laWRhdGEgKiwgY29uc3Qg Y2hhciAqKTsKZXh0ZXJuIGludCBwYWdlX3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAq LCBpbnQpOwpleHRlcm4gaW50IHBhZ2VfZm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1 Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1s aW5rX2lub2RlX29wZXJhdGlvbnM7CgpleHRlcm4gaW50IHZmc19yZWFkZGlyKHN0cnVjdCBmaWxl ICosIGZpbGxkaXJfdCwgdm9pZCAqKTsKZXh0ZXJuIGludCBkY2FjaGVfZGlyX29wZW4oc3RydWN0 IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gaW50IGRjYWNoZV9kaXJfY2xvc2Uoc3Ry dWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gbG9mZl90IGRjYWNoZV9kaXJfbHNl ZWsoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwpleHRlcm4gaW50IGRjYWNoZV9kaXJfZnN5 bmMoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IGRjYWNo ZV9yZWFkZGlyKHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKZXh0ZXJuIHN0cnVj dCBmaWxlX29wZXJhdGlvbnMgZGNhY2hlX2Rpcl9vcHM7CgpleHRlcm4gc3RydWN0IGZpbGVfc3lz dGVtX3R5cGUgKmdldF9mc190eXBlKGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gc3RydWN0IHN1 cGVyX2Jsb2NrICpnZXRfc3VwZXIoa2Rldl90KTsKZXh0ZXJuIHZvaWQgZHJvcF9zdXBlcihzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3RhdGljIGlubGluZSBpbnQgaXNfbW91bnRlZChrZGV2X3Qg ZGV2KQp7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGdldF9zdXBlcihkZXYpOwog ICAgICAgIGlmIChzYikgewogICAgICAgICAgICAgICAgZHJvcF9zdXBlcihzYik7CiAgICAgICAg ICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KdW5zaWduZWQg bG9uZyBnZW5lcmF0ZV9jbHVzdGVyKGtkZXZfdCwgaW50IGJbXSwgaW50KTsKdW5zaWduZWQgbG9u ZyBnZW5lcmF0ZV9jbHVzdGVyX3N3YWIzMihrZGV2X3QsIGludCBiW10sIGludCk7CmV4dGVybiBr ZGV2X3QgUk9PVF9ERVY7CmV4dGVybiBjaGFyIHJvb3RfZGV2aWNlX25hbWVbXTsKCgpleHRlcm4g dm9pZCBzaG93X2J1ZmZlcnModm9pZCk7CgoKCgoKZXh0ZXJuIHNzaXplX3QgY2hhcl9yZWFkKHN0 cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IGJs b2NrX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJu IGludCByZWFkX2FoZWFkW107CgpleHRlcm4gc3NpemVfdCBjaGFyX3dyaXRlKHN0cnVjdCBmaWxl ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IGJsb2Nr X3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7Cgpl eHRlcm4gaW50IGZpbGVfZnN5bmMoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQp OwpleHRlcm4gaW50IGdlbmVyaWNfYnVmZmVyX2ZkYXRhc3luYyhzdHJ1Y3QgaW5vZGUgKmlub2Rl LCB1bnNpZ25lZCBsb25nIHN0YXJ0X2lkeCwgdW5zaWduZWQgbG9uZyBlbmRfaWR4KTsKZXh0ZXJu IGludCBnZW5lcmljX29zeW5jX2lub2RlKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwoKCgoKZXh0ZXJu IGludCBpbm9kZV9jaGFuZ2Vfb2soc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0ciAqKTsKZXh0 ZXJuIGludCBpbm9kZV9zZXRhdHRyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaWF0dHIgKik7CiMg MTUyNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlu bGluZSBzdHJ1Y3QgZGVudHJ5ICpsb2NrX3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsK ICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkaXIgPSBkZ2V0KGRlbnRyeS0+ZF9wYXJlbnQpOwoKICAg ICAgICBkb3duKCZkaXItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICByZXR1cm4gZGlyOwp9Cgpz dGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKmdldF9wYXJlbnQoc3RydWN0IGRlbnRyeSAqZGVu dHJ5KQp7CiAgICAgICAgcmV0dXJuIGRnZXQoZGVudHJ5LT5kX3BhcmVudCk7Cn0KCnN0YXRpYyBp bmxpbmUgdm9pZCB1bmxvY2tfZGlyKHN0cnVjdCBkZW50cnkgKmRpcikKewogICAgICAgIHVwKCZk aXItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICBkcHV0KGRpcik7Cn0KCgoKCgpzdGF0aWMgaW5s aW5lIHZvaWQgZG91YmxlX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsIHN0cnVjdCBzZW1hcGhv cmUgKnMyKQp7CiAgICAgICAgaWYgKHMxICE9IHMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHVu c2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMyOwogICAgICAgICAgICAgICAgICAgICAg ICBzMiA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRv d24oczEpOwogICAgICAgIH0KICAgICAgICBkb3duKHMyKTsKfQojIDE1NzAgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVf ZG93bihzdHJ1Y3Qgc2VtYXBob3JlICpzMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHNlbWFwaG9yZSAqczMpCnsKICAgICAgICBpZiAoczEgIT0gczIpIHsKICAgICAgICAgICAg ICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczIpIHsKICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25n KSBzMykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg KnRtcCA9IHMzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gczE7IHMxID0g dG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlm ICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMjsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gczE7IHMxID0gdG1wOwogICAgICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9u ZykgczIgPCAodW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzMyA9IHMyOyBzMiA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZG93bihzMSk7CiAgICAgICAgfSBlbHNlIGlm ICgodW5zaWduZWQgbG9uZykgczIgPCAodW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAg ICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAgICAgczMgPSBzMjsg czIgPSB0bXA7CiAgICAgICAgfQogICAgICAgIGRvd24oczIpOwogICAgICAgIGRvd24oczMpOwp9 CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91YmxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLCBzdHJ1 Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAgIHVwKHMxKTsKICAgICAgICBpZiAoczEgIT0gczIp CiAgICAgICAgICAgICAgICB1cChzMik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVfdXAo c3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHNlbWFwaG9yZSAqczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFw aG9yZSAqczMpCnsKICAgICAgICB1cChzMSk7CiAgICAgICAgaWYgKHMxICE9IHMyKQogICAgICAg ICAgICAgICAgdXAoczIpOwogICAgICAgIHVwKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRv dWJsZV9sb2NrKHN0cnVjdCBkZW50cnkgKmQxLCBzdHJ1Y3QgZGVudHJ5ICpkMikKewogICAgICAg IGRvdWJsZV9kb3duKCZkMS0+ZF9pbm9kZS0+aV9zZW0sICZkMi0+ZF9pbm9kZS0+aV9zZW0pOwp9 CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91YmxlX3VubG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3Ry dWN0IGRlbnRyeSAqZDIpCnsKICAgICAgICBkb3VibGVfdXAoJmQxLT5kX2lub2RlLT5pX3NlbSwm ZDItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICBkcHV0KGQxKTsKICAgICAgICBkcHV0KGQyKTsK fQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5Lmgi IDIKIyAzMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5o Igp0eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2hlYWRlcl9zdHJ1Y3QgewogICAgICAgIF9fdTMy IHZlcnNpb247CiAgICAgICAgaW50IHBpZDsKfSAqY2FwX3VzZXJfaGVhZGVyX3Q7Cgp0eXBlZGVm IHN0cnVjdCBfX3VzZXJfY2FwX2RhdGFfc3RydWN0IHsKICAgICAgICBfX3UzMiBlZmZlY3RpdmU7 CiAgICAgICAgX191MzIgcGVybWl0dGVkOwogICAgICAgIF9fdTMyIGluaGVyaXRhYmxlOwp9ICpj YXBfdXNlcl9kYXRhX3Q7CiMgNTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4 L2NhcGFiaWxpdHkuaCIKdHlwZWRlZiBfX3UzMiBrZXJuZWxfY2FwX3Q7CiMgMjg2ICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCmV4dGVybiBrZXJuZWxf Y2FwX3QgY2FwX2JzZXQ7CiMgMzE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC9jYXBhYmlsaXR5LmgiCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9jb21iaW5lKGtl cm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgYikKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0Owog ICAgIChkZXN0KSA9IChhKSB8IChiKTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGlu ZSBrZXJuZWxfY2FwX3QgY2FwX2ludGVyc2VjdChrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90 IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgJiAoYik7CiAg ICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9kcm9wKGtl cm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgZHJvcCkKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0 OwogICAgIChkZXN0KSA9IChhKSAmIH4oZHJvcCk7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRp YyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9pbnZlcnQoa2VybmVsX2NhcF90IGMpCnsKICAgICBr ZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSB+KGMpOwogICAgIHJldHVybiBkZXN0Owp9 CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMg MjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIKc3RydWN0 IGxpbnV4X2JpbnBybXsKICAgICAgICBjaGFyIGJ1ZlsxMjhdOwogICAgICAgIHN0cnVjdCBwYWdl ICpwYWdlWzMyXTsKICAgICAgICB1bnNpZ25lZCBsb25nIHA7CiAgICAgICAgaW50IHNoX2Jhbmc7 CiAgICAgICAgc3RydWN0IGZpbGUgKiBmaWxlOwogICAgICAgIGludCBlX3VpZCwgZV9naWQ7CiAg ICAgICAga2VybmVsX2NhcF90IGNhcF9pbmhlcml0YWJsZSwgY2FwX3Blcm1pdHRlZCwgY2FwX2Vm ZmVjdGl2ZTsKICAgICAgICBpbnQgYXJnYywgZW52YzsKICAgICAgICBjaGFyICogZmlsZW5hbWU7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb2FkZXIsIGV4ZWM7Cn07CgoKCgoKc3RydWN0IGxpbnV4 X2JpbmZtdCB7CiAgICAgICAgc3RydWN0IGxpbnV4X2JpbmZtdCAqIG5leHQ7CiAgICAgICAgc3Ry dWN0IG1vZHVsZSAqbW9kdWxlOwogICAgICAgIGludCAoKmxvYWRfYmluYXJ5KShzdHJ1Y3QgbGlu dXhfYmlucHJtICosIHN0cnVjdCBwdF9yZWdzICogcmVncyk7CiAgICAgICAgaW50ICgqbG9hZF9z aGxpYikoc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqY29yZV9kdW1wKShsb25nIHNpZ25y LCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MsIHN0cnVjdCBmaWxlICogZmlsZSk7CiAgICAgICAgdW5z aWduZWQgbG9uZyBtaW5fY29yZWR1bXA7Cn07CgpleHRlcm4gaW50IHJlZ2lzdGVyX2JpbmZtdChz dHJ1Y3QgbGludXhfYmluZm10ICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfYmluZm10KHN0cnVj dCBsaW51eF9iaW5mbXQgKik7CgpleHRlcm4gaW50IHByZXBhcmVfYmlucHJtKHN0cnVjdCBsaW51 eF9iaW5wcm0gKik7CmV4dGVybiB2b2lkIHJlbW92ZV9hcmdfemVybyhzdHJ1Y3QgbGludXhfYmlu cHJtICopOwpleHRlcm4gaW50IHNlYXJjaF9iaW5hcnlfaGFuZGxlcihzdHJ1Y3QgbGludXhfYmlu cHJtICosc3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiBpbnQgZmx1c2hfb2xkX2V4ZWMoc3RydWN0 IGxpbnV4X2JpbnBybSAqIGJwcm0pOwpleHRlcm4gaW50IHNldHVwX2FyZ19wYWdlcyhzdHJ1Y3Qg bGludXhfYmlucHJtICogYnBybSk7CmV4dGVybiBpbnQgY29weV9zdHJpbmdzKGludCBhcmdjLGNo YXIgKiogYXJndixzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKTsKZXh0ZXJuIGludCBjb3B5X3N0 cmluZ3Nfa2VybmVsKGludCBhcmdjLGNoYXIgKiogYXJndixzdHJ1Y3QgbGludXhfYmlucHJtICpi cHJtKTsKZXh0ZXJuIHZvaWQgY29tcHV0ZV9jcmVkcyhzdHJ1Y3QgbGludXhfYmlucHJtICpiaW5w cm0pOwpleHRlcm4gaW50IGRvX2NvcmVkdW1wKGxvbmcgc2lnbnIsIHN0cnVjdCBwdF9yZWdzICog cmVncyk7CmV4dGVybiB2b2lkIHNldF9iaW5mbXQoc3RydWN0IGxpbnV4X2JpbmZtdCAqbmV3KTsK IyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKCgoj IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWVzLmgiIDEKCgoKc3Ry dWN0IHRtcyB7CiAgICAgICAgY2xvY2tfdCB0bXNfdXRpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNf c3RpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNfY3V0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX2Nz dGltZTsKfTsKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQu aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiIDEK IyAxNTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCiMgMSAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3RpbWV4LmgiIDEKIyAxMCAiL3Vzci9z cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3RpbWV4LmgiCiMgMSAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvYXNtL21zci5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p bmNsdWRlL2FzbS90aW1leC5oIiAyCiMgMzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl L2FzbS90aW1leC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBjeWNsZXNfdDsKCmV4dGVy biBjeWNsZXNfdCBjYWNoZWZsdXNoX3RpbWU7CgpzdGF0aWMgaW5saW5lIGN5Y2xlc190IGdldF9j eWNsZXMgKHZvaWQpCnsKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmV0OwoKICAgICAg ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmR0c2MiIDogIj1BIiAocmV0KSk7CiAgICAgICAgcmV0 dXJuIHJldDsKCn0KCmV4dGVybiB1bnNpZ25lZCBsb25nIGNwdV9raHo7CiMgMTUzICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1leC5oIiAyCiMgMTYxICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1leC5oIgpzdHJ1Y3QgdGltZXggewogICAgICAg IHVuc2lnbmVkIGludCBtb2RlczsKICAgICAgICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZy ZXE7CiAgICAgICAgbG9uZyBtYXhlcnJvcjsKICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAg IGludCBzdGF0dXM7CiAgICAgICAgbG9uZyBjb25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lv bjsKICAgICAgICBsb25nIHRvbGVyYW5jZTsKCgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7 CiAgICAgICAgbG9uZyB0aWNrOwoKICAgICAgICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBq aXR0ZXI7CiAgICAgICAgaW50IHNoaWZ0OwogICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxv bmcgaml0Y250OwogICAgICAgIGxvbmcgY2FsY250OwogICAgICAgIGxvbmcgZXJyY250OwogICAg ICAgIGxvbmcgc3RiY250OwoKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQg OjMyOwogICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAg aW50IDozMjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKfTsKIyAyNTMgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCmV4dGVybiBsb25nIHRpY2s7CmV4dGVy biBpbnQgdGlja2FkajsKCgoKCmV4dGVybiBpbnQgdGltZV9zdGF0ZTsKZXh0ZXJuIGludCB0aW1l X3N0YXR1czsKZXh0ZXJuIGxvbmcgdGltZV9vZmZzZXQ7CmV4dGVybiBsb25nIHRpbWVfY29uc3Rh bnQ7CmV4dGVybiBsb25nIHRpbWVfdG9sZXJhbmNlOwpleHRlcm4gbG9uZyB0aW1lX3ByZWNpc2lv bjsKZXh0ZXJuIGxvbmcgdGltZV9tYXhlcnJvcjsKZXh0ZXJuIGxvbmcgdGltZV9lc3RlcnJvcjsK CmV4dGVybiBsb25nIHRpbWVfcGhhc2U7CmV4dGVybiBsb25nIHRpbWVfZnJlcTsKZXh0ZXJuIGxv bmcgdGltZV9hZGo7CmV4dGVybiBsb25nIHRpbWVfcmVmdGltZTsKCmV4dGVybiBsb25nIHRpbWVf YWRqdXN0OwoKCmV4dGVybiBsb25nIHBwc19vZmZzZXQ7CmV4dGVybiBsb25nIHBwc19qaXR0ZXI7 CmV4dGVybiBsb25nIHBwc19mcmVxOwpleHRlcm4gbG9uZyBwcHNfc3RhYmlsOwpleHRlcm4gbG9u ZyBwcHNfdmFsaWQ7CgoKZXh0ZXJuIGludCBwcHNfc2hpZnQ7CmV4dGVybiBsb25nIHBwc19qaXRj bnQ7CmV4dGVybiBsb25nIHBwc19jYWxjbnQ7CmV4dGVybiBsb25nIHBwc19lcnJjbnQ7CmV4dGVy biBsb25nIHBwc19zdGJjbnQ7CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp bnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9y YnRyZWUuaCIgMQojIDEwMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcmJ0 cmVlLmgiCnR5cGVkZWYgc3RydWN0IHJiX25vZGVfcwp7CiAgICAgICAgc3RydWN0IHJiX25vZGVf cyAqIHJiX3BhcmVudDsKICAgICAgICBpbnQgcmJfY29sb3I7CgoKICAgICAgICBzdHJ1Y3QgcmJf bm9kZV9zICogcmJfcmlnaHQ7CiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX2xlZnQ7Cn0K cmJfbm9kZV90OwoKdHlwZWRlZiBzdHJ1Y3QgcmJfcm9vdF9zCnsKICAgICAgICBzdHJ1Y3QgcmJf bm9kZV9zICogcmJfbm9kZTsKfQpyYl9yb290X3Q7CgoKCgoKZXh0ZXJuIHZvaWQgcmJfaW5zZXJ0 X2NvbG9yKHJiX25vZGVfdCAqLCByYl9yb290X3QgKik7CmV4dGVybiB2b2lkIHJiX2VyYXNlKHJi X25vZGVfdCAqLCByYl9yb290X3QgKik7CgpzdGF0aWMgaW5saW5lIHZvaWQgcmJfbGlua19ub2Rl KHJiX25vZGVfdCAqIG5vZGUsIHJiX25vZGVfdCAqIHBhcmVudCwgcmJfbm9kZV90ICoqIHJiX2xp bmspCnsKICAgICAgICBub2RlLT5yYl9wYXJlbnQgPSBwYXJlbnQ7CiAgICAgICAgbm9kZS0+cmJf Y29sb3IgPSAwOwogICAgICAgIG5vZGUtPnJiX2xlZnQgPSBub2RlLT5yYl9yaWdodCA9ICgodm9p ZCAqKTApOwoKICAgICAgICAqcmJfbGluayA9IG5vZGU7Cn0KIyAxNiAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvYXNtL21tdS5oIiAxCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAg ICAgdm9pZCAqc2VnbWVudHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHV2YWxpZDsKfSBtbV9j b250ZXh0X3Q7CiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVk LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc21wLmgiIDEK IyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEg Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAxCiMgMjEgIi91c3Iv c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4 LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21ham9yLmgiIDEKIyAxODAgIi91c3Ivc3JjL2xpbnV4LTIu NC4yMC9pbmNsdWRlL2xpbnV4L21ham9yLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBzY3NpX2Js a19tYWpvcihpbnQgbSkgewogICAgICAgIHJldHVybiAoKChtKSA9PSA4IHx8ICgobSkgPj0gNjUg JiYgKG0pIDw9IDcxKSkgfHwgKG0pID09IDExKTsKfQojIDE5MyAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvbGludXgvbWFqb3IuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGlkZV9ibGtf bWFqb3IoaW50IG0pCnsKICAgICAgICByZXR1cm4gKChtKSA9PSAzIHx8IChtKSA9PSAyMiB8fCAo bSkgPT0gMzMgfHwgKG0pID09IDM0IHx8IChtKSA9PSA1NiB8fCAobSkgPT0gNTcgfHwgKG0pID09 IDg4IHx8IChtKSA9PSA4OSB8fCAobSkgPT0gOTAgfHwgKG0pID09IDkxKTsKfQojIDIyICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaCIgMQoKCgoKIyAxICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdGVybWlvcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGlu dXgtMi40LjIwL2luY2x1ZGUvYXNtL3Rlcm1iaXRzLmgiIDEKCgoKCgp0eXBlZGVmIHVuc2lnbmVk IGNoYXIgY2NfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc3BlZWRfdDsKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgdGNmbGFnX3Q7CgoKc3RydWN0IHRlcm1pb3MgewogICAgICAgIHRjZmxhZ190IGNfaWZs YWc7CiAgICAgICAgdGNmbGFnX3QgY19vZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX2NmbGFnOwog ICAgICAgIHRjZmxhZ190IGNfbGZsYWc7CiAgICAgICAgY2NfdCBjX2xpbmU7CiAgICAgICAgY2Nf dCBjX2NjWzE5XTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdGVy bWlvcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2lvY3Rscy5o IiAxCiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Rlcm1pb3MuaCIgMgoK c3RydWN0IHdpbnNpemUgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3JvdzsKICAgICAgICB1 bnNpZ25lZCBzaG9ydCB3c19jb2w7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3NfeHBpeGVsOwog ICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3lwaXhlbDsKfTsKCgpzdHJ1Y3QgdGVybWlvIHsKICAg ICAgICB1bnNpZ25lZCBzaG9ydCBjX2lmbGFnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfb2Zs YWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY19jZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9y dCBjX2xmbGFnOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY19saW5lOwogICAgICAgIHVuc2lnbmVk IGNoYXIgY19jY1s4XTsKfTsKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC90ZXJtaW9zLmgiIDIKIyAyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv dHR5LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5X2Ry aXZlci5oIiAxCiMgMTIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90dHlf ZHJpdmVyLmgiCnN0cnVjdCB0dHlfZHJpdmVyIHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAg Y29uc3QgY2hhciAqZHJpdmVyX25hbWU7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAg ICBpbnQgbmFtZV9iYXNlOwogICAgICAgIHNob3J0IG1ham9yOwogICAgICAgIHNob3J0IG1pbm9y X3N0YXJ0OwogICAgICAgIHNob3J0IG51bTsKICAgICAgICBzaG9ydCB0eXBlOwogICAgICAgIHNo b3J0IHN1YnR5cGU7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgaW5pdF90ZXJtaW9zOwogICAgICAg IGludCBmbGFnczsKICAgICAgICBpbnQgKnJlZmNvdW50OwogICAgICAgIHN0cnVjdCBwcm9jX2Rp cl9lbnRyeSAqcHJvY19lbnRyeTsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqb3RoZXI7CgoK CgogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICoqdGFibGU7CiAgICAgICAgc3RydWN0IHRlcm1p b3MgKip0ZXJtaW9zOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVybWlvc19sb2NrZWQ7CiAg ICAgICAgdm9pZCAqZHJpdmVyX3N0YXRlOwoKCgoKCiAgICAgICAgaW50ICgqb3Blbikoc3RydWN0 IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAgICAgdm9pZCAoKmNs b3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKICAgICAg ICBpbnQgKCp3cml0ZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIGludCBmcm9tX3VzZXIsCiAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBjb3VudCk7 CiAgICAgICAgdm9pZCAoKnB1dF9jaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCB1bnNpZ25l ZCBjaGFyIGNoKTsKICAgICAgICB2b2lkICgqZmx1c2hfY2hhcnMpKHN0cnVjdCB0dHlfc3RydWN0 ICp0dHkpOwogICAgICAgIGludCAoKndyaXRlX3Jvb20pKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkp OwogICAgICAgIGludCAoKmNoYXJzX2luX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7 CiAgICAgICAgaW50ICgqaW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxl ICogZmlsZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs b25nIGFyZyk7CiAgICAgICAgdm9pZCAoKnNldF90ZXJtaW9zKShzdHJ1Y3QgdHR5X3N0cnVjdCAq dHR5LCBzdHJ1Y3QgdGVybWlvcyAqIG9sZCk7CiAgICAgICAgdm9pZCAoKnRocm90dGxlKShzdHJ1 Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CiAgICAgICAgdm9pZCAoKnVudGhyb3R0bGUpKHN0cnVjdCB0 dHlfc3RydWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqc3RvcCkoc3RydWN0IHR0eV9zdHJ1Y3Qg KnR0eSk7CiAgICAgICAgdm9pZCAoKnN0YXJ0KShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAg ICAgICB2b2lkICgqaGFuZ3VwKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lk ICgqYnJlYWtfY3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgc3RhdGUpOwogICAgICAg IHZvaWQgKCpmbHVzaF9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZv aWQgKCpzZXRfbGRpc2MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQgKCp3 YWl0X3VudGlsX3NlbnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCB0aW1lb3V0KTsKICAg ICAgICB2b2lkICgqc2VuZF94Y2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY2hhciBjaCk7 CiAgICAgICAgaW50ICgqcmVhZF9wcm9jKShjaGFyICpwYWdlLCBjaGFyICoqc3RhcnQsIG9mZl90 IG9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQsIGludCAqZW9mLCB2b2lk ICpkYXRhKTsKICAgICAgICBpbnQgKCp3cml0ZV9wcm9jKShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29u c3QgY2hhciAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg Y291bnQsIHZvaWQgKmRhdGEpOwoKCgoKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqbmV4dDsK ICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqcHJldjsKfTsKIyAyNSAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMQojIDEwMyAiL3Vzci9zcmMvbGludXgtMi40LjIw L2luY2x1ZGUvbGludXgvdHR5X2xkaXNjLmgiCnN0cnVjdCB0dHlfbGRpc2MgewogICAgICAgIGlu dCBtYWdpYzsKICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIGludCBudW07CiAgICAgICAgaW50 IGZsYWdzOwoKCgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAg ICAgIHZvaWQgKCpjbG9zZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKmZs dXNoX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKmNo YXJzX2luX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAo KnJlYWQpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVfdCBucik7CiAgICAg ICAgc3NpemVfdCAoKndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUg KiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqIGJ1 Ziwgc2l6ZV90IG5yKTsKICAgICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0 dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3Mp KHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB1 bnNpZ25lZCBpbnQgKCpwb2xsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBzdHJ1Y3QgZmlsZSAqLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsK CgoKCiAgICAgICAgdm9pZCAoKnJlY2VpdmVfYnVmKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBjb25z dCB1bnNpZ25lZCBjaGFyICpjcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg KmZwLCBpbnQgY291bnQpOwogICAgICAgIGludCAoKnJlY2VpdmVfcm9vbSkoc3RydWN0IHR0eV9z dHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKndyaXRlX3dha2V1cCkoc3RydWN0IHR0eV9zdHJ1Y3Qg Kik7Cn07CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAy CiMgNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIgpzdHJ1Y3Qg c2NyZWVuX2luZm8gewogICAgICAgIHU4IG9yaWdfeDsKICAgICAgICB1OCBvcmlnX3k7CiAgICAg ICAgdTE2IGRvbnR1c2UxOwogICAgICAgIHUxNiBvcmlnX3ZpZGVvX3BhZ2U7CiAgICAgICAgdTgg b3JpZ192aWRlb19tb2RlOwogICAgICAgIHU4IG9yaWdfdmlkZW9fY29sczsKICAgICAgICB1MTYg dW51c2VkMjsKICAgICAgICB1MTYgb3JpZ192aWRlb19lZ2FfYng7CiAgICAgICAgdTE2IHVudXNl ZDM7CiAgICAgICAgdTggb3JpZ192aWRlb19saW5lczsKICAgICAgICB1OCBvcmlnX3ZpZGVvX2lz VkdBOwogICAgICAgIHUxNiBvcmlnX3ZpZGVvX3BvaW50czsKCgogICAgICAgIHUxNiBsZmJfd2lk dGg7CiAgICAgICAgdTE2IGxmYl9oZWlnaHQ7CiAgICAgICAgdTE2IGxmYl9kZXB0aDsKICAgICAg ICB1MzIgbGZiX2Jhc2U7CiAgICAgICAgdTMyIGxmYl9zaXplOwogICAgICAgIHUxNiBkb250dXNl MiwgZG9udHVzZTM7CiAgICAgICAgdTE2IGxmYl9saW5lbGVuZ3RoOwogICAgICAgIHU4IHJlZF9z aXplOwogICAgICAgIHU4IHJlZF9wb3M7CiAgICAgICAgdTggZ3JlZW5fc2l6ZTsKICAgICAgICB1 OCBncmVlbl9wb3M7CiAgICAgICAgdTggYmx1ZV9zaXplOwogICAgICAgIHU4IGJsdWVfcG9zOwog ICAgICAgIHU4IHJzdmRfc2l6ZTsKICAgICAgICB1OCByc3ZkX3BvczsKICAgICAgICB1MTYgdmVz YXBtX3NlZzsKICAgICAgICB1MTYgdmVzYXBtX29mZjsKICAgICAgICB1MTYgcGFnZXM7Cgp9OwoK ZXh0ZXJuIHN0cnVjdCBzY3JlZW5faW5mbyBzY3JlZW5faW5mbzsKIyAxMzkgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIgpzdHJ1Y3QgdHR5X2ZsaXBfYnVmZmVyIHsK ICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0IHRxdWV1ZTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3Jl IHB0eV9zZW07CiAgICAgICAgY2hhciAqY2hhcl9idWZfcHRyOwogICAgICAgIHVuc2lnbmVkIGNo YXIgKmZsYWdfYnVmX3B0cjsKICAgICAgICBpbnQgY291bnQ7CiAgICAgICAgaW50IGJ1Zl9udW07 CiAgICAgICAgdW5zaWduZWQgY2hhciBjaGFyX2J1ZlsyKjUxMl07CiAgICAgICAgY2hhciBmbGFn X2J1ZlsyKjUxMl07CiAgICAgICAgdW5zaWduZWQgY2hhciBzbG9wWzRdOwp9OwojIDI1OSAiL3Vz ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCB0dHlfc3RydWN0 IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgZHJpdmVyOwog ICAgICAgIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2M7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgKnRl cm1pb3MsICp0ZXJtaW9zX2xvY2tlZDsKICAgICAgICBpbnQgcGdycDsKICAgICAgICBpbnQgc2Vz c2lvbjsKICAgICAgICBrZGV2X3QgZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7 CiAgICAgICAgaW50IGNvdW50OwogICAgICAgIHN0cnVjdCB3aW5zaXplIHdpbnNpemU7CiAgICAg ICAgdW5zaWduZWQgY2hhciBzdG9wcGVkOjEsIGh3X3N0b3BwZWQ6MSwgZmxvd19zdG9wcGVkOjEs IHBhY2tldDoxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG93X2xhdGVuY3k6MSwgd2FybmVkOjE7 CiAgICAgICAgdW5zaWduZWQgY2hhciBjdHJsX3N0YXR1czsKCiAgICAgICAgc3RydWN0IHR0eV9z dHJ1Y3QgKmxpbms7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luYzsKICAgICAg ICBzdHJ1Y3QgdHR5X2ZsaXBfYnVmZmVyIGZsaXA7CiAgICAgICAgaW50IG1heF9mbGlwX2NudDsK ICAgICAgICBpbnQgYWx0X3NwZWVkOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdyaXRlX3dh aXQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgcmVhZF93YWl0OwogICAgICAgIHN0cnVjdCB0 cV9zdHJ1Y3QgdHFfaGFuZ3VwOwogICAgICAgIHZvaWQgKmRpc2NfZGF0YTsKICAgICAgICB2b2lk ICpkcml2ZXJfZGF0YTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHR0eV9maWxlczsKCgoKCgoK CiAgICAgICAgdW5zaWduZWQgaW50IGNvbHVtbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGxuZXh0 OjEsIGVyYXNpbmc6MSwgcmF3OjEsIHJlYWxfcmF3OjEsIGljYW5vbjoxOwogICAgICAgIHVuc2ln bmVkIGNoYXIgY2xvc2luZzoxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1pbmltdW1fdG9fd2Fr ZTsKICAgICAgICB1bnNpZ25lZCBvdmVycnVuX3RpbWU7CiAgICAgICAgaW50IG51bV9vdmVycnVu OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJvY2Vzc19jaGFyX21hcFsyNTYvKDgqc2l6ZW9mKHVu c2lnbmVkIGxvbmcpKV07CiAgICAgICAgY2hhciAqcmVhZF9idWY7CiAgICAgICAgaW50IHJlYWRf aGVhZDsKICAgICAgICBpbnQgcmVhZF90YWlsOwogICAgICAgIGludCByZWFkX2NudDsKICAgICAg ICB1bnNpZ25lZCBsb25nIHJlYWRfZmxhZ3NbNDA5Ni8oOCpzaXplb2YodW5zaWduZWQgbG9uZykp XTsKICAgICAgICBpbnQgY2Fub25fZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIGNhbm9uX2hl YWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNhbm9uX2NvbHVtbjsKICAgICAgICBzdHJ1Y3Qgc2Vt YXBob3JlIGF0b21pY19yZWFkOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgYXRvbWljX3dyaXRl OwogICAgICAgIHNwaW5sb2NrX3QgcmVhZF9sb2NrOwoKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0 IFNBS190cTsKfTsKIyAzNDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0 eS5oIgpleHRlcm4gdm9pZCB0dHlfd3JpdGVfZmx1c2goc3RydWN0IHR0eV9zdHJ1Y3QgKik7Cgpl eHRlcm4gc3RydWN0IHRlcm1pb3MgdHR5X3N0ZF90ZXJtaW9zOwpleHRlcm4gc3RydWN0IHR0eV9z dHJ1Y3QgKiByZWRpcmVjdDsKZXh0ZXJuIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2NzW107CmV4dGVy biBpbnQgZmdfY29uc29sZSwgbGFzdF9jb25zb2xlLCB3YW50X2NvbnNvbGU7CgpleHRlcm4gaW50 IGttc2dfcmVkaXJlY3Q7CgpleHRlcm4gdm9pZCBjb25faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQg Y29uc29sZV9pbml0KHZvaWQpOwoKZXh0ZXJuIGludCBscF9pbml0KHZvaWQpOwpleHRlcm4gaW50 IHB0eV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCB0dHlfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBt eHNlcl9pbml0KHZvaWQpOwpleHRlcm4gaW50IG1veGFfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBp cDJfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwY3hlX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcGNf aW5pdCh2b2lkKTsKZXh0ZXJuIGludCB2Y3NfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBycF9pbml0 KHZvaWQpOwpleHRlcm4gaW50IGN5X2luaXQodm9pZCk7CmV4dGVybiBpbnQgc3RsX2luaXQodm9p ZCk7CmV4dGVybiBpbnQgc3RsaV9pbml0KHZvaWQpOwpleHRlcm4gaW50IHNwZWNpYWxpeF9pbml0 KHZvaWQpOwpleHRlcm4gaW50IGVzcHNlcmlhbF9pbml0KHZvaWQpOwpleHRlcm4gaW50IG1hY3Nl cmlhbF9pbml0KHZvaWQpOwpleHRlcm4gaW50IGEyMjMyYm9hcmRfaW5pdCh2b2lkKTsKCmV4dGVy biBpbnQgdHR5X3BhcmFub2lhX2NoZWNrKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGtkZXZfdCBk ZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJvdXRpbmUp OwpleHRlcm4gY2hhciAqdHR5X25hbWUoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY2hhciAqYnVm KTsKZXh0ZXJuIHZvaWQgdHR5X3dhaXRfdW50aWxfc2VudChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0 eSwgbG9uZyB0aW1lb3V0KTsKZXh0ZXJuIGludCB0dHlfY2hlY2tfY2hhbmdlKHN0cnVjdCB0dHlf c3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3RvcF90dHkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0 dHkpOwpleHRlcm4gdm9pZCBzdGFydF90dHkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRl cm4gaW50IHR0eV9yZWdpc3Rlcl9sZGlzYyhpbnQgZGlzYywgc3RydWN0IHR0eV9sZGlzYyAqbmV3 X2xkaXNjKTsKZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0dHlfZHJpdmVy ICpkcml2ZXIpOwpleHRlcm4gaW50IHR0eV91bnJlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdHR5X2Ry aXZlciAqZHJpdmVyKTsKZXh0ZXJuIHZvaWQgdHR5X3JlZ2lzdGVyX2RldmZzIChzdHJ1Y3QgdHR5 X2RyaXZlciAqZHJpdmVyLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbWlub3IpOwpleHRlcm4gdm9pZCB0dHlfdW5yZWdpc3Rlcl9k ZXZmcyAoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwgdW5zaWduZWQgbWlub3IpOwpleHRlcm4g aW50IHR0eV9yZWFkX3Jhd19kYXRhKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNo YXIgKmJ1ZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1Zmxlbik7CmV4dGVy biB2b2lkIHR0eV93cml0ZV9tZXNzYWdlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgKm1z Zyk7CgpleHRlcm4gaW50IGlzX29ycGhhbmVkX3BncnAoaW50IHBncnApOwpleHRlcm4gaW50IGlz X2lnbm9yZWQoaW50IHNpZyk7CmV4dGVybiBpbnQgdHR5X3NpZ25hbChpbnQgc2lnLCBzdHJ1Y3Qg dHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZvaWQgdHR5X2hhbmd1cChzdHJ1Y3QgdHR5X3N0cnVj dCAqIHR0eSk7CmV4dGVybiB2b2lkIHR0eV92aGFuZ3VwKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5 KTsKZXh0ZXJuIHZvaWQgdHR5X3VuaGFuZ3VwKHN0cnVjdCBmaWxlICpmaWxwKTsKZXh0ZXJuIGlu dCB0dHlfaHVuZ191cF9wKHN0cnVjdCBmaWxlICogZmlscCk7CmV4dGVybiB2b2lkIGRvX1NBSyhz dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZvaWQgZGlzYXNzb2NpYXRlX2N0dHkoaW50 IHByaXYpOwpleHRlcm4gdm9pZCB0dHlfZmxpcF9idWZmZXJfcHVzaChzdHJ1Y3QgdHR5X3N0cnVj dCAqdHR5KTsKZXh0ZXJuIGludCB0dHlfZ2V0X2JhdWRfcmF0ZShzdHJ1Y3QgdHR5X3N0cnVjdCAq dHR5KTsKCgpleHRlcm4gc3RydWN0IHR0eV9sZGlzYyB0dHlfbGRpc2NfTl9UVFk7CgoKZXh0ZXJu IGludCBuX3R0eV9pb2N0bChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBm aWxlLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxv bmcgYXJnKTsKCgoKZXh0ZXJuIHZvaWQgc2VyaWFsX2NvbnNvbGVfaW5pdCh2b2lkKTsKCgoKZXh0 ZXJuIGludCBwY3hlX29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZp bHApOwoKCgpleHRlcm4gdm9pZCBjb25zb2xlX3ByaW50KGNvbnN0IGNoYXIgKik7CgoKCmV4dGVy biBpbnQgdnRfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBmaWxl LAogICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJn KTsKIyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoj IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NlbS5oIiAxCgoKCiMgMSAi L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaXBjLmgiIDEKIyA5ICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pcGMuaCIKc3RydWN0IGlwY19wZXJtCnsKICAg ICAgICBfX2tlcm5lbF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlkOwogICAg ICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF91aWRfdCBjdWlkOwogICAg ICAgIF9fa2VybmVsX2dpZF90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IG1vZGU7CiAg ICAgICAgdW5zaWduZWQgc2hvcnQgc2VxOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw L2luY2x1ZGUvYXNtL2lwY2J1Zi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs dWRlL2FzbS9pcGNidWYuaCIKc3RydWN0IGlwYzY0X3Blcm0KewogICAgICAgIF9fa2VybmVsX2tl eV90IGtleTsKICAgICAgICBfX2tlcm5lbF91aWQzMl90IHVpZDsKICAgICAgICBfX2tlcm5lbF9n aWQzMl90IGdpZDsKICAgICAgICBfX2tlcm5lbF91aWQzMl90IGN1aWQ7CiAgICAgICAgX19rZXJu ZWxfZ2lkMzJfdCBjZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBtb2RlOwogICAgICAgIHVu c2lnbmVkIHNob3J0IF9fcGFkMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZXE7CiAgICAgICAg dW5zaWduZWQgc2hvcnQgX19wYWQyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQyOwp9OwojIDIyICIvdXNyL3NyYy9saW51eC0y LjQuMjAvaW5jbHVkZS9saW51eC9pcGMuaCIgMgojIDU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9saW51eC9pcGMuaCIKc3RydWN0IGtlcm5faXBjX3Blcm0KewogICAgICAgIGtleV90 IGtleTsKICAgICAgICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIHVpZF90 IGN1aWQ7CiAgICAgICAgZ2lkX3QgY2dpZDsKICAgICAgICBtb2RlX3QgbW9kZTsKICAgICAgICB1 bnNpZ25lZCBsb25nIHNlcTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s aW51eC9zZW0uaCIgMgojIDIzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9z ZW0uaCIKc3RydWN0IHNlbWlkX2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gc2VtX3Blcm07 CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICBfX2tlcm5lbF90aW1l X3Qgc2VtX2N0aW1lOwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogICAgICAgIHN0cnVj dCBzZW1fcXVldWUgKnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKipzZW1f cGVuZGluZ19sYXN0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKICAgICAgICB1bnNp Z25lZCBzaG9ydCBzZW1fbnNlbXM7Cn07CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9hc20vc2VtYnVmLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv YXNtL3NlbWJ1Zi5oIgpzdHJ1Y3Qgc2VtaWQ2NF9kcyB7CiAgICAgICAgc3RydWN0IGlwYzY0X3Bl cm0gc2VtX3Blcm07CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICB1 bnNpZ25lZCBsb25nIF9fdW51c2VkMTsKICAgICAgICBfX2tlcm5lbF90aW1lX3Qgc2VtX2N0aW1l OwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQyOwogICAgICAgIHVuc2lnbmVkIGxvbmcg c2VtX25zZW1zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAgICAgIHVuc2ln bmVkIGxvbmcgX191bnVzZWQ0Owp9OwojIDM2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC9zZW0uaCIgMgoKCnN0cnVjdCBzZW1idWYgewogICAgICAgIHVuc2lnbmVkIHNob3J0 IHNlbV9udW07CiAgICAgICAgc2hvcnQgc2VtX29wOwogICAgICAgIHNob3J0IHNlbV9mbGc7Cn07 CgoKdW5pb24gc2VtdW4gewogICAgICAgIGludCB2YWw7CiAgICAgICAgc3RydWN0IHNlbWlkX2Rz ICpidWY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKmFycmF5OwogICAgICAgIHN0cnVjdCBzZW1p bmZvICpfX2J1ZjsKICAgICAgICB2b2lkICpfX3BhZDsKfTsKCnN0cnVjdCBzZW1pbmZvIHsKICAg ICAgICBpbnQgc2VtbWFwOwogICAgICAgIGludCBzZW1tbmk7CiAgICAgICAgaW50IHNlbW1uczsK ICAgICAgICBpbnQgc2VtbW51OwogICAgICAgIGludCBzZW1tc2w7CiAgICAgICAgaW50IHNlbW9w bTsKICAgICAgICBpbnQgc2VtdW1lOwogICAgICAgIGludCBzZW11c3o7CiAgICAgICAgaW50IHNl bXZteDsKICAgICAgICBpbnQgc2VtYWVtOwp9OwojIDgyICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9saW51eC9zZW0uaCIKc3RydWN0IHNlbSB7CiAgICAgICAgaW50IHNlbXZhbDsKICAg ICAgICBpbnQgc2VtcGlkOwp9OwoKCnN0cnVjdCBzZW1fYXJyYXkgewogICAgICAgIHN0cnVjdCBr ZXJuX2lwY19wZXJtIHNlbV9wZXJtOwogICAgICAgIHRpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAg dGltZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBz dHJ1Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoq c2VtX3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAg dW5zaWduZWQgbG9uZyBzZW1fbnNlbXM7Cn07CgoKc3RydWN0IHNlbV9xdWV1ZSB7CiAgICAgICAg c3RydWN0IHNlbV9xdWV1ZSAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqKiBwcmV2 OwogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCogc2xlZXBlcjsKICAgICAgICBzdHJ1Y3Qgc2Vt X3VuZG8gKiB1bmRvOwogICAgICAgIGludCBwaWQ7CiAgICAgICAgaW50IHN0YXR1czsKICAgICAg ICBzdHJ1Y3Qgc2VtX2FycmF5ICogc21hOwogICAgICAgIGludCBpZDsKICAgICAgICBzdHJ1Y3Qg c2VtYnVmICogc29wczsKICAgICAgICBpbnQgbnNvcHM7CiAgICAgICAgaW50IGFsdGVyOwp9OwoK CgoKc3RydWN0IHNlbV91bmRvIHsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBwcm9jX25leHQ7 CiAgICAgICAgc3RydWN0IHNlbV91bmRvICogaWRfbmV4dDsKICAgICAgICBpbnQgc2VtaWQ7CiAg ICAgICAgc2hvcnQgKiBzZW1hZGo7Cn07CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv bmcgc3lzX3NlbWdldCAoa2V5X3Qga2V5LCBpbnQgbnNlbXMsIGludCBzZW1mbGcpOwogX19hdHRy aWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NlbW9wIChpbnQgc2VtaWQsIHN0cnVjdCBz ZW1idWYgKnNvcHMsIHVuc2lnbmVkIG5zb3BzKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp KSBsb25nIHN5c19zZW1jdGwgKGludCBzZW1pZCwgaW50IHNlbW51bSwgaW50IGNtZCwgdW5pb24g c2VtdW4gYXJnKTsKIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2No ZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5o IiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAx CgoKCgoKCnN0cnVjdCBzaWdpbmZvOwojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBvbGRfc2lnc2V0X3Q7Cgp0eXBl ZGVmIHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWdbKDY0IC8gMzIpXTsKfSBzaWdz ZXRfdDsKIyAxMjkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zaWduYWwuaCIK dHlwZWRlZiB2b2lkICgqX19zaWdoYW5kbGVyX3QpKGludCk7CgoKCgoKCnN0cnVjdCBvbGRfc2ln YWN0aW9uIHsKICAgICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5kbGVyOwogICAgICAgIG9sZF9z aWdzZXRfdCBzYV9tYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FfZmxhZ3M7CiAgICAgICAg dm9pZCAoKnNhX3Jlc3RvcmVyKSh2b2lkKTsKfTsKCnN0cnVjdCBzaWdhY3Rpb24gewogICAgICAg IF9fc2lnaGFuZGxlcl90IHNhX2hhbmRsZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzYV9mbGFn czsKICAgICAgICB2b2lkICgqc2FfcmVzdG9yZXIpKHZvaWQpOwogICAgICAgIHNpZ3NldF90IHNh X21hc2s7Cn07CgpzdHJ1Y3Qga19zaWdhY3Rpb24gewogICAgICAgIHN0cnVjdCBzaWdhY3Rpb24g c2E7Cn07CiMgMTcxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc2lnbmFsLmgi CnR5cGVkZWYgc3RydWN0IHNpZ2FsdHN0YWNrIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAg ICBpbnQgc3NfZmxhZ3M7CiAgICAgICAgc2l6ZV90IHNzX3NpemU7Cn0gc3RhY2tfdDsKCgoKCgoK c3RhdGljIF9faW5saW5lX18gdm9pZCBzaWdhZGRzZXQoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcp CnsKICAgICAgICBfX2FzbV9fKCJidHNsICUxLCUwIiA6ICI9bSIoKnNldCkgOiAiSXIiKF9zaWcg LSAxKSA6ICJjYyIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNpZ2RlbHNldChzaWdzZXRf dCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIF9fYXNtX18oImJ0cmwgJTEsJTAiIDogIj1tIigq c2V0KSA6ICJJciIoX3NpZyAtIDEpIDogImNjIik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBf X2NvbnN0X3NpZ2lzbWVtYmVyKHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5z aWduZWQgbG9uZyBzaWcgPSBfc2lnIC0gMTsKICAgICAgICByZXR1cm4gMSAmIChzZXQtPnNpZ1tz aWcgLyAzMl0gPj4gKHNpZyAlIDMyKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2dlbl9z aWdpc21lbWJlcihzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIGludCByZXQ7CiAg ICAgICAgX19hc21fXygiYnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6 ICI9ciIocmV0KSA6ICJtIigqc2V0KSwgIklyIihfc2lnLTEpIDogImNjIik7CiAgICAgICAgcmV0 dXJuIHJldDsKfQojIDIxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NpZ25h bC5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgc2lnZmluZGlud29yZCh1bnNpZ25lZCBsb25nIHdv cmQpCnsKICAgICAgICBfX2FzbV9fKCJic2ZsICUxLCUwIiA6ICI9ciIod29yZCkgOiAicm0iKHdv cmQpIDogImNjIik7CiAgICAgICAgcmV0dXJuIHdvcmQ7Cn0KIyA1ICIvdXNyL3NyYy9saW51eC0y LjQuMjAvaW5jbHVkZS9saW51eC9zaWduYWwuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y MC9pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDEKCgoKCgoKCnR5cGVkZWYgdW5pb24gc2lndmFsIHsK ICAgICAgICBpbnQgc2l2YWxfaW50OwogICAgICAgIHZvaWQgKnNpdmFsX3B0cjsKfSBzaWd2YWxf dDsKCgoKCnR5cGVkZWYgc3RydWN0IHNpZ2luZm8gewogICAgICAgIGludCBzaV9zaWdubzsKICAg ICAgICBpbnQgc2lfZXJybm87CiAgICAgICAgaW50IHNpX2NvZGU7CgogICAgICAgIHVuaW9uIHsK ICAgICAgICAgICAgICAgIGludCBfcGFkWygoMTI4L3NpemVvZihpbnQpKSAtIDMpXTsKCgogICAg ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX3BpZDsK ICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAgICAgICAgIH0gX2tp bGw7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBfdGltZXIxOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg X3RpbWVyMjsKICAgICAgICAgICAgICAgIH0gX3RpbWVyOwoKCiAgICAgICAgICAgICAgICBzdHJ1 Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAgICAgICAgICAgICAg ICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBzaWd2YWxfdCBfc2ln dmFsOwogICAgICAgICAgICAgICAgfSBfcnQ7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg ICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAgICAgICAgICAgICAgICAg IHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfc3RhdHVzOwogICAgICAg ICAgICAgICAgICAgICAgICBjbG9ja190IF91dGltZTsKICAgICAgICAgICAgICAgICAgICAgICAg Y2xvY2tfdCBfc3RpbWU7CiAgICAgICAgICAgICAgICB9IF9zaWdjaGxkOwoKCiAgICAgICAgICAg ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfYWRkcjsKICAgICAg ICAgICAgICAgIH0gX3NpZ2ZhdWx0OwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg ICAgICAgICAgICAgICAgICBpbnQgX2JhbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBf ZmQ7CiAgICAgICAgICAgICAgICB9IF9zaWdwb2xsOwogICAgICAgIH0gX3NpZmllbGRzOwp9IHNp Z2luZm9fdDsKIyAyMDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zaWdpbmZv LmgiCnR5cGVkZWYgc3RydWN0IHNpZ2V2ZW50IHsKICAgICAgICBzaWd2YWxfdCBzaWdldl92YWx1 ZTsKICAgICAgICBpbnQgc2lnZXZfc2lnbm87CiAgICAgICAgaW50IHNpZ2V2X25vdGlmeTsKICAg ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgX3BhZFsoKDY0L3NpemVvZihpbnQpKSAt IDMpXTsKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICgqX2Z1bmN0aW9uKShzaWd2YWxfdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg Kl9hdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICB9IF9zaWdldl90aHJlYWQ7CiAgICAgICAgfSBf c2lnZXZfdW47Cn0gc2lnZXZlbnRfdDsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3Np Z2luZm8oc2lnaW5mb190ICp0bywgc2lnaW5mb190ICpmcm9tKQp7CiAgICAgICAgaWYgKGZyb20t PnNpX2NvZGUgPCAwKQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemVv ZihzaWdpbmZvX3QpKSA/IF9fY29uc3RhbnRfbWVtY3B5KCh0byksKGZyb20pLChzaXplb2Yoc2ln aW5mb190KSkpIDogX19tZW1jcHkoKHRvKSwoZnJvbSksKHNpemVvZihzaWdpbmZvX3QpKSkpOwog ICAgICAgIGVsc2UKCiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMypzaXpl b2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSA/IF9fY29uc3RhbnRf bWVtY3B5KCh0byksKGZyb20pLCgzKnNpemVvZihpbnQpICsgc2l6ZW9mKGZyb20tPl9zaWZpZWxk cy5fc2lnY2hsZCkpKSA6IF9fbWVtY3B5KCh0byksKGZyb20pLCgzKnNpemVvZihpbnQpICsgc2l6 ZW9mKGZyb20tPl9zaWZpZWxkcy5fc2lnY2hsZCkpKSk7Cn0KCmV4dGVybiBpbnQgY29weV9zaWdp bmZvX3RvX3VzZXIoc2lnaW5mb190ICp0bywgc2lnaW5mb190ICpmcm9tKTsKIyA2ICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zaWduYWwuaCIgMgoKCgoKCgpzdHJ1Y3Qgc2ln cXVldWUgewogICAgICAgIHN0cnVjdCBzaWdxdWV1ZSAqbmV4dDsKICAgICAgICBzaWdpbmZvX3Qg aW5mbzsKfTsKCnN0cnVjdCBzaWdwZW5kaW5nIHsKICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKmhl YWQsICoqdGFpbDsKICAgICAgICBzaWdzZXRfdCBzaWduYWw7Cn07CiMgMTA4ICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zaWduYWwuaCIKc3RhdGljIGlubGluZSB2b2lkIHNp Z29yc2V0cyhzaWdzZXRfdCAqciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpi KSB7IHVuc2lnbmVkIGxvbmcgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25l ZCBsb25nIGk7IGZvciAoaSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2ln WzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+ c2lnWzQqaSszXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0g Yi0+c2lnWzQqaSsyXTsgYjMgPSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkg fCAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpIHwgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAo KGEyKSB8IChiMikpOyByLT5zaWdbNCppKzNdID0gKChhMykgfCAoYjMpKTsgfSBzd2l0Y2ggKCg2 NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQq aSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2ln WzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjAp KTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpIHwgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSB8 IChiMikpOyBicmVhazsgY2FzZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQq aSsxXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0Kmkr MF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgfCAoYjEpKTsgYnJlYWs7 IGNhc2UgMTogYTAgPSBhLT5zaWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0 KmkrMF0gPSAoKGEwKSB8IChiMCkpOyBicmVhazsgfSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNp Z2FuZHNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBjb25zdCBzaWdzZXRfdCAq YikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMzsgdW5zaWdu ZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBhMCA9IGEtPnNp Z1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBhMyA9IGEt PnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9 IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2lnWzQqaSswXSA9ICgoYTAp ICYgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIChiMSkpOyByLT5zaWdbNCppKzJdID0g KChhMikgJiAoYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMpICYgKGIzKSk7IH0gc3dpdGNoICgo NjQgLyAzMikgJSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0 KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNp Z1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIw KSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikg JiAoYjIpKTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0 KmkrMV07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyByLT5zaWdbNCpp KzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIxKSk7IGJyZWFr OyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdbNCppKzBdOyByLT5zaWdb NCppKzBdID0gKChhMCkgJiAoYjApKTsgYnJlYWs7IH0gfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBz aWduYW5kc2V0cyhzaWdzZXRfdCAqciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90 ICpiKSB7IHVuc2lnbmVkIGxvbmcgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNp Z25lZCBsb25nIGk7IGZvciAoaSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+ c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0g YS0+c2lnWzQqaSszXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIy ID0gYi0+c2lnWzQqaSsyXTsgYjMgPSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChh MCkgJiB+KGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIH4oYjEpKTsgci0+c2lnWzQqaSsy XSA9ICgoYTIpICYgfihiMikpOyByLT5zaWdbNCppKzNdID0gKChhMykgJiB+KGIzKSk7IH0gc3dp dGNoICgoNjQgLyAzMikgJSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEt PnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9 IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTAp ICYgfihiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiB+KGIxKSk7IHItPnNpZ1s0KmkrMl0g PSAoKGEyKSAmIH4oYjIpKTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9 IGEtPnNpZ1s0KmkrMV07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBy LT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIH4o YjEpKTsgYnJlYWs7IGNhc2UgMTogYTAgPSBhLT5zaWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0Kmkr MF07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgYnJlYWs7IH0gfQojIDE0MCAiL3Vz ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiCnN0YXRpYyBpbmxpbmUg dm9pZCBzaWdub3RzZXQoc2lnc2V0X3QgKnNldCkgeyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9 IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IHNldC0+c2lnWzQqaSswXSA9ICh+KHNldC0+c2ln WzQqaSswXSkpOyBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQtPnNpZ1s0KmkrMV0pKTsgc2V0LT5z aWdbNCppKzJdID0gKH4oc2V0LT5zaWdbNCppKzJdKSk7IHNldC0+c2lnWzQqaSszXSA9ICh+KHNl dC0+c2lnWzQqaSszXSkpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IHNldC0+ c2lnWzQqaSsyXSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBjYXNlIDI6IHNldC0+c2lnWzQqaSsx XSA9ICh+KHNldC0+c2lnWzQqaSsxXSkpOyBjYXNlIDE6IHNldC0+c2lnWzQqaSswXSA9ICh+KHNl dC0+c2lnWzQqaSswXSkpOyB9IH0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdlbXB0eXNldChz aWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZh dWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRp bl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50 X21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6 ZW9mKHNpZ3NldF90KSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAx MDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkpIDogKF9fYnVp bHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX21lbXNldF9nZW5lcmljKCgo KHNldCkpKSwoKCgwKSkpLCgoKHNpemVvZihzaWdzZXRfdCkpKSkpIDogX19tZW1zZXRfZ2VuZXJp YygoKHNldCkpLCgoMCkpLCgoc2l6ZW9mKHNpZ3NldF90KSkpKSkpOwogICAgICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9IDA7CiAgICAgICAgY2FzZSAxOiBz ZXQtPnNpZ1swXSA9IDA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9Cn0KCnN0YXRp YyBpbmxpbmUgdm9pZCBzaWdmaWxsc2V0KHNpZ3NldF90ICpzZXQpCnsKICAgICAgICBzd2l0Y2gg KCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGlu X2NvbnN0YW50X3AoLTEpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3Qp KSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVM Kih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkgOiBfX2NvbnN0YW50 X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkpLCgo c2l6ZW9mKHNpZ3NldF90KSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihzaWdz ZXRfdCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoc2V0KSkpLCgoKC0xKSkpLCgoKHNpemVvZihz aWdzZXRfdCkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHNldCkpLCgoLTEpKSwoKHNpemVvZihz aWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0 LT5zaWdbMV0gPSAtMTsKICAgICAgICBjYXNlIDE6IHNldC0+c2lnWzBdID0gLTE7CiAgICAgICAg ICAgICAgICBicmVhazsKICAgICAgICB9Cn0KCmV4dGVybiBjaGFyICogcmVuZGVyX3NpZ3NldF90 KHNpZ3NldF90ICpzZXQsIGNoYXIgKmJ1ZmZlcik7CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdh ZGRzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNl dC0+c2lnWzBdIHw9IG1hc2s7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdkZWxzZXRtYXNrKHNp Z3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdICY9 IH5tYXNrOwp9CgpzdGF0aWMgaW5saW5lIGludCBzaWd0ZXN0c2V0bWFzayhzaWdzZXRfdCAqc2V0 LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICByZXR1cm4gKHNldC0+c2lnWzBdICYgbWFz aykgIT0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2luaXRzZXQoc2lnc2V0X3QgKnNldCwg dW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0LT5zaWdbMF0gPSBtYXNrOwogICAgICAg IHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIChf X2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxv bmcpKigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoJnNl dC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2Yo bG9uZykqKCg2NCAvIDMyKS0xKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCgmc2V0LT5zaWdb MV0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihsb25nKSoo KDY0IC8gMzIpLTEpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcpKigo NjQgLyAzMiktMSkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoJnNldC0+c2lnWzFdKSkpLCgoKDAp KSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygo KCZzZXQtPnNpZ1sxXSkpLCgoMCkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpKTsK ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAwOwog ICAgICAgIGNhc2UgMTogOwogICAgICAgIH0KfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2luaXRz ZXRpbnYoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0LT5z aWdbMF0gPSB+bWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1 bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoLTEpID8gKF9fYnVpbHRp bl9jb25zdGFudF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8gX19jb25zdGFudF9j X2FuZF9jb3VudF9tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWdu ZWQgY2hhcikoLTEpKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSA6IF9fY29uc3Rh bnRfY19tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh cikoLTEpKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSkgOiAoX19idWlsdGluX2Nv bnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX21lbXNldF9nZW5lcmlj KCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgtMSkpKSwoKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0x KSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoJnNldC0+c2lnWzFdKSksKCgtMSkpLCgoc2l6ZW9m KGxvbmcpKigoNjQgLyAzMiktMSkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg IGNhc2UgMjogc2V0LT5zaWdbMV0gPSAtMTsKICAgICAgICBjYXNlIDE6IDsKICAgICAgICB9Cn0K CgoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfc2lncGVuZGluZyhzdHJ1Y3Qgc2lncGVuZGluZyAq c2lnKQp7CiAgICAgICAgc2lnZW1wdHlzZXQoJnNpZy0+c2lnbmFsKTsKICAgICAgICBzaWctPmhl YWQgPSAoKHZvaWQgKikwKTsKICAgICAgICBzaWctPnRhaWwgPSAmc2lnLT5oZWFkOwp9CgpleHRl cm4gbG9uZyBkb19zaWdwZW5kaW5nKHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CiMgMjcgIi91c3Iv c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zZWN1cmViaXRzLmgiIDEKCgoKCgpleHRlcm4gdW5z aWduZWQgc2VjdXJlYml0czsKIyAyOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu dXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Zz X3N0cnVjdC5oIiAxCgoKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3Vu dDsKICAgICAgICByd2xvY2tfdCBsb2NrOwogICAgICAgIGludCB1bWFzazsKICAgICAgICBzdHJ1 Y3QgZGVudHJ5ICogcm9vdCwgKiBwd2QsICogYWx0cm9vdDsKICAgICAgICBzdHJ1Y3QgdmZzbW91 bnQgKiByb290bW50LCAqIHB3ZG1udCwgKiBhbHRyb290bW50Owp9OwojIDIwICIvdXNyL3NyYy9s aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mc19zdHJ1Y3QuaCIKZXh0ZXJuIHZvaWQgZXhpdF9m cyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIHNldF9mc19hbHRyb290KHZvaWQp OwoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3Jvb3Qoc3RydWN0IGZzX3N0cnVjdCAq ZnMsCiAgICAgICAgc3RydWN0IHZmc21vdW50ICptbnQsCiAgICAgICAgc3RydWN0IGRlbnRyeSAq ZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqb2xkX3Jvb3Q7CiAgICAgICAgc3RydWN0 IHZmc21vdW50ICpvbGRfcm9vdG1udDsKICAgICAgICAodm9pZCkoJmZzLT5sb2NrKTsKICAgICAg ICBvbGRfcm9vdCA9IGZzLT5yb290OwogICAgICAgIG9sZF9yb290bW50ID0gZnMtPnJvb3RtbnQ7 CiAgICAgICAgZnMtPnJvb3RtbnQgPSBtbnRnZXQobW50KTsKICAgICAgICBmcy0+cm9vdCA9IGRn ZXQoZGVudHJ5KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgaWYgKG9sZF9yb290 KSB7CiAgICAgICAgICAgICAgICBkcHV0KG9sZF9yb290KTsKICAgICAgICAgICAgICAgIG1udHB1 dChvbGRfcm9vdG1udCk7CiAgICAgICAgfQp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRf ZnNfcHdkKHN0cnVjdCBmc19zdHJ1Y3QgKmZzLAogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50 LAogICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkg Km9sZF9wd2Q7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpvbGRfcHdkbW50OwogICAgICAgICh2 b2lkKSgmZnMtPmxvY2spOwogICAgICAgIG9sZF9wd2QgPSBmcy0+cHdkOwogICAgICAgIG9sZF9w d2RtbnQgPSBmcy0+cHdkbW50OwogICAgICAgIGZzLT5wd2RtbnQgPSBtbnRnZXQobW50KTsKICAg ICAgICBmcy0+cHdkID0gZGdldChkZW50cnkpOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAg ICAgICBpZiAob2xkX3B3ZCkgewogICAgICAgICAgICAgICAgZHB1dChvbGRfcHdkKTsKICAgICAg ICAgICAgICAgIG1udHB1dChvbGRfcHdkbW50KTsKICAgICAgICB9Cn0KCnN0cnVjdCBmc19zdHJ1 Y3QgKmNvcHlfZnNfc3RydWN0KHN0cnVjdCBmc19zdHJ1Y3QgKm9sZCk7CnZvaWQgcHV0X2ZzX3N0 cnVjdChzdHJ1Y3QgZnNfc3RydWN0ICpmcyk7CiMgMjkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p bmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCnN0cnVjdCBleGVjX2RvbWFpbjsKIyA1OSAiL3Vzci9z cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHVuc2lnbmVkIGxv bmcgYXZlbnJ1bltdOwojIDc2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9z Y2hlZC5oIgpleHRlcm4gaW50IG5yX3J1bm5pbmcsIG5yX3RocmVhZHM7CmV4dGVybiBpbnQgbGFz dF9waWQ7CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcGFyYW0u aCIgMQojIDgyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAy CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMQoj IDIxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIgpzdHJ1 Y3QgcnVzYWdlIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsKICAgICAgICBzdHJ1 Y3QgdGltZXZhbCBydV9zdGltZTsKICAgICAgICBsb25nIHJ1X21heHJzczsKICAgICAgICBsb25n IHJ1X2l4cnNzOwogICAgICAgIGxvbmcgcnVfaWRyc3M7CiAgICAgICAgbG9uZyBydV9pc3JzczsK ICAgICAgICBsb25nIHJ1X21pbmZsdDsKICAgICAgICBsb25nIHJ1X21hamZsdDsKICAgICAgICBs b25nIHJ1X25zd2FwOwogICAgICAgIGxvbmcgcnVfaW5ibG9jazsKICAgICAgICBsb25nIHJ1X291 YmxvY2s7CiAgICAgICAgbG9uZyBydV9tc2dzbmQ7CiAgICAgICAgbG9uZyBydV9tc2dyY3Y7CiAg ICAgICAgbG9uZyBydV9uc2lnbmFsczsKICAgICAgICBsb25nIHJ1X252Y3N3OwogICAgICAgIGxv bmcgcnVfbml2Y3N3Owp9OwoKc3RydWN0IHJsaW1pdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBy bGltX2N1cjsKICAgICAgICB1bnNpZ25lZCBsb25nIHJsaW1fbWF4Owp9OwojIDU2ICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIgojIDEgIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9yZXNvdXJjZS5oIiAxCiMgNTcgIi91c3Ivc3JjL2xpbnV4 LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKIyA4MyAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEyOCAiL3Vzci9zcmMvbGludXgtMi40 LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHNjaGVkX3BhcmFtIHsKICAgICAgICBp bnQgc2NoZWRfcHJpb3JpdHk7Cn07CgpzdHJ1Y3QgY29tcGxldGlvbjsKIyAxNDQgIi91c3Ivc3Jj L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVybiByd2xvY2tfdCB0YXNr bGlzdF9sb2NrOwpleHRlcm4gc3BpbmxvY2tfdCBydW5xdWV1ZV9sb2NrOwpleHRlcm4gc3Bpbmxv Y2tfdCBtbWxpc3RfbG9jazsKCmV4dGVybiB2b2lkIHNjaGVkX2luaXQodm9pZCk7CmV4dGVybiB2 b2lkIGluaXRfaWRsZSh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19zdGF0ZSh2b2lkKTsKZXh0ZXJu IHZvaWQgY3B1X2luaXQgKHZvaWQpOwpleHRlcm4gdm9pZCB0cmFwX2luaXQodm9pZCk7CmV4dGVy biB2b2lkIHVwZGF0ZV9wcm9jZXNzX3RpbWVzKGludCB1c2VyKTsKZXh0ZXJuIHZvaWQgdXBkYXRl X29uZV9wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdW5zaWduZWQgbG9uZyB1c2VyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW0sIGludCBj cHUpOwoKCmV4dGVybiBzaWduZWQgbG9uZyBzY2hlZHVsZV90aW1lb3V0KHNpZ25lZCBsb25nIHRp bWVvdXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bh cm0oMCkpKSB2b2lkIHNjaGVkdWxlKHZvaWQpOwoKZXh0ZXJuIGludCBzY2hlZHVsZV90YXNrKHN0 cnVjdCB0cV9zdHJ1Y3QgKnRhc2spOwpleHRlcm4gdm9pZCBmbHVzaF9zY2hlZHVsZWRfdGFza3Mo dm9pZCk7CmV4dGVybiBpbnQgc3RhcnRfY29udGV4dF90aHJlYWQodm9pZCk7CmV4dGVybiBpbnQg Y3VycmVudF9pc19rZXZlbnRkKHZvaWQpOwoKCgoKCgoKc3RydWN0IG5hbWVzcGFjZTsKCgoKc3Ry dWN0IGZpbGVzX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgcndsb2Nr X3QgZmlsZV9sb2NrOwogICAgICAgIGludCBtYXhfZmRzOwogICAgICAgIGludCBtYXhfZmRzZXQ7 CiAgICAgICAgaW50IG5leHRfZmQ7CiAgICAgICAgc3RydWN0IGZpbGUgKiogZmQ7CiAgICAgICAg ZmRfc2V0ICpjbG9zZV9vbl9leGVjOwogICAgICAgIGZkX3NldCAqb3Blbl9mZHM7CiAgICAgICAg ZmRfc2V0IGNsb3NlX29uX2V4ZWNfaW5pdDsKICAgICAgICBmZF9zZXQgb3Blbl9mZHNfaW5pdDsK ICAgICAgICBzdHJ1Y3QgZmlsZSAqIGZkX2FycmF5WzMyXTsKfTsKIyAyMDggIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVybiBpbnQgbWF4X21hcF9jb3Vu dDsKCnN0cnVjdCBtbV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIG1t YXA7CiAgICAgICAgcmJfcm9vdF90IG1tX3JiOwogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqIG1tYXBfY2FjaGU7CiAgICAgICAgcGdkX3QgKiBwZ2Q7CiAgICAgICAgYXRvbWljX3QgbW1f dXNlcnM7CiAgICAgICAgYXRvbWljX3QgbW1fY291bnQ7CiAgICAgICAgaW50IG1hcF9jb3VudDsK ICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIG1tYXBfc2VtOwogICAgICAgIHNwaW5sb2NrX3Qg cGFnZV90YWJsZV9sb2NrOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1tbGlzdDsKCgoKCiAg ICAgICAgdW5zaWduZWQgbG9uZyBzdGFydF9jb2RlLCBlbmRfY29kZSwgc3RhcnRfZGF0YSwgZW5k X2RhdGE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydF9icmssIGJyaywgc3RhcnRfc3RhY2s7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBhcmdfc3RhcnQsIGFyZ19lbmQsIGVudl9zdGFydCwgZW52 X2VuZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHJzcywgdG90YWxfdm0sIGxvY2tlZF92bTsKICAg ICAgICB1bnNpZ25lZCBsb25nIGRlZl9mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdV92 bV9tYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcF9hZGRyZXNzOwoKICAgICAgICB1bnNp Z25lZCBkdW1wYWJsZToxOwoKCiAgICAgICAgbW1fY29udGV4dF90IGNvbnRleHQ7Cn07CgpleHRl cm4gaW50IG1tbGlzdF9ucjsKIyAyNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp bnV4L3NjaGVkLmgiCnN0cnVjdCBzaWduYWxfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3Vu dDsKICAgICAgICBzdHJ1Y3Qga19zaWdhY3Rpb24gYWN0aW9uWzY0XTsKICAgICAgICBzcGlubG9j a190IHNpZ2xvY2s7Cn07CiMgMjY5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51 eC9zY2hlZC5oIgpzdHJ1Y3QgdXNlcl9zdHJ1Y3QgewogICAgICAgIGF0b21pY190IF9fY291bnQ7 CiAgICAgICAgYXRvbWljX3QgcHJvY2Vzc2VzOwogICAgICAgIGF0b21pY190IGZpbGVzOwoKCiAg ICAgICAgc3RydWN0IHVzZXJfc3RydWN0ICpuZXh0LCAqKnBwcmV2OwogICAgICAgIHVpZF90IHVp ZDsKfTsKCgoKCgoKZXh0ZXJuIHN0cnVjdCB1c2VyX3N0cnVjdCByb290X3VzZXI7CgoKc3RydWN0 IHRhc2tfc3RydWN0IHsKCgoKICAgICAgICB2b2xhdGlsZSBsb25nIHN0YXRlOwogICAgICAgIHVu c2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgaW50IHNpZ3BlbmRpbmc7CiAgICAgICAgbW1fc2Vn bWVudF90IGFkZHJfbGltaXQ7CgoKCiAgICAgICAgc3RydWN0IGV4ZWNfZG9tYWluICpleGVjX2Rv bWFpbjsKICAgICAgICB2b2xhdGlsZSBsb25nIG5lZWRfcmVzY2hlZDsKICAgICAgICB1bnNpZ25l ZCBsb25nIHB0cmFjZTsKCiAgICAgICAgaW50IGxvY2tfZGVwdGg7CgoKCgoKCiAgICAgICAgbG9u ZyBjb3VudGVyOwogICAgICAgIGxvbmcgbmljZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBvbGlj eTsKICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbTsKICAgICAgICBpbnQgcHJvY2Vzc29yOwoj IDMyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKICAgICAg ICB1bnNpZ25lZCBsb25nIGNwdXNfcnVubmFibGUsIGNwdXNfYWxsb3dlZDsKCgoKCiAgICAgICAg c3RydWN0IGxpc3RfaGVhZCBydW5fbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNsZWVwX3Rp bWU7CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dF90YXNrLCAqcHJldl90YXNrOwog ICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKmFjdGl2ZV9tbTsKICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkIGxvY2FsX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCBhbGxvY2F0aW9uX29yZGVyLCBu cl9sb2NhbF9wYWdlczsKCgogICAgICAgIHN0cnVjdCBsaW51eF9iaW5mbXQgKmJpbmZtdDsKICAg ICAgICBpbnQgZXhpdF9jb2RlLCBleGl0X3NpZ25hbDsKICAgICAgICBpbnQgcGRlYXRoX3NpZ25h bDsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBwZXJzb25hbGl0eTsKICAgICAgICBpbnQgZGlkX2V4 ZWM6MTsKICAgICAgICBwaWRfdCBwaWQ7CiAgICAgICAgcGlkX3QgcGdycDsKICAgICAgICBwaWRf dCB0dHlfb2xkX3BncnA7CiAgICAgICAgcGlkX3Qgc2Vzc2lvbjsKICAgICAgICBwaWRfdCB0Z2lk OwoKICAgICAgICBpbnQgbGVhZGVyOwoKCgoKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpw X29wcHRyLCAqcF9wcHRyLCAqcF9jcHRyLCAqcF95c3B0ciwgKnBfb3NwdHI7CiAgICAgICAgc3Ry dWN0IGxpc3RfaGVhZCB0aHJlYWRfZ3JvdXA7CgoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnBpZGhhc2hfbmV4dDsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipwaWRoYXNoX3BwcmV2 OwoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X2NobGRleGl0OwogICAgICAgIHN0cnVj dCBjb21wbGV0aW9uICp2Zm9ya19kb25lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnRfcHJpb3Jp dHk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpdF9yZWFsX3ZhbHVlLCBpdF9wcm9mX3ZhbHVlLCBp dF92aXJ0X3ZhbHVlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXRfcmVhbF9pbmNyLCBpdF9wcm9m X2luY3IsIGl0X3ZpcnRfaW5jcjsKICAgICAgICBzdHJ1Y3QgdGltZXJfbGlzdCByZWFsX3RpbWVy OwogICAgICAgIHN0cnVjdCB0bXMgdGltZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydF90 aW1lOwogICAgICAgIGxvbmcgcGVyX2NwdV91dGltZVsxXSwgcGVyX2NwdV9zdGltZVsxXTsKCiAg ICAgICAgdW5zaWduZWQgbG9uZyBtaW5fZmx0LCBtYWpfZmx0LCBuc3dhcCwgY21pbl9mbHQsIGNt YWpfZmx0LCBjbnN3YXA7CiAgICAgICAgaW50IHN3YXBwYWJsZToxOwoKICAgICAgICB1aWRfdCB1 aWQsZXVpZCxzdWlkLGZzdWlkOwogICAgICAgIGdpZF90IGdpZCxlZ2lkLHNnaWQsZnNnaWQ7CiAg ICAgICAgaW50IG5ncm91cHM7CiAgICAgICAgZ2lkX3QgZ3JvdXBzWzMyXTsKICAgICAgICBrZXJu ZWxfY2FwX3QgY2FwX2VmZmVjdGl2ZSwgY2FwX2luaGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkOwog ICAgICAgIGludCBrZWVwX2NhcGFiaWxpdGllczoxOwogICAgICAgIHN0cnVjdCB1c2VyX3N0cnVj dCAqdXNlcjsKCiAgICAgICAgc3RydWN0IHJsaW1pdCBybGltWzExXTsKICAgICAgICB1bnNpZ25l ZCBzaG9ydCB1c2VkX21hdGg7CiAgICAgICAgY2hhciBjb21tWzE2XTsKCiAgICAgICAgaW50IGxp bmtfY291bnQsIHRvdGFsX2xpbmtfY291bnQ7CiAgICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0 eTsKICAgICAgICB1bnNpZ25lZCBpbnQgbG9ja3M7CgogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAq c2VtdW5kbzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICpzZW1zbGVlcGluZzsKCiAgICAgICAg c3RydWN0IHRocmVhZF9zdHJ1Y3QgdGhyZWFkOwoKICAgICAgICBzdHJ1Y3QgZnNfc3RydWN0ICpm czsKCiAgICAgICAgc3RydWN0IGZpbGVzX3N0cnVjdCAqZmlsZXM7CgogICAgICAgIHN0cnVjdCBu YW1lc3BhY2UgKm5hbWVzcGFjZTsKCiAgICAgICAgc3BpbmxvY2tfdCBzaWdtYXNrX2xvY2s7CiAg ICAgICAgc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZzsKCiAgICAgICAgc2lnc2V0X3QgYmxvY2tl ZDsKICAgICAgICBzdHJ1Y3Qgc2lncGVuZGluZyBwZW5kaW5nOwoKICAgICAgICB1bnNpZ25lZCBs b25nIHNhc19zc19zcDsKICAgICAgICBzaXplX3Qgc2FzX3NzX3NpemU7CiAgICAgICAgaW50ICgq bm90aWZpZXIpKHZvaWQgKnByaXYpOwogICAgICAgIHZvaWQgKm5vdGlmaWVyX2RhdGE7CiAgICAg ICAgc2lnc2V0X3QgKm5vdGlmaWVyX21hc2s7CgoKICAgICAgICB1MzIgcGFyZW50X2V4ZWNfaWQ7 CiAgICAgICAgdTMyIHNlbGZfZXhlY19pZDsKCiAgICAgICAgc3BpbmxvY2tfdCBhbGxvY19sb2Nr OwoKCiAgICAgICAgdm9pZCAqam91cm5hbF9pbmZvOwp9OwojIDQ2MSAiL3Vzci9zcmMvbGludXgt Mi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHZvaWQgeWllbGQodm9pZCk7CgoK CgpleHRlcm4gc3RydWN0IGV4ZWNfZG9tYWluIGRlZmF1bHRfZXhlY19kb21haW47CiMgNTIwICIv dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgp1bmlvbiB0YXNrX3Vu aW9uIHsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgdGFzazsKICAgICAgICB1bnNpZ25lZCBs b25nIHN0YWNrWzIwNDgqc2l6ZW9mKGxvbmcpL3NpemVvZihsb25nKV07Cn07CgpleHRlcm4gdW5p b24gdGFza191bmlvbiBpbml0X3Rhc2tfdW5pb247CgpleHRlcm4gc3RydWN0IG1tX3N0cnVjdCBp bml0X21tOwpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICppbml0X3Rhc2tzWzFdOwoKCgpleHRl cm4gc3RydWN0IHRhc2tfc3RydWN0ICpwaWRoYXNoWyg0MDk2ID4+IDIpXTsKCgoKc3RhdGljIGlu bGluZSB2b2lkIGhhc2hfcGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHN0cnVj dCB0YXNrX3N0cnVjdCAqKmh0YWJsZSA9ICZwaWRoYXNoWygoKChwLT5waWQpID4+IDgpIF4gKHAt PnBpZCkpICYgKCg0MDk2ID4+IDIpIC0gMSkpXTsKCiAgICAgICAgaWYoKHAtPnBpZGhhc2hfbmV4 dCA9ICpodGFibGUpICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgKCpodGFibGUpLT5w aWRoYXNoX3BwcmV2ID0gJnAtPnBpZGhhc2hfbmV4dDsKICAgICAgICAqaHRhYmxlID0gcDsKICAg ICAgICBwLT5waWRoYXNoX3BwcmV2ID0gaHRhYmxlOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5o YXNoX3BpZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBpZihwLT5waWRoYXNoX25l eHQpCiAgICAgICAgICAgICAgICBwLT5waWRoYXNoX25leHQtPnBpZGhhc2hfcHByZXYgPSBwLT5w aWRoYXNoX3BwcmV2OwogICAgICAgICpwLT5waWRoYXNoX3BwcmV2ID0gcC0+cGlkaGFzaF9uZXh0 Owp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqZmluZF90YXNrX2J5X3BpZChp bnQgcGlkKQp7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwLCAqKmh0YWJsZSA9ICZwaWRo YXNoWygoKChwaWQpID4+IDgpIF4gKHBpZCkpICYgKCg0MDk2ID4+IDIpIC0gMSkpXTsKCiAgICAg ICAgZm9yKHAgPSAqaHRhYmxlOyBwICYmIHAtPnBpZCAhPSBwaWQ7IHAgPSBwLT5waWRoYXNoX25l eHQpCiAgICAgICAgICAgICAgICA7CgogICAgICAgIHJldHVybiBwOwp9CgoKCnN0YXRpYyBpbmxp bmUgdm9pZCB0YXNrX3NldF9jcHUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGlu dCBjcHUpCnsKICAgICAgICB0c2stPnByb2Nlc3NvciA9IGNwdTsKICAgICAgICB0c2stPmNwdXNf cnVubmFibGUgPSAxVUwgPDwgY3B1Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza19yZWxlYXNl X2NwdShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogICAgICAgIHRzay0+Y3B1c19ydW5uYWJs ZSA9IH4wVUw7Cn0KCgpleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0ICogYWxsb2NfdWlkKHVpZF90 KTsKZXh0ZXJuIHZvaWQgZnJlZV91aWQoc3RydWN0IHVzZXJfc3RydWN0ICopOwoKIyAxICIvdXNy L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vY3VycmVudC5oIiAxCgoKCnN0cnVjdCB0YXNr X3N0cnVjdDsKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICogZ2V0X2N1cnJlbnQo dm9pZCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqY3VycmVudDsKICAgICAgICBfX2Fz bV9fKCJhbmRsICUlZXNwLCUwOyAiOiI9ciIgKGN1cnJlbnQpIDogIjAiICh+ODE5MVVMKSk7CiAg ICAgICAgcmV0dXJuIGN1cnJlbnQ7CiB9CiMgNTgxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j bHVkZS9saW51eC9zY2hlZC5oIiAyCgpleHRlcm4gdW5zaWduZWQgbG9uZyB2b2xhdGlsZSBqaWZm aWVzOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpdGltZXJfdGlja3M7CmV4dGVybiB1bnNpZ25lZCBs b25nIGl0aW1lcl9uZXh0OwpleHRlcm4gc3RydWN0IHRpbWV2YWwgeHRpbWU7CmV4dGVybiB2b2lk IGRvX3RpbWVyKHN0cnVjdCBwdF9yZWdzICopOwoKZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2Zf YnVmZmVyOwpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxv bmcgcHJvZl9zaGlmdDsKCgoKZXh0ZXJuIHZvaWQgX193YWtlX3VwKHdhaXRfcXVldWVfaGVhZF90 ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp KSk7CmV4dGVybiB2b2lkIF9fd2FrZV91cF9zeW5jKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNp Z25lZCBpbnQgbW9kZSwgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy biB2b2lkIHNsZWVwX29uKHdhaXRfcXVldWVfaGVhZF90ICpxKSBfX2F0dHJpYnV0ZV9fKChyZWdw YXJtKDMpKSk7CmV4dGVybiBsb25nIHNsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3Qg KnEsIHNpZ25lZCBsb25nIHRpbWVvdXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4 dGVybiB2b2lkIGludGVycnVwdGlibGVfc2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGxvbmcgaW50ZXJydXB0aWJsZV9zbGVl cF9vbl90aW1lb3V0KHdhaXRfcXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KSBf X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpleHRlcm4gaW50IHdha2VfdXBfcHJvY2Vzcyhz dHJ1Y3QgdGFza19zdHJ1Y3QgKiB0c2spIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA2 MTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfd2FpdDQocGlkX3QgcGlkLHVuc2lnbmVkIGlu dCAqIHN0YXRfYWRkciwgaW50IG9wdGlvbnMsIHN0cnVjdCBydXNhZ2UgKiBydSk7CgpleHRlcm4g aW50IGluX2dyb3VwX3AoZ2lkX3QpOwpleHRlcm4gaW50IGluX2Vncm91cF9wKGdpZF90KTsKCmV4 dGVybiB2b2lkIHByb2NfY2FjaGVzX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25h bHMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBmbHVzaF9zaWduYWxfaGFuZGxl cnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBzaWdfZXhpdChpbnQsIGludCwg c3RydWN0IHNpZ2luZm8gKik7CmV4dGVybiBpbnQgZGVxdWV1ZV9zaWduYWwoc2lnc2V0X3QgKiwg c2lnaW5mb190ICopOwpleHRlcm4gdm9pZCBibG9ja19hbGxfc2lnbmFscyhpbnQgKCpub3RpZmll cikodm9pZCAqcHJpdiksIHZvaWQgKnByaXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpZ3NldF90ICptYXNrKTsKZXh0ZXJuIHZvaWQgdW5ibG9ja19hbGxfc2lnbmFscyh2b2lkKTsK ZXh0ZXJuIGludCBzZW5kX3NpZ19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgc3RydWN0IHRh c2tfc3RydWN0ICopOwpleHRlcm4gaW50IGZvcmNlX3NpZ19pbmZvKGludCwgc3RydWN0IHNpZ2lu Zm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IGtpbGxfcGdfaW5mbyhpbnQs IHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsKZXh0ZXJuIGludCBraWxsX3NsX2luZm8oaW50LCBz dHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVybiBpbnQga2lsbF9wcm9jX2luZm8oaW50LCBz dHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVybiB2b2lkIG5vdGlmeV9wYXJlbnQoc3RydWN0 IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2b2lkIGRvX25vdGlmeV9wYXJlbnQoc3RydWN0 IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2b2lkIGZvcmNlX3NpZyhpbnQsIHN0cnVjdCB0 YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBzZW5kX3NpZyhpbnQsIHN0cnVjdCB0YXNrX3N0cnVj dCAqLCBpbnQpOwpleHRlcm4gaW50IGtpbGxfcGcocGlkX3QsIGludCwgaW50KTsKZXh0ZXJuIGlu dCBraWxsX3NsKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQga2lsbF9wcm9jKHBpZF90LCBp bnQsIGludCk7CmV4dGVybiBpbnQgZG9fc2lnYWN0aW9uKGludCwgY29uc3Qgc3RydWN0IGtfc2ln YWN0aW9uICosIHN0cnVjdCBrX3NpZ2FjdGlvbiAqKTsKZXh0ZXJuIGludCBkb19zaWdhbHRzdGFj ayhjb25zdCBzdGFja190ICosIHN0YWNrX3QgKiwgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5s aW5lIGludCBzaWduYWxfcGVuZGluZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBy ZXR1cm4gKHAtPnNpZ3BlbmRpbmcgIT0gMCk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIGludCBoYXNf cGVuZGluZ19zaWduYWxzKHNpZ3NldF90ICpzaWduYWwsIHNpZ3NldF90ICpibG9ja2VkKQp7CiAg ICAgICAgdW5zaWduZWQgbG9uZyByZWFkeTsKICAgICAgICBsb25nIGk7CgogICAgICAgIHN3aXRj aCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGZvciAoaSA9 ICg2NCAvIDMyKSwgcmVhZHkgPSAwOyAtLWkgPj0gMCA7KQogICAgICAgICAgICAgICAgICAgICAg ICByZWFkeSB8PSBzaWduYWwtPnNpZ1tpXSAmfiBibG9ja2VkLT5zaWdbaV07CiAgICAgICAgICAg ICAgICBicmVhazsKCiAgICAgICAgY2FzZSA0OiByZWFkeSA9IHNpZ25hbC0+c2lnWzNdICZ+IGJs b2NrZWQtPnNpZ1szXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzJdICZ+ IGJsb2NrZWQtPnNpZ1syXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzFd ICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2ln WzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBj YXNlIDI6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMV0gJn4gYmxvY2tlZC0+c2lnWzFdOwogICAgICAg ICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwogICAg ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMTogcmVhZHkgPSBzaWduYWwtPnNpZ1sw XSAmfiBibG9ja2VkLT5zaWdbMF07CiAgICAgICAgfQogICAgICAgIHJldHVybiByZWFkeSAhPSAw Owp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHJlY2FsY19zaWdwZW5kaW5nKHN0cnVjdCB0YXNr X3N0cnVjdCAqdCkKewogICAgICAgIHQtPnNpZ3BlbmRpbmcgPSBoYXNfcGVuZGluZ19zaWduYWxz KCZ0LT5wZW5kaW5nLnNpZ25hbCwgJnQtPmJsb2NrZWQpOwp9CgoKCnN0YXRpYyBpbmxpbmUgaW50 IG9uX3NpZ19zdGFjayh1bnNpZ25lZCBsb25nIHNwKQp7CiAgICAgICAgcmV0dXJuIChzcCAtIGdl dF9jdXJyZW50KCktPnNhc19zc19zcCA8IGdldF9jdXJyZW50KCktPnNhc19zc19zaXplKTsKfQoK c3RhdGljIGlubGluZSBpbnQgc2FzX3NzX2ZsYWdzKHVuc2lnbmVkIGxvbmcgc3ApCnsKICAgICAg ICByZXR1cm4gKGdldF9jdXJyZW50KCktPnNhc19zc19zaXplID09IDAgPyAyCiAgICAgICAgICAg ICAgICA6IG9uX3NpZ19zdGFjayhzcCkgPyAxIDogMCk7Cn0KCmV4dGVybiBpbnQgcmVxdWVzdF9p cnEodW5zaWduZWQgaW50LAogICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpoYW5kbGVyKShp bnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksCiAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZywgY29uc3QgY2hhciAqLCB2b2lkICopOwpleHRlcm4gdm9pZCBmcmVlX2lycSh1 bnNpZ25lZCBpbnQsIHZvaWQgKik7CiMgNzE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk ZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5lIGludCBzdXNlcih2b2lkKQp7CiAgICAgICAg aWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAmIDB4MDAwMDAw MDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0cyApICYmIGdldF9jdXJyZW50KCktPmV1aWQgPT0g MCkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsK ICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoK c3RhdGljIGlubGluZSBpbnQgZnN1c2VyKHZvaWQpCnsKICAgICAgICBpZiAoISggKDEgPDwgKDAg KzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAoMCkpICYgMHgwMDAwMDAwMCA6ICgxIDw8ICgwKSkg JiBzZWN1cmViaXRzICkgJiYgZ2V0X2N1cnJlbnQoKS0+ZnN1aWQgPT0gMCkgewogICAgICAgICAg ICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsKICAgICAgICAgICAgICAg IHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKCgoKCgoKc3RhdGljIGlu bGluZSBpbnQgY2FwYWJsZShpbnQgY2FwKQp7CgogICAgICAgIGlmICgoKGdldF9jdXJyZW50KCkt PmNhcF9lZmZlY3RpdmUpICYgKDEgPDwgKGNhcCkpKSkKCgoKICAgICAgICB7CiAgICAgICAgICAg ICAgICBnZXRfY3VycmVudCgpLT5mbGFncyB8PSAweDAwMDAwMTAwOwogICAgICAgICAgICAgICAg cmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CgoKCgpleHRlcm4gc3RydWN0 IG1tX3N0cnVjdCAqIG1tX2FsbG9jKHZvaWQpOwoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKiBz dGFydF9sYXp5X3RsYih2b2lkKTsKZXh0ZXJuIHZvaWQgZW5kX2xhenlfdGxiKHN0cnVjdCBtbV9z dHJ1Y3QgKm1tKTsKCgpleHRlcm4gaW5saW5lIHZvaWQgX19tbWRyb3Aoc3RydWN0IG1tX3N0cnVj dCAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CnN0YXRpYyBpbmxpbmUgdm9pZCBtbWRy b3Aoc3RydWN0IG1tX3N0cnVjdCAqIG1tKQp7CiAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rl c3QoJm1tLT5tbV9jb3VudCkpCiAgICAgICAgICAgICAgICBfX21tZHJvcChtbSk7Cn0KCgpleHRl cm4gdm9pZCBtbXB1dChzdHJ1Y3QgbW1fc3RydWN0ICopOwoKZXh0ZXJuIHZvaWQgbW1fcmVsZWFz ZSh2b2lkKTsKCgoKCmV4dGVybiBzdHJ1Y3QgZmlsZSAqKiBhbGxvY19mZF9hcnJheShpbnQpOwpl eHRlcm4gaW50IGV4cGFuZF9mZF9hcnJheShzdHJ1Y3QgZmlsZXNfc3RydWN0ICosIGludCBucik7 CmV4dGVybiB2b2lkIGZyZWVfZmRfYXJyYXkoc3RydWN0IGZpbGUgKiosIGludCk7CgpleHRlcm4g ZmRfc2V0ICphbGxvY19mZHNldChpbnQpOwpleHRlcm4gaW50IGV4cGFuZF9mZHNldChzdHJ1Y3Qg ZmlsZXNfc3RydWN0ICosIGludCBucik7CmV4dGVybiB2b2lkIGZyZWVfZmRzZXQoZmRfc2V0ICos IGludCk7CgpleHRlcm4gaW50IGNvcHlfdGhyZWFkKGludCwgdW5zaWduZWQgbG9uZywgdW5zaWdu ZWQgbG9uZywgdW5zaWduZWQgbG9uZywgc3RydWN0IHRhc2tfc3RydWN0ICosIHN0cnVjdCBwdF9y ZWdzICopOwpleHRlcm4gdm9pZCBmbHVzaF90aHJlYWQodm9pZCk7CmV4dGVybiB2b2lkIGV4aXRf dGhyZWFkKHZvaWQpOwoKZXh0ZXJuIHZvaWQgZXhpdF9tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7 CmV4dGVybiB2b2lkIGV4aXRfZmlsZXMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9p ZCBleGl0X3NpZ2hhbmQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKZXh0ZXJuIHZvaWQgcmVwYXJl bnRfdG9faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgZGFlbW9uaXplKHZvaWQpOwoKZXh0ZXJuIGlu dCBkb19leGVjdmUoY2hhciAqLCBjaGFyICoqLCBjaGFyICoqLCBzdHJ1Y3QgcHRfcmVncyAqKTsK ZXh0ZXJuIGludCBkb19mb3JrKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCBw dF9yZWdzICosIHVuc2lnbmVkIGxvbmcpOwoKZXh0ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWUod2Fp dF9xdWV1ZV9oZWFkX3QgKnEsIHdhaXRfcXVldWVfdCAqIHdhaXQpIF9fYXR0cmlidXRlX18oKHJl Z3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWVfZXhjbHVzaXZlKHdhaXRfcXVl dWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDMpKSk7CmV4dGVybiB2b2lkIHJlbW92ZV93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpx LCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgODkx ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5s aW5lIHZvaWQgZGVsX2Zyb21fcnVucXVldWUoc3RydWN0IHRhc2tfc3RydWN0ICogcCkKewogICAg ICAgIG5yX3J1bm5pbmctLTsKICAgICAgICBwLT5zbGVlcF90aW1lID0gamlmZmllczsKICAgICAg ICBsaXN0X2RlbCgmcC0+cnVuX2xpc3QpOwogICAgICAgIHAtPnJ1bl9saXN0Lm5leHQgPSAoKHZv aWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBpbnQgdGFza19vbl9ydW5xdWV1ZShzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4gKHAtPnJ1bl9saXN0Lm5leHQgIT0gKCh2b2lk ICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5oYXNoX3Byb2Nlc3Moc3RydWN0IHRhc2tf c3RydWN0ICpwKQp7CiAgICAgICAgaWYgKHRhc2tfb25fcnVucXVldWUocCkpCiAgICAgICAgICAg ICAgICBfX291dF9vZl9saW5lX2J1Zyg5MDcpOwogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0 aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgKHZvaWQpKCZ0YXNrbGlzdF9sb2NrKTsgfSB3aGls ZSAoMCk7CiAgICAgICAgbnJfdGhyZWFkcy0tOwogICAgICAgIHVuaGFzaF9waWQocCk7CiAgICAg ICAgZG8geyAocCktPm5leHRfdGFzay0+cHJldl90YXNrID0gKHApLT5wcmV2X3Rhc2s7IChwKS0+ cHJldl90YXNrLT5uZXh0X3Rhc2sgPSAocCktPm5leHRfdGFzazsgaWYgKChwKS0+cF9vc3B0cikg KHApLT5wX29zcHRyLT5wX3lzcHRyID0gKHApLT5wX3lzcHRyOyBpZiAoKHApLT5wX3lzcHRyKSAo cCktPnBfeXNwdHItPnBfb3NwdHIgPSAocCktPnBfb3NwdHI7IGVsc2UgKHApLT5wX3BwdHItPnBf Y3B0ciA9IChwKS0+cF9vc3B0cjsgfSB3aGlsZSAoMCk7CiAgICAgICAgbGlzdF9kZWwoJnAtPnRo cmVhZF9ncm91cCk7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xh dGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CgoKc3RhdGljIGlubGlu ZSB2b2lkIHRhc2tfbG9jayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICAodm9pZCko JnAtPmFsbG9jX2xvY2spOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza191bmxvY2soc3RydWN0 IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9CgoKc3RhdGljIGlu bGluZSBjaGFyICogZF9wYXRoKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHZmc21vdW50 ICp2ZnNtbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBpbnQg YnVmbGVuKQp7CiAgICAgICAgY2hhciAqcmVzOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqcm9v dG1udDsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpyb290OwogICAgICAgICh2b2lkKSgmZ2V0X2N1 cnJlbnQoKS0+ZnMtPmxvY2spOwogICAgICAgIHJvb3RtbnQgPSBtbnRnZXQoZ2V0X2N1cnJlbnQo KS0+ZnMtPnJvb3RtbnQpOwogICAgICAgIHJvb3QgPSBkZ2V0KGdldF9jdXJyZW50KCktPmZzLT5y b290KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgKHZvaWQpKCZkY2FjaGVfbG9j ayk7CiAgICAgICAgcmVzID0gX19kX3BhdGgoZGVudHJ5LCB2ZnNtbnQsIHJvb3QsIHJvb3RtbnQs IGJ1ZiwgYnVmbGVuKTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgZHB1dChyb290 KTsKICAgICAgICBtbnRwdXQocm9vdG1udCk7CiAgICAgICAgcmV0dXJuIHJlczsKfQoKc3RhdGlj IGlubGluZSBpbnQgbmVlZF9yZXNjaGVkKHZvaWQpCnsKICAgICAgICByZXR1cm4gKF9fYnVpbHRp bl9leHBlY3QoKGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCksMCkpOwp9CgpleHRlcm4gdm9p ZCBfX2NvbmRfcmVzY2hlZCh2b2lkKTsKc3RhdGljIGlubGluZSB2b2lkIGNvbmRfcmVzY2hlZCh2 b2lkKQp7CiAgICAgICAgaWYgKG5lZWRfcmVzY2hlZCgpKQogICAgICAgICAgICAgICAgX19jb25k X3Jlc2NoZWQoKTsKfQojIDkgInN5c2k4Ni5jIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu MjAvaW5jbHVkZS9saW51eC9zeXNjYWxsLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjIw L2luY2x1ZGUvbGludXgvc3lzY2FsbC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs dWRlL2FzbS9zeXNjYWxsLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv YXNtL3N5c2NhbGwuaCIKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgc3lz X21vZGlmeV9sZHQoaW50LCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwoKCmV4dGVybiBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IHN5c19mb3JrKHN0cnVjdCBwdF9yZWdzIHJlZ3MpOwoK CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IHN5c19wdHJhY2UobG9uZyBy ZXF1ZXN0LCBsb25nIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFk ZHIsIGxvbmcgZGF0YSk7CgoKZXh0ZXJuIGludCBzaWdzdXNwZW5kMShzdHJ1Y3QgcHRfcmVncyAq cmVncywgb2xkX3NpZ3NldF90IG1hc2spOwoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDApKSkgaW50IHN5c19pcGModWludCBjYWxsLCBpbnQgZmlyc3QsIGludCBzZWNvbmQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRoaXJkLCB2b2lkICpwdHIsIGxvbmcgZmlm dGgpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBzeXNfcGF1c2Uodm9p ZCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IHN5c19waXBlKHVuc2ln bmVkIGxvbmcgKiBmaWxkZXMpOwojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s aW51eC9zeXNjYWxsLmgiIDIKCgpzdHJ1Y3QgaXRpbWVydmFsOwpzdHJ1Y3QgbXNnaGRyOwpzdHJ1 Y3QgcG9sbGZkOwpzdHJ1Y3QgcmxpbWl0OwpzdHJ1Y3Qgc2lnYWN0aW9uOwpzdHJ1Y3Qgc29ja2Fk ZHI7CnN0cnVjdCBzdGF0ZnM7CnN0cnVjdCB0aW1lc3BlYzsKc3RydWN0IHRpbWV2YWw7CnN0cnVj dCB0aW1lem9uZTsKc3RydWN0IHRtczsKc3RydWN0IHV0aW1idWY7CgoKCmV4dGVybiBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfdXNlbGliKGNvbnN0IGNoYXIgKiBsaWJyYXJ5 KTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3N5bmModm9p ZCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfZnN5bmModW5z aWduZWQgaW50IGZkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5 c19mZGF0YXN5bmModW5zaWduZWQgaW50IGZkKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVn cGFybSgwKSkpIGxvbmcgc3lzX2R1cCh1bnNpZ25lZCBpbnQgZmlsZGVzKTsKZXh0ZXJuIF9fYXR0 cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19kdXAyKHVuc2lnbmVkIGludCBvbGRmZCwg dW5zaWduZWQgaW50IG5ld2ZkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs b25nIHN5c19mY250bCh1bnNpZ25lZCBpbnQgZmQsIHVuc2lnbmVkIGludCBjbWQsCiAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGFyZyk7CgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFy bSgwKSkpIGxvbmcgc3lzX2ZjbnRsNjQodW5zaWduZWQgaW50IGZkLCB1bnNpZ25lZCBpbnQgY21k LAogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhcmcpOwoKCgpleHRlcm4gX19hdHRyaWJ1 dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2lvY3RsKHVuc2lnbmVkIGludCBmZCwgdW5zaWdu ZWQgaW50IGNtZCwgdm9pZCAqKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp IGxvbmcgc3lzX2xpbmsoY29uc3QgY2hhciAqIG9sZG5hbWUsIGNvbnN0IGNoYXIgKiBuZXduYW1l KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19ta2Rpcihjb25z dCBjaGFyICogcGF0aG5hbWUsIGludCBtb2RlKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bh cm0oMCkpKSBsb25nIHN5c19ta25vZChjb25zdCBjaGFyICogZmlsZW5hbWUsIGludCBtb2RlLCBk ZXZfdCBkZXYpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3Jl bmFtZShjb25zdCBjaGFyICogb2xkbmFtZSwgY29uc3QgY2hhciAqIG5ld25hbWUpOwpleHRlcm4g X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3JtZGlyKGNvbnN0IGNoYXIgKiBw YXRobmFtZSk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc3lt bGluayhjb25zdCBjaGFyICogb2xkbmFtZSwgY29uc3QgY2hhciAqIG5ld25hbWUpOwpleHRlcm4g X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3VubGluayhjb25zdCBjaGFyICog cGF0aG5hbWUpOwoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNf dW1vdW50KGNoYXIgKiBuYW1lLCBpbnQgZmxhZ3MpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVn cGFybSgwKSkpIGxvbmcgc3lzX29sZHVtb3VudChjaGFyICogbmFtZSk7CmV4dGVybiBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfbW91bnQoY2hhciAqIGRldl9uYW1lLCBjaGFy ICogZGlyX25hbWUsCiAgICAgICAgICAgICAgICBjaGFyICogdHlwZSwgdW5zaWduZWQgbG9uZyBm bGFncywgdm9pZCAqIGRhdGEpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv bmcgc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsCiAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpwdXRfb2xkKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp IGxvbmcgc3lzX2FjY2Vzcyhjb25zdCBjaGFyICogZmlsZW5hbWUsIGludCBtb2RlKTsKZXh0ZXJu IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19jaGRpcihjb25zdCBjaGFyICog ZmlsZW5hbWUpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2Zj aGRpcih1bnNpZ25lZCBpbnQgZmQpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp IGxvbmcgc3lzX2Nocm9vdChjb25zdCBjaGFyICogZmlsZW5hbWUpOwpleHRlcm4gX19hdHRyaWJ1 dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2NobW9kKGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwg bW9kZV90IG1vZGUpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lz X2ZjaG1vZCh1bnNpZ25lZCBpbnQgZmQsIG1vZGVfdCBtb2RlKTsKZXh0ZXJuIF9fYXR0cmlidXRl X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19jaG93bihjb25zdCBjaGFyICogZmlsZW5hbWUsIHVp ZF90IHVzZXIsCiAgICAgICAgICAgICAgICBnaWRfdCBncm91cCk7CmV4dGVybiBfX2F0dHJpYnV0 ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfbGNob3duKGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwg dWlkX3QgdXNlciwKICAgICAgICAgICAgICAgIGdpZF90IGdyb3VwKTsKZXh0ZXJuIF9fYXR0cmli dXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19mY2hvd24odW5zaWduZWQgaW50IGZkLCB1aWRf dCB1c2VyLCBnaWRfdCBncm91cCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg bG9uZyBzeXNfY2xvc2UodW5zaWduZWQgaW50IGZkKTsKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChy ZWdwYXJtKDApKSkgbG9uZyBzeXNfY3JlYXQoY29uc3QgY2hhciAqIHBhdGhuYW1lLCBpbnQgbW9k ZSk7CgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX29wZW4oY29u c3QgY2hhciAqIGZpbGVuYW1lLCBpbnQgZmxhZ3MsIGludCBtb2RlKTsKZXh0ZXJuIF9fYXR0cmli dXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zdGF0ZnMoY29uc3QgY2hhciAqIHBhdGgsIHN0 cnVjdCBzdGF0ZnMgKiBidWYpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv bmcgc3lzX2ZzdGF0ZnModW5zaWduZWQgaW50IGZkLCBzdHJ1Y3Qgc3RhdGZzICogYnVmKTsKZXh0 ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19mdHJ1bmNhdGUodW5zaWdu ZWQgaW50IGZkLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChy ZWdwYXJtKDApKSkgbG9uZyBzeXNfZnRydW5jYXRlNjQodW5zaWduZWQgaW50IGZkLCBsb2ZmX3Qg bGVuZ3RoKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c190cnVu Y2F0ZShjb25zdCBjaGFyICogcGF0aCwgdW5zaWduZWQgbG9uZyBsZW5ndGgpOwpleHRlcm4gX19h dHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3RydW5jYXRlNjQoY29uc3QgY2hhciAq IHBhdGgsIGxvZmZfdCBsZW5ndGgpOwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp KSBsb25nIHN5c191dGltZShjaGFyICogZmlsZW5hbWUsIHN0cnVjdCB1dGltYnVmICogdGltZXMp OwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c191dGltZXMoY2hh ciAqIGZpbGVuYW1lLCBzdHJ1Y3QgdGltZXZhbCAqIHV0aW1lcyk7CmV4dGVybiBfX2F0dHJpYnV0 ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfdmhhbmd1cCh2b2lkKTsKCgoKZXh0ZXJuIF9fYXR0 cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBvZmZfdCBzeXNfbHNlZWsodW5zaWduZWQgaW50IGZkLCBv ZmZfdCBvZmZzZXQsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3JpZ2luKTsKCmV4dGVy biBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfbGxzZWVrKHVuc2lnbmVkIGlu dCBmZCwgdW5zaWduZWQgbG9uZyBvZmZzZXRfaGlnaCwKICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgb2Zmc2V0X2xvdywgbG9mZl90ICogcmVzdWx0LCB1bnNpZ25lZCBpbnQgb3JpZ2luKTsK CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgc3NpemVfdCBzeXNfcmVhZCh1bnNp Z25lZCBpbnQgZmQsIGNoYXIgKiBidWYsIHNpemVfdCBjb3VudCk7CmV4dGVybiBfX2F0dHJpYnV0 ZV9fKChyZWdwYXJtKDApKSkgc3NpemVfdCBzeXNfcmVhZHYodW5zaWduZWQgbG9uZyBmZCwKICAg ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpb3ZlYyAqIHZlY3RvciwgdW5zaWduZWQgbG9uZyBj b3VudCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgc3NpemVfdCBzeXNfcHJl YWQodW5zaWduZWQgaW50IGZkLCBjaGFyICogYnVmLAogICAgICAgICAgICAgICAgc2l6ZV90IGNv dW50LCBsb2ZmX3QgcG9zKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBzc2l6 ZV90IHN5c19wd3JpdGUodW5zaWduZWQgaW50IGZkLCBjb25zdCBjaGFyICogYnVmLAogICAgICAg ICAgICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgcG9zKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18o KHJlZ3Bhcm0oMCkpKSBzc2l6ZV90IHN5c193cml0ZSh1bnNpZ25lZCBpbnQgZmQsIGNvbnN0IGNo YXIgKiBidWYsCiAgICAgICAgICAgICAgICBzaXplX3QgY291bnQpOwpleHRlcm4gX19hdHRyaWJ1 dGVfXygocmVncGFybSgwKSkpIHNzaXplX3Qgc3lzX3dyaXRldih1bnNpZ25lZCBsb25nIGZkLAog ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGlvdmVjICogdmVjdG9yLCB1bnNpZ25lZCBsb25n IGNvdW50KTsKCgoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IG9sZF9y ZWFkZGlyKHVuc2lnbmVkIGludCBmZCwgdm9pZCAqIGRpcmVudCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQpOwoKCmV4dGVybiBfX2F0dHJpYnV0ZV9f KChyZWdwYXJtKDApKSkgbG9uZyBzeXNfcG9sbChzdHJ1Y3QgcG9sbGZkICogdWZkcywgdW5zaWdu ZWQgaW50IG5mZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0aW1lb3V0 KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgc3lzX3NlbGVjdChpbnQs IGZkX3NldCAqLCBmZF9zZXQgKiwgZmRfc2V0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHRpbWV2YWwgKik7CgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o MCkpKSBsb25nIHN5c19yZWFkbGluayhjb25zdCBjaGFyICogcGF0aCwgY2hhciAqIGJ1ZiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmc2l6KTsKCgpleHRlcm4gX19hdHRy aWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3N5c2ZzKGludCBvcHRpb24sIHVuc2lnbmVk IGxvbmcgYXJnMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IGFyZzIpOwoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfYWNj dChjb25zdCBjaGFyICpuYW1lKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp IGxvbmcgc3lzX2V4aXQoaW50IGVycm9yX2NvZGUpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVn cGFybSgwKSkpIGxvbmcgc3lzX3dhaXRwaWQocGlkX3QgcGlkLCB1bnNpZ25lZCBpbnQgKnN0YXRf YWRkciwKICAgICAgICAgICAgICAgIGludCBvcHRpb25zKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVf XygocmVncGFybSgwKSkpIGxvbmcgc3lzX2dldGl0aW1lcihpbnQgd2hpY2gsIHN0cnVjdCBpdGlt ZXJ2YWwgKnZhbHVlKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5 c19zZXRpdGltZXIoaW50IHdoaWNoLCBzdHJ1Y3QgaXRpbWVydmFsICp2YWx1ZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVydmFsICpvdmFsdWUpOwoKCgpleHRl cm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX25pY2UoaW50IGluY3JlbWVu dCk7CgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX3Nl dHNjaGVkdWxlcihwaWRfdCBwaWQsIGludCBwb2xpY3ksCiAgICAgICAgICAgICAgICBzdHJ1Y3Qg c2NoZWRfcGFyYW0gKnBhcmFtKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs b25nIHN5c19zY2hlZF9zZXRwYXJhbShwaWRfdCBwaWQsCiAgICAgICAgICAgICAgICBzdHJ1Y3Qg c2NoZWRfcGFyYW0gKnBhcmFtKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs b25nIHN5c19zY2hlZF9nZXRzY2hlZHVsZXIocGlkX3QgcGlkKTsKZXh0ZXJuIF9fYXR0cmlidXRl X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF9nZXRwYXJhbShwaWRfdCBwaWQsCiAgICAg ICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKTsKZXh0ZXJuIF9fYXR0cmlidXRl X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF95aWVsZCh2b2lkKTsKZXh0ZXJuIF9fYXR0 cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KGlu dCBwb2xpY3kpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3Nj aGVkX2dldF9wcmlvcml0eV9taW4oaW50IHBvbGljeSk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChy ZWdwYXJtKDApKSkgbG9uZyBzeXNfc2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZF90IHBpZCwKICAg ICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqaW50ZXJ2YWwpOwoKCmV4dGVybiBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfa2lsbChpbnQgcGlkLCBpbnQgc2lnKTsKZXh0 ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19ydF9zaWdhY3Rpb24oaW50 IHNpZywgY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqYWN0LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gKm9hY3QsIHNpemVfdCBzaWdzZXRzaXplKTsKZXh0 ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19ydF9zaWdwZW5kaW5nKHNp Z3NldF90ICpzZXQsIHNpemVfdCBzaWdzZXRzaXplKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJl Z3Bhcm0oMCkpKSBsb25nIHN5c19ydF9zaWdwcm9jbWFzayhpbnQgaG93LCBzaWdzZXRfdCAqc2V0 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ3NldF90ICpvc2V0LCBzaXplX3Qg c2lnc2V0c2l6ZSk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNf cnRfc2lndGltZWR3YWl0KGNvbnN0IHNpZ3NldF90ICp1dGhlc2UsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2lnaW5mb190ICp1aW5mbywgY29uc3Qgc3RydWN0IHRpbWVzcGVjICp1 dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpZ3NldHNpemUpOwpl eHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NpZ2FsdHN0YWNrKGNv bnN0IHN0YWNrX3QgKnVzcywgc3RhY2tfdCAqdW9zcyk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChy ZWdwYXJtKDApKSkgbG9uZyBzeXNfc2lncGVuZGluZyhvbGRfc2lnc2V0X3QgKnNldCk7CmV4dGVy biBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2lncHJvY21hc2soaW50IGhv dywgb2xkX3NpZ3NldF90ICpzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xk X3NpZ3NldF90ICpvc2V0KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQg c3lzX3NpZ3N1c3BlbmQoaW50IGhpc3RvcnkwLCBpbnQgaGlzdG9yeTEsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2xkX3NpZ3NldF90IG1hc2spOwoKCmV4dGVybiBfX2F0dHJpYnV0 ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfZ2V0aG9zdG5hbWUoY2hhciAqbmFtZSwgaW50IGxl bik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2V0aG9zdG5h bWUoY2hhciAqbmFtZSwgaW50IGxlbik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDAp KSkgbG9uZyBzeXNfc2V0ZG9tYWlubmFtZShjaGFyICpuYW1lLCBpbnQgbGVuKTsKZXh0ZXJuIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19nZXRybGltaXQodW5zaWduZWQgaW50 IHJlc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBybGltaXQg KnJsaW0pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NldHNp ZCh2b2lkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19nZXRz aWQocGlkX3QgcGlkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5 c19nZXRwZ2lkKHBpZF90IHBpZCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg bG9uZyBzeXNfc2V0cGdpZChwaWRfdCBwaWQsIHBpZF90IHBnaWQpOwpleHRlcm4gX19hdHRyaWJ1 dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2dldGdyb3VwcyhpbnQgZ2lkc2V0c2l6ZSwgZ2lk X3QgKmdyb3VwbGlzdCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBz eXNfc2V0Z3JvdXBzKGludCBnaWRzZXRzaXplLCBnaWRfdCAqZ3JvdXBsaXN0KTsKZXh0ZXJuIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZXRwcmlvcml0eShpbnQgd2hpY2gs IGludCB3aG8sIGludCBuaWNldmFsKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp KSBsb25nIHN5c19nZXRwcmlvcml0eShpbnQgd2hpY2gsIGludCB3aG8pOwpleHRlcm4gX19hdHRy aWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3JlYm9vdChpbnQgbWFnaWMxLCBpbnQgbWFn aWMyLCB1bnNpZ25lZCBpbnQgY21kLAogICAgICAgICAgICAgICAgdm9pZCAqIGFyZyk7CmV4dGVy biBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2V0Z2lkKGdpZF90IGdpZCk7 CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2V0dWlkKHVpZF90 IHVpZCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfdGltZXMo c3RydWN0IHRtcyAqIHRidWYpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv bmcgc3lzX3VtYXNrKGludCBtYXNrKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp KSBsb25nIHN5c19wcmN0bChpbnQgb3B0aW9uLCB1bnNpZ25lZCBsb25nIGFyZzIsCiAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGFyZzMsIHVuc2lnbmVkIGxvbmcgYXJnNCwgdW5zaWduZWQg bG9uZyBhcmc1KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19z ZXRyZXVpZCh1aWRfdCBydWlkLCB1aWRfdCBldWlkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJl Z3Bhcm0oMCkpKSBsb25nIHN5c19zZXRyZWdpZChnaWRfdCByZ2lkLCBnaWRfdCBlZ2lkKTsKCgpl eHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2dldHRpbWVvZmRheShz dHJ1Y3QgdGltZXZhbCAqdHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHRpbWV6b25lICp0eik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBz eXNfc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0diwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgdGltZXpvbmUgKnR6KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJl Z3Bhcm0oMCkpKSBsb25nIHN5c19zdGltZShpbnQgKiB0cHRyKTsKZXh0ZXJuIF9fYXR0cmlidXRl X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c190aW1lKGludCAqIHRsb2MpOwoKCgpleHRlcm4gX19h dHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHVuc2lnbmVkIGxvbmcgc3lzX2FsYXJtKHVuc2lnbmVk IGludCBzZWNvbmRzKTsKCgpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcg c3lzX2dldHBpZCh2b2lkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25n IHN5c19nZXRwcGlkKHZvaWQpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv bmcgc3lzX2dldHVpZCh2b2lkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs b25nIHN5c19nZXRldWlkKHZvaWQpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp IGxvbmcgc3lzX2dldGdpZCh2b2lkKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp KSBsb25nIHN5c19nZXRlZ2lkKHZvaWQpOwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o MCkpKSBsb25nIHN5c19nZXR0aWQodm9pZCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDApKSkgbG9uZyBzeXNfbmFub3NsZWVwKHN0cnVjdCB0aW1lc3BlYyAqcnF0cCwKICAgICAgICAg ICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqcm10cCk7CgoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChy ZWdwYXJtKDApKSkgbG9uZyBzeXNfc2V0cmV1aWQxNihvbGRfdWlkX3QgcnVpZCwgb2xkX3VpZF90 IGV1aWQpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NldHJl Z2lkMTYob2xkX2dpZF90IHJnaWQsIG9sZF9naWRfdCBlZ2lkKTsKZXh0ZXJuIF9fYXR0cmlidXRl X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19nZXRncm91cHMxNihpbnQgZ2lkc2V0c2l6ZSwgb2xk X2dpZF90ICpncm91cGxpc3QpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv bmcgc3lzX3NldGdyb3VwczE2KGludCBnaWRzZXRzaXplLCBvbGRfZ2lkX3QgKmdyb3VwbGlzdCk7 CgoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgc3NpemVfdCBzeXNfc2VuZGZp bGUoaW50IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqb2Zmc2V0LAogICAgICAgICAgICAgICAg c2l6ZV90IGNvdW50KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5 c19tc3luYyh1bnNpZ25lZCBsb25nIHN0YXJ0LCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpOwpleHRl cm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX21hZHZpc2UodW5zaWduZWQg bG9uZyBzdGFydCwgc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgIGludCBiZWhhdmlvcik7CmV4 dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfbWluY29yZSh1bnNpZ25l ZCBsb25nIHN0YXJ0LCBzaXplX3QgbGVuLAogICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAq IHZlYyk7CgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB1bnNpZ25lZCBsb25n IHN5c19icmsodW5zaWduZWQgbG9uZyBicmspOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFy bSgwKSkpIGxvbmcgc3lzX211bm1hcCh1bnNpZ25lZCBsb25nIGFkZHIsIHNpemVfdCBsZW4pOwoK CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfbXByb3RlY3QodW5z aWduZWQgbG9uZyBzdGFydCwgc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgcHJvdCk7CgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19z b2NrZXQoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCk7CmV4dGVybiBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc29ja2V0cGFpcihpbnQgZmFtaWx5LCBpbnQg dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJvdG9jb2wsIGludCB1 c29ja3ZlY1syXSk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNf YmluZChpbnQgZmQsIHN0cnVjdCBzb2NrYWRkciAqdW15YWRkciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgYWRkcmxlbik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDApKSkgbG9uZyBzeXNfbGlzdGVuKGludCBmZCwgaW50IGJhY2tsb2cpOwpleHRlcm4gX19hdHRy aWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2FjY2VwdChpbnQgZmQsIHN0cnVjdCBzb2Nr YWRkciAqdXBlZXJfc29ja2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 ICp1cGVlcl9hZGRybGVuKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25n IHN5c19jb25uZWN0KGludCBmZCwgc3RydWN0IHNvY2thZGRyICp1c2VydmFkZHIsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFkZHJsZW4pOwpleHRlcm4gX19hdHRyaWJ1dGVf XygocmVncGFybSgwKSkpIGxvbmcgc3lzX2dldHNvY2tuYW1lKGludCBmZCwgc3RydWN0IHNvY2th ZGRyICp1c29ja2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp1c29j a2FkZHJfbGVuKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19n ZXRwZWVybmFtZShpbnQgZmQsIHN0cnVjdCBzb2NrYWRkciAqdXNvY2thZGRyLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCAqdXNvY2thZGRyX2xlbik7CmV4dGVybiBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2VuZHRvKGludCBmZCwgdm9pZCAqIGJ1ZmYs IHNpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmxh Z3MsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgYWRkcl9sZW4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcg c3lzX3NlbmQoaW50IGZkLCB2b2lkICogYnVmZiwgc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzKTsKZXh0ZXJuIF9fYXR0cmli dXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19yZWN2ZnJvbShpbnQgZmQsIHZvaWQgKiB1YnVm LCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBm bGFncywgc3RydWN0IHNvY2thZGRyICphZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCAqYWRkcl9sZW4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv bmcgc3lzX3NldHNvY2tvcHQoaW50IGZkLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm9wdHZhbCwgaW50IG9wdGxlbik7CmV4dGVy biBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfZ2V0c29ja29wdChpbnQgZmQs IGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhciAqb3B0dmFsLCBpbnQgKm9wdGxlbik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDApKSkgbG9uZyBzeXNfc2h1dGRvd24oaW50IGZkLCBpbnQgaG93KTsKZXh0ZXJuIF9fYXR0cmli dXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW5kbXNnKGludCBmZCwgc3RydWN0IG1zZ2hk ciAqbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZsYWdzKTsK ZXh0ZXJuIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19yZWN2bXNnKGludCBm ZCwgc3RydWN0IG1zZ2hkciAqbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBmbGFncyk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9u ZyBzeXNfc29ja2V0Y2FsbChpbnQgY2FsbCwgdW5zaWduZWQgbG9uZyAqYXJncyk7CiMgMTIgInN5 c2k4Ni5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3VhY2Nlc3Mu aCIgMQojIDM1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpl eHRlcm4gaW50IF9fdmVyaWZ5X3dyaXRlKGNvbnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CiMg NjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0YXRpYyBp bmxpbmUgaW50IHZlcmlmeV9hcmVhKGludCB0eXBlLCBjb25zdCB2b2lkICogYWRkciwgdW5zaWdu ZWQgbG9uZyBzaXplKQp7CiAgICAgICAgcmV0dXJuICgoeyB1bnNpZ25lZCBsb25nIGZsYWcsc3Vt OyBhc20oImFkZGwgJTMsJTEgOyBzYmJsICUwLCUwOyBjbXBsICUxLCU0OyBzYmJsICQwLCUwIiA6 Ij0mciIgKGZsYWcpLCAiPXIiIChzdW0pIDoiMSIgKGFkZHIpLCJnIiAoKGludCkoc2l6ZSkpLCJn IiAoZ2V0X2N1cnJlbnQoKS0+YWRkcl9saW1pdC5zZWcpKTsgZmxhZzsgfSkgPT0gMCkgPyAwIDog LTE0Owp9CiMgODEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgi CnN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgaW5z biwgZml4dXA7Cn07CgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2VhcmNoX2V4Y2VwdGlvbl90YWJs ZSh1bnNpZ25lZCBsb25nKTsKIyAxMDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2Fz bS91YWNjZXNzLmgiCmV4dGVybiB2b2lkIF9fZ2V0X3VzZXJfMSh2b2lkKTsKZXh0ZXJuIHZvaWQg X19nZXRfdXNlcl8yKHZvaWQpOwpleHRlcm4gdm9pZCBfX2dldF91c2VyXzQodm9pZCk7CiMgMTI3 ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gdm9p ZCBfX3B1dF91c2VyXzEodm9pZCk7CmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfMih2b2lkKTsKZXh0 ZXJuIHZvaWQgX19wdXRfdXNlcl80KHZvaWQpOwpleHRlcm4gdm9pZCBfX3B1dF91c2VyXzgodm9p ZCk7CgpleHRlcm4gdm9pZCBfX3B1dF91c2VyX2JhZCh2b2lkKTsKIyAxODggIi91c3Ivc3JjL2xp bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0cnVjdCBfX2xhcmdlX3N0cnVjdCB7 IHVuc2lnbmVkIGxvbmcgYnVmWzEwMF07IH07CiMgMjIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gbG9uZyBfX2dldF91c2VyX2JhZCh2b2lkKTsK IyAzMDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0YXRp YyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2dlbmVyaWNfY29weV9mcm9tX3VzZXJfbm9jaGVjayh2 b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8g eyBpbnQgX19kMCwgX19kMTsgX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4i ICIJbW92bCAlMywlMFxuIiAiMToJcmVwOyBtb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1 cCxcImF4XCJcbiIgIjM6CWxlYSAwKCUzLCUwLDQpLCUwXG4iICI0OglwdXNobCAlMFxuIiAiCXB1 c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2JcbiIgIglwb3Bs ICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlv biBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5s b25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj0mYyIobiksICI9JkQiIChfX2QwKSwgIj0mUyIg KF9fZDEpIDogInIiKG4gJiAzKSwgIjAiKG4gLyA0KSwgIjEiKHRvKSwgIjIiKGZyb20pIDogIm1l bW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3RhdGljIGlubGluZSB1 bnNpZ25lZCBsb25nCl9fZ2VuZXJpY19jb3B5X3RvX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29u c3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwg X19kMTsgX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIJbW92bCAlMywl MFxuIiAiMToJcmVwOyBtb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIg IjM6CWxlYSAwKCUzLCUwLDQpLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0 aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJ LmxvbmcgMWIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPSZjIihuKSwgIj0mRCIgKF9fZDApLCAiPSZT IiAoX19kMSkgOiAiciIobiAmIDMpLCAiMCIobiAvIDQpLCAiMSIodG8pLCAiMiIoZnJvbSkgOiAi bWVtb3J5Iik7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CiMgNTQzICIvdXNyL3Ny Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgp1bnNpZ25lZCBsb25nIF9fZ2Vu ZXJpY19jb3B5X3RvX3VzZXIodm9pZCAqLCBjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwp1 bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcih2b2lkICosIGNvbnN0IHZvaWQg KiwgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFu dF9jb3B5X3RvX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcg bikKewogICAgICAgIHByZWZldGNoKGZyb20pOwogICAgICAgIGlmICgoKHsgdW5zaWduZWQgbG9u ZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2Ji bCAkMCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiICh0byksImciICgoaW50KShu KSksImciIChnZXRfY3VycmVudCgpLT5hZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSkK ICAgICAgICAgICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVm YXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNl Y3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMjoJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJl dmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5s b25nIDBiLDJiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAo X19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsg Y2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNi XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUwXG4iICI0 OglpbmNsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFi bGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJc biIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIx Iihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9f YXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4i ICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWFkZGwgJDIs JTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFc IlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnBy ZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20p LCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBf X3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIg IjM6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICI0OglzaGwgJDIsJTBcbiIgIjU6CWFk ZGwgJDIsJTBcbiIgIjY6CWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNl Y3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIg IgkubG9uZyAxYiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwg Ij0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQp IDogIm1lbW9yeSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoK c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIodm9p ZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIGlmICgo KHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsg Y21wbCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiIChm cm9tKSwiZyIgKChpbnQpKG4pKSwiZyIgKGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7 IGZsYWc7IH0pID09IDApKQogICAgICAgICAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dp dGNoIChuICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92 c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIyOglwdXNobCAlMFxuIiAi CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglw b3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWptcCAxYlxuIiAiLnBy ZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgku bG9uZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIg KF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7 IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zz YlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJ cHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0 b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglpbmNs ICUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc biIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICIu cHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAi CS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAi PSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkg OiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVw OyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4i ICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAi CXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJ c2hsICQyLCUwXG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiNDoJcHVzaGwgJSVlYXhc biIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4XG4iICIJYWRk bCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxl LFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4i ICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIo ZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2Fz bV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3Zz YlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXB1c2hsICUwXG4iICIJ cHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0 b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwl MFxuIiAiCWFkZGwgJDMsJTBcbiIgIglqbXAgMmJcbiIgIjU6CXB1c2hsICUlZWF4XG4iICIJeG9y bCAlJWVheCwlJWVheFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJ YWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNjoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4 LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJaW5jbCAlMFxuIiAiCWptcCAz YlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWdu IDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIg Ii5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihm cm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDAp OwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/ IChfX2J1aWx0aW5fY29uc3RhbnRfcCgobikpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1z ZXQoKCh0bykpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgobikpKSA6IF9f Y29uc3RhbnRfY19tZW1zZXQoKCh0bykpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgw KSkpLCgobikpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKG4pKSA/IF9fbWVtc2V0X2dlbmVy aWMoKCgodG8pKSksKCgoMCkpKSwoKChuKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCh0bykpLCgo MCkpLCgobikpKSkpOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcKX19jb25zdGFudF9jb3B5X3RvX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29uc3Qgdm9p ZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsg c3dpdGNoIChuICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsg bW92c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIyOglzaGwgJDIsJTBc biIgIglqbXAgMWJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxu IiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAi PSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkg OiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVw OyBtb3ZzbFxuIiAiMToJbW92c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4i ICIzOglzaGwgJDIsJTBcbiIgIjQ6CWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xu IiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIs M2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2Qw KSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnki KTsgYnJlYWs7IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4i ICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXNobCAk MiwlMFxuIiAiNDoJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2Vj dGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAi CS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZE IiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVh azsgY2FzZSAzOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1v dnN3XG4iICIyOgltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6 CXNobCAkMiwlMFxuIiAiNToJYWRkbCAkMiwlMFxuIiAiNjoJaW5jbCAlMFxuIiAiCWptcCAzYlxu IiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRc biIgIgkubG9uZyAwYiw0YlxuIiAiCS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5w cmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9t KSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwog ICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFu dF9jb3B5X2Zyb21fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNp Z25lZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBzd2l0Y2ggKG4gJiAz KSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMTpc biIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVl YXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXBvcGwgJSVlYXhc biIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIg Ii5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJi XG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAi MSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBf X2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxu IiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVh eFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc2JcbiIgIglw b3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWluY2wgJTBcbiIgIglq bXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3Ni XG4iICIJcG9wbCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xu IiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIs M2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2Qw KSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnki KTsgYnJlYWs7IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4i ICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hs ICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9z bFxuIiAiCXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBc biIgIglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwg JSVlYXgsJSVlYXhcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQyLCUwXG4i ICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIg IgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91 cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIi KHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18gX192b2xh dGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4iICIzOlxu IiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVh eFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dcbiIgIglz dG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRk bCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNToJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUl ZWF4XG4iICIJc3Rvc3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQzLCUw XG4iICIJam1wIDJiXG4iICI2OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIg IglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDNiXG4iICIucHJl dmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5s b25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnByZXZpb3Vz IiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIo dG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgICAgICAg cmV0dXJuIG47Cn0KIyA1OTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNj ZXNzLmgiCmxvbmcgc3RybmNweV9mcm9tX3VzZXIoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMs IGxvbmcgY291bnQpOwpsb25nIF9fc3RybmNweV9mcm9tX3VzZXIoY2hhciAqZHN0LCBjb25zdCBj aGFyICpzcmMsIGxvbmcgY291bnQpOwoKbG9uZyBzdHJubGVuX3VzZXIoY29uc3QgY2hhciAqc3Ry LCBsb25nIG4pOwp1bnNpZ25lZCBsb25nIGNsZWFyX3VzZXIodm9pZCAqbWVtLCB1bnNpZ25lZCBs b25nIGxlbik7CnVuc2lnbmVkIGxvbmcgX19jbGVhcl91c2VyKHZvaWQgKm1lbSwgdW5zaWduZWQg bG9uZyBsZW4pOwojIDEzICJzeXNpODYuYyIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAv aW5jbHVkZS9hYmkvdXRpbC90cmFjZS5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p bmNsdWRlL2FiaS91dGlsL3RyYWNlLmgiCiNpZGVudCAiJVclICVHJSIKIyAzMyAiL3Vzci9zcmMv bGludXgtMi40LjIwL2luY2x1ZGUvYWJpL3V0aWwvdHJhY2UuaCIKZW51bSB7CiAgICAgICAgQUJJ X1RSQUNFX0FQSSA9IDB4MDAwMDAwMDEsCiAgICAgICAgQUJJX1RSQUNFX0lPQ1RMID0gMHgwMDAw MDAwMiwKICAgICAgICBBQklfVFJBQ0VfSU9DVExfRiA9IDB4MDAwMDAwMDQsCiAgICAgICAgQUJJ X1RSQUNFX1NJR05BTCA9IDB4MDAwMDAwMDgsCiAgICAgICAgQUJJX1RSQUNFX1NJR05BTF9GID0g MHgwMDAwMDAxMCwKICAgICAgICBBQklfVFJBQ0VfU09DS1NZUyA9IDB4MDAwMDAwMjAsCiAgICAg ICAgQUJJX1RSQUNFX1NUUkVBTVMgPSAweDAwMDAwMDQwLAogICAgICAgIEFCSV9UUkFDRV9VTklN UEwgPSAweDAwMDAwMTAwLAp9OwpleHRlcm4gdV9pbnQgYWJpX3RyYWNlZmxnOwojIDE1ICJzeXNp ODYuYyIgMgojIDExMSAic3lzaTg2LmMiCnN0cnVjdCBzc2QgewogICAgICAgIHVpbnQzMl90IHNl bDsKICAgICAgICB1aW50MzJfdCBibzsKICAgICAgICB1aW50MzJfdCBsczsKICAgICAgICB1aW50 MzJfdCBhY2MxOwogICAgICAgIHVpbnQzMl90IGFjYzI7Cn07CgoKaW50CnN2cjRfc3lzaTg2KGlu dCBjbWQsIHZvaWQgKmFyZzEsIGludCBhcmcyKQp7CiAgICAgICAgc3dpdGNoIChjbWQpIHsKICAg ICAgICBjYXNlIDQwOgoKCgoKCgoKICAgICAgICAgICAgICAgIHJldHVybiAoeyBsb25nIF9fcHVf ZXJyID0gLTE0OyBfX3R5cGVvZl9fKCooKGFyZzEpKSkgKl9fcHVfYWRkciA9ICgoYXJnMSkpOyBp ZiAoKCh7IHVuc2lnbmVkIGxvbmcgZmxhZyxzdW07IGFzbSgiYWRkbCAlMywlMSA7IHNiYmwgJTAs JTA7IGNtcGwgJTEsJTQ7IHNiYmwgJDAsJTAiIDoiPSZyIiAoZmxhZyksICI9ciIgKHN1bSkgOiIx IiAoX19wdV9hZGRyKSwiZyIgKChpbnQpKHNpemVvZigqKGFyZzEpKSkpLCJnIiAoZ2V0X2N1cnJl bnQoKS0+YWRkcl9saW1pdC5zZWcpKTsgZmxhZzsgfSkgPT0gMCkpIGRvIHsgX19wdV9lcnIgPSAw OyBzd2l0Y2ggKChzaXplb2YoKihhcmcxKSkpKSB7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxl X18oICIxOgltb3YiImIiIiAlIiJiIiIxLCUyXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwi YXhcIlxuIiAiMzoJbW92bCAlMywlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2Vj dGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAxYiwzYlxuIiAi LnByZXZpb3VzIiA6ICI9ciIoX19wdV9lcnIpIDogImlxIiAoKChfX3R5cGVvZl9fKCooYXJnMSkp KSgzKSkpLCAibSIoKCooc3RydWN0IF9fbGFyZ2Vfc3RydWN0ICopKF9fcHVfYWRkcikpKSwgImki KC0xNCksICIwIihfX3B1X2VycikpOyBicmVhazsgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVf XyggIjE6CW1vdiIidyIiICUiInciIjEsJTJcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJh eFwiXG4iICIzOgltb3ZsICUzLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0 aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDFiLDNiXG4iICIu cHJldmlvdXMiIDogIj1yIihfX3B1X2VycikgOiAiaXIiICgoKF9fdHlwZW9mX18oKihhcmcxKSkp KDMpKSksICJtIigoKihzdHJ1Y3QgX19sYXJnZV9zdHJ1Y3QgKikoX19wdV9hZGRyKSkpLCAiaSIo LTE0KSwgIjAiKF9fcHVfZXJyKSk7IGJyZWFrOyBjYXNlIDQ6IF9fYXNtX18gX192b2xhdGlsZV9f KCAiMToJbW92IiJsIiIgJSIiIiIxLCUyXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhc IlxuIiAiMzoJbW92bCAlMywlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlv biBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAxYiwzYlxuIiAiLnBy ZXZpb3VzIiA6ICI9ciIoX19wdV9lcnIpIDogImlyIiAoKChfX3R5cGVvZl9fKCooYXJnMSkpKSgz KSkpLCAibSIoKCooc3RydWN0IF9fbGFyZ2Vfc3RydWN0ICopKF9fcHVfYWRkcikpKSwgImkiKC0x NCksICIwIihfX3B1X2VycikpOyBicmVhazsgY2FzZSA4OiBfX2FzbV9fIF9fdm9sYXRpbGVfXygg IjE6CW1vdmwgJSVlYXgsMCglMilcbiIgIjI6CW1vdmwgJSVlZHgsNCglMilcbiIgIjM6XG4iICIu c2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICI0Ogltb3ZsICUzLCUwXG4iICIJam1wIDNiXG4iICIu cHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAi CS5sb25nIDFiLDRiXG4iICIJLmxvbmcgMmIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPXIiKF9fcHVf ZXJyKSA6ICJBIiAoKChfX3R5cGVvZl9fKCooYXJnMSkpKSgzKSkpLCAiciIgKF9fcHVfYWRkciks ICJpIigtMTQpLCAiMCIoX19wdV9lcnIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fcHV0X3VzZXJfYmFk KCk7IH0gfSB3aGlsZSAoMCk7IF9fcHVfZXJyOyB9KTsKICAgICAgICBjYXNlIDU0OgoKCgoKICAg ICAgICAgICAgICAgIHJldHVybiBzeXNfc3RpbWUoYXJnMSk7CiAgICAgICAgY2FzZSA1NjoKCgoK CgoKICAgICAgICAgICAgICAgIHJldHVybiBzeXNfc2V0aG9zdG5hbWUoYXJnMSwgNyk7CiAgICAg ICAgY2FzZSA2NToKICAgICAgICAgICAgewoKCgogICAgICAgICAgICAgICAgc3RydWN0IHN5c2lu Zm8gaTsKCiAgICAgICAgICAgICAgICBzaV9tZW1pbmZvKCZpKTsKICAgICAgICAgICAgICAgIHJl dHVybiAoaS50b3RhbHJhbSA8PCAxMik7CiAgICAgICAgICAgIH0KICAgICAgICBjYXNlIDc1Ogog ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3NkIHM7CgogICAgICAgICAgICAg ICAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplb2Yoc3RydWN0IHNzZCkpID8gX19jb25z dGFudF9jb3B5X2Zyb21fdXNlcigoJnMpLChhcmcxKSwoc2l6ZW9mKHN0cnVjdCBzc2QpKSkgOiBf X2dlbmVyaWNfY29weV9mcm9tX3VzZXIoKCZzKSwoYXJnMSksKHNpemVvZihzdHJ1Y3Qgc3NkKSkp KSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xNDsKCiAgICAgICAgICAgICAgICBw cmludGsoIlNJODZEU0NSKCV4LCV4LCV4LCV4LCV4KVxuIiwKICAgICAgICAgICAgICAgICAgICAg ICAgIHMuc2VsLCBzLmJvLCBzLmxzLCBzLmFjYzEsIHMuYWNjMik7CiAgICAgICAgICAgICAgICBy ZXR1cm4gLTIyOwogICAgICAgICAgICB9CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg IGRvIHsgaWYgKChhYmlfdHJhY2VmbGcgJiAoQUJJX1RSQUNFX0FQSSkpKSBkbyB7IHByaW50aygi PDc+IiAiWyVzOiVkXTogIiwgZ2V0X2N1cnJlbnQoKS0+Y29tbSwgZ2V0X2N1cnJlbnQoKS0+cGlk KTsgcHJpbnRrKCJ1bnN1cHBvcnRlZCBzeXNpODYgc3ViY2FsbCAlZFxuIiwgY21kKTsgfSB3aGls ZSgwKTsgfSB3aGlsZSgwKTsKICAgICAgICAgICAgICAgIHJldHVybiAtMjI7CiAgICAgICAgfQp9 Cg==