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 0D5DAC52D7C for ; Fri, 23 Aug 2024 05:24:15 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AD22710EC21; Fri, 23 Aug 2024 05:24:14 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="VEwkyvJw"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.16]) by gabe.freedesktop.org (Postfix) with ESMTPS id 23B9310EC21 for ; Fri, 23 Aug 2024 05:24:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1724390653; x=1755926653; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=tRjMvO68mDFIlDQCd0NXq/7oEDLnKVV7/6oIdKz5fRc=; b=VEwkyvJwWA23owTtuzkhc7V4MhvxSUDN4AvfHeDVaItCGx84UPoKINQi +zKzXkHx632MM4oUHMVkBqdp4Brvwd55ikpS53+ZQ5tPTEy28Jyu4gKlh BLciMKg8H/MGao07P1vlEsqtn5OSN1zlKThBiyMjXNCLSJpA2bDVH8iHE zmcd0PEFYm2R+hhmJkzKAFxprJjAFSL4mytZl/2LclzZDAlaUbuoPuVja I6mIQ352S1rrpgorQ2hwazQ/EQUUY94e8BNjfEiokVa3dvwU+KhDzHY4Z EG30dxZt5PuTPKxbjzqB85U1y7bdQV0A4rkv49BpRiH5tq08iclHu1uLQ Q==; X-CSE-ConnectionGUID: AQ1CSDPlQR6AKNPIqJekew== X-CSE-MsgGUID: Xhnpm81VQbKoF2qNptBMuQ== X-IronPort-AV: E=McAfee;i="6700,10204,11172"; a="22967821" X-IronPort-AV: E=Sophos;i="6.10,169,1719903600"; d="scan'208";a="22967821" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Aug 2024 22:24:13 -0700 X-CSE-ConnectionGUID: hnWYLJwaT+Wpnr2U6mghFA== X-CSE-MsgGUID: p316VDyYR5+PhVop2Q3COw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,169,1719903600"; d="scan'208";a="65890080" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmviesa003.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 22 Aug 2024 22:24:14 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 22 Aug 2024 22:24:12 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Thu, 22 Aug 2024 22:24:12 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.40) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Thu, 22 Aug 2024 22:24:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PuTEIAeQP1EMtiv4M8OrAlSGmEa2GBB3vFlvvx9Pg+yoA0jmQ8mofCkzL1qm85ETIX3Ms4+Qfbt2bUtqSzkx85bPrgosWEz8M7d8a/5kdpFFhRu4fpegtPoJ/gPLJ05bVcqs6ZUde2kcmtZqlKM3nONJs5YbCSKkzq266q9qBM290/sQP3YIMhxCnZRes87n3hhJ26xia7tMhx8/bbLN/YIJApZYGL1HcMOmW3wJW1/Zjc/Cqtooh9TXsWVzny40RMV4TEqUPktq4UapujXN53F1MI44gDpSWAmt/fex4a7J7QDjUThqhf8USaIftofO+/r1thftQ3dzffUrgQ2rcA== 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=tRjMvO68mDFIlDQCd0NXq/7oEDLnKVV7/6oIdKz5fRc=; b=jg3boOBY1GLIx1s1v1UFcOdgy+oIeaYIYBDJn1E4Sn9n1cH25Zla7y3+Wrl6DXj8SAwrX7rLvtZoP5pPvzMT5guXhh2wN15pFTuExvjmbpefKSj3Ia7f9xCRsj1GslYLIJkFjbVLnyNg4mkB50VwQ6nWZoRnitaKkB/8DOWJJbHReyuWlBEL7WXTaQpkTYQ8L7B4mChMr7fpp7c1Gtm5h4dnTdK45xuBWKTUxisSWkVG87/d0z+aEboGL3DmHa5DbQ0GC7xsBTOtz/83uZQjaTHwlR5JzBRZd+RwX8JUjYgaw+MgCdemQFgQ6XwYgvi+S3M74+hPUolOSTe5B/3m/Q== 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 DM4PR11MB6019.namprd11.prod.outlook.com (2603:10b6:8:60::5) by DM6PR11MB4531.namprd11.prod.outlook.com (2603:10b6:5:2a5::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7897.19; Fri, 23 Aug 2024 05:24:07 +0000 Received: from DM4PR11MB6019.namprd11.prod.outlook.com ([fe80::fc1:e80f:134c:5ed2]) by DM4PR11MB6019.namprd11.prod.outlook.com ([fe80::fc1:e80f:134c:5ed2%3]) with mapi id 15.20.7897.014; Fri, 23 Aug 2024 05:24:07 +0000 From: "Hogander, Jouni" To: "Kandpal, Suraj" , "intel-gfx@lists.freedesktop.org" CC: "Murthy, Arun R" , "Manna, Animesh" , "jani.nikula@linux.intel.com" Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Thread-Topic: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Thread-Index: AQHawgLiGl+DcXoIHk+b/IcyBx7F/7IzW0aAgAFRrwCAAAhdAA== Date: Fri, 23 Aug 2024 05:24:07 +0000 Message-ID: References: <20240619043756.2068376-1-suraj.kandpal@intel.com> <20240619043756.2068376-3-suraj.kandpal@intel.com> <10be50e89952324062170828e3a055774fd28768.camel@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR11MB6019:EE_|DM6PR11MB4531:EE_ x-ms-office365-filtering-correlation-id: a3a1a637-0ae5-4467-26d8-08dcc333cfdf x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?bC8yRlIrOEg2Y3J3NG51cWxIcmNWL1B1T0ZSVTFaWEt1UjVMRkluMG4wS3h6?= =?utf-8?B?MWs3VE9BNmlPVzdETWxHc1ZrU2dpc3pvRUczL09TMHdSbkpmanB3aVJYNDNn?= =?utf-8?B?dUE1OVNTTUhwYVgwdjV6QVJoVVlYM29CdjBwZS85K3pOUG9jdnVWUC9yNE1C?= =?utf-8?B?ajd5L0xIeE9CbHh0Ump5M0t4Wk5yMHRtd2Vrc2FJQUt0YlE4cThWbVBDMkND?= =?utf-8?B?WUdLeWlIYnRzUCtGdXpLeklva0N4dkNlN3VVVkVjWjB5VVdvMkJlYUZBOWRh?= =?utf-8?B?b2IyZ1pLZjNYSjg1dVJNY2E5bUdKZ0pxSXgvU2ltS2RRTnJsdGc0c3ZlSlFj?= =?utf-8?B?S254Zk1IcFMwMDV2M01LaW5udWIvcFRJdEhYZWJGVEpjR1V4KzZhcGdSbUNU?= =?utf-8?B?b2tYbnRCWi9OQzRNRnFDd0I1d2JTRGxFT2tqTTB2WjVPeUNPVnpGNzBUMTFH?= =?utf-8?B?SVYwQ2RDWWpFN3BjVzNYcFMyYS8yQWRNVmxodGFRTm50NDdvYXZaM0dJZm5E?= =?utf-8?B?cTlDWXUvVzhIYm9RSm9xSzN3d1RlR25aWGlWMFRNMFZ2L1NNVGRlVnh2K1pu?= =?utf-8?B?d2Vvc1VCVWo3bVI3amhkWnJuYzVNVkdjUVNiT1ZUQzZnQWdHdXNPUTJyWnlS?= =?utf-8?B?MXRMeG12U1Vyc3ozcUo2NGV4UzRoVzhlMUQzcTdWSldNMkpnV2ZVRmlsT2FZ?= =?utf-8?B?S1hyT25NUGRFVU5jT3NWZmQ1ekx2SDI1M2RwMjc0UjlkVjJwVk1UTG5tckdj?= =?utf-8?B?QS9aL01PR2VONm1sZXlJeEsxOFJydjQyaDE5YWVtbncydU5sUFZEdk45TGlD?= =?utf-8?B?QXp0MGZIYk1OZ2oyMWlkc0pIRmZnUEZjaVV6d1Buc1Y1R0pzWXJaM0RmV3hL?= =?utf-8?B?bkZORUhKMThWOHYyUVpIaHVmejNyQjRvTTdKNXp6OGRLOVZaMHFwZys0ejEx?= =?utf-8?B?Y2hlVEdCdFMycGc2R2dXS01oR2FXMERzUXN5Sk1mQWVOcDIrZWk0bFJGT2tn?= =?utf-8?B?azhyM3l1WUExbDNzcU84RVN3MkRLZ0ExMG1FRWsxL3BjNFdTbzNLR0JWaHVm?= =?utf-8?B?TlhrSWpZNFU1K3V5ME5PeUdxNWE4MEZSMHg0enRqWFoxU2p4Z0J1NjhGZXhv?= =?utf-8?B?dWNDWWRuc091UmlBMjduaCtCblhva3I4TlRFSGsvSVowTS9PWEZhQmlCckdU?= =?utf-8?B?MEtNcXEydHFCWnM5b2RPZ09hV0Z4bEpuNkhLT3pkQjdFRDcvMHV0S1FMMlRm?= =?utf-8?B?b213SUovT2RKenNGTU5scHFWQ0liUXB6Z2FueUlQdExtNGRpWUVtVm5wdDhS?= =?utf-8?B?WGhIRXphdFhVSkNIcS9CK0Vya2Jtc3NLeGtyZG1NMWFvejdHS1FoYURtTmRU?= =?utf-8?B?M0k4MHl5bS9PMi9zbGF5Y292VEhFK0U2d0ZYOXlMWFdBWHFoZjVKUnZ5emw1?= =?utf-8?B?UVVZWVRsbFNlcTFnay9JZ3ZsVlQyTXFxY0o0WjJyQzRrWHRNazVBT0oyTDZI?= =?utf-8?B?WDRNdXhnOFpFd3h4ZVEvVDlFMWxzMGRQaVkvdk1mR290bWs1L2NrN093UzV6?= =?utf-8?B?bVNJT2FlNWIzOGFtckVpclh4TEZMNHhPdWc1NHo0Q2xhZmEydS8rak1LNGFJ?= =?utf-8?B?RmJ6c05NZm94anpyY3dzblV1SmtnY1BWZjh0MytoTWVKeU9kaC8xQWtZb3Ju?= =?utf-8?B?UzFSZy9vMlIwdDFXN1hnKzJBcVo4cTI0TlRPZG9uanlONTNFd3pDQWZ2UFhp?= =?utf-8?B?U3lTZEFYOXNyWGNPc2NtNVJ3OUVyT1NjQ2NYNHNTbC9hNUFSR09UU3cxZkd3?= =?utf-8?B?K2JHVVFDV1NQUEpNdm43bUhrV1dVTllRUFdzRFBOZ3ZOdS9HTDNBYVg4dEl5?= =?utf-8?B?NHpxSUVMdkdja1R5cnlVTklqNE04MXl1a0pqN21hRE82c0E9PQ==?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB6019.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?LytZZ21tdTRFUk03K3BhaWN4UVNzOElIWWc2TzZyZ3J0eFRNUTZDZExKODlD?= =?utf-8?B?VlIvUUVSU2E0QWU2NE1uN1RTVi9zeVBFSTlVMG91cFVNdUEza3RPV1RXdGtK?= =?utf-8?B?Z1VDazU4VFp1WmFhMVN4OU0zV1dUT3NISzd6RkN3Y3BabC9PMDh3MHp1WGJP?= =?utf-8?B?YVV6R1BJaWV2ZXQ5WjBMVVFoV04vaXhlamlSZmExSTJ5MkJsTm9YQ0Y4bjUx?= =?utf-8?B?MFpONCtoM3NWMGx5ZU1UTDlxUkhyMlgyekZ1K1lHd2VRR3FMKzJZRWhUMnF4?= =?utf-8?B?SlZZckQzekxqSE9WSnpzZGFiUllBcy94OFo5bS8xT0NTb2RlZkRIUG9KNHl0?= =?utf-8?B?QjU3d1FCQXRJQkFwWm02OGwxbytPNVpLc2QyZC96T0xYcWRUSWhSUGw3N0E4?= =?utf-8?B?RDYrWDhFK1FyQkNsVUhiN2lKSTFJNGlBT3FQbElIOFRPWllBR2RmSjZZMzlL?= =?utf-8?B?RWNodndMR0d5dFIybHZkbU10dGtqYlk2NnQ2b2pGWkpGL0EvSVRoWXJxK2g0?= =?utf-8?B?a2l3eVFReGtYTUFhMGFRdDloWURBZ1ZWN2FQbnRpRFB1QkhPelkxL3dTdHFl?= =?utf-8?B?YlFyUjYya3cxeStweFMva2dCYVc3SEJ0bXZGcHdGbVVKQkNVZm0wOHRPVlZi?= =?utf-8?B?NEVadnFNZE5BYU5HZDN4SWJXNVhubk5DL0JhVGhWbnJ0SFVKOGorOFlQMkhy?= =?utf-8?B?SlRkaEpacnBTM1BodlB3K1dvaVBsNVQ1aTZXUkNqdG1ZWThzV21wZDFLZEh5?= =?utf-8?B?R0dGb2pSZldNdkhaenZaNmMwRXA2TndmaFZONkl4WmFKMndRcXJVUEZHN2Rm?= =?utf-8?B?Vms4NXEyd1Z3RzR3U0tZSEFOVlQ5Y0c0dVo5VDNuMEI2K3dWUGxOQngydUdJ?= =?utf-8?B?dlFSNGhsRDQxeE5wdDJSY2hGbGJxSDVSdnRBbEZuTEVEOHByaWVURFJvWVBa?= =?utf-8?B?NDJvV3Q1RlBkalhPLzVaVVIzUEYzcWVlckRSc1dleWpJU3dDNE5McFQ1SVpu?= =?utf-8?B?LzF2cDhmbUYwZ1ZPNkhveng2TENrQ3ExTGpycnlGY1VsNVdnRzFXTk5acDdK?= =?utf-8?B?RDB2YTgwbllZQlJvRjkwcEZyRkRLUE5rUUVyQUxzUTFLQm5oZW1ZOUxSRktm?= =?utf-8?B?RVFrckVwWWtUWHRKK0tGOHJMN25CcXZIdW11K1MwQjR5akpCZkMycWgxS2hY?= =?utf-8?B?RDhIZzdkMk9CYlY4UTlZTENTV2hoNE9vMFBWaHdTRHo2VVpOWjBkTm1NM1A1?= =?utf-8?B?YnRkcWpkbEhWQVl4TTVNa1JMVjJCWWNDVVlMdWl0bStsY00wcHpuUUVqdWFG?= =?utf-8?B?Q0taUG1jNnE5clAycWIyYXRzTll4NUU4M21QK2pmejlLV3hoYXIyYmRPV3Jz?= =?utf-8?B?VVluTG9BTEFIUUdvTDgzNXlobXlMb1N0UERXaVo1ZHBCTHRoR1k3OGJPT2xJ?= =?utf-8?B?NTdIVUpENUVhSmFTaFQyUHlOZTJwSEdseVMzVFZOQzA3WjUya3k4WklNc1c4?= =?utf-8?B?VUs2YVY1Vi9FbGYrQVpWYjhhc3lEVS9rTXBjRWZOdHVveFpKa0FYbUtFcDR1?= =?utf-8?B?cmczUmZtT28xZ1RNM0NBWEtrdzcxUTNLd1dLbXJOc1l6WkZmNXdnd3VJeWxr?= =?utf-8?B?bVVpYVdSK01yWWlRODNUTGFsT3lLZ28rMDU3bWhUVEQzTE1ncmdlcVdWTkh5?= =?utf-8?B?ZjNhdkZsT05aekQxREl1d1RQZzByd01mNURQWVRlZzJyd0drUE9JNkE4M05a?= =?utf-8?B?L1J5K3JsbGFrbHVXczhxaWdLNnpJSGRPNis4ZjB1ZkhZMm1TTWRsK00ycVB1?= =?utf-8?B?M0M4bkFteFByamJqSGJVenZ5Q29rT3Exa0JJb2R6S0M5Zk5mNEU4a0FtRWc1?= =?utf-8?B?Y3haN1VIYVh3bFQ2Rm43QnkvR3RQNWxEMis4Skt3Vm5sTWtQRkdSUGNTSHNL?= =?utf-8?B?U3JlcHpmUGtCMzdueVVjbDJKVHcyc3RmMFFDaWVGWDNqV1JhekUvMGduWkRp?= =?utf-8?B?aGMySGtZd1BXV1FsdGNsRnI3UGtTRUhsc1FrajNiWUFuYXpIUGdDMnBXWEdC?= =?utf-8?B?WElPOHd4VVVYMEE3YUM3NFc2VnAzWnRQdEdNQW92V3FPRTJNeTNpc2t3NXRW?= =?utf-8?B?ZkxWWWtSL1A4UFk0T2x3em05RGlOdXlYTm1YUExwV0hkUzcrZjc3MnF6dXlM?= =?utf-8?B?L2c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <2BA59B3DA3ACF946899C2D2996C25BD4@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB6019.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a3a1a637-0ae5-4467-26d8-08dcc333cfdf X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Aug 2024 05:24:07.7496 (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: Vi1NPKl1aFJ3celffLJ3xby/QTZ4ilXLFs9/Hzg23cJAX8SXTIxePb3gv78hp9m2m2JgvIQV7eEeXXhVgBlQheXutKckUhcu1s2Jb9Qt1dk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4531 X-OriginatorOrg: intel.com X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gRnJpLCAyMDI0LTA4LTIzIGF0IDA0OjU0ICswMDAwLCBLYW5kcGFsLCBTdXJhaiB3cm90ZToN Cj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogSG9nYW5k ZXIsIEpvdW5pIDxqb3VuaS5ob2dhbmRlckBpbnRlbC5jb20+DQo+ID4gU2VudDogVGh1cnNkYXks IEF1Z3VzdCAyMiwgMjAyNCAyOjE2IFBNDQo+ID4gVG86IEthbmRwYWwsIFN1cmFqIDxzdXJhai5r YW5kcGFsQGludGVsLmNvbT47IGludGVsLQ0KPiA+IGdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcN Cj4gPiBDYzogTXVydGh5LCBBcnVuIFIgPGFydW4uci5tdXJ0aHlAaW50ZWwuY29tPjsgTWFubmEs IEFuaW1lc2gNCj4gPiA8YW5pbWVzaC5tYW5uYUBpbnRlbC5jb20+OyBqYW5pLm5pa3VsYUBsaW51 eC5pbnRlbC5jb20NCj4gPiBTdWJqZWN0OiBSZTogW1BBVENIIDIvMl0gZHJtL2k5MTUvcHNyOiBJ bXBsbWVudCBXQSB0byBoZWxwIHJlYWNoDQo+ID4gUEMxMA0KPiA+IA0KPiA+IE9uIFdlZCwgMjAy NC0wNi0xOSBhdCAxMDowNyArMDUzMCwgU3VyYWogS2FuZHBhbCB3cm90ZToNCj4gPiA+IFRvIHJl YWNoIFBDMTAgd2hlbiBQS0dfQ19MQVRFTkNZIGlzIGNvbmZpZ3VyZSB3ZSBtdXN0IGRvIHRoZQ0K PiA+IGZvbGxvd2luZw0KPiA+ID4gdGhpbmdzDQo+ID4gPiAxKSBFbnRlciBQU1IxIG9ubHkgd2hl biBkZWxheWVkX3ZibGFuayA8IDYgbGluZXMgYW5kIERDNSBjYW4gYmUNCj4gPiA+IGVudGVyZWQN Cj4gPiA+IDIpIEFsbG93IFBTUjIgZGVlcCBzbGVlcCB3aGVuIERDNSBjYW4gYmUgZW50ZXJlZA0K PiA+ID4gMykgREM1IGNhbiBiZSBlbnRlcmVkIHdoZW4gYWxsIHRyYW5zb2NvZGVyIGhhdmUgZWl0 aGVyIFBTUjEsIFBTUjINCj4gPiA+IG9yDQo+ID4gPiBlRFAgMS41IFBSIEFMUE0gZW5hYmxlZCBh bmQgVkJJIGlzIGRpc2FibGVkIGFuZCBmbGlwcyBhbmQgcHVzaGVzDQo+ID4gPiBhcmUNCj4gPiA+ IG5vdCBoYXBwZW5pbmcuDQo+ID4gPiANCj4gPiA+IC0tdjINCj4gPiA+IC1Td2l0Y2ggY29uZGl0 aW9uIGFuZCBkbyBhbiBlYXJseSByZXR1cm4gW0phbmldIC1EbyBzb21lIGNoZWNrcw0KPiA+ID4g aW4NCj4gPiA+IGNvbXB1dGVfY29uZmlnIFtKYW5pXSAtRG8gbm90IHVzZSByZWdpc3RlciByZWFk cyBhcyBhIG1ldGhvZCBvZg0KPiA+ID4gY2hlY2tpbmcgc3RhdGVzIGZvciBEUEtHQyBvciBkZWxh eWVkIHZibGFuayBbSmFuaV0gLVVzZSBhbm90aGVyDQo+ID4gPiB3YXkgdG8NCj4gPiA+IHNlZSBp cyB2YmxhbmsgaW50ZXJydXB0cyBhcmUgZGlzYWJsZWQgb3Igbm90IFtKYW5pXQ0KPiA+ID4gDQo+ ID4gPiBXQTogMTYwMjM0OTcyMjYNCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFN1cmFqIEthbmRwYWwg PHN1cmFqLmthbmRwYWxAaW50ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiDCoC4uLi9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaMKgwqDCoCB8wqAgMiArDQo+ID4gPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmPCoMKgwqDCoMKgIHwgODINCj4g PiA+ICsrKysrKysrKysrKysrKysrKy0NCj4gPiA+IMKgMiBmaWxlcyBjaGFuZ2VkLCA4MyBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ID4gPiANCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiA+ID4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiA+ID4g aW5kZXggNDZiM2NiZWI0YTgyLi4wMzFmOGU4ODliNjUgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiA+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgNCj4g PiA+IEBAIC0xNzA4LDYgKzE3MDgsOCBAQCBzdHJ1Y3QgaW50ZWxfcHNyIHsNCj4gPiA+IMKgwqDC oMKgwqDCoMKgwqBib29sIHNpbmtfc3VwcG9ydDsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBib29s IHNvdXJjZV9zdXBwb3J0Ow0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGJvb2wgZW5hYmxlZDsNCj4g PiA+ICvCoMKgwqDCoMKgwqDCoGJvb2wgZGVsYXllZF92Ymxhbms7DQo+ID4gPiArwqDCoMKgwqDC oMKgwqBib29sIGlzX2Rwa2djX2NvbmZpZ3VyZWQ7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgYm9v bCBwYXVzZWQ7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgZW51bSBwaXBlIHBpcGU7DQo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXI7DQo+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYw0KPiA+ID4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jDQo+ID4gPiBpbmRleCAwODBi ZjVlNTExNDguLjRkZGVhNjczNzM4NiAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMNCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMNCj4gPiA+IEBAIC04MDgsNiArODA4LDczIEBAIHN0YXRp YyB1OCBwc3JfY29tcHV0ZV9pZGxlX2ZyYW1lcyhzdHJ1Y3QNCj4gPiBpbnRlbF9kcA0KPiA+ID4g KmludGVsX2RwKQ0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBpZGxlX2ZyYW1lczsNCj4g PiA+IMKgfQ0KPiA+ID4gDQo+ID4gPiArc3RhdGljIGJvb2wgaW50ZWxfcHNyX2NoZWNrX2RlbGF5 ZWRfdmJsYW5rX2xpbWl0KHN0cnVjdA0KPiA+ID4gaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkNCj4gPiA+ICt7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLQ0KPiA+ID4gPiBody5hZGp1c3RlZF9tb2Rl Ow0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIChhZGp1c3RlZF9tb2RlLT5j cnRjX3ZibGFua19zdGFydCAtIGFkanVzdGVkX21vZGUtDQo+ID4gPiA+IGNydGNfdmRpc3BsYXkp ID49IDY7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qDQo+ID4gPiArICogUEtHX0NfTEFU RU5DWSBpcyBjb25maWd1cmVkIG9ubHkgd2hlbiBESVNQTEFZX1ZFUiA+PSAyMCBhbmQNCj4gPiA+ ICsgKiBWUlIgaXMgbm90IGVuYWJsZWQNCj4gPiA+ICsgKi8NCj4gPiA+ICtzdGF0aWMgYm9vbCBp bnRlbF9wc3JfaXNfZHBrZ2NfY29uZmlndXJlZChzdHJ1Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZh dGUNCj4gPiA+ICppOTE1KQ0KPiA+ID4gK3sNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYg KERJU1BMQVlfVkVSKGk5MTUpIDwgMjApDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIGZhbHNlOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgZm9yX2Vh Y2hfaW50ZWxfY3J0YygmaTkxNS0+ZHJtLCBpbnRlbF9jcnRjKSB7DQo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7 DQo+ID4gPiArDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFpbnRl bF9jcnRjLT5hY3RpdmUpDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNvbnRpbnVlOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNydGNfc3RhdGUgPSBpbnRlbF9jcnRjLT5jb25maWc7DQo+ID4gPiArDQo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGNydGNfc3RhdGUtPnZyci5l bmFibGUpDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiBmYWxzZTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoH0NCj4gPiA+ICsNCj4gPiA+ ICvCoMKgwqDCoMKgwqDCoHJldHVybiB0cnVlOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsv Kg0KPiA+ID4gKyAqIERDNSBlbnRyeSBpcyBvbmx5IHBvc3NpYmxlIGlmIHZibGFuayBpbnRlcnJ1 cHQgaXMgZGlzYWJsZWQNCj4gPiA+ICsgKiBhbmQgZWl0aGVyIHBzcjEsIHBzcjIsIGVkcCAxLjUg cHIgYWxwbSBpcyBlbmFibGVkIG9uIGFsbA0KPiA+ID4gKyAqIGVuYWJsZWQgZW5jb2RlcnMuDQo+ ID4gPiArICovDQo+ID4gPiArc3RhdGljIGJvb2wgaW50ZWxfcHNyX2lzX2RjNV9lbnRyeV9wb3Nz aWJsZShzdHJ1Y3QNCj4gPiA+IGRybV9pOTE1X3ByaXZhdGUNCj4gPiA+ICppOTE1KQ0KPiA+ID4g K3sNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOw0K PiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgZm9yX2VhY2hfaW50ZWxfY3J0YygmaTkxNS0+ ZHJtLCBpbnRlbF9jcnRjKSB7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmludGVsX2NydGMtPmJhc2U7DQo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV92YmxhbmtfY3J0 YyAqdmJsYW5rOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmICghaW50ZWxfY3J0Yy0+YWN0aXZlKQ0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsNCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRj KTsNCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodmJs YW5rLT5lbmFibGVkKQ0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7DQo+ID4gPiArDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKCZpOTE1LT5kcm0sIGNydGMs DQo+ID4gPiBlbmNvZGVyKSB7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPQ0KPiA+ID4gZW5jX3Rv X2ludGVsX2RwKGVuY29kZXIpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfcHNyICpwc3IgPSAmaW50ZWxfZHAtPnBzcjsN Cj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKCFwc3ItPmVuYWJsZWQpDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7DQo+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+ID4gK8KgwqDCoMKgwqDCoMKg fQ0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHRydWU7DQo+ID4gPiArfQ0K PiA+ID4gKw0KPiA+ID4gwqBzdGF0aWMgYm9vbCBoc3dfYWN0aXZhdGVfcHNyMShzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQ0KPiA+ID4gwqB7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4g PiBAQA0KPiA+ID4gLTgxNSw2ICs4ODIsMTQgQEAgc3RhdGljIGJvb2wgaHN3X2FjdGl2YXRlX3Bz cjEoc3RydWN0IGludGVsX2RwDQo+ID4gPiAqaW50ZWxfZHApDQo+ID4gPiDCoMKgwqDCoMKgwqDC oMKgdTMyIG1heF9zbGVlcF90aW1lID0gMHgxZjsNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqB1MzIg dmFsID0gRURQX1BTUl9FTkFCTEU7DQo+ID4gPiANCj4gPiA+ICvCoMKgwqDCoMKgwqDCoC8qIFdB OiAxNjAyMzQ5NzIyNiovDQo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoaW50ZWxfZHAtPnBzci5p c19kcGtnY19jb25maWd1cmVkICYmDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGludGVs X2RwLT5wc3IuZGVsYXllZF92YmxhbmsgfHwNCj4gPiA+IGludGVsX3Bzcl9pc19kYzVfZW50cnlf cG9zc2libGUoZGV2X3ByaXYpKSkgew0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIlBTUjEgbm90IGFjdGl2YXRlZCBh cyBpdCBkb2Vzbid0DQo+ID4gPiBtZWV0DQo+ID4gPiByZXF1aXJlbWVudHMgb2YgV0E6MTYwMjM0 OTcyMjZcbiIpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBm YWxzZTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoH0NCj4gPiA+ICsNCj4gPiANCj4gPiBJIHdvdWxk IHJlY29tbWVuZCBkb2luZyB0aGlzIGluIGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyBhcyBhIGxh c3QNCj4gPiBzdGVwDQo+ID4gYW5kIGRyb3AgcGF0Y2ggMS4gRG9pbmcgaXQgdGhpcyB3YXkgd291 bGQgYmUgc2FmZXIgYXMgaXQncyBub3QNCj4gPiBvcGVuaW5nIG5ldw0KPiA+IHNlcXVlbmNlL3N0 YXRlIHdoZXJlIHBzci5lbmFibGVkID0gdHJ1ZSBhbmQgcHNyLmFjdGl2ZSA9IGZhbHNlDQo+ID4g YWZ0ZXINCj4gPiBpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZC4NCj4gDQo+IFRoZSByZWFzb24gZm9y IHRoaXMgd2FzIEkgd2FudGVkIHRvIGRpc2FibGUgb25seSBwc3IxIGJhc2VkIG9uIGlmIGRjNQ0K PiBlbnRyeSBpcyBwb3NzaWJsZSBvciBub3QuDQo+IEV2ZW4gaWYgSSBjYWxsIHRoZSBkYzVfZW50 cnlfaXNfcG9zc2libGUgZnVuY3Rpb24gZnJvbSBjb21wdXRlX2NvbmZpZw0KPiBhbmQgc2F2ZSBp dCBpbiB0aGUgaW50ZWxfcHNyDQo+IHN0YXRlIHdlIHdvdWxkIHN0aWxsIGVuZCB1cCB3aXRoIHRo ZSBzZXEgcHNyLmVuYWJsZWQgPSB0cnVlIGFuZA0KPiBwc3IuYWN0aXZlID0gZmFsc2UgdW5sZXNz IHlvdSBzZWUgYQ0KPiBwYXJhbSB3aGljaCB3aWxsIG9ubHkgYWN0aXZhdGUgcHNyMiBhbmQgbm90 IHBzcjEgaW4gc3VjaCBzY2VuYXJpbyA/DQo+IA0KDQpJIHdhcyB0aGlua2luZyBkb2luZyBpdCBs aWtlIHRoaXM6DQoNCitzdGF0aWMgdm9pZCB3YV8xNjAyMzQ5NzIyNihzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqIGNydGNfc3RhdGUpDQorew0KKwkvKiBQU1IyIG5vdCBoYW5kbGVkIGhlcmUuIFdh IG5vdCBuZWVkZWQgZm9yIFBhbmVsIFJlcGxheSAqLw0KKwlpZiAoY3J0Y19zdGF0ZS0+aGFzX3Nl bF91cGRhdGUgfHwgY3J0Y19zdGF0ZS0NCj5oYXNfcGFuZWxfcmVwbGF5KQ0KKwkgICAgcmV0dXJu Ow0KKwkNCisgICAgICAgaWYgKGludGVsX2RwLT5wc3IuaXNfZHBrZ2NfY29uZmlndXJlZCAmJg0K KyAgICAgICAgICAgKGludGVsX2RwLT5wc3IuZGVsYXllZF92YmxhbmsgfHwNCisJICAgIGludGVs X3Bzcl9pc19kYzVfZW50cnlfcG9zc2libGUoZGV2X3ByaXYpKSkgew0KKyAgICAgICAgICAgICAg IGRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICJQU1IxIG5vdCBlbmFibGVkIGFzIGl0IGRvZXNuJ3QgbWVldA0KKwkJCSAgIHJlcXVpcmVtZW50 cyBvZiBXQToxNjAyMzQ5NzIyNlxuIik7DQorICAgICAgICAgICAgICAgY3J0Y19zdGF0ZS0+aGFz X3BzciA9IGZhbHNlOw0KKyAgICAgICB9DQorfQ0KKw0KIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVf Y29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQogCQkJICAgICAgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQogCQkJICAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGUpDQpAQCAtMTYzNSw2ICsxNjUxLDggQEAgdm9pZCBpbnRlbF9wc3Jf Y29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwDQoqaW50ZWxfZHAsDQogCQlyZXR1cm47DQog DQogCWNydGNfc3RhdGUtPmhhc19zZWxfdXBkYXRlID0NCmludGVsX3NlbF91cGRhdGVfY29uZmln X3ZhbGlkKGludGVsX2RwLCBjcnRjX3N0YXRlKTsNCisNCisJd2FfMTYwMjM0OTcyMjYoY3J0Y19z dGF0ZSk7DQogfQ0KIA0KIHZvaWQgaW50ZWxfcHNyX2dldF9jb25maWcoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsDQoNCkRvIHlvdSBzZWUgdGhpcyB3b3VsZCBiZSBwb3NzaWJsZT8gQ3Vy cmVudCBQU1IyIGhhbmRsaW5nIGluIHlvdXINCnBhdGNoZXMgaXMgb2sgdG8gbWUuDQoNCkJSLA0K DQpKb3VuaSBIw7ZnYW5kZXINCg0KPiBSZWdhcmRzLA0KPiBTdXJhaiBLYW5kcGFsDQo+IA0KPiA+ IA0KPiA+IEJSLA0KPiA+IA0KPiA+IEpvdW5pIEjDtmdhbmRlcg0KPiA+IA0KPiA+ID4gwqDCoMKg wqDCoMKgwqDCoHZhbCB8PQ0KPiA+ID4gRURQX1BTUl9JRExFX0ZSQU1FUyhwc3JfY29tcHV0ZV9p ZGxlX2ZyYW1lcyhpbnRlbF9kcCkpOw0KPiA+ID4gDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgaWYg KERJU1BMQVlfVkVSKGRldl9wcml2KSA8IDIwKSBAQCAtOTA3LDcgKzk4MiwxMCBAQA0KPiA+ID4g c3RhdGljDQo+ID4gPiB2b2lkIGhzd19hY3RpdmF0ZV9wc3IyKHN0cnVjdCBpbnRlbF9kcA0KPiA+ ID4gKmludGVsX2RwKQ0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHUzMiB2YWwgPSBFRFBfUFNSMl9F TkFCTEU7DQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgdTMyIHBzcl92YWwgPSAwOw0KPiA+ID4gDQo+ ID4gPiAtwqDCoMKgwqDCoMKgwqB2YWwgfD0NCj4gPiA+IEVEUF9QU1IyX0lETEVfRlJBTUVTKHBz cl9jb21wdXRlX2lkbGVfZnJhbWVzKGludGVsX2RwKSk7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqAv KiBXQTogMTYwMjM0OTcyMjYqLw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKGludGVsX2RwLT5w c3IuaXNfZHBrZ2NfY29uZmlndXJlZCAmJg0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlu dGVsX3Bzcl9pc19kYzVfZW50cnlfcG9zc2libGUoZGV2X3ByaXYpKQ0KPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhbCB8PQ0KPiA+ID4gRURQX1BTUjJfSURMRV9GUkFNRVMo cHNyX2NvbXB1dGVfaWRsZV9mcmFtZXMoaW50ZWxfZHApKTsNCj4gPiA+IA0KPiA+ID4gwqDCoMKg wqDCoMKgwqDCoGlmIChESVNQTEFZX1ZFUihkZXZfcHJpdikgPCAxNCAmJg0KPiA+ID4gIUlTX0FM REVSTEFLRV9QKGRldl9wcml2KSkNCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdmFsIHw9IEVEUF9TVV9UUkFDS19FTkFCTEU7IEBAIC0xNTAyLDYgKzE1ODAsOCBAQA0KPiA+ ID4gdm9pZA0KPiA+ID4gaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsN Cj4gPiA+IA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGNydGNfc3RhdGUtPmhhc19zZWxfdXBkYXRl ID0NCj4gPiA+IGludGVsX3NlbF91cGRhdGVfY29uZmlnX3ZhbGlkKGludGVsX2RwLCBjcnRjX3N0 YXRlKTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGludGVsX2RwLT5wc3IuZGVsYXllZF92Ymxhbmsg PQ0KPiA+ID4gaW50ZWxfcHNyX2NoZWNrX2RlbGF5ZWRfdmJsYW5rX2xpbWl0KGNydGNfc3RhdGUp Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgaW50ZWxfZHAtPnBzci5pc19kcGtnY19jb25maWd1cmVk ID0NCj4gPiA+IGludGVsX3Bzcl9pc19kcGtnY19jb25maWd1cmVkKGRldl9wcml2KTsNCj4gPiA+ IMKgfQ0KPiA+ID4gDQo+ID4gPiDCoHZvaWQgaW50ZWxfcHNyX2dldF9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsDQo+IA0KDQo=