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 408F845AE8; Tue, 8 Oct 2024 22:51:36 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 107EB406B7; Tue, 8 Oct 2024 22:51:36 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) by mails.dpdk.org (Postfix) with ESMTP id ECB664027F for ; Tue, 8 Oct 2024 22:51:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1728420694; x=1759956694; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=VOxqu8KprnUtNVmZxBXtTv4luyh1di2Rnkaax9OQSVY=; b=VF1FO7y4m+Go+c5hQ844yxcRwNpGGza0Znm3ceiGcibhPq6t+OFH7HJ3 2aFO7I1ZbKPIKdbyU6B1QvgKQ42J8hP002HYwFwHUbZ7IoM5tcP62nrTw PHLdiwXEC3GJfuUGiQY8N1G2/nttiJqOrbtmVznMihix3a9Et0lzUDKlv fTd8UXajkAoQb7WXuy8xxTBGSV8yQaWpcneqmC0jbxEF/RavIVoA3XCNS Kesf99bZ/CGJT+8OC+N4LKK6GuePut60xsH8jcAc2TqfzYy31q22WOUzR Z574wNzXFs9yTRy4stu9Kjynk9IfuCyV7dUCOGIeGZtiObdXZMkraXEt+ Q==; X-CSE-ConnectionGUID: cBv5oTBHSL6x9ynah5UANA== X-CSE-MsgGUID: rJ0yxyvlSuWU1489QsX4mA== X-IronPort-AV: E=McAfee;i="6700,10204,11219"; a="38789870" X-IronPort-AV: E=Sophos;i="6.11,188,1725346800"; d="scan'208";a="38789870" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Oct 2024 13:51:32 -0700 X-CSE-ConnectionGUID: YzCXDPfMTPG6fctdJb2M1A== X-CSE-MsgGUID: RS1HXe7KT8izXZ6V0zXewQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.11,188,1725346800"; d="scan'208";a="80824667" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orviesa003.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 08 Oct 2024 13:51:33 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 8 Oct 2024 13:51:32 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Tue, 8 Oct 2024 13:51:32 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.45) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Tue, 8 Oct 2024 13:51:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yN2O/Fq37sOxYfAaXeFiVTcdFZqoFhHo+DKUdgb4CQ3ZYLzor7a5l72jvL35xs1JXIjxT+SdG7LQL9zSamcYloMXwqa7XktVYzjmcXmn2Skrfv1BKe+kEml7RNcuyMHghLGyNb3u+8Lu4H8OzgUe14DX80r3QbHisvUEN3+5hZoHivBVVJJ7E6qNqN8X9TxgopmzEr4G/4CW5hMX6b9ZBNPT/xUGneUniunH4wvMrI3hrhLaJMAh6/E6FUj+yvF7A6dlG3E8cA9PLN4iPkW8Oa+eRh35jci/XdY0Sjr+S1Towmo3WFUrb5ZgnCak7Upglu6dw+q7cgB7roLT6cBVwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=VOxqu8KprnUtNVmZxBXtTv4luyh1di2Rnkaax9OQSVY=; b=II1skVeD088S1PMstibMu5lJc0xXk2O6gPf4+DsFgf0mcI1h6fN38zDGeuKQrLL9AorzzNJ9nerYcyf0yj41XuGoJbjx6+Bva7nlrD2eZH/N4l2fZrwdB8k/TrqgUr4OQfAHiMNtJXQA/gdVri0MVZ8p9oqtmjP4Cu+dtgydeM2NhLIJ5c02Pwu4pkaSy/KJLytjZGy7FB8kFVL9zVXEAMXjJRAEo+wNw+zp/6VPQQOwJBBn022jdciDsk+ZrkQ2aG4HAIgHUBMYSLMzadWus3OtwzgIiOjiwaUCSNvOfsCGMLT1ZIgQmyAdgLSorIvdy2CpDPmWViNzroX2DrLWzA== 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 CO1PR11MB5009.namprd11.prod.outlook.com (2603:10b6:303:9e::11) by SA2PR11MB4988.namprd11.prod.outlook.com (2603:10b6:806:f8::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct 2024 20:51:25 +0000 Received: from CO1PR11MB5009.namprd11.prod.outlook.com ([fe80::b03a:b02:c24e:b976]) by CO1PR11MB5009.namprd11.prod.outlook.com ([fe80::b03a:b02:c24e:b976%6]) with mapi id 15.20.8026.020; Tue, 8 Oct 2024 20:51:25 +0000 From: "Kusztal, ArkadiuszX" To: Ferruh Yigit , "Marchand, David" CC: "dev@dpdk.org" , "Ji, Kai" , "Dooley, Brian" Subject: RE: [PATCH v2 1/3] net: add thread-safe crc api Thread-Topic: [PATCH v2 1/3] net: add thread-safe crc api Thread-Index: AQHbFDfxcqxwzXrsXkKcW53MSd7bMrJ8P9kAgAETofA= Date: Tue, 8 Oct 2024 20:51:25 +0000 Message-ID: References: <20241001181150.43506-1-arkadiuszx.kusztal@intel.com> <20241001181150.43506-2-arkadiuszx.kusztal@intel.com> <31a2db2a-1983-479e-ab96-5609cf9c18bb@amd.com> In-Reply-To: <31a2db2a-1983-479e-ab96-5609cf9c18bb@amd.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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB5009:EE_|SA2PR11MB4988:EE_ x-ms-office365-filtering-correlation-id: 582f8720-c277-4783-ed94-08dce7daf993 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; ARA:13230040|376014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?OEloQmtva0JRaVN4YTdWd0RSOXFJSUxDTFdxN05iSTB1bXJIZUNqZWVuMnhB?= =?utf-8?B?a2g2cHRRTnJnOU5IV0txYTlRekVPeHdXbUUvMi81MHk1cWpkRDhuWFNSTGVB?= =?utf-8?B?VmEzOU5hOFZaR1lOSDFDSE1OOW9POEZxcW9yZWxYMm91NlRTL2h6Q0lMbjNw?= =?utf-8?B?WmJ2SU1sQXMreldvb1p3MlA0UnVZM3NiNmtxaVo1MTBPVHFuSm1xZkRZL3Z3?= =?utf-8?B?ZnNKOVN4dkczZXdUUy9ZcGhJNXdic0xUQ3c5N05XdXJDZ0pXMm9odE9mdDFJ?= =?utf-8?B?NzZPRWZCekhoUWlWUTZWeGc1K3llaTJKM09XeGJxeU1RSVRidTBLazlNUWJa?= =?utf-8?B?NWFZdE9SYkRkYW1VTHBqWHptTDArTmxSMkVhakpMdU0zZkEyQ2RBSGFLYzJB?= =?utf-8?B?V2RRaWZTMitDWDM4L3FTTjhaSnFYbXliaTM2NkxFeXk3SjI4b1JQWEk5QzRx?= =?utf-8?B?bE9lT1lvbk5RYlBNWVV6TVNnZ1YvcE1YbmtIQ3BBaEh1RC9xUWZUck1qbHVP?= =?utf-8?B?QXl1WWxiMkVGZU1WeVJTQUVWTkxBSnZJNFFyUiswTUE4U0QzTmVYaEF0Uk5m?= =?utf-8?B?cUFBYzZOMFpBcHJDTmtQMVdBcnZzZXBYRWhzdldiMlJCNWNuTXpsWGZldEg4?= =?utf-8?B?RjJCaENmNDlTSERIYUR0MWdvdVh2QmVvWjJIWW9jMkdEYjFjVVZPSkpUbk5X?= =?utf-8?B?aVdNeEpGWlU5K1FSVWxZamlIMzl3TnhGaFVwVTIvRjJHRlN0THBlSUVLWWxN?= =?utf-8?B?NS9zMWlib1FGSENnS01QK2d4SFdLSzlnZjFlSFF4SUkrVHpGZy9xeWJpS3Ay?= =?utf-8?B?Ky94RXZsdTdJMXl0SXQ0ZEx3TjNCTTAwQnRuR3p4azdVcDcveFcrQ2I0SDNo?= =?utf-8?B?WjNXSWh3SjF4alk1ZVVDYXB6WTRLb25vaFlEeDhkZno5S0pnQW5sQ3lCUUZL?= =?utf-8?B?elZYWlRJNnlDWW1YVElrWGtCa0xsMEM3WUxQck5MWTFUZFJoOVRiYXZzVStS?= =?utf-8?B?VE5DUEhrZTJBLzVlMVFEQ05VZW4zQzZuaXVUc3VsdmFLdmpiclMxQVRPRjdl?= =?utf-8?B?bEFoc21Db1JhY1ZMOTZPdmg0SmJTV3d1TGgzajcxZmZmaG16bllkNXZERkhp?= =?utf-8?B?ZFBMSEUzUEpKUEVBL0p4cFpqZS9WMkZ6YTNjaWJvNjkrMkt0UnQ4V2d5WFpy?= =?utf-8?B?K1ptMXQ2M3MvbUJkNUlIcDdnUWZjcTJUSUNLUTZXbytRTHJtVzQ1ZnZwYnpo?= =?utf-8?B?bmF4Sm9XOElUeVhRdUp1TXVUVEN0U0w1d1lhWE8zSkFiVDkxaHN3c01HNnV4?= =?utf-8?B?U3BMT2VvOUozSVFYajY0MEtIUkVVTEVRN2JVa2NrNzZBT2Q5V3Y1OW5Lb09w?= =?utf-8?B?VVBvOE1GOWdLZUt1VkltZmRTWUxrQUxQaWJXZ3ZvMjlab3hUT3RNM3VqMXVD?= =?utf-8?B?Z3M3dithWXdDeUVONXd3bVA2MDZTK3l1SkNndG1GWHl2SkhKYjNsenkyckJq?= =?utf-8?B?YkludmdOWER1a2ROa2tKTkYxNmtaMWUwVDl5SExBUHBCeU5MMUVuQmx5cW5E?= =?utf-8?B?YXRNMHhydytOcnlScGhGSXFwb1ZvSm0vcVdEZVFrRjN5UzJFeGFLSGd6eUh1?= =?utf-8?B?cGJvVXl3MkdPOU1CTWhhbDZSZCtqeGZaUlh1cVJWLzE4M29CSDNTUkZKWHQv?= =?utf-8?B?SmJBNElxMkQ2MHNTTXRtclpaRGpJOXFId2x1MjZWMjUzRjBYbElGcld3R3BH?= =?utf-8?B?eFRoYlVQa0UrMEtONm9yN0ljOXhYcS85Y080SmF2ODEyNS9SSUIrNGtTMXkx?= =?utf-8?B?dGdmYlpmWmk2S3RwVCtadz09?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO1PR11MB5009.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?LzV0NUxPOURFOWlSSnZqWk0zSHZxQlErNmt6Y0k5SVUvaVVjbGhwZ1VRUVNY?= =?utf-8?B?S3FFdWhha3U4QWg5bjFVYTdKU2gvbkJzTjdLNDlvZ1FQczlaMWIvdVNkVk82?= =?utf-8?B?L1hvOW5qekUzR3ZJaVRVRG9KVTQyWVRJd1dnTlV4c0hkWm4yL25Nb1I2UG5z?= =?utf-8?B?UGhHM21LZVdSNnFFdTl5YW1HNE5WUk02ckIySXk0TGo3KzRpNnRaMnZhMmND?= =?utf-8?B?VUJQZER6aHNJcHMyT0NZNEhOd2ZHQlNDNGc5RldNdlJiQjl1cTRoQ2FJOXFO?= =?utf-8?B?alhOMUFFTDV3dTZGM2FpZmJLak5kWVpRNjIyK1JxYi9PTXg2NCtackg4clF5?= =?utf-8?B?UEU4ZXZBZmxKaW5rbmpQUndJelp3bXpJUC9vNDU5K0k4TlhGVU1QUlNySkZv?= =?utf-8?B?UW41czM1Z0VmeUQ4Q1VZa25VRG5VRVRkOGZIWHEzdE9RTysvaVNFajZ3N1pv?= =?utf-8?B?Z0M3VWJta2pHNllxbC9ZY1NCWS9iejN5ZmVXdWtFUW1yUTF0b2VaeFY1OSs0?= =?utf-8?B?NEVCSkpkcldQRmViVDhMd3l1NzBNYklmaTVPcTdyOElDcEhEQWlJRGRpd2Ra?= =?utf-8?B?bU9pYXRWaER0b01xN1Q5M3BnK3A1ZGpDU1FZdFRKd0ZHNmw5Vm82b3QvMlVu?= =?utf-8?B?R2tpMlpMWTc3WWkxSjFEOFNvbzVmeUExOWlBdThBaEdJN1MyVWZBRDhxODVE?= =?utf-8?B?OForYnQ2WDExVTFiVnpYRHcvTmluYUFwQ2ZZc3N1YVFwbk5Sell1TWZkdVdz?= =?utf-8?B?Q0RIWFU0VmdDREtWRzRuekw1OUxNM3FrVjJyV1BGU2YrWFlqdnZwVWw3cnZs?= =?utf-8?B?b1NyS3NnZjE1R2lXWStZanIxY0I2eWoxaTRRVW93bndJNHo0U3h3MkxncUtF?= =?utf-8?B?MTVWb3Brdkdyekw2c3ZwcVRPYjJkL0NPZ3BtSVpyRk1KYnVjREYzelR4U0lk?= =?utf-8?B?MThWNWJTd0ZiN3BGUGQzWDhvc3BjR1NjRmc1blkwTWJiV0JHVFVWKzdKSWRt?= =?utf-8?B?QmlnVE93MzhRTGN1U29FenoybzNOOWxWU05KRDdwMWV1a05QK3B3VURMVi9t?= =?utf-8?B?cjVEMFZvdTlwcldwc3VMUUEzejJlL281d3U4elN0VVFhT1ZwRzJFRHlIWXl4?= =?utf-8?B?WEtoaG9FS1l6d2kxYVBOZWVPdGVKOE1nY1kzVTVvbnJIcThqNU1VSElJeDk3?= =?utf-8?B?d1Z2SjN4dU5wREI3WW9LUHR3UUxnR2NCenJjYnRNUTZoVlZLRHVhQWNRNE4v?= =?utf-8?B?cDdVYjI2WXZnWnI2S0tBV0NnUUpZNW1OSmU1bWt6Y25aSTRkVEpVVmFTZ2dh?= =?utf-8?B?WUd3QzZlQUtWOStMdzZCb1dPRXE4WXNYcW01ZzVhNDRzTnBEL0l3VndnZWhP?= =?utf-8?B?QnZOZmdVYnk0UWc4MVpLV0RRTEdxakhSYzZNVDA2Rzd6U3NHazNEazkrNDFv?= =?utf-8?B?UnFENVRIcnBXSTVvSkxLNzdGMUs0WitsTklXVk4rcE9tZzdwTU5HR3Z5dDZ0?= =?utf-8?B?UXFKb1RxZmlydEJLcnh0Wmh5ZjJXbm1SMVVyN3kza1BSZ0ZBM0RPSHM0RVZI?= =?utf-8?B?Y1IxZmlCNE9aZk5FZTlyN0kzUTFCd2Mya3l6ME04VkpGeDlRbzlGNVN5SVZ0?= =?utf-8?B?SjNsSkNseUQzUmIwTVNLUXErenFuOG1MN0I1UndtdXZiWlVENnhSL3N4dThI?= =?utf-8?B?cmZHL3hWS3diNWx0UFRsZjNDQzdUOGxqNXk1NkVZWEN2c3BybG5jY2paUXBB?= =?utf-8?B?Mi9JYncwV0xkSTJFb0pSQUpTRWs3R2lxVlFnMWZzbjVZKytQSExYT1h1SFB3?= =?utf-8?B?VE9yUE9FRmFtTlB5VkEwc1ExUm0yeVV2ZGhnV3ZPNVQvZU5STkVXNGZaaUFz?= =?utf-8?B?aUdiaDBwRWpmWGFJaFhVQVdhb0dROUpaNWQvcmo3R1EwVlZSVXFwM1JlUm9P?= =?utf-8?B?MU4yaWR5d01kUXU0SG9HNmkyclppN0w2dEt4UXhmRkJtWWcrZzNFdGJLYzAw?= =?utf-8?B?c04xM2sza2tFRk41eWVhdmZJVDJwS1RNQTdVbCsxUmpnMUF6THNEZUtjL2x6?= =?utf-8?B?cUsyeVV3OEFkUDFxdExkWkwzNVZWaVl1M0N4M3NrMFlnL0ZIZ1BXNTRRY1VD?= =?utf-8?B?cWtuS1QybS9mZDRtMGhac2liN2g5OU1TNGtPVzN5NlozSnIwbmh2WGJCUXYz?= =?utf-8?B?SUE9PQ==?= 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: CO1PR11MB5009.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 582f8720-c277-4783-ed94-08dce7daf993 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2024 20:51:25.5726 (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: HA7JNPTkp0NXX8O3dlN0eDSgXd76/VpeRSV8nCdr1l2wLMauimMFbZofEtVWGyU5drwmSGqUpBnZ4jaAMlNvR4EQg5gCDtIWM3eQADwadCY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4988 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 SGkgRmVycnVoLA0KVGhhbmtzIGZvciB0aGUgcmV2aWV3LCBjb21tZW50cyBpbmxpbmUsDQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRmVycnVoIFlpZ2l0IDxmZXJydWgu eWlnaXRAYW1kLmNvbT4NCj4gU2VudDogVHVlc2RheSwgT2N0b2JlciA4LCAyMDI0IDU6NDMgQU0N Cj4gVG86IEt1c3p0YWwsIEFya2FkaXVzelggPGFya2FkaXVzengua3VzenRhbEBpbnRlbC5jb20+ OyBNYXJjaGFuZCwgRGF2aWQNCj4gPGRhdmlkLm1hcmNoYW5kQHJlZGhhdC5jb20+DQo+IENjOiBk ZXZAZHBkay5vcmc7IEppLCBLYWkgPGthaS5qaUBpbnRlbC5jb20+OyBEb29sZXksIEJyaWFuDQo+ IDxicmlhbi5kb29sZXlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDEvM10g bmV0OiBhZGQgdGhyZWFkLXNhZmUgY3JjIGFwaQ0KPiANCj4gT24gMTAvMS8yMDI0IDc6MTEgUE0s IEFya2FkaXVzeiBLdXN6dGFsIHdyb3RlOg0KPiA+IFRoZSBjdXJyZW50IG5ldCBDUkMgQVBJIGlz IG5vdCB0aHJlYWQtc2FmZSwgdGhpcyBwYXRjaCBzb2x2ZXMgdGhpcyBieQ0KPiA+IGFkZGluZyBh bm90aGVyLCB0aHJlYWQtc2FmZSBBUEkgZnVuY3Rpb25zLg0KPiA+IFRoaXMgQVBJIGlzIGFsc28g c2FmZSB0byB1c2UgYWNyb3NzIG11bHRpcGxlIHByb2Nlc3NlcywgeWV0IHdpdGgNCj4gPiBsaW1p dGF0aW9ucyBvbiBtYXgtc2ltZC1iaXR3aWR0aCwgd2hpY2ggd2lsbCBiZSBjaGVja2VkIG9ubHkg YnkgdGhlDQo+ID4gcHJvY2VzcyB0aGF0IGNyZWF0ZWQgdGhlIENSQyBjb250ZXh0OyBhbGwgb3Ro ZXIgcHJvY2Vzc2VzIHdpbGwgdXNlIHRoZQ0KPiA+IHNhbWUgQ1JDIGZ1bmN0aW9uIHdoZW4gdXNl ZCB3aXRoIHRoZSBzYW1lIENSQyBjb250ZXh0Lg0KPiA+IEl0IGlzIGFuIHVuZGVmaW5lZCBiZWhh dmlvciB3aGVuIHByb2Nlc3MgYmluYXJpZXMgYXJlIGNvbXBpbGVkIHdpdGgNCj4gPiBkaWZmZXJl bnQgU0lNRCBjYXBhYmlsaXRpZXMgd2hlbiB0aGUgc2FtZSBDUkMgY29udGV4dCBpcyB1c2VkLg0K PiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogQXJrYWRpdXN6IEt1c3p0YWwgPGFya2FkaXVzengua3Vz enRhbEBpbnRlbC5jb20+DQo+IA0KPiA8Li4uPg0KPiANCj4gPiArc3RhdGljIHN0cnVjdA0KPiA+ ICt7DQo+ID4gKwl1aW50MzJfdCAoKmZbUlRFX05FVF9DUkNfUkVRU10pDQo+ID4gKwkJKGNvbnN0 IHVpbnQ4X3QgKmRhdGEsIHVpbnQzMl90IGRhdGFfbGVuKTsNCj4gPg0KPiANCj4gSXQgaW5jcmVh c2VzIHJlYWRhYmlsaXR5IHRvIHR5cGVkZWYgZnVuY3Rpb24gcG9pbnRlcnMuDQoNCkFncmVlLCB0 aG91Z2ggdGhpcyB0eXBlZGVmIHdvdWxkIGJlIHVzZWQgaGVyZSBvbmx5LCB0aGF04oCZcyB3aHkg SSBsZWZ0IGl0IG91dC4NCkJ1dCBJIGNhbiBhZGQgaXQgdGhlbi4NCg0KPiANCj4gDQo+ID4gK30g aGFuZGxlcnNbUlRFX05FVF9DUkNfQVZYNTEyICsgMV07DQo+ID4NCj4gPiAtLyoqDQo+ID4gLSAq IFJlZmxlY3QgdGhlIGJpdHMgYWJvdXQgdGhlIG1pZGRsZQ0KPiA+IC0gKg0KPiA+IC0gKiBAcGFy YW0gdmFsDQo+ID4gLSAqICAgdmFsdWUgdG8gYmUgcmVmbGVjdGVkDQo+ID4gLSAqDQo+ID4gLSAq IEByZXR1cm4NCj4gPiAtICogICByZWZsZWN0ZWQgdmFsdWUNCj4gPiAtICovDQo+ID4gLXN0YXRp YyB1aW50MzJfdA0KPiA+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90DQo+ID4NCj4gDQo+IERvZXMg Y2hhbmdpbmcgdG8gJ2lubGluZScgcmVxdWlyZWQsIGFzIGZ1bmN0aW9uIGlzIHN0YXRpYyBjb21w aWxlciBjYW4gZG8gdGhlDQo+IHNhbWUuDQoNClRydWUsIHRob3VnaCBpdCBtYXkgYmUgbW9yZSBy ZWFkYWJsZSBzb21ldGltZXMuDQpPZiBjb3Vyc2UgdGhlcmUgaXMgbm8gd2F5IHRoYXQgaW4gTzMg dGhlc2UgZnVuY3Rpb25zIHdvdWxkIG5vdCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgcmVn YXJkbGVzcyBpZiB0aGUgaW5saW5lIGhpbnQgaXMgcHJlc2VudCBvciBub3QuDQoNCj4gDQo+ID4g IHJlZmxlY3RfMzJiaXRzKHVpbnQzMl90IHZhbCkNCj4gPiAgew0KPiA+ICAJdWludDMyX3QgaSwg cmVzID0gMDsNCj4gPiBAQCAtOTksMjYgKzQzLDcgQEAgcmVmbGVjdF8zMmJpdHModWludDMyX3Qg dmFsKQ0KPiA+ICAJcmV0dXJuIHJlczsNCj4gPiAgfQ0KPiA+DQo+ID4gLXN0YXRpYyB2b2lkDQo+ ID4gLWNyYzMyX2V0aF9pbml0X2x1dCh1aW50MzJfdCBwb2x5LA0KPiA+IC0JdWludDMyX3QgKmx1 dCkNCj4gPiAtew0KPiA+IC0JdWludDMyX3QgaSwgajsNCj4gPiAtDQo+ID4gLQlmb3IgKGkgPSAw OyBpIDwgQ1JDX0xVVF9TSVpFOyBpKyspIHsNCj4gPiAtCQl1aW50MzJfdCBjcmMgPSByZWZsZWN0 XzMyYml0cyhpKTsNCj4gPiAtDQo+ID4gLQkJZm9yIChqID0gMDsgaiA8IDg7IGorKykgew0KPiA+ IC0JCQlpZiAoY3JjICYgMHg4MDAwMDAwMEwpDQo+ID4gLQkJCQljcmMgPSAoY3JjIDw8IDEpIF4g cG9seTsNCj4gPiAtCQkJZWxzZQ0KPiA+IC0JCQkJY3JjIDw8PSAxOw0KPiA+IC0JCX0NCj4gPiAt CQlsdXRbaV0gPSByZWZsZWN0XzMyYml0cyhjcmMpOw0KPiA+IC0JfQ0KPiA+IC19DQo+ID4gLQ0K PiA+IC1zdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB1aW50MzJfdA0KPiA+ICtzdGF0aWMgaW5s aW5lIHVpbnQzMl90DQo+ID4NCj4gDQo+IFdoeSBub3QgZm9yY2luZyBpbmxpbmUgYW55bW9yZT8N Cj4gQXJlIHRoZXNlIGlubGluZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIHRocmVhZC1zYWZldHk/ DQoNCk8zIHdpbGwgaW5saW5lIGl0IGFueXdheSwgYW5kIHdpdGggYWx3YXlzX2lubGluZSBpdCB3 aWxsIGJlIGlubGluZSBldmVuIGluIGRlYnVnIG1vZGUuIEkganVzdCBzZWUgbm8gcmVhc29uIGZv cmNpbmcgaXQgdXBvbiB0aGUgY29tcGlsZXIuIA0KDQo+IA0KPiA+ICBjcmMzMl9ldGhfY2FsY19s dXQoY29uc3QgdWludDhfdCAqZGF0YSwNCj4gPiAgCXVpbnQzMl90IGRhdGFfbGVuLA0KPiA+ICAJ dWludDMyX3QgY3JjLA0KPiA+IEBAIC0xMzAsMjAgKzU1LDkgQEAgY3JjMzJfZXRoX2NhbGNfbHV0 KGNvbnN0IHVpbnQ4X3QgKmRhdGEsDQo+ID4gIAlyZXR1cm4gY3JjOw0KPiA+ICB9DQo+ID4NCj4g PiAtc3RhdGljIHZvaWQNCj4gPiAtcnRlX25ldF9jcmNfc2NhbGFyX2luaXQodm9pZCkNCj4gPiAt ew0KPiA+IC0JLyogMzItYml0IGNyYyBpbml0ICovDQo+ID4gLQljcmMzMl9ldGhfaW5pdF9sdXQo Q1JDMzJfRVRIX1BPTFlOT01JQUwsIGNyYzMyX2V0aF9sdXQpOw0KPiA+IC0NCj4gPiAtCS8qIDE2 LWJpdCBDUkMgaW5pdCAqLw0KPiA+IC0JY3JjMzJfZXRoX2luaXRfbHV0KENSQzE2X0NDSVRUX1BP TFlOT01JQUwgPDwgMTYsIGNyYzE2X2NjaXR0X2x1dCk7DQo+ID4gLX0NCj4gPiAtDQo+ID4gIHN0 YXRpYyBpbmxpbmUgdWludDMyX3QNCj4gPiAtcnRlX2NyYzE2X2NjaXR0X2hhbmRsZXIoY29uc3Qg dWludDhfdCAqZGF0YSwgdWludDMyX3QgZGF0YV9sZW4pDQo+ID4gK2NyYzE2X2NjaXR0KGNvbnN0 IHVpbnQ4X3QgKmRhdGEsIHVpbnQzMl90IGRhdGFfbGVuKQ0KPiA+ICB7DQo+ID4gLQkvKiByZXR1 cm4gMTYtYml0IENSQyB2YWx1ZSAqLw0KPiA+DQo+IA0KPiBXaHkgbm90IGtlZXAgY29tbWVudHM/ IEFyZSB0aGV5IHdyb25nPw0KDQpGdW5jdGlvbnMgbmFtZXMgYXJlIHZlcnkgc2VsZi1leHBsYW5h dG9yeSwgdGhhdOKAmXMgd2h5IEkgZHJvcHBlZCBjb21tZW50cy4gSSBjYW4gYWRkIGNvbW1lbnRz IGlmIG5lZWRlZC4NCg0KPiANCj4gPC4uLj4NCj4gDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK2Ny Y19zY2FsYXJfaW5pdCh2b2lkKQ0KPiA+ICt7DQo+ID4gKwljcmMzMl9ldGhfaW5pdF9sdXQoQ1JD MzJfRVRIX1BPTFlOT01JQUwsIGNyYzMyX2V0aF9sdXQpOw0KPiA+ICsJY3JjMzJfZXRoX2luaXRf bHV0KENSQzE2X0NDSVRUX1BPTFlOT01JQUwgPDwgMTYsIGNyYzE2X2NjaXR0X2x1dCk7DQo+ID4g Kw0KPiA+ICsJaGFuZGxlcnNbUlRFX05FVF9DUkNfU0NBTEFSXS5mW1JURV9ORVRfQ1JDMTZfQ0NJ VFRdID0NCj4gY3JjMTZfY2NpdHQ7DQo+ID4gKwloYW5kbGVyc1tSVEVfTkVUX0NSQ19TQ0FMQVJd LmZbUlRFX05FVF9DUkMzMl9FVEhdID0gY3JjMzJfZXRoOw0KPiA+DQo+IA0KPiArMSB0byByZW1v dmUgZ2xvYmFsIGhhbmRsZXJzIHBvaW50ZXIgYW5kIGFkZCBjb250ZXh0LA0KPiANCj4gQnV0IGN1 cnJlbnQgaGFuZGxlcnMgYXJyYXkgY29udGVudCBpcyBzdGF0aWMsIGl0IGNhbiBiZSBzZXQgd2hl biBkZWZpbmVkLCBpbnN0ZWFkDQo+IG9mIGZ1bmN0aW9ucy4NCg0KQ2FuIGRvIGl0IGZvciBzY2Fs YXJzLCBidXQgZm9yIFNJTUQgdGhlcmUgaXMgdGhpcyBydW50aW1lIGNoZWNrIGxpa2UgdGhpczoN CglpZiAoQVZYNTEyX1ZQQ0xNVUxRRFFfQ1BVX1NVUFBPUlRFRCkgew0KU28gY29tcGlsZWQgYmlu YXJ5IG9uIEFWWDUxMiBtYWNoaW5lIGNvdWxkIGZpbHRlciBpdCBvdXQgb24gdGhlIG1hY2hpbmUg d2hpY2ggZG9lcyBub3Qgc3VwcG9ydCBpdC4NClRoZXJlIGlzIG5vIE5VTEwgY2hlY2sgaW4gY3Jj IGZ1bmN0aW9uIHNvIGl0IHdvdWxkIG5vdCBjaGFuZ2UgbXVjaCB3aGVuIGNhbGxlZCAtPiBJbnZh bGlkIGFkZHJlc3MgdnMgSW52YWxpZCBpbnN0cnVjdGlvbi4NClRoZXJlIGFyZSBub3QgbWFueSBj aGVja3MgdGhlcmUsIGFzIHRoaXMgaXMgQ1JDIGFmdGVyIGFsbCwgaXQgc2hvdWxkIGJlIGEgc21h bGwgYXMgcG9zc2libGUsIHlldCBwcm9iYWJseSBOVUxMIGNoZWNrIGNvdWxkIGJlIGFkdmlzYWJs ZSBpbiBjcmMgZnVuY3Rpb24gdGhlbi4NCg0KDQo+IA0KPiA8Li4uPg0KPiANCj4gPiAtc3RhdGlj IHVpbnQzMl90DQo+ID4gLXJ0ZV9jcmMzMl9ldGhfZGVmYXVsdF9oYW5kbGVyKGNvbnN0IHVpbnQ4 X3QgKmRhdGEsIHVpbnQzMl90IGRhdGFfbGVuKQ0KPiA+ICtzdHJ1Y3QgcnRlX25ldF9jcmMgcnRl X25ldF9jcmNfc2V0KGVudW0gcnRlX25ldF9jcmNfYWxnIGFsZywNCj4gPiArCWVudW0gcnRlX25l dF9jcmNfdHlwZSB0eXBlKQ0KPiA+ICB7DQo+ID4gLQloYW5kbGVycyA9IE5VTEw7DQo+ID4gLQlp ZiAobWF4X3NpbWRfYml0d2lkdGggPT0gMCkNCj4gPiAtCQltYXhfc2ltZF9iaXR3aWR0aCA9IHJ0 ZV92ZWN0X2dldF9tYXhfc2ltZF9iaXR3aWR0aCgpOw0KPiA+IC0NCj4gPiAtCWhhbmRsZXJzID0g YXZ4NTEyX3ZwY2xtdWxxZHFfZ2V0X2hhbmRsZXJzKCk7DQo+ID4gLQlpZiAoaGFuZGxlcnMgIT0g TlVMTCkNCj4gPiAtCQlyZXR1cm4gaGFuZGxlcnNbUlRFX05FVF9DUkMzMl9FVEhdKGRhdGEsIGRh dGFfbGVuKTsNCj4gPiAtCWhhbmRsZXJzID0gc3NlNDJfcGNsbXVscWRxX2dldF9oYW5kbGVycygp Ow0KPiA+IC0JaWYgKGhhbmRsZXJzICE9IE5VTEwpDQo+ID4gLQkJcmV0dXJuIGhhbmRsZXJzW1JU RV9ORVRfQ1JDMzJfRVRIXShkYXRhLCBkYXRhX2xlbik7DQo+ID4gLQloYW5kbGVycyA9IG5lb25f cG11bGxfZ2V0X2hhbmRsZXJzKCk7DQo+ID4gLQlpZiAoaGFuZGxlcnMgIT0gTlVMTCkNCj4gPiAt CQlyZXR1cm4gaGFuZGxlcnNbUlRFX05FVF9DUkMzMl9FVEhdKGRhdGEsIGRhdGFfbGVuKTsNCj4g PiAtCWhhbmRsZXJzID0gaGFuZGxlcnNfc2NhbGFyOw0KPiA+IC0JcmV0dXJuIGhhbmRsZXJzW1JU RV9ORVRfQ1JDMzJfRVRIXShkYXRhLCBkYXRhX2xlbik7DQo+ID4gLX0NCj4gPiArCXVpbnQxNl90 IG1heF9zaW1kX2JpdHdpZHRoOw0KPiA+DQo+ID4gLS8qIFB1YmxpYyBBUEkgKi8NCj4gPiAtDQo+ ID4gLXZvaWQNCj4gPiAtcnRlX25ldF9jcmNfc2V0X2FsZyhlbnVtIHJ0ZV9uZXRfY3JjX2FsZyBh bGcpIC17DQo+ID4gLQloYW5kbGVycyA9IE5VTEw7DQo+ID4gLQlpZiAobWF4X3NpbWRfYml0d2lk dGggPT0gMCkNCj4gPiAtCQltYXhfc2ltZF9iaXR3aWR0aCA9IHJ0ZV92ZWN0X2dldF9tYXhfc2lt ZF9iaXR3aWR0aCgpOw0KPiA+ICsJbWF4X3NpbWRfYml0d2lkdGggPSBydGVfdmVjdF9nZXRfbWF4 X3NpbWRfYml0d2lkdGgoKTsNCj4gPg0KPiA+ICAJc3dpdGNoIChhbGcpIHsNCj4gPiAgCWNhc2Ug UlRFX05FVF9DUkNfQVZYNTEyOg0KPiA+IC0JCWhhbmRsZXJzID0gYXZ4NTEyX3ZwY2xtdWxxZHFf Z2V0X2hhbmRsZXJzKCk7DQo+ID4gLQkJaWYgKGhhbmRsZXJzICE9IE5VTEwpDQo+ID4gLQkJCWJy ZWFrOw0KPiA+ICsjaWZkZWYgQ0NfWDg2XzY0X0FWWDUxMl9WUENMTVVMUURRX1NVUFBPUlQNCj4g PiArCQlpZiAoQVZYNTEyX1ZQQ0xNVUxRRFFfQ1BVX1NVUFBPUlRFRCAmJg0KPiA+ICsJCQkJbWF4 X3NpbWRfYml0d2lkdGggPj0gUlRFX1ZFQ1RfU0lNRF81MTIpIHsNCj4gPiArCQkJcmV0dXJuIChz dHJ1Y3QgcnRlX25ldF9jcmMpeyBSVEVfTkVUX0NSQ19BVlg1MTIsDQo+IHR5cGUgfTsNCj4gPiAr CQl9DQo+ID4gKyNlbmRpZg0KPiA+ICAJCS8qIGZhbGwtdGhyb3VnaCAqLw0KPiA+ICAJY2FzZSBS VEVfTkVUX0NSQ19TU0U0MjoNCj4gPiAtCQloYW5kbGVycyA9IHNzZTQyX3BjbG11bHFkcV9nZXRf aGFuZGxlcnMoKTsNCj4gPiAtCQlicmVhazsgLyogZm9yIHg4NiwgYWx3YXlzIGJyZWFrIGhlcmUg Ki8NCj4gPiArI2lmZGVmIENDX1g4Nl82NF9TU0U0Ml9QQ0xNVUxRRFFfU1VQUE9SVA0KPiA+ICsJ CWlmIChTU0U0Ml9QQ0xNVUxRRFFfQ1BVX1NVUFBPUlRFRCAmJg0KPiA+ICsJCQkJbWF4X3NpbWRf Yml0d2lkdGggPj0gUlRFX1ZFQ1RfU0lNRF8xMjgpIHsNCj4gPiArCQkJcmV0dXJuIChzdHJ1Y3Qg cnRlX25ldF9jcmMpeyBSVEVfTkVUX0NSQ19TU0U0MiwgdHlwZQ0KPiB9Ow0KPiA+ICsJCX0NCj4g PiArI2VuZGlmDQo+ID4gKwkJYnJlYWs7DQo+ID4gIAljYXNlIFJURV9ORVRfQ1JDX05FT046DQo+ ID4gLQkJaGFuZGxlcnMgPSBuZW9uX3BtdWxsX2dldF9oYW5kbGVycygpOw0KPiA+IC0JCS8qIGZh bGwtdGhyb3VnaCAqLw0KPiA+IC0JY2FzZSBSVEVfTkVUX0NSQ19TQ0FMQVI6DQo+ID4gLQkJLyog ZmFsbC10aHJvdWdoICovDQo+ID4gKyNpZmRlZiBDQ19BUk02NF9ORU9OX1BNVUxMX1NVUFBPUlQN Cj4gPiArCQlpZiAoTkVPTl9QTVVMTF9DUFVfU1VQUE9SVEVEICYmDQo+ID4gKwkJCQltYXhfc2lt ZF9iaXR3aWR0aCA+PSBSVEVfVkVDVF9TSU1EXzEyOCkgew0KPiA+ICsJCQlyZXR1cm4gKHN0cnVj dCBydGVfbmV0X2NyYyl7IFJURV9ORVRfQ1JDX05FT04sIHR5cGUNCj4gfTsNCj4gPiArCQl9DQo+ ID4gKyNlbmRpZg0KPiA+DQo+IA0KPiBJcyBpdCBtb3JlIHJlYWRhYmxlIGFzIGZvbGxvd2luZywg dXAgdG8geW91Og0KDQpBZ3JlZSwgSSB3aWxsIGNoYW5nZSBpdC4NCg0KPiANCj4gYGBgDQo+IHJ0 ZV9uZXRfY3JjX3NldChhbGcsIHR5cGUpIHsNCj4gICBlbnVtIHJ0ZV9uZXRfY3JjX2FsZyBuZXdf YWxnID0gUlRFX05FVF9DUkNfU0NBTEFSOw0KPiAgIHN3aXRjaCAoYWxnKSB7DQo+ICAgY2FzZSBB Vlg1MTI6DQo+ICAgICBuZXdfYWxnID0gLi4NCj4gICBjYXNlIE5FT046DQo+ICAgICBuZXdfYWxn ID0gLi4NCj4gICB9DQo+ICAgcmV0dXJuIHN0cnVjdCBydGVfbmV0X2NyYyl7IG5ld19hbGcsIHR5 cGUgfTsgYGBgDQo+IA0KPiANCj4gDQo+IA0KPiA+ICsJCWJyZWFrOw0KPiA+ICAJZGVmYXVsdDoN Cj4gPiAgCQlicmVhazsNCj4gPiAgCX0NCj4gPiAtDQo+ID4gLQlpZiAoaGFuZGxlcnMgPT0gTlVM TCkNCj4gPiAtCQloYW5kbGVycyA9IGhhbmRsZXJzX3NjYWxhcjsNCj4gPiArCXJldHVybiAoc3Ry dWN0IHJ0ZV9uZXRfY3JjKXsgUlRFX05FVF9DUkNfU0NBTEFSLCB0eXBlIH07DQo+ID4gIH0NCj4g Pg0KPiA+IC11aW50MzJfdA0KPiA+IC1ydGVfbmV0X2NyY19jYWxjKGNvbnN0IHZvaWQgKmRhdGEs DQo+ID4gLQl1aW50MzJfdCBkYXRhX2xlbiwNCj4gPiAtCWVudW0gcnRlX25ldF9jcmNfdHlwZSB0 eXBlKQ0KPiA+ICt1aW50MzJfdCBydGVfbmV0X2NyYyhjb25zdCBzdHJ1Y3QgcnRlX25ldF9jcmMg KmN0eCwNCj4gPiArCWNvbnN0IHZvaWQgKmRhdGEsIGNvbnN0IHVpbnQzMl90IGRhdGFfbGVuKQ0K PiA+ICB7DQo+ID4gLQl1aW50MzJfdCByZXQ7DQo+ID4gLQlydGVfbmV0X2NyY19oYW5kbGVyIGZf aGFuZGxlOw0KPiA+IC0NCj4gPiAtCWZfaGFuZGxlID0gaGFuZGxlcnNbdHlwZV07DQo+ID4gLQly ZXQgPSBmX2hhbmRsZShkYXRhLCBkYXRhX2xlbik7DQo+ID4gLQ0KPiA+IC0JcmV0dXJuIHJldDsN Cj4gPiArCXJldHVybiBoYW5kbGVyc1tjdHgtPmFsZ10uZltjdHgtPnR5cGVdKGRhdGEsIGRhdGFf bGVuKTsNCj4gPg0KPiANCj4gJ3J0ZV9uZXRfY3JjKCknIGdldHMgaW5wdXQgZnJvbSB1c2VyIGFu ZCAic3RydWN0IHJ0ZV9uZXRfY3JjIiBpcyBub3Qgb3BhcXVlLCBzbw0KPiB1c2VyIGNhbiBwcm92 aWRlIGludmFsaWQgaW5wdXQsIGN0eC0+YWxnICYgY3R4LT50eXBlLg0KPiBUbyBwcm90ZWN0IGFn YWluc3QgaXQgaW5wdXQgdmFsdWVzIHNob3VsZCBiZSBjaGVja2VkIGJlZm9yZSB1c2luZy4NCj4g DQo+IE9yIEkgdGhpbmsgdXNlciBub3QgbmVlZCB0byBrbm93IHRoZSBkZXRhaWxzIG9mIHRoZSAi c3RydWN0IHJ0ZV9uZXRfY3JjIiwgc28gaXQgY2FuDQo+IGJlIGFuIG9wYXF1ZSB2YXJpYWJsZSBm b3IgdXNlci4NCg0KSSB3b3VsZCBsb3ZlIGl0IHRvIGJlIG9wYXF1ZSwgYnV0IHRoZW4gSSB3b3Vs ZCBoYXZlIHRvIHJldHVybiBhIHBvaW50ZXIsIHdoaWNoIHRoZW4gd291bGQgaW52b2x2ZSBzb21l IGFsbG9jYXRpb25zL2RlYWxsb2NhdGlvbnMgYW5kIEkgd2FudGVkIHRvIGtlZXAgaXMgYXMgc2lt cGxlIGFzIHBvc3NpYmxlLg0KU28gcHJvYmFibHkgdGhlIGNoZWNrcyB3b3VsZCBiZSBhIHdheSB0 byBnby4NCg0KPiANCj4gPC4uLj4NCj4gDQo+ID4gLS8qKg0KPiA+IC0gKiBDUkMgY29tcHV0ZSBB UEkNCj4gPiAtICoNCj4gPiAtICogQHBhcmFtIGRhdGENCj4gPiAtICogICBQb2ludGVyIHRvIHRo ZSBwYWNrZXQgZGF0YSBmb3IgQ1JDIGNvbXB1dGF0aW9uDQo+ID4gLSAqIEBwYXJhbSBkYXRhX2xl bg0KPiA+IC0gKiAgIERhdGEgbGVuZ3RoIGZvciBDUkMgY29tcHV0YXRpb24NCj4gPiAtICogQHBh cmFtIHR5cGUNCj4gPiAtICogICBDUkMgdHlwZSAoZW51bSBydGVfbmV0X2NyY190eXBlKQ0KPiA+ IC0gKg0KPiA+IC0gKiBAcmV0dXJuDQo+ID4gLSAqICAgQ1JDIHZhbHVlDQo+ID4gLSAqLw0KPiA+ IC11aW50MzJfdA0KPiA+IC1ydGVfbmV0X2NyY19jYWxjKGNvbnN0IHZvaWQgKmRhdGEsDQo+ID4g LQl1aW50MzJfdCBkYXRhX2xlbiwNCj4gPiArc3RydWN0IHJ0ZV9uZXRfY3JjIHJ0ZV9uZXRfY3Jj X3NldChlbnVtIHJ0ZV9uZXRfY3JjX2FsZyBhbGcsDQo+ID4gIAllbnVtIHJ0ZV9uZXRfY3JjX3R5 cGUgdHlwZSk7DQo+ID4NCj4gPiArdWludDMyX3QgcnRlX25ldF9jcmMoY29uc3Qgc3RydWN0IHJ0 ZV9uZXRfY3JjICpjdHgsDQo+ID4gKwljb25zdCB2b2lkICpkYXRhLCBjb25zdCB1aW50MzJfdCBk YXRhX2xlbik7DQo+ID4gKw0KPiA+DQo+IA0KPiBBcyB0aGVzZSBhcmUgQVBJcywgY2FuIHlvdSBw bGVhc2UgYWRkIGRveHlnZW4gY29tbWVudHMgdG8gdGhlbT8NCisxDQpJIHRoaW5rIHRoaXMgY2hh bmdlIGNvdWxkIGJlIGRlZmVycmVkIHRvIDI1LjAzLg0KQWRkaW5nIHRoaXMgQVBJIHdpdGhvdXQg cmVtb3ZpbmcgdGhlIG9sZCBvbmUgc2hvdWxkIGJlIHBvc3NpYmxlIHdpdGhvdXQgYW55IHVud2Fu dGVkIGNvbnNlcXVlbmNlcz8NCkkgc3RpbGwgaGF2ZSBzb21lIHNlY29uZCB0aG91Z2h0cyBhYm91 dCB0aGlzIG1heC1zaW1kLXdpZHRoLiBEUERLIGRvZXMgbm90IGltcG9zZSBhbnkgcmVzdHJpY3Rp b25zIG9uIHRoaXMgcGFyYW1ldGVyIGluIHRoZSBtdWx0aS1wcm9jZXNzIHVzYWdlLA0KdGhlcmUg bWF5IGJlIHNvbWUgcm9vbSB0byBhbHRlciBzb21lIHRoaW5ncyB0aGVyZS4NCg0KPiANCj4gPiAg I2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4gIH0NCj4gPiAgI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBh L2xpYi9uZXQvdmVyc2lvbi5tYXAgYi9saWIvbmV0L3ZlcnNpb24ubWFwIGluZGV4DQo+ID4gYmVj NGNlMjNlYS4uNDdkYWYxNDY0YSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbmV0L3ZlcnNpb24ubWFw DQo+ID4gKysrIGIvbGliL25ldC92ZXJzaW9uLm1hcA0KPiA+IEBAIC00LDExICs0LDI1IEBAIERQ REtfMjUgew0KPiA+ICAJcnRlX2V0aF9yYW5kb21fYWRkcjsNCj4gPiAgCXJ0ZV9ldGhlcl9mb3Jt YXRfYWRkcjsNCj4gPiAgCXJ0ZV9ldGhlcl91bmZvcm1hdF9hZGRyOw0KPiA+IC0JcnRlX25ldF9j cmNfY2FsYzsNCj4gPiAtCXJ0ZV9uZXRfY3JjX3NldF9hbGc7DQo+ID4gIAlydGVfbmV0X2dldF9w dHlwZTsNCj4gPiAgCXJ0ZV9uZXRfbWFrZV9yYXJwX3BhY2tldDsNCj4gPiAgCXJ0ZV9uZXRfc2tp cF9pcDZfZXh0Ow0KPiA+ICsJcnRlX25ldF9jcmM7DQo+ID4gKwlydGVfbmV0X2NyY19zZXQ7DQo+ ID4NCj4gPiAgCWxvY2FsOiAqOw0KPiA+ICB9Ow0KPiA+ICsNCj4gPiArSU5URVJOQUwgew0KPiA+ ICsJZ2xvYmFsOg0KPiA+ICsNCj4gPiArCXJ0ZV9uZXRfY3JjX3NzZTQyX2luaXQ7DQo+ID4gKwly dGVfY3JjMTZfY2NpdHRfc3NlNDJfaGFuZGxlcjsNCj4gPiArCXJ0ZV9jcmMzMl9ldGhfc3NlNDJf aGFuZGxlcjsNCj4gPiArCXJ0ZV9uZXRfY3JjX2F2eDUxMl9pbml0Ow0KPiA+ICsJcnRlX2NyYzE2 X2NjaXR0X2F2eDUxMl9oYW5kbGVyOw0KPiA+ICsJcnRlX2NyYzMyX2V0aF9hdng1MTJfaGFuZGxl cjsNCj4gPiArCXJ0ZV9uZXRfY3JjX25lb25faW5pdDsNCj4gPiArCXJ0ZV9jcmMxNl9jY2l0dF9u ZW9uX2hhbmRsZXI7DQo+ID4gKwlydGVfY3JjMzJfZXRoX25lb25faGFuZGxlcjsNCj4gPiArfTsN Cj4gPg0KPiANCj4gKzEgdG8gRGF2aWQncyBjb21tZW50LCB0aGVzZSBhcmUgdXNlZCBvbmx5IHdp dGhpbiBjb21wb25lbnQsIG5vIG5lZWQgdG8NCj4gZXhwb3J0Lg0KPiANCg0K