From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id oAoZN/2kjV9+RwAAWB0awg (envelope-from ) for ; Mon, 19 Oct 2020 10:38:53 -0400 Received: by simark.ca (Postfix, from userid 112) id DE48C1EDF4; Mon, 19 Oct 2020 10:38:53 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED, MAILING_LIST_MULTI,T_DKIM_INVALID,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id A05371E58C for ; Mon, 19 Oct 2020 10:38:52 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 50BCA3858020; Mon, 19 Oct 2020 14:38:52 +0000 (GMT) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2050.outbound.protection.outlook.com [40.107.244.50]) by sourceware.org (Postfix) with ESMTPS id 08A533858020 for ; Mon, 19 Oct 2020 14:38:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 08A533858020 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=netapp.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Caleb.Battig@netapp.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EEf4qb/rsdvcRou18/yN1XQdOlssZd57vf7fsLJQ/6qDJ6+mm+O98TpjJlPgifnkFb0h7WqwcO9WFzmoJY/3GzAqiwHNGzsXpPq6U/C/cidrsBJPpI1yEpdGF5gJtYv0PKQKk7eSInM1dx2u0ZBhF7Drrs/T+ZYWUT576lqMvxGdrM7aCkai1SHXgguGXNo0O0vItubSuiFydhUwOT8VrIm4DU4smvIB/9gUeBpo5nsgqI3tjm9WWH4SNXfhIfCTPdFXscPF6GLvwUedoa+7rlboMZZRH+/XrHF/LKOlC+DTpKOsWKiZYZ/YT2lSMGhjQR6N7rqPcpf+HpOgYA+Y5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1CXjCIfAQdFqqr8TT0xkFlrAVwcMcwYRNwGKRkAPErA=; b=kbvgfwX5JSVbhxALkzfDUKsHLeTgV2SyahbiqIWbp89vIOaF6zRRch++qmmUh/rHa2x6Y8Odt9joCKZNF8wwhTVw4NYc/vbO7EpTQlUuh19g78Fq8EfQdPr/pHmrYLAkxvsCL7wyqFyjx5biueICvK67ki3o48UEojviNJ2pgUb+6b88JPtSuttzSa4PMlrRKekjOtQdLIJd390oyGPnz25XYcntNTJinzwCc80n8hyqiBq+xG2SAHUxkAo8LPhO+NhxsE/P3AB+OyFFmByXmVA54nb2srtgecUwCTyqZu+3+E/ILfZohYl3BgfPjZGCTQmLbrwHM1Mm0Hm79naLlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=netapp.com; dmarc=pass action=none header.from=netapp.com; dkim=pass header.d=netapp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netapp.onmicrosoft.com; s=selector1-netapp-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1CXjCIfAQdFqqr8TT0xkFlrAVwcMcwYRNwGKRkAPErA=; b=nfRVCDnAQeKqP65Qd/NdMLaLkLaGOHsgS7QLF5lrXGfSwYm2WHqgM2+d6qxMflc9eJw9VXxHN4VaDanZ/tek3ncJjCD7qAsVZuE0iRluvG5mapcz7P9d74s43C8/NpbcTpwS0TFuDvDGz9pRSMHzkc306/1q/u9NgTPdyb8XWZs= Received: from BL0PR06MB4418.namprd06.prod.outlook.com (2603:10b6:208:27::11) by BLAPR06MB6867.namprd06.prod.outlook.com (2603:10b6:208:291::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.25; Mon, 19 Oct 2020 14:38:45 +0000 Received: from BL0PR06MB4418.namprd06.prod.outlook.com ([fe80::ac89:98f:e0eb:8936]) by BL0PR06MB4418.namprd06.prod.outlook.com ([fe80::ac89:98f:e0eb:8936%3]) with mapi id 15.20.3477.028; Mon, 19 Oct 2020 14:38:45 +0000 From: "Battig, Caleb" To: Simon Marchi , "gdb-patches@sourceware.org" Subject: Re: [PING][PING] Added x86_64 stub for debugging embedded systems running on Intel x86_64 processor architecture. Thread-Topic: [PING][PING] Added x86_64 stub for debugging embedded systems running on Intel x86_64 processor architecture. Thread-Index: AQHWmAybifTA+GUXJkar7BijWkKKJ6mUUFOmgArEsdqAAANQAIAAAmec Date: Mon, 19 Oct 2020 14:38:45 +0000 Message-ID: References: , <84cb0009-cbd5-975a-cdaf-ac8cd77686aa@simark.ca> In-Reply-To: <84cb0009-cbd5-975a-cdaf-ac8cd77686aa@simark.ca> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: simark.ca; dkim=none (message not signed) header.d=none;simark.ca; dmarc=none action=none header.from=netapp.com; x-originating-ip: [73.229.200.125] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 74039854-2f80-4b36-0b09-08d8743caed9 x-ms-traffictypediagnostic: BLAPR06MB6867: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: C4gR3L9cjqk+9NcRqKG2u/FBgODlOF8gNiB+zTwe1sy7hz/M4+G7GRIoPt228kjDvYQRoPNKSAtfbXZDxfMlMsFxHKdWu1QP9uL+sjgEeZehBl93U4n0MckDjL6sts/szr1/+U66qjtrVFFLmbiCZxCa6EDB/X1u28tP3Jfz5Hc2zKHrRaj/qxLs1RbtejswEJ4j0doTtJ0/82d3AdwwR72+bTPAjpW+zsGs7U7+5Lq6oBdOPMGwolkmAb1MZKG6bZRtSljZSDZ+BH4na8BajoMX8vlyTzgxkV6dLvCF8GwYpOn23qfD91LieQoeMySHkuk6HgXmaMsQrz5XM8O4ienWCDGZwiQWv3ldoggpMzUCylgP9inciANoC4c8+qpb2csTeT69pzL1yCqvhhnjYw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL0PR06MB4418.namprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(39860400002)(396003)(346002)(366004)(136003)(71200400001)(478600001)(110136005)(52536014)(76116006)(2906002)(4326008)(166002)(19627405001)(83380400001)(66476007)(66576008)(316002)(66556008)(66946007)(66446008)(64756008)(5660300002)(54906003)(53546011)(6506007)(99936003)(107886003)(9686003)(86362001)(55016002)(7696005)(33656002)(8676002)(26005)(8936002)(4001150100001)(186003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: mZVQii17yp3wKN7Erbwj0Rupffw2f2ScLM5Rq+dt+bXNzktZbuFrX6CKWyS18MuuYAbUct7d0XfbGw/jOjLsiWJ1ByA5kBAX304aAK9x0L/KkkA7nH5dvbJqiyxhW613qbms9oOFKA+k3RuAYlJ/hGN4euj8u4qN8eawhIPzr1mErth0fz3kiCuin/hAxsy/MAX/Ylsg8kWaD1RaspNz4ALD2rVPOIkX5CU2LWg7irGvxkEVjJF1uDv/iZVGg2dDTXa4xsBi56QQZ2mG/llzOPApo3/yuAe1J3/4Lj13C3ZeqKeyU55JiO49PxjvB0cnz2NGLHHENwPpnNAyXUa7mVRRuzEVA35cPeeNCU0Y+Je8C2p+byS/PpyLbgFbV8hJOJPuGSLa5eHc5qBWL5B2sVdE1KkcSkwJ7ptFJ2D7yyBEROkNifdHIqfyh4dMeVywfiDC5IbVsgcm++5Bp6IlGRtfIAVOpKrWwHFcIoxj9TVB5+s0xUqW+PsUF1/D4pkN+IGyBa/m5Unc08y6+Cft7MvYu9+n/UI9XxtmHq7spfUw+84NkQDTpjQzlNb19kBgWd8C3qf2yuFUHyGzzytI7loIPOFFcPhJ1ONG17KvNzaz9fMEV99K42h3+jDzUpWGQDNbByra00EuR6NXGqJl5g== Content-Type: multipart/mixed; boundary="_006_BL0PR06MB441834606DBE2E6691D113A4E11E0BL0PR06MB4418namp_" MIME-Version: 1.0 X-OriginatorOrg: netapp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL0PR06MB4418.namprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 74039854-2f80-4b36-0b09-08d8743caed9 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Oct 2020 14:38:45.2605 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4b0911a0-929b-4715-944b-c03745165b3a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BbdvFmd3LRq6W6qcf5/8adx3OZXdiwi0YfYJXh8Qx0oUJAVYgRIr28XtCtf8kleOkMGm7T5HURvYC1K69QcZAQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR06MB6867 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Lovett, Stuart" , "Peikes, Wendy" Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" --_006_BL0PR06MB441834606DBE2E6691D113A4E11E0BL0PR06MB4418namp_ Content-Type: multipart/related; boundary="_005_BL0PR06MB441834606DBE2E6691D113A4E11E0BL0PR06MB4418namp_"; type="multipart/alternative" --_005_BL0PR06MB441834606DBE2E6691D113A4E11E0BL0PR06MB4418namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable For years there has been no gdb stub for use with embedded systems running Intel 64 bit CPUs. This is no longer the case. The new stub is based on the old i386-stub, but provides support for 64 bit registers and 64 bit interrupt descriptor table (IDT) entries. gdb/stubs/ChangeLog: * x86_64-stub.c: New file. Regards, Caleb Battig Platform Software Engineer NetApp 724.741.5226 Direct Phone Caleb.Battig@netapp.com netapp.com [cid:2067e5c2-14ba-4b3f-b51e-c9fa35a1c1e2] ________________________________ From: Simon Marchi Sent: Monday, October 19, 2020 8:29 AM To: Battig, Caleb ; gdb-patches@sourceware.org Cc: Lovett, Stuart ; Peikes, Wendy Subject: Re: [PING][PING] Added x86_64 stub for debugging embedded systems = running on Intel x86_64 processor architecture. NetApp Security WARNING: This is an external email. Do not click links or o= pen attachments unless you recognize the sender and know the content is saf= e. I somehow don't see the original message (in both my inbox and the web archive), just your two pings. Can you see it? Can you provide some explanations for the use case of these stubs, how they work and how to give them an "hello world" try? I've never used them, so I don't know anything about them. Having a quick run through would help. Thanks, Simon On 2020-10-19 10:18 a.m., Battig, Caleb wrote: > Any idea when someone will be able to review this? > > > Caleb Battig > > Platform Software Engineer > > > > NetApp > > 724.741.5226 Direct Phone > > Caleb.Battig@netapp.com > > netapp.com > > > [cid:23fa0611-f080-4c80-9c90-0baed481b138] > > ________________________________ > From: Battig, Caleb > Sent: Monday, October 12, 2020 11:51 AM > To: gdb-patches@sourceware.org > Cc: Lovett, Stuart ; Peikes, Wendy > Subject: [PING] Added x86_64 stub for debugging embedded systems running = on Intel x86_64 processor architecture. > > Caleb Battig > > Platform Software Engineer > > > > NetApp > > 724.741.5226 Direct Phone > > Caleb.Battig@netapp.com > > netapp.com > > > [cid:e9c15ec4-d103-4e38-b97d-ec06fdb0ac3a] > > ________________________________ > From: Battig, Caleb > Sent: Thursday, October 1, 2020 10:27 AM > To: gdb-patches@sourceware.org > Cc: Lovett, Stuart ; Peikes, Wendy > Subject: Added x86_64 stub for debugging embedded systems running on Inte= l x86_64 processor architecture. > > For years there has been no gdb stub for use with embedded systems > running Intel 64 bit CPUs. This is no longer the case. The new stub is > based on the old i386-stub, but provides support for 64 bit registers > and 64 bit interrupt descriptor table (IDT) entries. > > gdb/stubs/ChangeLog: > > * x86_64-stub.c: New file. > > Regards, > > > Caleb Battig > > Platform Software Engineer > > > > NetApp > > 724.741.5226 Direct Phone > > Caleb.Battig@netapp.com > > netapp.com > > > [cid:a768e24b-cca6-4214-b0a7-28b1f0fe33cd] > --_005_BL0PR06MB441834606DBE2E6691D113A4E11E0BL0PR06MB4418namp_ Content-Type: image/png; name="Outlook-kmk1ub2j.png" Content-Description: Outlook-kmk1ub2j.png Content-Disposition: inline; filename="Outlook-kmk1ub2j.png"; size=56478; creation-date="Mon, 19 Oct 2020 14:38:44 GMT"; modification-date="Mon, 19 Oct 2020 14:38:44 GMT" Content-ID: <2067e5c2-14ba-4b3f-b51e-c9fa35a1c1e2> Content-Transfer-Encoding: base64 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 --_005_BL0PR06MB441834606DBE2E6691D113A4E11E0BL0PR06MB4418namp_-- --_006_BL0PR06MB441834606DBE2E6691D113A4E11E0BL0PR06MB4418namp_ Content-Type: application/octet-stream; name="0001-Added-x86_64-stub-for-debugging-embedded-systems-run.patch" Content-Description: 0001-Added-x86_64-stub-for-debugging-embedded-systems-run.patch Content-Disposition: attachment; filename="0001-Added-x86_64-stub-for-debugging-embedded-systems-run.patch"; size=38278; creation-date="Mon, 19 Oct 2020 14:38:04 GMT"; modification-date="Mon, 19 Oct 2020 14:38:18 GMT" Content-Transfer-Encoding: base64 RnJvbSAzNWJjYTBkZjVkNjc5Yjc5MWRiZmU2MDc1ZWVjODAyZTk4N2Y0MGYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBiY2FsZWIgPGJjYWxlYkBuZXRhcHAuY29tPgpEYXRlOiBXZWQs IDMwIFNlcCAyMDIwIDE4OjQ0OjIxIC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gQWRkZWQgeDg2XzY0 IHN0dWIgZm9yIGRlYnVnZ2luZyBlbWJlZGRlZCBzeXN0ZW1zIHJ1bm5pbmcgb24KIEludGVsIHg4 Nl82NCBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJlLgoKRm9yIHllYXJzIHRoZXJlIGhhcyBiZWVuIG5v IGdkYiBzdHViIGZvciB1c2Ugd2l0aCBlbWJlZGRlZCBzeXN0ZW1zCnJ1bm5pbmcgSW50ZWwgNjQg Yml0IENQVXMuIFRoaXMgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLiBUaGUgbmV3IHN0dWIgaXMKYmFz ZWQgb24gdGhlIG9sZCBpMzg2LXN0dWIsIGJ1dCBwcm92aWRlcyBzdXBwb3J0IGZvciA2NCBiaXQg cmVnaXN0ZXJzCmFuZCA2NCBiaXQgaW50ZXJydXB0IGRlc2NyaXB0b3IgdGFibGUgKElEVCkgZW50 cmllcy4KCmdkYi9zdHVicy9DaGFuZ2VMb2c6CgoJKiB4ODZfNjQtc3R1Yi5jOiBOZXcgZmlsZS4K LS0tCiBnZGIvc3R1YnMveDg2XzY0LXN0dWIuYyB8IDEyNDkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMjQ5IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvc3R1YnMveDg2XzY0LXN0dWIuYwoKZGlmZiAt LWdpdCBhL2dkYi9zdHVicy94ODZfNjQtc3R1Yi5jIGIvZ2RiL3N0dWJzL3g4Nl82NC1zdHViLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNTRhYmE5MDcxZAotLS0gL2Rl di9udWxsCisrKyBiL2dkYi9zdHVicy94ODZfNjQtc3R1Yi5jCkBAIC0wLDAgKzEsMTI0OSBAQAor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioNCisNCisJCVRISVMgU09GVFdBUkUgSVMgTk9UIENPUFlSSUdI VEVEDQorDQorICAgSFAgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgZm9yIHVzZSBpbiB0aGUgcHVibGlj IGRvbWFpbi4gIEhQIG1ha2VzIG5vDQorICAgd2FycmFudHkgd2l0aCByZWdhcmQgdG8gdGhlIHNv ZnR3YXJlIG9yIGl0J3MgcGVyZm9ybWFuY2UgYW5kIHRoZQ0KKyAgIHVzZXIgYWNjZXB0cyB0aGUg c29mdHdhcmUgIkFTIElTIiB3aXRoIGFsbCBmYXVsdHMuDQorDQorICAgSFAgRElTQ0xBSU1TIEFO WSBXQVJSQU5USUVTLCBFWFBSRVNTIE9SIElNUExJRUQsIFdJVEggUkVHQVJEDQorICAgVE8gVEhJ UyBTT0ZUV0FSRSBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTDQor ICAgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4NCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQor ICogIEhlYWRlcjogcmVtY29tLmMsdiAxLjM0IDkxLzAzLzA5IDEyOjI5OjQ5IGdsZW5uZSBFeHAg JA0KKyAqDQorICogIE1vZHVsZSBuYW1lOiByZW1jb20uYyAkDQorICogIFJldmlzaW9uOiAxLjM0 ICQNCisgKiAgRGF0ZTogOTEvMDMvMDkgMTI6Mjk6NDkgJA0KKyAqICBDb250cmlidXRvcjogICAg IExha2UgU3RldmVucyBJbnN0cnVtZW50IERpdmlzaW9uJA0KKyAqDQorICogIERlc2NyaXB0aW9u OiAgICAgbG93IGxldmVsIHN1cHBvcnQgZm9yIGdkYiBkZWJ1Z2dlci4gJA0KKyAqDQorICogIENv bnNpZGVyYXRpb25zOiAgb25seSB3b3JrcyBvbiB0YXJnZXQgaGFyZHdhcmUgJA0KKyAqDQorICog IFdyaXR0ZW4gYnk6ICAgICAgR2xlbm4gRW5nZWwgJA0KKyAqICBNb2R1bGVTdGF0ZTogICAgIEV4 cGVyaW1lbnRhbCAkDQorICoNCisgKiAgTk9URVM6ICAgICAgICAgICBTZWUgQmVsb3cgJA0KKyAq DQorICogIE1vZGlmaWVkIGZvciAzODYgYnkgSmltIEtpbmdkb24sIEN5Z251cyBTdXBwb3J0Lg0K KyAqDQorICogIFRvIGVuYWJsZSBkZWJ1Z2dlciBzdXBwb3J0LCB0d28gdGhpbmdzIG5lZWQgdG8g aGFwcGVuLiAgT25lLCBhDQorICogIGNhbGwgdG8gc2V0X2RlYnVnX3RyYXBzKCkgaXMgbmVjZXNz YXJ5IGluIG9yZGVyIHRvIGFsbG93IGFueSBicmVha3BvaW50cw0KKyAqICBvciBlcnJvciBjb25k aXRpb25zIHRvIGJlIHByb3Blcmx5IGludGVyY2VwdGVkIGFuZCByZXBvcnRlZCB0byBnZGIuDQor ICogIFR3bywgYSBicmVha3BvaW50IG5lZWRzIHRvIGJlIGdlbmVyYXRlZCB0byBiZWdpbiBjb21t dW5pY2F0aW9uLiAgVGhpcw0KKyAqICBpcyBtb3N0IGVhc2lseSBhY2NvbXBsaXNoZWQgYnkgYSBj YWxsIHRvIGJyZWFrcG9pbnQoKS4gIEJyZWFrcG9pbnQoKQ0KKyAqICBzaW11bGF0ZXMgYSBicmVh a3BvaW50IGJ5IGV4ZWN1dGluZyBhIHRyYXAgIzEuDQorICoNCisgKiAgVGhlIGZ1bmN0aW9uIGV4 Y2VwdGlvbkhhbmRsZXIgKCkgaXMNCisgKiAgdXNlZCB0byBhdHRhY2ggYSBzcGVjaWZpYyBoYW5k bGVyIHRvIGEgc3BlY2lmaWMgMzg2IHZlY3RvciBudW1iZXIuDQorICogIEl0IHNob3VsZCB1c2Ug dGhlIHNhbWUgcHJpdmlsZWdlIGxldmVsIGl0IHJ1bnMgYXQuICBJdCBzaG91bGQNCisgKiAgaW5z dGFsbCBpdCBhcyBhbiBpbnRlcnJ1cHQgZ2F0ZSBzbyB0aGF0IGludGVycnVwdHMgYXJlIG1hc2tl ZA0KKyAqICB3aGlsZSB0aGUgaGFuZGxlciBydW5zLg0KKyAqDQorICogIEJlY2F1c2UgZ2RiIHdp bGwgc29tZXRpbWVzIHdyaXRlIHRvIHRoZSBzdGFjayBhcmVhIHRvIGV4ZWN1dGUgZnVuY3Rpb24N CisgKiAgY2FsbHMsIHRoaXMgcHJvZ3JhbSBjYW5ub3QgcmVseSBvbiB1c2luZyB0aGUgc3VwZXJ2 aXNvciBzdGFjayBzbyBpdA0KKyAqICB1c2VzIGl0J3Mgb3duIHN0YWNrIGFyZWEgcmVzZXJ2ZWQg aW4gdGhlIGludCBhcnJheSByZW1jb21TdGFjay4NCisgKg0KKyAqKioqKioqKioqKioqDQorICoN CisgKiAgICBUaGUgZm9sbG93aW5nIGdkYiBjb21tYW5kcyBhcmUgc3VwcG9ydGVkOg0KKyAqDQor ICogY29tbWFuZCAgICAgICAgICBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZXR1cm4gdmFsdWUNCisgKg0KKyAqICAgIGcgICAgICAgICAgICAgcmV0dXJuIHRoZSB2YWx1 ZSBvZiB0aGUgQ1BVIF9yZWdpc3RlcnMgIGhleCBkYXRhIG9yIEVOTg0KKyAqICAgIEcgICAgICAg ICAgICAgc2V0IHRoZSB2YWx1ZSBvZiB0aGUgQ1BVIF9yZWdpc3RlcnMgICAgIE9LIG9yIEVOTg0K KyAqDQorICogICAgbUFBLi5BQSxMTExMICBSZWFkIExMTEwgYnl0ZXMgYXQgYWRkcmVzcyBBQS4u QUEgICAgICBoZXggZGF0YSBvciBFTk4NCisgKiAgICBNQUEuLkFBLExMTEw6IFdyaXRlIExMTEwg Ynl0ZXMgYXQgYWRkcmVzcyBBQS5BQSAgICAgIE9LIG9yIEVOTg0KKyAqDQorICogICAgYyAgICAg ICAgICAgICBSZXN1bWUgYXQgY3VycmVudCBhZGRyZXNzICAgICAgICAgICAgICBTTk4gICAoIHNp Z25hbCBOTikNCisgKiAgICBjQUEuLkFBICAgICAgIENvbnRpbnVlIGF0IGFkZHJlc3MgQUEuLkFB ICAgICAgICAgICAgIFNOTg0KKyAqDQorICogICAgcyAgICAgICAgICAgICBTdGVwIG9uZSBpbnN0 cnVjdGlvbiAgICAgICAgICAgICAgICAgICBTTk4NCisgKiAgICBzQUEuLkFBICAgICAgIFN0ZXAg b25lIGluc3RydWN0aW9uIGZyb20gQUEuLkFBICAgICAgIFNOTg0KKyAqDQorICogICAgayAgICAg ICAgICAgICBraWxsDQorICoNCisgKiAgICA/ICAgICAgICAgICAgIFdoYXQgd2FzIHRoZSBsYXN0 IHNpZ3ZhbCA/ICAgICAgICAgICAgIFNOTiAgIChzaWduYWwgTk4pDQorICoNCisgKiBBbGwgY29t bWFuZHMgYW5kIHJlc3BvbnNlcyBhcmUgc2VudCB3aXRoIGEgcGFja2V0IHdoaWNoIGluY2x1ZGVz IGENCisgKiBjaGVja3N1bS4gIEEgcGFja2V0IGNvbnNpc3RzIG9mDQorICoNCisgKiAkPHBhY2tl dCBpbmZvPiM8Y2hlY2tzdW0+Lg0KKyAqDQorICogd2hlcmUNCisgKiA8cGFja2V0IGluZm8+IDo6 IDxjaGFyYWN0ZXJzIHJlcHJlc2VudGluZyB0aGUgY29tbWFuZCBvciByZXNwb25zZT4NCisgKiA8 Y2hlY2tzdW0+ICAgIDo6IDwgdHdvIGhleCBkaWdpdHMgY29tcHV0ZWQgYXMgbW9kdWxvIDI1NiBz dW0gb2YgPHBhY2tldGluZm8+Pg0KKyAqDQorICogV2hlbiBhIHBhY2tldCBpcyByZWNlaXZlZCwg aXQgaXMgZmlyc3QgYWNrbm93bGVkZ2VkIHdpdGggZWl0aGVyICcrJyBvciAnLScuDQorICogJysn IGluZGljYXRlcyBhIHN1Y2Nlc3NmdWwgdHJhbnNmZXIuICAnLScgaW5kaWNhdGVzIGEgZmFpbGVk IHRyYW5zZmVyLg0KKyAqDQorICogRXhhbXBsZToNCisgKg0KKyAqIEhvc3Q6ICAgICAgICAgICAg ICAgICAgUmVwbHk6DQorICogJG0wLDEwIzJhICAgICAgICAgICAgICAgKyQwMDAxMDIwMzA0MDUw NjA3MDgwOTEwMTExMjEzMTQxNSM0Mg0KKyAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioNCisgKg0KKyAqIFVwZGF0ZSAyMDIwLzAzLzA1DQorICoNCisg KiBUaGlzIHN0dWIgaXMgYmFzZWQgb24gdGhlIG9sZCB4ODYgc3R1YiAoaTM4Ni1zdHViLmMpIHBy b3ZpZGVkIGJ5IGdkYi4NCisgKiBJdCBoYXMgYmVlbiB1cGRhdGVkIHRvIHN1cHBvcnQgaW50ZWwg eDg2XzY0IHByb2Nlc3NvciBhcmNoaXRlY3R1cmUuDQorICoNCisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8NCisNCisvKg0KKyAqIFdlIGRvbid0IHdhbnQgR0NDIHRvIGNvbXBpbGUgdGhpcyBmaWxlIHdp dGggYW55IG9wdGltaXphdGlvbnMgc2luY2UNCisgKiBpdCBjb250YWlucyBzbyBtdWNoIGVtYmVk ZGVkIHg2NCBhc3NlbWJseSBjb2RlLg0KKyAqLw0KKyNwcmFnbWEgR0NDIG9wdGltaXplKCItTzAi KQ0KKw0KKyNpbmNsdWRlIDxzdGRpby5oPg0KKyNpbmNsdWRlIDxzdHJpbmcuaD4NCisNCisvKiBz aW5nbGUgdGhyZWFkZWQgdGFyZ2V0ICovDQorI2RlZmluZSBUSFJFQURfVElEICIxIg0KKw0KKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioNCisgKg0KKyAqIEV4dGVybmFsIGxvdy1sZXZlbCBzdXBwb3J0IHJvdXRp bmVzLg0KKyAqIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgaGF2ZSBhbiBPUyBzcGVjaWZpYyBpbXBs ZW1lbnRhdGlvbiBwcm92aWRlZC4NCisgKiBTZWUgLSBodHRwczovL3NvdXJjZXdhcmUub3JnL2dk Yi9vbmxpbmVkb2NzL2dkYi9Cb290c3RyYXBwaW5nLmh0bWwjQm9vdHN0cmFwcGluZy4NCisgKg0K KyAqIEZvciBjb252ZW5pZW5jZSwgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlc2UgZnVu Y3Rpb25zIGFyZSBwcm92aWRlZCBhdCB0aGUNCisgKiBlbmQgb2YgdGhpcyBmaWxlLCBidXQgdGhl eSBtYXkgbm90IGFwcGx5IHRvIHlvdXIgT1MuIFRvIGVuYWJsZSB0aGUgZGVmYXVsdA0KKyAqIGlt cGxlbWVudGF0aW9ucyB1bmNvbW1lbnQgdGhlIGJlbG93IGRlZmluZXM6DQorICoNCisgKiAjZGVm aW5lIEdEQl9VU0VfU0VSSUFMX1BPUlRfSU8gICAgICAgICAgICAgIC8vIGZvciB0aGUgZnVuY3Rp b25zIHB1dERlYnVnQ2hhcigpIGFuZCBnZXREZWJ1Z0NoYXIoKQ0KKyAqICNkZWZpbmUgR0RCX1VT RV9TVERfWDY0X0VYQ0VQVElPTl9IQU5ETEVSICAgLy8gZm9yIHRoZSBmdW5jdGlvbiBleGNlcHRp b25IYW5kbGVyKCkNCisgKi8NCitleHRlcm4gdm9pZCBwdXREZWJ1Z0NoYXIoY2hhciBjKTsgLyog d3JpdGUgYSBzaW5nbGUgY2hhcmFjdGVyICAgICAgKi8NCitleHRlcm4gaW50IGdldERlYnVnQ2hh cih2b2lkKTsgLyogcmVhZCBhbmQgcmV0dXJuIGEgc2luZ2xlIGNoYXIgKi8NCitleHRlcm4gdm9p ZCBleGNlcHRpb25IYW5kbGVyKGludCBpbnRyX3ZlY3Rvciwgdm9pZCAqaW50cl9oYW5kbGVyKTsg LyogaW5zdGFsbCBpbnRyX2hhbmRsZXIgYXMgaGFuZGxlciBmb3IgZXhjZXB0aW9uIGludHJfdmVj dG9yICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogSW50 ZXJuYWwgc3VwcG9ydCByb3V0aW5lcw0KKyAqLw0KK3N0YXRpYyBjaGFyICpnZGJfc3RyY3B5KGNo YXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYyk7IC8qIGVzc2VudGlhbGx5IHN0cmNweSAqLw0KK3N0 YXRpYyB2b2lkIGdkYl9iY29weSh2b2lkICpmcm9tLCB2b2lkICp0bywgaW50IGxlbmd0aCk7DQor c3RhdGljIGludCBnZGJfc3RyX3N0YXJ0c193aXRoKGNoYXIgKnN0ciwgY2hhciAqcHJlZml4KTsN CitzdGF0aWMgc2l6ZV90IGdkYl9ydW5fbGVuZ3RoX2VuY29kZShjaGFyICpidWZmZXIsIHNpemVf dCBsZW5ndGgpOw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLyogQlVGTUFYIGRlZmluZXMgdGhl IG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gaW5ib3VuZC9vdXRib3VuZCBidWZmZXJz Ki8NCisvKiBhdCBsZWFzdCBOVU1SRUdCWVRFUyoyIGFyZSBuZWVkZWQgZm9yIHJlZ2lzdGVyIHBh Y2tldHMgKi8NCisjZGVmaW5lIEJVRk1BWCAxMDI0DQorDQorc3RhdGljIGNoYXIgaW5pdGlhbGl6 ZWQgPSAwOyAgLyogYm9vbGVhbiBmbGFnLiAhPSAwIG1lYW5zIHdlJ3ZlIGJlZW4gaW5pdGlhbGl6 ZWQgKi8NCitzdGF0aWMgY29uc3QgY2hhciBoZXhjaGFyc1tdID0gIjAxMjM0NTY3ODlhYmNkZWYi Ow0KKw0KKy8qDQorICogR0RCIGV4cGVjdHMgdGhlIDE2LWJpdCBzZWdtZW50IHJlZ2lzdGVycyAo JWNzLCAlc3MsICVkcywgJWVzLCAlZnMsICVncykNCisgKiBhcyB3ZWxsIGFzIHRoZSA2NC1iaXQg cmZsYWdzIHJlZ2lzdGVyIHRvIGJlIHN0b3JlZCBpbiAzMi1iaXQgZmllbGRzLg0KKyAqIFNvIHdl IG5lZWQgdG8gc2VwYXJhdGUgdGhlIHJlZ2lzdGVycyBpbnRvIHR3byBhcnJheXMuDQorICovDQor DQorLyogTnVtYmVyIG9mIG5vbi1zZWdtZW50IHJlZ2lzdGVycy4gKi8NCisjZGVmaW5lIE5VTVJF R1MJMTcNCisvKiAgTnVtYmVyIG9mIHNlZ21lbnQgcmVnaXN0ZXJzLiAqLw0KKyNkZWZpbmUgTlVN U0VHUkVHUyA3DQorDQorLyogTnVtYmVyIG9mIGJ5dGVzIG9mIDY0LWJpdCByZWdpc3RlcnMuICov DQorI2RlZmluZSBOVU1SRUdCWVRFUyAoTlVNUkVHUyAqIDgpDQorLyogTmVlZCB0byBzdG9yZSB0 aGUgc2VnbWVudCByZWdpc3RlcnMgaW4gMzItYml0IGZpZWxkcy4gKi8NCisjZGVmaW5lIE5VTVNF R1JFR0JZVEVTIChOVU1TRUdSRUdTICogNCkNCisNCisvKiBOYW1lcyBvZiA2NC1iaXQgcmVnaXN0 ZXJzICovDQorZW51bSByZWduYW1lcyB7IFJBWCwgUkJYLCBSQ1gsIFJEWCwgUlNJLCBSREksIFJC UCwgUlNQLA0KKyAgICAgICAgICAgICAgICBSOCwgIFI5LCAgUjEwLCBSMTEsIFIxMiwgUjEzLCBS MTQsIFIxNSwNCisJICAgICAgICAgICAgICBSSVAgfTsNCisvKg0KKyAqIE5hbWVzIG9mIDE2LWJp dCBzZWdtZW50IHJlZ2lzdGVycy4NCisgKiByZmxhZ3MgaXMgaW5jbHVkZWQgaGVyZSBiZWNhdXNl IEdEQiBleHBlY3RzIGl0IHRvIGJlIHN0b3JlZA0KKyAqIGluIGEgMzItYml0IGZpZWxkDQorICov DQorZW51bSBzZWdyZWduYW1lcyB7ICBQUyAvKiBhbHNvIGtub3duIGFzIHJmbGFncyAqLywgQ1Ms IFNTLCBEUywgRVMsIEZTLCBHUyB9Ow0KKw0KKy8qDQorICogVGhlc2Ugc2hvdWxkIG5vdCBiZSBz dGF0aWMgYmVjYXVzZSB0aGV5IGNhbiBiZSB1c2VkIG91dHNpZGUgdGhpcyBtb2R1bGUNCisgKi8N Cit1aW50NjRfdCBfcmVnaXN0ZXJzW05VTVJFR1NdOw0KK3VpbnQzMl90IF9zZWdyZWdpc3RlcnNb TlVNU0VHUkVHU107DQorDQorI2RlZmluZSBTVEFDS1NJWkUgMTAwMDANCit1aW50NjRfdCByZW1j b21TdGFja1tTVEFDS1NJWkUvc2l6ZW9mKHVpbnQ2NF90KV07DQorc3RhdGljIHVpbnQ2NF90KiBf c3RhY2tQdHIgPSAmcmVtY29tU3RhY2tbU1RBQ0tTSVpFL3NpemVvZih1aW50NjRfdCkgLSAxXTsN CisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqICBBU1NFTUJMWSBDT0RFIE1BQ1JP UyAqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK2V4dGVybiB2b2lkDQorX3JldHVybl90 b19wcm9nICgpOw0KKw0KKy8qIFJlc3RvcmUgdGhlIHByb2dyYW0ncyBfcmVnaXN0ZXJzIChpbmNs dWRpbmcgdGhlIHN0YWNrIHBvaW50ZXIsIHdoaWNoDQorICAgbWVhbnMgd2UgZ2V0IHRoZSByaWdo dCBzdGFjayBhbmQgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCBwb3BwaW5nIG91cg0KKyAgIHJl dHVybiBhZGRyZXNzIGFuZCBhbnkgc3RhY2sgZnJhbWVzIGFuZCBzbyBvbikgYW5kIHJldHVybi4g ICovDQorYXNtKCIudGV4dCIpOw0KK2FzbSgiLmdsb2JsIF9yZXR1cm5fdG9fcHJvZyIpOw0KK2Fz bSgiX3JldHVybl90b19wcm9nOiIpOw0KKyAgYXNtKCJtb3Z3IF9zZWdyZWdpc3RlcnMrOCwgJXNz Iik7DQorICBhc20oIm1vdnEgX3JlZ2lzdGVycys1NiwgJXJzcCIpOw0KKyAgYXNtKCJtb3ZxIF9y ZWdpc3RlcnMrOCwgICVyYngiKTsNCisgIGFzbSgibW92cSBfcmVnaXN0ZXJzKzE2LCAlcmN4Iik7 DQorICBhc20oIm1vdnEgX3JlZ2lzdGVycysyNCwgJXJkeCIpOw0KKyAgYXNtKCJtb3ZxIF9yZWdp c3RlcnMrMzIsICVyc2kiKTsNCisgIGFzbSgibW92cSBfcmVnaXN0ZXJzKzQwLCAlcmRpIik7DQor ICBhc20oIm1vdnEgX3JlZ2lzdGVycys0OCwgJXJicCIpOw0KKyAgYXNtKCJtb3ZxIF9yZWdpc3Rl cnMrNjQsICVyOCIpOw0KKyAgYXNtKCJtb3ZxIF9yZWdpc3RlcnMrNzIsICVyOSIpOw0KKyAgYXNt KCJtb3ZxIF9yZWdpc3RlcnMrODAsICVyMTAiKTsNCisgIGFzbSgibW92cSBfcmVnaXN0ZXJzKzg4 LCAlcjExIik7DQorICBhc20oIm1vdnEgX3JlZ2lzdGVycys5NiwgJXIxMiIpOw0KKyAgYXNtKCJt b3ZxIF9yZWdpc3RlcnMrMTA0LCAlcjEzIik7DQorICBhc20oIm1vdnEgX3JlZ2lzdGVycysxMTIs ICVyMTQiKTsNCisgIGFzbSgibW92cSBfcmVnaXN0ZXJzKzEyMCwgJXIxNSIpOw0KKyAgYXNtKCJt b3Z3IF9zZWdyZWdpc3RlcnMrMTIsICVkcyIpOw0KKyAgYXNtKCJtb3Z3IF9zZWdyZWdpc3RlcnMr MTYsICVlcyIpOw0KKyAgYXNtKCJtb3Z3IF9zZWdyZWdpc3RlcnMrMjAsICVmcyIpOw0KKyAgYXNt KCJtb3Z3IF9zZWdyZWdpc3RlcnMrMjQsICVncyIpOw0KKyAgYXNtKCJ4b3JxICVyYXgsICVyYXgi KTsNCisgIGFzbSgibW92bCBfc2VncmVnaXN0ZXJzLCAlZWF4Iik7DQorICBhc20oInB1c2hxICVy YXgiKTsgIC8qIHNhdmVkIHJmbGFncyAqLw0KKyAgYXNtKCJtb3ZsIF9zZWdyZWdpc3RlcnMrNCwg JWVheCIpOw0KKyAgYXNtKCJwdXNocSAlcmF4Iik7ICAvKiBzYXZlZCBjcyAqLw0KKyAgYXNtKCJt b3ZxIF9yZWdpc3RlcnMrMTI4LCAlcmF4Iik7DQorICBhc20oInB1c2hxICVyYXgiKTsgIC8qIHNh dmVkIHJpcCAqLw0KKyAgYXNtKCJtb3ZxIF9yZWdpc3RlcnMsICVyYXgiKTsNCisgIC8qIHVzZSBp cmV0cSB0byByZXN0b3JlIHJpcCBhbmQgcmZsYWdzIHRvZ2V0aGVyIHNvDQorICAgICB0aGF0IHRy YWNlIGZsYWcgd29ya3MgcmlnaHQuICAqLw0KKyAgYXNtKCJpcmV0cSIpOw0KKw0KKyNkZWZpbmUg QlJFQUtQT0lOVCgpIGFzbSgiICBpbnQgJDMiKQ0KKw0KKy8qIFB1dCB0aGUgZXJyb3IgY29kZSBo ZXJlIGp1c3QgaW4gY2FzZSB0aGUgdXNlciBjYXJlcy4gICovDQordWludDY0X3QgX2dkYl9lcnJj b2RlOw0KKy8qIExpa2V3aXNlLCB0aGUgdmVjdG9yIG51bWJlciBoZXJlIChzaW5jZSBHREIgb25s eSBnZXRzIHRoZSBzaWduYWwNCisgICBudW1iZXIgdGhyb3VnaCB0aGUgdXN1YWwgbWVhbnMsIGFu ZCB0aGF0J3Mgbm90IHZlcnkgc3BlY2lmaWMpLiAgKi8NCit1aW50NjRfdCBnZGJfdmVjdG9yID0g LTE7DQorDQorLyogR0RCIHN0b3JlcyBzZWdtZW50IF9yZWdpc3RlcnMgaW4gMzItYml0IHdvcmRz ICh0aGF0J3MganVzdCB0aGUgd2F5DQorICAgbS1pMzg2di5oIGlzIHdyaXR0ZW4pLiAgU28gemVy byB0aGUgYXBwcm9wcmlhdGUgYXJlYXMgaW4gX3NlZ3JlZ2lzdGVycy4gICovDQorI2RlZmluZSBT QVZFX1JFR0lTVEVSUzEoKSAgICAgICAgICAgICAgICBcDQorICBhc20gKCJtb3ZxICVyYXgsIF9y ZWdpc3RlcnMiKTsgICAgICAgICBcDQorICBhc20gKCJtb3ZxICVyYngsIF9yZWdpc3RlcnMrOCIp OwkgICAgIFwNCisgIGFzbSAoIm1vdnEgJXJjeCwgX3JlZ2lzdGVycysxNiIpOwkgICAgIFwNCisg IGFzbSAoIm1vdnEgJXJkeCwgX3JlZ2lzdGVycysyNCIpOwkgICAgIFwNCisgIGFzbSAoIm1vdnEg JXJzaSwgX3JlZ2lzdGVycyszMiIpOwkgICAgIFwNCisgIGFzbSAoIm1vdnEgJXJkaSwgX3JlZ2lz dGVycys0MCIpOwkgICAgIFwNCisgIGFzbSAoIm1vdnEgJXJicCwgX3JlZ2lzdGVycys0OCIpOwkg ICAgIFwNCisgIGFzbSAoIm1vdnEgJXI4LCAgX3JlZ2lzdGVycys2NCIpOwkgICAgIFwNCisgIGFz bSAoIm1vdnEgJXI5LCAgX3JlZ2lzdGVycys3MiIpOwkgICAgIFwNCisgIGFzbSAoIm1vdnEgJXIx MCwgX3JlZ2lzdGVycys4MCIpOwkgICAgIFwNCisgIGFzbSAoIm1vdnEgJXIxMSwgX3JlZ2lzdGVy cys4OCIpOwkgICAgIFwNCisgIGFzbSAoIm1vdnEgJXIxMiwgX3JlZ2lzdGVycys5NiIpOwkgICAg IFwNCisgIGFzbSAoIm1vdnEgJXIxMywgX3JlZ2lzdGVycysxMDQiKTsgICAgIFwNCisgIGFzbSAo Im1vdnEgJXIxNCwgX3JlZ2lzdGVycysxMTIiKTsgICAgIFwNCisgIGFzbSAoIm1vdnEgJXIxNSwg X3JlZ2lzdGVycysxMjAiKTsgICAgIFwNCisgIGFzbSAoIm1vdncgJDAsICVheCIpOyAgICAgICAg ICAgICAgICAgIFwNCisgIGFzbSAoIm1vdncgJWRzLCAgX3NlZ3JlZ2lzdGVycysxMiIpOyAgIFwN CisgIGFzbSAoIm1vdncgJWF4LCAgX3NlZ3JlZ2lzdGVycysxNCIpOyAgIFwNCisgIGFzbSAoIm1v dncgJWVzLCAgX3NlZ3JlZ2lzdGVycysxNiIpOyAgIFwNCisgIGFzbSAoIm1vdncgJWF4LCAgX3Nl Z3JlZ2lzdGVycysxOCIpOyAgIFwNCisgIGFzbSAoIm1vdncgJWZzLCAgX3NlZ3JlZ2lzdGVycysy MCIpOyAgIFwNCisgIGFzbSAoIm1vdncgJWF4LCAgX3NlZ3JlZ2lzdGVycysyMiIpOyAgIFwNCisg IGFzbSAoIm1vdncgJWdzLCAgX3NlZ3JlZ2lzdGVycysyNCIpOyAgIFwNCisgIGFzbSAoIm1vdncg JWF4LCAgX3NlZ3JlZ2lzdGVycysyNiIpDQorI2RlZmluZSBTQVZFX0VSUkNPREUoKSAgICAgICAg ICAgICAgICAgICBcDQorICBhc20gKCJwb3BxICVyYngiKTsgICAgICAgICAgICAgICAgICAgICBc DQorICBhc20gKCJtb3ZxICVyYngsIF9nZGJfZXJyY29kZSIpDQorI2RlZmluZSBTQVZFX1JFR0lT VEVSUzIoKSAgICAgICAgICAgICAgICAgXA0KKyAgYXNtICgicG9wcSAlcmJ4Iik7IC8qIG9sZCBy aXAgKi8gICAgICAgIFwNCisgIGFzbSAoIm1vdnEgJXJieCwgX3JlZ2lzdGVycysxMjgiKTsgICAg ICBcDQorICBhc20gKCJwb3BxICVyYngiKTsJIC8qIG9sZCBjcyAqLwkgICAgICBcDQorICBhc20g KCJtb3ZsICVlYngsIF9zZWdyZWdpc3RlcnMrNCIpOyAgICAgXA0KKyAgYXNtICgicG9wcSAlcmJ4 Iik7CSAvKiBvbGQgcmZsYWdzICovICAgXA0KKyAgYXNtICgibW92bCAlZWJ4LCBfc2VncmVnaXN0 ZXJzIik7CSAgICAgIFwNCisgIC8qIE5vdyB0aGF0IHdlJ3ZlIGRvbmUgdGhlIHBvcHMsIHdlIGNh biBzYXZlIHRoZSBzdGFjayBwb2ludGVyLiIgKi8gICBcDQorICBhc20gKCJtb3Z3ICVzcywgIF9z ZWdyZWdpc3RlcnMrOCIpOwkgICAgXA0KKyAgYXNtICgibW92dyAlYXgsICBfc2VncmVnaXN0ZXJz KzEwIik7ICAgIFwNCisgIGFzbSAoIm1vdnEgJXJzcCwgX3JlZ2lzdGVycys1NiIpDQorDQorLyog U2VlIGlmIF9tZW1fZmF1bHRfcm91dGluZSBpcyBzZXQsIGlmIHNvIGp1c3QgaXJldHEgdG8gdGhh dCBhZGRyZXNzLiAgKi8NCisjZGVmaW5lIENIRUNLX0ZBVUxUKCkgICAgICAgICAgICAgICAgICAg ICBcDQorICBhc20gKCJjbXBxICQwLCBfbWVtX2ZhdWx0X3JvdXRpbmUiKTsgICAgXA0KKyAgYXNt ICgiam5lIG1lbV9mYXVsdCIpDQorDQorYXNtICgiLnRleHQiKTsNCithc20gKCJtZW1fZmF1bHQ6 Iik7DQorICAvKiBPSyB0byBjbG9iYmVyIHRlbXAgX3JlZ2lzdGVyczsgd2UncmUganVzdCBnb2lu ZyB0byBlbmQgdXAgaW4gc2V0X21lbV9lcnIuICAqLw0KKyAgLyogUG9wIGVycm9yIGNvZGUgZnJv bSB0aGUgc3RhY2sgYW5kIHNhdmUgaXQuICAqLw0KKyAgYXNtICgicG9wcSAlcmF4Iik7DQorICBh c20gKCJtb3ZxICVyYXgsIF9nZGJfZXJyY29kZSIpOw0KKw0KKyAgYXNtICgicG9wcSAlcmF4Iik7 IC8qIHJpcCAqLw0KKyAgLyogV2UgZG9uJ3Qgd2FudCB0byByZXR1cm4gdGhlcmUsIHdlIHdhbnQg dG8gcmV0dXJuIHRvIHRoZSBmdW5jdGlvbg0KKyAgICAgcG9pbnRlZCB0byBieSBfbWVtX2ZhdWx0 X3JvdXRpbmUgaW5zdGVhZC4gICovDQorICBhc20gKCJtb3ZxIF9tZW1fZmF1bHRfcm91dGluZSwg JXJheCIpOw0KKyAgYXNtICgicG9wcSAlcmN4Iik7IC8qIGNzIChsb3cgMTYgYml0czsganVuayBp biBoaSAxNiBiaXRzKS4gICovDQorICBhc20gKCJwb3BxICVyZHgiKTsgLyogcmZsYWdzICovDQor DQorICAvKiBSZW1vdmUgdGhpcyBzdGFjayBmcmFtZTsgd2hlbiB3ZSBkbyB0aGUgaXJldHEsIHdl IHdpbGwgYmUgZ29pbmcgdG8NCisgICAgIHRoZSBzdGFydCBvZiBhIGZ1bmN0aW9uLCBzbyB3ZSB3 YW50IHRoZSBzdGFjayB0byBsb29rIGp1c3QgbGlrZSBpdA0KKyAgICAgd291bGQgYWZ0ZXIgYSAi Y2FsbCIgaW5zdHJ1Y3Rpb24uICAqLw0KKyAgYXNtICgibGVhdmUiKTsNCisNCisgIC8qIFB1c2gg dGhlIHN0dWZmIHRoYXQgaXJldHEgd2FudHMuICAqLw0KKyAgYXNtICgicHVzaHEgJXJkeCIpOyAv KiByZmxhZ3MgKi8NCisgIGFzbSAoInB1c2hxICVyY3giKTsgLyogY3MgKi8NCisgIGFzbSAoInB1 c2hxICVyYXgiKTsgLyogcmlwICovDQorDQorICAvKiBaZXJvIF9tZW1fZmF1bHRfcm91dGluZS4g ICovDQorICBhc20gKCJtb3ZxICQwLCAlcmF4Iik7DQorICBhc20gKCJtb3ZxICVyYXgsIF9tZW1f ZmF1bHRfcm91dGluZSIpOw0KKw0KKyAgYXNtICgiaXJldHEiKTsNCisNCisjZGVmaW5lIENBTExf SE9PSygpIGFzbSgiY2FsbCBfcmVtY29tSGFuZGxlciIpDQorDQorLyogVGhlc2UgZnVuY3Rpb25z IGFyZSBjYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgSXQgc2F2ZXMNCisgKiBhbGwg dGhlIGNwdSByZWdzIGluIHRoZSBfcmVnaXN0ZXJzIGFycmF5LCBtdW5nZXMgdGhlIHN0YWNrIGEg Yml0LA0KKyAqIGFuZCBpbnZva2VzIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIChyZW1jb21faGFuZGxl cikuDQorICoNCisgKiBzdGFjayBvbiBlbnRyeTogICAgICAgICAgICAgICAgICAgICAgIHN0YWNr IG9uIGV4aXQ6DQorICogICBvbGQgcmZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0 b3IgbnVtYmVyDQorICogICBvbGQgY3MgKHplcm8tZmlsbGVkIHRvIDY0IGJpdHMpDQorICogICBv bGQgcmlwDQorICoNCisgKi8NCitleHRlcm4gdm9pZCBfY2F0Y2hFeGNlcHRpb24zKCk7DQorYXNt KCIudGV4dCIpOw0KK2FzbSgiLmdsb2JsIF9jYXRjaEV4Y2VwdGlvbjMiKTsNCithc20oIl9jYXRj aEV4Y2VwdGlvbjM6Iik7DQorICBTQVZFX1JFR0lTVEVSUzEoKTsNCisgIFNBVkVfUkVHSVNURVJT MigpOw0KKyAgYXNtICgicHVzaHEgJDMiKTsNCisgIENBTExfSE9PSygpOw0KKw0KKy8qIFNhbWUg dGhpbmcgZm9yIGV4Y2VwdGlvbiAxLiAgKi8NCitleHRlcm4gdm9pZCBfY2F0Y2hFeGNlcHRpb24x KCk7DQorYXNtKCIudGV4dCIpOw0KK2FzbSgiLmdsb2JsIF9jYXRjaEV4Y2VwdGlvbjEiKTsNCith c20oIl9jYXRjaEV4Y2VwdGlvbjE6Iik7DQorICBTQVZFX1JFR0lTVEVSUzEoKTsNCisgIFNBVkVf UkVHSVNURVJTMigpOw0KKyAgYXNtICgicHVzaHEgJDEiKTsNCisgIENBTExfSE9PSygpOw0KKw0K Ky8qIFNhbWUgdGhpbmcgZm9yIGV4Y2VwdGlvbiAwLiAgKi8NCitleHRlcm4gdm9pZCBfY2F0Y2hF eGNlcHRpb24wKCk7DQorYXNtKCIudGV4dCIpOw0KK2FzbSgiLmdsb2JsIF9jYXRjaEV4Y2VwdGlv bjAiKTsNCithc20oIl9jYXRjaEV4Y2VwdGlvbjA6Iik7DQorICBTQVZFX1JFR0lTVEVSUzEoKTsN CisgIFNBVkVfUkVHSVNURVJTMigpOw0KKyAgYXNtICgicHVzaHEgJDAiKTsNCisgIENBTExfSE9P SygpOw0KKw0KKy8qIFNhbWUgdGhpbmcgZm9yIGV4Y2VwdGlvbiA0LiAgKi8NCitleHRlcm4gdm9p ZCBfY2F0Y2hFeGNlcHRpb240KCk7DQorYXNtKCIudGV4dCIpOw0KK2FzbSgiLmdsb2JsIF9jYXRj aEV4Y2VwdGlvbjQiKTsNCithc20oIl9jYXRjaEV4Y2VwdGlvbjQ6Iik7DQorICBTQVZFX1JFR0lT VEVSUzEoKTsNCisgIFNBVkVfUkVHSVNURVJTMigpOw0KKyAgYXNtICgicHVzaHEgJDQiKTsNCisg IENBTExfSE9PSygpOw0KKw0KKy8qIFNhbWUgdGhpbmcgZm9yIGV4Y2VwdGlvbiA1LiAgKi8NCitl eHRlcm4gdm9pZCBfY2F0Y2hFeGNlcHRpb241KCk7DQorYXNtKCIudGV4dCIpOw0KK2FzbSgiLmds b2JsIF9jYXRjaEV4Y2VwdGlvbjUiKTsNCithc20oIl9jYXRjaEV4Y2VwdGlvbjU6Iik7DQorICBT QVZFX1JFR0lTVEVSUzEoKTsNCisgIFNBVkVfUkVHSVNURVJTMigpOw0KKyAgYXNtICgicHVzaHEg JDUiKTsNCisgIENBTExfSE9PSygpOw0KKw0KKy8qIFNhbWUgdGhpbmcgZm9yIGV4Y2VwdGlvbiA2 LiAgKi8NCitleHRlcm4gdm9pZCBfY2F0Y2hFeGNlcHRpb242KCk7DQorYXNtKCIudGV4dCIpOw0K K2FzbSgiLmdsb2JsIF9jYXRjaEV4Y2VwdGlvbjYiKTsNCithc20oIl9jYXRjaEV4Y2VwdGlvbjY6 Iik7DQorICBTQVZFX1JFR0lTVEVSUzEoKTsNCisgIFNBVkVfUkVHSVNURVJTMigpOw0KKyAgYXNt ICgicHVzaHEgJDYiKTsNCisgIENBTExfSE9PSygpOw0KKw0KKy8qIFNhbWUgdGhpbmcgZm9yIGV4 Y2VwdGlvbiA3LiAgKi8NCitleHRlcm4gdm9pZCBfY2F0Y2hFeGNlcHRpb243KCk7DQorYXNtKCIu dGV4dCIpOw0KK2FzbSgiLmdsb2JsIF9jYXRjaEV4Y2VwdGlvbjciKTsNCithc20oIl9jYXRjaEV4 Y2VwdGlvbjc6Iik7DQorICBTQVZFX1JFR0lTVEVSUzEoKTsNCisgIFNBVkVfUkVHSVNURVJTMigp Ow0KKyAgYXNtICgicHVzaHEgJDciKTsNCisgIENBTExfSE9PSygpOw0KKw0KKy8qIFNhbWUgdGhp bmcgZm9yIGV4Y2VwdGlvbiA4LiAgKi8NCitleHRlcm4gdm9pZCBfY2F0Y2hFeGNlcHRpb244KCk7 DQorYXNtKCIudGV4dCIpOw0KK2FzbSgiLmdsb2JsIF9jYXRjaEV4Y2VwdGlvbjgiKTsNCithc20o Il9jYXRjaEV4Y2VwdGlvbjg6Iik7DQorICBTQVZFX1JFR0lTVEVSUzEoKTsNCisgIFNBVkVfRVJS Q09ERSgpOw0KKyAgU0FWRV9SRUdJU1RFUlMyKCk7DQorICBhc20gKCJwdXNocSAkOCIpOw0KKyAg Q0FMTF9IT09LKCk7DQorDQorLyogU2FtZSB0aGluZyBmb3IgZXhjZXB0aW9uIDkuICAqLw0KK2V4 dGVybiB2b2lkIF9jYXRjaEV4Y2VwdGlvbjkoKTsNCithc20oIi50ZXh0Iik7DQorYXNtKCIuZ2xv YmwgX2NhdGNoRXhjZXB0aW9uOSIpOw0KK2FzbSgiX2NhdGNoRXhjZXB0aW9uOToiKTsNCisgIFNB VkVfUkVHSVNURVJTMSgpOw0KKyAgU0FWRV9SRUdJU1RFUlMyKCk7DQorICBhc20gKCJwdXNocSAk OSIpOw0KKyAgQ0FMTF9IT09LKCk7DQorDQorLyogU2FtZSB0aGluZyBmb3IgZXhjZXB0aW9uIDEw LiAgKi8NCitleHRlcm4gdm9pZCBfY2F0Y2hFeGNlcHRpb24xMCgpOw0KK2FzbSgiLnRleHQiKTsN Cithc20oIi5nbG9ibCBfY2F0Y2hFeGNlcHRpb24xMCIpOw0KK2FzbSgiX2NhdGNoRXhjZXB0aW9u MTA6Iik7DQorICBTQVZFX1JFR0lTVEVSUzEoKTsNCisgIFNBVkVfRVJSQ09ERSgpOw0KKyAgU0FW RV9SRUdJU1RFUlMyKCk7DQorICBhc20gKCJwdXNocSAkMTAiKTsNCisgIENBTExfSE9PSygpOw0K Kw0KKy8qIFNhbWUgdGhpbmcgZm9yIGV4Y2VwdGlvbiAxMi4gICovDQorZXh0ZXJuIHZvaWQgX2Nh dGNoRXhjZXB0aW9uMTIoKTsNCithc20oIi50ZXh0Iik7DQorYXNtKCIuZ2xvYmwgX2NhdGNoRXhj ZXB0aW9uMTIiKTsNCithc20oIl9jYXRjaEV4Y2VwdGlvbjEyOiIpOw0KKyAgU0FWRV9SRUdJU1RF UlMxKCk7DQorICBTQVZFX0VSUkNPREUoKTsNCisgIFNBVkVfUkVHSVNURVJTMigpOw0KKyAgYXNt ICgicHVzaHEgJDEyIik7DQorICBDQUxMX0hPT0soKTsNCisNCisvKiBTYW1lIHRoaW5nIGZvciBl eGNlcHRpb24gMTYuICAqLw0KK2V4dGVybiB2b2lkIF9jYXRjaEV4Y2VwdGlvbjE2KCk7DQorYXNt KCIudGV4dCIpOw0KK2FzbSgiLmdsb2JsIF9jYXRjaEV4Y2VwdGlvbjE2Iik7DQorYXNtKCJfY2F0 Y2hFeGNlcHRpb24xNjoiKTsNCisgIFNBVkVfUkVHSVNURVJTMSgpOw0KKyAgU0FWRV9SRUdJU1RF UlMyKCk7DQorICBhc20gKCJwdXNocSAkMTYiKTsNCisgIENBTExfSE9PSygpOw0KKw0KKy8qIEZv ciAxMywgMTEsIGFuZCAxNCB3ZSBoYXZlIHRvIGRlYWwgd2l0aCB0aGUgQ0hFQ0tfRkFVTFQgc3R1 ZmYuICAqLw0KKw0KKy8qIFNhbWUgdGhpbmcgZm9yIGV4Y2VwdGlvbiAxMy4gICovDQorZXh0ZXJu IHZvaWQgX2NhdGNoRXhjZXB0aW9uMTMgKCk7DQorYXNtICgiLnRleHQiKTsNCithc20gKCIuZ2xv YmwgX2NhdGNoRXhjZXB0aW9uMTMiKTsNCithc20gKCJfY2F0Y2hFeGNlcHRpb24xMzoiKTsNCisg IENIRUNLX0ZBVUxUKCk7DQorICBTQVZFX1JFR0lTVEVSUzEoKTsNCisgIFNBVkVfRVJSQ09ERSgp Ow0KKyAgU0FWRV9SRUdJU1RFUlMyKCk7DQorICBhc20gKCJwdXNocSAkMTMiKTsNCisgIENBTExf SE9PSygpOw0KKw0KKy8qIFNhbWUgdGhpbmcgZm9yIGV4Y2VwdGlvbiAxMS4gICovDQorZXh0ZXJu IHZvaWQgX2NhdGNoRXhjZXB0aW9uMTEgKCk7DQorYXNtICgiLnRleHQiKTsNCithc20gKCIuZ2xv YmwgX2NhdGNoRXhjZXB0aW9uMTEiKTsNCithc20gKCJfY2F0Y2hFeGNlcHRpb24xMToiKTsNCisg IENIRUNLX0ZBVUxUKCk7DQorICBTQVZFX1JFR0lTVEVSUzEoKTsNCisgIFNBVkVfRVJSQ09ERSgp Ow0KKyAgU0FWRV9SRUdJU1RFUlMyKCk7DQorICBhc20gKCJwdXNocSAkMTEiKTsNCisgIENBTExf SE9PSygpOw0KKw0KKy8qIFNhbWUgdGhpbmcgZm9yIGV4Y2VwdGlvbiAxNC4gICovDQorZXh0ZXJu IHZvaWQgX2NhdGNoRXhjZXB0aW9uMTQgKCk7DQorYXNtICgiLnRleHQiKTsNCithc20gKCIuZ2xv YmwgX2NhdGNoRXhjZXB0aW9uMTQiKTsNCithc20gKCJfY2F0Y2hFeGNlcHRpb24xNDoiKTsNCisg IENIRUNLX0ZBVUxUKCk7DQorICBTQVZFX1JFR0lTVEVSUzEoKTsNCisgIFNBVkVfRVJSQ09ERSgp Ow0KKyAgU0FWRV9SRUdJU1RFUlMyKCk7DQorICBhc20gKCJwdXNocSAkMTQiKTsNCisgIENBTExf SE9PSygpOw0KKw0KKy8qDQorICogcmVtY29tSGFuZGxlciBpcyBhIGZyb250IGVuZCBmb3IgX2hh bmRsZV9leGNlcHRpb24uICBJdCBtb3ZlcyB0aGUNCisgKiBzdGFjayBwb2ludGVyIGludG8gYW4g YXJlYSByZXNlcnZlZCBmb3IgZGVidWdnZXIgdXNlLg0KKyAqLw0KK2FzbSgiX3JlbWNvbUhhbmRs ZXI6Iik7DQorICBhc20oInBvcHEgJXJheCIpOyAgICAgICAgLyogcG9wIG9mZiByZXR1cm4gYWRk cmVzcyAgICAgKi8NCisgIGFzbSgicG9wcSAlcmRpIik7ICAgICAgLyogZ2V0IHRoZSBleGNlcHRp b24gbnVtYmVyIGluICVyZGkgdG8gcGFzcyBpdCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gIF9o YW5kbGVfZXhjZXB0aW9uICAqLw0KKyAgYXNtKCJtb3ZxIF9zdGFja1B0ciwgJXJzcCIpOyAvKiBt b3ZlIHRvIHJlbWNvbSBzdGFjayBhcmVhICAqLw0KKyAgYXNtKCJjYWxsICBfaGFuZGxlX2V4Y2Vw dGlvbiIpOyAgICAvKiB0aGlzIG5ldmVyIHJldHVybnMgKi8NCisNCit2b2lkDQorX3JldHVybkZy b21FeGNlcHRpb24gKCkNCit7DQorICBfcmV0dXJuX3RvX3Byb2cgKCk7DQorfQ0KKw0KK3ZvaWQN CitkZWJ1Z19lcnJvciAoZm9ybWF0LCBwYXJtKQ0KKyAgICAgY2hhciAqZm9ybWF0Ow0KKyAgICAg Y2hhciAqcGFybTsNCit7DQorICBwcmludGYgKGZvcm1hdCwgcGFybSk7DQorfQ0KKw0KK2ludA0K K2hleCAoY2gpDQorICAgICBjaGFyIGNoOw0KK3sNCisgIGlmICgoY2ggPj0gJ2EnKSAmJiAoY2gg PD0gJ2YnKSkNCisgICAgcmV0dXJuIChjaCAtICdhJyArIDEwKTsNCisgIGlmICgoY2ggPj0gJzAn KSAmJiAoY2ggPD0gJzknKSkNCisgICAgcmV0dXJuIChjaCAtICcwJyk7DQorICBpZiAoKGNoID49 ICdBJykgJiYgKGNoIDw9ICdGJykpDQorICAgIHJldHVybiAoY2ggLSAnQScgKyAxMCk7DQorICBy ZXR1cm4gKC0xKTsNCit9DQorDQorc3RhdGljIGNoYXIgcmVtY29tSW5CdWZmZXJbQlVGTUFYXTsN CitzdGF0aWMgY2hhciByZW1jb21PdXRCdWZmZXJbQlVGTUFYXTsNCisNCisvKiBzY2FuIGZvciB0 aGUgc2VxdWVuY2UgJDxkYXRhPiM8Y2hlY2tzdW0+ICAgICAqLw0KKw0KK2NoYXIgKg0KK2dldHBh Y2tldCAodm9pZCkNCit7DQorICBjaGFyICpidWZmZXIgPSAmcmVtY29tSW5CdWZmZXJbMF07DQor ICB1bnNpZ25lZCBjaGFyIGNoZWNrc3VtOw0KKyAgdW5zaWduZWQgY2hhciB4bWl0Y3N1bTsNCisg IGludCBjb3VudDsNCisgIGNoYXIgY2g7DQorDQorICB3aGlsZSAoMSkNCisgICAgew0KKyAgICAg IC8qIHdhaXQgYXJvdW5kIGZvciB0aGUgc3RhcnQgY2hhcmFjdGVyLCBpZ25vcmUgYWxsIG90aGVy IGNoYXJhY3RlcnMgKi8NCisgICAgICB3aGlsZSAoKGNoID0gZ2V0RGVidWdDaGFyICgpKSAhPSAn JCcpDQorCTsNCisNCisgICAgcmV0cnk6DQorICAgICAgY2hlY2tzdW0gPSAwOw0KKyAgICAgIHht aXRjc3VtID0gLTE7DQorICAgICAgY291bnQgPSAwOw0KKw0KKyAgICAgIC8qIG5vdywgcmVhZCB1 bnRpbCBhICMgb3IgZW5kIG9mIGJ1ZmZlciBpcyBmb3VuZCAqLw0KKyAgICAgIHdoaWxlIChjb3Vu dCA8IEJVRk1BWCkNCisJew0KKwkgIGNoID0gZ2V0RGVidWdDaGFyICgpOw0KKwkgIGlmIChjaCA9 PSAnJCcpDQorCSAgICBnb3RvIHJldHJ5Ow0KKwkgIGlmIChjaCA9PSAnIycpDQorCSAgICBicmVh azsNCisJICBjaGVja3N1bSA9IGNoZWNrc3VtICsgY2g7DQorCSAgYnVmZmVyW2NvdW50XSA9IGNo Ow0KKwkgIGNvdW50ID0gY291bnQgKyAxOw0KKwl9DQorICAgICAgYnVmZmVyW2NvdW50XSA9IDA7 DQorDQorICAgICAgaWYgKGNoID09ICcjJykNCisJew0KKwkgIGNoID0gZ2V0RGVidWdDaGFyICgp Ow0KKwkgIHhtaXRjc3VtID0gaGV4IChjaCkgPDwgNDsNCisJICBjaCA9IGdldERlYnVnQ2hhciAo KTsNCisJICB4bWl0Y3N1bSArPSBoZXggKGNoKTsNCisNCisJICBpZiAoY2hlY2tzdW0gIT0geG1p dGNzdW0pDQorICAgIHsNCisgICAgICBkZWJ1Z19lcnJvcigiZmFpbGVkIGNoZWNrc3VtIik7DQor ICAgICAgcHV0RGVidWdDaGFyICgnLScpOwkvKiBmYWlsZWQgY2hlY2tzdW0gKi8NCisgICAgfQ0K KwkgIGVsc2UNCisJICAgIHsNCisJICAgICAgcHV0RGVidWdDaGFyICgnKycpOwkvKiBzdWNjZXNz ZnVsIHRyYW5zZmVyICovDQorDQorCSAgICAgIC8qIGlmIGEgc2VxdWVuY2UgY2hhciBpcyBwcmVz ZW50LCByZXBseSB0aGUgc2VxdWVuY2UgSUQgKi8NCisJICAgICAgaWYgKGJ1ZmZlclsyXSA9PSAn OicpDQorCQl7DQorCQkgIHB1dERlYnVnQ2hhciAoYnVmZmVyWzBdKTsNCisJCSAgcHV0RGVidWdD aGFyIChidWZmZXJbMV0pOw0KKw0KKwkJICByZXR1cm4gJmJ1ZmZlclszXTsNCisJCX0NCisNCisJ ICAgICAgcmV0dXJuICZidWZmZXJbMF07DQorCSAgICB9DQorCX0NCisgICAgfQ0KK30NCisNCisv KiBzZW5kIHRoZSBwYWNrZXQgaW4gYnVmZmVyLiAgKi8NCisNCit2b2lkDQorcHV0cGFja2V0IChj aGFyICpidWZmZXIpDQorew0KKyAgdW5zaWduZWQgY2hhciBjaGVja3N1bTsNCisgIGludCBjb3Vu dDsNCisgIGNoYXIgY2g7DQorDQorICAvKiAgJDxwYWNrZXQgaW5mbz4jPGNoZWNrc3VtPi4gKi8N CisgIGRvDQorICAgIHsNCisgICAgICBwdXREZWJ1Z0NoYXIgKCckJyk7DQorICAgICAgY2hlY2tz dW0gPSAwOw0KKyAgICAgIGNvdW50ID0gc3RybGVuKGJ1ZmZlcik7DQorDQorICAgICAgY291bnQg PSBnZGJfcnVuX2xlbmd0aF9lbmNvZGUoYnVmZmVyLCBjb3VudCk7DQorICAgICAgYnVmZmVyW2Nv dW50XSA9ICdcMCc7DQorICAgICAgY291bnQgPSAwOw0KKw0KKyAgICAgIHdoaWxlICgoY2ggPSBi dWZmZXJbY291bnRdKSkNCisJew0KKwkgIHB1dERlYnVnQ2hhciAoY2gpOw0KKwkgIGNoZWNrc3Vt ICs9IGNoOw0KKwkgIGNvdW50ICs9IDE7DQorCX0NCisNCisgICAgICBwdXREZWJ1Z0NoYXIgKCcj Jyk7DQorICAgICAgcHV0RGVidWdDaGFyIChoZXhjaGFyc1tjaGVja3N1bSA+PiA0XSk7DQorICAg ICAgcHV0RGVidWdDaGFyIChoZXhjaGFyc1tjaGVja3N1bSAmIDB4MGZdKTsNCisNCisgICAgfQ0K KyAgd2hpbGUgKGdldERlYnVnQ2hhciAoKSAhPSAnKycpOw0KK30NCisNCisvKiBBZGRyZXNzIG9m IGEgcm91dGluZSB0byBSVEUgdG8gaWYgd2UgZ2V0IGEgbWVtb3J5IGZhdWx0LiAgKi8NCitzdGF0 aWMgdm9pZCAoKnZvbGF0aWxlIF9tZW1fZmF1bHRfcm91dGluZSkgKCkgPSBOVUxMOw0KKw0KKy8q IEluZGljYXRlIHRvIGNhbGxlciBvZiBtZW0yaGV4IG9yIGhleDJtZW0gdGhhdCB0aGVyZSBoYXMg YmVlbiBhbg0KKyAgIGVycm9yLiAgKi8NCitzdGF0aWMgdm9sYXRpbGUgaW50IG1lbV9lcnIgPSAw Ow0KKw0KK3ZvaWQNCitzZXRfbWVtX2VyciAodm9pZCkNCit7DQorICBtZW1fZXJyID0gMTsNCit9 DQorDQorLyogVGhlc2UgYXJlIHNlcGFyYXRlIGZ1bmN0aW9ucyBzbyB0aGF0IHRoZXkgYXJlIHNv IHNob3J0IGFuZCBzd2VldA0KKyAgIHRoYXQgdGhlIGNvbXBpbGVyIHdvbid0IHNhdmUgYW55IF9y ZWdpc3RlcnMgKGlmIHRoZXJlIGlzIGEgZmF1bHQNCisgICB0byBtZW1fZmF1bHQsIHRoZXkgd29u J3QgZ2V0IHJlc3RvcmVkLCBzbyB0aGVyZSBiZXR0ZXIgbm90IGJlIGFueQ0KKyAgIHNhdmVkKS4g ICovDQoraW50DQorZ2V0X2NoYXIgKGNoYXIgKmFkZHIpDQorew0KKyAgcmV0dXJuICphZGRyOw0K K30NCisNCit2b2lkDQorc2V0X2NoYXIgKGNoYXIgKmFkZHIsIGludCB2YWwpDQorew0KKyAgKmFk ZHIgPSB2YWw7DQorfQ0KKw0KKy8qIGNvbnZlcnQgdGhlIG1lbW9yeSBwb2ludGVkIHRvIGJ5IG1l bSBpbnRvIGhleCwgcGxhY2luZyByZXN1bHQgaW4gYnVmICovDQorLyogcmV0dXJuIGEgcG9pbnRl ciB0byB0aGUgbGFzdCBjaGFyIHB1dCBpbiBidWYgKG51bGwpICovDQorLyogSWYgTUFZX0ZBVUxU IGlzIG5vbi16ZXJvLCB0aGVuIHdlIHNob3VsZCBzZXQgbWVtX2VyciBpbiByZXNwb25zZSB0bw0K KyAgIGEgZmF1bHQ7IGlmIHplcm8gdHJlYXQgYSBmYXVsdCBsaWtlIGFueSBvdGhlciBmYXVsdCBp biB0aGUgc3R1Yi4gICovDQorY2hhciAqDQorbWVtMmhleCAoY2hhciAqbWVtLCBjaGFyICogYnVm LCB1aW50MzJfdCBjb3VudCwgdWludDMyX3QgbWF5X2ZhdWx0KQ0KK3sNCisgIGludCBpOw0KKyAg dW5zaWduZWQgY2hhciBjaDsNCisNCisgIGlmIChtYXlfZmF1bHQpIHsNCisgICAgX21lbV9mYXVs dF9yb3V0aW5lID0gc2V0X21lbV9lcnI7DQorICB9DQorDQorICBmb3IgKGkgPSAwOyBpIDwgY291 bnQ7IGkrKykNCisgIHsNCisgICAgY2ggPSBnZXRfY2hhciAobWVtKyspOw0KKyAgICBpZiAobWF5 X2ZhdWx0ICYmIG1lbV9lcnIpIHsNCisgICAgICByZXR1cm4gKGJ1Zik7DQorICAgIH0NCisgICAg KmJ1ZisrID0gaGV4Y2hhcnNbY2ggPj4gNF07DQorICAgICpidWYrKyA9IGhleGNoYXJzW2NoICYg MHgwZl07DQorICB9DQorICAqYnVmID0gMDsNCisNCisgIGlmIChtYXlfZmF1bHQpIHsNCisgICAg X21lbV9mYXVsdF9yb3V0aW5lID0gTlVMTDsNCisgIH0NCisNCisgIHJldHVybiAoYnVmKTsNCit9 DQorDQorLyogY29udmVydCB0aGUgaGV4IGFycmF5IHBvaW50ZWQgdG8gYnkgYnVmIGludG8gYmlu YXJ5IHRvIGJlIHBsYWNlZCBpbiBtZW0gKi8NCisvKiByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBj aGFyYWN0ZXIgQUZURVIgdGhlIGxhc3QgYnl0ZSB3cml0dGVuICovDQorY2hhciAqDQoraGV4Mm1l bSAoY2hhciAqYnVmLCBjaGFyICptZW0sIHVpbnQzMl90IGNvdW50LCB1aW50MzJfdCBtYXlfZmF1 bHQpDQorew0KKyAgaW50IGk7DQorICB1bnNpZ25lZCBjaGFyIGNoOw0KKw0KKyAgaWYgKG1heV9m YXVsdCkNCisgICAgX21lbV9mYXVsdF9yb3V0aW5lID0gc2V0X21lbV9lcnI7DQorICBmb3IgKGkg PSAwOyBpIDwgY291bnQ7IGkrKykNCisgICAgew0KKyAgICAgIGNoID0gaGV4ICgqYnVmKyspIDw8 IDQ7DQorICAgICAgY2ggPSBjaCArIGhleCAoKmJ1ZisrKTsNCisgICAgICBzZXRfY2hhciAobWVt KyssIGNoKTsNCisgICAgICBpZiAobWF5X2ZhdWx0ICYmIG1lbV9lcnIpDQorCXJldHVybiAobWVt KTsNCisgICAgfQ0KKyAgaWYgKG1heV9mYXVsdCkNCisgICAgX21lbV9mYXVsdF9yb3V0aW5lID0g TlVMTDsNCisgIHJldHVybiAobWVtKTsNCit9DQorDQorLyogdGhpcyBmdW5jdGlvbiB0YWtlcyB0 aGUgeDY0IGV4Y2VwdGlvbiB2ZWN0b3IgYW5kIGF0dGVtcHRzIHRvDQorICAgdHJhbnNsYXRlIHRo aXMgbnVtYmVyIGludG8gYSB1bml4IGNvbXBhdGlibGUgc2lnbmFsIHZhbHVlICovDQordWludDMy X3QNCitjb21wdXRlU2lnbmFsICh1aW50NjRfdCBleGNlcHRpb25WZWN0b3IpDQorew0KKyAgdWlu dDMyX3Qgc2lndmFsOw0KKyAgc3dpdGNoIChleGNlcHRpb25WZWN0b3IpDQorICAgIHsNCisgICAg Y2FzZSAwOg0KKyAgICAgIHNpZ3ZhbCA9IDg7DQorICAgICAgYnJlYWs7CQkJLyogZGl2aWRlIGJ5 IHplcm8gKi8NCisgICAgY2FzZSAxOg0KKyAgICAgIHNpZ3ZhbCA9IDU7DQorICAgICAgYnJlYWs7 CQkJLyogZGVidWcgZXhjZXB0aW9uICovDQorICAgIGNhc2UgMzoNCisgICAgICBzaWd2YWwgPSA1 Ow0KKyAgICAgIGJyZWFrOwkJCS8qIGJyZWFrcG9pbnQgKi8NCisgICAgY2FzZSA0Og0KKyAgICAg IHNpZ3ZhbCA9IDE2Ow0KKyAgICAgIGJyZWFrOwkJCS8qIGludG8gaW5zdHJ1Y3Rpb24gKG92ZXJm bG93KSAqLw0KKyAgICBjYXNlIDU6DQorICAgICAgc2lndmFsID0gMTY7DQorICAgICAgYnJlYWs7 CQkJLyogYm91bmQgaW5zdHJ1Y3Rpb24gKi8NCisgICAgY2FzZSA2Og0KKyAgICAgIHNpZ3ZhbCA9 IDQ7DQorICAgICAgYnJlYWs7CQkJLyogSW52YWxpZCBvcGNvZGUgKi8NCisgICAgY2FzZSA3Og0K KyAgICAgIHNpZ3ZhbCA9IDg7DQorICAgICAgYnJlYWs7CQkJLyogY29wcm9jZXNzb3Igbm90IGF2 YWlsYWJsZSAqLw0KKyAgICBjYXNlIDg6DQorICAgICAgc2lndmFsID0gNzsNCisgICAgICBicmVh azsJCQkvKiBkb3VibGUgZmF1bHQgKi8NCisgICAgY2FzZSA5Og0KKyAgICAgIHNpZ3ZhbCA9IDEx Ow0KKyAgICAgIGJyZWFrOwkJCS8qIGNvcHJvY2Vzc29yIHNlZ21lbnQgb3ZlcnJ1biAqLw0KKyAg ICBjYXNlIDEwOg0KKyAgICAgIHNpZ3ZhbCA9IDExOw0KKyAgICAgIGJyZWFrOwkJCS8qIEludmFs aWQgVFNTICovDQorICAgIGNhc2UgMTE6DQorICAgICAgc2lndmFsID0gMTE7DQorICAgICAgYnJl YWs7CQkJLyogU2VnbWVudCBub3QgcHJlc2VudCAqLw0KKyAgICBjYXNlIDEyOg0KKyAgICAgIHNp Z3ZhbCA9IDExOw0KKyAgICAgIGJyZWFrOwkJCS8qIHN0YWNrIGV4Y2VwdGlvbiAqLw0KKyAgICBj YXNlIDEzOg0KKyAgICAgIHNpZ3ZhbCA9IDExOw0KKyAgICAgIGJyZWFrOwkJCS8qIGdlbmVyYWwg cHJvdGVjdGlvbiAqLw0KKyAgICBjYXNlIDE0Og0KKyAgICAgIHNpZ3ZhbCA9IDExOw0KKyAgICAg IGJyZWFrOwkJCS8qIHBhZ2UgZmF1bHQgKi8NCisgICAgY2FzZSAxNjoNCisgICAgICBzaWd2YWwg PSA3Ow0KKyAgICAgIGJyZWFrOwkJCS8qIGNvcHJvY2Vzc29yIGVycm9yICovDQorICAgIGRlZmF1 bHQ6DQorICAgICAgc2lndmFsID0gNzsJCS8qICJzb2Z0d2FyZSBnZW5lcmF0ZWQiICovDQorICAg IH0NCisgIHJldHVybiAoc2lndmFsKTsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovDQorLyogV0hJTEUgV0UgRklORCBOSUNFIEhFWCBDSEFS UywgQlVJTEQgQU4gSU5UICovDQorLyogUkVUVVJOIE5VTUJFUiBPRiBDSEFSUyBQUk9DRVNTRUQg ICAgICAgICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovDQordWludDMyX3QNCitoZXhUb0ludCAoY2hhciAqKnB0ciwgaW50NjRfdCAqaW50VmFs dWUpDQorew0KKyAgdWludDMyX3QgbnVtQ2hhcnMgPSAwOw0KKyAgaW50IGhleFZhbHVlOw0KKw0K KyAgKmludFZhbHVlID0gMDsNCisNCisgIHdoaWxlICgqKnB0cikNCisgICAgew0KKyAgICAgIGhl eFZhbHVlID0gaGV4ICgqKnB0cik7DQorICAgICAgaWYgKGhleFZhbHVlID49IDApDQorCXsNCisJ ICAqaW50VmFsdWUgPSAoKmludFZhbHVlIDw8IDQpIHwgaGV4VmFsdWU7DQorCSAgbnVtQ2hhcnMr KzsNCisJfQ0KKyAgICAgIGVsc2UNCisJYnJlYWs7DQorDQorICAgICAgKCpwdHIpKys7DQorICAg IH0NCisNCisgIHJldHVybiAobnVtQ2hhcnMpOw0KK30NCisNCisvKg0KKyAqIFRoaXMgZnVuY3Rp b24gZG9lcyBhbGwgY29tbWFuZCBwcm9jZXNpbmcgZm9yIGludGVyZmFjaW5nIHRvIGdkYi4NCisg Ki8NCit2b2lkDQorX2hhbmRsZV9leGNlcHRpb24gKHVpbnQ2NF90IGV4Y2VwdGlvblZlY3RvcikN Cit7DQorICB1aW50MzJfdCBzaWd2YWwsIHN0ZXBwaW5nOw0KKyAgaW50NjRfdCBhZGRyLCBsZW5n dGg7DQorICBjaGFyICpwdHI7DQorDQorICBnZGJfdmVjdG9yID0gZXhjZXB0aW9uVmVjdG9yOw0K Kw0KKyAgLyogcmVwbHkgdG8gaG9zdCB0aGF0IGFuIGV4Y2VwdGlvbiBoYXMgb2NjdXJyZWQgKi8N CisgIHNpZ3ZhbCA9IGNvbXB1dGVTaWduYWwgKGV4Y2VwdGlvblZlY3Rvcik7DQorDQorICBwdHIg PSByZW1jb21PdXRCdWZmZXI7DQorDQorICAqcHRyKysgPSAnVCc7CQkJLyogbm90aWZ5IGdkYiB3 aXRoIHNpZ25vLCBSSVAsIGFuZCB0aHJlYWQgaWQgKi8NCisgICpwdHIrKyA9IGhleGNoYXJzW3Np Z3ZhbCA+PiA0XTsNCisgICpwdHIrKyA9IGhleGNoYXJzW3NpZ3ZhbCAmIDB4MGZdOw0KKw0KKyAg KnB0cisrID0gaGV4Y2hhcnNbUklQID4+IDRdOw0KKyAgKnB0cisrID0gaGV4Y2hhcnNbUklQICYg MHgwZl07DQorICAqcHRyKysgPSAnOic7DQorICBwdHIgPSBtZW0yaGV4KChjaGFyICopJl9yZWdp c3RlcnNbUklQXSwgcHRyLCA4LCAwKTsgLyogUklQICovDQorICAqcHRyKysgPSAnOyc7DQorDQor ICBnZGJfc3RyY3B5KHB0ciwgInRocmVhZDoiVEhSRUFEX1RJRCI7Iik7DQorDQorICBwdXRwYWNr ZXQgKHJlbWNvbU91dEJ1ZmZlcik7DQorDQorICBzdGVwcGluZyA9IDA7DQorDQorICB3aGlsZSAo MSA9PSAxKQ0KKyAgICB7DQorICAgICAgcmVtY29tT3V0QnVmZmVyWzBdID0gMDsNCisgICAgICBw dHIgPSBnZXRwYWNrZXQgKCk7DQorDQorICAgICAgc3dpdGNoICgqcHRyKyspDQorCXsNCisJY2Fz ZSAnPyc6DQorCSAgcmVtY29tT3V0QnVmZmVyWzBdID0gJ1MnOw0KKwkgIHJlbWNvbU91dEJ1ZmZl clsxXSA9IGhleGNoYXJzW3NpZ3ZhbCA+PiA0XTsNCisJICByZW1jb21PdXRCdWZmZXJbMl0gPSBo ZXhjaGFyc1tzaWd2YWwgJiAweDBmXTsNCisJICByZW1jb21PdXRCdWZmZXJbM10gPSAwOw0KKwkg IGJyZWFrOw0KKyAgY2FzZSAnRCc6IC8qIGRldGFjaCAqLw0KKyAgICBnZGJfc3RyY3B5IChyZW1j b21PdXRCdWZmZXIsICJPSyIpOw0KKyAgICBicmVhazsNCisJY2FzZSAnZyc6CQkvKiByZXR1cm4g dGhlIHZhbHVlIG9mIHRoZSBDUFUgX3JlZ2lzdGVycyAqLw0KKwkgIHB0ciA9IG1lbTJoZXggKChj aGFyICopIF9yZWdpc3RlcnMsIHJlbWNvbU91dEJ1ZmZlciwgTlVNUkVHQllURVMsIDApOw0KKwkg IG1lbTJoZXgoKGNoYXIgKikgX3NlZ3JlZ2lzdGVycywgcHRyLCBOVU1TRUdSRUdCWVRFUywgMCk7 DQorICAgIGJyZWFrOw0KKwljYXNlICdHJzoJCS8qIHNldCB0aGUgdmFsdWUgb2YgdGhlIENQVSBf cmVnaXN0ZXJzIC0gcmV0dXJuIE9LICovDQorCSAgaGV4Mm1lbSAocHRyLCAoY2hhciAqKSBfcmVn aXN0ZXJzLCBOVU1SRUdCWVRFUywgMCk7DQorICAgIHB0ciArPSAoTlVNUkVHQllURVMgKiAyKTsN CisgICAgaGV4Mm1lbShwdHIsIChjaGFyICopIF9zZWdyZWdpc3RlcnMsIE5VTVNFR1JFR0JZVEVT LCAwKTsNCisJICBnZGJfc3RyY3B5IChyZW1jb21PdXRCdWZmZXIsICJPSyIpOw0KKwkgIGJyZWFr Ow0KKyAgY2FzZSAncCc6ICAvKiByZXR1cm4gdGhlIHZhbHVlIG9mIGEgc2luZ2xlIENQVSByZWdp c3RlciAqLw0KKyAgew0KKyAgICBpbnQ2NF90IHJlZ25vOw0KKw0KKyAgICBpZiAoaGV4VG9JbnQo JnB0ciwgJnJlZ25vKSkgew0KKyAgICAgIGlmIChyZWdubyA+PSAwKSB7DQorICAgICAgICBpZiAo cmVnbm8gPCBOVU1SRUdTKSB7DQorICAgICAgICAgIG1lbTJoZXgoKGNoYXIgKikgJl9yZWdpc3Rl cnNbcmVnbm9dLCByZW1jb21PdXRCdWZmZXIsIDgsIDApOw0KKyAgICAgICAgICBicmVhazsNCisg ICAgICAgIH0gZWxzZSBpZiAocmVnbm8gPCAoTlVNUkVHUyArIE5VTVNFR1JFR1MpKSB7DQorICAg ICAgICAgIG1lbTJoZXgoKGNoYXIgKikgJl9zZWdyZWdpc3RlcnNbcmVnbm8gLSBOVU1SRUdTXSwg cmVtY29tT3V0QnVmZmVyLCA0LCAwKTsNCisgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQor ICAgICAgfQ0KKyAgICB9DQorDQorICAgIGdkYl9zdHJjcHkgKHJlbWNvbU91dEJ1ZmZlciwgIkUw MSIpOw0KKyAgICBicmVhazsNCisgIH0NCisJY2FzZSAnUCc6CQkvKiBzZXQgdGhlIHZhbHVlIG9m IGEgc2luZ2xlIENQVSByZWdpc3RlciAtIHJldHVybiBPSyAqLw0KKyAgew0KKwkgICAgaW50NjRf dCByZWdubzsNCisNCisJICAgIGlmIChoZXhUb0ludCAoJnB0ciwgJnJlZ25vKSAmJiAqcHRyKysg PT0gJz0nKSB7DQorCSAgICAgIGlmIChyZWdubyA+PSAwKSB7DQorICAgICAgICAgIGlmIChyZWdu byA8IE5VTVJFR1MpIHsNCisgICAgICAgICAgICBoZXgybWVtIChwdHIsIChjaGFyICopICZfcmVn aXN0ZXJzW3JlZ25vXSwgOCwgMCk7DQorICAgICAgICAgICAgZ2RiX3N0cmNweSAocmVtY29tT3V0 QnVmZmVyLCAiT0siKTsNCisJCSAgICAgICAgYnJlYWs7DQorICAgICAgICAgIH0gZWxzZSBpZiAo cmVnbm8gPCAoTlVNUkVHUyArIE5VTVNFR1JFR1MpKSB7DQorICAgICAgICAgICAgaGV4Mm1lbSAo cHRyLCAoY2hhciAqKSAmX3NlZ3JlZ2lzdGVyc1tyZWdub10sIDQsIDApOw0KKyAgICAgICAgICAg IGdkYl9zdHJjcHkgKHJlbWNvbU91dEJ1ZmZlciwgIk9LIik7DQorICAgICAgICAgICAgYnJlYWs7 DQorICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgLyoNCisgICAgICAgICAgICAgKiBI YWNrIHRvIGRlYWwgd2l0aCBnZGIgY2xpZW50IGFza2luZyB0byBzZXQgd2VpcmQgcmVnaXN0ZXJz DQorICAgICAgICAgICAgICogc3VjaCBhcyAib3JpZ19yYXgiIC0gbGllIGFuZCBzYXkgd2Ugc2V0 IHRoZSBub24tZXhpc3RlbnQgcmVnaXN0ZXIuDQorICAgICAgICAgICAgICovDQorICAgICAgICAg ICAgZ2RiX3N0cmNweSAocmVtY29tT3V0QnVmZmVyLCAiT0siKTsNCisgICAgICAgICAgICBicmVh azsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgICBnZGJfc3RyY3B5 IChyZW1jb21PdXRCdWZmZXIsICJFMDEiKTsNCisgICAgICBicmVhazsNCisgIH0NCisgIC8qIG1B QS4uQUEsTExMTCAgUmVhZCBMTExMIGJ5dGVzIGF0IGFkZHJlc3MgQUEuLkFBICovDQorCWNhc2Ug J20nOg0KKwkgIC8qIFRSWSBUTyBSRUFEICV4LCV4LiAgSUYgU1VDQ0VFRCwgU0VUIFBUUiA9IDAg Ki8NCisJICBpZiAoaGV4VG9JbnQgKCZwdHIsICZhZGRyKSkNCisJICAgIGlmICgqKHB0cisrKSA9 PSAnLCcpDQorCSAgICAgIGlmIChoZXhUb0ludCAoJnB0ciwgJmxlbmd0aCkpDQorCQl7DQorCQkg IHB0ciA9IDA7DQorCQkgIG1lbV9lcnIgPSAwOw0KKwkJICBtZW0yaGV4ICgoY2hhciAqKSBhZGRy LCByZW1jb21PdXRCdWZmZXIsIGxlbmd0aCwgMSk7DQorCQkgIGlmIChtZW1fZXJyKQ0KKwkJICAg IHsNCisJCSAgICAgIGdkYl9zdHJjcHkgKHJlbWNvbU91dEJ1ZmZlciwgIkUwMyIpOw0KKwkJICAg ICAgZGVidWdfZXJyb3IgKCJtZW1vcnkgZmF1bHQiKTsNCisJCSAgICB9DQorCQl9DQorDQorCSAg aWYgKHB0cikNCisJICAgIHsNCisJICAgICAgZ2RiX3N0cmNweSAocmVtY29tT3V0QnVmZmVyLCAi RTAxIik7DQorCSAgICB9DQorCSAgYnJlYWs7DQorDQorCSAgLyogTUFBLi5BQSxMTExMOiBXcml0 ZSBMTExMIGJ5dGVzIGF0IGFkZHJlc3MgQUEuQUEgcmV0dXJuIE9LICovDQorCWNhc2UgJ00nOg0K KwkgIC8qIFRSWSBUTyBSRUFEICcleCwleDonLiAgSUYgU1VDQ0VFRCwgU0VUIFBUUiA9IDAgKi8N CisJICBpZiAoaGV4VG9JbnQgKCZwdHIsICZhZGRyKSkNCisJICAgIGlmICgqKHB0cisrKSA9PSAn LCcpDQorCSAgICAgIGlmIChoZXhUb0ludCAoJnB0ciwgJmxlbmd0aCkpDQorCQlpZiAoKihwdHIr KykgPT0gJzonKQ0KKwkJICB7DQorCQkgICAgbWVtX2VyciA9IDA7DQorCQkgICAgaGV4Mm1lbSAo cHRyLCAoY2hhciAqKSBhZGRyLCBsZW5ndGgsIDEpOw0KKw0KKwkJICAgIGlmIChtZW1fZXJyKQ0K KwkJICAgICAgew0KKwkJCWdkYl9zdHJjcHkgKHJlbWNvbU91dEJ1ZmZlciwgIkUwMyIpOw0KKwkJ CWRlYnVnX2Vycm9yICgibWVtb3J5IGZhdWx0Iik7DQorCQkgICAgICB9DQorCQkgICAgZWxzZQ0K KwkJICAgICAgew0KKwkJCWdkYl9zdHJjcHkgKHJlbWNvbU91dEJ1ZmZlciwgIk9LIik7DQorCQkg ICAgICB9DQorDQorCQkgICAgcHRyID0gMDsNCisJCSAgfQ0KKwkgIGlmIChwdHIpDQorCSAgICB7 DQorCSAgICAgIGdkYl9zdHJjcHkgKHJlbWNvbU91dEJ1ZmZlciwgIkUwMiIpOw0KKwkgICAgfQ0K KwkgIGJyZWFrOw0KKw0KKwkgIC8qIGNBQS4uQUEgICAgQ29udGludWUgYXQgYWRkcmVzcyBBQS4u QUEob3B0aW9uYWwpICovDQorCSAgLyogc0FBLi5BQSAgIFN0ZXAgb25lIGluc3RydWN0aW9uIGZy b20gQUEuLkFBKG9wdGlvbmFsKSAqLw0KKwljYXNlICdzJzoNCisJICBzdGVwcGluZyA9IDE7DQor ICAvKiBGQUxMVEhST1VHSCAqLw0KKwljYXNlICdjJzoNCisJICAvKiB0cnkgdG8gcmVhZCBvcHRp b25hbCBwYXJhbWV0ZXIsUklQIHVuY2hhbmdlZCBpZiBubyBwYXJtICovDQorCSAgaWYgKGhleFRv SW50ICgmcHRyLCAmYWRkcikpIHsNCisJICAgIF9yZWdpc3RlcnNbUklQXSA9IGFkZHI7DQorICAg IH0NCisNCisJICAvKiBjbGVhciB0aGUgdHJhY2UgYml0ICovDQorCSAgX3NlZ3JlZ2lzdGVyc1tQ U10gJj0gMHhmZmZmZmVmZjsNCisNCisJICAvKiBzZXQgdGhlIHRyYWNlIGJpdCBpZiB3ZSdyZSBz dGVwcGluZyAqLw0KKwkgIGlmIChzdGVwcGluZykgew0KKwkgICAgX3NlZ3JlZ2lzdGVyc1tQU10g fD0gMHgwMDAwMDEwMDsNCisgICAgfQ0KKw0KKwkgIF9yZXR1cm5Gcm9tRXhjZXB0aW9uICgpOwkv KiB0aGlzIGlzIGEganVtcCAqLw0KKwkgIGJyZWFrOw0KKw0KKwkgIC8qIGtpbGwgdGhlIHByb2dy YW0gKi8NCisJY2FzZSAnayc6DQorICAgIC8qDQorICAgICAqIFdlIGRvbid0IGFjdHVhbGx5IHdh bnQgdG8gcmVib290IHRoZSBsb2FkZXIgLSBkbyBub3RoaW5nLg0KKyAgICAgKi8NCisJICBicmVh azsNCisNCisgIC8qIFNldCB0aHJlYWQgZm9yIHN1YnNlcXVlbnQgb3BlcmF0aW9uczsgaWdub3Jl IHRoaXMgc2luY2Ugd2UgYXJlIGEgc2luZ2xlIHRocmVhZGVkIHRhcmdldCAqLw0KKyAgY2FzZSAn SCc6DQorICAgIGdkYl9zdHJjcHkgKHJlbWNvbU91dEJ1ZmZlciwgIk9LIik7DQorICAgIGJyZWFr Ow0KKw0KKyAgLyoNCisgICAqIEdlbmVyYWwgUXVlcnkgUGFja2V0cw0KKyAgICoNCisgICAqIFNl ZSAtIGh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2RiL2N1cnJlbnQvb25saW5lZG9jcy9nZGIvR2Vu ZXJhbC1RdWVyeS1QYWNrZXRzLmh0bWwNCisgICAqLw0KKyAgY2FzZSAncSc6DQorICAgIC8qIHFT dXBwb3J0ZWQgcGFja2V0ICovDQorICAgIGlmIChnZGJfc3RyX3N0YXJ0c193aXRoKHB0ciwgIlN1 cHBvcnRlZCIpKSB7DQorICAgICAgZ2RiX3N0cmNweSAocmVtY29tT3V0QnVmZmVyLCAibXVsdGlw cm9jZXNzLTt2Q29udFN1cHBvcnRlZC07UVRocmVhZEV2ZW50cy0iKTsNCisgICAgfQ0KKyAgICAv KiBxQyBwYWNrZXQgKi8NCisgICAgZWxzZSBpZiAoc3RyY21wKHB0ciwgIkMiKSA9PSAwKSB7DQor ICAgICAgLy8gc2luZ2xlIHRocmVhZGVkIHRhcmdldCAtIHJlcGx5IHdpdGggdGhyZWFkIGlkDQor ICAgICAgZ2RiX3N0cmNweSAocmVtY29tT3V0QnVmZmVyLCAiUUMiVEhSRUFEX1RJRCk7DQorICAg IH0NCisgICAgLyogcVRTdGF0dXMgcGFja2V0ICovDQorICAgIGVsc2UgaWYgKHN0cmNtcChwdHIs ICJUU3RhdHVzIikgPT0gMCkgew0KKyAgICAgIC8vIG5vIHRyYWNlIGlzIHJ1bm5pbmcNCisgICAg ICBnZGJfc3RyY3B5KHJlbWNvbU91dEJ1ZmZlciwgIlQwIik7DQorICAgIH0NCisgICAgYnJlYWs7 DQorCX0JCQkvKiBzd2l0Y2ggKi8NCisNCisgICAgICAvKiByZXBseSB0byB0aGUgcmVxdWVzdCAq Lw0KKyAgICAgIHB1dHBhY2tldCAocmVtY29tT3V0QnVmZmVyKTsNCisgICAgfQ0KK30NCisNCisv KiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2V0IHVwIGV4Y2VwdGlvbiBoYW5kbGVycyBmb3Ig dHJhY2luZyBhbmQNCisgICBicmVha3BvaW50cyAqLw0KK3ZvaWQNCitzZXRfZGVidWdfdHJhcHMg KHZvaWQpDQorew0KKyAgX3N0YWNrUHRyID0gJnJlbWNvbVN0YWNrW1NUQUNLU0laRSAvIHNpemVv ZiAodWludDY0X3QpIC0gMV07DQorDQorICBwcmludGYoIlNldHRpbmcgRGVidWcgVHJhcHMgZm9y IEdEQi5cblxuIik7DQorDQorICBleGNlcHRpb25IYW5kbGVyKDAsIF9jYXRjaEV4Y2VwdGlvbjAp Ow0KKyAgZXhjZXB0aW9uSGFuZGxlcigxLCBfY2F0Y2hFeGNlcHRpb24xKTsNCisgIGV4Y2VwdGlv bkhhbmRsZXIoMywgX2NhdGNoRXhjZXB0aW9uMyk7DQorICBleGNlcHRpb25IYW5kbGVyKDQsIF9j YXRjaEV4Y2VwdGlvbjQpOw0KKyAgZXhjZXB0aW9uSGFuZGxlcig1LCBfY2F0Y2hFeGNlcHRpb241 KTsNCisgIGV4Y2VwdGlvbkhhbmRsZXIoNiwgX2NhdGNoRXhjZXB0aW9uNik7DQorICBleGNlcHRp b25IYW5kbGVyKDcsIF9jYXRjaEV4Y2VwdGlvbjcpOw0KKyAgZXhjZXB0aW9uSGFuZGxlcig4LCBf Y2F0Y2hFeGNlcHRpb244KTsNCisgIGV4Y2VwdGlvbkhhbmRsZXIoOSwgX2NhdGNoRXhjZXB0aW9u OSk7DQorICBleGNlcHRpb25IYW5kbGVyKDEwLCBfY2F0Y2hFeGNlcHRpb24xMCk7DQorICBleGNl cHRpb25IYW5kbGVyKDExLCBfY2F0Y2hFeGNlcHRpb24xMSk7DQorICBleGNlcHRpb25IYW5kbGVy KDEyLCBfY2F0Y2hFeGNlcHRpb24xMik7DQorICAvKg0KKyAgICogRG9uJ3QgaW5zdGFsbCBHUCBl eGNlcHRpb24gaGFuZGxlcg0KKyAgICovDQorICAvLyBleGNlcHRpb25IYW5kbGVyICAoMTMsIF9j YXRjaEV4Y2VwdGlvbjEzKTsNCisgIGV4Y2VwdGlvbkhhbmRsZXIoMTQsIF9jYXRjaEV4Y2VwdGlv bjE0KTsNCisgIGV4Y2VwdGlvbkhhbmRsZXIoMTYsIF9jYXRjaEV4Y2VwdGlvbjE2KTsNCit9DQor DQorDQordm9pZCBnZGJfaW5pdCh2b2lkKQ0KK3sNCisJaWYgKCFpbml0aWFsaXplZCkgew0KKwkJ c2V0X2RlYnVnX3RyYXBzKCk7DQorCX0NCisgICAgaW5pdGlhbGl6ZWQgPSAxOw0KK30NCisNCisv KiBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgYSBicmVha3BvaW50IGV4Y2VwdGlvbi4gIEl0 IGlzIHVzZWQgYXQgdGhlDQorICAgYmVnaW5uaW5nIG9mIGEgcHJvZ3JhbSB0byBzeW5jIHVwIHdp dGggYSBkZWJ1Z2dlciBhbmQgY2FuIGJlIHVzZWQNCisgICBvdGhlcndpc2UgYXMgYSBxdWljayBt ZWFucyB0byBzdG9wIHByb2dyYW0gZXhlY3V0aW9uIGFuZCAiYnJlYWsiIGludG8NCisgICB0aGUg ZGVidWdnZXIuICovDQorDQordm9pZA0KK2JyZWFrcG9pbnQgKHZvaWQpDQorew0KKwlpZiAoIWlu aXRpYWxpemVkKSB7DQorCQlnZGJfaW5pdCgpOw0KKwl9DQorDQorCUJSRUFLUE9JTlQgKCk7DQor fQ0KKw0KK3N0YXRpYyB2b2lkIGdkYl9iY29weSh2b2lkICpmcm9tLCB2b2lkICp0bywgaW50IGxl bmd0aCkNCit7DQorICAgIGNoYXIgKmZwID0gZnJvbTsNCisgICAgY2hhciAqdHAgPSB0bzsNCisN CisgICAgd2hpbGUgKGxlbmd0aC0tKSAqdHArKyA9ICpmcCsrOw0KK30NCisNCisjZGVmaW5lIEdE Ql9STEVfTEVOX0VOQ09ERV9PRkZTRVQgMjkNCisjZGVmaW5lIEdEQl9STEVfTUlOX0VOQ09ERV9M RU4gNA0KKyNkZWZpbmUgR0RCX1JMRV9NQVhfRU5DT0RFX0xFTiAoMTI2IC0gR0RCX1JMRV9MRU5f RU5DT0RFX09GRlNFVCkNCisNCitzdGF0aWMgc2l6ZV90IGdkYl9ydW5fbGVuZ3RoX2VuY29kZShj aGFyICpidWZmZXIsIHNpemVfdCBsZW5ndGgpDQorew0KKyAgICBpZiAobGVuZ3RoIDwgR0RCX1JM RV9NSU5fRU5DT0RFX0xFTikNCisgICAgICAgIHJldHVybiBsZW5ndGg7DQorDQorICAgIHNpemVf dCBuZXdMZW4gPSBsZW5ndGg7DQorICAgIGNoYXIgKnJsZVN0YXJ0ID0gJmJ1ZmZlclswXTsNCisg ICAgaW50IGk7DQorDQorICAgIGZvciAoaSA9IDE7IGkgPCBuZXdMZW47ICsraSkgew0KKyAgICAg ICAgLy8gcmxlQmxvY2tMZW4gaXMgdGhlIGNvdW50IG9mIGlkZW50aWNhbCBjaGFyYWN0ZXJzIGlu IHRoZSBibG9jay4NCisgICAgICAgIC8vIFRoZSBlbmNvZGluZyBpcyA8Y2hhcj4qPHJlcGVhdD4g d2hlcmUgcmVwZWF0IGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0DQorICAgICAgICAv LyA8Y2hhcj4sIHRoZXJlZm9yZSA8cmVwZWF0PiBpcyAocmxlQmxvY2tMZW4gLSAxKQ0KKyAgICAg ICAgY2hhciBybGVCbG9ja0xlbiA9ICgmYnVmZmVyW2ldIC0gcmxlU3RhcnQpICsgMTsNCisNCisg ICAgICAgIGlmICgoaSA9PSAobmV3TGVuIC0gMSkpIHx8IChidWZmZXJbaV0gIT0gKnJsZVN0YXJ0 KSB8fCAoKHJsZUJsb2NrTGVuIC0gMSkgPT0gR0RCX1JMRV9NQVhfRU5DT0RFX0xFTikpIHsNCisg ICAgICAgICAgICAvLyByZWFjaGVkIGFuIGVuZCBjb25kaXRpb24NCisgICAgICAgICAgICBpZiAo YnVmZmVyW2ldICE9ICpybGVTdGFydCkgew0KKyAgICAgICAgICAgICAgICAvLyBpbiB0aGlzIGNh c2UgYnVmZmVyW2ldIGlzIHBvaW50aW5nIGF0IHRoZSBmaXJzdCBub24gZW5jb2RhYmxlIGJ5dGUg YWZ0ZXIgdGhlIGJsb2NrDQorICAgICAgICAgICAgICAgIC8vIHNvIGFkanVzdCBybGVCbG9ja0xl bg0KKyAgICAgICAgICAgICAgICBybGVCbG9ja0xlbiAtPSAxOw0KKyAgICAgICAgICAgIH0NCisN CisgICAgICAgICAgICBpZiAocmxlQmxvY2tMZW4gPCBHREJfUkxFX01JTl9FTkNPREVfTEVOKSB7 DQorICAgICAgICAgICAgICAgIHJsZVN0YXJ0ID0gJmJ1ZmZlcltpXTsNCisgICAgICAgICAgICAg ICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIGNoYXIgZW5jb2Rl ZExlbmd0aCA9IEdEQl9STEVfTEVOX0VOQ09ERV9PRkZTRVQgKyAocmxlQmxvY2tMZW4gLSAxKTsN CisgICAgICAgICAgICBpZiAoKGVuY29kZWRMZW5ndGggPT0gJysnKSB8fCAoZW5jb2RlZExlbmd0 aCA9PSAnLScpIHx8DQorICAgICAgICAgICAgICAgIChlbmNvZGVkTGVuZ3RoID09ICckJykgfHwg KGVuY29kZWRMZW5ndGggPT0gJyMnKSkgew0KKyAgICAgICAgICAgICAgICAvLyBkb24ndCBybGUg aWYgZW5jb2RlZCBsZW5ndGggaXMgYSByZXNlcnZlZCBjaGFyYWN0ZXINCisgICAgICAgICAgICAg ICAgLy8gVEJEOiBjb3VsZCBzdGlsbCBlbmNvZGUgYnkgZW5jb2RpbmcgYSBzaG9ydGVyIGJsb2Nr LCBidXQgZm9yIG5vdyBqdXN0IGxlYXZlIGl0IHVuZW5jb2RlZA0KKyAgICAgICAgICAgICAgICBy bGVTdGFydCA9ICZidWZmZXJbaV07DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAg ICAgICAgIH0NCisNCisgICAgICAgICAgICAvLyBvbmx5IGVuY29kZSBpZiB0aGUgZW5jb2RlZCBs ZW5ndGggaXMgbm90IGEgcmVzZXJ2ZWQgY2hhcmFjdGVyDQorICAgICAgICAgICAgcmxlU3RhcnRb MV0gPSAnKic7DQorICAgICAgICAgICAgcmxlU3RhcnRbMl0gPSBlbmNvZGVkTGVuZ3RoOw0KKyAg ICAgICAgICAgIGlmICgmcmxlU3RhcnRbM10gPCAmYnVmZmVyW25ld0xlbl0pIHsNCisgICAgICAg ICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbW9yZSBkYXRhIGluIHRoZSBidWZmZXIsIHNoaWZ0IGl0 IGxlZnQgdXAgdG8gdGhlIGVuZCBvZiB0aGUgbmV3bHkNCisgICAgICAgICAgICAgICAgLy8gZW5j b2RlZCBkYXRhDQorICAgICAgICAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvUmVtb3ZlID0gcmxl QmxvY2tMZW4gLSAzOw0KKyAgICAgICAgICAgICAgICBjaGFyICpmaXJzdEJ5dGVUb1JlbW92ZSA9 ICZybGVTdGFydFszXTsNCisgICAgICAgICAgICAgICAgY2hhciAqZmlyc3RCeXRlVG9Nb3ZlID0g Zmlyc3RCeXRlVG9SZW1vdmUgKyBudW1CeXRlc1RvUmVtb3ZlOw0KKyAgICAgICAgICAgICAgICBp bnQgbnVtQnl0ZXNUb01vdmUgPSBuZXdMZW4gLSAoZmlyc3RCeXRlVG9SZW1vdmUgLSBidWZmZXIp IC0gbnVtQnl0ZXNUb1JlbW92ZTsNCisgICAgICAgICAgICAgICAgaWYgKG51bUJ5dGVzVG9Nb3Zl ID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgZ2RiX2Jjb3B5KGZpcnN0Qnl0ZVRvTW92ZSwg Zmlyc3RCeXRlVG9SZW1vdmUsIG51bUJ5dGVzVG9Nb3ZlKTsNCisgICAgICAgICAgICAgICAgfQ0K KyAgICAgICAgICAgICAgICBuZXdMZW4gLT0gbnVtQnl0ZXNUb1JlbW92ZTsNCisgICAgICAgICAg ICAgICAgLy8gYWRqdXN0IGkgc28gdGhhdCBwcm9jZXNzaW5nIHdpbGwgY29udGludWUgb24gdGhl IG1vdmVkIGRhdGENCisgICAgICAgICAgICAgICAgaSA9ICgmcmxlU3RhcnRbM10gLSBidWZmZXIp Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBybGVTdGFydCA9ICZidWZmZXJbaV07DQor ICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuIG5ld0xlbjsNCit9DQorDQorc3RhdGlj IGNoYXIgKmdkYl9zdHJjcHkoY2hhciAqZGVzdCxjb25zdCBjaGFyICpzcmMpDQorew0KKyAgY2hh ciAqcHRyID0gZGVzdDsNCisNCisgIHdoaWxlICgqc3JjKSAqcHRyKysgPSAqc3JjKys7DQorICAq cHRyID0gJ1wwJzsNCisNCisgIHJldHVybiBkZXN0Ow0KK30NCisNCisvKiByZXR1cm4gMSBpZiBz dHIgc3RhcnRzIHdpdGggcHJlZml4IGFuZCAwIG90aGVyd2lzZSAqLw0KK3N0YXRpYyBpbnQgZ2Ri X3N0cl9zdGFydHNfd2l0aChjaGFyICpzdHIsIGNoYXIgKnByZWZpeCkNCit7DQorICByZXR1cm4g KHN0cm5jbXAoc3RyLCBwcmVmaXgsIHN0cmxlbihwcmVmaXgpKSA9PSAwKTsNCit9DQorDQorDQor Ly8gRGVmYXVsdCBJbXBsZW1lbnRhdGlvbnMgb2YgT1MgU3BlY2lmaWMgRnVuY3Rpb25zDQorDQor I2lmZGVmIEdEQl9VU0VfU0VSSUFMX1BPUlRfSU8NCisNCisvLyBJbXBsZW1lbnRhdGlvbnMgb2Yg SS9PIGZ1bmN0aW9ucyAtIHB1dERlYnVnQ2hhcigpIGFuZCBnZXREZWJ1Z0NoYXIoKQ0KKw0KKyNk ZWZpbmUgREVCVUdfQ09NX1BPUlQgKCh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCkweDNmOCkNCisj ZGVmaW5lIENPTV9SRUdfVEhCICAgKERFQlVHX0NPTV9QT1JUICsgMCkNCisjZGVmaW5lIENPTV9S RUdfUkIgICAgKERFQlVHX0NPTV9QT1JUICsgMCkNCisNCisjZGVmaW5lIENPTV9SRUdfTFNSICAg KERFQlVHX0NPTV9QT1JUICsgNSkNCisjZGVmaW5lIExTUl9USEJfRU1QVFkgKDE8PDUpDQorI2Rl ZmluZSBMU1JfUkJfUkVBRFkgICgxPDwwKQ0KKw0KK2V4dGVybiB2b2lkIHBoeXNfd3JpdGU4KHVp bnQ2NF90IHBvcnQsIHVpbnQ4X3QgZGF0YSk7DQorZXh0ZXJuIHVpbnQ4X3QgcGh5c19yZWFkOCh1 aW50NjRfdCBwb3J0KTsNCisNCit2b2lkIHB1dERlYnVnQ2hhcihjaGFyIGMpDQorew0KKyAgd2hp bGUoISAocGh5c19yZWFkOChDT01fUkVHX0xTUikgJiBMU1JfVEhCX0VNUFRZKSApIHsNCisgICAg ICAvLyB3YWl0IGZvciBjdXJyZW50IGJ5dGUgdG8gYmUgd3JpdHRlbg0KKyAgfQ0KKyAgcGh5c193 cml0ZTgoQ09NX1JFR19USEIsIGMpOw0KK30NCisNCitpbnQgZ2V0RGVidWdDaGFyKHZvaWQpDQor ew0KKyAgY2hhciBjOw0KKyAgd2hpbGUgKCEgKHBoeXNfcmVhZDgoQ09NX1JFR19MU1IpICYgTFNS X1JCX1JFQURZKSApIHsNCisgICAgICAvLyB3YWl0IGZvciBhIGNoYXJhY3Rlcg0KKyAgfQ0KKyAg YyA9IHBoeXNfcmVhZDgoQ09NX1JFR19SQik7DQorICByZXR1cm4gYzsNCit9DQorDQorI2VuZGlm IC8qIEdEQl9VU0VfU0VSSUFMX1BPUlRfSU8gKi8NCisNCisjaWZkZWYgR0RCX1VTRV9TVERfWDY0 X0VYQ0VQVElPTl9IQU5ETEVSDQorDQorLy8gSW1wbGVtZW50YXRpb24gb2YgSW50ZXJydXB0IERl c2NyaXB0b3IgVGFibGUgKElEVCkgZnVuY3Rpb24gLSBleGNlcHRpb25IYW5kbGVyKCkNCisNCit0 eXBlZGVmIHN0cnVjdCBpZHRyX3RhYmxlX2VudHJ5IHsNCisJdWludDE2X3QgaGFuZGxlcl9hZGRy X29mZnNldDE7DQorCXVpbnQxNl90IHNlZ21lbnRfc2VsZWN0b3I7DQorCXVpbnQxNl90IGZsYWdz Ow0KKwl1aW50MTZfdCBoYW5kbGVyX2FkZHJfb2Zmc2V0MjsNCisJdWludDMyX3QgaGFuZGxlcl9h ZGRyX29mZnNldDM7DQorCXVpbnQzMl90IHJlc2VydmVkOw0KK30gX19hdHRyaWJ1dGVfXygocGFj a2VkKSkgaWR0cl90YWJsZV9lbnRyeV90Ow0KKw0KK3R5cGVkZWYgc3RydWN0IGlkdHJfdGFibGVf YWRkciB7DQorCXVpbnQxNl90IGxpbWl0OyAvLyB0aGUgb2Zmc2V0IChpbiBieXRlcykgb2YgdGhl IGxhc3QgdmFsaWQgYnl0ZSBpbiB0aGUgaWR0cg0KKwlpZHRyX3RhYmxlX2VudHJ5X3QgKmFkZHI7 IC8vIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIGlkdHIgaW4gbWVtb3J5DQorfSBfX2F0dHJpYnV0 ZV9fKChwYWNrZWQpKSBpZHRyX3RhYmxlX2FkZHJfdDsNCisNCisvKiBzdG9yZSB0aGUgYWRkcmVz cyBvZiB0aGUgaW50ZXJydXB0IGRlc2NydGlwdG9yIHRhYmxlIGluIG1lbW9yeSAqLw0KK3ZvaWQg c3RvcmVfaWR0cihpZHRyX3RhYmxlX2FkZHJfdCAqaWR0cl90YWJsZV9hZGRyKTsNCisNCithc20o Ii50ZXh0Iik7DQorYXNtKCJzdG9yZV9pZHRyOiIpOw0KKyAgLy8gJXJkaSBpcyB0aGUgcGFyYW1l dGVyIHRvIHRoaXMgZnVuY3Rpb24NCisgIC8vIGEgcG9pbnRlciB0byBhIDEwLWJ5dGUgbWVtb3J5 IGxvY2F0aW9uDQorICBhc20oInNpZHQgKCVyZGkpIik7DQorICBhc20oInJldHEiKTsNCisNCisv KiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAxNi1iaXQgJWNzIChjb2RlIHNlZ21lbnQpIHJlZ2lz dGVyICovDQordWludDE2X3QgZ2V0X2NzX3JlZyh2b2lkKTsNCisNCithc20oIi50ZXh0Iik7DQor YXNtKCJnZXRfY3NfcmVnOiIpOw0KKyAgYXNtKCJ4b3IgJXJheCwgJXJheCIpOw0KKyAgYXNtKCJt b3YgJWNzLCAlcmF4Iik7DQorICBhc20oInJldHEiKTsNCisNCit2b2lkIGV4Y2VwdGlvbkhhbmRs ZXIoaW50IGludHJfdmVjdG9yLCB2b2lkICppbnRyX2hhbmRsZXIpDQorew0KKyAgaWR0cl90YWJs ZV9hZGRyX3QgaWR0cl90YWJsZV9hZGRyOw0KKyAgc3RvcmVfaWR0cigmaWR0cl90YWJsZV9hZGRy KTsNCisNCisgIGlkdHJfdGFibGVfZW50cnlfdCAqaWR0cl9lbnRyeSA9ICZpZHRyX3RhYmxlX2Fk ZHIuYWRkcltpbnRyX3ZlY3Rvcl07DQorICBpZHRyX2VudHJ5LT5zZWdtZW50X3NlbGVjdG9yID0g Z2V0X2NzX3JlZygpOw0KKw0KKyAgdWludDY0X3QgaW50cl9oYW5kbGVyX2FkZHIgPSAodWludDY0 X3QpaW50cl9oYW5kbGVyOw0KKyAgaWR0cl9lbnRyeS0+aGFuZGxlcl9hZGRyX29mZnNldDEgPSAo dWludDE2X3QpaW50cl9oYW5kbGVyX2FkZHI7DQorICBpZHRyX2VudHJ5LT5oYW5kbGVyX2FkZHJf b2Zmc2V0MiA9ICh1aW50MTZfdCkoaW50cl9oYW5kbGVyX2FkZHIgPj4gMTYpOw0KKyAgaWR0cl9l bnRyeS0+aGFuZGxlcl9hZGRyX29mZnNldDMgPSAodWludDMyX3QpKGludHJfaGFuZGxlcl9hZGRy ID4+IDMyKTsNCit9DQorDQorI2VuZGlmIC8qIEdEQl9VU0VfU1REX1g2NF9FWENFUFRJT05fSEFO RExFUiAqLw0KLS0gCjIuMTQuMS53aW5kb3dzLjEKCg== --_006_BL0PR06MB441834606DBE2E6691D113A4E11E0BL0PR06MB4418namp_--