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 E20BE4236A; Thu, 12 Oct 2023 02:04:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B2AC4402BB; Thu, 12 Oct 2023 02:04:23 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id 702D6402BA for ; Thu, 12 Oct 2023 02:04:22 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1697069062; x=1728605062; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ktRrrH/aZVo3TYicNCCvXy+sitF+wanGYw9i8T8+O+M=; b=UWhqj68QYPcqfSautN9NkdWPHORWOjVs58x2MuCI35Zm40D8wq7eWlE3 AtdJzFJ3RErpzJ70cLYaaNc+M09sooZ5RrsnMfhNDe8TQ8f530wzL9M2x iNm+WzYT5/EFyPWhkPCnPJjN7j4XequX5OZXQ6YwXEO56AbG9Hv/TM+Tb CDRVTRMi3Mjq/rjuMNHmKpV1SVX2leHAav9pMwMxa0/Qf584DoudjkQLD qnMnJnGFB/FVHZPXlURjaDQI8Rb5j83yPmNNrsLf7Jpc+xpGmLvZzodEj qq7FsubOke5YjDFwOw3A5seDjXaZagTsnTbJCqcAwmyy8FLnagX38+cqu Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10860"; a="383662626" X-IronPort-AV: E=Sophos;i="6.03,217,1694761200"; d="scan'208";a="383662626" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Oct 2023 17:04:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10860"; a="783456788" X-IronPort-AV: E=Sophos;i="6.03,217,1694761200"; d="scan'208";a="783456788" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga008.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 11 Oct 2023 17:04:04 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 11 Oct 2023 17:04:04 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) 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.2507.32 via Frontend Transport; Wed, 11 Oct 2023 17:04:04 -0700 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (104.47.51.41) 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.2507.32; Wed, 11 Oct 2023 17:04:03 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lFSWgtWbmjjGE4EfiKL9KLwcYvBw7EMiRWeq1O9U/LPRTeq/tePSl9ektydopVIxpB9hCpBPqFQhvrqSWszQLaIUugGbyvQl4cefpWE0mujuzOoVdu0gde6SoMNlAq0u/hvS6cKoMxlGNJXDcq73Lwb3VFBJCAIhHKIofd9sd9GevYClUSygwnr9K7+43wAGJOEnSui7wj9X8+twzFI9vgH+eDokoIO5xk5lwISytAdnUNfdakmIwRUevK/Xpubr1a4tG5p1UEKqiHvqe6GWFC1oUtdCGIy4xhllrA8cax4gjupQ3DbfNJOcRC/AjzatVvovYy4QoJxeL6exJyxEAQ== 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=ktRrrH/aZVo3TYicNCCvXy+sitF+wanGYw9i8T8+O+M=; b=ZX4ny+FZCFZvOX1xQjBfG+QoMavUg7QQ1HI0Q+kULZIPDo5EXqyBKJQ4WM1eog8FKaDeGDXvUAv3wT4vSOhbmgc4oH7QomaXKXic2rP4JLprw3mCR3UB3tajE5Hx9ZAUe0vXEql9li+z/WUKtOa3fK3z1hQG0HK7jkdCQLz9ImVOhPpfbbS3f8h5mExcDPLRRoJdjz0GO3lCyksM0TOl3Gk2S7aE2Brf2XMu87DB5hMH3vGR3gJ2AhZ7jz0tEo2zJeBadZNdSQaCRU+NXkLs95aGzEHk1m+WMCZnBiJ3SW8ntAV0GYwf8QtlzEHxWTMyiNcgxosid7nyymTH/6XAhA== 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 DM4PR11MB5994.namprd11.prod.outlook.com (2603:10b6:8:5d::20) by DM3PR11MB8759.namprd11.prod.outlook.com (2603:10b6:8:1ac::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Thu, 12 Oct 2023 00:04:01 +0000 Received: from DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::27ea:67e:2966:23e3]) by DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::27ea:67e:2966:23e3%3]) with mapi id 15.20.6863.032; Thu, 12 Oct 2023 00:04:00 +0000 From: "Zhang, Qi Z" To: "Zhang, Qi Z" , Ferruh Yigit , "Singh, Aman Deep" , "Zhang, Yuying" CC: "dev@dpdk.org" , "Dumitrescu, Cristian" , "orika@nvidia.com" Subject: RE: [PATCH v4] app/testpmd: enable cli for programmable action Thread-Topic: [PATCH v4] app/testpmd: enable cli for programmable action Thread-Index: AQHZ+MXNgSNNMfRBqEOerzIjCRN2wbBC3VEAgAD+ktCAAIvDAIAAIGNwgADEbAA= Date: Thu, 12 Oct 2023 00:04:00 +0000 Message-ID: References: <20231005100246.242970-1-qi.z.zhang@intel.com> <20231007104730.441719-1-qi.z.zhang@intel.com> <06ff4322-bc65-4092-af18-21bfedbb8daf@amd.com> In-Reply-To: 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: DM4PR11MB5994:EE_|DM3PR11MB8759:EE_ x-ms-office365-filtering-correlation-id: 46d568f3-9250-4756-d70e-08dbcab6bd26 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0iYgDmZjZAtFhwp/povk/zrlvgE04cXG2/vND1kitO7X+hH4mXMX1/RvRCbLWabLu1igBdV8hYvvofJIYxzhmUu4FQS7ZHik8HKYOOAQVPVL8aAkYd1bInoB1oa7jflUf6NO0549RW/GOj95PdNIB3PeMNTp8Qk9xwknGPZEPPnDwdUYa5p/AYALegE4bICccmQ68FqKdKlOHPd5P7nG/AWR5U3BTDPztJq0k8ySOY0mpLtLKM6TCL55lLLFtGv3BEvHGq7X6nShbNF98rUr5MgkRPHfEbRszysl2OGFpayRu4EhroRGWL6h1NVDKZt4ePTJTcpGOyswJzDXRWRKOHq4JetNNjTTteh811ovyGD5dr4EZ6ndnSyeD1HLKrLiHDdjih6IzV3GrktMBJRLebpbWWZerHfKGiWwp45ae0ValakXnAjBKDDXTM8b8N0y+k5bpHcg3w4TOIbsdSJkyBAutImpAGld6x0dPwrz26pLeZDy1ekIYWWn9E7qgDYXP7+rDrJJ6f6AXtebd+XcyQXwYgwLwmjfWwBXC6l9o8WolMBfzoaHEXuaGL/b0jnZUiEX6fr+I5OOyP1e9yRS6jM96l6Y0FM+mpFImy4iSAPWa2sjBn74RH0IZwdAzDKBDaWdmWsvwuRlqCUvh34QQQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB5994.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(346002)(396003)(376002)(136003)(39860400002)(230922051799003)(451199024)(1800799009)(64100799003)(186009)(66899024)(122000001)(9686003)(38070700005)(26005)(55016003)(82960400001)(41300700001)(5660300002)(8936002)(8676002)(52536014)(4326008)(86362001)(33656002)(2906002)(30864003)(54906003)(64756008)(316002)(6636002)(66446008)(66476007)(66556008)(66946007)(110136005)(76116006)(71200400001)(53546011)(6506007)(7696005)(478600001)(38100700002)(83380400001)(21314003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?M1JkZ3dTUnlFekpldW5TUTJ0UFVtSUwvNDhrQUdabnFYUVV3dWtEbFFlN0c5?= =?utf-8?B?U3BvMFZsMnBYUjVodmlyU2NyYmN6UlVIeW9yR0REYkpqL2ppZjlNbU15ODB5?= =?utf-8?B?Vng4RHFwWGUxcDYxZnlGYlBtdFl6VVcrNUFXMTVGTlNkYWtoM05XV1g0ZmdE?= =?utf-8?B?bnJybElXMXZEOUlMajJDZDJHUHVsd3R5T2VkeWhJYTE1N1BBOEtOOHZGZWoy?= =?utf-8?B?RjZkaXBPYTRSdERpYmpYWDQ0VjFGM1RkWkV4Um05M2pPTFJia25OSHZ4em9T?= =?utf-8?B?d2l4NTUxL09JbUtGZ21KbFJ5eVRDak5WSFhVNzVFY1d1VGNYMUZEZG9xTkhE?= =?utf-8?B?Qm42aWFRbkdZV2k3dFB6MnA0dU9lM3l2bTRGK3Y2YnY2TWFQSllScUIxSEx5?= =?utf-8?B?LzVPdHVYdngyVXR6dnVWaDNQQWYwZlBpVVVDdDQ0SWZnU1JvVWFNbThkN1dt?= =?utf-8?B?dmNFRGs0ZVZVTm11UEpxSmtGem9MOEhtYkNmNm1RVU94b01BVW43Q09LMnpD?= =?utf-8?B?VEd2ZEI2Tmw5ZWJxZDdrWHVIQzBVL0xpN0tuN3h6NHZaZVdHRGRESzUxVUlB?= =?utf-8?B?Z2RVVmhZbHcwQk5ObS9iVGs3R2w0NlhBWE1xb3pxb3VTYnVDQytvY3J6T29V?= =?utf-8?B?R1kxYnhGZVRvellVdmVyK09qaWdaRG0zRDQvS2dGWm1VQjFzMGJCOHhuRXVh?= =?utf-8?B?U3VrMkRoSElHNytrM0ppUnY5TFVrR2hKSzBWaFF5VXVQS2JSTkgrcmlvbDRY?= =?utf-8?B?VGx1OFZ6a0U3dVpZQnZDa25zV016TW9rRm9mdDJOSjlud21sbFlxY3dDV0d3?= =?utf-8?B?NS9kT0RHdXQ5QitGVGkzZUdiU1A2SzROcEYxZ1o3eTFWSjZCUndOY3FCQlBS?= =?utf-8?B?WXdXdlBOcWpoVVBMdWxDWlZLc3ZUVU5EakVUcG5idEZnWW9UUW1xSnhLekJP?= =?utf-8?B?bElrSEJlOGl5VGlsbWJPVHNOS0h1SDZSRm5rWUgvU1VqSXNFeE1QcktZM3Av?= =?utf-8?B?NWZQY3NqS3pDVmN3TXFaTHM3dTBqblNXSkpxU3ZNOG0yNkNKbHdyRk9JSWxs?= =?utf-8?B?SnB2ZGJzcE1UY2VEa2pqTDYzRFNNWkdpS3U1aUhVUm1OZXFEaHNvdExhWCtm?= =?utf-8?B?RURqTG41TXpQQTIzNkFWNFl5aHpaMFZSTFZIYXhwSUgzcEhnVDM3dUdEbVg3?= =?utf-8?B?YXZhMjJYV1VPNW11aHZrZ0RHRzg0YUs3SXFCNXJTbjFndFg4TW9kTkZtYTRJ?= =?utf-8?B?NWxUTDJJSzNtM3E2a1diYXVIak9XaFF0dDJhT1NvRE1uZGdTRERrWXRqZlVU?= =?utf-8?B?K0lwZjJBRXBDZEE5ajlKL2xmeEU3WDlVV0Z6VHZnaWR3VHZwK00yL1BoY1dN?= =?utf-8?B?Tm91NzB3THlISmFmMjZ1amFiZGl0Tzk0NUlOZ2NZc0VwVDBZRUFldEhYQTFR?= =?utf-8?B?cE9UQjZQbEFuN0l5eEtVQUpZaWdqWDgzZ2wxNTA0S2JSL1JyMnp3aUUzTnFH?= =?utf-8?B?S1piL21wVkRnb2ZRMGpIaCt3VzdZN0NIbDNPOU1icEdEcTB2aXh4VFd4S2c4?= =?utf-8?B?NEczbGkxWGNyZGpSNlRjM1lDSzREWUhIOERDNDkwRDh6YWM2eE1sbXpleU5w?= =?utf-8?B?QktlS01JeDRYb081ckwwN3o2RFFiV1RoZG02TWQ1SkZFV05ZL2NlUEJienpy?= =?utf-8?B?WTRzUGs5RkhWNlp1ZEIySjdxUzhEZVlKNjlMSDhvYnNjd3IxUlBsb2NRWEpt?= =?utf-8?B?NTROZS9oSEZOQXVlN2NwdE5vazM5Ri9ERy8ydEViODhYWEtCbEYyVHY0NWtL?= =?utf-8?B?Uno0RllTQ25scTVtV3MydVhjaW5WT3VocHcxZE5GeFhKSmdjei9PeVhTenc3?= =?utf-8?B?R1drU05WSXM0dDAvNGtOQ2ExNVNWQlhxcDJQWU1ScGhvM3FaNTJ0YXNvUzBB?= =?utf-8?B?aTBGVFlRRUlHVGpVU0hMQUNjdGtrb2c5cmc0dDBkbExUWFZ6UzJKK21NYUhy?= =?utf-8?B?dEVSbHBNc21EVnpEd1g5Q2tIQlI2VVNlMVNXOVF0bms2MnRyYlFMd004MU56?= =?utf-8?B?bk5Wd3FyN1hhZUVsREtiVFUzZ2JqNXcxUFlZL01mRGJpUktka3lGbURYSSs4?= =?utf-8?Q?J1QnmZAj8QfiT8tGdkwTYBus8?= 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: DM4PR11MB5994.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 46d568f3-9250-4756-d70e-08dbcab6bd26 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Oct 2023 00:04:00.9193 (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: 0TB6KCPPvzlpgNBVI6tP9w7dsVmEUc6+TO6C1OMcmMQ4v33a1UobAvsR43ZBTg4Q+sT0Qd0qMmBGN5COV+UYMg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR11MB8759 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 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogWmhhbmcsIFFpIFogPHFp LnouemhhbmdAaW50ZWwuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIE9jdG9iZXIgMTEsIDIwMjMg OToyMCBQTQ0KPiBUbzogRmVycnVoIFlpZ2l0IDxmZXJydWgueWlnaXRAYW1kLmNvbT47IFNpbmdo LCBBbWFuIERlZXANCj4gPGFtYW4uZGVlcC5zaW5naEBpbnRlbC5jb20+OyBaaGFuZywgWXV5aW5n IDx5dXlpbmcuemhhbmdAaW50ZWwuY29tPg0KPiBDYzogZGV2QGRwZGsub3JnOyBEdW1pdHJlc2N1 LCBDcmlzdGlhbiA8Y3Jpc3RpYW4uZHVtaXRyZXNjdUBpbnRlbC5jb20+Ow0KPiBvcmlrYUBudmlk aWEuY29tDQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjRdIGFwcC90ZXN0cG1kOiBlbmFibGUgY2xp IGZvciBwcm9ncmFtbWFibGUgYWN0aW9uDQo+IA0KPiANCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBGZXJydWggWWlnaXQgPGZlcnJ1aC55aWdpdEBhbWQuY29t Pg0KPiA+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAxMSwgMjAyMyA2OjIxIFBNDQo+ID4gVG86 IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT47IFNpbmdoLCBBbWFuIERlZXANCj4g PiA8YW1hbi5kZWVwLnNpbmdoQGludGVsLmNvbT47IFpoYW5nLCBZdXlpbmcgPHl1eWluZy56aGFu Z0BpbnRlbC5jb20+DQo+ID4gQ2M6IGRldkBkcGRrLm9yZzsgRHVtaXRyZXNjdSwgQ3Jpc3RpYW4N Cj4gPiA8Y3Jpc3RpYW4uZHVtaXRyZXNjdUBpbnRlbC5jb20+OyBvcmlrYUBudmlkaWEuY29tDQo+ ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2NF0gYXBwL3Rlc3RwbWQ6IGVuYWJsZSBjbGkgZm9yIHBy b2dyYW1tYWJsZQ0KPiA+IGFjdGlvbg0KPiA+DQo+ID4gT24gMTAvMTEvMjAyMyAzOjI0IEFNLCBa aGFuZywgUWkgWiB3cm90ZToNCj4gPiA+DQo+ID4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPiA+PiBGcm9tOiBGZXJydWggWWlnaXQgPGZlcnJ1aC55aWdpdEBhbWQuY29tPg0KPiA+ ID4+IFNlbnQ6IFR1ZXNkYXksIE9jdG9iZXIgMTAsIDIwMjMgNjo0OSBQTQ0KPiA+ID4+IFRvOiBa aGFuZywgUWkgWiA8cWkuei56aGFuZ0BpbnRlbC5jb20+OyBTaW5naCwgQW1hbiBEZWVwDQo+ID4g Pj4gPGFtYW4uZGVlcC5zaW5naEBpbnRlbC5jb20+OyBaaGFuZywgWXV5aW5nDQo+IDx5dXlpbmcu emhhbmdAaW50ZWwuY29tPg0KPiA+ID4+IENjOiBkZXZAZHBkay5vcmc7IER1bWl0cmVzY3UsIENy aXN0aWFuDQo+ID4gPj4gPGNyaXN0aWFuLmR1bWl0cmVzY3VAaW50ZWwuY29tPjsgb3Jpa2FAbnZp ZGlhLmNvbQ0KPiA+ID4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjRdIGFwcC90ZXN0cG1kOiBlbmFi bGUgY2xpIGZvciBwcm9ncmFtbWFibGUNCj4gPiA+PiBhY3Rpb24NCj4gPiA+Pg0KPiA+ID4+IE9u IDEwLzcvMjAyMyAxMTo0NyBBTSwgUWkgWmhhbmcgd3JvdGU6DQo+ID4gPj4+IFBhcnNpbmcgY29t bWFuZCBsaW5lIGZvciBydGVfZmxvd19hY3Rpb25fcHJvZy4NCj4gPiA+Pj4NCj4gPiA+Pj4gU3lu dGF4Og0KPiA+ID4+Pg0KPiA+ID4+PiAicHJvZyBuYW1lIDxuYW1lPiBbYXJndW1lbnRzIDxhcmdf bmFtZV8wPiA8YXJnX3ZhbHVlXzA+IFwNCj4gPiA+Pj4gPGFyZ19uYW1lXzE+IDxhcmdfdmFsdWUx PiAuLi4gZW5kXSINCj4gPiA+Pj4NCj4gPiA+Pg0KPiA+ID4+IENhbiB5b3UgcGxlYXNlIHB1dCBm dWxsIHJ0ZSBmbG93IGNvbW1hbmQgaW4gdGhlIGNvbW1pdCBsb2c/IExpa2UNCj4gPiA+PiB3aGF0 IGlzIHRoZSAncGF0dGVybicgZm9yIGFib3ZlIGNvbW1hbmQ/DQo+ID4gPg0KPiA+ID4gVGhlIHBh dHRlcm4gcGFydCBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2YgdGhlIGFjdGlvbiBwYXJ0LA0KPiA+ ID4NCj4gPiA+IHRob3VnaCBmb3Igb3VyIFA0IGRldmljZSwgd2Ugd2lsbCBwcmVmZXIgdXNlIHJ0 ZV9mbG93X2ZsZXhfaXRlbSwNCj4gPiA+IHNvbWV0aGluZw0KPiA+IGxpa2U6DQo+ID4gPg0KPiA+ ID4gZmxvdyBjcmVhdGUgMCBwYXR0ZXJuIGZsZXggaXRlbSBpcyB4eHggcGF0dGVybiBpcyB4eHgg LyBmbGV4IGl0ZW0gaXMNCj4gPiA+IHh4eCBwYXR0ZXJuDQo+ID4gaXMgLyBhY3Rpb25zIHByb2cg bmFtZSAuLi4uLi4NCj4gPiA+DQo+ID4gPiBidXQgaXQgZG9lcyBub3QgbGltaXQgUE1EIHRvIHN1 cHBvcnQgZmxvdyBsaWtlIGJlbG93DQo+ID4gPg0KPiA+DQo+ID4gSSB0aGluayBhZ3JlZW1lbnQg d2FzIHRvIHVzZSBmbGV4IHBhdHRlcm4sIGFuZCBteSB1bmRlcnN0YW5kIGlzDQo+ID4gInN0cnVj dCBydGVfZmxvd19pdGVtX2ZsZXgiIHdpbGwgYmUgdXNlZCB0byBwcmVzZW50IHRoZSB0YWJsZV9p ZC4NCj4gPg0KPiA+IFdpdGhvdXQgbm90IHVzaW5nIGZsZXgsIGhvdyBkcml2ZXIgd2lsbCBkZXRl Y3Qgd2hpY2ggdGFibGUgdG8gdXBkYXRlPw0KPiA+DQo+ID4NCj4gPiA+IGZsb3cgY3JlYXRlIDAg cGF0dGVybiBldGggLyBpcHY0IHNyYyBpcyAxLjEuMS4xIC8gYWN0aW9ucyBwcm9nIG5hbWUgLi4u Li4uDQo+ID4gPg0KPiA+ID4gU28gSSB0aGluayBpdCBtYXkgbm90IGJlIG5lY2Vzc2FyeSB0byBo aWdobGlnaHQgdGhlIHBhdHRlcm4gZm9ybWF0IGhlcmUuDQo+ID4gPg0KPiA+DQo+ID4gQ29tcGxl dGUgc2FtcGxlcyBoZWxwcyBhIGxvdCB0byB1c2VyLCBjYW4geW91IHBsZWFzZSBpbmNsdWRlIHRo ZSBmdWxsDQo+ID4gcnRlIGZsb3cgY29tbWFuZCwgeW91IGNhbiBoYXZlIGZsZXggcGF0dGVybiBz YW1wbGUgYW5kIGlmIHlvdSB3YW50IGFkZA0KPiA+IG1vcmUgc2FtcGxlcyB3aXRoIG90aGVyIHBh dHRlcm5zIGJ1dCB3ZSBuZWVkIHRvIGNsYXJpZnkgaXQgZmlyc3QuDQo+IA0KPiBBZ3JlZSwgSSBo YXZlIGFkZGVkIGZ1bGwgc2FtcGxlIG9uIHY2IGluIHRlc3RwbWQgZG9jdW1lbnQgYXMgYmVsb3c6 DQo+IA0KPiAuLi4NCj4gICAgIEEgcnVsZSB1c2UgUHJvZ3JhbW1hYmxlIEFjdGlvbiB0byBwZXJm b3JtIGEgY3VzdG9taXplZCB0dW5uZWwgaGVhZGVyDQo+IGVuY2FwIGZvciBzcGVjaWZpYyBJUCBw YWNrZXRzDQo+IA0KPiAgICAgdGVzdHBtZD4gZmxvdyBjcmVhdGUgMCBpbmdyZXNzIHBhdHRlcm4g ZXRoIC8gaXB2NCBzcmMgaXMgMS4yLjMuNCAvIGVuZCBhY3Rpb25zDQo+IHByb2cgbmFtZSBjdXN0 X3R1bl9lbmNhcCBhcmd1bWVudHMgdHVubl9pZCA1NUFBIG1ldGEwIDJFIG1ldGExIDkwMDANCj4g ZW5kIC8gZW5kIg0KPiAuLi4NCj4gDQo+IFRoZSByZWFzb24gSSBkaWQgbm90IGluY2x1ZGUgYSBz YW1wbGUgd2l0aCBhIGZsZXggaXRlbSBpcyB0aGF0LCBpbiB0aGUgY29udGV4dCBvZg0KPiBvdXIg UDQgZGV2aWNlLCB0aGVyZSBpcyBubyByZXF1aXJlbWVudCB0byB1dGlsaXplIHRoZQ0KPiAncnRl X2Zsb3dfaXRlbV9mbGV4X2hhbmRsZScgd2l0aGluICdydGVfZmxvd19pdGVtX2ZsZXguJw0KPiBI b3dldmVyLCB0aGUgY3VycmVudCB0ZXN0cG1kIGRvZXMgbm90IG9mZmVyIHN1cHBvcnQgZm9yIHRo aXMgY29uZmlndXJhdGlvbi4NCj4gDQo+IFRoZXJlZm9yZSwgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0 byBpbnRyb2R1Y2UgYSBuZXcgc3ludGF4LCBzdWNoIGFzIC4uLiBwYXR0ZXJuDQo+IGZsZXggcGF0 dGVybiBpcyB4eHh4IC8gZmxleCBwYXR0ZXJuIGlzIHh4eCAvIGVuZCAuLi4sIHdoaWNoIHdvdWxk IGFsc28gbWFwIHRvDQo+ICdydGVfZmxvd19pdGVtX2ZsZXgnLg0KPiANCj4gPg0KPiA+DQo+ID4g Pj4NCj4gPiA+Pg0KPiA+ID4+PiBVc2UgcGFyc2Vfc3RyaW5nMCB0byBwYXJzZSBuYW1lIHN0cmlu Zy4NCj4gPiA+Pj4gVXNlIHBhcnNlX2hleCB0byBwYXJzZSBoZXggc3RyaW5nLg0KPiA+ID4+PiBV c2Ugc3RydWN0IGFjdGlvbl9wcm9nX2RhdGEgdG8gc3RvcmUgcGFyc2VkIHJlc3VsdC4NCj4gPiA+ Pj4NCj4gPiA+Pj4gRXhhbXBsZToNCj4gPiA+Pj4NCj4gPiA+Pj4gQWN0aW9uIHdpdGggMiBhcmd1 bWVudHM6DQo+ID4gPj4+DQo+ID4gPj4+ICJwcm9nIG5hbWUgYWN0aW9uMCBhcmd1bWVudHMgZmll bGQwIDAzRkYgZmllbGQxIDU1QUEgZW5kIg0KPiA+ID4+Pg0KPiA+ID4+PiBBY3Rpb24gd2l0aG91 dCBhcmd1bWVudDoNCj4gPiA+Pj4NCj4gPiA+Pj4gInByb2cgbmFtZSBhY3Rpb24xIg0KPiA+ID4+ Pg0KPiA+ID4+PiBTaWduZWQtb2ZmLWJ5OiBRaSBaaGFuZyA8cWkuei56aGFuZ0BpbnRlbC5jb20+ DQo+ID4gPj4+DQo+ID4gPj4NCj4gPiA+PiBJcyB0aGVyZSBhbiBleGlzdGluZyBkcml2ZXIgaW1w bGVtZW50YXRpb24sIGNoZWNraW5nIGl0IGhlbHBzIHRvDQo+ID4gPj4gdW5kZXJzdGFuZCBmZWF0 dXJlIGltcGxlbWVudGF0aW9uPw0KPiA+ID4NCj4gPiA+IFRoaXMgd29yayBpcyBzdGlsbCBvbmdv aW5nLCBjdXJyZW50bHkgd2UgdGFyZ2V0IHRvIHVwc3RyZWFtIG9uIERQREsNCj4gPiA+IDI0LjAz DQo+ID4gPg0KPiA+DQo+ID4gSWYgeW91IHdvbid0IGhhdmUgZHJpdmVyIHlldCwgZG8geW91IGhh dmUgYSB3YXkgdG8gdGVzdCB0aGVzZSBjb21tYW5kcz8NCj4gPiBPciBpcyB0aGlzIGltcGxlbWVu dGF0aW9uIGp1c3QgdGhlb3JldGljYWwgYXQgdGhpcyBzdGFnZT8NCg0KSSBtYXkgbm90IGdldCB5 b3VyIHBvaW50IGluIG15IHByZXZpb3VzIHJlcGx5LCB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNz IG9mIHRoZSBuZXcgY29tbWFuZHMgYmVmb3JlIHRoZSBkcml2ZXIgaXMgcmVhZHksIA0KQWN0dWFs bHksIEkgYWRkZWQgc29tZSBkdW1wIGNvZGUgaW4gcG9ydF9mbG93X2NyZWF0ZSB0byB2ZXJpZnkg ZWFjaCBwcm9nIGFjdGlvbiBhbmQgaXRzIGFyZ3VtZW50cycgc2l6ZSAsIHZhbHVlDQoNCj4gDQo+ IFllcywgaW50ZXJuYWxseSwgd2UgYXJlIHZlcnkgY2xvc2UgdG8gaGF2ZSBhbiBpbXBsZW1lbnRh dGlvbiB0aGF0IHdpbGwgbGV2ZXJhZ2UNCj4gdGhpcyBuZXcgQVBJLCBUaGUgSlNPTiBmaWxlIGxv YWRlZCBieSBDUEZMIFBNRCBjb250YWlucyB0aGUgbWFwcGluZyBydWxlDQo+IHRoYXQgZGlyZWN0 IFBNRCBob3cgdG8gaGFuZGxpbmcgIGFuIGFjdGlvbl9wcm9nLCAgY3VycmVudGx5IHdlIGRpZG4n dCBzZWUgYW55DQo+IGdhcCBvZiB0aGUgbmV3IEFQSS4NCj4gDQo+ID4NCj4gPg0KPiA+ID4+DQo+ ID4gPj4NCj4gPiA+Pj4gLS0tDQo+ID4gPj4+DQo+ID4gPj4+IHY0Og0KPiA+ID4+PiAtIGJlIG1v cmUgZ2VuZXJvdXMgb24gdGhlIG1heCBzaXplIG9mIG5hbWUgYW5kIHZhbHVlLg0KPiA+ID4+Pg0K PiA+ID4+PiB2MzoNCj4gPiA+Pj4gLSByZWZpbmUgc3RydWN0IGFjdGlvbl9wcm9nX2RhdGENCj4g PiA+Pj4gLSBlbmxhcmdlIHRoZSBtYXggc2l6ZQ0KPiA+ID4+Pg0KPiA+ID4+PiB2MjoNCj4gPiA+ Pj4gLSBmaXggdGl0bGUNCj4gPiA+Pj4gLSBtaW5vciBjb2Rpbmcgc3R5bGUgcmVmaW5lLg0KPiA+ ID4+Pg0KPiA+ID4+PiAgYXBwL3Rlc3QtcG1kL2NtZGxpbmVfZmxvdy5jIHwgMjMyDQo+ID4gPj4+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4+PiAgMSBmaWxlIGNo YW5nZWQsIDIzMiBpbnNlcnRpb25zKCspDQo+ID4gPj4+DQo+ID4gPj4NCj4gPiA+PiBIaSBRaSwN Cj4gPiA+Pg0KPiA+ID4+IENhbiB5b3UgcGxlYXNlIHVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvbywN Cj4gPiA+PiBgZG9jL2d1aWRlcy90ZXN0cG1kX2FwcF91Zy90ZXN0cG1kX2Z1bmNzLnJzdGAsIGBG bG93IHJ1bGVzDQo+ID4gPj4gbWFuYWdlbWVudGAgc2VjdGlvbi4NCj4gPiA+DQo+ID4gPiBTdXJl Lg0KPiA+ID4NCj4gPiA+Pg0KPiA+ID4+DQo+ID4gPj4+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1w bWQvY21kbGluZV9mbG93LmMNCj4gPiA+Pj4gYi9hcHAvdGVzdC1wbWQvY21kbGluZV9mbG93LmMg aW5kZXggMjE4MjhjMTQ0Yy4uYWU1NTU2ZTcwNCAxMDA2NDQNCj4gPiA+Pj4gLS0tIGEvYXBwL3Rl c3QtcG1kL2NtZGxpbmVfZmxvdy5jDQo+ID4gPj4+ICsrKyBiL2FwcC90ZXN0LXBtZC9jbWRsaW5l X2Zsb3cuYw0KPiA+ID4+PiBAQCAtNzE5LDYgKzcxOSwxMyBAQCBlbnVtIGluZGV4IHsNCj4gPiA+ Pj4gIAlBQ1RJT05fSVBWNl9FWFRfUFVTSCwNCj4gPiA+Pj4gIAlBQ1RJT05fSVBWNl9FWFRfUFVT SF9JTkRFWCwNCj4gPiA+Pj4gIAlBQ1RJT05fSVBWNl9FWFRfUFVTSF9JTkRFWF9WQUxVRSwNCj4g PiA+Pj4gKwlBQ1RJT05fUFJPRywNCj4gPiA+Pj4gKwlBQ1RJT05fUFJPR19OQU1FLA0KPiA+ID4+ PiArCUFDVElPTl9QUk9HX05BTUVfU1RSSU5HLA0KPiA+ID4+PiArCUFDVElPTl9QUk9HX0FSR1VN RU5UUywNCj4gPiA+Pj4gKwlBQ1RJT05fUFJPR19BUkdfTkFNRSwNCj4gPiA+Pj4gKwlBQ1RJT05f UFJPR19BUkdfVkFMVUUsDQo+ID4gPj4+ICsJQUNUSU9OX1BST0dfQVJHX0VORCwNCj4gPiA+Pj4g IH07DQo+ID4gPj4+DQo+ID4gPj4+ICAvKiogTWF4aW11bSBzaXplIGZvciBwYXR0ZXJuIGluIHN0 cnVjdCBydGVfZmxvd19pdGVtX3Jhdy4gKi8gQEANCj4gPiA+Pj4gLTc0OSw2ICs3NTYsMjMgQEAg c3RydWN0IGFjdGlvbl9yc3NfZGF0YSB7DQo+ID4gPj4+ICAJdWludDE2X3QgcXVldWVbQUNUSU9O X1JTU19RVUVVRV9OVU1dOyAgfTsNCj4gPiA+Pj4NCj4gPiA+Pj4gKyNkZWZpbmUgQUNUSU9OX1BS T0dfTkFNRV9TSVpFX01BWCAyNTYgI2RlZmluZQ0KPiA+ID4+IEFDVElPTl9QUk9HX0FSR19OVU1f TUFYDQo+ID4gPj4+ICsxNiAjZGVmaW5lIEFDVElPTl9QUk9HX0FSR19WQUxVRV9TSVpFX01BWCA2 NA0KPiA+ID4+PiArDQo+ID4gPj4+ICsvKiogU3RvcmFnZSBmb3Igc3RydWN0IHJ0ZV9mbG93X2Fj dGlvbl9wcm9nIGluY2x1ZGluZyBleHRlcm5hbCBkYXRhLg0KPiA+ID4+PiArKi8gc3RydWN0IGFj dGlvbl9wcm9nX2RhdGEgew0KPiA+ID4+PiArCXN0cnVjdCBydGVfZmxvd19hY3Rpb25fcHJvZyBj b25mOw0KPiA+ID4+PiArCXN0cnVjdCB7DQo+ID4gPj4+ICsJCWNoYXIgbmFtZVtBQ1RJT05fUFJP R19OQU1FX1NJWkVfTUFYXTsNCj4gPiA+Pj4gKwkJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9wcm9n X2FyZ3VtZW50DQo+ID4gPj4gYXJnc1tBQ1RJT05fUFJPR19BUkdfTlVNX01BWF07DQo+ID4gPj4+ ICsJCXN0cnVjdCB7DQo+ID4gPj4+ICsJCQljaGFyIG5hbWVzW0FDVElPTl9QUk9HX05BTUVfU0la RV9NQVhdOw0KPiA+ID4+PiArCQkJdWludDhfdA0KPiA+ID4+IHZhbHVlW0FDVElPTl9QUk9HX0FS R19WQUxVRV9TSVpFX01BWF07DQo+ID4gPj4+ICsJCX0gYXJnX2RhdGFbQUNUSU9OX1BST0dfQVJH X05VTV9NQVhdOw0KPiA+ID4+PiArCX0gZGF0YTsNCj4gPiA+Pj4gK307DQo+ID4gPj4+ICsNCj4g PiA+Pj4gIC8qKiBNYXhpbXVtIGRhdGEgc2l6ZSBpbiBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3Jh d19lbmNhcC4gKi8NCj4gPiA+Pj4gI2RlZmluZSBBQ1RJT05fUkFXX0VOQ0FQX01BWF9EQVRBIDUx MiAgI2RlZmluZQ0KPiA+ID4+IFJBV19FTkNBUF9DT05GU19NQVhfTlVNDQo+ID4gPj4+IDggQEAg LTIxNjksNiArMjE5Myw3IEBAIHN0YXRpYyBjb25zdCBlbnVtIGluZGV4IG5leHRfYWN0aW9uW10g PSB7DQo+ID4gPj4+ICAJQUNUSU9OX1FVT1RBX1FVLA0KPiA+ID4+PiAgCUFDVElPTl9JUFY2X0VY VF9SRU1PVkUsDQo+ID4gPj4+ICAJQUNUSU9OX0lQVjZfRVhUX1BVU0gsDQo+ID4gPj4+ICsJQUNU SU9OX1BST0csDQo+ID4gPj4+ICAJWkVSTywNCj4gPiA+Pj4gIH07DQo+ID4gPj4+DQo+ID4gPj4+ IEBAIC0yNTEwLDYgKzI1MzUsMTMgQEAgc3RhdGljIGNvbnN0IGVudW0gaW5kZXgNCj4gPiA+PiBh Y3Rpb25fcmVwcmVzZW50ZWRfcG9ydFtdID0gew0KPiA+ID4+PiAgCVpFUk8sDQo+ID4gPj4+ICB9 Ow0KPiA+ID4+Pg0KPiA+ID4+PiArc3RhdGljIGNvbnN0IGVudW0gaW5kZXggYWN0aW9uX3Byb2db XSA9IHsNCj4gPiA+Pj4gKwlBQ1RJT05fUFJPR19OQU1FLA0KPiA+ID4+PiArCUFDVElPTl9QUk9H X0FSR1VNRU5UUywNCj4gPiA+Pj4gKwlBQ1RJT05fTkVYVCwNCj4gPiA+Pj4gKwlaRVJPLA0KPiA+ ID4+PiArfTsNCj4gPiA+Pj4gKw0KPiA+ID4+PiAgc3RhdGljIGludCBwYXJzZV9zZXRfcmF3X2Vu Y2FwX2RlY2FwKHN0cnVjdCBjb250ZXh0ICosIGNvbnN0DQo+ID4gPj4+IHN0cnVjdCB0b2tlbg0K PiA+ICosDQo+ID4gPj4+ICAJCQkJICAgICBjb25zdCBjaGFyICosIHVuc2lnbmVkIGludCwNCj4g PiA+Pj4gIAkJCQkgICAgIHZvaWQgKiwgdW5zaWduZWQgaW50KTsNCj4gPiA+Pj4gQEAgLTI3ODYs NiArMjgxOCwxOCBAQCBzdGF0aWMgaW50DQo+ID4gPj4+ICBwYXJzZV9xdV9tb2RlX25hbWUoc3Ry dWN0IGNvbnRleHQgKmN0eCwgY29uc3Qgc3RydWN0IHRva2VuICp0b2tlbiwNCj4gPiA+Pj4gIAkJ ICAgY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuLCB2b2lkICpidWYsDQo+ID4gPj4+ ICAJCSAgIHVuc2lnbmVkIGludCBzaXplKTsNCj4gPiA+Pj4gK3N0YXRpYyBpbnQNCj4gPiA+Pj4g K3BhcnNlX3ZjX2FjdGlvbl9wcm9nKHN0cnVjdCBjb250ZXh0ICosIGNvbnN0IHN0cnVjdCB0b2tl biAqLA0KPiA+ID4+PiArCQkgICAgIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50LCB2b2lkICos DQo+ID4gPj4+ICsJCSAgICAgdW5zaWduZWQgaW50KTsNCj4gPiA+Pj4gK3N0YXRpYyBpbnQNCj4g PiA+Pj4gK3BhcnNlX3ZjX2FjdGlvbl9wcm9nX2FyZ19uYW1lKHN0cnVjdCBjb250ZXh0ICosIGNv bnN0IHN0cnVjdCB0b2tlbiAqLA0KPiA+ID4+PiArCQkJICAgICAgY29uc3QgY2hhciAqLCB1bnNp Z25lZCBpbnQsIHZvaWQgKiwNCj4gPiA+Pj4gKwkJCSAgICAgIHVuc2lnbmVkIGludCk7DQo+ID4g Pj4+ICtzdGF0aWMgaW50DQo+ID4gPj4+ICtwYXJzZV92Y19hY3Rpb25fcHJvZ19hcmdfdmFsdWUo c3RydWN0IGNvbnRleHQgKiwgY29uc3Qgc3RydWN0IHRva2VuICosDQo+ID4gPj4+ICsJCQkgICAg ICAgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsIHZvaWQgKiwNCj4gPiA+Pj4gKwkJCSAgICAg ICB1bnNpZ25lZCBpbnQpOw0KPiA+ID4+PiAgc3RhdGljIGludCBjb21wX25vbmUoc3RydWN0IGNv bnRleHQgKiwgY29uc3Qgc3RydWN0IHRva2VuICosDQo+ID4gPj4+ICAJCSAgICAgdW5zaWduZWQg aW50LCBjaGFyICosIHVuc2lnbmVkIGludCk7ICBzdGF0aWMgaW50DQo+ID4gPj4+IGNvbXBfYm9v bGVhbihzdHJ1Y3QgY29udGV4dCAqLCBjb25zdCBzdHJ1Y3QgdG9rZW4gKiwgQEAgLTc1MTgsNg0K PiA+ID4+PiArNzU2Miw0OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRva2VuIHRva2VuX2xpc3Rb XSA9IHsNCj4gPiA+Pj4gIAkJLmFyZ3MgPSBBUkdTKEFSR1NfRU5UUlkoc3RydWN0IHJ0ZV9mbG93 X2l0ZW1fdHhfcXVldWUsDQo+ID4gPj4+ICAJCQkJCXR4X3F1ZXVlKSksDQo+ID4gPj4+ICAJfSwN Cj4gPiA+Pj4gKwlbQUNUSU9OX1BST0ddID0gew0KPiA+ID4+PiArCQkubmFtZSA9ICJwcm9nIiwN Cj4gPiA+Pj4gKwkJLmhlbHAgPSAibWF0Y2ggYSBwcm9ncmFtbWFibGUgYWN0aW9uIiwNCj4gPiA+ Pj4gKwkJLnByaXYgPSBQUklWX0FDVElPTihQUk9HLCBzaXplb2Yoc3RydWN0IGFjdGlvbl9wcm9n X2RhdGEpKSwNCj4gPiA+Pj4gKwkJLm5leHQgPSBORVhUKGFjdGlvbl9wcm9nKSwNCj4gPiA+Pj4g KwkJLmNhbGwgPSBwYXJzZV92Y19hY3Rpb25fcHJvZywNCj4gPiA+Pj4gKwl9LA0KPiA+ID4+PiAr CVtBQ1RJT05fUFJPR19OQU1FXSA9IHsNCj4gPiA+Pj4gKwkJLm5hbWUgPSAibmFtZSIsDQo+ID4g Pj4+ICsJCS5oZWxwID0gInByb2dyYW1ibGUgYWN0aW9uIG5hbWUiLA0KPiA+ID4+Pg0KPiA+ID4+ DQo+ID4gPj4gQ2FuIHlvdSBwbGVhc2UgcmVtaW5kIG1lIGFnYWluIHdoYXQgd2FzIHRoZSAnbmFt ZScgZmlsZWQgb2YgInN0cnVjdA0KPiA+ID4+IHJ0ZV9mbG93X2FjdGlvbl9wcm9nIiB3YXMgZm9y Pw0KPiA+ID4NCj4gPiA+IFRoZSAnbmFtZScgZmllbGQgc2VydmVzIGFzIGEgbWVhbnMgZm9yIHRo ZSBkcml2ZXIgdG8gaWRlbnRpZnkgYW4NCj4gPiA+IGFjdGlvbg0KPiA+IHNjaGVtYSwgZW5hYmxp bmcgaXQgdG8gdmVyaWZ5IGlmIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyBhbmQgdGhlIHNpemUN Cj4gPiBvZiBlYWNoIHBhcmFtZXRlciB2YWx1ZSBhbGlnbiB3aXRoIHRoZSBQNCBkZWZpbml0aW9u Lg0KPiA+ID4gU3Vic2VxdWVudGx5LCB0aGUgZHJpdmVyIHRyYW5zbGF0ZXMgdGhlc2UgdmFsdWVz IGludG8NCj4gPiA+IGhhcmR3YXJlLXNwZWNpZmljDQo+ID4gY29uZmlndXJhdGlvbnMuIElmIHRo ZXJlIGlzIGEgbWlzYWxpZ25tZW50LCB0aGUgUE1EIHdpbGwgcmV0dXJuIGEgZmFpbHVyZS4NCj4g PiA+DQo+ID4NCj4gPiBBcyBJIHVuZGVyc3RhbmQgaXQgaXMgdXNlZCBmb3Iga2luZCBvZiB1bmlx dWUgYWN0aW9uIGhhbmRsZXIsIGJ1dCB3ZQ0KPiA+IGhhdmUgcnRlX2Zsb3cgaGFuZGxlciBhbHJl YWR5LCBJIGFtIHN0aWxsIG5vdCBjbGVhciB3aHkgYW4gYWN0aW9uDQo+ID4gaGFuZGxlciBpcyBy ZXF1aXJlZC4NCj4gPg0KPiA+IFdoeSBkcml2ZXIgaXMgbm90IHVzaW5nIHJ0ZSBmbG93IGhhbmRs ZXI/DQo+IA0KPiBOb3Qgc3VyZSBpZiBJIGhhdmUgdW5kZXJzdG9vZCB5b3VyIHF1ZXN0aW9uIGNv cnJlY3RseS4NCj4gQnV0LCB0aGUgIm5hbWUiIGZpZWxkIHlvdSdyZSByZWZlcnJpbmcgdG8gaXMg bm90IHJlbGF0ZWQgd2l0aCBhbiBhY3Rpb24gaGFuZGxlciwNCj4gaXQncyBtb3JlIGxpa2UgYW4g YWN0aW9uIHR5cGUuDQo+IEp1c3QgbGlrZSAnUlRFX0ZMT1dfQUNUSU9OX1RZUEVfWFhYLCcgd2hp Y2ggaXMgcHJlZGVmaW5lZCwgYnV0IHRoaXMgYWN0aW9uDQo+IHR5cGUgaXMgZGVmaW5lZCBhcyBk ZXZpY2Utc3BlY2lmaWMuDQo+IA0KPiA+DQo+ID4gQWdhaW4gZHJpdmVyIGltcGxlbWVudGF0aW9u IHdvdWxkIGNsZWFyIG1vcmUgdGhlIGludGVuZGVkIHVzYWdlLg0KPiANCj4gQXQgdGhpcyB0aW1l LCBJIGhvcGUgYWJvdmUgc2FtcGxlIHRlc3RwbWQgY29tbWFuZCBjYW4gYmUgaGVscGZ1bCBpbiB0 aGlzDQo+IG1hdHRlci4NCj4gDQo+ID4NCj4gPiA+Pg0KPiA+ID4+DQo+ID4gPj4+ICsJCS5uZXh0 ID0gTkVYVChhY3Rpb25fcHJvZywNCj4gPiA+PiBORVhUX0VOVFJZKEFDVElPTl9QUk9HX05BTUVf U1RSSU5HKSksDQo+ID4gPj4+ICsJCS5hcmdzID0gQVJHUyhBUkdTX0VOVFJZKHN0cnVjdCBhY3Rp b25fcHJvZ19kYXRhLA0KPiA+ID4+IGRhdGEubmFtZSkpLA0KPiA+ID4+PiArCX0sDQo+ID4gPj4+ ICsJW0FDVElPTl9QUk9HX05BTUVfU1RSSU5HXSA9IHsNCj4gPiA+Pj4gKwkJLm5hbWUgPSAie3N0 cmluZ30iLA0KPiA+ID4+PiArCQkudHlwZSA9ICJTVFJJTkciLA0KPiA+ID4+PiArCQkuaGVscCA9 ICJwcm9ncmFtbWFibGUgYWN0aW9uIG5hbWUgc3RyaW5nIiwNCj4gPiA+Pj4gKwkJLmNhbGwgPSBw YXJzZV9zdHJpbmcwLA0KPiA+ID4+PiArCX0sDQo+ID4gPj4+ICsJW0FDVElPTl9QUk9HX0FSR1VN RU5UU10gPSB7DQo+ID4gPj4+ICsJCS5uYW1lID0gImFyZ3VtZW50cyIsDQo+ID4gPj4+ICsJCS5o ZWxwID0gInByb2dyYW1tYWJsZSBhY3Rpb24gbmFtZSIsDQo+ID4gPj4+ICsJCS5uZXh0ID0gTkVY VChhY3Rpb25fcHJvZywNCj4gPiA+PiBORVhUX0VOVFJZKEFDVElPTl9QUk9HX0FSR19OQU1FKSks DQo+ID4gPj4+ICsJCS5jYWxsID0gcGFyc2VfdmNfY29uZiwNCj4gPiA+Pj4gKwl9LA0KPiA+ID4+ PiArCVtBQ1RJT05fUFJPR19BUkdfTkFNRV0gPSB7DQo+ID4gPj4+ICsJCS5uYW1lID0gIntzdHJp bmd9IiwNCj4gPiA+Pj4gKwkJLmhlbHAgPSAicHJvZ3JhbW1hYmxlIGFjdGlvbiBhcmd1bWVudCBu YW1lIiwNCj4gPiA+Pj4gKwkJLm5leHQgPSBORVhUKE5FWFRfRU5UUlkoQUNUSU9OX1BST0dfQVJH X1ZBTFVFKSksDQo+ID4gPj4+ICsJCS5jYWxsID0gcGFyc2VfdmNfYWN0aW9uX3Byb2dfYXJnX25h bWUsDQo+ID4gPj4+ICsJfSwNCj4gPiA+Pj4gKwlbQUNUSU9OX1BST0dfQVJHX1ZBTFVFXSA9IHsN Cj4gPiA+Pj4gKwkJLm5hbWUgPSAie2hleH0iLA0KPiA+ID4+PiArCQkuaGVscCA9ICJwcm9ncmFt bWFibGUgYWN0aW9uIGFyZ3VtZW50IHZhbHVlIiwNCj4gPiA+Pj4gKwkJLm5leHQgPSBORVhUKE5F WFRfRU5UUlkoQUNUSU9OX1BST0dfQVJHX0VORCwNCj4gPiA+PiBBQ1RJT05fUFJPR19BUkdfTkFN RSkpLA0KPiA+ID4+PiArCQkuY2FsbCA9IHBhcnNlX3ZjX2FjdGlvbl9wcm9nX2FyZ192YWx1ZSwN Cj4gPiA+Pj4gKwl9LA0KPiA+ID4+PiArCVtBQ1RJT05fUFJPR19BUkdfRU5EXSA9IHsNCj4gPiA+ Pj4gKwkJLm5hbWUgPSAiZW5kIiwNCj4gPiA+Pj4gKwkJLmhlbHAgPSAiZW5kIG9mIHRoZSBwcm9n cmFtbWFibGUgYWN0aW9uIGFyZ3VtZW50cyIsDQo+ID4gPj4+ICsJfSwNCj4gPiA+Pj4gKw0KPiA+ ID4+Pg0KPiA+ID4+DQo+ID4gPj4gRG9lcyB0aGlzIG1lYW5zIHR3byAnZW5kJyByZXF1aXJlZCBp ZiBtdWx0aXBsZSBhcmdzIHByb3ZpZGVkLCBsaWtlOg0KPiA+ID4+IHByb2cgbmFtZSAibmFtZSIg YXJndW1lbnRzIGZpZWxkMCAwM0ZGIGZpZWxkMSAxIGVuZCAvIGVuZCBJIGFtDQo+ID4gPj4gYXdh cmUgdGhlcmUgaXMgdmFyaWFibGUgbGVuZ3RoIG9mIGtleS92YWx1ZSwgYW5kIG5lZWQgYSBtYXJr ZXIgdG8NCj4gPiA+PiBzdG9wLCBidXQgdGhpcyBlbmQgc3BlY2lmaWMgZm9yIGFjdGlvbiBpcyBu b3QgdXNlZCwNCj4gPiA+DQo+ID4gPiAgQWN0dWFsbHkgSSBib3Jyb3dlZCB0aGUgaWRlYSBmcm9t IHRoZSBxdWV1ZSBncm91cCBpbiB0aGUgUlNTIGFjdGlvbjoNCj4gPiA+DQo+ID4gPiAnYWN0aW9u cyByc3MgcXVldWVzIDAgMSAyIDMgZW5kIC8gZW5kIC4uLiINCj4gPiA+DQo+ID4gPiBUaGUgZGlm ZmVyZW5jZSBpcyB0aGF0IHRoZSAnZW5kJyBjaGVjayB3YXMgcHJldmlvdXNseSBoaWRkZW4gd2l0 aGluDQo+ID4gPiB0aGUNCj4gPiAncGFyc2VfdmNfYWN0aW9uX3Jzc19xdWV1ZScgZnVuY3Rpb24s IHdoaWxlIGluIG15IGltcGxlbWVudGF0aW9uLCBJJ3ZlDQo+ID4gZGVmaW5lZCBpdCBhcyBhIGRp c3RpbmN0IHN0YXRlLg0KPiA+ID4NCj4gPg0KPiA+DQo+ID4gTXkgY29uY2VybiBpcyBpZiBBQ1RJ T05feHh4X0VORCB0b2tlbnMgYmUgY29uZnVzaW5nIG9yIHJlZHVuZGFudCBpZiB3ZQ0KPiA+IGhh dmUgbW9yZSBvZiB0aGVtLg0KPiA+DQo+ID4gSXMgdGhlcmUgYSBiZW5lZml0IHRvIGhhdmUgaXQg YXMgdG9rZW4sIGNvbXBhcmluZyB0byBoYXZlIGl0IGluIHRoZQ0KPiA+IHBhcnNlciBmdW5jdGlv bnMgYXMgUlNTIGRvZXM/DQo+IA0KPiBJbiBteSBvcGluaW9uLCBhZGRpbmcgbW9yZSAnQUNUSU9O X3h4eF9FTkQnIHdvbid0IG5lZ2F0aXZlbHkgaW1wYWN0IGNvZGUNCj4gcmVhZGFiaWxpdHkuDQo+ IEl0IGVuaGFuY2VzIHRoZSB0cmFuc3BhcmVuY3kgb2YgdGhlIHN5bnRheCBhbmQgbWF5IGV2ZW4g ZmFjaWxpdGF0ZSBwb3RlbnRpYWwNCj4gYXV0b21hdGlvbi4NCg0K