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 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 72C19C43381 for ; Thu, 7 Mar 2019 15:09:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 24DDA20835 for ; Thu, 7 Mar 2019 15:09:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="D/1932Fo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726285AbfCGPJz (ORCPT ); Thu, 7 Mar 2019 10:09:55 -0500 Received: from mail-eopbgr70050.outbound.protection.outlook.com ([40.107.7.50]:58496 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726159AbfCGPJz (ORCPT ); Thu, 7 Mar 2019 10:09:55 -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=8crg5jKetOvNspEu6Lf4MkON3IZmNvrU+yoESX6aPec=; b=D/1932ForNUY5MePzYaWU8LNO1eOAZCDpF1I07fcCOsn223U/CH4B46Dq35Q+0aUa4EvuSHN25i1kamQTAFnQYH7b9191AGHqmcyD/PmUwBf+DTeFaP08cXjcL/u1dqj/udA56ws652hLMclECGl5sGFAe9MnEoKbrUI8t73zvM= Received: from AM6PR05MB5879.eurprd05.prod.outlook.com (20.179.0.76) by AM6PR05MB5111.eurprd05.prod.outlook.com (20.177.196.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1665.19; Thu, 7 Mar 2019 15:09:49 +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.1686.018; Thu, 7 Mar 2019 15:09:49 +0000 From: Maxim Mikityanskiy To: =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= CC: Jonathan Lemon , 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+nABDgDOAABadCoQ Date: Thu, 7 Mar 2019 15:09:33 +0000 Deferred-Delivery: Thu, 7 Mar 2019 15:08:31 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [95.67.35.250] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 607f7363-5b06-4551-1245-08d6a30ef154 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:AM6PR05MB5111; x-ms-traffictypediagnostic: AM6PR05MB5111: x-ms-exchange-purlcount: 1 x-microsoft-exchange-diagnostics: =?utf-8?B?MTtBTTZQUjA1TUI1MTExOzIzOkpPOE1oL1FoOWpTR2pyeVBOUHVuaUQ2clNq?= =?utf-8?B?czRpRlZ3b1BXeGE3OW9wTWlFRGhkbnp4MWhMOVUzaDBpZ0dlZ3hLbUFXK253?= =?utf-8?B?S3JDMVB3bC9iL2hJeno4MW04a0FaL1UwdzhXZWNSRXdVOEVEa3dvTlNQRjZj?= =?utf-8?B?a0ZsZTIvUDljcGdDU25kTFhJRlV4NTFaS3Z0bXh1VHcreEpRK0lIbXM0VnhV?= =?utf-8?B?VExjQ3ZXdTFBa0JUVFdnV1VNNjc0SVY3NDZHUXExZUpoNjhFbERnU3BhQzhh?= =?utf-8?B?bTVrWlF4Qkd2ZjV2dHkzL1drWTBpSUdFN25tRncwdnZYaGRmS0Y2UzRLMnFy?= =?utf-8?B?UWJMcFdUQ1pxMjE3QjI4TkFZQkFscjZsK2htM0NTY2VvVHlPdUJDY0hnTVZ2?= =?utf-8?B?QktFYlYzY2lHcFVlWTRCempCUUF0ais3TGp2RWxPVkoxMHVqS2FaRHlWQ1hp?= =?utf-8?B?Sk5kbjJ4WDViK21MbDRhWEFhK0E2cE5JMUM0RXVxS1hLVEVsZDBIdnl4bWs2?= =?utf-8?B?L01FYkRYQXRMc2ZvVm94Q2g5YTRSRWZDQXhVUlNCRVJDUHh0MVE5RXg3R29Q?= =?utf-8?B?TVpCN2tZMTcwOG5Na3VIMU9GV3FmMDlqM3ppTjI5TVhUUTk2NUMzVUM5YkEz?= =?utf-8?B?MlowUzhnMFVzT1Q2eXlLUzBiTW9UNWRBRERlL3YvYm45aXdjOGxoV2ZkcjVH?= =?utf-8?B?ZmR2dzhGbGZQWEtxZ0JuN0E4T3FLa3BZUkdCbVpSR2xncisyVWx0Sm82L0NV?= =?utf-8?B?NzNDTGl2V3NGaUFyS1pkc2ZDSzNFb2lQdTdqVUJOSWJ2S0xwd1IvZUkyamNL?= =?utf-8?B?MXJnbDF0WHNpbW8xRDF5VEI1dEJ1Sjh5cDhGejFhZk1hVXlFYzdMQ2x4TTRt?= =?utf-8?B?U1NJbkN1bkxMMCtUTmx3UlI4MXNmWFM3UFZBU0ZWM2w4UGFYU294NXRCQ0Rs?= =?utf-8?B?ZjJ5MVd2U1g4UFlIMFVEZ1JOVndIM0t6MjZJVW83eXI3cG1CZWt2Z1p1UUFt?= =?utf-8?B?ZXcrdVdoUmZlTytuNUdkQ1VoNXJJUU1KV242NU5HMVN3Y1FrVk1CQlVlSDhJ?= =?utf-8?B?cS9sNnJCd0EwS0dYRE52MnI4VWdCUmJOTENRQXk5VnE1aUxjNEQ1UGVJWTFx?= =?utf-8?B?TmFVUlFGNkgxdHRPWklFc3NEQldiRmt4NW85TElHUUluTUJOQ0dKV1RkR1lD?= =?utf-8?B?enAzUmFaRWZXZzVZWkVIa0FDYVpDQ1BFQUoxYzZIa2Q3SlNROWQ0RTR0R3hn?= =?utf-8?B?dHJsRGpnb0RkQUZKanlHbTllTXJzMmlyZm5JdEpsNm10UTdWZEpsSW9YWm0r?= =?utf-8?B?R0hOY1ZXa1lqbUc1eXVJdDV1eUZvbG5VRFk1SHdONHRWdXZDbVFaZXF3ZER6?= =?utf-8?B?NStkWHRLN05WTUhZOEEvRkZ1U0FZM0NZQ09uNFBIREUySVFPc2hkZzdGVXls?= =?utf-8?B?T01rYjlEZDZObC9CZERSSFM2aEtLbzBkMXZSMHlyMTQ5Nml5VGxQQmcralZW?= =?utf-8?B?VWkyVmQ2UzhDRWd3ODR1eVpBQlIzaUw0enlTRExmTmxPOEMyR1AvdmdDb2dr?= =?utf-8?B?aStaV2Q5QU5ETCtkeTVjL3RCVWwzajRSU0hYTVhMS3J2R210clJLOXd2c001?= =?utf-8?B?dCtJb01qYTdmZ3RzdjlUSjdBTlpJMHJvUEd1eCsrUnNTcU0zSXhDd1JKSU93?= =?utf-8?B?ZTNmbUpTWFJXQW5NcGRqMGh3U2tJL0E2Tm01MlNyOGdzREs1YURwU2hkZ243?= =?utf-8?B?cFlYQ2FsRFY5Y3R5dDNRMEhKK1d6YTZ1YTFwb0gvYXZzRldWN2luU3VPdFZx?= =?utf-8?B?WnZ3U2hEQXBvbXd6L29KdUVHVDQyUFNXcnRaYWtpVWR2YXM0WTRQT0RycTVa?= =?utf-8?B?NkV3T3pWQ015L2dSZVY1QXdxbFRNRWNiSm11N0ZTL0JjWU5nNjJMcUFCWFJJ?= =?utf-8?B?L2Q3OVYrR3IvU1Mxc1pWcEgyclJaejJQdUU2aDFFRWtDeWd2RmNBL1RIb0Q1?= =?utf-8?B?VEdSOGFuRmpraWtjZ3VaZ09jbEtCS0hIUEYxQT09?= x-microsoft-antispam-prvs: x-forefront-prvs: 096943F07A x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(396003)(39860400002)(346002)(376002)(366004)(189003)(199004)(51914003)(13464003)(43544003)(52314003)(76176011)(25786009)(81156014)(86362001)(66574012)(7116003)(7736002)(6246003)(6306002)(53936002)(68736007)(305945005)(8936002)(9686003)(97736004)(3846002)(229853002)(6436002)(55016002)(6116002)(74316002)(8676002)(446003)(316002)(2906002)(66066001)(186003)(106356001)(105586002)(54906003)(81166006)(476003)(11346002)(99286004)(6346003)(33656002)(26005)(102836004)(6506007)(6916009)(4326008)(93886005)(53546011)(486006)(7696005)(52536013)(478600001)(14454004)(6666004)(256004)(966005)(5660300002)(71190400001)(71200400001)(107886003)(14444005);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB5111;H:AM6PR05MB5879.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=maximmi@mellanox.com; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 4YRi1vg7zWGr+hokwxh7/ZFMi6MHPr/599OwiEv7MyBQfM78pbs6DACHUKP8/yJRfuQQpKUbGI5sAhuZHALQCTcnD0i+akXqNr5TQihRklPjznCG+SHlsaB6rg3vetWIfR9xd5MxKL7/MReOO7e19o+GKnX8VyckuoacCv4RLMAtziAVfmceanrfkbEP66vPFb3jBqkl6jIldl0t7Su0Zrdxs6JloKqlHDS69hg/E5RmkKJpaWnVOfjOnc1Gy6z2Q/IDCol1A5WkqcMX/WXIvHfZoBJJXNTvBeB6nGVoAzrVgvm9ytf9wyl9a8j/1OfgsIMPHNTN49GHr3OArHc6OaQOD71OdU4R8jpzTwmHjYyUTO0ga6vvsWuaEjX5xpCwYo9brTusywcxqCswgB5GRf4laHtrJjszDusklbht+cs= 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: 607f7363-5b06-4551-1245-08d6a30ef154 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Mar 2019 15:09:49.1370 (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: AM6PR05MB5111 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCasO2cm4gVMO2cGVsIDxiam9y bi50b3BlbEBnbWFpbC5jb20+DQo+IFNlbnQ6IDUgTWFyY2gsIDIwMTkgMjA6MjYNCj4gVG86IE1h eGltIE1pa2l0eWFuc2tpeSA8bWF4aW1taUBtZWxsYW5veC5jb20+DQo+IENjOiBKb25hdGhhbiBM ZW1vbiA8am9uYXRoYW4ubGVtb25AZ21haWwuY29tPjsgSm9obiBGYXN0YWJlbmQNCj4gPGpvaG4u ZmFzdGFiZW5kQGdtYWlsLmNvbT47IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmc7IEJqw7ZybiBUw7Zw ZWwNCj4gPGJqb3JuLnRvcGVsQGludGVsLmNvbT47IE1hZ251cyBLYXJsc3NvbiA8bWFnbnVzLmth cmxzc29uQGludGVsLmNvbT47IERhdmlkDQo+IFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5l dD47IFRhcmlxIFRvdWthbiA8dGFyaXF0QG1lbGxhbm94LmNvbT47IFNhZWVkDQo+IE1haGFtZWVk IDxzYWVlZG1AbWVsbGFub3guY29tPjsgRXJhbiBCZW4gRWxpc2hhIDxlcmFuYmVAbWVsbGFub3gu Y29tPg0KPiBTdWJqZWN0OiBSZTogQUZfWERQIGRlc2lnbiBmbGF3cw0KPiANCj4gT24gVGh1LCAy OCBGZWIgMjAxOSBhdCAxMTo1MCwgTWF4aW0gTWlraXR5YW5za2l5IDxtYXhpbW1pQG1lbGxhbm94 LmNvbT4NCj4gd3JvdGU6DQo+ID4NCj4gWy4uLl0NCj4gDQo+IEJhY2sgaW4gdGhlIHNhZGRsZSEg U29ycnkgZm9yIHRoZSBkZWxheSENCj4gDQo+IE9rLCBsZXQgbWUgdHJ5IHRvIHN1bW1hcml6ZS4g Rmlyc3QsIGxldCdzIGdvIHRocm91Z2ggdGhlIGN1cnJlbnQNCj4gQUZfWERQIHNlbWFudGljcyBz byB0aGF0IHdlJ3JlIGFsbCBvbiB0aGUgc2FtZSBwYWdlLCBhbmQgdGhlbiBwdWxsDQo+IE1heCcg c3VnZ2VzdGlvbnMgaW4uDQo+IA0KPiBJbmdyZXNzDQo+IC0tLS0tLS0NCj4gDQo+IFRoZSBzaW1w bGlmaWVkIGZsb3cgaXM6DQo+IA0KPiAxLiBVc2VybGFuZCBwdXRzIGJ1ZmZlcnMgb24gdGhlIGZp bGwgcmluZw0KPiAyLiBUaGUgZmlsbCByaW5nIGlzIGRlcXVldWVkIGJ5IHRoZSBrZXJuZWwNCj4g My4gVGhlIGtlcm5lbCBwbGFjZXMgdGhlIHJlY2VpdmVkIGJ1ZmZlciBvbiB0aGUgc29ja2V0IFJ4 IHJpbmcNCj4gDQo+IElmIDIgZG9lc24ndCBnZXQgYSBidWZmZXIsIG5vIGZlZWRiYWNrIChvdGhl ciB0aGFuIGEgZHJpdmVyIGxldmVsDQo+IGNvdW50ZXIpIGlzIHByb3ZpZGVkIHRvIHVzZXJsYW5k LiBXaGF0IHJlLXRyeSBwb2xpY3kgdGhlIGRyaXZlciBzaG91bGQNCj4gdXNlLCBpcyB1cCB0byB0 aGUgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBUaGUgaTQwZSBidXN5LXBvbGxzLCB3aGljaA0KPiBp cywgYXMgTWF4IHBvaW50cyBvdXQsIHdpbGwgc3BlbmQgYSBsb3Qgb2YgdGltZSBpbiBuYXBpIHdp dGhvdXQgYQ0KPiBwcm9wZXIgYmFjay1vZmYgbWVjaGFuaXNtLg0KPiANCj4gSWYgdGhlIFJ4IHJp bmcgaXMgZnVsbCwgc28gdGhhdCAzIGZhaWxzLCB0aGUgcGFja2V0IGlzIGRyb3BwZWQgYW5kIG5v DQo+IGZlZWRiYWNrIChvdGhlciB0aGFuIGEgY291bnRlcikgaXMgcHJvdmlkZWQgdG8gdXNlcmxh bmQuDQo+IA0KPiBFZ3Jlc3MNCj4gLS0tLS0tDQo+IA0KPiAxLiBVc2VybGFuZCBwdXRzIGJ1ZmZl cihzKSBvbiB0aGUgVHggcmluZw0KPiAyLiBVc2VybGFuZCBjYWxscyBzZW5kdG8NCj4gMy4gVGhl IFR4IHJpbmcgaXMgZGVxdWV1ZWQgYnkgdGhlIGtlcm5lbA0KPiA0LiBUaGUga2VybmVsIGVucXVl dWVzIHRoZSBidWZmZXIgb24gdGhlIGNvbXBsZXRpb24gcmluZw0KPiANCj4gQWdhaW4gbGl0dGxl IG9yIG5vIGZlZWRiYWNrIGlzIHByb3ZpZGVkIHRvIHVzZXJsYW5kLiBJZiB0aGUgY29tcGxldGlv bg0KPiByaW5nIGlzIGZ1bGwsIG5vIHBhY2tldHMgYXJlIHNlbnQuIEZ1cnRoZXIsIGlmIHRoZSBu YXBpIGlzIHJ1bm5pbmcsDQo+IHRoZSBUeCByaW5nIHdpbGwgcG90ZW50aWFsbHkgYmUgZHJhaW5l ZCAqd2l0aG91dCogY2FsbGluZyBzZW5kdG8uIFNvLA0KPiBpdCdzIHJlYWxseSB1cCB0byB0aGUg dXNlcmxhbmQgYXBwbGljYXRpb24gdG8gZGV0ZXJtaW5lIHdoZW4gdG8gY2FsbA0KPiBzZW5kdG8u DQo+IA0KPiBGdXJ0aGVyLCBpZiB0aGUgbmFwaSBpcyBydW5uaW5nIGFuZCB0aGUgZHJpdmVyIGNh bm5vdCBkcmFpbiB0aGUgVHgNCj4gcmluZyAoY29tcGxldGlvbiBmdWxsIG9yIEhXIGZ1bGwpLCBp NDBlIHdpbGwgYnVzeS1wb2xsIHRvIGdldCB0aGUNCj4gcGFja2V0cyBvdXQuIEFnYWluLCBhcyBN YXggcG9pbnRzIG91dCwgdGhpcyB3aWxsIG1ha2UgdGhlIGtlcm5lbCBzcGVuZA0KPiBhIGxvdCBv ZiB0aW1lIGluIG5hcGkgY29udGV4dC4NCj4gDQo+IFRoZSBrZXJuZWwgImtpY2siIG9uIGVncmVz cyB2aWEgc2VuZHRvIGlzIHNvbWV0aGluZyB0aGF0IHdlJ2QgbGlrZSB0bw0KPiBtYWtlIG9wdGlv bmFsbHksIHN1Y2ggdGhhdCB0aGUgZWdyZXNzIHNpZGUgaXMgaWRlbnRpY2FsIHRvIHRoZSBSeA0K PiBzaWRlLiBGb3VyIHJpbmdzIHBlciBzb2NrZXQsIHRoYXQgdGhlIHVzZXIgZmlsbHMgKGZpbGwg cmluZy9UeCkgYW5kDQo+IGRyYWlucyAoUngvY29tcGxldGlvbiByaW5nKSB3aXRob3V0IGFueSBz eXNjYWxscyBhdCBhbGwuIEFnYWluLCB0aGlzDQo+IGlzIGRvYWJsZSB3aXRoIGtlcm5lbC1zaWRl IG5hcGktdGhyZWFkcy4NCj4gDQo+IFRoZSBBUEkgaXMgdGhyb3VnaHB1dCBvcmllbnRlZCwgYW5k IGhlbmNlIHRoZSBjdXJyZW50IGRlc2lnbi4NCg0KVGhhbmtzIGZvciB0aGUgZ3JlYXQgc3VtbWFy eSENCg0KPiBOb3csIG9udG8gTWF4JyBjb25jZXJucywgZnJvbSBteSBwZXJzcGVjdGl2ZToNCj4g DQo+IDEuIFRoZSBrZXJuZWwgc3BpbnMgdG9vIG11Y2ggaW4gbmFwaSBtb2RlLg0KDQpOb3QganVz dCB0b28gbXVjaCwgaXQgd2lsbCBkbyBpdCBmb3JldmVyIGlmIHRoZSBhcHBsaWNhdGlvbiBzaW1w bHkgZG9lc24ndCBhY3QuDQoNCj4gWWVzLCB0aGUgaTQwZSBkcml2ZXIgZG9lcyBzcGluIGZvciB0 aHJvdWdocHV0IGFuZCBsYXRlbmN5IHJlYXNvbnMuIEkNCj4gYWdyZWUgdGhhdCB3ZSBzaG91bGQg YWRkIGEgYmFjay1vZmYgbWVjaGFuaXNtLiBJIHdvdWxkIHByZWZlciAqbm90Kg0KPiBhZGRpbmcg dGhpcyB0byB0aGUgQUZfWERQIHVhcGksIGJ1dCBoYXZpbmcgaXQgYXMgYSBkcml2ZXIga25vYi4N Cg0KQSBiYWNrLW9mZiB3b24ndCBiZSB0aGF0IGdvb2QgZm9yIGxhdGVuY3ksIHdpbGwgaXQ/DQoN CkFueXdheSwgSSdtIGZpbmUgd2l0aCBoYXZpbmcgYWdncmVzc2l2ZSBwb2xsaW5nIHRvIG1heGlt aXplIHRocm91Z2hwdXQgaW4gdGhlIGNpcmN1bXN0YW5jZXMgd2hlcmUgdGhlIHVzZXIgd2FudHMg aXQgYW5kIGNhbiBjb250cm9sIHRoZSByZXNvdXJjZSBjb25zdW1wdGlvbi4gV2hhdCBJJ20gY29u Y2VybmVkIG9mIGlzIGEgc2VjdXJpdHkgaG9sZSB0aGlzIGZlYXR1cmUgb3BlbnMgdG8gdGhlIHN5 c3RlbXMgbm90IHVzaW5nIEFGX1hEUC4gSSdkIHByZWZlciBoYXZpbmcgYSBrZXJuZWwtbGV2ZWwg cnVudGltZSBzd2l0Y2ggdGhhdCBpcyBvZmYgYnkgZGVmYXVsdC4gSWYgb25lIHdhbnRzIHRvIHVz ZSBBRl9YRFAsIHRoZXkgaGF2ZSB0byB0dXJuIGl0IG9uIGZpcnN0LCBhbmQgc2luY2UgdGhlbiBp dCdzIHVwIHRvIHRoZW0gdG8gdGFrZSBjYXJlIHdoaWNoIGFwcGxpY2F0aW9ucyB0aGV5IHJ1biBh bmQgd2hldGhlciB0aGV5IHRydXN0IHRoZW0uIEFuZCBpZiBubyBvbmUgdHVybnMgQUZfWERQIG9u LCBubyBhcHBsaWNhdGlvbiBjYW4gYWJ1c2UgdGhlIEFQSSB0byBEb1MgdGhlIGtlcm5lbC4NCg0K PiBBbm90aGVyIGlkZWEgd291bGQgYmUgdG8gbW92ZSB0byBhIG5hcGktdGhyZWFkIHNpbWlsYXIg dG8gd2hhdCBQYW9sbw0KPiBBYmVuaSBzdWdnZXN0ZWQgaW4gWzFdLCBhbmQgbGV0IHRoZSBzY2hl ZHVsZXIgZGVhbCB3aXRoIHRoZSBmYWlybmVzcw0KPiBpc3N1ZS4NCg0KU291bmRzIGdvb2QsIGxv b2tzIGxpa2UgdGhlIGltcGFjdCBvZiB0aGUgc3Bpbm5pbmcgTkFQSSB0aHJlYWQgd2lsbCBiZSB0 aGUgc2FtZSBhcyBpZiB0aGUgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIGp1c3Qgc3RhcnRlZCBjb25z dW1pbmcgMTAwJSBDUFUuIFN0aWxsLCBpdCBjYW4gYmUgdXNlZCB0byBvdmVyY29tZSB0aGUgbWF4 aW11bSBwcm9jZXNzIG51bWJlciBzZXQgYnkgdWxpbWl0IGFuZCBtYXhpbXVtIENQVSB1c2FnZSBx dW90ZXMuDQoNCj4gMi4gTm8vbGl0dGxlIGVycm9yIGZlZWRiYWNrIHRvIHVzZXJsYW5kDQo+IA0K PiBNYXggd291bGQgbGlrZSBhIG1vZGUgd2hlcmUgZmVlZGJhY2sgd2hlbiAiZmlsbCByaW5nIGhh cyBydW4gZHJ5IiwNCj4gImNvbXBsZXRpb24gcXVldWUgaXMgZnVsbCIsICJIVyBxdWV1ZSBmdWxs IiByZXR1cm5lZCB0byB1c2VybGFuZCB2aWENCj4gdGhlIHBvbGwoKSBzeXNjYWxsLg0KPiANCj4g SW4gdGhpcyBtb2RlLCBNYXggc3VnZ2VzdHMgdGhhdCBzZW5kdG8oKSB3aWxsIHJldHVybiBlcnJv ciBpZiBub3QgYWxsDQo+IHBhY2tldHMgaW4gdGhlIFR4IHJpbmcgY2FuIGJlIHNlbnQuIEZ1cnRo ZXIsIHRoZSBrZXJuZWwgc2hvdWxkIGJlDQo+IGtpY2tlZCB3aGVuIHRoZXJlIGhhcyBiZWVuIGl0 ZW1zIHBsYWNlZCBpbiB0aGUgZmlsbCByaW5nLg0KPiANCj4gQWdhaW4sIGFsbCBnb29kIGFuZCB2 YWxpZCBwb2ludHMhDQo+IA0KPiBJIHRoaW5rIHdlIGNhbiBhZGRyZXNzIHRoaXMgd2l0aCB0aGUg dXBjb21pbmcgYnVzeS1wb2xsKCkgc3VwcG9ydC4gSW4NCj4gdGhlIGJ1c3ktcG9sbCBtb2RlICh3 aGljaCB3aWxsIGJlIGEgbmV3IEFGX1hEUCBiaW5kIG9wdGlvbiksIHRoZSBuYXBpDQo+IHdpbGwg YmUgZXhlY3V0ZWQgaW4gdGhlIHBvbGwoKSBjb250ZXh0Lg0KPiANCj4gSW5ncmVzcyB3b3VsZCBi ZToNCj4gDQo+IDEuIFVzZXJsYW5kIHB1dHMgYnVmZmVycyBvbiB0aGUgZmlsbCByaW5nDQo+IDIu IENhbGwgcG9sbCgpLCBhbmQgZnJvbSB0aGUgcG9sbCBjb250ZXh0Og0KPiAgIGEuIFRoZSBmaWxs IHJpbmcgaXMgZGVxdWV1ZWQgYnkgdGhlIGtlcm5lbA0KPiAgIGIuIFRoZSBrZXJuZWwgcGxhY2Vz IHRoZSByZWNlaXZlZCBidWZmZXIgb24gdGhlIHNvY2tldCBSeCByaW5nDQo+IA0KPiBJZiBhLiBm YWlscywgcG9sbCgpIHdpbGwgcmV0dXJuIGFuIFBPTExFUlIsIGFuZCB1c2VybGFuZCBjYW4gYWN0 IG9uIGl0Lg0KDQpBbmQgaWYgYi4gZmFpbHMsIGlzIHRoZXJlIGFueSBub3RpZmljYXRpb24gcGxh bm5lZCwgYmVzaWRlcyB0aGUgY291bnRlcj8NCg0KPiBEaXRvIGZvciBlZ3Jlc3MsIGFuZCBwb2xs KCkgd2lsbCByZXR1cm4gYW4gUE9MTEVSUiBpZiB0aGUgY29tcGxldGlvbg0KPiByaW5nIGhhcyBs ZXNzIHRoYW4gVHggcmluZyBlbnRyaWVzLg0KPiANCj4gU28sIHdlJ3JlIGFkZHJlc3NpbmcgeW91 ciBjb25jZXJucyB3aXRoIHRoZSBidXN5LXBvbGwgbW9kZSwgYW5kIGxldA0KPiB0aGUgdGhyb3Vn aHB1dC9ub24tYnVzeS1wb2xsIEFQSSBhcyBpdCBpcyB0b2RheS4NCj4gDQo+IFdoYXQgZG8geW91 IHRoaW5rIGFib3V0IHRoYXQsIE1heD8gV291bGQgdGhhdCBiZSBhIHBhdGggZm9yd2FyZCBmb3IN Cj4gTWVsbGFub3ggLS0gaS5lLiBpbXBsZW1lbnRpbmcgdGhlIGJ1c3ktcG9sbCBhbmQgdGhlIGN1 cnJlbnQgQVBJPw0KDQpJIHNlZSwgYnV0IHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgcmVtYWlu LiBJZiB5b3UganVzdCBwcm92aWRlIGEgc2Vjb25kIG1vZGUgdGhhdCBpcyBzZWN1cmUsIG1hbHdh cmUgY2FuIHN0aWxsIHVzZSB0aGUgZmlyc3Qgb25lLiBJdCBvbmx5IG1ha2VzIHNlbnNlIGlmIHRo ZSBmaXJzdCBvbmUgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCwgYnV0IGl0J3Mgbm90IHRoZSBj YXNlIGFzIHlvdSBzYXkgaXQgYWltcyBmb3IgdGhlIG1heGltdW0gcGVyZm9ybWFuY2UuIFRoZSBz ZWNvbmQgbW9kZSBzdGlsbCBoYXMgc2Vuc2UgdGhvdWdoIC0gaWYgdGhlIHRocm91Z2hwdXQgaXMg Z29vZCBlbm91Z2ggZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiwgdGhpcyBtb2RlIGlzIG1vcmUg ZXJyb3ItcHJvb2YgYW5kIHNwYXJlcyBDUFUgY3ljbGVzLg0KDQpTbywgSSBzdGlsbCBzdWdnZXN0 IGludHJvZHVjaW5nIGEga2VybmVsLWxldmVsIHN3aXRjaCB0byB0dXJuIG9uIFhTSyBleHBsaWNp dGx5LiBZZXMsIGl0IGFmZmVjdHMgdGhlIGV4aXN0aW5nIHNldHVwcyAobWluaW1hbGx5LCByZXF1 aXJpbmcgdGhlbSB0byBwdXQgYSBsaW5lIGludG8gc3lzY3RsLmNvbmYsIG9yIHdoYXRldmVyKSwg YnV0IHRoZSBmZWF0dXJlIGlzIHN0aWxsIGFjdGl2ZWx5IGV2b2x2aW5nLCBhbmQgdGhlIHNlY3Vy aXR5IGhvbGUgc2hvdWxkIGJlIHBhdGNoZWQsIHNvIG15IG9waW5pb24gaXMgdGhhdCB3ZSBjYW4g YWZmb3JkIGl0Lg0KDQpUaGFua3MgYWdhaW4gZm9yIHRoZSBnb29kIGFuZCBzdHJ1Y3R1cmVkIHN1 bW1hcnkuDQoNCj4gMyBJbnRyb2R1Y2UgYW4gQVBJIHRvIHNjaGVkdWxlIGEgbmFwaSBvbiBhIGNl cnRhaW4gY29yZQ0KPiANCj4gSSB0aGluayB0aGlzIGlzIG91dHNpZGUgdGhlIEFGX1hEUCBzY29w ZSAoZ2l2ZW4gbXkgcG9pbnRzIGFib3ZlKS4gVGhpcw0KPiBpcyBtYWlubHkga2VybmVsIGludGVy bmFscywgYW5kIEkgaGF2ZSBub3Qgc3Ryb25nIG9wdGlvbnMvdGhvdWdodHMNCj4gaGVyZS4gQXMg bG9uZyBhcyB5b3UgZ3V5cyBhcmUgaGFja2luZyBBRl9YRFAsIEknbSBoYXBweS4gOi1QDQo+IA0K PiBGaW5hbGx5LCB5ZXMsIHdlIG5lZWQgdG8gd29yayBvbiB0aGUgZG9jdW1lbnRhdGlvbiEgUGF0 Y2hlcyBhcmUNCj4gd2VsY29tZSEgOy0pDQo+IA0KPiBNYXgsIHRoYW5rcyBmb3IgdGhlIGlucHV0 IGFuZCBmb3IgbG9va2luZyBpbnRvIHRoaXMhIFZlcnkgbXVjaA0KPiBhcHByZWNpYXRlZCENCj4g DQo+IA0KPiBDaGVlcnMsDQo+IEJqw7Zybg0KPiANCj4gWzFdIGh0dHBzOi8vbHduLm5ldC9BcnRp Y2xlcy82ODY5ODUvDQo=