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 44D07A0597; Tue, 21 Apr 2020 15:28:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1B6F51D597; Tue, 21 Apr 2020 15:28:34 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id E54AE1D51D for ; Tue, 21 Apr 2020 15:28:32 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03LDPBms032218; Tue, 21 Apr 2020 06:28:32 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=pfpt0818; bh=0hNR8/Yx6SVttWUtp+kiIS9RA5B49Zf4EdkMatUMBi4=; b=OMcEr1+EGTNxIShsnkDAj2CW64ruV1oRqBxcIIulRtzi1dF86CTfK+degkZNqmJ0jfZ0 XlkiEnX2LozhObTx0xux17yKbcKynyHF3Ndm1XDnb9CztoqWigmRtz5pk1IekxehrAGm WF0vhGvqABO+vvHsWXjnaiizo1nN6WkN9TCZafEpACw9F5xUccOYr2CS+VekUr69T3Tm 5eIOFVhJYvIpC0pBzWARvwUyA+1tRJLOeF2NTaJ8FoOvf1Cl2CVALYFDSMq6Pbfrxiqj tSOP70GNviH+SxLr8RbgsiPFaF03M+vHczj5t8wJD4qE+9MCoTJ6sc3uetLRLIhIAfvT PA== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0b-0016f401.pphosted.com with ESMTP id 30g12nust4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 21 Apr 2020 06:28:32 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 21 Apr 2020 06:28:29 -0700 Received: from SC-EXCH02.marvell.com (10.93.176.82) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 21 Apr 2020 06:28:28 -0700 Received: from NAM02-CY1-obe.outbound.protection.outlook.com (104.47.37.56) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Tue, 21 Apr 2020 06:28:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dCzd1UwHwMhiZIt9MNaYVK7QWldywUlxoj2BDUcAhhjLxU+wlxUk+0pG01wxk/Kj2zd3cuT7SXZc3FoAq0lq5+YYHGhpahrpFhXqPi9hr7bWpnnL00BVMF9RRCGxZ64bweJo2KsMqtIrbG1YsNO7XQR0VKzUYw1mxU+Gyhs+fDe/J3q6GpEN7ula45PqnTMEwPeN7RydX8y9no51sjLW+/CqoADnxaXQsPSlbRUPZGGeinZ6vPjsXodD3rQxv5x8EngnmP1Ywcd1K1KrXvWSiF+qn3OQeJRFOQEUfioz9aXAfh0xXidV6H8drbVPWoKc35yzdSPaEaLQE0pFSXhzWw== 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=0hNR8/Yx6SVttWUtp+kiIS9RA5B49Zf4EdkMatUMBi4=; b=CPKXKaWZoK0mrjAL73cRIomVP0IRHKAYA2agHe7qJ+lYVCfml2zm0RE76uvzg1WsJg9uC97ks9bLc1M+z3s+lL4or0ITn1HXpTru/ah6F2w75HvHKD96fJlWRa52GbpsjwOfAIPuuI4g3aT2jZpGwwFx+7jkwTobcCS89tRwXGEVyOrz4ymo5WUXAtPO4fLZ8zZtCCz6Z6e8cXiJ/kykNKrxCmb+eSnBb15FU+DIvSzIMUvgdQ+UKPZPBJrtgetm+Y8w/VSBhpMYLzs9GMFnqg1WqNIRIWkzXwt5cQfvS4vxxLDWFGxrnUJdNcSwfv3um5jXrSdftAYUCOkLMWZHXA== 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=0hNR8/Yx6SVttWUtp+kiIS9RA5B49Zf4EdkMatUMBi4=; b=Yc+CTCeMF1slgEMWuQifWuG3nICXYnykuaJAxGfpHr2dM0Cr3CTvBaaK3e2scdtGVOo8nVHaCPe+Cmrb71yB9LkC/xFrcj2q9UgpMtPTHtE6Dkx4Iw/BGxJDm5t9iezZacD5Hu85upSL4DRjpYAs+BHr04PkDfJKqaqbF01snAY= Received: from BYAPR18MB2712.namprd18.prod.outlook.com (2603:10b6:a03:103::10) by BYAPR18MB2630.namprd18.prod.outlook.com (2603:10b6:a03:134::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Tue, 21 Apr 2020 13:28:27 +0000 Received: from BYAPR18MB2712.namprd18.prod.outlook.com ([fe80::70bd:288b:c391:39ab]) by BYAPR18MB2712.namprd18.prod.outlook.com ([fe80::70bd:288b:c391:39ab%7]) with mapi id 15.20.2921.030; Tue, 21 Apr 2020 13:28:26 +0000 From: "Lukas Bartosik [C]" To: Vladimir Medvedkin CC: "konstantin.ananyev@intel.com" , "akhil.goyal@nxp.com" , Anoob Joseph , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v3] ipsec: use hash lookup with hash sigs in sad lookup Thread-Index: AQHWF+C99E2sO3SzvEq7RiQ0HAynZw== Date: Tue, 21 Apr 2020 13:28:26 +0000 Message-ID: <347a1212-f3cb-4aa9-e551-c7779b7ac17c@marvell.com> References: <2811605d29b62740ba467527271c7a30fe75cf78.1585240684.git.vladimir.medvedkin@intel.com> <6590f0170bc4f55d9707ef15ee398e388802b012.1587406845.git.vladimir.medvedkin@intel.com> In-Reply-To: <6590f0170bc4f55d9707ef15ee398e388802b012.1587406845.git.vladimir.medvedkin@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [199.233.58.37] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4c6d7229-da55-4b28-6fc7-08d7e5f7dfc2 x-ms-traffictypediagnostic: BYAPR18MB2630: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:37; x-forefront-prvs: 038002787A x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR18MB2712.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(10009020)(4636009)(366004)(2906002)(6506007)(53546011)(5660300002)(2616005)(31686004)(6916009)(26005)(36756003)(86362001)(31696002)(64756008)(4326008)(66946007)(66476007)(66556008)(66446008)(30864003)(186003)(54906003)(6486002)(76116006)(8676002)(81156014)(6512007)(71200400001)(498600001)(8936002)(966005); DIR:OUT; SFP:1101; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Ga7K590YzoEEk5VhmeajZlOxPeeUF1R6U0/YxLjZcp0QLXqyD8KYiip35QLsMCuzVbatmJiuCAMmRWSulFnX7TTDghLTNsJ3mme0Mjzxop59tiPVYRf5Hc+cpd7RrQrzEsUl9rZTe0RYRUp6VwXWZr1ajmXh2P4UeS084NEBMnaSzCFTkdmd7TbpyBCdBudTEX7Lh1WEsjIXFxpDTtxzgDJ97N70uLQ6qIwHlS0lrdAtxEovZEk0Bf7y4dRjHxMjSK4C7q/za9OubVP13sxuKtoP3cdBVwev4ggBMpOAyPcU5P+nuFy+2DQVs8FAnl7PmCBdP186S0/M5O3Y+2QANp2CH1AT2HB3VQFRKKBVuNF0OUXjHzWmxf9WU+kHnWpFOLwCTQxqz0lHHI7BIwKdWpY7NvhxbTA8dWiVB1tJ/1FFoQLrHNqkbj0jv/qi2vEFtxtD15o7GwEO1a4O4OuYFedwiCXRbAjGSi7pb24KNHy5H82pTpOZTZIjmwjPIeIrZDCbF4Y1+t5M+cjg7EX4QQ== x-ms-exchange-antispam-messagedata: ubDcHUCAX/bqQibkmR83oHKSTKRreC+h7nGHnR121PzgyWsOu7Fw37raEmTGRAJBrY2Bh5Lju2POBh8UQuMI/9/xaTNYnXL8r179mTbhoxCB9FggIxZIqLASzCwIqDNsYBjcgnc7FW8D0KKXxph8HA== Content-Type: text/plain; charset="utf-8" Content-ID: <5017F1C6C411E045BD27B833EBDE527A@namprd18.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 4c6d7229-da55-4b28-6fc7-08d7e5f7dfc2 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2020 13:28:26.7890 (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: y6qJtdvwhbgr0tEd3xtopYoOsasFh7l03cL7xw6JkxQUxSCrN1j6dPlsdMV1tz9IK4k6tsOLN0mzyvnThpr6zA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2630 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.676 definitions=2020-04-21_05:2020-04-20, 2020-04-21 signatures=0 Subject: Re: [dpdk-dev] [PATCH v3] ipsec: use hash lookup with hash sigs in sad lookup 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" SGkgVmxhZGltaXIsDQoNCkhvdyBkb2VzIHRoaXMgcGF0Y2ggcmVsYXRlIHRvIGh0dHA6Ly9wYXRj aGVzLmRwZGsub3JnL3BhdGNoLzY2NzE1Ly4NCkJvdGggcGF0Y2hlcyByZXBsYWNlIGxvb2t1cCBm dW5jdGlvbiBydGVfaGFzaF9sb29rdXBfYnVsa19kYXRhIHVzZWQgaW4gX19pcHNlY19zYWRfbG9v a3VwIHdpdGggDQpydGVfaGFzaF9sb29rdXBfd2l0aF9oYXNoX2J1bGtfZGF0YSBvciBydGVfZHdr X2hhc2hfbG9va3VwLg0KDQpJcyB0aGUgcGxhbiBmb3IgYm90aCBzb2x1dGlvbnMgdG8gY29leGlz dCBvciB3aWxsIG9ubHkgb25lIGJlIHNlbGVjdGVkID8NCg0KVGhhbmtzLA0KTHVrYXN6DQoNCk9u IDIwLjA0LjIwMjAgMjA6MjcsIFZsYWRpbWlyIE1lZHZlZGtpbiB3cm90ZToNCj4gQ2hhbmdlIGhh c2ggZnVuY3Rpb24gZnJvbSBqaGFzaCB0byBjcmMuDQo+IFByZWNhbGN1bGF0ZSBoYXNoIHNpZ25h dHVyZXMgZm9yIGEgYnVsayBvZiBrZXlzIGFuZCB0aGVuDQo+IHVzZSBydGVfaGFzaF9sb29rdXBf d2l0aF9oYXNoX2J1bGtfZGF0YSgpIHRvIHNwZWVkIHVwIHNhZCBsb29rdXANCj4gQWxzbyB1c2Ug cnRlX2hhc2hfYWRkX2tleV93aXRoX2hhc2ggYW5kIF9kZWxfa2V5X3dpdGhfaGFzaCB3aXRoDQo+ IHByZWNhbGN1bGF0ZWQgaGFzaCBzaWduYXR1cmUgZm9yIGEga2V5IGluIHJ0ZV9pcHNlY19zYWRf YWRkIGFuZA0KPiBydGVfaXBzZWNfc2FkX2RlbA0KPiANCj4gU2lnbmVkLW9mZi1ieTogVmxhZGlt aXIgTWVkdmVka2luIDx2bGFkaW1pci5tZWR2ZWRraW5AaW50ZWwuY29tPg0KPiBBY2tlZC1ieTog S29uc3RhbnRpbiBBbmFueWV2IDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPg0KPiAtLS0N Cj4gVGhpcyBwYXRjaCBkZXBlbmRzIG9uIGh0dHBzOi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNv bS92Mi91cmw/dT1odHRwcy0zQV9fcGF0Y2hlcy5kcGRrLm9yZ19wYXRjaF82ODcwMF8mZD1Ed0lC QWcmYz1uS2pXZWMyYjZSMG1PeVBhejd4dGZRJnI9U2NoUkhoRTdHTENqRVk0aTJhMWJ5akNfRnBX Z1JMdHE0LWtMdktwM184NCZtPU5JZ0F0ZHE4aUdScnM4aGFLWXd3YTBleWNpTzBUTUZXblVZaXNN b0dENW8mcz1JcG5KMjcwUnNhRThMSVUwNjY0OWhadmt5S2VBYVR3YW1WYklNWDlBeVVZJmU9IA0K PiANCj4gIGxpYi9saWJydGVfaXBzZWMvaXBzZWNfc2FkLmMgfCAxMDYgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDc0IGluc2Vy dGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVf aXBzZWMvaXBzZWNfc2FkLmMgYi9saWIvbGlicnRlX2lwc2VjL2lwc2VjX3NhZC5jDQo+IGluZGV4 IDJjOTk0ZWQuLjZjOTUyNDAgMTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfaXBzZWMvaXBzZWNf c2FkLmMNCj4gKysrIGIvbGliL2xpYnJ0ZV9pcHNlYy9pcHNlY19zYWQuYw0KPiBAQCAtMiwxMCAr MiwxMiBAQA0KPiAgICogQ29weXJpZ2h0KGMpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24NCj4gICAq Lw0KPiAgDQo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ICsNCj4gICNpbmNsdWRlIDxydGVfZWFs X21lbWNvbmZpZy5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9lcnJuby5oPg0KPiAgI2luY2x1ZGUgPHJ0 ZV9oYXNoLmg+DQo+IC0jaW5jbHVkZSA8cnRlX2poYXNoLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2hh c2hfY3JjLmg+DQo+ICAjaW5jbHVkZSA8cnRlX21hbGxvYy5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9y YW5kb20uaD4NCj4gICNpbmNsdWRlIDxydGVfcndsb2NrLmg+DQo+IEBAIC0yNCw3ICsyNiw3IEBA DQo+ICAvKiAiU0FEXzxuYW1lPiIgKi8NCj4gICNkZWZpbmUgU0FEX0ZPUk1BVAkJU0FEX1BSRUZJ WCAiJXMiDQo+ICANCj4gLSNkZWZpbmUgREVGQVVMVF9IQVNIX0ZVTkMJcnRlX2poYXNoDQo+ICsj ZGVmaW5lIERFRkFVTFRfSEFTSF9GVU5DCXJ0ZV9oYXNoX2NyYw0KPiAgI2RlZmluZSBNSU5fSEFT SF9FTlRSSUVTCThVIC8qIEZyb20gcnRlX2N1Y2tvb19oYXNoLmggKi8NCj4gIA0KPiAgc3RydWN0 IGhhc2hfY250IHsNCj4gQEAgLTM1LDYgKzM3LDggQEAgc3RydWN0IGhhc2hfY250IHsNCj4gIHN0 cnVjdCBydGVfaXBzZWNfc2FkIHsNCj4gIAljaGFyIG5hbWVbUlRFX0lQU0VDX1NBRF9OQU1FU0la RV07DQo+ICAJc3RydWN0IHJ0ZV9oYXNoCSpoYXNoW1JURV9JUFNFQ19TQURfS0VZX1RZUEVfTUFT S107DQo+ICsJdWludDMyX3Qga2V5c2l6ZVtSVEVfSVBTRUNfU0FEX0tFWV9UWVBFX01BU0tdOw0K PiArCXVpbnQzMl90IGluaXRfdmFsOw0KPiAgCS8qIEFycmF5IHRvIHRyYWNrIG51bWJlciBvZiBt b3JlIHNwZWNpZmljIHJ1bGVzDQo+ICAJICogKHNwaV9kaXAgb3Igc3BpX2RpcF9zaXApLiBVc2Vk IG9ubHkgaW4gYWRkL2RlbGV0ZQ0KPiAgCSAqIGFzIGEgaGVscGVyIHN0cnVjdC4NCj4gQEAgLTcw LDI5ICs3NCwzNiBAQCBhZGRfc3BlY2lmaWMoc3RydWN0IHJ0ZV9pcHNlY19zYWQgKnNhZCwgY29u c3Qgdm9pZCAqa2V5LA0KPiAgCS8qIENoZWNrIGlmIHRoZSBrZXkgaXMgcHJlc2VudCBpbiB0aGUg dGFibGUuDQo+ICAJICogTmVlZCBmb3IgZnVydGhlciBhY2NhdW50aW5nIGluIGNudF9hcnINCj4g IAkgKi8NCj4gLQlyZXQgPSBydGVfaGFzaF9sb29rdXAoc2FkLT5oYXNoW2tleV90eXBlXSwga2V5 KTsNCj4gKwlyZXQgPSBydGVfaGFzaF9sb29rdXBfd2l0aF9oYXNoKHNhZC0+aGFzaFtrZXlfdHlw ZV0sIGtleSwNCj4gKwkJcnRlX2hhc2hfY3JjKGtleSwgc2FkLT5rZXlzaXplW2tleV90eXBlXSwg c2FkLT5pbml0X3ZhbCkpOw0KPiAgCW5vdGV4aXN0ID0gKHJldCA9PSAtRU5PRU5UKTsNCj4gIA0K PiAgCS8qIEFkZCBhbiBTQSB0byB0aGUgY29ycmVzcG9uZGluZyB0YWJsZS4qLw0KPiAtCXJldCA9 IHJ0ZV9oYXNoX2FkZF9rZXlfZGF0YShzYWQtPmhhc2hba2V5X3R5cGVdLCBrZXksIHNhKTsNCj4g KwlyZXQgPSBydGVfaGFzaF9hZGRfa2V5X3dpdGhfaGFzaF9kYXRhKHNhZC0+aGFzaFtrZXlfdHlw ZV0sIGtleSwNCj4gKwkJcnRlX2hhc2hfY3JjKGtleSwgc2FkLT5rZXlzaXplW2tleV90eXBlXSwg c2FkLT5pbml0X3ZhbCksIHNhKTsNCj4gIAlpZiAocmV0ICE9IDApDQo+ICAJCXJldHVybiByZXQ7 DQo+ICANCj4gIAkvKiBDaGVjayBpZiB0aGVyZSBpcyBhbiBlbnRyeSBpbiBTUEkgb25seSB0YWJs ZSB3aXRoIHRoZSBzYW1lIFNQSSAqLw0KPiAtCXJldCA9IHJ0ZV9oYXNoX2xvb2t1cF9kYXRhKHNh ZC0+aGFzaFtSVEVfSVBTRUNfU0FEX1NQSV9PTkxZXSwNCj4gLQkJa2V5LCAmdG1wX3ZhbCk7DQo+ ICsJcmV0ID0gcnRlX2hhc2hfbG9va3VwX3dpdGhfaGFzaF9kYXRhKHNhZC0+aGFzaFtSVEVfSVBT RUNfU0FEX1NQSV9PTkxZXSwNCj4gKwkJa2V5LCBydGVfaGFzaF9jcmMoa2V5LCBzYWQtPmtleXNp emVbUlRFX0lQU0VDX1NBRF9TUElfT05MWV0sDQo+ICsJCXNhZC0+aW5pdF92YWwpLCAmdG1wX3Zh bCk7DQo+ICAJaWYgKHJldCA8IDApDQo+ICAJCXRtcF92YWwgPSBOVUxMOw0KPiAgCXRtcF92YWwg PSBTRVRfQklUKHRtcF92YWwsIGtleV90eXBlKTsNCj4gIA0KPiAgCS8qIEFkZCBhbiBlbnRyeSBp bnRvIFNQSSBvbmx5IHRhYmxlICovDQo+IC0JcmV0ID0gcnRlX2hhc2hfYWRkX2tleV9kYXRhKHNh ZC0+aGFzaFtSVEVfSVBTRUNfU0FEX1NQSV9PTkxZXSwNCj4gLQkJa2V5LCB0bXBfdmFsKTsNCj4g KwlyZXQgPSBydGVfaGFzaF9hZGRfa2V5X3dpdGhfaGFzaF9kYXRhKA0KPiArCQlzYWQtPmhhc2hb UlRFX0lQU0VDX1NBRF9TUElfT05MWV0sIGtleSwNCj4gKwkJcnRlX2hhc2hfY3JjKGtleSwgc2Fk LT5rZXlzaXplW1JURV9JUFNFQ19TQURfU1BJX09OTFldLA0KPiArCQlzYWQtPmluaXRfdmFsKSwg dG1wX3ZhbCk7DQo+ICAJaWYgKHJldCAhPSAwKQ0KPiAgCQlyZXR1cm4gcmV0Ow0KPiAgDQo+ICAJ LyogVXBkYXRlIGEgY291bnRlciBmb3IgYSBnaXZlbiBTUEkgKi8NCj4gLQlyZXQgPSBydGVfaGFz aF9sb29rdXAoc2FkLT5oYXNoW1JURV9JUFNFQ19TQURfU1BJX09OTFldLCBrZXkpOw0KPiArCXJl dCA9IHJ0ZV9oYXNoX2xvb2t1cF93aXRoX2hhc2goc2FkLT5oYXNoW1JURV9JUFNFQ19TQURfU1BJ X09OTFldLCBrZXksDQo+ICsJCXJ0ZV9oYXNoX2NyYyhrZXksIHNhZC0+a2V5c2l6ZVtSVEVfSVBT RUNfU0FEX1NQSV9PTkxZXSwNCj4gKwkJc2FkLT5pbml0X3ZhbCkpOw0KPiAgCWlmIChrZXlfdHlw ZSA9PSBSVEVfSVBTRUNfU0FEX1NQSV9ESVApDQo+ICAJCXNhZC0+Y250X2FycltyZXRdLmNudF9k aXAgKz0gbm90ZXhpc3Q7DQo+ICAJZWxzZQ0KPiBAQCAtMTIyLDE1ICsxMzMsMTcgQEAgcnRlX2lw c2VjX3NhZF9hZGQoc3RydWN0IHJ0ZV9pcHNlY19zYWQgKnNhZCwNCj4gIAkgKi8NCj4gIAlzd2l0 Y2ggKGtleV90eXBlKSB7DQo+ICAJY2FzZShSVEVfSVBTRUNfU0FEX1NQSV9PTkxZKToNCj4gLQkJ cmV0ID0gcnRlX2hhc2hfbG9va3VwX2RhdGEoc2FkLT5oYXNoW2tleV90eXBlXSwNCj4gLQkJCWtl eSwgJnRtcF92YWwpOw0KPiArCQlyZXQgPSBydGVfaGFzaF9sb29rdXBfd2l0aF9oYXNoX2RhdGEo c2FkLT5oYXNoW2tleV90eXBlXSwNCj4gKwkJCWtleSwgcnRlX2hhc2hfY3JjKGtleSwgc2FkLT5r ZXlzaXplW2tleV90eXBlXSwNCj4gKwkJCXNhZC0+aW5pdF92YWwpLCAmdG1wX3ZhbCk7DQo+ICAJ CWlmIChyZXQgPj0gMCkNCj4gIAkJCXRtcF92YWwgPSBTRVRfQklUKHNhLCBHRVRfQklUKHRtcF92 YWwsDQo+ICAJCQkJUlRFX0lQU0VDX1NBRF9LRVlfVFlQRV9NQVNLKSk7DQo+ICAJCWVsc2UNCj4g IAkJCXRtcF92YWwgPSBzYTsNCj4gLQkJcmV0ID0gcnRlX2hhc2hfYWRkX2tleV9kYXRhKHNhZC0+ aGFzaFtrZXlfdHlwZV0sDQo+IC0JCQlrZXksIHRtcF92YWwpOw0KPiArCQlyZXQgPSBydGVfaGFz aF9hZGRfa2V5X3dpdGhfaGFzaF9kYXRhKHNhZC0+aGFzaFtrZXlfdHlwZV0sDQo+ICsJCQlrZXks IHJ0ZV9oYXNoX2NyYyhrZXksIHNhZC0+a2V5c2l6ZVtrZXlfdHlwZV0sDQo+ICsJCQlzYWQtPmlu aXRfdmFsKSwgdG1wX3ZhbCk7DQo+ICAJCXJldHVybiByZXQ7DQo+ICAJY2FzZShSVEVfSVBTRUNf U0FEX1NQSV9ESVApOg0KPiAgCWNhc2UoUlRFX0lQU0VDX1NBRF9TUElfRElQX1NJUCk6DQo+IEBA IC0xNTgsMTMgKzE3MSwxNSBAQCBkZWxfc3BlY2lmaWMoc3RydWN0IHJ0ZV9pcHNlY19zYWQgKnNh ZCwgY29uc3Qgdm9pZCAqa2V5LCBpbnQga2V5X3R5cGUpDQo+ICAJdWludDMyX3QgKmNudDsNCj4g IA0KPiAgCS8qIFJlbW92ZSBhbiBTQSBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIHRhYmxlLiovDQo+ IC0JcmV0ID0gcnRlX2hhc2hfZGVsX2tleShzYWQtPmhhc2hba2V5X3R5cGVdLCBrZXkpOw0KPiAr CXJldCA9IHJ0ZV9oYXNoX2RlbF9rZXlfd2l0aF9oYXNoKHNhZC0+aGFzaFtrZXlfdHlwZV0sIGtl eSwNCj4gKwkJcnRlX2hhc2hfY3JjKGtleSwgc2FkLT5rZXlzaXplW2tleV90eXBlXSwgc2FkLT5p bml0X3ZhbCkpOw0KPiAgCWlmIChyZXQgPCAwKQ0KPiAgCQlyZXR1cm4gcmV0Ow0KPiAgDQo+ICAJ LyogR2V0IGFuIGluZGV4IG9mIGNudF9hcnIgZW50cnkgZm9yIGEgZ2l2ZW4gU1BJICovDQo+IC0J cmV0ID0gcnRlX2hhc2hfbG9va3VwX2RhdGEoc2FkLT5oYXNoW1JURV9JUFNFQ19TQURfU1BJX09O TFldLA0KPiAtCQlrZXksICZ0bXBfdmFsKTsNCj4gKwlyZXQgPSBydGVfaGFzaF9sb29rdXBfd2l0 aF9oYXNoX2RhdGEoc2FkLT5oYXNoW1JURV9JUFNFQ19TQURfU1BJX09OTFldLA0KPiArCQlrZXks IHJ0ZV9oYXNoX2NyYyhrZXksIHNhZC0+a2V5c2l6ZVtSVEVfSVBTRUNfU0FEX1NQSV9PTkxZXSwN Cj4gKwkJc2FkLT5pbml0X3ZhbCksICZ0bXBfdmFsKTsNCj4gIAlpZiAocmV0IDwgMCkNCj4gIAkJ cmV0dXJuIHJldDsNCj4gIAljbnQgPSAoa2V5X3R5cGUgPT0gUlRFX0lQU0VDX1NBRF9TUElfRElQ KSA/DQo+IEBAIC0xODIsMTAgKzE5NywxNSBAQCBkZWxfc3BlY2lmaWMoc3RydWN0IHJ0ZV9pcHNl Y19zYWQgKnNhZCwgY29uc3Qgdm9pZCAqa2V5LCBpbnQga2V5X3R5cGUpDQo+ICAJICogcmVtb3Zl IGFuIGVudHJ5IGZyb20gU1BJX29ubHkgdGFibGUNCj4gIAkgKi8NCj4gIAlpZiAodG1wX3ZhbCA9 PSBOVUxMKQ0KPiAtCQlyZXQgPSBydGVfaGFzaF9kZWxfa2V5KHNhZC0+aGFzaFtSVEVfSVBTRUNf U0FEX1NQSV9PTkxZXSwga2V5KTsNCj4gKwkJcmV0ID0gcnRlX2hhc2hfZGVsX2tleV93aXRoX2hh c2goDQo+ICsJCQlzYWQtPmhhc2hbUlRFX0lQU0VDX1NBRF9TUElfT05MWV0sIGtleSwNCj4gKwkJ CXJ0ZV9oYXNoX2NyYyhrZXksIHNhZC0+a2V5c2l6ZVtSVEVfSVBTRUNfU0FEX1NQSV9PTkxZXSwN Cj4gKwkJCXNhZC0+aW5pdF92YWwpKTsNCj4gIAllbHNlDQo+IC0JCXJldCA9IHJ0ZV9oYXNoX2Fk ZF9rZXlfZGF0YShzYWQtPmhhc2hbUlRFX0lQU0VDX1NBRF9TUElfT05MWV0sDQo+IC0JCQlrZXks IHRtcF92YWwpOw0KPiArCQlyZXQgPSBydGVfaGFzaF9hZGRfa2V5X3dpdGhfaGFzaF9kYXRhKA0K PiArCQkJc2FkLT5oYXNoW1JURV9JUFNFQ19TQURfU1BJX09OTFldLCBrZXksDQo+ICsJCQlydGVf aGFzaF9jcmMoa2V5LCBzYWQtPmtleXNpemVbUlRFX0lQU0VDX1NBRF9TUElfT05MWV0sDQo+ICsJ CQlzYWQtPmluaXRfdmFsKSwgdG1wX3ZhbCk7DQo+ICAJaWYgKHJldCA8IDApDQo+ICAJCXJldHVy biByZXQ7DQo+ICAJcmV0dXJuIDA7DQo+IEBAIC0yMDMsMTkgKzIyMywyMyBAQCBydGVfaXBzZWNf c2FkX2RlbChzdHJ1Y3QgcnRlX2lwc2VjX3NhZCAqc2FkLA0KPiAgCQlyZXR1cm4gLUVJTlZBTDsN Cj4gIAlzd2l0Y2ggKGtleV90eXBlKSB7DQo+ICAJY2FzZShSVEVfSVBTRUNfU0FEX1NQSV9PTkxZ KToNCj4gLQkJcmV0ID0gcnRlX2hhc2hfbG9va3VwX2RhdGEoc2FkLT5oYXNoW2tleV90eXBlXSwN Cj4gLQkJCWtleSwgJnRtcF92YWwpOw0KPiArCQlyZXQgPSBydGVfaGFzaF9sb29rdXBfd2l0aF9o YXNoX2RhdGEoc2FkLT5oYXNoW2tleV90eXBlXSwNCj4gKwkJCWtleSwgcnRlX2hhc2hfY3JjKGtl eSwgc2FkLT5rZXlzaXplW2tleV90eXBlXSwNCj4gKwkJCXNhZC0+aW5pdF92YWwpLCAmdG1wX3Zh bCk7DQo+ICAJCWlmIChyZXQgPCAwKQ0KPiAgCQkJcmV0dXJuIHJldDsNCj4gIAkJaWYgKEdFVF9C SVQodG1wX3ZhbCwgUlRFX0lQU0VDX1NBRF9LRVlfVFlQRV9NQVNLKSA9PSAwKSB7DQo+IC0JCQly ZXQgPSBydGVfaGFzaF9kZWxfa2V5KHNhZC0+aGFzaFtrZXlfdHlwZV0sDQo+IC0JCQkJa2V5KTsN Cj4gKwkJCXJldCA9IHJ0ZV9oYXNoX2RlbF9rZXlfd2l0aF9oYXNoKHNhZC0+aGFzaFtrZXlfdHlw ZV0sDQo+ICsJCQkJa2V5LCBydGVfaGFzaF9jcmMoa2V5LCBzYWQtPmtleXNpemVba2V5X3R5cGVd LA0KPiArCQkJCXNhZC0+aW5pdF92YWwpKTsNCj4gIAkJCXJldCA9IHJldCA8IDAgPyByZXQgOiAw Ow0KPiAgCQl9IGVsc2Ugew0KPiAgCQkJdG1wX3ZhbCA9IEdFVF9CSVQodG1wX3ZhbCwNCj4gIAkJ CQlSVEVfSVBTRUNfU0FEX0tFWV9UWVBFX01BU0spOw0KPiAtCQkJcmV0ID0gcnRlX2hhc2hfYWRk X2tleV9kYXRhKHNhZC0+aGFzaFtrZXlfdHlwZV0sDQo+IC0JCQkJa2V5LCB0bXBfdmFsKTsNCj4g KwkJCXJldCA9IHJ0ZV9oYXNoX2FkZF9rZXlfd2l0aF9oYXNoX2RhdGEoDQo+ICsJCQkJc2FkLT5o YXNoW2tleV90eXBlXSwga2V5LA0KPiArCQkJCXJ0ZV9oYXNoX2NyYyhrZXksIHNhZC0+a2V5c2l6 ZVtrZXlfdHlwZV0sDQo+ICsJCQkJc2FkLT5pbml0X3ZhbCksIHRtcF92YWwpOw0KPiAgCQl9DQo+ ICAJCXJldHVybiByZXQ7DQo+ICAJY2FzZShSVEVfSVBTRUNfU0FEX1NQSV9ESVApOg0KPiBAQCAt MjcyLDYgKzI5Niw3IEBAIHJ0ZV9pcHNlY19zYWRfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IHN0cnVjdCBydGVfaXBzZWNfc2FkX2NvbmYgKmNvbmYpDQo+ICANCj4gIAloYXNoX3BhcmFt cy5oYXNoX2Z1bmMgPSBERUZBVUxUX0hBU0hfRlVOQzsNCj4gIAloYXNoX3BhcmFtcy5oYXNoX2Z1 bmNfaW5pdF92YWwgPSBydGVfcmFuZCgpOw0KPiArCXNhZC0+aW5pdF92YWwgPSBoYXNoX3BhcmFt cy5oYXNoX2Z1bmNfaW5pdF92YWw7DQo+ICAJaGFzaF9wYXJhbXMuc29ja2V0X2lkID0gY29uZi0+ c29ja2V0X2lkOw0KPiAgCWhhc2hfcGFyYW1zLm5hbWUgPSBoYXNoX25hbWU7DQo+ICAJaWYgKGNv bmYtPmZsYWdzICYgUlRFX0lQU0VDX1NBRF9GTEFHX1JXX0NPTkNVUlJFTkNZKQ0KPiBAQCAtMjgw LDYgKzMwNSw3IEBAIHJ0ZV9pcHNlY19zYWRfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0 IHN0cnVjdCBydGVfaXBzZWNfc2FkX2NvbmYgKmNvbmYpDQo+ICAJLyoqIEluaXQgaGFzaFtSVEVf SVBTRUNfU0FEX1NQSV9PTkxZXSBmb3IgU1BJIG9ubHkgKi8NCj4gIAlzbnByaW50ZihoYXNoX25h bWUsIHNpemVvZihoYXNoX25hbWUpLCAic2FkXzFfJXAiLCBzYWQpOw0KPiAgCWhhc2hfcGFyYW1z LmtleV9sZW4gPSBzaXplb2YoKChzdHJ1Y3QgcnRlX2lwc2VjX3NhZHY0X2tleSAqKTApLT5zcGkp Ow0KPiArCXNhZC0+a2V5c2l6ZVtSVEVfSVBTRUNfU0FEX1NQSV9PTkxZXSA9IGhhc2hfcGFyYW1z LmtleV9sZW47DQo+ICAJaGFzaF9wYXJhbXMuZW50cmllcyA9IHNhX3N1bTsNCj4gIAlzYWQtPmhh c2hbUlRFX0lQU0VDX1NBRF9TUElfT05MWV0gPSBydGVfaGFzaF9jcmVhdGUoJmhhc2hfcGFyYW1z KTsNCj4gIAlpZiAoc2FkLT5oYXNoW1JURV9JUFNFQ19TQURfU1BJX09OTFldID09IE5VTEwpIHsN Cj4gQEAgLTI5NSw2ICszMjEsNyBAQCBydGVfaXBzZWNfc2FkX2NyZWF0ZShjb25zdCBjaGFyICpu YW1lLCBjb25zdCBzdHJ1Y3QgcnRlX2lwc2VjX3NhZF9jb25mICpjb25mKQ0KPiAgCWVsc2UNCj4g IAkJaGFzaF9wYXJhbXMua2V5X2xlbiArPQ0KPiAgCQkJc2l6ZW9mKCgoc3RydWN0IHJ0ZV9pcHNl Y19zYWR2NF9rZXkgKikwKS0+ZGlwKTsNCj4gKwlzYWQtPmtleXNpemVbUlRFX0lQU0VDX1NBRF9T UElfRElQXSA9IGhhc2hfcGFyYW1zLmtleV9sZW47DQo+ICAJaGFzaF9wYXJhbXMuZW50cmllcyA9 IFJURV9NQVgoTUlOX0hBU0hfRU5UUklFUywNCj4gIAkJCWNvbmYtPm1heF9zYVtSVEVfSVBTRUNf U0FEX1NQSV9ESVBdKTsNCj4gIAlzYWQtPmhhc2hbUlRFX0lQU0VDX1NBRF9TUElfRElQXSA9IHJ0 ZV9oYXNoX2NyZWF0ZSgmaGFzaF9wYXJhbXMpOw0KPiBAQCAtMzExLDYgKzMzOCw3IEBAIHJ0ZV9p cHNlY19zYWRfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBydGVfaXBzZWNf c2FkX2NvbmYgKmNvbmYpDQo+ICAJZWxzZQ0KPiAgCQloYXNoX3BhcmFtcy5rZXlfbGVuICs9DQo+ ICAJCQlzaXplb2YoKChzdHJ1Y3QgcnRlX2lwc2VjX3NhZHY0X2tleSAqKTApLT5zaXApOw0KPiAr CXNhZC0+a2V5c2l6ZVtSVEVfSVBTRUNfU0FEX1NQSV9ESVBfU0lQXSA9IGhhc2hfcGFyYW1zLmtl eV9sZW47DQo+ICAJaGFzaF9wYXJhbXMuZW50cmllcyA9IFJURV9NQVgoTUlOX0hBU0hfRU5UUklF UywNCj4gIAkJCWNvbmYtPm1heF9zYVtSVEVfSVBTRUNfU0FEX1NQSV9ESVBfU0lQXSk7DQo+ICAJ c2FkLT5oYXNoW1JURV9JUFNFQ19TQURfU1BJX0RJUF9TSVBdID0gcnRlX2hhc2hfY3JlYXRlKCZo YXNoX3BhcmFtcyk7DQo+IEBAIC00NDAsMTUgKzQ2OCwyMSBAQCBfX2lwc2VjX3NhZF9sb29rdXAo Y29uc3Qgc3RydWN0IHJ0ZV9pcHNlY19zYWQgKnNhZCwNCj4gIAl1aW50MzJfdCBuXzMgPSAwOw0K PiAgCXVpbnQzMl90IGk7DQo+ICAJaW50IGZvdW5kID0gMDsNCj4gKwloYXNoX3NpZ190IGhhc2hf c2lnW1JURV9IQVNIX0xPT0tVUF9CVUxLX01BWF07DQo+ICsJaGFzaF9zaWdfdCBoYXNoX3NpZ18y W1JURV9IQVNIX0xPT0tVUF9CVUxLX01BWF07DQo+ICsJaGFzaF9zaWdfdCBoYXNoX3NpZ18zW1JU RV9IQVNIX0xPT0tVUF9CVUxLX01BWF07DQo+ICANCj4gLQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsr KQ0KPiArCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsNCj4gIAkJc2FbaV0gPSBOVUxMOw0KPiAr CQloYXNoX3NpZ1tpXSA9IHJ0ZV9oYXNoX2NyY180Ynl0ZShrZXlzW2ldLT52NC5zcGksDQo+ICsJ CQlzYWQtPmluaXRfdmFsKTsNCj4gKwl9DQo+ICANCj4gIAkvKg0KPiAgCSAqIExvb2t1cCBrZXlz IGluIFNQSSBvbmx5IGhhc2ggdGFibGUgZmlyc3QuDQo+ICAJICovDQo+IC0JcnRlX2hhc2hfbG9v a3VwX2J1bGtfZGF0YShzYWQtPmhhc2hbUlRFX0lQU0VDX1NBRF9TUElfT05MWV0sDQo+IC0JCShj b25zdCB2b2lkICoqKWtleXMsIG4sICZtYXNrXzEsIHNhKTsNCj4gKwlydGVfaGFzaF9sb29rdXBf d2l0aF9oYXNoX2J1bGtfZGF0YShzYWQtPmhhc2hbUlRFX0lQU0VDX1NBRF9TUElfT05MWV0sDQo+ ICsJCShjb25zdCB2b2lkICoqKWtleXMsIGhhc2hfc2lnLCBuLCAmbWFza18xLCBzYSk7DQo+ICAJ Zm9yIChtYXAgPSBtYXNrXzE7IG1hcDsgbWFwICY9IChtYXAgLSAxKSkgew0KPiAgCQlpID0gcnRl X2JzZjY0KG1hcCk7DQo+ICAJCS8qDQo+IEBAIC00NTcsMTAgKzQ5MSwxNiBAQCBfX2lwc2VjX3Nh ZF9sb29rdXAoY29uc3Qgc3RydWN0IHJ0ZV9pcHNlY19zYWQgKnNhZCwNCj4gIAkJICovDQo+ICAJ CWlmICgodWludHB0cl90KXNhW2ldICYgUlRFX0lQU0VDX1NBRF9TUElfRElQX1NJUCkgew0KPiAg CQkJaWR4XzNbbl8zXSA9IGk7DQo+ICsJCQloYXNoX3NpZ18zW25fM10gPSBydGVfaGFzaF9jcmMo a2V5c1tpXSwNCj4gKwkJCQlzYWQtPmtleXNpemVbUlRFX0lQU0VDX1NBRF9TUElfRElQX1NJUF0s DQo+ICsJCQkJc2FkLT5pbml0X3ZhbCk7DQo+ICAJCQlrZXlzXzNbbl8zKytdID0ga2V5c1tpXTsN Cj4gIAkJfQ0KPiAgCQlpZiAoKHVpbnRwdHJfdClzYVtpXSAmIFJURV9JUFNFQ19TQURfU1BJX0RJ UCkgew0KPiAgCQkJaWR4XzJbbl8yXSA9IGk7DQo+ICsJCQloYXNoX3NpZ18yW25fMl0gPSBydGVf aGFzaF9jcmMoa2V5c1tpXSwNCj4gKwkJCQlzYWQtPmtleXNpemVbUlRFX0lQU0VDX1NBRF9TUElf RElQXSwNCj4gKwkJCQlzYWQtPmluaXRfdmFsKTsNCj4gIAkJCWtleXNfMltuXzIrK10gPSBrZXlz W2ldOw0KPiAgCQl9DQo+ICAJCS8qIGNsZWFyIDIgTFNCJ3Mgd2hpY2ggaW5kaWNhdGUgdGhlIHBy ZXNlbmNlDQo+IEBAIC00NzEsOCArNTExLDkgQEAgX19pcHNlY19zYWRfbG9va3VwKGNvbnN0IHN0 cnVjdCBydGVfaXBzZWNfc2FkICpzYWQsDQo+ICANCj4gIAkvKiBMb29rdXAgZm9yIG1vcmUgc3Bl Y2lmaWMgcnVsZXMgaW4gU1BJX0RJUCB0YWJsZSAqLw0KPiAgCWlmIChuXzIgIT0gMCkgew0KPiAt CQlydGVfaGFzaF9sb29rdXBfYnVsa19kYXRhKHNhZC0+aGFzaFtSVEVfSVBTRUNfU0FEX1NQSV9E SVBdLA0KPiAtCQkJa2V5c18yLCBuXzIsICZtYXNrXzIsIHZhbHNfMik7DQo+ICsJCXJ0ZV9oYXNo X2xvb2t1cF93aXRoX2hhc2hfYnVsa19kYXRhKA0KPiArCQkJc2FkLT5oYXNoW1JURV9JUFNFQ19T QURfU1BJX0RJUF0sDQo+ICsJCQlrZXlzXzIsIGhhc2hfc2lnXzIsIG5fMiwgJm1hc2tfMiwgdmFs c18yKTsNCj4gIAkJZm9yIChtYXBfc3BlYyA9IG1hc2tfMjsgbWFwX3NwZWM7IG1hcF9zcGVjICY9 IChtYXBfc3BlYyAtIDEpKSB7DQo+ICAJCQlpID0gcnRlX2JzZjY0KG1hcF9zcGVjKTsNCj4gIAkJ CXNhW2lkeF8yW2ldXSA9IHZhbHNfMltpXTsNCj4gQEAgLTQ4MCw4ICs1MjEsOSBAQCBfX2lwc2Vj X3NhZF9sb29rdXAoY29uc3Qgc3RydWN0IHJ0ZV9pcHNlY19zYWQgKnNhZCwNCj4gIAl9DQo+ICAJ LyogTG9va3VwIGZvciBtb3JlIHNwZWNpZmljIHJ1bGVzIGluIFNQSV9ESVBfU0lQIHRhYmxlICov DQo+ICAJaWYgKG5fMyAhPSAwKSB7DQo+IC0JCXJ0ZV9oYXNoX2xvb2t1cF9idWxrX2RhdGEoc2Fk LT5oYXNoW1JURV9JUFNFQ19TQURfU1BJX0RJUF9TSVBdLA0KPiAtCQkJa2V5c18zLCBuXzMsICZt YXNrXzMsIHZhbHNfMyk7DQo+ICsJCXJ0ZV9oYXNoX2xvb2t1cF93aXRoX2hhc2hfYnVsa19kYXRh KA0KPiArCQkJc2FkLT5oYXNoW1JURV9JUFNFQ19TQURfU1BJX0RJUF9TSVBdLA0KPiArCQkJa2V5 c18zLCBoYXNoX3NpZ18zLCBuXzMsICZtYXNrXzMsIHZhbHNfMyk7DQo+ICAJCWZvciAobWFwX3Nw ZWMgPSBtYXNrXzM7IG1hcF9zcGVjOyBtYXBfc3BlYyAmPSAobWFwX3NwZWMgLSAxKSkgew0KPiAg CQkJaSA9IHJ0ZV9ic2Y2NChtYXBfc3BlYyk7DQo+ICAJCQlzYVtpZHhfM1tpXV0gPSB2YWxzXzNb aV07DQo+IA==