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 51F6E41CEC; Mon, 20 Feb 2023 17:59:14 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 191E44309F; Mon, 20 Feb 2023 17:59:14 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 15E6340395 for ; Mon, 20 Feb 2023 17:59:11 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31KCRDjn007741; Mon, 20 Feb 2023 08:59:11 -0800 Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2174.outbound.protection.outlook.com [104.47.55.174]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nty3003n8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Feb 2023 08:59:11 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FTtMV08LB5Mf6p039g3YIkBk2eQ8+2IuK1OJa6WBPUvhHlTqLwKquKqniXtfVqq5pbVGGcPs/fmvz171pNjYAkCci/AuSumD523lbb6enRudk5UC6aN0/kMdMgWx953vMvrxGhukII+dBGrun7M9G83qLNdbr70C7TCvDq6zs5/oKIX210KdO5BjFuNPGcJlJy0Qalm3ZwaTda3kgD2fGHCkRbP4t6JbVID1kl3K8+nQb8CX8eLXdUEYsm9zA6WPyEu46xOlZd7P1Q0iN5xbQ1cbWGtVbUktYI0ver2bApWe9khryby/rK7yk3ZhlA8bWiyCOZYeZ3j9kAccW2l+gg== 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=xXxZnsr5Z07RSFBK5Cf0LeTFnVEm6oR6f0tAlnLl/k4=; b=S9Rj0KHPqYcZXwiWFrVLpQJUXDH58NJOoxaffxqjX4EhB4MRps86qfY09Zc0ZpvcCT1021rmURYisT4Lg1fmEkufb9yDrWVD796T68g7vDsNhgEdtO8tkKTiCv7DcAFfIbatyrMsUibFS/TMd05IuvAZ13PCJRECFNXDEOTqpXr55nFq/JAm5jE+SNXU3zIXCYxYflDArhqQ5jv4QFVfdDZrgTBww5jnFSY8eUyZMVpRZU1K6as7c5NjIFz5MhxUbISPRiusCWxw6GB/gUl0PaLF7GYR/jSTQdkZpG5uwwFZodVGycFMjeq5AdfpOn/RDjCnwEGK9GLwzUQehc+yHQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xXxZnsr5Z07RSFBK5Cf0LeTFnVEm6oR6f0tAlnLl/k4=; b=be79b24m0chDuSOZQ7AR9b7jFNqWw09EdO9YO1FD6gvo3jF2M0vDTPWo3jISXTaCWjWMXnBASHjx4wnyDiUSq9wdrb+KR4lAg2OtTvyG9vq7vnAnBqOcJUGHxDUsQ/1CaZoet+OkNBGwaU9iXrqsJqW8HcjD6XOZIRdvh9wMDg4= Received: from DM4PR18MB4368.namprd18.prod.outlook.com (2603:10b6:5:39d::6) by PH0PR18MB3846.namprd18.prod.outlook.com (2603:10b6:510:49::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.20; Mon, 20 Feb 2023 16:59:08 +0000 Received: from DM4PR18MB4368.namprd18.prod.outlook.com ([fe80::6d6a:99da:de:ea6b]) by DM4PR18MB4368.namprd18.prod.outlook.com ([fe80::6d6a:99da:de:ea6b%7]) with mapi id 15.20.6111.020; Mon, 20 Feb 2023 16:59:07 +0000 From: Tomasz Duszynski To: Konstantin Ananyev , Konstantin Ananyev , "dev@dpdk.org" Subject: RE: [EXT] Re: [PATCH v11 1/4] lib: add generic support for reading PMU events Thread-Topic: [EXT] Re: [PATCH v11 1/4] lib: add generic support for reading PMU events Thread-Index: AQHZQi/ugndN0uHRZEy+gbr3w2CIfa7SPocAgAB/jGCAAC7XAIADOSHQgAHFjQCAAB7GUA== Date: Mon, 20 Feb 2023 16:59:07 +0000 Message-ID: References: <20230213113156.385482-1-tduszynski@marvell.com> <20230216175502.3164820-1-tduszynski@marvell.com> <20230216175502.3164820-2-tduszynski@marvell.com> <4b055bbc-36e5-671c-8117-fb0ee7307d55@yandex.ru> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR18MB4368:EE_|PH0PR18MB3846:EE_ x-ms-office365-filtering-correlation-id: cb4e4597-3e82-45bd-3d21-08db1363c7c0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Cx1EJbkSzVD1wIfMUV5kHaZB45+EBDCRXrYNCGutm44Mt53c/yZ3pLBijjwvCXyjBIgCMHv8hCxnwFcSJhPhfANOdiCoeXmVdIdHPbo7nz/iZYkgan5maWqAKwHzMm4d3uixUCLRm5mPa8cuG+CsuuxoZGdjK6N41totZbPFt2sjFS6HzqAsGsq2b0NTtf/rmctEsuvp/TmQAdNeG85muFZ1FWuV2U87gmnQPHsfT48mcXeBUdyDo5Id8/BB0qYnE6CTMRhoHvHi5ctukc56DPcBRs1nq257GRKpYkbjm/JDbINvpAPXKoJGlA5JGGY1fBV7xsJd3YsWzZiyv04xFRdIn47S5H2901lV9P44gG57bsm77NOxjcFxVGJXVPmWYqxK4VDh59iXmO6L5OmhZxmhcIB7lQ82mqGcPYvv+UQhy+zcex3N2F0QBj9cdpXoqU2pFo4SgrZT7oeU8+51tf/9XrckEqVriNy7Q6QHK4VKrVzhHyumDKRv1dk2BZTIWQVZtZVHNq4HK3/Vs9pylSBng25JulzJVbtLe7iSW6o+2/TifnrO09yMQa6+QSxjXcFV84uE75AaK5593wSJk14NNgEUST1QFXcSUU0Xso4JURtuM0eB3nG9s/gw3VVzS2uYCC0fA/meMJtqMAzeAGEDBUJP9UrlyceShmha7R2Rk2WzyxUzBkez1Z9lrfrqbh+zaj8kK2tHI1oUOwlbZVEPISBH/UAme8/e81p5KBM= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR18MB4368.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(346002)(376002)(136003)(39860400002)(396003)(366004)(451199018)(86362001)(33656002)(66476007)(8676002)(66556008)(2906002)(55016003)(66446008)(52536014)(66946007)(64756008)(8936002)(76116006)(5660300002)(122000001)(38070700005)(38100700002)(41300700001)(478600001)(71200400001)(7696005)(110136005)(316002)(6506007)(186003)(9686003)(83380400001)(26005)(41533002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VGhiOEpYdlQ3V1J5OXZPdkloZkZ1L1lMOWZidWdlRDA2cHlrczQxVG9UbWRH?= =?utf-8?B?SHVPZjd1aTRGQy9Pc1NBSVA2VDNva25vVFFmbkx3WDl1ZjA1ZHhjbVlRL04y?= =?utf-8?B?RTFCeEZzalQyRGNyQzlqK2JMMHM0Q2lnRitzNktaT0x1OEoxdWh1aXNLQ1JB?= =?utf-8?B?SzRXNFk1aUdlVkcxQ05EYnFKdVJrb0Z1dnlJUGl4b09meWJrelJwRXhRbkVm?= =?utf-8?B?YmNaNzFBVzAxMk5vMlZEelpncjlmUWVNM2FXaEVucTdTSjRFWXFiTTh2RHBt?= =?utf-8?B?YU1qMUpEWHNrMWVDQXVqbzZGVExBdGV4enNlbHl3Sk44dkV3MTlENjU5a0hO?= =?utf-8?B?anZaWUdMbmNYbE9La1JvQ3hJYlY5a2V4NmtqZFBUejlhVGIvam8yNVZCQ0Vl?= =?utf-8?B?R0JnR1E5V0UrQlhmM1UvSGVUek53WmlXSUR3UFRVWGx3Mmd5THlZS2FMM2k4?= =?utf-8?B?YjdjR1hNZzlmTzhtTkdTOUdMUHlkY3FlWnIyZG02c2MxdWROTWd2cy90dEN4?= =?utf-8?B?V0VKOHY1SWY1SnN3TnVJN05qSVp4SGoyVmJwTUI2bkI3UlpwelNGWjdiS0s1?= =?utf-8?B?bGFsNEVadUxuRm85S0U3MVEvbDA5N216cTZlbXhzcUYwclVPNTllRGl4Kzl2?= =?utf-8?B?amdoUHZtOGlRQmNxMkcwRW5FUTljTU5BWXVoVW8rTTU2cGJ0ajBvT3p1ZnNv?= =?utf-8?B?ZHpGU2xIR0xUWUZyYktQNVpXckJJSGszVlZMallicG5tdUFqYTlPZGxZcXlR?= =?utf-8?B?VUpYU1BSaE5rck1zMTB6Zi80MmlQUEVQK1J1QnBoMHVScXZtRWRtUWxRNTFs?= =?utf-8?B?bWhRdmlYWWd6T3F3c05WM3VOS0lQYndJakdvWUZ2eWxTVHlIdDd5c0RQRzhB?= =?utf-8?B?VnRnbnhmdmNpaG0vd2tYcDJ6YnBxZ1BOQVdUUnNPeUF2bWpSNEU1d3F5VExT?= =?utf-8?B?Y2J3ekFKamJwY0JEOExZbDhtRjZ6bmlpTitYMGFHMXpLTm02Q1NVN01UZXNh?= =?utf-8?B?dk9pSnhlUlVFdUQyOW1oaVJ3N1d2Z2kyampoaEJpZm5lbk5ld3pCWUF4Zk9H?= =?utf-8?B?QUxvd1NPOUdzMGhEeEM3SUFtQk9vVTdHZExHcTZINWo1NFFlWlNaNHBObURN?= =?utf-8?B?bVNLQTJFTnlrd2MwWlF3aVlTUnVGZG5QN0dKd21sN0dBQ2wvRFlpNDVodldj?= =?utf-8?B?MldTbmpnNnZvU1hzZnBseTlTTnNjT2NpN0JheXZnTi9vaGpOVkE0RVhWcjkw?= =?utf-8?B?VHo4Ni8vMUp0ekZiL3J6aGdpb2ZhT01SN2hmUzR6eWxpOGVBUWZNUlhmWGRR?= =?utf-8?B?S1dOY1FnTGtSb0p0bmwrZFZLZEkrYStYK2JSVWRFNEtFTkZnbTVseStoUjE3?= =?utf-8?B?NFdkOWZvTk9Yb1RtSlNYV2MvQ3dMRGJrL3I3L2J5R21QYlR4Vkl2WDlWZ3Vx?= =?utf-8?B?UHNqR2RxL2JFM0htR3lZZUFhUWE2UzNyaFljZG5lMUo3clhyNVJBRzQzL1hG?= =?utf-8?B?K1pWeVNwbG5Ycjlpekx4Q1gvNm5wWUppaTE0STA0TGU5VkdBOW5sQU1GWGx4?= =?utf-8?B?d0IxYm1IbDBGUDVoTjZuYWQyVWRUQU1Ud0ZnazNxVFhxdmI2eEc2cDEzaFNq?= =?utf-8?B?N0RBd21pR3pvNGN5QjlYSHlnNkFvalgvM1lLVmUrcEJFVGtuSC9uRmxobzBr?= =?utf-8?B?QlhTU2ZWY3dZY1V4K292VythMkJsZWJ0TUZPRXk1M1RkWHYveUV1NG9mZ3VY?= =?utf-8?B?ZHJnaFdUU04rV0FUcHVnVlNyVUVUcWZFZ3dmNDdWWWZ5anZycE81c04zZnFz?= =?utf-8?B?REhZNkdCd2lRTHQ0OFRlbEJNanhoKzFiU204Q3k0MnpRN3FYdXBLRzJTcVJN?= =?utf-8?B?MHpiU2FYL3FSOU1HblIrVzd6VHlLR0Q3ekN2S3JxUi9rNjdneHlWV2dxcUVP?= =?utf-8?B?WnFnS2x2TVdJVjlXRzJ6VWxtYnZpZ1Foa2VsZGt6eFZxaHp0aGhZdjNzMnNC?= =?utf-8?B?WVJJc3g0cmswTE11NXkvWlBFVzJkSkNyMGpxYk5iMFd2ZkQwSmxZa0Q2MFQv?= =?utf-8?B?M0J5MzZsencrLzM4Q1crL0dsOEJQcVRKdVB3WlV4cjFHTUdWZWU1bFhueTJz?= =?utf-8?Q?4RnP9XjmVHI4FVkBN1+kTg+/T?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR18MB4368.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cb4e4597-3e82-45bd-3d21-08db1363c7c0 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2023 16:59:07.6855 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hAxXnW9lTRCTMHPiPZT1M8VvH4mDHBt+2vQfCqb+l6X7whbzBNOVuToaGcy0a0V0v9yPfcU4+zSlwxdwKQV2gA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB3846 X-Proofpoint-GUID: gOBhC_hMcCdT2tFed3srywbj5lJ7Uy9j X-Proofpoint-ORIG-GUID: gOBhC_hMcCdT2tFed3srywbj5lJ7Uy9j X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-20_13,2023-02-20_02,2023-02-09_01 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 DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEtvbnN0YW50aW4gQW5hbnll diA8a29uc3RhbnRpbi5hbmFueWV2QGh1YXdlaS5jb20+DQo+U2VudDogTW9uZGF5LCBGZWJydWFy eSAyMCwgMjAyMyAzOjMxIFBNDQo+VG86IFRvbWFzeiBEdXN6eW5za2kgPHRkdXN6eW5za2lAbWFy dmVsbC5jb20+OyBLb25zdGFudGluIEFuYW55ZXYgPGtvbnN0YW50aW4udi5hbmFueWV2QHlhbmRl eC5ydT47DQo+ZGV2QGRwZGsub3JnDQo+U3ViamVjdDogUkU6IFtFWFRdIFJlOiBbUEFUQ0ggdjEx IDEvNF0gbGliOiBhZGQgZ2VuZXJpYyBzdXBwb3J0IGZvciByZWFkaW5nIFBNVSBldmVudHMNCj4N Cj4+ID4+ID4+IGRpZmYgLS1naXQgYS9saWIvcG11L3J0ZV9wbXUuaCBiL2xpYi9wbXUvcnRlX3Bt dS5oIG5ldyBmaWxlIG1vZGUNCj4+ID4+ID4+IDEwMDY0NCBpbmRleCAwMDAwMDAwMDAwLi42YjY2 NGMzMzM2DQo+PiA+PiA+PiAtLS0gL2Rldi9udWxsDQo+PiA+PiA+PiArKysgYi9saWIvcG11L3J0 ZV9wbXUuaA0KPj4gPj4gPj4gQEAgLTAsMCArMSwyMTIgQEANCj4+ID4+ID4+ICsvKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+PiA+PiA+PiArICogQ29weXJpZ2h0KGMp IDIwMjMgTWFydmVsbA0KPj4gPj4gPj4gKyAqLw0KPj4gPj4gPj4gKw0KPj4gPj4gPj4gKyNpZm5k ZWYgX1JURV9QTVVfSF8NCj4+ID4+ID4+ICsjZGVmaW5lIF9SVEVfUE1VX0hfDQo+PiA+PiA+PiAr DQo+PiA+PiA+PiArLyoqDQo+PiA+PiA+PiArICogQGZpbGUNCj4+ID4+ID4+ICsgKg0KPj4gPj4g Pj4gKyAqIFBNVSBldmVudCB0cmFjaW5nIG9wZXJhdGlvbnMNCj4+ID4+ID4+ICsgKg0KPj4gPj4g Pj4gKyAqIFRoaXMgZmlsZSBkZWZpbmVzIGdlbmVyaWMgQVBJIGFuZCB0eXBlcyBuZWNlc3Nhcnkg dG8gc2V0dXANCj4+ID4+ID4+ICtQTVUgYW5kDQo+PiA+PiA+PiArICogcmVhZCBzZWxlY3RlZCBj b3VudGVycyBpbiBydW50aW1lLg0KPj4gPj4gPj4gKyAqLw0KPj4gPj4gPj4gKw0KPj4gPj4gPj4g KyNpZmRlZiBfX2NwbHVzcGx1cw0KPj4gPj4gPj4gK2V4dGVybiAiQyIgew0KPj4gPj4gPj4gKyNl bmRpZg0KPj4gPj4gPj4gKw0KPj4gPj4gPj4gKyNpbmNsdWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+ DQo+PiA+PiA+PiArDQo+PiA+PiA+PiArI2luY2x1ZGUgPHJ0ZV9hdG9taWMuaD4NCj4+ID4+ID4+ ICsjaW5jbHVkZSA8cnRlX2JyYW5jaF9wcmVkaWN0aW9uLmg+ICNpbmNsdWRlIDxydGVfY29tbW9u Lmg+DQo+PiA+PiA+PiArI2luY2x1ZGUgPHJ0ZV9jb21wYXQuaD4gI2luY2x1ZGUgPHJ0ZV9zcGlu bG9jay5oPg0KPj4gPj4gPj4gKw0KPj4gPj4gPj4gKy8qKiBNYXhpbXVtIG51bWJlciBvZiBldmVu dHMgaW4gYSBncm91cCAqLyAjZGVmaW5lDQo+PiA+PiA+PiArTUFYX05VTV9HUk9VUF9FVkVOVFMg OA0KPj4gPj4gPj4gKw0KPj4gPj4gPj4gKy8qKg0KPj4gPj4gPj4gKyAqIEEgc3RydWN0dXJlIGRl c2NyaWJpbmcgYSBncm91cCBvZiBldmVudHMuDQo+PiA+PiA+PiArICovDQo+PiA+PiA+PiArc3Ry dWN0IHJ0ZV9wbXVfZXZlbnRfZ3JvdXAgew0KPj4gPj4gPj4gKwlzdHJ1Y3QgcGVyZl9ldmVudF9t bWFwX3BhZ2UgKm1tYXBfcGFnZXNbTUFYX05VTV9HUk9VUF9FVkVOVFNdOw0KPj4gPj4gPj4gKy8q KjwgYXJyYXkgb2YgdXNlciBwYWdlcw0KPj4gPiovDQo+PiA+PiA+PiArCWludCBmZHNbTUFYX05V TV9HUk9VUF9FVkVOVFNdOyAvKio8IGFycmF5IG9mIGV2ZW50IGRlc2NyaXB0b3JzICovDQo+PiA+ PiA+PiArCWJvb2wgZW5hYmxlZDsgLyoqPCB0cnVlIGlmIGdyb3VwIHdhcyBlbmFibGVkIG9uIHBh cnRpY3VsYXIgbGNvcmUgKi8NCj4+ID4+ID4+ICsJVEFJTFFfRU5UUlkocnRlX3BtdV9ldmVudF9n cm91cCkgbmV4dDsgLyoqPCBsaXN0IGVudHJ5ICovIH0NCj4+ID4+ID4+ICtfX3J0ZV9jYWNoZV9h bGlnbmVkOw0KPj4gPj4gPj4gKw0KPj4gPj4gPj4gKy8qKg0KPj4gPj4gPj4gKyAqIEEgc3RydWN0 dXJlIGRlc2NyaWJpbmcgYW4gZXZlbnQuDQo+PiA+PiA+PiArICovDQo+PiA+PiA+PiArc3RydWN0 IHJ0ZV9wbXVfZXZlbnQgew0KPj4gPj4gPj4gKwljaGFyICpuYW1lOyAvKio8IG5hbWUgb2YgYW4g ZXZlbnQgKi8NCj4+ID4+ID4+ICsJdW5zaWduZWQgaW50IGluZGV4OyAvKio8IGV2ZW50IGluZGV4 IGludG8gZmRzL21tYXBfcGFnZXMgKi8NCj4+ID4+ID4+ICsJVEFJTFFfRU5UUlkocnRlX3BtdV9l dmVudCkgbmV4dDsgLyoqPCBsaXN0IGVudHJ5ICovIH07DQo+PiA+PiA+PiArDQo+PiA+PiA+PiAr LyoqDQo+PiA+PiA+PiArICogQSBQTVUgc3RhdGUgY29udGFpbmVyLg0KPj4gPj4gPj4gKyAqLw0K Pj4gPj4gPj4gK3N0cnVjdCBydGVfcG11IHsNCj4+ID4+ID4+ICsJY2hhciAqbmFtZTsgLyoqPCBu YW1lIG9mIGNvcmUgUE1VIGxpc3RlZCB1bmRlciAvc3lzL2J1cy9ldmVudF9zb3VyY2UvZGV2aWNl cyAqLw0KPj4gPj4gPj4gKwlydGVfc3BpbmxvY2tfdCBsb2NrOyAvKio8IHNlcmlhbGl6ZSBhY2Nl c3MgdG8gZXZlbnQgZ3JvdXAgbGlzdCAqLw0KPj4gPj4gPj4gKwlUQUlMUV9IRUFEKCwgcnRlX3Bt dV9ldmVudF9ncm91cCkgZXZlbnRfZ3JvdXBfbGlzdDsgLyoqPCBsaXN0IG9mIGV2ZW50IGdyb3Vw cyAqLw0KPj4gPj4gPj4gKwl1bnNpZ25lZCBpbnQgbnVtX2dyb3VwX2V2ZW50czsgLyoqPCBudW1i ZXIgb2YgZXZlbnRzIGluIGEgZ3JvdXAgKi8NCj4+ID4+ID4+ICsJVEFJTFFfSEVBRCgsIHJ0ZV9w bXVfZXZlbnQpIGV2ZW50X2xpc3Q7IC8qKjwgbGlzdCBvZiBtYXRjaGluZyBldmVudHMgKi8NCj4+ ID4+ID4+ICsJdW5zaWduZWQgaW50IGluaXRpYWxpemVkOyAvKio8IGluaXRpYWxpemF0aW9uIGNv dW50ZXIgKi8gfTsNCj4+ID4+ID4+ICsNCj4+ID4+ID4+ICsvKiogbGNvcmUgZXZlbnQgZ3JvdXAg Ki8NCj4+ID4+ID4+ICtSVEVfREVDTEFSRV9QRVJfTENPUkUoc3RydWN0IHJ0ZV9wbXVfZXZlbnRf Z3JvdXAsDQo+PiA+PiA+PiArX2V2ZW50X2dyb3VwKTsNCj4+ID4+ID4+ICsNCj4+ID4+ID4+ICsv KiogUE1VIHN0YXRlIGNvbnRhaW5lciAqLw0KPj4gPj4gPj4gK2V4dGVybiBzdHJ1Y3QgcnRlX3Bt dSBydGVfcG11Ow0KPj4gPj4gPj4gKw0KPj4gPj4gPj4gKy8qKiBFYWNoIGFyY2hpdGVjdHVyZSBz dXBwb3J0aW5nIFBNVSBuZWVkcyB0byBwcm92aWRlIGl0cyBvd24NCj4+ID4+ID4+ICt2ZXJzaW9u ICovICNpZm5kZWYgcnRlX3BtdV9wbWNfcmVhZCAjZGVmaW5lDQo+PiA+PiA+PiArcnRlX3BtdV9w bWNfcmVhZChpbmRleCkgKHsgMDsgfSkgI2VuZGlmDQo+PiA+PiA+PiArDQo+PiA+PiA+PiArLyoq DQo+PiA+PiA+PiArICogQHdhcm5pbmcNCj4+ID4+ID4+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRo aXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UNCj4+ID4+ID4+ICsgKg0KPj4g Pj4gPj4gKyAqIFJlYWQgUE1VIGNvdW50ZXIuDQo+PiA+PiA+PiArICoNCj4+ID4+ID4+ICsgKiBA d2FybmluZyBUaGlzIHNob3VsZCBiZSBub3QgY2FsbGVkIGRpcmVjdGx5Lg0KPj4gPj4gPj4gKyAq DQo+PiA+PiA+PiArICogQHBhcmFtIHBjDQo+PiA+PiA+PiArICogICBQb2ludGVyIHRvIHRoZSBt bWFwcGVkIHVzZXIgcGFnZS4NCj4+ID4+ID4+ICsgKiBAcmV0dXJuDQo+PiA+PiA+PiArICogICBD b3VudGVyIHZhbHVlIHJlYWQgZnJvbSBoYXJkd2FyZS4NCj4+ID4+ID4+ICsgKi8NCj4+ID4+ID4+ ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB1aW50NjRfdA0KPj4gPj4gPj4gK19fcnRlX3Bt dV9yZWFkX3VzZXJwYWdlKHN0cnVjdCBwZXJmX2V2ZW50X21tYXBfcGFnZSAqcGMpIHsNCj4+ID4+ ID4+ICsJdWludDY0X3Qgd2lkdGgsIG9mZnNldDsNCj4+ID4+ID4+ICsJdWludDMyX3Qgc2VxLCBp bmRleDsNCj4+ID4+ID4+ICsJaW50NjRfdCBwbWM7DQo+PiA+PiA+PiArDQo+PiA+PiA+PiArCWZv ciAoOzspIHsNCj4+ID4+ID4+ICsJCXNlcSA9IHBjLT5sb2NrOw0KPj4gPj4gPj4gKwkJcnRlX2Nv bXBpbGVyX2JhcnJpZXIoKTsNCj4+ID4+ID4NCj4+ID4+ID5BcmUgeW91IHN1cmUgdGhhdCBjb21w aWxlcl9iYXJyaWVyKCkgaXMgZW5vdWdoIGhlcmU/DQo+PiA+PiA+T24gc29tZSBhcmNocyBDUFUg aXRzZWxmIGhhcyBmcmVlZG9tIHRvIHJlLW9yZGVyIHJlYWRzLg0KPj4gPj4gPk9yIEkgYW0gbWlz c2luZyBzb21ldGhpbmcgb2J2aW91cyBoZXJlPw0KPj4gPj4gPg0KPj4gPj4NCj4+ID4+IEl0J3Mg YSBtYXR0ZXIgb2Ygbm90IGtlZXBpbmcgb2xkIHN0dWZmIGNhY2hlZCBpbiByZWdpc3RlcnMgYW5k DQo+PiA+PiBtYWtpbmcgc3VyZSB0aGF0IHdlIGhhdmUgdHdvIHJlYWRzIG9mIGxvY2suIENQVSBy ZW9yZGVyaW5nIHdvbid0IGRvDQo+PiA+PiBhbnkgaGFybSBoZXJlLg0KPj4gPg0KPj4gPlNvcnJ5 LCBJIGRpZG4ndCBnZXQgeW91IGhlcmU6DQo+PiA+U3VwcG9zZSBDUFUgd2lsbCByZS1vcmRlciBy ZWFkcyBhbmQgd2lsbCByZWFkIGxvY2sgKmFmdGVyKiBpbmRleCBvciBvZmZzZXQgdmFsdWUuDQo+ PiA+V291bGRuJ3QgaXQgbWVhbiB0aGF0IGluIHRoYXQgY2FzZSBpbmRleCBhbmQvb3Igb2Zmc2V0 IGNhbiBjb250YWluIG9sZC9pbnZhbGlkIHZhbHVlcz8NCj4+ID4NCj4+DQo+PiBUaGlzIG51bWJl ciBpcyBqdXN0IGFuIGluZGljYXRvciB3aGV0aGVyIGtlcm5lbCBkaWQgY2hhbmdlIHNvbWV0aGlu ZyBvciBub3QuDQo+DQo+WW91IGFyZSB0YWxraW5nIGFib3V0IHBjLT5sb2NrLCByaWdodD8NCj5Z ZXMsIEkgZG8gdW5kZXJzdGFuZCB0aGF0IGl0IGlzIHNvcnQgb2Ygc2VxbG9jay4NCj5UaGF0J3Mg d2h5IEkgYW0gcHV6emxlZCB3aHkgd2UgZG8gbm90IGNhcmUgYWJvdXQgcG9zc2libGUgY3B1IHJl YWQtcmVvcmRlcmluZy4NCj5NYW51YWwgZm9yIHBlcmZfZXZlbnRfb3BlbigpIGFsc28gaGFzIGEg Y29kZSBzbmlwcGV0IHdpdGggY29tcGlsZXIgYmFycmllciBvbmx5Li4uDQo+DQo+PiBJZiBjcHUg cmVvcmRlcmluZyB3aWxsIGNvbWUgaW50byBwbGF5IHRoZW4gdGhpcyB3aWxsIG5vdCBjaGFuZ2Ug YW55dGhpbmcgZnJvbSBwb3Ygb2YgdGhpcyBsb29wLg0KPj4gQWxsIHdlIHdhbnQgaXMgZnJlc2gg ZGF0YSB3aGVuIG5lZWRlZCBhbmQgbm8gaW52b2x2ZW1lbnQgb2YgY29tcGlsZXINCj4+IHdoZW4g aXQgY29tZXMgdG8gcmVvcmRlcmluZyBjb2RlLg0KPg0KPk9rLCBjYW4geW91IHByb2JhYmx5IGV4 cGxhaW4gdG8gbWUgd2h5IHRoZSBmb2xsb3dpbmcgY291bGQgbm90IGhhcHBlbjoNCj5UMDoNCj5w Yy0+c2VxbG9jaz09MDsgcGMtPmluZGV4PT1JMTsgcGMtPm9mZnNldD09TzE7DQo+VDE6DQo+ICAg ICAgY3B1ICMwIHJlYWQgcG11IChkdWUgdG8gY3B1IHJlYWQgcmVvcmRlciwgd2UgZ2V0IGluZGV4 IHZhbHVlIGJlZm9yZSBzZXFsb2NrKToNCj4gICAgICAgaW5kZXg9cGMtPmluZGV4OyAgLy9pbmRl eD09STE7DQo+IFQyOg0KPiAgICAgIGNwdSAjMSBrZXJuZWwgdmVudF91cGRhdGVfdXNlcnBhZ2U6 DQo+ICAgICAgcGMtPmxvY2srKzsgLy8gcGMtPmxvY2s9PTENCj4gICAgICBwYy0+aW5kZXg9STI7 DQo+ICAgICAgcGMtPm9mZnNldD1PMjsNCj4gICAgICAuLi4NCj4gICAgICBwYy0+bG9jaysrOyAv L3BjLT5sb2NrPT0yDQo+VDM6DQo+ICAgICAgY3B1ICMwIGNvbnRpbnVlIHdpdGggcmVhZCBwbXU6 DQo+ICAgICAgc2VxPXBjLT5sb2NrOyAvL3NlcSA9PSAyDQo+ICAgICAgIG9mZnNldD1wYy0+b2Zm c2V0OyAvLyBvZmZzZXQgPT0gTzINCj4gICAgICAgLi4uLg0KPiAgICAgICBwbWMgPSBydGVfcG11 X3BtY19yZWFkKGluZGV4IC0gMSk7ICAvLyBOb3RlIHRoYXQgd2UgcmVhZCBhdCBJMSwgbm90IEky DQo+ICAgICAgIG9mZnNldCArPSBwbWM7IC8vb2Zmc2V0ID09IE8yICsgcG1jcmVhZChJMS0xKTsN Cj4gICAgICAgaWYgKHBjLT5sb2NrID09IHNlcSkgLy8gdGhleSBhcmUgZXF1YWwsIHJldHVybg0K PiAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0Ow0KPg0KPk9yLCBpdCBjYW4gaGFwcGVuLCBidXQg Ynkgc29tZSByZWFzb24gd2UgZG9uJ3QgY2FyZSBtdWNoPw0KPg0KDQpUaGlzIGNvZGUgZG9lcyBz ZWxmLW1vbml0b3JpbmcgYW5kIHVzZXIgcGFnZSAod2hvbGUgZ3JvdXAgYWN0dWFsbHkpIGlzIHBl ciB0aHJlYWQgcnVubmluZyBvbg0KY3VycmVudCBjcHUuIEhlbmNlIEkgYW0gbm90IHN1cmUgd2hh dCBhcmUgeW91IHRyeWluZyB0byBwcm92ZSB3aXRoIHRoYXQgZXhhbXBsZS4gIA0KDQo+PiA+Pg0K Pj4gPj4gPj4gKwkJaW5kZXggPSBwYy0+aW5kZXg7DQo+PiA+PiA+PiArCQlvZmZzZXQgPSBwYy0+ b2Zmc2V0Ow0KPj4gPj4gPj4gKwkJd2lkdGggPSBwYy0+cG1jX3dpZHRoOw0KPj4gPj4gPj4gKw0K Pj4gPj4gPj4gKwkJLyogaW5kZXggc2V0IHRvIDAgbWVhbnMgdGhhdCBwYXJ0aWN1bGFyIGNvdW50 ZXIgY2Fubm90IGJlIHVzZWQgKi8NCj4+ID4+ID4+ICsJCWlmIChsaWtlbHkocGMtPmNhcF91c2Vy X3JkcG1jICYmIGluZGV4KSkgew0KPj4gPj4gPj4gKwkJCXBtYyA9IHJ0ZV9wbXVfcG1jX3JlYWQo aW5kZXggLSAxKTsNCj4+ID4+ID4+ICsJCQlwbWMgPDw9IDY0IC0gd2lkdGg7DQo+PiA+PiA+PiAr CQkJcG1jID4+PSA2NCAtIHdpZHRoOw0KPj4gPj4gPj4gKwkJCW9mZnNldCArPSBwbWM7DQo+PiA+ PiA+PiArCQl9DQo+PiA+PiA+PiArDQo+PiA+PiA+PiArCQlydGVfY29tcGlsZXJfYmFycmllcigp Ow0KPj4gPj4gPj4gKw0KPj4gPj4gPj4gKwkJaWYgKGxpa2VseShwYy0+bG9jayA9PSBzZXEpKQ0K Pj4gPj4gPj4gKwkJCXJldHVybiBvZmZzZXQ7DQo+PiA+PiA+PiArCX0NCj4+ID4+ID4+ICsNCj4+ ID4+ID4+ICsJcmV0dXJuIDA7DQo+PiA+PiA+PiArfQ0KPj4gPj4gPj4gKw0KPj4gPj4gPj4gKy8q Kg0KPj4gPj4gPj4gKyAqIEB3YXJuaW5nDQo+PiA+PiA+PiArICogQGIgRVhQRVJJTUVOVEFMOiB0 aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+PiA+PiA+PiArICoNCj4+ ID4+ID4+ICsgKiBFbmFibGUgZ3JvdXAgb2YgZXZlbnRzIG9uIHRoZSBjYWxsaW5nIGxjb3JlLg0K Pj4gPj4gPj4gKyAqDQo+PiA+PiA+PiArICogQHdhcm5pbmcgVGhpcyBzaG91bGQgYmUgbm90IGNh bGxlZCBkaXJlY3RseS4NCj4+ID4+ID4+ICsgKg0KPj4gPj4gPj4gKyAqIEByZXR1cm4NCj4+ID4+ ID4+ICsgKiAgIDAgaW4gY2FzZSBvZiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZSBvdGhlcndpc2Uu DQo+PiA+PiA+PiArICovDQo+PiA+PiA+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+PiA+PiA+PiAr aW50DQo+PiA+PiA+PiArX19ydGVfcG11X2VuYWJsZV9ncm91cCh2b2lkKTsNCj4+ID4+ID4+ICsN Cj4+ID4+ID4+ICsvKioNCj4+ID4+ID4+ICsgKiBAd2FybmluZw0KPj4gPj4gPj4gKyAqIEBiIEVY UEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZQ0KPj4g Pj4gPj4gKyAqDQo+PiA+PiA+PiArICogSW5pdGlhbGl6ZSBQTVUgbGlicmFyeS4NCj4+ID4+ID4+ ICsgKg0KPj4gPj4gPj4gKyAqIEB3YXJuaW5nIFRoaXMgc2hvdWxkIGJlIG5vdCBjYWxsZWQgZGly ZWN0bHkuDQo+PiA+PiA+PiArICoNCj4+ID4+ID4+ICsgKiBAcmV0dXJuDQo+PiA+PiA+PiArICog ICAwIGluIGNhc2Ugb2Ygc3VjY2VzcywgbmVnYXRpdmUgdmFsdWUgb3RoZXJ3aXNlLg0KPj4gPj4g Pj4gKyAqLw0KPj4gPj4gPj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPj4gPj4gPj4gK2ludA0KPj4g Pj4gPj4gK3J0ZV9wbXVfaW5pdCh2b2lkKTsNCj4+ID4+ID4+ICsNCj4+ID4+ID4+ICsvKioNCj4+ ID4+ID4+ICsgKiBAd2FybmluZw0KPj4gPj4gPj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBB UEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZQ0KPj4gPj4gPj4gKyAqDQo+PiA+PiA+ PiArICogRmluYWxpemUgUE1VIGxpYnJhcnkuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBQ TVUgY291bnRlcnMgYXJlIG5vIGxvbmdlciBiZWluZw0KPnJlYWQuDQo+PiA+PiA+PiArICovDQo+ PiA+PiA+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+PiA+PiA+PiArdm9pZA0KPj4gPj4gPj4gK3J0 ZV9wbXVfZmluaSh2b2lkKTsNCj4+ID4+ID4+ICsNCj4+ID4+ID4+ICsvKioNCj4+ID4+ID4+ICsg KiBAd2FybmluZw0KPj4gPj4gPj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNo YW5nZSB3aXRob3V0IHByaW9yIG5vdGljZQ0KPj4gPj4gPj4gKyAqDQo+PiA+PiA+PiArICogQWRk IGV2ZW50IHRvIHRoZSBncm91cCBvZiBlbmFibGVkIGV2ZW50cy4NCj4+ID4+ID4+ICsgKg0KPj4g Pj4gPj4gKyAqIEBwYXJhbSBuYW1lDQo+PiA+PiA+PiArICogICBOYW1lIG9mIGFuIGV2ZW50IGxp c3RlZCB1bmRlciAvc3lzL2J1cy9ldmVudF9zb3VyY2UvZGV2aWNlcy9wbXUvZXZlbnRzLg0KPj4g Pj4gPj4gKyAqIEByZXR1cm4NCj4+ID4+ID4+ICsgKiAgIEV2ZW50IGluZGV4IGluIGNhc2Ugb2Yg c3VjY2VzcywgbmVnYXRpdmUgdmFsdWUgb3RoZXJ3aXNlLg0KPj4gPj4gPj4gKyAqLw0KPj4gPj4g Pj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPj4gPj4gPj4gK2ludA0KPj4gPj4gPj4gK3J0ZV9wbXVf YWRkX2V2ZW50KGNvbnN0IGNoYXIgKm5hbWUpOw0KPj4gPj4gPj4gKw0KPj4gPj4gPj4gKy8qKg0K Pj4gPj4gPj4gKyAqIEB3YXJuaW5nDQo+PiA+PiA+PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlz IEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+PiA+PiA+PiArICoNCj4+ID4+ ID4+ICsgKiBSZWFkIGhhcmR3YXJlIGNvdW50ZXIgY29uZmlndXJlZCB0byBjb3VudCBvY2N1cnJl bmNlcyBvZiBhbiBldmVudC4NCj4+ID4+ID4+ICsgKg0KPj4gPj4gPj4gKyAqIEBwYXJhbSBpbmRl eA0KPj4gPj4gPj4gKyAqICAgSW5kZXggb2YgYW4gZXZlbnQgdG8gYmUgcmVhZC4NCj4+ID4+ID4+ ICsgKiBAcmV0dXJuDQo+PiA+PiA+PiArICogICBFdmVudCB2YWx1ZSByZWFkIGZyb20gcmVnaXN0 ZXIuIEluIGNhc2Ugb2YgZXJyb3JzIG9yIGxhY2sgb2Ygc3VwcG9ydA0KPj4gPj4gPj4gKyAqICAg MCBpcyByZXR1cm5lZC4gSW4gb3RoZXIgd29yZHMsIHN0cmVhbSBvZiB6ZXJvcyBpbiBhIHRyYWNl IGZpbGUNCj4+ID4+ID4+ICsgKiAgIGluZGljYXRlcyBwcm9ibGVtIHdpdGggcmVhZGluZyBwYXJ0 aWN1bGFyIFBNVSBldmVudCByZWdpc3Rlci4NCj4+ID4+ID4+ICsgKi8NCj4NCj5Bbm90aGVyIHF1 ZXN0aW9uIC0gZG8gd2UgcmVhbGx5IG5lZWQgIHRvIGhhdmUgX19ydGVfcG11X3JlYWRfdXNlcnBh Z2UoKSBhbmQgcnRlX3BtdV9yZWFkKCkgYXMNCj5zdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBpbiBw dWJsaWMgaGVhZGVyPw0KPkFzIEkgdW5kZXJzdGFuZCwgYmVjYXVzZSBvZiB0aGF0IHdlIGFsc28g aGF2ZSB0byBtYWtlICdzdHJ1Y3QgcnRlX3BtdV8qJw0KPmRlZmluaXRpb25zIGFsc28gcHVibGlj Lg0KPg0KPj4gPj4gPj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPj4gPj4gPj4gK3N0YXRpYyBfX3J0 ZV9hbHdheXNfaW5saW5lIHVpbnQ2NF90IHJ0ZV9wbXVfcmVhZCh1bnNpZ25lZCBpbnQNCj4+ID4+ ID4+ICtpbmRleCkgew0KPj4gPj4gPj4gKwlzdHJ1Y3QgcnRlX3BtdV9ldmVudF9ncm91cCAqZ3Jv dXAgPSAmUlRFX1BFUl9MQ09SRShfZXZlbnRfZ3JvdXApOw0KPj4gPj4gPj4gKwlpbnQgcmV0Ow0K Pj4gPj4gPj4gKw0KPj4gPj4gPj4gKwlpZiAodW5saWtlbHkoIXJ0ZV9wbXUuaW5pdGlhbGl6ZWQp KQ0KPj4gPj4gPj4gKwkJcmV0dXJuIDA7DQo+PiA+PiA+PiArDQo+PiA+PiA+PiArCWlmICh1bmxp a2VseSghZ3JvdXAtPmVuYWJsZWQpKSB7DQo+PiA+PiA+PiArCQlyZXQgPSBfX3J0ZV9wbXVfZW5h YmxlX2dyb3VwKCk7DQo+PiA+PiA+PiArCQlpZiAocmV0KQ0KPj4gPj4gPj4gKwkJCXJldHVybiAw Ow0KPj4gPj4gPj4gKwl9DQo+PiA+PiA+PiArDQo+PiA+PiA+PiArCWlmICh1bmxpa2VseShpbmRl eCA+PSBydGVfcG11Lm51bV9ncm91cF9ldmVudHMpKQ0KPj4gPj4gPj4gKwkJcmV0dXJuIDA7DQo+ PiA+PiA+PiArDQo+PiA+PiA+PiArCXJldHVybiBfX3J0ZV9wbXVfcmVhZF91c2VycGFnZShncm91 cC0+bW1hcF9wYWdlc1tpbmRleF0pOw0KPj4gPj4gPj4gK30NCj4+ID4+ID4+ICsNCj4+ID4+ID4+ ICsjaWZkZWYgX19jcGx1c3BsdXMNCj4+ID4+ID4+ICt9DQo+PiA+PiA+PiArI2VuZGlmDQo+PiA+ PiA+PiArDQoNCg==