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 8872842B2C; Wed, 17 May 2023 17:18:42 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 62B47406B7; Wed, 17 May 2023 17:18:42 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2060.outbound.protection.outlook.com [40.107.96.60]) by mails.dpdk.org (Postfix) with ESMTP id 7CC6740041; Wed, 17 May 2023 17:18:40 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=czDDfc8xwOHsi9780kaWpqFiErxm/5AgpUvw5Ho2zgPdrUD6SS4dQrRUC2lDmANuZqmSSisUey/p9e5PrbVmgKxMbXfXJgvlCGdny2BnSsANwW7KoNQF0Cz6fj57LTc+cdTb8fjnNxinzBI6L67r1KxHxfmGU4Mxj4ovVf3lyLRq2R5s6HcjZrhEcvzs845dr9gWTC+OmWAqeHpNrO96uEr24gVW6ViG+bqYBtKzL0gLVcj6F3WqBqiolK6xkm1DUoZKUp60iZy0IKEBGc2bJvDdcPNI9q+NvTNY+VF0u+cyUVVbYPRuu76lfGj3bA+Ij4kHj8nU7h5yJLDJEXHNgw== 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=IoMnzADpFKvXiLlMsKvQXk6V4gGhniPWUoiwQhDZITM=; b=ZXc/ZfB7Ky7zrGugiaGfqd3gvB2g5B02ABybU10laG5M4j2Lee7heXQjkE6kGvcxe2/OsN9ZOEzbkVKb0r1AiWqlEJPfN4wPtPXXUSu2bvi9uoq2dE+cSB5Mk3elbIbgCQLbCy2sA6GWYwNmBoE7x5yl0vCoAtErgSXs9SXN5fBTzk0Ou7GSVnW8pW0XKOdLlz26DiJQIQ6/D5VHz/270YZjdBsrF6tunbqfELH6cUrKacPEKcv0wCN5BfVqn/+wR3XaImuaOBSN/Ffueds7UhIfstJy6ZPSy9X90oxZNNE2/NXtNTmNU7OMAo8G2SCSG4zpvlO6KcXeBtYcY48jvQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IoMnzADpFKvXiLlMsKvQXk6V4gGhniPWUoiwQhDZITM=; b=h9wiETV2vFMeX+LlxRvHuHYkHYywjcUpoeR6VQzLGSTnovBfy+0ilwNoo277N6N+mJkWrQ18Lx6S01c8cWwvvwHenQDt/qkW30LZJ7nrLX0nxKIo9HfmMc0QIx+tfR2i+WQWMKdnWWrGiXow8/AW5RETFBYtuYxgRwM0O9TXkByq3U6O4wYGpwSz/1hpEHvQBzcgYeC+qcMJ/o8pY+zLWanQoK5ZC1NLQSOoLxv4zi/xOn48a/QwqKX611w16FqKYnlxAgQfqvEzUqbEOBYTyhrQ0n3RC8gU6B5R8XV2CsdrzlGGwyobAOQVRh4rWEPAMSJKSjlppJlqOAXQebKsCw== Received: from MW2PR12MB4666.namprd12.prod.outlook.com (2603:10b6:302:13::22) by SA0PR12MB7479.namprd12.prod.outlook.com (2603:10b6:806:24b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.33; Wed, 17 May 2023 15:18:38 +0000 Received: from MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::2283:65bb:1559:9dcf]) by MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::2283:65bb:1559:9dcf%4]) with mapi id 15.20.6411.017; Wed, 17 May 2023 15:18:38 +0000 From: Ori Kam To: "Zhang, Qi Z" , "dev@dpdk.org" CC: "techboard@dpdk.org" , "Richardson, Bruce" , "Burakov, Anatoly" , "Wiles, Keith" , "Liang, Cunming" , "Wu, Jingjing" , "Zhang, Helin" , "Mcnamara, John" , "Xu, Rosen" Subject: RE: seeking community input on adapting DPDK to P4Runtime backend Thread-Topic: seeking community input on adapting DPDK to P4Runtime backend Thread-Index: AdmBdydpWI/N9jo8SXuEnV2EuOZZewHVxP7Q Date: Wed, 17 May 2023 15:18:38 +0000 Message-ID: References: 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=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW2PR12MB4666:EE_|SA0PR12MB7479:EE_ x-ms-office365-filtering-correlation-id: 23f1075c-ea5e-4d85-0fbf-08db56e9fd79 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XL594q8kVUmwLs755WkLcZspXIQR+51hc6ih3Mc9z14NHd0YHyyfqwioqqZ3z6nWbnb4wo3/ArWDnTEeJ72MsOPdn9Kazdq3BhxcblkxdUB+F4djaQXupVMbP7Ye9whrbPeH2So9Vz001GoptVqlXvMk5yCC+TpsMmJfj04HpAHnowH/59flrL3aJPdGtCCShyotGqpATl8xpgi984Vsu7QSu2omPt7OP7eLejWA7FLYCHVZt1ye7iTiSVetllbelFh4Ep+kWLf/0w90oqjiszwl3Ln7qIaT8Hp6uu0n1zuDQYDYIdokG/djfuH7PcCd2FSMltQJmRuUGRnNJFgL+6NSrvDTfEeDDXbffIxDUP/JlgsZFUT5z73U2Ru9JoDGM1NeQv/vJq9iavzukRW5iVaBqtTk+fxdwZTfDY+EpBPdH8jq3U54uMe2St58ZXS4tk0geOXyFAHe1dFiP79WTSuBOLfLRBdJomxGzerDeT7mWvH5p/jRDHXwfNGviYO9v3XC89GS7vu3N2k2vFL87VH91CZP5jVrZA0Ty4LRjnV1fsCuZlQzsaTAZW392rnZnsPEIJl0fOaE4bPVpLmylCppGnGUFRyQKwKXJhmmLvWrmeo/WKhjyKhLvaIYpY1KSrAFDLdHlCFpmU8/OemvkpWyf+d10ToGwvAIP3VRVFGwOhE3k70kpOaJg7P3qTYP x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR12MB4666.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(396003)(366004)(376002)(39860400002)(136003)(346002)(451199021)(7416002)(478600001)(110136005)(7696005)(9686003)(54906003)(966005)(53546011)(71200400001)(2906002)(26005)(55016003)(4326008)(316002)(66446008)(41300700001)(66946007)(66556008)(64756008)(66476007)(8676002)(5660300002)(8936002)(83380400001)(52536014)(122000001)(38100700002)(76116006)(33656002)(38070700005)(86362001)(186003)(6506007)(32563001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cDBTZStkRmFLVW5WWVZkQXl6MG9NM0lUbUVyeHEyZTRQUm5Ed2FZVDhDdERB?= =?utf-8?B?T0tDV25Ja2krWXZXMk9FR1R6b29VZFltZ1BVTjlNaVpXbXo4aGxLY3lJOFZP?= =?utf-8?B?M2Y4eWc1c3hMUmRjYVA4TzFPTlhjM1I3S20rd25pb0VlRG9FVzAwaXNIMlh6?= =?utf-8?B?NVd5NkdFeHYxVjVHdGsvMXk3YUkyWWREaURUd3U2N0E2YlpDbUROZi9NVkt2?= =?utf-8?B?REFXOEsrWDVyZENKK21zTHozL3hhaGJhaHJTa01IRFMzcEFORSs1alM2V0pW?= =?utf-8?B?OGxJemFwTzdXbUV6TG8zdk02OEVOdUJZZ3Z3TDBCenR6aTBwNzg1Vno5d0to?= =?utf-8?B?UFM2RVRNbnFtQ21ra0NEcFM1TGM0NnVNRlhka2tiYnBQeVI4c0o1bWRWcHFo?= =?utf-8?B?UVNqMmx1ZGlQU0RpM3o2UEIwbGhvSHJZSm1ONFNMQXU0Tm9IQVBWWUNjbklY?= =?utf-8?B?M3MxdW1tMHk5YlBpRXFqUlJ4OXUvdCt6YTd5a1QvbmZyNThBNjNTZDQrcTFq?= =?utf-8?B?V0NmT0lzcEdtYWJPbGFQNUpzcjMzd0J4SCtkeC9sQURiUS8wU2ZpaUQ2bHFC?= =?utf-8?B?Vzg1OGRrcHl0Q3ZNbDlROFZtdVVPOEs4eUpMUmM5N1NyckJvZHhRdk5kT1Vq?= =?utf-8?B?QUZZTHFSRXFSL0pSeVkwcCtwb09JdEZqOFJudzVPNFF5TG44U3BwSHQ4eC80?= =?utf-8?B?N1YzSGhtZCs0anJRKzl1ZktYb3F2Y0drTzh5WGcxUVpyVEdqZWErOHJuMVNi?= =?utf-8?B?V2pwMWM4S0xCSXlFd3B3S21FT1JrMXFYZ0JLM0NxdE9qaEcrOXNzQ0NWOE5L?= =?utf-8?B?OGFqZDV2S3V6QmYrMkRFSGRtY2l4Rmd6RlpQY09seDlxc2E5QkNyRTBaZWNQ?= =?utf-8?B?TjZ2WWpjVC9rUEIweVZ2eHdIMUtwN1duQTJzanZOZ3plMFBxd0pRQXdEaVJJ?= =?utf-8?B?YXBubG5DV2ZBajMranpDZFVTZkJwS2h2NmlrT1BXckxvZWxGTUJ3NlNXL2dE?= =?utf-8?B?NDkyVUxXMGxVUDVRTnJzcGlLZWZ6d2VHcDRnYjNvRk1CbVZrSktjT282ZTRi?= =?utf-8?B?K3RacllHU2hmSDE5ajFzVzVySHQrUkNQK1U3OEhZK3YxSzdCZ3ZsYjN1QUcw?= =?utf-8?B?dXYyUWdEemg3a2RYaHBkMzlRTWZ6OFRLQmNJc0dSR0VYeFJVV0xzZk5RWWp5?= =?utf-8?B?VkRPcVAzMXpUaElWMVV4ZnFPRU5FRFZIaDBrK3I1ZHVBU2VJQlQzN25pMFhP?= =?utf-8?B?a1l1U3hTTlM3eHJWWWlaTDdmRVVDNCtaeVlXNVhMN04zM2tHU285S1FsMldL?= =?utf-8?B?ZzM2V1BBSXdZdE8vV1JFYlNOdnFXT0wyNTdMR3ZYd2RQTytpcWVxMGM4N2M2?= =?utf-8?B?SDZnMXJIZ3VVNWMrcUpxYlVaYzJBSzV2ZldzdlNoRjJvZ0FoV3Zyd3N0QnYw?= =?utf-8?B?aWtPWExFeXlSYUlJWnZsWGp3Z3hxNDN4L054UWEzNmpaaGpUNkp5V25seDNs?= =?utf-8?B?M2FrVHd5RmFaVmlaNWc1RmRSS043NENlMlNmUFZpZm1GYWR0SUZWQ3dLUnVO?= =?utf-8?B?TUxlNXdkWlRTYWpBLzdOY0VtK3ppdGZ3N2pnMlpIWFF3aTgvSlF3QTVvQjlU?= =?utf-8?B?YTh0T3hPNFNiN1lpakhTTzFHRGRpYm0wUG9OYTlHcGh0c3VLSmdRTEc1SUxV?= =?utf-8?B?d2IrVGxkVHBTVVF2UTMvWEU3R0RrcldBLzNobWZWWDY5VDZ2dzNoVFFPNDlw?= =?utf-8?B?QkFTNDZKQmprejNXWExxWmpmSko4U3o2M3dSMmRVS0huWnM3cndXTEM3WlFr?= =?utf-8?B?dVR3QkQyUW85Vm9OMG1qYlNJaG5JVjBhd0Vtd090NWR2VmZpRFV2UHdmS3FD?= =?utf-8?B?K1JISjEzMDBCMkMwYmM4RXJSV2lRRHhsZUJmM1Y4NDdLN3pWZWU2YnFjNVBr?= =?utf-8?B?ZDUrR3JXK25IdlhPR2J4cHpOSjBpUlBVN2NMTUZtRjhhQ3RNSU84dE1lUi9D?= =?utf-8?B?YzVTQUVORXU1US9BZ3crK2RXamtWV0VlTUp5VW1vOHd1d0poaFZMemNHajFB?= =?utf-8?B?RFJ6YnYzY2Fpc2FKSkNrNHFnT3FtQmZobEFRTFlXaWw2N1dobE9qbkdyYXV4?= =?utf-8?Q?8VWU=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW2PR12MB4666.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23f1075c-ea5e-4d85-0fbf-08db56e9fd79 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 May 2023 15:18:38.2792 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 7t1sJKeiwkUUA0ybANW8kj0L8Zhmy/ASpVPNX1yjQ7ghCDVhlmYREF+LSnBVfUKQewgRtd3KKFR6Oo3i+woA4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB7479 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 SGkgWmhhbmcsDQoNCnJ0ZV9mbG93IGlzIGFuIGV4Y2VsbGVudCBjYW5kaWRhdGUgZm9yIGltcGxl bWVudGluZyBQNC4NCldlIGFuZCBzb21lIGludGVybmFsIHRlc3RzIHRoYXQgc2hvd3MgZ3JlYXQg cHJvbWlzZSBpbiB0aGlzIHJlZ2FyZC4NCg0KSSB3b3VsZCBiZSB2ZXJ5IGhhcHB5IHRvIHN1cHBs eSBhbnkgbmVlZGVkIGluZm9ybWF0aW9uIGFuZCBoYXZlDQpkaXNjdXNzaW9uIG9uIGhvdyB0byBj b250aW51ZSB3aXRoIHRoaXMgcHJvamVjdC4NCg0KUGxlYXNlIHNlZSBpbmxpbmUgZGV0YWlsZWQg YW5zd2Vycy4NCg0KQmVzdCwNCk9yaSBLYW0NCg0KDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBaaGFuZywgUWkgWiA8cWkuei56aGFuZ0BpbnRlbC5jb20+DQo+IFNl bnQ6IE1vbmRheSwgTWF5IDgsIDIwMjMgOTo0MCBBTQ0KPiBTdWJqZWN0OiBzZWVraW5nIGNvbW11 bml0eSBpbnB1dCBvbiBhZGFwdGluZyBEUERLIHRvIFA0UnVudGltZSBiYWNrZW5kDQo+IA0KPiBI aToNCj4gDQo+IE91ciB0ZWFtIGlzIGN1cnJlbnRseSB3b3JraW5nIG9uIGRldmVsb3BpbmcgYSBE UERLIFBNRCBmb3IgYSBQNC0NCj4gcHJvZ3JhbW1lZCBuZXR3b3JrIGNvbnRyb2xsZXIsIGJhc2Vk IG9uIGN1c3RvbWVyIGZlZWRiYWNrIHRvIGludGVncmF0ZQ0KPiBEUERLIGludG8gdGhlIFA0UnVu dGltZSBiYWNrZW5kIC5baHR0cHM6Ly9wNC5vcmcvcDQtDQo+IHNwZWMvcDRydW50aW1lL21haW4v UDRSdW50aW1lLVNwZWMuaHRtbF0NCj4gDQo+ICgqKSBIb3dldmVyLCB3ZSBhcmUgZmFjaW5nIGNo YWxsZW5nZXMgaW4gYWRhcHRpbmcgRFBESydzIHJ0ZV9mbG93IEFQSSB0byB0aGUNCj4gUDRSdW50 aW1lIEFQSSwgcHJpbWFyaWx5IGR1ZSB0byB0aGUgdHJhbnNpdGlvbiBmcm9tIGEgdGFibGUtYmFz ZWQgQVBJIHdpdGgNCj4gZmllbGRzIG9mIGFyYml0cmFyeSBiaXRzIHdpZHRoIGF0IGFyYml0cmFy eSBvZmZzZXQgdG8gYSBwcm90b2NvbC1iYXNlZCBBUEkgKG1vcmUNCj4gZGV0YWlsIGJlIGRlc2Ny aWJlZCBpbiBwb3N0LXNjcmlwdCkuDQo+IA0KPiBXZSBhcmUgc2Vla2luZyBzdWdnZXN0aW9ucyBh bmQgYmVzdCBwcmFjdGljZXMgZnJvbSB0aGUgb3Blbi1zb3VyY2UNCj4gY29tbXVuaXR5IHRvIGhl bHAgdXMgd2l0aCB0aGlzIGludGVncmF0aW9uLiBTcGVjaWZpY2FsbHksIHdlIGFyZSBpbnRlcmVz dGVkIGluDQo+IGxlYXJuaW5nOg0KPiANCj4gKCopIElmIGFueW9uZSBoYXMgcHJldmlvdXNseSBh dHRlbXB0ZWQgdG8gbWFwIHJ0ZV9mbG93IHRvIFA0LWJhc2VkIGRldmljZXMuDQoNCldlIGRpZCB0 cnkgc3VjY2Vzc2Z1bGx5Lg0KDQo+ICgqKSBUaG91Z2h0cyBvbiBob3cgdG8gbWFwIGZyb20gdGFi bGUtYmFzZWQgbWF0Y2hpbmcgdG8gcHJvdG9jb2wtYmFzZWQNCj4gbWF0Y2hpbmcgbGlrZSBpbiBy dGVfZmxvdy4NCg0KUnRlX2Zsb3cgaXMgdGFibGUgYmFzZWQgKGdyb3VwcyksIG5vdyB3aXRoIHRo ZSBpbnRyb2R1Y3Rpb24gb2YgdGVtcGxhdGUgQVBJIA0KcnRlX2Zsb3cgaXMgZXZlbiBtb3JlIHRh YmxlIGJhc2VkICh3ZSBhZGRlZCB0aGUgY29uY2VwdCBvZiB0YWJsZXMpIHdoaWNoIGFyZSBqdXN0 IHdoYXQNCnA0IHJlcXVpcmVzLg0KDQo+ICgqKSBBbnkgaWRlYXMgb24gaG93IHRvIGV4dGVuZCBv ciBleHBhbmQgdGhlIHJ0ZV9mbG93IEFQSXMgdG8gYmV0dGVyDQo+IGFjY29tbW9kYXRlIFA0LWJh c2VkIG9yIG90aGVyIHRhYmxlLW1hdGNoaW5nIGJhc2VkIGRldmljZXMuDQo+IA0KDQpMZXRzIGRp c2N1c3MgYW55IGlzc3VlIHlvdSBoYXZlLg0KDQo+IFlvdXIgaW5zaWdodHMgYW5kIGZlZWRiYWNr IHdvdWxkIGJlIGdyZWF0bHkgYXBwcmVjaWF0ZWQhDQo+IA0KPiA9PT09PT09PT09PT09PT09PT09 PT09PSBQb3N0LVNjcmlwdCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IA0KPiBNb3Jl IGRldGFpbHMgb24gdGhlIHByb2JsZW0gYmVsb3csIGZvciBhbnlvbmUgaW50ZXJlc3RlZA0KPiAN Cj4gSW4gUDQsIGZsb3cgb2ZmbG9hZGluZyBjYW4gYmUgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIFA0 UnVudGltZSBBUEksIHdoaWNoDQo+IHByb3ZpZGVzIGEgc3RhbmRhcmQgaW50ZXJmYWNlIGZvciBj b250cm9sbGluZyBhbmQgY29uZmlndXJpbmcgdGhlIGRhdGEgcGxhbmUNCj4gYmVoYXZpb3Igb2Yg bmV0d29yayBkZXZpY2VzLiBQNFJ1bnRpbWUgYWxsb3dzIG5ldHdvcmsgb3BlcmF0b3JzIHRvDQo+ IGR5bmFtaWNhbGx5IGFkZCwgbW9kaWZ5LCBhbmQgcmVtb3ZlIGZsb3cgcnVsZXMgaW4gdGhlIGhh cmR3YXJlIGZvcndhcmRpbmcNCj4gdGFibGVzIG9mIFA0LWVuYWJsZWQgZGV2aWNlcy4NCj4gDQo+ IFRoZSBQNFJ1bnRpbWUgQVBJIGlzIGEgdGFibGUtYmFzZWQgQVBJLCBpdCBhc3N1bWUgdGhlIHBh Y2tldCBwcm9jZXNzIHBpcGVsaW5lDQo+IHdhcyBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBrZXkv YWN0aW9uIHVuaXRzICh0YWJsZXMpLiBJbiBQNFJ1bnRpbWUsIGVhY2gNCj4gdGFibGUgZGVmaW5l cyB0aGUgZmllbGRzIHRvIGJlIG1hdGNoZWQgYW5kIHRoZSBhY3Rpb25zIHRvIGJlIHRha2VuIG9u DQo+IGluY29taW5nIHBhY2tldHMuIER1cmluZyBjb21waWxhdGlvbiwgdGhlIFA0IGNvbXBpbGVy IGFzc2lnbnMgYSB1bmlxdWUNCj4gdWludDMyIElEIHRvIGVhY2ggdGFibGUsIGFjdGlvbiwgYW5k IGZpZWxkLCB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggaXRzDQo+IGNvcnJlc3BvbmRpbmcgc3Ry aW5nIG5hbWUuIFRoZXNlIElEcyBoYXZlIG5vIGluaGVyZW50IHJlbGF0aW9uc2hpcCB0byBhbnkN Cj4gbmV0d29yayBwcm90b2NvbCBidXQgaW5zdGVhZCBzZXJ2ZSBhcyBhIG1lYW5zIHRvIGlkZW50 aWZ5IGRpZmZlcmVudA0KPiBjb21wb25lbnRzIG9mIGEgUDQgcHJvZ3JhbSB3aXRoaW4gdGhlIFA0 UnVudGltZSBBUEkuDQo+IA0KVGhpcyBpcyB0aGUgY29uY2VwdCBvZiB0YWJsZXMgYW5kIGdyb3Vw cyBpbiBydGVfZmxvdy4NCg0KPiBJZiB3ZSBjaG9vc2UgdG8gdXNlIHJ0ZV9mbG93IGFzIHRoZSBs b3ctbGV2ZWwgQVBJIGZvciBQNFJ1bnRpbWUsIGEgdHJhbnNsYXRpb24NCj4gbGF5ZXIgaXMgbmVl ZGVkIGluIHRoZSBhcHBsaWNhdGlvbiB0byBtYXAgdGhlIFA0IHRhYmxlcyBhbmQgYWN0aW9ucyB0 byB0aGUNCj4gY29ycmVzcG9uZGluZyBydGVfZmxvdyBydWxlcy4gSG93ZXZlciwgdGhpcyB0cmFu c2xhdGlvbiBsYXllciBjYW4gYmUNCj4gcHJvYmxlbWF0aWMgYXMgaXQgaXMgbm90IGVhc2lseSBz Y2FsYWJsZS4gV2hlbiB0aGUgUDQgcGlwZWxpbmUgaXMgcmVmaW5lZCBvcg0KPiB1cGRhdGVkLCB0 aGUgdHJhbnNsYXRpb24gcnVsZXMgbWF5IGFsc28gbmVlZCB0byBiZSB1cGRhdGVkLCB3aGljaCBj YW4gcmVzdWx0DQo+IGluIGVycm9ycyBhbmQgcmVkdWNlZCBlZmZpY2llbmN5Lg0KPiANCkkgZG9u J3QgdW5kZXJzdGFuZCB3aHkuDQoNCj4gT24gdGhlIG90aGVyIGhhbmQsIGEgaGFyZHdhcmUgdmVu ZG9yIHRoYXQgcHJvdmlkZXMgYSBQNC1lbmFibGVkIGRldmljZSBpcw0KPiByZXF1aXJlZCB0byBp bXBsZW1lbnQgYW4gcnRlX2Zsb3cgaW50ZXJmYWNlIGluIHRoZWlyIERQREsgUE1ELiBUeXBpY2Fs bHksIHRoZQ0KPiBQNCBjb21waWxlciBnZW5lcmF0ZXMgaGludHMgZm9yIHRoZSBkcml2ZXIgb24g aG93IHRvIG1hcCBQNCB0YWJsZXMgdG8NCj4gaGFyZHdhcmUgcmVzb3VyY2VzLCBhbmQgaG93IHRv IGNvbnZlcnQgdGFibGUgZW50cnkgYWRkL21vZGlmeS9kZWxldGUNCj4gYWN0aW9ucyBpbnRvIGxv dy1sZXZlbCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucy4gSG93ZXZlciwgYmVjYXVzZSBydGVfZmxv dyBpcw0KPiBwcm90b2NvbC1iYXNlZCwgaXQgcG9zZXMgYW4gYWRkaXRpb25hbCBjaGFsbGVuZ2Ug Zm9yIGRyaXZlciBkZXZlbG9wZXJzLCB3aG8NCj4gbXVzdCBjcmVhdGUgYW5vdGhlciB0cmFuc2xh dGlvbiBsYXllciB0byBjb252ZXJ0IHJ0ZV9mbG93IHRva2VucyBpbnRvIFA0DQo+IG9iamVjdCBp ZGVudGlmaWVycy4gVGhpcyB0cmFuc2xhdGlvbiBsYXllciBtdXN0IGJlIGNhcmVmdWxseSBkZXNp Z25lZCBhbmQNCj4gaW1wbGVtZW50ZWQgdG8gZW5zdXJlIG9wdGltYWwgcGVyZm9ybWFuY2UgYW5k IHNjYWxhYmlsaXR5LCBhbmQgdG8gZW5zdXJlDQo+IHRoYXQgdGhlIGRyaXZlciBjYW4gZWZmaWNp ZW50bHkgaGFuZGxlIHRoZSBkeW5hbWljIG5hdHVyZSBvZiBQNCBwcm9ncmFtcy4NCj4gDQpSaWdo dCwgYnV0IHNvbWUgb2YgdGhlIHRyYW5zbGF0aW9uIGNhbiBiZSBkb25lIGluIHNoYXJlZCBjb2Rl IGJ5IGFsbCBQTURzDQphbmQgdGhlIHRyYW5zbGF0aW9uIGlzIHN0YXRpYyBmb3IgdGhlIGNvbXBp bGF0aW9uIHNvIGluc2VydGluZyBydWxlcyBjYW4gYmUgc3VwcGVyIGZhc3QNCndpdGggbm8gbmVl ZCBmb3IgZXh0cmEgd29yay4NCg0KPiBUbyBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgcHJvYmxlbSwg bGV0J3MgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlIHRoYXQNCj4gZGVtb25zdHJhdGVz IGhvdyB0byB1c2UgdGhlIFA0UnVudGltZSBBUEkgdG8gcHJvZ3JhbSBhIHJ1bGUgZm9yIHByb2Nl c3NpbmcNCj4gYSBWWExBTiBwYWNrZXQuIFRoZSBydWxlIG1hdGNoZXMgYSBWWExBTiBwYWNrZXQs IGRlY2Fwc3VsYXRlcyB0aGUgdHVubmVsDQo+IGhlYWRlciwgYW5kIGZvcndhcmRzIGl0IHRvIGEg c3BlY2lmaWMgcG9ydC4NCj4gDQo+IFRoZSBQNCBzb3VyY2UgY29kZSBiZWxvdyBkZXNjcmliZXMg dGhlIFZYTEFOIGRlY2FwIHRhYmxlDQo+IGRlY2FwX3Z4bGFuX3RjcF90YWJsZSwgd2hpY2ggbWF0 Y2hlcyB0aGUgb3V0ZXIgSVAgYWRkcmVzcywgVk5JLCBpbm5lciBJUA0KPiBhZGRyZXNzLCBhbmQg aW5uZXIgVENQIHBvcnQuIEZvciBlYWNoIHJ1bGUsIGZvdXIgYWN0aW9uIHNwZWNpZmljYXRpb25z IGNhbiBiZQ0KPiBzZWxlY3RlZC4gV2Ugd2lsbCBmb2N1cyBvbiBvbmUgYWN0aW9uIHNwZWNpZmlj YXRpb24gZGVjYXBfdnhsYW5fZndkIHRoYXQNCj4gcGVyZm9ybXMgZGVjYXBzdWxhdGlvbiBhbmQg Zm9yd2FyZHMgdGhlIHBhY2tldCB0byBhIHNwZWNpZmljIHBvcnQuDQo+IA0KPiB0YWJsZSBkZWNh cF92eGxhbl90Y3BfdGFibGUgew0KPiDCoMKgwqAga2V5ID0gew0KPiDCoMKgwqDCoMKgwqDCoCBo ZHJzLmlwdjRbbWV0YS5kZXB0aC0xXS5zcmNfaXA6IGV4YWN0IEBuYW1lKCJ0dW5faXBfc3JjIik7 DQo+IMKgwqDCoMKgwqDCoMKgIGhkcnMuaXB2NFttZXRhLmRlcHRoLTFdLmRzdF9pcDogZXhhY3Qg QG5hbWUoInR1bl9pcF9kc3QiKTsNCj4gwqDCoMKgwqDCoMKgwqAgaGRycy52eGxhblttZXRhLmRl cHRoLTFdLnZuacKgIDogZXhhY3QgQG5hbWUoInZuaSIpOw0KPiDCoMKgwqDCoMKgwqDCoCBoZHJz LmlwdjRbbWV0YS5kZXB0aF0uc3JjX2lwwqAgOiBleGFjdCBAbmFtZSgiaXB2NF9zcmMiKTsNCj4g wqDCoMKgwqDCoMKgwqAgaGRycy5pcHY0W21ldGEuZGVwdGhdLmRzdF9pcMKgIDogZXhhY3QgQG5h bWUoImlwdjRfZHN0Iik7DQo+IMKgwqDCoMKgwqDCoMKgIGhkcnMudGNwLnNwb3J0wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogZXhhY3QgQG5hbWUoInNyY19wb3J0Iik7DQo+IMKgwqDC oMKgwqDCoMKgIGhkcnMudGNwLmRwb3J0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDog ZXhhY3QgQG5hbWUoImRzdF9wb3J0Iik7DQo+IMKgwqDCoCB9DQo+IMKgwqDCoCBhY3Rpb25zID0g ew0KPiDCoMKgwqDCoMKgwqDCoCBAdGFibGVvbmx5IGRlY2FwX3Z4bGFuX2Z3ZDsNCj4gwqDCoMKg wqDCoMKgwqAgQHRhYmxlb25seSBkZWNhcF92eGxhbl9kbmF0X2Z3ZDsNCj4gwqDCoMKgwqDCoMKg wqAgQHRhYmxlb25seSBkZWNhcF92eGxhbl9zbmF0X2Z3ZDsNCj4gwqDCoMKgwqDCoMKgwqAgQGRl ZmF1bHRvbmx5IHNldF9leGNlcHRpb247DQo+IMKgwqDCoCB9DQo+IH0NClRyYW5zbGF0ZSB0byBy dGVfZmxvdzoNCnRlbXBsYXRlIHBhdHRlcm4gcmVsYXhlZF9tb2RlID0gMSBwYXR0ZXJuID0gIElw djRfc3JjIC8gaXB2NF9kc3QgIC8gdm5pIC8gaXB2NF9zcmMgLyBpcHY0X2RzdCAvIHRjcF9zcG9y dCAvIHRjcF9kcG9ydCAgDQptYXAgc3RydWN0dXJlID0gew0KCXR1bl9pcF9zcmMgPSAmcGF0dGVy bltpcHY0X3NyY10NCgkuLi4uDQp9DQo+IC4uLg0KPiANCj4gYWN0aW9uIGRlY2FwX3Z4bGFuX2Z3 ZChQb3J0SWRfdCBwb3J0X2lkKSB7DQo+IMKgwqDCoCBtZXRhLm1vZF9hY3Rpb24gPSAoYml0PDEx PilWWExBTl9ERUNBUF9PVVRFUl9JUFY0Ow0KPiDCoMKgwqAgc2VuZF90b19wb3J0KHBvcnRfaWQp Ow0KPiB9DQo+IA0KU2FtZSBhcyBhYm92ZSBqdXN0IHdpdGggYWN0aW9uIHRlbXBsYXRlDQoNCj4g QmVsb3cgaXMgYW4gZXhhbXBsZSBvZiB0aGUgaGludCB0aGF0IHRoZSBjb21waWxlciB3aWxsIGdl bmVyYXRlIGZvciB0aGUNCj4gZGVjYXBfdnhsYW5fdGNwX3RhYmxlOg0KPiANCj4gVGFibGUgSUQ6 wqDCoMKgwqDCoCA4NDU0MTQ0DQo+IE5hbWU6wqDCoMKgwqDCoMKgwqDCoMKgIGRlY2FwX3Z4bGFu X3RjcF90YWJsZQ0KPiBGaWVsZCBJRMKgwqDCoMKgwqDCoCBOYW1lwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTWF0Y2ggVHlwZcKgwqDCoMKgIEJpdCBX aWR0aMKgwqDCoMKgwqAgQnl0ZQ0KPiBXaWR0aMKgwqDCoMKgIEJ5dGUgT3JkZXINCj4gMcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR1bl9pcF9zcmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBleGFjdMKgwqDCoMKgwqDCoMKgwqDCoCAzMsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCA0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0d29yaw0KPiAywqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdHVuX2lwX2RzdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDMywqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3b3JrDQo+IDPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB2bmnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGV4YWN0wqDCoCDCoMKgwqDCoMKgwqDCoDI0wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3b3JrDQo+IDTCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpcHY0X3NyY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBleGFjdMKgwqDCoMKgwqDCoMKgwqDCoCAzMsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCA0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0d29yaw0KPiA1wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaXB2NF9kc3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZXhhY3TCoMKgwqDCoMKgwqDCoMKgwqAgMzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgNMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ldHdvcmsNCj4gNsKgwqDCoMKgIMKgwqDC oMKgwqDCoMKgwqDCoHNyY19wb3J0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDE2wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3b3JrDQo+IDfCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBkc3RfcG9ydMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBleGFjdMKgwqDCoMKgwqDCoMKgwqDCoCAxNsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAy wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0d29yaw0KPiBTcGVjIElEwqDCoMKgwqDCoMKg wqAgTmFtZQ0KPiA4NTE5NzE2wqDCoMKgwqDCoMKgIMKgZGVjYXBfdnhsYW5fZndkDQo+IDg1MTk3 MTjCoMKgwqDCoMKgwqDCoCBkZWNhcF92eGxhbl9kbmF0X2Z3ZA0KPiA4NTE5NzIwwqDCoMKgwqDC oMKgwqAgZGVjYXBfdnhsYW5fc25hdF9md2QNCj4gODUxOTY5NcKgwqDCoMKgwqDCoMKgIHNldF9l eGNlcHRpb24NCj4gDQo+IEFuZCB0aGUgaGludCBvZiBhY3Rpb24gc3BlYyAiZGVjYXBfdnhsYW5f ZndkIiBhcyBiZWxvdzoNCj4gDQo+IFNwZWMgSUQ6wqDCoMKgwqDCoMKgIDg1MTk3MTYNCj4gTmFt ZTrCoMKgwqDCoMKgwqDCoMKgwqAgZGVjYXBfdnhsYW5fZndkDQo+IEZpZWxkIElEwqDCoMKgwqDC oMKgIE5hbWXCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBCaXQgV2lkdGjCoMKgwqDCoMKgIEJ5dGUgV2lkdGjCoMKgwqDCoCBCeXRlIE9yZGVyDQo+IDHC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3J0X2lkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgNMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGhvc3QNCj4gDQo+IFBsZWFzZSBub3RlIHRoYXQgZGlmZmVyZW50 IGNvbXBpbGVycyBtYXkgYXNzaWduIGRpZmZlcmVudCBJRHMuDQo+IA0KPiBCZWxvdyBpcyBhbiBl eGFtcGxlIG9mIGhvdyB0byBwcm9ncmFtIGEgcnVsZSB1c2luZyB0aGUgUDQgcnVudGltZSBBUEkg aW4NCj4gSlNPTiBmb3JtYXQuIFRoaXMgcnVsZSBtYXRjaGVzIGZpZWxkcyBhbmQgZGlyZWN0cyBw YWNrZXRzIHRvIHBvcnQgNS4NCj4gDQo+IHsNCj4gwqDCoMKgICJ0eXBlIjogMSzCoCAvL0lOU0VS VA0KPiDCoMKgwqAgImVudGl0eSI6IHsNCj4gwqDCoMKgwqDCoMKgwqAgInRhYmxlX2VudHJ5Ijog ew0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ0YWJsZV9pZCI6IDg0NTQxNDQsDQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgIm1hdGNoIjogWw0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgeyAiZmllbGRfaWQiOiAxLCAiZXhhY3QiOiB7ICJ2YWx1ZSI6IFsxMCwgMCwgMCwgMV0g fSB9LMKgwqAgLy8gb3V0ZXIgc3JjIElQID0NCj4gMTAuMC4wLjENCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHsgImZpZWxkX2lkIjogMiwgImV4YWN0IjogeyAidmFsdWUiOiBbMTAs IDAsIDAsIDJdIH0gfSzCoCAvLyBvdXRlciBkc3QgSVAgPQ0KPiAxMC4wLjAuMg0KPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAiZmllbGRfaWQiOiAzLCAiZXhhY3QiOiB7ICJ2YWx1 ZSI6IFswLCAwLCAxMF0gfSB9LMKgIC8vwqAgdm5pID0gMTAsDQo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB7ICJmaWVsZF9pZCI6IDQsICJleGFjdCI6IHsgInZhbHVlIjogWzE5Miwg MCwgMCwgMV0gfSB9LCAvLyBpbm5lciBzcmMgSVAgPQ0KPiAxOTIuMC4wLjENCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsiZmllbGRfaWQiOiA1LCAiZXhhY3QiOiB7ICJ2YWx1ZSI6 IFsxOTIsIDAsIDAsIDJdIH0gfSwgLy8gaW5uZXIgZHN0IElQID0NCj4gMTkyLjAuMC4yDQo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqB7ImZpZWxkX2lkIjogNiwgImV4YWN0IjogeyAi dmFsdWUiOiBbMCwgMjAwXSB9IH0sIC8vIHRjcCBzcmMgcG9ydCA9IDIwMA0KPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgeyJmaWVsZF9pZCI6IDcsICJleGFjdCI6IHsgInZhbHVlIjog WzAsIDIwMV0gfSB9LCAvLyB0Y3AgZHN0IHBvcnQgPSAyMDENCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBdLA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJhY3Rpb24iOiB7DQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYWN0aW9uIjogew0KPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAiYWN0aW9uX2lkIjogODUxOTcxNiwNCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgInBhcmFtcyI6IFsNCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7ICJwYXJhbV9pZCI6IDEsICJ2YWx1ZSI6 IFs1LCAwLCAwLCAwXSB9DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IF0NCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB9LA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC4uLg0KPiDCoMKgwqDCoMKgwqDC oCB9DQo+IMKgwqDCoCB9wqDCoMKgIC4uLg0KPiB9DQo+IA0KPiBQbGVhc2Ugbm90ZSB0aGF0IHRo aXMgaXMgb25seSBhIHBhcnQgb2YgdGhlIGZ1bGwgY29tbWFuZC4gRm9yIG1vcmUNCj4gaW5mb3Jt YXRpb24sIHBsZWFzZSByZWZlciB0byB0aGUgcDRydW50aW1lLnByb3RvWzJdDQo+IA0KPiAxLiBo dHRwczovL3A0Lm9yZy9wNC1zcGVjL3A0cnVudGltZS9tYWluL1A0UnVudGltZS1TcGVjLmh0bWwN Cj4gMi4NCj4gaHR0cHM6Ly9naXRodWIuY29tL3A0bGFuZy9wNHJ1bnRpbWUvYmxvYi9tYWluL3By b3RvL3A0L3YxL3A0cnVudGltZS5wcg0KPiBvdG8NCj4gDQo+IFRoYW5rIHlvdSBmb3IgeW91ciBh dHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuDQo+IA0KDQpJIHRoaW5rIHRoYXQgd2Ugc2hvdWxkIHNj aGVkdWxlIHNvbWUgbWVldGluZyB0byBzZWUNCmhvdyBtdWNoIGdhcHMgd2UgcmVhbGx5IGhhdmUg YmV0d2VlbiB0aGUgcnRlX2Zsb3cgYW5kIA0KUDQgYW5kIGhvdyB3ZSBjYW4gaW1wcm92ZSB0aGUg cnRlX2Zsb3cgdG8gYWxsb3cgdGhlIGJlc3QNCmV4cGVyaWVuY2UuIA0KDQo+IFJlZ2FyZHMNCj4g UWkNCg==