From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D4B89426B1; Tue, 3 Oct 2023 20:12:27 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A579B40297; Tue, 3 Oct 2023 20:12:27 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id 312FB40262 for ; Tue, 3 Oct 2023 20:12:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1696356746; x=1727892746; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=v6jvH1/JY09iF5q9FSJTR3/HUo76OViynaDmEkU6OK0=; b=Jl0c07FJBS9tXBnGpJ/i3uUVW43cG3mwdd/VBb5Xt47kH40v2ewtp//U v25/h9Riwsb6MyUbeCXk5o56RUuRu/sj6iGbZwQdMQdQlvbA8Ezt3VJ/m i8kLMRa2dlijZMAKvm9oclcO3GB1ODkcEzTj5u+bvqPP7RqAEcnTVVCC+ lLyAW0ikKczp0DRcomZj0/gJDoLRYdn0htUA3rfcKYI4xnl2az/bKzL3p 05oaq3xnSJbd9B/RobH+MZiO4AXyBsPOhw5wtc0vcder6DrBClM3ra+sK j8+1Kri9XmDma5GBTzLXlq6PfEmadjHYRjipJwNyaLUD1wRow257X0trg w==; X-IronPort-AV: E=McAfee;i="6600,9927,10852"; a="386814300" X-IronPort-AV: E=Sophos;i="6.03,198,1694761200"; d="scan'208";a="386814300" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Oct 2023 11:12:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10852"; a="1082113285" X-IronPort-AV: E=Sophos;i="6.03,198,1694761200"; d="scan'208";a="1082113285" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga005.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 03 Oct 2023 11:12:24 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Tue, 3 Oct 2023 11:12:24 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Tue, 3 Oct 2023 11:12:23 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Tue, 3 Oct 2023 11:12:23 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.171) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Tue, 3 Oct 2023 11:12:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Re7PEgrWNwrVvaS/LRNPEyA3ycCzhdvm5KDZgcEMaiCPMS7yHccpLB1p4xqeBEGoBtNxS/V3qxvNI1eTSLm9vPzz4afoZ+3Tcg/mtTNpd7tsSiUgM7C8gd2k7bwE68/7u60gkNEV7EyTLNYSZZXZiHPKEDZxgj9tMcMnMHYtdlitGJwb5UbNwCj/YIkH1jEP3e4C9UMSDwxM+FOIhhZ/xpSXUMOVXeyCNk/KWnw6PbK0rsNV75oNARnQWqmCYjGVxOELad41DbrOaWUibcxvCWDdoDaw+kYqOgswJjyxDie4pIlVVEZvK5/fei6ssCgcYVrFDdadDF2WMHvq1ZssfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=v6jvH1/JY09iF5q9FSJTR3/HUo76OViynaDmEkU6OK0=; b=Y6kDy0tuCAsXqt3Dsfh6X90czLCnFXkR4MLhDgBN3F0tm2dpMdN//riDQZW8+Zy+fMj42og3rStS6Q5n5W8IaRZv/lAawN5Sqslnm5Cg4oW0iU52b1PjkdtTooCYd7kvO3+VcI5cjj361EPb/tJUo3EZA00f23XbPMPqgglqeuAAOwWgUI0cunk+W0XoskcwGP7Or0X+TUgmkf5B7N4SDaEZLZfCnemNqbXKOgc7awYsaP0y+ixS9tpYS0ngFDhruYnU0zgOjLiyCCXgi2loQXyOVhj4sbWbt/pDvBAwKIJJV/iNiRBN8q78iVZ1nlWgGExePmBBMEjBWmiAsjQ44A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM6PR11MB4457.namprd11.prod.outlook.com (2603:10b6:5:203::22) by DS0PR11MB6496.namprd11.prod.outlook.com (2603:10b6:8:c0::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.25; Tue, 3 Oct 2023 18:12:21 +0000 Received: from DM6PR11MB4457.namprd11.prod.outlook.com ([fe80::3207:2893:cd81:30a7]) by DM6PR11MB4457.namprd11.prod.outlook.com ([fe80::3207:2893:cd81:30a7%3]) with mapi id 15.20.6838.030; Tue, 3 Oct 2023 18:12:21 +0000 From: "Chautru, Nicolas" To: Maxime Coquelin , "dev@dpdk.org" CC: "hemant.agrawal@nxp.com" , "david.marchand@redhat.com" , "Vargas, Hernan" Subject: RE: [PATCH v3 10/12] baseband/acc: add MLD support in VRB2 variant Thread-Topic: [PATCH v3 10/12] baseband/acc: add MLD support in VRB2 variant Thread-Index: AQHZ8vNaK826rdSd6ECMGXu8woOQjLA4MjAAgAAxkEA= Date: Tue, 3 Oct 2023 18:12:21 +0000 Message-ID: References: <20230929163516.3636499-1-nicolas.chautru@intel.com> <20230929163516.3636499-11-nicolas.chautru@intel.com> <19c78205-fe80-087f-1ef8-b2b4c20f0f49@redhat.com> In-Reply-To: <19c78205-fe80-087f-1ef8-b2b4c20f0f49@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR11MB4457:EE_|DS0PR11MB6496:EE_ x-ms-office365-filtering-correlation-id: 78fc1079-f68b-48d6-8879-08dbc43c4983 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1aTwsT4CL87hediv73WK/F6CELlV7fDLK7MXljuex0NrIU+umuuPkUBQqQFBCS8UOWUy6r9KrquT6wUUyIPFVLpq2eGArxkMEu2CWVdJxlIPXDXQucAobwBupE1G2jVPoVZfK43Lwg/17gUPnnnJpHetmA19Zv7O9Zxoc24tBs6oSs2eV0YdakCMOvdQmrknlyeBB5vy1XH1uc3LRTOBKbHU4Vtbfe62e2jZ1cUihThJcoOOgKOY75jTrJGTRqIULLwv711vMzxyutSzknAdloKZzBi2XvjtsLHUJffCjrAmqjsRfESGImgSplc5Knl4CgZj+LKcj+ZbnDjm1PZS5OBFT9r92uIXvvrCkJIJ3Y7pLjCTKSz5X/QT0bOm6BQdb9Dmqrx98scB9rBHJXdEK0VLjkjj2eCkSfwWUG5NtT9bbfoDvg5HudQhRckb9UfSdT4CHKtjkUwa7ii1kOuKQM/KGFDeDyzJvO7RCnW+NhmtWGKN7tCU1sMFzO0vPznI0wGhXcGGmAXnzyyU3beqiEOkRqwY5lIZZREgE0QQXL5lbR1cmt0IqvZ4HTX/G+pw4GxyBnV6EmJlM9VNdiy27QTn1XyaCi5MfmdpqYPrYJUkgM86mO/X+zaC6AVauJRJUASszugPl7gLwqFsmdPzaw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB4457.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(346002)(396003)(376002)(366004)(136003)(39860400002)(230922051799003)(1800799009)(186009)(64100799003)(451199024)(38100700002)(71200400001)(38070700005)(478600001)(76116006)(64756008)(66446008)(66476007)(66946007)(110136005)(54906003)(53546011)(82960400001)(122000001)(2906002)(107886003)(7696005)(9686003)(26005)(6506007)(4326008)(5660300002)(30864003)(8676002)(41300700001)(8936002)(83380400001)(66556008)(33656002)(86362001)(52536014)(316002)(55016003)(461764006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UTljM2hDbGFjb2t2RndqUmZ5T1QvL0pIdDFlWkdnVVNRTTRYSGRZa3MvTXVC?= =?utf-8?B?MFF0L3BGUzZOZFkvUzZBenR2V1VjN1d0NHNqdlN4SkgxaHUvMEdud1FKd092?= =?utf-8?B?UzM4SHJidHFGaDVPN1crdkJ4VUN5Z3JlOXAyYWd6UmJmcFB0MS9BaStSaGE3?= =?utf-8?B?WkhFZFd4YVdUalZMZkNSOWVVU2hFSjRXdkloVUFMenJTNTRhSlFOZjBGN0xW?= =?utf-8?B?cVFneW9YTVV0V1NrVm5MUkx2ZSsyRFRoZzFiOXJCR2pyejdTVWh5eWhWbms3?= =?utf-8?B?SXFDY3lMS010dFNkM1lQZzZJZmswOEorMzZyNS9SZW5RM2JnZTBIaC9JTjNy?= =?utf-8?B?cnRsZGhTdnh1aGthV1FLdkxuSTVXTU90d2ZXVnhpOVhhY1V5ZWFQZUc3aXZo?= =?utf-8?B?ajFwazlIa1grcXJxRVZwbHhncVlFSTRqM2ZnOHRwYjIvNHJhTmFvbmhPb3ll?= =?utf-8?B?Q1Q3WE1XeTNZYXgwcXllbWtabDUxd2tueDNWNHhFZGdnVThvTmZ5OHZaUG5B?= =?utf-8?B?V3F3VG5qMmpOTVMxZjd0RCtkWkI3R3gyanh1clU0b292Ny9vOG1FM2d4M1RH?= =?utf-8?B?czhjbE4yMHQ3ZTJqUDA0UHY1ZFdBL2p1MCtYZnVaVUtUMkcyRjhZTEFjWUp5?= =?utf-8?B?UDI4bDJoSTVYTVZacUk3M0U0dkJIWEZWRHpCSWJaOCt2VGpKWHJqc24xdkdq?= =?utf-8?B?Mmh5eXozTXVOaFFTQkNRdGRacG5sbnFPWXo2VWtjaFdTZHAyQjdnRmJPbC95?= =?utf-8?B?Q0hvYmVXZ0NFSURhcnJZV2FQVWVoWlphcGgwRE1VQUpYR0FGK29EZE9ZY2Vx?= =?utf-8?B?QW1Cbm8yNEh0a01jT3NORS9NSi82UE1RRmI0Wm11WTVSQktONFlkZHA5WHBO?= =?utf-8?B?U0xDS1ZqSkFQRko2MHc0QW0yWUpJUU5OQWNrRGZRczVOdTFKc3Q2V0ZIWWdM?= =?utf-8?B?dHRvOGtiUCtpYXBtdlA5NHI5VkxLSmdZV2gzVlFCdGQwNmd1OGVoK05vRnZx?= =?utf-8?B?UlFzSDNrWmh2NFBvZmxBcVVocktrWTJYNUJpMm10QStFM3NrbkhnemdTM3My?= =?utf-8?B?VVV3ZFVibFhidGhwbHExRExQUEQzSURiZ0lhRXVXbW1jOG5CS2V2NGxja0Fy?= =?utf-8?B?Zzl2U3BtZnUyZlB5UkpUVDBJZ1ZDdExDZ1pzdHAyTzFQNE83UHFSenRLZ0N4?= =?utf-8?B?N0cyVklWTkNWQjVxVGJNelhIQ1hxZk1sL25LUGlLeDRRRkJHSkVmN1A3NlVD?= =?utf-8?B?SzRobllDY2NVTDhkczlSMnVVcHNUTnhGMVJiSFd1NHRpRlVrQ2pIZFhCSUVx?= =?utf-8?B?NjA2M3d3VjJheUwwNnV2bEgxSVo0VHVQeXhIclhXWkZMR09YQTArWFVJZU1K?= =?utf-8?B?b0wvOTlyZjMySG9NTnUyekoxZGxJMWhNa1RUMkNLYkVlaFhlTkFLeWhvTlgv?= =?utf-8?B?QVE2b09VV3lodEh5Y0RmeUhyV0RNZnJwM01scE9Ga05uelB5cE1JS2M5bVRi?= =?utf-8?B?U0dXZ0sxVjlJU3drL1hsWThUampmWTJpdEkreHV3Y1gvTWxzdEE3NEYrbzNj?= =?utf-8?B?QTh4SlBzNzdCbVFTdTR2TlZJb1hCNlVzTVQ1WkppM24wSXoxZ2Fqb2xveXNP?= =?utf-8?B?aHp3eEx1cjZCZnBENU01UnVzWGZRajdUNDNVVURNVWVtWUtIZ1NnRUVxOVo4?= =?utf-8?B?N1dUSm13R1RTaGJRZWc5TXZ2eWtxemczQ1RNMVI4MWVqeDdkNldvOFVzVWxl?= =?utf-8?B?YjhWVXRXRElrOVA0Nnl1My9oc05tc2dYS202YjhjUHNoZXJuR3dlRmxFZFRJ?= =?utf-8?B?WFlkdnN0akNrRGhqTVVIb1pzb29GVERMbjBzVU9vbkhaZEJGV3MvZU1xZjN4?= =?utf-8?B?ZGhRZXllbVVHOE51WlhtTWV0ci95NXZQLy8xeEo5ZkhDYjh5QW9CcTd2U2I5?= =?utf-8?B?TW1RK2g3Ly92bnpYWnhkN0k2OTVRZDdBSUZhdlNUVUVZWDRONG1vWEtmQW0x?= =?utf-8?B?MzVkZnNYaWpwZTJFZjZ6c3Z6aU5OdW1WeDlQMkxaY3o4bk5UVXEvRXBoYnlt?= =?utf-8?B?bjBOWGNOM1YrOGhTS1B1QXB5eDF2MFhranpmOGlmMVJCWm1KcUVhUGV0dHRE?= =?utf-8?Q?Wtg92kE1AhBgkEKau9ueHLKsv?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4457.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78fc1079-f68b-48d6-8879-08dbc43c4983 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Oct 2023 18:12:21.3455 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2/r26jnrubmk9IkPJ0uq9HerAH0KlpSPIuFRyDgdWUaHe8tEBXxO5XAlfKNXUviRZcRxQz1VGOSa7Saa2thmHi7WyKwQ3G9L1zcE5l4qBWk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB6496 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGkgTWF4aW1lLCANCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXhp bWUgQ29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTZW50OiBUdWVzZGF5 LCBPY3RvYmVyIDMsIDIwMjMgODoxMyBBTQ0KPiBUbzogQ2hhdXRydSwgTmljb2xhcyA8bmljb2xh cy5jaGF1dHJ1QGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiBDYzogaGVtYW50LmFncmF3YWxA bnhwLmNvbTsgZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbTsgVmFyZ2FzLCBIZXJuYW4NCj4gPGhl cm5hbi52YXJnYXNAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDEwLzEyXSBi YXNlYmFuZC9hY2M6IGFkZCBNTEQgc3VwcG9ydCBpbiBWUkIyDQo+IHZhcmlhbnQNCj4gDQo+IA0K PiANCj4gT24gOS8yOS8yMyAxODozNSwgTmljb2xhcyBDaGF1dHJ1IHdyb3RlOg0KPiA+IEFkZGlu ZyB0aGUgY2FwYWJpbGl0eSBmb3IgdGhlIE1MRC1UUyBwcm9jZXNzaW5nIHNwZWNpZmljIHRvIHRo ZSBWUkIyDQo+ID4gdmFyaWFudC4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE5pY29sYXMgQ2hh dXRydSA8bmljb2xhcy5jaGF1dHJ1QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgIGRyaXZlcnMv YmFzZWJhbmQvYWNjL3J0ZV92cmJfcG1kLmMgfCAzNzgNCj4gKysrKysrKysrKysrKysrKysrKysr KysrKysrKysNCj4gPiAgIDEgZmlsZSBjaGFuZ2VkLCAzNzggaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZWJhbmQvYWNjL3J0ZV92cmJfcG1kLmMNCj4gPiBi L2RyaXZlcnMvYmFzZWJhbmQvYWNjL3J0ZV92cmJfcG1kLmMNCj4gPiBpbmRleCBjZTRiOTBkOGU3 Li5hOWQzZGI4NmU2IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvYmFzZWJhbmQvYWNjL3J0ZV92 cmJfcG1kLmMNCj4gPiArKysgYi9kcml2ZXJzL2Jhc2ViYW5kL2FjYy9ydGVfdnJiX3BtZC5jDQo+ ID4gQEAgLTEzNDQsNiArMTM0NCwxNyBAQCB2cmJfZGV2X2luZm9fZ2V0KHN0cnVjdCBydGVfYmJk ZXYgKmRldiwgc3RydWN0DQo+IHJ0ZV9iYmRldl9kcml2ZXJfaW5mbyAqZGV2X2luZm8pDQo+ID4g ICAJCQkJCQkxLA0KPiA+ICAgCQkJfQ0KPiA+ICAgCQl9LA0KPiA+ICsJCXsNCj4gPiArCQkJLnR5 cGUJPSBSVEVfQkJERVZfT1BfTUxEVFMsDQo+ID4gKwkJCS5jYXAubWxkID0gew0KPiA+ICsJCQkJ LmNhcGFiaWxpdHlfZmxhZ3MgPQ0KPiA+ICsJCQkJCQlSVEVfQkJERVZfTUxEVFNfUkVQLA0KPiA+ ICsJCQkJLm51bV9idWZmZXJzX3NyYyA9DQo+ID4gKwkJCQkJCTEsDQo+ID4gKwkJCQkubnVtX2J1 ZmZlcnNfZHN0ID0NCj4gPiArCQkJCQkJMSwNCj4gPiArCQkJfQ0KPiA+ICsJCX0sDQo+ID4gICAJ CVJURV9CQkRFVl9FTkRfT0ZfQ0FQQUJJTElUSUVTX0xJU1QoKQ0KPiA+ICAgCX07DQo+ID4NCj4g PiBAQCAtNDE1MSw2ICs0MTYyLDM3MSBAQCB2cmJfZGVxdWV1ZV9mZnQoc3RydWN0IHJ0ZV9iYmRl dl9xdWV1ZV9kYXRhDQo+ICpxX2RhdGEsDQo+ID4gICAJcmV0dXJuIGk7DQo+ID4gICB9DQo+ID4N Cj4gPiArLyogRmlsbCBpbiBhIGZyYW1lIGNvbnRyb2wgd29yZCBmb3IgTUxELVRTIHByb2Nlc3Np bmcuICovIHN0YXRpYw0KPiA+ICtpbmxpbmUgdm9pZCB2cmIyX2Zjd19tbGR0c19maWxsKHN0cnVj dCBydGVfYmJkZXZfbWxkdHNfb3AgKm9wLCBzdHJ1Y3QNCj4gPiArYWNjX2Zjd19tbGR0cyAqZmN3 KSB7DQo+ID4gKwlmY3ctPm5yYiA9IG9wLT5tbGR0cy5udW1fcmJzOw0KPiA+ICsJZmN3LT5OTGF5 ZXJzID0gb3AtPm1sZHRzLm51bV9sYXllcnMgLSAxOw0KPiA+ICsJZmN3LT5RbW9kMCA9IChvcC0+ bWxkdHMucV9tWzBdID4+IDEpIC0gMTsNCj4gPiArCWZjdy0+UW1vZDEgPSAob3AtPm1sZHRzLnFf bVsxXSA+PiAxKSAtIDE7DQo+ID4gKwlmY3ctPlFtb2QyID0gKG9wLT5tbGR0cy5xX21bMl0gPj4g MSkgLSAxOw0KPiA+ICsJZmN3LT5RbW9kMyA9IChvcC0+bWxkdHMucV9tWzNdID4+IDEpIC0gMTsN Cj4gPiArCS8qIE1hcmsgc29tZSBsYXllcnMgYXMgZGlzYWJsZWQgKi8NCj4gPiArCWlmIChvcC0+ bWxkdHMubnVtX2xheWVycyA9PSAyKSB7DQo+ID4gKwkJZmN3LT5RbW9kMiA9IDM7DQo+ID4gKwkJ ZmN3LT5RbW9kMyA9IDM7DQo+ID4gKwl9DQo+ID4gKwlpZiAob3AtPm1sZHRzLm51bV9sYXllcnMg PT0gMykNCj4gPiArCQlmY3ctPlFtb2QzID0gMzsNCj4gPiArCWZjdy0+UnJlcCA9IG9wLT5tbGR0 cy5yX3JlcDsNCj4gPiArCWZjdy0+Q3JlcCA9IG9wLT5tbGR0cy5jX3JlcDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArLyogRmlsbCBpbiBkZXNjcmlwdG9yIGZvciBvbmUgTUxELVRTIHByb2Nlc3Npbmcg b3BlcmF0aW9uLiAqLyBzdGF0aWMNCj4gPiAraW5saW5lIGludCB2cmIyX2RtYV9kZXNjX21sZHRz X2ZpbGwoc3RydWN0IHJ0ZV9iYmRldl9tbGR0c19vcCAqb3AsDQo+ID4gKwkJc3RydWN0IGFjY19k bWFfcmVxX2Rlc2MgKmRlc2MsDQo+ID4gKwkJc3RydWN0IHJ0ZV9tYnVmICppbnB1dF9xLCBzdHJ1 Y3QgcnRlX21idWYgKmlucHV0X3IsDQo+ID4gKwkJc3RydWN0IHJ0ZV9tYnVmICpvdXRwdXQsDQo+ ID4gKwkJdWludDMyX3QgKmluX29mZnNldCwgdWludDMyX3QgKm91dF9vZmZzZXQpIHsNCj4gPiAr CXVpbnQxNl90IHFzaXplX3Blcl9yZVtWUkIyX01MRF9MQVlfU0laRV0gPSB7OCwgMTIsIDE2fTsg LyogTGF5ZXIgMg0KPiB0byA0LiAqLw0KPiA+ICsJdWludDE2X3QgcnNpemVfcGVyX3JlW1ZSQjJf TUxEX0xBWV9TSVpFXSA9IHsxNCwgMjYsIDQyfTsNCj4gPiArCXVpbnQxNl90IHNjX2ZhY3Rvcl9w ZXJfcnJlcFtWUkIyX01MRF9SUkVQX1NJWkVdID0gezEyLCA2LCA0LCAzLCAwLA0KPiAyfTsNCj4g PiArCXVpbnQxNl90IGksIG91dHNpemVfcGVyX3JlID0gMDsNCj4gPiArCXVpbnQzMl90IHNjX251 bSwgcl9udW0sIHFfc2l6ZSwgcl9zaXplLCBvdXRfc2l6ZTsNCj4gPiArDQo+ID4gKwkvKiBQcmV2 ZW50IG91dCBvZiByYW5nZSBhY2Nlc3MuICovDQo+ID4gKwlpZiAob3AtPm1sZHRzLnJfcmVwID4g NSkNCj4gPiArCQlvcC0+bWxkdHMucl9yZXAgPSA1Ow0KPiA+ICsJaWYgKG9wLT5tbGR0cy5udW1f bGF5ZXJzIDwgMikNCj4gPiArCQlvcC0+bWxkdHMubnVtX2xheWVycyA9IDI7DQo+ID4gKwlpZiAo b3AtPm1sZHRzLm51bV9sYXllcnMgPiA0KQ0KPiA+ICsJCW9wLT5tbGR0cy5udW1fbGF5ZXJzID0g NDsNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBvcC0+bWxkdHMubnVtX2xheWVyczsgaSsrKQ0KPiA+ ICsJCW91dHNpemVfcGVyX3JlICs9IG9wLT5tbGR0cy5xX21baV07DQo+ID4gKwlzY19udW0gPSBv cC0+bWxkdHMubnVtX3JicyAqIFJURV9CQkRFVl9TQ1BFUlJCICogKG9wLQ0KPiA+bWxkdHMuY19y ZXAgKyAxKTsNCj4gPiArCXJfbnVtID0gb3AtPm1sZHRzLm51bV9yYnMgKiBzY19mYWN0b3JfcGVy X3JyZXBbb3AtPm1sZHRzLnJfcmVwXTsNCj4gPiArCXFfc2l6ZSA9IHFzaXplX3Blcl9yZVtvcC0+ bWxkdHMubnVtX2xheWVycyAtIDJdICogc2NfbnVtOw0KPiA+ICsJcl9zaXplID0gcnNpemVfcGVy X3JlW29wLT5tbGR0cy5udW1fbGF5ZXJzIC0gMl0gKiByX251bTsNCj4gPiArCW91dF9zaXplID0g IHNjX251bSAqIG91dHNpemVfcGVyX3JlOw0KPiA+ICsJLyogcHJpbnRmKCJTYyAlZCBSIG51bSAl ZCBTaXplICVkICVkICVkXG4iLCBzY19udW0sIHJfbnVtLCBxX3NpemUsDQo+ID4gK3Jfc2l6ZSwg b3V0X3NpemUpOyAqLw0KPiANCj4gcnRlX2JiZGV2X2xvZ19kZWJ1ZygpPyBPdGhlcndpc2UganVz dCByZW1vdmUgaXQuDQoNClRoYW5rcy4gUmVtb3ZpbmcuIA0KDQo+IA0KPiA+ICsNCj4gPiArCS8q IEZDVyBhbHJlYWR5IGRvbmUuICovDQo+ID4gKwlhY2NfaGVhZGVyX2luaXQoZGVzYyk7DQo+ID4g KwlkZXNjLT5kYXRhX3B0cnNbMV0uYWRkcmVzcyA9IHJ0ZV9wa3RtYnVmX2lvdmFfb2Zmc2V0KGlu cHV0X3EsDQo+ICppbl9vZmZzZXQpOw0KPiA+ICsJZGVzYy0+ZGF0YV9wdHJzWzFdLmJsZW4gPSBx X3NpemU7DQo+ID4gKwlkZXNjLT5kYXRhX3B0cnNbMV0uYmxraWQgPSBBQ0NfRE1BX0JMS0lEX0lO Ow0KPiA+ICsJZGVzYy0+ZGF0YV9wdHJzWzFdLmxhc3QgPSAwOw0KPiA+ICsJZGVzYy0+ZGF0YV9w dHJzWzFdLmRtYV9leHQgPSAwOw0KPiA+ICsJZGVzYy0+ZGF0YV9wdHJzWzJdLmFkZHJlc3MgPSBy dGVfcGt0bWJ1Zl9pb3ZhX29mZnNldChpbnB1dF9yLA0KPiAqaW5fb2Zmc2V0KTsNCj4gPiArCWRl c2MtPmRhdGFfcHRyc1syXS5ibGVuID0gcl9zaXplOw0KPiA+ICsJZGVzYy0+ZGF0YV9wdHJzWzJd LmJsa2lkID0gQUNDX0RNQV9CTEtJRF9JTl9NTERfUjsNCj4gPiArCWRlc2MtPmRhdGFfcHRyc1sy XS5sYXN0ID0gMTsNCj4gPiArCWRlc2MtPmRhdGFfcHRyc1syXS5kbWFfZXh0ID0gMDsNCj4gPiAr CWRlc2MtPmRhdGFfcHRyc1szXS5hZGRyZXNzID0gcnRlX3BrdG1idWZfaW92YV9vZmZzZXQob3V0 cHV0LA0KPiAqb3V0X29mZnNldCk7DQo+ID4gKwlkZXNjLT5kYXRhX3B0cnNbM10uYmxlbiA9IG91 dF9zaXplOw0KPiA+ICsJZGVzYy0+ZGF0YV9wdHJzWzNdLmJsa2lkID0gQUNDX0RNQV9CTEtJRF9P VVRfSEFSRDsNCj4gPiArCWRlc2MtPmRhdGFfcHRyc1szXS5sYXN0ID0gMTsNCj4gPiArCWRlc2Mt PmRhdGFfcHRyc1szXS5kbWFfZXh0ID0gMDsNCj4gPiArCWRlc2MtPm0yZGxlbiA9IDM7DQo+ID4g KwlkZXNjLT5kMm1sZW4gPSAxOw0KPiA+ICsJZGVzYy0+b3BfYWRkciA9IG9wOw0KPiA+ICsJZGVz Yy0+Y2JzX2luX3RiID0gMTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyogQ2hlY2sgd2hldGhlciB0aGUgTUxEIG9wZXJhdGlvbiBjYW4gYmUgcHJvY2Vzc2Vk IGFzIGEgc2luZ2xlDQo+ID4gK29wZXJhdGlvbi4gKi8gc3RhdGljIGlubGluZSBib29sIHZyYjJf Y2hlY2tfbWxkX3JfY29uc3RyYWludChzdHJ1Y3QNCj4gPiArcnRlX2JiZGV2X21sZHRzX29wICpv cCkgew0KPiA+ICsJdWludDhfdCBsYXllcl9pZHgsIHJyZXBfaWR4Ow0KPiA+ICsJdWludDE2X3Qg bWF4X3JiW1ZSQjJfTUxEX0xBWV9TSVpFXVtWUkIyX01MRF9SUkVQX1NJWkVdID0gew0KPiA+ICsJ CQl7MTg4LCAyNzUsIDI3NSwgMjc1LCAwLCAyNzV9LA0KPiA+ICsJCQl7MTAxLCAyMDIsIDI3NSwg Mjc1LCAwLCAyNzV9LA0KPiA+ICsJCQl7NjIsIDEyNCwgMTg2LCAyNDgsIDAsIDI3NX0gfTsNCj4g PiArDQo+ID4gKwlpZiAob3AtPm1sZHRzLmNfcmVwID09IDApDQo+ID4gKwkJcmV0dXJuIHRydWU7 DQo+ID4gKw0KPiA+ICsJbGF5ZXJfaWR4ID0gUlRFX01JTihvcC0+bWxkdHMubnVtX2xheWVycyAt DQo+IFZSQjJfTUxEX01JTl9MQVlFUiwNCj4gPiArCQkJVlJCMl9NTERfTUFYX0xBWUVSIC0gVlJC Ml9NTERfTUlOX0xBWUVSKTsNCj4gPiArCXJyZXBfaWR4ID0gUlRFX01JTihvcC0+bWxkdHMucl9y ZXAsIFZSQjJfTUxEX01BWF9SUkVQKTsNCj4gPiArCXJ0ZV9iYmRldl9sb2dfZGVidWcoIlJCICVk IGluZGV4ICVkICVkIG1heCAlZFxuIiwgb3AtDQo+ID5tbGR0cy5udW1fcmJzLCBsYXllcl9pZHgs IHJyZXBfaWR4LA0KPiA+ICsJCQltYXhfcmJbbGF5ZXJfaWR4XVtycmVwX2lkeF0pOw0KPiA+ICsN Cj4gPiArCXJldHVybiAob3AtPm1sZHRzLm51bV9yYnMgPD0gbWF4X3JiW2xheWVyX2lkeF1bcnJl cF9pZHhdKTsgfQ0KPiA+ICsNCj4gPiArLyoqIEVucXVldWUgTUxEVFMgb3BlcmF0aW9uIHNwbGl0 IGFjcm9zcyBzeW1ib2xzLiAqLyBzdGF0aWMgaW5saW5lDQo+ID4gK2ludCBlbnF1ZXVlX21sZHRz X3NwbGl0X29wKHN0cnVjdCBhY2NfcXVldWUgKnEsIHN0cnVjdA0KPiA+ICtydGVfYmJkZXZfbWxk dHNfb3AgKm9wLA0KPiA+ICsJCXVpbnQxNl90IHRvdGFsX2VucXVldWVkX2Rlc2NzKQ0KPiA+ICt7 DQo+ID4gKwl1aW50MTZfdCBxc2l6ZV9wZXJfcmVbVlJCMl9NTERfTEFZX1NJWkVdID0gezgsIDEy LCAxNn07IC8qIExheWVyIDINCj4gdG8gNC4gKi8NCj4gPiArCXVpbnQxNl90IHJzaXplX3Blcl9y ZVtWUkIyX01MRF9MQVlfU0laRV0gPSB7MTQsIDI2LCA0Mn07DQo+ID4gKwl1aW50MTZfdCBzY19m YWN0b3JfcGVyX3JyZXBbVlJCMl9NTERfUlJFUF9TSVpFXSA9IHsxMiwgNiwgNCwgMywgMCwNCj4g Mn07DQo+ID4gKwl1aW50MzJfdCBpLCBvdXRzaXplX3Blcl9yZSA9IDAsIHNjX251bSwgcl9udW0s IHFfc2l6ZSwgcl9zaXplLA0KPiBvdXRfc2l6ZSwgbnVtX3N5bXM7DQo+ID4gKwl1bmlvbiBhY2Nf ZG1hX2Rlc2MgKmRlc2MsICpmaXJzdF9kZXNjOw0KPiA+ICsJdWludDE2X3QgZGVzY19pZHgsIHN5 bWI7DQo+ID4gKwlzdHJ1Y3QgcnRlX21idWYgKmlucHV0X3EsICppbnB1dF9yLCAqb3V0cHV0Ow0K PiA+ICsJdWludDMyX3QgaW5fb2Zmc2V0LCBvdXRfb2Zmc2V0Ow0KPiA+ICsJc3RydWN0IGFjY19m Y3dfbWxkdHMgKmZjdzsNCj4gPiArDQo+ID4gKwlkZXNjX2lkeCA9ICgocS0+c3dfcmluZ19oZWFk ICsgdG90YWxfZW5xdWV1ZWRfZGVzY3MpICYgcS0NCj4gPnN3X3Jpbmdfd3JhcF9tYXNrKTsNCj4g PiArCWZpcnN0X2Rlc2MgPSBxLT5yaW5nX2FkZHIgKyBkZXNjX2lkeDsNCj4gDQo+IGFjY19kZXNj KCk/DQoNCmFjY19kZXNjX2lkeCgpIGhlcmUsIGJ1dCB0aGFua3MuIA0KDQo+IA0KPiA+ICsJaW5w dXRfcSA9IG9wLT5tbGR0cy5xaHlfaW5wdXQuZGF0YTsNCj4gPiArCWlucHV0X3IgPSBvcC0+bWxk dHMucl9pbnB1dC5kYXRhOw0KPiA+ICsJb3V0cHV0ID0gb3AtPm1sZHRzLm91dHB1dC5kYXRhOw0K PiA+ICsJaW5fb2Zmc2V0ID0gb3AtPm1sZHRzLnFoeV9pbnB1dC5vZmZzZXQ7DQo+ID4gKwlvdXRf b2Zmc2V0ID0gb3AtPm1sZHRzLm91dHB1dC5vZmZzZXQ7DQo+ID4gKwludW1fc3ltcyA9IG9wLT5t bGR0cy5jX3JlcCArIDE7DQo+ID4gKwlmY3cgPSAmZmlyc3RfZGVzYy0+cmVxLmZjd19tbGR0czsN Cj4gPiArCXZyYjJfZmN3X21sZHRzX2ZpbGwob3AsIGZjdyk7DQo+ID4gKwlmY3ctPkNyZXAgPSAw OyAvKiBDIHJlcCBmb3JjZWQgdG8gemVyby4gKi8NCj4gPiArDQo+ID4gKwkvKiBQcmV2ZW50IG91 dCBvZiByYW5nZSBhY2Nlc3MuICovDQo+ID4gKwlpZiAob3AtPm1sZHRzLnJfcmVwID4gNSkNCj4g PiArCQlvcC0+bWxkdHMucl9yZXAgPSA1Ow0KPiA+ICsJaWYgKG9wLT5tbGR0cy5udW1fbGF5ZXJz IDwgMikNCj4gPiArCQlvcC0+bWxkdHMubnVtX2xheWVycyA9IDI7DQo+ID4gKwlpZiAob3AtPm1s ZHRzLm51bV9sYXllcnMgPiA0KQ0KPiA+ICsJCW9wLT5tbGR0cy5udW1fbGF5ZXJzID0gNDsNCj4g PiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgb3AtPm1sZHRzLm51bV9sYXllcnM7IGkrKykNCj4g PiArCQlvdXRzaXplX3Blcl9yZSArPSBvcC0+bWxkdHMucV9tW2ldOw0KPiA+ICsJc2NfbnVtID0g b3AtPm1sZHRzLm51bV9yYnMgKiBSVEVfQkJERVZfU0NQRVJSQjsgLyogQyByZXAgZm9yY2VkDQo+ IHRvIHplcm8uICovDQo+ID4gKwlyX251bSA9IG9wLT5tbGR0cy5udW1fcmJzICogc2NfZmFjdG9y X3Blcl9ycmVwW29wLT5tbGR0cy5yX3JlcF07DQo+ID4gKwlxX3NpemUgPSBxc2l6ZV9wZXJfcmVb b3AtPm1sZHRzLm51bV9sYXllcnMgLSAyXSAqIHNjX251bTsNCj4gPiArCXJfc2l6ZSA9IHJzaXpl X3Blcl9yZVtvcC0+bWxkdHMubnVtX2xheWVycyAtIDJdICogcl9udW07DQo+ID4gKwlvdXRfc2l6 ZSA9ICBzY19udW0gKiBvdXRzaXplX3Blcl9yZTsNCj4gPiArDQo+ID4gKwlmb3IgKHN5bWIgPSAw OyBzeW1iIDwgbnVtX3N5bXM7IHN5bWIrKykgew0KPiA+ICsJCWRlc2NfaWR4ID0gKChxLT5zd19y aW5nX2hlYWQgKyB0b3RhbF9lbnF1ZXVlZF9kZXNjcyArDQo+IHN5bWIpICYgcS0+c3dfcmluZ193 cmFwX21hc2spOw0KPiA+ICsJCWRlc2MgPSBxLT5yaW5nX2FkZHIgKyBkZXNjX2lkeDsNCj4gPiAr CQlhY2NfaGVhZGVyX2luaXQoJmRlc2MtPnJlcSk7DQo+ID4gKwkJaWYgKHN5bWIgPT0gMCkNCj4g PiArCQkJZGVzYy0+cmVxLmNic19pbl90YiA9IG51bV9zeW1zOw0KPiA+ICsJCWVsc2UNCj4gPiAr CQkJcnRlX21lbWNweSgmZGVzYy0+cmVxLmZjd19tbGR0cywgZmN3LA0KPiBBQ0NfRkNXX01MRFRT X0JMRU4pOw0KPiA+ICsJCWRlc2MtPnJlcS5kYXRhX3B0cnNbMV0uYWRkcmVzcyA9DQo+IHJ0ZV9w a3RtYnVmX2lvdmFfb2Zmc2V0KGlucHV0X3EsIGluX29mZnNldCk7DQo+ID4gKwkJZGVzYy0+cmVx LmRhdGFfcHRyc1sxXS5ibGVuID0gcV9zaXplOw0KPiA+ICsJCWluX29mZnNldCArPSBxX3NpemU7 DQo+ID4gKwkJZGVzYy0+cmVxLmRhdGFfcHRyc1sxXS5ibGtpZCA9IEFDQ19ETUFfQkxLSURfSU47 DQo+ID4gKwkJZGVzYy0+cmVxLmRhdGFfcHRyc1sxXS5sYXN0ID0gMDsNCj4gPiArCQlkZXNjLT5y ZXEuZGF0YV9wdHJzWzFdLmRtYV9leHQgPSAwOw0KPiA+ICsJCWRlc2MtPnJlcS5kYXRhX3B0cnNb Ml0uYWRkcmVzcyA9DQo+IHJ0ZV9wa3RtYnVmX2lvdmFfb2Zmc2V0KGlucHV0X3IsIDApOw0KPiA+ ICsJCWRlc2MtPnJlcS5kYXRhX3B0cnNbMl0uYmxlbiA9IHJfc2l6ZTsNCj4gPiArCQlkZXNjLT5y ZXEuZGF0YV9wdHJzWzJdLmJsa2lkID0gQUNDX0RNQV9CTEtJRF9JTl9NTERfUjsNCj4gPiArCQlk ZXNjLT5yZXEuZGF0YV9wdHJzWzJdLmxhc3QgPSAxOw0KPiA+ICsJCWRlc2MtPnJlcS5kYXRhX3B0 cnNbMl0uZG1hX2V4dCA9IDA7DQo+ID4gKwkJZGVzYy0+cmVxLmRhdGFfcHRyc1szXS5hZGRyZXNz ID0NCj4gcnRlX3BrdG1idWZfaW92YV9vZmZzZXQob3V0cHV0LCBvdXRfb2Zmc2V0KTsNCj4gPiAr CQlkZXNjLT5yZXEuZGF0YV9wdHJzWzNdLmJsZW4gPSBvdXRfc2l6ZTsNCj4gPiArCQlvdXRfb2Zm c2V0ICs9IG91dF9zaXplOw0KPiA+ICsJCWRlc2MtPnJlcS5kYXRhX3B0cnNbM10uYmxraWQgPSBB Q0NfRE1BX0JMS0lEX09VVF9IQVJEOw0KPiA+ICsJCWRlc2MtPnJlcS5kYXRhX3B0cnNbM10ubGFz dCA9IDE7DQo+ID4gKwkJZGVzYy0+cmVxLmRhdGFfcHRyc1szXS5kbWFfZXh0ID0gMDsNCj4gPiAr CQlkZXNjLT5yZXEubTJkbGVuID0gVlJCMl9NTERfTTJETEVOOw0KPiA+ICsJCWRlc2MtPnJlcS5k Mm1sZW4gPSAxOw0KPiA+ICsJCWRlc2MtPnJlcS5vcF9hZGRyID0gb3A7DQo+ID4gKw0KPiA+ICsj aWZkZWYgUlRFX0xJQlJURV9CQkRFVl9ERUJVRw0KPiA+ICsJCXJ0ZV9tZW1kdW1wKHN0ZGVyciwg IkZDVyIsICZkZXNjLT5yZXEuZmN3X21sZHRzLA0KPiBzaXplb2YoZGVzYy0+cmVxLmZjd19tbGR0 cykpOw0KPiA+ICsJCXJ0ZV9tZW1kdW1wKHN0ZGVyciwgIlJlcSBEZXNjLiIsIGRlc2MsIHNpemVv ZigqZGVzYykpOw0KPiAjZW5kaWYNCj4gPiArCX0NCj4gPiArCWRlc2MtPnJlcS5zZG9uZV9lbmFi bGUgPSAwOw0KPiA+ICsNCj4gPiArCXJldHVybiBudW1fc3ltczsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqIEVucXVldWUgb25lIE1MRFRTIG9wZXJhdGlvbi4gKi8NCj4gPiArc3RhdGljIGlubGlu ZSBpbnQNCj4gPiArZW5xdWV1ZV9tbGR0c19vbmVfb3Aoc3RydWN0IGFjY19xdWV1ZSAqcSwgc3Ry dWN0IHJ0ZV9iYmRldl9tbGR0c19vcA0KPiAqb3AsDQo+ID4gKwkJdWludDE2X3QgdG90YWxfZW5x dWV1ZWRfZGVzY3MpDQo+ID4gK3sNCj4gPiArCXVuaW9uIGFjY19kbWFfZGVzYyAqZGVzYzsNCj4g PiArCXVpbnQxNl90IGRlc2NfaWR4Ow0KPiA+ICsJc3RydWN0IHJ0ZV9tYnVmICppbnB1dF9xLCAq aW5wdXRfciwgKm91dHB1dDsNCj4gPiArCXVpbnQzMl90IGluX29mZnNldCwgb3V0X29mZnNldDsN Cj4gPiArCXN0cnVjdCBhY2NfZmN3X21sZHRzICpmY3c7DQo+ID4gKw0KPiA+ICsJZGVzY19pZHgg PSAoKHEtPnN3X3JpbmdfaGVhZCArIHRvdGFsX2VucXVldWVkX2Rlc2NzKSAmIHEtDQo+ID5zd19y aW5nX3dyYXBfbWFzayk7DQo+ID4gKwlkZXNjID0gcS0+cmluZ19hZGRyICsgZGVzY19pZHg7DQo+ IA0KPiBhY2NfZGVzYygpPw0KDQpXaWxsIGRvIG5vdywgdGhhbmtzLg0KDQo+IA0KPiA+ICsJaW5w dXRfcSA9IG9wLT5tbGR0cy5xaHlfaW5wdXQuZGF0YTsNCj4gPiArCWlucHV0X3IgPSBvcC0+bWxk dHMucl9pbnB1dC5kYXRhOw0KPiA+ICsJb3V0cHV0ID0gb3AtPm1sZHRzLm91dHB1dC5kYXRhOw0K PiA+ICsJaW5fb2Zmc2V0ID0gb3AtPm1sZHRzLnFoeV9pbnB1dC5vZmZzZXQ7DQo+ID4gKwlvdXRf b2Zmc2V0ID0gb3AtPm1sZHRzLm91dHB1dC5vZmZzZXQ7DQo+ID4gKwlmY3cgPSAmZGVzYy0+cmVx LmZjd19tbGR0czsNCj4gPiArCXZyYjJfZmN3X21sZHRzX2ZpbGwob3AsIGZjdyk7DQo+ID4gKwl2 cmIyX2RtYV9kZXNjX21sZHRzX2ZpbGwob3AsICZkZXNjLT5yZXEsIGlucHV0X3EsIGlucHV0X3Is IG91dHB1dCwNCj4gPiArCQkJJmluX29mZnNldCwgJm91dF9vZmZzZXQpOw0KPiA+ICsjaWZkZWYg UlRFX0xJQlJURV9CQkRFVl9ERUJVRw0KPiA+ICsJcnRlX21lbWR1bXAoc3RkZXJyLCAiRkNXIiwg JmRlc2MtPnJlcS5mY3dfbWxkdHMsIHNpemVvZihkZXNjLQ0KPiA+cmVxLmZjd19tbGR0cykpOw0K PiA+ICsJcnRlX21lbWR1bXAoc3RkZXJyLCAiUmVxIERlc2MuIiwgZGVzYywgc2l6ZW9mKCpkZXNj KSk7ICNlbmRpZg0KPiA+ICsJcmV0dXJuIDE7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIEVucXVl dWUgTUxEVFMgb3BlcmF0aW9ucy4gKi8NCj4gPiArc3RhdGljIHVpbnQxNl90DQo+ID4gK3ZyYjJf ZW5xdWV1ZV9tbGR0cyhzdHJ1Y3QgcnRlX2JiZGV2X3F1ZXVlX2RhdGEgKnFfZGF0YSwNCj4gPiAr CQlzdHJ1Y3QgcnRlX2JiZGV2X21sZHRzX29wICoqb3BzLCB1aW50MTZfdCBudW0pIHsNCj4gPiAr CWludDMyX3QgYXFfYXZhaWwsIGF2YWlsOw0KPiA+ICsJc3RydWN0IGFjY19xdWV1ZSAqcSA9IHFf ZGF0YS0+cXVldWVfcHJpdmF0ZTsNCj4gPiArCXVpbnQxNl90IGksIGVucXVldWVkX2Rlc2NzID0g MCwgZGVzY3NfaW5fb3A7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsJYm9vbCBhc19vbmVfb3A7DQo+ ID4gKw0KPiA+ICsJYXFfYXZhaWwgPSBhY2NfYXFfYXZhaWwocV9kYXRhLCBudW0pOw0KPiA+ICsJ aWYgKHVubGlrZWx5KChhcV9hdmFpbCA8PSAwKSB8fCAobnVtID09IDApKSkNCj4gPiArCQlyZXR1 cm4gMDsNCj4gPiArCWF2YWlsID0gYWNjX3JpbmdfYXZhaWxfZW5xKHEpOw0KPiA+ICsNCj4gPiAr CWZvciAoaSA9IDA7IGkgPCBudW07ICsraSkgew0KPiA+ICsJCWFzX29uZV9vcCA9IHZyYjJfY2hl Y2tfbWxkX3JfY29uc3RyYWludChvcHNbaV0pOw0KPiA+ICsJCWRlc2NzX2luX29wID0gYXNfb25l X29wID8gMSA6IG9wc1tpXS0+bWxkdHMuY19yZXAgKyAxOw0KPiA+ICsNCj4gPiArCQkvKiBDaGVj ayBpZiB0aGVyZSBhcmUgYXZhaWxhYmxlIHNwYWNlIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcuICov DQo+ID4gKwkJaWYgKHVubGlrZWx5KGF2YWlsIDwgZGVzY3NfaW5fb3ApKSB7DQo+ID4gKwkJCWFj Y19lbnF1ZXVlX3JpbmdfZnVsbChxX2RhdGEpOw0KPiA+ICsJCQlicmVhazsNCj4gPiArCQl9DQo+ ID4gKwkJYXZhaWwgLT0gZGVzY3NfaW5fb3A7DQo+ID4gKw0KPiA+ICsJCWlmIChhc19vbmVfb3Ap DQo+ID4gKwkJCXJldCA9IGVucXVldWVfbWxkdHNfb25lX29wKHEsIG9wc1tpXSwNCj4gZW5xdWV1 ZWRfZGVzY3MpOw0KPiA+ICsJCWVsc2UNCj4gPiArCQkJcmV0ID0gZW5xdWV1ZV9tbGR0c19zcGxp dF9vcChxLCBvcHNbaV0sDQo+IGVucXVldWVkX2Rlc2NzKTsNCj4gPiArDQo+ID4gKwkJaWYgKHJl dCA8IDApIHsNCj4gPiArCQkJYWNjX2VucXVldWVfaW52YWxpZChxX2RhdGEpOw0KPiA+ICsJCQli cmVhazsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWVucXVldWVkX2Rlc2NzICs9IHJldDsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwlpZiAodW5saWtlbHkoaSA9PSAwKSkNCj4gPiArCQlyZXR1cm4g MDsgLyogTm90aGluZyB0byBlbnF1ZXVlLiAqLw0KPiA+ICsNCj4gPiArCWFjY19kbWFfZW5xdWV1 ZShxLCBlbnF1ZXVlZF9kZXNjcywgJnFfZGF0YS0+cXVldWVfc3RhdHMpOw0KPiA+ICsNCj4gPiAr CS8qIFVwZGF0ZSBzdGF0cy4gKi8NCj4gPiArCXFfZGF0YS0+cXVldWVfc3RhdHMuZW5xdWV1ZWRf Y291bnQgKz0gaTsNCj4gPiArCXFfZGF0YS0+cXVldWVfc3RhdHMuZW5xdWV1ZV9lcnJfY291bnQg Kz0gbnVtIC0gaTsNCj4gPiArCXJldHVybiBpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ ICsgKiBEZXF1ZXVlIG9uZSBNTERUUyBvcGVyYXRpb24uDQo+ID4gKyAqIFRoaXMgbWF5IGhhdmUg YmVlbiBzcGxpdCBvdmVyIG11bHRpcGxlIGRlc2NyaXB0b3JzLg0KPiA+ICsgKi8NCj4gPiArc3Rh dGljIGlubGluZSBpbnQNCj4gPiArZGVxdWV1ZV9tbGR0c19vbmVfb3Aoc3RydWN0IHJ0ZV9iYmRl dl9xdWV1ZV9kYXRhICpxX2RhdGEsDQo+ID4gKwkJc3RydWN0IGFjY19xdWV1ZSAqcSwgc3RydWN0 IHJ0ZV9iYmRldl9tbGR0c19vcCAqKnJlZl9vcCwNCj4gPiArCQl1aW50MTZfdCBkZXF1ZXVlZF9v cHMsIHVpbnQzMl90ICphcV9kZXF1ZXVlZCkgew0KPiA+ICsJdW5pb24gYWNjX2RtYV9kZXNjICpk ZXNjLCBhdG9tX2Rlc2MsICpsYXN0X2Rlc2M7DQo+ID4gKwl1bmlvbiBhY2NfZG1hX3JzcF9kZXNj IHJzcDsNCj4gPiArCXN0cnVjdCBydGVfYmJkZXZfbWxkdHNfb3AgKm9wOw0KPiA+ICsJdWludDhf dCBkZXNjc19pbl9vcCwgaTsNCj4gPiArDQo+ID4gKwlkZXNjID0gYWNjX2Rlc2NfdGFpbChxLCBk ZXF1ZXVlZF9vcHMpOw0KPiA+ICsJYXRvbV9kZXNjLmF0b21faGRyID0gX19hdG9taWNfbG9hZF9u KCh1aW50NjRfdCAqKWRlc2MsDQo+ID4gK19fQVRPTUlDX1JFTEFYRUQpOw0KPiA+ICsNCj4gPiAr CS8qIENoZWNrIGZkb25lIGJpdC4gKi8NCj4gPiArCWlmICghKGF0b21fZGVzYy5yc3AudmFsICYg QUNDX0ZET05FKSkNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsJZGVzY3NfaW5fb3Ag PSBkZXNjLT5yZXEuY2JzX2luX3RiOw0KPiA+ICsJaWYgKGRlc2NzX2luX29wID4gMSkgew0KPiA+ ICsJCS8qIEdldCBsYXN0IENCLiAqLw0KPiA+ICsJCWxhc3RfZGVzYyA9IHEtPnJpbmdfYWRkciAr ICgocS0+c3dfcmluZ190YWlsICsgZGVxdWV1ZWRfb3BzDQo+ICsgZGVzY3NfaW5fb3AgLSAxKQ0K PiA+ICsJCQkJJiBxLT5zd19yaW5nX3dyYXBfbWFzayk7DQo+ID4gKwkJLyogQ2hlY2sgaWYgbGFz dCBvcCBpcyByZWFkeSB0byBkZXF1ZXVlIGJ5IGNoZWNraW5nIGZkb25lIGJpdC4NCj4gSWYgbm90 IGV4aXQuICovDQo+ID4gKwkJYXRvbV9kZXNjLmF0b21faGRyID0gX19hdG9taWNfbG9hZF9uKCh1 aW50NjRfdA0KPiAqKWxhc3RfZGVzYywgX19BVE9NSUNfUkVMQVhFRCk7DQo+ID4gKwkJaWYgKCEo YXRvbV9kZXNjLnJzcC52YWwgJiBBQ0NfRkRPTkUpKQ0KPiA+ICsJCQlyZXR1cm4gLTE7DQo+ID4g KyNpZmRlZiBSVEVfTElCUlRFX0JCREVWX0RFQlVHDQo+ID4gKwkJcnRlX21lbWR1bXAoc3RkZXJy LCAiTGFzdCBSZXNwIiwgJmxhc3RfZGVzYy0+cnNwLnZhbCwNCj4gPiArc2l6ZW9mKGRlc2MtPnJz cC52YWwpKTsgI2VuZGlmDQo+ID4gKwkJLyogQ2hlY2sgZWFjaCBvcGVyYXRpb24gaXRlcmF0aXZl bHkgdXNpbmcgZmRvbmUuICovDQo+ID4gKwkJZm9yIChpID0gMTsgaSA8IGRlc2NzX2luX29wIC0g MTsgaSsrKSB7DQo+ID4gKwkJCWxhc3RfZGVzYyA9IHEtPnJpbmdfYWRkciArICgocS0+c3dfcmlu Z190YWlsICsNCj4gZGVxdWV1ZWRfb3BzICsgaSkNCj4gPiArCQkJCQkmIHEtPnN3X3Jpbmdfd3Jh cF9tYXNrKTsNCj4gPiArCQkJYXRvbV9kZXNjLmF0b21faGRyID0gX19hdG9taWNfbG9hZF9uKCh1 aW50NjRfdA0KPiAqKWxhc3RfZGVzYywNCj4gPiArCQkJCQlfX0FUT01JQ19SRUxBWEVEKTsNCj4g PiArCQkJaWYgKCEoYXRvbV9kZXNjLnJzcC52YWwgJiBBQ0NfRkRPTkUpKQ0KPiA+ICsJCQkJcmV0 dXJuIC0xOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfQkJERVZf REVCVUcNCj4gPiArCXJ0ZV9tZW1kdW1wKHN0ZGVyciwgIlJlc3AiLCAmZGVzYy0+cnNwLnZhbCwg c2l6ZW9mKGRlc2MtPnJzcC52YWwpKTsNCj4gPiArI2VuZGlmDQo+ID4gKwkvKiBEZXF1ZXVlLiAq Lw0KPiA+ICsJb3AgPSBkZXNjLT5yZXEub3BfYWRkcjsNCj4gPiArDQo+ID4gKwkvKiBDbGVhcmlu ZyBzdGF0dXMsIGl0IHdpbGwgYmUgc2V0IGJhc2VkIG9uIHJlc3BvbnNlLiAqLw0KPiA+ICsJb3At PnN0YXR1cyA9IDA7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IGRlc2NzX2luX29wOyBp KyspIHsNCj4gPiArCQlkZXNjID0gcS0+cmluZ19hZGRyICsgKChxLT5zd19yaW5nX3RhaWwgKyBk ZXF1ZXVlZF9vcHMgKyBpKSAmDQo+ID4gK3EtPnN3X3Jpbmdfd3JhcF9tYXNrKTsNCj4gDQo+IGFj Y19kZXNjKCkNCg0KYWNjX2Rlc2NfdGFpbCgpLCBmaXhpbmcgbm93IGFzIHdlbGwuIFRoYW5rcyAN Cg0KDQo+IA0KPiA+ICsJCWF0b21fZGVzYy5hdG9tX2hkciA9IF9fYXRvbWljX2xvYWRfbigodWlu dDY0X3QgKilkZXNjLA0KPiBfX0FUT01JQ19SRUxBWEVEKTsNCj4gPiArCQlyc3AudmFsID0gYXRv bV9kZXNjLnJzcC52YWw7DQo+ID4gKwkJb3AtPnN0YXR1cyB8PSByc3AuaW5wdXRfZXJyIDw8IFJU RV9CQkRFVl9EQVRBX0VSUk9SOw0KPiA+ICsJCW9wLT5zdGF0dXMgfD0gcnNwLmRtYV9lcnIgPDwg UlRFX0JCREVWX0RSVl9FUlJPUjsNCj4gPiArCQlvcC0+c3RhdHVzIHw9IHJzcC5mY3dfZXJyIDw8 IFJURV9CQkRFVl9EUlZfRVJST1I7DQo+ID4gKwkJb3AtPnN0YXR1cyB8PSByc3AuZW5naW5lX2h1 bmcgPDwNCj4gUlRFX0JCREVWX0VOR0lORV9FUlJPUjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlp ZiAob3AtPnN0YXR1cyAhPSAwKQ0KPiA+ICsJCXFfZGF0YS0+cXVldWVfc3RhdHMuZGVxdWV1ZV9l cnJfY291bnQrKzsNCj4gPiArCWlmIChvcC0+c3RhdHVzICYgKDEgPDwgUlRFX0JCREVWX0RSVl9F UlJPUikpDQo+ID4gKwkJdnJiX2NoZWNrX2lyKHEtPmQpOw0KPiA+ICsNCj4gPiArCS8qIENoZWNr IGlmIHRoaXMgaXMgdGhlIGxhc3QgZGVzYyBpbiBiYXRjaCAoQXRvbWljIFF1ZXVlKS4gKi8NCj4g PiArCWlmIChkZXNjLT5yZXEubGFzdF9kZXNjX2luX2JhdGNoKSB7DQo+ID4gKwkJKCphcV9kZXF1 ZXVlZCkrKzsNCj4gPiArCQlkZXNjLT5yZXEubGFzdF9kZXNjX2luX2JhdGNoID0gMDsNCj4gPiAr CX0NCj4gPiArCWRlc2MtPnJzcC52YWwgPSBBQ0NfRE1BX0RFU0NfVFlQRTsNCj4gPiArCWRlc2Mt PnJzcC5hZGRfaW5mb18wID0gMDsNCj4gPiArCSpyZWZfb3AgPSBvcDsNCj4gDQo+IFRoZXJlIHNl ZW1zIHRvIGJlIGEgcGF0dGVybiB3aXRoIG90aGVyIG9wcyAoRkZUL0xEUEMvLi4uKS4NCj4gTWF5 YmUgd2Ugc2hvdWxkIHdvcmsgb24gc29tZSByZWZhY3RvcmluZy4gSXQgZG9lcyBub3QgaGF2ZSB0 byBiZSBkb25lIGluDQo+IHRoaXMgc2VyaWVzLg0KDQpBZ3JlZWQgdGhyb3VnaCBvdGhlciBwYXRj aCwgSSBoYXZlIGEgdGlja2V0IGZvciB0aGlzLiANCg0KVGhhbmtzLCB3aWxsIHJlc29sdmUgYWxs IGluIHY0IHRoaXMgd2Vlay4NCg0KPiANCj4gPiArCXJldHVybiBkZXNjc19pbl9vcDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyogRGVxdWV1ZSBNTERUUyBvcGVyYXRpb25zIGZyb20gVlJCMiBkZXZp Y2UuICovIHN0YXRpYyB1aW50MTZfdA0KPiA+ICt2cmIyX2RlcXVldWVfbWxkdHMoc3RydWN0IHJ0 ZV9iYmRldl9xdWV1ZV9kYXRhICpxX2RhdGEsDQo+ID4gKwkJc3RydWN0IHJ0ZV9iYmRldl9tbGR0 c19vcCAqKm9wcywgdWludDE2X3QgbnVtKSB7DQo+ID4gKwlzdHJ1Y3QgYWNjX3F1ZXVlICpxID0g cV9kYXRhLT5xdWV1ZV9wcml2YXRlOw0KPiA+ICsJdWludDE2X3QgZGVxdWV1ZV9udW0sIGksIGRl cXVldWVkX2NicyA9IDA7DQo+ID4gKwl1aW50MzJfdCBhdmFpbCA9IGFjY19yaW5nX2F2YWlsX2Rl cShxKTsNCj4gPiArCXVpbnQzMl90IGFxX2RlcXVldWVkID0gMDsNCj4gPiArCWludCByZXQ7DQo+ ID4gKw0KPiA+ICsJZGVxdWV1ZV9udW0gPSBSVEVfTUlOKGF2YWlsLCBudW0pOw0KPiA+ICsNCj4g PiArCWZvciAoaSA9IDA7IGkgPCBkZXF1ZXVlX251bTsgKytpKSB7DQo+ID4gKwkJcmV0ID0gZGVx dWV1ZV9tbGR0c19vbmVfb3AocV9kYXRhLCBxLCAmb3BzW2ldLA0KPiBkZXF1ZXVlZF9jYnMsICZh cV9kZXF1ZXVlZCk7DQo+ID4gKwkJaWYgKHJldCA8PSAwKQ0KPiA+ICsJCQlicmVhazsNCj4gPiAr CQlkZXF1ZXVlZF9jYnMgKz0gcmV0Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXEtPmFxX2RlcXVl dWVkICs9IGFxX2RlcXVldWVkOw0KPiA+ICsJcS0+c3dfcmluZ190YWlsICs9IGRlcXVldWVkX2Ni czsNCj4gPiArCS8qIFVwZGF0ZSBlbnF1ZXVlIHN0YXRzLiAqLw0KPiA+ICsJcV9kYXRhLT5xdWV1 ZV9zdGF0cy5kZXF1ZXVlZF9jb3VudCArPSBpOw0KPiA+ICsJcmV0dXJuIGk7DQo+ID4gK30NCj4g PiArDQo+ID4gICAvKiBJbml0aWFsaXphdGlvbiBGdW5jdGlvbiAqLw0KPiA+ICAgc3RhdGljIHZv aWQNCj4gPiAgIHZyYl9iYmRldl9pbml0KHN0cnVjdCBydGVfYmJkZXYgKmRldiwgc3RydWN0IHJ0 ZV9wY2lfZHJpdmVyICpkcnYpIEBADQo+ID4gLTQxNjksNiArNDU0NSw4IEBAIHZyYl9iYmRldl9p bml0KHN0cnVjdCBydGVfYmJkZXYgKmRldiwgc3RydWN0DQo+IHJ0ZV9wY2lfZHJpdmVyICpkcnYp DQo+ID4gICAJZGV2LT5kZXF1ZXVlX2xkcGNfZGVjX29wcyA9IHZyYl9kZXF1ZXVlX2xkcGNfZGVj Ow0KPiA+ICAgCWRldi0+ZW5xdWV1ZV9mZnRfb3BzID0gdnJiX2VucXVldWVfZmZ0Ow0KPiA+ICAg CWRldi0+ZGVxdWV1ZV9mZnRfb3BzID0gdnJiX2RlcXVldWVfZmZ0Ow0KPiA+ICsJZGV2LT5lbnF1 ZXVlX21sZHRzX29wcyA9IHZyYjJfZW5xdWV1ZV9tbGR0czsNCj4gPiArCWRldi0+ZGVxdWV1ZV9t bGR0c19vcHMgPSB2cmIyX2RlcXVldWVfbWxkdHM7DQo+ID4NCj4gPiAgIAlkLT5wZl9kZXZpY2Ug PSAhc3RyY21wKGRydi0+ZHJpdmVyLm5hbWUsDQo+IFJURV9TVFIoVlJCX1BGX0RSSVZFUl9OQU1F KSk7DQo+ID4gICAJZC0+bW1pb19iYXNlID0gcGNpX2Rldi0+bWVtX3Jlc291cmNlWzBdLmFkZHI7 DQoNCg==