From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 78997A0550; Wed, 25 May 2022 13:04:10 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 549C940146; Wed, 25 May 2022 13:04:10 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 66F8E400EF for ; Wed, 25 May 2022 13:04:08 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24P9xwtK028734; Wed, 25 May 2022 04:04:04 -0700 Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam07lp2049.outbound.protection.outlook.com [104.47.51.49]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3g9jap07c9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 May 2022 04:04:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I5KrczQUSR6YKB1dIUuVTzBsUZEup9OrBhp1deVSSQzBJrlwlzPNnBYZc3woDWqNCT+28igVxrubE4bciim7PXNsJKy5LpJGgQhG42kShu8jfKNZVvRkt++xaE5478YfCTqCkINKe4rTvT2t/r8SR525+x4gkaMUs/TGvRjR9xb4j2xDcaaXZfEReyMR+lIrA5zuzQnxdXL6xmr/UCmRMy4cm7ugu6rDxb+UNl7nWgB2T2ICOrMuGd5KN7PDiYL55n8jspw7CuMYRhgVkdG3bc4EST5h0T/IujWSWu3d5i1hQqnlWELAJfrCxSYwsauoFuKUJpVZrqlKPK8fbwI1FQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=C4deYujLGA8rcLXzq3+2Abu0DTBe+GWSu2NQUTlygtQ=; b=a9Kpf/cGlR4qMloTrVvnCQf2+SqA7EctaBgaYm98XoAuPx4ObwHFvBFOO5taVKp9XfJyYkNaUBebrz+w37Gb5WvAskJOzy0mxJbMqW0XKxJjV6KBD9+B4tZ4OuF47phzxI8qqLVniVFMlFuDQUGh7Xa0mUdEuVzcZy4lVfCfG6VqTJROj9XE2inb9qr3DmEW+Whn51iJSvPYzwA29yZRvWOIQaPR1lK1ghzjYhmaPlbfiUK73c2oQDGbbdLGPl9alJDwJFfEUUvFYrE4vD6bV8PbMXW/7XELTl8/TJgschx9eSXoZCT/Zw2a9MIwUH3tqtmbSm2znqQ681M5jmBhVw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=C4deYujLGA8rcLXzq3+2Abu0DTBe+GWSu2NQUTlygtQ=; b=QzyjtMw8hnbxLvBA3CcG93FKknFYemlY1raEzYB/5upLiyeZTbTjmZ2ENDlepPH8xCwJ4wSpbkBRg5sp8t18gzCHmbtiHc6wMWo9Y9yUjK1VC88tt85uvN79tlRKNCScCzqFRZS/qS1N6eBKsFQM85ZRXaliHtTpDSztRhADjiI= Received: from CO6PR18MB3844.namprd18.prod.outlook.com (2603:10b6:5:340::7) by BN6PR18MB1140.namprd18.prod.outlook.com (2603:10b6:404:6a::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Wed, 25 May 2022 11:04:00 +0000 Received: from CO6PR18MB3844.namprd18.prod.outlook.com ([fe80::49a2:55d5:e27b:7038]) by CO6PR18MB3844.namprd18.prod.outlook.com ([fe80::49a2:55d5:e27b:7038%4]) with mapi id 15.20.5293.013; Wed, 25 May 2022 11:04:00 +0000 From: Rahul Bhansali To: Konstantin Ananyev , "dev@dpdk.org" , Radu Nicolau , Akhil Goyal , Ruifeng Wang CC: Jerin Jacob Kollanukkaran Subject: RE: [EXT] Re: [PATCH] examples/ipsec-secgw: add support of NEON with poll mode Thread-Topic: [EXT] Re: [PATCH] examples/ipsec-secgw: add support of NEON with poll mode Thread-Index: AQHYb1StYMkchGdrrEeRvNW8ST9cZa0upVqAgABQ+xA= Date: Wed, 25 May 2022 11:03:59 +0000 Message-ID: References: <20220524095717.3875284-1-rbhansali@marvell.com> <6f8594ef-3bb1-0346-9884-adfe48938541@yandex.ru> In-Reply-To: <6f8594ef-3bb1-0346-9884-adfe48938541@yandex.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 039c8488-2644-4cc8-bbe5-08da3e3e4567 x-ms-traffictypediagnostic: BN6PR18MB1140:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: R0v8toeiaA23xUatQbQi3pAOmnQN3N428AFmtlTCPTF9yN8KCjnjIWr6roOLdG8JVKd4NAPHUFccV+Hzo5YN28aaQUfTull/uWIsPu+lbW3iZyDVreqfKI93pDg68ICkb0l4Y3TfVA7vOEUtZ2m1r+hFo3odIj8LmruSUAEvY8SKDWj2Phk5nBXU7ZBUgEMTFEIEQAha2VI/WGSQiQZ4n+eL/TvrfaprXuoqIo4SYD8gz/y7NAVVYKfdeKL+CpDVlojxn0g4lb24yyb/nnZZ8ES8mxcA2Fm94J1xCAepRVw86WAHpEB0XHrwoG8c9K0Oxd/zYcWShHWXKKzjQ5gAIN657OJJVAZZmJecfmNLfIBhsMg126jnej2CTqn+G3JVChcgQV71oLO77zlbczAWZ47+Ck9kkyhwfK/9+8DkrNG4fMHjpVXWfeVqGjEa/isRlWtCPIAyhgP8zBrCXHMk9t4NKmdr6ajnyqYWaOwheKM0m+xIm+fwjCr6K8vyXyLB7QGPiSXNNZsI5c69da5HSkpULbrqaa23xj0sPpafeAtrvGZfd/q9U+N2OSrzJ3H4bMitrfHODierxfHa0DqpNu+6xAZy19w+l1Qzy8I3kxGHCPCEi98RGu3OTxHcgwoh0ypjH+SJ++hE8TDie5aJ/nKMCem6BoS2jwvgK7FBdY3Scr39r/TdY2+Lc1zMMhbitHv9acSwPcLcIiY2E/xY1g== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO6PR18MB3844.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6506007)(53546011)(55236004)(9686003)(26005)(83380400001)(38100700002)(7696005)(107886003)(33656002)(186003)(55016003)(5660300002)(316002)(110136005)(52536014)(66946007)(66476007)(4326008)(66556008)(8676002)(66446008)(76116006)(8936002)(64756008)(38070700005)(508600001)(122000001)(2906002)(71200400001)(86362001)(30864003)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QWhiUE14RFRoTVNGOW5GR0tDV29PdG9SUzdySjloeDcvNUZrUitqVWFveHpN?= =?utf-8?B?S21RQ21MVTdvazlsQmlGNVRYRmc3eWJ2QzgxU25TYk8xT2xQbk9FVHdZMDBz?= =?utf-8?B?UnhJaUVURjNnc1R5S0NrRlBlamd4b3pFNE1CVFNBS0g0d3k2WVJoRDZnQTEr?= =?utf-8?B?VWJ4UUx6c3p6YXFNem9TdnBmY0R2MHdwb0NtVkdYanJ3Z3VBZ3hsczAzb2R3?= =?utf-8?B?dVpWUWgyMXZ0RVZta0toR0tUN05zQ2kzVmpSb3I4Y0dmV2xzY2JjMkRhRUN1?= =?utf-8?B?SGlUc3pFbUtMN1phMEcrdDNLaC9zenZrY3B2ZjBWa2xyVjBYL1JrQmx1cWRy?= =?utf-8?B?SHQ1aXdrUVIwdk5LL3QwZjVkWXhlRDlTZXNxazMxd0JwNXNzWisrOWNHd1ND?= =?utf-8?B?TUtlM3NWZW9GUmRXNHUrUk1yVllhaUFsMHBtRldJclVtQUo3b1dtMEpDUk9o?= =?utf-8?B?anhicTZISi85bDhvb0Frem1tNzFSTXU4emtYeDErK0VpUHFOeldqelpsV2VF?= =?utf-8?B?ek5aU210Z3VBRExTdkNjbU93VjJMNXFvVGhaL2hjd2ZMeGNBTkJBVkhDWnVO?= =?utf-8?B?aGtkSFlsWTZaNm1EZ21oV1JsQjFyU1dOM2tIY1dsc3RwNVFKaE96NHJ0YXE4?= =?utf-8?B?bU03aFQ5REFDYTFnaUVwM2UrR2VSNDF3NFFTVGpTU3A4d2R2QjJPc2tFZ1B6?= =?utf-8?B?ZUtRbGxLWWpsK29OdjVVNkJuelZOZUxUYUIvVXEvQzRaZGRzVVVpS0E5T0dm?= =?utf-8?B?VExaT1BMRTloc2h0V3hKbGNaQVBjdmsxem9yTkNaYVV2RGgrRUxtVXVNdUpG?= =?utf-8?B?L0FtZllNTnIrNEkvNXYrNGxRUHZTc2V1S0owNDFIbDdoM3NLTWltdmV3TUtC?= =?utf-8?B?QStDM20rWXlIVXBNNFEyV3ZTc3BuUnVEeWo0Sk1vcTROYUFuVFk0YW9qYnJa?= =?utf-8?B?dU8rMzhYcWxkOHA5eVl2WkVWNmNVOFNwWWlnWjkwdDRJN2tQNFZicVZ1R0l5?= =?utf-8?B?NUYxODdLWm1DSGF5Q1crTmdBVXNxM2t0OU1YMkRPMkMxcm8rOEN0MERwQTI1?= =?utf-8?B?RnpkY3pBMGNIZnVqeEFTamRwSzczMm1ERUpIalhkUWt0SHR0eVBZN1FKUlRD?= =?utf-8?B?K1RYcTNTbkJWc1IySVliK0F2ejZzNlE0Z2s4UlE3L0d1UTgvcWJ4dHJiUXlD?= =?utf-8?B?ZWFWdmxrT09xOGVJSDh1SEFmbGJ6WlRjaEFGS0xGWEEwZUY4T2VEbk5hdm5V?= =?utf-8?B?L0p5M2NJOStERG5mTW1DdStGNDZPbWtyc2N4QnpJUmx3M0hGbTVPSk1mYjky?= =?utf-8?B?VVVIREpoWWxBMFFvTmhkdDgxYktBdlNrNmY1QStQcVl3NEFsMEtENGhrZ2po?= =?utf-8?B?MWliajdacXgwMVZ4R204Q3htWjAweDJGTEJmRURGTU1sYkxROE9ZK0NmYUpq?= =?utf-8?B?RjZ5b0k2c3BjYjJaakEyZVdkdDlIc3pIYXluQ0IvaUppaGo4M2xlM2RZZ2pk?= =?utf-8?B?MWF5cjUxZjZKaWpXN2I0UVg4LzRuYXpueUlFMkxGTGhERU5tSFNVdlhLVWUw?= =?utf-8?B?TEFiV0gzSk85VTBxVThPTklDazY4SjFQUGF6SW9QeFRnNFQvWWdTWGZYaDdD?= =?utf-8?B?dHJpazl5QzdYa2Rnckk5V0R4Q3RwbGI5NnZ6ZUZDRDFVTmlYeXJockM3d3BN?= =?utf-8?B?YjZ6VmtlQVptdkpFaEYzMWxKYmxrVkxZakEwWUE1dlZWQnBsbzhTcGtZZG0z?= =?utf-8?B?RHEybnRqTUJ1TGhDWmEraytRK2YrR0Vta1ZqMzNqbFd6SDF5U0swUnQvL05a?= =?utf-8?B?MHMvMElLVDJ6eGQxRUxiYklhSDlybzhnQjRVb3J0SWJ1WUF0QVVaNC9LK2Nz?= =?utf-8?B?N2JqbFcyMW1lN1MySW9peTZoMFBFV0s2aVJKYlBGaExkVnE5czllWDduM2tK?= =?utf-8?B?TnhDNVVrYXcyQU9JQnlVcG9PYjRmMGYyQ3lsSjdhWWlaV2Y4SUFGbzc4OXU3?= =?utf-8?B?S1NCR0M4NVE5Yjh1cnBzelNLZm5NeW1LYXI3KzlRQUw5OVpZSmI3RnR3MVY3?= =?utf-8?B?b04vTGMvYThCUFg2YXFVYyt5cE9tcFZKRGgzVnpDWjhGdnlMSUdpT1l0bFBY?= =?utf-8?B?MFY0T2hQYnNaeW1ZMDFONmpwTk1lYTZTYm1TeVkwMmVaZFB5ZjkzeXFOdHpi?= =?utf-8?B?KzFhekpJck5kcFJWU1ViNHVDSE9ubnFIUGllRExDajJMZ0d2UElJV2R4YWUr?= =?utf-8?B?NmJxM0d6eGxla3IvWGhXVjZRTHF2ZzNjeXFVaC9tZlN6Skh0ODdCSDNrMDVL?= =?utf-8?B?emhkUU5OeHlkZHdST1FvMXA3U0V1MW9QZ2JDNFdDSTBTa0sxbWRVUT09?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO6PR18MB3844.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 039c8488-2644-4cc8-bbe5-08da3e3e4567 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 May 2022 11:03:59.9041 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: XHGuKHt2e8pFd3xzsv/oGx2h5I4WBzwe8LZkpApyr3GMhj7jzxYMwWDsfhD/wXkSR12oPE6cTGyeM7Ygwjo6LQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR18MB1140 X-Proofpoint-GUID: ZUyRrUlNa6ZUSDmTDO6HgHLONfM9Mchb X-Proofpoint-ORIG-GUID: ZUyRrUlNa6ZUSDmTDO6HgHLONfM9Mchb X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.874,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-05-25_03,2022-05-25_01,2022-02-23_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS29uc3RhbnRpbiBBbmFu eWV2IDxrb25zdGFudGluLnYuYW5hbnlldkB5YW5kZXgucnU+DQo+IFNlbnQ6IFdlZG5lc2RheSwg TWF5IDI1LCAyMDIyIDQ6MzAgQU0NCj4gVG86IFJhaHVsIEJoYW5zYWxpIDxyYmhhbnNhbGlAbWFy dmVsbC5jb20+OyBkZXZAZHBkay5vcmc7IFJhZHUgTmljb2xhdQ0KPiA8cmFkdS5uaWNvbGF1QGlu dGVsLmNvbT47IEFraGlsIEdveWFsIDxnYWtoaWxAbWFydmVsbC5jb20+OyBSdWlmZW5nIFdhbmcN Cj4gPHJ1aWZlbmcud2FuZ0Bhcm0uY29tPg0KPiBDYzogSmVyaW4gSmFjb2IgS29sbGFudWtrYXJh biA8amVyaW5qQG1hcnZlbGwuY29tPg0KPiBTdWJqZWN0OiBbRVhUXSBSZTogW1BBVENIXSBleGFt cGxlcy9pcHNlYy1zZWNndzogYWRkIHN1cHBvcnQgb2YgTkVPTiB3aXRoDQo+IHBvbGwgbW9kZQ0K PiANCj4gRXh0ZXJuYWwgRW1haWwNCj4gDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gMjQvMDUvMjAyMiAx MDo1NywgUmFodWwgQmhhbnNhbGkg0L/QuNGI0LXRgjoNCj4gPiBUaGlzIGFkZHMgdGhlIHN1cHBv cnQgb2YgTkVPTiBiYXNlZCBscG0gbG9va3VwIGFsb25nIHdpdGggbXVsdGkgcGFja2V0DQo+ID4g cHJvY2Vzc2luZyBmb3IgYnVyc3Qgc2VuZCBpbiBwYWNrZXRzIHJvdXRpbmcuDQo+ID4NCj4gPiBQ ZXJmb3JtYW5jZSBpbXBhY3Q6DQo+ID4gT24gY24xMGssIHdpdGggcG9sbCBtb2RlIGlubGluZSBw cm90b2NvbCwgb3V0Ym91bmQgcGVyZm9ybWFuY2UNCj4gPiBpbmNyZWFzZWQgYnkgdXB0byB+OCUg YW5kIGluYm91bmQgcGVyZm9ybWFuY2UgaW5jcmVhc2VkIGJ5IHVwdG8gfjYlLg0KPiANCj4gDQo+ IEludGVyZXN0aW5nLCBnb29kIGJ1bmNoIG9mIGNvZGUgbG9va3MgbGlrZSBhIGR1cCBmcm9tIGwz ZndkOg0KPiBncm91cGluZywgcHJlY2Vzc3g0X3N0ZXA/LCBldGMuDQoNClllcywgbmVvbiBsb2dp YyBpcyB0YWtlbiBhcyBhIHJlZmVyZW5jZSBmcm9tIGwzZndkIGFuZCBzb21lIG1vZGlmaWNhdGlv bnMgYXMgcGVyDQpyZXF1aXJlbWVudCBvZiBpcHNlYyBleGFtcGxlLg0KDQo+IFdvdWxkIGl0IGJl IHBvc3NpYmxlIHRvIG1vdmUgZHVwIGNvZGUgaW50byBzb21lIGNvbW1vbiBwbGFjZSwNCj4gc28g aXQgY2FuIGJlIHVzZWQgYnkgYm90aCBleGFtcGxlcz8NCnByb2Nlc3N4NF9zdGVwLi4uIGhhcyBz b21lIGFkZGl0aW9uYWwgRXRoZXJuZXQgaGVhZGVyLCBpbmxpbmUgdnMgbm9uLWlubGluZSBwYWNr ZXRzIGxwbSBsb29rdXAsDQpJUCBjaGVja3N1bSBldGMgcHJvY2Vzc2VzIGFuZCBldmVuIGlmIHdl IHNlcGFyYXRlIG91dCB0byBtYWtlIGNvbW1vbiBjb2RlIHdpdGggbDNmd2QgdGhlbiBnZXR0aW5n DQpsZXNzIHBlcmZvcm1hbmNlIGFzIGFkZGl0aW9uYWwgdGhpbmdzIHRvIGJlIGRvbmUgc2VwYXJh dGVseSBhZ2FpbiB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgZm9yDQppbmRpdmlkdWFsIHBhY2tl dHMuDQoNCkZvciBncm91cGluZyBzcGVjaWZpYyBwb3J0X2dyb3VweDQoKSBvbmx5LCB3ZSBjYW4g aGF2ZSBpdCBpbiBhIGNvbW1vbiBwbGFjZS4gSWYgaXQgaXMgd29ydGgsDQpJIGNhbiBtYWtlIGNo YW5nZXMgYWNjb3JkaW5nbHkuIERvIGxldCBtZSBrbm93Lg0KDQo+IA0KPiA+DQo+ID4gU2lnbmVk LW9mZi1ieTogUmFodWwgQmhhbnNhbGkgPHJiaGFuc2FsaUBtYXJ2ZWxsLmNvbT4NCj4gPiAtLS0N Cj4gPiAgIGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLXNlY2d3LmMgICAgfCAgMjUgKysNCj4g PiAgIGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjX2xwbV9uZW9uLmggfCAyMTMgKysrKysrKysr KysNCj4gPiAgIGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjX25lb24uaCAgICAgfCA0ODcgKysr KysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgIGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2Vj X3dvcmtlci5jICAgfCAgIDkgKw0KPiA+ICAgNCBmaWxlcyBjaGFuZ2VkLCA3MzQgaW5zZXJ0aW9u cygrKQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2Vj X2xwbV9uZW9uLmgNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBleGFtcGxlcy9pcHNlYy1zZWNn dy9pcHNlY19uZW9uLmgNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9pcHNlYy1zZWNn dy9pcHNlYy1zZWNndy5jIGIvZXhhbXBsZXMvaXBzZWMtDQo+IHNlY2d3L2lwc2VjLXNlY2d3LmMN Cj4gPiBpbmRleCAyNTI1NWUwNTNjLi4wMzhjNDY2OWY1IDEwMDY0NA0KPiA+IC0tLSBhL2V4YW1w bGVzL2lwc2VjLXNlY2d3L2lwc2VjLXNlY2d3LmMNCj4gPiArKysgYi9leGFtcGxlcy9pcHNlYy1z ZWNndy9pcHNlYy1zZWNndy5jDQo+ID4gQEAgLTU2LDYgKzU2LDEwIEBADQo+ID4gICAjaW5jbHVk ZSAicGFyc2VyLmgiDQo+ID4gICAjaW5jbHVkZSAic2FkLmgiDQo+ID4NCj4gPiArI2lmIGRlZmlu ZWQoX19BUk1fTkVPTikNCj4gPiArI2luY2x1ZGUgImlwc2VjX2xwbV9uZW9uLmgiDQo+ID4gKyNl bmRpZg0KPiA+ICsNCj4gPiAgIHZvbGF0aWxlIGJvb2wgZm9yY2VfcXVpdDsNCj4gPg0KPiA+ICAg I2RlZmluZSBNQVhfSlVNQk9fUEtUX0xFTiAgOTYwMA0KPiA+IEBAIC05Niw2ICsxMDAsMTIgQEAg c3RydWN0IGV0aGFkZHJfaW5mbw0KPiBldGhhZGRyX3RibFtSVEVfTUFYX0VUSFBPUlRTXSA9IHsN Cj4gPiAgIAl7IDAsIEVUSEFERFIoMHgwMCwgMHgxNiwgMHgzZSwgMHg0OSwgMHg5ZSwgMHhkZCkg fQ0KPiA+ICAgfTsNCj4gPg0KPiA+ICsvKg0KPiA+ICsgKiBUbyBob2xkIGV0aGVybmV0IGhlYWRl ciBwZXIgcG9ydCwgd2hpY2ggd2lsbCBiZSBhcHBsaWVkDQo+ID4gKyAqIHRvIG91dGdvaW5nIHBh Y2tldHMuDQo+ID4gKyAqLw0KPiA+ICt4bW1fdCB2YWxfZXRoW1JURV9NQVhfRVRIUE9SVFNdOw0K PiA+ICsNCj4gPiAgIHN0cnVjdCBmbG93X2luZm8gZmxvd19pbmZvX3RibFtSVEVfTUFYX0VUSFBP UlRTXTsNCj4gPg0KPiA+ICAgI2RlZmluZSBDTURfTElORV9PUFRfQ09ORklHCQkiY29uZmlnIg0K PiA+IEBAIC01NjEsOSArNTcxLDE2IEBAIHByb2Nlc3NfcGt0cyhzdHJ1Y3QgbGNvcmVfY29uZiAq cWNvbmYsIHN0cnVjdA0KPiBydGVfbWJ1ZiAqKnBrdHMsDQo+ID4gICAJCQlwcm9jZXNzX3BrdHNf b3V0Ym91bmQoJnFjb25mLT5vdXRib3VuZCwgJnRyYWZmaWMpOw0KPiA+ICAgCX0NCj4gPg0KPiA+ ICsjaWYgZGVmaW5lZCBfX0FSTV9ORU9ODQo+ID4gKwkvKiBOZW9uIG9wdGltaXplZCBwYWNrZXQg cm91dGluZyAqLw0KPiA+ICsJcm91dGU0X3BrdHNfbmVvbihxY29uZi0+cnQ0X2N0eCwgdHJhZmZp Yy5pcDQucGt0cywgdHJhZmZpYy5pcDQubnVtLA0KPiA+ICsJCQkgcWNvbmYtPm91dGJvdW5kLmlw djRfb2ZmbG9hZHMsIHRydWUpOw0KPiA+ICsJcm91dGU2X3BrdHNfbmVvbihxY29uZi0+cnQ2X2N0 eCwgdHJhZmZpYy5pcDYucGt0cywgdHJhZmZpYy5pcDYubnVtKTsNCj4gPiArI2Vsc2UNCj4gPiAg IAlyb3V0ZTRfcGt0cyhxY29uZi0+cnQ0X2N0eCwgdHJhZmZpYy5pcDQucGt0cywgdHJhZmZpYy5p cDQubnVtLA0KPiA+ICAgCQkgICAgcWNvbmYtPm91dGJvdW5kLmlwdjRfb2ZmbG9hZHMsIHRydWUp Ow0KPiA+ICAgCXJvdXRlNl9wa3RzKHFjb25mLT5ydDZfY3R4LCB0cmFmZmljLmlwNi5wa3RzLCB0 cmFmZmljLmlwNi5udW0pOw0KPiA+ICsjZW5kaWYNCj4gPiAgIH0NCj4gPg0KPiA+ICAgc3RhdGlj IGlubGluZSB2b2lkDQo+ID4gQEAgLTEzOTAsNiArMTQwNyw4IEBAIGFkZF9kc3RfZXRoYWRkcih1 aW50MTZfdCBwb3J0LCBjb25zdCBzdHJ1Y3QNCj4gcnRlX2V0aGVyX2FkZHIgKmFkZHIpDQo+ID4g ICAJCXJldHVybiAtRUlOVkFMOw0KPiA+DQo+ID4gICAJZXRoYWRkcl90YmxbcG9ydF0uZHN0ID0g RVRIQUREUl9UT19VSU5UNjQoYWRkcik7DQo+ID4gKwlydGVfZXRoZXJfYWRkcl9jb3B5KChzdHJ1 Y3QgcnRlX2V0aGVyX2FkZHIgKikmZXRoYWRkcl90YmxbcG9ydF0uZHN0LA0KPiA+ICsJCQkgICAg KHN0cnVjdCBydGVfZXRoZXJfYWRkciAqKSh2YWxfZXRoICsgcG9ydCkpOw0KPiA+ICAgCXJldHVy biAwOw0KPiA+ICAgfQ0KPiA+DQo+ID4gQEAgLTE4NTIsNiArMTg3MSwxMiBAQCBwb3J0X2luaXQo dWludDE2X3QgcG9ydGlkLCB1aW50NjRfdA0KPiByZXFfcnhfb2ZmbG9hZHMsIHVpbnQ2NF90IHJl cV90eF9vZmZsb2FkcykNCj4gPiAgIAkJCXBvcnRpZCwgcnRlX3N0cmVycm9yKC1yZXQpKTsNCj4g Pg0KPiA+ICAgCWV0aGFkZHJfdGJsW3BvcnRpZF0uc3JjID0gRVRIQUREUl9UT19VSU5UNjQoJmV0 aGFkZHIpOw0KPiA+ICsNCj4gPiArCXJ0ZV9ldGhlcl9hZGRyX2NvcHkoKHN0cnVjdCBydGVfZXRo ZXJfYWRkciAqKSZldGhhZGRyX3RibFtwb3J0aWRdLmRzdCwNCj4gPiArCQkJICAgIChzdHJ1Y3Qg cnRlX2V0aGVyX2FkZHIgKikodmFsX2V0aCArIHBvcnRpZCkpOw0KPiA+ICsJcnRlX2V0aGVyX2Fk ZHJfY29weSgoc3RydWN0IHJ0ZV9ldGhlcl9hZGRyICopJmV0aGFkZHJfdGJsW3BvcnRpZF0uc3Jj LA0KPiA+ICsJCQkgICAgKHN0cnVjdCBydGVfZXRoZXJfYWRkciAqKSh2YWxfZXRoICsgcG9ydGlk KSArIDEpOw0KPiA+ICsNCj4gPiAgIAlwcmludF9ldGhhZGRyKCJBZGRyZXNzOiAiLCAmZXRoYWRk cik7DQo+ID4gICAJcHJpbnRmKCJcbiIpOw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2V4YW1wbGVz L2lwc2VjLXNlY2d3L2lwc2VjX2xwbV9uZW9uLmggYi9leGFtcGxlcy9pcHNlYy0NCj4gc2VjZ3cv aXBzZWNfbHBtX25lb24uaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAw MDAwMDAwMC4uOTU5YTVhODY2Ng0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9leGFtcGxl cy9pcHNlYy1zZWNndy9pcHNlY19scG1fbmVvbi5oDQo+ID4gQEAgLTAsMCArMSwyMTMgQEANCj4g PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ICsgKiBDb3B5 cmlnaHQoQykgMjAyMiBNYXJ2ZWxsLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX19J UFNFQ19MUE1fTkVPTl9IX18NCj4gPiArI2RlZmluZSBfX0lQU0VDX0xQTV9ORU9OX0hfXw0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgPGFybV9uZW9uLmg+DQo+ID4gKyNpbmNsdWRlICJpcHNlY19uZW9u LmgiDQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBBcHBlbmQgZXRoZXJuZXQgaGVhZGVyIGFuZCBy ZWFkIGRlc3RpbmF0aW9uIElQVjQgYWRkcmVzc2VzIGZyb20gNA0KPiBtYnVmcy4NCj4gPiArICov DQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiA+ICtwcm9jZXNzeDRfc3RlcDEoc3RydWN0IHJ0 ZV9tYnVmICpwa3RbRldEU1RFUF0sIGludDMyeDRfdCAqZGlwLA0KPiA+ICsJCXVpbnQ2NF90ICpp bmxpbmVfZmxhZykNCj4gPiArew0KPiA+ICsJc3RydWN0IHJ0ZV9pcHY0X2hkciAqaXB2NF9oZHI7 DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aGVyX2hkciAqZXRoX2hkcjsNCj4gPiArCWludDMyX3QgZHN0 W0ZXRFNURVBdOw0KPiA+ICsJaW50IGk7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IEZX RFNURVA7IGkrKykgew0KPiA+ICsJCWV0aF9oZHIgPSAoc3RydWN0IHJ0ZV9ldGhlcl9oZHIgKily dGVfcGt0bWJ1Zl9wcmVwZW5kKHBrdFtpXSwNCj4gPiArDQo+IAlSVEVfRVRIRVJfSERSX0xFTik7 DQo+ID4gKwkJcGt0W2ldLT5vbF9mbGFncyB8PSBSVEVfTUJVRl9GX1RYX0lQVjQ7DQo+ID4gKwkJ cGt0W2ldLT5sMl9sZW4gPSBSVEVfRVRIRVJfSERSX0xFTjsNCj4gPiArDQo+ID4gKwkJaXB2NF9o ZHIgPSAoc3RydWN0IHJ0ZV9pcHY0X2hkciAqKShldGhfaGRyICsgMSk7DQo+ID4gKw0KPiA+ICsJ CS8qIEZldGNoIGRlc3RpbmF0aW9uIElQdjQgYWRkcmVzcyAqLw0KPiA+ICsJCWRzdFtpXSA9IGlw djRfaGRyLT5kc3RfYWRkcjsNCj4gPiArCQkqaW5saW5lX2ZsYWcgfD0gcGt0W2ldLT5vbF9mbGFn cyAmDQo+IFJURV9NQlVGX0ZfVFhfU0VDX09GRkxPQUQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJ ZGlwWzBdID0gdmxkMXFfczMyKGRzdCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAq IExvb2t1cCBpbnRvIExQTSBmb3IgZGVzdGluYXRpb24gcG9ydC4NCj4gPiArICovDQo+ID4gK3N0 YXRpYyBpbmxpbmUgdm9pZA0KPiA+ICtwcm9jZXNzeDRfc3RlcDIoc3RydWN0IHJ0X2N0eCAqcnRf Y3R4LCBpbnQzMng0X3QgZGlwLCB1aW50NjRfdCBpbmxpbmVfZmxhZywNCj4gPiArCQlzdHJ1Y3Qg cnRlX21idWYgKnBrdFtGV0RTVEVQXSwgdWludDE2X3QgZHBydFtGV0RTVEVQXSkNCj4gPiArew0K PiA+ICsJdWludDMyX3QgbmV4dF9ob3A7DQo+ID4gKwlydGVfeG1tX3QgZHN0Ow0KPiA+ICsJdWlu dDhfdCBpOw0KPiA+ICsNCj4gPiArCWRpcCA9IHZyZWludGVycHJldHFfczMyX3U4KHZyZXYzMnFf dTgodnJlaW50ZXJwcmV0cV91OF9zMzIoZGlwKSkpOw0KPiA+ICsNCj4gPiArCS8qIElmIGFsbCA0 IHBhY2tldHMgYXJlIG5vbi1pbmxpbmUgKi8NCj4gPiArCWlmICghaW5saW5lX2ZsYWcpIHsNCj4g PiArCQlydGVfbHBtX2xvb2t1cHg0KChzdHJ1Y3QgcnRlX2xwbSAqKXJ0X2N0eCwgZGlwLCBkc3Qu dTMyLA0KPiA+ICsJCQkJIEJBRF9QT1JUKTsNCj4gPiArCQkvKiBnZXQgcmlkIG9mIHVudXNlZCB1 cHBlciAxNiBiaXQgZm9yIGVhY2ggZHBvcnQuICovDQo+ID4gKwkJdnN0MV9zMTYoKGludDE2X3Qg KilkcHJ0LCB2cW1vdm5fczMyKGRzdC54KSk7DQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCS8qIElubGluZSBhbmQgbm9uLWlubGluZSBwYWNrZXRzICovDQo+ID4gKwlkc3Qu eCA9IGRpcDsNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBGV0RTVEVQOyBpKyspIHsNCj4gPiArCQlp ZiAocGt0W2ldLT5vbF9mbGFncyAmIFJURV9NQlVGX0ZfVFhfU0VDX09GRkxPQUQpIHsNCj4gPiAr CQkJbmV4dF9ob3AgPSBnZXRfaG9wX2Zvcl9vZmZsb2FkX3BrdChwa3RbaV0sIDApOw0KPiA+ICsJ CQlkcHJ0W2ldID0gKHVpbnQxNl90KSAoKChuZXh0X2hvcCAmDQo+ID4gKwkJCQkJCVJURV9MUE1f TE9PS1VQX1NVQ0NFU1MpDQo+ICE9IDApDQo+ID4gKwkJCQkJCT8gbmV4dF9ob3AgOiBCQURfUE9S VCk7DQo+ID4gKw0KPiA+ICsJCX0gZWxzZSB7DQo+ID4gKwkJCWRwcnRbaV0gPSAodWludDE2X3Qp ICgocnRlX2xwbV9sb29rdXAoDQo+ID4gKwkJCQkJCShzdHJ1Y3QgcnRlX2xwbSAqKXJ0X2N0eCwN Cj4gPiArCQkJCQkJIGRzdC51MzJbaV0sICZuZXh0X2hvcCkgPT0gMCkNCj4gPiArCQkJCQkJPyBu ZXh0X2hvcCA6IEJBRF9QT1JUKTsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qDQo+ID4gKyAqIFByb2Nlc3Mgc2luZ2xlIHBhY2tldHMgZm9yIGRlc3RpbmF0aW9uIHBv cnQuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArcHJvY2Vzc19zaW5n bGVfcGt0KHN0cnVjdCBydF9jdHggKnJ0X2N0eCwgc3RydWN0IHJ0ZV9tYnVmICpwa3QsDQo+ID4g KwkJICAgdWludDE2X3QgKmRzdF9wb3J0KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aGVy X2hkciAqZXRoX2hkcjsNCj4gPiArCXN0cnVjdCBydGVfaXB2NF9oZHIgKmlwdjRfaGRyOw0KPiA+ ICsJdWludDMyX3QgbmV4dF9ob3A7DQo+ID4gKwl1aW50MzJfdCBkc3RfaXA7DQo+ID4gKw0KPiA+ ICsJZXRoX2hkciA9IChzdHJ1Y3QgcnRlX2V0aGVyX2hkciAqKXJ0ZV9wa3RtYnVmX3ByZXBlbmQo cGt0LA0KPiA+ICsNCj4gCVJURV9FVEhFUl9IRFJfTEVOKTsNCj4gPiArCXBrdC0+b2xfZmxhZ3Mg fD0gUlRFX01CVUZfRl9UWF9JUFY0Ow0KPiA+ICsJcGt0LT5sMl9sZW4gPSBSVEVfRVRIRVJfSERS X0xFTjsNCj4gPiArDQo+ID4gKwlpZiAocGt0LT5vbF9mbGFncyAmIFJURV9NQlVGX0ZfVFhfU0VD X09GRkxPQUQpIHsNCj4gPiArCQluZXh0X2hvcCA9IGdldF9ob3BfZm9yX29mZmxvYWRfcGt0KHBr dCwgMCk7DQo+ID4gKwkJKmRzdF9wb3J0ID0gKHVpbnQxNl90KSAoKChuZXh0X2hvcCAmDQo+ID4g KwkJCQkJICBSVEVfTFBNX0xPT0tVUF9TVUNDRVNTKSAhPSAwKQ0KPiA+ICsJCQkJCSAgPyBuZXh0 X2hvcCA6IEJBRF9QT1JUKTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJaXB2NF9oZHIgPSAoc3Ry dWN0IHJ0ZV9pcHY0X2hkciAqKShldGhfaGRyICsgMSk7DQo+ID4gKwkJZHN0X2lwID0gcnRlX2Jl X3RvX2NwdV8zMihpcHY0X2hkci0+ZHN0X2FkZHIpOw0KPiA+ICsJCSpkc3RfcG9ydCA9ICh1aW50 MTZfdCkgKChydGVfbHBtX2xvb2t1cCgNCj4gPiArCQkJCQkJKHN0cnVjdCBydGVfbHBtICopcnRf Y3R4LA0KPiA+ICsJCQkJCQlkc3RfaXAsICZuZXh0X2hvcCkgPT0gMCkNCj4gPiArCQkJCQkJPyBu ZXh0X2hvcCA6IEJBRF9QT1JUKTsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoNCj4g PiArICogQnVmZmVyIG9wdGltaXplZCBoYW5kbGluZyBvZiBJUHY2IHBhY2tldHMuDQo+ID4gKyAq Lw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArcm91dGU2X3BrdHNfbmVvbihzdHJ1Y3Qg cnRfY3R4ICpydF9jdHgsIHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsIGludCBuYl9yeCkNCj4gPiAr ew0KPiA+ICsJdWludDhfdCBkc3RfaXA2W01BWF9QS1RfQlVSU1RdWzE2XTsNCj4gPiArCWludDMy X3QgZHN0X3BvcnRbTUFYX1BLVF9CVVJTVF07DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aGVyX2hkciAq ZXRoX2hkcjsNCj4gPiArCXN0cnVjdCBydGVfaXB2Nl9oZHIgKmlwdjZfaGRyOw0KPiA+ICsJaW50 MzJfdCBob3BbTUFYX1BLVF9CVVJTVF07DQo+ID4gKwlzdHJ1Y3QgcnRlX21idWYgKnBrdDsNCj4g PiArCXVpbnQ4X3QgbHBtX3BrdHMgPSAwOw0KPiA+ICsJaW50MzJfdCBpOw0KPiA+ICsNCj4gPiAr CWlmIChuYl9yeCA9PSAwKQ0KPiA+ICsJCXJldHVybjsNCj4gPiArDQo+ID4gKwkvKiBOZWVkIHRv IGRvIGFuIExQTSBsb29rdXAgZm9yIG5vbi1pbmxpbmUgcGFja2V0cy4gSW5saW5lIHBhY2tldHMg d2lsbA0KPiA+ICsJICogaGF2ZSBwb3J0IElEIGluIHRoZSBTQQ0KPiA+ICsJICovDQo+ID4gKw0K PiA+ICsJZm9yIChpID0gMDsgaSA8IG5iX3J4OyBpKyspIHsNCj4gPiArCQlwa3QgPSBwa3RzW2ld Ow0KPiA+ICsJCWV0aF9oZHIgPSAoc3RydWN0IHJ0ZV9ldGhlcl9oZHIgKilydGVfcGt0bWJ1Zl9w cmVwZW5kKHBrdCwNCj4gPiArDQo+IAlSVEVfRVRIRVJfSERSX0xFTik7DQo+ID4gKwkJcGt0LT5s Ml9sZW4gPSBSVEVfRVRIRVJfSERSX0xFTjsNCj4gPiArCQlwa3QtPm9sX2ZsYWdzIHw9IFJURV9N QlVGX0ZfVFhfSVBWNjsNCj4gPiArDQo+ID4gKwkJaWYgKCEocGt0LT5vbF9mbGFncyAmIFJURV9N QlVGX0ZfVFhfU0VDX09GRkxPQUQpKSB7DQo+ID4gKwkJCS8qIFNlY3VyaXR5IG9mZmxvYWQgbm90 IGVuYWJsZWQuIFNvIGFuIExQTSBsb29rdXAgaXMNCj4gPiArCQkJICogcmVxdWlyZWQgdG8gZ2V0 IHRoZSBob3ANCj4gPiArCQkJICovDQo+ID4gKwkJCWlwdjZfaGRyID0gKHN0cnVjdCBydGVfaXB2 Nl9oZHIgKikoZXRoX2hkciArIDEpOw0KPiA+ICsJCQltZW1jcHkoJmRzdF9pcDZbbHBtX3BrdHNd WzBdLA0KPiA+ICsJCQkJCWlwdjZfaGRyLT5kc3RfYWRkciwgMTYpOw0KPiA+ICsJCQlscG1fcGt0 cysrOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlydGVfbHBtNl9sb29rdXBfYnVs a19mdW5jKChzdHJ1Y3QgcnRlX2xwbTYgKilydF9jdHgsIGRzdF9pcDYsDQo+ID4gKwkJCQkgIGhv cCwgbHBtX3BrdHMpOw0KPiA+ICsNCj4gPiArCWxwbV9wa3RzID0gMDsNCj4gPiArDQo+ID4gKwlm b3IgKGkgPSAwOyBpIDwgbmJfcng7IGkrKykgew0KPiA+ICsJCXBrdCA9IHBrdHNbaV07DQo+ID4g KwkJaWYgKHBrdC0+b2xfZmxhZ3MgJiBSVEVfTUJVRl9GX1RYX1NFQ19PRkZMT0FEKSB7DQo+ID4g KwkJCS8qIFJlYWQgaG9wIGZyb20gdGhlIFNBICovDQo+ID4gKwkJCWRzdF9wb3J0W2ldID0gZ2V0 X2hvcF9mb3Jfb2ZmbG9hZF9wa3QocGt0LCAxKTsNCj4gPiArCQl9IGVsc2Ugew0KPiA+ICsJCQkv KiBOZWVkIHRvIHVzZSBob3AgcmV0dXJuZWQgYnkgbG9va3VwICovDQo+ID4gKwkJCWRzdF9wb3J0 W2ldID0gaG9wW2xwbV9wa3RzKytdOw0KPiA+ICsJCX0NCj4gPiArCQlpZiAoZHN0X3BvcnRbaV0g PT0gLTEpDQo+ID4gKwkJCWRzdF9wb3J0W2ldID0gQkFEX1BPUlQ7DQo+ID4gKwl9DQo+ID4gKw0K PiA+ICsJLyogU2VuZCBwYWNrZXRzICovDQo+ID4gKwlzZW5kX211bHRpX3BrdHMocGt0cywgKHVp bnQxNl90ICopZHN0X3BvcnQsIG5iX3J4LCAwLCAwLCBmYWxzZSk7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qDQo+ID4gKyAqIEJ1ZmZlciBvcHRpbWl6ZWQgaGFuZGxpbmcgb2YgSVB2NCBwYWNrZXRz Lg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGluZSB2b2lkDQo+ID4gK3JvdXRlNF9wa3RzX25l b24oc3RydWN0IHJ0X2N0eCAqcnRfY3R4LCBzdHJ1Y3QgcnRlX21idWYgKipwa3RzLCBpbnQgbmJf cngsDQo+ID4gKwkJIHVpbnQ2NF90IHR4X29mZmxvYWRzLCBib29sIGlwX2Nrc3VtKQ0KPiA+ICt7 DQo+ID4gKwljb25zdCBpbnQzMl90IGsgPSBSVEVfQUxJR05fRkxPT1IobmJfcngsIEZXRFNURVAp Ow0KPiA+ICsJY29uc3QgaW50MzJfdCBtID0gbmJfcnggJSBGV0RTVEVQOw0KPiA+ICsJdWludDE2 X3QgZHN0X3BvcnRbTUFYX1BLVF9CVVJTVF07DQo+ID4gKwl1aW50NjRfdCBpbmxpbmVfZmxhZyA9 IDA7DQo+ID4gKwlpbnQzMng0X3QgZGlwOw0KPiA+ICsJaW50MzJfdCBpOw0KPiA+ICsNCj4gPiAr CWlmIChuYl9yeCA9PSAwKQ0KPiA+ICsJCXJldHVybjsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAw OyBpICE9IGs7IGkgKz0gRldEU1RFUCkgew0KPiA+ICsJCXByb2Nlc3N4NF9zdGVwMSgmcGt0c1tp XSwgJmRpcCwgJmlubGluZV9mbGFnKTsNCj4gPiArCQlwcm9jZXNzeDRfc3RlcDIocnRfY3R4LCBk aXAsIGlubGluZV9mbGFnLCAmcGt0c1tpXSwNCj4gPiArCQkJCSZkc3RfcG9ydFtpXSk7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJLyogQ2xhc3NpZnkgbGFzdCB1cCB0byAzIHBhY2tldHMgb25lIGJ5 IG9uZSAqLw0KPiA+ICsJc3dpdGNoIChtKSB7DQo+ID4gKwljYXNlIDM6DQo+ID4gKwkJcHJvY2Vz c19zaW5nbGVfcGt0KHJ0X2N0eCwgcGt0c1tpXSwgJmRzdF9wb3J0W2ldKTsNCj4gPiArCQlpKys7 DQo+ID4gKwkJLyogZmFsbHRocm91Z2ggKi8NCj4gPiArCWNhc2UgMjoNCj4gPiArCQlwcm9jZXNz X3NpbmdsZV9wa3QocnRfY3R4LCBwa3RzW2ldLCAmZHN0X3BvcnRbaV0pOw0KPiA+ICsJCWkrKzsN Cj4gPiArCQkvKiBmYWxsdGhyb3VnaCAqLw0KPiA+ICsJY2FzZSAxOg0KPiA+ICsJCXByb2Nlc3Nf c2luZ2xlX3BrdChydF9jdHgsIHBrdHNbaV0sICZkc3RfcG9ydFtpXSk7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJc2VuZF9tdWx0aV9wa3RzKHBrdHMsIGRzdF9wb3J0LCBuYl9yeCwgdHhfb2ZmbG9h ZHMsIGlwX2Nrc3VtLCB0cnVlKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9fSVBT RUNfTFBNX05FT05fSF9fICovDQo+ID4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2lwc2VjLXNlY2d3 L2lwc2VjX25lb24uaCBiL2V4YW1wbGVzL2lwc2VjLQ0KPiBzZWNndy9pcHNlY19uZW9uLmgNCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjM5ZGRkY2QxZTMN Cj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWNf bmVvbi5oDQo+ID4gQEAgLTAsMCArMSw0ODcgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ICsgKiBDb3B5cmlnaHQoQykgMjAyMiBNYXJ2ZWxsLg0K PiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX0lQU0VDX05FT05fSF8NCj4gPiArI2RlZmlu ZSBfSVBTRUNfTkVPTl9IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgImlwc2VjLmgiDQo+ID4gKw0K PiA+ICsjZGVmaW5lIEZXRFNURVAJCTQNCj4gPiArI2RlZmluZSBNQVhfVFhfQlVSU1QJKE1BWF9Q S1RfQlVSU1QgLyAyKQ0KPiA+ICsjZGVmaW5lIEJBRF9QT1JUCSgodWludDE2X3QpLTEpDQo+ID4g Kw0KPiA+ICtleHRlcm4geG1tX3QgdmFsX2V0aFtSVEVfTUFYX0VUSFBPUlRTXTsNCj4gPiArDQo+ ID4gKy8qDQo+ID4gKyAqIEdyb3VwIGNvbnNlY3V0aXZlIHBhY2tldHMgd2l0aCB0aGUgc2FtZSBk ZXN0aW5hdGlvbiBwb3J0IGludG8gb25lIGJ1cnN0Lg0KPiA+ICsgKiBUbyBhdm9pZCBleHRyYSBs YXRlbmN5IHRoaXMgaXMgZG9uZSB0b2dldGhlciB3aXRoIHNvbWUgb3RoZXIgcGFja2V0DQo+ID4g KyAqIHByb2Nlc3NpbmcsIGJ1dCBhZnRlciB3ZSBtYWRlIGEgZmluYWwgZGVjaXNpb24gYWJvdXQg cGFja2V0J3MgZGVzdGluYXRpb24uDQo+ID4gKyAqIFRvIGRvIHRoaXMgd2UgbWFpbnRhaW46DQo+ ID4gKyAqIHBudW0gLSBhcnJheSBvZiBudW1iZXIgb2YgY29uc2VjdXRpdmUgcGFja2V0cyB3aXRo IHRoZSBzYW1lIGRlc3QgcG9ydCBmb3INCj4gPiArICogZWFjaCBwYWNrZXQgaW4gdGhlIGlucHV0 IGJ1cnN0Lg0KPiA+ICsgKiBscCAtIHBvaW50ZXIgdG8gdGhlIGxhc3QgdXBkYXRlZCBlbGVtZW50 IGluIHRoZSBwbnVtLg0KPiA+ICsgKiBkbHAgLSBkZXN0IHBvcnQgdmFsdWUgbHAgY29ycmVzcG9u ZHMgdG8uDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZQlHUlBTWgkoMSA8PCBGV0RTVEVQ KQ0KPiA+ICsjZGVmaW5lCUdSUE1TSwkoR1JQU1ogLSAxKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBH Uk9VUF9QT1JUX1NURVAoZGxwLCBkY3AsIGxwLCBwbiwgaWR4KQlkbyB7IFwNCj4gPiArCWlmIChs aWtlbHkoKGRscCkgPT0gKGRjcClbKGlkeCldKSkgeyAgICAgICAgIFwNCj4gPiArCQkobHApWzBd Kys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsJfSBlbHNlIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsJCShkbHApID0gKGRjcClbaWR4XTsg ICAgICAgICAgICAgICAgICBcDQo+ID4gKwkJKGxwKSA9IChwbikgKyAoaWR4KTsgICAgICAgICAg ICAgICAgIFwNCj4gPiArCQkobHApWzBdID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiA+ICsJfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ ICt9IHdoaWxlICgwKQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCB7DQo+ID4gKwl1 aW50NjRfdCBwbnVtOyAvKiBwcmVidWlsZCA0IHZhbHVlcyBmb3IgcG51bVtdLiAqLw0KPiA+ICsJ aW50MzJfdCAgaWR4OyAgLyogaW5kZXggZm9yIG5ldyBsYXN0IHVwZGF0ZWQgZWxlbW5ldC4gKi8N Cj4gPiArCXVpbnQxNl90IGxwdjsgIC8qIGFkZCB2YWx1ZSB0byB0aGUgbGFzdCB1cGRhdGVkIGVs ZW1lbnQuICovDQo+ID4gK30gZ3B0YmxbR1JQU1pdID0gew0KPiA+ICsJew0KPiA+ICsJCS8qIDA6 IGEgIT0gYiwgYiAhPSBjLCBjICE9IGQsIGQgIT0gZSAqLw0KPiA+ICsJCS5wbnVtID0gVUlOVDY0 X0MoMHgwMDAxMDAwMTAwMDEwMDAxKSwNCj4gPiArCQkuaWR4ID0gNCwNCj4gPiArCQkubHB2ID0g MCwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ID4gKwkJLyogMTogYSA9PSBiLCBiICE9IGMsIGMgIT0g ZCwgZCAhPSBlICovDQo+ID4gKwkJLnBudW0gPSBVSU5UNjRfQygweDAwMDEwMDAxMDAwMTAwMDIp LA0KPiA+ICsJCS5pZHggPSA0LA0KPiA+ICsJCS5scHYgPSAxLA0KPiA+ICsJfSwNCj4gPiArCXsN Cj4gPiArCQkvKiAyOiBhICE9IGIsIGIgPT0gYywgYyAhPSBkLCBkICE9IGUgKi8NCj4gPiArCQku cG51bSA9IFVJTlQ2NF9DKDB4MDAwMTAwMDEwMDAyMDAwMSksDQo+ID4gKwkJLmlkeCA9IDQsDQo+ ID4gKwkJLmxwdiA9IDAsDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCS8qIDM6IGEgPT0gYiwg YiA9PSBjLCBjICE9IGQsIGQgIT0gZSAqLw0KPiA+ICsJCS5wbnVtID0gVUlOVDY0X0MoMHgwMDAx MDAwMTAwMDIwMDAzKSwNCj4gPiArCQkuaWR4ID0gNCwNCj4gPiArCQkubHB2ID0gMiwNCj4gPiAr CX0sDQo+ID4gKwl7DQo+ID4gKwkJLyogNDogYSAhPSBiLCBiICE9IGMsIGMgPT0gZCwgZCAhPSBl ICovDQo+ID4gKwkJLnBudW0gPSBVSU5UNjRfQygweDAwMDEwMDAyMDAwMTAwMDEpLA0KPiA+ICsJ CS5pZHggPSA0LA0KPiA+ICsJCS5scHYgPSAwLA0KPiA+ICsJfSwNCj4gPiArCXsNCj4gPiArCQkv KiA1OiBhID09IGIsIGIgIT0gYywgYyA9PSBkLCBkICE9IGUgKi8NCj4gPiArCQkucG51bSA9IFVJ TlQ2NF9DKDB4MDAwMTAwMDIwMDAxMDAwMiksDQo+ID4gKwkJLmlkeCA9IDQsDQo+ID4gKwkJLmxw diA9IDEsDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCS8qIDY6IGEgIT0gYiwgYiA9PSBjLCBj ID09IGQsIGQgIT0gZSAqLw0KPiA+ICsJCS5wbnVtID0gVUlOVDY0X0MoMHgwMDAxMDAwMjAwMDMw MDAxKSwNCj4gPiArCQkuaWR4ID0gNCwNCj4gPiArCQkubHB2ID0gMCwNCj4gPiArCX0sDQo+ID4g Kwl7DQo+ID4gKwkJLyogNzogYSA9PSBiLCBiID09IGMsIGMgPT0gZCwgZCAhPSBlICovDQo+ID4g KwkJLnBudW0gPSBVSU5UNjRfQygweDAwMDEwMDAyMDAwMzAwMDQpLA0KPiA+ICsJCS5pZHggPSA0 LA0KPiA+ICsJCS5scHYgPSAzLA0KPiA+ICsJfSwNCj4gPiArCXsNCj4gPiArCQkvKiA4OiBhICE9 IGIsIGIgIT0gYywgYyAhPSBkLCBkID09IGUgKi8NCj4gPiArCQkucG51bSA9IFVJTlQ2NF9DKDB4 MDAwMjAwMDEwMDAxMDAwMSksDQo+ID4gKwkJLmlkeCA9IDMsDQo+ID4gKwkJLmxwdiA9IDAsDQo+ ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCS8qIDk6IGEgPT0gYiwgYiAhPSBjLCBjICE9IGQsIGQg PT0gZSAqLw0KPiA+ICsJCS5wbnVtID0gVUlOVDY0X0MoMHgwMDAyMDAwMTAwMDEwMDAyKSwNCj4g PiArCQkuaWR4ID0gMywNCj4gPiArCQkubHB2ID0gMSwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ID4g KwkJLyogMHhhOiBhICE9IGIsIGIgPT0gYywgYyAhPSBkLCBkID09IGUgKi8NCj4gPiArCQkucG51 bSA9IFVJTlQ2NF9DKDB4MDAwMjAwMDEwMDAyMDAwMSksDQo+ID4gKwkJLmlkeCA9IDMsDQo+ID4g KwkJLmxwdiA9IDAsDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCS8qIDB4YjogYSA9PSBiLCBi ID09IGMsIGMgIT0gZCwgZCA9PSBlICovDQo+ID4gKwkJLnBudW0gPSBVSU5UNjRfQygweDAwMDIw MDAxMDAwMjAwMDMpLA0KPiA+ICsJCS5pZHggPSAzLA0KPiA+ICsJCS5scHYgPSAyLA0KPiA+ICsJ fSwNCj4gPiArCXsNCj4gPiArCQkvKiAweGM6IGEgIT0gYiwgYiAhPSBjLCBjID09IGQsIGQgPT0g ZSAqLw0KPiA+ICsJCS5wbnVtID0gVUlOVDY0X0MoMHgwMDAyMDAwMzAwMDEwMDAxKSwNCj4gPiAr CQkuaWR4ID0gMiwNCj4gPiArCQkubHB2ID0gMCwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ID4gKwkJ LyogMHhkOiBhID09IGIsIGIgIT0gYywgYyA9PSBkLCBkID09IGUgKi8NCj4gPiArCQkucG51bSA9 IFVJTlQ2NF9DKDB4MDAwMjAwMDMwMDAxMDAwMiksDQo+ID4gKwkJLmlkeCA9IDIsDQo+ID4gKwkJ LmxwdiA9IDEsDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCS8qIDB4ZTogYSAhPSBiLCBiID09 IGMsIGMgPT0gZCwgZCA9PSBlICovDQo+ID4gKwkJLnBudW0gPSBVSU5UNjRfQygweDAwMDIwMDAz MDAwNDAwMDEpLA0KPiA+ICsJCS5pZHggPSAxLA0KPiA+ICsJCS5scHYgPSAwLA0KPiA+ICsJfSwN Cj4gPiArCXsNCj4gPiArCQkvKiAweGY6IGEgPT0gYiwgYiA9PSBjLCBjID09IGQsIGQgPT0gZSAq Lw0KPiA+ICsJCS5wbnVtID0gVUlOVDY0X0MoMHgwMDAyMDAwMzAwMDQwMDA1KSwNCj4gPiArCQku aWR4ID0gMCwNCj4gPiArCQkubHB2ID0gNCwNCj4gPiArCX0sDQo+ID4gK307DQo+ID4gKw0KPiA+ ICsNCj4gPiArLyoNCj4gPiArICogVXBkYXRlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gTUFDIGFk ZHJlc3NlcyBpbiB0aGUgZXRoZXJuZXQgaGVhZGVyLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlu bGluZSB2b2lkDQo+ID4gK3Byb2Nlc3N4NF9zdGVwMyhzdHJ1Y3QgcnRlX21idWYgKnBrdHNbRldE U1RFUF0sIHVpbnQxNl90DQo+IGRzdF9wb3J0W0ZXRFNURVBdLA0KPiA+ICsJCXVpbnQ2NF90IHR4 X29mZmxvYWRzLCBib29sIGlwX2Nrc3VtLCB1aW50OF90ICpsX3BrdCkNCj4gPiArew0KPiA+ICsJ dWludDMyeDRfdCB0ZVtGV0RTVEVQXTsNCj4gPiArCXVpbnQzMng0X3QgdmVbRldEU1RFUF07DQo+ ID4gKwl1aW50MzJfdCAqcFtGV0RTVEVQXTsNCj4gPiArCXN0cnVjdCBydGVfbWJ1ZiAqcGt0Ow0K PiA+ICsJdWludDhfdCBpOw0KPiA+ICsNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBGV0RTVEVQOyBp KyspIHsNCj4gPiArCQlwa3QgPSBwa3RzW2ldOw0KPiA+ICsNCj4gPiArCQkvKiBDaGVjayBpZiBp dCBpcyBhIGxhcmdlIHBhY2tldCAqLw0KPiA+ICsJCWlmIChwa3QtPnBrdF9sZW4gLSBSVEVfRVRI RVJfSERSX0xFTiA+IG10dV9zaXplKQ0KPiA+ICsJCQkqbF9wa3QgfD0gMTsNCj4gPiArDQo+ID4g KwkJcFtpXSA9IHJ0ZV9wa3RtYnVmX210b2QocGt0LCB1aW50MzJfdCAqKTsNCj4gPiArCQl2ZVtp XSA9IHZyZWludGVycHJldHFfdTMyX3MzMih2YWxfZXRoW2RzdF9wb3J0W2ldXSk7DQo+ID4gKwkJ dGVbaV0gPSB2bGQxcV91MzIocFtpXSk7DQo+ID4gKw0KPiA+ICsJCS8qIFVwZGF0ZSBsYXN0IDQg Ynl0ZXMgKi8NCj4gPiArCQl2ZVtpXSA9IHZzZXRxX2xhbmVfdTMyKHZnZXRxX2xhbmVfdTMyKHRl W2ldLCAzKSwgdmVbaV0sIDMpOw0KPiA+ICsJCXZzdDFxX3UzMihwW2ldLCB2ZVtpXSk7DQo+ID4g Kw0KPiA+ICsJCWlmIChpcF9ja3N1bSkgew0KPiA+ICsJCQlzdHJ1Y3QgcnRlX2lwdjRfaGRyICpp cDsNCj4gPiArDQo+ID4gKwkJCXBrdC0+b2xfZmxhZ3MgfD0gdHhfb2ZmbG9hZHM7DQo+ID4gKw0K PiA+ICsJCQlpcCA9IChzdHJ1Y3QgcnRlX2lwdjRfaGRyICopDQo+ID4gKwkJCQkocFtpXSArIFJU RV9FVEhFUl9IRFJfTEVOICsgMSk7DQo+ID4gKwkJCWlwLT5oZHJfY2hlY2tzdW0gPSAwOw0KPiA+ ICsNCj4gPiArCQkJLyogY2FsY3VsYXRlIElQdjQgY2tzdW0gaW4gU1cgKi8NCj4gPiArCQkJaWYg KChwa3QtPm9sX2ZsYWdzICYgUlRFX01CVUZfRl9UWF9JUF9DS1NVTSkgPT0gMCkNCj4gPiArCQkJ CWlwLT5oZHJfY2hlY2tzdW0gPSBydGVfaXB2NF9ja3N1bShpcCk7DQo+ID4gKwkJfQ0KPiA+ICsN Cj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogR3JvdXAgY29uc2VjdXRp dmUgcGFja2V0cyB3aXRoIHRoZSBzYW1lIGRlc3RpbmF0aW9uIHBvcnQgaW4gYnVyc3RzIG9mIDQu DQo+ID4gKyAqIFN1cHBvc2Ugd2UgaGF2ZSBhcnJheSBvZiBkZXN0aW5hdGlvbiBwb3J0czoNCj4g PiArICogZHN0X3BvcnRbXSA9IHthLCBiLCBjLCBkLCwgZSwgLi4uIH0NCj4gPiArICogZHAxIHNo b3VsZCBjb250YWluOiA8YSwgYiwgYywgZD4sIGRwMjogPGIsIGMsIGQsIGU+Lg0KPiA+ICsgKiBX ZSBkb2luZyA0IGNvbXBhcmlzb25zIGF0IG9uY2UgYW5kIHRoZSByZXN1bHQgaXMgNCBiaXQgbWFz ay4NCj4gPiArICogVGhpcyBtYXNrIGlzIHVzZWQgYXMgYW4gaW5kZXggaW50byBwcmVidWlsZCBh cnJheSBvZiBwbnVtIHZhbHVlcy4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbmxpbmUgdWludDE2 X3QgKg0KPiA+ICtwb3J0X2dyb3VweDQodWludDE2X3QgcG5bRldEU1RFUCArIDFdLCB1aW50MTZf dCAqbHAsIHVpbnQxNng4X3QgZHAxLA0KPiA+ICsJICAgICB1aW50MTZ4OF90IGRwMikNCj4gPiAr ew0KPiA+ICsJdW5pb24gew0KPiA+ICsJCXVpbnQxNl90IHUxNltGV0RTVEVQICsgMV07DQo+ID4g KwkJdWludDY0X3QgdTY0Ow0KPiA+ICsJfSAqcG51bSA9ICh2b2lkICopcG47DQo+ID4gKw0KPiA+ ICsJdWludDE2eDhfdCBtYXNrID0gezEsIDIsIDQsIDgsIDAsIDAsIDAsIDB9Ow0KPiA+ICsJaW50 MzJfdCB2Ow0KPiA+ICsNCj4gPiArCWRwMSA9IHZjZXFxX3UxNihkcDEsIGRwMik7DQo+ID4gKwlk cDEgPSB2YW5kcV91MTYoZHAxLCBtYXNrKTsNCj4gPiArCXYgPSB2YWRkdnFfdTE2KGRwMSk7DQo+ ID4gKw0KPiA+ICsJLyogdXBkYXRlIGxhc3QgcG9ydCBjb3VudGVyLiAqLw0KPiA+ICsJbHBbMF0g Kz0gZ3B0Ymxbdl0ubHB2Ow0KPiA+ICsJcnRlX2NvbXBpbGVyX2JhcnJpZXIoKTsNCj4gPiArDQo+ ID4gKwkvKiBpZiBkZXN0IHBvcnQgdmFsdWUgaGFzIGNoYW5nZWQuICovDQo+ID4gKwlpZiAodiAh PSBHUlBNU0spIHsNCj4gPiArCQlwbnVtLT51NjQgPSBncHRibFt2XS5wbnVtOw0KPiA+ICsJCXBu dW0tPnUxNltGV0RTVEVQXSA9IDE7DQo+ID4gKwkJbHAgPSBwbnVtLT51MTYgKyBncHRibFt2XS5p ZHg7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIGxwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICogUHJvY2VzcyBzaW5nbGUgcGFja2V0Og0KPiA+ICsgKiBVcGRhdGUgc291 cmNlIGFuZCBkZXN0aW5hdGlvbiBNQUMgYWRkcmVzc2VzIGluIHRoZSBldGhlcm5ldCBoZWFkZXIu DQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArcHJvY2Vzc19wYWNrZXQo c3RydWN0IHJ0ZV9tYnVmICpwa3QsIHVpbnQxNl90ICpkc3RfcG9ydCwgdWludDY0X3QNCj4gdHhf b2ZmbG9hZHMsDQo+ID4gKwkgICAgICAgYm9vbCBpcF9ja3N1bSwgdWludDhfdCAqbF9wa3QpDQo+ ID4gK3sNCj4gPiArCXN0cnVjdCBydGVfZXRoZXJfaGRyICpldGhfaGRyOw0KPiA+ICsJdWludDMy eDRfdCB0ZSwgdmU7DQo+ID4gKw0KPiA+ICsJLyogQ2hlY2sgaWYgaXQgaXMgYSBsYXJnZSBwYWNr ZXQgKi8NCj4gPiArCWlmIChwa3QtPnBrdF9sZW4gLSBSVEVfRVRIRVJfSERSX0xFTiA+IG10dV9z aXplKQ0KPiA+ICsJCSpsX3BrdCB8PSAxOw0KPiA+ICsNCj4gPiArCWV0aF9oZHIgPSBydGVfcGt0 bWJ1Zl9tdG9kKHBrdCwgc3RydWN0IHJ0ZV9ldGhlcl9oZHIgKik7DQo+ID4gKw0KPiA+ICsJdGUg PSB2bGQxcV91MzIoKHVpbnQzMl90ICopZXRoX2hkcik7DQo+ID4gKwl2ZSA9IHZyZWludGVycHJl dHFfdTMyX3MzMih2YWxfZXRoW2RzdF9wb3J0WzBdXSk7DQo+ID4gKw0KPiA+ICsJdmUgPSB2Y29w eXFfbGFuZXFfdTMyKHZlLCAzLCB0ZSwgMyk7DQo+ID4gKwl2c3QxcV91MzIoKHVpbnQzMl90ICop ZXRoX2hkciwgdmUpOw0KPiA+ICsNCj4gPiArCWlmIChpcF9ja3N1bSkgew0KPiA+ICsJCXN0cnVj dCBydGVfaXB2NF9oZHIgKmlwOw0KPiA+ICsNCj4gPiArCQlwa3QtPm9sX2ZsYWdzIHw9IHR4X29m ZmxvYWRzOw0KPiA+ICsNCj4gPiArCQlpcCA9IChzdHJ1Y3QgcnRlX2lwdjRfaGRyICopKGV0aF9o ZHIgKyAxKTsNCj4gPiArCQlpcC0+aGRyX2NoZWNrc3VtID0gMDsNCj4gPiArDQo+ID4gKwkJLyog Y2FsY3VsYXRlIElQdjQgY2tzdW0gaW4gU1cgKi8NCj4gPiArCQlpZiAoKHBrdC0+b2xfZmxhZ3Mg JiBSVEVfTUJVRl9GX1RYX0lQX0NLU1VNKSA9PSAwKQ0KPiA+ICsJCQlpcC0+aGRyX2NoZWNrc3Vt ID0gcnRlX2lwdjRfY2tzdW0oaXApOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW5saW5lIHZvaWQNCj4gPiArc2VuZF9wYWNrZXRzKHN0cnVjdCBydGVfbWJ1ZiAqbVtdLCB1 aW50MTZfdCBwb3J0LCB1aW50MzJfdCBudW0sIGJvb2wNCj4gaXNfaXB2NCkNCj4gPiArew0KPiA+ ICsJdWludDhfdCBwcm90bzsNCj4gPiArCXVpbnQzMl90IGk7DQo+ID4gKw0KPiA+ICsJcHJvdG8g PSBpc19pcHY0ID8gSVBQUk9UT19JUCA6IElQUFJPVE9fSVBWNjsNCj4gPiArCWZvciAoaSA9IDA7 IGkgPCBudW07IGkrKykNCj4gPiArCQlzZW5kX3NpbmdsZV9wYWNrZXQobVtpXSwgcG9ydCwgcHJv dG8pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArc2VuZF9w YWNrZXRzeDQoc3RydWN0IHJ0ZV9tYnVmICptW10sIHVpbnQxNl90IHBvcnQsIHVpbnQzMl90IG51 bSkNCj4gPiArew0KPiA+ICsJdW5zaWduZWQgaW50IGxjb3JlaWQgPSBydGVfbGNvcmVfaWQoKTsN Cj4gPiArCXN0cnVjdCBsY29yZV9jb25mICpxY29uZjsNCj4gPiArCXVpbnQzMl90IGxlbiwgaiwg bjsNCj4gPiArDQo+ID4gKwlxY29uZiA9ICZsY29yZV9jb25mW2xjb3JlaWRdOw0KPiA+ICsNCj4g PiArCWxlbiA9IHFjb25mLT50eF9tYnVmc1twb3J0XS5sZW47DQo+ID4gKw0KPiA+ICsJLyoNCj4g PiArCSAqIElmIFRYIGJ1ZmZlciBmb3IgdGhhdCBxdWV1ZSBpcyBlbXB0eSwgYW5kIHdlIGhhdmUg ZW5vdWdoIHBhY2tldHMsDQo+ID4gKwkgKiB0aGVuIHNlbmQgdGhlbSBzdHJhaWdodHdheS4NCj4g PiArCSAqLw0KPiA+ICsJaWYgKG51bSA+PSBNQVhfVFhfQlVSU1QgJiYgbGVuID09IDApIHsNCj4g PiArCQluID0gcnRlX2V0aF90eF9idXJzdChwb3J0LCBxY29uZi0+dHhfcXVldWVfaWRbcG9ydF0s IG0sIG51bSk7DQo+ID4gKwkJY29yZV9zdGF0c191cGRhdGVfdHgobik7DQo+ID4gKwkJaWYgKHVu bGlrZWx5KG4gPCBudW0pKSB7DQo+ID4gKwkJCWRvIHsNCj4gPiArCQkJCXJ0ZV9wa3RtYnVmX2Zy ZWUobVtuXSk7DQo+ID4gKwkJCX0gd2hpbGUgKCsrbiA8IG51bSk7DQo+ID4gKwkJfQ0KPiA+ICsJ CXJldHVybjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICogUHV0IHBhY2tldHMg aW50byBUWCBidWZmZXIgZm9yIHRoYXQgcXVldWUuDQo+ID4gKwkgKi8NCj4gPiArDQo+ID4gKwlu ID0gbGVuICsgbnVtOw0KPiA+ICsJbiA9IChuID4gTUFYX1BLVF9CVVJTVCkgPyBNQVhfUEtUX0JV UlNUIC0gbGVuIDogbnVtOw0KPiA+ICsNCj4gPiArCWogPSAwOw0KPiA+ICsJc3dpdGNoIChuICUg RldEU1RFUCkgew0KPiA+ICsJd2hpbGUgKGogPCBuKSB7DQo+ID4gKwkJY2FzZSAwOg0KPiA+ICsJ CQlxY29uZi0+dHhfbWJ1ZnNbcG9ydF0ubV90YWJsZVtsZW4gKyBqXSA9IG1bal07DQo+ID4gKwkJ CWorKzsNCj4gPiArCQkJLyogZmFsbHRocm91Z2ggKi8NCj4gPiArCQljYXNlIDM6DQo+ID4gKwkJ CXFjb25mLT50eF9tYnVmc1twb3J0XS5tX3RhYmxlW2xlbiArIGpdID0gbVtqXTsNCj4gPiArCQkJ aisrOw0KPiA+ICsJCQkvKiBmYWxsdGhyb3VnaCAqLw0KPiA+ICsJCWNhc2UgMjoNCj4gPiArCQkJ cWNvbmYtPnR4X21idWZzW3BvcnRdLm1fdGFibGVbbGVuICsgal0gPSBtW2pdOw0KPiA+ICsJCQlq Kys7DQo+ID4gKwkJCS8qIGZhbGx0aHJvdWdoICovDQo+ID4gKwkJY2FzZSAxOg0KPiA+ICsJCQlx Y29uZi0+dHhfbWJ1ZnNbcG9ydF0ubV90YWJsZVtsZW4gKyBqXSA9IG1bal07DQo+ID4gKwkJCWor KzsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJbGVuICs9IG47DQo+ID4gKw0KPiA+ ICsJLyogZW5vdWdoIHBrdHMgdG8gYmUgc2VudCAqLw0KPiA+ICsJaWYgKHVubGlrZWx5KGxlbiA9 PSBNQVhfUEtUX0JVUlNUKSkgew0KPiA+ICsNCj4gPiArCQlzZW5kX2J1cnN0KHFjb25mLCBNQVhf UEtUX0JVUlNULCBwb3J0KTsNCj4gPiArDQo+ID4gKwkJLyogY29weSByZXN0IG9mIHRoZSBwYWNr ZXRzIGludG8gdGhlIFRYIGJ1ZmZlci4gKi8NCj4gPiArCQlsZW4gPSBudW0gLSBuOw0KPiA+ICsJ CWlmIChsZW4gPT0gMCkNCj4gPiArCQkJZ290byBleGl0Ow0KPiA+ICsNCj4gPiArCQlqID0gMDsN Cj4gPiArCQlzd2l0Y2ggKGxlbiAlIEZXRFNURVApIHsNCj4gPiArCQl3aGlsZSAoaiA8IGxlbikg ew0KPiA+ICsJCQljYXNlIDA6DQo+ID4gKwkJCQlxY29uZi0+dHhfbWJ1ZnNbcG9ydF0ubV90YWJs ZVtqXSA9IG1bbiArIGpdOw0KPiA+ICsJCQkJaisrOw0KPiA+ICsJCQkJLyogZmFsbHRocm91Z2gg Ki8NCj4gPiArCQkJY2FzZSAzOg0KPiA+ICsJCQkJcWNvbmYtPnR4X21idWZzW3BvcnRdLm1fdGFi bGVbal0gPSBtW24gKyBqXTsNCj4gPiArCQkJCWorKzsNCj4gPiArCQkJCS8qIGZhbGx0aHJvdWdo ICovDQo+ID4gKwkJCWNhc2UgMjoNCj4gPiArCQkJCXFjb25mLT50eF9tYnVmc1twb3J0XS5tX3Rh YmxlW2pdID0gbVtuICsgal07DQo+ID4gKwkJCQlqKys7DQo+ID4gKwkJCQkvKiBmYWxsdGhyb3Vn aCAqLw0KPiA+ICsJCQljYXNlIDE6DQo+ID4gKwkJCQlxY29uZi0+dHhfbWJ1ZnNbcG9ydF0ubV90 YWJsZVtqXSA9IG1bbiArIGpdOw0KPiA+ICsJCQkJaisrOw0KPiA+ICsJCX0NCj4gPiArCQl9DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICtleGl0Og0KPiA+ICsJcWNvbmYtPnR4X21idWZzW3BvcnRdLmxl biA9IGxlbjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIFNlbmQgcGFja2V0cyBi dXJzdCB0byB0aGUgcG9ydHMgaW4gZHN0X3BvcnQgYXJyYXkNCj4gPiArICovDQo+ID4gK3N0YXRp YyBfX3J0ZV9hbHdheXNfaW5saW5lIHZvaWQNCj4gPiArc2VuZF9tdWx0aV9wa3RzKHN0cnVjdCBy dGVfbWJ1ZiAqKnBrdHMsIHVpbnQxNl90DQo+IGRzdF9wb3J0W01BWF9QS1RfQlVSU1RdLA0KPiA+ ICsJCWludCBuYl9yeCwgdWludDY0X3QgdHhfb2ZmbG9hZHMsIGJvb2wgaXBfY2tzdW0sIGJvb2wg aXNfaXB2NCkNCj4gPiArew0KPiA+ICsJdW5zaWduZWQgaW50IGxjb3JlaWQgPSBydGVfbGNvcmVf aWQoKTsNCj4gPiArCXVpbnQxNl90IHBudW1bTUFYX1BLVF9CVVJTVCArIDFdOw0KPiA+ICsJdWlu dDhfdCBsX3BrdCA9IDA7DQo+ID4gKwl1aW50MTZfdCBkbHAsICpscDsNCj4gPiArCWludCBpID0g MCwgazsNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICogRmluaXNoIHBhY2tldCBwcm9jZXNzaW5n IGFuZCBncm91cCBjb25zZWN1dGl2ZQ0KPiA+ICsJICogcGFja2V0cyB3aXRoIHRoZSBzYW1lIGRl c3RpbmF0aW9uIHBvcnQuDQo+ID4gKwkgKi8NCj4gPiArCWsgPSBSVEVfQUxJR05fRkxPT1IobmJf cngsIEZXRFNURVApOw0KPiA+ICsNCj4gPiArCWlmIChrICE9IDApIHsNCj4gPiArCQl1aW50MTZ4 OF90IGRwMSwgZHAyOw0KPiA+ICsNCj4gPiArCQlscCA9IHBudW07DQo+ID4gKwkJbHBbMF0gPSAx Ow0KPiA+ICsNCj4gPiArCQlwcm9jZXNzeDRfc3RlcDMocGt0cywgZHN0X3BvcnQsIHR4X29mZmxv YWRzLCBpcF9ja3N1bSwgJmxfcGt0KTsNCj4gPiArDQo+ID4gKwkJLyogZHAxOiA8ZFswXSwgZFsx XSwgZFsyXSwgZFszXSwgLi4uID4gKi8NCj4gPiArCQlkcDEgPSB2bGQxcV91MTYoZHN0X3BvcnQp Ow0KPiA+ICsNCj4gPiArCQlmb3IgKGkgPSBGV0RTVEVQOyBpICE9IGs7IGkgKz0gRldEU1RFUCkg ew0KPiA+ICsJCQlwcm9jZXNzeDRfc3RlcDMoJnBrdHNbaV0sICZkc3RfcG9ydFtpXSwgdHhfb2Zm bG9hZHMsDQo+ID4gKwkJCQkJaXBfY2tzdW0sICZsX3BrdCk7DQo+ID4gKw0KPiA+ICsJCQkvKg0K PiA+ICsJCQkgKiBkcDI6DQo+ID4gKwkJCSAqIDxkW2otM10sIGRbai0yXSwgZFtqLTFdLCBkW2pd LCAuLi4gPg0KPiA+ICsJCQkgKi8NCj4gPiArCQkJZHAyID0gdmxkMXFfdTE2KCZkc3RfcG9ydFtp IC0gRldEU1RFUCArIDFdKTsNCj4gPiArCQkJbHAgID0gcG9ydF9ncm91cHg0KCZwbnVtW2kgLSBG V0RTVEVQXSwgbHAsIGRwMSwgZHAyKTsNCj4gPiArDQo+ID4gKwkJCS8qDQo+ID4gKwkJCSAqIGRw MToNCj4gPiArCQkJICogPGRbal0sIGRbaisxXSwgZFtqKzJdLCBkW2orM10sIC4uLiA+DQo+ID4g KwkJCSAqLw0KPiA+ICsJCQlkcDEgPSB2ZXh0cV91MTYoZHAyLCBkcDEsIEZXRFNURVAgLSAxKTsN Cj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCS8qDQo+ID4gKwkJICogZHAyOiA8ZFtqLTNdLCBkW2ot Ml0sIGRbai0xXSwgZFtqLTFdLCAuLi4gPg0KPiA+ICsJCSAqLw0KPiA+ICsJCWRwMiA9IHZleHRx X3UxNihkcDEsIGRwMSwgMSk7DQo+ID4gKwkJZHAyID0gdnNldHFfbGFuZV91MTYodmdldHFfbGFu ZV91MTYoZHAyLCAyKSwgZHAyLCAzKTsNCj4gPiArCQlscCAgPSBwb3J0X2dyb3VweDQoJnBudW1b aSAtIEZXRFNURVBdLCBscCwgZHAxLCBkcDIpOw0KPiA+ICsNCj4gPiArCQkvKg0KPiA+ICsJCSAq IHJlbW92ZSB2YWx1ZXMgYWRkZWQgYnkgdGhlIGxhc3QgcmVwZWF0ZWQNCj4gPiArCQkgKiBkc3Qg cG9ydC4NCj4gPiArCQkgKi8NCj4gPiArCQlscFswXS0tOw0KPiA+ICsJCWRscCA9IGRzdF9wb3J0 W2kgLSAxXTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJLyogc2V0IGRscCBhbmQgbHAgdG8gdGhl IG5ldmVyIHVzZWQgdmFsdWVzLiAqLw0KPiA+ICsJCWRscCA9IEJBRF9QT1JUIC0gMTsNCj4gPiAr CQlscCA9IHBudW0gKyBNQVhfUEtUX0JVUlNUOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIFBy b2Nlc3MgdXAgdG8gbGFzdCAzIHBhY2tldHMgb25lIGJ5IG9uZS4gKi8NCj4gPiArCXN3aXRjaCAo bmJfcnggJSBGV0RTVEVQKSB7DQo+ID4gKwljYXNlIDM6DQo+ID4gKwkJcHJvY2Vzc19wYWNrZXQo cGt0c1tpXSwgZHN0X3BvcnQgKyBpLCB0eF9vZmZsb2FkcywgaXBfY2tzdW0sDQo+ID4gKwkJCSAg ICAgICAmbF9wa3QpOw0KPiA+ICsJCUdST1VQX1BPUlRfU1RFUChkbHAsIGRzdF9wb3J0LCBscCwg cG51bSwgaSk7DQo+ID4gKwkJaSsrOw0KPiA+ICsJCS8qIGZhbGx0aHJvdWdoICovDQo+ID4gKwlj YXNlIDI6DQo+ID4gKwkJcHJvY2Vzc19wYWNrZXQocGt0c1tpXSwgZHN0X3BvcnQgKyBpLCB0eF9v ZmZsb2FkcywgaXBfY2tzdW0sDQo+ID4gKwkJCSAgICAgICAmbF9wa3QpOw0KPiA+ICsJCUdST1VQ X1BPUlRfU1RFUChkbHAsIGRzdF9wb3J0LCBscCwgcG51bSwgaSk7DQo+ID4gKwkJaSsrOw0KPiA+ ICsJCS8qIGZhbGx0aHJvdWdoICovDQo+ID4gKwljYXNlIDE6DQo+ID4gKwkJcHJvY2Vzc19wYWNr ZXQocGt0c1tpXSwgZHN0X3BvcnQgKyBpLCB0eF9vZmZsb2FkcywgaXBfY2tzdW0sDQo+ID4gKwkJ CSAgICAgICAmbF9wa3QpOw0KPiA+ICsJCUdST1VQX1BPUlRfU1RFUChkbHAsIGRzdF9wb3J0LCBs cCwgcG51bSwgaSk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyoNCj4gPiArCSAqIFNlbmQgcGFj a2V0cyBvdXQsIHRocm91Z2ggZGVzdGluYXRpb24gcG9ydC4NCj4gPiArCSAqIENvbnNlY3V0aXZl IHBhY2tldHMgd2l0aCB0aGUgc2FtZSBkZXN0aW5hdGlvbiBwb3J0DQo+ID4gKwkgKiBhcmUgYWxy ZWFkeSBncm91cGVkIHRvZ2V0aGVyLg0KPiA+ICsJICogSWYgZGVzdGluYXRpb24gcG9ydCBmb3Ig dGhlIHBhY2tldCBlcXVhbHMgQkFEX1BPUlQsDQo+ID4gKwkgKiB0aGVuIGZyZWUgdGhlIHBhY2tl dCB3aXRob3V0IHNlbmRpbmcgaXQgb3V0Lg0KPiA+ICsJICovDQo+ID4gKwlmb3IgKGkgPSAwOyBp IDwgbmJfcng7IGkgKz0gaykgew0KPiA+ICsNCj4gPiArCQl1aW50MTZfdCBwbjsNCj4gPiArDQo+ ID4gKwkJcG4gPSBkc3RfcG9ydFtpXTsNCj4gPiArCQlrID0gcG51bVtpXTsNCj4gPiArDQo+ID4g KwkJaWYgKGxpa2VseShwbiAhPSBCQURfUE9SVCkpIHsNCj4gPiArCQkJaWYgKGxfcGt0KQ0KPiA+ ICsJCQkJLyogTGFyZ2UgcGFja2V0IGlzIHByZXNlbnQsIG5lZWQgdG8gc2VuZA0KPiA+ICsJCQkJ ICogaW5kaXZpZHVhbCBwYWNrZXRzIHdpdGggZnJhZ21lbnQNCj4gPiArCQkJCSAqLw0KPiA+ICsJ CQkJc2VuZF9wYWNrZXRzKHBrdHMgKyBpLCBwbiwgaywgaXNfaXB2NCk7DQo+ID4gKwkJCWVsc2UN Cj4gPiArCQkJCXNlbmRfcGFja2V0c3g0KHBrdHMgKyBpLCBwbiwgayk7DQo+ID4gKw0KPiA+ICsJ CX0gZWxzZSB7DQo+ID4gKwkJCWZyZWVfcGt0cygmcGt0c1tpXSwgayk7DQo+ID4gKwkJCWlmIChp c19pcHY0KQ0KPiA+ICsJCQkJY29yZV9zdGF0aXN0aWNzW2xjb3JlaWRdLmxwbTQubWlzcysrOw0K PiA+ICsJCQllbHNlDQo+ID4gKwkJCQljb3JlX3N0YXRpc3RpY3NbbGNvcmVpZF0ubHBtNi5taXNz Kys7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsjZW5kaWYgLyogX0lQ U0VDX05FT05fSF8gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBz ZWNfd29ya2VyLmMgYi9leGFtcGxlcy9pcHNlYy0NCj4gc2VjZ3cvaXBzZWNfd29ya2VyLmMNCj4g PiBpbmRleCBlMWQ0ZTNkODY0Li44MDMxNTdkOGVlIDEwMDY0NA0KPiA+IC0tLSBhL2V4YW1wbGVz L2lwc2VjLXNlY2d3L2lwc2VjX3dvcmtlci5jDQo+ID4gKysrIGIvZXhhbXBsZXMvaXBzZWMtc2Vj Z3cvaXBzZWNfd29ya2VyLmMNCj4gPiBAQCAtMTIsNiArMTIsMTAgQEANCj4gPiAgICNpbmNsdWRl ICJpcHNlYy1zZWNndy5oIg0KPiA+ICAgI2luY2x1ZGUgImlwc2VjX3dvcmtlci5oIg0KPiA+DQo+ ID4gKyNpZiBkZWZpbmVkKF9fQVJNX05FT04pDQo+ID4gKyNpbmNsdWRlICJpcHNlY19scG1fbmVv bi5oIg0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gICBzdHJ1Y3QgcG9ydF9kcnZfbW9kZV9kYXRh IHsNCj4gPiAgIAlzdHJ1Y3QgcnRlX3NlY3VyaXR5X3Nlc3Npb24gKnNlc3M7DQo+ID4gICAJc3Ry dWN0IHJ0ZV9zZWN1cml0eV9jdHggKmN0eDsNCj4gPiBAQCAtMTI0OCw4ICsxMjUyLDEzIEBAIGlw c2VjX3BvbGxfbW9kZV93cmtyX2lubF9wcih2b2lkKQ0KPiA+ICAgCQkJCXY2X251bSA9IGlwNi5u dW07DQo+ID4gICAJCQl9DQo+ID4NCj4gPiArI2lmIGRlZmluZWQgX19BUk1fTkVPTg0KPiA+ICsJ CQlyb3V0ZTRfcGt0c19uZW9uKHJ0NF9jdHgsIHY0LCB2NF9udW0sIDAsIGZhbHNlKTsNCj4gPiAr CQkJcm91dGU2X3BrdHNfbmVvbihydDZfY3R4LCB2NiwgdjZfbnVtKTsNCj4gPiArI2Vsc2UNCj4g PiAgIAkJCXJvdXRlNF9wa3RzKHJ0NF9jdHgsIHY0LCB2NF9udW0sIDAsIGZhbHNlKTsNCj4gPiAg IAkJCXJvdXRlNl9wa3RzKHJ0Nl9jdHgsIHY2LCB2Nl9udW0pOw0KPiA+ICsjZW5kaWYNCj4gPiAg IAkJfQ0KPiA+ICAgCX0NCj4gPiAgIH0NCg0K