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 C6A31A00C2; Wed, 4 Jan 2023 10:56:48 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A4AA540A82; Wed, 4 Jan 2023 10:56:48 +0100 (CET) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2047.outbound.protection.outlook.com [40.107.102.47]) by mails.dpdk.org (Postfix) with ESMTP id 3CBAE40697 for ; Wed, 4 Jan 2023 10:56:47 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AksC6WVQXn9jVL7aBNpEV0GxJKG3kdaXFfZ9lhTVgtQLZk1nkETl1hzc0XQqplhTEnEOHFmsJDNHnmGm1iHfoQYM+JFrVdhPkqWzkJPhKsbf0zGTuGHQxw4W6uk9JgIWB6TOc5yGVkYvicDuo/KvURC5YGLYpKyb2UQuFTGw5VvMACle0S+6cl0V8YB1YPCgq04BJ8esvUxvVvFf92KzSFy5tIFmLISSOSTjnFX7jePgCh9sFDwpt/RVG8RGIfJe5k0zIlohVVxiDYi62XrrRe9o15DyR3ggjPlO8EbmNIJ029THPq8V/m867Zpp5K+Ytwi9YHkp+ZfeX7V0wwzhNg== 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=JGY+8SUWycqGdL0c+/V0MRw6mwe5OKMA9w3cjMGjK0I=; b=IGGitQPDJw/ebgbrmB6ogp8NyvPMy9o6xvcUhTcjn/MlXNnnEtnfjqUXPbpqmeZUzmmRK09SvefRLIYfhR7tcGsvAXuw+tzi38m9W2TlgOes/J+uxqqx+WREeaqSyYpVqIjiDgK1gcsCTv91K/Mg90Ai+LEKk2alIGO4ykuyXa9v0SEGd9UMadAWehJOdm+ntVc+HgtkAUD1rd1+GfFENySMh7jxoFrNHOLRTT+jr/77cWJqzopGpyAisd5S2G25koTbiRwgrOL4zo45S+GwHBFv10qymDqwXxG1hilRgwHVeb973TunO0+gupxlTV/4yTAnmSMZ83E2JfWjfPW4eQ== 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=JGY+8SUWycqGdL0c+/V0MRw6mwe5OKMA9w3cjMGjK0I=; b=asJmNC+j1c8lmCuZfAeceki2DTC9A5atpupB9Cs+d7f8E3WV82y2oVwJ8DRe3w89P5/l5xy9qteQp2fSNEMuL/sFIlJzj5Un7HGUAgS6WrzadLxqs02sQZmb7PBOXbO9Y5TIPcMSZ+Noax4oINmtTVP9xM1NTxzgnIFAFg619BdnNKciq8v93QSCdH6ZNWJxuj6eGxkdpIoTgUp/+th5ztWCvELp5E5CT9RK3dwyH3xPq2xEew1tI4LF5fbtAk9Z9jvx/viveMqCRw7jMPbRumsKR3vdTj7iVFOfaq91z3+/HNBDml8bExdSBm22XXBdLT5fMZfzvyXshenRXpEF8g== Received: from MW2PR12MB4666.namprd12.prod.outlook.com (2603:10b6:302:13::22) by MW4PR12MB6683.namprd12.prod.outlook.com (2603:10b6:303:1e2::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Wed, 4 Jan 2023 09:56:45 +0000 Received: from MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::fc2f:ba02:3717:f897]) by MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::fc2f:ba02:3717:f897%7]) with mapi id 15.20.5944.019; Wed, 4 Jan 2023 09:56:45 +0000 From: Ori Kam To: Gregory Etelson , "dev@dpdk.org" CC: Matan Azrad , Raslan Darawsheh , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Ferruh Yigit , Andrew Rybchenko Subject: RE: [PATCH 1/2] ethdev: add query_update sync and async function calls Thread-Topic: [PATCH 1/2] ethdev: add query_update sync and async function calls Thread-Index: AQHZFQ7r3AOmrMdEVUOcnEDDWU6ZLq6OFjJA Date: Wed, 4 Jan 2023 09:56:44 +0000 Message-ID: References: <20221221073547.988-1-getelson@nvidia.com> In-Reply-To: <20221221073547.988-1-getelson@nvidia.com> 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_|MW4PR12MB6683:EE_ x-ms-office365-filtering-correlation-id: 0f017c08-ba47-4516-1dbf-08daee39fce4 x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +RZjiRlQwbtwh+eBHqbBrIPahrh7UoBsf9Vu7oyrGVPlxa31v81APJTiNsP00Y8s8uUL0LdahtMnbUkqxkNOGibSzE80VhBo79kzNx3NIcsbBvLmWJM0iyZngtCnE0G5ORW4mlREoVMmSsGxbgdIrhbeqDreeaWyB8TXcRQOwXSdySNyIk4HKoglwzltmieJIhtqELEiYkDuIsFLWSW/H29GJ8a9pyl9/bRhM8DGuquxOgmAiq+nyDzrc+wm9BYL2B8Lgwn7tK1tqaSk0e570flnYRzGyWFTaCXDHDT+lv26xfbv1MjDVANi/ay14LTFaOb2GkoWkoH/MqkORfBretnY/sWt7CoLxJ8e5vIrkv53wL2RqZj80A/olFAmiNp3QWxesyC0l7UCSNEq12DW9038WhlPnl4eDzSjtp/zG6NYZ5KnPRUPDeau8qfTSh3qydJAyU7LaA/v2DHeim4U/+54C0G87QCDGOmfM+b1LmJAOAgi3cCVa1uiFEqEd8RS6v8vKjrvknTIs+FX8zKJK0JDgEI/k9ag9viZYYvtRwKG9FZJRhqFXJjLqYjh+uNIL4DFF5oJ+BslUZ+RtXSwSiFLvy4kX64i7l6NV5E/2OO8vMK0t60R8EDm1Xp8+/kjQBMBcjNa0hxLkCK4gOWAOvx0yrbea2YLrvojb+hWhHsbfGqz97CGWngTdWWbIjYRdcgythFQZJ4Qgj9yqaESVw== 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:(13230022)(4636009)(346002)(396003)(366004)(39860400002)(136003)(376002)(451199015)(5660300002)(8676002)(4326008)(66476007)(316002)(76116006)(66446008)(66556008)(66946007)(64756008)(41300700001)(52536014)(8936002)(7696005)(2906002)(71200400001)(110136005)(33656002)(54906003)(478600001)(6506007)(38070700005)(38100700002)(9686003)(186003)(26005)(55016003)(86362001)(122000001)(83380400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZEFKbFlPZStIeklMQVJtVXhjeWI1VXpqWVk0eXk2SHczaGtHNTFtM1UrUXJN?= =?utf-8?B?TmQzcmxlcFhiMkRGZ0Z3QndIL2VERHlGWG10YVFWWjZib081aUE1ejZkeEpU?= =?utf-8?B?SmwxUmxDWjcvdEFlaHEvWEd2dkh3cEMwdGVicFMxM3E4b20wSHdxdGtGSUx1?= =?utf-8?B?QUkyZ2t3clFPUXN4MXFjR285eTZmNGdSbkN6U21yeEJ4ZlFPQlljR2kxbXQy?= =?utf-8?B?eUtJQ0hiQUxVSWQvZTRUaHpYY1pIRVN6KytiUmY0VU1ac21FbHBIN0RPNHp6?= =?utf-8?B?Q2R6OXJvOXVaTmpNRTE0RGN3cXMxUTB5Ly94UTdjbEVIUjJuZEd4REFIQWZz?= =?utf-8?B?ektSbEE1YjdwL09CeHdWWHpTZ1lmV3RKU1NlWWQzbVNkYVBJYlpXWUdhR2th?= =?utf-8?B?eHRZNVdxWW9zakY5UDBKSzhweEszNForUVVtbDliUzkwMDlOZGJSSEx4WG4y?= =?utf-8?B?M2EyNlZIbWR3TEY4a3dKYlFIa2NkYXZnWFlwRnFaVVl3MlltQjBqWTNmMjRw?= =?utf-8?B?RTI1VDdKVkE2M09yYUcwNEw1Q1lEcGFFeVZySEliYzFvUlFSMEJxQ3FxUTg0?= =?utf-8?B?VnYxRCs0eHhmck84bHptMEhnOFZ4UjNzWHdNR20yRDA0VzBDaEZkR3diL1o4?= =?utf-8?B?Yk1wWXovcS9PdTZoTi9kUWFkYWovWkFKUlpNaUJsaHpBWVJWbnJjb3FFRGNU?= =?utf-8?B?WS8yT2NOYmVHS3N6RFlwREc3WWc4alJNcE9ZODA3Tit0ZHhrUkxVZjZFVlhD?= =?utf-8?B?THM2MGJ3eHVNcUtuaUlEWVhaVGVDeDhhcmR5M0crckVBWVFMYkZSb1Q0NlFT?= =?utf-8?B?YlU2OEo1UzZMRE9YZ2w4K3oxcVhUS0NHOVFJNXZ3eGNRc1F5a1FDNmVXWkdy?= =?utf-8?B?THRCdHFBUXExQ1JyMUpIaUJLUDhtNzcra1lDUis5c3pQbXlxdkxKemMyNjNi?= =?utf-8?B?YzV5S1ZsR09pVGZJeDNpSTBzSlUvWVVwNXZxaCtYVVZka1N5MnFPakNtT1NG?= =?utf-8?B?emhpTlh3Yk9DeGY4dm56UmhZbzhvQXZocTFJWU5LUmJqSFBDbHV3WEFLK0dC?= =?utf-8?B?UnI1NEFqa2VnSXJMVm03Yy82Z3VaOUV2LzBqSndBaEdzWGdFTFlxc1l6WUY5?= =?utf-8?B?SmRJclBOTXJWcVdjdHFGTDZUYlAzY2IydnJDZjFDRmpCTE5rWUJzQXBaK2Fo?= =?utf-8?B?SGpqZXBoQXF0NnR5ZEoyd2hPaGUyaGQyNWJYdTc0M1dua0EraWp1N2VXZ0Rm?= =?utf-8?B?V0Yrd3pqYTVVMjI3RkhzTGN6akVtMTVwSm1OdEdvcy9lMHl5SnMrVTZ6YkVT?= =?utf-8?B?cmtORnJHVWN1TTNLN3FUaCtIRlJCYURBMnFZVzFJdmg5TDhSZERXdW1PaXlK?= =?utf-8?B?YzFsL2pKWElTTDBOb0dHT2orRDkzbzRtL2kvVElyU2MxeEwrM0s5OTVmVDNZ?= =?utf-8?B?SS92ZTdRSXBKVmc5Ylh6aDJ1QW10WW1DKzhmYWRhOVZmM1pFL3hrcDhPWVFu?= =?utf-8?B?TDVyc2o4STIyQkVZL25nNmpHVWRoSWZIQW9YWEpNZFVzSitwZ3FvQWFEa0xP?= =?utf-8?B?N3U0RTFoTjg2MjhJOU9wUEx5OG5lY3dXN1JqQUwraWdxQzlEMkM0YUZsMXEr?= =?utf-8?B?d243NWI4UE9hSHZya2tjOEJCY01VRlR2L0t0MlYvU2xZa3JJYitmQWhlSHVn?= =?utf-8?B?YlBmR3h3YXV1SGw4M01BUDZmRWV5bjdBaVNjNmt2TEk5NzJrRjMxOE1XL21U?= =?utf-8?B?ZU5nQmpnL0diOTBWNlBlZitlQjAvREFxN1hHMmJPZHJ0QkRhR2R3cGRFYXVI?= =?utf-8?B?a1A2ZW5qMnpLSkhtQTh1N0FGL2RsNW94TzduQXFtRE1LVUMvbW4vMUwwbXly?= =?utf-8?B?UHVUblRWUTMyeFZBS2dUVXN2L3N4dlg1L0ZrZmZsOXd3Q0MxWFdVN01PWExh?= =?utf-8?B?VEtXK0JtVG4wdU43ZkVsOGNGT1V4VWJhSEFoWEVmaGFkaEpOY0t1K1dNazlE?= =?utf-8?B?Vk9nZG0vWHlYMG9EcUNCNkdVWXlzZU5MSFNkUFBzZTJidU5BbFRqU3ltWG5Q?= =?utf-8?B?d3lWdnV5b0QvR0hlaHoyU04yRjdDMDN4R0RPSXZiQ1ZraXVNU1M2ZnplVFR0?= =?utf-8?Q?SofbB9X0FE735qGu8R4EsojJb?= 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: 0f017c08-ba47-4516-1dbf-08daee39fce4 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jan 2023 09:56:44.9076 (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: eOsPdzvsv9ioeRbWPWYSx2p7TN3lSYlrVbZNhRkIPdY+8w/m5YcU2h6y/9uC4ZO1EkuZlpa8rV2fzRLR9wlEcg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6683 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 SGkgR3JlZ29yeSwNCg0KU29tZSBjb21tZW50cyBiZWxvdywNCkFsc28geW91IGFyZSBtaXNzaW5n IHRoZSByZWxlYXNlIHJzdCBmaWxlIHVwZGF0ZS4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiBGcm9tOiBHcmVnb3J5IEV0ZWxzb24gPGdldGVsc29uQG52aWRpYS5jb20+DQo+IFNl bnQ6IFdlZG5lc2RheSwgMjEgRGVjZW1iZXIgMjAyMiA5OjM2DQo+IA0KPiBDdXJyZW50IEFQSSBh bGxvd3MgZWl0aGVyIHF1ZXJ5IG9yIHVwZGF0ZSBpbmRpcmVjdCBmbG93IGFjdGlvbi4NCj4gSWYg cG9ydCBoYXJkd2FyZSBhbGxvd3MgYm90aCB1cGRhdGUgYW5kIHF1ZXJ5IGluIGEgc2luZ2xlIG9w ZXJhdGlvbiwNCj4gYXBwbGljYXRpb24gc3RpbGwgaGFzIHRvIGlzc3VlIDIgc2VwYXJhdGUgaGFy ZHdhcmUgcmVxdWVzdHMuDQo+IA0KPiBUaGUgcGF0Y2ggYWRkcyBgcnRlX2Zsb3dfYWN0aW9uX2hh bmRsZV9xdWVyeV91cGRhdGVgIGZ1bmN0aW9uIGNhbGwsDQo+IGFuZCBpdCdzIGFzeW5jIHZlcnNp b24gYHJ0ZV9mbG93X2FzeW5jX2FjdGlvbl9oYW5kbGVfcXVlcnlfdXBkYXRlYA0KPiB0byBhdG9t aWNhbGx5IHF1ZXJ5IGFuZCB1cGRhdGUgZmxvdyBhY3Rpb24uDQo+IA0KPiBpbnQNCj4gcnRlX2Zs b3dfYWN0aW9uX2hhbmRsZV9xdWVyeV91cGRhdGUNCj4gICAgICAgICh1aW50MTZfdCBwb3J0X2lk LCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX2hhbmRsZSAqaGFuZGxlLA0KPiAgICAgICAgIGNvbnN0 IHZvaWQgKnVwZGF0ZSwgdm9pZCAqcXVlcnksDQo+ICAgICAgICAgZW51bSBydGVfZmxvd19xdWVy eV91cGRhdGVfbW9kZSBtb2RlLA0KPiAgICAgICAgIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJy b3IpOw0KPiANCj4gaW50DQo+IHJ0ZV9mbG93X2FzeW5jX2FjdGlvbl9oYW5kbGVfcXVlcnlfdXBk YXRlDQo+ICAgICAgICAodWludDE2X3QgcG9ydF9pZCwgdWludDMyX3QgcXVldWVfaWQsDQo+ICAg ICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X29wX2F0dHIgKm9wX2F0dHIsDQo+ICAgICAgICAg c3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9oYW5kbGUgKmFjdGlvbl9oYW5kbGUsDQo+ICAgICAgICAg Y29uc3Qgdm9pZCAqdXBkYXRlLCB2b2lkICpxdWVyeSwNCj4gICAgICAgICBlbnVtIHJ0ZV9mbG93 X3F1ZXJ5X3VwZGF0ZV9tb2RlIG1vZGUsDQo+ICAgICAgICAgdm9pZCAqdXNlcl9kYXRhLCBzdHJ1 Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gDQo+IEFwcGxpY2F0aW9uIGNhbiBjb250cm9s IHF1ZXJ5IGFuZCB1cGRhdGUgb3JkZXIsIGlmIHRoYXQgaXMgc3VwcG9ydGVkDQo+IGJ5IHBvcnQg aGFyZHdhcmUsIGJ5IHNldHRpbmcgcXVfbW9kZSBwYXJhbWV0ZXIgdG8NCj4gUlRFX0ZMT1dfUVVf UVVFUllfRklSU1Qgb3IgUlRFX0ZMT1dfUVVfVVBEQVRFX0ZJUlNULg0KPiANCj4gUlRFX0ZMT1df UVVfUVVFUlkgYW5kIFJURV9GTE9XX1FVX1VQREFURSBwYXJhbWV0ZXIgdmFsdWVzDQo+IHByb3Zp ZGUNCj4gcXVlcnkgb25seSBhbmQgdXBkYXRlIG9ubHkgZnVuY3Rpb25hbGl0eSBmb3IgYmFja3dh cmQgY29tcGF0aWJpbGl0eQ0KPiB3aXRoIGV4aXN0aW5nIEFQSS4NCj4gDQo+IFNpZ25lZC1vZmYt Ynk6IEdyZWdvcnkgRXRlbHNvbiA8Z2V0ZWxzb25AbnZpZGlhLmNvbT4NCj4gLS0tDQo+ICBsaWIv ZXRoZGV2L3J0ZV9mbG93LmMgICAgICAgIHwgIDM5ICsrKysrKysrKysrKysNCj4gIGxpYi9ldGhk ZXYvcnRlX2Zsb3cuaCAgICAgICAgfCAxMDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysNCj4gIGxpYi9ldGhkZXYvcnRlX2Zsb3dfZHJpdmVyLmggfCAgMTUgKysrKysNCj4gIGxp Yi9ldGhkZXYvdmVyc2lvbi5tYXAgICAgICAgfCAgIDUgKysNCj4gIDQgZmlsZXMgY2hhbmdlZCwg MTY0IGluc2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9mbG93 LmMgYi9saWIvZXRoZGV2L3J0ZV9mbG93LmMNCj4gaW5kZXggN2QwYzI0MzY2Yy4uOGI4YWE5NDBi ZSAxMDA2NDQNCj4gLS0tIGEvbGliL2V0aGRldi9ydGVfZmxvdy5jDQo+ICsrKyBiL2xpYi9ldGhk ZXYvcnRlX2Zsb3cuYw0KPiBAQCAtMTg4MywzICsxODgzLDQyIEBAIHJ0ZV9mbG93X2FzeW5jX2Fj dGlvbl9oYW5kbGVfcXVlcnkodWludDE2X3QNCj4gcG9ydF9pZCwNCj4gIAkJCQkJICBhY3Rpb25f aGFuZGxlLCBkYXRhLCB1c2VyX2RhdGEsDQo+IGVycm9yKTsNCj4gIAlyZXR1cm4gZmxvd19lcnIo cG9ydF9pZCwgcmV0LCBlcnJvcik7DQo+ICB9DQo+ICsNCj4gK2ludA0KPiArcnRlX2Zsb3dfYWN0 aW9uX2hhbmRsZV9xdWVyeV91cGRhdGUodWludDE2X3QgcG9ydF9pZCwNCj4gKwkJCQkgICAgc3Ry dWN0IHJ0ZV9mbG93X2FjdGlvbl9oYW5kbGUgKmhhbmRsZSwNCj4gKwkJCQkgICAgY29uc3Qgdm9p ZCAqdXBkYXRlLCB2b2lkICpxdWVyeSwNCj4gKwkJCQkgICAgZW51bSBydGVfZmxvd19xdWVyeV91 cGRhdGVfbW9kZQ0KPiBtb2RlLA0KPiArCQkJCSAgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVy cm9yKQ0KPiArew0KPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNl c1twb3J0X2lkXTsNCj4gKwljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfb3BzICpvcHMgPSBydGVfZmxv d19vcHNfZ2V0KHBvcnRfaWQsIGVycm9yKTsNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJaWYgKCFv cHMgfHwgIW9wcy0+YWN0aW9uX2hhbmRsZV9xdWVyeV91cGRhdGUpDQo+ICsJCXJldHVybiAtRU5P VFNVUDsNCj4gKwlyZXQgPSBvcHMtPmFjdGlvbl9oYW5kbGVfcXVlcnlfdXBkYXRlKGRldiwgaGFu ZGxlLCB1cGRhdGUsIHF1ZXJ5LA0KPiArCQkJCQkgICAgICBtb2RlLCBlcnJvcik7DQo+ICsJcmV0 dXJuIGZsb3dfZXJyKHBvcnRfaWQsIHJldCwgZXJyb3IpOw0KPiArfQ0KPiArDQo+ICtpbnQNCj4g K3J0ZV9mbG93X2FzeW5jX2FjdGlvbl9oYW5kbGVfcXVlcnlfdXBkYXRlKHVpbnQxNl90IHBvcnRf aWQsIHVpbnQzMl90DQo+IHF1ZXVlX2lkLA0KPiArCQkJCQkgIGNvbnN0IHN0cnVjdCBydGVfZmxv d19vcF9hdHRyICphdHRyLA0KPiArCQkJCQkgIHN0cnVjdCBydGVfZmxvd19hY3Rpb25faGFuZGxl DQo+ICpoYW5kbGUsDQo+ICsJCQkJCSAgY29uc3Qgdm9pZCAqdXBkYXRlLCB2b2lkICpxdWVyeSwN Cj4gKwkJCQkJICBlbnVtDQo+IHJ0ZV9mbG93X3F1ZXJ5X3VwZGF0ZV9tb2RlIG1vZGUsDQo+ICsJ CQkJCSAgdm9pZCAqdXNlcl9kYXRhLA0KPiArCQkJCQkgIHN0cnVjdCBydGVfZmxvd19lcnJvciAq ZXJyb3IpDQo+ICt7DQo+ICsJc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgPSAmcnRlX2V0aF9kZXZp Y2VzW3BvcnRfaWRdOw0KPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9m bG93X29wc19nZXQocG9ydF9pZCwgZXJyb3IpOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlpZiAo IW9wcyB8fCAhb3BzLT5hc3luY19hY3Rpb25faGFuZGxlX3F1ZXJ5X3VwZGF0ZSkNCj4gKwkJcmV0 dXJuIC1FTk9UU1VQOw0KPiArCXJldCA9IG9wcy0+YXN5bmNfYWN0aW9uX2hhbmRsZV9xdWVyeV91 cGRhdGUoZGV2LCBxdWV1ZV9pZCwgYXR0ciwNCj4gKwkJCQkJCSAgICBoYW5kbGUsIHVwZGF0ZSwg cXVlcnksDQo+IG1vZGUsDQo+ICsJCQkJCQkgICAgdXNlcl9kYXRhLCBlcnJvcik7DQo+ICsJcmV0 dXJuIGZsb3dfZXJyKHBvcnRfaWQsIHJldCwgZXJyb3IpOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEv bGliL2V0aGRldi9ydGVfZmxvdy5oIGIvbGliL2V0aGRldi9ydGVfZmxvdy5oDQo+IGluZGV4IGI2 MDk4N2RiNGIuLmY5ZTkxOWJiODAgMTAwNjQ0DQo+IC0tLSBhL2xpYi9ldGhkZXYvcnRlX2Zsb3cu aA0KPiArKysgYi9saWIvZXRoZGV2L3J0ZV9mbG93LmgNCj4gQEAgLTU2MjIsNiArNTYyMiwxMTEg QEAgcnRlX2Zsb3dfYXN5bmNfYWN0aW9uX2hhbmRsZV9xdWVyeSh1aW50MTZfdA0KPiBwb3J0X2lk LA0KPiAgCQl2b2lkICp1c2VyX2RhdGEsDQo+ICAJCXN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJy b3IpOw0KPiANCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDog dGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gKyAqDQo+ICsgKiBR dWVyeV91cGRhdGUgb3BlcmF0aW9uYWwgbW9kZS4NCj4gKyAqDQo+ICsgKiBSVEVfRkxPV19RVV9E RUZBVUxUDQo+ICsgKiAgIERlZmF1bHQgcXVlcnlfdXBkYXRlIG9wZXJhdGlvbmFsIG1vZGUuDQo+ ICsgKiAgIElmIGJvdGggYHVwZGF0ZWAgYW5kIGBxdWVyeWAgcGFyYW1ldGVycyBhcmUgbm90IE5V TEwgdGhlIGNhbGwgdXBkYXRlcw0KPiBhbmQNCg0KSSBkb24ndCB0aGluayB0aGUgYWJvdmUgbGlu ZSBpcyByZWxldmFudC4NCg0KPiArICogICBxdWVyaWVzIGFjdGlvbiBpbiBkZWZhdWx0IHBvcnQg b3JkZXIuDQo+ICsgKiAgIElmIGB1cGRhdGVgIHBhcmFtZXRlciBpcyBOVUxMIHRoZSBjYWxsIHF1 ZXJpZXMgYWN0aW9uLg0KPiArICogICBJZiBgcXVlcnlgIHBhcmFtZXRlciBpcyBOVUxMIHRoZSBj YWxsIHVwZGF0ZXMgYWN0aW9uLg0KPiArICogUlRFX0ZMT1dfUVVfUVVFUllfRklSU1QNCj4gKyAq ICAgRm9yY2UgcG9ydCB0byBxdWVyeSBhY3Rpb24gYmVmb3JlIHVwZGF0ZS4NCj4gKyAqIFJURV9G TE9XX1FVX1VQREFURV9GSVJTVA0KPiArICogICBGb3JjZSBwb3J0IHRvIHVwZGF0ZSBhY3Rpb24g YmVmb3JlIHVwZGF0ZS4NCj4gKyAqDQo+ICsgKiBAc2VlIHJ0ZV9mbG93X2FjdGlvbl9oYW5kbGVf cXVlcnlfdXBkYXRlKCkNCj4gKyAqIEBzZWUgcnRlX2Zsb3dfYXN5bmNfYWN0aW9uX2hhbmRsZV9x dWVyeV91cGRhdGUoKQ0KPiArICovDQo+ICtlbnVtIHJ0ZV9mbG93X3F1ZXJ5X3VwZGF0ZV9tb2Rl IHsNCj4gKwlSVEVfRkxPV19RVV9ERUZBVUxULCAgICAgIC8qIEhXIGRlZmF1bHQgbW9kZSAgKi8N Cg0KSSBkb24ndCB0aGluayB0aGlzIGlzIHZhbGlkLiBTaW5jZSBpZiB0aGUgYXBwbGljYXRpb24g aXMgbm90IGF3YXJlIG9mIHdoYXQgaXMgdGhlIGRlZmF1bHQNCml0IGNhbid0IGFzc3VtZSBhbnl0 aGluZyBhYm91dCB0aGUgcXVlcnkgdmFsdWUuDQpJZiB3ZSBrZWVwIGl0IG1lYW5zIHRoYXQgZWFj aCBQTUQgbXVzdCBkb2N1bWVudCB3aGF0IGlzIHRoZSBkZWZhdWx0Lg0KDQo+ICsJUlRFX0ZMT1df UVVfUVVFUllfRklSU1QsICAvKiBxdWVyeSBiZWZvcmUgdXBkYXRlICovDQo+ICsJUlRFX0ZMT1df UVVfVVBEQVRFX0ZJUlNULCAvKiBxdWVyeSBhZnRlciAgdXBkYXRlICovDQo+ICt9Ow0KPiArDQo+ ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1h eSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ICsgKg0KPiArICogUXVlcnkgYW5kL29y IHVwZGF0ZSBpbmRpcmVjdCBmbG93IGFjdGlvbi4NCg0KSSB0aGluayBiZXR0ZXIgd29yZGluZyB3 aWxsIGJlOg0KQXRvbWljIHF1ZXJ5IGFuZCB1cGRhdGUuDQpUaGlzIGZ1bmN0aW9uIGNhbiBhbHNv IGJlIHVzZWQganVzdCBmb3IgcXVlcnkvdXBkYXRlIHdoZW4gdGhlIG5vdCBuZWVkZWQNCmZpZWxk IGlzIE5VTEwuDQoNCkBzZWUgcnRlX2Zsb3dfYWN0aW9uX2hhbmRsZV91cGRhdGUuDQpAc2VlIHJ0 ZV9mbG93X2FjdGlvbl9oYW5kbGVfcXVlcnkNCg0KPiArICoNCj4gKyAqIEBwYXJhbVtpbl0gcG9y dF9pZA0KPiArICogICBQb3J0IGlkZW50aWZpZXIgb2YgRXRoZXJuZXQgZGV2aWNlLg0KPiArICog QHBhcmFtW2luXSBoYW5kbGUNCj4gKyAqICAgSGFuZGxlIGZvciB0aGUgaW5kaXJlY3QgYWN0aW9u IG9iamVjdCB0byBiZSB1cGRhdGVkLg0KPiArICogQHBhcmFtIHVwZGF0ZVtpbl0NCj4gKyAqICAg VXBkYXRlIHByb2ZpbGUgc3BlY2lmaWNhdGlvbiB1c2VkIHRvIG1vZGlmeSB0aGUgYWN0aW9uIHBv aW50ZWQgYnkNCj4gaGFuZGxlLg0KPiArICogICAqdXBkYXRlKiBjb3VsZCBiZSB3aXRoIHRoZSBz YW1lIHR5cGUgb2YgdGhlIGltbWVkaWF0ZSBhY3Rpb24NCj4gY29ycmVzcG9uZGluZw0KPiArICog ICB0byB0aGUgKmhhbmRsZSogYXJndW1lbnQgd2hlbiBjcmVhdGluZywgb3IgYSB3cmFwcGVyIHN0 cnVjdHVyZQ0KPiBpbmNsdWRlcw0KPiArICogICBhY3Rpb24gY29uZmlndXJhdGlvbiB0byBiZSB1 cGRhdGVkIGFuZCBiaXQgZmllbGRzIHRvIGluZGljYXRlIHRoZSBtZW1iZXINCj4gKyAqICAgb2Yg ZmllbGRzIGluc2lkZSB0aGUgYWN0aW9uIHRvIHVwZGF0ZS4NCj4gKyAqIEBwYXJhbVtvdXRdIHF1 ZXJ5DQo+ICsgKiAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIGFzc29jaWF0ZWQgcXVlcnkg ZGF0YSB0eXBlLg0KPiArICogQHBhcmFtW2luXSBtb2RlDQo+ICsgKiAgIE9wZXJhdGlvbmFsIG1v ZGUuDQo+ICsgKiBAcGFyYW1bb3V0XSBlcnJvcg0KPiArICogICBQZXJmb3JtIHZlcmJvc2UgZXJy b3IgcmVwb3J0aW5nIGlmIG5vdCBOVUxMLg0KPiArICogICBQTURzIGluaXRpYWxpemUgdGhpcyBz dHJ1Y3R1cmUgaW4gY2FzZSBvZiBlcnJvciBvbmx5Lg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4g KyAqIDAgb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5kIHJ0 ZV9lcnJubyBpcyBzZXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiAraW50DQo+ ICtydGVfZmxvd19hY3Rpb25faGFuZGxlX3F1ZXJ5X3VwZGF0ZSh1aW50MTZfdCBwb3J0X2lkLA0K PiArCQkJCSAgICBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX2hhbmRsZSAqaGFuZGxlLA0KPiArCQkJ CSAgICBjb25zdCB2b2lkICp1cGRhdGUsIHZvaWQgKnF1ZXJ5LA0KPiArCQkJCSAgICBlbnVtIHJ0 ZV9mbG93X3F1ZXJ5X3VwZGF0ZV9tb2RlDQo+IG1vZGUsDQo+ICsJCQkJICAgIHN0cnVjdCBydGVf Zmxvd19lcnJvciAqZXJyb3IpOw0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBA YiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2Uu DQo+ICsgKg0KPiArICogRW5xdWV1ZSBhc3luYyBpbmRpcmVjdCBmbG93IGFjdGlvbiBxdWVyeSBh bmQvb3IgdXBkYXRlDQo+ICsgKg0KDQpTYW1lIGNvbW1lbnRzIGFzIGFib3ZlLg0KDQo+ICsgKiBA cGFyYW1baW5dIHBvcnRfaWQNCj4gKyAqICAgUG9ydCBpZGVudGlmaWVyIG9mIEV0aGVybmV0IGRl dmljZS4NCj4gKyAqIEBwYXJhbVtpbl0gcXVldWVfaWQNCj4gKyAqICAgRmxvdyBxdWV1ZSB3aGlj aCBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgcnVsZS4NCj4gKyAqIEBwYXJhbVtpbl0gYXR0cg0KPiAr ICogICBJbmRpcmVjdCBhY3Rpb24gdXBkYXRlIG9wZXJhdGlvbiBhdHRyaWJ1dGVzLg0KPiArICog QHBhcmFtW2luXSBoYW5kbGUNCj4gKyAqICAgSGFuZGxlIGZvciB0aGUgaW5kaXJlY3QgYWN0aW9u IG9iamVjdCB0byBiZSB1cGRhdGVkLg0KPiArICogQHBhcmFtW2luXSB1cGRhdGUNCj4gKyAqICAg VXBkYXRlIHByb2ZpbGUgc3BlY2lmaWNhdGlvbiB1c2VkIHRvIG1vZGlmeSB0aGUgYWN0aW9uIHBv aW50ZWQgYnkNCj4gaGFuZGxlLg0KPiArICogICAqdXBkYXRlKiBjb3VsZCBiZSB3aXRoIHRoZSBz YW1lIHR5cGUgb2YgdGhlIGltbWVkaWF0ZSBhY3Rpb24NCj4gY29ycmVzcG9uZGluZw0KPiArICog ICB0byB0aGUgKmhhbmRsZSogYXJndW1lbnQgd2hlbiBjcmVhdGluZywgb3IgYSB3cmFwcGVyIHN0 cnVjdHVyZQ0KPiBpbmNsdWRlcw0KPiArICogICBhY3Rpb24gY29uZmlndXJhdGlvbiB0byBiZSB1 cGRhdGVkIGFuZCBiaXQgZmllbGRzIHRvIGluZGljYXRlIHRoZSBtZW1iZXINCj4gKyAqICAgb2Yg ZmllbGRzIGluc2lkZSB0aGUgYWN0aW9uIHRvIHVwZGF0ZS4NCj4gKyAqIEBwYXJhbVtpbl0gcXVl cnkNCj4gKyAqICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgYXNzb2NpYXRlZCBxdWVyeSBk YXRhIHR5cGUuDQo+ICsgKiAgIFF1ZXJ5IHJlc3VsdCByZXR1cm5lZCBvbiBhc3luYyBjb21wbGV0 aW9uIGV2ZW50Lg0KPiArICogQHBhcmFtW2luXSBtb2RlDQo+ICsgKiAgIE9wZXJhdGlvbmFsIG1v ZGUuDQo+ICsgKiBAcGFyYW1baW5dIHVzZXJfZGF0YQ0KPiArICogICBUaGUgdXNlciBkYXRhIHRo YXQgd2lsbCBiZSByZXR1cm5lZCBvbiBhc3luYyBjb21wbGV0aW9uIGV2ZW50Lg0KPiArICogQHBh cmFtW291dF0gZXJyb3INCj4gKyAqICAgUGVyZm9ybSB2ZXJib3NlIGVycm9yIHJlcG9ydGluZyBp ZiBub3QgTlVMTC4NCj4gKyAqICAgUE1EcyBpbml0aWFsaXplIHRoaXMgc3RydWN0dXJlIGluIGNh c2Ugb2YgZXJyb3Igb25seS4NCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIDAgb24gc3Vj Y2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5kIHJ0ZV9lcnJubyBpcyBz ZXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiAraW50DQo+ICtydGVfZmxvd19h c3luY19hY3Rpb25faGFuZGxlX3F1ZXJ5X3VwZGF0ZSh1aW50MTZfdCBwb3J0X2lkLCB1aW50MzJf dA0KPiBxdWV1ZV9pZCwNCj4gKwkJCQkJICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfb3BfYXR0ciAq YXR0ciwNCj4gKwkJCQkJICBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX2hhbmRsZQ0KPiAqaGFuZGxl LA0KPiArCQkJCQkgIGNvbnN0IHZvaWQgKnVwZGF0ZSwgdm9pZCAqcXVlcnksDQo+ICsJCQkJCSAg ZW51bQ0KPiBydGVfZmxvd19xdWVyeV91cGRhdGVfbW9kZSBtb2RlLA0KPiArCQkJCQkgIHZvaWQg KnVzZXJfZGF0YSwNCj4gKwkJCQkJICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4g Kw0KPiAgI2lmZGVmIF9fY3BsdXNwbHVzDQo+ICB9DQo+ICAjZW5kaWYNCj4gZGlmZiAtLWdpdCBh L2xpYi9ldGhkZXYvcnRlX2Zsb3dfZHJpdmVyLmggYi9saWIvZXRoZGV2L3J0ZV9mbG93X2RyaXZl ci5oDQo+IGluZGV4IGM3ZDA2OTljOTEuLjczNThjMTBhN2EgMTAwNjQ0DQo+IC0tLSBhL2xpYi9l dGhkZXYvcnRlX2Zsb3dfZHJpdmVyLmgNCj4gKysrIGIvbGliL2V0aGRldi9ydGVfZmxvd19kcml2 ZXIuaA0KPiBAQCAtMTE0LDYgKzExNCwxMyBAQCBzdHJ1Y3QgcnRlX2Zsb3dfb3BzIHsNCj4gIAkJ IGNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb25faGFuZGxlICpoYW5kbGUsDQo+ICAJCSB2b2lk ICpkYXRhLA0KPiAgCQkgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7DQo+ICsJLyoqIFNl ZSBydGVfZmxvd19hY3Rpb25faGFuZGxlX3F1ZXJ5X3VwZGF0ZSgpICovDQo+ICsJaW50ICgqYWN0 aW9uX2hhbmRsZV9xdWVyeV91cGRhdGUpDQo+ICsJCShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwN Cj4gKwkJIHN0cnVjdCBydGVfZmxvd19hY3Rpb25faGFuZGxlICpoYW5kbGUsDQo+ICsJCSBjb25z dCB2b2lkICp1cGRhdGUsIHZvaWQgKnF1ZXJ5LA0KPiArCQkgZW51bSBydGVfZmxvd19xdWVyeV91 cGRhdGVfbW9kZSBxdV9tb2RlLA0KPiArCQkgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7 DQo+ICAJLyoqIFNlZSBydGVfZmxvd190dW5uZWxfZGVjYXBfc2V0KCkgKi8NCj4gIAlpbnQgKCp0 dW5uZWxfZGVjYXBfc2V0KQ0KPiAgCQkoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+IEBAIC0y NzYsNiArMjgzLDE0IEBAIHN0cnVjdCBydGVfZmxvd19vcHMgew0KPiAgCQkgdm9pZCAqZGF0YSwN Cj4gIAkJIHZvaWQgKnVzZXJfZGF0YSwNCj4gIAkJIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJy b3IpOw0KPiArCS8qKiBTZWUgcnRlX2Zsb3dfYXN5bmNfYWN0aW9uX2hhbmRsZV9xdWVyeV91cGRh dGUgKi8NCj4gKwlpbnQgKCphc3luY19hY3Rpb25faGFuZGxlX3F1ZXJ5X3VwZGF0ZSkNCj4gKwkJ KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MzJfdCBxdWV1ZV9pZCwNCj4gKwkJIGNvbnN0 IHN0cnVjdCBydGVfZmxvd19vcF9hdHRyICpvcF9hdHRyLA0KPiArCQkgc3RydWN0IHJ0ZV9mbG93 X2FjdGlvbl9oYW5kbGUgKmFjdGlvbl9oYW5kbGUsDQo+ICsJCSBjb25zdCB2b2lkICp1cGRhdGUs IHZvaWQgKnF1ZXJ5LA0KPiArCQkgZW51bSBydGVfZmxvd19xdWVyeV91cGRhdGVfbW9kZSBxdV9t b2RlLA0KPiArCQkgdm9pZCAqdXNlcl9kYXRhLCBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9y KTsNCj4gIH07DQo+IA0KPiAgLyoqDQo+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3ZlcnNpb24u bWFwIGIvbGliL2V0aGRldi92ZXJzaW9uLm1hcA0KPiBpbmRleCAxNzIwMWZiZTBmLi40MmYwZDdi MzBjIDEwMDY0NA0KPiAtLS0gYS9saWIvZXRoZGV2L3ZlcnNpb24ubWFwDQo+ICsrKyBiL2xpYi9l dGhkZXYvdmVyc2lvbi5tYXANCj4gQEAgLTI5OCw2ICsyOTgsMTEgQEAgRVhQRVJJTUVOVEFMIHsN Cj4gIAlydGVfZmxvd19nZXRfcV9hZ2VkX2Zsb3dzOw0KPiAgCXJ0ZV9tdHJfbWV0ZXJfcG9saWN5 X2dldDsNCj4gIAlydGVfbXRyX21ldGVyX3Byb2ZpbGVfZ2V0Ow0KPiArDQo+ICsJIyBmdXR1cmUN Cj4gKwlydGVfZmxvd19hY3Rpb25faGFuZGxlX3F1ZXJ5X3VwZGF0ZTsNCj4gKwlydGVfZmxvd19h c3luY19hY3Rpb25faGFuZGxlX3F1ZXJ5X3VwZGF0ZTsNCj4gKw0KPiAgfTsNCj4gDQo+ICBJTlRF Uk5BTCB7DQo+IC0tDQo+IDIuMzQuMQ0KDQpCZXN0LA0KT3JpDQoNCg==