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 A851EA0093; Mon, 25 Apr 2022 16:57:35 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4020C41109; Mon, 25 Apr 2022 16:57:35 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id D529540E78 for ; Mon, 25 Apr 2022 16:57:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650898653; x=1682434653; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=n24ENpHu5u3IT8uGTLV+ilvrEL5cr0HffaD+QQHxPfw=; b=mfLqtnhZUX4LBBhFlFvudoSnD9HPgAobqltBb7QqU6DjNKecP1gpZcxP unu/U+GQxzmB2PrRl6EwHkQD4a8ASNpnunmsrZdcRDENVsLk6ClCTkLAF Ul6S7CKH6elXeGn3USDjUuIQljSV0IxZRio5SrrP/d35iHd2eaU6oweWN g6T0qpU+/FMYNzYxazcor515hJ9yFmCd3i9UOgiizax0JdBrPc6GHwGoC 5Ka7x/95n3dAnATpO92y4SkqV5xR3aeKL6BhbDM1NvbbGYyZytUfIr0Vq mkNP0XLZ9FAkvM6JxTj/cFCUwj+Rm0Uv8tRDCMxi/y3pQJ1VBsNP5eBKY Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10328"; a="328208050" X-IronPort-AV: E=Sophos;i="5.90,288,1643702400"; d="scan'208";a="328208050" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Apr 2022 07:57:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,288,1643702400"; d="scan'208";a="557769967" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga007.jf.intel.com with ESMTP; 25 Apr 2022 07:57:31 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 25 Apr 2022 07:57:30 -0700 Received: from fmsmsx606.amr.corp.intel.com (10.18.126.86) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 25 Apr 2022 07:57:30 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Mon, 25 Apr 2022 07:57:30 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.45) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Mon, 25 Apr 2022 07:57:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ApcoiQ3eAdcqpRHIm6BaLoWkAOidyxA+rxOwbTIcR/DKBQTxIezOWhibR3kx5GupfJklCer49R4jjNc32NKyLqiINAmq/1PTKLaIZduYNiP7NbZQ4HMTHEDE9J2hywj2sa/6iRbjpgTShJ8Is9litoPkaMNEjoNk8EkkRYEkLQhWF2cMGIIyGAID/7JNipQqUcfPW6DgHSUNZhatbbfR5XHk4Vn1qTlzhi2THWZ8msfu8NdMLlfP9XmFsScHf3NyauQ8wJX4WVZuWxqu6O7PFglzHMw+srgVYsvfKT6O0bH+CR01IMkqy3uzZZTssdNq42HLLfdlPnCQ0Lq4nSpoog== 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=n24ENpHu5u3IT8uGTLV+ilvrEL5cr0HffaD+QQHxPfw=; b=DfjVdqJJu5ZpgUCk7b/Gqz4iag3B8OVzDrhh3Wa4P8TAEM0aHBXOJT1ForurcnA2RbtVZ1416xscvoV5h2N/VUGf+upuutyqfv774SjDdoPZC/SOjMguTu1M9CuwesaGnRmAsSR4bHuHqvdWdSTNDgxnh4NKNcwDlMVDHXwPEnuyVm8pdU7fMBiycdM34Qjm7Qd7B8uW/uOVFRwp2lMShDrFRYw/CKaDxUzcGe+XlWP+hqb6ScDAhdTxey+BW4H74SombU+n59A4R5ayoseSIQuzCQh3kFOkygDgQ1uaeivxwtXAiSCk3bErNRsW+dYfwAqS6JKno0EFV4oHxkPeVg== 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 BN9PR11MB5513.namprd11.prod.outlook.com (2603:10b6:408:102::11) by BN8PR11MB3843.namprd11.prod.outlook.com (2603:10b6:408:88::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.13; Mon, 25 Apr 2022 14:57:27 +0000 Received: from BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::9147:90d3:4ea2:7838]) by BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::9147:90d3:4ea2:7838%6]) with mapi id 15.20.5186.021; Mon, 25 Apr 2022 14:57:27 +0000 From: "Ding, Xuan" To: Andrew Rybchenko , "Wu, WenxuanX" , "thomas@monjalon.net" , "Li, Xiaoyun" , "Singh, Aman Deep" , "Zhang, Yuying" , "Zhang, Qi Z" CC: "dev@dpdk.org" , "stephen@networkplumber.org" , "mb@smartsharesystems.com" , "viacheslavo@nvidia.com" , "Yu, Ping" , "Wang, YuanX" , "david.marchand@redhat.com" , Ferruh Yigit Subject: RE: [v4 1/3] ethdev: introduce protocol type based header split Thread-Topic: [v4 1/3] ethdev: introduce protocol type based header split Thread-Index: AQHYRoFV1PgDPUFqJUelFXME57QWpKzkTNwAgAftbBCADNTVAIAHrniA Date: Mon, 25 Apr 2022 14:57:27 +0000 Message-ID: References: <20220303060136.36427-1-xuan.ding@intel.com> <20220402104109.472078-1-wenxuanx.wu@intel.com> <20220402104109.472078-2-wenxuanx.wu@intel.com> <253f6a27-0daa-d708-79e6-607228dda044@oktetlabs.ru> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.401.20 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f8f37dd5-f76a-43f9-a1dd-08da26cbea21 x-ms-traffictypediagnostic: BN8PR11MB3843:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: awP0LTfQbrK6ekBQD2+P07h4d2iuJ0B+tgH5ApjT3g2Vj4BeWOPXR9SudnVHCsqFkTvYrjSUDMOJ9sqncUGiVf2yDPWkoCh5IcVIENG0MkvEgRxZdPGoWx4cxN1FRNihfqIcTt59ZOTkdEgEaqqqi3+LpSAWfxLrDkaT51TqyEByKZ1y8deKh0McluCBXL++Q96bsAcFb910Vfrv0yCMERDbRTaY2zQVH8Q8ELlfz+bX2zUHQMyNny63X3QT+vkm7Oea6U1cQvm4u//92TPAlxF2IWj9IcJWNEB4cAYPC42J8vV93G8dwHTbh+YrTf1fKPzdHbrw+dzu+DUjEsxJR/NlAM/1H4+emxL2LoTHeX48dzRIHpLEC/0m5S4KxLofTZmDPhQ8aa+4KS//keggKTygRxTmGj525f+3VgiiaQW7Vw3QPUb+vpJuNUA1vrhc7TnBCcAvEtEJ/nRBgAMsvfeKykDOiNbns7T+zdrQvEzBPtmV8W0fGB0ixnN8pjV81d6ml8K0f8UMVAPmb6FLtq2HYDCFKPbY5YqXFUj8FHY0nAkSNPhnD4uevqa5uMgtmsDa3GvVTr6Uve4eJOXYqgo/QiHzXwrVcCMhdsj5Ap3MFsn6CPcFy5E6bfss5ne+ZPgqX3IWu6myNn4z+5IYezNA3ZEBx92AlWK509TBTQ4RF+QddaACYJgnet/ZxN7MC8UiQ1OFfbAyg7Py7/l0xht6bynZ4S5HWyttFgwbhR0= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5513.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(6636002)(2906002)(110136005)(122000001)(9686003)(82960400001)(55016003)(5660300002)(52536014)(30864003)(83380400001)(38100700002)(38070700005)(86362001)(8936002)(54906003)(66476007)(66446008)(66556008)(64756008)(508600001)(4326008)(66946007)(76116006)(186003)(8676002)(921005)(33656002)(316002)(71200400001)(26005)(6506007)(7696005)(53546011); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YXJraXBvTENYdGdqWmtOM0IwMDhhbGlBQW5KckMyRjlsbDBzYTllZTRoSzVl?= =?utf-8?B?SFFSeElqUVFvc1NOVytmeFBvYlp6aUdTLzRmMGFsT2tMSUJmNGFKeGcwclhy?= =?utf-8?B?VTR4ckJWTUdqMEozVUVqS2Y0SG8va2oxUU4zdUJOV1VvdDl2WVpQdVpYdDU5?= =?utf-8?B?T0FXSWZFZm41UXEvRHRBZWc5Q2k3RnNtK2hrbW5LQ0JVdTRWK0lPVlFpUFov?= =?utf-8?B?MEdyMXRQUytCd2RGVlRDM0dYejNrNGZDQTJNUUxFWkZuaHFwQXBsMDY4YXFP?= =?utf-8?B?WWQ3YTFuUTVDRFRWMG1ZQW5TUzRieUhuL09vcVVqY29LM1c2a2VnSUs4L0Nj?= =?utf-8?B?Tmg3RFdVMTdYa1NmMGZrQldFazhoZTBZQ0dQYk1SZVpER3RNM2RvMkt5SXRK?= =?utf-8?B?MFBhK01Pc015U2FBV0pkWXJOS3NOZVdlSHRZNTFnQnM0VDhTMHhMNUNhRHJT?= =?utf-8?B?aHRCYm9SLy9RNWVLeXRZSHR3SytvZm84V3VTUFJXYWY3SW5MKzBzbFE4ZDhw?= =?utf-8?B?aTVxWTF2Ni83eDliKzRCa3psWUlnZmw5MUdPSTVOc0NBYzE5NGFRQk80WTZq?= =?utf-8?B?bjZsbHRTUXpSeWMyZTNzWjBkSHUxbTgvMSszcmN3L1V5TDhDKzdLa3VpTUtI?= =?utf-8?B?UXZaVlNKSnFscVB2TC8xempmVFNpclY1T0liRXFyVnpnaitaS3A1MWJmQkVR?= =?utf-8?B?a3RVcVE2QUptS29HK2hWa2lMSlEzUEtFNHcydU9zYTAvUlVmYVZFaDQydzF6?= =?utf-8?B?aUo3V203cnNFZnplUnMzUzd5RTY2OVlYcjVOZUU3QzJPdDJxKzdFTm0zSVpM?= =?utf-8?B?WHlYL1EvZHU3U1R6cGxySHpoK1Jjc0ZPTEZ5QzdsU0grUEIxVHBPWnZYUXNr?= =?utf-8?B?cFduN3FmNGxpREwzbFFiSWFiRXRJSFI1UGFDZmdtR1p4QktZdHVrbHVFU01X?= =?utf-8?B?anA1RmMxTGsyeXVzRWtRWkZ6bXVZazB3clNhRTRSQUg0bmZiOHdnQUxOVG1i?= =?utf-8?B?VDdjNzhXTzArMGo0L1lPN0JNQkprWkU1bVJmODN3TTk3TkpXR0ZNZmxyR3Zs?= =?utf-8?B?ZE1NUkF1NEJnWkxyQ3BLNkVKTHovK0VKZHU4ZS9TYmNranlyckdGVk5vU29m?= =?utf-8?B?dTJqdFZlOGYxclhha21zRWZydVpzbjFDY1hGSXArczcyVGFoZUN0ajRobEpx?= =?utf-8?B?OXFwVGRmaGx4VFZWVUczTEdzZkQ4SmZoYkRWM1V1V211Zk9aQnA2OHBXU2JC?= =?utf-8?B?WU9vZklqZHVMcDlUU2NGenFSSUxFZDBTS3VKRWRxUlc1dVdaZ1FEdXhIekEv?= =?utf-8?B?WWg3UHVEK3V0enV0YUFaZStQZTh1RWtub3lodzZPalhWVFhFdG55RW1USllC?= =?utf-8?B?NzhTSGZ4VDBRdXJ2YStyS0QxNlpkb1o4NXlNeWJMRHlsU28yVU1ZRGJ0SUhy?= =?utf-8?B?bHZ6TFUxa0RiZEhBZmdzMk9UZk1PQ1RGMGhtZnUxMTdlK0p1TXBFUDFXNThQ?= =?utf-8?B?eVZobk8xMEloOEU4ZHRsOURMNG9DaTYrd3hsdDJHTEhIS01tT1o3YlR5c1NX?= =?utf-8?B?MnRnWEl1TldoYXZEZmdLbzZpZVdPTENpUEZpVEcydnZiT2FYVElzandyckZm?= =?utf-8?B?azJadDlnTHBjYVRobTNiRkZjMVN4WnFlODFtbm1aRkU0WDVZOWd4cFpFdFM4?= =?utf-8?B?aTQvZnBGd1Q5czlMc0xZbjVlb0NQTDdxVDA4M2xVSmJ2dlVhRnBTWHU2cnJX?= =?utf-8?B?MUFsV3B5QWNFTHhRaHh2enp2TWhSVTl6M053bFAyUjE5dWZZS1JNbko1NGpn?= =?utf-8?B?OE9YWk9DQlJnRUcwMXQ2T3BVMS9CWE1lbUhDbElNdXdlZHF5NDZlMmEzK2hT?= =?utf-8?B?SFlKZzNyeHhCSjJzRFkvQksyVVA3U1JOSWFFNWYyS3Jrbi9RSGJzQlBOdEpS?= =?utf-8?B?R3ZtbVorUTM0YTF5UCtyYXRlcHBmOFNYUmNaMWFrSFgra3U2OEo5ZUs0VkVY?= =?utf-8?B?MUo1NDBvWFc0eUxPbE5ObGcyOHFoSytKYURrMUMxTGhCOGtvMEMzWkMxeTJD?= =?utf-8?B?S3IxMEVJL3VUM3doaUlPVmhFNkI3b3MxVG1OYUwvelk1K2ZZQ0pHYWNpa25p?= =?utf-8?B?bXE1a0U4MTdBalJkUUdXN3V6VktZekdhWndGbng0c29lbHZxNlFUM1hjRW9D?= =?utf-8?B?Q0RKQ2hxVGlQSCtKVDZGTU1aODVXV2N2L0tKMjBrd2J4bzF0M2NMc3Y2M2Nq?= =?utf-8?B?Wi9XdTJtRHNDbVhvVGtnUGRUZVo1YlMyMWVRS05kazh4SExBZFJURTdSMmVm?= =?utf-8?B?N0FQNzNYRko5RGZKaUdHYmk0eUtucVZ3ZmRkVW5kRm9HL3hKcU56QT09?= 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: BN9PR11MB5513.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8f37dd5-f76a-43f9-a1dd-08da26cbea21 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Apr 2022 14:57:27.4323 (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: Ryw2qXPwXgTwmRp/KB++0YstBnqMYHybM47chtzTUivtawVUV4FfSvbNrE79ZTsqoMnMIwzJ+2XRvElfgg8xRA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR11MB3843 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 dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiBTZW50OiBXZWRu ZXNkYXksIEFwcmlsIDIwLCAyMDIyIDExOjQ4IFBNDQo+IFRvOiBEaW5nLCBYdWFuIDx4dWFuLmRp bmdAaW50ZWwuY29tPjsgV3UsIFdlbnh1YW5YDQo+IDx3ZW54dWFueC53dUBpbnRlbC5jb20+OyB0 aG9tYXNAbW9uamFsb24ubmV0OyBMaSwgWGlhb3l1bg0KPiA8eGlhb3l1bi5saUBpbnRlbC5jb20+ OyBTaW5naCwgQW1hbiBEZWVwIDxhbWFuLmRlZXAuc2luZ2hAaW50ZWwuY29tPjsNCj4gWmhhbmcs IFl1eWluZyA8eXV5aW5nLnpoYW5nQGludGVsLmNvbT47IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5n QGludGVsLmNvbT4NCj4gQ2M6IGRldkBkcGRrLm9yZzsgc3RlcGhlbkBuZXR3b3JrcGx1bWJlci5v cmc7DQo+IG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbTsgdmlhY2hlc2xhdm9AbnZpZGlhLmNvbTsg WXUsIFBpbmcNCj4gPHBpbmcueXVAaW50ZWwuY29tPjsgV2FuZywgWXVhblggPHl1YW54LndhbmdA aW50ZWwuY29tPjsNCj4gZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbTsgRmVycnVoIFlpZ2l0IDxm ZXJydWh5QHhpbGlueC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbdjQgMS8zXSBldGhkZXY6IGludHJv ZHVjZSBwcm90b2NvbCB0eXBlIGJhc2VkIGhlYWRlciBzcGxpdA0KPiANCj4gSGkgWHVhbiwNCj4g DQo+IE9uIDQvMTIvMjIgMTk6MTUsIERpbmcsIFh1YW4gd3JvdGU6DQo+ID4gSGkgQW5kcmV3LA0K PiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEFuZHJldyBS eWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiA+PiBTZW50OiBUaHVy c2RheSwgQXByaWwgNywgMjAyMiA2OjQ4IFBNDQo+ID4+IFRvOiBXdSwgV2VueHVhblggPHdlbnh1 YW54Lnd1QGludGVsLmNvbT47IHRob21hc0Btb25qYWxvbi5uZXQ7DQo+IExpLA0KPiA+PiBYaWFv eXVuIDx4aWFveXVuLmxpQGludGVsLmNvbT47IFNpbmdoLCBBbWFuIERlZXANCj4gPj4gPGFtYW4u ZGVlcC5zaW5naEBpbnRlbC5jb20+OyBaaGFuZywgWXV5aW5nIDx5dXlpbmcuemhhbmdAaW50ZWwu Y29tPjsNCj4gPj4gWmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29tPg0KPiA+PiBDYzog ZGV2QGRwZGsub3JnOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsNCj4gPj4gbWJAc21hcnRz aGFyZXN5c3RlbXMuY29tOyB2aWFjaGVzbGF2b0BudmlkaWEuY29tOyBZdSwgUGluZw0KPiA+PiA8 cGluZy55dUBpbnRlbC5jb20+OyBEaW5nLCBYdWFuIDx4dWFuLmRpbmdAaW50ZWwuY29tPjsgV2Fu ZywgWXVhblgNCj4gPj4gPHl1YW54LndhbmdAaW50ZWwuY29tPjsgZGF2aWQubWFyY2hhbmRAcmVk aGF0LmNvbTsgRmVycnVoIFlpZ2l0DQo+ID4+IDxmZXJydWh5QHhpbGlueC5jb20+DQo+ID4+IFN1 YmplY3Q6IFJlOiBbdjQgMS8zXSBldGhkZXY6IGludHJvZHVjZSBwcm90b2NvbCB0eXBlIGJhc2Vk IGhlYWRlcg0KPiA+PiBzcGxpdA0KPiA+Pg0KPiA+PiBPbiA0LzIvMjIgMTM6NDEsIHdlbnh1YW54 Lnd1QGludGVsLmNvbSB3cm90ZToNCj4gPj4+IEZyb206IFh1YW4gRGluZyA8eHVhbi5kaW5nQGlu dGVsLmNvbT4NCj4gPj4+DQo+ID4+PiBIZWFkZXIgc3BsaXQgY29uc2lzdHMgb2Ygc3BsaXR0aW5n IGEgcmVjZWl2ZWQgcGFja2V0IGludG8gdHdvDQo+ID4+PiBzZXBhcmF0ZSByZWdpb25zIGJhc2Vk IG9uIHRoZSBwYWNrZXQgY29udGVudC4gVGhlIHNwbGl0IGhhcHBlbnMNCj4gPj4+IGFmdGVyIHRo ZSBwYWNrZXQgaGVhZGVyIGFuZCBiZWZvcmUgdGhlIHBhY2tldCBwYXlsb2FkLiBTcGxpdHRpbmcg aXMNCj4gPj4+IHVzdWFsbHkgYmV0d2VlbiB0aGUgcGFja2V0IGhlYWRlciB0aGF0IGNhbiBiZSBw b3N0ZWQgdG8gYSBkZWRpY2F0ZWQNCj4gPj4+IGJ1ZmZlciBhbmQgdGhlIHBhY2tldCBwYXlsb2Fk IHRoYXQgY2FuIGJlIHBvc3RlZCB0byBhIGRpZmZlcmVudCBidWZmZXIuDQo+ID4+Pg0KPiA+Pj4g Q3VycmVudGx5LCBSeCBidWZmZXIgc3BsaXQgc3VwcG9ydHMgbGVuZ3RoIGFuZCBvZmZzZXQgYmFz ZWQgcGFja2V0IHNwbGl0Lg0KPiA+Pj4gQWx0aG91Z2ggaGVhZGVyIHNwbGl0IGlzIGEgc3Vic2V0 IG9mIGJ1ZmZlciBzcGxpdCwgY29uZmlndXJpbmcNCj4gPj4+IGJ1ZmZlciBzcGxpdCBiYXNlZCBv biBsZW5ndGggaXMgbm90IHN1aXRhYmxlIGZvciBOSUNzIHRoYXQgZG8gc3BsaXQNCj4gPj4+IGJh c2VkIG9uIGhlYWRlciBwcm90b2NvbCB0eXBlcy4gQmVjYXVzZSB0dW5uZWxpbmcgbWFrZXMgdGhl DQo+ID4+PiBjb252ZXJzaW9uIGZyb20gbGVuZ3RoIHRvIHByb3RvY29sIHR5cGUgaW1wb3NzaWJs ZS4NCj4gPj4+DQo+ID4+PiBUaGlzIHBhdGNoIGV4dGVuZHMgdGhlIGN1cnJlbnQgYnVmZmVyIHNw bGl0IHRvIHN1cHBvcnQgcHJvdG9jb2wgdHlwZQ0KPiA+Pj4gYW5kIG9mZnNldCBiYXNlZCBoZWFk ZXIgc3BsaXQuIEEgbmV3IHByb3RvIGZpZWxkIGlzIGludHJvZHVjZWQgaW4NCj4gPj4+IHRoZSBy dGVfZXRoX3J4c2VnX3NwbGl0IHN0cnVjdHVyZSByZXNlcnZlZCBmaWVsZCB0byBzcGVjaWZ5IGhl YWRlcg0KPiA+Pj4gcHJvdG9jb2wgdHlwZS4gV2l0aCBSeCBvZmZsb2FkIGZsYWcNCj4gUlRFX0VU SF9SWF9PRkZMT0FEX0hFQURFUl9TUExJVA0KPiA+Pj4gZW5hYmxlZCBhbmQgcHJvdG9jb2wgdHlw ZSBjb25maWd1cmVkLCBQTUQgd2lsbCBzcGxpdCB0aGUgaW5ncmVzcw0KPiA+Pj4gcGFja2V0cyBp bnRvIHR3byBzZXBhcmF0ZSByZWdpb25zLiBDdXJyZW50bHksIGJvdGggaW5uZXIgYW5kIG91dGVy DQo+ID4+PiBMMi9MMy9MNCBsZXZlbCBoZWFkZXIgc3BsaXQgY2FuIGJlIHN1cHBvcnRlZC4NCj4g Pj4NCj4gPj4gUlRFX0VUSF9SWF9PRkZMT0FEX0hFQURFUl9TUExJVCBvZmZsb2FkIHdhcyBpbnRy b2R1Y2VkIHNvbWUgdGltZQ0KPiBhZ28NCj4gPj4gdG8gc3Vic3RpdHV0ZSBiaXQtZmllbGQgaGVh ZGVyX3NwbGl0IGluIHN0cnVjdCBydGVfZXRoX3J4bW9kZS4gSXQNCj4gPj4gYWxsb3dzIHRvIGVu YWJsZSBoZWFkZXIgc3BsaXQgb2ZmbG9hZCB3aXRoIHRoZSBoZWFkZXIgc2l6ZSBjb250cm9sbGVk DQo+ID4+IHVzaW5nIHNwbGl0X2hkcl9zaXplIGluIHRoZSBzYW1lIHN0cnVjdHVyZS4NCj4gPj4N Cj4gPj4gUmlnaHQgbm93IEkgc2VlIG5vIHNpbmdsZSBQTUQgd2hpY2ggYWN0dWFsbHkgc3VwcG9y dHMNCj4gPj4gUlRFX0VUSF9SWF9PRkZMT0FEX0hFQURFUl9TUExJVCB3aXRoIGFib3ZlIGRlZmlu aXRpb24uDQo+ID4+IE1hbnkgZXhhbXBsZXMgYW5kIHRlc3QgYXBwcyBpbml0aWFsaXplIHRoZSBm aWVsZCB0byAwIGV4cGxpY2l0bHkuIFRoZQ0KPiA+PiBtb3N0IG9mIGRyaXZlcnMgc2ltcGx5IGln bm9yZSBzcGxpdF9oZHJfc2l6ZSBzaW5jZSB0aGUgb2ZmbG9hZCBpcyBub3QNCj4gPj4gYWR2ZXJ0 aXNlZCwgYnV0IHNvbWUgZG91YmxlLWNoZWNrIHRoYXQgaXRzIHZhbHVlIGlzIDAuDQo+ID4+DQo+ ID4+IEkgdGhpbmsgdGhhdCBpdCBtZWFucyB0aGF0IHRoZSBmaWVsZCBzaG91bGQgYmUgcmVtb3Zl ZCBvbiB0aGUgbmV4dA0KPiA+PiBMVFMsIGFuZCBJJ2Qgc2F5LCB0b2dldGhlciB3aXRoIHRoZSBS VEVfRVRIX1JYX09GRkxPQURfSEVBREVSX1NQTElUDQo+IG9mZmxvYWQgYml0Lg0KPiA+Pg0KPiA+ PiBXZSBzaG91bGQgbm90IHJlZGVmaW5lIHRoZSBvZmZsb2FkIG1lYW5pbmcuDQo+ID4NCj4gPiBZ ZXMsIHlvdSBhcmUgcmlnaHQuIE5vIHNpbmdsZSBQTUQgc3VwcG9ydHMNCj4gUlRFX0VUSF9SWF9P RkZMT0FEX0hFQURFUl9TUExJVCBub3cuDQo+ID4gUHJldmlvdXNseSwgSSB1c2VkIHRoaXMgZmxh ZyBpcyB0byBkaXN0aW5ndWlzaCBidWZmZXIgc3BsaXQgYW5kIGhlYWRlciBzcGxpdC4NCj4gPiBU aGUgZm9ybWVyIHN1cHBvcnRzIG11bHRpLXNlZ21lbnRzIHNwbGl0IGJ5IGxlbmd0aCBhbmQgb2Zm c2V0Lg0KPiANCj4gb2Zmc2V0IGlzIG1pc2xlYWRpbmcgaGVyZSwgc2luY2Ugc3BsaXQgb2Zmc2V0 IGlzIGRlcml2ZWQgZnJvbSBzZWdtZW50IGxlbmd0aHMuDQo+IE9mZnNldCBzcGVjaWZpZWQgaW4g c2VnbWVudHMgaXMgYSBkaWZmZXJlbnQgdGhpbmcuDQoNClllcywgdGhlIGxlbmd0aCBkZWZpbmVz IHRoZSBzZWdtZW50IGxlbmd0aCwgYW5kIHRoZSBvZmZzZXQgZGVmaW5lcyB0aGUgZGF0YSAgb2Zm c2V0IGluIG1idWYuDQpUaGUgdXNhZ2Ugb2YgbGVuZ3RoIGFuZCBvZmZzZXQgYXJlIGV4cGxhaW5l ZCBpbiB0aGUgY29tbWVudHMsIGJ1dCBpdCBpcyBzb21ld2hhdCBtaXNsZWFkaW5nDQpqdXN0IGZy b20gbmFtZS4NCg0KPiANCj4gPiBUaGUgbGF0ZXIgc3VwcG9ydHMgdHdvIHNlZ21lbnRzIHNwbGl0 IGJ5IHByb3RvIGFuZCBvZmZzZXQuDQo+ID4gQXQgdGhpcyBsZXZlbCwgaGVhZGVyIHNwbGl0IGlz IGEgc3Vic2V0IG9mIGJ1ZmZlciBzcGxpdC4NCj4gDQo+IElNSE8sIGdlbmVyaWMgZGVmaW5pdGlv biBvZiB0aGUgaGVhZGVyIHNwbGl0IHNob3VsZCBub3QgbGltaXQgaXQgYnkganVzdCB0d28NCj4g c2VnbWVudHMuDQoNCkRvZXMgdGhlIGhlYWRlciBzcGxpdCBoZXJlIHJlZmVyIHRvIHRoZSB0cmFk aXRpb25hbCBoZWFkZXIgc3BsaXQ/DQpJZiBzbywgc2luY2UgeW91IG1lbnRpb25lZCBiZWZvcmUg d2Ugc2hvdWxkIG5vdCByZWRlZmluZSB0aGUgb2ZmbG9hZCBtZWFuaW5nLA0KSSB3aWxsIHVzZSBw cm90b2NvbCBhbmQgbWJ1Zl9vZmZzZXQgYmFzZWQgYnVmZmVyIHNwbGl0IGluIG5leHQgdmVyc2lv bi4NCg0KSXQgaXMgd29ydGggbm90aW5nIHRoYXQgdGhlIHB1cnBvc2Ugb2Ygc3BlY2lmeWluZyB0 aGUgc3BsaXQgbG9jYXRpb24gYnkgcHJvdG9jb2wgaXMNCnRvIGRpdmlkZSBhIHBhY2tldCBpbnRv IHR3byBzZWdtZW50cy4gSWYgeW91IHdhbnQgdG8gZGl2aWRlIGludG8gbXVsdGlwbGUgc2VnbWVu dHMsDQppdCBzaG91bGQgc3RpbGwgYmUgc3BlY2lmaWVkIGJ5IGxlbmd0aC4NCg0KPiANCj4gPg0K PiA+IFNpbmNlIHdlIHNob3VsZG4ndCByZWRlZmluZSB0aGUgbWVhbmluZyBvZiB0aGlzIG9mZmxv YWQsIEkgd2lsbCB1c2UNCj4gPiB0aGUgUlRFX0VUSF9SWF9PRkZMT0FEX0JVRkZFUl9TUExJVCBm bGFnLg0KPiA+IFRoZSBleGlzdGVuY2Ugb2YgdHVubmVsIG5lZWRzIHRvIGRlZmluZSBhIHByb3Rv IGZpZWxkIGluIGJ1ZmZlciBzcGxpdCwNCj4gPiBiZWNhdXNlIHNvbWUgUE1EcyBkbyBub3Qgc3Vw cG9ydCBzcGxpdCBiYXNlZCBvbiBsZW5ndGggYW5kIG9mZnNldC4NCj4gDQo+IE5vdCBzdXJlIHRo YXQgSSBmdWxseSB1bmRlcnN0YW5kLCBidXQgSSdtIGxvb2tpbmcgZm9yd2FyZCB0byByZXZpZXcg djUuDQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50cywgSSB3aWxsIHNlbmQgYSB2NSwgaW5jbHVk aW5nIHRoZXNlIG1haW4gY2hhbmdlczoNCjEuIFVzZSBwcm90b2NvbCBhbmQgbWJ1Zl9vZmZzZXQg YmFzZWQgYnVmZmVyIHNwbGl0IGluc3RlYWQgb2YgaGVhZGVyIHNwbGl0Lg0KMi4gVXNlIFJURV9Q VFlQRSogaW5zdGVhZCBvZiBlbnVtIHJ0ZV9ldGhfcnhfaGVhZGVyX3NwbGl0X3Byb3RvY29sX3R5 cGUuDQozLiBJbXByb3ZlIHRoZSBkZXNjcmlwdGlvbiBvZiBydGVfZXRoX3J4c2VnX3NwbGl0LnBy b3RvLg0KDQpZb3VyIGNvbW1lbnRzIGFyZSB3ZWxjb21lZC4g8J+Yig0KDQo+IA0KPiA+Pj4NCj4g Pj4+IEZvciBleGFtcGxlLCBsZXQncyBzdXBwb3NlIHdlIGNvbmZpZ3VyZWQgdGhlIFJ4IHF1ZXVl IHdpdGggdGhlDQo+ID4+PiBmb2xsb3dpbmcgc2VnbWVudHM6DQo+ID4+PiAgICAgICBzZWcwIC0g cG9vbDAsIG9mZjA9MkINCj4gPj4+ICAgICAgIHNlZzEgLSBwb29sMSwgb2ZmMT0xMjhCDQo+ID4+ DQo+ID4+IENvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBuYW1lZCBSeCBidWZmZXIgc3BsaXQuDQo+ ID4+IERvZXMgaXQgbWVhbiB0aGF0IHByb3RvY29sIHR5cGUgYmFzZWQgaGVhZGVyIHNwbGl0IHJl cXVpcmVzIFJ4IGJ1ZmZlcg0KPiA+PiBzcGxpdCBmZWF0dXJlIHRvIGJlIHN1cHBvcnRlZD8NCj4g Pg0KPiA+IFByb3RvY29sIHR5cGUgYmFzZWQgaGVhZGVyIHNwbGl0IGRvZXMgbm90IHJlcXVpcmVz IFJ4IGJ1ZmZlciBzcGxpdC4NCj4gPiBJbiBwcmV2aW91cyBkZXNpZ24sIHRoZSBoZWFkZXIgc3Bs aXQgYW5kIGJ1ZmZlciBzcGxpdCBhcmUgZXhjbHVzaXZlLg0KPiA+IEJlY2F1c2Ugd2Ugb25seSBj b25maWd1cmUgb25lIHNwbGl0IG9mZmxvYWQgZm9yIG9uZSBSWCBxdWV1ZS4NCj4gPg0KPiA+Pg0K PiA+Pj4NCj4gPj4+IFdpdGggaGVhZGVyIHNwbGl0IHR5cGUgY29uZmlndXJlZCB3aXRoIFJURV9F VEhfUlhfSEVBREVSX1NQTElUX1VEUCwNCj4gPj4+IHRoZSBwYWNrZXQgY29uc2lzdHMgb2YgTUFD X0lQX1VEUF9QQVlMT0FEIHdpbGwgYmUgc3BsaXQgbGlrZSBmb2xsb3dpbmc6DQo+ID4+PiAgICAg ICBzZWcwIC0gdWRwIGhlYWRlciBAIFJURV9QS1RNQlVGX0hFQURST09NICsgMiBpbiBtYnVmIGZy b20NCj4gPj4gcG9vbDANCj4gPj4+ICAgICAgIHNlZzEgLSBwYXlsb2FkIEAgMTI4IGluIG1idWYg ZnJvbSBwb29sMQ0KPiA+Pg0KPiA+PiBJcyBpdCBhbHdheXMgb3V0ZXJtb3N0IFVEUD8gRG9lcyBp dCByZXF1aXJlIGJvdGggVURQIG92ZXIgSVB2NCBhbmQNCj4gPj4gVURQIG92ZXINCj4gPj4gSVB2 NiB0byBiZSBzdXBwb3J0ZWQ/IFdoYXQgd2lsbCBoYXBwZW4gaWYgb25seSBvbmUgaXMgc3VwcG9y dGVkPyBIb3cNCj4gPj4gYXBwbGljYXRpb24gY2FuIGZpbmQgb3V0IHdoaWNoIHByb3RvY29sIHN0 YWNrIGFyZSBzdXBwb3J0ZWQ/DQo+ID4NCj4gPiBCb3RoIGlubmVyIGFuZCBvdXRlciBVRFAgYXJl IGNvbnNpZGVyZWQuDQo+ID4gQ3VycmVudCBkZXNpZ24gZG9lcyBub3QgZGlzdGluZ3Vpc2ggVURQ IG92ZXIgSVB2NCBvciBJUHY2Lg0KPiA+IElmIHdlIHdhbnQgdG8gc3VwcG9ydCBncmFudWxhcml0 eSBsaWtlIG9ubHkgSVB2NCBvciBJUHY2IHN1cHBvcnRlZCwNCj4gPiB1c2VyIG5lZWQgYWRkIG1v cmUgY29uZmlndXJhdGlvbnMuDQoNClRoYW5rcyBmb3IgeW91ciBzdWdnZXN0aW9uLg0KSSB3aWxs IGltcHJvdmUgdGhlIGRvY3VtZW50cyBhYm91dCB0aGUgdXNhZ2Ugb2YgcHJvdG8gYmFzZWQgYnVm ZmVyIHNwbGl0Lg0KDQo+IA0KPiBZb3Ugc2hvdWxkIG1ha2UgaXQgY2xlYXIgZm9yIGFwcGxpY2F0 aW9uIGhvdyB0byB1c2UgaXQuDQo+IFdoYXQgaGFwcGVucyBpZiB1bnN1cHBvcnRlZCBwYWNrZXQg aXMgcmVjZWl2ZWQgb24gYW4gUnhRIGNvbmZpZ3VyZWQgdG8gZG8NCj4gaGVhZGVyIHNwbGl0Pw0K DQoNCkluIGZhY3QsIHRoZSBidWZmZXIgc3BsaXQgYW5kIHJ0ZV9mbG93IGFyZSB1c2VkIGluIGNv bWJpbmF0aW9uLiBJdCBpcyBleHBlY3RlZCB0aGF0DQp0aGUgcmVjZWl2ZWQgcGFja2V0cyB3aWxs IGJlIHN0ZWVyaW5nIHRvIHRoZSBSWFEgY29uZmlndXJlZCB3aXRoIGJ1ZmZlciBzcGxpdA0Kb2Zm bG9hZC4gU28gdGhlcmUgd29uJ3QgYmUgdW5zdXBwb3J0ZWQgcGFja2V0IHJlY2VpdmVkIG9uIGFu IFJYUS4NCg0KPiANCj4gPg0KPiA+IElmIGFwcGxpY2F0aW9uIHdhbnQgdG8gZmluZCBvdXQgd2hp Y2ggcHJvdG9jb2wgc3RhY2sgaXMgc3VwcG9ydGVkLCBvbmUNCj4gPiB3YXkgSSB0aGluayBpcyB0 byBleHBvc2UgdGhlIHByb3RvY29sIHN0YWNrIHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyIHRocm91 Z2gNCj4gZGV2X2luZm8uDQo+ID4gQW55IHRob3VnaHRzIGFyZSB3ZWxjb21lZCA6KQ0KPiANCj4g ZGV2X2luZm8gaXMgbmljZSwgYnV0IHZlcnkgaGVhdmlseSBvdmVybG9hZGVkLiBXZSBjYW4gc3Rh cnQgZnJvbSBkZXZfaW5mbw0KPiBhbmQgdW5kZXJzdGFuZCBpZiBpdCBzaG91bGQgYmUgZmFjdG9y ZWQgb3V0IHRvIGEgc2VwYXJhdGUgQVBJIG9yIGl0IGlzIE9LIHRvDQo+IGhhdmUgaXQgaW4gZGV2 X2luZm8gaWYgaXQganVzdCBmZXcgc2ltcGxlIGZpZWxkcy4NCg0KSSdtIGFsc28gdGhpbmtpbmcg ZXhwb3NpbmcgdGhlIHByb3RvY29sIHN0YWNrIGJ5IGRldl9pbmZvIGlzIGhlYXZ5Lg0KV2UgY2Fu IGNvbmZpZ3VyZSBhbGwgdGhlIHByb3RvY29sIHN0YWNrLCBhbmQgZHJpdmVyIHN1cHBvcnRzDQpw YXJ0IG9mIHRoZSBzdGFja3MuIEZvciBwcm90b2NvbHMgZHJpdmVyIG5vdCBzdXBwb3J0ZWQsIGRy aXZlciBjYW4gcmV0dXJucyB0aGUgZXJyb3IuDQpXaGF0IGRvIHlvdSB0aGluayBvZiB0aGlzIGRl c2lnbj8NCg0KUmVnYXJkcywNClh1YW4NCg0KPiANCj4gPj4NCj4gPj4+DQo+ID4+PiBUaGUgbWVt b3J5IGF0dHJpYnV0ZXMgZm9yIHRoZSBzcGxpdCBwYXJ0cyBtYXkgZGlmZmVyIGVpdGhlciAtIGZv cg0KPiA+Pj4gZXhhbXBsZSB0aGUgbWVtcG9vbDAgYW5kIG1lbXBvb2wxIGJlbG9uZyB0byBkcGRr IG1lbW9yeSBhbmQNCj4gPj4gZXh0ZXJuYWwNCj4gPj4+IG1lbW9yeSwgcmVzcGVjdGl2ZWx5Lg0K PiA+Pj4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6IFh1YW4gRGluZyA8eHVhbi5kaW5nQGludGVsLmNv bT4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6IFl1YW4gV2FuZyA8eXVhbngud2FuZ0BpbnRlbC5jb20+ DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBXZW54dWFuIFd1IDx3ZW54dWFueC53dUBpbnRlbC5jb20+ DQo+ID4+PiBSZXZpZXdlZC1ieTogUWkgWmhhbmcgPHFpLnouemhhbmdAaW50ZWwuY29tPg0KPiA+ Pj4gLS0tDQo+ID4+PiAgICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyB8IDM0ICsrKysrKysrKysr KysrKysrKysrKystLS0tLS0tDQo+ID4+PiAgICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuaCB8IDQ4 DQo+ID4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tDQo+ID4+PiAg ICAyIGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQ0KPiA+ Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9ldGhk ZXYvcnRlX2V0aGRldi5jIGluZGV4DQo+ID4+PiAyOWEzZDgwNDY2Li4yOWFkY2RjMmYwIDEwMDY0 NA0KPiA+Pj4gLS0tIGEvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPj4+ICsrKyBiL2xpYi9l dGhkZXYvcnRlX2V0aGRldi5jDQo+ID4+PiBAQCAtMTY2MSw2ICsxNjYxLDcgQEAgcnRlX2V0aF9y eF9xdWV1ZV9jaGVja19zcGxpdChjb25zdCBzdHJ1Y3QNCj4gPj4gcnRlX2V0aF9yeHNlZ19zcGxp dCAqcnhfc2VnLA0KPiA+Pj4gICAgCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wbCA9IHJ4X3NlZ1tz ZWdfaWR4XS5tcDsNCj4gPj4+ICAgIAkJdWludDMyX3QgbGVuZ3RoID0gcnhfc2VnW3NlZ19pZHhd Lmxlbmd0aDsNCj4gPj4+ICAgIAkJdWludDMyX3Qgb2Zmc2V0ID0gcnhfc2VnW3NlZ19pZHhdLm9m ZnNldDsNCj4gPj4+ICsJCXVpbnQxNl90IHByb3RvID0gcnhfc2VnW3NlZ19pZHhdLnByb3RvOw0K PiA+Pj4NCj4gPj4+ICAgIAkJaWYgKG1wbCA9PSBOVUxMKSB7DQo+ID4+PiAgICAJCQlSVEVfRVRI REVWX0xPRyhFUlIsICJudWxsIG1lbXBvb2wgcG9pbnRlclxuIik7DQo+ID4+IEBAIC0xNjk0LDEz DQo+ID4+PiArMTY5NSwyOSBAQCBydGVfZXRoX3J4X3F1ZXVlX2NoZWNrX3NwbGl0KGNvbnN0IHN0 cnVjdA0KPiA+PiBydGVfZXRoX3J4c2VnX3NwbGl0ICpyeF9zZWcsDQo+ID4+PiAgICAJCX0NCj4g Pj4+ICAgIAkJb2Zmc2V0ICs9IHNlZ19pZHggIT0gMCA/IDAgOiBSVEVfUEtUTUJVRl9IRUFEUk9P TTsNCj4gPj4+ICAgIAkJKm1icF9idWZfc2l6ZSA9IHJ0ZV9wa3RtYnVmX2RhdGFfcm9vbV9zaXpl KG1wbCk7DQo+ID4+PiAtCQlsZW5ndGggPSBsZW5ndGggIT0gMCA/IGxlbmd0aCA6ICptYnBfYnVm X3NpemU7DQo+ID4+PiAtCQlpZiAoKm1icF9idWZfc2l6ZSA8IGxlbmd0aCArIG9mZnNldCkgew0K PiA+Pj4gLQkJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPj4+IC0JCQkJICAgICAgICIlcyBtYnVm X2RhdGFfcm9vbV9zaXplICV1IDwgJXUNCj4gPj4gKHNlZ21lbnQgbGVuZ3RoPSV1ICsgc2VnbWVu dCBvZmZzZXQ9JXUpXG4iLA0KPiA+Pj4gLQkJCQkgICAgICAgbXBsLT5uYW1lLCAqbWJwX2J1Zl9z aXplLA0KPiA+Pj4gLQkJCQkgICAgICAgbGVuZ3RoICsgb2Zmc2V0LCBsZW5ndGgsIG9mZnNldCk7 DQo+ID4+PiAtCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+PiArCQlpZiAocHJvdG8gPT0gUlRFX0VU SF9SWF9IRUFERVJfU1BMSVRfTk9ORSkgew0KPiA+Pj4gKwkJCS8qIENoZWNrIGJ1ZmZlciBzcGxp dC4gKi8NCj4gPj4+ICsJCQlsZW5ndGggPSBsZW5ndGggIT0gMCA/IGxlbmd0aCA6ICptYnBfYnVm X3NpemU7DQo+ID4+PiArCQkJaWYgKCptYnBfYnVmX3NpemUgPCBsZW5ndGggKyBvZmZzZXQpIHsN Cj4gPj4+ICsJCQkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+Pj4gKwkJCQkJIiVzIG1idWZfZGF0 YV9yb29tX3NpemUgJXUgPCAldQ0KPiA+PiAoc2VnbWVudCBsZW5ndGg9JXUgKyBzZWdtZW50IG9m ZnNldD0ldSlcbiIsDQo+ID4+PiArCQkJCQltcGwtPm5hbWUsICptYnBfYnVmX3NpemUsDQo+ID4+ PiArCQkJCQlsZW5ndGggKyBvZmZzZXQsIGxlbmd0aCwgb2Zmc2V0KTsNCj4gPj4+ICsJCQkJcmV0 dXJuIC1FSU5WQUw7DQo+ID4+PiArCQkJfQ0KPiA+Pj4gKwkJfSBlbHNlIHsNCj4gPj4+ICsJCQkv KiBDaGVjayBoZWFkZXIgc3BsaXQuICovDQo+ID4+PiArCQkJaWYgKGxlbmd0aCAhPSAwKSB7DQo+ ID4+PiArCQkJCVJURV9FVEhERVZfTE9HKEVSUiwgInNlZ21lbnQgbGVuZ3RoDQo+ID4+IHNob3Vs ZCBiZSBzZXQgdG8gemVybyBpbiBoZWFkZXIgc3BsaXRcbiIpOw0KPiA+Pj4gKwkJCQlyZXR1cm4g LUVJTlZBTDsNCj4gPj4+ICsJCQl9DQo+ID4+PiArCQkJaWYgKCptYnBfYnVmX3NpemUgPCBvZmZz ZXQpIHsNCj4gPj4+ICsJCQkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+Pj4gKwkJCQkJIiVzIG1i dWZfZGF0YV9yb29tX3NpemUgJXUgPCAldQ0KPiA+PiBzZWdtZW50IG9mZnNldClcbiIsDQo+ID4+ PiArCQkJCQltcGwtPm5hbWUsICptYnBfYnVmX3NpemUsDQo+ID4+PiArCQkJCQlvZmZzZXQpOw0K PiA+Pj4gKwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+ICsJCQl9DQo+ID4+PiAgICAJCX0NCj4g Pj4+ICAgIAl9DQo+ID4+PiAgICAJcmV0dXJuIDA7DQo+ID4+PiBAQCAtMTc3OCw3ICsxNzk1LDgg QEAgcnRlX2V0aF9yeF9xdWV1ZV9zZXR1cCh1aW50MTZfdCBwb3J0X2lkLA0KPiA+PiB1aW50MTZf dCByeF9xdWV1ZV9pZCwNCj4gPj4+ICAgIAkJcnhfc2VnID0gKGNvbnN0IHN0cnVjdCBydGVfZXRo X3J4c2VnX3NwbGl0ICopcnhfY29uZi0+cnhfc2VnOw0KPiA+Pj4gICAgCQluX3NlZyA9IHJ4X2Nv bmYtPnJ4X25zZWc7DQo+ID4+Pg0KPiA+Pj4gLQkJaWYgKHJ4X2NvbmYtPm9mZmxvYWRzICYgUlRF X0VUSF9SWF9PRkZMT0FEX0JVRkZFUl9TUExJVCkNCj4gPj4gew0KPiA+Pj4gKwkJaWYgKHJ4X2Nv bmYtPm9mZmxvYWRzICYgUlRFX0VUSF9SWF9PRkZMT0FEX0JVRkZFUl9TUExJVA0KPiA+PiB8fA0K PiA+Pj4gKwkJCXJ4X2NvbmYtPm9mZmxvYWRzICYNCj4gPj4gUlRFX0VUSF9SWF9PRkZMT0FEX0hF QURFUl9TUExJVCkgew0KPiA+Pj4gICAgCQkJcmV0ID0gcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19z cGxpdChyeF9zZWcsIG5fc2VnLA0KPiA+Pj4gICAgCQkJCQkJCSAgICZtYnBfYnVmX3NpemUsDQo+ ID4+PiAgICAJCQkJCQkJICAgJmRldl9pbmZvKTsNCj4gPj4+IGRpZmYgLS1naXQgYS9saWIvZXRo ZGV2L3J0ZV9ldGhkZXYuaCBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oIGluZGV4DQo+ID4+PiAw NGNmZjhlZTEwLi5lODM3MWI5OGVkIDEwMDY0NA0KPiA+Pj4gLS0tIGEvbGliL2V0aGRldi9ydGVf ZXRoZGV2LmgNCj4gPj4+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oDQo+ID4+PiBAQCAt MTE5NywxMiArMTE5NywzMSBAQCBzdHJ1Y3QgcnRlX2V0aF90eG1vZGUgew0KPiA+Pj4gICAgICog ICAgIC0gcG9vbCBmcm9tIHRoZSBsYXN0IHZhbGlkIGVsZW1lbnQNCj4gPj4+ICAgICAqICAgICAt IHRoZSBidWZmZXIgc2l6ZSBmcm9tIHRoaXMgcG9vbA0KPiA+Pj4gICAgICogICAgIC0gemVybyBv ZmZzZXQNCj4gPj4+ICsgKg0KPiA+Pj4gKyAqIEhlYWRlciBzcGxpdCBpcyBhIHN1YnNldCBvZiBi dWZmZXIgc3BsaXQuIFRoZSBzcGxpdCBoYXBwZW5zDQo+ID4+PiArIGFmdGVyIHRoZQ0KPiA+Pj4g KyAqIHBhY2tldCBoZWFkZXIgYW5kIGJlZm9yZSB0aGUgcGFja2V0IHBheWxvYWQuIEZvciBQTURz IHRoYXQgZG8NCj4gPj4+ICsgbm90DQo+ID4+PiArICogc3VwcG9ydCBoZWFkZXIgc3BsaXQgY29u ZmlndXJhdGlvbiBieSBsZW5ndGgsIHRoZSBsb2NhdGlvbiBvZg0KPiA+Pj4gKyB0aGUgc3BsaXQN Cj4gPj4+ICsgKiBuZWVkcyB0byBiZSBzcGVjaWZpZWQgYnkgdGhlIGhlYWRlciBwcm90b2NvbCB0 eXBlLiBXaGlsZSBmb3INCj4gPj4+ICsgYnVmZmVyIHNwbGl0LA0KPiA+Pj4gKyAqIHRoaXMgZmll bGQgc2hvdWxkIG5vdCBiZSBjb25maWd1cmVkLg0KPiA+Pj4gKyAqDQo+ID4+PiArICogSWYgUlRF X0VUSF9SWF9PRkZMT0FEX0hFQURFUl9TUExJVCBmbGFnIGlzIHNldCBpbiBvZmZsb2Fkcw0KPiA+ Pj4gKyBmaWVsZCwNCj4gPj4+ICsgKiB0aGUgUE1EIHdpbGwgc3BsaXQgdGhlIHJlY2VpdmVkIHBh Y2tldHMgaW50byB0d28gc2VwYXJhdGUgcmVnaW9uczoNCj4gPj4+ICsgKiAtIFRoZSBoZWFkZXIg YnVmZmVyIHdpbGwgYmUgYWxsb2NhdGVkIGZyb20gdGhlIG1lbW9yeSBwb29sLA0KPiA+Pj4gKyAq ICAgc3BlY2lmaWVkIGluIHRoZSBmaXJzdCBhcnJheSBlbGVtZW50LCB0aGUgc2Vjb25kIGJ1ZmZl ciwgZnJvbSB0aGUNCj4gPj4+ICsgKiAgIHBvb2wgaW4gdGhlIHNlY29uZCBlbGVtZW50Lg0KPiA+ Pj4gKyAqDQo+ID4+PiArICogLSBUaGUgbGVuZ3RocyBkbyBub3QgbmVlZCB0byBiZSBjb25maWd1 cmVkIGluIGhlYWRlciBzcGxpdC4NCj4gPj4+ICsgKg0KPiA+Pj4gKyAqIC0gVGhlIG9mZnNldHMg ZnJvbSB0aGUgc2VnbWVudCBkZXNjcmlwdGlvbiBlbGVtZW50cyBzcGVjaWZ5DQo+ID4+PiArICog ICB0aGUgZGF0YSBvZmZzZXQgZnJvbSB0aGUgYnVmZmVyIGJlZ2lubmluZyBleGNlcHQgdGhlIGZp cnN0IG1idWYuDQo+ID4+PiArICogICBUaGUgZmlyc3Qgc2VnbWVudCBvZmZzZXQgaXMgYWRkZWQg d2l0aCBSVEVfUEtUTUJVRl9IRUFEUk9PTS4NCj4gPj4+ICAgICAqLw0KPiA+Pj4gICAgc3RydWN0 IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgew0KPiA+Pj4gICAgCXN0cnVjdCBydGVfbWVtcG9vbCAqbXA7 IC8qKjwgTWVtb3J5IHBvb2wgdG8gYWxsb2NhdGUgc2VnbWVudA0KPiA+PiBmcm9tLiAqLw0KPiA+ Pj4gICAgCXVpbnQxNl90IGxlbmd0aDsgLyoqPCBTZWdtZW50IGRhdGEgbGVuZ3RoLCBjb25maWd1 cmVzIHNwbGl0IHBvaW50LiAqLw0KPiA+Pj4gICAgCXVpbnQxNl90IG9mZnNldDsgLyoqPCBEYXRh IG9mZnNldCBmcm9tIGJlZ2lubmluZyBvZiBtYnVmIGRhdGEgYnVmZmVyLg0KPiA+PiAqLw0KPiA+ Pj4gLQl1aW50MzJfdCByZXNlcnZlZDsgLyoqPCBSZXNlcnZlZCBmaWVsZC4gKi8NCj4gPj4+ICsJ dWludDE2X3QgcHJvdG87IC8qKjwgaGVhZGVyIHByb3RvY29sIHR5cGUsIGNvbmZpZ3VyZXMgaGVh ZGVyIHNwbGl0DQo+ID4+PiArcG9pbnQuICovDQo+ID4+DQo+ID4+IEkgcmVhbGl6ZSB0aGF0IHlv dSBkb24ndCB3YW50IHRvIHVzZSBoZXJlIGVudW0gZGVmaW5lZCBhYm92ZSB0byBzYXZlDQo+ID4+ IHNvbWUgcmVzZXJ2ZWQgc3BhY2UsIGJ1dCBkZXNjcmlwdGlvbiBtdXN0IHJlZmVyIHRvIHRoZSBl bnVtDQo+ID4+IHJ0ZV9ldGhfcnhfaGVhZGVyX3NwbGl0X3Byb3RvY29sX3R5cGUuDQo+ID4NCj4g PiBUaGFua3MgZm9yIHlvdXIgc3VnZ2VzdGlvbiwgd2lsbCBmaXggaXQgaW4gbmV4dCB2ZXJzaW9u Lg0KPiA+DQo+ID4+DQo+ID4+PiArCXVpbnQxNl90IHJlc2VydmVkOyAvKio8IFJlc2VydmVkIGZp ZWxkLiAqLw0KPiA+Pg0KPiA+PiBBcyBmYXIgYXMgSSBjYW4gc2VlIHRoZSBzdHJ1Y3R1cmUgaXMg ZXhwZXJpbWVudGFsLiBTbywgaXQgc2hvdWxkIG5vdA0KPiA+PiBiZSB0aGUgcHJvYmxlbSB0byBl eHRlbmQgaXQsIGJ1dCBpdCBpcyBhIHJlYWxseSBnb29kIHF1ZXN0aW9uIHJhaXNlZA0KPiA+PiBi eSBTdGVwaGVuIGluIFJGQw0KPiA+PiB2MSBkaXNjdXNzaW9uLg0KPiA+PiBTaG91bGRuJ3Qgd2Ug cmVxdWlyZSB0aGF0IGFsbCByZXNlcnZlZCBmaWVsZHMgYXJlIGluaXRpYWxpemVkIHRvIHplcm8N Cj4gPj4gYW5kIGlnbm9yZWQgb24gcHJvY2Vzc2luZz8gRnJhbmtseSBzcGVha2luZyBJIGFsd2F5 cyB0aG91Z2h0IHNvLCBidXQNCj4gPj4gZmFpbGVkIHRvIGZpbmQgdGhlIHBsYWNlIHdlcmUgaXQg aXMgZG9jdW1lbnRlZC4NCj4gPg0KPiA+IFllcywgaXQgY2FuIGJlIGRvY3VtZW50ZWQuIEJ5IGRl ZmF1bHQgaXMgc2hvdWxkIGJlIHplcm8sIGFuZCB3ZSBjYW4NCj4gPiBjb25maWd1cmUgaXQgdG8g ZW5hYmxlIHByb3RvY29sIHR5cGUgYmFzZWQgYnVmZmVyIHNwbGl0Lg0KPiA+DQo+ID4+DQo+ID4+ IEBUaG9tYXMsIEBEYXZpZCwgQEZlcnJ1aD8NCj4gPj4NCj4gPj4+ICAgIH07DQo+ID4+Pg0KPiA+ Pj4gICAgLyoqDQo+ID4+PiBAQCAtMTIxMiw3ICsxMjMxLDcgQEAgc3RydWN0IHJ0ZV9ldGhfcnhz ZWdfc3BsaXQgew0KPiA+Pj4gICAgICogQSBjb21tb24gc3RydWN0dXJlIHVzZWQgdG8gZGVzY3Jp YmUgUnggcGFja2V0IHNlZ21lbnQgcHJvcGVydGllcy4NCj4gPj4+ICAgICAqLw0KPiA+Pj4gICAg dW5pb24gcnRlX2V0aF9yeHNlZyB7DQo+ID4+PiAtCS8qIFRoZSBzZXR0aW5ncyBmb3IgYnVmZmVy IHNwbGl0IG9mZmxvYWQuICovDQo+ID4+PiArCS8qIFRoZSBzZXR0aW5ncyBmb3IgYnVmZmVyIHNw bGl0IGFuZCBoZWFkZXIgc3BsaXQgb2ZmbG9hZC4gKi8NCj4gPj4+ICAgIAlzdHJ1Y3QgcnRlX2V0 aF9yeHNlZ19zcGxpdCBzcGxpdDsNCj4gPj4+ICAgIAkvKiBUaGUgb3RoZXIgZmVhdHVyZXMgc2V0 dGluZ3Mgc2hvdWxkIGJlIGFkZGVkIGhlcmUuICovDQo+ID4+PiAgICB9Ow0KPiA+Pj4gQEAgLTE2 NjQsNiArMTY4MywzMSBAQCBzdHJ1Y3QgcnRlX2V0aF9jb25mIHsNCj4gPj4+ICAgIAkJCSAgICAg UlRFX0VUSF9SWF9PRkZMT0FEX1FJTlFfU1RSSVApDQo+ID4+PiAgICAjZGVmaW5lIERFVl9SWF9P RkZMT0FEX1ZMQU4NCj4gPj4gUlRFX0RFUFJFQ0FURUQoREVWX1JYX09GRkxPQURfVkxBTikNCj4g Pj4+IFJURV9FVEhfUlhfT0ZGTE9BRF9WTEFODQo+ID4+Pg0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAq IEB3YXJuaW5nDQo+ID4+PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIGVudW0gbWF5IGNoYW5n ZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPj4+ICsgKiBUaGlzIGVudW0gaW5kaWNhdGVzIHRo ZSBoZWFkZXIgc3BsaXQgcHJvdG9jb2wgdHlwZSAgKi8gZW51bQ0KPiA+Pj4gK3J0ZV9ldGhfcnhf aGVhZGVyX3NwbGl0X3Byb3RvY29sX3R5cGUgew0KPiA+Pj4gKwlSVEVfRVRIX1JYX0hFQURFUl9T UExJVF9OT05FID0gMCwNCj4gPj4+ICsJUlRFX0VUSF9SWF9IRUFERVJfU1BMSVRfTUFDLA0KPiA+ Pj4gKwlSVEVfRVRIX1JYX0hFQURFUl9TUExJVF9JUFY0LA0KPiA+Pj4gKwlSVEVfRVRIX1JYX0hF QURFUl9TUExJVF9JUFY2LA0KPiA+Pj4gKwlSVEVfRVRIX1JYX0hFQURFUl9TUExJVF9MMywNCj4g Pj4+ICsJUlRFX0VUSF9SWF9IRUFERVJfU1BMSVRfVENQLA0KPiA+Pj4gKwlSVEVfRVRIX1JYX0hF QURFUl9TUExJVF9VRFAsDQo+ID4+PiArCVJURV9FVEhfUlhfSEVBREVSX1NQTElUX1NDVFAsDQo+ ID4+PiArCVJURV9FVEhfUlhfSEVBREVSX1NQTElUX0w0LA0KPiA+Pj4gKwlSVEVfRVRIX1JYX0hF QURFUl9TUExJVF9JTk5FUl9NQUMsDQo+ID4+PiArCVJURV9FVEhfUlhfSEVBREVSX1NQTElUX0lO TkVSX0lQVjQsDQo+ID4+PiArCVJURV9FVEhfUlhfSEVBREVSX1NQTElUX0lOTkVSX0lQVjYsDQo+ ID4+PiArCVJURV9FVEhfUlhfSEVBREVSX1NQTElUX0lOTkVSX0wzLA0KPiA+Pj4gKwlSVEVfRVRI X1JYX0hFQURFUl9TUExJVF9JTk5FUl9UQ1AsDQo+ID4+PiArCVJURV9FVEhfUlhfSEVBREVSX1NQ TElUX0lOTkVSX1VEUCwNCj4gPj4+ICsJUlRFX0VUSF9SWF9IRUFERVJfU1BMSVRfSU5ORVJfU0NU UCwNCj4gPj4+ICsJUlRFX0VUSF9SWF9IRUFERVJfU1BMSVRfSU5ORVJfTDQsDQo+ID4+DQo+ID4+ IEVudW1lcmF0aW9uIG1lbWJlcnMgc2hvdWxkIGJlIGRvY3VtZW50ZWQuIFNlZSBteSBxdWVzdGlv biBpbiB0aGUNCj4gPj4gcGF0Y2ggZGVzY3JpcHRpb24uDQo+ID4NCj4gPiBUaGFua3MgZm9yIHlv dXIgZGV0YWlsZWQgY29tbWVudHMsIHF1ZXN0aW9ucyBhcmUgYW5zd2VyZWQgYWNjb3JkaW5nbHku DQo+ID4NCj4gPiBCZXN0IFJlZ2FyZHMsDQo+ID4gWHVhbg0KPiA+DQo+ID4+DQo+ID4+PiArfTsN Cj4gPj4+ICsNCj4gPj4+ICAgIC8qDQo+ID4+PiAgICAgKiBJZiBuZXcgUnggb2ZmbG9hZCBjYXBh YmlsaXRpZXMgYXJlIGRlZmluZWQsIHRoZXkgYWxzbyBtdXN0IGJlDQo+ID4+PiAgICAgKiBtZW50 aW9uZWQgaW4gcnRlX3J4X29mZmxvYWRfbmFtZXMgaW4gcnRlX2V0aGRldi5jIGZpbGUuDQo+ID4N Cg0K