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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 56951C87FCB for ; Wed, 6 Aug 2025 23:01:20 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0B2BE10E165; Wed, 6 Aug 2025 23:01:20 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="T3d64p45"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by gabe.freedesktop.org (Postfix) with ESMTPS id EF60710E165 for ; Wed, 6 Aug 2025 23:01:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1754521278; x=1786057278; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=+HtMijLMlbJnWsRF1/P4pywDzLyFo//tuBthI9SDA10=; b=T3d64p45aoYmS9sTYR1FOsnkXFgU6bmLROwDfK/N2a7vHHVfC25DmkbW 0OF2UBpu3j/1za9ZhwnD5K+XFkcWqBGSNoPeETnde/S3dYMGnf7hFayBF FA14gDS01ElRZ/+IaQouzzV7KemDN/h77f6yFpSsDztP+xgBYwCohIc2N KHXZ3zss+k52wR2KX5ET9cYF9tkjOy6wd7qVUPgDuCmN7EA81EZCQK3is rO0Kw5i41itBOkOn864z5sHDQGqUOPS8ovoB7DY3VyjvXaJh0bXtWdHyi v/OHXaSbhq5iWz9qON0uem50MfAhdmatBZjuBNEvDuuGXw2QkMbgIqq3B Q==; X-CSE-ConnectionGUID: 7fndspxqQmyrpmK/o43jgg== X-CSE-MsgGUID: L4RZZ0ELTVKafVTaJAbifw== X-IronPort-AV: E=McAfee;i="6800,10657,11514"; a="56716110" X-IronPort-AV: E=Sophos;i="6.17,271,1747724400"; d="scan'208";a="56716110" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2025 16:01:17 -0700 X-CSE-ConnectionGUID: a9H0ZwsFTY+bnKH6GtWMvw== X-CSE-MsgGUID: WMtPLxV5SGGhljS5o/B7hQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,271,1747724400"; d="scan'208";a="164139214" Received: from fmsmsx903.amr.corp.intel.com ([10.18.126.92]) by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2025 16:01:17 -0700 Received: from FMSMSX901.amr.corp.intel.com (10.18.126.90) by fmsmsx903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.26; Wed, 6 Aug 2025 16:01:16 -0700 Received: from fmsedg902.ED.cps.intel.com (10.1.192.144) by FMSMSX901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.26 via Frontend Transport; Wed, 6 Aug 2025 16:01:16 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (40.107.93.54) by edgegateway.intel.com (192.55.55.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.26; Wed, 6 Aug 2025 16:01:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=X10sVnIBuV/8nT44wrEmLc01zpFlv+ZVxpYMkgF1t1kIiEmV6mwGC7ZSKjjdWO8qgOeNrk0a2sNypJ3Xg7avEdz7Gyx32iyDzow64y6LlFgRj1YE/liDIhBf8nfzrpc4Ug+loIGHNKLKLhK6RRXSTrQbnhy4qQCmYQ6D0BIxK7YAT1y8T908v0QgV1u4IGUMey8gdnTtJWsiM+rNuyE24fVIPS9m6M3TPUFInPW+1zY7njn5s0g7YH8KPUWjAe4/ULk5kG0PmrKPgVh9K9JpSKKLBJgnHmuipypHl6paJfXRPhDlTyWGgt7yJyc0hQTGaf9Mw05kuAvSVQI+SoR0kw== 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=+HtMijLMlbJnWsRF1/P4pywDzLyFo//tuBthI9SDA10=; b=msqfrYLLk5k+Lk1abZ5+jW+CWU3IlA48HbgSJSyyZsrI5CrK7PxD8YoO97NTV3hV0twBo0zq4f3RzK5LEEzZf+Jl/Saby5JyWZxE1EJfd0XvK2/SUheSKBvZy+lyzd9Lk02BOjkYsMW0Y2TL4mQ33ADrJUtC0R9F+vr2QJ5AEl50Er38Jm/kfzwCvrOyVZchBXknQTZOsZnGUMqaXilSfYmUP75C3s/9AsH4QZ1dZX17UyHrYHeToFSUJ0cB1GBsJHD1i2F8dMnntPVboGqWZUSRlQRghXezJFXDlxZFtFtOS5XTkOavQH2Gir2im+bJZKIHtX5DKV7Wu/MhSFru5g== 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 DM8PR11MB5573.namprd11.prod.outlook.com (2603:10b6:8:3b::7) by DM4PR11MB6480.namprd11.prod.outlook.com (2603:10b6:8:8d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.15; Wed, 6 Aug 2025 23:01:12 +0000 Received: from DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::3f64:5280:3eb4:775b]) by DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::3f64:5280:3eb4:775b%3]) with mapi id 15.20.9009.013; Wed, 6 Aug 2025 23:01:12 +0000 From: "Summers, Stuart" To: "intel-xe@lists.freedesktop.org" , "Brost, Matthew" CC: "Mrozek, Michal" , "Ghimiray, Himal Prasad" , "thomas.hellstrom@linux.intel.com" , "Dugast, Francois" Subject: Re: [PATCH 01/11] drm/xe: Stub out new pagefault layer Thread-Topic: [PATCH 01/11] drm/xe: Stub out new pagefault layer Thread-Index: AQHcBpqVWJQz1NtL3UOPG6F1BFXKW7RWPsoA Date: Wed, 6 Aug 2025 23:01:12 +0000 Message-ID: References: <20250806062242.1090416-1-matthew.brost@intel.com> <20250806062242.1090416-2-matthew.brost@intel.com> In-Reply-To: <20250806062242.1090416-2-matthew.brost@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu2 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: DM8PR11MB5573:EE_|DM4PR11MB6480:EE_ x-ms-office365-filtering-correlation-id: 5ce2d07a-8dfd-41a6-6bd7-08ddd53d23de 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?U0w1U2FvaHl2SThQZ0dEYmVNbWRhMVlCNFdDNlBUSTdLdjJrMDMzR21CNG5r?= =?utf-8?B?clJ1dG1wU3B5TFUrdGlDVCttVCs0RkI1S21NbGI1MmlsWldTQjFlcG84L2RC?= =?utf-8?B?bS9LdVg2bGsybGJuRjlZUktTVnd2ZnY4V3hGRXpndld2UDFHclJsc3NaOWNQ?= =?utf-8?B?c1lmejkwNnIxOVBTR3o4ZlZVZ2pPWHdXaUk2S1llcnQwUDNybDl6R2NIMUts?= =?utf-8?B?SlRKQ2NxWUhwQlg1Y3ZRNE9EdmRWblJ2SkVXY2JZeW90QXJSWW4rNG4vWEVV?= =?utf-8?B?dDdHWkgzdkVpUGNpMXp4ZXBLTTc5OGxtd3NWRG4yMks3R1RjbFV6Qnp1QWgv?= =?utf-8?B?cTRXcWlic2lsckZXQlFpNEllNjZqZ2N3SFNsMlhTVU9yU0kxUGxmMm9HY2JS?= =?utf-8?B?OW9rYzhCK2F4S3JHekt5Y2RRMzlSNnRJSFpDb0h0SC8yR2NrSmVESlFJdTJ1?= =?utf-8?B?cnFQdjE3TjBUK1RXRTJZVWxqNS85SGYxalVUKzVCYm0ybmh6alpJc3FlOVRF?= =?utf-8?B?V2NNclN0WkRsOUNtbW5ENk1hSERmOW9pUkZVZSszNVU2ZDZOanlPWGF5UmdB?= =?utf-8?B?MGk5U1BsbnNXOHdaZ2NJR0tza3NBYjd4VzlyZFBxMXJ3VjVQblpRUjJSNWNr?= =?utf-8?B?WE45MTF0SmEvNmNpVVZmWWU0QnFZbEo1cmhyRmh6dTcvUndtT1RCeitFalU5?= =?utf-8?B?bUVycnNtYmNuUFhNVFQ3YWUrc3dYc2Mvc3dYbURUeE1SUm9POXMwMkdOdHNx?= =?utf-8?B?QkJJTXJDZHlOaHVmTHJ1QUNnVno4T1BCSWF5cS9VN2hKMUlSUzFkYWtPemxD?= =?utf-8?B?TFh2anU4bENnaGtQa0gwbVd4YitlQXNKSVAyaXFQUzRQOFR4aXZURlByYnpH?= =?utf-8?B?S3N2cDloQVdsYlMrNTFiVXJEczBJNUxLNllvVlNJNitNTUJkeHZSdi9FdEIy?= =?utf-8?B?RytCbFhvM21ZclZ3dmY1cHpNK0RMMHZPRW0wQTE5Rk5nTDg2NFU2TVQrZlVQ?= =?utf-8?B?Mk5EeHJIMXo4MXBvNDBTNEF2WUUwTDlmNmVtN0NxanExUXdDMjhuQ0NJMXpB?= =?utf-8?B?NWV6UUJVTjdJQ0k4MmVXY1dVWHB2Y3lCMW10OFNIV1pEYW9WWmVKQTNtdXFR?= =?utf-8?B?MmNCWThIVjVxeGNoZFVLc3UrQis0aWpkcVFyNU9WL2ZTMTdRbHpwWnBiSVJ0?= =?utf-8?B?SGlHb280MGZyM2xzbXpzaWNPVHk0ditNUlNydHBVWmt5bTM3dEhNc3lIdWh5?= =?utf-8?B?cjBTS2QrZTcwSnJBaFVUc3hWeDlVa3RIdU1pZVpmMXBrQTE5ZS9TUm5LQUFz?= =?utf-8?B?bzZoT0prbUJuNUpWQUFmY1RobXhXRVlVa3FpOUVLRDNSRE9nVGhjYUZBVHFJ?= =?utf-8?B?TE5JeTlKSnF5RFA4c0VEeXE0b2J3WTgrV1VoUGNDNlQrVUtwQzlpeGp2Tk9t?= =?utf-8?B?QStmdHBNZElIalN6eExObEV0SE5LT1lyUGFoZHVoaUJpSTI0N045SHdGbHZv?= =?utf-8?B?QUZTQTJTeFh4K01UcEx0cVFGVDVBMk9vcUtYUkJ1U2lwUzRxVUJCMXFpSkd5?= =?utf-8?B?MktESzZBdmFxd2FqSm5kL09GY29jbHNHV2VxUVJTdW5DcUJpMEI3emFhWTZ3?= =?utf-8?B?SHhsd1VocTZKOUkrUFNKam1RdHNhdCttOVc1RS9QNWY1dXk2N0xKVVZZcDU2?= =?utf-8?B?aXpoYzVwUmU4VVM0SlVpU0l0bDhSL1VPMGlVaGVxYyt3bS8veGRUT0FoMFlW?= =?utf-8?B?cUcxbTU0T2o0ckhUTHJ6YnFOZ2Fyb1dBSFJsaDFWSzZVelRpNmRvQm1PQklH?= =?utf-8?B?SUZhblVaZCt2OU1TSGZnOGZCc0s4UUpINFlKWVcvckV5OHdhV1pKK0lueDR5?= =?utf-8?B?Zyt3Q0lJNjM1QUFLUnAvOUhJdTZxQVA1Rk1vSk5XZGpHblFZQ0hmT2xnY002?= =?utf-8?B?TS8ramw0UW4zOHdJanllVDkxbXRDR24rL29RRlFjRkhtcnNhL1Y2bWdGcXJa?= =?utf-8?Q?FRlUK2g0CPdUK6SrLzq3XO+bibG0oo=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5573.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?Y1JRdSs2QXNhcVQvUjdzWjRoMzFWMmw4VEt3QjR0dWlhN0Q1QWMzeHM3eGtO?= =?utf-8?B?Zm43bWh4eENzWVJWN2ZGVEhnMmFVK1lDSVVORHFSK3l2eDY0THJGdDBpejNJ?= =?utf-8?B?aDhYcnlxYjRvS2xDLzA4TXp0dlN1WDFtTEtGWmRnTW04aWYwVlhkY3ExSEFn?= =?utf-8?B?U0p6TEQ0RVpiRnJEZ3k0Rkc3VXFxeDJ6THpNTmlHbVJPUTVMQjhoUzRtRjQ2?= =?utf-8?B?clNQOXFGZGdUVU5ld3Bwb2J0N0M0ZWNha3YrMGEwWEgvT3g1SWZ4Z1U5NDJq?= =?utf-8?B?cjdPOFRWeFp2Sk1BK3k3MVc5cHpjTmtTdjNJNFlyaSs2NlViK0F0SkpiWlNG?= =?utf-8?B?d0RqaVhPTWRDMjFWVTUvYnpUNjBMVWYwMURDdmRjS2lGL3JtRU9Od2o0QmMz?= =?utf-8?B?MzM4d21iSmtFVUJXZ1U2VTYraTRjdzkxbU5URlJIWGdVMVhEdnovT0VOdDBI?= =?utf-8?B?d0NacEMyeU95YmFQVHNPTjJsQi9WL2pUZWs1bXBIQlI3cnBqMExuUzhZMkg2?= =?utf-8?B?MTZrNHY0MmZ0aVc0cFhTQzZKY0pVc2szV05YdnFCS2xWY1g4eWhvbjZwZGox?= =?utf-8?B?anBMVG5ZdjFzSGdoaFRLWExDeExPOGlzZVhvWklBUVJwVXFURHZIR3ZjVDNu?= =?utf-8?B?R1NxNDJVVjRBdU9FMTRlQmdBQXV5aWVDSHJHK3JzTHdnWU9QZEkzelBCbjlQ?= =?utf-8?B?UC9YUFBza0RtSktYS2I3cklvL0dmWUMzNVQ3TWhsaWJoc01nWG9KMlBaamRk?= =?utf-8?B?MVdkZWFOcHdTNG8wR1dwZ3RNSDBrSjBzMjJTUzlUcGlxKzN0MWYydkpWd3Vu?= =?utf-8?B?amJXbStXNG1iMlVrYUtPeURyeFczUWJRVGI1aVJJUzlnamVWR0V6eEVYWEp1?= =?utf-8?B?RFdrM0pXTWtuU2hpSmpaSmV4RmQvbjdsSWgremh2VTZDblo0bDZUNUY1Q04x?= =?utf-8?B?Y3RNeUNRWHg2Tno2dzM4WmdSRmM0OGlJL0lXd2VaMFJHZzdRR05rTUxnS2Ro?= =?utf-8?B?ZVBFVExYbkt4VHNma0MzNm9pRmp6MmpmSnJlaHpGWHk1SzVXR0NsZEhZTWVx?= =?utf-8?B?OUpGOWM3Y3VabWROYWpDVm82Z0lYQW4yUVhlT2gzcm5wL3hPNU5oLzdWV0dC?= =?utf-8?B?UkZuOWxvcDl1cCs0bld1N3kyRENwT2tmcUVRQ2J2dEtGZDh2RHR1THJMVk05?= =?utf-8?B?bjZlMzZmVEJlRUZqU3hDeFoyMmNBZjY5aWxoUmlBLzIxdWFmZnZaczhpZkEx?= =?utf-8?B?RTZ2NGZqdWY4bWd3RXFyNXJSa2FrOTZsenlSOTg5a2NBQjc5UlVrWGNUMzFy?= =?utf-8?B?ZkluUk1FbGFUYWlsV01jQ2ZRTmVPTkNJOVZXRCtJU1JENHNUaFhTSVN1SzJa?= =?utf-8?B?K1gxZ2dNWnVrbC9IZ09rU0x3ZjkrV0ZvbzVObUYwZ25hL0JkSTc0VGkzdGFs?= =?utf-8?B?TjE2d0hvelZwR3NXai90MmtaSER0QVJxZmtZbmt2V1pUeGFxU2hwOVdBejZC?= =?utf-8?B?VTM2VXV5dktZMnZ6MTUyalFxdjB6Tm4xdXlIWlMzdERvcTNKamxtcEF0VDl5?= =?utf-8?B?QTZhSzMwSE0veG5VazY2clhDakxSVlVFYVE1OWxPK0JnbmNaVWNDQjV2QS9U?= =?utf-8?B?Y2ZrWHFteXlaSU9vYmZGU0hNc25zRHhYYUREMEZGRG1LNHFvc0taOU1pbDMy?= =?utf-8?B?WVFhN2o2ZmduRDR1aGFETitjMFVmOEN2S2VOV2cwc0hUTEwxRHdobmFGaVI1?= =?utf-8?B?TmdKaVFHdjRydXpyVlRyRzJYbXJTYVNqNGxOYXU0azRnVVFrSlJFVVMxSnVJ?= =?utf-8?B?STN2eWpRYmN6RmhyVGpwblRPYWJ3Z013b2dCQkp5NHU3V0ExWSsxSEFLWE9S?= =?utf-8?B?NllUT25sV3dydFgxVHNkcmtJa2U2STVQTjVZYXR2TjkwMGc1YmhXTHl4K3Zy?= =?utf-8?B?azlDNlRsdWdvQXZWQ1BIVEJQMmhRRXByRjd6Y0VOMkxHcDBtZk9kNWJTRmJZ?= =?utf-8?B?WERPV05zblNxM3lKUzVoYisxeTRZeVFlRk9WcjhhYzhJWWhwVFFaTEVXczJn?= =?utf-8?B?YUZPWFBSYU5ZSGpnaWt2QUxmSjA5czBOdGdqbE5wLy8yUE1lVFVReDhtY3dV?= =?utf-8?B?dTVpKy95eWZ2cXFkMG1oSkFrQWU1WG9LK29RdGRaalF0SVp2S3pqMGl4RXRm?= =?utf-8?B?dEE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5573.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ce2d07a-8dfd-41a6-6bd7-08ddd53d23de X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Aug 2025 23:01:12.7933 (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: fe79DZbdI3y1INY4XzGnZQAjJjMDQkQKAG7LAQDUxXzWFJW4TlQu0sDEc5JFKIPtLs/TtaxHyc9gH636+KPJ0fDN2y7B5rrec73WhXxxnHM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6480 X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" RmV3IGJhc2ljIGNvbW1lbnRzIGJlbG93IHRvIHN0YXJ0LiBJIHBlcnNvbmFsbHkgd291bGQgcmF0 aGVyIHRoaXMgYmUNCmJyb3VnaHQgb3ZlciBmcm9tIHRoZSBleGlzdGluZyBmYXVsdCBoYW5kbGVy IHJhdGhlciB0aGFuIGNyZWF0aW5nDQpzb21ldGhpbmcgZW50aXJlbHkgbmV3IGFuZCB0aGVuIGNs b2JiZXJpbmcgdGhlIG9sZGVyIHN0dWZmIC0ganVzdCBzbw0KdGhlIHJldmlldyBvZiBtZXNzYWdl IGZvcm1hdCByZXF1ZXN0cy9yZXBsaWVzIGlzIGVhc2llciB0byByZXZpZXcgYW5kDQp3aGVyZSB3 ZSdyZSBkZXZpYXRpbmcgZnJvbSB0aGUgZXhpc3RpbmcgZXh0ZXJuYWwgaW50ZXJmYWNlcw0KKEhX L0ZXL0d1Qy9ldGMpLiBZb3UgYWxyZWFkeSBoYXZlIHRoaXMgaGVyZSB0aG91Z2ggc28gbm90IGEg aHVnZSBkZWFsLg0KSSB0aGluayBtb3N0IG9mIHRoaXMgd2FzIGluIHRoZSBnaWFudCBibG9iIG9m IHBhdGNoZXMgdGhhdCBnb3QgbWVyZ2VkDQp3aXRoIHRoZSBpbml0aWFsIGRyaXZlciwgc28gSSBn dWVzcyB0aGUgY291bnRlciBhcmd1bWVudCBpcyB3ZSBjYW4gaGF2ZQ0KZWFzeSB0byByZWZlcmVu Y2UgaGlzdG9yaWNhbCByZXZpZXdzIG5vdy4NCg0KT24gVHVlLCAyMDI1LTA4LTA1IGF0IDIzOjIy IC0wNzAwLCBNYXR0aGV3IEJyb3N0IHdyb3RlOg0KPiBTdHViIG91dCB0aGUgbmV3IHBhZ2UgZmF1 bHQgbGF5ZXIgYW5kIGFkZCBrZXJuZWwgZG9jdW1lbnRhdGlvbi4gVGhpcw0KPiBpcw0KPiBpbnRl bmRlZCBhcyBhIHJlcGxhY2VtZW50IGZvciB0aGUgR1QgcGFnZSBmYXVsdCBsYXllciwgZW5hYmxp bmcNCj4gbXVsdGlwbGUNCj4gcHJvZHVjZXJzIHRvIGhvb2sgaW50byBhIHNoYXJlZCBwYWdlIGZh dWx0IGNvbnN1bWVyIGludGVyZmFjZS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQnJv c3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPg0KPiAtLS0NCj4gwqBkcml2ZXJzL2dwdS9kcm0v eGUvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArDQo+IMKgZHJpdmVy cy9ncHUvZHJtL3hlL3hlX3BhZ2VmYXVsdC5jwqDCoMKgwqDCoMKgIHzCoCA2MyArKysrKysrKysr KysNCj4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfcGFnZWZhdWx0LmjCoMKgwqDCoMKgwqAgfMKg IDE5ICsrKysNCj4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfcGFnZWZhdWx0X3R5cGVzLmggfCAx MjUNCj4gKysrKysrKysrKysrKysrKysrKysrKysrDQo+IMKgNCBmaWxlcyBjaGFuZ2VkLCAyMDgg aW5zZXJ0aW9ucygrKQ0KPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGUv eGVfcGFnZWZhdWx0LmMNCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hl L3hlX3BhZ2VmYXVsdC5oDQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94 ZS94ZV9wYWdlZmF1bHRfdHlwZXMuaA0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS94ZS9NYWtlZmlsZQ0KPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQ0KPiBpbmRleCA4 ZTBjMzQxMmE3NTcuLjZmYmViYWZlNzljOSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3hlL01ha2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQ0KPiBAQCAt OTMsNiArOTMsNyBAQCB4ZS15ICs9IHhlX2JiLm8gXA0KPiDCoMKgwqDCoMKgwqDCoMKgeGVfbnZt Lm8gXA0KPiDCoMKgwqDCoMKgwqDCoMKgeGVfb2EubyBcDQo+IMKgwqDCoMKgwqDCoMKgwqB4ZV9v YnNlcnZhdGlvbi5vIFwNCj4gK8KgwqDCoMKgwqDCoMKgeGVfcGFnZWZhdWx0Lm8gXA0KPiDCoMKg wqDCoMKgwqDCoMKgeGVfcGF0Lm8gXA0KPiDCoMKgwqDCoMKgwqDCoMKgeGVfcGNpLm8gXA0KPiDC oMKgwqDCoMKgwqDCoMKgeGVfcGNvZGUubyBcDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0veGUveGVfcGFnZWZhdWx0LmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcGFnZWZhdWx0 LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4zY2UwZThk NzRiOWQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcGFn ZWZhdWx0LmMNCj4gQEAgLTAsMCArMSw2MyBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IE1JVA0KPiArLyoNCj4gKyAqIENvcHlyaWdodCDCqSAyMDI1IEludGVsIENvcnBvcmF0aW9u DQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgInhlX3BhZ2VmYXVsdC5oIg0KPiArI2luY2x1ZGUg InhlX3BhZ2VmYXVsdF90eXBlcy5oIg0KPiArDQo+ICsvKioNCj4gKyAqIERPQzogWGUgcGFnZSBm YXVsdHMNCj4gKyAqDQo+ICsgKiBYZSBwYWdlIGZhdWx0cyBhcmUgaGFuZGxlZCBpbiB0d28gbGF5 ZXJzLiBUaGUgcHJvZHVjZXIgbGF5ZXINCj4gaW50ZXJhY3RzIHdpdGgNCj4gKyAqIGhhcmR3YXJl IG9yIGZpcm13YXJlIHRvIHJlY2VpdmUgYW5kIHBhcnNlIGZhdWx0cyBpbnRvIHN0cnVjdA0KPiB4 ZV9wYWdlZmF1bHQsDQo+ICsgKiB0aGVuIGZvcndhcmRzIHRoZW0gdG8gdGhlIGNvbnN1bWVyLiBU aGUgY29uc3VtZXIgbGF5ZXIgc2VydmljZXMNCj4gdGhlIGZhdWx0cw0KPiArICogKGUuZy4sIG1l bW9yeSBtaWdyYXRpb24sIHBhZ2UgdGFibGUgdXBkYXRlcykgYW5kIGFja25vd2xlZGdlcyB0aGUN Cj4gcmVzdWx0IGJhY2sNCj4gKyAqIHRvIHRoZSBwcm9kdWNlciwgd2hpY2ggdGhlbiBmb3J3YXJk cyB0aGUgcmVzdWx0cyB0byB0aGUgaGFyZHdhcmUNCj4gb3IgZmlybXdhcmUuDQo+ICsgKiBUaGUg Y29uc3VtZXIgdXNlcyBhIHBhZ2UgZmF1bHQgcXVldWUgc2l6ZWQgdG8gYWJzb3JiIGFsbA0KPiBw b3RlbnRpYWwgZmF1bHRzIGFuZA0KPiArICogYSBtdWx0aS10aHJlYWRlZCB3b3JrZXIgdG8gcHJv Y2VzcyB0aGVtLiBNdWx0aXBsZSBwcm9kdWNlcnMgYXJlDQo+IHN1cHBvcnRlZCwNCj4gKyAqIHdp dGggYSBzaW5nbGUgc2hhcmVkIGNvbnN1bWVyLg0KPiArICovDQo+ICsNCj4gKy8qKg0KPiArICog eGVfcGFnZWZhdWx0X2luaXQoKSAtIFBhZ2UgZmF1bHQgaW5pdA0KPiArICogQHhlOiB4ZSBkZXZp Y2UgaW5zdGFuY2UNCj4gKyAqDQo+ICsgKiBJbml0aWFsaXplIFhlIHBhZ2UgZmF1bHQgc3RhdGUu IE11c3QgYmUgZG9uZSBhZnRlciByZWFkaW5nIGZ1c2VzLg0KPiArICoNCj4gKyAqIFJldHVybjog MCBvbiBTdWNjZXNzLCBlcnJubyBvbiBmYWlsdXJlDQo+ICsgKi8NCj4gK2ludCB4ZV9wYWdlZmF1 bHRfaW5pdChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkNCj4gK3sNCj4gK8KgwqDCoMKgwqDCoMKgLyog VE9ETyAtIGltcGxlbWVudCAqLw0KPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsNCj4gK30NCj4g Kw0KPiArLyoqDQo+ICsgKiB4ZV9wYWdlZmF1bHRfcmVzZXQoKSAtIFBhZ2UgZmF1bHQgcmVzZXQg Zm9yIGEgR1QNCj4gKyAqIEB4ZTogeGUgZGV2aWNlIGluc3RhbmNlDQo+ICsgKiBAZ3Q6IEdUIGJl aW5nIHJlc2V0DQo+ICsgKg0KPiArICogUmVzZXQgdGhlIFhlIHBhZ2UgZmF1bHQgc3RhdGUgZm9y IGEgR1Q7IHRoYXQgaXMsIHNxdWFzaCBhbnkNCj4gcGVuZGluZyBmYXVsdHMgb24NCj4gKyAqIHRo ZSBHVC4NCj4gKyAqLw0KPiArdm9pZCB4ZV9wYWdlZmF1bHRfcmVzZXQoc3RydWN0IHhlX2Rldmlj ZSAqeGUsIHN0cnVjdCB4ZV9ndCAqZ3QpDQo+ICt7DQo+ICvCoMKgwqDCoMKgwqDCoC8qIFRPRE8g LSBpbXBsZW1lbnQgKi8NCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgKiB4ZV9wYWdlZmF1bHRfaGFu ZGxlcigpIC0gUGFnZSBmYXVsdCBoYW5kbGVyDQo+ICsgKiBAeGU6IHhlIGRldmljZSBpbnN0YW5j ZQ0KPiArICogQHBmOiBQYWdlIGZhdWx0DQo+ICsgKg0KPiArICogU2luayB0aGUgcGFnZSBmYXVs dCB0byBhIHF1ZXVlIChpLmUuLCBhIG1lbW9yeSBidWZmZXIpIGFuZCBxdWV1ZQ0KPiBhIHdvcmtl ciB0bw0KPiArICogc2VydmljZSBpdC4gU2FmZSB0byBiZSBjYWxsZWQgZnJvbSBJUlEgb3IgcHJv Y2VzcyBjb250ZXh0Lg0KPiBSZWNsYWltIHNhZmUuDQo+ICsgKg0KPiArICogUmV0dXJuOiAwIG9u IHN1Y2Nlc3MsIGVycm5vIG9uIGZhaWx1cmUNCj4gKyAqLw0KPiAraW50IHhlX3BhZ2VmYXVsdF9o YW5kbGVyKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCBzdHJ1Y3QgeGVfcGFnZWZhdWx0DQo+ICpwZikN Cj4gK3sNCj4gK8KgwqDCoMKgwqDCoMKgLyogVE9ETyAtIGltcGxlbWVudCAqLw0KPiArwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94 ZS94ZV9wYWdlZmF1bHQuaA0KPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9wYWdlZmF1bHQuaA0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmJkMGNkZjllZDM3 Zg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9wYWdlZmF1 bHQuaA0KPiBAQCAtMCwwICsxLDE5IEBADQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog TUlUICovDQo+ICsvKg0KPiArICogQ29weXJpZ2h0IMKpIDIwMjUgSW50ZWwgQ29ycG9yYXRpb24N Cj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9YRV9QQUdFRkFVTFRfSF8NCj4gKyNkZWZpbmUgX1hF X1BBR0VGQVVMVF9IXw0KPiArDQo+ICtzdHJ1Y3QgeGVfZGV2aWNlOw0KPiArc3RydWN0IHhlX2d0 Ow0KPiArc3RydWN0IHhlX3BhZ2VmYXVsdDsNCj4gKw0KPiAraW50IHhlX3BhZ2VmYXVsdF9pbml0 KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTsNCj4gKw0KPiArdm9pZCB4ZV9wYWdlZmF1bHRfcmVzZXQo c3RydWN0IHhlX2RldmljZSAqeGUsIHN0cnVjdCB4ZV9ndCAqZ3QpOw0KPiArDQo+ICtpbnQgeGVf cGFnZWZhdWx0X2hhbmRsZXIoc3RydWN0IHhlX2RldmljZSAqeGUsIHN0cnVjdCB4ZV9wYWdlZmF1 bHQNCj4gKnBmKTsNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0veGUveGVfcGFnZWZhdWx0X3R5cGVzLmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfcGFn ZWZhdWx0X3R5cGVzLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MDAwLi5mY2ZmODRmOTNkZDgNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0veGUveGVfcGFnZWZhdWx0X3R5cGVzLmgNCj4gQEAgLTAsMCArMSwxMjUgQEANCj4gKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8NCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgwqkg MjAyNSBJbnRlbCBDb3Jwb3JhdGlvbg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgX1hFX1BBR0VG QVVMVF9UWVBFU19IXw0KPiArI2RlZmluZSBfWEVfUEFHRUZBVUxUX1RZUEVTX0hfDQo+ICsNCj4g KyNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4NCj4gKw0KPiArc3RydWN0IHhlX3BhZ2VmYXVs dDsNCj4gK3N0cnVjdCB4ZV9ndDsNCg0KTml0OiBNYXliZSByZXZlcnNlIHRoZXNlIHN0cnVjdHMg dG8gYmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyDQoNCj4gKw0KPiArLyoqIGVudW0geGVfcGFnZWZh dWx0X2FjY2Vzc190eXBlIC0gWGUgcGFnZSBmYXVsdCBhY2Nlc3MgdHlwZSAqLw0KPiArZW51bSB4 ZV9wYWdlZmF1bHRfYWNjZXNzX3R5cGUgew0KPiArwqDCoMKgwqDCoMKgwqAvKiogQFhFX1BBR0VG QVVMVF9BQ0NFU1NfVFlQRV9SRUFEOiBSZWFkIGFjY2VzcyB0eXBlICovDQo+ICvCoMKgwqDCoMKg wqDCoFhFX1BBR0VGQVVMVF9BQ0NFU1NfVFlQRV9SRUFEwqDCoMKgPSAwLA0KPiArwqDCoMKgwqDC oMKgwqAvKiogQFhFX1BBR0VGQVVMVF9BQ0NFU1NfVFlQRV9XUklURTogV3JpdGUgYWNjZXNzIHR5 cGUgKi8NCj4gK8KgwqDCoMKgwqDCoMKgWEVfUEFHRUZBVUxUX0FDQ0VTU19UWVBFX1dSSVRFwqDC oD0gMSwNCj4gK8KgwqDCoMKgwqDCoMKgLyoqIEBYRV9QQUdFRkFVTFRfQUNDRVNTX1RZUEVfQVRP TUlDOiBBdG9taWMgYWNjZXNzIHR5cGUgKi8NCj4gK8KgwqDCoMKgwqDCoMKgWEVfUEFHRUZBVUxU X0FDQ0VTU19UWVBFX0FUT01JQ8KgPSAyLA0KPiArfTsNCj4gKw0KPiArLyoqIGVudW0geGVfcGFn ZWZhdWx0X3R5cGUgLSBYZSBwYWdlIGZhdWx0IHR5cGUgKi8NCj4gK2VudW0geGVfcGFnZWZhdWx0 X3R5cGUgew0KPiArwqDCoMKgwqDCoMKgwqAvKiogQFhFX1BBR0VGQVVMVF9UWVBFX05PVF9QUkVT RU5UOiBOb3QgcHJlc2VudCAqLw0KPiArwqDCoMKgwqDCoMKgwqBYRV9QQUdFRkFVTFRfVFlQRV9O T1RfUFJFU0VOVMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IDAsDQo+ICvCoMKgwqDCoMKgwqDCoC8q KiBAWEVfUEFHRUZBVUxUX1RZUEVfV1JJVEVfQUNDRVNTX1ZJT0xBVElPTjogV3JpdGUgYWNjZXNz DQo+IHZpb2xhdGlvbiAqLw0KPiArwqDCoMKgwqDCoMKgwqBYRV9QQUdFRkFVTFRfV1JJVEVfQUND RVNTX1ZJT0xBVElPTsKgwqDCoMKgwqA9IDEsDQo+ICvCoMKgwqDCoMKgwqDCoC8qKiBAWEVfUEFH RUZBVUxUX1RZUEVfV1JJVEVfQUNDRVNTX1ZJT0xBVElPTjogQXRvbWljIGFjY2Vzcw0KPiB2aW9s YXRpb24gKi8NCg0KWEVfUEFHRUZBVUxUX1RZUEVfV1JJVEVfQUNDRVNTX1ZJT0xBVElPTiAtPg0K WEVfUEFHRUZBVUxUX0FDQ0VTU19UWVBFX0FUT01JQw0KDQo+ICvCoMKgwqDCoMKgwqDCoFhFX1BB R0VGQVVMVF9BVE9NSUNfQUNDRVNTX1ZJT0xBVElPTsKgwqDCoMKgPSAyLA0KPiArfTsNCj4gKw0K PiArLyoqIHN0cnVjdCB4ZV9wYWdlZmF1bHRfb3BzIC0gWGUgcGFnZWZhdWx0IG9wcyAocHJvZHVj ZXIpICovDQo+ICtzdHJ1Y3QgeGVfcGFnZWZhdWx0X29wcyB7DQo+ICvCoMKgwqDCoMKgwqDCoC8q Kg0KPiArwqDCoMKgwqDCoMKgwqAgKiBAYWNrX2ZhdWx0OiBBY2sgZmF1bHQNCj4gK8KgwqDCoMKg wqDCoMKgICogQHBmOiBQYWdlIGZhdWx0DQo+ICvCoMKgwqDCoMKgwqDCoCAqIEBlcnI6IEVycm9y IHN0YXRlIG9mIGZhdWx0DQo+ICvCoMKgwqDCoMKgwqDCoCAqDQo+ICvCoMKgwqDCoMKgwqDCoCAq IFBhZ2UgZmF1bHQgcHJvZHVjZXIgcmVjZWl2ZXMgYWNrbm93bGVkZ21lbnQgZnJvbSB0aGUNCj4g Y29uc3VtZXIgYW5kDQo+ICvCoMKgwqDCoMKgwqDCoCAqIHNlbmRzIHRoZSByZXN1bHQgdG8gdGhl IEhXL0ZXIGludGVyZmFjZS4NCj4gK8KgwqDCoMKgwqDCoMKgICovDQo+ICvCoMKgwqDCoMKgwqDC oHZvaWQgKCphY2tfZmF1bHQpKHN0cnVjdCB4ZV9wYWdlZmF1bHQgKnBmLCBpbnQgZXJyKTsNCj4g K307DQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IHhlX3BhZ2VmYXVsdCAtIFhlIHBhZ2UgZmF1 bHQNCj4gKyAqDQo+ICsgKiBHZW5lcmljIHBhZ2UgZmF1bHQgc3RydWN0dXJlIGZvciBjb21tdW5p Y2F0aW9uIGJldHdlZW4gcHJvZHVjZXINCj4gYW5kIGNvbnN1bWVyLg0KPiArICogQ2FyZWZ1bGx5 IHNpemVkIHRvIGJlIDY0IGJ5dGVzLg0KPiArICovDQo+ICtzdHJ1Y3QgeGVfcGFnZWZhdWx0IHsN Cj4gK8KgwqDCoMKgwqDCoMKgLyoqDQo+ICvCoMKgwqDCoMKgwqDCoCAqIEBndDogR1Qgb2YgZmF1 bHQNCj4gK8KgwqDCoMKgwqDCoMKgICoNCj4gK8KgwqDCoMKgwqDCoMKgICogWFhYOiBXZSBtYXkg d2FudCB0byBkZWNvdXBsZSB0aGUgR1QgZnJvbSBpbmRpdmlkdWFsDQo+IGZhdWx0cywgYXMgaXQn cw0KPiArwqDCoMKgwqDCoMKgwqAgKiB1bmNsZWFyIHdoZXRoZXIgZnV0dXJlIHBsYXRmb3JtcyB3 aWxsIGFsd2F5cyBoYXZlIGEgR1QgZm9yDQo+IGFsbCBwYWdlDQo+ICvCoMKgwqDCoMKgwqDCoCAq IGZhdWx0IHByb2R1Y2Vycy4gSW50ZXJuYWxseSwgdGhlIEdUIGlzIHVzZWQgZm9yIHN0YXRzLA0K PiBpZGVudGlmeWluZw0KPiArwqDCoMKgwqDCoMKgwqAgKiB0aGUgYXBwcm9wcmlhdGUgVlJBTSBy ZWdpb24sIGFuZCBsb2NhdGluZyB0aGUgbWlncmF0aW9uDQo+IHF1ZXVlLg0KPiArwqDCoMKgwqDC oMKgwqAgKiBMZWF2aW5nIHRoaXMgYXMtaXMgZm9yIG5vdywgYnV0IHdlIGNhbiByZXZpc2l0IGxh dGVyIHRvDQo+IHNlZSBpZiB3ZQ0KPiArwqDCoMKgwqDCoMKgwqAgKiBjYW4gY29udmVydCBpdCB0 byB1c2UgdGhlIFhlIGRldmljZSBwb2ludGVyIGluc3RlYWQuDQo+ICvCoMKgwqDCoMKgwqDCoCAq Lw0KDQpXaGF0IGlmIGluc3RlYWQgb2YgYXNzdW1pbmcgdGhlIEdUIHN0YXlzIHN0YXRpYyBhbmQg d2UgZXZlbnR1YWxseQ0KcmVtb3ZlIGlmIHdlIGhhdmUgc29tZSBuZXcgSFcgYWJzdHJhY3Rpb24g bGF5ZXIgdGhhdCBpc24ndCBhIEdUIGJ1dA0Kc3RpbGwgdXNlcyB0aGUgcGFnZSBmYXVsdCwgd2Ug aW5zdGVhZCBwdXNoIHRvIGhhdmUgc2FpZCB0aGVvcmV0aWNhbA0KYWJzdHJhY3Rpb24gbGF5ZXIg b3ZlcmxvYWQgdGhlIEdUIGhlcmUgbGlrZSB3ZSdyZSBkb2luZyB3aXRoIHByaW1hcnkNCmFuZCBt ZWRpYSB0b2RheS4gVGhlbiB3ZSBjYW4ga2VlcCB0aGUgaW50ZXJmYWNlIGhlcmUgc2ltcGxlIGFu ZCBqdXN0DQpsZWF2ZSB0aGlzIGluIHRoZXJlLCBvciBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSBpZiB0 aGF0IGRvZXNuJ3QgbWFrZSBzZW5zZQ0Kd2l0aG91dCB0aGUgc3VnZ2VzdGl2ZSBjb21tZW50Pw0K DQo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ndCAqZ3Q7DQo+ICvCoMKgwqDCoMKgwqDCoC8q Kg0KPiArwqDCoMKgwqDCoMKgwqAgKiBAY29uc3VtZXI6IFN0YXRlIGZvciB0aGUgc29mdHdhcmUg aGFuZGxpbmcgdGhlIGZhdWx0Lg0KPiBQb3B1bGF0ZWQgYnkNCj4gK8KgwqDCoMKgwqDCoMKgICog dGhlIHByb2R1Y2VyIGFuZCBtYXkgYmUgbW9kaWZpZWQgYnkgdGhlIGNvbnN1bWVyIHRvDQo+IGNv bW11bmljYXRlDQo+ICvCoMKgwqDCoMKgwqDCoCAqIGluZm9ybWF0aW9uIGJhY2sgdG8gdGhlIHBy b2R1Y2VyIHVwb24gZmF1bHQNCj4gYWNrbm93bGVkZ21lbnQuDQo+ICvCoMKgwqDCoMKgwqDCoCAq Lw0KPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgew0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyoqIEBjb25zdW1lci5wYWdlX2FkZHI6IGFkZHJlc3Mgb2YgcGFnZSBmYXVsdCAqLw0K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTY0IHBhZ2VfYWRkcjsNCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qKiBAY29uc3VtZXIuYXNpZDogYWRkcmVzcyBzcGFj ZSBJRCAqLw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMyIGFzaWQ7DQoNCkNh biB3ZSBqdXN0IGNhbGwgdGhpcyBhbiBJRCBpbnN0ZWFkIG9mIGEgcGFzaWQgb3IgYXNpZD8gSS5l LiB0aGUgSUQNCmNvdWxkIGJlIGFueXRoaW5nLCBub3Qgc3RyaWN0bHkgcHJvY2Vzcy1ib3VuZC4N Cg0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoqIEBjb25zdW1lci5hY2Nlc3Nf dHlwZTogYWNjZXNzIHR5cGUgKi8NCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHU4 IGFjY2Vzc190eXBlOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoqIEBjb25z dW1lci5mYXVsdF90eXBlOiBmYXVsdCB0eXBlICovDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB1OCBmYXVsdF90eXBlOw0KPiArI2RlZmluZSBYRV9QQUdFRkFVTFRfTEVWRUxfTkFD S8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHhmZsKgwqDCoMKgLyogUHJvZHVjZXIN Cj4gaW5kaWNhdGVzIG5hY2sgZmF1bHQgKi8NCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoC8qKiBAY29uc3VtZXIuZmF1bHRfbGV2ZWw6IGZhdWx0IGxldmVsICovDQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1OCBmYXVsdF9sZXZlbDsNCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qKiBAY29uc3VtZXIuZW5naW5lX2NsYXNzOiBlbmdpbmUgY2xhc3Mg Ki8NCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHU4IGVuZ2luZV9jbGFzczsNCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qKiBjb25zdW1lci5yZXNlcnZlZDogcmVz ZXJ2ZWQgYml0cyBmb3IgZnV0dXJlDQo+IGV4cGFuc2lvbiAqLw0KPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdTY0IHJlc2VydmVkOw0KDQpXaGF0IGFib3V0IGVuZ2luZSBpbnN0YW5j ZT8gT3IgaXMgdGhhdCBnb2luZyB0byBvdmVybG9hZCByZXNlcnZlZCBoZXJlPw0KDQpUaGFua3Ms DQpTdHVhcnQNCg0KPiArwqDCoMKgwqDCoMKgwqB9IGNvbnN1bWVyOw0KPiArwqDCoMKgwqDCoMKg wqAvKioNCj4gK8KgwqDCoMKgwqDCoMKgICogQHByb2R1Y2VyOiBTdGF0ZSBmb3IgdGhlIHByb2R1 Y2VyIChpLmUuLCBIVy9GVyBpbnRlcmZhY2UpLg0KPiBQb3B1bGF0ZWQNCj4gK8KgwqDCoMKgwqDC oMKgICogYnkgdGhlIHByb2R1Y2VyIGFuZCBzaG91bGQgbm90IGJlIG1vZGlmaWVk4oCUb3IgZXZl bg0KPiBpbnNwZWN0ZWTigJRieSB0aGUNCj4gK8KgwqDCoMKgwqDCoMKgICogY29uc3VtZXIsIGV4 Y2VwdCBmb3IgY2FsbGluZyBvcGVyYXRpb25zLg0KPiArwqDCoMKgwqDCoMKgwqAgKi8NCj4gK8Kg wqDCoMKgwqDCoMKgc3RydWN0IHsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8q KiBAcHJvZHVjZXIucHJpdmF0ZTogcHJpdmF0ZSBwb2ludGVyICovDQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB2b2lkICpwcml2YXRlOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLyoqIEBwcm9kdWNlci5vcHM6IG9wZXJhdGlvbnMgKi8NCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB4ZV9wYWdlZmF1bHRfb3BzICpvcHM7DQo+ ICsjZGVmaW5lIFhFX1BBR0VGQVVMVF9QUk9EVUNFUl9NU0dfTEVOX0RXwqDCoMKgwqDCoMKgwqA0 DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKioNCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqIHByb2R1Y2VyLm1zZzogcGFnZSBmYXVsdCBtZXNzYWdlLCB1c2Vk IGJ5IHByb2R1Y2VyDQo+IGluIGZhdWx0DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKiBhY2tub3dsZWRnZW1lbnQgdG8gZm9ybXVsYXRlIHJlc3BvbnNlIHRvIEhXL0ZXDQo+IGlu dGVyZmFjZS4NCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMyIG1zZ1tYRV9QQUdFRkFVTFRfUFJPRFVDRVJfTVNH X0xFTl9EV107DQo+ICvCoMKgwqDCoMKgwqDCoH0gcHJvZHVjZXI7DQo+ICt9Ow0KPiArDQo+ICsv Kiogc3RydWN0IHhlX3BhZ2VmYXVsdF9xdWV1ZTogWGUgcGFnZWZhdWx0IHF1ZXVlIChjb25zdW1l cikgKi8NCj4gK3N0cnVjdCB4ZV9wYWdlZmF1bHRfcXVldWUgew0KPiArwqDCoMKgwqDCoMKgwqAv KioNCj4gK8KgwqDCoMKgwqDCoMKgICogQGRhdGE6IERhdGEgaW4gcXVldWUgY29udGFpbmluZyBz dHJ1Y3QgeGVfcGFnZWZhdWx0LA0KPiBwcm90ZWN0ZWQgYnkNCj4gK8KgwqDCoMKgwqDCoMKgICog QGxvY2sNCj4gK8KgwqDCoMKgwqDCoMKgICovDQo+ICvCoMKgwqDCoMKgwqDCoHZvaWQgKmRhdGE7 DQo+ICvCoMKgwqDCoMKgwqDCoC8qKiBAc2l6ZTogU2l6ZSBvZiBxdWV1ZSBpbiBieXRlcyAqLw0K PiArwqDCoMKgwqDCoMKgwqB1MzIgc2l6ZTsNCj4gK8KgwqDCoMKgwqDCoMKgLyoqIEBoZWFkOiBI ZWFkIHBvaW50ZXIgaW4gYnl0ZXMsIG1vdmVkIGJ5IHByb2R1Y2VyLA0KPiBwcm90ZWN0ZWQgYnkg QGxvY2sgKi8NCj4gK8KgwqDCoMKgwqDCoMKgdTMyIGhlYWQ7DQo+ICvCoMKgwqDCoMKgwqDCoC8q KiBAdGFpbDogVGFpbCBwb2ludGVyIGluIGJ5dGVzLCBtb3ZlZCBieSBjb25zdW1lciwNCj4gcHJv dGVjdGVkIGJ5IEBsb2NrICovDQo+ICvCoMKgwqDCoMKgwqDCoHUzMiB0YWlsOw0KPiArwqDCoMKg wqDCoMKgwqAvKiogQGxvY2s6IHByb3RlY3RzIHBhZ2UgZmF1bHQgcXVldWUgKi8NCj4gK8KgwqDC oMKgwqDCoMKgc3BpbmxvY2tfdCBsb2NrOw0KPiArwqDCoMKgwqDCoMKgwqAvKiogQHdvcmtlcjog dG8gcHJvY2VzcyBwYWdlIGZhdWx0cyAqLw0KPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd29ya19z dHJ1Y3Qgd29ya2VyOw0KPiArfTsNCj4gKw0KPiArI2VuZGlmDQoNCg==