From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA70EC43381 for ; Thu, 28 Feb 2019 10:50:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 94E4B2183F for ; Thu, 28 Feb 2019 10:50:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="blPNDTZi" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731376AbfB1KuM (ORCPT ); Thu, 28 Feb 2019 05:50:12 -0500 Received: from mail-eopbgr150074.outbound.protection.outlook.com ([40.107.15.74]:51286 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1731270AbfB1KuM (ORCPT ); Thu, 28 Feb 2019 05:50:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VtFmXXCl1l6+/YlOTy3vOiJHFseZdc0ku1a48lCfKjA=; b=blPNDTZiKBkYW/h3Cej3e/RvIWo7kxxanV7vS5yl8H4CMItAi03dEIprKv+ApPhnXLLtRfke5xrcOz2mBlQ9+KYaqPjAKPgQQy71CAdyL4A2Qc7Z+UzL70+KHNAHQKvfE9GKnWTYlNTmhOTxIN1rkxGdvGilDWEKMyTuGSC+6tw= Received: from AM6PR05MB5879.eurprd05.prod.outlook.com (20.179.0.76) by AM6PR05MB5957.eurprd05.prod.outlook.com (20.179.1.79) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1665.15; Thu, 28 Feb 2019 10:50:03 +0000 Received: from AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::9944:556b:9569:9b53]) by AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::9944:556b:9569:9b53%3]) with mapi id 15.20.1665.015; Thu, 28 Feb 2019 10:50:03 +0000 From: Maxim Mikityanskiy To: Jonathan Lemon CC: =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , John Fastabend , "netdev@vger.kernel.org" , =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , Magnus Karlsson , "David S. Miller" , Tariq Toukan , Saeed Mahameed , Eran Ben Elisha Subject: RE: AF_XDP design flaws Thread-Topic: AF_XDP design flaws Thread-Index: AdTN4YAOICnun2ZQR0OvVwAOQ6l7UgAEJkyAACBjmoAADR6TQAAN7kuAABpC+nA= Date: Thu, 28 Feb 2019 10:49:47 +0000 Deferred-Delivery: Thu, 28 Feb 2019 10:49:03 +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: spf=none (sender IP is ) smtp.mailfrom=maximmi@mellanox.com; x-originating-ip: [95.67.35.250] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f5cac827-484f-4ca0-c073-08d69d6a7e91 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM6PR05MB5957; x-ms-traffictypediagnostic: AM6PR05MB5957: x-microsoft-exchange-diagnostics: =?utf-8?B?MTtBTTZQUjA1TUI1OTU3OzIzOmtyRXRtb1cvMElvM1JlSFVlalVjZS90UExB?= =?utf-8?B?V21aQ2NucXN0b2VkanoxdzNOTlVHdVd1SUN6di9XL0p6N0xxVklhTUo3N0Ny?= =?utf-8?B?Zk1RT0lyMWwvNUY1Sk8rNG1HVHZNOUdpeVgybmtWRmlYUUhBRUNSNTNjSG44?= =?utf-8?B?RGZydllUbXRhZTdLZ2Z4Vkk2QXlsVTFZcmVLVXBLQWt0RlVrTGJCWmNVS0dO?= =?utf-8?B?UU15NHFFanlUZDNuNVZXSU0wMUd6VUdVNmpJbHVXMDBEbVgyV2VxY1ZwaE04?= =?utf-8?B?QnlnQTY5TmNXYzFXK1NpdDFpNjdXTkgvaXZUQWJ3bGJ5VGpXMW5pa0NoUDJl?= =?utf-8?B?YTR5QkQzR1RVVks2SjV3MmdsVGVZT1Axa3M3Qk91L0dFbnZLRTUvMG4ySVhs?= =?utf-8?B?T2JrVmhnTnFYMGRqeVBwMnoybDRjaFJydm5ZZEIxdnB6ZW5JNGFjZ0RsY0RP?= =?utf-8?B?RlNWaDR5MkpwVUUyQlRhdDdTV2dkWW5LYURRYUsyVjV0NkdtdFcweEMydEkz?= =?utf-8?B?NXlhUE1kSW1oZjBoU0JSTEdEWXdDK1Z1Rnh5T3VKcFY3b2h0YTdWMjZXZ25u?= =?utf-8?B?d0Q5b1k3Z3dib052czUwZnFGbXVPTmV3U214dTdPNlM4R25GRnBKYm54N2N4?= =?utf-8?B?MzRzN002aXc0Vk9HY1hQT0Q2SjAzSHl2TGcyMU0ramRtSzFJZUV0QmY5ZkFC?= =?utf-8?B?VEEveXdjeE1FRTV4WlNSUjZkQmoxNnI1ZDBiUjF0eUdTVUxwaGc5M04wL1FP?= =?utf-8?B?TUNJbS9Tek0rRWlGWGo5QzRKV0V6NDc5WlVtcnd2OVdrcWxpZHBPMmNQeDZU?= =?utf-8?B?VFlmYkNyWUpjYUJxaW1qa3cvdXYrdW9VVkVpUGZCYXJiK3pUV2kzUG04YVF3?= =?utf-8?B?bzlQM2VDQ1NqUVNEVEZuaVZtTWJid0c1ZGFiNXBYR2VUSGY1bVRzNnNMQ3JK?= =?utf-8?B?N2xQOUx5bTlOZ2RXeEdLUWRRaUtGY2FncDFnZnovRDJjTzZXTU1XdkV1elY5?= =?utf-8?B?U0x6WmVyRXliQU1pM29CZ2g0cHlYRnk1ZW9DbjR3bVM0cGhLeEZDbWQ1bmNF?= =?utf-8?B?MlhVQ2FwcWR3NHYyMkV3S2tOWk8zNHJyZ01pbzErWmpBU3gwN3FZbmVqTmsx?= =?utf-8?B?SHQrQitIdkRSZG1qUDdZK1U5anN4RW5ibUZ4RVpjSGRxZkRoMUdoY3JVQ3ZH?= =?utf-8?B?K3RLVTFoYTFQc0s4emZuZDAvRm1tYXFlRWRrRGxRWVpqbmVhNUNPcW9wcGRa?= =?utf-8?B?VzRhbkNaUUl3U2pPN25EZlZCNkdYbU8zT1owN3c2T3I0TFZBUEcwVmwzZHhk?= =?utf-8?B?Y2lDaXNkdXIrNVJoU1B2eEpuSFRoMHNjUzkzR0hoTFpGbjVxdmFJbERMMmZE?= =?utf-8?B?QUxvdVFKUjdicURYajRnOVhEYkZScndPYXQramViMEVla2pVU1hIS2pSR1J6?= =?utf-8?B?NHBrdE5LbjhvNnNqQjRhZER5UjNEWWNjTFNySCtCSUV1SkxTa1gvcE0xQTdQ?= =?utf-8?B?ZFJvRGJRUzVHWnN3L0R3U3FyeTcwNUcxbzdiOHVhbG5VbTNqVXJZZmNnOHcw?= =?utf-8?B?OGdYbHVncDM3QmVtQU5ISlE4WERMVlZyQ29yM2N0U3pOQmVySUV2Tm5yQ01y?= =?utf-8?B?YnNPem9DT3AwbEZDVEk1MVpqdHp6MWxYTk9JZ1c3YUxsZjB6Y203Uk9mVEVn?= =?utf-8?B?SENnRjhvNndENDdEelZvRUxwOTFjR1p0Ly9UU24rYjMrcUpNUnBZVk5LNy9a?= =?utf-8?B?Y0tWSFZaMWVKNTd4NVBsZzBGMVZFN0VuME5lY3RERFhBcnRNSG4wcHZ6dW5Y?= =?utf-8?B?SFVPMUg3dnRJS2g2NXNVN3NMWlZQWVc3b1l2ekJ1aFJVckx0Yk0zQ0RTMGt1?= =?utf-8?Q?UooNqYfDFNnkIBXn12noxGLFBwg+b6Wf?= x-microsoft-antispam-prvs: x-forefront-prvs: 0962D394D2 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(39860400002)(396003)(376002)(346002)(366004)(13464003)(53754006)(199004)(189003)(93886005)(186003)(478600001)(4326008)(5660300002)(2906002)(6116002)(106356001)(105586002)(66574012)(25786009)(86362001)(3846002)(54906003)(7736002)(52536013)(316002)(6916009)(8936002)(6506007)(53546011)(6666004)(53936002)(305945005)(6246003)(7116003)(71200400001)(256004)(71190400001)(11346002)(68736007)(107886003)(14444005)(81166006)(81156014)(8676002)(76176011)(229853002)(55016002)(7696005)(97736004)(33656002)(26005)(476003)(446003)(486006)(66066001)(9686003)(99286004)(14454004)(102836004)(74316002)(6436002);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB5957;H:AM6PR05MB5879.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: zJzQ7pm/DpRdnrc3z0HAaIawvsyQKuk2JpmOsuOJXWwe4m6VMXqM8ifupduu/YatD1ZU8OwOQnRGqC0c2kCm3jzeyYCNEcoBkrUEyVsGgvilnysppNYmKS5LxnLuJou6RiwMZ+JiBivFbiv1EAy7WOWipLzB02/aVrxb/NeceaaZmozoqc4bUrVEHEg04ooHBEiCNuc/nx3AvBw0LtzhZLrHg91V/KCdV5yN0uDU0c+GPjSdjmWGC9WK5l/OhPwXBpWlw6vb3CncIwuwZAZZJLnnO9a/V5YZxQTWc5Hhr8O2bPdW/gnYoNPxoVYLUwFnC4+VaUIaFevM7HHA+x9WigVSs0Wla4XlVCIwAieqXlzIRGodyjyzBHH5nro1/gusm/7ELL3naJDglTKXB/+lMoYaIHVASH0lgMnxufi8jVk= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5cac827-484f-4ca0-c073-08d69d6a7e91 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Feb 2019 10:50:03.3988 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB5957 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKb25hdGhhbiBMZW1vbiA8am9u YXRoYW4ubGVtb25AZ21haWwuY29tPg0KPiBTZW50OiAyNyBGZWJydWFyeSwgMjAxOSAyMzowMw0K PiBUbzogTWF4aW0gTWlraXR5YW5za2l5IDxtYXhpbW1pQG1lbGxhbm94LmNvbT4NCj4gQ2M6IEJq w7ZybiBUw7ZwZWwgPGJqb3JuLnRvcGVsQGdtYWlsLmNvbT47IEpvaG4gRmFzdGFiZW5kDQo+IDxq b2huLmZhc3RhYmVuZEBnbWFpbC5jb20+OyBuZXRkZXZAdmdlci5rZXJuZWwub3JnOyBCasO2cm4g VMO2cGVsDQo+IDxiam9ybi50b3BlbEBpbnRlbC5jb20+OyBNYWdudXMgS2FybHNzb24gPG1hZ251 cy5rYXJsc3NvbkBpbnRlbC5jb20+OyBEYXZpZA0KPiBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9m dC5uZXQ+OyBUYXJpcSBUb3VrYW4gPHRhcmlxdEBtZWxsYW5veC5jb20+OyBTYWVlZA0KPiBNYWhh bWVlZCA8c2FlZWRtQG1lbGxhbm94LmNvbT47IEVyYW4gQmVuIEVsaXNoYSA8ZXJhbmJlQG1lbGxh bm94LmNvbT4NCj4gU3ViamVjdDogUmU6IEFGX1hEUCBkZXNpZ24gZmxhd3MNCj4gDQo+IE9uIDI3 IEZlYiAyMDE5LCBhdCAxMToxNywgTWF4aW0gTWlraXR5YW5za2l5IHdyb3RlOg0KPiANCj4gPj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogQmrDtnJuIFTDtnBlbCA8Ympv cm4udG9wZWxAZ21haWwuY29tPg0KPiA+PiBTZW50OiAyNyBGZWJydWFyeSwgMjAxOSAxMDowOQ0K PiA+PiBUbzogSm9obiBGYXN0YWJlbmQgPGpvaG4uZmFzdGFiZW5kQGdtYWlsLmNvbT4NCj4gPj4g Q2M6IE1heGltIE1pa2l0eWFuc2tpeSA8bWF4aW1taUBtZWxsYW5veC5jb20+Ow0KPiA+PiBuZXRk ZXZAdmdlci5rZXJuZWwub3JnOyBCasO2cm4NCj4gPj4gVMO2cGVsIDxiam9ybi50b3BlbEBpbnRl bC5jb20+OyBNYWdudXMgS2FybHNzb24NCj4gPj4gPG1hZ251cy5rYXJsc3NvbkBpbnRlbC5jb20+ Ow0KPiA+PiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+OyBUYXJpcSBUb3Vr YW4NCj4gPj4gPHRhcmlxdEBtZWxsYW5veC5jb20+Ow0KPiA+PiBTYWVlZCBNYWhhbWVlZCA8c2Fl ZWRtQG1lbGxhbm94LmNvbT47IEVyYW4gQmVuIEVsaXNoYQ0KPiA+PiA8ZXJhbmJlQG1lbGxhbm94 LmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IEFGX1hEUCBkZXNpZ24gZmxhd3MNCj4gPj4NCj4gPj4g T24gMjAxOS0wMi0yNiAxNzo0MSwgSm9obiBGYXN0YWJlbmQgd3JvdGU6DQo+ID4+PiBPbiAyLzI2 LzE5IDY6NDkgQU0sIE1heGltIE1pa2l0eWFuc2tpeSB3cm90ZToNCj4gPj4+PiBIaSBldmVyeW9u ZSwNCj4gPj4+Pg0KPiA+Pg0KPiA+PiBIaSEgSXQncyBleGNpdGluZyB0byBzZWUgbW9yZSB2ZW5k b3JzIGxvb2tpbmcgaW50byBBRl9YRFAuIEFSTSB3YXMNCj4gPj4gaW52b2x2ZWQgZWFybHkgb24s IGFuZCBub3cgTWVsbGFub3guIDotKSBJdCdzIHJlYWxseSBpbXBvcnRhbnQgdGhhdA0KPiA+PiB0 aGUgQUZfWERQIG1vZGVsIGlzIGEgZ29vZCBmaXQgZm9yIGFsbCBkcml2ZXJzL3ZlbmRvcnMhIFRo YW5rcyBmb3INCj4gPj4gbG9va2luZyBpbnRvIHRoaXMuDQo+ID4+DQo+ID4+Pj4gSSB3b3VsZCBs aWtlIHRvIGRpc2N1c3Mgc29tZSBkZXNpZ24gZmxhd3Mgb2YgQUZfWERQIHNvY2tldCAoWFNLKQ0K PiA+PiBpbXBsZW1lbnRhdGlvbg0KPiA+Pj4+IGluIGtlcm5lbC4gQXQgdGhlIG1vbWVudCBJIGRv bid0IHNlZSBhIHdheSB0byB3b3JrIGFyb3VuZCB0aGVtDQo+ID4+Pj4gd2l0aG91dA0KPiA+PiBj aGFuZ2luZw0KPiA+Pj4+IHRoZSBBUEksIHNvIEkgd291bGQgbGlrZSB0byBtYWtlIHN1cmUgdGhh dCBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcNCj4gPj4+PiBhbmQNCj4gPj4gdG8NCj4gPj4+PiBz dWdnZXN0IGFuZCBkaXNjdXNzIHNvbWUgcG9zc2libGUgaW1wcm92ZW1lbnRzIHRoYXQgY2FuIGJl IG1hZGUuDQo+ID4+Pj4NCj4gPj4+PiBUaGUgaXNzdWVzIEkgZGVzY3JpYmUgYmVsb3cgYXJlIGNh dXNlZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBkcml2ZXINCj4gPj4gZGVwZW5kcyBvbg0KPiA+Pj4+ IHRoZSBhcHBsaWNhdGlvbiBkb2luZyBzb21lIHRoaW5ncywgYW5kIGlmIHRoZSBhcHBsaWNhdGlv biBpcw0KPiA+Pj4+IHNsb3cvYnVnZ3kvbWFsaWNpb3VzLCB0aGUgZHJpdmVyIGlzIGZvcmNlZCB0 byBidXN5IHBvbGwgYmVjYXVzZSBvZg0KPiA+Pj4+IHRoZQ0KPiA+PiBsYWNrIG9mIGENCj4gPj4+ PiBub3RpZmljYXRpb24gbWVjaGFuaXNtIGZyb20gdGhlIGFwcGxpY2F0aW9uIHNpZGUuIEkgd2ls bCByZWZlciB0bw0KPiA+Pj4+IHRoZQ0KPiA+PiBpNDBlDQo+ID4+Pj4gZHJpdmVyIGltcGxlbWVu dGF0aW9uIGEgbG90LCBhcyBpdCBpcyB0aGUgZmlyc3QgaW1wbGVtZW50YXRpb24gb2YNCj4gPj4+ PiBBRl9YRFAsDQo+ID4+IGJ1dA0KPiA+Pj4+IHRoZSBpc3N1ZXMgYXJlIGdlbmVyYWwgYW5kIGFm ZmVjdCBhbnkgZHJpdmVyLiBJIGFscmVhZHkgY29uc2lkZXJlZA0KPiA+Pj4+IHRyeWluZw0KPiA+ PiB0byBmaXgNCj4gPj4+PiBpdCBvbiBkcml2ZXIgbGV2ZWwsIGJ1dCBpdCBkb2Vzbid0IHNlZW0g cG9zc2libGUsIHNvIGl0IGxvb2tzIGxpa2UNCj4gPj4+PiB0aGUNCj4gPj4gYmVoYXZpb3INCj4g Pj4+PiBhbmQgaW1wbGVtZW50YXRpb24gb2YgQUZfWERQIGluIHRoZSBrZXJuZWwgaGFzIHRvIGJl IGNoYW5nZWQuDQo+ID4+Pj4NCj4gPj4+PiBSWCBzaWRlIGJ1c3kgcG9sbGluZw0KPiA+Pj4+ID09 PT09PT09PT09PT09PT09PT09DQo+ID4+Pj4NCj4gPj4+PiBPbiB0aGUgUlggc2lkZSwgdGhlIGRy aXZlciBleHBlY3RzIHRoZSBhcHBsaWNhdGlvbiB0byBwdXQgc29tZQ0KPiA+PiBkZXNjcmlwdG9y cyBpbg0KPiA+Pj4+IHRoZSBGaWxsIFJpbmcuIFRoZXJlIGlzIG5vIHdheSBmb3IgdGhlIGFwcGxp Y2F0aW9uIHRvIG5vdGlmeSB0aGUNCj4gPj4+PiBkcml2ZXINCj4gPj4gdGhhdA0KPiA+Pj4+IHRo ZXJlIGFyZSBtb3JlIEZpbGwgUmluZyBkZXNjcmlwdG9ycyB0byB0YWtlLCBzbyB0aGUgZHJpdmVy IGlzDQo+ID4+Pj4gZm9yY2VkIHRvDQo+ID4+IGJ1c3kNCj4gPj4+PiBwb2xsIHRoZSBGaWxsIFJp bmcgaWYgaXQgZ2V0cyBlbXB0eS4gRS5nLiwgdGhlIGk0MGUgZHJpdmVyIGRvZXMgaXQNCj4gPj4+ PiBpbg0KPiA+PiBOQVBJIHBvbGw6DQo+ID4+Pj4NCj4gPj4+PiBpbnQgaTQwZV9jbGVhbl9yeF9p cnFfemMoc3RydWN0IGk0MGVfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldCkNCj4gPj4+PiB7DQo+ ID4+Pj4gLi4uDQo+ID4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUgPSBmYWls dXJlIHx8DQo+ID4+Pj4NCj4gPj4gIWk0MGVfYWxsb2NfcnhfYnVmZmVyc19mYXN0X3pjKHJ4X3Jp bmcsDQo+ID4+Pj4NCj4gPj4gY2xlYW5lZF9jb3VudCk7DQo+ID4+Pj4gLi4uDQo+ID4+Pj4gICAg ICAgICAgcmV0dXJuIGZhaWx1cmUgPyBidWRnZXQgOiAoaW50KXRvdGFsX3J4X3BhY2tldHM7DQo+ ID4+Pj4gfQ0KPiA+Pj4+DQo+ID4+Pj4gQmFzaWNhbGx5LCBpdCBtZWFucyB0aGF0IGlmIHRoZXJl IGFyZSBubyBkZXNjcmlwdG9ycyBpbiB0aGUgRmlsbA0KPiA+Pj4+IFJpbmcsDQo+ID4+IE5BUEkg d2lsbA0KPiA+Pj4+IG5ldmVyIHN0b3AsIGRyYWluaW5nIENQVS4NCj4gPj4+Pg0KPiA+Pj4+IFBv c3NpYmxlIGNhc2VzIHdoZW4gaXQgaGFwcGVucw0KPiA+Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPiA+Pj4+DQo+ID4+Pj4gMS4gVGhlIGFwcGxpY2F0aW9uIGlzIHNsb3csIGl0 IHJlY2VpdmVkIHNvbWUgZnJhbWVzIGluIHRoZSBSWCBSaW5nLA0KPiA+Pj4+IGFuZA0KPiA+PiBp dCBpcw0KPiA+Pj4+IHN0aWxsIGhhbmRsaW5nIHRoZSBkYXRhLCBzbyBpdCBoYXMgbm8gZnJlZSBm cmFtZXMgdG8gcHV0IHRvIHRoZQ0KPiA+Pj4+IEZpbGwNCj4gPj4gUmluZy4NCj4gPj4+Pg0KPiA+ Pj4+IDIuIFRoZSBhcHBsaWNhdGlvbiBpcyBtYWxpY2lvdXMsIGl0IG9wZW5zIGFuIFhTSyBhbmQg cHV0cyBubyBmcmFtZXMNCj4gPj4+PiB0bw0KPiA+PiB0aGUgRmlsbA0KPiA+Pj4+IFJpbmcuIEl0 IGNhbiBiZSB1c2VkIGFzIGEgbG9jYWwgRG9TIGF0dGFjay4NCj4gPj4+Pg0KPiA+Pj4+IDMuIFRo ZSBhcHBsaWNhdGlvbiBpcyBidWdneSBhbmQgc3RvcHMgZmlsbGluZyB0aGUgRmlsbCBSaW5nIGZv cg0KPiA+Pj4+IHdoYXRldmVyDQo+ID4+IHJlYXNvbg0KPiA+Pj4+IChkZWFkbG9jaywgd2FpdGlu ZyBmb3IgYW5vdGhlciBibG9ja2luZyBvcGVyYXRpb24sIG90aGVyIGJ1Z3MpLg0KPiA+Pj4+DQo+ ID4+Pj4gQWx0aG91Z2ggbG9hZGluZyBhbiBYRFAgcHJvZ3JhbSByZXF1aXJlcyByb290IGFjY2Vz cywgdGhlIERvUw0KPiA+Pj4+IGF0dGFjayBjYW4NCj4gPj4gYmUNCj4gPj4+PiB0YXJnZXRlZCB0 byBzZXR1cHMgdGhhdCBhbHJlYWR5IHVzZSBYRFAsIGkuZS4gYW4gWERQIHByb2dyYW0gaXMNCj4g Pj4+PiBhbHJlYWR5DQo+ID4+IGxvYWRlZC4NCj4gPj4+PiBFdmVuIHVuZGVyIHJvb3QsIHVzZXJz cGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIG5vdCBiZSBhYmxlIHRvDQo+ID4+Pj4gZGlzcnVwdA0K PiA+PiBzeXN0ZW0NCj4gPj4+PiBzdGFiaWxpdHkgYnkganVzdCBjYWxsaW5nIG5vcm1hbCBBUElz IHdpdGhvdXQgYW4gaW50ZW50aW9uIHRvDQo+ID4+Pj4gZGVzdHJveSB0aGUNCj4gPj4+PiBzeXN0 ZW0sIGFuZCBoZXJlIGl0IGhhcHBlbnMgaW4gY2FzZSAxLg0KPiA+Pj4gSSBiZWxpZXZlIHRoaXMg aXMgYnkgZGVzaWduLiBJZiBwYWNrZXRzIHBlciBzZWNvbmQgaXMgeW91ciB0b3ANCj4gPj4+IHBy aW9yaXR5DQo+ID4+PiAoYXQgdGhlIGV4cGVuc2Ugb2YgcG93ZXIsIGNwdSwgZXRjLikgdGhpcyBp cyB0aGUgYmVoYXZpb3IgeW91IG1pZ2h0DQo+ID4+PiB3YW50LiBUbyByZXNvbHZlIHlvdXIgcG9p bnRzIGlmIHlvdSBkb24ndCB0cnVzdCB0aGUgYXBwbGljYXRpb24gaXQNCj4gPj4+IHNob3VsZCBi ZSBpc29sYXRlZCB0byBhIHF1ZXVlIHBhaXIgYW5kIGNvcmVzIHNvIHRoZSBpbXBhY3QgaXMga25v d24NCj4gPj4+IGFuZA0KPiA+Pj4gbWFuYWdlZC4NCj4gPj4+DQo+ID4+DQo+ID4+IENvcnJlY3Qs IGFuZCBJIGFncmVlIHdpdGggSm9obiBoZXJlLiBBRl9YRFAgaXMgYSByYXcgaW50ZXJmYWNlLCBh bmQNCj4gPj4gbmVlZHMgdG8gYmUgbWFuYWdlZC4NCj4gPg0KPiA+IE9LLCByaWdodCwgaWYgeW91 IHdhbnQgaGlnaCBwcHMgc2FjcmlmaWNpbmcgc3lzdGVtIHN0YWJpbGl0eSBhbmQNCj4gPiBrZXJu ZWwtdXNlcnNwYWNlIGlzb2xhdGlvbiwgWFNLIGlzIGF0IHlvdXIgc2VydmljZS4gSXQgbWF5IGJl IGEgdmFsaWQNCj4gPiBwb2ludC4gSG93ZXZlciwgdGhlcmUgaXMgc3RpbGwgdGhlIGlzc3VlIG9m IHVuaW50ZW5kZWQgdXNlLg0KPiANCj4gSSBiZWxpZXZlIHRoaXMgaXMgYSBkb3VibGUtZWRnZWQg c3dvcmQgLSBvbiBvbmUgaGFuZCwgaXQgYXBwZWFycyBBRl9YRFANCj4gaXMNCj4gYWltZWQgYXMg YSBjb21wZXRpdG9yIHRvIERQREssIGFuZCBpcyBmb2N1c2VkIG9ubHkgb24gcmF3IHBhY2tldCBz cGVlZCwNCj4gYXQNCj4gdGhlIGV4cGVuc2Ugb2YgdXNhYmlsaXR5LiAgVGhpcyBpc24ndCBuZWNl c3NhcmlseSBiYWQsIGJ1dCBpbiBteQ0KPiBleHBlcmllbmNlLA0KPiBpZiB0aGluZ3MgYXJlbid0 IHNpbXBsZSB0byB1c2UsIHRoZW4gdGhleSB0ZW5kIG5vdCB0byBnZXQgd2lkZWx5IHVzZWQuDQoN CllvdSBhcmUgcmlnaHQsIGJ1dCBub3QgZ2V0dGluZyB3aWRlc3ByZWFkIGFsc28gbGVhZHMgdG8g dGhlIGxhY2sgb2YNCnVzYWdlIGV4YW1wbGVzLCB3aGljaCBpbiB0dXJuIGNhbiBsZWFkIHRvIEFQ SSBtaXN1c2UuIEFub3RoZXIgcG9pbnQgaXMNCnRoYXQgaW4gdGhlIHBhc3QgdGhlcmUgd2VyZSBz ZWN1cml0eSBpc3N1ZXMgZm91bmQgaW4gdGhlIGNvZGUgdGhhdCBpcw0KcmFyZWx5IHVzZWQgYnV0 IHR1cm5lZCBvbiBpbiBiaW5hcnkga2VybmVscywgYW5kIEFGX1hEUCBpcyBzdWNoIGtpbmQgb2YN CmNvZGUgLSBtYWx3YXJlIGNhbiBtYWtlIHVzZSBvZiBpdHMgZmxhd3MgZXZlbiBpZiBpdCdzIG5v dCB1c2VkDQpsZWdpdGltYXRlbHkgb24gYSBnaXZlbiBzeXN0ZW0uDQoNCj4gPiBJZiB5b3UgdXNl IFhTSywgeW91IGNhbiB0YWtlIG1lYXN1cmVzIHRvIHByZXZlbnQgdGhlIGRpc3J1cHRpb24sIGUu Zy4NCj4gPiBydW4gb25seSB0cnVzdGVkIGFuZCBwcm9wZXJseSB0ZXN0ZWQgYXBwbGljYXRpb25z IG9yIGlzb2xhdGUgdGhlbS4NCj4gPiBIb3dldmVyLCB0aGVyZSBpcyBhIGNhc2Ugd2hlcmUgWFNL cyBhcmUgbm90IHJlYWxseSB1c2VkIG9uIGEgZ2l2ZW4NCj4gPiBtYWNoaW5lLCBidXQgYXJlIHN0 aWxsIGF2YWlsYWJsZSAoQ09ORklHX1hEUF9TT0NLRVRTPXkpLCBvcGVuaW5nIGENCj4gPiBodWdl DQo+ID4gaG9sZS4gSWYgeW91IGRvbid0IGV2ZW4ga25vdyB0aGF0IFhTSyBleGlzdHMsIHlvdSBh cmUgc3RpbGwNCj4gPiB2dWxuZXJhYmxlLg0KPiA+DQo+ID4+PiBUaGF0IHNhaWQgaGF2aW5nIGEg ZmxhZyB0byBiYWNrLW9mZiBzZWVtcyBsaWtlIGEgZ29vZCBpZGVhLiBCdXQNCj4gPj4+IHNob3Vs ZA0KPiA+Pj4gYmUgZG9hYmxlIGFzIGEgZmVhdHVyZSB3aXRob3V0IGJyZWFraW5nIGN1cnJlbnQg QVBJLg0KPiA+DQo+ID4gQSBmbGFnIGNhbiBiZSBhZGRlZCwgZS5nLiwgdG8gdGhlIHN4ZHBfZmxh Z3MgZmllbGQgb2Ygc3RydWN0DQo+ID4gc29ja2FkZHJfeGRwLCB0byBzd2l0Y2ggdG8gdGhlIGJl aGF2aW9yIHdpdGhvdXQgYnVzeSBwb2xsaW5nIG9uIGVtcHR5DQo+ID4gRmlsbCBSaW5nLg0KPiA+ DQo+ID4gSG93ZXZlciwgSSBkb24ndCB0aGluayB0aGUgdnVsbmVyYWJpbGl0eSBjYW4gYmUgZWxp bWluYXRlZCB3aGlsZQ0KPiA+IGtlZXBpbmcNCj4gPiB0aGUgQVBJIGludGFjdC4gVG8gcHJvdGVj dCB0aGUgc3lzdGVtcyB0aGF0IGRvbid0IHVzZSBYU0ssIHdlIG5lZWQgb25lDQo+ID4gb2YgdGhl c2UgdGhpbmdzOg0KPiA+DQo+ID4gLSBEaXNhYmxlIFhTSyBzdXBwb3J0IGJ5IGRlZmF1bHQsIHVu dGlsIGV4cGxpY2l0bHkgZW5hYmxlZCBieSByb290Lg0KPiA+DQo+ID4gLSBEaXNhYmxlIHRoZSBv bGQgYmVoYXZpb3IgYnkgZGVmYXVsdCwgdW50aWwgZXhwbGljaXRseSBlbmFibGVkIGJ5DQo+ID4g cm9vdC4NCj4gPg0KPiA+IEJvdGggb2YgdGhvc2UgdGhpbmdzIHdpbGwgcmVxdWlyZSBhZGRpdGlv bmFsIHNldHVwIG9uIG1hY2hpbmVzIHRoYXQNCj4gPiB1c2UNCj4gPiBYU0ssIGFmdGVyIHVwZ3Jh ZGluZyB0aGUga2VybmVsLg0KPiA+DQo+ID4+Pj4gUG9zc2libGUgd2F5IHRvIHNvbHZlIHRoZSBp c3N1ZQ0KPiA+Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPj4+Pg0KPiA+ Pj4+IFdoZW4gdGhlIGRyaXZlciBjYW4ndCB0YWtlIG5ldyBGaWxsIFJpbmcgZnJhbWVzLCBpdCBz aG91bGRuJ3QgYnVzeQ0KPiA+Pj4+IHBvbGwuDQo+ID4+Pj4gSW5zdGVhZCwgaXQgc2lnbmFscyB0 aGUgZmFpbHVyZSB0byB0aGUgYXBwbGljYXRpb24gKGUuZy4sIHdpdGgNCj4gPj4+PiBQT0xMRVJS KSwNCj4gPj4gYW5kDQo+ID4+Pj4gYWZ0ZXIgdGhhdCBpdCdzIHVwIHRvIHRoZSBhcHBsaWNhdGlv biB0byByZXN0YXJ0IHBvbGxpbmcgKGUuZy4sIGJ5DQo+ID4+IGNhbGxpbmcNCj4gPj4+PiBzZW5k dG8oKSkgYWZ0ZXIgcmVmaWxsaW5nIHRoZSBGaWxsIFJpbmcuIFRoZSBpc3N1ZSB3aXRoIHRoaXMN Cj4gPj4+PiBhcHByb2FjaCBpcw0KPiA+PiB0aGF0IGl0DQo+ID4+Pj4gY2hhbmdlcyB0aGUgQVBJ LCBzbyB3ZSBlaXRoZXIgaGF2ZSB0byBkZWFsIHdpdGggaXQgb3IgdG8gaW50cm9kdWNlDQo+ID4+ Pj4gc29tZQ0KPiA+PiBBUEkNCj4gPj4+PiB2ZXJzaW9uIGZpZWxkLg0KPiA+Pj4gU2VlIGFib3Zl LiBJIGxpa2UgdGhlIGlkZWEgaGVyZSB0aG91Z2guDQo+ID4+Pg0KPiA+Pg0KPiA+PiBUaGUgdWFw aSBkb2Vzbid0IG1hbmRhdGUgKmhvdyogdGhlIGRyaXZlciBzaG91bGQgYmVoYXZlLiBUaGUgcmF0 aW9uYWwNCj4gPj4gZm9yIHRoZSBhZ2dyZXNzaXZlIGk0MGUgZmlsbCByaW5nIHBvbGxpbmcgKHdo ZW4gdGhlIHJpbmcgaXMgZW1wdHkpIGlzDQo+ID4+IHRvIG1pbmltaXplIHRoZSBsYXRlbmN5LiBU aGUgImZpbGwgcmluZyBpcyBlbXB0eSIgYmVoYXZpb3IgbWlnaHQgYmUNCj4gPj4gZGlmZmVyZW50 IG9uIGRpZmZlcmVudCBkcml2ZXJzLg0KPiA+DQo+ID4gSWYgdGhlIGJlaGF2aW9yIGlzIGRpZmZl cmVudCB3aXRoIGRpZmZlcmVudCBkcml2ZXJzLCBpdCB3aWxsIGJlDQo+ID4gZGlmZmljdWx0IHRv IGNyZWF0ZSBhcHBsaWNhdGlvbnMgdGhhdCBhcmUgcG9ydGFibGUgYWNyb3NzIE5JQ3MuIFRoZQ0K PiA+IHBvaW50IG9mIGNyZWF0aW5nIEFQSXMgaXMgdG8gcHJvdmlkZSBhIHNpbmdsZSBpbnRlcmZh Y2UgdG8gZGlmZmVyZW50DQo+ID4gaW1wbGVtZW50YXRpb25zLCB0aHVzIGhpZGluZyB0aGUgZGlm ZmVyZW5jZXMgZnJvbSBhIGhpZ2hlciBhYnN0cmFjdGlvbg0KPiA+IGxldmVsLiBXaGF0IHRoZSBk cml2ZXIgZG9lcyBpbnRlcm5hbGx5IGlzIHVwIHRvIHRoZSBkcml2ZXIsIGJ1dCB0aGUNCj4gPiBy ZXN1bHQgdmlzaWJsZSBpbiB0aGUgdXNlcnNwYWNlIHNob3VsZCBiZSB0aGUgc2FtZSwgc28gd2Ug Y2FuJ3QganVzdA0KPiA+IG1ha2Ugc29tZSBkcml2ZXJzIHN0b3AgYW5kIHdhaXQgd2hlbiB0aGUg RmlsbCBSaW5nIGlzIGVtcHR5LCB3aGlsZSB0aGUNCj4gPiBvdGhlcnMgYnVzeSBwb2xsLiBJdCBz aG91bGQgYmUgY29udHJvbGxlZCBieSBzb21lIGZsYWdzIGlmIHdlIHdhbnQgdG8NCj4gPiBwcmVz ZXJ2ZSBib3RoIG9wdGlvbnMuDQo+IA0KPiBPciBpZiB0aGUgZHJpdmVyIGNhbid0IG9idGFpbiBu ZXcgZnJhbWVzIGZyb20gdGhlIGZpbGwgcmluZywgaXQganVzdA0KPiBkcm9wcyB0aGUgaW5jb21p bmcgcGFja2V0LCBhbmQgcmVjeWNsZXMgdGhlIG9sZCBmcmFtZSBpbiBvcmRlciB0byBrZWVwDQo+ IHRoZSByaW5nIGZ1bGwuDQoNCkdvb2QgaWRlYSwgdGhhbmtzISBJIHdpbGwgbmVlZCB0byBhbmFs eXplIGl0IHRob3VnaC4gDQoNCj4gKFRoaXMgYWxzbyBhc3N1bWVzIHRoYXQgdGhlIGRyaXZlciB3 YXMgYWJsZSB0byBpbml0aWFsbHkNCj4gcG9wdWxhdGUgdGhlIHJpbmcgaW4gdGhlIGZpcnN0IHBs YWNlLA0KDQpXaGljaCB3aWxsIG5vdCBoYXBwZW4gaWYgdGhlcmUgaXMgbm90aGluZyBpbiB0aGUg RmlsbCBSaW5nIGluaXRpYWxseS4uLg0KDQo+IHdoaWNoIGVsaW1pbmF0ZXMgb25lIERvUyBhdHRh Y2sgb2YNCj4gbmV2ZXIgcHV0dGluZyBhbnl0aGluZyBpbiB0aGUgZmlsbCByaW5nIGluaXRpYWxs eSkuDQo+IA0KPiBJIGRvIGFncmVlIHRoYXQgaXNzdWVzIGNpdGVkIGluIHRoaXMgdGhyZWFkIGNh biBiZSByZXNvbHZlZCB3aXRoIHRoZQ0KPiB1c2Ugb2YgZmxhZ3MgdG8gY29udHJvbCB0aGUgZGlm ZmVyZW50IGJlaGF2aW9ycyAtIHRoZXJlIGp1c3QgbmVlZHMgdG8NCj4gYmUgc29tZSBhZ3JlZW1l bnQgb24gd2hhdCB0aG9zZSBiZWhhdmlvcnMgYXJlLg0KPiAtLQ0KPiBKb25hdGhhbg0K