From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id C52A0740039 for ; Mon, 31 Jul 2023 16:38:04 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=dbEIQnNdui9+WAe7FZdtm+zZe/PQTWB3mDgjNqoqWy8=; c=relaxed/simple; d=groups.io; h=X-Received:X-Received:X-IronPort-AV:X-IronPort-AV:X-Received:X-ExtLoop1:X-IronPort-AV:X-IronPort-AV:X-Received:X-Received:X-Received:X-Received:ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:X-Received:X-Received:From:To:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:X-MS-Has-Attach:X-MS-TNEF-Correlator:msip_labels:x-ms-publictraffictype:x-ms-traffictypediagnostic:x-ms-office365-filtering-correlation-id:x-ms-exchange-senderadcheck:x-ms-exchange-antispam-relay:x-microsoft-antispam-message-info:x-ms-exchange-antispam-messagedata-chunkcount:x-ms-exchange-antispam-messagedata-0:MIME-Version:X-MS-Exchange-CrossTenant-AuthAs:X-MS-Exchange-CrossTenant-AuthSource:X-MS-Exchange-CrossTenant-Network-Message-Id:X-MS-Exchange-CrossTenant-originalarrivaltime:X-MS-Exchange-CrossTenant-fromentityheader:X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype:X-MS-Exchange-CrossTenant-userprincipalname:X-MS-Exchange-Transport-CrossTena ntHeadersStamped:X-OriginatorOrg:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:X-Gm-Message-State:Content-Language:Content-Type; s=20140610; t=1690821483; v=1; b=nKJtb9cmPyrS4VGsRKIQf2Oog4LGrYt6zqHS3G5UWcn3igVqh1rVxPPsDhOMkUpS37LImd1W yN4We0AuEuRcENaCjbqIcAGdhysxpDVLICJ7Iqe6EzeKApq39C3ZbCbxhIspD2QkhabYY0/PACk BKDThwLmlE8U2n4osTkMGuqk= X-Received: by 127.0.0.2 with SMTP id 2iZpYY7687511xhUiMkaR2t8; Mon, 31 Jul 2023 09:38:03 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web10.115.1690773503767436916 for ; Sun, 30 Jul 2023 20:18:25 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10787"; a="455281524" X-IronPort-AV: E=Sophos;i="6.01,243,1684825200"; d="h'?scan'208";a="455281524" X-Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Jul 2023 20:18:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10787"; a="901959789" X-IronPort-AV: E=Sophos;i="6.01,243,1684825200"; d="h'?scan'208";a="901959789" X-Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga005.jf.intel.com with ESMTP; 30 Jul 2023 20:18:20 -0700 X-Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Sun, 30 Jul 2023 20:18:19 -0700 X-Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Sun, 30 Jul 2023 20:18:19 -0700 X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.109) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Sun, 30 Jul 2023 20:18:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K5Eex5FtvQ6GuytRh0Svo67FEo9W1nutVI7DKIjN3P/V5I6NJ3w7QlmKT+h2n2Qg7d1jh0CzYCkUEjCw4R06HqQVBF9sOFLqW/jwpDVWBwK6iUdXkMY2eTs0rerKnJ6TjD9AGhXMHtw4x/EQ6dQ7C5M/z5HTQ3wlGu8sEhxIdzQTa6g5Z1JkfXJQovnH7b/JeHrzx9RzeC+wuq1KrQAn3hGMPpL1NvpI4BOlZkz3w/xDueeOW3zX2W6PkscMwX1+usaX/85z2GBhXGBfy+wgybmspJ1/QkrzsdQyjf4q7JBI4oNdwvouf+M2JGSHs15OP1cbkoBg15prSXv/vay4aA== 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=hjGqbqIWuz+sKNEF8OILLbrXghtQXbe9iICvsxgIGI4=; b=XOMJj/t1rVRP1YeD0wWsdVwlLY+dX4KwJHB1f6hzqKNOS6uilyQnhyxKgTrdybByDy6XwoDZ4tCgwJZEIRj2/EPeH62CtrrxddSgO47hvqzXgE64Oc7wYKv+fV467xOhxkYwAvUJdin4ZMqEMe/GLmuGjTfSSM7D4yoKkrJju0lQvfAfGrNBs/s+nNzzZ5ftA1jh/bRR04Wk2hjP93yVCeRGPOshGMTqX6a2En3Huib3b5eWbFue4bLYmizJo1rFtbtWYSTGTiI9/nqVi7LFHkxGRVHMfTZTGFFm+yoRSmYmDP7o5H7VRimV43zsQij4TAH2361/MlP15a/d9BBc/A== 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 X-Received: from DS7PR11MB6199.namprd11.prod.outlook.com (2603:10b6:8:99::9) by SJ0PR11MB5101.namprd11.prod.outlook.com (2603:10b6:a03:2dc::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.29; Mon, 31 Jul 2023 03:18:15 +0000 X-Received: from DS7PR11MB6199.namprd11.prod.outlook.com ([fe80::81d6:6983:31d0:91f1]) by DS7PR11MB6199.namprd11.prod.outlook.com ([fe80::81d6:6983:31d0:91f1%3]) with mapi id 15.20.6631.043; Mon, 31 Jul 2023 03:18:14 +0000 From: "Nong, Foster" To: "Ni, Ray" , "devel@edk2.groups.io" , "chrisli@os.amperecomputing.com" , "Yao, Jiewen" Subject: Re: [edk2-devel] [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStandard Thread-Topic: [edk2-devel] [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStandard Thread-Index: AQHZqYEldzIsQb3uyUmUZ9Ix3q8qaa+heGDwgAFmbtqAAACO4IAcGTvwgBRos+A= Date: Mon, 31 Jul 2023 03:18:14 +0000 Message-ID: References: In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Enabled=True;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SiteId=3bc2b170-fd94-476d-b0ce-4229bdc904a7;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SetDate=2023-06-30T06:06:58.043Z;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Name=Confidential;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_ContentBits=0;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Method=Standard; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR11MB6199:EE_|SJ0PR11MB5101:EE_ x-ms-office365-filtering-correlation-id: 85fb180c-f5d6-4132-2347-08db9174c717 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: NMk7c8Rc5hQTGnjxbLn7LxlCnMMT6nUUoqOyebSSymUgNJKBTw/vgdjz/DUn42alAgPIszJLwKRmaSv/7m2HwVXlvK8vGH41lobNlVD71OzH2zoPF1UtcfH4fVR+EuVBFNPcpnjbOvI3yn5ZTg003gw5+9aieoOCC40srHhFte1C2GzbbRFc3nlrmPknOMwIO4ejU6G8s2JZDKcLzdQG4ewfz9guh/cn4wT/VJ1GKR7H85zjy5oV1rRTd8pqTMYxVdnrW/3Z/adLIWGG2CRyF0UdPJG5jnlSNcQ8udk9Jp4hUrLZjcKtQ01WAG+6T5SiEr/F7jZORgVL9ryZN70VP43Z4hq3ELhnsxQ02HE1kBnWe7KI8TxDjBCbIs1yDTkehCPOA6w/B8VTx0MLxwWGm9+ozPaD5bnhomMQYSuJGDcj7QC1xlzDOGZYPaVovlSqai8xjqW9O1uSzgVfS0XkfWharrh0xlrGSmA5XQ8dHrZ3gpl3frLtXMmW7scVupnjfqHj/00PFzTRTzFzYB5b2+Qed/Arl4yIjXM/3mBwz8gT3J7TXEj8m2Cls7bnQHTD/lO48WuvWe2q4wK2aMeE4g== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?h/oZyvSYolh0pNwMjwI8dIZLJ1ywXMPvlGbNi9u2Z+dIYjhnDtMAPLr6UxWZ?= =?us-ascii?Q?Q7ulhdXppMsuO03OoyXxGup1V7wG238caa84IaD7/io8fKPThCSQCJPs9JUy?= =?us-ascii?Q?hq1irO1ZYBk5WFycL5+FPDoBlMjzPoz62Cdy/QUIj/OLO6fZWIiiZJcBRfm/?= =?us-ascii?Q?P3Or92BwNu0p3sqi5lSSnx622KlW4pSgrSxU39DfXeL+mJgHxnW5vrSCGrXT?= =?us-ascii?Q?0tXZNUDniFJpsP9n+2EP9uH8wkIScQ7bXRfQLvGnpz4+OTtViAtm4NkpIAo6?= =?us-ascii?Q?Ve8Jpke2yKTaugeK2jkdGle1p0fuJ0Y1zIRIzX7Rx6C+9sFTk729YBE0t8eJ?= =?us-ascii?Q?8QYaAFrftWchQs4sSM6njlK4Xd/iWyW0+PVFFWIZ0/06nHSadn31cU6JO2Sg?= =?us-ascii?Q?wCi8cbgw1llNaibR2NMuTLy5Ed02d/UCFKg5X6+RBHDVjF7hx3tsqq/Zm64W?= =?us-ascii?Q?HlIz/oeAuheVMKrIAxVqvI5lcYzLBapj8nGu3SixDYCv3vrv23jsZsvG9iCo?= =?us-ascii?Q?12h+dF+ogUJtRHv7UgpGoSbSJOFBGXiudAN1hGzbwFzRFHo9Y8CNwDY937M2?= =?us-ascii?Q?ZdFIwMJvdte5xczsKffBFoD5wM++UJraaPR/6TuVK9wMBII1LAePKKTQ1WPt?= =?us-ascii?Q?/JDZrRyTgrUbh30uHdEFDkMF6eAuaV2zZOyvGhvVTe7qup6wPYIAKtFL0Qun?= =?us-ascii?Q?+4VNtuMNOG1KMzy9ZPmtKxIBrOGDrCN/mwyqwca0j3wDR4TtaRYGjT0oPKgk?= =?us-ascii?Q?OiAlFSZplPLu6mdVaQ6utLeSRDGDWWvE1C9KGsiZx+Xq9O3xW515TnBj3/hv?= =?us-ascii?Q?wwLv6C0TKEIKDg/mZ2ichO1Q9f00qNnymKrSMNdSTaTgYgFtkAjZzylwiMdt?= =?us-ascii?Q?OrHizEgYYtDQ2Ih2RI9zD7qMan8O/9anxEaZTyk8MsraPo6aV0dlJ3Ga67WG?= =?us-ascii?Q?av91uvvR252jmrhU5OrBK2p5XA0R5vy/X6/BkZZn9Exze0m17qha+j1EYlsB?= =?us-ascii?Q?cUscq6DU93MVmUCYUXoUX07s8xAxrfXCfQ3XfHU5iWNZMGBtDYZsFsgQ81an?= =?us-ascii?Q?UEUOS1It6dJTMXc81z6p43lU8y30XwqJUkXu8Dcxfted1Vur/4JRR0GMlQzn?= =?us-ascii?Q?nMccm5E1Bx/l+ENPp7DAlL4vIv2Qascqxc1CgTqqw0fdjVLFqkWa9VTMNXik?= =?us-ascii?Q?Vsw7HMtyMFtnS5pUTsTxN8nmdCHO8Vzp8zAMdc56c00c4wGaor9itmpd0sCC?= =?us-ascii?Q?qiK1scwqy1Lawf6Cnq/RrRWG+/NMRB7gApiFMlzJsrSF9qGxIWd9HkOn+DPn?= =?us-ascii?Q?TTTgyhXitR7avDoEbyGceeWZwcuBVANlHFevkwo61p1+xO8BVHZq0+atb0Ek?= =?us-ascii?Q?LamsLVtOGp+ecgN72hpoXLy9+rTLAIMEN5xh77+czLmHscCDJcifXk7sBTPX?= =?us-ascii?Q?Piw9MxCV7MHd1JIYhdhc6C3le4DWokVoEEN9p7soiFPjFwGvpK9tOgBvp+2C?= =?us-ascii?Q?OXlNahZUmseefOhNDUo2ZXgqplllb4K7SZI6Wn6iX1Dej6Xs7eU//plKSov9?= =?us-ascii?Q?H74RKOOkl8eHIF9SMaymWfSzzxMXDtchpzzBSiF1?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR11MB6199.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85fb180c-f5d6-4132-2347-08db9174c717 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Jul 2023 03:18:14.5337 (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: g81RZJskYvKWr015vaqt22Ogrwrq+wUtP1uUPgjY8xMCJPs82vx4mX0u9CPf3vfn7N2+GRi2HYbodXkT8PSm1g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5101 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,foster.nong@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: C0lOYe3muzHXubcvUoHqBb2ax7686176AA= Content-Language: en-US Content-Type: multipart/mixed; boundary="_002_DS7PR11MB61997D973C1FFC655931FB5CF005ADS7PR11MB6199namp_" X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=nKJtb9cm; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") --_002_DS7PR11MB61997D973C1FFC655931FB5CF005ADS7PR11MB6199namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable hi Chris, I attached the file, which add some comments. Please help review it. One open need you to be taken care of the reserved fields on CXL2.0 registe= r. Consider that CXL3.0 and new one will be compatible with CXL2.0, I remove t= he CXL version on CXL register definition in current CXL20.h. If New register in CXL30 or new one is defined on CXL20 register's reserve= d field, we can update these new register definition in CXL2.0 file.=20 For a whole new registers on CXL30 or new one, we can add new header file = CXL3.0 or new header file for them. -----Original Message----- From: Nong, Foster=20 Sent: Tuesday, July 18, 2023 11:15 AM To: Ni, Ray ; devel@edk2.groups.io; chrisli@os.amperecomp= uting.com; Yao, Jiewen Subject: RE: [edk2-devel] [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStan= dard Thanks Chris, I will take some time to review it. -----Original Message----- From: Ni, Ray Sent: Friday, June 30, 2023 2:08 PM To: devel@edk2.groups.io; chrisli@os.amperecomputing.com; Yao, Jiewen ; Nong, Foster Subject: RE: [edk2-devel] [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStan= dard +@Nong, Foster > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Chris=20 > Li OS via groups.io > Sent: Friday, June 30, 2023 2:07 PM > To: Yao, Jiewen ; devel@edk2.groups.io > Subject: Re: [edk2-devel] [PATCH 1/1] MdePkg: Add Cxl20.h into=20 > IndustryStandard >=20 > Thanks Jiewen, will soon send an v2 for it. >=20 > ________________________________________ > From: Yao, Jiewen > Sent: Thursday, June 29, 2023 4:43 PM > To: Chris Li OS; devel@edk2.groups.io > Cc: Yao, Jiewen > Subject: RE: [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStandard >=20 > Thanks for the update. >=20 > +} HDM_DECODER_N_INFO; >=20 > I think this need add CXL_ prefix. >=20 > Other looks good to me. >=20 > Thank you > Yao, Jiewen >=20 >=20 >=20 > > -----Original Message----- > > From: Chris Li OS > > Sent: Wednesday, June 28, 2023 1:28 PM > > To: devel@edk2.groups.io; Yao, Jiewen > > Subject: [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStandard > > > > 1) Add CXL 2.0 header file to comply with CXL 2.0 specification > > 2) CXL 2.0 header will embed Cxl11.h > > 3) Updated Cxl.h to point to 2.0 header file > > > > Signed-off-by: Chris Li > > --- > > MdePkg/Include/IndustryStandard/Cxl.h | 2 +- > > MdePkg/Include/IndustryStandard/Cxl20.h | 477 > ++++++++++++++++++++++++ > > 2 files changed, 478 insertions(+), 1 deletion(-) create mode > > 100644 MdePkg/Include/IndustryStandard/Cxl20.h > > > > diff --git a/MdePkg/Include/IndustryStandard/Cxl.h > > b/MdePkg/Include/IndustryStandard/Cxl.h > > index 06c1230e3e..9ad3242e25 100644 > > --- a/MdePkg/Include/IndustryStandard/Cxl.h > > +++ b/MdePkg/Include/IndustryStandard/Cxl.h > > @@ -12,7 +12,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent=20 > > #ifndef _CXL_MAIN_H_ #define _CXL_MAIN_H_ > > > > -#include > > +#include > > // > > // CXL assigned new Vendor ID > > // > > diff --git a/MdePkg/Include/IndustryStandard/Cxl20.h > > b/MdePkg/Include/IndustryStandard/Cxl20.h > > new file mode 100644 > > index 0000000000..a08251f4e9 > > --- /dev/null > > +++ b/MdePkg/Include/IndustryStandard/Cxl20.h > > @@ -0,0 +1,477 @@ > > +/** @file > > + CXL 2.0 Register definitions > > + > > + This file contains the register definitions based on the Compute=20 > > + Express Link > > + (CXL) Specification Revision 2.0. > > + > > + Copyright (c) 2023, Ampere Computing LLC. All rights=20 > > + reserved.
> > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > + > > +#ifndef CXL20_H_ > > +#define CXL20_H_ > > + > > +#include > > + > > +// > > +// Ensure proper structure formats > > +// > > +#pragma pack(1) > > + > > + > > +// > > +// CXL DVSEC IDs and Revisions > > +// Compute Express Link Specification Revision 2.0 - Chapter 8.1.1=20 > > +// > > +#define CXL_DVSEC_ID_PCIE_DVSEC_FOR_CXL_DEVICE 0x0 > > +#define CXL_DVSEC_ID_NON_CXL_FUNCTION_MAP 0x2 > > +#define CXL_DVSEC_ID_CXL20_EXTENSIONS_DVSEC_FOR_PORTS 0x3 > > +#define CXL_DVSEC_ID_GPF_DVSEC_FOR_CXL_PORTS 0x4 > > +#define CXL_DVSEC_ID_GPF_DVSEC_FOR_CXL_DEVICES 0x5 > > +#define CXL_DVSEC_ID_PCIE_DVSEC_FOR_FLEX_BUS_PORT 0x7 > > +#define CXL_DVSEC_ID_REGISTER_LOCATOR 0x8 > > +#define CXL_DVSEC_ID_MLD 0x9 > > +#define CXL_DVSEC_ID_PCIE_DVSEC_FOR_TEST_CAPABILITY 0xA > > + > > +#define CXL20_DVSEC_REVISON_REGISTOR_LOCATOR 0x0 > > + > > +// > > +// Register Block ID > > +// Compute Express Link Specification Revision 2.0 - Chapter > > +8.1.9.1 // > > +#define CXL_REGISTER_BLOCK_ID_EMPTY 0x0 > > +#define CXL_REGISTER_BLOCK_ID_COMPONENT 0x01 > > +#define CXL_REGISTER_BLOCK_ID_BAR_VIRTUALIZATION_ACL 0x02 > > +#define CXL_REGISTER_BLOCK_ID_DEVICE 0x03 > > + > > +// > > +// Component Register Block Register Ranges Offset // Compute=20 > > +Express Link Specification Revision 2.0 - Chapter 8.2.4 // > > +#define CXL_COMPONENT_REGISTERS_RANGE_OFFSET_IO 0x0 > > +#define CXL_COMPONENT_REGISTERS_RANGE_OFFSET_CACHE_MEM > > 0x1000 > > +#define CXL_COMPONENT_REGISTERS_RANGE_OFFSET_ARB_MUX > 0xE000 > > + > > +// > > +// CXL Cache Memory Capability IDs > > +// Compute Express Link Specification Revision 2.0 - Chapter 8.2.5=20 > > +// > > +#define CXL_CACHE_MEM_CAPABILITY_ID_CXL 0x1 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_RAS 0x2 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_SECURITY 0x3 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_LINK 0x4 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_HDM_DECODER 0x5 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_EXTENDED_SECURITY 0x6 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_IDE 0x7 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_SNOOP_FILTER 0x8 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_MASK 0xFFFF > > + > > +// > > +// Generic CXL Device Capability IDs 0x0000 ~ 0x3FFF // Compute=20 > > +Express Link Specification Revision 2.0 - Chapter 8.2.8.2.1 // > > +#define CXL_DEVICE_CAPABILITY_ID_CAPABILITIES_ARRAY_REGISTER > > 0x0000 > > +#define CXL_DEVICE_CAPABILITY_ID_DEVICE_STATUS 0x00= 01 > > +#define CXL_DEVICE_CAPABILITY_ID_PRIMARY_MAILBOX 0x00= 02 > > +#define CXL_DEVICE_CAPABILITY_ID_SECONDARY_MAILBOX 0x00= 03 > > + > > +// > > +// Specific CXL Device Capability IDs 0x4000 ~ 0x7FFF // Compute=20 > > +Express Link Specification Revision 2.0 - Chapter 8.2.8.2.1 // // > > +(ref: CXL 2.0 spec $8.2.8.5) > > +#define CXL_DEVICE_CAPABILITY_ID_MEMORY_DEVICE_STATUS > > 0x4000 > > +#define CXL_DEVICE_CAPABILITY_ID_MASK 0xFF= FF > > + > > +// > > +// Memory Device Status > > +// Compute Express Link Specification Revision 2.0 - Chapter > > +8.2.8.5.1.1 // > > +#define CXL_MEM_DEVICE_MEDIA_STATUS_NOT_READY 0b00 > > +#define CXL_MEM_DEVICE_MEDIA_STATUS_READY 0b01 > > +#define CXL_MEM_DEVICE_MEDIA_STATUS_ERROR 0b10 > > +#define CXL_MEM_DEVICE_MEDIA_STATUS_DISABLED 0b11 > > + > > +// > > +// PCIe DVSEC for CXL Device > > +// Compute Express Link Specification Revision 2.0 - Chapter 8.1.3=20 > > +// typedef union { > > + struct { > > + UINT16 CacheCapable : 1; // bit 0 > > + UINT16 IoCapable : 1; // bit 1 > > + UINT16 MemCapable : 1; // bit 2 > > + UINT16 MemHwInitMode : 1; // bit 3 > > + UINT16 HdmCount : 2; // bit 4..= 5 > > + UINT16 CacheWriteBackAndInvalidateCapable : 1; // bit 6 > > + UINT16 CxlResetCapable : 1; // bit 7 > > + UINT16 CxlResetTimeout : 3; // bit 8..= 10 > > + UINT16 CxlResetMemClrCapable : 1; // bit 11 > > + UINT16 Reserved : 1; // bit 12 > > + UINT16 MultipleLogicalDevice : 1; // bit 13 > > + UINT16 ViralCapable : 1; // bit 14 > > + UINT16 PmInitCompletionReportingCapable : 1; // bit 15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_DVSEC_CXL_DEVICE_CAPABILITY; > > + > > +typedef union { > > + struct { > > + UINT16 CacheEnable : 1; // bit 0 > > + UINT16 IoEnable : 1; // bit 1 > > + UINT16 MemEnable : 1; // bit 2 > > + UINT16 CacheSfCoverage : 5; // bit 3..7 > > + UINT16 CacheSfGranularity : 3; // bit 8..10 > > + UINT16 CacheCleanEviction : 1; // bit 11 > > + UINT16 Reserved1 : 2; // bit 12..13 > > + UINT16 ViralEnable : 1; // bit 14 > > + UINT16 Reserved2 : 1; // bit 15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_DVSEC_CXL_DEVICE_CONTROL; > > + > > +typedef union { > > + struct { > > + UINT16 Reserved1 : 14; // bit 0..13 > > + UINT16 ViralStatus : 1; // bit 14 > > + UINT16 Reserved2 : 1; // bit 15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_DVSEC_CXL_DEVICE_STATUS; > > + > > +typedef union { > > + struct { > > + UINT16 DisableCaching : 1; // bit 0 > > + UINT16 InitiateCacheWriteBackAndInvalidate : 1; // bit 1 > > + UINT16 InitiateCxlReset : 1; // bit 2 > > + UINT16 CxlResetMemClrEnable : 1; // bit 3 > > + UINT16 Reserved : 12; // bit 4..= 15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_2_0_DVSEC_CXL_DEVICE_CONTROL2; > > + > > +typedef union { > > + struct { > > + UINT16 CacheInvalid : 1; // bit= 0 > > + UINT16 CxlResetComplete : 1; // bit= 1 > > + UINT16 Reserved : 13; // bit= 2..14 > > + UINT16 PowerManagementInitialzationComplete : 1; // bit= 15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_2_0_DVSEC_CXL_DEVICE_STATUS2; > > + > > +typedef union { > > + struct { > > + UINT16 ConfigLock : 1; // bit 0 > > + UINT16 Reserved : 15; // bit 1..15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_DVSEC_CXL_DEVICE_LOCK; > > + > > +typedef union { > > + struct { > > + UINT16 CacheSizeUnit : 4; // bit 0..3 > > + UINT16 Reserved : 4; // bit 4..7 > > + UINT16 CacheSize : 8; // bit 8..15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_2_0_DVSEC_CXL_DEVICE_CAPABILITY2; > > + > > +typedef union { > > + struct { > > + UINT32 MemorySizeHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE1_SIZE_HIGH; > > + > > +typedef union { > > + struct { > > + UINT32 MemoryInfoValid : 1; // bit 0 > > + UINT32 MemoryActive : 1; // bit 1 > > + UINT32 MediaType : 3; // bit 2..4 > > + UINT32 MemoryClass : 3; // bit 5..7 > > + UINT32 DesiredInterleave : 5; // bit 8..12 > > + UINT32 MemoryActiveTimeout : 3; // bit 13..15 > > + UINT32 Reserved : 12; // bit 16..27 > > + UINT32 MemorySizeLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE1_SIZE_LOW; > > + > > +typedef union { > > + struct { > > + UINT32 MemoryBaseHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE1_BASE_HIGH; > > + > > +typedef union { > > + struct { > > + UINT32 Reserved : 28; // bit 0..27 > > + UINT32 MemoryBaseLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE1_BASE_LOW; > > + > > +typedef union { > > + struct { > > + UINT32 MemorySizeHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE2_SIZE_HIGH; > > + > > +typedef union { > > + struct { > > + UINT32 MemoryInfoValid : 1; // bit 0 > > + UINT32 MemoryActive : 1; // bit 1 > > + UINT32 MediaType : 3; // bit 2..4 > > + UINT32 MemoryClass : 3; // bit 5..7 > > + UINT32 DesiredInterleave : 5; // bit 8..12 > > + UINT32 MemoryActiveTimeout : 3; // bit 13..15 > > + UINT32 Reserved : 12; // bit 16..27 > > + UINT32 MemorySizeLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE2_SIZE_LOW; > > + > > +typedef union { > > + struct { > > + UINT32 MemoryBaseHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE2_BASE_HIGH; > > + > > +typedef union { > > + struct { > > + UINT32 Reserved : 28; // bit 0..27 > > + UINT32 MemoryBaseLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE2_BASE_LOW; > > + > > +typedef struct { > > + PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header; > > // offset 0x00 > > + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 > > DesignatedVendorSpecificHeader1; // offset 0x04 > > + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 > > DesignatedVendorSpecificHeader2; // offset 0x08 > > + CXL_DVSEC_CXL_DEVICE_CAPABILITY DeviceCapability; > > // offset 0x0A > > + CXL_DVSEC_CXL_DEVICE_CONTROL DeviceControl; > > // offset 0x0C > > + CXL_DVSEC_CXL_DEVICE_STATUS DeviceStatus; = // > > offset 0x0E > > + CXL_2_0_DVSEC_CXL_DEVICE_CONTROL2 DeviceControl2; > > // offset 0x10 > > + CXL_2_0_DVSEC_CXL_DEVICE_STATUS2 DeviceStatus2; > > // offset 0x12 > > + CXL_DVSEC_CXL_DEVICE_LOCK DeviceLock; = // > > offset 0x14 > > + CXL_2_0_DVSEC_CXL_DEVICE_CAPABILITY2 DeviceCapability2= ; > > // offset 0x16 > > + CXL_DVSEC_CXL_DEVICE_RANGE1_SIZE_HIGH > DeviceRange1SizeHigh; > > // offset 0x18 > > + CXL_DVSEC_CXL_DEVICE_RANGE1_SIZE_LOW > DeviceRange1SizeLow; > > // offset 0x1C > > + CXL_DVSEC_CXL_DEVICE_RANGE1_BASE_HIGH > > DeviceRange1BaseHigh; // offset 0x20 > > + CXL_DVSEC_CXL_DEVICE_RANGE1_BASE_LOW > > DeviceRange1BaseLow; // offset 0x24 > > + CXL_DVSEC_CXL_DEVICE_RANGE2_SIZE_HIGH > DeviceRange2SizeHigh; > > // offset 0x28 > > + CXL_DVSEC_CXL_DEVICE_RANGE2_SIZE_LOW > DeviceRange2SizeLow; > > // offset 0x2C > > + CXL_DVSEC_CXL_DEVICE_RANGE2_BASE_HIGH > > DeviceRange2BaseHigh; // offset 0x30 > > + CXL_DVSEC_CXL_DEVICE_RANGE2_BASE_LOW > > DeviceRange2BaseLow; // offset 0x34 > > +} CXL_2_0_DVSEC_CXL_DEVICE; > > + > > +// > > +// Register Locator DVSEC > > +// Compute Express Link Specification Revision 2.0 - Chapter 8.1.9=20 > > +// typedef union { > > + struct { > > + UINT32 RegisterBir : 3; // bit 0..2 > > + UINT32 Reserved : 5; // bit 3..7 > > + UINT32 RegisterBlockIdentifier : 8; // bit 8..15 > > + UINT32 RegisterBlockOffsetLow : 16; // bit 16..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_REGISTER_LOCATOR_DVSEC_REGISTER_OFFSET_LOW; > > + > > +typedef union { > > + struct { > > + UINT32 RegisterBlockOffsetHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_REGISTER_LOCATOR_DVSEC_REGISTER_OFFSET_HIGH; > > + > > +typedef struct { > > + CXL_REGISTER_LOCATOR_DVSEC_REGISTER_OFFSET_LOW OffsetLow; > > + CXL_REGISTER_LOCATOR_DVSEC_REGISTER_OFFSET_HIGH OffsetHigh; > > +} CXL_REGISTER_LOCATOR_DVSEC_REGISTER_BLOCK; > > + > > + > > +typedef struct { > > + PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header; > > // offset 0x00 > > + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 > > DesignatedVendorSpecificHeader1; // offset 0x04 > > + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 > > DesignatedVendorSpecificHeader2; // offset 0x08 > > + UINT16 Reserved; = // offset 0x0A > > + CXL_REGISTER_LOCATOR_DVSEC_REGISTER_BLOCK RegisterBlock[1]; > > // offset 0x0C > > +} CXL_REGISTER_LOCATOR_DVSEC; > > + > > +// > > +// CXL HDM Decoder Capability Header Register // Compute Express=20 > > +Link Specification Revision 2.0 - Chapter 8.2.5.5 // typedef union=20 > > +{ > > + struct { > > + UINT32 CxlCapabilityId : 16; // bit 0..15 > > + UINT32 CxlCapabilityVersion : 4; // bit 16..19 > > + UINT32 CxlHdmDecoderCapabilityPointer : 12; // bit 20..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_CAPABILITY_HEADER_REGISTER; > > + > > +// > > +// CXL HDM Decoder Capability Register // Compute Express Link=20 > > +Specification Revision 2.0 - Chapter 8.2.5.12 // typedef union { > > + struct { > > + UINT32 DecoderCount : 4; // bit 0..3 > > + UINT32 TargetCount : 4; // bit 4..7 > > + UINT32 A11to8InterleaveCapable : 1; // bit 8 > > + UINT32 A14to12InterleaveCapable : 1; // bit 9 > > + UINT32 PoisonOnDecodeErrorCapability : 1; // bit 10 > > + UINT32 Reserved : 21; // bit 11..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_2_0_HDM_DECODER_CAPABILITY_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 PoisonOnDecodeErrorEnable : 1; // bit 0 > > + UINT32 HdmDecoderEnable : 1; // bit 1 > > + UINT32 Reserved : 30; // bit 2..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_GLOBAL_CONTROL_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 Reserved : 28; // bit 0..27 > > + UINT32 MemoryBaseLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_BASE_LOW_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 MemoryBaseHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_BASE_HIGH_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 Reserved : 28; // bit 0..27 > > + UINT32 MemorySizeLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_SIZE_LOW_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 MemorySizeHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_SIZE_HIGH_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 InterleaveGranularity : 4; // bit 0..3 > > + UINT32 InterleaveWays : 4; // bit 4..7 > > + UINT32 LockOnCommit : 1; // bit 8 > > + UINT32 Commit : 1; // bit 9 > > + UINT32 Committed : 1; // bit 10 > > + UINT32 ErrorNotCommitted : 1; // bit 11 > > + UINT32 TargetDeviceType : 1; // bit 12 > > + UINT32 Reserved : 19; // bit 13..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_2_0_HDM_DECODER_N_CONTROL_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 TargetPortIdentiferWay0 : 8; // bit 0..7 > > + UINT32 TargetPortIdentiferWay1 : 8; // bit 8..15 > > + UINT32 TargetPortIdentiferWay2 : 8; // bit 16..23 > > + UINT32 TargetPortIdentiferWay3 : 8; // bit 24..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_TARGET_LIST_LOW_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 Reserved : 28; // bit 0..27 > > + UINT32 DpaSkipLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_DPA_SKIP_LOW_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 TargetPortIdentiferWay4 : 8; // bit 0..7 > > + UINT32 TargetPortIdentiferWay5 : 8; // bit 8..15 > > + UINT32 TargetPortIdentiferWay6 : 8; // bit 16..23 > > + UINT32 TargetPortIdentiferWay7 : 8; // bit 24..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_TARGET_LIST_HIGH_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 DpaSkipHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_DPA_SKIP_HIGH_REGISTER; > > + > > +typedef union { > > + CXL_HDM_DECODER_N_TARGET_LIST_LOW_REGISTER TargetListLow; > > + CXL_HDM_DECODER_N_DPA_SKIP_LOW_REGISTER DpaSkipLow; > > +} CXL_HDM_DECODER_N_TARGET_LIST_OR_DPA_SKIP_LOW; > > + > > +typedef union { > > + CXL_HDM_DECODER_N_TARGET_LIST_HIGH_REGISTER TargetListHigh; > > + CXL_HDM_DECODER_N_DPA_SKIP_HIGH_REGISTER DpaSkipHigh; > > +} CXL_HDM_DECODER_N_TARGET_LIST_OR_DPA_SKIP_HIGH; > > + > > +typedef struct { > > + CXL_HDM_DECODER_N_BASE_LOW_REGISTER DecoderBaseLow; > > // 0x10 > > + CXL_HDM_DECODER_N_BASE_HIGH_REGISTER DecoderBaseHigh; > > // 0x14 > > + CXL_HDM_DECODER_N_SIZE_LOW_REGISTER DecoderSizeLow; > > // 0x18 > > + CXL_HDM_DECODER_N_SIZE_HIGH_REGISTER DecoderSizeHigh; > > // 0x1c > > + CXL_2_0_HDM_DECODER_N_CONTROL_REGISTER DecoderControl; > > // 0x20 > > + CXL_HDM_DECODER_N_TARGET_LIST_OR_DPA_SKIP_LOW > > DecoderTargetListDpaSkipLow; // 0x24 > > + CXL_HDM_DECODER_N_TARGET_LIST_OR_DPA_SKIP_HIGH > > DecoderTargetListDpaSkipHigh; // 0x28 > > + UINT32 Reserved; = // 0x2C > > +} HDM_DECODER_N_INFO; > > + > > +typedef union { > > + struct { > > + UINT64 CxlDeviceCapabilityId : 16; // bit 0..15 > > + UINT64 CxlDeviceCapabilityVersion : 8; // bit 16..23 > > + UINT64 Reserved1 : 8; // bit 24..31 > > + UINT64 CxlDeviceCapabilitiesCount : 16; // bit 32..47 > > + UINT64 Reserved2 : 16; // bit 48..63 > > + } Bits; > > + UINT64 Uint64; > > +} CXL_DEVICE_CAPABILITIES_ARRAY_REGISTER; > > + > > +// > > +// CXL Memory Status Register > > +// Compute Express Link Specification Revision 2.0 - Chapter > > +8.2.8.5 // typedef union { > > + struct { > > + UINT64 DeviceFatal : 1; // bit 0 > > + UINT64 FwHalt : 1; // bit 1 > > + UINT64 MediaStatus : 2; // bit 2..3 > > + UINT64 MailboxInterfacesReady : 1; // bit 4 > > + UINT64 ResetNeeded : 3; // bit 5..7 > > + UINT64 Reserved : 56; // bit 8..63 > > + } Bits; > > + UINT64 Uint64; > > +} CXL_MEMORY_DEVICE_STATUS_REGISTER; > > + > > +#pragma pack() > > + > > +#endif > > -- > > 2.34.1 >=20 >=20 >=20 >=20 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#107404): https://edk2.groups.io/g/devel/message/107404 Mute This Topic: https://groups.io/mt/99825866/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- --_002_DS7PR11MB61997D973C1FFC655931FB5CF005ADS7PR11MB6199namp_ Content-Type: text/plain; name="Cxl20_reviewed_07292023.h" Content-Description: Cxl20_reviewed_07292023.h Content-Disposition: attachment; filename="Cxl20_reviewed_07292023.h"; size=18310; creation-date="Mon, 31 Jul 2023 02:54:11 GMT"; modification-date="Mon, 31 Jul 2023 03:18:12 GMT" Content-Transfer-Encoding: base64 LyoqIEBmaWxlDQogIENYTCAyLjAgUmVnaXN0ZXIgZGVmaW5pdGlvbnMNCg0KICBUaGlzIGZpbGUg Y29udGFpbnMgdGhlIHJlZ2lzdGVyIGRlZmluaXRpb25zIGJhc2VkIG9uIHRoZSBDb21wdXRlIEV4 cHJlc3MgTGluaw0KICAoQ1hMKSBTcGVjaWZpY2F0aW9uIFJldmlzaW9uIDIuMC4NCg0KICBDb3B5 cmlnaHQgKGMpIDIwMjMsIEFtcGVyZSBDb21wdXRpbmcgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCg0KICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K DQoqKi8NCiNpZm5kZWYgQ1hMMjBfSF8NCiNkZWZpbmUgQ1hMMjBfSF8NCg0KI2luY2x1ZGUgPElu ZHVzdHJ5U3RhbmRhcmQvQ3hsMTEuaD4NCg0KLy8NCi8vIENYTCBEVlNFQyBJRHMNCi8vIENvbXB1 dGUgRXhwcmVzcyBMaW5rIFNwZWNpZmljYXRpb24gUmV2aXNpb24gMi4wIC0gQ2hhcHRlciA4LjEu MQ0KLy8NCiNkZWZpbmUgQ1hMX0RWU0VDX0lEX1BDSUVfRFZTRUNfRk9SX0NYTF9ERVZJQ0UgICAg ICAgICAgICAweDANCiNkZWZpbmUgQ1hMX0RWU0VDX0lEX05PTl9DWExfRlVOQ1RJT05fTUFQICAg ICAgICAgICAgICAgICAweDINCiNkZWZpbmUgQ1hMX0RWU0VDX0lEX0NYTDIwX0VYVEVOU0lPTlNf RFZTRUNfRk9SX1BPUlRTICAgICAweDMNCiNkZWZpbmUgQ1hMX0RWU0VDX0lEX0dQRl9EVlNFQ19G T1JfQ1hMX1BPUlRTICAgICAgICAgICAgICAweDQNCiNkZWZpbmUgQ1hMX0RWU0VDX0lEX0dQRl9E VlNFQ19GT1JfQ1hMX0RFVklDRVMgICAgICAgICAgICAweDUNCiNkZWZpbmUgQ1hMX0RWU0VDX0lE X1BDSUVfRFZTRUNfRk9SX0ZMRVhfQlVTX1BPUlQgICAgICAgICAweDcNCiNkZWZpbmUgQ1hMX0RW U0VDX0lEX1JFR0lTVEVSX0xPQ0FUT1IgICAgICAgICAgICAgICAgICAgICAweDgNCiNkZWZpbmUg Q1hMX0RWU0VDX0lEX01MRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkNCiNk ZWZpbmUgQ1hMX0RWU0VDX0lEX1BDSUVfRFZTRUNfRk9SX1RFU1RfQ0FQQUJJTElUWSAgICAgICAw eEENCg0KLy8NCi8vIFJlZ2lzdGVyIEJsb2NrIElEDQovLyBDb21wdXRlIEV4cHJlc3MgTGluayBT cGVjaWZpY2F0aW9uIFJldmlzaW9uIDIuMCAtIENoYXB0ZXIgOC4xLjkuMSANCi8vDQojZGVmaW5l IENYTF9SRUdJU1RFUl9CTE9DS19JRF9FTVBUWSAgICAgICAgICAgICAgICAgICAgICAgMHgwDQoj ZGVmaW5lIENYTF9SRUdJU1RFUl9CTE9DS19JRF9DT01QT05FTlQgICAgICAgICAgICAgICAgICAg MHgxDQojZGVmaW5lIENYTF9SRUdJU1RFUl9CTE9DS19JRF9CQVJfVklSVFVBTElaQVRJT05fQUNM ICAgICAgMHgyDQojZGVmaW5lIENYTF9SRUdJU1RFUl9CTE9DS19JRF9ERVZJQ0UgICAgICAgICAg ICAgICAgICAgICAgMHgzDQoNCi8vDQovLyBDWEwgY29tcG9uZW50IHJlZ2lzdGVyIGxheW91dA0K Ly8gQ29tcHV0ZSBFeHByZXNzIExpbmsgU3BlY2lmaWNhdGlvbiBSZXZpc2lvbiAyLjAgLSBDaGFw dGVyIDguMi40DQovLw0KLy98LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0K Ly98LS0tLS0tLS0tIFJhbmdlICYgVHlwZSAtLS0tLS0tLS0tLS0tfA0KLy98LS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCBJTyBCYXNlIC0gMEtCDQovL3wgICAgICgwS0IgLSA0 S0IpSU8gUmVncyAgICAgICAgICAgICB8DQovL3wtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS18IENhY2hlIGFuZCBNZW0gQmFzZSAtIDRLQg0KLy98ICAgICB7NEtCIC0gOEtCKUNh Y2hlICYgTWVtIFJlZ3MgICAgfA0KLy98LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tfCBJbXBsZW1lbnRhdGlvbiBTcGVjIFJlZ3MgQmFzZSAtIDhLQg0KLy98ICAgICAoOEtCIC0g NTZLQilJbXBsZW1lbnQgU3BlYyBSZWdzfA0KLy98LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tfCBBUkIvTXV4IFJlZ3MgQmFzZSAtIDU2S0INCi8vfCAgICAgKDU2S0IgLSA1N0tC KUFSQk1VWCBSZWdzICAgICAgIHwNCi8vfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLXwgUmVzZXJ2ZWQgQmFzZSAtIDU3S0INCi8vfCAgICAgKDU3S0IgLSA2M0tCKVJlc2VydmVk ICAgICAgICAgIHwNCi8vfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgRW5k IDY0S0INCi8vDQovLyBDb21wb25lbnQgUmVnaXN0ZXIgQmxvY2sgUmVnaXN0ZXIgUmFuZ2VzIE9m ZnNldA0KLy8NCiNkZWZpbmUgQ1hMX0NPTVBPTkVOVF9SRUdJU1RFUl9SQU5HRV9PRkZTRVRfSU8g ICAgICAgICAgIDB4MA0KI2RlZmluZSBDWExfQ09NUE9ORU5UX1JFR0lTVEVSX1JBTkdFX09GRlNF VF9DQUNIRV9NRU0gICAgMHgxMDAwIA0KI2RlZmluZSBDWExfQ09NUE9ORU5UX1JFR0lTVEVSX1JB TkdFX09GRlNFVF9BUkJfTVVYICAgICAgMHhFMDAwDQoNCg0KLy8NCi8vIENYTCBDYWNoZSBNZW1v cnkgQ2FwYWJpbGl0eSBJRHMNCi8vIENvbXB1dGUgRXhwcmVzcyBMaW5rIFNwZWNpZmljYXRpb24g UmV2aXNpb24gMi4wIC0gQ2hhcHRlciA4LjIuNSANCi8vDQojZGVmaW5lIENYTF9DQUNIRV9NRU1f Q0FQQUJJTElUWV9JRF9DWEwgICAgICAgICAgICAgICAgICAgMHgxDQojZGVmaW5lIENYTF9DQUNI RV9NRU1fQ0FQQUJJTElUWV9JRF9SQVMgICAgICAgICAgICAgICAgICAgMHgyDQojZGVmaW5lIENY TF9DQUNIRV9NRU1fQ0FQQUJJTElUWV9JRF9TRUNVUklUWSAgICAgICAgICAgICAgMHgzDQojZGVm aW5lIENYTF9DQUNIRV9NRU1fQ0FQQUJJTElUWV9JRF9MSU5LICAgICAgICAgICAgICAgICAgMHg0 DQojZGVmaW5lIENYTF9DQUNIRV9NRU1fQ0FQQUJJTElUWV9JRF9IRE1fREVDT0RFUiAgICAgICAg ICAgMHg1DQojZGVmaW5lIENYTF9DQUNIRV9NRU1fQ0FQQUJJTElUWV9JRF9FWFRFTkRFRF9TRUNV UklUWSAgICAgMHg2DQojZGVmaW5lIENYTF9DQUNIRV9NRU1fQ0FQQUJJTElUWV9JRF9JREUgICAg ICAgICAgICAgICAgICAgMHg3DQojZGVmaW5lIENYTF9DQUNIRV9NRU1fQ0FQQUJJTElUWV9JRF9T Tk9PUF9GSUxURVIgICAgICAgICAgMHg4DQojZGVmaW5lIENYTF9DQUNIRV9NRU1fQ0FQQUJJTElU WV9JRF9NQVNLICAgICAgICAgICAgICAgICAgMHhGRkZGIA0KDQovLw0KLy8gR2VuZXJpYyBDWEwg RGV2aWNlIENhcGFiaWxpdHkgSURzIDB4MDAwMCB+IDB4M0ZGRiANCi8vIENvbXB1dGUgRXhwcmVz cyBMaW5rIFNwZWNpZmljYXRpb24gUmV2aXNpb24gMi4wIC0gQ2hhcHRlciA4LjIuOC4yLjENCi8v DQojZGVmaW5lICAgQ1hMX0RFVklDRV9DQVBBQklMSVRZX0lEX0NBUEFCSUxJVElFU19BUlJBWV9S RUdJU1RFUiAgICAweDAwMDANCiNkZWZpbmUgICBDWExfREVWSUNFX0NBUEFCSUxJVFlfSURfREVW SUNFX1NUQVRVUyAgICAgICAgICAgICAgICAgIDB4MDAwMQ0KI2RlZmluZSAgIENYTF9ERVZJQ0Vf Q0FQQUJJTElUWV9JRF9QUklNQVJZX01BSUxCT1ggICAgICAgICAgICAgICAgMHgwMDAyDQojZGVm aW5lICAgQ1hMX0RFVklDRV9DQVBBQklMSVRZX0lEX1NFQ09OREFSWV9NQUlMQk9YICAgICAgICAg ICAgICAweDAwMDMNCg0KLy8NCi8vIFNwZWNpZmljIENYTCBEZXZpY2UgQ2FwYWJpbGl0eSBJRHMg MHg0MDAwIH4gMHg3RkZGDQovLyBDb21wdXRlIEV4cHJlc3MgTGluayBTcGVjaWZpY2F0aW9uIFJl dmlzaW9uIDIuMCAtIENoYXB0ZXIgOC4yLjguMi4xIGFuZCA4LjIuOC41DQoNCi8vDQojZGVmaW5l ICAgQ1hMX0RFVklDRV9DQVBBQklMSVRZX0lEX01FTU9SWV9ERVZJQ0VfU1RBVFVTICAgICAgICAg ICAweDQwMDANCiNkZWZpbmUgICBDWExfREVWSUNFX0NBUEFCSUxJVFlfSURfTUFTSyAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4RkZGRg0KDQovLw0KLy8gTWVtb3J5IERldmljZSBTdGF0dXMN Ci8vIENvbXB1dGUgRXhwcmVzcyBMaW5rIFNwZWNpZmljYXRpb24gUmV2aXNpb24gMi4wIC0gQ2hh cHRlciA4LjIuOC41LjEuMQ0KLy8NCiNkZWZpbmUgQ1hMX01FTV9ERVZJQ0VfTUVESUFfU1RBVFVT X05PVF9SRUFEWSAgICAgICAgICAgICAgMHgwDQojZGVmaW5lIENYTF9NRU1fREVWSUNFX01FRElB X1NUQVRVU19SRUFEWSAgICAgICAgICAgICAgICAgIDB4MQ0KI2RlZmluZSBDWExfTUVNX0RFVklD RV9NRURJQV9TVEFUVVNfRVJST1IgICAgICAgICAgICAgICAgICAweDINCiNkZWZpbmUgQ1hMX01F TV9ERVZJQ0VfTUVESUFfU1RBVFVTX0RJU0FCTEVEICAgICAgICAgICAgICAgMHgzDQoNCi8vDQov LyBFbnN1cmUgcHJvcGVyIHN0cnVjdHVyZSBmb3JtYXRzDQovLw0KI3ByYWdtYSBwYWNrKDEpDQoN Ci8vDQovLyBQQ0llIERWU0VDIGZvciBDWEwgRGV2aWNlDQovLyBDb21wdXRlIEV4cHJlc3MgTGlu ayBTcGVjaWZpY2F0aW9uIFJldmlzaW9uIDIuMCAtIENoYXB0ZXIgOC4xLjMNCi8vDQp0eXBlZGVm IHVuaW9uIHsNCiAgc3RydWN0IHsNCiAgICBVSU5UMTYgICAgQ2FjaGVDYXBhYmxlICAgICAgICAg ICAgICAgICAgICAgICA6IDE7ICAgICAgIC8vIGJpdCAwDQogICAgVUlOVDE2ICAgIElvQ2FwYWJs ZSAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOyAgICAgICAvLyBiaXQgMQ0KICAgIFVJTlQx NiAgICBNZW1DYXBhYmxlICAgICAgICAgICAgICAgICAgICAgICAgIDogMTsgICAgICAgLy8gYml0 IDINCiAgICBVSU5UMTYgICAgTWVtSHdJbml0TW9kZSAgICAgICAgICAgICAgICAgICAgICA6IDE7 ICAgICAgIC8vIGJpdCAzDQogICAgVUlOVDE2ICAgIEhkbUNvdW50ICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiAyOyAgICAgICAvLyBiaXQgNC4uNQ0KICAgIFVJTlQxNiAgICBDYWNoZVdyaXRl QmFja0FuZEludmFsaWRhdGVDYXBhYmxlIDogMTsgICAgICAgLy8gYml0IDYNCiAgICBVSU5UMTYg ICAgQ3hsUmVzZXRDYXBhYmxlICAgICAgICAgICAgICAgICAgICA6IDE7ICAgICAgIC8vIGJpdCA3 DQogICAgVUlOVDE2ICAgIEN4bFJlc2V0VGltZW91dCAgICAgICAgICAgICAgICAgICAgOiAzOyAg ICAgICAvLyBiaXQgOC4uMTANCiAgICBVSU5UMTYgICAgQ3hsUmVzZXRNZW1DbHJDYXBhYmxlICAg ICAgICAgICAgICA6IDE7ICAgICAgIC8vIGJpdCAxMQ0KICAgIFVJTlQxNiAgICBSZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgICAgICAgIDogMTsgICAgICAgLy8gYml0IDEyDQogICAgVUlOVDE2 ICAgIE11bHRpcGxlTG9naWNhbERldmljZSAgICAgICAgICAgICAgOiAxOyAgICAgICAvLyBiaXQg MTMNCiAgICBVSU5UMTYgICAgVmlyYWxDYXBhYmxlICAgICAgICAgICAgICAgICAgICAgICA6IDE7 ICAgICAgIC8vIGJpdCAxNA0KICAgIFVJTlQxNiAgICBQbUluaXRDb21wbGV0aW9uUmVwb3J0aW5n Q2FwYWJsZSAgIDogMTsgICAgICAgLy8gYml0IDE1DQogIH0gQml0czsNCiAgVUlOVDE2ICAgIFVp bnQxNjsNCn0gQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfQ0FQQUJJTElUWTsNCg0KdHlwZWRlZiB1bmlv biB7DQogIHN0cnVjdCB7DQogICAgVUlOVDE2ICAgIENhY2hlRW5hYmxlICAgICAgICA6IDE7ICAg ICAgIC8vIGJpdCAwDQogICAgVUlOVDE2ICAgIElvRW5hYmxlICAgICAgICAgICA6IDE7ICAgICAg IC8vIGJpdCAxDQogICAgVUlOVDE2ICAgIE1lbUVuYWJsZSAgICAgICAgICA6IDE7ICAgICAgIC8v IGJpdCAyDQogICAgVUlOVDE2ICAgIENhY2hlU2ZDb3ZlcmFnZSAgICA6IDU7ICAgICAgIC8vIGJp dCAzLi43DQogICAgVUlOVDE2ICAgIENhY2hlU2ZHcmFudWxhcml0eSA6IDM7ICAgICAgIC8vIGJp dCA4Li4xMA0KICAgIFVJTlQxNiAgICBDYWNoZUNsZWFuRXZpY3Rpb24gOiAxOyAgICAgICAvLyBi aXQgMTENCiAgICBVSU5UMTYgICAgUmVzZXJ2ZWQxICAgICAgICAgIDogMjsgICAgICAgLy8gYml0 IDEyLi4xMw0KICAgIFVJTlQxNiAgICBWaXJhbEVuYWJsZSAgICAgICAgOiAxOyAgICAgICAvLyBi aXQgMTQNCiAgICBVSU5UMTYgICAgUmVzZXJ2ZWQyICAgICAgICAgIDogMTsgICAgICAgLy8gYml0 IDE1DQogIH0gQml0czsNCiAgVUlOVDE2ICAgIFVpbnQxNjsNCn0gQ1hMX0RWU0VDX0NYTF9ERVZJ Q0VfQ09OVFJPTDsNCg0KdHlwZWRlZiB1bmlvbiB7DQogIHN0cnVjdCB7DQogICAgVUlOVDE2ICAg IFJlc2VydmVkMSAgIDogMTQ7ICAgICAvLyBiaXQgMC4uMTMNCiAgICBVSU5UMTYgICAgVmlyYWxT dGF0dXMgOiAxOyAgICAgIC8vIGJpdCAxNA0KICAgIFVJTlQxNiAgICBSZXNlcnZlZDIgICA6IDE7 ICAgICAgLy8gYml0IDE1DQogIH0gQml0czsNCiAgVUlOVDE2ICAgIFVpbnQxNjsNCn0gQ1hMX0RW U0VDX0NYTF9ERVZJQ0VfU1RBVFVTOw0KDQp0eXBlZGVmIHVuaW9uIHsNCiAgc3RydWN0IHsNCiAg ICBVSU5UMTYgICAgRGlzYWJsZUNhY2hpbmcgICAgICAgICAgICAgICAgICAgICAgOiAxOyAgICAg IC8vIGJpdCAwDQogICAgVUlOVDE2ICAgIEluaXRpYXRlQ2FjaGVXcml0ZUJhY2tBbmRJbnZhbGlk YXRlIDogMTsgICAgICAvLyBiaXQgMQ0KICAgIFVJTlQxNiAgICBJbml0aWF0ZUN4bFJlc2V0ICAg ICAgICAgICAgICAgICAgICA6IDE7ICAgICAgLy8gYml0IDINCiAgICBVSU5UMTYgICAgQ3hsUmVz ZXRNZW1DbHJFbmFibGUgICAgICAgICAgICAgICAgOiAxOyAgICAgIC8vIGJpdCAzDQogICAgVUlO VDE2ICAgIFJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMTI7ICAgICAvLyBi aXQgNC4uMTUNCiAgfSBCaXRzOw0KICBVSU5UMTYgICAgICBVaW50MTY7DQp9IENYTF9EVlNFQ19D WExfREVWSUNFX0NPTlRST0wyOw0KDQp0eXBlZGVmIHVuaW9uIHsNCiAgc3RydWN0IHsNCiAgICBV SU5UMTYgICAgQ2FjaGVJbnZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgIDogMTsgICAgICAg ICAvLyBiaXQgMA0KICAgIFVJTlQxNiAgICBDeGxSZXNldENvbXBsZXRlICAgICAgICAgICAgICAg ICAgICAgOiAxOyAgICAgICAgIC8vIGJpdCAxDQogICAgVUlOVDE2ICAgIFJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6IDEzOyAgICAgICAgLy8gYml0IDIuLjE0DQogICAgVUlO VDE2ICAgIFBvd2VyTWFuYWdlbWVudEluaXRpYWx6YXRpb25Db21wbGV0ZSA6IDE7ICAgICAgICAg Ly8gYml0IDE1DQogIH0gQml0czsNCiAgVUlOVDE2ICAgICAgVWludDE2Ow0KfSBDWExfRFZTRUNf Q1hMX0RFVklDRV9TVEFUVVMyOw0KDQp0eXBlZGVmIHVuaW9uIHsNCiAgc3RydWN0IHsNCiAgICBV SU5UMTYgICAgQ29uZmlnTG9jayA6IDE7ICAgICAgIC8vIGJpdCAwDQogICAgVUlOVDE2ICAgIFJl c2VydmVkICAgOiAxNTsgICAgICAvLyBiaXQgMS4uMTUNCiAgfSBCaXRzOw0KICBVSU5UMTYgICAg ICBVaW50MTY7DQp9IENYTF9EVlNFQ19DWExfREVWSUNFX0xPQ0s7DQoNCnR5cGVkZWYgdW5pb24g ew0KICBzdHJ1Y3Qgew0KICAgIFVJTlQxNiAgICBDYWNoZVNpemVVbml0IDogNDsgICAgICAgIC8v IGJpdCAwLi4zDQogICAgVUlOVDE2ICAgIFJlc2VydmVkICAgICAgOiA0OyAgICAgICAgLy8gYml0 IDQuLjcNCiAgICBVSU5UMTYgICAgQ2FjaGVTaXplICAgICA6IDg7ICAgICAgICAvLyBiaXQgOC4u MTUNCiAgfSBCaXRzOw0KICBVSU5UMTYgICAgICBVaW50MTY7DQp9IENYTF9EVlNFQ19DWExfREVW SUNFX0NBUEFCSUxJVFkyOw0KdHlwZWRlZiB1bmlvbiB7DQogIHN0cnVjdCB7DQogICAgVUlOVDMy ICAgIE1lbW9yeVNpemVIaWdoIDogMzI7ICAgICAgLy8gYml0IDAuLjMxDQogIH0gQml0czsNCiAg VUlOVDMyICAgIFVpbnQzMjsNCn0gQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfUkFOR0VfU0laRV9ISUdI Ow0KDQp0eXBlZGVmIHVuaW9uIHsNCiAgc3RydWN0IHsNCiAgICBVSU5UMzIgICAgTWVtb3J5SW5m b1ZhbGlkICAgICA6IDE7ICAgICAgLy8gYml0IDANCiAgICBVSU5UMzIgICAgTWVtb3J5QWN0aXZl ICAgICAgICA6IDE7ICAgICAgLy8gYml0IDENCiAgICBVSU5UMzIgICAgTWVkaWFUeXBlICAgICAg ICAgICA6IDM7ICAgICAgLy8gYml0IDIuLjQNCiAgICBVSU5UMzIgICAgTWVtb3J5Q2xhc3MgICAg ICAgICA6IDM7ICAgICAgLy8gYml0IDUuLjcNCiAgICBVSU5UMzIgICAgRGVzaXJlZEludGVybGVh dmUgICA6IDU7ICAgICAgLy8gYml0IDguLjEyDQogICAgVUlOVDMyICAgIE1lbW9yeUFjdGl2ZVRp bWVvdXQgOiAzOyAgICAgIC8vIGJpdCAxMy4uMTUNCiAgICBVSU5UMzIgICAgUmVzZXJ2ZWQgICAg ICAgICAgICA6IDEyOyAgICAgLy8gYml0IDE2Li4yNw0KICAgIFVJTlQzMiAgICBNZW1vcnlTaXpl TG93ICAgICAgIDogNDsgICAgICAvLyBiaXQgMjguLjMxDQogIH0gQml0czsNCiAgVUlOVDMyICAg ICAgVWludDMyOw0KfSBDWExfRFZTRUNfQ1hMX0RFVklDRV9SQU5HRV9TSVpFX0xPVzsNCg0KdHlw ZWRlZiB1bmlvbiB7DQogIHN0cnVjdCB7DQogICAgVUlOVDMyICAgIE1lbW9yeUJhc2VIaWdoIDog MzI7ICAgICAgLy8gYml0IDAuLjMxDQogIH0gQml0czsNCiAgVUlOVDMyICAgICAgVWludDMyOw0K fSBDWExfRFZTRUNfQ1hMX0RFVklDRV9SQU5HRV9CQVNFX0hJR0g7DQoNCnR5cGVkZWYgdW5pb24g ew0KICBzdHJ1Y3Qgew0KICAgIFVJTlQzMiAgICBSZXNlcnZlZCAgICAgIDogMjg7ICAgICAgIC8v IGJpdCAwLi4yNw0KICAgIFVJTlQzMiAgICBNZW1vcnlCYXNlTG93IDogNDsgICAgICAgIC8vIGJp dCAyOC4uMzENCiAgfSBCaXRzOw0KICBVSU5UMzIgICAgICBVaW50MzI7DQp9IENYTF9EVlNFQ19D WExfREVWSUNFX1JBTkdFX0JBU0VfTE9XOw0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgUENJX0VY UFJFU1NfRVhURU5ERURfQ0FQQUJJTElUSUVTX0hFQURFUiAgICAgICAgICAgSGVhZGVyOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4MDANCiAgUENJX0VYUFJFU1Nf REVTSUdOQVRFRF9WRU5ET1JfU1BFQ0lGSUNfSEVBREVSXzEgICAgRHZzZWNIZWFkZXIxOyAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4MDQNCiAgUENJX0VYUFJFU1NfREVTSUdO QVRFRF9WRU5ET1JfU1BFQ0lGSUNfSEVBREVSXzIgICAgRHZzZWNIZWFkZXIyOyAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4MDgNCiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfQ0FQ QUJJTElUWSAgICAgICAgICAgICAgICAgICAgRGV2aWNlQ2FwYWJpbGl0eTsgICAgICAgICAgICAg ICAgICAgICAgLy8gb2Zmc2V0IDB4MEENCiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfQ09OVFJPTCAg ICAgICAgICAgICAgICAgICAgICAgRGV2aWNlQ29udHJvbDsgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gb2Zmc2V0IDB4MEMNCiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfU1RBVFVTICAgICAgICAg ICAgICAgICAgICAgICAgRGV2aWNlU3RhdHVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g b2Zmc2V0IDB4MEUNCiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfQ09OVFJPTDIgICAgICAgICAgICAg ICAgICAgICAgRGV2aWNlQ29udHJvbDI7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0 IDB4MTANCiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfU1RBVFVTMiAgICAgICAgICAgICAgICAgICAg ICAgRGV2aWNlU3RhdHVzMjsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4MTIN CiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfTE9DSyAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2 aWNlTG9jazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4MTQNCiAgQ1hM X0RWU0VDX0NYTF9ERVZJQ0VfQ0FQQUJJTElUWTIgICAgICAgICAgICAgICAgICAgRGV2aWNlQ2Fw YWJpbGl0eTI7ICAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4MTYNCiAgQ1hMX0RWU0VD X0NYTF9ERVZJQ0VfUkFOR0VfU0laRV9ISUdIICAgICAgICAgICAgICAgRGV2aWNlUmFuZ2UxU2l6 ZUhpZ2g7ICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4MTgNCiAgQ1hMX0RWU0VDX0NYTF9E RVZJQ0VfUkFOR0VfU0laRV9MT1cgICAgICAgICAgICAgICAgRGV2aWNlUmFuZ2UxU2l6ZUxvdzsg ICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4MUMNCiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0Vf UkFOR0VfQkFTRV9ISUdIICAgICAgICAgICAgICAgRGV2aWNlUmFuZ2UxQmFzZUhpZ2g7ICAgICAg ICAgICAgICAgICAgLy8gb2Zmc2V0IDB4MjANCiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfUkFOR0Vf QkFTRV9MT1cgICAgICAgICAgICAgICAgRGV2aWNlUmFuZ2UxQmFzZUxvdzsgICAgICAgICAgICAg ICAgICAgLy8gb2Zmc2V0IDB4MjQNCiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfUkFOR0VfU0laRV9I SUdIICAgICAgICAgICAgICAgRGV2aWNlUmFuZ2UyU2l6ZUhpZ2g7ICAgICAgICAgICAgICAgICAg Ly8gb2Zmc2V0IDB4MjgNCiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfUkFOR0VfU0laRV9MT1cgICAg ICAgICAgICAgICAgRGV2aWNlUmFuZ2UyU2l6ZUxvdzsgICAgICAgICAgICAgICAgICAgLy8gb2Zm c2V0IDB4MkMNCiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfUkFOR0VfQkFTRV9ISUdIICAgICAgICAg ICAgICAgRGV2aWNlUmFuZ2UyQmFzZUhpZ2g7ICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4 MzANCiAgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfUkFOR0VfQkFTRV9MT1cgICAgICAgICAgICAgICAg RGV2aWNlUmFuZ2UyQmFzZUxvdzsgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDB4MzQNCn0g Q1hMX0RWU0VDX0NYTF9ERVZJQ0U7DQoNCiNkZWZpbmUgQ1hMX0RWU0VDX0NYTF9ERVZJQ0VfUkVW SVNJT05fMSAgICAgICAgICAgICAgMHgxDQoNCi8vDQovLyBSZWdpc3RlciBMb2NhdG9yIERWU0VD DQovLyBDb21wdXRlIEV4cHJlc3MgTGluayBTcGVjaWZpY2F0aW9uIFJldmlzaW9uIDIuMCAtIENo YXB0ZXIgOC4xLjkgDQovLw0KDQp0eXBlZGVmIHVuaW9uIHsNCiAgc3RydWN0IHsNCiAgICBVSU5U MzIgICAgUmVnaXN0ZXJCaXIgICAgICAgICAgICAgOiAzOyAgICAgIC8vIGJpdCAwLi4yDQogICAg VUlOVDMyICAgIFJlc2VydmVkICAgICAgICAgICAgICAgIDogNTsgICAgICAvLyBiaXQgMy4uNw0K ICAgIFVJTlQzMiAgICBSZWdpc3RlckJsb2NrSWRlbnRpZmllciA6IDg7ICAgICAgLy8gYml0IDgu LjE1DQogICAgVUlOVDMyICAgIFJlZ2lzdGVyQmxvY2tPZmZzZXRMb3cgIDogMTY7ICAgICAvLyBi aXQgMTYuLjMxDQogIH0gQml0czsNCiAgVUlOVDMyICAgICAgVWludDMyOw0KfSBDWExfRFZTRUNf UkVHSVNURVJfTE9DQVRPUl9SRUdJU1RFUl9PRkZTRVRfTE9XOw0KDQp0eXBlZGVmIHVuaW9uIHsN CiAgc3RydWN0IHsNCiAgICBVSU5UMzIgICAgUmVnaXN0ZXJCbG9ja09mZnNldEhpZ2ggOiAzMjsg ICAgIC8vIGJpdCAwLi4zMQ0KICB9IEJpdHM7DQogIFVJTlQzMiAgICAgIFVpbnQzMjsNCn0gQ1hM X0RWU0VDX1JFR0lTVEVSX0xPQ0FUT1JfUkVHSVNURVJfT0ZGU0VUX0hJR0g7DQoNCnR5cGVkZWYg c3RydWN0IHsNCiAgQ1hMX0RWU0VDX1JFR0lTVEVSX0xPQ0FUT1JfUkVHSVNURVJfT0ZGU0VUX0xP VyAgICAgT2Zmc2V0TG93Ow0KICBDWExfRFZTRUNfUkVHSVNURVJfTE9DQVRPUl9SRUdJU1RFUl9P RkZTRVRfSElHSCAgICBPZmZzZXRIaWdoOw0KfSBDWExfRFZTRUNfUkVHSVNURVJfTE9DQVRPUl9S RUdJU1RFUl9CTE9DSzsNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICBQQ0lfRVhQUkVTU19FWFRFTkRF RF9DQVBBQklMSVRJRVNfSEVBREVSICAgICAgICAgICAgICBIZWFkZXI7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBvZmZzZXQgMHgwMA0KICBQQ0lfRVhQUkVTU19ERVNJR05BVEVE X1ZFTkRPUl9TUEVDSUZJQ19IRUFERVJfMSAgICAgICBEdnNlY0hlYWRlcjE7ICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBvZmZzZXQgMHgwNA0KICBQQ0lfRVhQUkVTU19ERVNJR05BVEVEX1ZF TkRPUl9TUEVDSUZJQ19IRUFERVJfMiAgICAgICBEdnNlY0hlYWRlcjI7ICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBvZmZzZXQgMHgwOA0KICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNlcnZlZDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBvZmZzZXQgMHgwQQ0KICBDWExfRFZTRUNfUkVHSVNURVJfTE9DQVRPUl9SRUdJ U1RFUl9CTE9DSyAgICAgICAgICAgICBSZWdpc3RlckJsb2NrWzBdOyAgICAgICAgICAgICAgICAg ICAgICAvLyBvZmZzZXQgMHgwQw0KDQp9IENYTF9EVlNFQ19SRUdJU1RFUl9MT0NBVE9SOw0KDQoj ZGVmaW5lIENYTF9EVlNFQ19SRUdJU1RFUl9MT0NBVE9SX1JFVklTSU9OXzAgICAgICAgICAgIDB4 MA0KDQovLw0KLy8gQ1hMIEhETSBEZWNvZGVyIENhcGFiaWxpdHkgSGVhZGVyIFJlZ2lzdGVyDQov LyBDb21wdXRlIEV4cHJlc3MgTGluayBTcGVjaWZpY2F0aW9uIFJldmlzaW9uIDIuMCAtIENoYXB0 ZXIgOC4yLjUuNSANCi8vIA0KdHlwZWRlZiB1bmlvbiB7DQogIHN0cnVjdCB7DQogICAgVUlOVDMy ICAgIEN4bENhcGFiaWxpdHlJZCAgICAgICAgICAgICAgICA6IDE2OyAgICAgIC8vIGJpdCAwLi4x NQ0KICAgIFVJTlQzMiAgICBDeGxDYXBhYmlsaXR5VmVyc2lvbiAgICAgICAgICAgOiAgNDsgICAg ICAvLyBiaXQgMTYuLjE5DQogICAgVUlOVDMyICAgIEN4bEhkbURlY29kZXJDYXBhYmlsaXR5UG9p bnRlciA6IDEyOyAgICAgIC8vIGJpdCAyMC4uMzENCiAgfSBCaXRzOw0KICBVSU5UMzIgICAgICBV aW50MzI7DQp9IENYTF9IRE1fREVDT0RFUl9DQVBBQklMSVRZX0hFQURFUl9SRUdJU1RFUjsNCg0K Ly8NCi8vIENYTCBIRE0gRGVjb2RlciBDYXBhYmlsaXR5IFJlZ2lzdGVyIA0KLy8gQ29tcHV0ZSBF eHByZXNzIExpbmsgU3BlY2lmaWNhdGlvbiBSZXZpc2lvbiAyLjAgLSBDaGFwdGVyIDguMi41LjEy IA0KLy8NCnR5cGVkZWYgdW5pb24gew0KICBzdHJ1Y3Qgew0KICAgIFVJTlQzMiAgICBEZWNvZGVy Q291bnQgICAgICAgICAgICAgICAgICAgOiA0OyAgICAgICAvLyBiaXQgMC4uMw0KICAgIFVJTlQz MiAgICBUYXJnZXRDb3VudCAgICAgICAgICAgICAgICAgICAgOiA0OyAgICAgICAvLyBiaXQgNC4u Nw0KICAgIFVJTlQzMiAgICBJbnRlcmxlYXZlQ2FwYWJsZUExMXRvOCAgICAgICAgOiAxOyAgICAg ICAvLyBiaXQgOA0KICAgIFVJTlQzMiAgICBJbnRlcmxlYXZlQ2FwYWJsZUExNHRvMTIgICAgICAg OiAxOyAgICAgICAvLyBiaXQgOQ0KICAgIFVJTlQzMiAgICBQb2lzb25PbkRlY29kZUVycm9yQ2Fw YWJpbGl0eSAgOiAxOyAgICAgICAvLyBiaXQgMTANCiAgICBVSU5UMzIgICAgUmVzZXJ2ZWQgICAg ICAgICAgICAgICAgICAgICAgIDogMjE7ICAgICAgLy8gYml0IDExLi4zMQ0KICB9IEJpdHM7DQog IFVJTlQzMiAgICAgIFVpbnQzMjsNCn0gQ1hMX0hETV9ERUNPREVSX0NBUEFCSUxJVFlfUkVHSVNU RVI7DQoNCnR5cGVkZWYgdW5pb24gew0KICBzdHJ1Y3Qgew0KICAgIFVJTlQzMiAgICBQb2lzb25P bkRlY29kZUVycm9yRW5hYmxlICA6IDE7ICAgICAgIC8vIGJpdCAwDQogICAgVUlOVDMyICAgIEhk bURlY29kZXJFbmFibGUgICAgICAgICAgIDogMTsgICAgICAgLy8gYml0IDENCiAgICBVSU5UMzIg ICAgUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgOiAzMDsgICAgICAvLyBiaXQgMi4uMzENCiAg fSBCaXRzOw0KICBVSU5UMzIgICAgICBVaW50MzI7DQp9IENYTF9IRE1fREVDT0RFUl9HTE9CQUxf Q09OVFJPTF9SRUdJU1RFUjsNCg0KdHlwZWRlZiB1bmlvbiB7DQogIHN0cnVjdCB7DQogICAgVUlO VDMyICAgIFJlc2VydmVkICAgICAgOiAyODsgICAgICAgLy8gYml0IDAuLjI3DQogICAgVUlOVDMy ICAgIE1lbW9yeUJhc2VMb3cgOiA0OyAgICAgICAgLy8gYml0IDI4Li4zMQ0KICB9IEJpdHM7DQog IFVJTlQzMiAgICAgIFVpbnQzMjsNCn0gQ1hMX0hETV9ERUNPREVSX0JBU0VfTE9XX1JFR0lTVEVS Ow0KDQp0eXBlZGVmIHVuaW9uIHsNCiAgc3RydWN0IHsNCiAgICBVSU5UMzIgICAgTWVtb3J5QmFz ZUhpZ2ggOiAzMjsgICAgICAvLyBiaXQgMC4uMzENCiAgfSBCaXRzOw0KICBVSU5UMzIgICAgICBV aW50MzI7DQp9IENYTF9IRE1fREVDT0RFUl9CQVNFX0hJR0hfUkVHSVNURVI7DQoNCnR5cGVkZWYg dW5pb24gew0KICBzdHJ1Y3Qgew0KICAgIFVJTlQzMiAgICBSZXNlcnZlZCAgICAgIDogMjg7ICAg ICAgIC8vIGJpdCAwLi4yNw0KICAgIFVJTlQzMiAgICBNZW1vcnlTaXplTG93IDogNDsgICAgICAg IC8vIGJpdCAyOC4uMzENCiAgfSBCaXRzOw0KICBVSU5UMzIgICAgICBVaW50MzI7DQp9IENYTF9I RE1fREVDT0RFUl9TSVpFX0xPV19SRUdJU1RFUjsNCg0KdHlwZWRlZiB1bmlvbiB7DQogIHN0cnVj dCB7DQogICAgVUlOVDMyICAgIE1lbW9yeVNpemVIaWdoIDogMzI7ICAgICAgLy8gYml0IDAuLjMx DQogIH0gQml0czsNCiAgVUlOVDMyICAgICAgVWludDMyOw0KfSBDWExfSERNX0RFQ09ERVJfU0la RV9ISUdIX1JFR0lTVEVSOw0KDQp0eXBlZGVmIHVuaW9uIHsNCiAgc3RydWN0IHsNCiAgICBVSU5U MzIgICAgSW50ZXJsZWF2ZUdyYW51bGFyaXR5IDogNDsgICAgICAgIC8vIGJpdCAwLi4zDQogICAg VUlOVDMyICAgIEludGVybGVhdmVXYXlzICAgICAgICA6IDQ7ICAgICAgICAvLyBiaXQgNC4uNw0K ICAgIFVJTlQzMiAgICBMb2NrT25Db21taXQgICAgICAgICAgOiAxOyAgICAgICAgLy8gYml0IDgN CiAgICBVSU5UMzIgICAgQ29tbWl0ICAgICAgICAgICAgICAgIDogMTsgICAgICAgIC8vIGJpdCA5 DQogICAgVUlOVDMyICAgIENvbW1pdHRlZCAgICAgICAgICAgICA6IDE7ICAgICAgICAvLyBiaXQg MTANCiAgICBVSU5UMzIgICAgRXJyb3JOb3RDb21taXR0ZWQgICAgIDogMTsgICAgICAgIC8vIGJp dCAxMQ0KICAgIFVJTlQzMiAgICBUYXJnZXREZXZpY2VUeXBlICAgICAgOiAxOyAgICAgICAgLy8g Yml0IDEyDQogICAgVUlOVDMyICAgIFJlc2VydmVkICAgICAgICAgICAgICA6IDE5OyAgICAgICAv LyBiaXQgMTMuLjMxDQogIH0gQml0czsNCiAgVUlOVDMyICAgICAgVWludDMyOw0KfSBDWExfSERN X0RFQ09ERVJfQ09OVFJPTF9SRUdJU1RFUjsNCg0KdHlwZWRlZiB1bmlvbiB7DQogIHN0cnVjdCB7 DQogICAgVUlOVDMyICAgIFRhcmdldFBvcnRJZGVudGlmZXJXYXkwIDogODsgICAgICAvLyBiaXQg MC4uNw0KICAgIFVJTlQzMiAgICBUYXJnZXRQb3J0SWRlbnRpZmVyV2F5MSA6IDg7ICAgICAgLy8g Yml0IDguLjE1DQogICAgVUlOVDMyICAgIFRhcmdldFBvcnRJZGVudGlmZXJXYXkyIDogODsgICAg ICAvLyBiaXQgMTYuLjIzDQogICAgVUlOVDMyICAgIFRhcmdldFBvcnRJZGVudGlmZXJXYXkzIDog ODsgICAgICAvLyBiaXQgMjQuLjMxDQogIH0gQml0czsNCiAgVUlOVDMyICAgICAgVWludDMyOw0K fSBDWExfSERNX0RFQ09ERVJfVEFSR0VUX0xJU1RfTE9XX1JFR0lTVEVSOw0KDQp0eXBlZGVmIHVu aW9uIHsNCiAgc3RydWN0IHsNCiAgICBVSU5UMzIgICAgUmVzZXJ2ZWQgICAgICA6IDI4OyAgICAg ICAvLyBiaXQgMC4uMjcNCiAgICBVSU5UMzIgICAgRHBhU2tpcExvdyAgICA6IDQ7ICAgICAgICAv LyBiaXQgMjguLjMxDQogIH0gQml0czsNCiAgVUlOVDMyICAgICAgVWludDMyOw0KfSBDWExfSERN X0RFQ09ERVJfRFBBX1NLSVBfTE9XX1JFR0lTVEVSOw0KDQp0eXBlZGVmIHVuaW9uIHsNCiAgc3Ry dWN0IHsNCiAgICBVSU5UMzIgICAgVGFyZ2V0UG9ydElkZW50aWZlcldheTQgOiA4OyAgICAgIC8v IGJpdCAwLi43DQogICAgVUlOVDMyICAgIFRhcmdldFBvcnRJZGVudGlmZXJXYXk1IDogODsgICAg ICAvLyBiaXQgOC4uMTUNCiAgICBVSU5UMzIgICAgVGFyZ2V0UG9ydElkZW50aWZlcldheTYgOiA4 OyAgICAgIC8vIGJpdCAxNi4uMjMNCiAgICBVSU5UMzIgICAgVGFyZ2V0UG9ydElkZW50aWZlcldh eTcgOiA4OyAgICAgIC8vIGJpdCAyNC4uMzENCiAgfSBCaXRzOw0KICBVSU5UMzIgICAgICBVaW50 MzI7DQp9IENYTF9IRE1fREVDT0RFUl9UQVJHRVRfTElTVF9ISUdIX1JFR0lTVEVSOw0KDQp0eXBl ZGVmIHVuaW9uIHsNCiAgc3RydWN0IHsNCiAgICBVSU5UMzIgICAgRHBhU2tpcEhpZ2ggOiAzMjsg ICAgIC8vIGJpdCAwLi4zMQ0KICB9IEJpdHM7DQogIFVJTlQzMiAgICAgIFVpbnQzMjsNCn0gQ1hM X0hETV9ERUNPREVSX0RQQV9TS0lQX0hJR0hfUkVHSVNURVI7DQoNCnR5cGVkZWYgdW5pb24gew0K ICBDWExfSERNX0RFQ09ERVJfVEFSR0VUX0xJU1RfTE9XX1JFR0lTVEVSICAgIFRhcmdldExpc3RM b3c7DQogIENYTF9IRE1fREVDT0RFUl9EUEFfU0tJUF9MT1dfUkVHSVNURVIgICAgICAgRHBhU2tp cExvdzsNCn0gQ1hMX0hETV9ERUNPREVSX1RBUkdFVF9MSVNUX09SX0RQQV9TS0lQX0xPVzsNCg0K dHlwZWRlZiB1bmlvbiB7DQogIENYTF9IRE1fREVDT0RFUl9UQVJHRVRfTElTVF9ISUdIX1JFR0lT VEVSICAgVGFyZ2V0TGlzdEhpZ2g7DQogIENYTF9IRE1fREVDT0RFUl9EUEFfU0tJUF9ISUdIX1JF R0lTVEVSICAgICAgRHBhU2tpcEhpZ2g7DQp9IENYTF9IRE1fREVDT0RFUl9UQVJHRVRfTElTVF9P Ul9EUEFfU0tJUF9ISUdIOw0KDQp0eXBlZGVmIHN0cnVjdCB7DQogIENYTF9IRE1fREVDT0RFUl9C QVNFX0xPV19SRUdJU1RFUiAgICAgICAgICAgICBEZWNvZGVyQmFzZUxvdzsgICAgICAgICAgICAg ICAgICAgLy8gMHgxMA0KICBDWExfSERNX0RFQ09ERVJfQkFTRV9ISUdIX1JFR0lTVEVSICAgICAg ICAgICAgRGVjb2RlckJhc2VIaWdoOyAgICAgICAgICAgICAgICAgIC8vIDB4MTQNCiAgQ1hMX0hE TV9ERUNPREVSX1NJWkVfTE9XX1JFR0lTVEVSICAgICAgICAgICAgIERlY29kZXJTaXplTG93OyAg ICAgICAgICAgICAgICAgICAvLyAweDE4DQogIENYTF9IRE1fREVDT0RFUl9TSVpFX0hJR0hfUkVH SVNURVIgICAgICAgICAgICBEZWNvZGVyU2l6ZUhpZ2g7ICAgICAgICAgICAgICAgICAgLy8gMHgx Yw0KICBDWExfSERNX0RFQ09ERVJfQ09OVFJPTF9SRUdJU1RFUiAgICAgICAgICAgICAgRGVjb2Rl ckNvbnRyb2w7ICAgICAgICAgICAgICAgICAgIC8vIDB4MjANCiAgQ1hMX0hETV9ERUNPREVSX1RB UkdFVF9MSVNUX09SX0RQQV9TS0lQX0xPVyAgIERlY29kZXJUYXJnZXRMaXN0RHBhU2tpcExvdzsg ICAgICAvLyAweDI0DQogIENYTF9IRE1fREVDT0RFUl9UQVJHRVRfTElTVF9PUl9EUEFfU0tJUF9I SUdIICBEZWNvZGVyVGFyZ2V0TGlzdERwYVNraXBIaWdoOyAgICAgLy8gMHgyOA0KICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzZXJ2ZWQ7ICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIDB4MkMNCn0gQ1hMX0hETV9ERUNPREVSOw0KDQovLw0KLy8gQ1hM IERldmljZSBDYXBhYmlsaXRpZXMgQXJyYXkgUmVnaXN0ZXINCi8vIENvbXB1dGUgRXhwcmVzcyBM aW5rIFNwZWNpZmljYXRpb24gUmV2aXNpb24gMi4wIC0gQ2hhcHRlciA4LjIuOC4xIA0KLy8NCg0K dHlwZWRlZiB1bmlvbiB7DQogIHN0cnVjdCB7DQogICAgVUlOVDY0ICAgIEN4bERldmljZUNhcGFi aWxpdHlJZCAgICAgIDogMTY7ICAgICAgLy8gYml0IDAuLjE1DQogICAgVUlOVDY0ICAgIEN4bERl dmljZUNhcGFiaWxpdHlWZXJzaW9uIDogODsgICAgICAgLy8gYml0IDE2Li4yMw0KICAgIFVJTlQ2 NCAgICBSZXNlcnZlZDEgICAgICAgICAgICAgICAgICA6IDg7ICAgICAgIC8vIGJpdCAyNC4uMzEN CiAgICBVSU5UNjQgICAgQ3hsRGV2aWNlQ2FwYWJpbGl0aWVzQ291bnQgOiAxNjsgICAgICAvLyBi aXQgMzIuLjQ3DQogICAgVUlOVDY0ICAgIFJlc2VydmVkMiAgICAgICAgICAgICAgICAgIDogMTY7 ICAgICAgLy8gYml0IDQ4Li42Mw0KICB9IEJpdHM7DQogIFVJTlQ2NCAgICAgIFVpbnQ2NDsNCn0g Q1hMX0RFVklDRV9DQVBBQklMSVRJRVNfQVJSQVlfUkVHSVNURVI7DQoNCi8vDQovLyBDWEwgTWVt b3J5IFN0YXR1cyBSZWdpc3Rlcg0KLy8gQ29tcHV0ZSBFeHByZXNzIExpbmsgU3BlY2lmaWNhdGlv biBSZXZpc2lvbiAyLjAgLSBDaGFwdGVyIDguMi44LjUNCi8vIA0KdHlwZWRlZiB1bmlvbiB7DQog IHN0cnVjdCB7DQogICAgVUlOVDY0ICAgIERldmljZUZhdGFsICAgICAgICAgICAgOiAxOyAgICAg ICAvLyBiaXQgMA0KICAgIFVJTlQ2NCAgICBGd0hhbHQgICAgICAgICAgICAgICAgIDogMTsgICAg ICAgLy8gYml0IDENCiAgICBVSU5UNjQgICAgTWVkaWFTdGF0dXMgICAgICAgICAgICA6IDI7ICAg ICAgIC8vIGJpdCAyLi4zDQogICAgVUlOVDY0ICAgIE1haWxib3hJbnRlcmZhY2VzUmVhZHkgOiAx OyAgICAgICAvLyBiaXQgNA0KICAgIFVJTlQ2NCAgICBSZXNldE5lZWRlZCAgICAgICAgICAgIDog MzsgICAgICAgLy8gYml0IDUuLjcNCiAgICBVSU5UNjQgICAgUmVzZXJ2ZWQgICAgICAgICAgICAg ICA6IDU2OyAgICAgIC8vIGJpdCA4Li42Mw0KICB9IEJpdHM7DQogIFVJTlQ2NCAgICAgIFVpbnQ2 NDsNCn0gQ1hMX01FTU9SWV9ERVZJQ0VfU1RBVFVTX1JFR0lTVEVSOw0KDQojcHJhZ21hIHBhY2so KQ0KDQojZW5kaWYNCg== --_002_DS7PR11MB61997D973C1FFC655931FB5CF005ADS7PR11MB6199namp_--