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 7E0AC42B6B; Mon, 22 May 2023 06:58:24 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 536C2410DD; Mon, 22 May 2023 06:58:24 +0200 (CEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id 8B661410D1; Mon, 22 May 2023 06:58: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=1684731502; x=1716267502; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=or6XveSTPmruIT5Dtba9IUtB8QKmNdYl4YT6XCg4lAs=; b=ZPMO6OqYQORreQm1a79UVvodwpOHcBywt0QXJRKL7rLfZ7syHMg+FSVo rn7Clo8j5+FtUrI26LVo4UJxK9KlZCT4tltb5NSHC8bmamIf0a2Dhsfp1 uV3Ou9js6rXJ7S5VPcOR/lFDBVvoJ0BBq3bGQFcZB4Tq7bQWD4tUydac7 F+LfqGGReQIu/QaFyPnpoy0eU5CdtqlYsbExFyWMNPUiArAhbPT+t0F4y xgOqdaU2mfcs6mgqjllyAjf/u8k2ajLENi6FxW9nk4DP7PVOuhYSdi2Ag zk4COsAqsYleUzJb30qq/4JXSdVu6FGOG/JL4asoaPPZwwvCHhI8SvV0V Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10717"; a="416288215" X-IronPort-AV: E=Sophos;i="6.00,183,1681196400"; d="scan'208";a="416288215" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 May 2023 21:58:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10717"; a="815519038" X-IronPort-AV: E=Sophos;i="6.00,183,1681196400"; d="scan'208";a="815519038" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga002.fm.intel.com with ESMTP; 21 May 2023 21:58:21 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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.23; Sun, 21 May 2023 21:58:20 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Sun, 21 May 2023 21:58:20 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.168) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Sun, 21 May 2023 21:58:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Tv/fRroCWQ5obVkOVB6G57LROrqtBAKUfQtSCakDXZt77Lq5/tTgltDOHBTLFDF+TGN9FgvXugSxNqFzh8IxfxsjYf9Pd7lfpSowwLOJKcJgsSU7iz/hXlN0nxyNUkI5zfxbUb9Rk27dvGAADYofY4IKf2IBqVMaEZ2ZoObp2MlUpUK15nqLWWf7spXMgXEutLqrFHkT44NkQ4pFbvDMp9lMb884ilzkd9pwN9x9IwMBlkK8XvI5KPtDyxWPEvbAsJ8TM5wioBqmXemenrZlCrbWhMJsDgapImBhHxSdHE99H44f6gZ0CgnlXkoFiiiSMjAwWZ9WzIwE2QErZ49xLg== 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=or6XveSTPmruIT5Dtba9IUtB8QKmNdYl4YT6XCg4lAs=; b=XAcDktL50wmMb4txZliztgbR3SrssDxiCVSKQLw01SvEIxxzXFFxYgp7pgnqMR5sqrde2sGTNGPu84Dn+/QGlVhdwg3BJJ543HsMZ8gVanck4eqlW/Hea8n3kVLjotaKbBaUxot6TIv++VapFto+Wu8p+pJZ8vJMIz0C4mKPZ0MgLM1uKLp1EZZgugPhIDnc77LTFMEbr28khRmyNyzLDQCL0vEOujHPzBT9jrqoJUJoiptKnmfqC440J3zrRpSWavQbXoAVA3sYRjbP1z1/tYIeKBMhUCacVaxei0ZdOlgyKfIHnak99XJUH5aI29xzGV4m/lS46ASWLnKqsiYezw== 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 CH3PR11MB8444.namprd11.prod.outlook.com (2603:10b6:610:1ba::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Mon, 22 May 2023 04:58:17 +0000 Received: from DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::e570:d9a7:df1b:1589]) by DM4PR11MB5994.namprd11.prod.outlook.com ([fe80::e570:d9a7:df1b:1589%7]) with mapi id 15.20.6411.028; Mon, 22 May 2023 04:58:17 +0000 From: "Zhang, Qi Z" To: Honnappa Nagarahalli , Ori Kam , "dev@dpdk.org" CC: "techboard@dpdk.org" , "Richardson, Bruce" , "Burakov, Anatoly" , "Wiles, Keith" , "Liang, Cunming" , "Wu, Jingjing" , "Zhang, Helin" , "Mcnamara, John" , "Xu, Rosen" , nd , nd 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/N9jo8SXuEnV2EuOZZewHVxP7QACYE/+AADB9l8ACxrj6A Date: Mon, 22 May 2023 04:58:17 +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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR11MB5994:EE_|CH3PR11MB8444:EE_ x-ms-office365-filtering-correlation-id: 8277c66d-ca51-4c71-5f69-08db5a81282b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PnNkfpQQN9h4xTykI8osjV2yO/m2h1iqbYvpO8dI260qmlhU8yWoSc08YU3Y/Sge6XDIVvCg1lf6LfLG62wn14h/m8y5+Nu+u0n7hsUPskMTA+L6EmF+qEqxgg/4IJtui5C2COpjnfvtlHHP4dXmoI8jStPgs2bJyaj+tiN2aa7FPA1yX9AyVm4o+vyVVo2av5wevGklOzCoCEE8BbxXnib6hjbIscTZMj1k9ymvyAaG5m8fY2yDwYBLOKaW+3dvepSNeMtHf2FzY73J0YcZVJaVQwO/FERGeXArOsdm2GrU+5vU9WeJWXq64qg4wZMOcFAf4ULdLWGjPDxLPc2WKzPgm7lpM0Fn3cqtXnfsl3lEJdPr9bP6nAi/6y3DqdZ3O1pqt6/z3ov5Nx0VrbqVK2vS2eyofGgtZyTk24K1TXU3Lieft9yCauEnjh3112PUl2FrRDv7P4rEwAsq5mK7TKHNMkPnQ2MJOgxqvNex3HH4lNiSKUgbFUp24x7wKdm8ZP230OtVeVOtb/4e1hUw0Fo95gN84Fi+MUWw+99h/SdcdGyToPrGk1K/kD1/PuFo+hpJceRaCGuMld2GfWoEqzeUVjQegU5f3sDblMogSn1PDLA2GtCBIZ2b4YR71ygl 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:(13230028)(366004)(396003)(39860400002)(136003)(346002)(376002)(451199021)(8676002)(8936002)(5660300002)(52536014)(83380400001)(186003)(26005)(53546011)(9686003)(6506007)(86362001)(122000001)(38100700002)(82960400001)(38070700005)(41300700001)(7696005)(33656002)(71200400001)(55016003)(966005)(66446008)(66476007)(66556008)(66946007)(76116006)(64756008)(316002)(4326008)(478600001)(110136005)(54906003)(2906002)(30864003)(66899021)(32563001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Sk9SMElaTENaSzY2VkJWd2hVdTlDeEQ1aGhlTUw2V09oQmZNTW5RMlVEaDJ0?= =?utf-8?B?VHlsNDJyejhqRkt0U2NTVjFJRmFYZ0FuVmg1Z0hDNHVqK1JGbVowSytjRnd0?= =?utf-8?B?Zk1IU0kwODhpckNQeFNaejN6Z0FYQ3E2S1hIR25oZWoxbXVGVUpWeFVVTlEy?= =?utf-8?B?Y0ZSZjkwK0hBemQwTXl5MjN1a2I3WHhWV2JPYkl6N05ubllXTUlLVEhlU2R5?= =?utf-8?B?T3k1TzNFMUw4S0pKaURoYXBUaUtNSlNjN2JQSVRGYjFoYlgxa2YreU9EdzJu?= =?utf-8?B?M3VrYmVqTUU3WnV1a2ZjV3pxc3JteXZBaHdkUUMwY1VtNm92MXZtUFdDcmtS?= =?utf-8?B?ZG04eTJRU3RPK0R6bElCZE9JczA0aENyZmtxOGdnQ0xMWGZsYktjNTQrSkg4?= =?utf-8?B?bEpCai9uME40eXVxcXJLU0M1dzh0MGdtUHJzbGFpdHZvV093YWRCWHQzZGsr?= =?utf-8?B?QjFFNU15YjRlMnlBazZ1VlZVYlFGd3dmLzZRdmtQVWpHM3V4MDBHdURpYmVo?= =?utf-8?B?K01XdHZXd0YwRHRJcU92YmFkZDB4eXJOd3FrMFVtUGRUbU5ZZEJsd2tIVE1l?= =?utf-8?B?aVlpOW40VDVOWDRkd3g4cGFRQXNEYlQvM1NYazRHaGdJNzVNNnJZY2tuc0ZL?= =?utf-8?B?UC9pK3F3WmJvZ3BsQ2JHbmpMMDJwNHFMY2xIVVRtdjFIak5wS290eUFRWVRm?= =?utf-8?B?a2ZjNDZGYno0MXlJR0pYNUVEOGNTeTBkdFp6VTVnTzd1aGVxWTRPOWdKTkVW?= =?utf-8?B?enZ4eC9LMGlsSTVORFdxZ1ZxbG5lWGEwNk1ZL2Ivc01qZWRQMnZXV09NQkVv?= =?utf-8?B?T3c3Tk5GbHhGR3N4M2x2YzlEcnZvVVJyRzJYcVdkTWE0UENYYW1CNGtZWUo2?= =?utf-8?B?cVVYNThTTFpkcnU3djA4NlMwZXZuTEdEQWlNK0FkUHlWOTFRdnB5cWJpdEhT?= =?utf-8?B?eVJsVW9XVVRoYnlLWmlUUjNoaG5lR2x6YjZOVWpta29iaDQ5RC9BSVV5RWJt?= =?utf-8?B?RldmR3ZIWG9LckFjaUhIVG9TYnhrUWFSenlsWmhkMUZJVENveXU2N3Q1N3VQ?= =?utf-8?B?VzNnaVFpNlg0QjZ3anFvNmVmWmIwRWx6cXNVcmVZRWUxcEcwZFkxakc3SUxl?= =?utf-8?B?ZXdrS1JCSGhIQUhsQTgra3hBWUtzTGs0ekY3ZEY0dzIvNjMzSFhic1Y0VkYz?= =?utf-8?B?MDB5a25kb2tiYXkweE5tTHdNNjBxYWNiUm1QYnNoWlk1TUZxeFBlc09VNjc4?= =?utf-8?B?dktHZzUxNzM3eU9pOGFOMUI1bVhvUk1YWEsyRW9oV1h5c1Q2eWxuUkRUMmIz?= =?utf-8?B?UjFuOXBjMG44NGxqU0gxNHlwOE5jblZPVEVwcEVFVzJJTUZBaGhma0poUEox?= =?utf-8?B?VVQySVByN1lLUjFubnhGcU1CUWpyYUFvaUhZaGxxYlRnWThrSXYybUFmL3FB?= =?utf-8?B?UDB1UHJrZ0FVckxrK1lLMkJvS2ZBK2FZQzc0VElZV254ekUwdS9nK20rRWZu?= =?utf-8?B?RTlMVG8vOHJuYVlMdllpWUM4VWgyTWdXZm9BTWNYQ1czN0kvOUIzczgxZVp5?= =?utf-8?B?SEFLRmlidmRTandQQmxjZFErRlluTFYyVjNtVlJGZkFiMnVLNHJsYzQrWE9E?= =?utf-8?B?cGNHMGRQY1U2MWtLZ2pNN1cwL1RLOHN3V1pXQVpPUGhGSzlpRS85RUdVNlZ0?= =?utf-8?B?ZzBLaWxkWVdaTDhtWG05NjQzQ2s0ZHNzSUtUSWlENEtySS9ZcVlFeWdVNVdi?= =?utf-8?B?cXBpMTVTNXpncGo0SDlrZ3A2Ync5ZEVPTlJTK2FXODI1d1k0L1VNMUQwcEQy?= =?utf-8?B?SnE1SHUxVy9UTjRtcHRzWXVLU2FCZzJZTVVGUmNxMDlDMWJFcE5hMVAvU05w?= =?utf-8?B?NHZvajdWQTRSUmhsKzZHWWZXU0NTU1J5eFVFVktIWlR1RGhubUlzSjl5RzFo?= =?utf-8?B?cndIWUpnYzRKdjh3bys4cGJDVzJyNUZiOS9HOVAwOWhMdVBqa2JkRDB4QXY5?= =?utf-8?B?VWp0TmtPV3lMazZxWTNCN2ZRUTBsbTlUMEJjbzdYWThLV3dEYkplTkJNK1FR?= =?utf-8?B?MmNIMy82VzdGVmdkYnFBV3gzSDJpcHV5NDd1bk5GVElpOWtVRUJXV0pDNm5n?= =?utf-8?Q?KTlvCShD28tVTRS8R6LQjguqd?= 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: 8277c66d-ca51-4c71-5f69-08db5a81282b X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2023 04:58:17.4069 (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: DjaRzufoiaHVPT0+8XrQipZsUVJr1tJMyBPdKP5GxRFMnlWhH89+GBi5jkgRYrzumC0ZNjAHiJy5C5SWze33aw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8444 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 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSG9ubmFwcGEgTmFnYXJh aGFsbGkgPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+DQo+IFNlbnQ6IFRodXJzZGF5LCBN YXkgMTgsIDIwMjMgMTA6NDYgUE0NCj4gVG86IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVs LmNvbT47IE9yaSBLYW0gPG9yaWthQG52aWRpYS5jb20+Ow0KPiBkZXZAZHBkay5vcmcNCj4gQ2M6 IHRlY2hib2FyZEBkcGRrLm9yZzsgUmljaGFyZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25A aW50ZWwuY29tPjsNCj4gQnVyYWtvdiwgQW5hdG9seSA8YW5hdG9seS5idXJha292QGludGVsLmNv bT47IFdpbGVzLCBLZWl0aA0KPiA8a2VpdGgud2lsZXNAaW50ZWwuY29tPjsgTGlhbmcsIEN1bm1p bmcgPGN1bm1pbmcubGlhbmdAaW50ZWwuY29tPjsgV3UsDQo+IEppbmdqaW5nIDxqaW5namluZy53 dUBpbnRlbC5jb20+OyBaaGFuZywgSGVsaW4gPGhlbGluLnpoYW5nQGludGVsLmNvbT47DQo+IE1j bmFtYXJhLCBKb2huIDxqb2huLm1jbmFtYXJhQGludGVsLmNvbT47IFh1LCBSb3Nlbg0KPiA8cm9z ZW4ueHVAaW50ZWwuY29tPjsgbmQgPG5kQGFybS5jb20+OyBuZCA8bmRAYXJtLmNvbT4NCj4gU3Vi amVjdDogUkU6IHNlZWtpbmcgY29tbXVuaXR5IGlucHV0IG9uIGFkYXB0aW5nIERQREsgdG8gUDRS dW50aW1lDQo+IGJhY2tlbmQNCj4gDQo+IDxzbmlwPg0KPiANCj4gPiA+DQo+ID4gPiBIaSBaaGFu ZywNCj4gPiA+DQo+ID4gPiBydGVfZmxvdyBpcyBhbiBleGNlbGxlbnQgY2FuZGlkYXRlIGZvciBp bXBsZW1lbnRpbmcgUDQuDQo+ID4gPiBXZSBhbmQgc29tZSBpbnRlcm5hbCB0ZXN0cyB0aGF0IHNo b3dzIGdyZWF0IHByb21pc2UgaW4gdGhpcyByZWdhcmQuDQo+ID4gPg0KPiA+ID4gSSB3b3VsZCBi ZSB2ZXJ5IGhhcHB5IHRvIHN1cHBseSBhbnkgbmVlZGVkIGluZm9ybWF0aW9uIGFuZCBoYXZlDQo+ ID4gPiBkaXNjdXNzaW9uIG9uIGhvdyB0byBjb250aW51ZSB3aXRoIHRoaXMgcHJvamVjdC4NCj4g Pg0KPiA+IFRoYW5rIHlvdSBPcmkhIFBsZWFzZSBjaGVjayBteSBmb2xsb3dpbmcgY29tbWVudHMN Cj4gPg0KPiA+IFJlZ2FyZHMNCj4gPiBRaQ0KPiA+DQo+ID4gPg0KPiA+ID4gUGxlYXNlIHNlZSBp bmxpbmUgZGV0YWlsZWQgYW5zd2Vycy4NCj4gPiA+DQo+ID4gPiBCZXN0LA0KPiA+ID4gT3JpIEth bQ0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogWmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29t Pg0KPiA+ID4gPiBTZW50OiBNb25kYXksIE1heSA4LCAyMDIzIDk6NDAgQU0NCj4gPiA+ID4gU3Vi amVjdDogc2Vla2luZyBjb21tdW5pdHkgaW5wdXQgb24gYWRhcHRpbmcgRFBESyB0byBQNFJ1bnRp bWUNCj4gPiA+IGJhY2tlbmQNCj4gPiA+ID4NCj4gPiA+ID4gSGk6DQo+ID4gPiA+DQo+ID4gPiA+ IE91ciB0ZWFtIGlzIGN1cnJlbnRseSB3b3JraW5nIG9uIGRldmVsb3BpbmcgYSBEUERLIFBNRCBm b3IgYSBQNC0NCj4gPiA+ID4gcHJvZ3JhbW1lZCBuZXR3b3JrIGNvbnRyb2xsZXIsIGJhc2VkIG9u IGN1c3RvbWVyIGZlZWRiYWNrIHRvDQo+ID4gPiA+IGludGVncmF0ZSBEUERLIGludG8gdGhlIFA0 UnVudGltZSBiYWNrZW5kIC5baHR0cHM6Ly9wNC5vcmcvcDQtDQo+ID4gPiA+IHNwZWMvcDRydW50 aW1lL21haW4vUDRSdW50aW1lLVNwZWMuaHRtbF0NCj4gPiA+ID4NCj4gPiA+ID4gKCopIEhvd2V2 ZXIsIHdlIGFyZSBmYWNpbmcgY2hhbGxlbmdlcyBpbiBhZGFwdGluZyBEUERLJ3MgcnRlX2Zsb3cN Cj4gPiA+ID4gQVBJIHRvIHRoZSBQNFJ1bnRpbWUgQVBJLCBwcmltYXJpbHkgZHVlIHRvIHRoZSB0 cmFuc2l0aW9uIGZyb20gYQ0KPiA+ID4gPiB0YWJsZS1iYXNlZCBBUEkgd2l0aCBmaWVsZHMgb2Yg YXJiaXRyYXJ5IGJpdHMgd2lkdGggYXQgYXJiaXRyYXJ5DQo+ID4gPiA+IG9mZnNldCB0byBhIHBy b3RvY29sLWJhc2VkIEFQSSAobW9yZSBkZXRhaWwgYmUgZGVzY3JpYmVkIGluIHBvc3Qtc2NyaXB0 KS4NCj4gPiA+ID4NCj4gPiA+ID4gV2UgYXJlIHNlZWtpbmcgc3VnZ2VzdGlvbnMgYW5kIGJlc3Qg cHJhY3RpY2VzIGZyb20gdGhlIG9wZW4tc291cmNlDQo+ID4gPiA+IGNvbW11bml0eSB0byBoZWxw IHVzIHdpdGggdGhpcyBpbnRlZ3JhdGlvbi4gU3BlY2lmaWNhbGx5LCB3ZSBhcmUNCj4gPiA+ID4g aW50ZXJlc3RlZCBpbg0KPiA+ID4gPiBsZWFybmluZzoNCj4gPiA+ID4NCj4gPiA+ID4gKCopIElm IGFueW9uZSBoYXMgcHJldmlvdXNseSBhdHRlbXB0ZWQgdG8gbWFwIHJ0ZV9mbG93IHRvIFA0LWJh c2VkDQo+ID4gPiBkZXZpY2VzLg0KPiA+ID4NCj4gPiA+IFdlIGRpZCB0cnkgc3VjY2Vzc2Z1bGx5 Lg0KPiA+ID4NCj4gPiA+ID4gKCopIFRob3VnaHRzIG9uIGhvdyB0byBtYXAgZnJvbSB0YWJsZS1i YXNlZCBtYXRjaGluZyB0bw0KPiA+ID4gPiBwcm90b2NvbC1iYXNlZCBtYXRjaGluZyBsaWtlIGlu IHJ0ZV9mbG93Lg0KPiA+ID4NCj4gPiA+IFJ0ZV9mbG93IGlzIHRhYmxlIGJhc2VkIChncm91cHMp LCBub3cgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mDQo+ID4gPiB0ZW1wbGF0ZSBBUEkgcnRlX2Zs b3cgaXMgZXZlbiBtb3JlIHRhYmxlIGJhc2VkICh3ZSBhZGRlZCB0aGUgY29uY2VwdA0KPiA+ID4g b2YgdGFibGVzKSB3aGljaCBhcmUganVzdCB3aGF0DQo+ID4gPiBwNCByZXF1aXJlcy4NCj4gPg0K PiA+IFllcywgdGhlIHJ0ZV9mbG93IHRlbXBsYXRlIGNhbiBiZSB1c2VkIHRvIG1hcCBhIHNlcXVl bmNlIG9mIHBhdHRlcm5zDQo+ID4gdG8gYSBQNCB0YWJsZSBhbmQgYSBzZXF1ZW5jZSBvZiBhY3Rp b25zIHRvIGEgUDQgYWN0aW9uLiBIb3dldmVyLCBVc2luZw0KPiA+IGEgZml4ZWQgcnRlX2Zsb3cg dGVtcGxhdGUgY2FuIGJlIHByb2JsZW1hdGljIHdoZW4gaGFuZGxpbmcgZGlmZmVyZW50DQo+ID4g UDQgcHJvZ3JhbXMgaW4gdGhlIHNhbWUgZHJpdmVyLiBUbyBwcm92aWRlIG1vcmUgZmxleGliaWxp dHksIHRoZQ0KPiA+IG1hcHBpbmcgb2YgcGF0dGVybnMgYW5kIGFjdGlvbnMgY2FuIGJlIGV4dGVy bmFsaXplZCBpbnRvIGENCj4gPiBjb25maWd1cmF0aW9uIGZpbGUgb3IgcGFydCBvZiB0aGUgZmly bXdhcmUgY2FuIGJlIGxlYXJuZWQgZnJvbSBkcml2ZXIsDQo+ID4gYWxsb3dpbmcgZm9yIGN1c3Rv bWl6YXRpb24gYmFzZWQgb24gdGhlIHNwZWNpZmljIHJlcXVpcmVtZW50cyBvZiBlYWNoDQo+ID4g UDQgcGlwZWxpbmUuIGFjdHVhbGx5IHdlIGhhdmUgZW5hYmxlZCB0aGlzIGFwcHJvYWNoIGluIG9y ZGVyIHRvDQo+IGFjY29tbW9kYXRlIGRpZmZlcmVudCBQNCBwcm9ncmFtcy4NCj4gPg0KPiA+IEhv d2V2ZXIsIGFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIHRvIGNvbnNpZGVyIGlzIHdoZXRoZXIgaXQg d291bGQgYmUNCj4gPiBmZWFzaWJsZSB0byBkaXJlY3RseSBleHBvc2UgdGhlIFA0IHRhYmxlIGFu ZCBhY3Rpb24gbmFtZXMgb3IgSURzIHRvDQo+ID4gdGhlIGFwcGxpY2F0aW9uLCByYXRoZXIgdGhh biByZWx5aW5nIG9uIHJ0ZV9mbG93IHRlbXBsYXRlcy4gVGhpcw0KPiA+IGFwcHJvYWNoIG9mZmVy cyBzZXZlcmFsIHBvdGVudGlhbA0KPiA+IGJlbmVmaXRzOg0KPiA+DQo+ID4gSW50ZWdyYXRpb24g d2l0aCBQNHJ1bnRpbWUgQmFja2VuZDogQnkgZXhwb3NpbmcgdGhlIFA0IHRhYmxlIGFuZA0KPiA+ IGFjdGlvbiBuYW1lcyBvciBJRHMgZGlyZWN0bHksIERQREsgY291bGQgYmUgZWFzaWx5IGludGVn cmF0ZWQgYXMgYQ0KPiA+IFA0cnVudGltZSBiYWNrZW5kLiBUaGlzIGVsaW1pbmF0ZXMgdGhlIG5l ZWQgZm9yIHRyYW5zbGF0aW9uIGZyb20gdGhlDQo+ID4gUDRydW50aW1lIEFQSSB0byBydGVfZmxv dyB0ZW1wbGF0ZXMgaW4gdGhlIGFwcGxpY2F0aW9uLCBzaW1wbGlmeWluZyB0aGUNCj4gaW50ZWdy YXRpb24gcHJvY2Vzcy4NCj4gPg0KPiA+IEVsaW1pbmF0aW9uIG9mIE1hbnVhbCBNYXBwaW5nOiBF eHBvc2luZyB0aGUgUDQgdGFibGUgYW5kIGFjdGlvbiBuYW1lcw0KPiA+IG9yIElEcyB0byB0aGUg YXBwbGljYXRpb24gd291bGQgcmVtb3ZlIHRoZSByZXF1aXJlbWVudCBmb3IgdGhlDQo+ID4gZW5n aW5lZXJpbmcgdGVhbSB0byBtYW51YWxseSBtYXAgZWFjaCBwaXBlbGluZSB0byBzcGVjaWZpYyBy dGVfZmxvdw0KPiA+IHRlbXBsYXRlcy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgYmVuZWZpY2lhbCBp biBjYXNlcyB3aGVyZSBoYXJkd2FyZQ0KPiA+IHZlbmRvcnMgcHJvdmlkZSBjdXN0b21lcnMgd2l0 aCBhIHRvb2xjaGFpbiB0byBjcmVhdGUgdGhlaXIgb3duIFA0DQo+ID4gcGlwZWxpbmVzIGJ1dCBk byBub3QgbmVjZXNzYXJpbHkgb3duIHRoZSBQNCBwcm9ncmFtcy4gQnkgZWxpbWluYXRpbmcNCj4g PiB0aGUgZGVwZW5kZW5jeSBvbiBydGVfZmxvdyB0ZW1wbGF0ZXMsIHRoaXMgYXBwcm9hY2ggcmVk dWNlcyBjb21wbGV4aXR5DQo+IGluIHVzaW5nIERQREsgYXMgdGhlIGRyaXZlci4NCj4gPg0KPiA+ IFRvIGJlIG1vcmUgc3BlY2lmaWMsIHRoZSBwcm9wb3NlZCBBUEkgZm9yIGV4cG9zaW5nIFA0IHRh YmxlIGFuZCBhY3Rpb24NCj4gPiBuYW1lcyBvciBJRHMgZGlyZWN0bHkgdG8gdGhlIGFwcGxpY2F0 aW9uIGNvdWxkIGJlIGFzIGZvbGxvd3M6DQo+ID4NCj4gPiAvKiBHZXQgdGhlIHRhYmxlIGluZm8g Ki8NCj4gPiBzdHJ1Y3QgcnRlX3A0X3RhYmxlX2luZm8gdGJsX2luZm87DQo+ID4gcnRlX3A0X3Rh YmxlX2luZm9fZ2V0X2J5X25hbWUocG9ydF9pZCwgImRlY2FwX3Z4bGFuX3RjcF90YWJsZSIsDQo+ ID4gJnRibF9pbmZvKTsNCj4gPg0KPiA+IC8qIENyZWF0ZSB0aGUga2V5ICovDQo+ID4gc3RydWN0 IHJ0ZV9wNF90YWJsZV9rZXkgKmtleTsNCj4gPiBydGVfcDRfdGFibGVfa2V5X2NyZWF0ZShwb3J0 X2lkLCB0YmxfaW5mby0+aWQsICZrZXkpOw0KPiA+DQo+ID4gLyogU2V0IHRoZSBrZXkgZmllbGRz ICovDQo+ID4gcnRlX3A0X3RhYmxlX2tleV9maWVsZF9zZXRfYnlfbmFtZShwb3J0X2lkLCBrZXks ICJ3aXJlX3BvcnQiLA0KPiA+ICZ3aXJlX3BvcnQsIDIpOyBydGVfcDRfdGFibGVfa2V5X2ZpZWxk X3NldF9ieV9uYW1lKHBvcnRfaWQsIGtleSwNCj4gPiAidHVuX2lwX3NyYyIsICZ0dW5faXBfc3Jj LCA0KTsNCj4gPiBydGVfcDRfdGFibGVfa2V5X2ZpZWxkX3NldF9ieV9uYW1lKHBvcnRfaWQsIGtl eSwgInR1bl9pcF9kc3QiLA0KPiA+ICZ0dW5faXBfZHN0LCA0KTsgcnRlX3A0X3RhYmxlX2tleV9m aWVsZF9zZXRfYnlfbmFtZShwb3J0X2lkLA0KPiA+IGtleSwgInZuaSIsICZ2bmksIDMpOyBydGVf cDRfdGFibGVfa2V5X2ZpZWxkX3NldF9ieV9uYW1lKHBvcnRfaWQsIGtleSwNCj4gPiAiaXB2NF9z cmMiLCAmaXB2NF9zcmMsIDQpOyBydGVfcDRfdGFibGVfa2V5X2ZpZWxkX3NldF9ieV9uYW1lKHBv cnRfaWQsDQo+ID4ga2V5LCAiaXB2NF9kc3QiLCAmaXB2NF9kc3QsIDQpOw0KPiA+IHJ0ZV9wNF90 YWJsZV9rZXlfZmllbGRfc2V0X2J5X25hbWUocG9ydF9pZCwga2V5LCAic3JjX3BvcnQiLA0KPiA+ ICZzcmNfcG9ydCwgMik7IHJ0ZV9wNF90YWJsZV9rZXlfZmllbGRfc2V0X2J5X25hbWUocG9ydF9p ZCwga2V5LA0KPiA+ICJkc3RfcG9ydCIsICZkc3RfcG9ydCwgMik7DQo+ID4NCj4gPiAvKiBHZXQg dGhlIGFjdGlvbiBzcGVjIGluZm8gKi8NCj4gPiBzdHJ1Y3QgcnRlX3A0X2FjdGlvbl9zcGVjX2lu Zm8gYXNfaW5mbzsNCj4gPiBydGVfcDRfYWN0aW9uX3NwZWNfaW5mb19nZXRfYnlfbmFtZShwb3J0 X2lkLCAiZGVjYXBfdnhsYW5fZndkIiwNCj4gPiAmYXNfaW5mbyk7DQo+ID4NCj4gPg0KPiA+IC8q IENyZWF0ZSB0aGUgYWN0aW9uICovDQo+ID4gc3RydWN0IHJ0ZV9wNF9hY3Rpb24gKmFjdGlvbjsN Cj4gPiBydGVfcDRfYWN0aW9uX2NyZWF0ZShwb3J0X2lkLCBhc19pbmZvLT5pZCwgJmFjdGlvbik7 DQo+ID4NCj4gPg0KPiA+IC8qIFNldCB0aGUgYWN0aW9uIGZpZWxkcyAqLw0KPiA+IHJ0ZV9wNF90 YWJsZV9hY3Rpb25fZmllbGRfc2V0X2J5X25hbWUocG9ydF9pZCwgYWN0aW9uLCAibW9kX2lkIiwN Cj4gPiAmbW9kX2lkLCAzKTsgcnRlX3A0X3RhYmxlX2FjdGlvbl9maWVsZF9zZXRfYnlfbmFtZShw b3J0X2lkLCBhY3Rpb24sDQo+ID4gInBvcnRfaWQiLCAmdGFyZ2V0X3BvcnRfaWQsIDIpOw0KPiA+ DQo+ID4gLyogQWRkIHRoZSBlbnRyeSAqLw0KPiA+IHJ0ZV9wNF90YWJsZV9lbnRyeV9hZGQocG9y dF9pZCwgdGJsX2luZm8tPmlkLCBrZXksIGFjdGlvbik7DQo+IFRoZXNlIGRvIG5vdCBsb29rIGF0 IGxpa2UgUDQgc3BlY2lmaWMuIENvdWxkIGJlIGp1c3QgZ2VuZXJpYyBBUElzLiBDb3VsZCB3ZQ0K PiBoYXZlIHRoZXNlIGFzIHJ0ZV9mbG93IEFQSXM/DQoNCkFncmVlZCwgdGhlIGdvYWwgaXMgbm90 IG5lY2Vzc2FyaWx5IHRvIGhhdmUgUDQtc3BlY2lmaWMgQVBJcywgYnV0IHJhdGhlciB0byBleHBv c2UgYSBzZXQgb2YgdGFibGUtZHJpdmVuIEFQSXMgdGhhdCBhbGlnbiB3aXRoIHRoZSBwcm9ncmFt bWFibGUgaGFyZHdhcmUgcGlwZWxpbmUuIFRoaXMgYXBwcm9hY2ggd291bGQgYWxsb3cgZm9yIG1v cmUgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gY29tcGFyZWQgdG8gcmVseWluZyBvbiBl eGlzdGluZyBwcm90b2NvbC1iYXNlZCBBUElzLg0KDQpCb3RoIG9wdGlvbnMsIGV4dGVuZGluZyB0 aGUgZXhpc3RpbmcgcnRlX2Zsb3cgQVBJIHRvIGV4cG9zZSB0aGUgcmVxdWlyZWQgdGFibGUtZHJp dmVuIGZlYXR1cmUgb3IgaW50cm9kdWNpbmcgYSBzZXQgb2YgZGVkaWNhdGUgdGFibGUtZHJpdmVu IEFQSXMsIGFwcGVhciB0byBiZSB2aWFibGUgc29sdXRpb25zIGZvciBtZS4NCg0KVGhhbmtzDQpR aQ0KDQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPg0KPiA+ID4NCj4gPiA+ID4gKCopIEFueSBpZGVh cyBvbiBob3cgdG8gZXh0ZW5kIG9yIGV4cGFuZCB0aGUgcnRlX2Zsb3cgQVBJcyB0bw0KPiA+ID4g PiBiZXR0ZXIgYWNjb21tb2RhdGUgUDQtYmFzZWQgb3Igb3RoZXIgdGFibGUtbWF0Y2hpbmcgYmFz ZWQgZGV2aWNlcy4NCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBMZXRzIGRpc2N1c3MgYW55IGlzc3Vl IHlvdSBoYXZlLg0KPiA+ID4NCj4gPiA+ID4gWW91ciBpbnNpZ2h0cyBhbmQgZmVlZGJhY2sgd291 bGQgYmUgZ3JlYXRseSBhcHByZWNpYXRlZCENCj4gPiA+ID4NCj4gPiA+ID4gPT09PT09PT09PT09 PT09PT09PT09PT0gUG9zdC1TY3JpcHQNCj4gPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQo+ID4gPiA+DQo+ID4gPiA+IE1vcmUgZGV0YWlscyBvbiB0aGUgcHJvYmxlbSBiZWxvdywgZm9y IGFueW9uZSBpbnRlcmVzdGVkDQo+ID4gPiA+DQo+ID4gPiA+IEluIFA0LCBmbG93IG9mZmxvYWRp bmcgY2FuIGJlIGltcGxlbWVudGVkIHVzaW5nIHRoZSBQNFJ1bnRpbWUgQVBJLA0KPiA+ID4gPiB3 aGljaCBwcm92aWRlcyBhIHN0YW5kYXJkIGludGVyZmFjZSBmb3IgY29udHJvbGxpbmcgYW5kDQo+ ID4gPiA+IGNvbmZpZ3VyaW5nIHRoZSBkYXRhIHBsYW5lIGJlaGF2aW9yIG9mIG5ldHdvcmsgZGV2 aWNlcy4gUDRSdW50aW1lDQo+ID4gPiA+IGFsbG93cyBuZXR3b3JrIG9wZXJhdG9ycyB0byBkeW5h bWljYWxseSBhZGQsIG1vZGlmeSwgYW5kIHJlbW92ZQ0KPiA+ID4gPiBmbG93IHJ1bGVzIGluIHRo ZSBoYXJkd2FyZSBmb3J3YXJkaW5nIHRhYmxlcyBvZiBQNC1lbmFibGVkIGRldmljZXMuDQo+ID4g PiA+DQo+ID4gPiA+IFRoZSBQNFJ1bnRpbWUgQVBJIGlzIGEgdGFibGUtYmFzZWQgQVBJLCBpdCBh c3N1bWUgdGhlIHBhY2tldA0KPiA+ID4gPiBwcm9jZXNzIHBpcGVsaW5lIHdhcyBjb25zaXN0cyBv ZiBvbmUgb3IgbW9yZSBrZXkvYWN0aW9uIHVuaXRzDQo+ID4gPiA+ICh0YWJsZXMpLiBJbiBQNFJ1 bnRpbWUsIGVhY2ggdGFibGUgZGVmaW5lcyB0aGUgZmllbGRzIHRvIGJlDQo+ID4gPiA+IG1hdGNo ZWQgYW5kIHRoZSBhY3Rpb25zIHRvIGJlIHRha2VuIG9uIGluY29taW5nIHBhY2tldHMuIER1cmlu Zw0KPiA+ID4gPiBjb21waWxhdGlvbiwgdGhlIFA0IGNvbXBpbGVyIGFzc2lnbnMgYSB1bmlxdWUN Cj4gPiA+ID4gdWludDMyIElEIHRvIGVhY2ggdGFibGUsIGFjdGlvbiwgYW5kIGZpZWxkLCB3aGlj aCBpcyBhc3NvY2lhdGVkDQo+ID4gPiA+IHdpdGggaXRzIGNvcnJlc3BvbmRpbmcgc3RyaW5nIG5h bWUuIFRoZXNlIElEcyBoYXZlIG5vIGluaGVyZW50DQo+ID4gPiA+IHJlbGF0aW9uc2hpcCB0byBh bnkgbmV0d29yayBwcm90b2NvbCBidXQgaW5zdGVhZCBzZXJ2ZSBhcyBhIG1lYW5zDQo+ID4gPiA+ IHRvIGlkZW50aWZ5IGRpZmZlcmVudCBjb21wb25lbnRzIG9mIGEgUDQgcHJvZ3JhbSB3aXRoaW4g dGhlIFA0UnVudGltZQ0KPiBBUEkuDQo+ID4gPiA+DQo+ID4gPiBUaGlzIGlzIHRoZSBjb25jZXB0 IG9mIHRhYmxlcyBhbmQgZ3JvdXBzIGluIHJ0ZV9mbG93Lg0KPiA+ID4NCj4gPiA+ID4gSWYgd2Ug Y2hvb3NlIHRvIHVzZSBydGVfZmxvdyBhcyB0aGUgbG93LWxldmVsIEFQSSBmb3IgUDRSdW50aW1l LCBhDQo+ID4gPiA+IHRyYW5zbGF0aW9uIGxheWVyIGlzIG5lZWRlZCBpbiB0aGUgYXBwbGljYXRp b24gdG8gbWFwIHRoZSBQNA0KPiA+ID4gPiB0YWJsZXMgYW5kIGFjdGlvbnMgdG8gdGhlIGNvcnJl c3BvbmRpbmcgcnRlX2Zsb3cgcnVsZXMuIEhvd2V2ZXIsDQo+ID4gPiA+IHRoaXMgdHJhbnNsYXRp b24gbGF5ZXIgY2FuIGJlIHByb2JsZW1hdGljIGFzIGl0IGlzIG5vdCBlYXNpbHkgc2NhbGFibGUu DQo+ID4gPiA+IFdoZW4gdGhlIFA0IHBpcGVsaW5lIGlzIHJlZmluZWQgb3IgdXBkYXRlZCwgdGhl IHRyYW5zbGF0aW9uIHJ1bGVzDQo+ID4gPiA+IG1heSBhbHNvIG5lZWQgdG8gYmUgdXBkYXRlZCwg d2hpY2ggY2FuIHJlc3VsdCBpbiBlcnJvcnMgYW5kDQo+ID4gPiA+IHJlZHVjZWQNCj4gPiBlZmZp Y2llbmN5Lg0KPiA+ID4gPg0KPiA+ID4gSSBkb24ndCB1bmRlcnN0YW5kIHdoeS4NCj4gPiA+DQo+ ID4gPiA+IE9uIHRoZSBvdGhlciBoYW5kLCBhIGhhcmR3YXJlIHZlbmRvciB0aGF0IHByb3ZpZGVz IGEgUDQtZW5hYmxlZA0KPiA+ID4gPiBkZXZpY2UgaXMgcmVxdWlyZWQgdG8gaW1wbGVtZW50IGFu IHJ0ZV9mbG93IGludGVyZmFjZSBpbiB0aGVpciBEUERLIFBNRC4NCj4gPiA+ID4gVHlwaWNhbGx5 LCB0aGUNCj4gPiA+ID4gUDQgY29tcGlsZXIgZ2VuZXJhdGVzIGhpbnRzIGZvciB0aGUgZHJpdmVy IG9uIGhvdyB0byBtYXAgUDQgdGFibGVzDQo+ID4gPiA+IHRvIGhhcmR3YXJlIHJlc291cmNlcywg YW5kIGhvdyB0byBjb252ZXJ0IHRhYmxlIGVudHJ5DQo+ID4gPiA+IGFkZC9tb2RpZnkvZGVsZXRl IGFjdGlvbnMgaW50byBsb3ctbGV2ZWwgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuDQo+ID4gPiA+ IEhvd2V2ZXIsIGJlY2F1c2UgcnRlX2Zsb3cgaXMgcHJvdG9jb2wtYmFzZWQsIGl0IHBvc2VzIGFu DQo+ID4gPiA+IGFkZGl0aW9uYWwgY2hhbGxlbmdlIGZvciBkcml2ZXIgZGV2ZWxvcGVycywgd2hv IG11c3QgY3JlYXRlDQo+ID4gPiA+IGFub3RoZXIgdHJhbnNsYXRpb24gbGF5ZXIgdG8gY29udmVy dCBydGVfZmxvdyB0b2tlbnMgaW50byBQNA0KPiA+ID4gPiBvYmplY3QgaWRlbnRpZmllcnMuIFRo aXMgdHJhbnNsYXRpb24gbGF5ZXIgbXVzdCBiZSBjYXJlZnVsbHkNCj4gPiA+ID4gZGVzaWduZWQg YW5kIGltcGxlbWVudGVkIHRvIGVuc3VyZSBvcHRpbWFsIHBlcmZvcm1hbmNlIGFuZA0KPiA+ID4g PiBzY2FsYWJpbGl0eSwgYW5kIHRvIGVuc3VyZSB0aGF0IHRoZSBkcml2ZXIgY2FuIGVmZmljaWVu dGx5DQo+ID4gPiBoYW5kbGUgdGhlIGR5bmFtaWMgbmF0dXJlIG9mIFA0IHByb2dyYW1zLg0KPiA+ ID4gPg0KPiA+ID4gUmlnaHQsIGJ1dCBzb21lIG9mIHRoZSB0cmFuc2xhdGlvbiBjYW4gYmUgZG9u ZSBpbiBzaGFyZWQgY29kZSBieSBhbGwNCj4gPiA+IFBNRHMgYW5kIHRoZSB0cmFuc2xhdGlvbiBp cyBzdGF0aWMgZm9yIHRoZSBjb21waWxhdGlvbiBzbyBpbnNlcnRpbmcNCj4gPiA+IHJ1bGVzIGNh biBiZSBzdXBwZXIgZmFzdCB3aXRoIG5vIG5lZWQgZm9yIGV4dHJhIHdvcmsuDQo+ID4gPg0KPiA+ ID4gPiBUbyBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgcHJvYmxlbSwgbGV0J3MgY29uc2lkZXIgdGhl IGZvbGxvd2luZw0KPiA+ID4gPiBleGFtcGxlIHRoYXQgZGVtb25zdHJhdGVzIGhvdyB0byB1c2Ug dGhlIFA0UnVudGltZSBBUEkgdG8gcHJvZ3JhbQ0KPiA+ID4gPiBhIHJ1bGUgZm9yIHByb2Nlc3Np bmcgYSBWWExBTiBwYWNrZXQuIFRoZSBydWxlIG1hdGNoZXMgYSBWWExBTg0KPiA+ID4gPiBwYWNr ZXQsIGRlY2Fwc3VsYXRlcyB0aGUgdHVubmVsIGhlYWRlciwgYW5kIGZvcndhcmRzIGl0IHRvIGEg c3BlY2lmaWMNCj4gcG9ydC4NCj4gPiA+ID4NCj4gPiA+ID4gVGhlIFA0IHNvdXJjZSBjb2RlIGJl bG93IGRlc2NyaWJlcyB0aGUgVlhMQU4gZGVjYXAgdGFibGUNCj4gPiA+ID4gZGVjYXBfdnhsYW5f dGNwX3RhYmxlLCB3aGljaCBtYXRjaGVzIHRoZSBvdXRlciBJUCBhZGRyZXNzLCBWTkksDQo+ID4g PiA+IGlubmVyIElQIGFkZHJlc3MsIGFuZCBpbm5lciBUQ1AgcG9ydC4gRm9yIGVhY2ggcnVsZSwg Zm91ciBhY3Rpb24NCj4gPiA+ID4gc3BlY2lmaWNhdGlvbnMgY2FuIGJlIHNlbGVjdGVkLiBXZSB3 aWxsIGZvY3VzIG9uIG9uZSBhY3Rpb24NCj4gPiA+ID4gc3BlY2lmaWNhdGlvbiBkZWNhcF92eGxh bl9md2QgdGhhdCBwZXJmb3JtcyBkZWNhcHN1bGF0aW9uIGFuZA0KPiA+ID4gPiBmb3J3YXJkcw0K PiA+ID4gdGhlIHBhY2tldCB0byBhIHNwZWNpZmljIHBvcnQuDQo+ID4gPiA+DQo+ID4gPiA+IHRh YmxlIGRlY2FwX3Z4bGFuX3RjcF90YWJsZSB7DQo+ID4gPiA+IMKgwqDCoCBrZXkgPSB7DQo+ID4g PiA+IMKgwqDCoMKgwqDCoMKgIGhkcnMuaXB2NFttZXRhLmRlcHRoLTFdLnNyY19pcDogZXhhY3Qg QG5hbWUoInR1bl9pcF9zcmMiKTsNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqAgaGRycy5pcHY0W21l dGEuZGVwdGgtMV0uZHN0X2lwOiBleGFjdCBAbmFtZSgidHVuX2lwX2RzdCIpOw0KPiA+ID4gPiDC oMKgwqDCoMKgwqDCoCBoZHJzLnZ4bGFuW21ldGEuZGVwdGgtMV0udm5pwqAgOiBleGFjdCBAbmFt ZSgidm5pIik7DQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgIGhkcnMuaXB2NFttZXRhLmRlcHRoXS5z cmNfaXDCoCA6IGV4YWN0IEBuYW1lKCJpcHY0X3NyYyIpOw0KPiA+ID4gPiDCoMKgwqDCoMKgwqDC oCBoZHJzLmlwdjRbbWV0YS5kZXB0aF0uZHN0X2lwwqAgOiBleGFjdCBAbmFtZSgiaXB2NF9kc3Qi KTsNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqAgaGRycy50Y3Auc3BvcnTCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgOiBleGFjdCBAbmFtZSgic3JjX3BvcnQiKTsNCj4gPiA+ID4gwqDCoMKg wqDCoMKgwqAgaGRycy50Y3AuZHBvcnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiBl eGFjdCBAbmFtZSgiZHN0X3BvcnQiKTsNCj4gPiA+ID4gwqDCoMKgIH0NCj4gPiA+ID4gwqDCoMKg IGFjdGlvbnMgPSB7DQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgIEB0YWJsZW9ubHkgZGVjYXBfdnhs YW5fZndkOw0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoCBAdGFibGVvbmx5IGRlY2FwX3Z4bGFuX2Ru YXRfZndkOw0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoCBAdGFibGVvbmx5IGRlY2FwX3Z4bGFuX3Nu YXRfZndkOw0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoCBAZGVmYXVsdG9ubHkgc2V0X2V4Y2VwdGlv bjsNCj4gPiA+ID4gwqDCoMKgIH0NCj4gPiA+ID4gfQ0KPiA+ID4gVHJhbnNsYXRlIHRvIHJ0ZV9m bG93Og0KPiA+ID4gdGVtcGxhdGUgcGF0dGVybiByZWxheGVkX21vZGUgPSAxIHBhdHRlcm4gPSAg SXB2NF9zcmMgLyBpcHY0X2RzdCAgLw0KPiA+ID4gdm5pIC8gaXB2NF9zcmMgLyBpcHY0X2RzdCAv IHRjcF9zcG9ydCAvIHRjcF9kcG9ydCBtYXAgc3RydWN0dXJlID0gew0KPiA+ID4gCXR1bl9pcF9z cmMgPSAmcGF0dGVybltpcHY0X3NyY10NCj4gPiA+IAkuLi4uDQo+ID4gPiB9DQo+ID4gPiA+IC4u Lg0KPiA+ID4gPg0KPiA+ID4gPiBhY3Rpb24gZGVjYXBfdnhsYW5fZndkKFBvcnRJZF90IHBvcnRf aWQpIHsNCj4gPiA+ID4gwqDCoMKgIG1ldGEubW9kX2FjdGlvbiA9IChiaXQ8MTE+KVZYTEFOX0RF Q0FQX09VVEVSX0lQVjQ7DQo+ID4gPiA+IMKgwqDCoCBzZW5kX3RvX3BvcnQocG9ydF9pZCk7DQo+ ID4gPiA+IH0NCj4gPiA+ID4NCj4gPiA+IFNhbWUgYXMgYWJvdmUganVzdCB3aXRoIGFjdGlvbiB0 ZW1wbGF0ZQ0KPiA+ID4NCj4gPiA+ID4gQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiB0aGUgaGludCB0 aGF0IHRoZSBjb21waWxlciB3aWxsIGdlbmVyYXRlDQo+ID4gPiA+IGZvciB0aGUNCj4gPiA+ID4g ZGVjYXBfdnhsYW5fdGNwX3RhYmxlOg0KPiA+ID4gPg0KPiA+ID4gPiBUYWJsZSBJRDrCoMKgwqDC oMKgIDg0NTQxNDQNCj4gPiA+ID4gTmFtZTrCoMKgwqDCoMKgwqDCoMKgwqAgZGVjYXBfdnhsYW5f dGNwX3RhYmxlIEZpZWxkIElEwqDCoMKgwqDCoMKgIE5hbWUgTWF0Y2gNCj4gPiA+ID4gVHlwZcKg wqDCoMKgIEJpdCBXaWR0aCBCeXRlIFdpZHRowqDCoMKgwqAgQnl0ZSBPcmRlcg0KPiA+ID4gPiAx wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHVuX2lwX3NyY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDMyDQo+ID4gPiA+IDTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3b3JrDQo+ID4gPiA+IDLCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB0dW5faXBfZHN0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZXhhY3TCoMKgwqDCoMKgwqDCoMKgwqAgMzINCj4gPiA+ID4gNMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIG5ldHdvcmsNCj4gPiA+ID4gM8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHZuacKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZXhhY3TCoMKgIMKgwqDCoMKgwqDCoMKgMjQNCj4gPiA+ID4gM8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG5ldHdvcmsNCj4gPiA+ID4gNMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlwdjRf c3JjwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4YWN0wqDCoMKg wqDCoMKgwqDCoMKgIDMyDQo+ID4gPiA+IDTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3 b3JrDQo+ID4gPiA+IDXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpcHY0X2RzdMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleGFjdMKgwqDCoMKgwqDCoMKgwqDC oCAzMg0KPiA+ID4gPiA0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0d29yaw0KPiA+ID4g PiA2wqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgc3JjX3BvcnTCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhhY3TCoMKgwqDCoMKgwqDCoMKgwqAgMTYNCj4gPiA+ ID4gMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ldHdvcmsNCj4gPiA+ID4gN8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGRzdF9wb3J0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGV4YWN0wqDCoMKgwqDCoMKgwqDCoMKgIDE2DQo+ID4gPiA+IDLCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBuZXR3b3JrIFNwZWMgSUTCoMKgwqDCoMKgwqDCoCBOYW1lDQo+ ID4gPiA+IDg1MTk3MTbCoMKgwqDCoMKgwqAgwqBkZWNhcF92eGxhbl9md2QNCj4gPiA+ID4gODUx OTcxOMKgwqDCoMKgwqDCoMKgIGRlY2FwX3Z4bGFuX2RuYXRfZndkDQo+ID4gPiA+IDg1MTk3MjDC oMKgwqDCoMKgwqDCoCBkZWNhcF92eGxhbl9zbmF0X2Z3ZA0KPiA+ID4gPiA4NTE5Njk1wqDCoMKg wqDCoMKgwqAgc2V0X2V4Y2VwdGlvbg0KPiA+ID4gPg0KPiA+ID4gPiBBbmQgdGhlIGhpbnQgb2Yg YWN0aW9uIHNwZWMgImRlY2FwX3Z4bGFuX2Z3ZCIgYXMgYmVsb3c6DQo+ID4gPiA+DQo+ID4gPiA+ IFNwZWMgSUQ6wqDCoMKgwqDCoMKgIDg1MTk3MTYNCj4gPiA+ID4gTmFtZTrCoMKgwqDCoMKgwqDC oMKgwqAgZGVjYXBfdnhsYW5fZndkDQo+ID4gPiA+IEZpZWxkIElEwqDCoMKgwqDCoMKgIE5hbWXC oMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCaXQgV2lk dGjCoMKgwqDCoMKgIEJ5dGUNCj4gPiA+ID4gV2lkdGggQnl0ZSBPcmRlcg0KPiA+ID4gPiAxwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG9ydF9pZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDMywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDQgaG9zdA0KPiA+ ID4gPg0KPiA+ID4gPiBQbGVhc2Ugbm90ZSB0aGF0IGRpZmZlcmVudCBjb21waWxlcnMgbWF5IGFz c2lnbiBkaWZmZXJlbnQgSURzLg0KPiA+ID4gPg0KPiA+ID4gPiBCZWxvdyBpcyBhbiBleGFtcGxl IG9mIGhvdyB0byBwcm9ncmFtIGEgcnVsZSB1c2luZyB0aGUgUDQgcnVudGltZQ0KPiA+ID4gPiBB UEkgaW4gSlNPTiBmb3JtYXQuIFRoaXMgcnVsZSBtYXRjaGVzIGZpZWxkcyBhbmQgZGlyZWN0cyBw YWNrZXRzIHRvIHBvcnQgNS4NCj4gPiA+ID4NCj4gPiA+ID4gew0KPiA+ID4gPiDCoMKgwqAgInR5 cGUiOiAxLMKgIC8vSU5TRVJUDQo+ID4gPiA+IMKgwqDCoCAiZW50aXR5Ijogew0KPiA+ID4gPiDC oMKgwqDCoMKgwqDCoCAidGFibGVfZW50cnkiOiB7DQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgInRhYmxlX2lkIjogODQ1NDE0NCwNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAibWF0Y2giOiBbDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7ICJm aWVsZF9pZCI6IDEsICJleGFjdCI6IHsgInZhbHVlIjogWzEwLCAwLCAwLCAxXQ0KPiA+ID4gPiB9 IH0swqDCoCAvLyBvdXRlciBzcmMgSVAgPQ0KPiA+ID4gPiAxMC4wLjAuMQ0KPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAiZmllbGRfaWQiOiAyLCAiZXhhY3QiOiB7ICJ2 YWx1ZSI6IFsxMCwgMCwgMCwgMl0NCj4gPiA+ID4gfSB9LMKgIC8vIG91dGVyIGRzdCBJUCA9DQo+ ID4gPiA+IDEwLjAuMC4yDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7 ICJmaWVsZF9pZCI6IDMsICJleGFjdCI6IHsgInZhbHVlIjogWzAsIDAsIDEwXSB9DQo+ID4gPiA+ IH0sIC8vwqAgdm5pID0gMTAsDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB7ICJmaWVsZF9pZCI6IDQsICJleGFjdCI6IHsgInZhbHVlIjogWzE5MiwgMCwgMCwNCj4gPiA+ ID4gMV0gfSB9LCAvLyBpbm5lciBzcmMgSVAgPQ0KPiA+ID4gPiAxOTIuMC4wLjENCj4gPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsiZmllbGRfaWQiOiA1LCAiZXhhY3QiOiB7 ICJ2YWx1ZSI6IFsxOTIsIDAsIDAsIDJdDQo+ID4gPiA+IH0gfSwgLy8gaW5uZXIgZHN0IElQID0N Cj4gPiA+ID4gMTkyLjAuMC4yDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg wqB7ImZpZWxkX2lkIjogNiwgImV4YWN0IjogeyAidmFsdWUiOiBbMCwgMjAwXSB9IH0sDQo+ID4g PiA+IC8vIHRjcCBzcmMgcG9ydCA9IDIwMA0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgeyJmaWVsZF9pZCI6IDcsICJleGFjdCI6IHsgInZhbHVlIjogWzAsIDIwMV0gfSB9 LA0KPiA+ID4gPiAvLyB0Y3AgZHN0IHBvcnQgPSAyMDENCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBdLA0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJhY3Rpb24iOiB7DQo+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYWN0aW9uIjogew0KPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYWN0aW9uX2lkIjogODUx OTcxNiwNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgInBh cmFtcyI6IFsNCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB7ICJwYXJhbV9pZCI6IDEsICJ2YWx1ZSI6IFs1LCAwLCAwLCAwXSB9DQo+ID4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF0NCj4gPiA+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB9LA0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC4uLg0KPiA+ID4gPiDCoMKgwqDC oMKgwqDCoCB9DQo+ID4gPiA+IMKgwqDCoCB9wqDCoMKgIC4uLg0KPiA+ID4gPiB9DQo+ID4gPiA+ DQo+ID4gPiA+IFBsZWFzZSBub3RlIHRoYXQgdGhpcyBpcyBvbmx5IGEgcGFydCBvZiB0aGUgZnVs bCBjb21tYW5kLiBGb3IgbW9yZQ0KPiA+ID4gPiBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRv IHRoZSBwNHJ1bnRpbWUucHJvdG9bMl0NCj4gPiA+ID4NCj4gPiA+ID4gMS4gaHR0cHM6Ly9wNC5v cmcvcDQtc3BlYy9wNHJ1bnRpbWUvbWFpbi9QNFJ1bnRpbWUtU3BlYy5odG1sDQo+ID4gPiA+IDIu DQo+ID4gPiA+DQo+ID4gPg0KPiBodHRwczovL2dpdGh1Yi5jb20vcDRsYW5nL3A0cnVudGltZS9i bG9iL21haW4vcHJvdG8vcDQvdjEvcDRydW50aW1lLg0KPiA+ID4gcA0KPiA+ID4gcg0KPiA+ID4g PiBvdG8NCj4gPiA+ID4NCj4gPiA+ID4gVGhhbmsgeW91IGZvciB5b3VyIGF0dGVudGlvbiB0byB0 aGlzIG1hdHRlci4NCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBJIHRoaW5rIHRoYXQgd2Ugc2hvdWxk IHNjaGVkdWxlIHNvbWUgbWVldGluZyB0byBzZWUgaG93IG11Y2ggZ2FwcyB3ZQ0KPiA+ID4gcmVh bGx5IGhhdmUgYmV0d2VlbiB0aGUgcnRlX2Zsb3cgYW5kDQo+ID4gPiBQNCBhbmQgaG93IHdlIGNh biBpbXByb3ZlIHRoZSBydGVfZmxvdyB0byBhbGxvdyB0aGUgYmVzdCBleHBlcmllbmNlLg0KPiA+ DQo+ID4gU291bmQgYSBnb29kIGlkZWEhDQo+ID4gPg0KPiA+ID4gPiBSZWdhcmRzDQo+ID4gPiA+ IFFpDQo=