From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30041.outbound.protection.outlook.com [40.107.3.41]) by dpdk.org (Postfix) with ESMTP id BE15F1B606 for ; Wed, 19 Dec 2018 13:08:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mBB1GEkXhqw9j3WIo2d4CxgIGWup0plYzDEzMkZFIoE=; b=GcrTDYMYuTkGUN8c2Rttbq3U2/RJuC1FVTY9ieJmEeTye0nZzRJUOqpzbg1Y7zFBztyGUXN2NxcCmoF7VO1eqmpanH4gTaEXEaMgzJTy5eF/SA1YUf/aEwfTxEoJ1sCIx1oVaGl1YGohT4lweYBLBvq2zwXcsBC9BgVw1ibNg5s= Received: from VI1PR04MB4893.eurprd04.prod.outlook.com (20.177.49.154) by VI1PR04MB5085.eurprd04.prod.outlook.com (20.177.50.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1446.18; Wed, 19 Dec 2018 12:08:17 +0000 Received: from VI1PR04MB4893.eurprd04.prod.outlook.com ([fe80::7dc4:610b:d0c1:146b]) by VI1PR04MB4893.eurprd04.prod.outlook.com ([fe80::7dc4:610b:d0c1:146b%4]) with mapi id 15.20.1446.018; Wed, 19 Dec 2018 12:08:17 +0000 From: Akhil Goyal To: Konstantin Ananyev , "dev@dpdk.org" CC: Thomas Monjalon , Mohammad Abdul Awal Thread-Topic: [dpdk-dev] [PATCH v4 04/10] lib: introduce ipsec library Thread-Index: AQHUk8ll9+ALJ/YozEagueCuZ8rzD6WF/3MA Date: Wed, 19 Dec 2018 12:08:17 +0000 Message-ID: <82f62109-a584-13e9-12ec-c9984a60567a@nxp.com> References: <1544110714-4514-2-git-send-email-konstantin.ananyev@intel.com> <1544804589-10338-4-git-send-email-konstantin.ananyev@intel.com> In-Reply-To: <1544804589-10338-4-git-send-email-konstantin.ananyev@intel.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0005.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::15) To VI1PR04MB4893.eurprd04.prod.outlook.com (2603:10a6:803:56::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=akhil.goyal@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [14.143.30.134] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR04MB5085; 6:XitfGaZBVOuZXN3xUpxB1+L7cXUTV7bm13CBLZyYVnrLeLaEEzm4SKFlWjN/7Z5i0joyz5HHd8HiAFrPcYiLG7NKg2aiHq8U9aYdWIjJOLZ0IXgs+hI3Qo7i4OVWr4DSlHFgJXaHKVLMCpmFCKa/CPrwWCUoFQRNx+xEsITCedhJTzZ3BcqGGzrUe14NSv1njVqha6O2INN3hjocrSPhKCMGy7zoEH7bJVK6uxSgXdD4gkFGSEhofdIUaOdkvpc9+8RWq+4ebxnqfgcCL/do7wc/AS7ABrekD6HIsa2uOn0i6zB4YkIOql84FwFClqkqtDvzSa1jqplYp2uH0a81YE0vdoq2uV4N/0aEj2o7fGkyR0wYwpnDblxs38tneAuHDWsbqYlfv9ZufKFzQ+6CXRfljsH4WSX4BH3uUEFcOQ3GCCqB5syFXsFfPB5UAKsWvTG6Iok0wMnJux+4iquNUA==; 5:gejknb1G4LKq6BXFyidZtk44aBM2YRZdYz22gqQy//jrsWdx53/1g0xTWY3SkXHzyFl7m++QmUPqJh3AnLpx4NBrrP8KzTWfkS1al5GaJDsMQvP1oAaaaHb4y8AFuuUnomVu3UpcT1P+egJrjl8XTiwXv8cMKITzMvb3/N/jIIk=; 7:6GELqKODveSWaiXb56m9ADlDL84X8JuxUyCPcY+N9m3p5QadAPNeqMXfRvtdjwcqu6FwBToRs+EN9JGzT6QFkx6WEr/LlMKA7D8pKxPiPjJlPujNcUsUd/hzWDcpf2RciqYB4ZeiUQJhiVgEEt9d+w== x-ms-office365-filtering-correlation-id: 1c287716-8557-49dc-6941-08d665aaa8d0 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB5085; x-ms-traffictypediagnostic: VI1PR04MB5085: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(6040522)(2401047)(8121501046)(5005006)(3231475)(944501520)(52105112)(93006095)(93001095)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR04MB5085; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB5085; x-forefront-prvs: 0891BC3F3D x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(346002)(376002)(366004)(136003)(396003)(199004)(189003)(78486014)(14444005)(316002)(4744004)(71190400001)(71200400001)(6116002)(229853002)(31686004)(53946003)(110136005)(99286004)(256004)(54906003)(66066001)(3846002)(6246003)(4326008)(6512007)(53936002)(486006)(2906002)(44832011)(6436002)(106356001)(7736002)(105586002)(386003)(8676002)(476003)(102836004)(2616005)(446003)(8936002)(11346002)(81156014)(81166006)(26005)(2501003)(14454004)(68736007)(478600001)(76176011)(36756003)(97736004)(575784001)(305945005)(86362001)(186003)(52116002)(6486002)(5660300001)(25786009)(6506007)(55236004)(31696002)(53546011)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB5085; H:VI1PR04MB4893.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: qGmLUESYG2Gujv3YK56m7AsK7HVVMlO+aHhhh1E251rm0pYhV+RjI5J93zw/dM/jB3WiefP4IwKuvVK2ClA/6a2mf0zF9b+KL9y8DHTJ2E/CNxWz6zCrONzq0JrsbllNcS74vLnnsgNnfkMFALQZ6AFnDrlCzafJlH1Nzx9s6nFW9lDXiWXaL0k83Uqtte4apXNM8ol6wYnFW5mDsn6gcgbc+bkLXBLu7MuWgYgL5UA1bW40ofL5JM0uFGqA65Ud2jYYkp6MhkoXzkF0teSDOMTmi0x+DdfdEhBdfSbS7a9qKqPPXLk76e6SGlC6Qzov spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <25B0DA133467DB4290850CE6C714AB39@eurprd04.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1c287716-8557-49dc-6941-08d665aaa8d0 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Dec 2018 12:08:17.5383 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5085 Subject: Re: [dpdk-dev] [PATCH v4 04/10] lib: introduce ipsec library 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: , X-List-Received-Date: Wed, 19 Dec 2018 12:08:24 -0000 DQoNCk9uIDEyLzE0LzIwMTggOTo1MyBQTSwgS29uc3RhbnRpbiBBbmFueWV2IHdyb3RlOg0KPiBJ bnRyb2R1Y2UgbGlicnRlX2lwc2VjIGxpYnJhcnkuDQo+IFRoZSBsaWJyYXJ5IGlzIHN1cHBvc2Vk IHRvIHV0aWxpemUgZXhpc3RpbmcgRFBESyBjcnlwdG8tZGV2IGFuZA0KPiBzZWN1cml0eSBBUEkg dG8gcHJvdmlkZSBhcHBsaWNhdGlvbiB3aXRoIHRyYW5zcGFyZW50IElQc2VjIHByb2Nlc3Npbmcg QVBJLg0KPiBUaGF0IGluaXRpYWwgY29tbWl0IHByb3ZpZGVzIHNvbWUgYmFzZSBBUEkgdG8gbWFu YWdlDQo+IElQc2VjIFNlY3VyaXR5IEFzc29jaWF0aW9uIChTQSkgb2JqZWN0Lg0KPg0KPiBTaWdu ZWQtb2ZmLWJ5OiBNb2hhbW1hZCBBYmR1bCBBd2FsIDxtb2hhbW1hZC5hYmR1bC5hd2FsQGludGVs LmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogS29uc3RhbnRpbiBBbmFueWV2IDxrb25zdGFudGluLmFu YW55ZXZAaW50ZWwuY29tPg0KPiBBY2tlZC1ieTogRGVjbGFuIERvaGVydHkgPGRlY2xhbi5kb2hl cnR5QGludGVsLmNvbT4NCj4gLS0tDQo+ICAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDUgKw0KPiAgIGNvbmZpZy9jb21tb25fYmFzZSAgICAgICAgICAgICAgICAg ICAgIHwgICA1ICsNCj4gICBsaWIvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArDQo+ICAgbGliL2xpYnJ0ZV9pcHNlYy9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgMjQg KysNCj4gICBsaWIvbGlicnRlX2lwc2VjL2lwc2VjX3Nxbi5oICAgICAgICAgICB8ICA0OCArKysr DQo+ICAgbGliL2xpYnJ0ZV9pcHNlYy9tZXNvbi5idWlsZCAgICAgICAgICAgfCAgMTAgKw0KPiAg IGxpYi9saWJydGVfaXBzZWMvcnRlX2lwc2VjX3NhLmggICAgICAgIHwgMTM5ICsrKysrKysrKysr DQo+ICAgbGliL2xpYnJ0ZV9pcHNlYy9ydGVfaXBzZWNfdmVyc2lvbi5tYXAgfCAgMTAgKw0KPiAg IGxpYi9saWJydGVfaXBzZWMvc2EuYyAgICAgICAgICAgICAgICAgIHwgMzI3ICsrKysrKysrKysr KysrKysrKysrKysrKysNCj4gICBsaWIvbGlicnRlX2lwc2VjL3NhLmggICAgICAgICAgICAgICAg ICB8ICA3NyArKysrKysNCj4gICBsaWIvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArDQo+ICAgbWsvcnRlLmFwcC5tayAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDIgKw0KPiAgIDEyIGZpbGVzIGNoYW5nZWQsIDY1MSBpbnNlcnRpb25zKCspDQo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfaXBzZWMvTWFrZWZpbGUNCj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgbGliL2xpYnJ0ZV9pcHNlYy9pcHNlY19zcW4uaA0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsaWIvbGlicnRlX2lwc2VjL21lc29uLmJ1aWxkDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxp Yi9saWJydGVfaXBzZWMvcnRlX2lwc2VjX3NhLmgNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli L2xpYnJ0ZV9pcHNlYy9ydGVfaXBzZWNfdmVyc2lvbi5tYXANCj4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgbGliL2xpYnJ0ZV9pcHNlYy9zYS5jDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJy dGVfaXBzZWMvc2EuaA0KPg0KPiBkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVS Uw0KPiBpbmRleCA3MWJhMzEyMDguLjNjZjBhODRhMiAxMDA2NDQNCj4gLS0tIGEvTUFJTlRBSU5F UlMNCj4gKysrIGIvTUFJTlRBSU5FUlMNCj4gQEAgLTEwNzEsNiArMTA3MSwxMSBAQCBGOiBkb2Mv Z3VpZGVzL3Byb2dfZ3VpZGUvcGR1bXBfbGliLnJzdA0KPiAgIEY6IGFwcC9wZHVtcC8NCj4gICBG OiBkb2MvZ3VpZGVzL3Rvb2xzL3BkdW1wLnJzdA0KPiAgIA0KPiArSVBzZWMgLSBFWFBFUklNRU5U QUwNCj4gK006IEtvbnN0YW50aW4gQW5hbnlldiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNv bT4NCj4gK0Y6IGxpYi9saWJydGVfaXBzZWMvDQo+ICtNOiBCZXJuYXJkIElyZW1vbmdlciA8YmVy bmFyZC5pcmVtb25nZXJAaW50ZWwuY29tPg0KPiArRjogdGVzdC90ZXN0L3Rlc3RfaXBzZWMuYw0K PiAgIA0KUGxlYXNlIGFkZCAiVDogZ2l0Oi8vZHBkay5vcmcvbmV4dC9kcGRrLW5leHQtY3J5cHRv IiBhcyBpdCB3b3VsZCBiZSANCm1haW50YWluZWQgaW4gY3J5cHRvIHN1YiB0cmVlIGluIGZ1dHVy ZS4NCj4gICBQYWNrZXQgRnJhbWV3b3JrDQo+ICAgLS0tLS0tLS0tLS0tLS0tLQ0KPiBkaWZmIC0t Z2l0IGEvY29uZmlnL2NvbW1vbl9iYXNlIGIvY29uZmlnL2NvbW1vbl9iYXNlDQo+IGluZGV4IGQx MmFlOThiYy4uMzI0OTlkNzcyIDEwMDY0NA0KPiAtLS0gYS9jb25maWcvY29tbW9uX2Jhc2UNCj4g KysrIGIvY29uZmlnL2NvbW1vbl9iYXNlDQo+IEBAIC05MjUsNiArOTI1LDExIEBAIENPTkZJR19S VEVfTElCUlRFX0JQRj15DQo+ICAgIyBhbGxvdyBsb2FkIEJQRiBmcm9tIEVMRiBmaWxlcyAocmVx dWlyZXMgbGliZWxmKQ0KPiAgIENPTkZJR19SVEVfTElCUlRFX0JQRl9FTEY9bg0KPiAgIA0KPiAr Iw0KPiArIyBDb21waWxlIGxpYnJ0ZV9pcHNlYw0KPiArIw0KPiArQ09ORklHX1JURV9MSUJSVEVf SVBTRUM9eQ0KPiArDQo+ICAgIw0KPiAgICMgQ29tcGlsZSB0aGUgdGVzdCBhcHBsaWNhdGlvbg0K PiAgICMNCj4gZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZQ0KPiBpbmRl eCBiNzM3MGVmOTcuLjVkYzc3NDYwNCAxMDA2NDQNCj4gLS0tIGEvbGliL01ha2VmaWxlDQo+ICsr KyBiL2xpYi9NYWtlZmlsZQ0KPiBAQCAtMTA2LDYgKzEwNiw4IEBAIERFUERJUlMtbGlicnRlX2dz byA6PSBsaWJydGVfZWFsIGxpYnJ0ZV9tYnVmIGxpYnJ0ZV9ldGhkZXYgbGlicnRlX25ldA0KPiAg IERFUERJUlMtbGlicnRlX2dzbyArPSBsaWJydGVfbWVtcG9vbA0KPiAgIERJUlMtJChDT05GSUdf UlRFX0xJQlJURV9CUEYpICs9IGxpYnJ0ZV9icGYNCj4gICBERVBESVJTLWxpYnJ0ZV9icGYgOj0g bGlicnRlX2VhbCBsaWJydGVfbWVtcG9vbCBsaWJydGVfbWJ1ZiBsaWJydGVfZXRoZGV2DQo+ICtE SVJTLSQoQ09ORklHX1JURV9MSUJSVEVfSVBTRUMpICs9IGxpYnJ0ZV9pcHNlYw0KPiArREVQRElS Uy1saWJydGVfaXBzZWMgOj0gbGlicnRlX2VhbCBsaWJydGVfbWJ1ZiBsaWJydGVfY3J5cHRvZGV2 IGxpYnJ0ZV9zZWN1cml0eQ0KPiAgIERJUlMtJChDT05GSUdfUlRFX0xJQlJURV9URUxFTUVUUlkp ICs9IGxpYnJ0ZV90ZWxlbWV0cnkNCj4gICBERVBESVJTLWxpYnJ0ZV90ZWxlbWV0cnkgOj0gbGli cnRlX2VhbCBsaWJydGVfbWV0cmljcyBsaWJydGVfZXRoZGV2DQo+ICAgDQo+IGRpZmYgLS1naXQg YS9saWIvbGlicnRlX2lwc2VjL01ha2VmaWxlIGIvbGliL2xpYnJ0ZV9pcHNlYy9NYWtlZmlsZQ0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAuLjc3NThkY2M2ZA0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL2xpYi9saWJydGVfaXBzZWMvTWFrZWZpbGUNCj4gQEAgLTAs MCArMSwyNCBAQA0KPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ ICsjIENvcHlyaWdodChjKSAyMDE4IEludGVsIENvcnBvcmF0aW9uDQo+ICsNCj4gK2luY2x1ZGUg JChSVEVfU0RLKS9tay9ydGUudmFycy5taw0KPiArDQo+ICsjIGxpYnJhcnkgbmFtZQ0KPiArTElC ID0gbGlicnRlX2lwc2VjLmENCj4gKw0KPiArQ0ZMQUdTICs9IC1PMw0KPiArQ0ZMQUdTICs9ICQo V0VSUk9SX0ZMQUdTKSAtSSQoU1JDRElSKQ0KPiArQ0ZMQUdTICs9IC1EQUxMT1dfRVhQRVJJTUVO VEFMX0FQSQ0KPiArTERMSUJTICs9IC1scnRlX2VhbCAtbHJ0ZV9tYnVmIC1scnRlX2NyeXB0b2Rl diAtbHJ0ZV9zZWN1cml0eQ0KPiArDQo+ICtFWFBPUlRfTUFQIDo9IHJ0ZV9pcHNlY192ZXJzaW9u Lm1hcA0KPiArDQo+ICtMSUJBQklWRVIgOj0gMQ0KPiArDQo+ICsjIGFsbCBzb3VyY2UgYXJlIHN0 b3JlZCBpbiBTUkNTLXkNCj4gK1NSQ1MtJChDT05GSUdfUlRFX0xJQlJURV9JUFNFQykgKz0gc2Eu Yw0KPiArDQo+ICsjIGluc3RhbGwgaGVhZGVyIGZpbGVzDQo+ICtTWU1MSU5LLSQoQ09ORklHX1JU RV9MSUJSVEVfSVBTRUMpLWluY2x1ZGUgKz0gcnRlX2lwc2VjX3NhLmgNCj4gKw0KPiAraW5jbHVk ZSAkKFJURV9TREspL21rL3J0ZS5saWIubWsNCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfaXBz ZWMvaXBzZWNfc3FuLmggYi9saWIvbGlicnRlX2lwc2VjL2lwc2VjX3Nxbi5oDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMC4uMTkzNWY2ZTMwDQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvbGliL2xpYnJ0ZV9pcHNlYy9pcHNlY19zcW4uaA0KPiBAQCAtMCwwICsxLDQ4 IEBADQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ICsgKiBD b3B5cmlnaHQoYykgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiArICovDQo+ICsNCj4gKyNpZm5k ZWYgX0lQU0VDX1NRTl9IXw0KPiArI2RlZmluZSBfSVBTRUNfU1FOX0hfDQo+ICsNCj4gKyNkZWZp bmUgV0lORE9XX0JVQ0tFVF9CSVRTCQk2IC8qIHVpbnQ2NF90ICovDQo+ICsjZGVmaW5lIFdJTkRP V19CVUNLRVRfU0laRQkJKDEgPDwgV0lORE9XX0JVQ0tFVF9CSVRTKQ0KPiArI2RlZmluZSBXSU5E T1dfQklUX0xPQ19NQVNLCQkoV0lORE9XX0JVQ0tFVF9TSVpFIC0gMSkNCj4gKw0KPiArLyogbWlu aW11bSBudW1iZXIgb2YgYnVja2V0LCBwb3dlciBvZiAyKi8NCj4gKyNkZWZpbmUgV0lORE9XX0JV Q0tFVF9NSU4JCTINCj4gKyNkZWZpbmUgV0lORE9XX0JVQ0tFVF9NQVgJCShJTlQxNl9NQVggKyAx KQ0KPiArDQo+ICsjZGVmaW5lIElTX0VTTihzYSkJKChzYSktPnNxbl9tYXNrID09IFVJTlQ2NF9N QVgpDQo+ICsNCj4gKy8qDQo+ICsgKiBmb3IgZ2l2ZW4gc2l6ZSwgY2FsY3VsYXRlIHJlcXVpcmVk IG51bWJlciBvZiBidWNrZXRzLg0KPiArICovDQo+ICtzdGF0aWMgdWludDMyX3QNCj4gK3JlcGxh eV9udW1fYnVja2V0KHVpbnQzMl90IHdzeikNCj4gK3sNCj4gKwl1aW50MzJfdCBuYjsNCj4gKw0K PiArCW5iID0gcnRlX2FsaWduMzJwb3cyKFJURV9BTElHTl9NVUxfQ0VJTCh3c3osIFdJTkRPV19C VUNLRVRfU0laRSkgLw0KPiArCQlXSU5ET1dfQlVDS0VUX1NJWkUpOw0KPiArCW5iID0gUlRFX01B WChuYiwgKHVpbnQzMl90KVdJTkRPV19CVUNLRVRfTUlOKTsNCj4gKw0KPiArCXJldHVybiBuYjsN Cj4gK30NCj4gKw0KPiArLyoqDQo+ICsgKiBCYXNlZCBvbiBudW1iZXIgb2YgYnVja2V0cyBjYWxj dWxhdGVkIHJlcXVpcmVkIHNpemUgZm9yIHRoZQ0KPiArICogc3RydWN0dXJlIHRoYXQgaG9sZHMg cmVwbGF5IHdpbmRvdyBhbmQgc2VxdWVuY2UgbnVtYmVyIChSU04pIGluZm9ybWF0aW9uLg0KPiAr ICovDQo+ICtzdGF0aWMgc2l6ZV90DQo+ICtyc25fc2l6ZSh1aW50MzJfdCBuYl9idWNrZXQpDQo+ ICt7DQo+ICsJc2l6ZV90IHN6Ow0KPiArCXN0cnVjdCByZXBsYXlfc3FuICpyc247DQo+ICsNCj4g KwlzeiA9IHNpemVvZigqcnNuKSArIG5iX2J1Y2tldCAqIHNpemVvZihyc24tPndpbmRvd1swXSk7 DQo+ICsJc3ogPSBSVEVfQUxJR05fQ0VJTChzeiwgUlRFX0NBQ0hFX0xJTkVfU0laRSk7DQo+ICsJ cmV0dXJuIHN6Ow0KPiArfQ0KPiArDQo+ICsjZW5kaWYgLyogX0lQU0VDX1NRTl9IXyAqLw0KPiBk aWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9pcHNlYy9tZXNvbi5idWlsZCBiL2xpYi9saWJydGVfaXBz ZWMvbWVzb24uYnVpbGQNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw Li41MmM3OGVhZWINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9saWIvbGlicnRlX2lwc2VjL21l c29uLmJ1aWxkDQo+IEBAIC0wLDAgKzEsMTAgQEANCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0zLUNsYXVzZQ0KPiArIyBDb3B5cmlnaHQoYykgMjAxOCBJbnRlbCBDb3Jwb3JhdGlv bg0KPiArDQo+ICthbGxvd19leHBlcmltZW50YWxfYXBpcyA9IHRydWUNCj4gKw0KPiArc291cmNl cz1maWxlcygnc2EuYycpDQo+ICsNCj4gK2luc3RhbGxfaGVhZGVycyA9IGZpbGVzKCdydGVfaXBz ZWNfc2EuaCcpDQo+ICsNCj4gK2RlcHMgKz0gWydtYnVmJywgJ25ldCcsICdjcnlwdG9kZXYnLCAn c2VjdXJpdHknXQ0Kd2UgbmVlZCBuZXQgaW4gbWVzb24gYW5kIG5vdCBpbiBNYWtlZmlsZSA/DQo+ IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2lwc2VjL3J0ZV9pcHNlY19zYS5oIGIvbGliL2xpYnJ0 ZV9pcHNlYy9ydGVfaXBzZWNfc2EuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAuLjRlMzZmZDk5Yg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2xpYi9saWJydGVf aXBzZWMvcnRlX2lwc2VjX3NhLmgNCj4gQEAgLTAsMCArMSwxMzkgQEANCj4gKy8qIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChjKSAyMDE4IElu dGVsIENvcnBvcmF0aW9uDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfUlRFX0lQU0VDX1NBX0hf DQo+ICsjZGVmaW5lIF9SVEVfSVBTRUNfU0FfSF8NCj4gKw0KPiArLyoqDQo+ICsgKiBAZmlsZSBy dGVfaXBzZWNfc2EuaA0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdl IHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+ICsgKg0KPiArICogRGVmaW5lcyBBUEkgdG8gbWFuYWdl IElQc2VjIFNlY3VyaXR5IEFzc29jaWF0aW9uIChTQSkgb2JqZWN0cy4NCj4gKyAqLw0KPiArDQo+ ICsjaW5jbHVkZSA8cnRlX2NvbW1vbi5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9jcnlwdG9kZXYuaD4N Cj4gKyNpbmNsdWRlIDxydGVfc2VjdXJpdHkuaD4NCj4gKw0KPiArI2lmZGVmIF9fY3BsdXNwbHVz DQo+ICtleHRlcm4gIkMiIHsNCj4gKyNlbmRpZg0KPiArDQo+ICsvKioNCj4gKyAqIEFuIG9wYXF1 ZSBzdHJ1Y3R1cmUgdG8gcmVwcmVzZW50IFNlY3VyaXR5IEFzc29jaWF0aW9uIChTQSkuDQo+ICsg Ki8NCj4gK3N0cnVjdCBydGVfaXBzZWNfc2E7DQo+ICsNCj4gKy8qKg0KPiArICogU0EgaW5pdGlh bGl6YXRpb24gcGFyYW1ldGVycy4NCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9pcHNlY19zYV9wcm0g ew0KPiArDQo+ICsJdWludDY0X3QgdXNlcmRhdGE7IC8qKjwgcHJvdmlkZWQgYW5kIGludGVycHJl dGVkIGJ5IHVzZXIgKi8NCj4gKwl1aW50NjRfdCBmbGFnczsgIC8qKjwgc2VlIFJURV9JUFNFQ19T QUZMQUdfKiBiZWxvdyAqLw0KPiArCS8qKiBpcHNlYyBjb25maWd1cmF0aW9uICovDQo+ICsJc3Ry dWN0IHJ0ZV9zZWN1cml0eV9pcHNlY194Zm9ybSBpcHNlY194Zm9ybTsNCj4gKwlzdHJ1Y3QgcnRl X2NyeXB0b19zeW1feGZvcm0gKmNyeXB0b194Zm9ybTsNCmNvbW1lbnQgbWlzc2luZw0KPiArCXVu aW9uIHsNCj4gKwkJc3RydWN0IHsNCj4gKwkJCXVpbnQ4X3QgaGRyX2xlbjsgICAgIC8qKjwgdHVu bmVsIGhlYWRlciBsZW4gKi8NCj4gKwkJCXVpbnQ4X3QgaGRyX2wzX29mZjsgIC8qKjwgb2Zmc2V0 IGZvciBJUHY0L0lQdjYgaGVhZGVyICovDQo+ICsJCQl1aW50OF90IG5leHRfcHJvdG87ICAvKio8 IG5leHQgaGVhZGVyIHByb3RvY29sICovDQo+ICsJCQljb25zdCB2b2lkICpoZHI7ICAgICAvKio8 IHR1bm5lbCBoZWFkZXIgdGVtcGxhdGUgKi8NCj4gKwkJfSB0dW47IC8qKjwgdHVubmVsIG1vZGUg cmVwYXRlZCBwYXJhbWV0ZXJzICovDQpzcGVsbCBjaGVjaw0KPiArCQlzdHJ1Y3Qgew0KPiArCQkJ dWludDhfdCBwcm90bzsgIC8qKjwgbmV4dCBoZWFkZXIgcHJvdG9jb2wgKi8NCj4gKwkJfSB0cnM7 IC8qKjwgdHJhbnNwb3J0IG1vZGUgcmVwYXRlZCBwYXJhbWV0ZXJzICovDQpzcGVsbCBjaGVjaw0K PiArCX07DQo+ICsNCj4gKwl1aW50MzJfdCByZXBsYXlfd2luX3N6Ow0KPiArCS8qKjwgd2luZG93 IHNpemUgdG8gZW5hYmxlIHNlcXVlbmNlIHJlcGxheSBhdHRhY2sgaGFuZGxpbmcuDQo+ICsJICog UmVwbGF5IGNoZWNraW5nIGlzIGRpc2FibGVkIGlmIHRoZSB3aW5kb3cgc2l6ZSBpcyAwLg0KPiAr CSAqLw0KQXMgcGVyIGRpc2N1c3Npb25zIG9uIE1MLCBjb21tZW50cyBzaGFsbCBlaXRoZXIgYmUg YmVmb3JlIHRoZSBwYXJhbSBvciANCml0IGNhbiBiZSBpbiB0aGUgc2FtZSBsaW5lIGFzIHBhcmFt IGFuZCBub3QgaW4gbmV4dCBsaW5lLiBQbGVhc2UgY2hlY2sgDQppbiByZXN0IG9mIHRoZSBwYXRj aCBhcyB3ZWxsLg0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBTQSB0eXBlIGlzIGFuIDY0LWJp dCB2YWx1ZSB0aGF0IGNvbnRhaW4gdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoNCj4gKyAqIC0g SVAgdmVyc2lvbiAoSVB2NC9JUHY2KQ0KPiArICogLSBJUHNlYyBwcm90byAoRVNQL0FIKQ0KPiAr ICogLSBpbmJvdW5kL291dGJvdW5kDQo+ICsgKiAtIG1vZGUgKFRSQU5TUE9SVC9UVU5ORUwpDQo+ ICsgKiAtIGZvciBUVU5ORUwgb3V0ZXIgSVAgdmVyc2lvbiAoSVB2NC9JUHY2KQ0KPiArICogLi4u DQo+ICsgKi8NCj4gKw0KPiArZW51bSB7DQo+ICsJUlRFX1NBVFBfTE9HX0lQViwNCj4gKwlSVEVf U0FUUF9MT0dfUFJPVE8sDQo+ICsJUlRFX1NBVFBfTE9HX0RJUiwNCj4gKwlSVEVfU0FUUF9MT0df TU9ERSwNCj4gKwlSVEVfU0FUUF9MT0dfTlVNDQo+ICt9Ow0Kd2hhdCBpcyB0aGUgc2lnbmlmaWNh bmNlIG9mIExPRyBoZXJlLg0KPiArDQo+ICsjZGVmaW5lIFJURV9JUFNFQ19TQVRQX0lQVl9NQVNL CQkoMVVMTCA8PCBSVEVfU0FUUF9MT0dfSVBWKQ0KPiArI2RlZmluZSBSVEVfSVBTRUNfU0FUUF9J UFY0CQkoMFVMTCA8PCBSVEVfU0FUUF9MT0dfSVBWKQ0KPiArI2RlZmluZSBSVEVfSVBTRUNfU0FU UF9JUFY2CQkoMVVMTCA8PCBSVEVfU0FUUF9MT0dfSVBWKQ0KPiArDQo+ICsjZGVmaW5lIFJURV9J UFNFQ19TQVRQX1BST1RPX01BU0sJKDFVTEwgPDwgUlRFX1NBVFBfTE9HX1BST1RPKQ0KPiArI2Rl ZmluZSBSVEVfSVBTRUNfU0FUUF9QUk9UT19BSAkJKDBVTEwgPDwgUlRFX1NBVFBfTE9HX1BST1RP KQ0KPiArI2RlZmluZSBSVEVfSVBTRUNfU0FUUF9QUk9UT19FU1AJKDFVTEwgPDwgUlRFX1NBVFBf TE9HX1BST1RPKQ0KPiArDQo+ICsjZGVmaW5lIFJURV9JUFNFQ19TQVRQX0RJUl9NQVNLCQkoMVVM TCA8PCBSVEVfU0FUUF9MT0dfRElSKQ0KPiArI2RlZmluZSBSVEVfSVBTRUNfU0FUUF9ESVJfSUIJ CSgwVUxMIDw8IFJURV9TQVRQX0xPR19ESVIpDQo+ICsjZGVmaW5lIFJURV9JUFNFQ19TQVRQX0RJ Ul9PQgkJKDFVTEwgPDwgUlRFX1NBVFBfTE9HX0RJUikNCj4gKw0KPiArI2RlZmluZSBSVEVfSVBT RUNfU0FUUF9NT0RFX01BU0sJKDNVTEwgPDwgUlRFX1NBVFBfTE9HX01PREUpDQo+ICsjZGVmaW5l IFJURV9JUFNFQ19TQVRQX01PREVfVFJBTlMJKDBVTEwgPDwgUlRFX1NBVFBfTE9HX01PREUpDQo+ ICsjZGVmaW5lIFJURV9JUFNFQ19TQVRQX01PREVfVFVOTFY0CSgxVUxMIDw8IFJURV9TQVRQX0xP R19NT0RFKQ0KPiArI2RlZmluZSBSVEVfSVBTRUNfU0FUUF9NT0RFX1RVTkxWNgkoMlVMTCA8PCBS VEVfU0FUUF9MT0dfTU9ERSkNCj4gKw0KPiArLyoqDQo+ICsgKiBnZXQgdHlwZSBvZiBnaXZlbiBT QQ0KPiArICogQHJldHVybg0KPiArICogICBTQSB0eXBlIHZhbHVlLg0KPiArICovDQo+ICt1aW50 NjRfdCBfX3J0ZV9leHBlcmltZW50YWwNCj4gK3J0ZV9pcHNlY19zYV90eXBlKGNvbnN0IHN0cnVj dCBydGVfaXBzZWNfc2EgKnNhKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBDYWxjdWxhdGUgcmVxdWll ZCBTQSBzaXplIGJhc2VkIG9uIHByb3ZpZGVkIGlucHV0IHBhcmFtZXRlcnMuDQpzcGVsbCBjaGVj aw0KPiArICogQHBhcmFtIHBybQ0KPiArICogICBQYXJhbWV0ZXJzIHRoYXQgd2lsIGJlIHVzZWQg dG8gaW5pdGlhbGlzZSBTQSBvYmplY3QuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIC0gQWN0dWFs IHNpemUgcmVxdWlyZWQgZm9yIFNBIHdpdGggZ2l2ZW4gcGFyYW1ldGVycy4NCj4gKyAqICAgLSAt RUlOVkFMIGlmIHRoZSBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLg0KPiArICovDQo+ICtpbnQgX19y dGVfZXhwZXJpbWVudGFsDQo+ICtydGVfaXBzZWNfc2Ffc2l6ZShjb25zdCBzdHJ1Y3QgcnRlX2lw c2VjX3NhX3BybSAqcHJtKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBpbml0aWFsaXNlIFNBIGJhc2Vk IG9uIHByb3ZpZGVkIGlucHV0IHBhcmFtZXRlcnMuDQo+ICsgKiBAcGFyYW0gc2ENCj4gKyAqICAg U0Egb2JqZWN0IHRvIGluaXRpYWxpc2UuDQo+ICsgKiBAcGFyYW0gcHJtDQo+ICsgKiAgIFBhcmFt ZXRlcnMgdXNlZCB0byBpbml0aWFsaXNlIGdpdmVuIFNBIG9iamVjdC4NCj4gKyAqIEBwYXJhbSBz aXplDQo+ICsgKiAgIHNpemUgb2YgdGhlIHByb3ZpZGVkIGJ1ZmZlciBmb3IgU0EuDQo+ICsgKiBA cmV0dXJuDQo+ICsgKiAgIC0gQWN0dWFsIHNpemUgb2YgU0Egb2JqZWN0IGlmIG9wZXJhdGlvbiBj b21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArICogICAtIC1FSU5WQUwgaWYgdGhlIHBhcmFtZXRl cnMgYXJlIGludmFsaWQuDQo+ICsgKiAgIC0gLUVOT1NQQyBpZiB0aGUgc2l6ZSBvZiB0aGUgcHJv dmlkZWQgYnVmZmVyIGlzIG5vdCBiaWcgZW5vdWdoLg0KPiArICovDQo+ICtpbnQgX19ydGVfZXhw ZXJpbWVudGFsDQo+ICtydGVfaXBzZWNfc2FfaW5pdChzdHJ1Y3QgcnRlX2lwc2VjX3NhICpzYSwg Y29uc3Qgc3RydWN0IHJ0ZV9pcHNlY19zYV9wcm0gKnBybSwNCj4gKwl1aW50MzJfdCBzaXplKTsN Cj4gKw0KPiArLyoqDQo+ICsgKiBjbGVhbnVwIFNBDQo+ICsgKiBAcGFyYW0gc2ENCj4gKyAqICAg UG9pbnRlciB0byBTQSBvYmplY3QgdG8gZGUtaW5pdGlhbGl6ZS4NCj4gKyAqLw0KPiArdm9pZCBf X3J0ZV9leHBlcmltZW50YWwNCj4gK3J0ZV9pcHNlY19zYV9maW5pKHN0cnVjdCBydGVfaXBzZWNf c2EgKnNhKTsNCj4gKw0KPiArI2lmZGVmIF9fY3BsdXNwbHVzDQo+ICt9DQo+ICsjZW5kaWYNCj4g Kw0KPiArI2VuZGlmIC8qIF9SVEVfSVBTRUNfU0FfSF8gKi8NCj4gZGlmZiAtLWdpdCBhL2xpYi9s aWJydGVfaXBzZWMvcnRlX2lwc2VjX3ZlcnNpb24ubWFwIGIvbGliL2xpYnJ0ZV9pcHNlYy9ydGVf aXBzZWNfdmVyc2lvbi5tYXANCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwLi4xYTY2NzI2YjgNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9saWIvbGlicnRlX2lwc2Vj L3J0ZV9pcHNlY192ZXJzaW9uLm1hcA0KPiBAQCAtMCwwICsxLDEwIEBADQo+ICtFWFBFUklNRU5U QUwgew0KPiArCWdsb2JhbDoNCj4gKw0KPiArCXJ0ZV9pcHNlY19zYV9maW5pOw0KPiArCXJ0ZV9p cHNlY19zYV9pbml0Ow0KPiArCXJ0ZV9pcHNlY19zYV9zaXplOw0KPiArCXJ0ZV9pcHNlY19zYV90 eXBlOw0KPiArDQo+ICsJbG9jYWw6ICo7DQo+ICt9Ow0KPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0 ZV9pcHNlYy9zYS5jIGIvbGliL2xpYnJ0ZV9pcHNlYy9zYS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMC4uZjkyN2E4MmJmDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvbGliL2xpYnJ0ZV9pcHNlYy9zYS5jDQo+IEBAIC0wLDAgKzEsMzI3IEBADQo+ICsvKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ICsgKiBDb3B5cmlnaHQoYykgMjAx OCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxydGVfaXBzZWNf c2EuaD4NCj4gKyNpbmNsdWRlIDxydGVfZXNwLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2lwLmg+DQo+ ICsjaW5jbHVkZSA8cnRlX2Vycm5vLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJzYS5oIg0KPiArI2lu Y2x1ZGUgImlwc2VjX3Nxbi5oIg0KPiArDQo+ICsvKiBzb21lIGhlbHBlciBzdHJ1Y3R1cmVzICov DQo+ICtzdHJ1Y3QgY3J5cHRvX3hmb3JtIHsNCj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b19hdXRoX3hm b3JtICphdXRoOw0KPiArCXN0cnVjdCBydGVfY3J5cHRvX2NpcGhlcl94Zm9ybSAqY2lwaGVyOw0K PiArCXN0cnVjdCBydGVfY3J5cHRvX2FlYWRfeGZvcm0gKmFlYWQ7DQo+ICt9Ow0Kc2hvdWxkbid0 IHRoaXMgYmUgdW5pb24gYXMgYWVhZCBjYW5ub3QgYmUgd2l0aCBjaXBoZXIgYW5kIGF1dGggY2Fz ZXMuDQoNCmV4dHJhIGxpbmUNCj4gKw0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtjaGVja19jcnlw dG9feGZvcm0oc3RydWN0IGNyeXB0b194Zm9ybSAqeGZvcm0pDQo+ICt7DQo+ICsJdWludHB0cl90 IHA7DQo+ICsNCj4gKwlwID0gKHVpbnRwdHJfdCl4Zm9ybS0+YXV0aCB8ICh1aW50cHRyX3QpeGZv cm0tPmNpcGhlcjsNCndoYXQgaXMgdGhlIGludGVudCBvZiB0aGlzPw0KPiArDQo+ICsJLyogZWl0 aGVyIGFlYWQgb3IgYm90aCBhdXRoIGFuZCBjaXBoZXIgc2hvdWxkIGJlIG5vdCBOVUxMcyAqLw0K PiArCWlmICh4Zm9ybS0+YWVhZCkgew0KPiArCQlpZiAocCkNCj4gKwkJCXJldHVybiAtRUlOVkFM Ow0KPiArCX0gZWxzZSBpZiAocCA9PSAodWludHB0cl90KXhmb3JtLT5hdXRoKSB7DQo+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiArCX0NClRoaXMgZnVuY3Rpb24gZG9lcyBub3QgbG9vayBnb29kLiBJ dCB3aWxsIG1pc3MgdGhlIGNhc2Ugb2YgY2lwaGVyIG9ubHkNCj4gKw0KPiArCXJldHVybiAwOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtmaWxsX2NyeXB0b194Zm9ybShzdHJ1Y3QgY3J5 cHRvX3hmb3JtICp4Zm9ybSwNCj4gKwljb25zdCBzdHJ1Y3QgcnRlX2lwc2VjX3NhX3BybSAqcHJt KQ0KPiArew0KPiArCXN0cnVjdCBydGVfY3J5cHRvX3N5bV94Zm9ybSAqeGY7DQo+ICsNCj4gKwlt ZW1zZXQoeGZvcm0sIDAsIHNpemVvZigqeGZvcm0pKTsNCj4gKw0KPiArCWZvciAoeGYgPSBwcm0t PmNyeXB0b194Zm9ybTsgeGYgIT0gTlVMTDsgeGYgPSB4Zi0+bmV4dCkgew0KPiArCQlpZiAoeGYt PnR5cGUgPT0gUlRFX0NSWVBUT19TWU1fWEZPUk1fQVVUSCkgew0KPiArCQkJaWYgKHhmb3JtLT5h dXRoICE9IE5VTEwpDQo+ICsJCQkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJCQl4Zm9ybS0+YXV0aCA9 ICZ4Zi0+YXV0aDsNCj4gKwkJfSBlbHNlIGlmICh4Zi0+dHlwZSA9PSBSVEVfQ1JZUFRPX1NZTV9Y Rk9STV9DSVBIRVIpIHsNCj4gKwkJCWlmICh4Zm9ybS0+Y2lwaGVyICE9IE5VTEwpDQo+ICsJCQkJ cmV0dXJuIC1FSU5WQUw7DQo+ICsJCQl4Zm9ybS0+Y2lwaGVyID0gJnhmLT5jaXBoZXI7DQo+ICsJ CX0gZWxzZSBpZiAoeGYtPnR5cGUgPT0gUlRFX0NSWVBUT19TWU1fWEZPUk1fQUVBRCkgew0KPiAr CQkJaWYgKHhmb3JtLT5hZWFkICE9IE5VTEwpDQo+ICsJCQkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJ CQl4Zm9ybS0+YWVhZCA9ICZ4Zi0+YWVhZDsNCj4gKwkJfSBlbHNlDQo+ICsJCQlyZXR1cm4gLUVJ TlZBTDsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gY2hlY2tfY3J5cHRvX3hmb3JtKHhmb3JtKTsN Cj4gK30NCmhvdyBpcyB0aGlzIGZ1bmN0aW9uIGhhbmRsaW5nIHRoZSBpbmJvdW5kIGFuZCBvdXRi b3VuZCBjYXNlcy4NCkluIGluYm91bmQgZmlyc3QgeGZvcm0gaXMgYXV0aCBhbmQgdGhlbiBjaXBo ZXIuDQpJbiBvdXRib3VuZCBmaXJzdCBpcyBjaXBoZXIgYW5kIHRoZW4gYXV0aC4gSSB0aGluayB0 aGlzIHNob3VsZCBiZSANCmNoZWNrZWQgaW4gdGhlIGxpYi4NCkhlcmUgZm9yIGxvb3Agc2hvdWxk IG5vdCBiZSB0aGVyZSwgYXMgdGhlcmUgd291bGQgYmUgYXQgbWF4IG9ubHkgMiB4Zm9ybXMuDQo+ ICsNCj4gK3VpbnQ2NF90IF9fcnRlX2V4cGVyaW1lbnRhbA0KPiArcnRlX2lwc2VjX3NhX3R5cGUo Y29uc3Qgc3RydWN0IHJ0ZV9pcHNlY19zYSAqc2EpDQo+ICt7DQo+ICsJcmV0dXJuIHNhLT50eXBl Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50MzJfdA0KPiAraXBzZWNfc2Ffc2l6ZSh1aW50MzJf dCB3c3osIHVpbnQ2NF90IHR5cGUsIHVpbnQzMl90ICpuYl9idWNrZXQpDQo+ICt7DQo+ICsJdWlu dDMyX3Qgbiwgc3o7DQo+ICsNCj4gKwluID0gMDsNCj4gKwlpZiAod3N6ICE9IDAgJiYgKHR5cGUg JiBSVEVfSVBTRUNfU0FUUF9ESVJfTUFTSykgPT0NCj4gKwkJCVJURV9JUFNFQ19TQVRQX0RJUl9J QikNCj4gKwkJbiA9IHJlcGxheV9udW1fYnVja2V0KHdzeik7DQo+ICsNCj4gKwlpZiAobiA+IFdJ TkRPV19CVUNLRVRfTUFYKQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArCSpuYl9idWNr ZXQgPSBuOw0KPiArDQo+ICsJc3ogPSByc25fc2l6ZShuKTsNCj4gKwlzeiArPSBzaXplb2Yoc3Ry dWN0IHJ0ZV9pcHNlY19zYSk7DQo+ICsJcmV0dXJuIHN6Ow0KPiArfQ0KPiArDQo+ICt2b2lkIF9f cnRlX2V4cGVyaW1lbnRhbA0KPiArcnRlX2lwc2VjX3NhX2Zpbmkoc3RydWN0IHJ0ZV9pcHNlY19z YSAqc2EpDQo+ICt7DQo+ICsJbWVtc2V0KHNhLCAwLCBzYS0+c2l6ZSk7DQo+ICt9DQpXaGVyZSBp cyB0aGUgbWVtb3J5IG9mICJzYSIgZ2V0dGluZyBpbml0aWFsaXplZD8NCj4gKw0KPiArc3RhdGlj IGludA0KPiArZmlsbF9zYV90eXBlKGNvbnN0IHN0cnVjdCBydGVfaXBzZWNfc2FfcHJtICpwcm0s IHVpbnQ2NF90ICp0eXBlKQ0KPiArew0KPiArCXVpbnQ2NF90IHRwOw0KPiArDQo+ICsJdHAgPSAw Ow0KPiArDQo+ICsJaWYgKHBybS0+aXBzZWNfeGZvcm0ucHJvdG8gPT0gUlRFX1NFQ1VSSVRZX0lQ U0VDX1NBX1BST1RPX0FIKQ0KPiArCQl0cCB8PSBSVEVfSVBTRUNfU0FUUF9QUk9UT19BSDsNCj4g KwllbHNlIGlmIChwcm0tPmlwc2VjX3hmb3JtLnByb3RvID09IFJURV9TRUNVUklUWV9JUFNFQ19T QV9QUk9UT19FU1ApDQo+ICsJCXRwIHw9IFJURV9JUFNFQ19TQVRQX1BST1RPX0VTUDsNCj4gKwll bHNlDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJaWYgKHBybS0+aXBzZWNfeGZvcm0u ZGlyZWN0aW9uID09IFJURV9TRUNVUklUWV9JUFNFQ19TQV9ESVJfRUdSRVNTKQ0KPiArCQl0cCB8 PSBSVEVfSVBTRUNfU0FUUF9ESVJfT0I7DQo+ICsJZWxzZSBpZiAocHJtLT5pcHNlY194Zm9ybS5k aXJlY3Rpb24gPT0NCj4gKwkJCVJURV9TRUNVUklUWV9JUFNFQ19TQV9ESVJfSU5HUkVTUykNCj4g KwkJdHAgfD0gUlRFX0lQU0VDX1NBVFBfRElSX0lCOw0KPiArCWVsc2UNCj4gKwkJcmV0dXJuIC1F SU5WQUw7DQo+ICsNCj4gKwlpZiAocHJtLT5pcHNlY194Zm9ybS5tb2RlID09IFJURV9TRUNVUklU WV9JUFNFQ19TQV9NT0RFX1RVTk5FTCkgew0KPiArCQlpZiAocHJtLT5pcHNlY194Zm9ybS50dW5u ZWwudHlwZSA9PQ0KPiArCQkJCVJURV9TRUNVUklUWV9JUFNFQ19UVU5ORUxfSVBWNCkNCj4gKwkJ CXRwIHw9IFJURV9JUFNFQ19TQVRQX01PREVfVFVOTFY0Ow0KPiArCQllbHNlIGlmIChwcm0tPmlw c2VjX3hmb3JtLnR1bm5lbC50eXBlID09DQo+ICsJCQkJUlRFX1NFQ1VSSVRZX0lQU0VDX1RVTk5F TF9JUFY2KQ0KPiArCQkJdHAgfD0gUlRFX0lQU0VDX1NBVFBfTU9ERV9UVU5MVjY7DQo+ICsJCWVs c2UNCj4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJCWlmIChwcm0tPnR1bi5uZXh0X3By b3RvID09IElQUFJPVE9fSVBJUCkNCj4gKwkJCXRwIHw9IFJURV9JUFNFQ19TQVRQX0lQVjQ7DQo+ ICsJCWVsc2UgaWYgKHBybS0+dHVuLm5leHRfcHJvdG8gPT0gSVBQUk9UT19JUFY2KQ0KPiArCQkJ dHAgfD0gUlRFX0lQU0VDX1NBVFBfSVBWNjsNCj4gKwkJZWxzZQ0KPiArCQkJcmV0dXJuIC1FSU5W QUw7DQo+ICsJfSBlbHNlIGlmIChwcm0tPmlwc2VjX3hmb3JtLm1vZGUgPT0NCj4gKwkJCVJURV9T RUNVUklUWV9JUFNFQ19TQV9NT0RFX1RSQU5TUE9SVCkgew0KPiArCQl0cCB8PSBSVEVfSVBTRUNf U0FUUF9NT0RFX1RSQU5TOw0KPiArCQlpZiAocHJtLT50cnMucHJvdG8gPT0gSVBQUk9UT19JUElQ KQ0KPiArCQkJdHAgfD0gUlRFX0lQU0VDX1NBVFBfSVBWNDsNCj4gKwkJZWxzZSBpZiAocHJtLT50 cnMucHJvdG8gPT0gSVBQUk9UT19JUFY2KQ0KPiArCQkJdHAgfD0gUlRFX0lQU0VDX1NBVFBfSVBW NjsNCj4gKwkJZWxzZQ0KPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfSBlbHNlDQo+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiArDQo+ICsJKnR5cGUgPSB0cDsNCj4gKwlyZXR1cm4gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK2VzcF9pbmJfaW5pdChzdHJ1Y3QgcnRlX2lwc2VjX3Nh ICpzYSkNCj4gK3sNCj4gKwkvKiB0aGVzZSBwYXJhbXMgbWF5IGRpZmZlciB3aXRoIG5ldyBhbGdv cml0aG1zIHN1cHBvcnQgKi8NCj4gKwlzYS0+Y3RwLmF1dGgub2Zmc2V0ID0gMDsNCj4gKwlzYS0+ Y3RwLmF1dGgubGVuZ3RoID0gc2EtPmljdl9sZW4gLSBzYS0+c3FoX2xlbjsNCj4gKwlzYS0+Y3Rw LmNpcGhlci5vZmZzZXQgPSBzaXplb2Yoc3RydWN0IGVzcF9oZHIpICsgc2EtPml2X2xlbjsNCj4g KwlzYS0+Y3RwLmNpcGhlci5sZW5ndGggPSBzYS0+aWN2X2xlbiArIHNhLT5jdHAuY2lwaGVyLm9m ZnNldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK2VzcF9pbmJfdHVuX2luaXQoc3Ry dWN0IHJ0ZV9pcHNlY19zYSAqc2EsIGNvbnN0IHN0cnVjdCBydGVfaXBzZWNfc2FfcHJtICpwcm0p DQo+ICt7DQo+ICsJc2EtPnByb3RvID0gcHJtLT50dW4ubmV4dF9wcm90bzsNCj4gKwllc3BfaW5i X2luaXQoc2EpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZA0KPiArZXNwX291dGJfaW5pdChz dHJ1Y3QgcnRlX2lwc2VjX3NhICpzYSwgdWludDMyX3QgaGxlbikNCj4gK3sNCj4gKwlzYS0+c3Fu Lm91dGIgPSAxOw0KPiArDQo+ICsJLyogdGhlc2UgcGFyYW1zIG1heSBkaWZmZXIgd2l0aCBuZXcg YWxnb3JpdGhtcyBzdXBwb3J0ICovDQo+ICsJc2EtPmN0cC5hdXRoLm9mZnNldCA9IGhsZW47DQo+ ICsJc2EtPmN0cC5hdXRoLmxlbmd0aCA9IHNpemVvZihzdHJ1Y3QgZXNwX2hkcikgKyBzYS0+aXZf bGVuICsgc2EtPnNxaF9sZW47DQo+ICsJaWYgKHNhLT5hYWRfbGVuICE9IDApIHsNCj4gKwkJc2Et PmN0cC5jaXBoZXIub2Zmc2V0ID0gaGxlbiArIHNpemVvZihzdHJ1Y3QgZXNwX2hkcikgKw0KPiAr CQkJc2EtPml2X2xlbjsNCj4gKwkJc2EtPmN0cC5jaXBoZXIubGVuZ3RoID0gMDsNCj4gKwl9IGVs c2Ugew0KPiArCQlzYS0+Y3RwLmNpcGhlci5vZmZzZXQgPSBzYS0+aGRyX2xlbiArIHNpemVvZihz dHJ1Y3QgZXNwX2hkcik7DQo+ICsJCXNhLT5jdHAuY2lwaGVyLmxlbmd0aCA9IHNhLT5pdl9sZW47 DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZA0KPiArZXNwX291dGJfdHVuX2luaXQo c3RydWN0IHJ0ZV9pcHNlY19zYSAqc2EsIGNvbnN0IHN0cnVjdCBydGVfaXBzZWNfc2FfcHJtICpw cm0pDQo+ICt7DQo+ICsJc2EtPnByb3RvID0gcHJtLT50dW4ubmV4dF9wcm90bzsNCj4gKwlzYS0+ aGRyX2xlbiA9IHBybS0+dHVuLmhkcl9sZW47DQo+ICsJc2EtPmhkcl9sM19vZmYgPSBwcm0tPnR1 bi5oZHJfbDNfb2ZmOw0KPiArCW1lbWNweShzYS0+aGRyLCBwcm0tPnR1bi5oZHIsIHNhLT5oZHJf bGVuKTsNCj4gKw0KPiArCWVzcF9vdXRiX2luaXQoc2EsIHNhLT5oZHJfbGVuKTsNCj4gK30NCj4g Kw0KPiArc3RhdGljIGludA0KPiArZXNwX3NhX2luaXQoc3RydWN0IHJ0ZV9pcHNlY19zYSAqc2Es IGNvbnN0IHN0cnVjdCBydGVfaXBzZWNfc2FfcHJtICpwcm0sDQo+ICsJY29uc3Qgc3RydWN0IGNy eXB0b194Zm9ybSAqY3hmKQ0KPiArew0KPiArCXN0YXRpYyBjb25zdCB1aW50NjRfdCBtc2sgPSBS VEVfSVBTRUNfU0FUUF9ESVJfTUFTSyB8DQo+ICsJCQkJUlRFX0lQU0VDX1NBVFBfTU9ERV9NQVNL Ow0KPiArDQo+ICsJaWYgKGN4Zi0+YWVhZCAhPSBOVUxMKSB7DQo+ICsJCS8qIFJGQyA0MTA2ICov DQo+ICsJCWlmIChjeGYtPmFlYWQtPmFsZ28gIT0gUlRFX0NSWVBUT19BRUFEX0FFU19HQ00pDQo+ ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwkJc2EtPmljdl9sZW4gPSBjeGYtPmFlYWQtPmRpZ2Vz dF9sZW5ndGg7DQo+ICsJCXNhLT5pdl9vZnMgPSBjeGYtPmFlYWQtPml2Lm9mZnNldDsNCj4gKwkJ c2EtPml2X2xlbiA9IHNpemVvZih1aW50NjRfdCk7DQo+ICsJCXNhLT5wYWRfYWxpZ24gPSA0Ow0K aGFyZCBjb2RpbmcgPz8NCj4gKwl9IGVsc2Ugew0KPiArCQlzYS0+aWN2X2xlbiA9IGN4Zi0+YXV0 aC0+ZGlnZXN0X2xlbmd0aDsNCj4gKwkJc2EtPml2X29mcyA9IGN4Zi0+Y2lwaGVyLT5pdi5vZmZz ZXQ7DQo+ICsJCXNhLT5zcWhfbGVuID0gSVNfRVNOKHNhKSA/IHNpemVvZih1aW50MzJfdCkgOiAw Ow0KPiArCQlpZiAoY3hmLT5jaXBoZXItPmFsZ28gPT0gUlRFX0NSWVBUT19DSVBIRVJfTlVMTCkg ew0KPiArCQkJc2EtPnBhZF9hbGlnbiA9IDQ7DQo+ICsJCQlzYS0+aXZfbGVuID0gMDsNCj4gKwkJ fSBlbHNlIGlmIChjeGYtPmNpcGhlci0+YWxnbyA9PSBSVEVfQ1JZUFRPX0NJUEhFUl9BRVNfQ0JD KSB7DQo+ICsJCQlzYS0+cGFkX2FsaWduID0gSVBTRUNfTUFYX0lWX1NJWkU7DQo+ICsJCQlzYS0+ aXZfbGVuID0gSVBTRUNfTUFYX0lWX1NJWkU7DQo+ICsJCX0gZWxzZQ0KPiArCQkJcmV0dXJuIC1F SU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJc2EtPnVkYXRhID0gcHJtLT51c2VyZGF0YTsNCj4gKwlz YS0+c3BpID0gcnRlX2NwdV90b19iZV8zMihwcm0tPmlwc2VjX3hmb3JtLnNwaSk7DQo+ICsJc2Et PnNhbHQgPSBwcm0tPmlwc2VjX3hmb3JtLnNhbHQ7DQo+ICsNCj4gKwlzd2l0Y2ggKHNhLT50eXBl ICYgbXNrKSB7DQo+ICsJY2FzZSAoUlRFX0lQU0VDX1NBVFBfRElSX0lCIHwgUlRFX0lQU0VDX1NB VFBfTU9ERV9UVU5MVjQpOg0KPiArCWNhc2UgKFJURV9JUFNFQ19TQVRQX0RJUl9JQiB8IFJURV9J UFNFQ19TQVRQX01PREVfVFVOTFY2KToNCj4gKwkJZXNwX2luYl90dW5faW5pdChzYSwgcHJtKTsN Cj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAoUlRFX0lQU0VDX1NBVFBfRElSX0lCIHwgUlRFX0lQU0VD X1NBVFBfTU9ERV9UUkFOUyk6DQo+ICsJCWVzcF9pbmJfaW5pdChzYSk7DQo+ICsJCWJyZWFrOw0K PiArCWNhc2UgKFJURV9JUFNFQ19TQVRQX0RJUl9PQiB8IFJURV9JUFNFQ19TQVRQX01PREVfVFVO TFY0KToNCj4gKwljYXNlIChSVEVfSVBTRUNfU0FUUF9ESVJfT0IgfCBSVEVfSVBTRUNfU0FUUF9N T0RFX1RVTkxWNik6DQo+ICsJCWVzcF9vdXRiX3R1bl9pbml0KHNhLCBwcm0pOw0KPiArCQlicmVh azsNCj4gKwljYXNlIChSVEVfSVBTRUNfU0FUUF9ESVJfT0IgfCBSVEVfSVBTRUNfU0FUUF9NT0RF X1RSQU5TKToNCj4gKwkJZXNwX291dGJfaW5pdChzYSwgMCk7DQo+ICsJCWJyZWFrOw0KPiArCX0N Cj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtpbnQgX19ydGVfZXhwZXJpbWVudGFs DQo+ICtydGVfaXBzZWNfc2Ffc2l6ZShjb25zdCBzdHJ1Y3QgcnRlX2lwc2VjX3NhX3BybSAqcHJt KQ0KPiArew0KPiArCXVpbnQ2NF90IHR5cGU7DQo+ICsJdWludDMyX3QgbmI7DQo+ICsJaW50MzJf dCByYzsNCj4gKw0KPiArCWlmIChwcm0gPT0gTlVMTCkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ ICsNCj4gKwkvKiBkZXRlcm1pbmUgU0EgdHlwZSAqLw0KPiArCXJjID0gZmlsbF9zYV90eXBlKHBy bSwgJnR5cGUpOw0KPiArCWlmIChyYyAhPSAwKQ0KPiArCQlyZXR1cm4gcmM7DQo+ICsNCj4gKwkv KiBkZXRlcm1pbmUgcmVxdWlyZWQgc2l6ZSAqLw0KPiArCXJldHVybiBpcHNlY19zYV9zaXplKHBy bS0+cmVwbGF5X3dpbl9zeiwgdHlwZSwgJm5iKTsNCj4gK30NCj4gKw0KPiAraW50IF9fcnRlX2V4 cGVyaW1lbnRhbA0KPiArcnRlX2lwc2VjX3NhX2luaXQoc3RydWN0IHJ0ZV9pcHNlY19zYSAqc2Es IGNvbnN0IHN0cnVjdCBydGVfaXBzZWNfc2FfcHJtICpwcm0sDQo+ICsJdWludDMyX3Qgc2l6ZSkN Cj4gK3sNCj4gKwlpbnQzMl90IHJjLCBzejsNCj4gKwl1aW50MzJfdCBuYjsNCj4gKwl1aW50NjRf dCB0eXBlOw0KPiArCXN0cnVjdCBjcnlwdG9feGZvcm0gY3hmOw0KPiArDQo+ICsJaWYgKHNhID09 IE5VTEwgfHwgcHJtID09IE5VTEwpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJLyog ZGV0ZXJtaW5lIFNBIHR5cGUgKi8NCj4gKwlyYyA9IGZpbGxfc2FfdHlwZShwcm0sICZ0eXBlKTsN Cj4gKwlpZiAocmMgIT0gMCkNCj4gKwkJcmV0dXJuIHJjOw0KPiArDQo+ICsJLyogZGV0ZXJtaW5l IHJlcXVpcmVkIHNpemUgKi8NCj4gKwlzeiA9IGlwc2VjX3NhX3NpemUocHJtLT5yZXBsYXlfd2lu X3N6LCB0eXBlLCAmbmIpOw0KPiArCWlmIChzeiA8IDApDQo+ICsJCXJldHVybiBzejsNCj4gKwll bHNlIGlmIChzaXplIDwgKHVpbnQzMl90KXN6KQ0KPiArCQlyZXR1cm4gLUVOT1NQQzsNCj4gKw0K PiArCS8qIG9ubHkgZXNwIGlzIHN1cHBvcnRlZCByaWdodCBub3cgKi8NCj4gKwlpZiAocHJtLT5p cHNlY194Zm9ybS5wcm90byAhPSBSVEVfU0VDVVJJVFlfSVBTRUNfU0FfUFJPVE9fRVNQKQ0KPiAr CQlyZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArCWlmIChwcm0tPmlwc2VjX3hmb3JtLm1vZGUgPT0g UlRFX1NFQ1VSSVRZX0lQU0VDX1NBX01PREVfVFVOTkVMICYmDQo+ICsJCQlwcm0tPnR1bi5oZHJf bGVuID4gc2l6ZW9mKHNhLT5oZHIpKQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArCXJj ID0gZmlsbF9jcnlwdG9feGZvcm0oJmN4ZiwgcHJtKTsNCj4gKwlpZiAocmMgIT0gMCkNCj4gKwkJ cmV0dXJuIHJjOw0KPiArDQo+ICsJc2EtPnR5cGUgPSB0eXBlOw0KPiArCXNhLT5zaXplID0gc3o7 DQo+ICsNCj4gKwkvKiBjaGVjayBmb3IgRVNOIGZsYWcgKi8NCj4gKwlzYS0+c3FuX21hc2sgPSAo cHJtLT5pcHNlY194Zm9ybS5vcHRpb25zLmVzbiA9PSAwKSA/DQo+ICsJCVVJTlQzMl9NQVggOiBV SU5UNjRfTUFYOw0KPiArDQo+ICsJcmMgPSBlc3Bfc2FfaW5pdChzYSwgcHJtLCAmY3hmKTsNCj4g KwlpZiAocmMgIT0gMCkNCj4gKwkJcnRlX2lwc2VjX3NhX2Zpbmkoc2EpOw0KPiArDQo+ICsJLyog ZmlsbCByZXBsYXkgd2luZG93IHJlbGF0ZWQgZmllbGRzICovDQo+ICsJaWYgKG5iICE9IDApIHsN Cm1vdmUgdGhpcyB3aGVyZSBuYiBpcyBnZXR0aW5nIHVwZGF0ZWQuDQo+ICsJCXNhLT5yZXBsYXku d2luX3N6ID0gcHJtLT5yZXBsYXlfd2luX3N6Ow0KPiArCQlzYS0+cmVwbGF5Lm5iX2J1Y2tldCA9 IG5iOw0KPiArCQlzYS0+cmVwbGF5LmJ1Y2tldF9pbmRleF9tYXNrID0gc2EtPnJlcGxheS5uYl9i dWNrZXQgLSAxOw0KPiArCQlzYS0+c3FuLmluYiA9IChzdHJ1Y3QgcmVwbGF5X3NxbiAqKShzYSAr IDEpOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiBzejsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2xp Yi9saWJydGVfaXBzZWMvc2EuaCBiL2xpYi9saWJydGVfaXBzZWMvc2EuaA0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAuLjVkMTEzODkxYQ0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL2xpYi9saWJydGVfaXBzZWMvc2EuaA0KPiBAQCAtMCwwICsxLDc3IEBADQo+ICsv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ICsgKiBDb3B5cmlnaHQo YykgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgX1NBX0hf DQo+ICsjZGVmaW5lIF9TQV9IXw0KPiArDQo+ICsjZGVmaW5lIElQU0VDX01BWF9IRFJfU0laRQk2 NA0KPiArI2RlZmluZSBJUFNFQ19NQVhfSVZfU0laRQkxNg0KPiArI2RlZmluZSBJUFNFQ19NQVhf SVZfUVdPUkQJKElQU0VDX01BWF9JVl9TSVpFIC8gc2l6ZW9mKHVpbnQ2NF90KSkNCj4gKw0KPiAr LyogdGhlc2UgZGVmaW5pdGlvbnMgcHJvYmFibHkgaGFzIHRvIGJlIGluIHJ0ZV9jcnlwdG9fc3lt LmggKi8NCj4gK3VuaW9uIHN5bV9vcF9vZnNsZW4gew0KPiArCXVpbnQ2NF90IHJhdzsNCj4gKwlz dHJ1Y3Qgew0KPiArCQl1aW50MzJfdCBvZmZzZXQ7DQo+ICsJCXVpbnQzMl90IGxlbmd0aDsNCj4g Kwl9Ow0KPiArfTsNClRoZXNlIGFyZSBhbHJlYWR5IHRoZXJlIGluIHJ0ZV9jcnlwdG9fc3ltX29w LiBXaGF0IGlzIHRoZSBuZWVkIHRvIA0KcmVkZWZpbmUgaXQuDQpvZmZzZXQgYW5kIGxlbmd0aCBj YW4gY2hhbmdlIG9uIHBlciBwYWNrZXQgYmFzaXMsIGl0IGNhbm5vdCBiZSBhdCBpbml0IA0KdGlt ZSBhbmQgb24gcnVudGltZSB5b3Ugd291bGQgaGF2ZSBzeW1fb3ANCj4gKw0KPiArdW5pb24gc3lt X29wX2RhdGEgew0KPiArI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fDQo+ICsJX191aW50MTI4X3Qg cmF3Ow0KPiArI2VuZGlmDQo+ICsJc3RydWN0IHsNCj4gKwkJdWludDhfdCAqdmE7DQo+ICsJCXJ0 ZV9pb3ZhX3QgcGE7DQo+ICsJfTsNCj4gK307DQpydGVfY3J5cHRvX3N5bV9vcCBoYXMgYWxsIHRo aXMgaW5mb3JtYXRpb24gSSBndWVzcyhpbiBtYnVmKQ0KPiArDQo+ICtzdHJ1Y3QgcmVwbGF5X3Nx biB7DQo+ICsJdWludDY0X3Qgc3FuOw0KPiArCV9fZXh0ZW5zaW9uX18gdWludDY0X3Qgd2luZG93 WzBdOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHJ0ZV9pcHNlY19zYSB7DQo+ICsJdWludDY0X3Qg dHlwZTsgICAgIC8qIHR5cGUgb2YgZ2l2ZW4gU0EgKi8NCj4gKwl1aW50NjRfdCB1ZGF0YTsgICAg LyogdXNlciBkZWZpbmVkICovDQo+ICsJdWludDMyX3Qgc2l6ZTsgICAgIC8qIHNpemUgb2YgZ2l2 ZW4gc2Egb2JqZWN0ICovDQo+ICsJdWludDMyX3Qgc3BpOw0KPiArCS8qIHNxbiBjYWxjdWxhdGlv bnMgcmVsYXRlZCAqLw0KPiArCXVpbnQ2NF90IHNxbl9tYXNrOw0KPiArCXN0cnVjdCB7DQo+ICsJ CXVpbnQzMl90IHdpbl9zejsNCj4gKwkJdWludDE2X3QgbmJfYnVja2V0Ow0KPiArCQl1aW50MTZf dCBidWNrZXRfaW5kZXhfbWFzazsNCj4gKwl9IHJlcGxheTsNCj4gKwkvKiB0ZW1wbGF0ZSBmb3Ig Y3J5cHRvIG9wIGZpZWxkcyAqLw0KPiArCXN0cnVjdCB7DQo+ICsJCXVuaW9uIHN5bV9vcF9vZnNs ZW4gY2lwaGVyOw0KPiArCQl1bmlvbiBzeW1fb3Bfb2ZzbGVuIGF1dGg7DQo+ICsJfSBjdHA7DQo+ ICsJdWludDMyX3Qgc2FsdDsNCj4gKwl1aW50OF90IHByb3RvOyAgICAvKiBuZXh0IHByb3RvICov DQo+ICsJdWludDhfdCBhYWRfbGVuOw0KPiArCXVpbnQ4X3QgaGRyX2xlbjsNCj4gKwl1aW50OF90 IGhkcl9sM19vZmY7DQo+ICsJdWludDhfdCBpY3ZfbGVuOw0KPiArCXVpbnQ4X3Qgc3FoX2xlbjsN Cj4gKwl1aW50OF90IGl2X29mczsgLyogb2Zmc2V0IGZvciBhbGdvLXNwZWNpZmljIElWIGluc2lk ZSBjcnlwdG8gb3AgKi8NCj4gKwl1aW50OF90IGl2X2xlbjsNCj4gKwl1aW50OF90IHBhZF9hbGln bjsNCj4gKw0KPiArCS8qIHRlbXBsYXRlIGZvciB0dW5uZWwgaGVhZGVyICovDQo+ICsJdWludDhf dCBoZHJbSVBTRUNfTUFYX0hEUl9TSVpFXTsNCj4gKw0KPiArCS8qDQo+ICsJICogc3FuIGFuZCBy ZXBsYXkgd2luZG93DQo+ICsJICovDQo+ICsJdW5pb24gew0KPiArCQl1aW50NjRfdCBvdXRiOw0K PiArCQlzdHJ1Y3QgcmVwbGF5X3NxbiAqaW5iOw0KPiArCX0gc3FuOw0KPiArDQo+ICt9IF9fcnRl X2NhY2hlX2FsaWduZWQ7DQo+ICsNCnJlbW92ZcKgIGV4dHJhIGxpbmVzDQo+ICsjZW5kaWYgLyog X1NBX0hfICovDQo+IGRpZmYgLS1naXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVp bGQNCj4gaW5kZXggYmI3ZjQ0M2Y5Li42OTY4NGVmMTQgMTAwNjQ0DQo+IC0tLSBhL2xpYi9tZXNv bi5idWlsZA0KPiArKysgYi9saWIvbWVzb24uYnVpbGQNCj4gQEAgLTIyLDYgKzIyLDggQEAgbGli cmFyaWVzID0gWyAnY29tcGF0JywgIyBqdXN0IGEgaGVhZGVyLCB1c2VkIGZvciB2ZXJzaW9uaW5n DQo+ICAgCSdrbmknLCAnbGF0ZW5jeXN0YXRzJywgJ2xwbScsICdtZW1iZXInLA0KPiAgIAknbWV0 ZXInLCAncG93ZXInLCAncGR1bXAnLCAncmF3ZGV2JywNCj4gICAJJ3Jlb3JkZXInLCAnc2NoZWQn LCAnc2VjdXJpdHknLCAndmhvc3QnLA0KPiArCSNpcHNlYyBsaWIgZGVwZW5kcyBvbiBjcnlwdG8g YW5kIHNlY3VyaXR5DQo+ICsJJ2lwc2VjJywNCj4gICAJIyBhZGQgcGt0IGZyYW1ld29yayBsaWJz IHdoaWNoIHVzZSBvdGhlciBsaWJzIGZyb20gYWJvdmUNCj4gICAJJ3BvcnQnLCAndGFibGUnLCAn cGlwZWxpbmUnLA0KPiAgIAkjIGZsb3dfY2xhc3NpZnkgbGliIGRlcGVuZHMgb24gcGt0IGZyYW1l d29yayB0YWJsZSBsaWINCj4gZGlmZiAtLWdpdCBhL21rL3J0ZS5hcHAubWsgYi9tay9ydGUuYXBw Lm1rDQo+IGluZGV4IDU2OTlkOTc5ZC4uZjRjZDc1MjUyIDEwMDY0NA0KPiAtLS0gYS9tay9ydGUu YXBwLm1rDQo+ICsrKyBiL21rL3J0ZS5hcHAubWsNCj4gQEAgLTY3LDYgKzY3LDggQEAgaWZlcSAo JChDT05GSUdfUlRFX0xJQlJURV9CUEZfRUxGKSx5KQ0KPiAgIF9MRExJQlMtJChDT05GSUdfUlRF X0xJQlJURV9CUEYpICAgICAgICAgICAgKz0gLWxlbGYNCj4gICBlbmRpZg0KPiAgIA0KPiArX0xE TElCUy0kKENPTkZJR19SVEVfTElCUlRFX0lQU0VDKSAgICAgICAgICAgICs9IC1scnRlX2lwc2Vj DQo+ICsNCj4gICBfTERMSUJTLXkgKz0gLS13aG9sZS1hcmNoaXZlDQo+ICAgDQo+ICAgX0xETElC Uy0kKENPTkZJR19SVEVfTElCUlRFX0NGR0ZJTEUpICAgICAgICArPSAtbHJ0ZV9jZmdmaWxlDQoN Cg==