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 5AEC0A04FD; Mon, 3 Oct 2022 17:13:50 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F058C40DFB; Mon, 3 Oct 2022 17:13:49 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2059.outbound.protection.outlook.com [40.107.243.59]) by mails.dpdk.org (Postfix) with ESMTP id 0CC2A40695 for ; Mon, 3 Oct 2022 17:13:48 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a3OuaIjx9IUJgZKWpN0RqW9ehjvq5C6HD9twK4AcO7GboEO8UYwFJ6J11aftmaGetC+0lR5c1zWOcQYhMp4c7YJjiakkDcizkt9fuAVV2o+2c66VKyhkwR+v/u6czAL/f6JoTl08W3WDl2uVPYpoXxIHYLM6krGnUzDy6XW0MqvHmoGo+8mBoipEFNkV/rYQGXAZEGjsGL4rE7ZPeRa8y+3BcfofBjmo0lc5TYlsQzIqXsL/FA3OjsC0drIxifObMKtbDqQSdbLUMlyZVdJo56EBPRRHSwp0VTIgXVXty238Y3jAAsvsO5lVIUa/sAHPgBdSOvkfnAEI9ZYX/Cy7Hw== 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=hQWPxWvgwLjmAuPd3V0VDeRtRxJ1npd4ybPzZinnXPo=; b=f2+Kky8IxI4kXFDqcMsz4EZrocNimmv9f8402me+rX2haQxS+DRE9qVklNH0DfC9KhJGxWt0cIi9LPEulrrV5z+Kl0k8/EqC5aMNl2tN3Yk2d3Gurry6gjKW5+eOZ+LqGEQPaFNgGfUjGFHQxjvBiHeGnGirBDom0Fc3cBLNZwue53qpf/ospekSdO12TCduFq1jvYuAajCFhXZI/Z8DzwLjg89nbMWrISfQPJy01OuS/4gx74nhKJIEyxYhuiJlrnW+EYqtkXy4EHJY3/SZm02yAqdQB4em+KctKyCw72anU7T9L1vYMS2Axrm3qA67ZZWy/dBPCsn4vt1h/vhOlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hQWPxWvgwLjmAuPd3V0VDeRtRxJ1npd4ybPzZinnXPo=; b=oT61MqD53R/vM32SSPWW1rVzzm3FssYqF7akhpG2dg0jqPr2xQSootQB8o7ea//sgjBdTiRS4M7Zr/88wfp7hSbGd285vhvPbs8PDI0Bp5adoMix6j2qB1Q4Qx83pLHXYSL8Ey/NOuEhDC6+giRihyP+gVrvhBUBxulMz8Zw9M3StaqXT4pZ4/EVcWGo91tDJxk4Qk9C6oWElOkN4Gbk3ldQaQ8LXdJaR67QhxGi8g/Lkto944Bfnqi1lVlpPmqAO5378BlOBBBrbL4GAncLE+ZU6LkqyZVtqrzyck3EYmHEq8d2E43katkjq2wsLjBXaotoxXTFF9PXeW+qI4Tf8Q== Received: from MW2PR12MB4666.namprd12.prod.outlook.com (2603:10b6:302:13::22) by CH2PR12MB4278.namprd12.prod.outlook.com (2603:10b6:610:ab::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Mon, 3 Oct 2022 15:13:46 +0000 Received: from MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::aca6:34e4:3478:16fe]) by MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::aca6:34e4:3478:16fe%5]) with mapi id 15.20.5676.020; Mon, 3 Oct 2022 15:13:45 +0000 From: Ori Kam To: Andrew Rybchenko , Michael Baum , "dev@dpdk.org" CC: Matan Azrad , Raslan Darawsheh Subject: RE: [PATCH 3/3] ethdev: add structure for indirect AGE update Thread-Topic: [PATCH 3/3] ethdev: add structure for indirect AGE update Thread-Index: AQHYzcoSIIEoMQhN3ECQ48vZZX50wq38YbGAgAAGSfCAAFFzAIAAH2Ig Date: Mon, 3 Oct 2022 15:13:45 +0000 Message-ID: References: <20220921145409.511328-1-michaelba@nvidia.com> <20220921145409.511328-4-michaelba@nvidia.com> <811afcdb-2081-b20d-5d49-8659760a7026@oktetlabs.ru> In-Reply-To: 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=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW2PR12MB4666:EE_|CH2PR12MB4278:EE_ x-ms-office365-filtering-correlation-id: 16c23e68-2765-4f56-5593-08daa551ddbd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TAJXpQJJvlCuMLAud/ThgIXaEwlSvCRToxtnmBxGP+D0hAqT1/sKEZ/q6qhiCGwJ4JjK9C3SbiTTXU5BRWTcvBHrfDavZ4Rc5RTbCMdzJ6JQyQa5/9LCXutrMZRWbyjEzS0v1jiQakisTLGCGpfKDSs/SktsQDuiIqHFyxWrUZLS+sWMBHDHo+i+Gpyf/pXAFPAin2um054ef0xsA24s1fkWDBVCM1yz8o6X7CiZFlYE2TJR3/S8qBOs0IrKEnbSmnd7bgL77Fx/cNbqyD+zls9YUteoYxffp6UWAr6gJiYqfGOK9MnP8AMxoSfyqFAoc/JCGDXzHhw+RqzDYfTIfV0yfobcOCL7GjHM6Dmavq3ByP/BZnEg/AGmclki+97ysyHQGCbwp2cFTeEZEtcPuEoGUjFrget+3/ybTDZDIlvEtSeX3U5clweilxjBoulSH0Ik2c/IU0ZqXBnrQBohoaxptiCaKQlDqmobov/VhuQEvPl4sXWFoZ+p6JhwKg3MGHd6+l9pAXCnprH5vt6kEMrZEgb0m+S3wAxFr4avGWtx0b/m6uVr/S14OHGVtSC7FaKZqToPs4MJI13xTo3JqfbdIY09Tif0nnsnOw0yZeujz7fFqnJsoHGoFMsOf0RnGBxtcbVqSwsptL7UVb0dq5Q87TM5QsaAurOactK8oEGiZdLetiK2Vst0GSjuyIykKyvDtxB2qk44TzUo9Y5Jjfk1fate37BfBHbEQcLtmsimDdteTry8u9ao5Ql7FPzmKWhbCA49CrSofeoCEFRSFEtsOJ77hHswcJplInrYbj4= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR12MB4666.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(396003)(39860400002)(366004)(346002)(376002)(136003)(451199015)(66946007)(66446008)(66476007)(4326008)(8676002)(76116006)(66556008)(64756008)(316002)(7696005)(6506007)(54906003)(26005)(9686003)(53546011)(33656002)(107886003)(186003)(2906002)(122000001)(38070700005)(5660300002)(8936002)(15650500001)(30864003)(55016003)(110136005)(38100700002)(41300700001)(86362001)(83380400001)(52536014)(71200400001)(478600001)(87944003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VnBza3ptUWpJcDdPN3N0YVRVY2E5bTNmZlNibU9hcGJkczRRL1lwbWdFRFJK?= =?utf-8?B?Rk1pa0tUR2pxV09NWktadWR2L2Q4QzB2OHBMdXBkRHVGWlQzTkk5eTlla0xh?= =?utf-8?B?TGVZZDczT21TeWc4a3h3eHlRMVJzcnBmbCtsYW9zaU9kMzVJbWtnS2pLa2M5?= =?utf-8?B?ejI2MHpxOUdIUEVEbmQxaXB0M21vLzlxYmFvekNDSDZhOHBZeVJGajFBdWUw?= =?utf-8?B?ZmpVVzNYVWFUYnc2cW9IbTZGcnJFZ2ZNRmN0OTlhY3hZaHFPMnR2THgzdEZC?= =?utf-8?B?SjNHRG0xdDNta1UwbzFSc2cvM25hVWRLRnlVUnZ3RGduYXluMnhkcmFBb2pO?= =?utf-8?B?Z1lnMWh2ZHd6dEpJc3JYam5HRU1lYkhSWXhtR3MrdVQydndCdVVpb1FRcjVL?= =?utf-8?B?RHFrVTJUeUV0WTVkSTByaFBiL1M1NEw4SFBldFFEVDlVakRmUU1XazJ0eEdw?= =?utf-8?B?Y0poM1JJWjRQYXkzWGdOSVhFVXhWR2RLK21oaTkwcWRTMFFJQVhJTWwxK1dB?= =?utf-8?B?aGFqMkV5Sy9XNVVVeDFzUEpEYjZoRWhKNVhlazhUOFNDMlpLNUFOK0xKck5Z?= =?utf-8?B?dTRscHBnQ1ZaTUUrYWxPQTU1OXRkZU5Wbml1a0JoekxTVFQzb1UzeWJYZ2JK?= =?utf-8?B?Y0NBelNRNGRDSXpBS0JaeHFFYzY0WnEydGNOTVkzdGl0QlozbFJwRHJvNnYy?= =?utf-8?B?UFpVMEVDZFptK2oybHh2ZTZyeEpBNSsvbnB0RmJ3S0RBZFdPanE5a2dSU3Ft?= =?utf-8?B?ZmJDMHZBNi9HU0lieWFaMkcrc1lCRVA2YlByMWswUDM5bHBCZWp4bUwvMUFD?= =?utf-8?B?NDZPeFN6bUFZTXc3NG4wOFM1Uzk5cUF4aCsvNlZydEo1UjA0eTgrRGZuN2Jr?= =?utf-8?B?TUlaeklRMkd5bC9NM3RJUHpnSDBPSFlRcHZ6QTFmd255SnFDV0RMNVR3QXJ5?= =?utf-8?B?a1VCb1hkU1NlNjNUZUhRN29PVUZ5NUxXbVFWNlYxUi93TDBmdTkrS21kMHdR?= =?utf-8?B?T0JrL0lCWlJ2dnRHN1U5Y09FVGtxaWRXTGRpYkJrbHlDdlBzdXNYMEROQVZi?= =?utf-8?B?YStkMHpyMEE0OXFkUFZmN3RvaHYwZUVydS9FTjVxRnRrakE3WGFjd05EdmRC?= =?utf-8?B?bXlwaWR3MlNaeUtwMkpLL0pmamF1SjJvNXk3N2lFMzc3cHB0RFY3N1g4S3Fx?= =?utf-8?B?S3I3eU5iTzZ3OUVraG5senV3MkpaV1hYN1EyNkZvS0lnMEZiUUZJREFLQ0pz?= =?utf-8?B?d0E4Y1VuYWtrWmNTUGE3YU1FaGI2MHMxZGZYTkluV0dwWllGa2Q1WXpBOVY3?= =?utf-8?B?dnVTdjlHQ3U2NUlvQ2xmSXpoUUtZL2dvUW5zYTM4ei9uYjVLUkk0ZTZzamNF?= =?utf-8?B?WndzTXlrL0lEL25KSDEvUGpQSW5iRllTb1VDeFBhZDFzRXFmeHUvZzdYUHdN?= =?utf-8?B?b3Qxa2F1U1g0cUdqcldXNFBkd0M5aG9vVXFLNnZlVkNpTDNscHZWcGlaV3pY?= =?utf-8?B?aFBDL0pPcnNQMVRJQ3NHaFZvbEVQdE8zRHlubUp3QWpwTG9HUlM0azRGYllS?= =?utf-8?B?SUhaay9VaWlSdDQ4aXhYVGgxTXkyb25FTVkxOFpMbFpRZnZZRzlGakV4VStR?= =?utf-8?B?aFVVRGRIdHNjRGJpNnFlSndNVnZ3NFBFRnVDejdLOHBCTXhlWDYvUFF3bGkr?= =?utf-8?B?ZGM4dFJPQXEra01WTGlMRG1vOG85SmlCSk5TTnRXcll3VVBLLzNqVGxVTG1X?= =?utf-8?B?eU5YeEg1UUtCeUIwckM2T0psWkJkVHhnUG1Xd0N6dk1sR3JYcmN2Z3RER1c4?= =?utf-8?B?cHlvT2QvdkNnRExxR2pVbUE4OFE0QmFNZWRjVXdqRXk5d042clNPRnZKVWZt?= =?utf-8?B?Z3pCK2Z1MFAwOWt1QkJ5UnJjZzRoWEhWKzI3eVRUQXZsNXJxTUlZS3dTZk40?= =?utf-8?B?VkxJeklROGR3SCtLNlJ5VG9ONVRTL2kxUUlueEVDS0NjQXF5OGpNclVtRCsy?= =?utf-8?B?NnI1OWFIc0JNc2JxZnpXeU5waTJwUTg3R01TT0xYeCthaGYxcmxPZDNFMzlt?= =?utf-8?B?MXJrUU1HMWc0bWFKRUZWYlkzbUVROVR2RVZVWVNERHVaUUNZNEZVdVY3N0N0?= =?utf-8?Q?ANn8=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW2PR12MB4666.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 16c23e68-2765-4f56-5593-08daa551ddbd X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Oct 2022 15:13:45.7297 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: czneUYctJLwPQuNUfcMwJZOz1/lXkwAQw2vEJj7Lr0xwSSRT84ysKManzgRd12wpe3Qs3hSMpOnm0Ri3sf4QLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4278 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 SGkgQW5kcmV3LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJl dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiBTZW50OiBNb25k YXksIDMgT2N0b2JlciAyMDIyIDE2OjE4DQo+IA0KPiBPbiAxMC8zLzIyIDExOjMwLCBPcmkgS2Ft IHdyb3RlOg0KPiA+IEhpIEFuZHJldywNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+PiBGcm9tOiBBbmRyZXcgUnliY2hlbmtvIDxhbmRyZXcucnliY2hlbmtvQG9rdGV0 bGFicy5ydT4NCj4gPj4gU2VudDogTW9uZGF5LCAzIE9jdG9iZXIgMjAyMiAxMTowNA0KPiA+Pg0K PiA+PiBPbiA5LzIxLzIyIDE3OjU0LCBNaWNoYWVsIEJhdW0gd3JvdGU6DQo+ID4+PiBBZGQgYSBu ZXcgc3RydWN0dXJlIGZvciBpbmRpcmVjdCBBR0UgdXBkYXRlLg0KPiA+Pj4NCj4gPj4+IFRoaXMg bmV3IHN0cnVjdHVyZSBlbmFibGVzOg0KPiA+Pj4gMS4gVXBkYXRlIHRpbWVvdXQgdmFsdWUuDQo+ ID4+PiAyLiBTdG9wIEFHRSBjaGVja2luZy4NCj4gPj4+IDMuIFN0YXJ0IEFHRSBjaGVja2luZy4N Cj4gPj4+IDQuIHJlc3RhcnQgQUdFIGNoZWNraW5nLg0KPiA+Pj4NCj4gPj4+IFNpZ25lZC1vZmYt Ynk6IE1pY2hhZWwgQmF1bSA8bWljaGFlbGJhQG52aWRpYS5jb20+DQo+ID4+PiAtLS0NCj4gPj4+ ICAgIGFwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYyAgICAgICAgfCA2Ng0KPiA+PiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysNCj4gPj4+ICAgIGFwcC90ZXN0LXBtZC9jb25maWcuYyAg ICAgICAgICAgICAgfCAxOCArKysrKysrLQ0KPiA+Pj4gICAgZG9jL2d1aWRlcy9wcm9nX2d1aWRl L3J0ZV9mbG93LnJzdCB8IDI1ICsrKysrKysrKy0tDQo+ID4+PiAgICBsaWIvZXRoZGV2L3J0ZV9m bG93LmggICAgICAgICAgICAgIHwgMjcgKysrKysrKysrKysrDQo+ID4+PiAgICA0IGZpbGVzIGNo YW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQ0KPiA+Pj4NCj4gPj4+IGRp ZmYgLS1naXQgYS9hcHAvdGVzdC1wbWQvY21kbGluZV9mbG93LmMgYi9hcHAvdGVzdC0NCj4gcG1k L2NtZGxpbmVfZmxvdy5jDQo+ID4+PiBpbmRleCA0ZmI5MGE5MmNiLi5hMzE1ZmQ5ZGVkIDEwMDY0 NA0KPiA+Pj4gLS0tIGEvYXBwL3Rlc3QtcG1kL2NtZGxpbmVfZmxvdy5jDQo+ID4+PiArKysgYi9h cHAvdGVzdC1wbWQvY21kbGluZV9mbG93LmMNCj4gPj4+IEBAIC01ODMsNiArNTgzLDkgQEAgZW51 bSBpbmRleCB7DQo+ID4+PiAgICAJQUNUSU9OX1NFVF9JUFY2X0RTQ1BfVkFMVUUsDQo+ID4+PiAg ICAJQUNUSU9OX0FHRSwNCj4gPj4+ICAgIAlBQ1RJT05fQUdFX1RJTUVPVVQsDQo+ID4+PiArCUFD VElPTl9BR0VfVVBEQVRFLA0KPiA+Pj4gKwlBQ1RJT05fQUdFX1VQREFURV9USU1FT1VULA0KPiA+ Pj4gKwlBQ1RJT05fQUdFX1VQREFURV9UT1VDSCwNCj4gPj4+ICAgIAlBQ1RJT05fU0FNUExFLA0K PiA+Pj4gICAgCUFDVElPTl9TQU1QTEVfUkFUSU8sDQo+ID4+PiAgICAJQUNUSU9OX1NBTVBMRV9J TkRFWCwNCj4gPj4+IEBAIC0xODY5LDYgKzE4NzIsNyBAQCBzdGF0aWMgY29uc3QgZW51bSBpbmRl eCBuZXh0X2FjdGlvbltdID0gew0KPiA+Pj4gICAgCUFDVElPTl9TRVRfSVBWNF9EU0NQLA0KPiA+ Pj4gICAgCUFDVElPTl9TRVRfSVBWNl9EU0NQLA0KPiA+Pj4gICAgCUFDVElPTl9BR0UsDQo+ID4+ PiArCUFDVElPTl9BR0VfVVBEQVRFLA0KPiA+Pj4gICAgCUFDVElPTl9TQU1QTEUsDQo+ID4+PiAg ICAJQUNUSU9OX0lORElSRUNULA0KPiA+Pj4gICAgCUFDVElPTl9NT0RJRllfRklFTEQsDQo+ID4+ PiBAQCAtMjExMyw2ICsyMTE3LDE0IEBAIHN0YXRpYyBjb25zdCBlbnVtIGluZGV4IGFjdGlvbl9h Z2VbXSA9IHsNCj4gPj4+ICAgIAlaRVJPLA0KPiA+Pj4gICAgfTsNCj4gPj4+DQo+ID4+PiArc3Rh dGljIGNvbnN0IGVudW0gaW5kZXggYWN0aW9uX2FnZV91cGRhdGVbXSA9IHsNCj4gPj4+ICsJQUNU SU9OX0FHRV9VUERBVEUsDQo+ID4+PiArCUFDVElPTl9BR0VfVVBEQVRFX1RJTUVPVVQsDQo+ID4+ PiArCUFDVElPTl9BR0VfVVBEQVRFX1RPVUNILA0KPiA+Pj4gKwlBQ1RJT05fTkVYVCwNCj4gPj4+ ICsJWkVSTywNCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gICAgc3RhdGljIGNvbnN0IGVudW0g aW5kZXggYWN0aW9uX3NhbXBsZVtdID0gew0KPiA+Pj4gICAgCUFDVElPTl9TQU1QTEUsDQo+ID4+ PiAgICAJQUNUSU9OX1NBTVBMRV9SQVRJTywNCj4gPj4+IEBAIC0yMTkxLDYgKzIyMDMsOSBAQCBz dGF0aWMgaW50IHBhcnNlX3ZjX3NwZWMoc3RydWN0IGNvbnRleHQgKiwgY29uc3QNCj4gPj4gc3Ry dWN0IHRva2VuICosDQo+ID4+PiAgICAJCQkgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsIHZv aWQgKiwgdW5zaWduZWQgaW50KTsNCj4gPj4+ICAgIHN0YXRpYyBpbnQgcGFyc2VfdmNfY29uZihz dHJ1Y3QgY29udGV4dCAqLCBjb25zdCBzdHJ1Y3QgdG9rZW4gKiwNCj4gPj4+ICAgIAkJCSBjb25z dCBjaGFyICosIHVuc2lnbmVkIGludCwgdm9pZCAqLCB1bnNpZ25lZCBpbnQpOw0KPiA+Pj4gK3N0 YXRpYyBpbnQgcGFyc2VfdmNfY29uZl90aW1lb3V0KHN0cnVjdCBjb250ZXh0ICosIGNvbnN0IHN0 cnVjdCB0b2tlbiAqLA0KPiA+Pj4gKwkJCQkgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsIHZv aWQgKiwNCj4gPj4+ICsJCQkJIHVuc2lnbmVkIGludCk7DQo+ID4+PiAgICBzdGF0aWMgaW50IHBh cnNlX3ZjX2l0ZW1fZWNwcmlfdHlwZShzdHJ1Y3QgY29udGV4dCAqLCBjb25zdCBzdHJ1Y3QgdG9r ZW4NCj4gKiwNCj4gPj4+ICAgIAkJCQkgICAgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsDQo+ ID4+PiAgICAJCQkJICAgIHZvaWQgKiwgdW5zaWduZWQgaW50KTsNCj4gPj4+IEBAIC02MTk0LDYg KzYyMDksMzAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0b2tlbiB0b2tlbl9saXN0W10gPSB7DQo+ ID4+PiAgICAJCS5uZXh0ID0gTkVYVChhY3Rpb25fYWdlLA0KPiA+PiBORVhUX0VOVFJZKENPTU1P Tl9VTlNJR05FRCkpLA0KPiA+Pj4gICAgCQkuY2FsbCA9IHBhcnNlX3ZjX2NvbmYsDQo+ID4+PiAg ICAJfSwNCj4gPj4+ICsJW0FDVElPTl9BR0VfVVBEQVRFXSA9IHsNCj4gPj4+ICsJCS5uYW1lID0g ImFnZV91cGRhdGUiLA0KPiA+Pj4gKwkJLmhlbHAgPSAidXBkYXRlIGFnaW5nIHBhcmFtZXRlciIs DQo+ID4+PiArCQkubmV4dCA9IE5FWFQoYWN0aW9uX2FnZV91cGRhdGUpLA0KPiA+Pj4gKwkJLnBy aXYgPSBQUklWX0FDVElPTihBR0UsDQo+ID4+PiArCQkJCSAgICBzaXplb2Yoc3RydWN0IHJ0ZV9m bG93X3VwZGF0ZV9hZ2UpKSwNCj4gPj4+ICsJCS5jYWxsID0gcGFyc2VfdmMsDQo+ID4+PiArCX0s DQo+ID4+PiArCVtBQ1RJT05fQUdFX1VQREFURV9USU1FT1VUXSA9IHsNCj4gPj4+ICsJCS5uYW1l ID0gInRpbWVvdXQiLA0KPiA+Pj4gKwkJLmhlbHAgPSAiYWdlIHRpbWVvdXQgdXBkYXRlIHZhbHVl IiwNCj4gPj4+ICsJCS5hcmdzID0gQVJHUyhBUkdTX0VOVFJZX0JGKHN0cnVjdCBydGVfZmxvd191 cGRhdGVfYWdlLA0KPiA+Pj4gKwkJCQkJICAgdGltZW91dCwgMjQpKSwNCj4gPj4+ICsJCS5uZXh0 ID0gTkVYVChhY3Rpb25fYWdlX3VwZGF0ZSwNCj4gPj4gTkVYVF9FTlRSWShDT01NT05fVU5TSUdO RUQpKSwNCj4gPj4+ICsJCS5jYWxsID0gcGFyc2VfdmNfY29uZl90aW1lb3V0LA0KPiA+Pj4gKwl9 LA0KPiA+Pj4gKwlbQUNUSU9OX0FHRV9VUERBVEVfVE9VQ0hdID0gew0KPiA+Pj4gKwkJLm5hbWUg PSAidG91Y2giLA0KPiA+Pj4gKwkJLmhlbHAgPSAidGhpcyBmbG93IGlzIHRvdWNoZWQiLA0KPiA+ Pj4gKwkJLm5leHQgPSBORVhUKGFjdGlvbl9hZ2VfdXBkYXRlLA0KPiA+PiBORVhUX0VOVFJZKENP TU1PTl9CT09MRUFOKSksDQo+ID4+PiArCQkuYXJncyA9IEFSR1MoQVJHU19FTlRSWV9CRihzdHJ1 Y3QgcnRlX2Zsb3dfdXBkYXRlX2FnZSwNCj4gPj4+ICsJCQkJCSAgIHRvdWNoLCAxKSksDQo+ID4+ PiArCQkuY2FsbCA9IHBhcnNlX3ZjX2NvbmYsDQo+ID4+PiArCX0sDQo+ID4+PiAgICAJW0FDVElP Tl9TQU1QTEVdID0gew0KPiA+Pj4gICAgCQkubmFtZSA9ICJzYW1wbGUiLA0KPiA+Pj4gICAgCQku aGVscCA9ICJzZXQgYSBzYW1wbGUgYWN0aW9uIiwNCj4gPj4+IEBAIC03MDMxLDYgKzcwNzAsMzMg QEAgcGFyc2VfdmNfY29uZihzdHJ1Y3QgY29udGV4dCAqY3R4LCBjb25zdA0KPiBzdHJ1Y3QNCj4g Pj4gdG9rZW4gKnRva2VuLA0KPiA+Pj4gICAgCXJldHVybiBsZW47DQo+ID4+PiAgICB9DQo+ID4+ Pg0KPiA+Pj4gKy8qKiBQYXJzZSBhY3Rpb24gY29uZmlndXJhdGlvbiBmaWVsZC4gKi8NCj4gPj4+ ICtzdGF0aWMgaW50DQo+ID4+PiArcGFyc2VfdmNfY29uZl90aW1lb3V0KHN0cnVjdCBjb250ZXh0 ICpjdHgsIGNvbnN0IHN0cnVjdCB0b2tlbiAqdG9rZW4sDQo+ID4+PiArCQkgICAgICBjb25zdCBj aGFyICpzdHIsIHVuc2lnbmVkIGludCBsZW4sDQo+ID4+PiArCQkgICAgICB2b2lkICpidWYsIHVu c2lnbmVkIGludCBzaXplKQ0KPiA+Pj4gK3sNCj4gPj4+ICsJc3RydWN0IGJ1ZmZlciAqb3V0ID0g YnVmOw0KPiA+Pj4gKwlzdHJ1Y3QgcnRlX2Zsb3dfdXBkYXRlX2FnZSAqdXBkYXRlOw0KPiA+Pj4g Kw0KPiA+Pj4gKwkodm9pZClzaXplOw0KPiA+Pj4gKwlpZiAoY3R4LT5jdXJyICE9IEFDVElPTl9B R0VfVVBEQVRFX1RJTUVPVVQpDQo+ID4+PiArCQlyZXR1cm4gLTE7DQo+ID4+PiArCS8qIFRva2Vu IG5hbWUgbXVzdCBtYXRjaC4gKi8NCj4gPj4+ICsJaWYgKHBhcnNlX2RlZmF1bHQoY3R4LCB0b2tl biwgc3RyLCBsZW4sIE5VTEwsIDApIDwgMCkNCj4gPj4+ICsJCXJldHVybiAtMTsNCj4gPj4+ICsJ LyogTm90aGluZyBlbHNlIHRvIGRvIGlmIHRoZXJlIGlzIG5vIGJ1ZmZlci4gKi8NCj4gPj4+ICsJ aWYgKCFvdXQpDQo+ID4+PiArCQlyZXR1cm4gbGVuOw0KPiA+Pj4gKwkvKiBQb2ludCB0byBzZWxl Y3RlZCBvYmplY3QuICovDQo+ID4+PiArCWN0eC0+b2JqZWN0ID0gb3V0LT5hcmdzLnZjLmRhdGE7 DQo+ID4+PiArCWN0eC0+b2JqbWFzayA9IE5VTEw7DQo+ID4+PiArCS8qIFVwZGF0ZSB0aGUgdGlt ZW91dCBpcyB2YWxpZC4gKi8NCj4gPj4+ICsJdXBkYXRlID0gKHN0cnVjdCBydGVfZmxvd191cGRh dGVfYWdlICopb3V0LT5hcmdzLnZjLmRhdGE7DQo+ID4+PiArCXVwZGF0ZS0+dGltZW91dF92YWxp ZCA9IDE7DQo+ID4+PiArCXJldHVybiBsZW47DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gICAg LyoqIFBhcnNlIGVDUFJJIGNvbW1vbiBoZWFkZXIgdHlwZSBmaWVsZC4gKi8NCj4gPj4+ICAgIHN0 YXRpYyBpbnQNCj4gPj4+ICAgIHBhcnNlX3ZjX2l0ZW1fZWNwcmlfdHlwZShzdHJ1Y3QgY29udGV4 dCAqY3R4LCBjb25zdCBzdHJ1Y3QgdG9rZW4NCj4gKnRva2VuLA0KPiA+Pj4gZGlmZiAtLWdpdCBh L2FwcC90ZXN0LXBtZC9jb25maWcuYyBiL2FwcC90ZXN0LXBtZC9jb25maWcuYw0KPiA+Pj4gaW5k ZXggMzE5NTI0NjdmYi4uNDU0OTUzODVkNyAxMDA2NDQNCj4gPj4+IC0tLSBhL2FwcC90ZXN0LXBt ZC9jb25maWcuYw0KPiA+Pj4gKysrIGIvYXBwL3Rlc3QtcG1kL2NvbmZpZy5jDQo+ID4+PiBAQCAt MjA2NSw2ICsyMDY1LDcgQEAgcG9ydF9hY3Rpb25faGFuZGxlX3VwZGF0ZShwb3J0aWRfdCBwb3J0 X2lkLA0KPiA+PiB1aW50MzJfdCBpZCwNCj4gPj4+ICAgIAlpZiAoIXBpYSkNCj4gPj4+ICAgIAkJ cmV0dXJuIC1FSU5WQUw7DQo+ID4+PiAgICAJc3dpdGNoIChwaWEtPnR5cGUpIHsNCj4gPj4+ICsJ Y2FzZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9BR0U6DQo+ID4+PiAgICAJY2FzZSBSVEVfRkxPV19B Q1RJT05fVFlQRV9DT05OVFJBQ0s6DQo+ID4+PiAgICAJCXVwZGF0ZSA9IGFjdGlvbi0+Y29uZjsN Cj4gPj4+ICAgIAkJYnJlYWs7DQo+ID4+PiBAQCAtMjkwNCw2ICsyOTA1LDggQEAgcG9ydF9xdWV1 ZV9hY3Rpb25faGFuZGxlX3VwZGF0ZShwb3J0aWRfdA0KPiA+PiBwb3J0X2lkLA0KPiA+Pj4gICAg CXN0cnVjdCBydGVfcG9ydCAqcG9ydDsNCj4gPj4+ICAgIAlzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3Ig ZXJyb3I7DQo+ID4+PiAgICAJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9oYW5kbGUgKmFjdGlvbl9o YW5kbGU7DQo+ID4+PiArCXN0cnVjdCBwb3J0X2luZGlyZWN0X2FjdGlvbiAqcGlhOw0KPiA+Pj4g Kwljb25zdCB2b2lkICp1cGRhdGU7DQo+ID4+Pg0KPiA+Pj4gICAgCWFjdGlvbl9oYW5kbGUgPSBw b3J0X2FjdGlvbl9oYW5kbGVfZ2V0X2J5X2lkKHBvcnRfaWQsIGlkKTsNCj4gPj4+ICAgIAlpZiAo IWFjdGlvbl9oYW5kbGUpDQo+ID4+PiBAQCAtMjkxNSw4ICsyOTE4LDIxIEBAIHBvcnRfcXVldWVf YWN0aW9uX2hhbmRsZV91cGRhdGUocG9ydGlkX3QNCj4gPj4gcG9ydF9pZCwNCj4gPj4+ICAgIAkJ cmV0dXJuIC1FSU5WQUw7DQo+ID4+PiAgICAJfQ0KPiA+Pj4NCj4gPj4+ICsJcGlhID0gYWN0aW9u X2dldF9ieV9pZChwb3J0X2lkLCBpZCk7DQo+ID4+PiArCWlmICghcGlhKQ0KPiA+Pj4gKwkJcmV0 dXJuIC1FSU5WQUw7DQo+ID4+PiArDQo+ID4+PiArCXN3aXRjaCAocGlhLT50eXBlKSB7DQo+ID4+ PiArCWNhc2UgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfQUdFOg0KPiA+Pj4gKwkJdXBkYXRlID0gYWN0 aW9uLT5jb25mOw0KPiA+Pj4gKwkJYnJlYWs7DQo+ID4+PiArCWRlZmF1bHQ6DQo+ID4+PiArCQl1 cGRhdGUgPSBhY3Rpb247DQo+ID4+PiArCQlicmVhazsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0KPiA+ Pj4gICAgCWlmIChydGVfZmxvd19hc3luY19hY3Rpb25faGFuZGxlX3VwZGF0ZShwb3J0X2lkLCBx dWV1ZV9pZCwgJmF0dHIsDQo+ID4+PiAtCQkJCSAgICBhY3Rpb25faGFuZGxlLCBhY3Rpb24sIE5V TEwsICZlcnJvcikpIHsNCj4gPj4+ICsJCQkJICAgIGFjdGlvbl9oYW5kbGUsIHVwZGF0ZSwgTlVM TCwgJmVycm9yKSkgew0KPiA+Pj4gICAgCQlyZXR1cm4gcG9ydF9mbG93X2NvbXBsYWluKCZlcnJv cik7DQo+ID4+PiAgICAJfQ0KPiA+Pj4gICAgCXByaW50ZigiSW5kaXJlY3QgYWN0aW9uICMldSB1 cGRhdGUgcXVldWVkXG4iLCBpZCk7DQo+ID4+PiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy9wcm9n X2d1aWRlL3J0ZV9mbG93LnJzdA0KPiA+PiBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9ydGVfZmxv dy5yc3QNCj4gPj4+IGluZGV4IDU4ODkxNGIyMzEuLmRhZTkxMjEyNzkgMTAwNjQ0DQo+ID4+PiAt LS0gYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0DQo+ID4+PiArKysgYi9kb2Mv Z3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0DQo+ID4+PiBAQCAtMjk1OCw3ICsyOTU4LDcg QEAgT3RoZXJ3aXNlLCBSVEVfRkxPV19FUlJPUl9UWVBFX0FDVElPTg0KPiA+PiBlcnJvciB3aWxs IGJlIHJldHVybmVkLg0KPiA+Pj4gICAgQWN0aW9uOiBgYEFHRWBgDQo+ID4+PiAgICBeXl5eXl5e Xl5eXl5eXl4NCj4gPj4+DQo+ID4+PiAtU2V0IGFnZWluZyB0aW1lb3V0IGNvbmZpZ3VyYXRpb24g dG8gYSBmbG93Lg0KPiA+Pj4gK1NldCBhZ2luZyB0aW1lb3V0IGNvbmZpZ3VyYXRpb24gdG8gYSBm bG93Lg0KPiA+Pj4NCj4gPj4+ICAgIEV2ZW50IFJURV9FVEhfRVZFTlRfRkxPV19BR0VEIHdpbGwg YmUgcmVwb3J0ZWQgaWYNCj4gPj4+ICAgIHRpbWVvdXQgcGFzc2VkIHdpdGhvdXQgYW55IG1hdGNo aW5nIG9uIHRoZSBmbG93Lg0KPiA+Pj4gQEAgLTI5NzcsOCArMjk3Nyw4IEBAIHRpbWVvdXQgcGFz c2VkIHdpdGhvdXQgYW55IG1hdGNoaW5nIG9uIHRoZQ0KPiA+PiBmbG93Lg0KPiA+Pj4gICAgICAg fCBgYGNvbnRleHRgYCAgfCB1c2VyIGlucHV0IGZsb3cgY29udGV4dCAgICAgICAgIHwNCj4gPj4+ ICAgICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r DQo+ID4+Pg0KPiA+Pj4gLVF1ZXJ5IHN0cnVjdHVyZSB0byByZXRyaWV2ZSBhZ2Vpbmcgc3RhdHVz IGluZm9ybWF0aW9uIG9mIGENCj4gPj4+IC1zaGFyZWQgQUdFIGFjdGlvbiwgb3IgYSBmbG93IHJ1 bGUgdXNpbmcgdGhlIEFHRSBhY3Rpb246DQo+ID4+PiArUXVlcnkgc3RydWN0dXJlIHRvIHJldHJp ZXZlIGFnaW5nIHN0YXR1cyBpbmZvcm1hdGlvbiBvZiBhbg0KPiA+Pj4gK2luZGlyZWN0IEFHRSBh Y3Rpb24sIG9yIGEgZmxvdyBydWxlIHVzaW5nIHRoZSBBR0UgYWN0aW9uOg0KPiA+Pj4NCj4gPj4+ ICAgIC4uIF90YWJsZV9ydGVfZmxvd19xdWVyeV9hZ2U6DQo+ID4+Pg0KPiA+Pj4gQEAgLTI5OTQs NiArMjk5NCwyNSBAQCBzaGFyZWQgQUdFIGFjdGlvbiwgb3IgYSBmbG93IHJ1bGUgdXNpbmcgdGhl DQo+IEFHRQ0KPiA+PiBhY3Rpb246DQo+ID4+PiAgICAgICB8IGBgc2VjX3NpbmNlX2xhc3RfaGl0 YGAgICAgICAgfCBvdXQgfCBTZWNvbmRzIHNpbmNlIGxhc3QgdHJhZmZpYyBoaXQgICAgICAgICB8 DQo+ID4+PiAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ID4+Pg0KPiA+Pj4gK1VwZGF0 ZSBzdHJ1Y3R1cmUgdG8gbW9kaWZ5IHRoZSBwYXJhbWV0ZXJzIG9mIGFuIGluZGlyZWN0IEFHRSBh Y3Rpb24uDQo+ID4+PiArVGhlIHVwZGF0ZSBzdHJ1Y3R1cmUgaXMgdXNlZCBieSBgYHJ0ZV9mbG93 X2FjdGlvbl9oYW5kbGVfdXBkYXRlKClgYA0KPiA+PiBmdW5jdGlvbi4NCj4gPj4+ICsNCj4gPj4+ ICsuLiBfdGFibGVfcnRlX2Zsb3dfdXBkYXRlX2FnZToNCj4gPj4+ICsNCj4gPj4+ICsuLiB0YWJs ZTo6IEFHRSB1cGRhdGUNCj4gPj4+ICsNCj4gPj4+ICsgICArLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsNCj4gPj4+ICsgICB8IEZpZWxkICAgICAgICAgICAgIHwgVmFsdWUgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPj4+ICsNCj4g Pj4gKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KPiA+PiA9PT09PT09PT09PT09PT09PT09PT09PT09Kw0KPiA+Pj4gKyAgIHwgYGB0aW1l b3V0YGAgICAgICAgfCAyNCBiaXRzIHRpbWVvdXQgdmFsdWUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfA0KPiA+Pj4gKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kw0KPiA+Pj4gKyAgIHwgYGB0aW1lb3V0X3ZhbGlkYGAgfCAxIGJpdCwgdGltZW91dCB2YWx1ZSBp cyB2YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA+Pj4gKyAgICstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+Pj4gKyAgIHwgYGB0b3VjaGBgICAgICAgICAgfCAx IGJpdCwgdG91Y2ggdGhlIEFHRSBhY3Rpb24gdG8gc2V0DQo+IGBgc2VjX3NpbmNlX2xhc3RfaGl0 YGAgMA0KPiA+PiB8DQo+ID4+PiArICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ID4+ PiArICAgfCBgYHJlc2VydmVkYGAgICAgICB8IDYgYml0cyByZXNlcnZlZCwgbXVzdCBiZSB6ZXJv ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4+PiArICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rDQo+ID4+PiArDQo+ID4+PiAgICBBY3Rpb246IGBgU0FNUExFYGANCj4g Pj4+ICAgIF5eXl5eXl5eXl5eXl5eXl5eXg0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9saWIv ZXRoZGV2L3J0ZV9mbG93LmggYi9saWIvZXRoZGV2L3J0ZV9mbG93LmgNCj4gPj4+IGluZGV4IGQ4 MzBiMDIzMjEuLmEyMWQ0MzdjZjggMTAwNjQ0DQo+ID4+PiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9m bG93LmgNCj4gPj4+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2Zsb3cuaA0KPiA+Pj4gQEAgLTI5NTQs NiArMjk1NCwzMyBAQCBzdHJ1Y3QgcnRlX2Zsb3dfcXVlcnlfYWdlIHsNCj4gPj4+ICAgIAl1aW50 MzJfdCBzZWNfc2luY2VfbGFzdF9oaXQ6MjQ7IC8qKjwgU2Vjb25kcyBzaW5jZSBsYXN0IHRyYWZm aWMgaGl0LiAqLw0KPiA+Pj4gICAgfTsNCj4gPj4+DQo+ID4+PiArLyoqDQo+ID4+PiArICogQHdh cm5pbmcNCj4gPj4+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgc3RydWN0dXJlIG1heSBjaGFu Z2Ugd2l0aG91dCBwcmlvciBub3RpY2UNCj4gPj4+ICsgKg0KPiA+Pj4gKyAqIFJURV9GTE9XX0FD VElPTl9UWVBFX0FHRQ0KPiA+Pj4gKyAqDQo+ID4+PiArICogVXBkYXRlIGluZGlyZWN0IEFHRSBh Y3Rpb24gYXR0cmlidXRlczoNCj4gPj4+ICsgKiAgLSBUaW1lb3V0IGNhbiBiZSB1cGRhdGVkIGlu Y2x1ZGluZyBzdG9wL3N0YXJ0IGFjdGlvbjoNCj4gPj4+ICsgKiAgICAgKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ID4+PiArICog ICAgIHwgT2xkIFRpbWVvdXQgfCBOZXcgVGltZW91dCB8IFVwZGF0aW5nICAgICAgICAgICAgICAg ICAgICAgfA0KPiA+Pj4gKyAqDQo+ID4+ICs9PT09PT09PT09PT09Kz09PT09PT09PT09PT0rPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPj4gPSsNCj4gPj4+ICsgKiAgICAgfCAwICAg ICAgICAgICB8IHBvc2l0aXZlICAgIHwgU3RhcnQgYWdpbmcgd2l0aCBuZXcgdmFsdWUgICB8DQo+ ID4+PiArICogICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKw0KPiA+Pj4gKyAqICAgICB8IHBvc2l0aXZlICAgIHwgMCAgICAgICAg ICAgfCBTdG9wIGFnaW5nCQkJICB8DQo+ID4+PiArICogICAgICstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+Pj4gKyAqICAgICB8 IHBvc2l0aXZlICAgIHwgcG9zaXRpdmUgICAgfCBDaGFuZ2UgdGltZW91dCB0byBuZXcgdmFsdWUg IHwNCj4gPj4+ICsgKiAgICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ID4+PiArICogIC0gc2VjX3NpbmNlX2xhc3RfaGl0IGNh biBiZSByZXNldC4NCj4gPj4+ICsgKi8NCj4gPj4+ICtzdHJ1Y3QgcnRlX2Zsb3dfdXBkYXRlX2Fn ZSB7DQo+ID4+DQo+ID4+IEkgdGhpbmsgaXQgd29yc2UgdG8gbWVudGlvbiB0aGUgc3RydWN0dXJl IGluDQo+ID4+IFJURV9GTE9XX0FDVElPTl9UWVBFX0FHRSBkZXNjcmlwdGlvbi4NCj4gPg0KPiA+ IFdoYXQgZG8geW91IG1lYW4/DQo+IA0KPiBSVEVfRkxPV19BQ1RJT05fVFlQRV9BR0UgaGFzIGEg ZGVzY3JpcHRpb24gYXMgZW51bSBtZW1iZXIuDQo+IFR5cGljYWxseSBjb25maWd1cmF0aW9uIHN0 cnVjdHVyZXMgYXJlIG1lbnRpb25lZCB0aGVyZS4NCj4gSG93ZXZlciwgSSB0aGluayB0aGF0IGl0 IHdvdWxkIGJlIHVzZWZ1bCB0byBtZW50aW9uIHNwZWNpZmljDQo+IHVwZGF0ZSBzdHJ1Y3R1cmUg aWYgYW55LiBMaWtlIHRoaXMgb25lLiBKdXN0IHRvIG1ha2UgaXQgY2xlYXINCj4gdGhhdCBpZiBh IHVzZXIgd2FudHMgdG8gdXBkYXRlIHRoZSBhY3Rpb24gY29uZmlndXJhdGlvbiBpdA0KPiBzaG91 bGQgdXNlIHNwZWNpZmljIHN0cnVjdHVyZS4gT3IgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8NCj4g TWlzdW5kZXJzdGFuZCBzb21ldGhpbmc/DQo+IA0KDQpEbyB5b3UgbWVhbiBzb21ldGhpbmcgbGlr ZToNCiogc2VlIGVudW0gUlRFX0VUSF9FVkVOVF9GTE9XX0FHRUQNCiAqIFNlZSBzdHJ1Y3QgcnRl X2Zsb3dfcXVlcnlfYWdlDQorIFNlZSBzdHJ1Y3QgcnRlX2Zsb3dfdXBkYXRlX2FnZQ0KICovDQpS VEVfRkxPV19BQ1RJT05fVFlQRV9BR0UsDQogSWYgc28sIEkgZnVsbHkgYWdyZWUuDQoNCj4gPg0K PiA+Pg0KPiA+Pj4gKwl1aW50MzJfdCByZXNlcnZlZDo2OyAvKio8IFJlc2VydmVkLCBtdXN0IGJl IHplcm8uICovDQo+ID4+PiArCXVpbnQzMl90IHRpbWVvdXRfdmFsaWQ6MTsgLyoqPCBUaGUgdGlt ZW91dCBpcyB2YWxpZCBmb3IgdXBkYXRlLiAqLw0KPiA+Pj4gKwl1aW50MzJfdCB0aW1lb3V0OjI0 OyAvKio8IFRpbWUgaW4gc2Vjb25kcy4gKi8NCj4gPj4+ICsJdWludDMyX3QgdG91Y2g6MTsNCj4g Pj4+ICsJLyoqPCBNZWFucyB0aGF0IGFnaW5nIHNob3VsZCBhc3N1bWUgcGFja2V0IHBhc3NlZCB0 aGUgYWdpbmcuICovDQo+ID4+DQo+ID4+IERvY3VtZW50YXRpb24gYWZ0ZXIgY29kZSBtYWtlcyBz ZW5zZSBpZiBpdCBpcyBpbiB0aGUgc2FtZSBsaW5lLg0KPiA+PiBJZiB0aGUgZG9jdW1lbnRhdGlv biBpcyBpbiBpdHMgb3duIGxpbmUsIGl0IHNob3VsZCBiZSBiZWZvcmUNCj4gPj4gdGhlIGNvZGUg YW5kIHVzZSAvKiogcHJlZml4Lg0KPiA+Pg0KPiA+DQo+ID4gKzENCj4gPg0KPiA+PiBPbmUgbW9y ZSBxdWVzdGlvbjogd2h5IG9yZGVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFib3ZlIGRvZXMNCj4g Pj4gbm90IG1hdGNoIG9yZGVyIGhlcmU/DQo+ID4+DQo+ID4NCj4gPiBJIHRoaW5rIHdlIGNhbiBy ZW1vdmUgaXQgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbiBzaW5jZSBpdCBkb2Vzbid0IGFkZA0KPiBh bnl0aGluZw0KPiA+DQo+ID4+PiArfTsNCj4gPj4+ICsNCj4gPj4+ICAgIC8qKg0KPiA+Pj4gICAg ICogQHdhcm5pbmcNCj4gPj4+ICAgICAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBzdHJ1Y3R1cmUg bWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZQ0KPiA+DQoNCg==