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 44722A0032; Fri, 16 Sep 2022 10:39:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D4B104021D; Fri, 16 Sep 2022 10:39:15 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 35FAF40156 for ; Fri, 16 Sep 2022 10:39:14 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663317554; x=1694853554; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=nxtF2hH7kaa+A6Kzde1vFqg0uCVDtlYUfIiypexCkRg=; b=UgA8acdaJUQDsIqOIloEJWbwOj3jNjYqpoMcoPsAPT9IiSUIbO+7qdKB ogFVdvpHsxhHgdHe4sxC1ChHKia1ppt+UDkVLmw7ZXFfmXd/z0a2Gk4Hg hgga1tWE2BBWFQvlj1nh8wU/WP7SVpJaqwZI9sTlWct8Y7rUZm32174Zu WLnZPfQeMMJQL8BcOsZSZpmvteB8b1AXaxz49Fg54/kIzeA8YX5pOWn2U I12+nZ4IaRC0qQk+0DaphQWmYaNkGZF5LGr62Xx1BcVw/z0s+fDWgPKqH bfb3B+CSnYSAsYgTmX4Dc5je+6urfIzw7X72OrpIOA1bIrJqaFyZc7HMB w==; X-IronPort-AV: E=McAfee;i="6500,9779,10471"; a="325216836" X-IronPort-AV: E=Sophos;i="5.93,320,1654585200"; d="scan'208";a="325216836" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2022 01:38:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,320,1654585200"; d="scan'208";a="743267534" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga004.jf.intel.com with ESMTP; 16 Sep 2022 01:38:52 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 16 Sep 2022 01:38:52 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Fri, 16 Sep 2022 01:38:52 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.175) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Fri, 16 Sep 2022 01:38:51 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nqQBfF9ehgj4Vp391WWyZlY8hf8o5VzlhcanqbOCsIU9K5LYVBxTzeaGQsFOdE1+QYKzKCxcRnP+mUG1XZUlKS6yKej4i7T6KeLLbd3cz5R5giOxK0F7MEFhYn+kkdTuqNvPQg6gDZrSzdKr/S2ogeHvWVB14SJJU4PLQgv/KQgQJqs/hjCrTwF//hCtZw1c6ByK7WH6+K3ynFO+IBklQ/nSz2IlmBEtwY3qoyILIQrpSfpEAc1g9nhYh/YjMLds9Z9Ccb3GMTRsvK6GidyO3yqt5nLdN+67G7PSlh8XrOIIB4brPMFITUnmx4KtZ0hzgaRMoY9ImxB2yRgLtmHOiA== 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=nxtF2hH7kaa+A6Kzde1vFqg0uCVDtlYUfIiypexCkRg=; b=ON5fKG9fbkzRTUP55Idr37yKlP1AJYqwFs8SpxZQJnV4yu2qAroXXBUGjl2LUwt7TAKKj6HKmaMq8O8yxAGIegbixkc6hon6OWwR/jIqUvyDF/844RRJYVpPtLJuWhRM7FgydQrNz14e0ikkxCa0GEbrSxLWrplUiRcAYV8FE48hFSA3uCyx/wh1wuSV10P/O6m3OePWTAZamB9HarctDE1uwoxbjzP3POeqmOPild1vwpHI3l6IwGypviE6s0QUshOiaKc0FWla4O+FGZrSTJUGrojkCN4vgj1GPP9MTbWryiA/cBXAYnWYkdqysbHMqQUSFKoTmq0p+D5KAl12AA== 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 PH7PR11MB6953.namprd11.prod.outlook.com (2603:10b6:510:204::6) by IA1PR11MB6100.namprd11.prod.outlook.com (2603:10b6:208:3d4::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Fri, 16 Sep 2022 08:38:45 +0000 Received: from PH7PR11MB6953.namprd11.prod.outlook.com ([fe80::3132:50b1:d7f7:a1ae]) by PH7PR11MB6953.namprd11.prod.outlook.com ([fe80::3132:50b1:d7f7:a1ae%7]) with mapi id 15.20.5612.022; Fri, 16 Sep 2022 08:38:45 +0000 From: "Wang, YuanX" To: Andrew Rybchenko , "dev@dpdk.org" , Thomas Monjalon , Ferruh Yigit CC: "mdr@ashroe.eu" , "Li, Xiaoyun" , "Singh, Aman Deep" , "Zhang, Yuying" , "Zhang, Qi Z" , "Yang, Qiming" , "jerinjacobk@gmail.com" , "viacheslavo@nvidia.com" , "stephen@networkplumber.org" , "Ding, Xuan" , "hpothula@marvell.com" , "Tang, Yaqi" , Wenxuan Wu Subject: RE: [PATCH v3 2/4] ethdev: introduce protocol hdr based buffer split Thread-Topic: [PATCH v3 2/4] ethdev: introduce protocol hdr based buffer split Thread-Index: AQHYvr58j4LacoqSlU+GCOBl/R4u763bvUYAgARsDQA= Date: Fri, 16 Sep 2022 08:38:44 +0000 Message-ID: References: <20220812181552.2908067-1-yuanx.wang@intel.com> <20220902191027.666923-1-yuanx.wang@intel.com> <20220902191027.666923-3-yuanx.wang@intel.com> <761509b6-4a9a-72a1-2ee9-cd3555c85fd8@oktetlabs.ru> In-Reply-To: <761509b6-4a9a-72a1-2ee9-cd3555c85fd8@oktetlabs.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.500.17 dlp-reaction: no-action dlp-product: dlpe-windows 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: PH7PR11MB6953:EE_|IA1PR11MB6100:EE_ x-ms-office365-filtering-correlation-id: 0248331f-a33e-406f-2541-08da97beddf8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: E9lF2UjJh902qM5OTTTvEg4RejehmNP85E0nuyDb3zVCdAKsE+3OwVo391xlehQLR8VE8qPB0NcL7utE/gLBBW7HwSYImCsnDLFrhpZ9O+KcJDpifuAaHqgjCRlswPMA0WegVplrUxeNktXTxRy4v1k7JaG/P4lQj9rUhVwSFtVBMVJXiq3+jcwEbcaaRUFufctrgVDC8UiCRkpHFWtUkJ2s23n7K3aS6TH/swQYP0jUuKZKlJTskfUH7h7yglIxTKPHJA+r4S00RSzLD6REOvnKRXyxeizD3u68/32wzJt2W1i3aIRx+CdUjFcpwuR0AsCZ6IrSTJkzA2abwL0MCdPUUBofwY6BLF/lwWaGVvSs1K6Fid4WuAwnqwiiI53o8xyGCxu2ct3DNeuekt26okr/b/ThOPzneI2Not2UKzFYnrQ56Hr/uo3LZyG3k10m1wg1q5tIlDOX2wKIfIZsLJGGxAYEHrSkm/Ry+Rqe9HMm+HkqgpHSXaVhO0kZDGyA1RZLg6xIV3Bes03GonahnmG+HnKtM/WbI27qmPdi6V/GCW/zkeMgBsdhFzUhFbuHS7ELIACARavCi69qVtKhYrGhPFrNPyGJDO0XZzL+nJ3LowpVOOkKfePbddIYp6bQftDcjsMWVAcnb5itB56PHtgchYeysVAa8BPF1cDGkukr7Kmw7DoMSBTEg5PHCXY/ddtIPBBTXgEhRaelsJDicir2qxsLlNguEkAOKpDwmALVgeRF5jyJ1JqC1SWN41IRaBDczwK5Er48vQqxO5YRWQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH7PR11MB6953.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(396003)(346002)(366004)(136003)(376002)(39860400002)(451199015)(8936002)(107886003)(30864003)(86362001)(7696005)(33656002)(110136005)(5660300002)(41300700001)(2906002)(478600001)(54906003)(38070700005)(83380400001)(38100700002)(71200400001)(6506007)(122000001)(53546011)(186003)(9686003)(26005)(82960400001)(66946007)(76116006)(66476007)(66446008)(66556008)(52536014)(316002)(8676002)(64756008)(4326008)(55016003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z2ZDT1I4bWZYZTVWOCtOenQ5TmVoRUMvV1haNnd4WVVtY2tqdmtsa3dMdS9p?= =?utf-8?B?akxTeVZZYUJFNk8zbGVVMkJPc2ZBb3BRNlgyUzUxVzdUMWhoSWF1cVRlK05k?= =?utf-8?B?eFRybElvSTZ3UXlHdERVM1NZV0d1K3ZDRk1rL0s2ZUlaREcwaytJVDJ3WHAv?= =?utf-8?B?V1g0TTZ4elBxQzJ5VzZGa1hMdGJQclJ1WDZUQ1dCQkh1Z1NJMXlhWEhKekYv?= =?utf-8?B?Q3Q3TFJzaEdDT3NUNlhrUFhYbXNqM2JXS1Q3a09aQzMvTTA4bURWekF3dUFt?= =?utf-8?B?bDE4TmptNW44OER3RzVkUll0SDk0SjZvMW5zL2VjZzdtZ29WeGo5MjZ4VnZ2?= =?utf-8?B?ZkNoRVMrenJXQ0paQk9lRjY2dlpxUmRKT1RXdEZYeXFIcGtXSjFHeVpVSkp1?= =?utf-8?B?ZW5oSTUxNVpoYnd0RERiM0xhanVNT25DZGtQeStrMlhhOENDZlp1ME42cjhr?= =?utf-8?B?QlB6TzhNczhuQm9lK2gxTkp0Z2FwSGNJRnNxMUlsQXo4Z2xRZlplbjc2TndL?= =?utf-8?B?WXgvd0xvbzBJR2NoQXBFQ0lEUGZaWXZlenF0cUtycmR0ZS9VMS8zRkVuVzFM?= =?utf-8?B?WGFRdG01aEtMNE1rYW9jcGlGV3k4MHlwdzEzSVk4bTdRNHVuL3RRdUo4UlQx?= =?utf-8?B?WS9OSzdXdzdMbkd0T3N3citHTkZHQkVEQTRsK3VqZGZydTlWZE5yYTVEcFJQ?= =?utf-8?B?b2ZOTDludTZmTjVFYi9USmcxdk9HUzZTREhVQnRvcUFRQ05ZbTFaVU84Ykky?= =?utf-8?B?NUEzVnRNN0VFSTVVazVXUW9XWkVwOGFQcDE5N29DekFvMXJuNHhQRVRQaXRL?= =?utf-8?B?WVp4ZWpXY096LzNCcWUwRFh2cFhNVmw2RHpOUXNGSEgxUnp5Njg4R1RNbHI1?= =?utf-8?B?M2xNcEhLZnowZmpSZW1PYU5jU01DOVg1aXp3ZkoyRGtJR0RMVTBGQytQN05C?= =?utf-8?B?WjJJM0xrVEczZjJFeFVKdGs1QzJGRmxuU2VQMGM5RkYrQ3o4REhlZ25IdHla?= =?utf-8?B?U3FEaEZXREZQZTJDb283RTBiczZsdXA0ekhNVDV4Skd0QmErREMxNVNYU3VO?= =?utf-8?B?VTRQcHdzVC82bHlxdTgzR0VEK3lreVRKZkw4di94bkJQb1BQSGdUN2ZHVHBU?= =?utf-8?B?b1Vmb2hvandhT0UwKzMySVNBYWZ2VERGUHc0Uy9NV1RJWmxxWmxlRm1Nc3ZI?= =?utf-8?B?dWxmRDZzaS9wRlB3NFpzY1RzUVVjNEswYS9idjIxTExsd1dmZVcxUExVV0hy?= =?utf-8?B?VzVvREJGd1crVW1jdkowSzhHZVY2eWZLc0RMZ1I4YWQ1Zk5MR01Nclp6b254?= =?utf-8?B?enh5ZGpYTm1NRnVjSUpodjIwdFFnYkhFOG55eXkrbGlvdG02Q1FjaDBSSFFP?= =?utf-8?B?SHRvQml0NjF5VXljbUFKTnhYdExzSk9kckJVR01TVllqSm5KN1E5NXI3MEtV?= =?utf-8?B?RmhQYzZTVG9WQnV0a2hlMW4vRUlBcVRPVjdWdjlFY0pVenFoWjVXY1UrLzBM?= =?utf-8?B?LzlUMW1XOHN4UytSV0FDRmpzRjlEYUczSFMrUW44dWJ1ZHZyeW80ZFJxMkZt?= =?utf-8?B?ZnVYMS9EYTRnZ2hMSXp0QjN4LzJiTGUydmtDSm5PSXIrNldPc1pkZC9QaTZj?= =?utf-8?B?QmZhRXdDQkRxR0dTcHRLK1p4K29Kblc1TnVWdjVxUnhrRVFFK1JVWkZaZUpN?= =?utf-8?B?czVYMkZ0and0QlUwanF5VzR0bHFWMkh4QkxtMzhBSkRqVkpjMFFYeXJyaW93?= =?utf-8?B?bTZNUDVUVTVaMFVjR0JGMjgwMVNsWnFhOWxvMmtGdHZUVitKRWlWKzQ0SVF4?= =?utf-8?B?VlR2MWFtYTF6NVRXdC9OYVMrejVYNmVxaHRGNzNkNUNOTzhQekxHOHd2djlk?= =?utf-8?B?dkJtVVlLdzlEVUxTUDVUTkRNYlZSZnkrNW9yOWVMbmV1cFpwZllMbUpUd29z?= =?utf-8?B?RGRyWVFxakZKRTAxRnpKRTF5ME05dHNrdWdRUGFnWEVyTEpmUkd2eHdmWlo3?= =?utf-8?B?SCtYeFlRYmVIT0E0UmNUZ2IraWFhZXV2L3NaN1BzTUtLUCtwY1RqdkdwWXlM?= =?utf-8?B?aFNEQVhnYitkaVN5Vkd0OGpvNzJieG9pcDd0VGRCM0VEaVhWT0xkNmREbm9N?= =?utf-8?Q?vNwKJyEvwqUWw6UcBilImsExh?= 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: PH7PR11MB6953.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0248331f-a33e-406f-2541-08da97beddf8 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Sep 2022 08:38:44.9797 (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: ZHweHqEIsKULBFzNhoVfpnL1Qc2CuYcFinGVH5KGURul8XqnEHHvV/FWEcd3kHJLv6Oz/VZrYs+psqbBHGxzXw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB6100 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 SGkgQW5kcmV3LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJl dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiBTZW50OiBNb25k YXksIFNlcHRlbWJlciAxMiwgMjAyMiA3OjQ3IFBNDQo+IFRvOiBXYW5nLCBZdWFuWCA8eXVhbngu d2FuZ0BpbnRlbC5jb20+OyBkZXZAZHBkay5vcmc7IFRob21hcw0KPiBNb25qYWxvbiA8dGhvbWFz QG1vbmphbG9uLm5ldD47IEZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QHhpbGlueC5jb20+DQo+ IENjOiBtZHJAYXNocm9lLmV1OyBMaSwgWGlhb3l1biA8eGlhb3l1bi5saUBpbnRlbC5jb20+OyBT aW5naCwgQW1hbiBEZWVwDQo+IDxhbWFuLmRlZXAuc2luZ2hAaW50ZWwuY29tPjsgWmhhbmcsIFl1 eWluZyA8eXV5aW5nLnpoYW5nQGludGVsLmNvbT47DQo+IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5n QGludGVsLmNvbT47IFlhbmcsIFFpbWluZyA8cWltaW5nLnlhbmdAaW50ZWwuY29tPjsNCj4gamVy aW5qYWNvYmtAZ21haWwuY29tOyB2aWFjaGVzbGF2b0BudmlkaWEuY29tOw0KPiBzdGVwaGVuQG5l dHdvcmtwbHVtYmVyLm9yZzsgRGluZywgWHVhbiA8eHVhbi5kaW5nQGludGVsLmNvbT47DQo+IGhw b3RodWxhQG1hcnZlbGwuY29tOyBUYW5nLCBZYXFpIDx5YXFpLnRhbmdAaW50ZWwuY29tPjsgV2Vu eHVhbiBXdQ0KPiA8d2VueHVhbngud3VAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENI IHYzIDIvNF0gZXRoZGV2OiBpbnRyb2R1Y2UgcHJvdG9jb2wgaGRyIGJhc2VkIGJ1ZmZlciBzcGxp dA0KPiANCj4gT24gOS8yLzIyIDIyOjEwLCBZdWFuIFdhbmcgd3JvdGU6DQo+ID4gQ3VycmVudGx5 LCBSeCBidWZmZXIgc3BsaXQgc3VwcG9ydHMgbGVuZ3RoIGJhc2VkIHNwbGl0LiBXaXRoIFJ4IHF1 ZXVlDQo+ID4gb2ZmbG9hZCBSVEVfRVRIX1JYX09GRkxPQURfQlVGRkVSX1NQTElUIGVuYWJsZWQg YW5kIFJ4IHBhY2tldA0KPiBzZWdtZW50DQo+ID4gY29uZmlndXJlZCwgUE1EIHdpbGwgYmUgYWJs ZSB0byBzcGxpdCB0aGUgcmVjZWl2ZWQgcGFja2V0cyBpbnRvDQo+ID4gbXVsdGlwbGUgc2VnbWVu dHMuDQo+ID4NCj4gPiBIb3dldmVyLCBsZW5ndGggYmFzZWQgYnVmZmVyIHNwbGl0IGlzIG5vdCBz dWl0YWJsZSBmb3IgTklDcyB0aGF0IGRvDQo+ID4gc3BsaXQgYmFzZWQgb24gcHJvdG9jb2wgaGVh ZGVycy4gR2l2ZW4gYW4gYXJiaXRyYXJpbHkgdmFyaWFibGUgbGVuZ3RoDQo+ID4gaW4gUnggcGFj a2V0IHNlZ21lbnQsIGl0IGlzIGFsbW9zdCBpbXBvc3NpYmxlIHRvIHBhc3MgYSBmaXhlZCBwcm90 b2NvbA0KPiA+IGhlYWRlciB0byBkcml2ZXIuIEJlc2lkZXMsIHRoZSBleGlzdGVuY2Ugb2YgdHVu bmVsaW5nIHJlc3VsdHMgaW4gdGhlDQo+ID4gY29tcG9zaXRpb24gb2YgYSBwYWNrZXQgaXMgdmFy aW91cywgd2hpY2ggbWFrZXMgdGhlIHNpdHVhdGlvbiBldmVuIHdvcnNlLg0KPiA+DQo+ID4gVGhp cyBwYXRjaCBleHRlbmRzIGN1cnJlbnQgYnVmZmVyIHNwbGl0IHRvIHN1cHBvcnQgcHJvdG9jb2wg aGVhZGVyDQo+ID4gYmFzZWQgYnVmZmVyIHNwbGl0LiBBIG5ldyBwcm90b19oZHIgZmllbGQgaXMg aW50cm9kdWNlZCBpbiB0aGUNCj4gPiByZXNlcnZlZCBmaWVsZCBvZiBydGVfZXRoX3J4c2VnX3Nw bGl0IHN0cnVjdHVyZSB0byBzcGVjaWZ5IHByb3RvY29sDQo+ID4gaGVhZGVyLiBUaGUgcHJvdG9f aGRyIGZpZWxkIGRlZmluZXMgdGhlIHNwbGl0IHBvc2l0aW9uIG9mIHBhY2tldCwNCj4gPiBzcGxp dHRpbmcgd2lsbCBhbHdheXMgaGFwcGVucyBhZnRlciB0aGUgcHJvdG9jb2wgaGVhZGVyIGRlZmlu ZWQgaW4gdGhlDQo+ID4gUnggcGFja2V0IHNlZ21lbnQuIFdoZW4gUnggcXVldWUgb2ZmbG9hZA0K PiA+IFJURV9FVEhfUlhfT0ZGTE9BRF9CVUZGRVJfU1BMSVQgaXMgZW5hYmxlZCBhbmQgY29ycmVz cG9uZGluZw0KPiBwcm90b2NvbA0KPiA+IGhlYWRlciBpcyBjb25maWd1cmVkLCBkcml2ZXIgd2ls bCBzcGxpdCB0aGUgaW5ncmVzcyBwYWNrZXRzIGludG8gbXVsdGlwbGUNCj4gc2VnbWVudHMuDQo+ ID4NCj4gPiBzdHJ1Y3QgcnRlX2V0aF9yeHNlZ19zcGxpdCB7DQo+ID4gICAgICAgICAgc3RydWN0 IHJ0ZV9tZW1wb29sICptcDsgLyogbWVtb3J5IHBvb2xzIHRvIGFsbG9jYXRlIHNlZ21lbnQgZnJv bQ0KPiAqLw0KPiA+ICAgICAgICAgIHVpbnQxNl90IGxlbmd0aDsgLyogc2VnbWVudCBtYXhpbWFs IGRhdGEgbGVuZ3RoLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJl cyBzcGxpdCBwb2ludCAqLw0KPiA+ICAgICAgICAgIHVpbnQxNl90IG9mZnNldDsgLyogZGF0YSBv ZmZzZXQgZnJvbSBiZWdpbm5pbmcNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m IG1idWYgZGF0YSBidWZmZXIgKi8NCj4gPiAgICAgICAgICB1aW50MzJfdCBwcm90b19oZHI7IC8q IHN1cHBvcnRlZCBwdHlwZSBvZiBhIHNwZWNpZmljIHBtZCwNCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbmZpZ3VyZXMgc3BsaXQgcG9pbnQuDQo+ID4gCQkJICAgICAgIEl0 IHNob3VsZCBiZSBkZWZpbmVkIGJ5IFJURV9QVFlQRV8qDQo+IA0KPiBJZiBJIHVuZGVyc3RhbmQg Y29ycmVjdGx5LCB0aGUgc3RhdGVtZW50IGlzIGEgYml0IG1pc2xlYWRpbmcgc2luY2UgaXQgc2hv dWxkIGJlIGENCj4gYml0IG1hc2sgb2YgUlRFX1BUWVBFXyogZGVmaW5lcy4gTm90IGV4YWN0bHkg b25lIFJURV9QVFlQRV8qLg0KDQpEbyB5b3UgbWVhbiB0aGF0IGEgc2VnbWVudCBzaG91bGQgc3Vw cG9ydCBtdWx0aXBsZSBwcm90b2NvbCBoZWFkZXJzLCBzdWNoIGFzIHNwbGl0dGluZyBib3RoIHRj cCBhbmQgdWRwIGhlYWRlcnM/DQoNCj4gDQo+ID4gCQkJICAgICAqLw0KPiA+IH07DQo+ID4NCj4g PiBJZiBwcm90b2NvbCBoZWFkZXIgc3BsaXQgY2FuIGJlIHN1cHBvcnRlZCBieSBhIFBNRC4gVGhl DQo+ID4gcnRlX2V0aF9idWZmZXJfc3BsaXRfZ2V0X3N1cHBvcnRlZF9oZHJfcHR5cGVzIGZ1bmN0 aW9uIGNhbiBiZSB1c2UgdG8NCj4gPiBvYnRhaW4gYSBsaXN0IG9mIHRoZXNlIHByb3RvY29sIGhl YWRlcnMuDQo+ID4NCj4gPiBGb3IgZXhhbXBsZSwgbGV0J3Mgc3VwcG9zZSB3ZSBjb25maWd1cmVk IHRoZSBSeCBxdWV1ZSB3aXRoIHRoZQ0KPiA+IGZvbGxvd2luZyBzZWdtZW50czoNCj4gPiAgICAg ICAgICBzZWcwIC0gcG9vbDAsIHByb3RvX2hkcjA9UlRFX1BUWVBFX0wzX0lQVjQsIG9mZjA9MkIN Cj4gPiAgICAgICAgICBzZWcxIC0gcG9vbDEsIHByb3RvX2hkcjE9UlRFX1BUWVBFX0w0X1VEUCwg b2ZmMT0xMjhCDQo+ID4gICAgICAgICAgc2VnMiAtIHBvb2wyLCBvZmYxPTBCDQo+ID4NCj4gPiBU aGUgcGFja2V0IGNvbnNpc3RzIG9mIE1BQ19JUFY0X1VEUF9QQVlMT0FEIHdpbGwgYmUgc3BsaXQg bGlrZQ0KPiANCj4gV2hhdCBpcyBNQUNfSVBWNF9VRFBfUEFZTE9BRD8gRG8geW91IG1lYW4gRVRI X0lQVjRfVURQX1BBWUxPQUQ/DQoNClRoYW5rcyBmb3IgeW91ciBjb3JyZWN0aW9uLCBpdCBzaG91 bGQgYmUgRVRIX0lQVjRfVURQX1BBWUxPQUQuDQoNCj4gDQo+ID4gZm9sbG93aW5nOg0KPiA+ICAg ICAgICAgIHNlZzAgLSBpcHY0IGhlYWRlciBAIFJURV9QS1RNQlVGX0hFQURST09NICsgMiBpbiBt YnVmIGZyb20NCj4gcG9vbDANCj4gPiAgICAgICAgICBzZWcxIC0gdWRwIGhlYWRlciBAIDEyOCBp biBtYnVmIGZyb20gcG9vbDENCj4gPiAgICAgICAgICBzZWcyIC0gcGF5bG9hZCBAIDAgaW4gbWJ1 ZiBmcm9tIHBvb2wyDQo+ID4NCj4gPiBOb3RlOiBOSUMgd2lsbCBvbmx5IGRvIHNwbGl0IHdoZW4g dGhlIHBhY2tldHMgZXhhY3RseSBtYXRjaCBhbGwgdGhlDQo+ID4gcHJvdG9jb2wgaGVhZGVycyBp biB0aGUgc2VnbWVudHMuIEZvciBleGFtcGxlLCBpZiBBUlAgcGFja2V0cyByZWNlaXZlZA0KPiA+ IHdpdGggYWJvdmUgY29uZmlnLCB0aGUgTklDIHdvbid0IGRvIHNwbGl0IGZvciBBUlAgcGFja2V0 cyBzaW5jZSBpdA0KPiA+IGRvZXMgbm90IGNvbnRhaW5zIGlwdjQgaGVhZGVyIGFuZCB1ZHAgaGVh ZGVyLg0KPiANCj4gWW91IG11c3QgZGVmaW5lIHdoaWNoIG1lbXBvb2wgaXMgdXNlZCBpbiB0aGUg Y2FzZS4NCg0KSU1ITyBJIGRvbid0IHRoaW5rIHdlIGNhbiBkZWZpbmUgd2hpY2ggbWVtcG9vbCB0 byB1c2UsIGl0IGRlcGVuZHMgb24gTklDIGJlaGF2aW9yLg0KRm9yIG91ciBOSUMsIHBhY2tldHMg dGhhdCBhcmUgdW5hYmxlIHRvIHNwbGl0IHdpbGwgYmUgcHV0IGludG8gdGhlIGxhc3QgdmFsaWQg cG9vbCwgd2l0aCB6ZXJvIG9mZnNldC4gDQpTbyBoZXJlIHdlIHdvdWxkIGxpa2UgdG8gZGVmaW5l IHRvIHB1dCB0aGVzZSBwYWNrZXRzIGludG8gdGhlIGxhc3QgdmFsaWQgbWVtcG9vbCwgd2l0aCB6 ZXJvIG9mZnNldC4NCg0KPiANCj4gPg0KPiA+IE5vdyBidWZmZXIgc3BsaXQgY2FuIGJlIGNvbmZp Z3VyZWQgaW4gdHdvIG1vZGVzLiBGb3IgbGVuZ3RoIGJhc2VkDQo+ID4gYnVmZmVyIHNwbGl0LCB0 aGUgbXAsIGxlbmd0aCwgb2Zmc2V0IGZpZWxkIGluIFJ4IHBhY2tldCBzZWdtZW50IHNob3VsZA0K PiA+IGJlIGNvbmZpZ3VyZWQsIHdoaWxlIHRoZSBwcm90b19oZHIgZmllbGQgd2lsbCBiZSBpZ25v cmVkLg0KPiA+IEZvciBwcm90b2NvbCBoZWFkZXIgYmFzZWQgYnVmZmVyIHNwbGl0LCB0aGUgbXAs IG9mZnNldCwgcHJvdG9faGRyDQo+ID4gZmllbGQgaW4gUnggcGFja2V0IHNlZ21lbnQgc2hvdWxk IGJlIGNvbmZpZ3VyZWQsIHdoaWxlIHRoZSBsZW5ndGgNCj4gPiBmaWVsZCB3aWxsIGJlIGlnbm9y ZWQuDQo+ID4NCj4gPiBUaGUgc3BsaXQgbGltaXRhdGlvbnMgaW1wb3NlZCBieSB1bmRlcmx5aW5n IGRyaXZlciBpcyByZXBvcnRlZCBpbiB0aGUNCj4gPiBydGVfZXRoX2Rldl9pbmZvLT5yeF9zZWdf Y2FwYSBmaWVsZC4gVGhlIG1lbW9yeSBhdHRyaWJ1dGVzIGZvciB0aGUNCj4gPiBzcGxpdCBwYXJ0 cyBtYXkgZGlmZmVyIGVpdGhlciwgZHBkayBtZW1vcnkgYW5kIGV4dGVybmFsIG1lbW9yeSwNCj4g cmVzcGVjdGl2ZWx5Lg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogWXVhbiBXYW5nIDx5dWFueC53 YW5nQGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBYdWFuIERpbmcgPHh1YW4uZGluZ0Bp bnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogV2VueHVhbiBXdSA8d2VueHVhbngud3VAaW50 ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICAgZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8x MS5yc3QgfCAgNSArKysNCj4gPiAgIGxpYi9ldGhkZXYvcnRlX2V0aGRldi5jICAgICAgICAgICAg ICAgIHwgNTUgKysrKysrKysrKysrKysrKysrKystLS0tLS0NCj4gPiAgIGxpYi9ldGhkZXYvcnRl X2V0aGRldi5oICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKy0NCj4gPiAgIDMgZmlsZXMgY2hh bmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0t Z2l0IGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8xMS5yc3QNCj4gPiBiL2RvYy9n dWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMTEucnN0DQo+ID4gaW5kZXggNGQ5MDUxNGE5YS4u ZjNiNThjNzg5NSAxMDA2NDQNCj4gPiAtLS0gYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNl XzIyXzExLnJzdA0KPiA+ICsrKyBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMTEu cnN0DQo+ID4gQEAgLTYwLDYgKzYwLDExIEBAIE5ldyBGZWF0dXJlcw0KPiA+ICAgICBBZGRlZCBg YHJ0ZV9ldGhfYnVmZmVyX3NwbGl0X2dldF9zdXBwb3J0ZWRfaGRyX3B0eXBlcygpYGAsIHRvIGdl dA0KPiBzdXBwb3J0ZWQNCj4gPiAgICAgaGVhZGVyIHByb3RvY29scyBvZiBhIFBNRCB0byBzcGxp dC4NCj4gPg0KPiA+ICsqICoqQWRkZWQgcHJvdG9jb2wgaGVhZGVyIGJhc2VkIGJ1ZmZlciBzcGxp dC4qKg0KPiA+ICsgIEV0aGRldjogVGhlIGBgcmVzZXJ2ZWRgYCBmaWVsZCBpbiB0aGUgIGBgcnRl X2V0aF9yeHNlZ19zcGxpdGBgDQo+ID4gK3N0cnVjdHVyZSBpcw0KPiA+ICsgIHJlcGxhY2VkIHdp dGggYGBwcm90b19oZHJgYCB0byBzdXBwb3J0IHByb3RvY29sIGhlYWRlciBiYXNlZCBidWZmZXIg c3BsaXQuDQo+ID4gKyAgVXNlciBjYW4gY2hvb3NlIGxlbmd0aCBvciBwcm90b2NvbCBoZWFkZXIg dG8gY29uZmlndXJlIGJ1ZmZlciBzcGxpdA0KPiA+ICsgIGFjY29yZGluZyB0byBOSUMncyBjYXBh YmlsaXR5Lg0KPiANCj4gQWRkIG9uZSBtb3JlIGVtcHR5IGxpbmUgdG8gaGF2ZSB0d28gYmVmb3Jl IHRoZSBuZXh0IHNlY3RvaW4uDQoNClRoYW5rcyBmb3IgeW91ciBjYXRjaC4NCg0KPiANCj4gPg0K PiA+ICAgUmVtb3ZlZCBJdGVtcw0KPiA+ICAgLS0tLS0tLS0tLS0tLQ0KPiA+IGRpZmYgLS1naXQg YS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jIGluZGV4 DQo+ID4gMDkzYzU3N2FkZC4uZGZjZWI3MjNlZSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2 L3J0ZV9ldGhkZXYuYw0KPiA+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jDQo+ID4gQEAg LTE2MzUsOSArMTYzNSwxMCBAQCBydGVfZXRoX2Rldl9pc19yZW1vdmVkKHVpbnQxNl90IHBvcnRf aWQpDQo+ID4gICB9DQo+ID4NCj4gPiAgIHN0YXRpYyBpbnQNCj4gPiAtcnRlX2V0aF9yeF9xdWV1 ZV9jaGVja19zcGxpdChjb25zdCBzdHJ1Y3QgcnRlX2V0aF9yeHNlZ19zcGxpdCAqcnhfc2VnLA0K PiA+IC0JCQkgICAgIHVpbnQxNl90IG5fc2VnLCB1aW50MzJfdCAqbWJwX2J1Zl9zaXplLA0KPiA+ IC0JCQkgICAgIGNvbnN0IHN0cnVjdCBydGVfZXRoX2Rldl9pbmZvICpkZXZfaW5mbykNCj4gPiAr cnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdCh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICsJCQlj b25zdCBzdHJ1Y3QgcnRlX2V0aF9yeHNlZ19zcGxpdCAqcnhfc2VnLA0KPiA+ICsJCQl1aW50MTZf dCBuX3NlZywgdWludDMyX3QgKm1icF9idWZfc2l6ZSwNCj4gPiArCQkJY29uc3Qgc3RydWN0IHJ0 ZV9ldGhfZGV2X2luZm8gKmRldl9pbmZvKQ0KPiA+ICAgew0KPiA+ICAgCWNvbnN0IHN0cnVjdCBy dGVfZXRoX3J4c2VnX2NhcGEgKnNlZ19jYXBhID0gJmRldl9pbmZvLQ0KPiA+cnhfc2VnX2NhcGE7 DQo+ID4gICAJc3RydWN0IHJ0ZV9tZW1wb29sICptcF9maXJzdDsNCj4gPiBAQCAtMTY2MCw2ICsx NjYxLDcgQEAgcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdChjb25zdCBzdHJ1Y3QNCj4gcnRl X2V0aF9yeHNlZ19zcGxpdCAqcnhfc2VnLA0KPiA+ICAgCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1w bCA9IHJ4X3NlZ1tzZWdfaWR4XS5tcDsNCj4gPiAgIAkJdWludDMyX3QgbGVuZ3RoID0gcnhfc2Vn W3NlZ19pZHhdLmxlbmd0aDsNCj4gPiAgIAkJdWludDMyX3Qgb2Zmc2V0ID0gcnhfc2VnW3NlZ19p ZHhdLm9mZnNldDsNCj4gPiArCQl1aW50MzJfdCBwcm90b19oZHIgPSByeF9zZWdbc2VnX2lkeF0u cHJvdG9faGRyOw0KPiA+DQo+ID4gICAJCWlmIChtcGwgPT0gTlVMTCkgew0KPiA+ICAgCQkJUlRF X0VUSERFVl9MT0coRVJSLCAibnVsbCBtZW1wb29sIHBvaW50ZXJcbiIpOw0KPiBAQCAtMTY5Mywx Mw0KPiA+ICsxNjk1LDQ0IEBAIHJ0ZV9ldGhfcnhfcXVldWVfY2hlY2tfc3BsaXQoY29uc3Qgc3Ry dWN0DQo+IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgKnJ4X3NlZywNCj4gPiAgIAkJfQ0KPiA+ICAgCQlv ZmZzZXQgKz0gc2VnX2lkeCAhPSAwID8gMCA6IFJURV9QS1RNQlVGX0hFQURST09NOw0KPiA+ICAg CQkqbWJwX2J1Zl9zaXplID0gcnRlX3BrdG1idWZfZGF0YV9yb29tX3NpemUobXBsKTsNCj4gPiAt CQlsZW5ndGggPSBsZW5ndGggIT0gMCA/IGxlbmd0aCA6ICptYnBfYnVmX3NpemU7DQo+ID4gLQkJ aWYgKCptYnBfYnVmX3NpemUgPCBsZW5ndGggKyBvZmZzZXQpIHsNCj4gPiAtCQkJUlRFX0VUSERF Vl9MT0coRVJSLA0KPiA+IC0JCQkJICAgICAgICIlcyBtYnVmX2RhdGFfcm9vbV9zaXplICV1IDwg JXUNCj4gKHNlZ21lbnQgbGVuZ3RoPSV1ICsgc2VnbWVudCBvZmZzZXQ9JXUpXG4iLA0KPiA+IC0J CQkJICAgICAgIG1wbC0+bmFtZSwgKm1icF9idWZfc2l6ZSwNCj4gPiAtCQkJCSAgICAgICBsZW5n dGggKyBvZmZzZXQsIGxlbmd0aCwgb2Zmc2V0KTsNCj4gPiAtCQkJcmV0dXJuIC1FSU5WQUw7DQo+ ID4gKw0KPiA+ICsJCWludCByZXQgPQ0KPiBydGVfZXRoX2J1ZmZlcl9zcGxpdF9nZXRfc3VwcG9y dGVkX2hkcl9wdHlwZXMocG9ydF9pZCwNCj4gPiArTlVMTCwgMCk7DQo+IA0KPiBEbyBub3QgbWl4 IHZhcmlhYmxlIGRlY2xhcmF0aW9uIGFuZCBjb2RlLg0KPiBJdCBpcyBiZXR0ZXIgdG8gZ2l2ZSB0 aGUgdmFyaWFibGUgc29tZSBzZW5zaWJsZSBuYW1lLg0KPiBPdGhlcndpc2UgZWxzZSBicmFuY2gg Y29kZSBpcyBoYXJkIHRvIHJlYWQuDQoNClRoYW5rcyBmb3IgdGhlIHN1Z2dlc3Rpb24sIHdpbGwg IHRha2UgY2FyZSBvZiBuYW1pbmcuDQoNCj4gDQo+ID4gKwkJaWYgKHJldCA8PSAwKSB7DQo+IA0K PiBNYXkgYmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLCBidXQgbm90aGluZyBwcmV2ZXRucyBhIGRy aXZlci9IVyB0byBzdXBwb3J0DQo+IGJvdGggcHJvdG9jb2wtYmFzZWQgYW5kIGZpeGVkLWxlbmd0 aCBzcGxpdC4NCj4gU28sIGFiaWxpdHkgdG8gc3VwcG9ydCBwcm90b2NvbCBiYXNlZCBzcGxpdCBz aG91bGQgYmUgdHJlYXRlZCBhcyBhIHJlcXVlc3QgdG8NCj4gZG8gaXQuIEl0IG11c3QgYmUgYmFz ZWQgb24gcnhfc2VnLT5wcm90b19oZHIgY29udGVudCAoZm9yIGFsbCBzZWdtZW50cykuDQo+IA0K PiBBbHNvIG5vdGhpbmcgc2hvdWxkIHByZXZlbnQgdG8gbWl4IHByb3RvY29sIGFuZCBmaXhlZC1s ZW5ndGggc3BsaXQuIEkuZS4gc3BsaXQNCj4ganVzdCBhZnRlciBVRFAgaW4gdGhlIGZpcnN0IHNl Z21lbnQsDQo+IDQwIGJ5dGVzIGluIHRoZSBzZWNvbmQgc2VnbWVudCwgZXZlcnl0aGluZyBlbHNl IGluIHRoZSB0aGlyZC4NCg0KTWl4IG1vZGUgaXMgYW4gaW50ZXJlc3RpbmcgaWRlYS4gQ3VycmVu dGx5IHRlc3RwbWQgYW5kIGRyaXZlciBkbyBub3Qgc3VwcG9ydCBtaXhlZCBtb2RlLCBidXQgaXQg ZG9lcyBub3QgYWZmZWN0IHRoZSBsaWJyYXJ5IHRvIHN1cHBvcnQgdGhpcyBtb2RlLg0KDQo+IA0K PiA+ICsJCQkvKiBTcGxpdCBhdCBmaXhlZCBsZW5ndGguICovDQo+ID4gKwkJCWxlbmd0aCA9IGxl bmd0aCAhPSAwID8gbGVuZ3RoIDogKm1icF9idWZfc2l6ZTsNCj4gPiArCQkJaWYgKCptYnBfYnVm X3NpemUgPCBsZW5ndGggKyBvZmZzZXQpIHsNCj4gPiArCQkJCVJURV9FVEhERVZfTE9HKEVSUiwN Cj4gPiArCQkJCQkiJXMgbWJ1Zl9kYXRhX3Jvb21fc2l6ZSAldSA8ICV1DQo+IChzZWdtZW50IGxl bmd0aD0ldSArIHNlZ21lbnQgb2Zmc2V0PSV1KVxuIiwNCj4gPiArCQkJCQltcGwtPm5hbWUsICpt YnBfYnVmX3NpemUsDQo+ID4gKwkJCQkJbGVuZ3RoICsgb2Zmc2V0LCBsZW5ndGgsIG9mZnNldCk7 DQo+ID4gKwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQkJfQ0KPiA+ICsJCX0gZWxzZSB7DQo+ ID4gKwkJCS8qIFNwbGl0IGFmdGVyIHNwZWNpZmllZCBwcm90b2NvbCBoZWFkZXIuICovDQo+ID4g KwkJCXVpbnQzMl90IHB0eXBlc1tyZXRdOw0KPiA+ICsJCQlpbnQgaTsNCj4gPiArDQo+ID4gKwkJ CXJldCA9DQo+IHJ0ZV9ldGhfYnVmZmVyX3NwbGl0X2dldF9zdXBwb3J0ZWRfaGRyX3B0eXBlcyhw b3J0X2lkLA0KPiA+ICtwdHlwZXMsIHJldCk7DQo+IA0KPiBJbiB0aGVvcnksIHRoZSBmdW5jaXRv biBjb3VsZCBmYWlsIHNpbmNlIGlucHV0IGFyZ3VtZW50cyBkaWZmZXIuIFNvLCBpdCBzaG91bGQg YmUNCj4gaGFuZGxlZC4NCg0KVGhhbmtzIGZvciB5b3VyIGNhdGNoLCB3aWxsIGZpeCBpbiB0aGUg bmV4dCB2ZXJzaW9uLg0KDQo+IA0KPiA+ICsJCQlmb3IgKGkgPSAwOyBpIDwgcmV0OyBpKyspDQo+ ID4gKwkJCQlpZiAocHR5cGVzW2ldICYgcHJvdG9faGRyKQ0KPiANCj4gSU1ITyBpdCBzaG91bGQg YmUgPT0sIG5vdCAmLiBJIHRoaW5rIHRoYXQNCj4gcnRlX2V0aF9idWZmZXJfc3BsaXRfZ2V0X3N1 cHBvcnRlZF9oZHJfcHR5cGVzKCkgc2hvdWxkIGRlZmluZSBwb2ludHMgYXQNCj4gd2hpY2ggc3Bs aXQgY291bGQgaGFwcGVuIGFuZCB3ZSBzaG91bGQgbWF0Y2ggdGhlIHBvaW50IGV4YWN0bHkuDQoN ClN1cmUsID09IGlzIGJldHRlci4gVGhhbmtzIGZvciB0aGUgc3VnZ2VzdGlvbi4NCg0KPiANCj4g PiArCQkJCQlicmVhazsNCj4gPiArDQo+ID4gKwkJCWlmIChpID09IHJldCkgew0KPiA+ICsjZGVm aW5lIFBUWVBFX05BTUVTSVpFCTI1Ng0KPiANCj4gV2h5PyBJdCBpcyBsb29rcyByZWFsbHkgc3Ry YW5nZSB0aGF0IGl0IGlzIGRlZmluZWQgaGVyZS4NCg0KSSBpbnRlbmQgdG8gZGlzcGxheSB0aGUg cHJvdG9jb2wgbmFtZSBpbiB0aGUgbG9nLCBidXQgaWYgdGhlIHByb3RvX2hkciBpcyBhIGJpdCBt YXNrLCBjYW4gSSBqdXN0IHNob3cgdGhlIG51bWJlcj8NClBsZWFzZSBzZWUgdjQgZm9yIHRoaXMg bW9kaWZpY2F0aW9uLg0KDQo+IA0KPiA+ICsJCQkJY2hhciBwdHlwZV9uYW1lW1BUWVBFX05BTUVT SVpFXTsNCj4gPiArCQkJCXJ0ZV9nZXRfcHR5cGVfbmFtZShwcm90b19oZHIsDQo+IHB0eXBlX25h bWUsIHNpemVvZihwdHlwZV9uYW1lKSk7DQo+ID4gKwkJCQlSVEVfRVRIREVWX0xPRyhFUlIsDQo+ ID4gKwkJCQkJIlByb3RvY29sIGhlYWRlciAlcyBpcyBub3QNCj4gc3VwcG9ydGVkLlxuIiwNCj4g PiArCQkJCQlwdHlwZV9uYW1lKTsNCj4gPiArCQkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCQl9 DQo+ID4gKwkJCWlmICgqbWJwX2J1Zl9zaXplIDwgb2Zmc2V0KSB7DQo+ID4gKwkJCQlSVEVfRVRI REVWX0xPRyhFUlIsDQo+ID4gKwkJCQkJCSIlcw0KPiBtYnVmX2RhdGFfcm9vbV9zaXplICV1IDwg JXUgc2VnbWVudCBvZmZzZXQpXG4iLA0KPiA+ICsJCQkJCQltcGwtPm5hbWUsICptYnBfYnVmX3Np emUsDQo+ID4gKwkJCQkJCW9mZnNldCk7DQo+ID4gKwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAr CQkJfQ0KPiA+ICAgCQl9DQo+ID4gICAJfQ0KPiA+ICAgCXJldHVybiAwOw0KPiA+IEBAIC0xNzc4 LDcgKzE4MTEsNyBAQCBydGVfZXRoX3J4X3F1ZXVlX3NldHVwKHVpbnQxNl90IHBvcnRfaWQsDQo+ IHVpbnQxNl90IHJ4X3F1ZXVlX2lkLA0KPiA+ICAgCQluX3NlZyA9IHJ4X2NvbmYtPnJ4X25zZWc7 DQo+ID4NCj4gPiAgIAkJaWYgKHJ4X2NvbmYtPm9mZmxvYWRzICYNCj4gUlRFX0VUSF9SWF9PRkZM T0FEX0JVRkZFUl9TUExJVCkgew0KPiA+IC0JCQlyZXQgPSBydGVfZXRoX3J4X3F1ZXVlX2NoZWNr X3NwbGl0KHJ4X3NlZywgbl9zZWcsDQo+ID4gKwkJCXJldCA9IHJ0ZV9ldGhfcnhfcXVldWVfY2hl Y2tfc3BsaXQocG9ydF9pZCwgcnhfc2VnLA0KPiBuX3NlZywNCj4gPiAgIAkJCQkJCQkgICAmbWJw X2J1Zl9zaXplLA0KPiA+ICAgCQkJCQkJCSAgICZkZXZfaW5mbyk7DQo+ID4gICAJCQlpZiAocmV0 ICE9IDApDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oIGIvbGliL2V0 aGRldi9ydGVfZXRoZGV2LmggaW5kZXgNCj4gPiBjNThjOTA4YzNhLi40MTBmYmE1ZWFiIDEwMDY0 NA0KPiA+IC0tLSBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oDQo+ID4gKysrIGIvbGliL2V0aGRl di9ydGVfZXRoZGV2LmgNCj4gPiBAQCAtMTE3NSw2ICsxMTc1LDkgQEAgc3RydWN0IHJ0ZV9ldGhf dHhtb2RlIHsNCj4gPiAgICAqICAgc3BlY2lmaWVkIGluIHRoZSBmaXJzdCBhcnJheSBlbGVtZW50 LCB0aGUgc2Vjb25kIGJ1ZmZlciwgZnJvbSB0aGUNCj4gPiAgICAqICAgcG9vbCBpbiB0aGUgc2Vj b25kIGVsZW1lbnQsIGFuZCBzbyBvbi4NCj4gPiAgICAqDQo+ID4gKyAqIC0gVGhlIHByb3RvX2hk cnMgaW4gdGhlIGVsZW1lbnRzIGRlZmluZSB0aGUgc3BsaXQgcG9zaXRpb24gb2YNCj4gPiArICog ICByZWNlaXZlZCBwYWNrZXRzLg0KPiA+ICsgKg0KPiA+ICAgICogLSBUaGUgb2Zmc2V0cyBmcm9t IHRoZSBzZWdtZW50IGRlc2NyaXB0aW9uIGVsZW1lbnRzIHNwZWNpZnkNCj4gPiAgICAqICAgdGhl IGRhdGEgb2Zmc2V0IGZyb20gdGhlIGJ1ZmZlciBiZWdpbm5pbmcgZXhjZXB0IHRoZSBmaXJzdCBt YnVmLg0KPiA+ICAgICogICBUaGUgZmlyc3Qgc2VnbWVudCBvZmZzZXQgaXMgYWRkZWQgd2l0aCBS VEVfUEtUTUJVRl9IRUFEUk9PTS4NCj4gPiBAQCAtMTE5NiwxMiArMTE5OSwyNCBAQCBzdHJ1Y3Qg cnRlX2V0aF90eG1vZGUgew0KPiA+ICAgICogICAgIC0gcG9vbCBmcm9tIHRoZSBsYXN0IHZhbGlk IGVsZW1lbnQNCj4gPiAgICAqICAgICAtIHRoZSBidWZmZXIgc2l6ZSBmcm9tIHRoaXMgcG9vbA0K PiA+ICAgICogICAgIC0gemVybyBvZmZzZXQNCj4gPiArICoNCj4gPiArICogLSBMZW5ndGggYmFz ZWQgYnVmZmVyIHNwbGl0Og0KPiA+ICsgKiAgICAgLSBtcCwgbGVuZ3RoLCBvZmZzZXQgc2hvdWxk IGJlIGNvbmZpZ3VyZWQuDQo+ID4gKyAqICAgICAtIFRoZSBwcm90b19oZHIgZmllbGQgd2lsbCBi ZSBpZ25vcmVkLg0KPiA+ICsgKg0KPiA+ICsgKiAtIFByb3RvY29sIGhlYWRlciBiYXNlZCBidWZm ZXIgc3BsaXQ6DQo+ID4gKyAqICAgICAtIG1wLCBvZmZzZXQsIHByb3RvX2hkciBzaG91bGQgYmUg Y29uZmlndXJlZC4NCj4gPiArICogICAgIC0gVGhlIGxlbmd0aCBmaWVsZCB3aWxsIGJlIGlnbm9y ZWQuDQo+ID4gICAgKi8NCj4gPiAgIHN0cnVjdCBydGVfZXRoX3J4c2VnX3NwbGl0IHsNCj4gPiAg IAlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wOyAvKio8IE1lbW9yeSBwb29sIHRvIGFsbG9jYXRlIHNl Z21lbnQNCj4gZnJvbS4gKi8NCj4gPiAgIAl1aW50MTZfdCBsZW5ndGg7IC8qKjwgU2VnbWVudCBk YXRhIGxlbmd0aCwgY29uZmlndXJlcyBzcGxpdCBwb2ludC4gKi8NCj4gPiAgIAl1aW50MTZfdCBv ZmZzZXQ7IC8qKjwgRGF0YSBvZmZzZXQgZnJvbSBiZWdpbm5pbmcgb2YgbWJ1ZiBkYXRhIGJ1ZmZl ci4NCj4gKi8NCj4gPiAtCXVpbnQzMl90IHJlc2VydmVkOyAvKio8IFJlc2VydmVkIGZpZWxkLiAq Lw0KPiA+ICsJLyoqDQo+ID4gKwkgKiBTdXBwb3J0ZWQgcHR5cGUgb2YgYSBzcGVjaWZpYyBwbWQs IGNvbmZpZ3VyZXMgc3BsaXQgcG9pbnQuDQo+ID4gKwkgKiBJdCBzaG91bGQgYmUgZGVmaW5lZCBi eSBSVEVfUFRZUEVfKi4NCj4gPiArCSAqLw0KPiA+ICsJdWludDMyX3QgcHJvdG9faGRyOw0KPiA+ ICAgfTsNCj4gPg0KPiA+ICAgLyoqDQoNCg==