From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mail.toke.dk (Postfix) with ESMTPS id D7B649EBFEF for ; Mon, 20 Feb 2023 16:40:49 +0100 (CET) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=mfQMxavI DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1676907651; x=1708443651; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=b/TGW+8fHu5msJjFt5uAXIR/0Z/23AKJ5rSdCEje3Vs=; b=mfQMxavIAz5E7attwT3L2PPoLHsRqIVibcTnFtWBH4w7DzBl4wymzl4Q h4GQD0ld978cChBk4+/8SCe8qusVIoMv4F1QvVBUI0qBp1sFAon0lcwxP qhYQgaZ4UGf0GG3LheOx7n2MDnM+7IGPO6LUT3g9eOPdUq/+Dbu8RPhUj wioyxql2nDRruSZexFqSuo69W0TxUdfaZMc6MDIYob9MOIK8/pCzCV+97 hlsj/s4zNzxa9gOO5Nw3ZhrsUy0N6YI7VMZQudV0WEaHMTkco83+Pb0gG cHV2ba74qx6DEE0jbuiuS+w0DVeFMRoR9qivpz3Ysxiq5UVYKW5Y7EJvg w==; X-IronPort-AV: E=McAfee;i="6500,9779,10627"; a="330143071" X-IronPort-AV: E=Sophos;i="5.97,312,1669104000"; d="scan'208";a="330143071" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Feb 2023 07:40:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10627"; a="664674045" X-IronPort-AV: E=Sophos;i="5.97,312,1669104000"; d="scan'208";a="664674045" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga007.jf.intel.com with ESMTP; 20 Feb 2023 07:40:44 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 20 Feb 2023 07:40:44 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Mon, 20 Feb 2023 07:40:44 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.108) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Mon, 20 Feb 2023 07:40:43 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DdQmy/Q9XGkl1LF9KcA272v0SFoKa/kfQS07+JGffWPZMdKuflAiThWJ22+hmdQsStQV2Br8pgzUgyzU+mZzT7wJrmUgxZF6jSmugTqaEyroo0ll/gyy/+KYSAtmW+N5Tqi8laYSd+LHAOZ+pfFDqWpb/085J/cla4BBWht3FJlerVvK5+hVh5h5AGSkuG10xhTIPOGq8Xt8vUImOVFU5dl+dCkrNN6uk4eD6plzh+J+OgCIh9B65amnAvYOK0H2lUhYyEWrBQhljNehbJq1oePAq1kX6zUUCqwnaNcLzrGS9/7rM6ttUTaC0ylyxq/Ovw6bRyIUDUZ+EE7WK3ztPg== 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=dMagXdK457bw5xf8OGZ+zkR9BjDOHBL0UUik1pFjTT8=; b=FrRrt1BuG4ahfHJCLTbOu4B1NRD5lC06s25Yh9zLJHIXnsMmBTsWrmY2r4xC2eXRXmxzyMfzC1/lFIld/ZVBohmXwPp964YlJC/xXxd9bhJXXn4UBkPaftN+ifyHPDDLcSn3OkT7prV90HY8sqt5fIbGgkbTdQfYSapykBz3pVnbVEKueODdKUtOnpwPn+IrgYxJajP4JAedP92TJzIJFpM2EXTv/T6qDLGff49PRZnTU/Zfuk+l6dmM5x83jqlmEBjAUROi0dYIxesHZyfm7+9UVLdGmuY4hIA8bI9wrbbsxs7dsmlTvpCtkniqXYruYY0ya9K9PA/sXfPyV970ng== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM6PR11MB3625.namprd11.prod.outlook.com (2603:10b6:5:13a::21) by LV2PR11MB5973.namprd11.prod.outlook.com (2603:10b6:408:14e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.18; Mon, 20 Feb 2023 15:40:39 +0000 Received: from DM6PR11MB3625.namprd11.prod.outlook.com ([fe80::3ff6:ca60:f9fe:6934]) by DM6PR11MB3625.namprd11.prod.outlook.com ([fe80::3ff6:ca60:f9fe:6934%4]) with mapi id 15.20.6111.019; Mon, 20 Feb 2023 15:40:39 +0000 Message-ID: <74330cb7-bf54-6aa0-8a07-c9c557037a31@intel.com> Date: Mon, 20 Feb 2023 16:39:52 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Content-Language: en-US To: Jesper Dangaard Brouer References: <167604167956.1726972.7266620647404438534.stgit@firesoul> From: Alexander Lobakin In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-ClientProxiedBy: FR0P281CA0056.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::6) To DM6PR11MB3625.namprd11.prod.outlook.com (2603:10b6:5:13a::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR11MB3625:EE_|LV2PR11MB5973:EE_ X-MS-Office365-Filtering-Correlation-Id: 1ea08a9a-ddd8-4b3d-065f-08db1358d11e X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sE8mNocyrwvfob06Kf/p080hhy7UuoVx83NciCHNNE+Bwuc2AlGpknkyS10zdqkNraNPjN6RDMkkFcWuOcuoQ67/InGu4HSI9mkrpRylKJPItswzlny0NE652r3/iULK8eO+zf5XwteZaWc+ouz+0tA6wNMUe32zxyA8A60hQN0/CWakPXGqWHMESFyihHngEaSx2VLgn7CfefSb91ofYpMyQh01vtlQi71AHyFDDHWzifv/XqvUgnWc93pox+Q5TlVCa7B5i4Bx011sR12ucV9Nq+XHIJQq2BnEI7KapMWl4Z48ggPepm35A7v2wOIJYNY/aI2zKdbZvYW7TZ46GbdAkj0Wq9PE/fnbJ7vLOwrAWU50PDmlPuIRJXxobw8Bzt3/++l0AYZAm2327xEECxEFm4bBgS/Z4pLNcPsxfl5N4wfY6IWUb1kmZc78p0TnIVzwXPVXxGRkfMRA5FcddFo/lzyzKnQrlyaF/zI+1Qsk6AxpIOuqZh2BeQ3tWqfg2WzCDoTSuJWbaTX0pfbAyOMHWlRohWph0wo8gJor6mtW+InFVldhp5B6sJN0Q0CxFIWNab0cTfIxFay9i8IImFFJyzzWQ4SG/12i/jn07vZquVNuKjsXPDQL4ZYbnDuImPvBbCFt9naXbYbPalqJCNuTFSoAkCzRXYqd2fREkF9HUqzcQfB/f7jJj9/1UQ71lF3d5oC1ezzAb2NoYG2dkmCC3O9XzcCmWTmFRc8LACk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB3625.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(39860400002)(376002)(136003)(346002)(396003)(366004)(451199018)(38100700002)(6666004)(2616005)(26005)(6506007)(186003)(6512007)(83380400001)(66946007)(66556008)(7416002)(66476007)(8936002)(6916009)(2906002)(4326008)(5660300002)(41300700001)(6486002)(316002)(31696002)(86362001)(82960400001)(478600001)(36756003)(8676002)(31686004)(43740500002)(45980500001);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Nm9VQ2FDdFl0eEVsS3gySjNFWFNZczVxbHZkSU0xa2lCVjIzSTlsY2NUY0ky?= =?utf-8?B?V0RXdldKdVNKeDhSWlZFM2FJdWhPeEhudE5EUWU2ckVNTW5pdFBoNG9ZNU84?= =?utf-8?B?RFJDaFN6R3dUQkM0VW1UQlpmSTNxaFc0WmVlMk41UVJJbGRGdEZzR2RWbktu?= =?utf-8?B?TzA1RS9rYWIyN21oSU56RjQ5S2o5c3U0VUZzQjJBYm1PQ0Yvdk8xRGY1L1d5?= =?utf-8?B?Q1BwZG9WTE1lLzF2VjhDL2VOU0M2ejdnTVN1MktpSU9WbDI5UXdpSGxZRElV?= =?utf-8?B?WGl3UWR5K1pJdlNtRElvVXl2YlBGdlFzdkg0bHN5d3ZjUTJBYzM2Rjl3UUFl?= =?utf-8?B?MmZKUzYzdlNYa0VCaXVmNHlYRFNPZzlPb0xta0FDc243WmxMTjBuUWhYZXF3?= =?utf-8?B?OUxSSkhpbmdlZ0lCbHprTElNMHJ1eGZrSU1EaFFUektwUDBXdVQwTXlxUFRL?= =?utf-8?B?TUpHK3liSVNFU1RyNGhNYjBQSUMvSHZDamV0T09BeWorSWFnQkhRZ0l1ZFpp?= =?utf-8?B?eDZRTWdUUDh0OTNLNWlVaVY3ZTZtNjBURkhMN1dKUDU0WmtwNzdBYTJhWDZ6?= =?utf-8?B?QmErS01LR3YzZ0pDMGg3MjQxRkxDcjQ5NW1vZ0xjaGtaeDZpN3ZERlVKK1pk?= =?utf-8?B?RXBhV3VHL0p1OTJIUWVPZHIyRnR3cHp6TFBNSUZ6aGg2b1RXakxrbnhicEhi?= =?utf-8?B?eWJxR3FxVDBlaHpVeWEzbXEwNEJqYUNNRjkvMG1ZazI3TDNqNmhqbXFKbEsz?= =?utf-8?B?MkRsRGgrcGVqa2htLzdsTGl5YnN5UDN0WThpK05WMXF0aE85QVRZTG9lYUhl?= =?utf-8?B?RTJrKzRqUVVySGtNeVJFdExHV0pDdW9sWHJiT1cxK25LZkdnSUJlN2cxMVhC?= =?utf-8?B?MzhwVUgwNUFiRml6RkY4SUI3bjZDcWp4ODAwZUZRN3dveWFPRnZndjNKOFU5?= =?utf-8?B?NjdyUmRHeUpWcE5wREwyYmR3R0JuOG85cHVkV1A5dXFOTTRxQkhnbUVTa2hD?= =?utf-8?B?ck8rODdERWtGa0VqL1Bhc2s3NXpOYlFneVZFVk01bmdWRmRIWnovSlU4enpp?= =?utf-8?B?bGEyZnJBNjdxMzB2WG1MRnhWWlI4MXV5SWpIQXJzVEZJZFVZbGhvUjFGWTdr?= =?utf-8?B?N1NFRTZabERnVEdkbFQ5NVo1Z1JOa0RoY3VYdStLeU1jK2lyM21QMUJLdUNR?= =?utf-8?B?aExjU1ptQUVvaDNCd3ZOWlFXenB4S0FVYWV5bnh1QkZnOElwMzhMY2MrTStZ?= =?utf-8?B?bzJobFd5RGFTdjExQTNpOEFleVJoWVdJTzg0SlUvRjFaVjAvTGdCTWJQVitT?= =?utf-8?B?aUVCRUZHZThBNlNCeUxWMGgzdVg4dERKYWcxSHZJcDh5eU0yWVNUaWQ4U3JB?= =?utf-8?B?b0pFMFlqQnlRMTlRTnRMUVJkTEZQMVZrUUxnWkJnYzc0dVJPYWp2ekpybFZY?= =?utf-8?B?UnNpelpxazBEa25OQXFmU1gwUG93TjZaT0RqeXpFWENKcHFhUXFMcUlCQlVO?= =?utf-8?B?Z2pNMjFoeG90bUpCTU5yajJOaDFlWDdQME9PRjRDT09lQzhZeUxHc1dMQUNx?= =?utf-8?B?K0d0M3JXYkFvV3NVT3lFa3RiRUkwL054aU84ajN2VXVIamFIN0lMOHlkWXQ5?= =?utf-8?B?WUlNbXZyTWhFQXdkSlFjdit3WU5tSGcySWpQNjBYVitvQkdOdUdzR2hwWGow?= =?utf-8?B?OVlTeUwwOFQvOGFUS0VHcnNabDRWN29jZTlCeU5JZGxiUW5sVmhteks1THUz?= =?utf-8?B?UXBHSjYyaWlZanFmTnN1azdxeENpbjBPOHNsYVdFck5iNFhHTWNYbmxlcGdR?= =?utf-8?B?eEUrb0lCLzE1UWo3SjRLOVRSSmN0aEc5NjNVVng3T05ZWUpJVElGTkhOVUhE?= =?utf-8?B?RTZzNmRNcHBaUVh2aXJtbWcwOFBFUVV5S2dLVmVFZkRuUDhBSnpsOXk2cUJ2?= =?utf-8?B?cDg5QjIxT2MyeTRpRWJaVDByWXJ1OGcxYWFoT3NSMkZqQzlEL3Uvck9BRXVI?= =?utf-8?B?dzVoSCs5ZFJmME0rSmpGUGRzSnFGeDZXY2tyNTZmRXB1VE5uZXRQS3BFeGhl?= =?utf-8?B?bFcxdkN0Y3MvTWxlY0tzTGQvRlNkTzhZTUtSRUhJMWd1TUY4bTFpeURHOC8w?= =?utf-8?B?dzJYd0pOUkVvMWRDV2F4Y1Mrdyt5aEFUR1ZsVTFNZHQrbkN2UmhGem9aK000?= =?utf-8?Q?ZSn8TRPaRbA59FM0v2tyJ7Y=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 1ea08a9a-ddd8-4b3d-065f-08db1358d11e X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB3625.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Feb 2023 15:40:39.2793 (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: ac3jVxL/J5w2ltsziD4Yvx5zNaatLk1NhYwbdLaCm/VWgUlwCkKUhGPJqtBwWH2DUKPT03qAQThVREzsze8cN8tNWHp4fnHfqZPtvUPpePQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR11MB5973 X-OriginatorOrg: intel.com Message-ID-Hash: NDMWDG5DAUDWY25X5I53HCGP4BSSUKIW X-Message-ID-Hash: NDMWDG5DAUDWY25X5I53HCGP4BSSUKIW X-MailFrom: aleksander.lobakin@intel.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: brouer@redhat.com, bpf@vger.kernel.org, netdev@vger.kernel.org, Stanislav Fomichev , martin.lau@kernel.org, ast@kernel.org, daniel@iogearbox.net, yoong.siang.song@intel.com, anthony.l.nguyen@intel.com, intel-wired-lan@lists.osuosl.org, xdp-hints@xdp-project.net X-Mailman-Version: 3.3.8 Precedence: list Subject: [xdp-hints] Re: [PATCH bpf-next V1] igc: enable and fix RX hash usage by netstack List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: RnJvbTogSmVzcGVyIERhbmdhYXJkIEJyb3VlciA8amJyb3VlckByZWRoYXQuY29tPg0KRGF0ZTog VGh1LCAxNiBGZWIgMjAyMyAxNzo0Njo1MyArMDEwMA0KDQo+IA0KPiBPbiAxNC8wMi8yMDIzIDE0 LjIxLCBBbGV4YW5kZXIgTG9iYWtpbiB3cm90ZToNCj4+IEZyb206IEplc3BlciBEYW5nYWFyZCBC cm91ZXIgPGJyb3VlckByZWRoYXQuY29tPg0KPj4gRGF0ZTogRnJpLCAxMCBGZWIgMjAyMyAxNjow Nzo1OSArMDEwMA0KPj4NCj4+PiBXaGVuIGZ1bmN0aW9uIGlnY19yeF9oYXNoKCkgd2FzIGludHJv ZHVjZWQgaW4gdjQuMjAgdmlhIGNvbW1pdA0KPj4+IDA1MDdlZjhhMDM3Mg0KPj4+ICgiaWdjOiBB ZGQgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZmFzdHBhdGggYW5kIGludGVycnVwdCBoYW5kbGVycyIp LCB0aGUNCj4+PiBoYXJkd2FyZSB3YXNuJ3QgY29uZmlndXJlZCB0byBwcm92aWRlIFJTUyBoYXNo LCB0aHVzIGl0IG1hZGUgc2Vuc2UgdG8NCj4+PiBub3QNCj4+PiBlbmFibGUgbmV0X2RldmljZSBO RVRJRl9GX1JYSEFTSCBmZWF0dXJlIGJpdC4NCj4+DQo+PiBbLi4uXQ0KPj4NCj4+PiBAQCAtMzEx LDYgKzMxMSw1OCBAQCBleHRlcm4gY2hhciBpZ2NfZHJpdmVyX25hbWVbXTsNCj4+PiDCoCAjZGVm aW5lIElHQ19NUlFDX1JTU19GSUVMRF9JUFY0X1VEUMKgwqDCoCAweDAwNDAwMDAwDQo+Pj4gwqAg I2RlZmluZSBJR0NfTVJRQ19SU1NfRklFTERfSVBWNl9VRFDCoMKgwqAgMHgwMDgwMDAwMA0KPj4+ IMKgICsvKiBSWC1kZXNjIFdyaXRlLUJhY2sgZm9ybWF0IFJTUyBUeXBlJ3MgKi8NCj4+PiArZW51 bSBpZ2NfcnNzX3R5cGVfbnVtIHsNCj4+PiArwqDCoMKgIElHQ19SU1NfVFlQRV9OT19IQVNIwqDC oMKgwqDCoMKgwqAgPSAwLA0KPj4+ICvCoMKgwqAgSUdDX1JTU19UWVBFX0hBU0hfVENQX0lQVjTC oMKgwqAgPSAxLA0KPj4+ICvCoMKgwqAgSUdDX1JTU19UWVBFX0hBU0hfSVBWNMKgwqDCoMKgwqDC oMKgID0gMiwNCj4+PiArwqDCoMKgIElHQ19SU1NfVFlQRV9IQVNIX1RDUF9JUFY2wqDCoMKgID0g MywNCj4+PiArwqDCoMKgIElHQ19SU1NfVFlQRV9IQVNIX0lQVjZfRVjCoMKgwqAgPSA0LA0KPj4+ ICvCoMKgwqAgSUdDX1JTU19UWVBFX0hBU0hfSVBWNsKgwqDCoMKgwqDCoMKgID0gNSwNCj4+PiAr wqDCoMKgIElHQ19SU1NfVFlQRV9IQVNIX1RDUF9JUFY2X0VYwqDCoMKgID0gNiwNCj4+PiArwqDC oMKgIElHQ19SU1NfVFlQRV9IQVNIX1VEUF9JUFY0wqDCoMKgID0gNywNCj4+PiArwqDCoMKgIElH Q19SU1NfVFlQRV9IQVNIX1VEUF9JUFY2wqDCoMKgID0gOCwNCj4+PiArwqDCoMKgIElHQ19SU1Nf VFlQRV9IQVNIX1VEUF9JUFY2X0VYwqDCoMKgID0gOSwNCj4+PiArwqDCoMKgIElHQ19SU1NfVFlQ RV9NQVjCoMKgwqDCoMKgwqDCoCA9IDEwLA0KPj4+ICt9Ow0KPj4+ICsjZGVmaW5lIElHQ19SU1Nf VFlQRV9NQVhfVEFCTEXCoMKgwqDCoMKgwqDCoCAxNg0KPj4+ICsjZGVmaW5lIElHQ19SU1NfVFlQ RV9NQVNLwqDCoMKgwqDCoMKgwqAgMHhGDQo+Pg0KPj4gR0VOTUFTSygpPw0KPj4NCj4gDQo+IGht bS4uLiBHRU5NQVNLKDMsMCkgbG9va3MgbW9yZSBjb25mdXNpbmcgdG8gbWUuIFRoZSBtYXNrIHdl IG5lZWQgaGVyZSBpcw0KPiBzbyBzaW1wbGUgdGhhdCBJIHByZWZlciBub3QgdG8gY29tcGxpY2F0 ZSB0aGlzIHdpdGggR0VOTUFTSy4NCj4gDQo+Pj4gKw0KPj4+ICsvKiBpZ2NfcnNzX3R5cGUgLSBS eCBkZXNjcmlwdG9yIFJTUyB0eXBlIGZpZWxkICovDQo+Pj4gK3N0YXRpYyBpbmxpbmUgdTggaWdj X3Jzc190eXBlKHVuaW9uIGlnY19hZHZfcnhfZGVzYyAqcnhfZGVzYykNCj4+DQo+PiBXaHkgdXNl IHR5cGVzIHNob3J0ZXIgdGhhbiB1MzIgb24gdGhlIHN0YWNrPw0KPiANCj4gQ2hhbmdpbmcgdG8g dTMyIGluIFYyDQo+IA0KPj4gV2h5IHRoaXMgdW5pb24gaXMgbm90IGNvbnN0IGhlcmUsIHNpbmNl IHRoZXJlIGFyZSBubyBtb2RpZmljYXRpb25zPw0KPiANCj4gU3VyZQ0KPiANCj4+PiArew0KPj4+ ICvCoMKgwqAgLyogUlNTIFR5cGUgNC1iaXQgbnVtYmVyOiAwLTkgKGFib3ZlIDkgaXMgcmVzZXJ2 ZWQpICovDQo+Pj4gK8KgwqDCoCByZXR1cm4gcnhfZGVzYy0+d2IubG93ZXIubG9fZHdvcmQuaHNf cnNzLnBrdF9pbmZvICYNCj4+PiBJR0NfUlNTX1RZUEVfTUFTSzsNCj4+DQo+PiBUaGUgbW9zdCBp bXBvcnRhbnQgSSB3YW50ZWQgdG8gbWVudGlvbjogZG9lc24ndCB0aGlzIGZ1bmN0aW9uIG1ha2Ug dGhlDQo+PiBDUFUgcmVhZCB0aGUgdW5jYWNoZWQgZmllbGQgYWdhaW4sIHdoaWxlIHlvdSBjb3Vs ZCBqdXN0IHJlYWQgaXQgb25jZQ0KPj4gb250byB0aGUgc3RhY2sgYW5kIHRoZW4gZXh0cmFjdCBh bGwgc3VjaCBkYXRhIGZyb20gdGhlcmU/DQo+IA0KPiBJIHJlYWxseSBkb24ndCB0aGluayB0aGlz IGlzIGFuIGlzc3VlcyBoZXJlLiBUaGUgaWdjX2Fkdl9yeF9kZXNjIGlzIG9ubHkNCj4gMTYgYnl0 ZXMgYW5kIGl0IHNob3VsZCBiZSBob3QgaW4gQ1BVIGNhY2hlIGJ5IG5vdy4NCg0KUnggZGVzY3Jp cHRvcnMgYXJlIGxvY2F0ZWQgaW4gdGhlIERNQSBjb2hlcmVudCB6b25lIChhbGxvY2F0ZWQgdmlh DQpkbWFfYWxsb2NfY29oZXJlbnQoKSksIEkgYW0gbWlzc2luZyBzb21ldGhpbmc/IEJlY2F1c2Ug SSB3YXMgKEkgYW0pIHN1cmUNCkNQVSBkb2Vzbid0IGNhY2hlIGFueXRoaW5nIGZyb20gaXQgKGFu ZCBkb2Vzbid0IHJlb3JkZXIgcmVhZHMvd3JpdGVzDQpmcm9tL3RvKS4gSSB0aG91Z2h0IHRoYXQn cyB0aGUgcG9pbnQgb2YgY29oZXJlbnQgem9uZXMgLS0geW91IG1heSB0YWxrDQp0byBoYXJkd2Fy ZSB3aXRob3V0IG5lZWRpbmcgZm9yIHN5bmNpbmcuLi4NCg0KPiANCj4gVG8gYXZvaWQgdGhlIG1v dnp4IEkgaGF2ZSBjaGFuZ2VkIHRoaXMgdG8gZG8gYSB1MzIgcmVhZCBpbnN0ZWFkLg0KPiANCj4+ PiArfQ0KPj4+ICsNCj4+PiArLyogUGFja2V0IGhlYWRlciB0eXBlIGlkZW50aWZpZWQgYnkgaGFy ZHdhcmUgKHdoZW4gQklUKDExKSBpcyB6ZXJvKS4NCj4+PiArICogRXZlbiB3aGVuIFVEUCBwb3J0 cyBhcmUgbm90IHBhcnQgb2YgUlNTIGhhc2ggSFcgc3RpbGwgcGFyc2UgYW5kDQo+Pj4gbWFyayBV RFAgYml0cw0KPj4+ICsgKi8NCj4+PiArZW51bSBpZ2NfcGt0X3R5cGVfYml0cyB7DQo+Pj4gK8Kg wqDCoCBJR0NfUEtUX1RZUEVfSERSX0lQVjTCoMKgwqAgPcKgwqDCoCBCSVQoMCksDQo+Pj4gK8Kg wqDCoCBJR0NfUEtUX1RZUEVfSERSX0lQVjRfV0lUSF9PUFQ9wqDCoMKgIEJJVCgxKSwgLyogSVB2 NCBIZHIgaW5jbHVkZXMNCj4+PiBJUCBvcHRpb25zICovDQo+Pj4gK8KgwqDCoCBJR0NfUEtUX1RZ UEVfSERSX0lQVjbCoMKgwqAgPcKgwqDCoCBCSVQoMiksDQo+Pj4gK8KgwqDCoCBJR0NfUEtUX1RZ UEVfSERSX0lQVjZfV0lUSF9FWFQ9wqDCoMKgIEJJVCgzKSwgLyogSVB2NiBIZHIgaW5jbHVkZXMN Cj4+PiBleHRlbnNpb25zICovDQo+Pj4gK8KgwqDCoCBJR0NfUEtUX1RZUEVfSERSX0w0X1RDUMKg wqDCoCA9wqDCoMKgIEJJVCg0KSwNCj4+PiArwqDCoMKgIElHQ19QS1RfVFlQRV9IRFJfTDRfVURQ wqDCoMKgID3CoMKgwqAgQklUKDUpLA0KPj4+ICvCoMKgwqAgSUdDX1BLVF9UWVBFX0hEUl9MNF9T Q1RQPcKgwqDCoCBCSVQoNiksDQo+Pj4gK8KgwqDCoCBJR0NfUEtUX1RZUEVfSERSX05GU8KgwqDC oCA9wqDCoMKgIEJJVCg3KSwNCj4+PiArwqDCoMKgIC8qIEFib3ZlIG9ubHkgdmFsaWQgd2hlbiBC SVQoMTEpIGlzIHplcm8gKi8NCj4+PiArwqDCoMKgIElHQ19QS1RfVFlQRV9MMsKgwqDCoMKgwqDC oMKgID3CoMKgwqAgQklUKDExKSwNCj4+PiArwqDCoMKgIElHQ19QS1RfVFlQRV9WTEFOwqDCoMKg ID3CoMKgwqAgQklUKDEyKSwNCj4+PiArwqDCoMKgIElHQ19QS1RfVFlQRV9NQVNLwqDCoMKgID3C oMKgwqAgMHgxRkZGLCAvKiAxMy1iaXRzICovDQo+Pg0KPj4gQWxzbyBHRU5NQVNLKCkuDQo+IA0K PiBHRU5NQVNLIHdvdWxkIG1ha2UgbW9yZSBzZW5zZSBoZXJlLg0KPiANCj4+PiArfTsNCj4+PiAr DQo+Pj4gKy8qIGlnY19wa3RfdHlwZSAtIFJ4IGRlc2NyaXB0b3IgUGFja2V0IHR5cGUgZmllbGQg Ki8NCj4+PiArc3RhdGljIGlubGluZSB1MTYgaWdjX3BrdF90eXBlKHVuaW9uIGlnY19hZHZfcnhf ZGVzYyAqcnhfZGVzYykNCj4+DQo+PiBBbHNvIHNob3J0IHR5cGVzIGFuZCBjb25zdHMuDQo+Pg0K PiANCj4gRml4ZWQgaW4gVjINCj4gDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHUzMiBkYXRhID0gbGUz Ml90b19jcHUocnhfZGVzYy0+d2IubG93ZXIubG9fZHdvcmQuZGF0YSk7DQo+Pj4gK8KgwqDCoCAv KiBQYWNrZXQgdHlwZSBpcyAxMy1iaXRzIC0gYXMgYml0cyAoMTY6NCkgaW4gbG93ZXIubG9fZHdv cmQqLw0KPj4+ICvCoMKgwqAgdTE2IHBrdF90eXBlID0gKGRhdGEgPj4gNCkgJiBJR0NfUEtUX1RZ UEVfTUFTSzsNCj4+DQo+PiBQZXJmZWN0IGNhbmRpZGF0ZSBmb3IgRklFTERfR0VUKCkuIE5vLCBl dmVuIGZvciBsZTMyX2dldF9iaXRzKCkuDQo+IA0KPiBJIGFkanVzdGVkIHRoaXMsIGJ1dCBJIGNv dWxkIG5vdCBmaW5kIGEgY2VudHJhbCBkZWZpbmUgZm9yIEZJRUxEX0dFVA0KPiAoYnV0IG1hbnkg ZHJpdmVycyBvcGVuIGNvZGUgdGhpcykuDQoNCjxsaW51eC9iaXRmaWVsZC5oPi4gSXQgaGFzIEZJ RUxEX3tHRVQsUFJFUH0oKSBhbmQgYWxzbyBidWlsZHMNCnt1LF9fbGUsX19iZX17OCwxNiwzMn1f e2VuY29kZSxnZXQscmVwbGFjZX1fYml0cygpIHZpYSBtYWNybyAodGhlIGxhdHRlcg0KZG9lc24n dCBnZXQgaW5kZXhlZCBieSBFbGl4aXIsIGFzIGl0IGRvZXNuJ3QgcGFyc2UgZnVuY3Rpb25zIGJ1 aWx0IHZpYQ0KbWFjcm9zKS4NCg0KPiANCj4+IEFsc28gbXkgbm90ZSBhYm92ZSBhYm91dCBleGNl c3NpdmUgZXhwZW5zaXZlIHJlYWRzLg0KPj4NCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gcGt0 X3R5cGU7DQo+Pj4gK30NCj4+PiArDQo+Pj4gwqAgLyogSW50ZXJydXB0IGRlZmluZXMgKi8NCj4+ PiDCoCAjZGVmaW5lIElHQ19TVEFSVF9JVFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDY0OCAvKiB+ NjAwMCBpbnRzL3NlYyAqLw0KPj4+IMKgICNkZWZpbmUgSUdDXzRLX0lUUsKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgOTgwDQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVs L2lnYy9pZ2NfbWFpbi5jDQo+Pj4gYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdj X21haW4uYw0KPj4+IGluZGV4IDhiNTcyY2QyYzM1MC4uNDJhMDcyNTA5ZDJhIDEwMDY0NA0KPj4+ IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jDQo+Pj4gKysr IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMNCj4+PiBAQCAtMTY3 NywxNCArMTY3Nyw0MCBAQCBzdGF0aWMgdm9pZCBpZ2NfcnhfY2hlY2tzdW0oc3RydWN0IGlnY19y aW5nDQo+Pj4gKnJpbmcsDQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxlMzJfdG9fY3B1 KHJ4X2Rlc2MtPndiLnVwcGVyLnN0YXR1c19lcnJvcikpOw0KPj4+IMKgIH0NCj4+PiDCoCArLyog TWFwcGluZyBIVyBSU1MgVHlwZSB0byBlbnVtIHBrdF9oYXNoX3R5cGVzICovDQo+Pj4gK3N0cnVj dCBpZ2NfcnNzX3R5cGUgew0KPj4+ICvCoMKgwqAgdTggaGFzaF90eXBlOyAvKiBjYW4gY29udGFp biBlbnVtIHBrdF9oYXNoX3R5cGVzICovDQo+Pg0KPj4gV2h5IG1ha2UgYSBzdHJ1Y3QgZm9yIG9u ZSBmaWVsZD8gKyBzaG9ydCB0eXBlIG5vdGUNCj4+DQo+Pj4gK30gaWdjX3Jzc190eXBlX3RhYmxl W0lHQ19SU1NfVFlQRV9NQVhfVEFCTEVdID0gew0KPj4+ICvCoMKgwqAgW0lHQ19SU1NfVFlQRV9O T19IQVNIXS5oYXNoX3R5cGXCoMKgwqDCoMKgID0gUEtUX0hBU0hfVFlQRV9MMiwNCj4+PiArwqDC oMKgIFtJR0NfUlNTX1RZUEVfSEFTSF9UQ1BfSVBWNF0uaGFzaF90eXBlwqDCoMKgwqDCoCA9IFBL VF9IQVNIX1RZUEVfTDQsDQo+Pj4gK8KgwqDCoCBbSUdDX1JTU19UWVBFX0hBU0hfSVBWNF0uaGFz aF90eXBlwqDCoMKgwqDCoCA9IFBLVF9IQVNIX1RZUEVfTDMsDQo+Pj4gK8KgwqDCoCBbSUdDX1JT U19UWVBFX0hBU0hfVENQX0lQVjZdLmhhc2hfdHlwZcKgwqDCoMKgwqAgPSBQS1RfSEFTSF9UWVBF X0w0LA0KPj4+ICvCoMKgwqAgW0lHQ19SU1NfVFlQRV9IQVNIX0lQVjZfRVhdLmhhc2hfdHlwZcKg wqDCoMKgwqAgPSBQS1RfSEFTSF9UWVBFX0wzLA0KPj4+ICvCoMKgwqAgW0lHQ19SU1NfVFlQRV9I QVNIX0lQVjZdLmhhc2hfdHlwZcKgwqDCoMKgwqAgPSBQS1RfSEFTSF9UWVBFX0wzLA0KPj4+ICvC oMKgwqAgW0lHQ19SU1NfVFlQRV9IQVNIX1RDUF9JUFY2X0VYXS5oYXNoX3R5cGUgPSBQS1RfSEFT SF9UWVBFX0w0LA0KPj4+ICvCoMKgwqAgW0lHQ19SU1NfVFlQRV9IQVNIX1VEUF9JUFY0XS5oYXNo X3R5cGXCoMKgwqDCoMKgID0gUEtUX0hBU0hfVFlQRV9MNCwNCj4+PiArwqDCoMKgIFtJR0NfUlNT X1RZUEVfSEFTSF9VRFBfSVBWNl0uaGFzaF90eXBlwqDCoMKgwqDCoCA9IFBLVF9IQVNIX1RZUEVf TDQsDQo+Pj4gK8KgwqDCoCBbSUdDX1JTU19UWVBFX0hBU0hfVURQX0lQVjZfRVhdLmhhc2hfdHlw ZSA9IFBLVF9IQVNIX1RZUEVfTDQsDQo+Pj4gK8KgwqDCoCBbMTBdLmhhc2hfdHlwZSA9IFBLVF9I QVNIX1RZUEVfTDIsIC8qIFJTUyBUeXBlIGFib3ZlIDkNCj4+PiAiUmVzZXJ2ZWQiIGJ5IEhXICov DQo+Pj4gK8KgwqDCoCBbMTFdLmhhc2hfdHlwZSA9IFBLVF9IQVNIX1RZUEVfTDIsDQo+Pj4gK8Kg wqDCoCBbMTJdLmhhc2hfdHlwZSA9IFBLVF9IQVNIX1RZUEVfTDIsDQo+Pj4gK8KgwqDCoCBbMTNd Lmhhc2hfdHlwZSA9IFBLVF9IQVNIX1RZUEVfTDIsDQo+Pj4gK8KgwqDCoCBbMTRdLmhhc2hfdHlw ZSA9IFBLVF9IQVNIX1RZUEVfTDIsDQo+Pj4gK8KgwqDCoCBbMTVdLmhhc2hfdHlwZSA9IFBLVF9I QVNIX1RZUEVfTDIsDQo+Pg0KPj4gV2h5IGRlZmluZSB0aG9zZSBlbXB0eSBpZiB5b3UgY291bGQg ZG8gYSBib3VuZCBjaGVjayBpbiB0aGUgY29kZQ0KPj4gaW5zdGVhZD8gRS5nLiBgaWYgKHVubGlr ZWx5KGJpZ2dlcl90aGFuXzkpKSByZXR1cm4gUEtUX0hBU0hfVFlQRV9MMmAuDQo+IA0KPiBIYXZp bmcgYSBicmFuY2ggZm9yIHRoaXMgaXMgbGlrZWx5IHNsb3dlci7CoCBPbiBnb2Rib2x0IEkgc2Vl IHRoYXQgdGhpcw0KPiBnZW5lcmF0ZXMgc3Vib3B0aW1hbCBhbmQgbGFyZ2VyIGNvZGUuDQoNCkJ1 dCB5b3UgaGF2ZSB0byB2ZXJpZnkgSFcgb3V0cHV0IGFueXdheSwgcmlnaHQ/IE9yIHdvdWxkIGxp a2UgdG8gcmVseSBvbg0KdGhhdCBvbiBzb21lIHdlaXJkIHJldmlzaW9uIGl0IHdvbid0IHNwaXQg QklUKDY5KSBvbiB5b3U/DQoNCj4gDQo+IA0KPj4+ICt9Ow0KPj4+ICsNCj4+PiDCoCBzdGF0aWMg aW5saW5lIHZvaWQgaWdjX3J4X2hhc2goc3RydWN0IGlnY19yaW5nICpyaW5nLA0KPj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5pb24gaWdjX2Fkdl9yeF9kZXNj ICpyeF9kZXNjLA0KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IHNrX2J1ZmYgKnNrYikNCj4+PiDCoCB7DQo+Pj4gLcKgwqDCoCBpZiAocmluZy0+bmV0 ZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfUlhIQVNIKQ0KPj4+IC3CoMKgwqDCoMKgwqDCoCBza2Jf c2V0X2hhc2goc2tiLA0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZTMy X3RvX2NwdShyeF9kZXNjLT53Yi5sb3dlci5oaV9kd29yZC5yc3MpLA0KPj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBQS1RfSEFTSF9UWVBFX0wzKTsNCj4+PiArwqDCoMKgIGlm IChyaW5nLT5uZXRkZXYtPmZlYXR1cmVzICYgTkVUSUZfRl9SWEhBU0gpIHsNCj4+DQo+PiDCoMKg wqDCoGlmICghKGZlYXR1cmUgJiBIQVNIKSkNCj4+IMKgwqDCoMKgwqDCoMKgIHJldHVybjsNCj4+ DQo+PiBhbmQgLTEgaW5kZW50IGxldmVsPw0KPiANCj4gVXN1YWxseSwgeWVzLCBJIGFsc28gcHJl ZmVyIGVhcmx5IHJldHVybiBzdHlsZSBjb2RlLg0KPiBGb3Igb25lIEkganVzdCBmb2xsb3dlZCB0 aGUgZXhpc3Rpbmcgc3R5bGUuDQoNCkknZCBub3QgcmVjb21tZW5kICJrZWVwIHRoZSBleGlzdGlu ZyBzdHlsZSIgb2YgSW50ZWwgZHJpdmVycyAtLSBub3QNCnNvbWV0aGluZyBJJ2QgbGlrZSB0byBr ZWVwIGFzIGlzIDpEDQoNCj4gDQo+IFNlY29uZCwgSSB0cmllZCB0byBjb2RlIGl0IHVwLCBidXQg aXQgbG9va3MgdWdseSBpbiB0aGlzIGNhc2UsIGFzIHRoZQ0KPiB2YXJpYWJsZSBkZWZpbmVzIG5l ZWQgdG8gZ2V0IG1vdmVkIG91dHNpZGUgdGhlIGlmIHN0YXRlbWVudC4NCj4gDQo+Pj4gK8KgwqDC oMKgwqDCoMKgIHUzMiByc3NfaGFzaCA9IGxlMzJfdG9fY3B1KHJ4X2Rlc2MtPndiLmxvd2VyLmhp X2R3b3JkLnJzcyk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHU4wqAgcnNzX3R5cGUgPSBpZ2NfcnNz X3R5cGUocnhfZGVzYyk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGVudW0gcGt0X2hhc2hfdHlwZXMg aGFzaF90eXBlOw0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKgwqAgaGFzaF90eXBlID0gaWdjX3Jz c190eXBlX3RhYmxlW3Jzc190eXBlXS5oYXNoX3R5cGU7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHNr Yl9zZXRfaGFzaChza2IsIHJzc19oYXNoLCBoYXNoX3R5cGUpOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ IMKgIH0NCj4+DQo+PiBbLi4uXQ0KPj4NCj4+IFRoYW5rcywNCj4+IE9sZWsNCj4+DQo+IA0KDQpU aGFua3MsDQpPbGVrDQo=