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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EB23EC433F5 for ; Tue, 5 Oct 2021 13:29:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D05A861A0C for ; Tue, 5 Oct 2021 13:29:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234850AbhJENbI (ORCPT ); Tue, 5 Oct 2021 09:31:08 -0400 Received: from mail-am6eur05on2055.outbound.protection.outlook.com ([40.107.22.55]:33525 "EHLO EUR05-AM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S234170AbhJENbH (ORCPT ); Tue, 5 Oct 2021 09:31:07 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lE/tSqea8aAsAcSO8SX8OC+gIz/kQBj9omUc0SNjhS4skSAWcYU8iXULOVRPHrHYBz4+TedLv0++sYNknOadfkUMiqMJ5qggHSXlp1ltZMABRKf8jPaclPflUE1bLhSmEQd+6Jby6/TLqJT5gEO8deXb78NfnUrOLjpCLizz0uVci1kMInzqU3lq2pcu3Adh0hsLvIzxz+EXdosaBW4wpIy9VSW91LHa3TCs2RJUj1Ncf9LJkBrrB8K9UbsMUzGPnGs5ZpetW+XOqtIBWEmJCV5LrDv4jA+cxvz+7PdixsawumR42yTMl7Mh0z2J75YWFc7K6zUull+OBBTUuWfLiw== 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=H7Wo9QFi+Elf56NZczyOcGAaTf1urMlF1O3zYfDM5bY=; b=eEEQckeDYN9KshPE/Qd+4+HgQzJ5dYzQX1o7HdhcDDR5w1jAvc4pZ3r4X4aUO2/CuubNuULATIxE4Ori55Dl/SdrwnoGtWi+rcwLCUCUgz9sveHlPQS1eXcUN/m8Qn0TrZtWmJvJn7EQLWvDHl22jtqQu1hjqpcUWnBC2ztQ9xKt6Lnkzdo0pCcU7m5/7qlgAZtMKxgoKyXl26slyEbF/HfJ5L6+glv3wCjvlCzb4Q//T9hyFbk3e4ua9T4Nt2Wo13NhcDY0UD9NBXIeUoSuRze60SV8clBxk1rFjzojaN1kXTo08vA6x5FdVPwGkWAVY6THkJGlFOHd5qc/fx5fQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H7Wo9QFi+Elf56NZczyOcGAaTf1urMlF1O3zYfDM5bY=; b=WAf97gDg4SWXe/0ZuRGayeJ86lUxfxRfcL7DwJcXYixpitI7bWIcTjU8RHMshTtXw9fr3ZHA/4tZtelzzdb/rLI7iAIlKV4rJDexynyyiUzWHFxQGDx4k0HbEB5j4tWlXhHWzYni7lrMj2W1qALsXOj9nh+bpIcML8SvWbznk4s= Received: from VI1PR04MB5136.eurprd04.prod.outlook.com (2603:10a6:803:55::19) by VI1PR04MB6272.eurprd04.prod.outlook.com (2603:10a6:803:fe::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.21; Tue, 5 Oct 2021 13:29:13 +0000 Received: from VI1PR04MB5136.eurprd04.prod.outlook.com ([fe80::e157:3280:7bc3:18c4]) by VI1PR04MB5136.eurprd04.prod.outlook.com ([fe80::e157:3280:7bc3:18c4%5]) with mapi id 15.20.4566.022; Tue, 5 Oct 2021 13:29:13 +0000 From: Vladimir Oltean To: =?utf-8?B?QWx2aW4gxaBpcHJhZ2E=?= CC: "netdev@vger.kernel.org" , Florian Fainelli , Andrew Lunn Subject: Re: DSA: some questions regarding TX forwarding offload Thread-Topic: DSA: some questions regarding TX forwarding offload Thread-Index: AQHXucaemV05T+14+0C6ajjHlibfJavEL5CAgAAgAgCAABbYAA== Date: Tue, 5 Oct 2021 13:29:13 +0000 Message-ID: <20211005132912.bkjogbbv7gpf6ue7@skbuf> References: <04d700b6-a4f7-b108-e711-d400ef01cc2e@bang-olufsen.dk> <20211005101253.sqvsvk53k34atjwt@skbuf> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: bang-olufsen.dk; dkim=none (message not signed) header.d=none;bang-olufsen.dk; dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8df101cd-3b61-4739-2716-08d988041f4f x-ms-traffictypediagnostic: VI1PR04MB6272: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: fdrHmGc4AyelKDhFslPan83xUvpMjHrMgWNnLtCC2CFUbpSZTmAkyW0YpC9AL6/btLMfwOErK5pXB8XFjsOZuM/Qs0yxaofkJ1a+3rnkUUST2uaTt/Js7CSowI3jHoVc07vThZHGuCA+hpGAPXy76Kn1aII7Nld+DO4sesPjRLLJEEoKlX4/kWrP8tIVN4UuGACzA0U3x8hxznIAVT4TfuShtRTb0jAa3oqgUyN1eWR6vUf9w+3egk3bq5GFRmxQNbPTQprrt1Ws+Dnn15B2rqQA8aJ5xQD+DIpP0zYqqAUS2n6M4OwichGOP6iWvBZL5c52N2ybDIulSWMZER8Rpw/mj1aHE0snUhBD5Kcd0vjc0cXnSUqtLLbBql/4IxhMBFiwRzSM1OFJujxWz9nZzMKrapQNTEvHGDiXtp1SK1ch2qOTbZmi3u7eHHbijnQW5ePR1jrpK7PsvOwpte5ZPIYI88Y+LjxNpzt2O2AGB7AAYpW4AhqnXb5Wk9KJ2q0353kapSYqSKVogstg8+Mi24/lTbJBxB6m3SMjESj5XKvlrzL4Kh2+0Q+GqHeIi4kSSd6DUTK0RoIxzaFt/lRgXHgNIDx+6f9bWnT/J0leJNP8TqaRxPrTKBbFb5XKvycIguWkIEtY8h4fGjeq0cshwjfXn8quIo1vr12WrgK5FxZ/poYxkHQdzzVoRu+LAPLh9BCV481GwEzjRSsYVWiBWg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5136.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(7916004)(4636009)(366004)(91956017)(5660300002)(9686003)(6916009)(83380400001)(186003)(26005)(33716001)(44832011)(66574015)(86362001)(54906003)(30864003)(6506007)(6512007)(71200400001)(76116006)(1076003)(8936002)(4326008)(508600001)(6486002)(8676002)(2906002)(38100700002)(316002)(38070700005)(66446008)(66556008)(122000001)(66476007)(64756008)(66946007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OFRlSXRWazVVdHlpaUFnZWY4Ny9KQWJBV0FCTGoyT3NCQjlrUjlYcTJNOXhB?= =?utf-8?B?R0RYZ1ZJNVFuV3ZCaEJ1aklYSlhOYXpDNDZmaFpFcjNsWDE1bjVveG1DSjJu?= =?utf-8?B?QUdyMS9sSXk1bXFtSjNJbkZ6d0xnRGJ1NmlZTHhtbUM5NUZsZWRvWUFKREYw?= =?utf-8?B?aTNvZDExNGJvNXh1cHArS0hJV2N3Mkh2N2o3OFA0bzI0ak4yeGttcEx4Njla?= =?utf-8?B?MytheGovVmlHNnF1cDMycFpNdnFxZjBkaFRGUVJRNUUrMk43VUp4Ums0UEsv?= =?utf-8?B?OVZidGVFYm1VK1dyQnRjbWQ3MGJrNU9pTTlGc1E2aE1nOFRkNWZHakJNL00y?= =?utf-8?B?SnRYM1IwV2NGZlo5SE9VQzFRTmlxUjZSdys2dlVuWW9qckRyRHdmS3RxMkxB?= =?utf-8?B?NkRQUmNlWXFUcWNaSU1GanMzWnd6dUdnMWJTSXRwcHNWRVl5QWFtZ3I4cVBY?= =?utf-8?B?SkZoK1BHUWxFREU4RFZUVjZNUC9JeUpzKzRXTGFpMEJhZ1lPYXBZV3dScUhX?= =?utf-8?B?Rm9ZdnpQZkQ3bkVDWXVXOFU1eUxnTDRlbk5Uemc1RDdPOFJqbmV5YWQrTHc2?= =?utf-8?B?US9XZFJpRzZJN0FoRml0R3dybVJGQWF3bjdJL1ZqTTNyTkI5UWdoVS9Db3Az?= =?utf-8?B?YlBXcEp5ZVFPWFU2TlFnc1FUWHJ6aG5NV0xDSnlBdjB3ZmlPcGd3UWVnV0FS?= =?utf-8?B?T04zcGNVd1FJdVRkU002bUhHeThsNWhZWldublRwc2krM20xVElhOXlVTHpz?= =?utf-8?B?L0d0WVRMOTJkelIvUVJtdjExYXY5b2RucGlocFVSNU5IWXUrdDh4Z3Q2UCtu?= =?utf-8?B?eXZHc1EzckM2RW5TMkZESnZWaTZDajhhQlNMUWN2QjhUWEM2c3VrYTBtR1Bx?= =?utf-8?B?ZU9mR2NMd1Z4V0MwM3dzWjZJUmF2QVZGdUozMllEbk00VWZCOWcycmFTTWpE?= =?utf-8?B?YU9PVlloNnpxWGJMeTB3SzIzdUtrb2dWNFh6RnhNdXZFWi9SMzNYc2Q3ZkVm?= =?utf-8?B?dDh2SVNvYWpYZjlJRGI1ODZWci9DU0YwY0I4UWdkT09oNEttWkgwVjdNYlN6?= =?utf-8?B?Q1hLamdrYUZEcWZyVWJxZlNNemIvRXFSLzlWZTgzMHZXS0RXN0RqclpycWdw?= =?utf-8?B?QlpkRHZOaEorRWlaWlhGWUxpNUdrS0lJYUlUNDlpM2RhREJZRnZaODFuSUln?= =?utf-8?B?alFnMzRlWEUyQkcwd2x1dytwLzI2blJvT1ZUc3BYTWZndmhtbk54ak4zVGFV?= =?utf-8?B?VnA3amF6cDZDaUJjbXNRY0s3OTBuTVJDZGttSXhnQkY4bHk4Y2M5WjVMNzdr?= =?utf-8?B?S2wrcFBNQ1BBQjl1RU1Ya3ZqN0laSTI5MWN3Wi9VY1I3R2cwYmFrTEJKd014?= =?utf-8?B?Q1VQN3VvSXppZUs5MjFwVTJZWGg2SHRPeWh6YytJUjVpOTZXZDZMajk4eFcy?= =?utf-8?B?RTMwVHlNZTVmRnppYnY0UkVLU3g4T1VDYnUvM2d0cWxvc1RxUC9HejIyZlNN?= =?utf-8?B?b0RJaVFmNTI2R3pUZkV6YWVUMkV6WUM1aHFOU2FPaWZYZ2d0YjZFVnQzYlpv?= =?utf-8?B?UVhaZDl2Ny9tdXBZRTFUVkowNWRTbkhNaHBlTWxXQ21DcHRHTHVFamJ6cEZi?= =?utf-8?B?YVpCTFV6dmk3MGNRSmZhK0lDMkt1a0p5WFI3bE1RVENSa2Q5THB5ZTlST1Jv?= =?utf-8?B?bHV6cnJTelNTZHlBa3ZhSFphcVRqV1VQV1VBZTNrcUdwekIyVklIdWxKcDVu?= =?utf-8?Q?IqXihL9Kb/XACXbBTj88kIxff0dZdB518LSbgIu?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <8D327C2973681E488B63BB8BEEA16BDF@eurprd04.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5136.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8df101cd-3b61-4739-2716-08d988041f4f X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Oct 2021 13:29:13.4984 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 4KaMQKDPbNGTgqjaZ9eTLMmkXxWrHXK/6It8denhm17ZWqb9nihi5sGwg5/ibq2Q/gPAgJdIBry/S6hDGr69zw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6272 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org T24gVHVlLCBPY3QgMDUsIDIwMjEgYXQgMTI6MDY6MzhQTSArMDAwMCwgQWx2aW4gxaBpcHJhZ2Eg d3JvdGU6DQo+IFRoZSBGREIgaXNvbGF0aW9uIG1lY2hhbmlzbSBpbiBteSBzd2l0Y2ggc2VlbXMg dG8gYmUgcHJldHR5IGdvb2QuIEFzDQo+IGxvbmcgYXMgSSBjYW4gcGFzcyBhbG9uZyAqc29tZSog aW5mb3JtYXRpb24gZnJvbSB0aGUgc3dpdGNoIGRyaXZlciB0bw0KPiB0aGUgdGFnZ2luZyBkcml2 ZXIgLSBuYW1lbHkgdGhlICJhbGxvd2FuY2UgcG9ydCBtYXNrIiBmb3IgYSBnaXZlbiBicmlkZ2UN Cj4gLSBJIHRoaW5rIEkgc2hvdWxkIGJlIGFibGUgdG8gYWNoaWV2ZSBmdWxsIGlzb2xhdGlvbiBi ZXR3ZWVuIHVwIHRvIDcNCj4gVkxBTi1hd2FyZSBicmlkZ2VzIGFuZCB3aXRoIG5vIHJlc3RyaWN0 aW9ucyBvbiB0aGUgbnVtYmVyIG9mIFZMQU5zIHBlcg0KPiBicmlkZ2UsIG5vciBvbiB0aGUgc2hh cmluZyBvZiBWTEFOcyBwZXIgYnJpZGdlLg0KPg0KPiBIZXJlIGlzIGEgcXVpY2sgc3VtbWFyeSBv ZiB0aGUgcmVsZXZhbnQgYmVoYXZpb3VyIG9mIHRoZSBzd2l0Y2g6DQo+DQo+IFZMQU5zIHByb2dy YW1tZWQgb24gdGhlIHN3aXRjaCBjYW4gYmUgc2V0IHRvIGVpdGhlciBTVkwgb3IgSVZMLCBvbiBh DQo+IHBlci1WTEFOIGJhc2lzLiBUaGlzIGFmZmVjdHMgaG93IGxlYXJuZWQgTUFDIGFkZHJlc3Nl cyBhcmUgc2VhcmNoZWQNCj4gZm9yL3NhdmVkIGluIHRoZSBoYXJkd2FyZSBGREI6DQo+DQo+ICAg IC0gSW4gU1ZMIG1vZGUsIHRoZSBoYXJkd2FyZSBGREIgaXMga2V5ZWQgd2l0aCB7RklELCBNQUN9 Lg0KPiAgICAtIEluIElWTCBtb2RlLCB0aGUgaGFyZHdhcmUgRkRCIGlzIGtleWVkIHdpdGgge1ZJ RCwgTUFDLCBFRklEfS4NCj4NCj4gRUZJRCBzdGFuZHMgZm9yICJFbmhhbmNlZCBGaWx0ZXJpbmcg SWRlbnRpZmllciIuIFRoZSBFRklEIGlzIDMgYml0cy4NCj4NCj4gVW5saWtlIHRoZSBGSUQgLSB3 aGljaCBpcyBwcm9ncmFtbWVkIHBlci1WTEFOIC0gdGhlIEVGSUQgaXMgcHJvZ3JhbW1lZA0KPiBw ZXItcG9ydC4gV2hlbiBhIHBvcnQgaGFzIGxlYXJuaW5nIGVuYWJsZWQgYW5kIGl0IHJlY2VpdmVz IGFuIGluZ3Jlc3MNCj4gZnJhbWUgd2l0aCBhIGdpdmVuIFZJRCBhbmQgTUFDIFNBLCBpdCB3aWxs IHNlYXJjaCBpbiB0aGUgaGFyZHdhcmUgRkRCDQo+IHdpdGggYSBrZXkge1ZJRCwgTUFDIFNBLCBF RklEfSAtIHdoZXJlIEVGSUQgaXMgdGhlIHBvcnQgRUZJRCAtIGFuZCBpZg0KPiB0aGUgZW50cnkg aXMgbm90IGZvdW5kLCBpdCB3aWxsIGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgYWxsb3dzIHRoZSBz d2l0Y2gNCj4gdG8gbGVhcm4gdGhlIHNhbWUge1ZJRCwgTUFDIFNBfSBwYWlyIG9uIHR3byBzZXBh cmF0ZSBwb3J0cywgcHJvdmlkZWQNCj4gdGhvc2UgcG9ydHMgaGF2ZSBkaWZmZXJlbnQgRUZJRHMu DQoNClNvIHlvdSBhcmUgYmFzaWNhbGx5IHNheWluZyB0aGF0IGZvciBGREIgbG9va3VwcywgdGhl IEVGSUQgaXMgbGlrZSBhDQozLWJpdCBleHRlbnNpb24gb2YgdGhlIDEyLWJpdCBWSUQsIHByYWN0 aWNhbGx5IGVtdWxhdGluZyBhIDMySyBWTEFOIHNwYWNlPw0KDQo+ID4gV2hlbiB5b3Ugc2F5ICJi YXNlZCBfb25seV8gb24gdGhlIFZMQU4gdGFnIiBkbyB5b3UgbWVhbiB0aGF0IHRoZSBNQUMgREEN Cj4gPiBpcyBub3QgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uPyBBcmUgcGFja2V0cyBmbG9vZGVk IHRvd2FyZHMgdGhlIGVudGlyZQ0KPiA+IHNldCBvZiBwb3J0cyBpbiB0aGUgYWxsb3dhbmNlIHBv cnQgbWFzayB0aGF0IGFyZSBtZW1iZXJzIG9mIFZMQU4gTj8NCj4NCj4gTXkgY2hvaWNlIG9mIHdv cmRzIHdhcyBpbXByZWNpc2UuIEkgZG8gbm90IG1lYW4gdG8gc2F5IHRoYXQgdGhlIE1BQyBEQQ0K PiBpcyBpZ25vcmVkLiBJZiB0aGVyZSBleGlzdHMgYSBzdWl0YWJsZSBlbnRyeSBpbiB0aGUgaGFy ZHdhcmUgRkRCIGZvcg0KPiB0aGF0IE1BQyBEQSBhbmQgVkxBTiBuLCB0aGUgc3dpdGNoIHdpbGwg X25vdF8gZmxvb2QgdGhlIGVudGlyZSBzZXQgb2YNCj4gcG9ydHMgaW4gdGhlIGFsbG93YW5jZSBw b3J0IG1hc2sgdGhhdCBhcmUgbWVtYmVycyBvZiBWTEFOIG4uIEluc3RlYWQsIGl0DQo+IF93aWxs XyByZXNwZWN0IHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgdGhlIGhhcmR3YXJlIEZEQiBhbmQg Zm9yd2FyZA0KPiB0aGUgcGFja2V0IG9ubHkgb24gdGhlIGdpdmVuIHBvcnQocykgaW4gdGhlIEZE Qi4gTm90ZSB0aGF0IHRoZSBzd2l0Y2gNCj4gd2lsbCBzdGlsbCByZXNwZWN0IHRoZSBhbGxvd2Fu Y2UgcG9ydCBtYXNrLCBzbyB0aGlzIGlzIHNvbWV0aGluZyBsaWtlOg0KPiBmb3J3YXJkaW5nX3Bv cnRtYXNrID0gKGZkYl9wb3J0bWFzayAmIGFsbG93YW5jZV9wb3J0bWFzaykuDQogICAgICAgICAg ICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eDQogICAgICAgICAgICAgICAgICAgICAgICAgYW5k IHRoaXMgcG9ydGlvbiBzaG91bGQgdGFrZSB0aGUgRUZJRCBpbnRvDQogICAgICAgICAgICAgICAg ICAgICAgICAgY29uc2lkZXJhdGlvbiwgc2hvdWxkIGl0IG5vdD8NCg0KPiA+IEkgZG9uJ3Qgd2Fu dCB0byBhbnN3ZXIgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyB1bnRpbCBJIHVuZGVyc3RhbmQgaG93 DQo+ID4gZG9lcyB5b3VyIGhhcmR3YXJlIGludGVuZCB0aGUgRklEIGFuZCBGSURfRU4gYml0cyBm cm9tIHRoZSBEU0EgaGVhZGVyIHRvDQo+ID4gYmUgdXNlZC4gVGhlIEZJRCBvbmx5IGhhcyAyIGJp dHMsIHNvIGl0IGlzIGNsZWFyIHRvIG1lIHRoYXQgaXQgZG9lc24ndA0KPiA+IGhhdmUgdGhlIHNh bWUgdW5kZXJzdGFuZGluZyBvZiB0aGUgdGVybSBhcyBtdjg4ZTZ4eHgsIGlmIHRoZSBSZWFsdGVr DQo+ID4gc3dpdGNoIGhhcyB1cCB0byA0IEZJRHMgd2hpbGUgTWFydmVsbCB1cCB0byA0Sy4NCj4N Cj4gSSBjYW1lIHRvIHRoZSBzYW1lIGNvbmNsdXNpb24gdW50aWwgSSBzdGFydGVkIHRvIHBsYXkg YXJvdW5kIHdpdGggdGhpcywNCj4gb25seSB0byBkaXNjb3ZlciB0aGF0IHRoZSBSZWFsdGVrIGRv Y3VtZW50YXRpb24gaXMgd3JvbmcuDQo+DQo+IEZpcnN0LCBzbyB0aGF0IHdlIGFyZSBvbiB0aGUg c2FtZSBwYWdlLCBoZXJlIGFnYWluIGlzIHRoZSByZWxldmFudCBwYXJ0DQo+IG9mIHRoZSBDUFUg dGFnIHdlIGFyZSB0YWxraW5nIGFib3V0Og0KPg0KPiAwICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDd8OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1DQo+IHwtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLXwNCj4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTYtYml0KSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiB8ICAgICAgICAgICAgICAgICAgICAg ICBSZWFsdGVrIEV0aGVyVHlwZSBbMHg4ODk5XSAgICAgICAgICAgICAgICAgICAgICB8DQo+IHwt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLXwNCj4gfCAgICAgICAgICAgICAgKDgtYml0KSAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgKDgtYml0KSAgICAgICAgICAgICAgfA0KPiB8ICAgICAgICAgIFByb3RvY29s IFsweDA0XSAgICAgICAgICB8ICAgICAgICAgICAgICBSRUFTT04gICAgICAgICAgICAgICB8DQo+ IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLXwNCj4gfCAgICgxKSAgfCAoMSkgfCAoMikgfCAgICgxKSAgfCAoMykg fCAoMSkgIHwgKDEpIHwgICAgKDEpICAgIHwgICAoNSkgICAgfA0KPiB8IEZJRF9FTiB8ICBYICB8 IEZJRCB8IFBSSV9FTiB8IFBSSSB8IEtFRVAgfCAgWCAgfCBMRUFSTl9ESVMgfCAgICBYICAgICB8 DQo+IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLXwNCj4gICBeXl5eXl5eXl5eXl5eXl5eXl5eXg0KPiAgICAgICBs b29rIGhlcmUNCj4NCj4gV2hhdCBhY3R1YWxseSBhcHBlYXJzIHRvIGJlIHRoZSBjYXNlIC0gYXQg bGVhc3QgaW4gdGhlIElWTCBjYXNlIEkNCj4gZGVzY3JpYmVkIGFib3ZlIC0gaXMgdGhhdCB0aGUg ZmllbGRzIEZJRF9FTiBhbmQgRklEIHNob3VsZCByYXRoZXIgYmUNCj4gbmFtZWQgRUZJRF9FTiBh bmQgRUZJRC4gTW9yZW92ZXIsIHRoZSByZXNlcnZlZCBiaXQgWCBiZXR3ZWVuIHRoZSB0d28NCj4g ZmllbGRzIGlzIGFjdHVhbGx5IGFuIGV4dGVuc2lvbiBvZiB0aGUgbmV3bHktbmFtZWQgRUZJRCBm aWVsZC4gU28gdGhpbmdzDQo+IGxvb2sgbW9yZSBsaWtlIHRoaXM6DQo+DQo+IHwtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLXwNCj4gfCAgICgxKSAgIHwgICAgKDMpICAgfCAgICgxKSAgfCAoMykgfCAoMSkgIHwgKDEp IHwgICAgKDEpICAgIHwgICAoNSkgICAgfA0KPiB8IEVGSURfRU4gfCAgIEVGSUQgICB8IFBSSV9F TiB8IFBSSSB8IEtFRVAgfCAgWCAgfCBMRUFSTl9ESVMgfCAgICBYICAgICB8DQo+IHwtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLXwNCj4gICBeXl5eXl5eXl5eXl5eXl5eXl5eXg0KPiAgICAgICBsb29rIGhlcmUNCj4N Cj4gSWYgRUZJRF9FTj0xIGFuZCBMRUFSTl9ESVM9MCBhbmQgbGVhcm5pbmcgaXMgZW5hYmxlZCBv biB0aGUgQ1BVIHBvcnQsDQo+IHRoZW4gdGhlIHN3aXRjaCB3aWxsIGxlYXJuIHRoZSBNQUMgU0Eg b2YgdGhlIGZyYW1lIGFuZCBlbnRlciBpdCBpbnRvIHRoZQ0KPiBGREIgd2l0aCB0aGUgY29ycmVz cG9uZGluZyBWSUQgKGFjY29yZGluZyB0byB0aGUgODAyLjFRIHRhZykgYW5kIHRoZQ0KPiBjb3Jy ZXNwb25kaW5nIEVGSUQgKGFjY29yZGluZyB0byB0aGUgQ1BVIHRhZyBhbmQgdGhlIEVGSUQgZmll bGQpLiBUaGlzDQo+IGlzIHN1cGVyIHVzZWZ1bCBiZWNhdXNlIGl0IGVuYWJsZXMgdGhlIHN0cmF0 ZWd5IEkgb3V0bGluZWQgYWJvdmUsIGFuZA0KPiBhbHNvIGF2b2lkcyBoYXZpbmcgdG8gcmVseSBv biB0aGUgYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgZmxhZy4NCj4NCj4gV2hhdCB0aGlz IGRvZXNuJ3QgZG8gaXMgaGVscCBtZSB3aXRoIHRoZSBhY3R1YWwgZm9yd2FyZGluZyBkZWNpc2lv biBvZg0KPiB0aGUgZnJhbWUuIEkgaG9wZWQgdGhhdCBieSBzZXR0aW5nIEVGSURfRU49MSwgRUZJ RD1rLCBBTExPVz0xLCBhbmQgYQ0KPiAiY2F0Y2ggYWxsIiBhbGxvd2FuY2UgcG9ydCBtYXNrIG9m IDAgb3IgfjAgKEkgdGVzdGVkIGJvdGgpLCB0aGUgc3dpdGNoDQo+IHdvdWxkIG9ubHkgY29uc2lk ZXIgZm9yd2FyZGluZyB0aGUgZnJhbWUgdG8gcG9ydHMgd2l0aCBFRklEID09IGsuIFRoaXMNCj4g aXMgbm90IHRoZSBjYXNlIGhvd2V2ZXIsIGFuZCBpdCBzZWVtcyB0aGF0IHRoZSBFRklEX0VOL0VG SUQgZmllbGRzIG9mDQo+IHRoZSBDUFUgdGFnIG9ubHkgYWZmZWN0IGhvdyB0aGUgc3dpdGNoIGxl YXJucyBmcm9tIHRoaXMgZnJhbWUuIEhlbmNlIG15DQo+IG5lZWQgdG8gInR1bmUiIHRoZSBhbGxv d2FuY2UgcG9ydCBtYXNrLg0KDQpTbyBhIGZyYW1lIGxvb2tzIHVwIHRoZSBGREIgdHdpY2UsIG9u Y2Ugb24gaW5ncmVzcyBmb3IgbGVhcm5pbmcgYW5kIG9uY2UNCm9uIGVncmVzcyBmb3Igc2VsZWN0 aW5nIHRoZSBkZXN0aW5hdGlvbiBwb3J0IG1hc2suDQoNClByYWN0aWNhbGx5IGFyZSB5b3Ugc2F5 aW5nIHRoYXQgdGhlIHN3aXRjaCBsb3NlcyB0aGUgRUZJRCBpbmZvcm1hdGlvbg0KYmV0d2VlbiB0 aGUgaW5ncmVzcyBhbmQgdGhlIGVncmVzcyBzdGFnZSwgc2luY2UgdGhlIGRlc3RpbmF0aW9uIHBv cnQNCm1hc2sgaXMgc2VsZWN0ZWQgYmFzZWQgb24gYSBrZXkgY29uc3RydWN0ZWQgd2l0aCAiZG9u J3QgY2FyZSIgaW4gdGhlIEVGSUQgYml0cz8NClN0cmFuZ2UuDQoNCj4gSW4gY2FzZSB5b3UgYXJl IHN1c3BpY2lvdXMgd2hlbiBJIHNheSB0aGUgZG9jdW1lbnRhdGlvbiBpcyB3cm9uZzogSQ0KPiB0 ZXN0ZWQgdGhpcyBiZWhhdmlvdXIgcXVpdGUgaGVhdmlseSBpbiBvcmRlciB0byBjb21lIHRvIHRo aXMgY29uY2x1c2lvbi4NCj4gVGhlIEVGSUQgZmllbGQgaXMgaW5kZWVkIDMgYml0cyAtIGFuZCB0 aGlzIG1hdGNoZXMgd2l0aCB0aGUgZGVmaW5pdGlvbg0KPiBvZiBFRklEIGluIHRoZSBkYXRhc2hl ZXQgb2YgdGhlIGNoaXAgLSBhbmQgYnkgc2V0dGluZyBpdCB0byBzb21lIDMtYml0DQo+IHZhbHVl IGxpa2UgNywgSSBzZWUgdGhpcyByZWZsZWN0ZWQgaW4gdGhlIGhhcmR3YXJlIEZEQiBhZnRlciBk dW1waW5nIGl0Lg0KDQpPaywgdGhpcyBzb3VuZHMgcmVhc29uYWJsZS4NCg0KPiA+IFlvdSBzaG91 bGQgYXNrIHlvdXJzZWxmIG5vdCBvbmx5IGhvdyB0byBwcmV2ZW50IGxlYWthZ2UsIGJ1dCBhbHNv IHRoZQ0KPiA+IGZsaXAgc2lkZSwgaG93IHNob3VsZCBJIHBhc3MgdGhlIHBhY2tldCB0byB0aGUg c3dpdGNoIGluIHN1Y2ggYSB3YXkgdGhhdA0KPiA+IGl0IHdpbGwgbGVhcm4gaXRzIE1BQyBTQSBp biB0aGUgcmlnaHQgRklELCBhc3N1bWluZyB0aGF0IHlvdSBnbyB3aXRoIEZEQg0KPiA+IGlzb2xh dGlvbiBmaXJzdCBhbmQgZmlndXJlIHRoYXQgb3V0LiBPbmNlIHRoYXQgcXVlc3Rpb24gaXMgYW5z d2VyZWQsIHlvdQ0KPiA+IGNhbiBpbiBwcmVtaXNlIHNwZWNpZnkgYW4gYWxsb3dhbmNlIHBvcnQg bWFzayB3aGljaCBpcyBsYXJnZXIgdGhhbg0KPiA+IG5lZWRlZCAodGhlIGVudGlyZSBtYXNrIG9m IHVzZXIgcG9ydHMpIGFuZCB0aGUgc3dpdGNoIHNob3VsZCBvbmx5DQo+ID4gZm9yd2FyZCBpdCB0 b3dhcmRzIHRoZSBwb3J0cyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgRklELCB3aGljaCBhcmUNCj4g PiByb3VnaGx5IGVxdWl2YWxlbnQgd2l0aCB0aGUgcG9ydHMgdW5kZXIgYSBzcGVjaWZpYyBicmlk Z2UuIFlvdSBjYW4NCj4gPiBjcmVhdGUgYSBtYXBwaW5nIGJldHdlZW4gYSBGSUQgYW5kIGRwLT5i cmlkZ2VfbnVtLiBNYWtlcyBzZW5zZSBvciBhbSBJDQo+ID4gY29tcGxldGVseSBvZmY/DQo+DQo+ IFJpZ2h0ISBUaGlzIHdhcyBleGFjdGx5IG15IHBsYW4gKHNhdmUgZm9yIHMvRklEL0VGSUQvKSwg YnV0IEkgd2FudGVkIHRvDQo+IGRpc2N1c3MgdGhlIHNpdHVhdGlvbiB3aXRoIHlvdSBiZWNhdXNl IEkga25vdyB0aGF0IHlvdSBoYXZlIHNvbWUgcGxhbm5lZA0KPiBjaGFuZ2VzIGZvciBuZXQtbmV4 dCBhbmQgSSB3YXMgbm90IHN1cmUgaWYgdGhpcyBtZXRob2QgaXMgY29uc2lkZXJlZA0KPiBhY2Nl cHRhYmxlIGluIERTQSBsYW5kLiBJIGhvcGUgdGhlIGV4cGxhbmF0aW9uIGFib3ZlIGNsYXJpZmll cyB0aGUNCj4gc2l0dWF0aW9uIGEgYml0LiBJIHdpbGwgZ28gYWhlYWQgbm93IGFuZCB0cnkgdG8g aW1wbGVtZW50IHRoaXMgbWFwcGluZw0KPiBiZXR3ZWVuIGJyaWRnZV9udW0gYW5kIEVGSUQsIHNv IHRoYXQgdGhlIHRhZ2dpbmcgZHJpdmVyIGNhbiBsb29rIHVwIHRoZQ0KPiBjb3JyZWN0IGFsbG93 YW5jZSBwb3J0IG1hc2sgb24geG1pdCBvZiBhIGJyaWRnZSBmcmFtZS4NCg0KU28gaW4gRFNBIHdl IGhhdmUgYSBmZWF0dXJlIHdoaWNoIGlzIG5vdCB2ZXJ5IHdlbGwgbGlrZWQsIGFuZCB5b3UgbWln aHQNCnVuZGVyc3RhbmQgdGhlIHJlYXNvbiBvbmNlIEkgZXhwbGFpbiBpdC4NCg0KRFNBIHRhZ2dp bmcgcHJvdG9jb2xzIGFyZSBjb25zdHJ1Y3RlZCB0byBiZSBhZ25vc3RpYyBvZiB0aGUgc3dpdGNo IHRoZXkNCmFyZSBwYWlyZWQgd2l0aC4gVGhlIHJlYXNvbmluZyB3YXMgdGhhdCBpbiB0aGUgYmVn aW5uaW5nLCBzZW5kaW5nIGFuZA0KcmVjZWl2aW5nIGEgcGFja2V0IHdhcyBhIHZlcnkgc2ltcGxl IG9wZXJhdGlvbiwgb24gcmVjZWl2ZSB5b3UganVzdA0KbmVlZGVkIHRvIGV4dHJhY3QgdGhlIGlu Zm9ybWF0aW9uIHByZXNlbnQgaW4gdGhlIERTQSB0YWcgYW5kIHNlbGVjdCBhDQpuZXQgZGV2aWNl IGJhc2VkIG9uIHNpbXBsZSBpbmZvLCBhbmQgb24geG1pdCB5b3UganVzdCBuZWVkIHRvIGNvbnN0 cnVjdA0KYSBzaW1wbGUgdGFnIGJhc2VkIG9uIHRoZSBpbmZvIHByb3ZpZGVkIHRvIHlvdSAod2hp Y2ggcG9ydCBtdXN0IGJlDQp0YXJnZXRlZCkuIFNvIHRoZXJlIHNpbXBseSB3YXMgbm8gcmVhc29u IHRvIGNvdXBsZSB0aGVtLg0KDQpEU0EgYWxzbyBpcyBxdWl0ZSB0aGUgd2lsZCB3ZXN0IGluIHRl cm1zIG9mIGhhcmR3YXJlIGltcGxlbWVudGF0aW9ucy4NCldlIG1ha2UgYWxtb3N0IGV2ZXJ5dGhp bmcgb3B0aW9uYWwgYW5kIHRoZSByZXN1bHQgaXMgdGhhdCBzb21lIHN3aXRjaGVzDQpnbyBvbiBh bmQgaW1wbGVtZW50IHN1cGVyIGFkdmFuY2VkIGZlYXR1cmVzLCBhbmQgc29tZSBsYWcgYmVoaW5k Lg0KVGVzdGluZyBiZWNvbWVzIHZlcnkgaGFyZCwgc29tZXRpbWVzIGRpZmZlcmVudCB1c2VycyBk b24ndCBldmVuIGhhdmUgdGhlDQpzYW1lIGV4cGVyaWVuY2UgaWYgdGhleSB1c2UgaGFyZHdhcmUg ZnJvbSBkaWZmZXJlbnQgdmVuZG9ycy4NCkZyb20gbWFpbnRhaW5lcnMnIHBvaW50IG9mIHZpZXcg dGhlcmUgaXMgYSBkZXNpcmUgdG8gYXQgbGVhc3Qga2VlcA0KdGFnZ2luZyBwcm90b2NvbHMgdGVz dGFibGUgb24gZ2VuZXJpYyBoYXJkd2FyZSwgZm9yIG1vcmUgdGhhbiBvbmUNCnJlYXNvbi4gRmly c3QgeW91IG1pZ2h0IHdhbnQgdG8gYW5hbHl6ZSBob3cgYSBnaXZlbiBFdGhlcm5ldCBjb250cm9s bGVyDQp3aWxsIGJlaGF2ZSB3aGVuIGNvdXBsZWQgd2l0aCBhIERTQSBzd2l0Y2ggeW91IGRvbid0 IGhhdmUgKHN0dWZmIGxpa2UNCmhhcmR3YXJlIHBhcnNlcnMgY29tZSB0byBtaW5kLCB3aXRoIGlt cGxpY2F0aW9ucyBmb3IgUkZTL1JTUyksIGFuZCB5b3UNCm1pZ2h0IHNpbXBseSB3YW50IHRvIGRl YnVnIHN0dWZmICh3ZSd2ZSBoYWQgaXNzdWVzIHdpdGggVkxBTnMgZHJvcHBlZCBieQ0KdGhlIFJY IGZpbHRlciBvZiB0aGUgRFNBIG1hc3Rlciwgd2hlbiB0aGUgc3dpdGNoIHVzZWQgYSB0YWlsIHRh Z2dpbmcNCnByb3RvY29sOyBsYWNrIG9mIEV0aGVybmV0IGZyYW1lIHBhZGRpbmcgaW4gY2VydGFp biBjb25kaXRpb25zOyBEU0ENCmluaGVyaXRpbmcgc29tZSBtYXN0ZXItPnZsYW5fZmVhdHVyZXMg aXQgc2hvdWxkbid0IGhhdmUsIGxpa2UgVFggVENQDQpjaGVja3N1bSBvZmZsb2FkaW5nIHdpdGgg dGFpbCB0YWdnZXJzKS4gSW4gdGhlc2UgY2FzZXMsIHdlIGRpZCBub3QgaGF2ZQ0KdGhlIGhhcmR3 YXJlIHdoZXJlIHRoZSBwcm9ibGVtIHdhcyByZXBvcnRlZCwgYnV0IG5vbmV0aGVsZXNzIHdlIGNv dWxkDQpzaW11bGF0ZSBhbiBlbnZpcm9ubWVudCB3aXRoIHRoZSBwcm9ibGVtLiBXZSBkaWQgdGhh dCBieSB1c2luZyB0aGUNCm1vY2stdXAgZHNhX2xvb3AgZHJpdmVyLCBhbmQgaGFja2luZyBkc2Ff bG9vcF9nZXRfcHJvdG9jb2woKSB0byByZXR1cm4NCnRoZSB0YWdnaW5nIHByb3RvY29sIHdlIHdh bnRlZCB0byB0ZXN0Lg0KDQpTbyBnZW5lcmFsbHkgc3BlYWtpbmcsIHdoYXRldmVyIGEgdGFnZ2lu ZyBwcm90b2NvbCBkcml2ZXIgbWF5IGRvLCBpdA0Kc2hvdWxkIGRvIHNvbWV0aGluZyBzZW5zaWJs ZSB3aGVuIHBhaXJlZCB3aXRoIGRzYV9sb29wIHRvby4gV2UgaGF2ZSBjb21lDQp0byBkZXBlbmQg b24gdGhhdCBsYWNrIG9mIGNvdXBsaW5nLg0KDQpPbiB0aGUgb3RoZXIgaGFuZCwgdGhlcmUgYXJl IHNpdHVhdGlvbnMgd2hlcmUgZGVjb3VwbGVkIGRyaXZlcnMgd29uJ3QNCnJlYWxseSBjdXQgaXQu IFlvdSBjYW4gc2VlIHRoaXMgZXNwZWNpYWxseSB3aXRoIHRoZSBzamExMTA1IGRyaXZlciBhbmQN Cml0cyB0YWdnaW5nIHByb3RvY29sLCB0aGVyZSBpcyBldmVuIGEgc3RhdGUgbWFjaGluZSBpbXBs ZW1lbnRlZCBmb3IgUFRQDQpmcmFtZXMsIHdpdGggc3RvcmFnZSBwcm92aWRlZCBieSB0aGUgc3dp dGNoIGRyaXZlci4gSSd2ZSBubyBpZGVhIGhvdw0KY29tZSBleGFjdGx5IHRoZSBzd2l0Y2hlcyBJ IGRpcmVjdGx5IG1haW50YWluIGFyZSB0aGUgbW9zdCBxdWlya3kgaW4NCnRoaXMgcmVnYXJkLiBB bnl3YXkuDQoNClNvIHRoZXJlIGV4aXN0cyBhICJ2b2lkICogZHAtPnByaXYiIHBvaW50ZXIgd2hp Y2ggeW91IGNhbiB1c2UgdG8gc2hhcmUNCmluZm9ybWF0aW9uIGJldHdlZW4gdGhlIHN3aXRjaCBk cml2ZXIgYW5kIHRoZSB0YWdnaW5nIHByb3RvY29sIGRyaXZlci4NCkJlIGNhcmVmdWwgdGhvdWdo LCBmcm9tIHRoZSB0YWdnZXIncyBwZXJzcGVjdGl2ZSwgZHAtPnByaXYgbWF5IGJlDQpwcm92aWRl ZCBieSB0aGUgc3dpdGNoIGRyaXZlciB5b3UgZXhwZWN0LCBvciBub3QgKHRydWUsIHlvdSB3b3Vs ZCBuZWVkDQp0byBoYWNrIHVwIGEgZHJpdmVyIGxpa2UgZHNhX2xvb3AgdG8gcmV0dXJuIERTQV9U QUdfUFJPVE9fUlRMOF80LCBidXQNCnNvbWUgY3JhenkgcGVvcGxlIGxpa2UgbWFpbnRhaW5lcnMg bWlnaHQgZG8gdGhhdCkuIFRoZSBjb21wcm9taXNlIEkndmUNCmZvdW5kIChub3QgaWRlYWwgYnkg YW55IG1lYW5zKSBpcyB0byBhY2Nlc3MgZHAtPnByaXYgZnJvbSBjb2RlIHBhdGhzDQp0aGF0IGNh bm5vdCBiZSB0cmlnZ2VyZWQgd2l0aCBkc2FfbG9vcC4gRm9yIGV4YW1wbGUsIHNpbmNlIGRzYV9s b29wIGRvZXMNCm5vdCBkZWNsYXJlIFRYIGZvcndhcmRpbmcgb2ZmbG9hZCBmb3IgdGhlIGJyaWRn ZSwgdGhlbiB5b3UgY291bGQNCmRlcmVmZXJlbmNlIGRwLT5wcml2IGluc2lkZSBhbiAiaWYgKHNr Yi0+b2ZmbG9hZF9md2RfbWFyaykiIG9uIHhtaXQgYW5kDQp5b3UgY291bGQgYmUgZmFpcmx5IHN1 cmUgeW91IGFyZSBjb3VwbGVkIHdpdGggeW91ciBzd2l0Y2guDQoNCk9rYXksIHNvIHdoYXQgY2Fu IHlvdSBwdXQgaW5zaWRlIGRwLT5wcml2PyBNb3N0bHkgYW55dGhpbmcsIGFzIGxvbmcgYXMNCnlv dSBoYXZlIGEgYmFzaWMgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGF0YSBwZXJzaXN0ZW5jZSBydWxl cy4NClRoZSBmYXN0IHBhdGggcmFjZXMgd2l0aCB0aGUgc2xvdyBwYXRoIGFuZCB0aGVyZSBpcyBu byBsb2NraW5nIGJldHdlZW4NCnRoZW0uIEhvd2V2ZXIsIHRoZSBwYXJ0aWN1bGFyIGNhc2Ugb2Yg eG1pdHRpbmcgYSBwYWNrZXQgb24gYmVoYWxmIG9mIHRoZQ0KTGludXggYnJpZGdlIGlzIHByb3Rl Y3RlZCBieSBSQ1U6DQoNCi0gaWYgdGhlIHBhY2tldCBpcyBzZW50IHRocm91Z2ggYSBzb2NrZXQg b3BlbmVkIG9uIHRoZSBicmlkZ2UgZGV2aWNlDQogIGl0c2VsZiwgYnJfZGV2X3htaXQoKSBob2xk cyByY3VfcmVhZF9sb2NrKCkgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24sDQogIGluY2x1ZGluZyBk dXJpbmcgYnJfZGV2X3F1ZXVlX3B1c2hfeG1pdCgpIHdoaWNoIGNhbGxzIGRldl9xdWV1ZV94bWl0 DQogIGZvciB0aGUgRFNBIGludGVyZmFjZS4NCg0KLSBpZiB0aGUgcGFja2V0IGlzIG5vdCB0ZXJt aW5hdGVkIGxvY2FsbHkgYnV0IGZvcndhcmRlZCwgdGhlIGV4ZWN1dGlvbg0KICBjb250ZXh0IGlz IHRoYXQgb2YgdGhlIE5FVF9SWCBzb2Z0aXJxIG9mIHRoZSBpbmdyZXNzIGludGVyZmFjZSwgaW4N CiAgd2hpY2ggdGhlIGJyaWRnZSByeF9oYW5kbGVyIHJ1bnMgKGJyX2hhbmRsZV9mcmFtZSkuIEFu ZCB0aGUgcmVjZWl2ZQ0KICBkYXRhIHBhdGggaXMgdW5kZXIgcmN1X3JlYWRfbG9jaygpIHRvbyAt IHNlZQ0KICBuZXRpZl9yZWNlaXZlX3NrYl9saXN0X2ludGVybmFsKCkuDQoNClNvIGluIHNob3J0 LCBJIHRoaW5rIGRzYV9zbGF2ZV94bWl0KCkgcnVucyB1bmRlciByY3VfcmVhZF9sb2NrKCkgdW5k ZXINCmFsbCBjaXJjdW1zdGFuY2VzIG9mIHRyYW5zbWl0dGluZyBhIGZyYW1lIG9uIGJlaGFsZiBv ZiB0aGUgYnJpZGdlLg0KDQpTbyB5b3UgY2FuIHByb3ZpZGUgUkNVLXByb3RlY3RlZCBkYXRhIHRv IHRoZSB0YWdnZXIgaW4gZHAtPnByaXYuDQpGb3IgZXhhbXBsZSwgeW91IGNhbiBjcmVhdGUgYSBy ZWZlcmVuY2UtY291bnRlZCBicmlkZ2Ugc3RydWN0dXJlIGluDQp3aGljaCB5b3Uga2VlcCB0aGUg YWxsb2NhdGlvbiBwb3J0IG1hc2sgYXMgYW4gdW5zaWduZWQgbG9uZy4NCkknbSBub3QgdG9vIGdv b2Qgd2l0aCBhcmNoIGFuZCBjb21waWxlciBzdHVmZiwgYnV0IEkgdGhpbmsgdW5zaWduZWQgbG9u Zw0KYXNzaWdubWVudHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgYXRvbWljIG9uIGFueSBhcmNoLCBz byB3aGVuIHRoZSBmYXN0DQpwYXRoIHJlYWRzIHRoYXQgdW5zaWduZWQgbG9uZyBpdCBpcyBndWFy YW50ZWVkIHRvIG5vdCBzZWUgYW4gaW4tYmV0d2Vlbg0KdmFsdWUgZXZlbiBpZiB0aGUgc2xvdyBw YXRoIGlzIHVwZGF0aW5nIGl0IHNpbXVsdGFuZW91c2x5Lg0KWW91IGNyZWF0ZSB0aGlzIGJyaWRn ZSBzdHJ1Y3R1cmUgZm9yIHRoZSBmaXJzdCBwb3J0IHRoYXQgZW50ZXJzIGENCmJyaWRnZSwgYW5k IHlvdSBkZXN0cm95IGl0IGZvciB0aGUgbGFzdCBwb3J0IHRoYXQgZXhpdHMgaXQuIEFsbCBwb3J0 cw0KdW5kZXIgdGhlIHNhbWUgYnJpZGdlIGhhdmUgYSBkcC0+cHJpdiB0aGF0IHBvaW50cyB0byB0 aGUgc2FtZSBicmlkZ2UNCnN0cnVjdHVyZS4gQnV0IHlvdSBuZWVkIHRvIGFjY2VzcyBpdCB1c2lu ZyByY3VfZGVyZWZlcmVuY2VfcG9pbnRlciBmcm9tDQp0aGUgZmFzdCBwYXRoLCBvZiBjb3Vyc2Uu IEFuZCB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UgZnJlZSBpdA0KdW5kZXIgUkNVIGFz IHdlbGwsIG90aGVyd2lzZSBleGlzdGluZyByZWFkZXJzIG1pZ2h0IHNlZSBpdCBkaXNhcHBlYXIN CmZyb20gdW5kZXIgdGhlaXIgZmVldCB3aGVuIHRoZSBsYXN0IHBvcnQgbGVhdmVzIGEgYnJpZGdl Lg0KDQpIZXJlIGlzIHdoZXJlIHRoaW5ncyBnZXQgYSBiaXQgZnV6enkuIERTQSBnZXRzIG5vdGlm aWVkIG9mIGxlYXZpbmcgYQ0KYnJpZGdlIHRocm91Z2ggZGVsX25icCAtPiBuZXRkZXZfdXBwZXJf ZGV2X3VubGluayAtPiAuLi4gLT4NCmRzYV9wb3J0X2JyaWRnZV9sZWF2ZS4gSWYgeW91IGxvb2sg dGhyb3VnaCB3aGF0IGVsc2UgZGVsX25icCBkb2VzLA0KeW91J2xsIHNlZSBhIGNhbGwgdG8gbmJw X3ZsYW5fZmx1c2goKSAtPiBzeW5jaHJvbml6ZV9yY3UoKS4gU28gaXQgd2lsbA0Kd2FpdCBmb3Ig YXQgbGVhc3Qgb25lIGdyYWNlIHBlcmlvZCBmb3IgYWxsIGV4aXN0aW5nIFJDVSByZWFkZXJzIHRv DQpmaW5pc2ggKGluY2x1ZGluZyB0aGUgeG1pdCBhbmQgcmN2IGRhdGEgcGF0aHMpIGJlZm9yZSB0 aGF0IGZ1bmN0aW9uDQpyZXR1cm5zLiBTbyBpbiB0dXJuLCB5b3Ugd2lsbCBzZWUgdGhhdCBuZXRk ZXZfdXBwZXJfZGV2X3VubGluayBpcyBvbmx5DQpjYWxsZWQgYWZ0ZXIgYW4gUkNVIGdyYWNlIHBl cmlvZCwgYXQgdGhhdCBwb2ludCB0aGVyZSBzaG91bGQgYmUgbm8geG1pdA0KZnJvbSB0aGF0IGJy aWRnZSBwb3J0IGFueW1vcmUsIHNvIHlvdSBzaG91bGRuJ3Qgc2VlIGFueQ0Kc2tiLT5vZmZsb2Fk X2Z3ZF9tYXJrID0gdHJ1ZSBkdXJpbmcgeG1pdCByYWNpbmcgd2l0aCB0aGUgYWN0dWFsDQpkc2Ff cG9ydF9icmlkZ2VfbGVhdmUuDQoNCkJ1dCEgaWYgQ09ORklHX0JSSURHRV9WTEFOX0ZJTFRFUklO Rz1uLCB0aGUgc2hpbSBpbXBsZW1lbnRhdGlvbiBvZg0KbmJwX3ZsYW5fZmx1c2goKSB3aWxsIGtp Y2sgaW4sIGFuZCB0aGF0IGRvZXNuJ3QgY2FsbCBzeW5jaHJvbml6ZV9yY3UoKSwNCnNvIEFGQUlD UyBub2JvZHkgd2lsbCB3YWl0IGZvciBhIGdyYWNlIHBlcmlvZC4gU28gcGxlYXNlIGRvbid0IHJl bHkgb24NCnRoZSBicmlkZ2Ugd2FpdGluZyBmb3IgeW91LCBhbmQgdGVzdCB3aXRoIFZMQU4gZmls dGVyaW5nIGNvbXBpbGVkIG91dA0KdG9vLiBKdXN0IHB1dCBhIHN5bmNocm9uaXplX25ldCgpIHNv bWV3aGVyZSBiZWZvcmUgZnJlZWluZyB0aGUgYnJpZGdlDQpzdHJ1Y3R1cmUsIG9yIGp1c3QgdXNl IGNhbGxfcmN1KCkva2ZyZWVfcmN1KCkgdG8gZnJlZSBpdCBhc3luY2hyb25vdXNseSwNCmFuZCB5 b3Ugc2hvdWxkIGJlIGZpbmUuDQoNCkFzIGZvciB3aHkgcmVseSBvbiB0aGUgYnJpZGdlIGhvbGRp bmcgdGhlIHJjdV9yZWFkX2xvY2soKSwgYnV0IG5vdCBvbg0Kd2FpdGluZz8gV2VsbCwgYmVjYXVz ZSB3ZSBraW5kIG9mIG5lZWQgdG8gYmUgYXRvbWljIHdpdGggdGhlIGJyaWRnZQ0KaXRzZWxmLCBv dGhlcndpc2UgaWYgdGhlIGJyaWRnZSByZWxlYXNlcyByY3VfcmVhZF9sb2NrKCkgYmVmb3JlDQpk ZXZfcXVldWVfeG1pdCgpIHdlIGFyZSBubyBsb25nZXIgaW4gdGhlIHNhbWUgYXRvbWljIHNlY3Rp b24sIHlldCB3ZSBzZWUNCnNrYi0+b2ZmbG9hZF9md2RfbWFyayBzZXQgdG8gdHJ1ZS4gSW4gdGhl IHdvcnN0IGNhc2UsIFJDVSBtaWdodCBldmVuDQpyZXBvcnQgcXVpZXNjZW50IHN0YXRlcyBvbiBh bGwgQ1BVcyBpbiB0aGF0IG1lYW50aW1lLCBhbmQgc29tZWJvZHkgbWlnaHQNCmRlY2lkZSB0byBm cmVlIHlvdXIgYnJpZGdlIHByaXZhdGUgZGF0YS4gTm90IG5pY2UuDQoNCkkgd291bGQgbWFrZSB0 aGlzIGFsbG93YW5jZSBwb3J0IG1hc2sgYmUgcGFydCBvZiB0aGUgUmVhbHRlayBkcml2ZXINCmZp cnN0LiBJZiBpdCBwcm92ZXMgdG8gYmUgdXNlZnVsIG1vcmUgZ2VuZXJhbGx5IHdlIGNvdWxkIGNv bnNpZGVyIG1vdmluZw0KaXQgdG8gdGhlIERTQSBjb3JlLg0KDQpIb3BlIHRoaXMgaGVscHMgYW5k IGlzIG5vdCBvdmVyd2hlbG1pbmcu