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 20468C982CC for ; Wed, 16 Sep 2026 15:41:17 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A8BB710EB26; Wed, 16 Sep 2026 15:41:16 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="Jo6baW1s"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id AFDCD10E94F for ; Wed, 16 Sep 2026 15:40:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1789573232; x=1821109232; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=03eU/zJCCxln/W311dmZIxIoTi3ZyKYZjz0OXietj+Y=; b=Jo6baW1spYjK81TdJBJQH4dTuytg7Ghh2DQcJsDOekueSr3gGXuLDjJK kBSzKYcxegPHFB98u+gQXzG/d8gG+YqWP9LEe27n2yG2y1jr8cDgDRNYH gQCUGeJV0p89X5XYe2ttrVVCXVm4C/liabB3356dHZjFeIWpp2GsTzWir uc8XvHhXuiESiHB5nvYlKlOqD7qHT0G3Cw+vzXIqYpcQyLSVNucriUZIY /P1hVEw4yROr0izRzmMFzUCLT6i2kjykIARgxT/Yd4W6hDQJvcw+6yd7N OuQK/Ndz5bGoJp1zgqX7n31Sus4P6K/d/zNm5V9a+CLx7JtJQ2Zm30yUw g==; X-CSE-ConnectionGUID: gIoc0VlVRda3Eas60Rt5ZA== X-CSE-MsgGUID: vM5uSRI3Tq6oMzSm+cYavg== X-IronPort-AV: E=McAfee;i="6800,10657,11905"; a="93656822" X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="93656822" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2026 08:40:32 -0700 X-CSE-ConnectionGUID: SBSYujKNR6ieGMNeTabd8w== X-CSE-MsgGUID: pHFvpXcnS5uCtRopeMLh/w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="272903741" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by orviesa008.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2026 08:40:32 -0700 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Wed, 16 Sep 2026 08:40:31 -0700 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46 via Frontend Transport; Wed, 16 Sep 2026 08:40:31 -0700 Received: from SN4PR0501CU005.outbound.protection.outlook.com (40.93.194.3) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Wed, 16 Sep 2026 08:40:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lxacRj5bNafZWJYCt6CO02pNnGVXkx+DmX2OFcOiKqd4xOt5w83ifqwYlkVlgZAM8k3yC2N8S4ubh+L0RnyOYlktATOw+AwuZGRaD4cvwHBFt32HPXMSqo2lHyQvn7PWBS9hyBfyhlFsMCY9k4OYGC1NzMBsopqTn0YGU4f3oIMuM/yU33lHZnjbBuoZcxFXWeMQpmzpYNOx9dQUy0y26pu2EhMDzGsQDgCgC23DpdAIyHJZfVbllE0/r7Aep5PX1czuDxR1SVKcJgVpRWV8OOv6RuNIuwPD5Z+yzpnZqSKwHWn/U1dP1fj94qipLOxA0MDnlLlETiubwlGhrrvVWw== 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=03eU/zJCCxln/W311dmZIxIoTi3ZyKYZjz0OXietj+Y=; b=mm+gC4sBrgC6AYgVroiCdjp4QkuoXAcj6vVUJSoBnOa2bcTljMEdnadjIuIh/lBjw9VmIMmz/NkEGWLX8yJi2f2zUZ3HVNEXb1FuFMymOxFGXZW4QqY2un81haw+1tOLW63R/ZI+6eE08YqAR3F7IzCv2QZiV47mCreJqkAn+O1maAKaOl5hq6tfNCjA6tlmShNrnLCTZJOtHzJEmOJCmP5FyAWoFMWMEX+wpxuF9iYLXc/e60qdFJyzRNQJPGolD/AJOoBvMWdY/shZYDDQv6Cw0Uaie0HOMN4tzXdk043AqJMooCvZ2ADFHzc2pYiJ0KwumII9xSxQpwTvohRzBQ== 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 CY8PR11MB7777.namprd11.prod.outlook.com (2603:10b6:930:71::14) by DM4PR11MB6453.namprd11.prod.outlook.com (2603:10b6:8:b6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Wed, 16 Sep 2026 15:40:29 +0000 Received: from CY8PR11MB7777.namprd11.prod.outlook.com ([fe80::5a6:cd7:969c:fa41]) by CY8PR11MB7777.namprd11.prod.outlook.com ([fe80::5a6:cd7:969c:fa41%4]) with mapi id 15.21.0406.007; Wed, 16 Sep 2026 15:40:28 +0000 From: "Govindapillai, Vinod" To: "igt-dev@lists.freedesktop.org" , "Samala, Pranay" CC: "Lattannavar, Sameer" , "B S, Karthik" , "Joshi, Kunal" Subject: Re: [PATCH i-g-t 7/7] tests/chamelium/kms_chamelium_hpd: Add HPD from runtime suspended D3hot Thread-Topic: [PATCH i-g-t 7/7] tests/chamelium/kms_chamelium_hpd: Add HPD from runtime suspended D3hot Thread-Index: AQHdPtLy5EUNmnsM40KMaZMwYvoLlLbRZb0A Date: Wed, 16 Sep 2026 15:40:28 +0000 Message-ID: <03523cc50d5f23dfbb0ec01d700c7692605e6cdf.camel@intel.com> References: <20260907142259.750528-1-pranay.samala@intel.com> <20260907142259.750528-8-pranay.samala@intel.com> In-Reply-To: <20260907142259.750528-8-pranay.samala@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.52.3-0ubuntu1.1 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: CY8PR11MB7777:EE_|DM4PR11MB6453:EE_ x-ms-office365-filtering-correlation-id: 05468c3f-d3f7-4e36-7204-08df1408d5cb x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|10070799003|366016|23010399003|1800799024|376014|38070700021|11063799006|56012099006|5023799004|4143699003|10067099003|18002099003|22082099003|6133799003|3023799007; x-microsoft-antispam-message-info: xtEpmcok02bsusg0ncJJOpmhjf6zTmSz8bmorjpDGSRg8TEPfDdQWtWJ/xZuEgR6InZpdcPX0yuf7ZyE+SRcjmwmrocbM0t/LOXkq9r9ClXaTLPJ6Ud+sq9UXXwrWEDDymPgFULeABbmuFusSAK9I6j7fRypJxU4OWmCbs92EDEeocdwl7+WDCY+uIKaIRT7DywDxeB+DWGYYnMiQ4O5tRG539jAhJm1IiOiTaUN68ulca1shFKlM5OQOeh7GOxIQ/Z7bmeSyBJ2cFeU3QPZrd4G7Ps24mxvthJTenh8CnT1sCOknREpkJVcM+RqJVjvVc+YUasahWM9+wtyJ634ke38pMZqSiuqKvsjfPEcXIMkUtg2GZtFf+n9fFshtGngSxLxwzZgOuISKt/rOAldcnxefucSZ/7NEGJOSQ8Sq9M85hvYdhqN1ICsnLLVEPfOAtKiUqZ0sqD+mEPnHsem+bHL04dUctekMLuJ0j0pJDl3FbAz/4SHRW8eLRk9IIdACvF3W1AFmKGizIBGzWJSHdW7NV2pM/nDwnhvMeqYu+1ntR3gT7auZXXfc+AClo6SUQPyN527qGo2Kg7Bo80dZ91boa7xY6sXyJCzVGbcFEhePjQlcncMg8DsICAX+1COt0Vq+5KriRp5vbgpOmFMOWuM7EdrBfB8I7OtfrjLGCxeCpKcIuRqJXvwhNZkjDEK3RrO8KXyKXZ4BzwdyKjd/HbTClAhFzxrGxtSIpiLBUI= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY8PR11MB7777.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(10070799003)(366016)(23010399003)(1800799024)(376014)(38070700021)(11063799006)(56012099006)(5023799004)(4143699003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RGwvVDZjc3FOOFZ1bmlKYXNya0RRTlJxL0JjZk1acG1pSW9qZTIxaVRZcVoy?= =?utf-8?B?SytZOGRoanpHclkrdU1senptcS9Vb3NFdDVwN2ttZmVOOUZLNktEdWpGTk1J?= =?utf-8?B?ZHFUNTlTLzR1TVRCRzJmTEhRSTVCT3RsTzc2Z3FWUkp3dkl2ZnBnVUtUQ24z?= =?utf-8?B?SVFJSTl2UzkwR2ZFZVZ2a3E3R3RQRDdyZzk2REwvR29ON04xRFdOR3hMQ0JL?= =?utf-8?B?NEJZVXorMHhmRUdIa2lNMnU2R20wbXJZOWhTZHFJM2ZDNlV3STZ6bUUwNDls?= =?utf-8?B?TlM5aUNqcmdvTU9SdERmR3FXT2xObWx0c0E1QnU0a0Z1SWhacnA5eTFDcW5X?= =?utf-8?B?SUxSRlNxR1R4UTNCcGMvWXhVY1VKdzJrWnBnenExYmZDQ01hN1RPaXliQ1dn?= =?utf-8?B?L3orMldYZjNvM21BR1QyR3M3WWxHUWpiV1FQOHBmRTJUZk5ycmhENXBpMEdm?= =?utf-8?B?ZUxTVk5tMWI2bXhhQzhqOG5ZYzNnTmpWekphYjV3RXgwaFF4MzF5SWUwUWxJ?= =?utf-8?B?NFR2RUF6NlVRSVMzaDE4b2R4dXNZZTBsNWpIeC9vVUp0WGVmeGRUb1pkejhR?= =?utf-8?B?S0F6bVdZNno4aTBxRERLbHBFK3RyeDNjaTZGMDlKc0hLSU5ZRm42cUoyd051?= =?utf-8?B?N1BEMGdTZVFWSDlLN1hyZjhhenhnNnZXcGVPOGNzS0pNSUFacEhyR1pHVnk1?= =?utf-8?B?d1dmZzNBeVhBVUN1amtWNHlEdFhEbmdEQkhTQ1k0UmduMlFRblFyL1FBaVZI?= =?utf-8?B?RGtmNC9tcmZROWxXckJ6SHhzMUl2YmdkcCsvRFp4OC8vT3JMZUpLdTZrMmxT?= =?utf-8?B?ZE9IbzdsUnJkL0l2UXd2cysxSGYyMVBqUm5ZajhnWm55dVdLeGN0cmRnb1Ax?= =?utf-8?B?TVBCZFNzUi8wVHlZOTI5Vm1SWXNEVjJXTFF6OHA0blpLYWttZHJXdWs2OWxG?= =?utf-8?B?OVY2Q3J4ZzNUWUJUS1RKeDYzRlNRVFptSmI0TXBtWGxyMGNzNXE4NjhRazVT?= =?utf-8?B?bU96a1pWRFdXZndpNERZdmdtVzVkUzFhcjBqQ3l3U2NXdWprQzlIREtHdkFF?= =?utf-8?B?d21ENlpqUTVYZFZvbVRCTDg4K2xEcmRqM2lYSkZHOEVjVTVYSnVNay9mVXlO?= =?utf-8?B?dnR2UVZUY1FPODZyYnI1QWdxOFBUZnJEUUFTL1pyMXp6RXdZbmJ1RWpTS1dt?= =?utf-8?B?N0h3S05zeWZxay9UVUQ0Z3ozN3p6MnR2OTc3b0R5SHJRSk9JN2puaWRON1M1?= =?utf-8?B?N2NocktRV0lSczNWanUwcnRRby9SU1VhZEZRS1h6NWhCUXAyQW1hN0xuTnpn?= =?utf-8?B?a3ZlVXFPWkU5U1ZHdlFoMWhjUnZDZnllT3kyeVlWZ2JSWHRGc2pXRHNhS2FC?= =?utf-8?B?YlU4NXM0SXg4RjR2MjNNWDg0SmNlZnVWUzVUUEpETm9WSlFtTzdtK3B6UW50?= =?utf-8?B?czJBQmY2ZDYrbzZPczdIZFRjNjR2d1EzMytpRWZ5Y0wvZ1YwZ0JxRjFUU1BY?= =?utf-8?B?UVJZS1ArK3ZZUWlhaVZncXA2TTduSE5acmMrYkhzZy9meW5uNm5DbVdMMHNq?= =?utf-8?B?SWxDK3IrRU8yRCtySVNkc3hTU0h1azZJeW1zdElobVVJWmlkV0s1elJTdlNK?= =?utf-8?B?aVBIUkxaWTZmTmhqMXNha2prVGUwRFR3Rk9CMWVNWjUvQldneGFhdDNxdEs4?= =?utf-8?B?bTZjMEIyQUlDUTJ0U1NrY1lCOUdlbnd6ZzZIWE05YlJWOGZ2Q1pJQk1CczFO?= =?utf-8?B?clpma1d4MHl3dUJTT05hWEtGeXY4TmdMRnJoU1ZDeElNVVh1VnBYVHA4RjBx?= =?utf-8?B?UkQxSGVLMXhPc0ZaMzQ1anVXWU5oZ1ZGMER0TjNuYmtVQ2ZiYTlnSHlXQUIz?= =?utf-8?B?OHU1a1VoczAvSEM4bEwxQXNybFltUkJ4RHVEUkxrTTdTUTV3dlFNeUJSelkv?= =?utf-8?B?ekI2Vk9TUW9xKzRlRGVJaC9XSFRMTk05UkRENWszRDRRdzVYTUExa1dmU29m?= =?utf-8?B?Vnp1M2lyaSs0TDhqQkxrMGRJWU5OVCt5azNHMUNRb01Qbll0N2hXTUNMK1VS?= =?utf-8?B?ZSs0cGcwOVRlb2hWWmNrZ2VvMk9kSUdDNWp6ZXc5VWtQczVqWXJUa2w0bU9D?= =?utf-8?B?RmFlYy9iYXhSTG5DdFR4VExtUnRGbXNzdXdhWHZYSUsyK1RFUHlJR2VjVEpS?= =?utf-8?B?T0hQdHlUTlFBQ0xkbk51aG5hL0RMcXB4Yy9GcDI4NW5NVHR3eVh0aHRCTGhk?= =?utf-8?B?U2xTdFFsYjdKaGY1UnRwVUtuN0ZWdlVHQmttOFpPOHFaWkZsQ05zV1hEQXlo?= =?utf-8?B?Kyt1NU9PQUpkc2pmc3c1UW5ZUDRYM3BuQmVjMGU3TzVkcUs1Q1NkRkdETjVs?= =?utf-8?Q?pT3YPAPFGMAv/E8l3Rut8+e2cxMbM7QI2ZON7G0jkAtxO?= x-ms-exchange-antispam-messagedata-1: dz3gwibPGaoPYBMsYNj9ull3CL2iwiqBe80= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: FHKzV/CX365NNBBOxq7aRCu+4y0xxJwiyHz604Deh4E5BTrFvYc2CRKPzYkm8wP5ClN6aKInCzupal7QLdpysIeynu9O++HG6B+G3fxIKeOlieZRXQ+4SHETu1/pBjOCIqL0QuTHskAt0qC3fBAVkw7odUHSiTbCiAWFB6weClVvrahQuMTbLQPkQ4Ql21jG/lQ6Nh4Gb/Pp7zOdPZBjqHjtPVVeM5dDyh6TLqrwK9jBajgv9unQlU56wh0m6YLQ8MX503WBPwXe+KyIx9mLZNmONiE+P2xyJQeWGIU7o2gJXQi36hCpJyO4SFhziLA9SJIVX7ka20flpdUO/RbCjg== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY8PR11MB7777.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05468c3f-d3f7-4e36-7204-08df1408d5cb X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Sep 2026 15:40:28.8998 (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: kYtJL5a6ZdOHQM6X65Tj4CvEPQ3RStNmptfrcWJlUN9+XPGBNZ0osiu2vcMXAdIKKIYExPutR8PaR6v6G+IcSEuHiKmn2cknfWSfyc2AOOE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6453 X-OriginatorOrg: intel.com X-BeenThere: igt-dev@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development mailing list for IGT GPU Tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" SGkgUHJhbmF5LA0KDQpDb3VwbGUgb2Ygc3VnZ2VzdGlvbnMuLg0KDQpTaG91bGQgdGhlIHRlc3Qg bmFtZSByZWZsZWN0IHRoZSBQTUUgLSBzb21ldGhpbmcgbGlrZSBkcC9oZG1pLWhwZC1wbWUtDQph ZnRlci1ydW50aW1lLXN1c3BlbmQtZDNob3Q/DQoNCkFsc28gbm93IC9zeXMvYnVzL3BjaS9kZXZp Y2VzLzAwMDA6MDA6MDIuMC9wb3dlci93YWtldXAgaXMgZW5hYmxlZCB0bw0KcnVuIHRoZSBhYm92 ZSB0ZXN0PyBEbyB3ZSBuZWVkIGEgdGVzdCB3aGVyZSBpdCBpcyBkaXNhYmxlZCBhbmQgc2VlIGl0 DQpnbyBiYWNrIHRvIHRvIEhQRCBwb2xsaW5nLg0KDQpCUg0KVmlub2QgIA0KDQpPbiBNb24sIDIw MjYtMDktMDcgYXQgMTk6NTIgKzA1MzAsIFByYW5heSBTYW1hbGEgd3JvdGU6DQo+IEFkZCBkcC1o cGQtYWZ0ZXItcnVudGltZS1zdXNwZW5kLWQzaG90IGFuZA0KPiBoZG1pLWhwZC1hZnRlci1ydW50 aW1lLXN1c3BlbmQtZDNob3QsIGNvdmVyaW5nIGEgaG90cGx1ZyBzaWduYWxsZWQgYnkNCj4gYQ0K PiBQTUUgd2hpbGUgdGhlIGRldmljZSBpcyBydW50aW1lIHN1c3BlbmRlZCBpbiBEM2hvdC4gVGhl IGV4aXN0aW5nDQo+ICotaHBkLWFmdGVyLXN1c3BlbmQgc3VidGVzdHMgdXNlIHN5c3RlbSBzdXNw ZW5kIGluc3RlYWQuDQo+IA0KPiBDaGVja2luZyBvbmx5IHRoYXQgdGhlIGRpc3BsYXkgY29tZXMg YmFjayB3b3VsZCBwYXNzIHdoZXRoZXIgb3Igbm90DQo+IHRoZQ0KPiBkcml2ZXIgZmVsbCBiYWNr IHRvIHRoZSB+MTBzIGNvbm5lY3RvciBwb2xsLCBzbyB0aGUgc3VidGVzdCBydW5zIHR3bw0KPiBw aGFzZXMgYWdhaW5zdCB0aGUgc2FtZSBzdXNwZW5kZWQgZGV2aWNlLg0KPiANCj4gUGhhc2UgMSBw YXJrcyB0aGUgZGV2aWNlIGluIEQzaG90IHdpdGggUE1FX0VuIHNldCBhbmQgc2FtcGxlcyB0aGUg RA0KPiBzdGF0ZSBmcm9tIHRoZSBQQ0kgUG93ZXIgTWFuYWdlbWVudCBDb250cm9sL1N0YXR1cyBy ZWdpc3RlciBhY3Jvc3MgYQ0KPiB3aW5kb3cgbG9uZ2VyIHRoYW4gdHdvIHBvbGwgcGVyaW9kcywg cmVxdWlyaW5nIHRoYXQgaXQgbmV2ZXIgbGVhdmVzDQo+IEQzaG90LiBBbnkgcmVzdW1lIHRoZXJl IG1lYW5zIHBvbGxpbmcgaXMgc3RpbGwgZW5hYmxlZC4NCj4gDQo+IFBoYXNlIDIgdG9nZ2xlcyB0 aGUgSFBEIGZyb20gdGhlIGNoYW1lbGl1bSBhbmQgcmVxdWlyZXMgYSBwcm9tcHQNCj4gdWV2ZW50 LA0KPiBhbiB1cGRhdGVkIGNvbm5lY3RvciBzdGF0dXMsIGFuZCBhbiBpbmNyZWFzZSBpbg0KPiBw b3dlci93YWtldXBfYWN0aXZlX2NvdW50LiBUaGUgY291bnRlciBpcyB3aGF0IHNob3dzIHRoZSBk ZXZpY2UNCj4gc2lnbmFsbGVkIGl0cyBvd24gcmVzdW1lIHJhdGhlciB0aGFuIHRoZSBob3N0IGlu aXRpYXRpbmcgb25lLg0KPiANCj4gQm90aCBwaGFzZXMgcmVwb3J0IHRoZSBEIHN0YXRlLCBQTUVf U3RhdHVzIGFuZCB0aGUgY291bnRlciBkZWx0YSBvbg0KPiBmYWlsdXJlIHJhdGhlciB0aGFuIGFz c2VydGluZyBhIGNhdXNlLCB3aGljaCBzZXBhcmF0ZXMgYSBkZXZpY2UgdGhhdA0KPiBuZXZlciBz aWduYWxsZWQgZnJvbSBvbmUgd2hvc2UgUE1FIHdhcyBub3QgZGVsaXZlcmVkIGFuZCBmcm9tIG9u ZQ0KPiB0aGF0DQo+IHJlc3VtZWQgYW5kIGRyb3BwZWQgdGhlIEhQRCBhZnRlcndhcmRzLg0KPiAN Cj4gQXNzaXN0ZWQtYnk6IEdpdEh1Yl9Db3BpbG90OmNsYXVkZS1vcHVzLTUNCj4gU2lnbmVkLW9m Zi1ieTogUHJhbmF5IFNhbWFsYSA8cHJhbmF5LnNhbWFsYUBpbnRlbC5jb20+DQo+IC0tLQ0KPiDC oHRlc3RzL2NoYW1lbGl1bS9rbXNfY2hhbWVsaXVtX2hwZC5jIHwgMzQ0DQo+ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysNCj4gwqAxIGZpbGUgY2hhbmdlZCwgMzQ0IGluc2VydGlvbnMoKykN Cj4gDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9jaGFtZWxpdW0va21zX2NoYW1lbGl1bV9ocGQuYw0K PiBiL3Rlc3RzL2NoYW1lbGl1bS9rbXNfY2hhbWVsaXVtX2hwZC5jDQo+IGluZGV4IGJkODczMWMw Mi4uMTEzNTAxOWM0IDEwMDY0NA0KPiAtLS0gYS90ZXN0cy9jaGFtZWxpdW0va21zX2NoYW1lbGl1 bV9ocGQuYw0KPiArKysgYi90ZXN0cy9jaGFtZWxpdW0va21zX2NoYW1lbGl1bV9ocGQuYw0KPiBA QCAtMzMsNiArMzMsNyBAQA0KPiDCoCAqLw0KPiDCoA0KPiDCoCNpbmNsdWRlICJrbXNfY2hhbWVs aXVtX2hlbHBlci5oIg0KPiArI2luY2x1ZGUgImlndF9kZXZpY2UuaCINCj4gwqANCj4gwqAvKioN Cj4gwqAgKiBTVUJURVNUOiBkcC1ocGQtZmFzdA0KPiBAQCAtMTE0LDYgKzExNSwxOCBAQA0KPiDC oCAqIERlc2NyaXB0aW9uOiBUb2dnbGUgSFBEIGR1cmluZyBTdXNwZW5kLCBjaGVjayB0aGF0IHVl dmVudHMgYXJlDQo+IHNlbnQgYW5kDQo+IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b25uZWN0b3Igc3RhdHVzIGlzIHVwZGF0ZWQNCj4gwqAgKg0KPiArICogU1VCVEVTVDogZHAtaHBk LWFmdGVyLXJ1bnRpbWUtc3VzcGVuZC1kM2hvdA0KPiArICogRGVzY3JpcHRpb246IFRvZ2dsZSBI UEQgd2hpbGUgcnVudGltZSBzdXNwZW5kZWQgaW4gRDNob3Qgd2l0aCBQTUUNCj4gc2lnbmFsbGlu Zw0KPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdmFpbGFibGUsIGNoZWNrIHRoYXQg Y29ubmVjdG9yIHBvbGxpbmcgc3RheWVkDQo+IGRpc2FibGVkLCB0aGF0IHRoZQ0KPiArICrCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZpY2Ugd29rZSBpdHNlbGYgdXAgYW5kIHRoYXQgdWV2 ZW50cyBhcmUgc2VudCBhbmQNCj4gY29ubmVjdG9yDQo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0YXR1cyBpcyB1cGRhdGVkDQo+ICsgKg0KPiArICogU1VCVEVTVDogaGRtaS1ocGQt YWZ0ZXItcnVudGltZS1zdXNwZW5kLWQzaG90DQo+ICsgKiBEZXNjcmlwdGlvbjogVG9nZ2xlIEhQ RCB3aGlsZSBydW50aW1lIHN1c3BlbmRlZCBpbiBEM2hvdCB3aXRoIFBNRQ0KPiBzaWduYWxsaW5n DQo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGF2YWlsYWJsZSwgY2hlY2sgdGhhdCBj b25uZWN0b3IgcG9sbGluZyBzdGF5ZWQNCj4gZGlzYWJsZWQsIHRoYXQgdGhlDQo+ICsgKsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldmljZSB3b2tlIGl0c2VsZiB1cCBhbmQgdGhhdCB1ZXZl bnRzIGFyZSBzZW50IGFuZA0KPiBjb25uZWN0b3INCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RhdHVzIGlzIHVwZGF0ZWQNCj4gKyAqDQo+IMKgICogU1VCVEVTVDogY29tbW9uLWhw ZC1hZnRlci1zdXNwZW5kDQo+IMKgICogRGVzY3JpcHRpb246IFRvZ2dsZSBIUEQgZHVyaW5nIHN1 c3BlbmQgb24gYWxsIGNvbm5lY3RvcnMsIGNoZWNrDQo+IHRoYXQgdWV2ZW50cw0KPiDCoCAqwqAJ CWFyZSBzZW50IGFuZCBjb25uZWN0b3Igc3RhdHVzIGlzIHVwZGF0ZWQNCj4gQEAgLTE1Miw2ICsx NjUsMzMgQEANCj4gwqAjZGVmaW5lIEhQRF9UT0dHTEVfQ09VTlRfRFBfSERNSSAxNQ0KPiDCoCNk ZWZpbmUgSFBEX1RPR0dMRV9DT1VOVF9GQVNUIDMNCj4gwqANCj4gKy8qDQo+ICsgKiBUaGUgS01T IGhlbHBlciBwb2xscyBjb25uZWN0b3JzIGV2ZXJ5IDEwcywgc28gd2F0Y2ggZm9yIGxvbmdlcg0K PiB0aGFuIHR3byBwb2xsDQo+ICsgKiBwZXJpb2RzOiBhIHNpbmdsZSBkZWxheWVkIG9yIGNvYWxl c2NlZCBwb2xsIHRoZW4gY2Fubm90IG1ha2UgdGhlDQo+IHRlc3QgcGFzcy4NCj4gKyAqLw0KPiAr I2RlZmluZSBQTUVfUE9MTF9QUk9PRl9XSU5ET1dfTVMgMjUwMDANCj4gKy8qDQo+ICsgKiBIb3cg b2Z0ZW4gdG8gc2FtcGxlIHRoZSBEIHN0YXRlIGR1cmluZyB0aGF0IHdpbmRvdy4gQ29uZmlnIHNw YWNlDQo+IHJlYWRzIGRvIG5vdA0KPiArICogcmVzdW1lIGEgZGV2aWNlIHN1c3BlbmRlZCBpbnRv IEQzaG90LCBzbyB0aGlzIGNhdGNoZXMgYSBwb2xsDQo+IGluZHVjZWQgcmVzdW1lDQo+ICsgKiB0 aGF0IGlzIHRvbyBicmllZiB0byBzdGFuZCBvdXQgaW4gdGhlIHJ1bnRpbWUgUE0gYWNjb3VudGlu Zy4NCj4gKyAqLw0KPiArI2RlZmluZSBQTUVfRF9TVEFURV9TQU1QTEVfTVMgMTAwDQo+ICsvKg0K PiArICogSWYgdGhlIGRldmljZSBuZXZlciBsZWF2ZXMgRDNob3QsIGFsbCBlbGFwc2VkIHRpbWUg aXMgYWNjb3VudGVkDQo+IHRvDQo+ICsgKiBydW50aW1lX3N1c3BlbmRlZF90aW1lIGFuZCBydW50 aW1lX2FjdGl2ZV90aW1lIGRvZXMgbm90IG1vdmUgYXQNCj4gYWxsLiBBbGxvdyBhDQo+ICsgKiBz bWFsbCBhbW91bnQgZm9yIG9uZSB1bnJlbGF0ZWQgd2FrZXVwIHJhdGhlciB0aGFuIHJlcXVpcmlu Zw0KPiBleGFjdGx5IHplcm8sDQo+ICsgKiB3aGlsZSBzdGF5aW5nIHdlbGwgdW5kZXIgd2hhdCB0 d28gb3IgdGhyZWUgcG9sbCBpbmR1Y2VkIHJlc3VtZXMNCj4gd291bGQgY29zdC4NCj4gKyAqLw0K PiArI2RlZmluZSBQTUVfQUNUSVZFX1RJTUVfU0xBQ0tfTVMgMTAwDQo+ICsvKiBUb2xlcmFuY2Ug Zm9yIGFjY291bnRpbmcgZ3JhbnVsYXJpdHkgYW5kIHVzbGVlcCgpIG92ZXJzaG9vdC4gKi8NCj4g KyNkZWZpbmUgUE1FX1BPTExfUFJPT0ZfU0xBQ0tfTVMgNTAwDQo+ICsvKg0KPiArICogQSBQTUUg aXMgZGVsaXZlcmVkIGFzIGFuIGludGVycnVwdCwgc28gdGhlIHdha2UgaXMgZXhwZWN0ZWQgdG8g YmUNCj4gcHJvbXB0LiBUaGUNCj4gKyAqIHdob2xlIHBvaW50IG9mIHRoZSBmZWF0dXJlIGlzIHRo YXQgdGhpcyBpcyBub3QgdGhlIH4xMHMgYSBwb2xsDQo+IHdvdWxkIHRha2UuDQo+ICsgKi8NCj4g KyNkZWZpbmUgUE1FX1dBS0VfTEFURU5DWV9NQVhfTVMgMzAwMA0KPiArI2RlZmluZSBQTUVfSFBE X1RPR0dMRV9ERUxBWV9NUyAxMDAwDQo+ICsNCj4gwqBlbnVtIHRlc3RfbW9kZXNldF9tb2RlIHsN Cj4gwqAJVEVTVF9NT0RFU0VUX09OLA0KPiDCoAlURVNUX01PREVTRVRfT05fT0ZGLA0KPiBAQCAt MzgzLDYgKzQyMywzMDIgQEAgc3RhdGljIHZvaWQNCj4gdGVzdF9zdXNwZW5kX3Jlc3VtZV9ocGRf Y29tbW9uKGNoYW1lbGl1bV9kYXRhX3QgKmRhdGEsDQo+IMKgCWlndF9jbGVhbnVwX3VldmVudHMo bW9uKTsNCj4gwqB9DQo+IMKgDQo+ICsvKg0KPiArICogTmFtZSBhIEQgc3RhdGUgcmVhZCBiYWNr IGZyb20gY29uZmlnIHNwYWNlLCBmb3IgZmFpbHVyZSBtZXNzYWdlcy4NCj4gUE1DUyBjYW5ub3QN Cj4gKyAqIHJlcG9ydCBEM2NvbGQgLSBhIGRldmljZSBpbiBEM2NvbGQgaXMgcmVzdW1lZCBieSB0 aGUgcmVhZCBpdHNlbGYNCj4gYW5kIGFuc3dlcnMNCj4gKyAqIGFzIEQwIC0gc28gYW4gdW5rbm93 biBzdGF0ZSBoZXJlIG1lYW5zIHRoZSByZWFkIGZhaWxlZCBvdXRyaWdodCwNCj4gaS5lLiB0aGUN Cj4gKyAqIGRldmljZSBoYXMgZ29uZSBhd2F5Lg0KPiArICovDQo+ICtzdGF0aWMgY29uc3QgY2hh ciAqcG1lX2Rfc3RhdGVfbmFtZShlbnVtIGlndF9hY3BpX2Rfc3RhdGUgc3RhdGUpDQo+ICt7DQo+ ICsJc3dpdGNoIChzdGF0ZSkgew0KPiArCWNhc2UgSUdUX0FDUElfRDA6DQo+ICsJCXJldHVybiAi RDAiOw0KPiArCWNhc2UgSUdUX0FDUElfRDE6DQo+ICsJCXJldHVybiAiRDEiOw0KPiArCWNhc2Ug SUdUX0FDUElfRDI6DQo+ICsJCXJldHVybiAiRDIiOw0KPiArCWNhc2UgSUdUX0FDUElfRDNIb3Q6 DQo+ICsJCXJldHVybiAiRDNob3QiOw0KPiArCWNhc2UgSUdUX0FDUElfRDNDb2xkOg0KPiArCQly ZXR1cm4gIkQzY29sZCI7DQo+ICsJZGVmYXVsdDoNCj4gKwkJcmV0dXJuICJhbiB1bnJlYWRhYmxl IHN0YXRlIjsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHRyeV9ocGRfcnVudGlt ZV9zdXNwZW5kX3BtZShjaGFtZWxpdW1fZGF0YV90ICpkYXRhLA0KPiArCQkJCQlzdHJ1Y3QgY2hh bWVsaXVtX3BvcnQgKnBvcnQsDQo+ICsJCQkJCXN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LA0K PiArCQkJCQlzdHJ1Y3QgdWRldl9tb25pdG9yICptb24sDQo+ICsJCQkJCWJvb2wgY29ubmVjdGVk KQ0KPiArew0KPiArCWRybU1vZGVDb25uZWN0aW9uIHRhcmdldF9zdGF0ZSA9IGNvbm5lY3RlZCA/ DQo+IERSTV9NT0RFX0RJU0NPTk5FQ1RFRCA6DQo+ICsJCQkJCQnCoMKgwqDCoA0KPiBEUk1fTU9E RV9DT05ORUNURUQ7DQo+ICsJaW50IHRpbWVvdXQgPSBDSEFNRUxJVU1fSE9UUExVR19USU1FT1VU Ow0KPiArCXVpbnQ2NF90IHN1c3BfYmVmb3JlLCBhY3RpdmVfYmVmb3JlLCB3YWtldXBzX2JlZm9y ZSwNCj4gd2FrZXVwc19hZnRlcjsNCj4gKwl1aW50NjRfdCB3YWtldXBzX2F0X3RvZ2dsZTsNCj4g Kwl1aW50NjRfdCBzdXNwX2RlbHRhLCBhY3RpdmVfZGVsdGE7DQo+ICsJc3RydWN0IHRpbWVzcGVj IHN0YXJ0LCBlbmQ7DQo+ICsJaW50IGxhdGVuY3k7DQo+ICsNCj4gKwlpZ3RfZmx1c2hfdWV2ZW50 cyhtb24pOw0KPiArDQo+ICsJaWd0X2Fzc2VydF9mKGlndF93YWl0X2Zvcl9wbV9zdGF0dXMoSUdU X1JVTlRJTUVfUE1fU1RBVFVTX1NVDQo+IFNQRU5ERUQpLA0KPiArCQnCoMKgwqDCoCAiRGV2aWNl IGRpZCBub3QgcnVudGltZSBzdXNwZW5kXG4iKTsNCj4gKw0KPiArCS8qDQo+ICsJICogSW50ZWwg Z3JhcGhpY3MgZGV2aWNlcyBzdXBwb3J0IFBNRSBpbiBEM2hvdCBidXQgbm90IGluDQo+IEQzY29s ZCwgYW5kIHhlDQo+ICsJICogY2hvb3NlcyB0aGUgdGFyZ2V0IHN0YXRlIGl0c2VsZiwgc28gdGhl cmUgaXMgbm90aGluZyB0bw0KPiBmb3JjZSBmcm9tDQo+ICsJICogdXNlcnNwYWNlLiBJbiBwcmFj dGljZSBhbiBpbnRlZ3JhdGVkIGRldmljZSBhbHdheXMgbGFuZHMNCj4gaW4gRDNob3QsDQo+ICsJ ICogc2luY2UgeGUgbmVlZHMgYW4gQUNQSSBfUFIzIHBvd2VyIHJlc291cmNlIG9uIHRoZQ0KPiB1 cHN0cmVhbSBwb3J0IGJlZm9yZQ0KPiArCSAqIGl0IGNvbnNpZGVycyBEM2NvbGQgYXQgYWxsLiBD aGVjayBhbnl3YXk6IG9uIGEgZGV2aWNlDQo+IHRoYXQgZGlkIGRyb3AgdG8NCj4gKwkgKiBEM2Nv bGQgdGhlcmUgaXMgbm8gUE1FIHRvIG9ic2VydmUgYW5kIGV2ZXJ5dGhpbmcgYmVsb3cNCj4gd291 bGQgb25seQ0KPiArCSAqIGV4ZXJjaXNlIHRoZSBwb2xsaW5nIGZhbGxiYWNrLCBzbyBza2lwLg0K PiArCSAqDQo+ICsJICogQSBkZXZpY2UgaW4gRDNjb2xkIGFuc3dlcnMgdGhpcyByZWFkIGFzIEQw IHJhdGhlciB0aGFuIGFzDQo+IEQzY29sZCwgZm9yDQo+ICsJICogdGhlIHJlYXNvbiBkZXNjcmli ZWQgYWJvdmUgcG1lX2Rfc3RhdGVfbmFtZSgpLCB3aGljaA0KPiBmYWlscyB0aGUgY2hlY2sNCj4g KwkgKiBqdXN0IHRoZSBzYW1lLg0KPiArCSAqLw0KPiArCWlndF9yZXF1aXJlX2YoaWd0X3BtX3Bj aV9nZXRfZF9zdGF0ZShwY2lfZGV2KSA9PQ0KPiBJR1RfQUNQSV9EM0hvdCwNCj4gKwkJwqDCoMKg wqDCoCAiRGV2aWNlIGlzIG5vdCBzdXNwZW5kZWQgaW4gRDNob3QsIHNvIHRoZXJlIGlzDQo+IG5v IFBNRSB0byAiDQo+ICsJCcKgwqDCoMKgwqAgIm9ic2VydmVcbiIpOw0KPiArDQo+ICsJLyoNCj4g KwkgKiBQTUVfRW4gaXMgdGhlIGRpcmVjdCBzaWduIHRoYXQgdGhlIGZlYXR1cmUgZW5nYWdlZDsN Cj4gd2l0aG91dCBpdCwgdGhlIHRlc3QNCj4gKwkgKiB3b3VsZCBvbmx5IGJlIG1lYXN1cmluZyB0 aGUgcG9sbGluZyBmYWxsYmFjay4NCj4gKwkgKi8NCj4gKwlpZ3RfYXNzZXJ0X2YoaWd0X3BtX3Bj aV9wbWVfZW5hYmxlZChwY2lfZGV2KSwNCj4gKwkJwqDCoMKgwqAgIlBNRV9FbiBpcyBub3Qgc2V0 IGFmdGVyIHN1c3BlbmRpbmcgaW50bw0KPiBEM2hvdFxuIik7DQo+ICsNCj4gKwkvKg0KPiArCSAq IFBoYXNlIDE6IGVuc3VyZSB0aGUgZGV2aWNlIHN0YXlzIGluIEQzaG90IHdoaWxlIGlkbGUuIElm DQo+IHBvbGxpbmcgcmVtYWlucyBvbiwNCj4gKwkgKiB0aGUgS01TIGhlbHBlciB3aWxsIHJlc3Vt ZSBpdCB0byBwcm9iZSBjb25uZWN0b3JzLg0KPiArCSAqLw0KPiArCXN1c3BfYmVmb3JlID0gaWd0 X3BtX2dldF9ydW50aW1lX3N1c3BlbmRlZF90aW1lKHBjaV9kZXYpOw0KPiArCWFjdGl2ZV9iZWZv cmUgPSBpZ3RfcG1fZ2V0X3J1bnRpbWVfYWN0aXZlX3RpbWUocGNpX2Rldik7DQo+ICsJd2FrZXVw c19iZWZvcmUgPSBpZ3RfcG1fZ2V0X3dha2V1cF9hY3RpdmVfY291bnQocGNpX2Rldik7DQo+ICsN Cj4gKwlpZ3RfYXNzZXJ0X2VxKGlndF9nZXR0aW1lKCZzdGFydCksIDApOw0KPiArCWRvIHsNCj4g KwkJZW51bSBpZ3RfYWNwaV9kX3N0YXRlIGRfc3RhdGUgPQ0KPiBpZ3RfcG1fcGNpX2dldF9kX3N0 YXRlKHBjaV9kZXYpOw0KPiArDQo+ICsJCS8qDQo+ICsJCSAqIERpc3Rpbmd1aXNoIHNlbGYtd29r ZW4gcmVzdW1lcyBmcm9tIGhvc3QtZHJpdmVuDQo+IG9uZXMuIEEgc2VsZi13YWtldXAgYnVtcHMN Cj4gKwkJICogd2FrZXVwX2FjdGl2ZV9jb3VudDsgYSBob3N0LWRyaXZlbiByZXN1bWUgZG9lcw0K PiBub3QuDQo+ICsJCSAqLw0KPiArCQlpZiAoZF9zdGF0ZSAhPSBJR1RfQUNQSV9EM0hvdCkgew0K PiArCQkJYm9vbCBzZWxmX3dva2U7DQo+ICsNCj4gKwkJCXdha2V1cHNfYWZ0ZXIgPQ0KPiBpZ3Rf cG1fZ2V0X3dha2V1cF9hY3RpdmVfY291bnQocGNpX2Rldik7DQo+ICsJCQlzZWxmX3dva2UgPSB3 YWtldXBzX2FmdGVyID4gd2FrZXVwc19iZWZvcmU7DQo+ICsNCj4gKwkJCWlndF9hc3NlcnRfZXEo aWd0X2dldHRpbWUoJmVuZCksIDApOw0KPiArCQkJaWd0X2Fzc2VydF9mKGZhbHNlLA0KPiArCQkJ CcKgwqDCoMKgICJEZXZpY2UgbGVmdCBEM2hvdCBpbnRvICVzDQo+IGFmdGVyICUuMGZtcyBvZiAi DQo+ICsJCQkJwqDCoMKgwqAgImEgJWRtcyBpZGxlIHdpbmRvdy5cbiINCj4gKwkJCQnCoMKgwqDC oCAid2FrZXVwX2FjdGl2ZV9jb3VudCAlIiBQUkl1NjQNCj4gIiAtPiAlIiBQUkl1NjQNCj4gKwkJ CQnCoMKgwqDCoCAiLCBzbyB0aGUgcmVzdW1lIHdhcw0KPiAlcy5cbiVzXG4iLA0KPiArCQkJCcKg wqDCoMKgIHBtZV9kX3N0YXRlX25hbWUoZF9zdGF0ZSksDQo+ICsJCQkJwqDCoMKgwqAgaWd0X3Rp bWVfZWxhcHNlZCgmc3RhcnQsICZlbmQpDQo+ICogMTAwMCwNCj4gKwkJCQnCoMKgwqDCoCBQTUVf UE9MTF9QUk9PRl9XSU5ET1dfTVMsDQo+ICsJCQkJwqDCoMKgwqAgd2FrZXVwc19iZWZvcmUsIHdh a2V1cHNfYWZ0ZXIsDQo+ICsJCQkJwqDCoMKgwqAgc2VsZl93b2tlID8gInNpZ25hbGxlZCBieSB0 aGUNCj4gZGV2aWNlIiA6DQo+ICsJCQkJCQkgImluaXRpYXRlZCBieSB0aGUNCj4gaG9zdCIsDQo+ ICsJCQkJwqDCoMKgwqAgc2VsZl93b2tlID8NCj4gKwkJCQnCoMKgwqDCoCAiTm8gaG90cGx1ZyB3 YXMgcmVxdWVzdGVkIHlldCwNCj4gc28gdGhpcyBpcyBhICINCj4gKwkJCQnCoMKgwqDCoCAic3B1 cmlvdXMgb3Igc3RpbGwgcGVuZGluZyBQTUUNCj4gcmF0aGVyIHRoYW4gIg0KPiArCQkJCcKgwqDC oMKgICJ0aGUgcG9sbGluZyBmYWxsYmFjay4iIDoNCj4gKwkJCQnCoMKgwqDCoCAiVGhlIHBvbGxp bmcgZmFsbGJhY2sgcmVzdW1lcw0KPiBvbiBhIDEwcyBwZXJpb2QsICINCj4gKwkJCQnCoMKgwqDC oCAib3IgMXMgd2hpbGUgYSBkZWxheWVkIGV2ZW50IGlzDQo+IHBlbmRpbmcsIHNvICINCj4gKwkJ CQnCoMKgwqDCoCAiY29tcGFyZSB0aGUgZWxhcHNlZCB0aW1lDQo+IGFib3ZlOiBhIHdha2UgYXQg YW4gIg0KPiArCQkJCcKgwqDCoMKgICJ1bnJlbGF0ZWQgZGVsYXkgaXMgc29tZSBvdGhlcg0KPiBj bGllbnQgb3IgIg0KPiArCQkJCcKgwqDCoMKgICJkcml2ZXIgdGFraW5nIGEgZGlzcGxheSBwb3dl cg0KPiByZWZlcmVuY2UgIg0KPiArCQkJCcKgwqDCoMKgICJyYXRoZXIgdGhhbiBjb25uZWN0b3IN Cj4gcG9sbGluZy4iKTsNCj4gKwkJfQ0KPiArDQo+ICsJCXVzbGVlcChQTUVfRF9TVEFURV9TQU1Q TEVfTVMgKiAxMDAwKTsNCj4gKw0KPiArCQlpZ3RfYXNzZXJ0X2VxKGlndF9nZXR0aW1lKCZlbmQp LCAwKTsNCj4gKwl9IHdoaWxlIChpZ3RfdGltZV9lbGFwc2VkKCZzdGFydCwgJmVuZCkgKiAxMDAw IDwNCj4gUE1FX1BPTExfUFJPT0ZfV0lORE9XX01TKTsNCj4gKw0KPiArCXN1c3BfZGVsdGEgPSBp Z3RfcG1fZ2V0X3J1bnRpbWVfc3VzcGVuZGVkX3RpbWUocGNpX2RldikgLQ0KPiBzdXNwX2JlZm9y ZTsNCj4gKwlhY3RpdmVfZGVsdGEgPSBpZ3RfcG1fZ2V0X3J1bnRpbWVfYWN0aXZlX3RpbWUocGNp X2RldikgLQ0KPiBhY3RpdmVfYmVmb3JlOw0KPiArDQo+ICsJaWd0X2luZm8oIklkbGUgZm9yICVk bXMgaW4gRDNob3Q6IHN1c3BlbmRlZCArJSIgUFJJdTY0ICJtcywNCj4gYWN0aXZlICslIiBQUkl1 NjQgIm1zXG4iLA0KPiArCQkgUE1FX1BPTExfUFJPT0ZfV0lORE9XX01TLCBzdXNwX2RlbHRhLA0K PiBhY3RpdmVfZGVsdGEpOw0KPiArDQo+ICsJLyoNCj4gKwkgKiBCZWx0IGFuZCBicmFjZXMgb24g dG9wIG9mIHRoZSBEIHN0YXRlIHNhbXBsaW5nIGFib3ZlLA0KPiB3aGljaCBjb3ZlcnMNCj4gKwkg KiByZXN1bWVzIHNob3J0ZXIgdGhhbiB0aGUgc2FtcGxlIGludGVydmFsOiB3aXRoIHRoZSBkZXZp Y2UNCj4gcGFya2VkIGluDQo+ICsJICogRDNob3QgZm9yIHRoZSB3aG9sZSB3aW5kb3csIGFsbCBv ZiB0aGUgZWxhcHNlZCB0aW1lIGlzDQo+IGFjY291bnRlZCB0bw0KPiArCSAqIHJ1bnRpbWVfc3Vz cGVuZGVkX3RpbWUgYW5kIHJ1bnRpbWVfYWN0aXZlX3RpbWUgc2hvdWxkDQo+IGJhcmVseSBtb3Zl Lg0KPiArCSAqLw0KPiArCWlndF9hc3NlcnRfZihhY3RpdmVfZGVsdGEgPD0gUE1FX0FDVElWRV9U SU1FX1NMQUNLX01TLA0KPiArCQnCoMKgwqDCoCAiRGV2aWNlIHdhcyBhY3RpdmUgZm9yICUiIFBS SXU2NCAibXMgb2YgYSAlZG1zDQo+IGlkbGUgd2luZG93LCAiDQo+ICsJCcKgwqDCoMKgICJzbyBp dCByZXN1bWVkIGZvciBzaG9ydGVyIHRoYW4gdGhlICVkbXMgc2FtcGxlDQo+IGludGVydmFsLiAi DQo+ICsJCcKgwqDCoMKgICJTb21ldGhpbmcgaXMgc3RpbGwgd2FraW5nIHRoZSBkZXZpY2Ugd2hp bGUNCj4gaWRsZSBhbmQgdGhlICINCj4gKwkJwqDCoMKgwqAgImZlYXR1cmUgc2F2ZXMgbm8gcG93 ZXJcbiIsDQo+ICsJCcKgwqDCoMKgIGFjdGl2ZV9kZWx0YSwgUE1FX1BPTExfUFJPT0ZfV0lORE9X X01TLA0KPiArCQnCoMKgwqDCoCBQTUVfRF9TVEFURV9TQU1QTEVfTVMpOw0KPiArCWlndF9hc3Nl cnRfbHRlKFBNRV9QT0xMX1BST09GX1dJTkRPV19NUyAtDQo+IFBNRV9QT0xMX1BST09GX1NMQUNL X01TLA0KPiArCQnCoMKgwqDCoMKgwqAgc3VzcF9kZWx0YSk7DQo+ICsNCj4gKwkvKg0KPiArCSAq IFBoYXNlIDI6IGZpcmUgdGhlIEhQRCBhbmQgY2hlY2sgdGhlIGRldmljZSB3YWtlcyB1cA0KPiBw cm9tcHRseS4gVGhlDQo+ICsJICogdG9nZ2xlIGlzIHNjaGVkdWxlZCBvdmVyIFhNTFJQQywgd2hp Y2ggdHJhdmVscyBvdmVyIHRoZQ0KPiBuZXR3b3JrIGFuZCBzbw0KPiArCSAqIGRvZXMgbm90IGRp c3R1cmIgdGhlIEdQVSB3aGlsZSB3ZSB3YWl0IGZvciB0aGUgdWV2ZW50Lg0KPiArCSAqDQo+ICsJ ICogVGFrZSBhIGZyZXNoIHdha2V1cCBiYXNlbGluZSByYXRoZXIgdGhhbiByZXVzaW5nIHRoZSBv bmUNCj4gZnJvbSBwaGFzZSAxLA0KPiArCSAqIHdoaWNoIGlzIGEgd2hvbGUgaWRsZSB3aW5kb3cg b2xkIGJ5IG5vdy4gUGhhc2UgMSBvbmx5DQo+IHJlcXVpcmVzIHRoYXQNCj4gKwkgKiB0aGUgZGV2 aWNlIHN0YXllZCBpbiBEM2hvdCwgd2hpY2ggYSBQTUUgdGhhdCByZXN1bWVkDQo+IG5vdGhpbmcg YXQgYWxsDQo+ICsJICogd291bGQgbm90IHZpb2xhdGUsIHNvIHRoZSBjb3VudGVyIGlzIG5vdCBn dWFyYW50ZWVkIHRvIGJlDQo+IHVuY2hhbmdlZC4NCj4gKwkgKi8NCj4gKwl3YWtldXBzX2F0X3Rv Z2dsZSA9IGlndF9wbV9nZXRfd2FrZXVwX2FjdGl2ZV9jb3VudChwY2lfZGV2KTsNCj4gKw0KPiAr CWNoYW1lbGl1bV9zY2hlZHVsZV9ocGRfdG9nZ2xlKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwNCj4g KwkJCQnCoMKgwqDCoMKgIFBNRV9IUERfVE9HR0xFX0RFTEFZX01TLA0KPiAhY29ubmVjdGVkKTsN Cj4gKw0KPiArCWlndF9hc3NlcnRfZXEoaWd0X2dldHRpbWUoJnN0YXJ0KSwgMCk7DQo+ICsJaWYg KCFjaGFtZWxpdW1fd2FpdF9mb3JfaG90cGx1Zyhtb24sICZ0aW1lb3V0KSkgew0KPiArCQllbnVt IGlndF9hY3BpX2Rfc3RhdGUgZF9zdGF0ZSA9DQo+IGlndF9wbV9wY2lfZ2V0X2Rfc3RhdGUocGNp X2Rldik7DQo+ICsJCWJvb2wgcGVuZGluZyA9IGlndF9wbV9wY2lfcG1lX3N0YXR1cyhwY2lfZGV2 KTsNCj4gKwkJY29uc3QgY2hhciAqY2F1c2U7DQo+ICsNCj4gKwkJd2FrZXVwc19hZnRlciA9DQo+ IGlndF9wbV9nZXRfd2FrZXVwX2FjdGl2ZV9jb3VudChwY2lfZGV2KTsNCj4gKw0KPiArCQkvKg0K PiArCQkgKiBJZiB0aGUgZGV2aWNlIHN0YXlzIGluIEQzaG90LCB0aGUgd2FrZSBpcyBmcm9tDQo+ IFBNRS4gSWYgaXQgcmV0dXJucyB0byBEMCwNCj4gKwkJICogdGhlIEhQRCB3YXMgaGFuZGxlZCBi eSB0aGUgZHJpdmVyIHJlc3VtZSBwYXRoLg0KPiArCQkgKi8NCj4gKwkJaWYgKGRfc3RhdGUgPT0g SUdUX0FDUElfRDNIb3QpDQo+ICsJCQljYXVzZSA9IHBlbmRpbmcgPw0KPiArCQkJCSJUaGUgZGV2 aWNlIHNpZ25hbGxlZCBhIFBNRSB0aGF0IHdhcw0KPiBuZXZlciAiDQo+ICsJCQkJImRlbGl2ZXJl ZCwgc28gdGhlIFBNRSBpcyBub3QNCj4gcmVhY2hpbmcgdGhlIE9TLiIgOg0KPiArCQkJCSJUaGUg ZGV2aWNlIG5ldmVyIHNpZ25hbGxlZCBhIFBNRSwNCj4gc28gdGhlIEhQRCAiDQo+ICsJCQkJImlz IG5vdCByZWFjaGluZyB0aGUgUE1FIGxvZ2ljLiI7DQo+ICsJCWVsc2UNCj4gKwkJCWNhdXNlID0g IlRoZSBkZXZpY2UgcmVzdW1lZCBidXQgc2VudCBubw0KPiB1ZXZlbnQsIHNvIHRoZSAiDQo+ICsJ CQkJIkhQRCB3YXMgZHJvcHBlZCBvbiB0aGUgcmVzdW1lDQo+IHBhdGguIjsNCj4gKw0KPiArCQlp Z3RfYXNzZXJ0X2YoZmFsc2UsDQo+ICsJCQnCoMKgwqDCoCAiTm8gaG90cGx1ZyB1ZXZlbnQgJWRz IGFmdGVyIGFuIEhQRA0KPiB0b2dnbGUgaW4gRDNob3QuXG4iDQo+ICsJCQnCoMKgwqDCoCAiRGV2 aWNlIGlzIGluICVzLCBQTUVfU3RhdHVzIGlzICVzLCAiDQo+ICsJCQnCoMKgwqDCoCAid2FrZXVw X2FjdGl2ZV9jb3VudCAlIiBQUkl1NjQgIiAtPiAlIg0KPiBQUkl1NjQgIi5cbiVzXG4iLA0KPiAr CQkJwqDCoMKgwqAgQ0hBTUVMSVVNX0hPVFBMVUdfVElNRU9VVCwNCj4gKwkJCcKgwqDCoMKgIHBt ZV9kX3N0YXRlX25hbWUoZF9zdGF0ZSksDQo+ICsJCQnCoMKgwqDCoCBwZW5kaW5nID8gInNldCIg OiAiY2xlYXIiLA0KPiArCQkJwqDCoMKgwqAgd2FrZXVwc19hdF90b2dnbGUsIHdha2V1cHNfYWZ0 ZXIsDQo+IGNhdXNlKTsNCj4gKwl9DQo+ICsJaWd0X2Fzc2VydF9lcShpZ3RfZ2V0dGltZSgmZW5k KSwgMCk7DQo+ICsNCj4gKwlsYXRlbmN5ID0gaWd0X3RpbWVfZWxhcHNlZCgmc3RhcnQsICZlbmQp ICogMTAwMCAtDQo+ICsJCcKgIFBNRV9IUERfVE9HR0xFX0RFTEFZX01TOw0KPiArDQo+ICsJLyoN Cj4gKwkgKiB3YWtldXBfYWN0aXZlX2NvdW50IGluY3JlbWVudGluZyBtZWFucyB0aGUgcmVzdW1l IHdhcw0KPiBzaWduYWxsZWQgYnkgdGhlDQo+ICsJICogZGV2aWNlIGl0c2VsZiwgaS5lLiBieSBh IFBNRS4gVW5saWtlIFBNRV9TdGF0dXMsIHdoaWNoDQo+IHRoZSBQQ0kvUE0gY29yZQ0KPiArCSAq IGNsZWFycyBvbiB0aGUgd2F5IGJhY2sgdG8gRDAsIHRoaXMgY291bnRlciBzdXJ2aXZlcyB0aGUN Cj4gcmVzdW1lIGFuZCBzbw0KPiArCSAqIGlzIG5vdCByYWN5IHRvIHNhbXBsZSBoZXJlLg0KPiAr CSAqLw0KPiArCXdha2V1cHNfYWZ0ZXIgPSBpZ3RfcG1fZ2V0X3dha2V1cF9hY3RpdmVfY291bnQo cGNpX2Rldik7DQo+ICsNCj4gKwlpZ3RfaW5mbygiSFBEIHRvIHVldmVudCBsYXRlbmN5ICVkbXMs IHdha2V1cF9hY3RpdmVfY291bnQgJSINCj4gUFJJdTY0ICIgLT4gJSIgUFJJdTY0ICJcbiIsDQo+ ICsJCSBsYXRlbmN5LCB3YWtldXBzX2F0X3RvZ2dsZSwgd2FrZXVwc19hZnRlcik7DQo+ICsNCj4g KwlpZ3RfYXNzZXJ0X2Yod2FrZXVwc19hZnRlciA+IHdha2V1cHNfYXRfdG9nZ2xlLA0KPiArCQnC oMKgwqDCoCAicG93ZXIvd2FrZXVwX2FjdGl2ZV9jb3VudCBkaWQgbm90IGluY3JlbWVudCwNCj4g c28gdGhlIHJlc3VtZSAiDQo+ICsJCcKgwqDCoMKgICJ3YXMgbm90IHRyaWdnZXJlZCBieSBhIFBN RSBmcm9tIHRoZQ0KPiBkZXZpY2VcbiIpOw0KPiArCWlndF9hc3NlcnRfbHQobGF0ZW5jeSwgUE1F X1dBS0VfTEFURU5DWV9NQVhfTVMpOw0KPiArDQo+ICsJY2hhbWVsaXVtX2Fzc2VydF9yZWFjaGFi bGUoZGF0YS0+Y2hhbWVsaXVtLCBPTkxJTkVfVElNRU9VVCk7DQo+ICsJaWd0X2Fzc2VydF9lcShj aGFtZWxpdW1fcmVwcm9iZV9jb25uZWN0b3IoJmRhdGEtPmRpc3BsYXksDQo+ICsJCQkJCQnCoCBk YXRhLT5jaGFtZWxpdW0sDQo+IHBvcnQpLA0KPiArCQnCoMKgwqDCoMKgIHRhcmdldF9zdGF0ZSk7 DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBNaXJyb3Igb2YgdGhlIGRyaXZlcidzIG93biBIQVNf UE1fUE1FX1NVUFBPUlQoKTogb25seSB4ZSByZXBvcnRzDQo+IFBNRQ0KPiArICogY2FwYWJpbGl0 eSB0byB0aGUgZGlzcGxheSBjb2RlLCBhbmQgb25seSBmcm9tIGdyYXBoaWNzIElQIDM1LjEwDQo+ IG9uLg0KPiArICovDQo+ICsjZGVmaW5lIFBNRV9IUERfTUlOX0dSQVBISUNTX1ZFUlgxMDAgMzUw MA0KPiArDQo+ICtzdGF0aWMgYm9vbCBwbWVfaHBkX3N1cHBvcnRlZChpbnQgZmQpDQo+ICt7DQo+ ICsJY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbmZvOw0KPiArDQo+ICsJaWYgKCFp c194ZV9kZXZpY2UoZmQpKQ0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwlpbmZvID0gaW50 ZWxfZ2V0X2RldmljZV9pbmZvKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsNCj4gKw0KPiArCXJl dHVybiBpbmZvLT5ncmFwaGljc192ZXIgKiAxMDAgKyBpbmZvLT5ncmFwaGljc19yZWwgPj0NCj4g KwnCoMKgwqDCoMKgwqAgUE1FX0hQRF9NSU5fR1JBUEhJQ1NfVkVSWDEwMDsNCj4gK30NCj4gKw0K PiArc3RhdGljIGNvbnN0IGNoYXIgdGVzdF9ocGRfcnVudGltZV9zdXNwZW5kX3BtZV9kZXNjW10g PQ0KPiArCSJUb2dnbGUgSFBEIHdoaWxlIHJ1bnRpbWUgc3VzcGVuZGVkIGluIEQzaG90IHdpdGgg UE1FDQo+IHNpZ25hbGxpbmcgIg0KPiArCSJhdmFpbGFibGUsIGNoZWNrIHRoYXQgY29ubmVjdG9y IHBvbGxpbmcgc3RheWVkIGRpc2FibGVkLA0KPiB0aGF0IHRoZSAiDQo+ICsJImRldmljZSB3b2tl IGl0c2VsZiB1cCBhbmQgdGhhdCB1ZXZlbnRzIGFyZSBzZW50IGFuZA0KPiBjb25uZWN0b3Igc3Rh dHVzICINCj4gKwkiaXMgdXBkYXRlZCI7DQo+ICtzdGF0aWMgdm9pZCB0ZXN0X2hwZF9ydW50aW1l X3N1c3BlbmRfcG1lKGNoYW1lbGl1bV9kYXRhX3QgKmRhdGEsDQo+ICsJCQkJCSBzdHJ1Y3QgY2hh bWVsaXVtX3BvcnQNCj4gKnBvcnQpDQo+ICt7DQo+ICsJc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9k ZXY7DQo+ICsJc3RydWN0IHVkZXZfbW9uaXRvciAqbW9uOw0KPiArDQo+ICsJcGNpX2RldiA9IGln dF9kZXZpY2VfZ2V0X3BjaV9kZXZpY2UoZGF0YS0+ZHJtX2ZkKTsNCj4gKw0KPiArCS8qDQo+ICsJ ICogV2l0aG91dCBkcml2ZXIgc3VwcG9ydCB0aGUgZGV2aWNlIGtlZXBzIEhQRCBwb2xsaW5nDQo+ IGVuYWJsZWQgYW5kIHBoYXNlDQo+ICsJICogMSB3b3VsZCBmYWlsIHJhdGhlciB0aGFuIHNraXAs IHNvIGdhdGUgb24gdGhlIHBsYXRmb3JtDQo+IGJlZm9yZSBsb29raW5nDQo+ICsJICogYXQgdGhl IGhhcmR3YXJlIGNhcGFiaWxpdHkgYXQgYWxsLg0KPiArCSAqLw0KPiArCWlndF9yZXF1aXJlX2Yo cG1lX2hwZF9zdXBwb3J0ZWQoZGF0YS0+ZHJtX2ZkKSwNCj4gKwkJwqDCoMKgwqDCoCAiRHJpdmVy IGRvZXMgbm90IHVzZSBQTUUgZm9yIEhQRCBvbiB0aGlzDQo+IHBsYXRmb3JtXG4iKTsNCj4gKw0K PiArCWlndF9yZXF1aXJlX2YoaWd0X3BtX3BjaV9wbWVfc3VwcG9ydGVkKHBjaV9kZXYsDQo+IElH VF9BQ1BJX0QzSG90KSwNCj4gKwkJwqDCoMKgwqDCoCAiRGV2aWNlIGRvZXMgbm90IGFkdmVydGlz ZSBQTUUgc3VwcG9ydCBpbg0KPiBEM2hvdFxuIik7DQo+ICsJaWd0X3JlcXVpcmVfZihpZ3RfcG1f aGFzX3dha2V1cF9zdXBwb3J0KHBjaV9kZXYpLA0KPiArCQnCoMKgwqDCoMKgICJEZXZpY2UgZG9l cyBub3QgZXhwb3NlIHBvd2VyL3dha2V1cFxuIik7DQo+ICsJaWd0X3JlcXVpcmUoaWd0X3NldHVw X3J1bnRpbWVfcG0oZGF0YS0+ZHJtX2ZkKSk7DQo+ICsJaWd0X3JlcXVpcmVfaHBkX3N0b3JtX2N0 bChkYXRhLT5kcm1fZmQpOw0KPiArDQo+ICsJLyoNCj4gKwkgKiBOZWVkIGJvdGg6IFBNRSBpcyBv bmx5IGFybWVkIHdoZW4gZGV2aWNlX21heV93YWtldXAoKSBpcw0KPiB0cnVlLCBhbmQNCj4gKwkg KiB3aXRob3V0IHdha2V1cCBzdXBwb3J0IHRoZSBQTSBjb3JlIG5ldmVyIHJlY29yZHMgdGhlIFBN RQ0KPiB3YWtldXAuDQo+ICsJICovDQo+ICsJaWd0X3BtX3NldF93YWtldXBfZW5hYmxlZChwY2lf ZGV2LCB0cnVlKTsNCj4gKw0KPiArCS8qDQo+ICsJICogU2F2ZSB0aGUgcG9sbCBzZXR0aW5nIHNv IGEgcHJldmlvdXMgdGVzdCBjYW5ub3QgbGVhdmUgaXQNCj4gZGlzYWJsZWQgYW5kDQo+ICsJICog ZmFrZSBhIHBhc3MuIFBvbGxpbmcgbXVzdCBzdGF5IGVuYWJsZWQ7IHRoZSB0ZXN0IGNoZWNrcw0K PiB0aGF0IHRoZSBkcml2ZXINCj4gKwkgKiBkb2VzIG5vdCB1c2UgaXQgd2hlbiBQTUUgaXMgYXZh aWxhYmxlLg0KPiArCSAqLw0KPiArCWlndF9yZXF1aXJlKGlndF9wbV9rbXNfcG9sbF9zYXZlKCkp Ow0KPiArCWlndF9wbV9rbXNfcG9sbF9zZXQodHJ1ZSk7DQo+ICsNCj4gKwkvKiBEb24ndCBsZXQg b3VyIG93biB0b2dnbGVzIHRyaXAgdGhlIHN0b3JtIGRldGVjdGlvbiBpbnRvDQo+IHBvbGxpbmcu ICovDQo+ICsJaWd0X2hwZF9zdG9ybV9zZXRfdGhyZXNob2xkKGRhdGEtPmRybV9mZCwgMCk7DQo+ ICsNCj4gKwlpZ3RfbW9kZXNldF9kaXNhYmxlX2FsbF9vdXRwdXRzKCZkYXRhLT5kaXNwbGF5KTsN Cj4gKw0KPiArCW1vbiA9IGlndF93YXRjaF91ZXZlbnRzKCk7DQo+ICsJY2hhbWVsaXVtX3Jlc2V0 X3N0YXRlKCZkYXRhLT5kaXNwbGF5LCBkYXRhLT5jaGFtZWxpdW0sIHBvcnQsDQo+ICsJCQnCoMKg wqDCoMKgIGRhdGEtPnBvcnRzLCBkYXRhLT5wb3J0X2NvdW50KTsNCj4gKw0KPiArCS8qIFBvcnRz IGFyZSBsZWZ0IGRpc2Nvbm5lY3RlZCBieSB0aGUgcmVzZXQsIHNvIHBsdWcgZmlyc3QuDQo+ICov DQo+ICsJdHJ5X2hwZF9ydW50aW1lX3N1c3BlbmRfcG1lKGRhdGEsIHBvcnQsIHBjaV9kZXYsIG1v biwNCj4gZmFsc2UpOw0KPiArDQo+ICsJLyogTm93IGNoZWNrIHdlIG5vdGljZSBhIGRpc2Nvbm5l Y3Qgc2lnbmFsbGVkIGZyb20gRDNob3QNCj4gdG9vLiAqLw0KPiArCXRyeV9ocGRfcnVudGltZV9z dXNwZW5kX3BtZShkYXRhLCBwb3J0LCBwY2lfZGV2LCBtb24sIHRydWUpOw0KPiArDQo+ICsJaWd0 X2NsZWFudXBfdWV2ZW50cyhtb24pOw0KPiArCWlndF9ocGRfc3Rvcm1fcmVzZXQoZGF0YS0+ZHJt X2ZkKTsNCj4gKwlpZ3RfcG1fa21zX3BvbGxfcmVzdG9yZSgpOw0KPiArCWlndF9wbV9yZXN0b3Jl X3dha2V1cCgpOw0KPiArfQ0KPiArDQo+IMKgc3RhdGljIGNvbnN0IGNoYXIgdGVzdF9ocGRfd2l0 aG91dF9kZGNfZGVzY1tdID0NCj4gwqAJIkRpc2FibGUgRERDIG9uIGEgVkdBIGNvbm5lY3Rvciwg Y2hlY2sgd2Ugc3RpbGwgZ2V0IGEgdWV2ZW50DQo+IG9uIGhvdHBsdWciOw0KPiDCoHN0YXRpYyB2 b2lkIHRlc3RfaHBkX3dpdGhvdXRfZGRjKGNoYW1lbGl1bV9kYXRhX3QgKmRhdGEsDQo+IEBAIC01 MDAsNiArODM2LDEwIEBAIGludCBpZ3RfbWFpbigpDQo+IMKgCWNvbm5lY3Rvcl9zdWJ0ZXN0KCJk cC1ocGQtYWZ0ZXItaGliZXJuYXRlIiwgRGlzcGxheVBvcnQsDQo+ICZkYXRhLCB0ZXN0X3N1c3Bl bmRfcmVzdW1lX2hwZCwNCj4gwqAJCQnCoCBTVVNQRU5EX1NUQVRFX0RJU0ssIFNVU1BFTkRfVEVT VF9ERVZJQ0VTKTsNCj4gwqANCj4gKwlpZ3RfZGVzY3JpYmUodGVzdF9ocGRfcnVudGltZV9zdXNw ZW5kX3BtZV9kZXNjKTsNCj4gKwljb25uZWN0b3Jfc3VidGVzdCgiZHAtaHBkLWFmdGVyLXJ1bnRp bWUtc3VzcGVuZC1kM2hvdCIsDQo+IERpc3BsYXlQb3J0LA0KPiArCQkJwqAgJmRhdGEsIHRlc3Rf aHBkX3J1bnRpbWVfc3VzcGVuZF9wbWUpOw0KPiArDQo+IMKgCWlndF9kZXNjcmliZSh0ZXN0X2hw ZF9zdG9ybV9kZXRlY3RfZGVzYyk7DQo+IMKgCWNvbm5lY3Rvcl9zdWJ0ZXN0KCJkcC1ocGQtc3Rv cm0iLCBEaXNwbGF5UG9ydCwgJmRhdGEsDQo+IHRlc3RfaHBkX3N0b3JtX2RldGVjdCwNCj4gwqAJ CQnCoCBIUERfU1RPUk1fUFVMU0VfSU5URVJWQUxfRFApOw0KPiBAQCAtNTM4LDYgKzg3OCwxMCBA QCBpbnQgaWd0X21haW4oKQ0KPiDCoAljb25uZWN0b3Jfc3VidGVzdCgiaGRtaS1ocGQtYWZ0ZXIt aGliZXJuYXRlIiwgSERNSUEsICZkYXRhLA0KPiB0ZXN0X3N1c3BlbmRfcmVzdW1lX2hwZCwNCj4g wqAJCQnCoCBTVVNQRU5EX1NUQVRFX0RJU0ssIFNVU1BFTkRfVEVTVF9ERVZJQ0VTKTsNCj4gwqAN Cj4gKwlpZ3RfZGVzY3JpYmUodGVzdF9ocGRfcnVudGltZV9zdXNwZW5kX3BtZV9kZXNjKTsNCj4g Kwljb25uZWN0b3Jfc3VidGVzdCgiaGRtaS1ocGQtYWZ0ZXItcnVudGltZS1zdXNwZW5kLWQzaG90 IiwNCj4gSERNSUEsDQo+ICsJCQnCoCAmZGF0YSwgdGVzdF9ocGRfcnVudGltZV9zdXNwZW5kX3Bt ZSk7DQo+ICsNCj4gwqAJaWd0X2Rlc2NyaWJlKHRlc3RfaHBkX3N0b3JtX2RldGVjdF9kZXNjKTsN Cj4gwqAJY29ubmVjdG9yX3N1YnRlc3QoImhkbWktaHBkLXN0b3JtIiwgSERNSUEsICZkYXRhLA0K PiB0ZXN0X2hwZF9zdG9ybV9kZXRlY3QsDQo+IMKgCQkJwqAgSFBEX1NUT1JNX1BVTFNFX0lOVEVS VkFMX0hETUkpOw0KDQo=