From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0D397A0350; Mon, 22 Jun 2020 07:46:33 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D13EE1C190; Mon, 22 Jun 2020 07:46:31 +0200 (CEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150042.outbound.protection.outlook.com [40.107.15.42]) by dpdk.org (Postfix) with ESMTP id AB28E1C113 for ; Mon, 22 Jun 2020 07:46:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PKZGMK65LGPERJSXn3CZF6nnzsCLiWURPVwkEo9Wed0=; b=B4NaItcdhPhFFZqtxWVUJ4rcmJDorHkkrmFPuCtTlqtYulhZ+ji2eqqdPYOhurvJabyOfx5ASFdGI/ERBs0rSpa2BgCtWNnpon9k5Yihrni45I9PfTVjUWXnnzMLtkiMMt8A9/nszdjX1ujoHzlHXuclq5tMPHIUnphiQhcfZ9A= Received: from DB6PR0601CA0023.eurprd06.prod.outlook.com (2603:10a6:4:7b::33) by AM0PR08MB4241.eurprd08.prod.outlook.com (2603:10a6:208:140::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22; Mon, 22 Jun 2020 05:46:28 +0000 Received: from DB5EUR03FT007.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:7b:cafe::b9) by DB6PR0601CA0023.outlook.office365.com (2603:10a6:4:7b::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22 via Frontend Transport; Mon, 22 Jun 2020 05:46:28 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT007.mail.protection.outlook.com (10.152.20.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22 via Frontend Transport; Mon, 22 Jun 2020 05:46:28 +0000 Received: ("Tessian outbound 147ff5d152c1:v59"); Mon, 22 Jun 2020 05:46:28 +0000 X-CR-MTA-TID: 64aa7808 Received: from e7eeb5196f0c.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 3F7E0809-669B-4DB6-A79E-892C0FB4EF1D.1; Mon, 22 Jun 2020 05:46:23 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e7eeb5196f0c.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 22 Jun 2020 05:46:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b4sDirTqWEVDgxC+VIdYqqEgPnr6vlgu0Is7G9YZ2mhsSf4fK62GL/YltuOiHN3zA6seLJZc9GF0CZ4KComAGamgzIHVg9aEFq+r2mvInHMVlvLCDlPM/E3OxrkYIhL/UrDSF/9ZSSwcFXetkvuGTN/QzQi8rbMD2wBHH+G6CG6ZtEwusR7zjXW1s1ZIKGLGAqcylMa1RHYTgeruSpvUmlEBty3ja1XvSwKwQvRwhNwsH100Eeh66SdLtB9GXYorXHwzb2nVuMo7v/UfadgKpKl2iAc3ZlQVI0q+Af96dURakxkfYt0JKWCCmIhdbnAlEZ7QwkVUshbWLZ+5dvelag== 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=PKZGMK65LGPERJSXn3CZF6nnzsCLiWURPVwkEo9Wed0=; b=kPKbb/vJqUqelVZxxHVDllJlaH0JwjU/O861BvgNQVW+uniRur7yIHkQ+iA1X5Hafpxg4+18LqiJ6tVeAa9A/3wWm5axKy5iqI7316oA4dwhL//eZepF6WGjYifp0B7hTt+LBmI06oDzjZKTY8uVkcuxx4dPoinxdPcb68QlWemc/8VVdlwewc89QNtFyhOlrl0PwaV2d7uoLjZATv9XaGzb+5UdqDjoQw989Q436/DKA0YKpR5tSWQ7BLDn3wVn1oKpgZ/teqQnMSR5dLcRNb7M2Pgo1CguSvuf2JH29HNQ7r04NSQq5FTmlRKFxNV0oCC9/RNgxZQm2YSAODmUBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PKZGMK65LGPERJSXn3CZF6nnzsCLiWURPVwkEo9Wed0=; b=B4NaItcdhPhFFZqtxWVUJ4rcmJDorHkkrmFPuCtTlqtYulhZ+ji2eqqdPYOhurvJabyOfx5ASFdGI/ERBs0rSpa2BgCtWNnpon9k5Yihrni45I9PfTVjUWXnnzMLtkiMMt8A9/nszdjX1ujoHzlHXuclq5tMPHIUnphiQhcfZ9A= Received: from HE1PR0801MB2025.eurprd08.prod.outlook.com (2603:10a6:3:50::14) by HE1PR0801MB1995.eurprd08.prod.outlook.com (2603:10a6:3:52::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22; Mon, 22 Jun 2020 05:46:19 +0000 Received: from HE1PR0801MB2025.eurprd08.prod.outlook.com ([fe80::646e:c258:7269:f4b2]) by HE1PR0801MB2025.eurprd08.prod.outlook.com ([fe80::646e:c258:7269:f4b2%11]) with mapi id 15.20.3109.027; Mon, 22 Jun 2020 05:46:19 +0000 From: Ruifeng Wang To: "Medvedkin, Vladimir" , Bruce Richardson , John McNamara , Marko Kovacevic , Ray Kinsella , Neil Horman , Honnappa Nagarahalli CC: "dev@dpdk.org" , "konstantin.ananyev@intel.com" , nd , nd Thread-Topic: [PATCH v4 1/3] lib/lpm: integrate RCU QSBR Thread-Index: AQHWPVQu1Cv4BABiIUGMLDOrQzCBhKjer0MAgAV6xCA= Date: Mon, 22 Jun 2020 05:46:19 +0000 Message-ID: References: <20190906094534.36060-1-ruifeng.wang@arm.com> <20200608051658.144417-1-ruifeng.wang@arm.com> <20200608051658.144417-2-ruifeng.wang@arm.com> <1307ba36-7b4a-e465-d055-b4ad976adea1@intel.com> In-Reply-To: <1307ba36-7b4a-e465-d055-b4ad976adea1@intel.com> Accept-Language: en-US Content-Language: en-US X-Mentions: Honnappa.Nagarahalli@arm.com X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: a1247111-ef51-44b3-bd8f-04cd8b4c605b.0 x-checkrecipientchecked: true Authentication-Results-Original: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [203.126.0.112] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 1e9cca2b-8fca-4906-ca4e-08d8166f9bfd x-ms-traffictypediagnostic: HE1PR0801MB1995:|AM0PR08MB4241: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; x-forefront-prvs: 0442E569BC X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: ghTslr7jeqMAXri/E3CqqBvuZynDx5LPoGPlsJwZ9nWzP1KOQG0UQrLQX7lBv10Am1sygLJ56+ex+a/EVLCT3HcYpMQ/WLD8Y5DDbZcpalGqW5JXZjug31I5ycFx9+BkIg0HMrWK0Q0wolVNUNMOTHJKEc4R6iy+7AfibCpOrU77oG2Cz01WveroCFklWGr+Yymu7iEOSnyrhawaYPPF+Pft4yL8wtBsOFjxOy8+1SqPGFaojh3zGiJgY2IxoS4lsY5EkKM2JuycqHQwb/9DABwBwoM1AoZS4kW9DBan4yo4mLQLO3TJv10GfNF/1Jcr6RNO375P6INuaOokKOl9TtsTqVnPa60e/pu9ZgeH2cz8o0JJJTeATLMcB7l5iZSl X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:HE1PR0801MB2025.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(346002)(376002)(396003)(39850400004)(136003)(64756008)(53546011)(4326008)(66476007)(71200400001)(316002)(478600001)(7696005)(110136005)(33656002)(83380400001)(54906003)(66446008)(6636002)(55016002)(5660300002)(9686003)(6506007)(52536014)(26005)(8936002)(30864003)(66556008)(66946007)(2906002)(8676002)(186003)(76116006)(86362001)(21314003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: bs0ta5jOS3hRJ3qmTsd2WSFrv06V+JGrW9veahDqAY+Cx5veWnWmy9i5TyocK6nFyWTOyLoz75pXezNZemb2CzIuBaR/GMMwBNwGIVsavG81VEt89W9ea0aMIC6YhkfM+xzhoS0eSFyRdu7feRdTnKaSGYJ4pwJ1IrJa5TTUZHQa3lhhbdfpZvgrPc0od7wu/kO+TWnlLnE89BJLz+DxAPqC8WUz8nyys+WRasKw7IETjsCmiDUayaxutXuAIuqvTnWQv8AhxgalVpR6r4Qd/hdwobyU2fYdb1/ubChg7/J0Beo83plJMoR7eC0qRWvrGWEe7K4qIBFHLWLAjKmASplESOVbEPVujpVcJZthqzo+bAaSOltBsCKYVk3L+3tKFGWFHX5winfm2xeSxQwN0VspWS5jYwdprCM93NdQShdQEDFYamxeIMapGeMliT9zoJ0CSYTiDiEfVRMmUozFGx6Q/11z97139HIHmKI/O5c= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1995 Original-Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT007.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:; SFS:(4636009)(136003)(396003)(39850400004)(376002)(346002)(46966005)(82740400003)(81166007)(8936002)(5660300002)(110136005)(54906003)(2906002)(8676002)(4326008)(30864003)(47076004)(55016002)(9686003)(336012)(83380400001)(70586007)(478600001)(82310400002)(186003)(33656002)(70206006)(86362001)(7696005)(6636002)(356005)(52536014)(26005)(53546011)(6506007)(316002)(21314003); DIR:OUT; SFP:1101; X-MS-Office365-Filtering-Correlation-Id-Prvs: c8feab90-469b-4c0e-b0c0-08d8166f9697 X-Forefront-PRVS: 0442E569BC X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NAckkvxXliztZ+92S44uLw6+cP1u/y1QDbHRoyMwMqXKRnz6cn8m4HRbV3BD9VqAIhDNuKyApUfzlCLpFw03cJCM2zcO3/ZUX9sJ2qAnDVbK+WCh1n34pL2rML4Nxm1R15qZ6Q/Z3aMMc5UCtO0Pg1UkerGO5+yPI2xuK4dOQmgtb14iDXL20ZuqYfgSkMDt3mJqfH90Fwb6STmCnYO7uoMZlFijNzrgnuT6Hi3AFx/D1zSof1iikN+M8VduOudPq1gWMcCF5fpixoa2HScU7Dn/SnieL5xEB7Cu+5q0RLZ/p0TTpj6s3MttzAJWrFaybCu722GOVnXdQp89QcHXfk+a5kzkyNT4Zv0aIa5AiCWADSEkho8/yZ6IyWTcbxe+GLP9sBVSZ9/mewTqZkp34HYBrbHE1R0tmqlTvlIgIkk= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2020 05:46:28.7127 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1e9cca2b-8fca-4906-ca4e-08d8166f9bfd X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4241 Subject: Re: [dpdk-dev] [PATCH v4 1/3] lib/lpm: integrate RCU QSBR X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgVmxhZGltaXIsDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWVk dmVka2luLCBWbGFkaW1pciA8dmxhZGltaXIubWVkdmVka2luQGludGVsLmNvbT4NCj4gU2VudDog RnJpZGF5LCBKdW5lIDE5LCAyMDIwIDE6MjIgQU0NCj4gVG86IFJ1aWZlbmcgV2FuZyA8UnVpZmVu Zy5XYW5nQGFybS5jb20+OyBCcnVjZSBSaWNoYXJkc29uDQo+IDxicnVjZS5yaWNoYXJkc29uQGlu dGVsLmNvbT47IEpvaG4gTWNOYW1hcmENCj4gPGpvaG4ubWNuYW1hcmFAaW50ZWwuY29tPjsgTWFy a28gS292YWNldmljDQo+IDxtYXJrby5rb3ZhY2V2aWNAaW50ZWwuY29tPjsgUmF5IEtpbnNlbGxh IDxtZHJAYXNocm9lLmV1PjsgTmVpbCBIb3JtYW4NCj4gPG5ob3JtYW5AdHV4ZHJpdmVyLmNvbT4N Cj4gQ2M6IGRldkBkcGRrLm9yZzsga29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbTsgSG9ubmFw cGEgTmFnYXJhaGFsbGkNCj4gPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+OyBuZCA8bmRA YXJtLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NCAxLzNdIGxpYi9scG06IGludGVncmF0 ZSBSQ1UgUVNCUg0KPiANCj4gSGkgUnVpZmVuZywNCj4gDQo+IFRoYW5rcyBmb3IgcGF0Y2hlcywg c2VlIGNvbW1lbnRzIGJlbG93DQpUaGFua3MgZm9yIHlvdXIgcmV2aWV3Lg0KPiANCj4gDQo+IE9u IDA4LzA2LzIwMjAgMDY6MTYsIFJ1aWZlbmcgV2FuZyB3cm90ZToNCj4gPiBDdXJyZW50bHksIHRo ZSB0Ymw4IGdyb3VwIGlzIGZyZWVkIGV2ZW4gdGhvdWdoIHRoZSByZWFkZXJzIG1pZ2h0IGJlDQo+ ID4gdXNpbmcgdGhlIHRibDggZ3JvdXAgZW50cmllcy4gVGhlIGZyZWVkIHRibDggZ3JvdXAgY2Fu IGJlIHJlYWxsb2NhdGVkDQo+ID4gcXVpY2tseS4gVGhpcyByZXN1bHRzIGluIGluY29ycmVjdCBs b29rdXAgcmVzdWx0cy4NCj4gPg0KPiA+IFJDVSBRU0JSIHByb2Nlc3MgaXMgaW50ZWdyYXRlZCBm b3Igc2FmZSB0Ymw4IGdyb3VwIHJlY2xhaW0uDQo+ID4gUmVmZXIgdG8gUkNVIGRvY3VtZW50YXRp b24gdG8gdW5kZXJzdGFuZCB2YXJpb3VzIGFzcGVjdHMgb2YNCj4gPiBpbnRlZ3JhdGluZyBSQ1Ug bGlicmFyeSBpbnRvIG90aGVyIGxpYnJhcmllcy4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFJ1 aWZlbmcgV2FuZyA8cnVpZmVuZy53YW5nQGFybS5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IEhvbm5h cHBhIE5hZ2FyYWhhbGxpIDxob25uYXBwYS5uYWdhcmFoYWxsaUBhcm0uY29tPg0KPiA+IC0tLQ0K PiA+ICAgZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2xwbV9saWIucnN0ICB8ICAzMiArKysrKysrKw0K PiA+ICAgbGliL2xpYnJ0ZV9scG0vTWFrZWZpbGUgICAgICAgICAgICB8ICAgMiArLQ0KPiA+ICAg bGliL2xpYnJ0ZV9scG0vbWVzb24uYnVpbGQgICAgICAgICB8ICAgMSArDQo+ID4gICBsaWIvbGli cnRlX2xwbS9ydGVfbHBtLmMgICAgICAgICAgIHwgMTIzICsrKysrKysrKysrKysrKysrKysrKysr KysrLS0tDQo+ID4gICBsaWIvbGlicnRlX2xwbS9ydGVfbHBtLmggICAgICAgICAgIHwgIDU5ICsr KysrKysrKysrKysrDQo+ID4gICBsaWIvbGlicnRlX2xwbS9ydGVfbHBtX3ZlcnNpb24ubWFwIHwg ICA2ICsrDQo+ID4gICA2IGZpbGVzIGNoYW5nZWQsIDIxMSBpbnNlcnRpb25zKCspLCAxMiBkZWxl dGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvbHBt X2xpYi5yc3QNCj4gPiBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9scG1fbGliLnJzdA0KPiA+IGlu ZGV4IDE2MDlhNTdkMC4uN2NjOTkwNDRhIDEwMDY0NA0KPiA+IC0tLSBhL2RvYy9ndWlkZXMvcHJv Z19ndWlkZS9scG1fbGliLnJzdA0KPiA+ICsrKyBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9scG1f bGliLnJzdA0KPiA+IEBAIC0xNDUsNiArMTQ1LDM4IEBAIGRlcGVuZGluZyBvbiB3aGV0aGVyIHdl IG5lZWQgdG8gbW92ZSB0byB0aGUNCj4gbmV4dCB0YWJsZSBvciBub3QuDQo+ID4gICBQcmVmaXgg ZXhwYW5zaW9uIGlzIG9uZSBvZiB0aGUga2V5cyBvZiB0aGlzIGFsZ29yaXRobSwNCj4gPiAgIHNp bmNlIGl0IGltcHJvdmVzIHRoZSBzcGVlZCBkcmFtYXRpY2FsbHkgYnkgYWRkaW5nIHJlZHVuZGFu Y3kuDQo+ID4NCj4gPiArRGVsZXRpb24NCj4gPiArfn5+fn5+fn4NCj4gPiArDQo+ID4gK1doZW4g ZGVsZXRpbmcgYSBydWxlLCBhIHJlcGxhY2VtZW50IHJ1bGUgaXMgc2VhcmNoZWQgZm9yLiBSZXBs YWNlbWVudA0KPiA+ICtydWxlIGlzIGFuIGV4aXN0aW5nIHJ1bGUgdGhhdCBoYXMgdGhlIGxvbmdl c3QgcHJlZml4IG1hdGNoIHdpdGggdGhlIHJ1bGUgdG8gYmUNCj4gZGVsZXRlZCwgYnV0IGhhcyBz bWFsbGVyIGRlcHRoLg0KPiA+ICsNCj4gPiArSWYgYSByZXBsYWNlbWVudCBydWxlIGlzIGZvdW5k LCB0YXJnZXQgdGJsMjQgYW5kIHRibDggZW50cmllcyBhcmUNCj4gPiArdXBkYXRlZCB0byBoYXZl IHRoZSBzYW1lIGRlcHRoIGFuZCBuZXh0IGhvcCB2YWx1ZSB3aXRoIHRoZQ0KPiByZXBsYWNlbWVu dCBydWxlLg0KPiA+ICsNCj4gPiArSWYgbm8gcmVwbGFjZW1lbnQgcnVsZSBjYW4gYmUgZm91bmQs IHRhcmdldCB0YmwyNCBhbmQgdGJsOCBlbnRyaWVzIHdpbGwgYmUNCj4gY2xlYXJlZC4NCj4gPiAr DQo+ID4gK1ByZWZpeCBleHBhbnNpb24gaXMgcGVyZm9ybWVkIGlmIHRoZSBydWxlJ3MgZGVwdGgg aXMgbm90IGV4YWN0bHkgMjQgYml0cyBvcg0KPiAzMiBiaXRzLg0KPiA+ICsNCj4gPiArQWZ0ZXIg ZGVsZXRpbmcgYSBydWxlLCBhIGdyb3VwIG9mIHRibDhzIHRoYXQgYmVsb25ncyB0byB0aGUgc2Ft ZSB0YmwyNCBlbnRyeQ0KPiBhcmUgZnJlZWQgaW4gZm9sbG93aW5nIGNhc2VzOg0KPiA+ICsNCj4g PiArKiAgIEFsbCB0Ymw4cyBpbiB0aGUgZ3JvdXAgYXJlIGVtcHR5IC4NCj4gPiArDQo+ID4gKyog ICBBbGwgdGJsOHMgaW4gdGhlIGdyb3VwIGhhdmUgdGhlIHNhbWUgdmFsdWVzIGFuZCB3aXRoIGRl cHRoIG5vIGdyZWF0ZXINCj4gdGhhbiAyNC4NCj4gPiArDQo+ID4gK0ZyZWUgb2YgdGJsOHMgaGF2 ZSBkaWZmZXJlbnQgYmVoYXZpb3JzOg0KPiA+ICsNCj4gPiArKiAgIElmIFJDVSBpcyBub3QgdXNl ZCwgdGJsOHMgYXJlIGNsZWFyZWQgYW5kIHJlY2xhaW1lZCBpbW1lZGlhdGVseS4NCj4gPiArDQo+ ID4gKyogICBJZiBSQ1UgaXMgdXNlZCwgdGJsOHMgYXJlIHJlY2xhaW1lZCB3aGVuIHJlYWRlcnMg YXJlIGluIHF1aWVzY2VudCBzdGF0ZS4NCj4gPiArDQo+ID4gK1doZW4gdGhlIExQTSBpcyBub3Qg dXNpbmcgUkNVLCB0Ymw4IGdyb3VwIGNhbiBiZSBmcmVlZCBpbW1lZGlhdGVseQ0KPiA+ICtldmVu IHRob3VnaCB0aGUgcmVhZGVycyBtaWdodCBiZSB1c2luZyB0aGUgdGJsOCBncm91cCBlbnRyaWVz LiBUaGlzIG1pZ2h0DQo+IHJlc3VsdCBpbiBpbmNvcnJlY3QgbG9va3VwIHJlc3VsdHMuDQo+ID4g Kw0KPiA+ICtSQ1UgUVNCUiBwcm9jZXNzIGlzIGludGVncmF0ZWQgZm9yIHNhZmUgdGJsOCBncm91 cCByZWNsYWltYXRpb24uDQo+ID4gK0FwcGxpY2F0aW9uIGhhcyBjZXJ0YWluIHJlc3BvbnNpYmls aXRpZXMgd2hpbGUgdXNpbmcgdGhpcyBmZWF0dXJlLg0KPiA+ICtQbGVhc2UgcmVmZXIgdG8gcmVz b3VyY2UgcmVjbGFpbWF0aW9uIGZyYW1ld29yayBvZiA6cmVmOmBSQ1UgbGlicmFyeQ0KPiA8UkNV X0xpYnJhcnk+YCBmb3IgbW9yZSBkZXRhaWxzLg0KPiA+ICsNCj4gPiAgIExvb2t1cA0KPiA+ICAg fn5+fn5+DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9scG0vTWFrZWZpbGUgYi9s aWIvbGlicnRlX2xwbS9NYWtlZmlsZSBpbmRleA0KPiA+IGQ2ODI3ODViNi4uNmYwNmM1YzAzIDEw MDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL01ha2VmaWxlDQo+ID4gKysrIGIvbGliL2xp YnJ0ZV9scG0vTWFrZWZpbGUNCj4gPiBAQCAtOCw3ICs4LDcgQEAgTElCID0gbGlicnRlX2xwbS5h DQo+ID4NCj4gPiAgIENGTEFHUyArPSAtTzMNCj4gPiAgIENGTEFHUyArPSAkKFdFUlJPUl9GTEFH UykgLUkkKFNSQ0RJUikgLUxETElCUyArPSAtbHJ0ZV9lYWwNCj4gPiAtbHJ0ZV9oYXNoDQo+ID4g K0xETElCUyArPSAtbHJ0ZV9lYWwgLWxydGVfaGFzaCAtbHJ0ZV9yY3UNCj4gPg0KPiA+ICAgRVhQ T1JUX01BUCA6PSBydGVfbHBtX3ZlcnNpb24ubWFwDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbGli L2xpYnJ0ZV9scG0vbWVzb24uYnVpbGQgYi9saWIvbGlicnRlX2xwbS9tZXNvbi5idWlsZA0KPiA+ IGluZGV4IDAyMWFjNmQ4ZC4uNmNmYzA4M2M1IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVf bHBtL21lc29uLmJ1aWxkDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9scG0vbWVzb24uYnVpbGQNCj4g PiBAQCAtNywzICs3LDQgQEAgaGVhZGVycyA9IGZpbGVzKCdydGVfbHBtLmgnLCAncnRlX2xwbTYu aCcpDQo+ID4gICAjIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgd2hpY2ggYXJjaGl0ZWN0dXJlIHdl IGFjdHVhbGx5IG5lZWQNCj4gPiAgIGhlYWRlcnMgKz0gZmlsZXMoJ3J0ZV9scG1fYWx0aXZlYy5o JywgJ3J0ZV9scG1fbmVvbi5oJywgJ3J0ZV9scG1fc3NlLmgnKQ0KPiA+ICAgZGVwcyArPSBbJ2hh c2gnXQ0KPiA+ICtkZXBzICs9IFsncmN1J10NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9s cG0vcnRlX2xwbS5jIGIvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5jIGluZGV4DQo+ID4gMzhhYjUx MmE0Li4zMGY1NDExNzkgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5j DQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5jDQo+ID4gQEAgLTEsNSArMSw2IEBA DQo+ID4gICAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gICAg KiBDb3B5cmlnaHQoYykgMjAxMC0yMDE0IEludGVsIENvcnBvcmF0aW9uDQo+ID4gKyAqIENvcHly aWdodChjKSAyMDIwIEFybSBMaW1pdGVkDQo+ID4gICAgKi8NCj4gPg0KPiA+ICAgI2luY2x1ZGUg PHN0cmluZy5oPg0KPiA+IEBAIC0yNDYsMTIgKzI0Nyw4NSBAQCBydGVfbHBtX2ZyZWUoc3RydWN0 IHJ0ZV9scG0gKmxwbSkNCj4gPg0KPiA+ICAgCXJ0ZV9tY2ZnX3RhaWxxX3dyaXRlX3VubG9jaygp Ow0KPiA+DQo+ID4gKwlpZiAobHBtLT5kcSkNCj4gPiArCQlydGVfcmN1X3FzYnJfZHFfZGVsZXRl KGxwbS0+ZHEpOw0KPiA+ICAgCXJ0ZV9mcmVlKGxwbS0+dGJsOCk7DQo+ID4gICAJcnRlX2ZyZWUo bHBtLT5ydWxlc190YmwpOw0KPiA+ICAgCXJ0ZV9mcmVlKGxwbSk7DQo+ID4gICAJcnRlX2ZyZWUo dGUpOw0KPiA+ICAgfQ0KPiA+DQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK19fbHBtX3JjdV9xc2Jy X2ZyZWVfcmVzb3VyY2Uodm9pZCAqcCwgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IG4pIHsNCj4g PiArCXN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSB6ZXJvX3RibDhfZW50cnkgPSB7MH07DQo+ID4g Kwl1aW50MzJfdCB0Ymw4X2dyb3VwX2luZGV4ID0gKih1aW50MzJfdCAqKWRhdGE7DQo+ID4gKwlz dHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgKnRibDggPSAoc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5 ICopcDsNCj4gPiArDQo+ID4gKwlSVEVfU0VUX1VTRUQobik7DQo+ID4gKwkvKiBTZXQgdGJsOCBn cm91cCBpbnZhbGlkICovDQo+ID4gKwlfX2F0b21pY19zdG9yZSgmdGJsOFt0Ymw4X2dyb3VwX2lu ZGV4XSwgJnplcm9fdGJsOF9lbnRyeSwNCj4gPiArCQlfX0FUT01JQ19SRUxBWEVEKTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyogQXNzb2NpYXRlIFFTQlIgdmFyaWFibGUgd2l0aCBhbiBMUE0gb2Jq ZWN0Lg0KPiA+ICsgKi8NCj4gPiAraW50DQo+ID4gK3J0ZV9scG1fcmN1X3FzYnJfYWRkKHN0cnVj dCBydGVfbHBtICpscG0sIHN0cnVjdCBydGVfbHBtX3JjdV9jb25maWcNCj4gKmNmZywNCj4gPiAr CXN0cnVjdCBydGVfcmN1X3FzYnJfZHEgKipkcSkNCj4gPiArew0KPiA+ICsJY2hhciByY3VfZHFf bmFtZVtSVEVfUkNVX1FTQlJfRFFfTkFNRVNJWkVdOw0KPiA+ICsJc3RydWN0IHJ0ZV9yY3VfcXNi cl9kcV9wYXJhbWV0ZXJzIHBhcmFtcyA9IHswfTsNCj4gPiArDQo+ID4gKwlpZiAoKGxwbSA9PSBO VUxMKSB8fCAoY2ZnID09IE5VTEwpKSB7DQo+ID4gKwkJcnRlX2Vycm5vID0gRUlOVkFMOw0KPiA+ ICsJCXJldHVybiAxOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChscG0tPnYpIHsNCj4gPiAr CQlydGVfZXJybm8gPSBFRVhJU1Q7DQo+ID4gKwkJcmV0dXJuIDE7DQo+ID4gKwl9DQo+ID4gKw0K PiA+ICsJaWYgKGNmZy0+bW9kZSA9PSBSVEVfTFBNX1FTQlJfTU9ERV9TWU5DKSB7DQo+ID4gKwkJ LyogTm8gb3RoZXIgdGhpbmdzIHRvIGRvLiAqLw0KPiA+ICsJfSBlbHNlIGlmIChjZmctPm1vZGUg PT0gUlRFX0xQTV9RU0JSX01PREVfRFEpIHsNCj4gPiArCQkvKiBJbml0IFFTQlIgZGVmZXIgcXVl dWUuICovDQo+ID4gKwkJc25wcmludGYocmN1X2RxX25hbWUsIHNpemVvZihyY3VfZHFfbmFtZSks DQo+ID4gKwkJCQkiTFBNX1JDVV8lcyIsIGxwbS0+bmFtZSk7DQo+ID4gKwkJcGFyYW1zLm5hbWUg PSByY3VfZHFfbmFtZTsNCj4gPiArCQlwYXJhbXMuc2l6ZSA9IGNmZy0+ZHFfc2l6ZTsNCj4gPiAr CQlpZiAocGFyYW1zLnNpemUgPT0gMCkNCj4gPiArCQkJcGFyYW1zLnNpemUgPSBscG0tPm51bWJl cl90Ymw4czsNCj4gPiArCQlwYXJhbXMudHJpZ2dlcl9yZWNsYWltX2xpbWl0ID0gY2ZnLT5yZWNs YWltX3RoZDsNCj4gPiArCQlpZiAocGFyYW1zLnRyaWdnZXJfcmVjbGFpbV9saW1pdCA9PSAwKQ0K PiANCj4gDQo+IFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSBmb3IgYSB1c2VyIHRvIGNvbmZpZ3Vy ZSByZWNsYW1hdGlvbiB0cmlnZ2VyaW5nIHdpdGgNCj4gZXZlcnkgY2FsbC4gU2hvdWxkIHdlIGFs bG93IGl0Pw0KWWVzLCB1c2UgKHJlY2xhaW1fdGhkID0gMCkgdG8gdHJpZ2dlciByZWNsYW1hdGlv biBhdCBlYWNoIGRxIGVucXVldWUgc2hvdWxkIGJlIGEgdmFsaWQgY2FzZS4NCldpbGwgcmVtb3Zl IHZhbHVlIG92ZXJyaWRpbmcgYW5kIHRha2UgaXQgYXMgaXMuDQo+IA0KPiANCj4gPiArCQkJcGFy YW1zLnRyaWdnZXJfcmVjbGFpbV9saW1pdCA9DQo+ID4gKwkJCQkJUlRFX0xQTV9SQ1VfRFFfUkVD TEFJTV9USEQ7DQo+ID4gKwkJcGFyYW1zLm1heF9yZWNsYWltX3NpemUgPSBjZmctPnJlY2xhaW1f bWF4Ow0KPiA+ICsJCWlmIChwYXJhbXMubWF4X3JlY2xhaW1fc2l6ZSA9PSAwKQ0KPiA+ICsJCQlw YXJhbXMubWF4X3JlY2xhaW1fc2l6ZSA9DQo+IFJURV9MUE1fUkNVX0RRX1JFQ0xBSU1fTUFYOw0K PiA+ICsJCXBhcmFtcy5lc2l6ZSA9IHNpemVvZih1aW50MzJfdCk7CS8qIHRibDggZ3JvdXAgaW5k ZXggKi8NCj4gPiArCQlwYXJhbXMuZnJlZV9mbiA9IF9fbHBtX3JjdV9xc2JyX2ZyZWVfcmVzb3Vy Y2U7DQo+ID4gKwkJcGFyYW1zLnAgPSBscG0tPnRibDg7DQo+IA0KPiANCj4gSSB0aGluayBpdCdz IGJldHRlciB0byBwYXNzIHRoZSBMUE0gcG9pbnRlciBoZXJlIHJhdGhlciB0aGFuIHRibDgsIGZv cg0KPiBleGFtcGxlLCBpbiBjYXNlIHdlIGRlY2lkZSB0byBhZGQgc29tZSBjb3VudGVycyBpbiB0 aGUgZnV0dXJlDQpVc2UgTFBNIHBvaW50ZXIgaXMgbW9yZSBleHRlbmRhYmxlLg0KV2lsbCBjaGFu Z2UgaW4gbmV4dCB2ZXJzaW9uLg0KPiANCj4gDQo+ID4gKwkJcGFyYW1zLnYgPSBjZmctPnY7DQo+ ID4gKwkJbHBtLT5kcSA9IHJ0ZV9yY3VfcXNicl9kcV9jcmVhdGUoJnBhcmFtcyk7DQo+ID4gKwkJ aWYgKGxwbS0+ZHEgPT0gTlVMTCkgew0KPiA+ICsJCQlSVEVfTE9HKEVSUiwgTFBNLA0KPiA+ICsJ CQkJCSJMUE0gUVMgZGVmZXIgcXVldWUgY3JlYXRpb24NCj4gZmFpbGVkXG4iKTsNCj4gPiArCQkJ cmV0dXJuIDE7DQo+ID4gKwkJfQ0KPiA+ICsJCWlmIChkcSkNCj4gPiArCQkJKmRxID0gbHBtLT5k cTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJcnRlX2Vycm5vID0gRUlOVkFMOw0KPiA+ICsJCXJl dHVybiAxOw0KPiA+ICsJfQ0KPiA+ICsJbHBtLT5yY3VfbW9kZSA9IGNmZy0+bW9kZTsNCj4gPiAr CWxwbS0+diA9IGNmZy0+djsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiAgIC8qDQo+ID4gICAgKiBBZGRzIGEgcnVsZSB0byB0aGUgcnVsZSB0YWJsZS4NCj4gPiAg ICAqDQo+ID4gQEAgLTM5NCwxNCArNDY4LDE1IEBAIHJ1bGVfZmluZChzdHJ1Y3QgcnRlX2xwbSAq bHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQsIHVpbnQ4X3QgZGVwdGgpDQo+ID4gICAgKiBGaW5k LCBjbGVhbiBhbmQgYWxsb2NhdGUgYSB0Ymw4Lg0KPiA+ICAgICovDQo+ID4gICBzdGF0aWMgaW50 MzJfdA0KPiA+IC10Ymw4X2FsbG9jKHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSAqdGJsOCwgdWlu dDMyX3QgbnVtYmVyX3RibDhzKQ0KPiA+ICtfdGJsOF9hbGxvYyhzdHJ1Y3QgcnRlX2xwbSAqbHBt KQ0KPiA+ICAgew0KPiA+ICAgCXVpbnQzMl90IGdyb3VwX2lkeDsgLyogdGJsOCBncm91cCBpbmRl eC4gKi8NCj4gPiAgIAlzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgKnRibDhfZW50cnk7DQo+ID4N Cj4gPiAgIAkvKiBTY2FuIHRocm91Z2ggdGJsOCB0byBmaW5kIGEgZnJlZSAoaS5lLiBJTlZBTElE KSB0Ymw4IGdyb3VwLiAqLw0KPiA+IC0JZm9yIChncm91cF9pZHggPSAwOyBncm91cF9pZHggPCBu dW1iZXJfdGJsOHM7IGdyb3VwX2lkeCsrKSB7DQo+ID4gLQkJdGJsOF9lbnRyeSA9ICZ0Ymw4W2dy b3VwX2lkeCAqDQo+IFJURV9MUE1fVEJMOF9HUk9VUF9OVU1fRU5UUklFU107DQo+ID4gKwlmb3Ig KGdyb3VwX2lkeCA9IDA7IGdyb3VwX2lkeCA8IGxwbS0+bnVtYmVyX3RibDhzOyBncm91cF9pZHgr Kykgew0KPiA+ICsJCXRibDhfZW50cnkgPSAmbHBtLT50Ymw4W2dyb3VwX2lkeCAqDQo+ID4gKw0K PiAJUlRFX0xQTV9UQkw4X0dST1VQX05VTV9FTlRSSUVTXTsNCj4gPiAgIAkJLyogSWYgYSBmcmVl IHRibDggZ3JvdXAgaXMgZm91bmQgY2xlYW4gaXQgYW5kIHNldCBhcyBWQUxJRC4gKi8NCj4gPiAg IAkJaWYgKCF0Ymw4X2VudHJ5LT52YWxpZF9ncm91cCkgew0KPiA+ICAgCQkJc3RydWN0IHJ0ZV9s cG1fdGJsX2VudHJ5IG5ld190Ymw4X2VudHJ5ID0gew0KPiA+IEBAIC00MjcsMTQgKzUwMiw0MCBA QCB0Ymw4X2FsbG9jKHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSAqdGJsOCwNCj4gdWludDMyX3Qg bnVtYmVyX3RibDhzKQ0KPiA+ICAgCXJldHVybiAtRU5PU1BDOw0KPiA+ICAgfQ0KPiA+DQo+ID4g K3N0YXRpYyBpbnQzMl90DQo+ID4gK3RibDhfYWxsb2Moc3RydWN0IHJ0ZV9scG0gKmxwbSkNCj4g PiArew0KPiA+ICsJaW50MzJfdCBncm91cF9pZHg7IC8qIHRibDggZ3JvdXAgaW5kZXguICovDQo+ ID4gKw0KPiA+ICsJZ3JvdXBfaWR4ID0gX3RibDhfYWxsb2MobHBtKTsNCj4gPiArCWlmICgoZ3Jv dXBfaWR4IDwgMCkgJiYgKGxwbS0+ZHEgIT0gTlVMTCkpIHsNCj4gDQo+IA0KPiBJIHRoaW5rIChn cm91cF9pZHggPT0gLUVOT1NQQykgd2lsbCBiZSBzYWZlcg0KV2lsbCBjaGFuZ2UgaXQgaW4gbmV4 dCB2ZXJzaW9uLg0KPiANCj4gDQo+ID4gKwkJLyogSWYgdGhlcmUgYXJlIG5vIHRibDggZ3JvdXBz IHRyeSB0byByZWNsYWltIG9uZS4gKi8NCj4gPiArCQlpZiAocnRlX3JjdV9xc2JyX2RxX3JlY2xh aW0obHBtLT5kcSwgMSwgTlVMTCwgTlVMTCwgTlVMTCkNCj4gPT0gMCkNCj4gPiArCQkJZ3JvdXBf aWR4ID0gX3RibDhfYWxsb2MobHBtKTsNCj4gDQo+IA0KPiBJJ20gbm90IHJlYWxseSBoYXBweSB3 aXRoIHRoaXMgYXBwcm9hY2guIF90Ymw4X2FsbG9jKCkgcHJvZHVjZXMgbGluZWFyDQo+IHNjYW4g dGhyb3VnaCB0aGUgbWVtb3J5IHRvIGZpbmQgYSBmcmVlIGdyb3VwX2lkeCBhbmQgaXQgaXMgdGhl IHNsb3dlc3QNCj4gcGFydCBvZiBydGVfbHBtX2FkZCgpLg0KPiBIZXJlIGFmdGVyIHJlY2xhbWF0 aW9uIG9mIHNvbWUgZ3JvdXAgaW5kZXggd2UgbmVlZCB0byByZXNjYW4gYSBtZW1vcnkNCj4gYWdh aW4gdG8gZmluZCBpdC4gSXQgd291bGQgYmUgZ3JlYXQgaWYgdGhlcmUgd2lsbCBiZSBzb21lIHdh eSB0byByZXR1cm4NCj4gcmVjbGFpbWVkIGVsZW1lbnRzLiBPciBqdXN0IHRvIGRlcXVldWUgZWxl bWVudHMgZnJvbSBkcSBhbmQgcmVjbGFpbSB0aGVtDQo+IG1hbnVhbGx5Lg0KSSB0aGluayB0aGVy ZSBpcyBsaXR0bGUgY2hhbmNlIGEgcmVzY2FuIHdpbGwgYmUgbmVlZGVkLiBJZiBSQ1UgUVNCUiBk ZWZlciBxdWV1ZSB0cmlnZ2VyX3JlY2xhaW1fbGltaXQNCmlzIGNvbmZpZ3VyZWQgd2l0aCByZWFz b25hYmxlIHZhbHVlLCB0Ymw4IGdyb3VwcyB3aWxsIGJlIHJlY2xhaW1lZCByZWd1bGFybHkuIFNv IGRlZmVyIHF1ZXVlIHdvbid0IGdldCB0b28gbG9uZy4NCg0KUmV0dXJuIHJlY2xhaW1lZCBlbGVt ZW50cyBtYWtlcyBBUEkgY29tcGxleC4gTm90IHN1cmUgaWYgaXQgaXMgdXNlZnVsIGZvciBvdGhl ciB1c2UgY2FzZXMuDQpASG9ubmFwcGEgTmFnYXJhaGFsbGksIGFueSBpZGVhPw0KPiANCj4gDQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIGdyb3VwX2lkeDsNCj4gPiArfQ0KPiA+ICsNCj4g PiAgIHN0YXRpYyB2b2lkDQo+ID4gLXRibDhfZnJlZShzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkg KnRibDgsIHVpbnQzMl90IHRibDhfZ3JvdXBfc3RhcnQpDQo+ID4gK3RibDhfZnJlZShzdHJ1Y3Qg cnRlX2xwbSAqbHBtLCB1aW50MzJfdCB0Ymw4X2dyb3VwX3N0YXJ0KQ0KPiA+ICAgew0KPiA+IC0J LyogU2V0IHRibDggZ3JvdXAgaW52YWxpZCovDQo+ID4gICAJc3RydWN0IHJ0ZV9scG1fdGJsX2Vu dHJ5IHplcm9fdGJsOF9lbnRyeSA9IHswfTsNCj4gPg0KPiA+IC0JX19hdG9taWNfc3RvcmUoJnRi bDhbdGJsOF9ncm91cF9zdGFydF0sICZ6ZXJvX3RibDhfZW50cnksDQo+ID4gLQkJCV9fQVRPTUlD X1JFTEFYRUQpOw0KPiA+ICsJaWYgKCFscG0tPnYpIHsNCj4gPiArCQkvKiBTZXQgdGJsOCBncm91 cCBpbnZhbGlkKi8NCj4gPiArCQlfX2F0b21pY19zdG9yZSgmbHBtLT50Ymw4W3RibDhfZ3JvdXBf c3RhcnRdLA0KPiAmemVyb190Ymw4X2VudHJ5LA0KPiA+ICsJCQkJX19BVE9NSUNfUkVMQVhFRCk7 DQo+ID4gKwl9IGVsc2UgaWYgKGxwbS0+cmN1X21vZGUgPT0gUlRFX0xQTV9RU0JSX01PREVfU1lO Qykgew0KPiA+ICsJCS8qIFdhaXQgZm9yIHF1aWVzY2VudCBzdGF0ZSBjaGFuZ2UuICovDQo+ID4g KwkJcnRlX3JjdV9xc2JyX3N5bmNocm9uaXplKGxwbS0+diwNCj4gUlRFX1FTQlJfVEhSSURfSU5W QUxJRCk7DQo+ID4gKwkJLyogU2V0IHRibDggZ3JvdXAgaW52YWxpZCovDQo+ID4gKwkJX19hdG9t aWNfc3RvcmUoJmxwbS0+dGJsOFt0Ymw4X2dyb3VwX3N0YXJ0XSwNCj4gJnplcm9fdGJsOF9lbnRy eSwNCj4gPiArCQkJCV9fQVRPTUlDX1JFTEFYRUQpOw0KPiA+ICsJfSBlbHNlIGlmIChscG0tPnJj dV9tb2RlID09IFJURV9MUE1fUVNCUl9NT0RFX0RRKSB7DQo+ID4gKwkJLyogUHVzaCBpbnRvIFFT QlIgZGVmZXIgcXVldWUuICovDQo+ID4gKwkJcnRlX3JjdV9xc2JyX2RxX2VucXVldWUobHBtLT5k cSwgKHZvaWQNCj4gKikmdGJsOF9ncm91cF9zdGFydCk7DQo+ID4gKwl9DQo+ID4gICB9DQo+ID4N Cj4gPiAgIHN0YXRpYyBfX3J0ZV9ub2lubGluZSBpbnQzMl90DQo+ID4gQEAgLTUyMyw3ICs2MjQs NyBAQCBhZGRfZGVwdGhfYmlnKHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90DQo+IGlwX21h c2tlZCwgdWludDhfdCBkZXB0aCwNCj4gPg0KPiA+ICAgCWlmICghbHBtLT50YmwyNFt0YmwyNF9p bmRleF0udmFsaWQpIHsNCj4gPiAgIAkJLyogU2VhcmNoIGZvciBhIGZyZWUgdGJsOCBncm91cC4g Ki8NCj4gPiAtCQl0Ymw4X2dyb3VwX2luZGV4ID0gdGJsOF9hbGxvYyhscG0tPnRibDgsIGxwbS0N Cj4gPm51bWJlcl90Ymw4cyk7DQo+ID4gKwkJdGJsOF9ncm91cF9pbmRleCA9IHRibDhfYWxsb2Mo bHBtKTsNCj4gPg0KPiA+ICAgCQkvKiBDaGVjayB0Ymw4IGFsbG9jYXRpb24gd2FzIHN1Y2Nlc3Nm dWwuICovDQo+ID4gICAJCWlmICh0Ymw4X2dyb3VwX2luZGV4IDwgMCkgew0KPiA+IEBAIC01Njks NyArNjcwLDcgQEAgYWRkX2RlcHRoX2JpZyhzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdA0K PiBpcF9tYXNrZWQsIHVpbnQ4X3QgZGVwdGgsDQo+ID4gICAJfSAvKiBJZiB2YWxpZCBlbnRyeSBi dXQgbm90IGV4dGVuZGVkIGNhbGN1bGF0ZSB0aGUgaW5kZXggaW50byBUYWJsZTguICovDQo+ID4g ICAJZWxzZSBpZiAobHBtLT50YmwyNFt0YmwyNF9pbmRleF0udmFsaWRfZ3JvdXAgPT0gMCkgew0K PiA+ICAgCQkvKiBTZWFyY2ggZm9yIGZyZWUgdGJsOCBncm91cC4gKi8NCj4gPiAtCQl0Ymw4X2dy b3VwX2luZGV4ID0gdGJsOF9hbGxvYyhscG0tPnRibDgsIGxwbS0NCj4gPm51bWJlcl90Ymw4cyk7 DQo+ID4gKwkJdGJsOF9ncm91cF9pbmRleCA9IHRibDhfYWxsb2MobHBtKTsNCj4gPg0KPiA+ICAg CQlpZiAodGJsOF9ncm91cF9pbmRleCA8IDApIHsNCj4gPiAgIAkJCXJldHVybiB0Ymw4X2dyb3Vw X2luZGV4Ow0KPiA+IEBAIC05NzcsNyArMTA3OCw3IEBAIGRlbGV0ZV9kZXB0aF9iaWcoc3RydWN0 IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QNCj4gaXBfbWFza2VkLA0KPiA+ICAgCQkgKi8NCj4gPiAg IAkJbHBtLT50YmwyNFt0YmwyNF9pbmRleF0udmFsaWQgPSAwOw0KPiA+ICAgCQlfX2F0b21pY190 aHJlYWRfZmVuY2UoX19BVE9NSUNfUkVMRUFTRSk7DQo+ID4gLQkJdGJsOF9mcmVlKGxwbS0+dGJs OCwgdGJsOF9ncm91cF9zdGFydCk7DQo+ID4gKwkJdGJsOF9mcmVlKGxwbSwgdGJsOF9ncm91cF9z dGFydCk7DQo+ID4gICAJfSBlbHNlIGlmICh0Ymw4X3JlY3ljbGVfaW5kZXggPiAtMSkgew0KPiA+ ICAgCQkvKiBVcGRhdGUgdGJsMjQgZW50cnkuICovDQo+ID4gICAJCXN0cnVjdCBydGVfbHBtX3Ri bF9lbnRyeSBuZXdfdGJsMjRfZW50cnkgPSB7DQo+ID4gQEAgLTk5Myw3ICsxMDk0LDcgQEAgZGVs ZXRlX2RlcHRoX2JpZyhzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQs DQo+ID4gICAJCV9fYXRvbWljX3N0b3JlKCZscG0tPnRibDI0W3RibDI0X2luZGV4XSwNCj4gJm5l d190YmwyNF9lbnRyeSwNCj4gPiAgIAkJCQlfX0FUT01JQ19SRUxBWEVEKTsNCj4gPiAgIAkJX19h dG9taWNfdGhyZWFkX2ZlbmNlKF9fQVRPTUlDX1JFTEVBU0UpOw0KPiA+IC0JCXRibDhfZnJlZShs cG0tPnRibDgsIHRibDhfZ3JvdXBfc3RhcnQpOw0KPiA+ICsJCXRibDhfZnJlZShscG0sIHRibDhf Z3JvdXBfc3RhcnQpOw0KPiA+ICAgCX0NCj4gPiAgICN1bmRlZiBncm91cF9pZHgNCj4gPiAgIAly ZXR1cm4gMDsNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oIGIvbGli L2xpYnJ0ZV9scG0vcnRlX2xwbS5oDQo+ID4gaW5kZXggYjlkNDlhYzg3Li44YzA1NDUwOWEgMTAw NjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oDQo+ID4gKysrIGIvbGliL2xp YnJ0ZV9scG0vcnRlX2xwbS5oDQo+ID4gQEAgLTEsNSArMSw2IEBADQo+ID4gICAvKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gICAgKiBDb3B5cmlnaHQoYykgMjAx MC0yMDE0IEludGVsIENvcnBvcmF0aW9uDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDIwIEFybSBM aW1pdGVkDQo+ID4gICAgKi8NCj4gPg0KPiA+ICAgI2lmbmRlZiBfUlRFX0xQTV9IXw0KPiA+IEBA IC0yMCw2ICsyMSw3IEBADQo+ID4gICAjaW5jbHVkZSA8cnRlX21lbW9yeS5oPg0KPiA+ICAgI2lu Y2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4gPiAgICNpbmNsdWRlIDxydGVfdmVjdC5oPg0KPiA+ICsj aW5jbHVkZSA8cnRlX3JjdV9xc2JyLmg+DQo+ID4NCj4gPiAgICNpZmRlZiBfX2NwbHVzcGx1cw0K PiA+ICAgZXh0ZXJuICJDIiB7DQo+ID4gQEAgLTYyLDYgKzY0LDE3IEBAIGV4dGVybiAiQyIgew0K PiA+ICAgLyoqIEJpdG1hc2sgdXNlZCB0byBpbmRpY2F0ZSBzdWNjZXNzZnVsIGxvb2t1cCAqLw0K PiA+ICAgI2RlZmluZSBSVEVfTFBNX0xPT0tVUF9TVUNDRVNTICAgICAgICAgIDB4MDEwMDAwMDAN Cj4gPg0KPiA+ICsvKiogQGludGVybmFsIERlZmF1bHQgdGhyZXNob2xkIHRvIHRyaWdnZXIgUkNV IGRlZmVyIHF1ZXVlIHJlY2xhaW1hdGlvbi4NCj4gKi8NCj4gPiArI2RlZmluZSBSVEVfTFBNX1JD VV9EUV9SRUNMQUlNX1RIRAkzMg0KPiA+ICsNCj4gPiArLyoqIEBpbnRlcm5hbCBEZWZhdWx0IFJD VSBkZWZlciBxdWV1ZSBlbnRyaWVzIHRvIHJlY2xhaW0gaW4gb25lIGdvLiAqLw0KPiA+ICsjZGVm aW5lIFJURV9MUE1fUkNVX0RRX1JFQ0xBSU1fTUFYCTE2DQo+ID4gKw0KPiA+ICsvKiBDcmVhdGUg ZGVmZXIgcXVldWUgZm9yIHJlY2xhaW0uICovDQo+ID4gKyNkZWZpbmUgUlRFX0xQTV9RU0JSX01P REVfRFEJCTANCj4gPiArLyogVXNlIGJsb2NraW5nIG1vZGUgcmVjbGFpbS4gTm8gZGVmZXIgcXVl dWUgY3JlYXRlZC4gKi8NCj4gPiArI2RlZmluZSBSVEVfTFBNX1FTQlJfTU9ERV9TWU5DCQkweDAx DQo+IA0KPiANCj4gdXNpbmcgZW51bXMgaW5zdGVhZCBvZiBkZWZpbmVzPw0KV2lsbCBjb252ZXJ0 IHRvIGVudW1zIGluIG5leHQgdmVyc2lvbi4NCj4gDQo+IA0KPiA+ICsNCj4gPiAgICNpZiBSVEVf QllURV9PUkRFUiA9PSBSVEVfTElUVExFX0VORElBTg0KPiA+ICAgLyoqIEBpbnRlcm5hbCBUYmwy NCBlbnRyeSBzdHJ1Y3R1cmUuICovDQo+ID4gICBfX2V4dGVuc2lvbl9fDQo+ID4gQEAgLTEzMCw2 ICsxNDMsMjggQEAgc3RydWN0IHJ0ZV9scG0gew0KPiA+ICAgCQkJX19ydGVfY2FjaGVfYWxpZ25l ZDsgLyoqPCBMUE0gdGJsMjQgdGFibGUuICovDQo+ID4gICAJc3RydWN0IHJ0ZV9scG1fdGJsX2Vu dHJ5ICp0Ymw4OyAvKio8IExQTSB0Ymw4IHRhYmxlLiAqLw0KPiA+ICAgCXN0cnVjdCBydGVfbHBt X3J1bGUgKnJ1bGVzX3RibDsgLyoqPCBMUE0gcnVsZXMuICovDQo+ID4gKw0KPiA+ICsJLyogUkNV IGNvbmZpZy4gKi8NCj4gPiArCXN0cnVjdCBydGVfcmN1X3FzYnIgKnY7CQkvKiBSQ1UgUVNCUiB2 YXJpYWJsZS4gKi8NCj4gPiArCXVpbnQzMl90IHJjdV9tb2RlOwkJLyogQmxvY2tpbmcsIGRlZmVy IHF1ZXVlLiAqLw0KPiA+ICsJc3RydWN0IHJ0ZV9yY3VfcXNicl9kcSAqZHE7CS8qIFJDVSBRU0JS IGRlZmVyIHF1ZXVlLiAqLw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqIExQTSBSQ1UgUVNCUiBj b25maWd1cmF0aW9uIHN0cnVjdHVyZS4gKi8NCj4gPiArc3RydWN0IHJ0ZV9scG1fcmN1X2NvbmZp ZyB7DQo+ID4gKwlzdHJ1Y3QgcnRlX3JjdV9xc2JyICp2OwkvKiBSQ1UgUVNCUiB2YXJpYWJsZS4g Ki8NCj4gPiArCS8qIE1vZGUgb2YgUkNVIFFTQlIuIFJURV9MUE1fUVNCUl9NT0RFX3h4eA0KPiA+ ICsJICogJzAnIGZvciBkZWZhdWx0OiBjcmVhdGUgZGVmZXIgcXVldWUgZm9yIHJlY2xhaW0uDQo+ ID4gKwkgKi8NCj4gPiArCXVpbnQzMl90IG1vZGU7DQo+ID4gKwkvKiBSQ1UgZGVmZXIgcXVldWUg c2l6ZS4gZGVmYXVsdDogbHBtLT5udW1iZXJfdGJsOHMuICovDQo+ID4gKwl1aW50MzJfdCBkcV9z aXplOw0KPiA+ICsJdWludDMyX3QgcmVjbGFpbV90aGQ7CS8qIFRocmVzaG9sZCB0byB0cmlnZ2Vy IGF1dG8gcmVjbGFpbS4NCj4gPiArCQkJCSAqIGRlZmF1bHQ6DQo+IFJURV9MUE1fUkNVX0RRX1JF Q0xBSU1fVFJIRC4NCj4gPiArCQkJCSAqLw0KPiA+ICsJdWludDMyX3QgcmVjbGFpbV9tYXg7CS8q IE1heCBlbnRyaWVzIHRvIHJlY2xhaW0gaW4gb25lIGdvLg0KPiA+ICsJCQkJICogZGVmYXVsdDoN Cj4gUlRFX0xQTV9SQ1VfRFFfUkVDTEFJTV9NQVguDQo+ID4gKwkJCQkgKi8NCj4gPiAgIH07DQo+ ID4NCj4gPiAgIC8qKg0KPiA+IEBAIC0xNzksNiArMjE0LDMwIEBAIHJ0ZV9scG1fZmluZF9leGlz dGluZyhjb25zdCBjaGFyICpuYW1lKTsNCj4gPiAgIHZvaWQNCj4gPiAgIHJ0ZV9scG1fZnJlZShz dHJ1Y3QgcnRlX2xwbSAqbHBtKTsNCj4gPg0KPiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4g PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Ig bm90aWNlDQo+ID4gKyAqDQo+ID4gKyAqIEFzc29jaWF0ZSBSQ1UgUVNCUiB2YXJpYWJsZSB3aXRo IGFuIExQTSBvYmplY3QuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBscG0NCj4gPiArICogICB0 aGUgbHBtIG9iamVjdCB0byBhZGQgUkNVIFFTQlINCj4gPiArICogQHBhcmFtIGNmZw0KPiA+ICsg KiAgIFJDVSBRU0JSIGNvbmZpZ3VyYXRpb24NCj4gPiArICogQHBhcmFtIGRxDQo+ID4gKyAqICAg aGFuZGxlciBvZiBjcmVhdGVkIFJDVSBRU0JSIGRlZmVyIHF1ZXVlDQo+ID4gKyAqIEByZXR1cm4N Cj4gPiArICogICBPbiBzdWNjZXNzIC0gMA0KPiA+ICsgKiAgIE9uIGVycm9yIC0gMSB3aXRoIGVy cm9yIGNvZGUgc2V0IGluIHJ0ZV9lcnJuby4NCj4gPiArICogICBQb3NzaWJsZSBydGVfZXJybm8g Y29kZXMgYXJlOg0KPiA+ICsgKiAgIC0gRUlOVkFMIC0gaW52YWxpZCBwb2ludGVyDQo+ID4gKyAq ICAgLSBFRVhJU1QgLSBhbHJlYWR5IGFkZGVkIFFTQlINCj4gPiArICogICAtIEVOT01FTSAtIG1l bW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUNCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRh bA0KPiA+ICtpbnQgcnRlX2xwbV9yY3VfcXNicl9hZGQoc3RydWN0IHJ0ZV9scG0gKmxwbSwgc3Ry dWN0DQo+IHJ0ZV9scG1fcmN1X2NvbmZpZyAqY2ZnLA0KPiA+ICsJc3RydWN0IHJ0ZV9yY3VfcXNi cl9kcSAqKmRxKTsNCj4gPiArDQo+ID4gICAvKioNCj4gPiAgICAqIEFkZCBhIHJ1bGUgdG8gdGhl IExQTSB0YWJsZS4NCj4gPiAgICAqDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfbHBtL3J0 ZV9scG1fdmVyc2lvbi5tYXANCj4gYi9saWIvbGlicnRlX2xwbS9ydGVfbHBtX3ZlcnNpb24ubWFw DQo+ID4gaW5kZXggNTAwZjU4YjgwLi5iZmNjZDdlYWMgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xp YnJ0ZV9scG0vcnRlX2xwbV92ZXJzaW9uLm1hcA0KPiA+ICsrKyBiL2xpYi9saWJydGVfbHBtL3J0 ZV9scG1fdmVyc2lvbi5tYXANCj4gPiBAQCAtMjEsMyArMjEsOSBAQCBEUERLXzIwLjAgew0KPiA+ DQo+ID4gICAJbG9jYWw6ICo7DQo+ID4gICB9Ow0KPiA+ICsNCj4gPiArRVhQRVJJTUVOVEFMIHsN Cj4gPiArCWdsb2JhbDoNCj4gPiArDQo+ID4gKwlydGVfbHBtX3JjdV9xc2JyX2FkZDsNCj4gPiAr fTsNCj4gDQo+IC0tDQo+IFJlZ2FyZHMsDQo+IFZsYWRpbWlyDQoNCg==