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 E050DC71141 for ; Wed, 11 Jun 2025 18:27:28 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8D09410E184; Wed, 11 Jun 2025 18:27:28 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="NFmG4xTo"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3022710E156 for ; Wed, 11 Jun 2025 18:27:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1749666448; x=1781202448; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=l8yTBPhzEDgILl1FXpN/gJsaGQz1xL+FIcVeCwiqJyE=; b=NFmG4xTo/JsxnF19CCTVe2ypVDwC5fZweJv0Ny6kL44pkQ1BssvrN3rW 4EkSWKrbM4D4A4acXhmty9MGgF4LKSgR93JmsWQUYslWd/XtZ509m5VV5 b6N2otLDCG55TR60p5CCggtFTOPA5yqJsWBna+krDqZQVl8R8eJykmRJ7 9YxToKmxMpL05iTjMWLi5aSnhuqdnBLGcO91FcWbzo/j/NJ6OBM6pOt8G 6p/kZxJYqQGtJNc5dAqBQt4TOwWLr9hPOTkYTvgLif30NYWv1EyYiQJlN 9M+kOcMB8T0frDNiByHkITB/Se/eDyZfs1W9af2kJzHy7KDusWqixhNww w==; X-CSE-ConnectionGUID: s58R+s3oSZidAmO0TjLiIQ== X-CSE-MsgGUID: xV2/U/wZR6yeL29qKtoH3w== X-IronPort-AV: E=McAfee;i="6800,10657,11461"; a="55491747" X-IronPort-AV: E=Sophos;i="6.16,228,1744095600"; d="scan'208";a="55491747" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jun 2025 11:27:27 -0700 X-CSE-ConnectionGUID: PO1rO1R4SSeGr8DlBLGlPA== X-CSE-MsgGUID: 7M+yES9lRXuLhnXFLZlYIw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,228,1744095600"; d="scan'208";a="152269291" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by orviesa004.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jun 2025 11:27:27 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) 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.1544.25; Wed, 11 Jun 2025 11:27:26 -0700 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.25 via Frontend Transport; Wed, 11 Jun 2025 11:27:26 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (40.107.236.82) 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.1544.25; Wed, 11 Jun 2025 11:27:26 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p2TtyMH5oKuXvgOXLc9PbFw6sxp+ULH/pcoh0tpwU7gRPoXSLORk2+2oC6Twp6gEwRxLyRRCNpdgRbfqXbHHXJ4EJbPgGs1aONh7MZkRhaywI+fGVYP3OTA7kEVN+b6omICNn3AUGYCxUhM2/Pv6LmIn6NZ7njg4efIYDJZ2KfJZYBCXk7Pf4J4qltV9jWyVeLWaRXIklTj6pTZvJFpAS5mcwRz70byp591HODOw4g44DBYyvoFwKhUUQFhAIKvGrSkAuOWe4mUJrT08NWBF2p+8RMjGhGhNHh4xck43iJX5DI8mWqBlDwOyz+5ub9JJ6UNfI9acBSlloluH0oXwEw== 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=l8yTBPhzEDgILl1FXpN/gJsaGQz1xL+FIcVeCwiqJyE=; b=lJg7bIFTzVRfXJYHPWfrfHzXp44xnW2DIcUI8Ym9re53ZuUVplGoYPPJGdwewl9WdxcHYQn98hiqh9XmKDw2byqraY3aMQYGDUGzA8i43mSJIO7HixTV8iD1wm3pxqVZKMdHBj/vpRGrhr9vvBuM/w3+ZdB5kDTNPF3Yyi9e+pF5U5Y4TmsuXnQQCOFfgbtjIvbT8o/wVGHZkY3z14B53qKyZdaYAv7jVmCApHzWdDtxBYtcSLbtBPE/SO0iLoGDKa+lyM7L4jDwCSh9fbusD/U6h1s5xy18KUAqBy1cau5aTWlO1q8/+JrnDsUe/U9zyjd8X9hTtaYHHVKy5+hYOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM8PR11MB5573.namprd11.prod.outlook.com (2603:10b6:8:3b::7) by IA4PR11MB9299.namprd11.prod.outlook.com (2603:10b6:208:565::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.30; Wed, 11 Jun 2025 18:27:10 +0000 Received: from DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::3f64:5280:3eb4:775b]) by DM8PR11MB5573.namprd11.prod.outlook.com ([fe80::3f64:5280:3eb4:775b%5]) with mapi id 15.20.8835.018; Wed, 11 Jun 2025 18:27:10 +0000 From: "Summers, Stuart" To: "Brost, Matthew" CC: "intel-xe@lists.freedesktop.org" , "Ghimiray, Himal Prasad" Subject: Re: [PATCH v3] drm/xe/vm: Add a helper xe_vm_range_tilemask_tlb_invalidation() Thread-Topic: [PATCH v3] drm/xe/vm: Add a helper xe_vm_range_tilemask_tlb_invalidation() Thread-Index: AQHb2PGuMaqARJchx0KzjIvN5EZKgbP+QmcAgAAIIoCAAAB0AA== Date: Wed, 11 Jun 2025 18:27:09 +0000 Message-ID: References: <20250609041616.1723636-1-himal.prasad.ghimiray@intel.com> <7c4a125a758c00a506927cb3549736c1eb9d3886.camel@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM8PR11MB5573:EE_|IA4PR11MB9299:EE_ x-ms-office365-filtering-correlation-id: 64caf6eb-664f-4dbc-d51c-08dda9159415 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?eHJxMGRoR1hXREQ0ZHU2YkhxaDhRWlJXT3BTMENmeHhHc3QxalFqdnd3em14?= =?utf-8?B?WWErREtGL2xFZnhhZzIwN3NhRTRydEdwTWdNWWE1M1pnWTBrejNjaUtBaUZ0?= =?utf-8?B?TUZWckd5R05XTTgzNVZtRi9jNGV0MTZUVmtSQlB4UkVhSktscFN5UlMzaitu?= =?utf-8?B?ZDBNc3pMM1NnY25PWksvREZtYVRCVUpOR1d3SVl1U3YxME5zV291a1gydGdz?= =?utf-8?B?UGJkTEYwUjJNK0wwYllTeHowVHc3blhRYzJNYUx0aThpTDI0anZKQkVNOEtM?= =?utf-8?B?bEZUQnVoaFVVQ2tjSExheUFPeVpiU3dQemlFRXE3dGdKdDEzMUdHTVVtZXds?= =?utf-8?B?WE9qU3lGQnQ2OENySXhPY0FnY202UGtNMzBEM1BabVVHZzV2eVBldHY1Yzdq?= =?utf-8?B?YnpOSThqNGdDdmlMbGs0M29OVXFMRkU0UXJtN2pGNFRoVlhwSmVKYlZWQVdM?= =?utf-8?B?RVRhYzdIVlRFenp3eGxVOGl4dkRhcEx3NTVoemVzOXhpMFZLNnpnc3VGQnQ5?= =?utf-8?B?SC9RQnd3bHNNUy82L1pSWlpJeXE2dzNiQ0htcUt2d0F2UnIvNVpqaTVQYy80?= =?utf-8?B?MElFY1ZhMzBCTzNCdEhrL0NnK0UwVWdlSElNRzhBVXFUTjdncVBYbnlZaDFV?= =?utf-8?B?M0tBSzE4aDNXcFlwcUdGTzhQVlV4dTE0Q29PaENtQmJTWTJEcEdHZ3R0eWRh?= =?utf-8?B?VWhMdGJDNEdYZGc0MlNNT0daMnI2b2xReU1pT0xqWkFjSVdHaWhaWjBOY1dy?= =?utf-8?B?NGlMdHRaaVNUSEJZdFpUS3hmNzFNN01CSlcybFN0RXpHNVVwTGRra2JLWkhR?= =?utf-8?B?NFd4TDM1bW82N0NZaDY2ZmhhUlpqSE1XZ3BxL0hWbUNFTi9hUkdPaCsrbjVz?= =?utf-8?B?WjBDMjl4cStGbXVmV2RkK1d4TFU5NS9UOVQ3OFJhanUrNGxCcXYvQ2sxUjlH?= =?utf-8?B?aVhTMnV6NjJtUk5vektLdFZxRmFMTFNTT3lkS20wY2FabitzN2tSa0l1K0Nk?= =?utf-8?B?OTlyck5Yb01lUkEwYStRZ2pzbktIZXJtQ3BlZXJFTXJsU2J5clYxVDlhSVIv?= =?utf-8?B?aW1xT0xoV29mTDNUSUNrZUdjb0ZxUitUdE03SkFkNG5nTm85N2VzUVRiY2g1?= =?utf-8?B?RGhpN0kwNzRodTdBcG5sS2VHQTFZYjNJb3B4bzV2ZEhCRWkrTjdLa2IzMVdq?= =?utf-8?B?cFN4UHp0OUErQjQvOFhXRVlma05oMWtYdTIyRDkyd2NRb2JJMHlPVFVLdGNw?= =?utf-8?B?MFFZVmNwVC9tajRONmNhNFZib1RkbmxqTUJnVzVTc1FTSVJuTW1WNUJCank2?= =?utf-8?B?UjRnUUN1Mk1Yc01wa0V4UnNOcFA1NWN1K011c1BuZ2J6cUVPNVNGbEU0Mjc2?= =?utf-8?B?Ri9FZUNIZ3Q5RUNHcDdsT3dLMElTNTluWEdPV20za3FNYVluV3lES29BSUh6?= =?utf-8?B?dXFwZEEwdXM5QXlnZGswQmhsYXBBeTh2eFh0bFZrVVBaWGhHbkczOWEwQVMx?= =?utf-8?B?dW1VZ3NsaUYvUlJrQWlqcm1qdnVadnlQV1c1RG1vNjZqRkFIdzkzTE1weldr?= =?utf-8?B?Q0VrMGZRQlRCSGlsVUdwOFBza3pyV3l6R1dCZ2t6ZjE2TmpvMGdaTVdnajBJ?= =?utf-8?B?VkttUHVhOXY3dFlxWTNKUWtQbFZHano5NW1RSUJka0hsWE5MSGZSSTVid2dX?= =?utf-8?B?WnNVZmFuQ2ZIeWpRQ2hXZVB4ZTlyeWdwaVUzbHpLNG5SOG1rWDVJcDRHSHJr?= =?utf-8?B?R29KRm5QbTQxUGhKMUJwd1YyV3laVmVMT2FmWXB1ZUE4aGtyeHNUZEZsN0gy?= =?utf-8?B?OTJaRXpibGdjVHAxV1YxOFcxMXpGaDI3MVNSY2tvb1FWRFJyVEtxazZmaUJu?= =?utf-8?B?WHYyTHNUbXhoVXB0c1JxZkZPN0FaRGlNcENNQnl4Q2lRWDVXVzFqeVc1ZGtq?= =?utf-8?B?S29oMnRDWG1tWmgybWQxRTlkWFZqWDhJTy85eDJDWEZyemxmS0N1NnZLRms1?= =?utf-8?Q?JUQIRyZEUXRLQNT3rgluQmjStazglE=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5573.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Q1ByS0JSUDUwa2dIcU5lTDIrbEdYOFVhWG1MTmFxbkY5Sk5SWlJia0hRK2hI?= =?utf-8?B?ZzAyUXgrTFc0Z1hCcnh0M0FaY3llQVgxTnREbHJ2d3I2VDBLWitwcGZybDNv?= =?utf-8?B?eGVybWlTV05RTXlHc1RrQ1hLK0ZNRUtGK0t6STN1STNSTDhHN1RGTkFTVVdu?= =?utf-8?B?UU9mNmc4Q09Ld2dNSEQyZ0FQNUJLV2d2RCszalQzNzFtUCtaVSs4K1NrbU5O?= =?utf-8?B?Q1o5aVFBZkNOd0Z5NzRyWkJjTW5DdWpMTEk1YkJZTlZPTUV6ME1pVEZJV2hu?= =?utf-8?B?YlJqRGJmQ0pmYXNLL2hJWVNKa1BhdHdpV0JCcnJ6eDZ6UDQ4RWFmZ0pFZU1C?= =?utf-8?B?VW5CYWJPZHZjaThHbkNGdlMxbkxOYXFidWx6cUJsVWJrdUhzRlhmUkI4NnE1?= =?utf-8?B?NkpRajJ3YzhNbkozazFKL2MzRnJrWUxLZTJFaDUyTzlyZHRmWU5IUU4xZ2dZ?= =?utf-8?B?MFhTLzJDejVVSWx6SGNlS2FlU1JXT1VjRmdBM2NzODNrcURvckpHNTBIVnli?= =?utf-8?B?OTRiZURvdStBQk1mWS92NXdqTkxvNFI1QjBuT0JZMjJDdk4wRUV1cXRDc0NQ?= =?utf-8?B?Zm8vTW0xWlkvR0lUVzlkd213YU55VHZrYXJuaXJxTkh2bWR1clVwT0JPUG5V?= =?utf-8?B?UTdOaHUyVUpSNTlSdzVaaFJtNXRRLzhjcGhVOFptUEdleU0wSzdmNVBjMHVC?= =?utf-8?B?T1Q5Zi84eUV5UFN2N3ZkMDJEVHV1OEk1TW93bXQ0Z1IwSjd6QVdPWkE1Vm9G?= =?utf-8?B?STZJSGFNNGZocFR5TjM0NUZyRURXcTVKejRSU29GMjNoT29tclU1TDlQZGN3?= =?utf-8?B?SGVSaDVMY1RPdzZCaGNXSkowaDR0RnV4bXp3VDBMRWQ3K0htOG10eUFOUVZx?= =?utf-8?B?bUlSV1Nuem5NQm54UThPYi9vQWF4dExsVW1tUys5TmVZQVh5dURXT2pScTFR?= =?utf-8?B?b25MbFFUVGVYQkhSSUlteVBpZmhDajlMa0hXbzhLTUJLcnVTVURSRkxrNWl4?= =?utf-8?B?YWJMSERyQXFFSmFzWlNMQVVjVDFnQTA4S2gwbkt5ai8xRFdXd282WDcyOEFM?= =?utf-8?B?K3ZWRUJxSWtRWG5YMHdTOVNORXltOWhIV1FQMG1vUll0ckptekV0eHpGK0hw?= =?utf-8?B?ZnVqbnBxbktxYjB0cW1hSmt1S0swM2wvR2dXUFJ0Um4yVE1hYVUyenZwUjl2?= =?utf-8?B?ZGZlZXQwTUlydjdPOXh1ZWhmTTBVTExvRGprSDRUSzl1eDIzYldWdStlMWVw?= =?utf-8?B?c2JDVkFLVG5ZbHJEL1B0aEh2aG5HaENiKzU0bVZCbDA4OW82aWw1ZkdRTVRj?= =?utf-8?B?aHpnOHFVdzdxK004R1FCRFkyM3lsenRUQXpJQWFTM1MzUTdybHVhUS9ueEJQ?= =?utf-8?B?cHBsaEc3Mjg0NE4ycTFjSFRac0E0cmpHZXpFdk0xVmJCWkFISzdBa0M1cGFT?= =?utf-8?B?SUJJNzBlMTFVRnI3eHRtRGVYK0d4am1GL25TRjFudHBiek5oL3YwTnk5QlpT?= =?utf-8?B?Z0ZmYkxXR3FKb3g2WFdhWkk5TDFxU0d3Q2NSTnhDQ1Q0WlZXREZVSmNYeHJR?= =?utf-8?B?UnJFZkYvVTFHbW0xdWpSbHNQZEZKZzg4clduQVJ3alFqYUV2VEl3WlZrZHNV?= =?utf-8?B?QllOR3VkUmZnS3d4d1BsRjBSUHNMTk5RdEhFWUcxSHRTTFREMDNRcGxvWktZ?= =?utf-8?B?VERpcnA4ZG0vQ0trVWNiK21UNlQzL3JCcXBXbjcvaTJ0VHVXeEFhNVJBWmNo?= =?utf-8?B?SlhmS0IzRHl1VkREaEM4QWtZL1pXRkdPS0RWT0FndjVKbGJqTVJ2azRDdXdL?= =?utf-8?B?KzZxT1Q0cUFUc050TUJ6VFhYMXViWWgxSGRaV2R5VTlXbkZncmNCR3hoL1hO?= =?utf-8?B?eWZ0ZmI0VFEvOW9yOWthWWRIVXF2aHhUc1RUbmFMSkh3ZzBqS0l3VEs3S3BW?= =?utf-8?B?S3hudndXblllZ2drYjJjK1EvSUFzMm9vblN5aVpJbUkzRHJGZjZ2NS9TT0d5?= =?utf-8?B?dGtYcE1xWEt6VUJuSEZQbFByVnNlT3d4Y2M3RHdnQXpkWDd0eFQ3RjNwazJ1?= =?utf-8?B?dWswZCtZbmUydXUwUnl5eitpdExaQ1ZLaDZFZlM5SW5OaUZORlI2WVR0cVow?= =?utf-8?B?Z2phWnR4WE5OMyt2SE9xRlArVE9oTjZDajVkNzM1enNsdVd3V3J2REhWcDIy?= =?utf-8?B?dUE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <1036230B45BBF44193D525301EF1A09E@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5573.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64caf6eb-664f-4dbc-d51c-08dda9159415 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2025 18:27:10.0178 (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: SHHpbdOSrxNj9v926aqDgb5w2/oT3u0pbAp8aSzc11VILynsXM69lY1CWoVUiLLCbXRyTljAgoXIqasOwlSow/91sF4WtdF+VM+H9U+sXRU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR11MB9299 X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" T24gV2VkLCAyMDI1LTA2LTExIGF0IDExOjI1IC0wNzAwLCBNYXR0aGV3IEJyb3N0IHdyb3RlOgo+ IE9uIFdlZCwgSnVuIDExLCAyMDI1IGF0IDExOjU2OjI1QU0gLTA2MDAsIFN1bW1lcnMsIFN0dWFy dCB3cm90ZToKPiA+IE9uIE1vbiwgMjAyNS0wNi0wOSBhdCAwOTo0NiArMDUzMCwgSGltYWwgUHJh c2FkIEdoaW1pcmF5IHdyb3RlOgo+ID4gPiBJbnRyb2R1Y2UgeGVfdm1fcmFuZ2VfdGlsZW1hc2tf dGxiX2ludmFsaWRhdGlvbigpLCB3aGljaCBpc3N1ZXMgYQo+ID4gPiBUTEIKPiA+ID4gaW52YWxp ZGF0aW9uIGZvciBhIHNwZWNpZmllZCBhZGRyZXNzIHJhbmdlIGFjcm9zcyBHVHMgaW5kaWNhdGVk Cj4gPiA+IGJ5IGEKPiA+ID4gdGlsZW1hc2suCj4gPiA+IAo+ID4gPiB2MiAoTWF0dGhldyBCcm9z dCkKPiA+ID4gLSBNb3ZlIFdBUk5fT05fT05DRSB0byBzdm0gY2FsbGVyCj4gPiA+IC0gUmVtb3Zl IHhlX2d0X3RsYl9pbnZhbGlkYXRpb25fdm1hCj4gPiA+IC0gcy9YRV9XQVJOX09OL1dBUk5fT05f T05DRQo+ID4gPiAKPiA+ID4gdjMKPiA+ID4gLSBSZWJhc2UKPiA+ID4gCj4gPiA+IFN1Z2dlc3Rl ZC1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+Cj4gPiA+IFNpZ25l ZC1vZmYtYnk6IEhpbWFsIFByYXNhZCBHaGltaXJheQo+ID4gPiA8aGltYWwucHJhc2FkLmdoaW1p cmF5QGludGVsLmNvbT4KPiA+ID4gUmV2aWV3ZWQtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcu YnJvc3RAaW50ZWwuY29tPgo+ID4gPiAtLS0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVf Z3RfdGxiX2ludmFsaWRhdGlvbi5jIHzCoCAyNCAtLS0tLQo+ID4gPiDCoGRyaXZlcnMvZ3B1L2Ry bS94ZS94ZV9ndF90bGJfaW52YWxpZGF0aW9uLmggfMKgwqAgMyAtCj4gPiA+IMKgZHJpdmVycy9n cHUvZHJtL3hlL3hlX3N2bS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQz ICstLS0tLS0tCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTAzICsrKysrKysrKysrKystCj4gPiA+IC0tLS0KPiA+ ID4gLS0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfdm0uaMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMyArCj4gPiA+IMKgNSBmaWxlcyBjaGFuZ2VkLCA3NSBp bnNlcnRpb25zKCspLCAxMDEgZGVsZXRpb25zKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3RsYl9pbnZhbGlkYXRpb24uYwo+ID4gPiBiL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV9ndF90bGJfaW52YWxpZGF0aW9uLmMKPiA+ID4gaW5kZXggMDg0Y2Jk ZWJhOGVhLi4wMTExZWU1OWI4MWQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94 ZS94ZV9ndF90bGJfaW52YWxpZGF0aW9uLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hl L3hlX2d0X3RsYl9pbnZhbGlkYXRpb24uYwo+ID4gPiBAQCAtNDQwLDMwICs0NDAsNiBAQCB2b2lk IHhlX2d0X3RsYl9pbnZhbGlkYXRpb25fdm0oc3RydWN0IHhlX2d0Cj4gPiA+ICpndCwKPiA+ID4g c3RydWN0IHhlX3ZtICp2bSkKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHhlX2d0X3RsYl9pbnZhbGlk YXRpb25fZmVuY2Vfd2FpdCgmZmVuY2UpOwo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gLS8qKgo+ ID4gPiAtICogeGVfZ3RfdGxiX2ludmFsaWRhdGlvbl92bWEgLSBJc3N1ZSBhIFRMQiBpbnZhbGlk YXRpb24gb24gdGhpcwo+ID4gPiBHVAo+ID4gPiBmb3IgYSBWTUEKPiA+ID4gLSAqIEBndDogR1Qg c3RydWN0dXJlCj4gPiA+IC0gKiBAZmVuY2U6IGludmFsaWRhdGlvbiBmZW5jZSB3aGljaCB3aWxs IGJlIHNpZ25hbCBvbiBUTEIKPiA+ID4gaW52YWxpZGF0aW9uCj4gPiA+IC0gKiBjb21wbGV0aW9u LCBjYW4gYmUgTlVMTAo+ID4gPiAtICogQHZtYTogVk1BIHRvIGludmFsaWRhdGUKPiA+ID4gLSAq Cj4gPiA+IC0gKiBJc3N1ZSBhIHJhbmdlIGJhc2VkIFRMQiBpbnZhbGlkYXRpb24gaWYgc3VwcG9y dGVkLCBpZiBub3QKPiA+ID4gZmFsbGJhY2sgdG8gYSBmdWxsCj4gPiA+IC0gKiBUTEIgaW52YWxp ZGF0aW9uLiBDb21wbGV0aW9uIG9mIFRMQiBpcyBhc3luY2hyb25vdXMgYW5kCj4gPiA+IGNhbGxl cgo+ID4gPiBjYW4gdXNlCj4gPiA+IC0gKiB0aGUgaW52YWxpZGF0aW9uIGZlbmNlIHRvIHdhaXQg Zm9yIGNvbXBsZXRpb24uCj4gPiA+IC0gKgo+ID4gPiAtICogUmV0dXJuOiBOZWdhdGl2ZSBlcnJv ciBjb2RlIG9uIGVycm9yLCAwIG9uIHN1Y2Nlc3MKPiA+ID4gLSAqLwo+ID4gPiAtaW50IHhlX2d0 X3RsYl9pbnZhbGlkYXRpb25fdm1hKHN0cnVjdCB4ZV9ndCAqZ3QsCj4gPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdAo+ ID4gPiB4ZV9ndF90bGJfaW52YWxpZGF0aW9uX2ZlbmNlCj4gPiA+ICpmZW5jZSwKPiA+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IHhlX3ZtYSAqdm1hKQo+ID4gPiAtewo+ID4gPiAtwqDCoMKgwqDCoMKgwqB4ZV9ndF9h c3NlcnQoZ3QsIHZtYSk7Cj4gPiA+IC0KPiA+ID4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIHhlX2d0 X3RsYl9pbnZhbGlkYXRpb25fcmFuZ2UoZ3QsIGZlbmNlLAo+ID4gPiB4ZV92bWFfc3RhcnQodm1h KSwKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZV92bWFfZW5kKHZtYSksCj4g PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeGVfdm1hX3ZtKHZtYSktCj4gPiA+ID4g dXNtLmFzaWQpOwo+ID4gPiAtfQo+ID4gPiAtCj4gPiA+IMKgLyoqCj4gPiA+IMKgICogeGVfZ3Vj X3RsYl9pbnZhbGlkYXRpb25fZG9uZV9oYW5kbGVyIC0gVExCIGludmFsaWRhdGlvbiBkb25lCj4g PiA+IGhhbmRsZXIKPiA+ID4gwqAgKiBAZ3VjOiBndWMKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV9ndF90bGJfaW52YWxpZGF0aW9uLmgKPiA+ID4gYi9kcml2ZXJzL2dw dS9kcm0veGUveGVfZ3RfdGxiX2ludmFsaWRhdGlvbi5oCj4gPiA+IGluZGV4IGFiZTliMDNkNTQz ZS4uMzEwNzJkYmNhZDhlIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVf Z3RfdGxiX2ludmFsaWRhdGlvbi5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9n dF90bGJfaW52YWxpZGF0aW9uLmgKPiA+ID4gQEAgLTE5LDkgKzE5LDYgQEAgaW50IHhlX2d0X3Rs Yl9pbnZhbGlkYXRpb25faW5pdF9lYXJseShzdHJ1Y3QKPiA+ID4geGVfZ3QKPiA+ID4gKmd0KTsK PiA+ID4gwqAKPiA+ID4gwqB2b2lkIHhlX2d0X3RsYl9pbnZhbGlkYXRpb25fcmVzZXQoc3RydWN0 IHhlX2d0ICpndCk7Cj4gPiA+IMKgaW50IHhlX2d0X3RsYl9pbnZhbGlkYXRpb25fZ2d0dChzdHJ1 Y3QgeGVfZ3QgKmd0KTsKPiA+ID4gLWludCB4ZV9ndF90bGJfaW52YWxpZGF0aW9uX3ZtYShzdHJ1 Y3QgeGVfZ3QgKmd0LAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QKPiA+ID4geGVfZ3RfdGxiX2ludmFsaWRhdGlv bl9mZW5jZQo+ID4gPiAqZmVuY2UsCj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB4ZV92bWEgKnZtYSk7Cj4gPiA+ IMKgdm9pZCB4ZV9ndF90bGJfaW52YWxpZGF0aW9uX3ZtKHN0cnVjdCB4ZV9ndCAqZ3QsIHN0cnVj dCB4ZV92bQo+ID4gPiAqdm0pOwo+ID4gPiDCoGludCB4ZV9ndF90bGJfaW52YWxpZGF0aW9uX3Jh bmdlKHN0cnVjdCB4ZV9ndCAqZ3QsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0Cj4gPiA+IHhlX2d0X3Rs Yl9pbnZhbGlkYXRpb25fZmVuY2UKPiA+ID4gKmZlbmNlLAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3hlL3hlX3N2bS5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N2 bS5jCj4gPiA+IGluZGV4IDgzYzYzZmQ3YjQ4MS4uM2ZkMmQ2M2M3M2EyIDEwMDY0NAo+ID4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3ZtLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL3hlL3hlX3N2bS5jCj4gPiA+IEBAIC0xNjcsMTQgKzE2Nyw5IEBAIHN0YXRpYyB2b2lkIHhl X3N2bV9pbnZhbGlkYXRlKHN0cnVjdAo+ID4gPiBkcm1fZ3B1c3ZtCj4gPiA+ICpncHVzdm0sCj4g PiA+IMKgewo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX3ZtICp2bSA9IGdwdXN2bV90 b192bShncHVzdm0pOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2RldmljZSAqeGUg PSB2bS0+eGU7Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV90aWxlICp0aWxlOwo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnIsICpmaXJzdDsKPiA+ ID4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2d0X3RsYl9pbnZhbGlkYXRpb25fZmVuY2UKPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZlbmNlW1hFX01BWF9USUxFU19QRVJf REVWSUNFICoKPiA+ID4gWEVfTUFYX0dUX1BFUl9USUxFXTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDC oHU2NCBhZGpfc3RhcnQgPSBtbXVfcmFuZ2UtPnN0YXJ0LCBhZGpfZW5kID0gbW11X3JhbmdlLQo+ ID4gPiA+ZW5kOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgdTggdGlsZV9tYXNrID0gMDsKPiA+ID4g LcKgwqDCoMKgwqDCoMKgdTggaWQ7Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoHUzMiBmZW5jZV9pZCA9 IDA7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBsb25nIGVycjsKPiA+ID4gwqAKPiA+ID4gwqDCoMKg wqDCoMKgwqDCoHhlX3N2bV9hc3NlcnRfaW5fbm90aWZpZXIodm0pOwo+ID4gPiBAQCAtMjIwLDQy ICsyMTUsOCBAQCBzdGF0aWMgdm9pZCB4ZV9zdm1faW52YWxpZGF0ZShzdHJ1Y3QKPiA+ID4gZHJt X2dwdXN2bQo+ID4gPiAqZ3B1c3ZtLAo+ID4gPiDCoAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgeGVf ZGV2aWNlX3dtYih4ZSk7Cj4gPiA+IMKgCj4gPiA+IC3CoMKgwqDCoMKgwqDCoGZvcl9lYWNoX3Rp bGUodGlsZSwgeGUsIGlkKSB7Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAodGlsZV9tYXNrICYgQklUKGlkKSkgewo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludCBlcnI7Cj4gPiA+IC0KPiA+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9ndF90bGJfaW52YWxpZGF0aW9u X2ZlbmNlX2luaXQodGlsZS0KPiA+ID4gPiBwcmltYXJ5X2d0LAo+ID4gPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gPiAmZmVuY2Vb ZmVuY2VfaWRdLCB0cnVlKTsKPiA+ID4gLQo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IHhlX2d0X3RsYl9pbnZhbGlkYXRpb25fcmFuZ2Uo dGlsZS0KPiA+ID4gPiBwcmltYXJ5X2d0LAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+ICZmZW5jZVtmZW5jZV9pZF0s Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAKPiA+ID4gYWRqX3N0YXJ0LAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+IGFkal9lbmQsCj4gPiA+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dm0tCj4gPiA+ID4gdXNtLmFzaWQpOwo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmIChXQVJOX09OX09OQ0UoZXJyIDwgMCkpCj4gPiA+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGdvdG8gd2FpdDsKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqArK2ZlbmNlX2lkOwo+ID4gPiAtCj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCF0aWxlLT5tZWRpYV9ndCkKPiA+ID4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y29udGludWU7Cj4gPiA+IC0KPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB4ZV9ndF90bGJfaW52YWxpZGF0aW9uX2ZlbmNlX2luaXQodGlsZS0KPiA+ ID4gPiBtZWRpYV9ndCwKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+ID4gJmZlbmNlW2ZlbmNlX2lkXSwgdHJ1ZSk7Cj4gPiA+ IC0KPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBl cnIgPSB4ZV9ndF90bGJfaW52YWxpZGF0aW9uX3JhbmdlKHRpbGUtCj4gPiA+ID4gbWVkaWFfZ3Qs Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAKPiA+ID4gJmZlbmNlW2ZlbmNlX2lkXSwKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gPiBhZGpfc3RhcnQs Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAKPiA+ID4gYWRqX2VuZCwKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2bS0KPiA+ID4gPiB1c20uYXNpZCk7Cj4g PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKFdB Uk5fT05fT05DRShlcnIgPCAwKSkKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byB3YWl0Owo+ID4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCsrZmVuY2VfaWQ7Cj4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoH0K PiA+ID4gLQo+ID4gPiAtd2FpdDoKPiA+ID4gLcKgwqDCoMKgwqDCoMKgZm9yIChpZCA9IDA7IGlk IDwgZmVuY2VfaWQ7ICsraWQpCj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4 ZV9ndF90bGJfaW52YWxpZGF0aW9uX2ZlbmNlX3dhaXQoJmZlbmNlW2lkXSk7Cj4gPiA+ICvCoMKg wqDCoMKgwqDCoGVyciA9IHhlX3ZtX3JhbmdlX3RpbGVtYXNrX3RsYl9pbnZhbGlkYXRpb24odm0s Cj4gPiA+IGFkal9zdGFydCwKPiA+ID4gYWRqX2VuZCwgdGlsZV9tYXNrKTsKPiA+ID4gK8KgwqDC oMKgwqDCoMKgV0FSTl9PTl9PTkNFKGVycik7Cj4gPiA+IMKgCj4gPiA+IMKgcmFuZ2Vfbm90aWZp ZXJfZXZlbnRfZW5kOgo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgciA9IGZpcnN0Owo+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9k cm0veGUveGVfdm0uYwo+ID4gPiBpbmRleCAxOGY5NjdjZTFmMWEuLmEwYzcwNjk4MjY1YSAxMDA2 NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtLmMKPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3hlL3hlX3ZtLmMKPiA+ID4gQEAgLTM4NDIsNiArMzg0Miw2OCBAQCB2b2lk IHhlX3ZtX3VubG9jayhzdHJ1Y3QgeGVfdm0gKnZtKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgZG1h X3Jlc3ZfdW5sb2NrKHhlX3ZtX3Jlc3Yodm0pKTsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+ICsv KioKPiA+ID4gKyAqIHhlX3ZtX3JhbmdlX3RpbGVtYXNrX3RsYl9pbnZhbGlkYXRpb24gLSBJc3N1 ZSBhIFRMQgo+ID4gPiBpbnZhbGlkYXRpb24KPiA+ID4gb24gdGhpcyB0aWxlbWFzayBmb3IgYW4K PiA+ID4gKyAqIGFkZHJlc3MgcmFuZ2UKPiA+ID4gKyAqIEB2bTogVGhlIFZNCj4gPiA+ICsgKiBA c3RhcnQ6IHN0YXJ0IGFkZHJlc3MKPiA+ID4gKyAqIEBlbmQ6IGVuZCBhZGRyZXNzCj4gPiA+ICsg KiBAdGlsZV9tYXNrOiBtYXNrIGZvciB3aGljaCBndCdzIGlzc3VlIHRsYiBpbnZhbGlkYXRpb24K PiA+ID4gKyAqCj4gPiA+ICsgKiBJc3N1ZSBhIHJhbmdlIGJhc2VkIFRMQiBpbnZhbGlkYXRpb24g Zm9yIGd0J3MgaW4gdGlsZW1hc2sKPiA+ID4gKyAqCj4gPiA+ICsgKiBSZXR1cm5zIDAgZm9yIHN1 Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgo+ID4gPiArICovCj4gPiA+ICtp bnQgeGVfdm1fcmFuZ2VfdGlsZW1hc2tfdGxiX2ludmFsaWRhdGlvbihzdHJ1Y3QgeGVfdm0gKnZt LCB1NjQKPiA+ID4gc3RhcnQsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1NjQgZW5k LCB1OCB0aWxlX21hc2spCj4gPiA+ICt7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9n dF90bGJfaW52YWxpZGF0aW9uX2ZlbmNlCj4gPiA+IGZlbmNlW1hFX01BWF9USUxFU19QRVJfREVW SUNFICogWEVfTUFYX0dUX1BFUl9USUxFXTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHhl X3RpbGUgKnRpbGU7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoHUzMiBmZW5jZV9pZCA9IDA7Cj4gPiA+ ICvCoMKgwqDCoMKgwqDCoHU4IGlkOwo+ID4gPiArwqDCoMKgwqDCoMKgwqBpbnQgZXJyOwo+ID4g PiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmICghdGlsZV9tYXNrKQo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiA+ICsKPiA+ID4gK8KgwqDCoMKgwqDC oMKgZm9yX2VhY2hfdGlsZSh0aWxlLCB2bS0+eGUsIGlkKSB7Cj4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAodGlsZV9tYXNrICYgQklUKGlkKSkgewo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2d0X3RsYl9pbnZhbGlk YXRpb25fZmVuY2VfaW5pdCh0aWxlLQo+ID4gPiA+IHByaW1hcnlfZ3QsCj4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+ICZm ZW5jZVtmZW5jZV9pZF0sIHRydWUpOwo+ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0geGVfZ3RfdGxiX2ludmFsaWRhdGlvbl9y YW5nZSh0aWxlLQo+ID4gPiA+IHByaW1hcnlfZ3QsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+ID4gJmZlbmNlW2ZlbmNl X2lkXSwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdGFydCwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbmQsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm0tCj4gPiA+ID4gdXNt LmFzaWQpOwo+ID4gCj4gPiBTaW5jZSB3ZSdyZSBhbHJlYWR5IGRvaW5nIHRoZSByZWZhY3Rvcmlu ZyBvZiB0aGUgc3ZtIGFuZCBub24tc3ZtCj4gPiBjYXNlcwo+ID4gaGVyZSwgY2FuIHlvdSBhbHNv IHJlZmFjdG9yIHRoaXMgc28gd2UgaGF2ZSBzb21ldGhpbmcgbGlrZToKPiA+IGludmFsaWRhdGVf dGlsZXModGlsZV9tYXNrKQo+ID4gCj4gPiB2b2lkIGludmFsaWRhdGVfdGlsZXModGlsZV9tYXNr KQo+ID4gewo+ID4gwqDCoMKgIGZvcl9lYWNoX3RpbGUodGlsZSwgdGlsZV9tYXNrKQo+ID4gwqDC oMKgwqDCoMKgwqAgaW52YWxpZGF0ZV90aWxlKHRpbGUpCj4gPiB9Cj4gPiAKPiA+IHZvaWQgaW52 YWxpZGF0ZV90aWxlKHRpbGUpCj4gPiB7Cj4gPiDCoMKgwqAgZmVuY2VbaV0gPSBpbnZhbGlkYXRl X2d0KHByaW1hcnkpCj4gPiDCoMKgwqAgZmVuY2VbaSsrXSA9IGludmFsaWRhdGVfZ3QobWVkaWEp Cj4gPiAKPiA+IMKgwqDCoCBmb3JfZWFjaF9pKGkpCj4gPiDCoMKgwqDCoMKgwqDCoCB3YWl0X2Zv cl9pbnZhbGlkYXRpb24oaSkKPiAKPiBZb3UnZCBsb3NlIGEgbGV2ZWwgcGlwZWxpbmUgd2l0aCB0 aGlzIHN1Z2dlc3Rpb24uIFRoZSBjYW4gd3JpdGUgaXMKPiBxdWl0ZQo+IGludGVudGlvbmFsIC0g aXNzdWUgYWxsIFRMQiBpbnZhbGlkYXRpb25zIHRvIGhhcmR3YXJlLCB0aGVuIHdhaXQgb24KPiBh bGwKPiBpbnZhbGlkdGFpb25zLiBXaGF0IHlvdSBzdWdnZXN0IHdvdWxkIGlzc3VlIFRMQiBpbnZh bGlkYXRpb25zIHRvIGVhY2gKPiB0aWxlIGFuZCB3YWl0IGludmFsaWRhdGlvbnMgZnJvbSB0aGF0 IHRpbGUgLSBpZiB5b3UgaGF2ZSBtdWx0aXBsZQo+IHRpbGVzCj4geW91IGRlbGF5IGlzc3Vpbmcg dGhlIGludmFsaWRhdGlvbnMgdW50aWwgdGhlIHByaW9yIHRpbGUgY29tcGxldGVzCj4gaXRzCj4g aW52YWxpZGF0aW9ucy4gVGhpcyBjb3VsZCBiZSBjbGVhbmVkIHVwIHdpdGggaGVscGVycyBidXQg cmVnYXJkbGVzcwo+IHdlCj4gd2FudCB0aGUgcGlwZWxpbmcgaW4gcGxhY2UuCgpPayBtYWtlcyBz ZW5zZS4gVGhlbiB3ZSBjYW4ganVzdCBwdWxsIHRoZSB3YWl0X2Zvcl9pbnZhbGlkYXRpb24oKSBv dXQKdG8gdGhlIGludmFsaWRhdGVfdGlsZXMoKSBwaWVjZToKCnZvaWQgaW52YWxpZGF0ZV90aWxl cyh0aWxlX21hc2spCiAgICBmb3JfZWFjaF90aWxlKHRpbGUsIHRpbGVfbWFzaykKICAgICAgICBm ZW5jZVtpKytdID0gaW52YWxpZGF0ZV90aWxlKHRpbGUpCgogICAgZm9yX2VhY2hfaShpKQogICAg ICAgIHdhaXRfZm9yX2ludmFsaWRhdGlvbihpKQoKClRoYW5rcywKU3R1YXJ0Cgo+IAo+IE1hdHQg Cj4gCj4gPiB9Cj4gPiAKPiA+IGludmFsaWRhdGVfZ3QoZ3RfdHlwZSkKPiA+IHsKPiA+IMKgwqDC oCBpbnZhbGlkYXRpb25fZmVuY2VfaW5pdChndF90eXBlKQo+ID4gwqDCoMKgIGZlbmNlID0gaW52 YWxpZGF0aW9uX2ZlbmNlX3JhbmdlKGd0X3R5cGUpCj4gPiAKPiA+IMKgwqDCoCByZXR1cm4gZmVu Y2UKPiA+IH0KPiA+IAo+ID4gVGhhbmtzLAo+ID4gU3R1YXJ0Cj4gPiAKPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBnb3RvIHdhaXQ7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgKytmZW5jZV9pZDsKPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghdGlsZS0+bWVkaWFfZ3QpCj4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNvbnRpbnVlOwo+ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgeGVfZ3RfdGxiX2ludmFsaWRhdGlvbl9mZW5jZV9pbml0KHRpbGUtCj4g PiA+ID4gbWVkaWFfZ3QsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+ICZmZW5jZVtmZW5jZV9pZF0sIHRydWUpOwo+ID4g PiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZXJyID0geGVfZ3RfdGxiX2ludmFsaWRhdGlvbl9yYW5nZSh0aWxlLQo+ID4gPiA+IG1lZGlhX2d0 LAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgCj4gPiA+ICZmZW5jZVtmZW5jZV9pZF0sCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhcnQsCj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZW5kLAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHZtLQo+ID4gPiA+IHVzbS5hc2lkKTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3Rv IHdhaXQ7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgKytmZW5jZV9pZDsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gPiArCj4gPiA+ICt3YWl0Ogo+ID4gPiArwqDCoMKgwqDC oMKgwqBmb3IgKGlkID0gMDsgaWQgPCBmZW5jZV9pZDsgKytpZCkKPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHhlX2d0X3RsYl9pbnZhbGlkYXRpb25fZmVuY2Vfd2FpdCgmZmVu Y2VbaWRdKTsKPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+ID4gPiAr fQo+ID4gPiArCj4gPiA+IMKgLyoqCj4gPiA+IMKgICogeGVfdm1faW52YWxpZGF0ZV92bWEgLSBp bnZhbGlkYXRlIEdQVSBtYXBwaW5ncyBmb3IgVk1BCj4gPiA+IHdpdGhvdXQgYQo+ID4gPiBsb2Nr Cj4gPiA+IMKgICogQHZtYTogVk1BIHRvIGludmFsaWRhdGUKPiA+ID4gQEAgLTM4NTcsMTEgKzM5 MTksOSBAQCBpbnQgeGVfdm1faW52YWxpZGF0ZV92bWEoc3RydWN0IHhlX3ZtYQo+ID4gPiAqdm1h KQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2RldmljZSAqeGUgPSB4ZV92bWFfdm0o dm1hKS0+eGU7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfdm0gKnZtID0geGVfdm1h X3ZtKHZtYSk7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfdGlsZSAqdGlsZTsKPiA+ ID4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IHhlX2d0X3RsYl9pbnZhbGlkYXRpb25fZmVuY2UKPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZlbmNlW1hFX01BWF9USUxFU19QRVJf REVWSUNFICoKPiA+ID4gWEVfTUFYX0dUX1BFUl9USUxFXTsKPiA+ID4gLcKgwqDCoMKgwqDCoMKg dTggaWQ7Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoHUzMiBmZW5jZV9pZCA9IDA7Cj4gPiA+ICvCoMKg wqDCoMKgwqDCoHU4IHRpbGVfbWFzayA9IDA7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0 ID0gMDsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgdTggaWQ7Cj4gPiA+IMKgCj4gPiA+IMKgwqDCoMKg wqDCoMKgwqB4ZV9hc3NlcnQoeGUsICF4ZV92bWFfaXNfbnVsbCh2bWEpKTsKPiA+ID4gwqDCoMKg wqDCoMKgwqDCoHhlX2Fzc2VydCh4ZSwgIXhlX3ZtYV9pc19jcHVfYWRkcl9taXJyb3Iodm1hKSk7 Cj4gPiA+IEBAIC0zODkyLDM3ICszOTUyLDE0IEBAIGludCB4ZV92bV9pbnZhbGlkYXRlX3ZtYShz dHJ1Y3QgeGVfdm1hCj4gPiA+ICp2bWEpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiDCoAo+ID4gPiAtwqDCoMKgwqDC oMKgwqBmb3JfZWFjaF90aWxlKHRpbGUsIHhlLCBpZCkgewo+ID4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKHhlX3B0X3phcF9wdGVzKHRpbGUsIHZtYSkpIHsKPiA+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9kZXZpY2Vfd21i KHhlKTsKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB4ZV9ndF90bGJfaW52YWxpZGF0aW9uX2ZlbmNlX2luaXQodGlsZS0KPiA+ID4gPiBwcmltYXJ5 X2d0LAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoAo+ID4gPiAmZmVuY2VbZmVuY2VfaWRdLAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cnVlKTsKPiA+ID4gLQo+ ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9 IHhlX2d0X3RsYl9pbnZhbGlkYXRpb25fdm1hKHRpbGUtCj4gPiA+ID4gcHJpbWFyeV9ndCwKPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Cj4gPiA+ICZmZW5jZVtmZW5jZV9pZF0sIHZtYSk7Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiA+ID4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byB3YWl0 Owo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCsr ZmVuY2VfaWQ7Cj4gPiA+IC0KPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoIXRpbGUtPm1lZGlhX2d0KQo+ID4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsK PiA+ID4gLQo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHhlX2d0X3RsYl9pbnZhbGlkYXRpb25fZmVuY2VfaW5pdCh0aWxlLQo+ID4gPiA+IG1lZGlh X2d0LAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoAo+ID4gPiAmZmVuY2VbZmVuY2VfaWRdLAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cnVlKTsKPiA+ID4gK8Kg wqDCoMKgwqDCoMKgZm9yX2VhY2hfdGlsZSh0aWxlLCB4ZSwgaWQpCj4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoeGVfcHRfemFwX3B0ZXModGlsZSwgdm1hKSkKPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0aWxlX21hc2sg fD0gQklUKGlkKTsKPiA+ID4gwqAKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXQgPSB4ZV9ndF90bGJfaW52YWxpZGF0aW9uX3ZtYSh0aWxlLQo+ ID4gPiA+IG1lZGlhX2d0LAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+ID4gJmZlbmNlW2ZlbmNlX2lkXSwgdm1hKTsKPiA+ID4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBnb3RvIHdhaXQ7Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgKytmZW5jZV9pZDsKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0KPiA+ID4gLcKgwqDCoMKgwqDCoMKgfQo+ID4gPiArwqDCoMKgwqDCoMKgwqB4 ZV9kZXZpY2Vfd21iKHhlKTsKPiA+ID4gwqAKPiA+ID4gLXdhaXQ6Cj4gPiA+IC3CoMKgwqDCoMKg wqDCoGZvciAoaWQgPSAwOyBpZCA8IGZlbmNlX2lkOyArK2lkKQo+ID4gPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgeGVfZ3RfdGxiX2ludmFsaWRhdGlvbl9mZW5jZV93YWl0KCZmZW5j ZVtpZF0pOwo+ID4gPiArwqDCoMKgwqDCoMKgwqByZXQgPQo+ID4gPiB4ZV92bV9yYW5nZV90aWxl bWFza190bGJfaW52YWxpZGF0aW9uKHhlX3ZtYV92bSh2bWEpLAo+ID4gPiB4ZV92bWFfc3RhcnQo dm1hKSwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAK PiA+ID4geGVfdm1hX2VuZCh2bWEpLAo+ID4gPiB0aWxlX21hc2spOwo+ID4gPiDCoAo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgLyogV1JJVEVfT05DRSBwYWlyIHdpdGggUkVBRF9PTkNFIGluIHhlX2d0 X3BhZ2VmYXVsdC5jICovCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBXUklURV9PTkNFKHZtYS0+dGls ZV9pbnZhbGlkYXRlZCwgdm1hLT50aWxlX21hc2spOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3hlL3hlX3ZtLmgKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfdm0uaAo+ ID4gPiBpbmRleCA4OGQ2YzBlZjg5YzcuLmFjZDNmZDZjNjA1YiAxMDA2NDQKPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3hlL3hlX3ZtLmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hl L3hlX3ZtLmgKPiA+ID4gQEAgLTIyOCw2ICsyMjgsOSBAQCBzdHJ1Y3QgZG1hX2ZlbmNlICp4ZV92 bV9yYW5nZV9yZWJpbmQoc3RydWN0Cj4gPiA+IHhlX3ZtCj4gPiA+ICp2bSwKPiA+ID4gwqBzdHJ1 Y3QgZG1hX2ZlbmNlICp4ZV92bV9yYW5nZV91bmJpbmQoc3RydWN0IHhlX3ZtICp2bSwKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB4ZV9zdm1fcmFuZ2UgKnJhbmdlKTsKPiA+ID4gwqAKPiA+ ID4gK2ludCB4ZV92bV9yYW5nZV90aWxlbWFza190bGJfaW52YWxpZGF0aW9uKHN0cnVjdCB4ZV92 bSAqdm0sIHU2NAo+ID4gPiBzdGFydCwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHU2 NCBlbmQsIHU4IHRpbGVfbWFzayk7Cj4gPiA+ICsKPiA+ID4gwqBpbnQgeGVfdm1faW52YWxpZGF0 ZV92bWEoc3RydWN0IHhlX3ZtYSAqdm1hKTsKPiA+ID4gwqAKPiA+ID4gwqBpbnQgeGVfdm1fdmFs aWRhdGVfcHJvdGVjdGVkKHN0cnVjdCB4ZV92bSAqdm0pOwo+ID4gCgo=